ru
Feedback
OneCode

OneCode

Открыть в Telegram

Full Stack на PHP, Laravel и всё, что с этим связано. YouTube: https://www.youtube.com/@onecode_blog

Больше
1 328
Подписчики
Нет данных24 часа
Нет данных7 дней
-830 день
Архив постов
OneCode
1 328

OneCode
1 328
Привет, всем! Ребят по зарез нужен разраб на работу на Laravel в компанию. Я работаю с середины августа в этой компании. Компания хорошая. Платит исправно. Есть четкое разделение: фронты, бэки, девопс, проектный менеджер, тим-лид, тех писатель и т.д. и т.п. Так вот нужен бэкендер. ЗП от 100 до 160 тыс. руб. в месяц. Кому интересно, пишите мне в личку, свяжу с тим-лидом для собеса.

OneCode
1 328
Парни, не поверите. Решил с 1 сентября подвинуть дела и продолжить запись видосов. В итоге мотоцикл свалился, как снег на голову - какие тут видосы 😃 Теперь вчера уже подготовил материал для видео, проверил микрофон - сегодня хотел записать. В итоге мобилизация - какой тут видос 😃

OneCode
1 328
photo content

OneCode
1 328
photo content
+2

OneCode
1 328
Изменение состояния сущности Изображения (скрины) отправлю в следующем сообщении. Наши модели и база данных содержат поля, отвечающие за состояние сущности. Например, пользователь может быть заблокирован или РАЗблокирован. Способ 1 В этом случае можно добавить в таблицу
users
поле
blocked
с типом
boolean
. Тогда админ сможет блокировать пользователя, переключая чекбокс в админке. Этот пример я накидал на первом изображении 👇 Проблема Рано или поздно админ спросит - а когда был заблокирован этот юзер? Начинающий разработчик скорее всего пожмёт плечами и скажет, что таких данных нет. А опытный разработчик заглянет в логи и ответит на поставленый вопрос. Если, конечно, значения поля НЕ менялось напрямую в базе данных 😁 Решение В любом случае ничего страшного НЕ произойдёт, но нормальный разработчик сделает выводы, что в следующий раз лучше сразу хранить дату и время блокировки юзера. (Способ 2) Для решения этой задачи, можно вместо
boolean
для поля
blocked
использовать дату и время, например
timestamp
с возможностью НЕ указывать значение (nullable). В таком случае мы получаем всё тоже самое (переключатель ```null/datetime```) + имеем дату блокировки пользователя. Этот пример показан на втором изображении 👇 Признавайся, делал так? Проблема Однако этот способ тоже НЕ идеальный, потому что здесь есть дата блокировки пользователя, НО нет даты его РАЗблокировки 😁 Получается, что задача решена наполовину, а для нас (хацкеров) это НЕприемлемо. Решение Логичное решение - добавить отдельное поле для хранения времени изменения переключателя. Способ 3 Этот вариант сочатает в себе оба предыдущих способа и, наверно, является наиболее универсальным. Теперь главное НЕ забыть обновлять дату и время ```blocked_at``` в момент изменения поля
blocked
. Внимание на третье изображение 👇 Проблема Но помимо поля
blocked
у юзера есть много других полей. И тут возникает логичный вопрос - добавлять дополнительное поле с временем изменения к каждому из полей юзера? То есть по-хорошему, мы хотим знать какие поля менялись? когда менялись? и значения ДО и ПОСЛЕ? Решение Начинающий разработчик, возможно, действительно начнёт добавлять отдельные поля. Хотя бы для некоторых свойств пользователя (самых важных). Но мы же не такие? Мы будем думать над универсальным "оружием". А кто-то пойдёт гуглить готовое решение. Лентяй 🫵 Способ 4 Все выходные мы думали над решением и есть же! 1. Можно создать отдельную модель, например
Change
(изменение). 2. Привязываем эту модель к любой другой модели нашего приложения (через трейт HasChanges). 3. Указываем какие поля мы хотим отслеживать (через абстрактный метод в трейте). 4. На основе событий модели (created, updated) наш трейт автоматически записывает историю в базу данных (таблица changes). 5. Мы в любой момент видим лог всех изменения наших записей: дату, время, значения ДО и ПОСЛЕ. Изображение НЕ прилагаю. Предлагаю тебе самому подумать на решением 😝 Итог Подобное решение иногда раально упрощает жизнь. Особенно, если пользователь заявляет, что его аккаунт взломали 😃 Мы можем увидеть: когда был вход, когда изменился email, пароль и тд. Ставь лайк, если полезно! Может запишем видео на эту тему. ПС: если руками лазить в базу, то тут ничего не поможет 😁 ППС: если ооочень хочется, то можно 😉 #php #laravel #db #bool #boolean

