OneCode
1.39K subscribers
629 photos
60 videos
3 files
525 links
Full Stack на PHP, Laravel и всё, что с этим связано.
YouTube: https://www.youtube.com/@onecode_blog
Download Telegram
Linux дистрибутивы для ноутбуков

Короткий обзор 10 дистрибутивов с плюсами и минусами.

https://losst.ru/luchshij-linux-dlya-noutbuka-2016

#linux #os
Single Responsibility Principle

Прикольное объяснение принципа единственной ответственности из SOLID.

https://habr.com/ru/post/454290/

#solid
🔥2👍1
Переношу проект с Yandex.Cloud на Digital Ocean. Можно выпить чаю, пока Laravel Forge занимается настройкой сервера.

Продолжение в комментариях ☝️

#laravel #forge #tools
Организация рабочего пространства

Magnet - программа для MacOS, которая позволяет быстро расставлять программы на экране для удобства.

Я несколько месяцев назад установил эту программу и теперь могу сказать своё мнение - очень удобная штука.

Особенно если привыкнуть к сочетаниям клавиш, которые к слову довольно интуитивные.

Помимо горячих клавиш, окна можно расставлять перетаскиванием или через меню, но горячие клавиши конечно самый кайф.

https://magnet.crowdcafe.com

#tools #macos
Наконец началась рабочая неделя

Надеюсь вы тоже рады взяться за работу и готовы как следует потрудиться эти 3 дня.

Если нет, то эта композиция поможет поднять настроение: https://music.yandex.ru/album/2426871/track/21225455

#music
Совет дня от дядюшки Макса

При использовании транзакций и блокировок в работе с базой данных старайся получать записи в одинаковом порядке для избежания взаимной блокировки (Deadlock).

Например, мы разрабатываем кошелек, где у пользователей есть финансовые счета (accounts). Пользователь может совершать разные операции со счётом: пополнять (deposit), переводить другому пользователю (transfer) или выводить средства со счёта (payout).

Во всех этих операциях скорее всего нужно будет использовать транзакции и блокировки, чтобы другая параллельная транзакция не могла изменять эти записи в базе данных в тот же момент.

Так вот, в каждой такой транзакции нужно получать записи из базы в одинаковом порядке, чтобы не получился замкнутый круг из блокировок (deadlock).

Пример ошибки: в одной транзакции мы сначала получили и заблокировали счёт (account), а потом получили и заблокировали пополнение (deposit). В другой транзакции мы сделали тоже самое, но наоборот - сначала заблокировали deposit, а потом account. Если обе транзакции запустятся одновременно, то одна сначала заблокирует счёт, а вторая пополнение, затем первая попытается заблокировать пополнение, но оно уже заблокировано второй транзакцией, которая в этот момент пытается заблокировать счёт, который в свою очередь уже заблокирован первой транзакцией.

В такой ситуации успешно завершится только одна из транзакций, а вторая завершится с ошибкой.

Документация на примере PostgreSQL:
https://www.postgresql.org/docs/current/explicit-locking.html#LOCKING-DEADLOCKS

Ставь лайк, если полезно 👍 делись своим опытом в комментариях!

#db #deadlock #tip
👍14
Метод
Log::shareContext()
позволяет указать общие (контекстные) данные, которые будут добавлены во все логи в рамках текущего запроса.

Например, можно добавить общий UUID для всех логов в рамках запроса, чтобы потом было удобнее их фильтровать.
VPN включен по-умолчаиню

Заметил, что теперь у меня наоборот - VPN работает постоянно, но иногда отключаю, если какой-то сайт НЕ открывается ))) Как у тебя?
Проект на чистом PHP (без CMS/Frameworks)

Попался проект на чистом PHP (даже успешно развернул его).

Писали раньше так и не парились. Смотришь на код - всё понятно. А теперь напридумывали всякого 😃
👍41👏1
Media is too big
VIEW IN TELEGRAM
Ребята, просто иду и такой кайф
👍8
Раньше стартапы начинались с гаража, а теперь с проекта на Laravel 😃
👍4
Предыдущий пост был бестолковый. Исправляюсь.

Несколько лет использую программу Todoist для ведения своих личных задач (список дел).

Однако Todoist так же позволяет создавать отдельные проекты, показывать задачи в виде Kanban-доски и даже работать там совместно с другими людьми.

Таким образом можно использовать эту программу для управления задачами в небольшом проекте (есть приложухи на комп и телефон).

Не реклама. Пишу о том, чем пользуюсь сам. Реально просто и удобно.

https://todoist.com

#tools
🔥6
Несколько TailwindCSS в одном проекте

Задача
1. У нас есть сайт с панелью администратора на TailwindCSS.
2. В CSS-файле админки НЕ должно быть классов от основного сайта (и наоборот).

Проблема
1. В TailwindCSS есть крутая функция, которая оставляет только CSS-классы из нашей вёрстки.
2. Вопрос - как разделить конфигурацию TailwindCSS для админки и основного сайта, чтобы они НЕ пересекались?

Решение
1. Мы можем указать TailwindCSS какой файл конфигурации использовать в каждом случае.
2. При использвании LaravelMix мы просто передаём название файла конфигурации отдельно для основного сайта и админки.

На скринах 2 отдельные конфигурации TailwindCSS для основного сайта (tailwind-app.config.js) и админки (tailwind-admin.config.js), а так же пример их сборки через LaravelMix с указанием конкретного конфига.

Полезно? Сделай репост! 👍

#tailwind #tools #mix
🔥15👍10
В Laravel при использовании модели можно передать массив идентификаторов (ID) в метод
find
, чтобы выполнить запрос
where in
к базе данных.

#laravel #tip
👍7
Ничего себе вчера народу подписалось 😃 Всем привет! 👋 В закрепе есть наш чат, где можно потрещать, если что 🤝 Велком!
👍2
Ура, товарищи! 🥳
👍6
Тоже пишешь теперь такие конструкторы? 😍 PHP 8.1
🔥6