Выпустил таки я книгу... https://leanpub.com/architecture-of-complex-web-applications . Первый месяц можно купить со скидкой - http://leanpub.com/architecture-of-complex-web-applications/c/USUl9KmVbJ8q На Амазоне можно полистать первую главу - https://www.amazon.com/dp/B07PN5WQZ3/
Leanpub
Architecture of complex web applications
А расскажу-ка я один прикол, который был на проектике. Как-то я заметил, что значение auto_increment в таблице юзеров сильно далеко уползло(за 400 миллионов). И юзеры создаются с большими дырками в айдишниках. Притом постоянно обсуждалась какая-то проблема с большой нагрузкой на эту самую таблицу(записей там было тоже немало). И я таки глянул как была реализована аутентификация+регистрация.
Когда приходил успешный коллбек от фейсбуковского OAuth приложение... пыталось сделать insert в таблицу юзеров! try-catch ловил исключение, проверял текст на слово "Duplicate entry" и если это оно - то просто делал update users по нужному facebook_id - причем всех полей, которые пришли с фейсбука, не проверяя изменились они или нет! и все это, разумеется, на master базе данных...
Когда приходил успешный коллбек от фейсбуковского OAuth приложение... пыталось сделать insert в таблицу юзеров! try-catch ловил исключение, проверял текст на слово "Duplicate entry" и если это оно - то просто делал update users по нужному facebook_id - причем всех полей, которые пришли с фейсбука, не проверяя изменились они или нет! и все это, разумеется, на master базе данных...
Запилил статейку про то, что не надо пытаться использовать каждый шаблон проектирования. "Please, stop talking about Repository pattern with Eloquent" - https://adelf.tech/2019/useless-eloquent-repositories Завтра на хабре перевод сделаю.
Обсуждать попробуем на реддите (а вдруг кто-то таки сагрится, авторов статей про репозитории в ларавель проектах много): https://www.reddit.com/r/laravel/comments/b3fmhx/please_stop_talking_about_repository_pattern_with/
Обсуждать попробуем на реддите (а вдруг кто-то таки сагрится, авторов статей про репозитории в ларавель проектах много): https://www.reddit.com/r/laravel/comments/b3fmhx/please_stop_talking_about_repository_pattern_with/
adelf.tech
Please, stop talking about Repository pattern with Eloquent | adelf.tech
Not every pattern should be implemented in application. Each pattern should be used in right place and time. Trying to use the Repository pattern with Eloquent entities is not a good idea.
👍1
Вчерашняя статья зашла нормально. Жалко никто особо спорить не стал. Перевод на хабре: https://habr.com/post/444688/
Вторая (и, надеюсь, последняя) статья про репозитории с элоквентом. Описывается полезный частичный вариант их использования. Для запросов чтения. https://adelf.tech/2019/read-eloquent-repositories
Обсуждаем и плюсуем на реддите: https://www.reddit.com/r/laravel/comments/b5ryn2/useful_eloquent_repositories_adelftech/
Перевод на хабре - скоро.
Обсуждаем и плюсуем на реддите: https://www.reddit.com/r/laravel/comments/b5ryn2/useful_eloquent_repositories_adelftech/
Перевод на хабре - скоро.
adelf.tech
Useful Eloquent Repositories? | adelf.tech
Repository pattern might be used partially with Eloquent and be very useful. CQRS, Decorator and other good practices here.
Подал заявку на доклад на Laracon EU Amsterdam. Попробую "наехать" на Адама Вотана. А вдруг возьмут? :) Правда, немного напутал. Думал она в мае уже. А оказывается - в конце августа. Это в Мадриде у них будет эвент майский, но у меня не получается туда попасть.
На моем новом проекте(которому уже лет 9) права юзеров на какие-то действия сделаны через битовые маски. Модная тема была раньше, чтобы сэкономить пару байт в базе данных. Сейчас больше двух сотен разных прав(или пермишенами их правильнее называть). Совет простой - никогда не используйте битовые маски :) Особенно когда командой разрабатывается. Уже при мне очень сильно налажали из-за обычной опечатки. Хорошо хоть на продакшен не вылезло...
До конференции DevConf https://devconf.ru/ осталось чуть больше месяца. До 21 мая можно подавать заявки на доклады. Если есть чем поделиться - https://conf.guru/ru/c/devconf2019/offer
devconf.ru
Профессиональная конференция веб-разработчиков Devconf 2019
DevConf - профессиональная конференция, посвященная ведущим технологиям программирования и веб-разработки.
Кажется, меня таки заапрувили на Laracon EU :) Будем пробовать жечь! Доклад будет в противовес докладу Адама Вотана "Cruddy by design". Надо же народу и другой взгляд показать!
We are super excited that we've signed the first 5 speakers for Laracon EU in Amsterdam. This year Amsterdam is going to be packed with 25+ technically focused talks in an exceptionally amazing venue.
The world is NOT cruddy by design by Adel Faizrakhmanov
Event Sourcing in Laravel with EventSauce by Dries Vints
Performance optimisation: how do I go about it? by Kasia Zien
Time Driven Development by Katerina Trajchevska
Be nice, help the person who hacks your servers to get your data by Srdjan Vranac
https://laracon.eu/2019/amsterdam
We are super excited that we've signed the first 5 speakers for Laracon EU in Amsterdam. This year Amsterdam is going to be packed with 25+ technically focused talks in an exceptionally amazing venue.
The world is NOT cruddy by design by Adel Faizrakhmanov
Event Sourcing in Laravel with EventSauce by Dries Vints
Performance optimisation: how do I go about it? by Kasia Zien
Time Driven Development by Katerina Trajchevska
Be nice, help the person who hacks your servers to get your data by Srdjan Vranac
https://laracon.eu/2019/amsterdam
21 июня в рамках конференции DevConf (https://devconf.ru) будет проведен бесплатный митап Larabeer Moscow. План мероприятия: в неформальной обстановке послушать доклады, пообщаться друг с другом и найти точки соприкосновения. Мой доклад про сложности большого проекта и их преодоление уже в программе.
Нужны те, кому тоже есть чем поделиться. Высоких требований к докладам нет - просто шарим знания друг с другом. Хочется просто послушать и пообщаться? Тоже будем рады.
Регистрируйтесь - https://www.meetup.com/ru-RU/Laravel-Russia/events/262030886/
Нужны те, кому тоже есть чем поделиться. Высоких требований к докладам нет - просто шарим знания друг с другом. Хочется просто послушать и пообщаться? Тоже будем рады.
Регистрируйтесь - https://www.meetup.com/ru-RU/Laravel-Russia/events/262030886/
devconf.ru
Профессиональная конференция веб-разработчиков Devconf 2019
DevConf - профессиональная конференция, посвященная ведущим технологиям программирования и веб-разработки.
Давно ничего не писал. Отдыхал, работал, плюс опять увлекся плагинописательством к шторму. Обновил свой .env files support плагин. Сильно оптимизировал его, убрав ненужную индексацию. Начал писать новый, на Kotlin. До ужаса приятный язык. После некоторой неловкости при знакомстве, уже общаюсь с ним довольно легко. Очень много плюшек. Недавно вспомнил, что уже в конце августа выступать на Laracon :) Для тренировки написал небольшую статью, опишу ее в отдельном посте.
Небольшая статья про кеширование в Laravel. Вроде и про основы, но и некоторые трюки и запреты присутствуют.
https://adelf.tech/2019/laravel-caching-basics
Перевод на хабре: https://habr.com/ru/post/463495/
https://adelf.tech/2019/laravel-caching-basics
Перевод на хабре: https://habr.com/ru/post/463495/
adelf.tech
Laravel caching basics | adelf.tech
Caching technique allows to create much more scalable applications by remembering some query results using fast in-memory storage engines. However, incorrectly implemented caching can dramatically reduce application's user experience. This article is about…
Очень давно ничего не писал. Этому есть уважительная причина. Мое выступление на Laracon было не очень удачным, я расстроился и решил сделать что-нибудь, чтобы компенсировать неудачу.
Компенсация вылилась в три месяца напряженной работы, и это при том, что мой текущий фулл-тайм контракт никто не отменял. Результатом стал новый Laravel плагин для PhpStorm, содержащий огромное количество всевозможных авто-дополнений и кодогенераций, которые значительно упрощают рутинные операции при Laravel-разработке. Небольшое обзорное видео тут - https://youtu.be/8klTJYhNo-A
Меня невероятно прет от разработки плагинов для IDEA на Котлин. Мечтаю о том, чтобы делать это фулл-тайм. Поэтому решил попробовать его продавать)
Компенсация вылилась в три месяца напряженной работы, и это при том, что мой текущий фулл-тайм контракт никто не отменял. Результатом стал новый Laravel плагин для PhpStorm, содержащий огромное количество всевозможных авто-дополнений и кодогенераций, которые значительно упрощают рутинные операции при Laravel-разработке. Небольшое обзорное видео тут - https://youtu.be/8klTJYhNo-A
Меня невероятно прет от разработки плагинов для IDEA на Котлин. Мечтаю о том, чтобы делать это фулл-тайм. Поэтому решил попробовать его продавать)
YouTube
Продуктивная Laravel разработка с Laravel Idea
Новый плагин для PhpStorm для эффективной Laravel-разработки. Генерация кода и удобные авто-дополнения, ускоряющие рутинную часть работы.
https://plugins.jetbrains.com/plugin/13441-laravel-idea
Ссылка на упоминаемый Laravel Ide helper: https://github.c…
https://plugins.jetbrains.com/plugin/13441-laravel-idea
Ссылка на упоминаемый Laravel Ide helper: https://github.c…
Я создал трейт в проекте :( да не прогневаются на меня боги за это!
Я давно придерживаюсь мнения, что трейты в PHP созданы лишь для того, чтобы затыкать дыры в архитектуре. И здесь идеальный пример. Необходимо было создать удобное редактирование бизнес-правил для юзеров. Там две почти параллельные иерархии классов и очевидно, что смысл в них один и тот же и они должны были быть объединены! Но нельзя, потому что легаси и правила эти уже лежат на продакшене и т.д. и т.п.
Создание трейта оказалось единственным вариантом не копипастить логику в этом случае. Но это лишь еще раз подтверждает мое мнение о трейтах.
Я давно придерживаюсь мнения, что трейты в PHP созданы лишь для того, чтобы затыкать дыры в архитектуре. И здесь идеальный пример. Необходимо было создать удобное редактирование бизнес-правил для юзеров. Там две почти параллельные иерархии классов и очевидно, что смысл в них один и тот же и они должны были быть объединены! Но нельзя, потому что легаси и правила эти уже лежат на продакшене и т.д. и т.п.
Создание трейта оказалось единственным вариантом не копипастить логику в этом случае. Но это лишь еще раз подтверждает мое мнение о трейтах.