OneCode
1 328
1.24 MB

OneCode
1 328

OneCode
1 328
Laracon - конференция Laravel На конференции, помимо прочего, показали, что с помощью Laravel Livewire теперь можно создавать
Laracon - конференция Laravel На конференции, помимо прочего, показали, что с помощью Laravel Livewire теперь можно создавать настоящие SPA с серверным рендерингом через привычный шаблонизатор Blade - практически без JavaScript! Ссылка на фрагмент, где Калеб (разработчик Livewire и AlpineJS) показывает этот функционал: https://youtu.be/f4QShF42c6E?t=7949 #laracon

OneCode
1 328
Laravel + Inertia + Vue (React) Пошаговая инструкция по разработке простого проекта на современном стеке. https://bootcamp.la
Laravel + Inertia + Vue (React) Пошаговая инструкция по разработке простого проекта на современном стеке. https://bootcamp.laravel.com #laravel #inertial #bootcamp

OneCode
1 328
Обработка PDF Куча инструментов для работы с PDF - конвертация, редактирование, наложение водяных знаков и тд. Есть программн
Обработка PDF Куча инструментов для работы с PDF - конвертация, редактирование, наложение водяных знаков и тд. Есть программный интерфейс (API) 👌 https://www.ilovepdf.com #pdf

OneCode
1 328

OneCode
1 328
Профессиональный разработчик 👇

OneCode
1 328
Пакет для автоматического создания и удаления дополнительных серверов Например, наше приложение работает с разной нагрузкой -
Пакет для автоматического создания и удаления дополнительных серверов Например, наше приложение работает с разной нагрузкой - днём она высокая, а ночью маленькая. Или у нас есть очереди, которые обрабатывают разное кол-во задач. То густо, то пусто 😃 Пакет будет каждую минуту запускать функцию, в которой мы говорим сколько серверов нужно в текущий момент. Это позволяет сильно экономить на серверах. Получается такой мини-кубернетис с автоматическим горизонтальным масштабированием. Серверы создаются из заранее подготовленного образа. Прикольная тема, если что будем иметь ввиду. https://spatie.be/docs/laravel-dynamic-servers/v1/introduction #laravel #server #servers

OneCode
1 328

OneCode
1 328

OneCode
1 328
Как работает цикл событий в JavaScript Полезная статья для понимания механизма асинхронной работы JS. https://habr.com/ru/pos
Как работает цикл событий в JavaScript Полезная статья для понимания механизма асинхронной работы JS. https://habr.com/ru/post/680846/ #js #async

OneCode
1 328

OneCode
1 328
Парсинг сайтов Я никогда особо не интересовался парсингом сайтов, потому что мне это НЕ интересно. Однако знаю, что многие лю
Парсинг сайтов Я никогда особо не интересовался парсингом сайтов, потому что мне это НЕ интересно. Однако знаю, что многие любят эту тему, поэтому вот интересная статья с ответами на вопросы. Кстати, если не вкурсе, то парсинг - это вытаскивание информации со страниц сайтов. Например, вытащить и сохранить в свою базу данных товары и цены с mvideo. https://vc.ru/dev/496144-20-mln-rubley-v-god-na-parsinge-saytov #parsing