Лайфхак для TinkerWell
Ни раз уже писал про тинкервел, который, позволяет писать код на PHP внутри нашего приложения на Laravel, сразу выполнять этот код, тут же видеть результат и всё это можно по SSH на сервере - реально бомба!
Недавно с коллегами случайно обнаружили прикольную фишку. Суть в том, что если выделить кусок кода и нажать Play (запустить), то выполнится именно этот выделенный код.
На скрине я написал скрипт для обновления заявок на доставку. Но прежде, чем его запустить я хочу посмотреть сколько их там.
Для этого выделил нужный кусок кода, запустил и увидел. До цикла foreach дело не дошло - реально удобная тема.
https://tinkerwell.app
#tools #tinker #laravel
Ни раз уже писал про тинкервел, который, позволяет писать код на PHP внутри нашего приложения на Laravel, сразу выполнять этот код, тут же видеть результат и всё это можно по SSH на сервере - реально бомба!
Недавно с коллегами случайно обнаружили прикольную фишку. Суть в том, что если выделить кусок кода и нажать Play (запустить), то выполнится именно этот выделенный код.
На скрине я написал скрипт для обновления заявок на доставку. Но прежде, чем его запустить я хочу посмотреть сколько их там.
Для этого выделил нужный кусок кода, запустил и увидел. До цикла foreach дело не дошло - реально удобная тема.
https://tinkerwell.app
#tools #tinker #laravel
👍3
От подмастерья к ремесленнику
Книга Тейлора Отвела - разработчика Laravel.
Написана почти 10 лет назад - 2013 год, но уверен каждый найдёт для себя что-то полезное.
Я прочитал уже половину, до конца недели закончу. Можно читать просто по 1 главе в день.
Читать можно через Яндекс.Переводчик - там можно переводить PDF-файлы.
Книга в следующем посте 👇
#book #laravel #taylor
Книга Тейлора Отвела - разработчика Laravel.
Написана почти 10 лет назад - 2013 год, но уверен каждый найдёт для себя что-то полезное.
Я прочитал уже половину, до конца недели закончу. Можно читать просто по 1 главе в день.
Читать можно через Яндекс.Переводчик - там можно переводить PDF-файлы.
Книга в следующем посте 👇
#book #laravel #taylor
👍3
Шпаргалка по консольным командам Laravel.
Рекомендую хотя бы просто пробежаться по списку команд и изучить те, которые не знаешь!
https://artisan.page
#laravel #artisan
Рекомендую хотя бы просто пробежаться по списку команд и изучить те, которые не знаешь!
https://artisan.page
#laravel #artisan
👍6
Просмотр логов в Laravel
Тестирую бесплатный пакет для просмотра логов.
Первое впечатление - нравится!🙂
https://arunas.dev/log-viewer-for-laravel
Приятно работать, когда есть качественные готовые решения 😍
#laravel #log #logs #logging
Тестирую бесплатный пакет для просмотра логов.
Первое впечатление - нравится!
https://arunas.dev/log-viewer-for-laravel
Приятно работать, когда есть качественные готовые решения 😍
#laravel #log #logs #logging
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Пакет для автоматического создания и удаления дополнительных серверов
Например, наше приложение работает с разной нагрузкой - днём она высокая, а ночью маленькая.
Или у нас есть очереди, которые обрабатывают разное кол-во задач. То густо, то пусто 😃
Пакет будет каждую минуту запускать функцию, в которой мы говорим сколько серверов нужно в текущий момент.
Это позволяет сильно экономить на серверах.
Получается такой мини-кубернетис с автоматическим горизонтальным масштабированием.
Серверы создаются из заранее подготовленного образа. Прикольная тема, если что будем иметь ввиду.
https://spatie.be/docs/laravel-dynamic-servers/v1/introduction
#laravel #server #servers
Например, наше приложение работает с разной нагрузкой - днём она высокая, а ночью маленькая.
Или у нас есть очереди, которые обрабатывают разное кол-во задач. То густо, то пусто 😃
Пакет будет каждую минуту запускать функцию, в которой мы говорим сколько серверов нужно в текущий момент.
Это позволяет сильно экономить на серверах.
Получается такой мини-кубернетис с автоматическим горизонтальным масштабированием.
Серверы создаются из заранее подготовленного образа. Прикольная тема, если что будем иметь ввиду.
https://spatie.be/docs/laravel-dynamic-servers/v1/introduction
#laravel #server #servers
👍5
Laravel + Inertia + Vue (React)
Пошаговая инструкция по разработке простого проекта на современном стеке.
https://bootcamp.laravel.com
#laravel #inertial #bootcamp
Пошаговая инструкция по разработке простого проекта на современном стеке.
https://bootcamp.laravel.com
#laravel #inertial #bootcamp
🔥9👍3
Изменение состояния сущности
Изображения (скрины) отправлю в следующем сообщении.
Наши модели и база данных содержат поля, отвечающие за состояние сущности.
Например, пользователь может быть заблокирован или РАЗблокирован.
Способ 1
В этом случае можно добавить в таблицу
Тогда админ сможет блокировать пользователя, переключая чекбокс в админке.
Этот пример я накидал на первом изображении 👇
Проблема
Рано или поздно админ спросит - а когда был заблокирован этот юзер?
Начинающий разработчик скорее всего пожмёт плечами и скажет, что таких данных нет.
А опытный разработчик заглянет в логи и ответит на поставленый вопрос.
Если, конечно, значения поля НЕ менялось напрямую в базе данных 😁
Решение
В любом случае ничего страшного НЕ произойдёт, но нормальный разработчик сделает выводы, что в следующий раз лучше сразу хранить дату и время блокировки юзера.
(Способ 2)
Для решения этой задачи, можно вместо
В таком случае мы получаем всё тоже самое (переключатель ```null/datetime```) + имеем дату блокировки пользователя.
Этот пример показан на втором изображении 👇
Признавайся, делал так?
Проблема
Однако этот способ тоже НЕ идеальный, потому что здесь есть дата блокировки пользователя, НО нет даты его РАЗблокировки 😁
Получается, что задача решена наполовину, а для нас (хацкеров) это НЕприемлемо.
Решение
Логичное решение - добавить отдельное поле для хранения времени изменения переключателя.
Способ 3
Этот вариант сочатает в себе оба предыдущих способа и, наверно, является наиболее универсальным.
Теперь главное НЕ забыть обновлять дату и время ```blocked_at``` в момент изменения поля
Внимание на третье изображение 👇
Проблема
Но помимо поля
И тут возникает логичный вопрос - добавлять дополнительное поле с временем изменения к каждому из полей юзера?
То есть по-хорошему, мы хотим знать какие поля менялись? когда менялись? и значения ДО и ПОСЛЕ?
Решение
Начинающий разработчик, возможно, действительно начнёт добавлять отдельные поля.
Хотя бы для некоторых свойств пользователя (самых важных).
Но мы же не такие? Мы будем думать над универсальным "оружием".
А кто-то пойдёт гуглить готовое решение. Лентяй 🫵
Способ 4
Все выходные мы думали над решением и есть же!
1. Можно создать отдельную модель, например
2. Привязываем эту модель к любой другой модели нашего приложения (через трейт HasChanges).
3. Указываем какие поля мы хотим отслеживать (через абстрактный метод в трейте).
4. На основе событий модели (created, updated) наш трейт автоматически записывает историю в базу данных (таблица changes).
5. Мы в любой момент видим лог всех изменения наших записей: дату, время, значения ДО и ПОСЛЕ.
Изображение НЕ прилагаю. Предлагаю тебе самому подумать на решением 😝
Итог
Подобное решение иногда раально упрощает жизнь.
Особенно, если пользователь заявляет, что его аккаунт взломали 😃
Мы можем увидеть: когда был вход, когда изменился email, пароль и тд.
Ставь лайк, если полезно! Может запишем видео на эту тему.
ПС: если руками лазить в базу, то тут ничего не поможет 😁
ППС: если ооочень хочется, то можно 😉
#php #laravel #db #bool #boolean
Изображения (скрины) отправлю в следующем сообщении.
Наши модели и база данных содержат поля, отвечающие за состояние сущности.
Например, пользователь может быть заблокирован или РАЗблокирован.
Способ 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
🔥4
Laravel Venture
Laravel из коробки даёт крутую систему очередей, но иногда возникают более сложные задачи.
Например, создание цепочек последовательных действий в очереди:
- Загрузить видео на сервер
- Оптимизировать видео
- Транскрибировать видео
- Перевести на другие языки
- Уведомить подписчиков
- И тд
Пакет Laravel Venture позволяет создавать мощную систему асинхронных задач в очереди.
Судя по документации всё довольно просто, поэтому имеем в виду этот полезный инструмент в арсенале современного веб-ремесленника🙂
https://laravel-venture.com
#laravel #queue #venture
Laravel из коробки даёт крутую систему очередей, но иногда возникают более сложные задачи.
Например, создание цепочек последовательных действий в очереди:
- Загрузить видео на сервер
- Оптимизировать видео
- Транскрибировать видео
- Перевести на другие языки
- Уведомить подписчиков
- И тд
Пакет Laravel Venture позволяет создавать мощную систему асинхронных задач в очереди.
Судя по документации всё довольно просто, поэтому имеем в виду этот полезный инструмент в арсенале современного веб-ремесленника
https://laravel-venture.com
#laravel #queue #venture
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍3
Laravel за 100 секунд
За пару минут конечно невозможно рассказать о всей мощи ларки, но лайк поставить можно!
https://youtu.be/rIfdg_Ot-LI
#laravel #100sec
За пару минут конечно невозможно рассказать о всей мощи ларки, но лайк поставить можно!
https://youtu.be/rIfdg_Ot-LI
#laravel #100sec
👍6
Laravel Eloquent Strict Mode
Добавлен строгий режим для моделей, который будет выкидывать исключения:
- При попытке обратится к отношению без его явной предварительной загрузки.
- При попытке установить НЕ заполняемый атрибут.
- При попытке получить НЕ существующий атрибут.
https://laravel.com/docs/9.x/eloquent#configuring-eloquent-strictness
#laravel #strict
Добавлен строгий режим для моделей, который будет выкидывать исключения:
- При попытке обратится к отношению без его явной предварительной загрузки.
- При попытке установить НЕ заполняемый атрибут.
- При попытке получить НЕ существующий атрибут.
https://laravel.com/docs/9.x/eloquent#configuring-eloquent-strictness
#laravel #strict
👍2
Laravel Mailbook
Полезный пакет для просмотра email-писем.
- Графческий интерфейс с выбором писем
- Автоматический откат базы, если для просмотра письма нужны временные данные
- Просмотр адаптивной версии письма
- Разные варианты одного письма
- Поддержка мультиязычности
https://github.com/Xammie/mailbook
Подпишись: @onecode_blog
#laravel #mail
Полезный пакет для просмотра email-писем.
- Графческий интерфейс с выбором писем
- Автоматический откат базы, если для просмотра письма нужны временные данные
- Просмотр адаптивной версии письма
- Разные варианты одного письма
- Поддержка мультиязычности
https://github.com/Xammie/mailbook
Подпишись: @onecode_blog
#laravel #mail
👍11