📦 Пакет Laravel Data от Spatie
Открыл для себя великолепный пакет Laravel Data от бельгийского разработчика Spatie. Пакет позволяет создавать DTO на стероидах, DTO внутри DTO и делать валидацию на аннотациях.
Раньше для этих целей я просто брал пакет symfony/validator и игрался с ним.
Symfony Validator
1. DTO:
2. Валидация в сервисе:
Оно работало так достаточно долго, но выглядело немного инородно, пока я не встретил пакет Laravel Data, который отлично интегрирован в Laravel и кажется ламповым и родным.
Laravel Data от Spatie
1. DTO:
2. Валидация в сервисе
👉 https://spatie.be/docs/laravel-data/v4/introduction
#php #laravel #dto #LaravelData
👮♂️ Злой полицейский
Открыл для себя великолепный пакет Laravel Data от бельгийского разработчика Spatie. Пакет позволяет создавать DTO на стероидах, DTO внутри DTO и делать валидацию на аннотациях.
Раньше для этих целей я просто брал пакет symfony/validator и игрался с ним.
Symfony Validator
1. DTO:
use Symfony\Component\Validator\Constraints as Assert;
class UserDto
{
#[Assert\NotBlank, Assert\Email]
public string $email;
#[Assert\NotBlank, Assert\Length(min: 2, max: 255)]
public string $name;
#[Assert\NotBlank(groups: ['create']), Assert\Length(min: 8)]
public string $password;
}
2. Валидация в сервисе:
use Symfony\Component\Validator\Validator\ValidatorInterface;
class UserService
{
public function __construct(private ValidatorInterface $validator) {}
public function createUser(array $data): UserDto
{
$dto = new UserDto();
$dto->email = $data['email'];
$dto->name = $data['name'];
$dto->password = $data['password'];
$violations = $this->validator->validate($dto, null, ['create']);
if (count($violations) > 0) {
throw new ValidationException($violations);
}
return $dto;
}
}
Оно работало так достаточно долго, но выглядело немного инородно, пока я не встретил пакет Laravel Data, который отлично интегрирован в Laravel и кажется ламповым и родным.
Laravel Data от Spatie
1. DTO:
use Spatie\LaravelData\Data;
use Spatie\LaravelData\Attributes\Validation\{
Email, Required, Max, Min
};
class UserData extends Data
{
public function __construct(
#[Required, Email]
public string $email,
#[Required, Max(255), Min(2)]
public string $name,
#[Required, Min(8)]
public string $password,
) {}
}
2. Валидация в сервисе
use Spatie\LaravelData\Data;
class UserService
{
public function createUser(array $data): UserData
{
$userData = UserData::from($data);
return $userData;
}
}
👉 https://spatie.be/docs/laravel-data/v4/introduction
#php #laravel #dto #LaravelData
👮♂️ Злой полицейский
🔥6
Agile — философия, которая изменила подход к управлению проектами
Если на рабочем совещании коллеги вдруг заговорили про Agile-разработку, а вы все еще не до конца понимаете, что это такое, — не переживайте.
Agile — это не тайный метод IT-специалистов и не мода из Кремниевой долины. Это способ работы, при котором можно не планировать все на полгода вперед, не сидеть ночами в дедлайнах и все-таки сдавать задачи вовремя.
В статье разберемся, что такое методология управления Agile, зачем она нужна и почему ее выбирают как стартапы, так и крупные компании. Расскажем, как внедрить методологию с помощью популярных инструментов планирования проектов и задач.
👉 https://singularity-app.ru/blog/agile/
#teamlead #agile
👮♂️ Злой полицейский
Если на рабочем совещании коллеги вдруг заговорили про Agile-разработку, а вы все еще не до конца понимаете, что это такое, — не переживайте.
Agile — это не тайный метод IT-специалистов и не мода из Кремниевой долины. Это способ работы, при котором можно не планировать все на полгода вперед, не сидеть ночами в дедлайнах и все-таки сдавать задачи вовремя.
В статье разберемся, что такое методология управления Agile, зачем она нужна и почему ее выбирают как стартапы, так и крупные компании. Расскажем, как внедрить методологию с помощью популярных инструментов планирования проектов и задач.
👉 https://singularity-app.ru/blog/agile/
#teamlead #agile
👮♂️ Злой полицейский
🔥3
Репозиторий дня: Requestly
Requestly - мощный API-клиент для замены Postman и Charles Proxy.
Его можно использовать прямо в браузере через расширения Chrome или установить как настольное приложение.
Это Bruno на максималках.
👉 https://github.com/requestly/requestly
👉 https://requestly.com
#RepositoryOfTheDay #Requestly
👮♂️ Злой полицейский
Requestly - мощный API-клиент для замены Postman и Charles Proxy.
Его можно использовать прямо в браузере через расширения Chrome или установить как настольное приложение.
Это Bruno на максималках.
👉 https://github.com/requestly/requestly
👉 https://requestly.com
#RepositoryOfTheDay #Requestly
👮♂️ Злой полицейский
❤3👍2
Когда ваш сервис обрабатывает сотни тысяч транзакций в секунду, потеря даже одного события может стоить бизнесу миллионы.
Transaction Outbox кажется простым паттерном, пока не начинает ломаться под реальной нагрузкой: WAL переполняется, реплики отстают на часы, а CDC-коннекторы падают от back-pressure.
👉 YouTube
👉 VK
👉 Тезисы и презентация
👉 Канал Олега
#arch #TransactionOutbox
👮♂️ Злой полицейский
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍2❤1
Архитектурный шаблон
Porto
Porto это современный архитектурный шаблон программного обеспечения, состоящий из методических рекомендаций, принципов и шаблонов, которые помогают разработчикам организовать свой код максимально удобным и многократно используемым способом.
Porto - отличный вариант для средних и крупных веб-проектов, поскольку со временем они, как правило, становятся более сложными.
👉️ https://github.com/dnsoftware/porto_ru
#arch #php #patterns #porto
👮♂️ Злой полицейский
Porto
Porto это современный архитектурный шаблон программного обеспечения, состоящий из методических рекомендаций, принципов и шаблонов, которые помогают разработчикам организовать свой код максимально удобным и многократно используемым способом.
Porto - отличный вариант для средних и крупных веб-проектов, поскольку со временем они, как правило, становятся более сложными.
👉️ https://github.com/dnsoftware/porto_ru
#arch #php #patterns #porto
👮♂️ Злой полицейский
1👍6🤯2
Паттерн "Обработчик" (Handler) с использованием DTO и VO
- Изоляция бизнес-логики: Бизнес-логика изолирована в обработчиках, что позволяет сделать код более организованным и легко поддерживаемым.
- Тестируемость: Обработчики легко тестируются отдельно, так как они не зависят от инфраструктурного кода (например, контроллеров).
- Переиспользование: Обработчики могут быть легко переиспользованы в различных частях приложения.
- Ясность и читаемость кода: Использование DTO и VO позволяет четко определить структуру передаваемых данных, что улучшает читаемость и понимание кода.
- Соблюдение принципов SOLID: Обработчики помогают соблюдать принципы единственной ответственности (SRP) и разделения интерфейсов (ISP).
- Иммутабельность VO: Значения VO не изменяются после создания, что помогает избежать непреднамеренных изменений и улучшает предсказуемость кода.
👉 https://laravel.su/p/primer-ispolzovaniia-patterna-obrabotcik-handler-s-ispolzovaniem-dto-i-vo
#laravel #patterns #dto #handlers
👮♂️ Злой полицейский
- Изоляция бизнес-логики: Бизнес-логика изолирована в обработчиках, что позволяет сделать код более организованным и легко поддерживаемым.
- Тестируемость: Обработчики легко тестируются отдельно, так как они не зависят от инфраструктурного кода (например, контроллеров).
- Переиспользование: Обработчики могут быть легко переиспользованы в различных частях приложения.
- Ясность и читаемость кода: Использование DTO и VO позволяет четко определить структуру передаваемых данных, что улучшает читаемость и понимание кода.
- Соблюдение принципов SOLID: Обработчики помогают соблюдать принципы единственной ответственности (SRP) и разделения интерфейсов (ISP).
- Иммутабельность VO: Значения VO не изменяются после создания, что помогает избежать непреднамеренных изменений и улучшает предсказуемость кода.
👉 https://laravel.su/p/primer-ispolzovaniia-patterna-obrabotcik-handler-s-ispolzovaniem-dto-i-vo
#laravel #patterns #dto #handlers
👮♂️ Злой полицейский
👍4
Старый, но всё ещё актуальный доклад Юлии Николаевой (iSpring) о том, как решить проблемы монолитного PHP приложения, не переходя на микросервисную архитектуру.
👉 https://www.youtube.com/watch?v=xT25xiKqPcI
#php #arch #ClearCode #ddd
👮♂️ Злой полицейский
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Перебои и ошибки в работе распределённых систем (будь то Web или IoT) — совершенно обычная ситуация. Проблемы в работе с сетью, перебои в работе зависимостей и банальный человеческий фактор — та цена, которую мы платим за общую стабильность системы, лёгкую масштабируемость и гибкость в разработке.
👉 https://www.youtube.com/watch?v=WWTq-tbZwUE
#arch #patterns
👮♂️ Злой полицейский
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
В этом интервью на TeamLead Conf 2025 в Москве Ольга из Московского кредитного банка максимально внятно рассказывает о необходимом качестве руководителя: лидерстве.
То есть руководитель + лидер = эффективное производство.
Подписывайтесь на Профессиональный Союз Русских Программистов — регулярно публикуем интервью с ИТ-конференций, разборы управленческих ситуаций и советы от практиков!
👉 https://vkvideo.ru/video-224489316_456239046?list=98878d3df0622351a4
👉 https://www.youtube.com/watch?v=z1K_FRW3XZ8
👉 https://rutube.ru/video/3d575ca0dda209c23fab5b384e44c556/
#prptut
👮♂️ Злой полицейский
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2👍1
Продвинутое использование Eloquent в Laravel
В этом руководстве мы углубимся в ORM (объектно-реляционное преобразование), который использует Laravel — Eloquent.
Мы рассмотрим некоторые не часто используемые возможности Laravel Eloquent и покажем, как это может облегчить ваш процесс разработки.
Laravel делает создание PHP-приложений простым и удобным. Он разработан для предоставления методов работы с основными функциями, которые нужны вашему приложению — взаимодействие с базой данных, маршрутизация, сессии, кеширование и многое другое. Он имеет поставщиков услуг (service providers), которые позволяют вам загружать пользовательские конфигурации и расширять возможности Laravel в соответствии с вашими потребностями.
👉 https://www.kobzarev.com/laravel/advanced-laravel-eloquent-usage/
#php #laravel #eloquent
👮♂️ Злой полицейский
В этом руководстве мы углубимся в ORM (объектно-реляционное преобразование), который использует Laravel — Eloquent.
Мы рассмотрим некоторые не часто используемые возможности Laravel Eloquent и покажем, как это может облегчить ваш процесс разработки.
Laravel делает создание PHP-приложений простым и удобным. Он разработан для предоставления методов работы с основными функциями, которые нужны вашему приложению — взаимодействие с базой данных, маршрутизация, сессии, кеширование и многое другое. Он имеет поставщиков услуг (service providers), которые позволяют вам загружать пользовательские конфигурации и расширять возможности Laravel в соответствии с вашими потребностями.
👉 https://www.kobzarev.com/laravel/advanced-laravel-eloquent-usage/
#php #laravel #eloquent
👮♂️ Злой полицейский
👍5🔥1
Юниты против интеграционных тестов — вечный спор, который кажется простым только до первого реального проекта. В этом выпуске у нас в гостях Александр Макаровов — core-разработчик PHP-фреймворка Yii. Мы разобрали, почему формальные определения тестов почти не работают в живых системах и где на практике проходит граница между «юнитом», «модулем» и «интеграцией».
Мы поговорили о тестировании прикладных веб-приложений и библиотек, сравнили Active Record и Data Mapper, разобрали, когда тесты обязаны ходить в базу, а когда моки — вынужденное зло. Посмотрели реальные репозитории активно развивающихся проектов написанных на Laravel и Rails, фреймворки и коммерческие проекты, и увидели, как на самом деле пишутся тесты в продакшене, а не в книжках. Обсудили фикстуры, транзакции, rollback’и, SQLite in-memory, UUID, миграции, тесты контроллеров, сервисов и джобов.
👉 https://www.youtube.com/watch?v=MhdRKBkOvtg
👉 https://podcast.ru/1734325321
#php #tests
👮♂️ Злой полицейский
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1
MoonShine 4: AI-инструменты, Tailwind 4 и новый UI — большой разбор релиза open source админ панели
11 ноября 2025 года в 11:11 - эта важная дата войдет в историю MoonShine. Четыре единицы = четвертая версия. Символизм? Возможно. Но за этими цифрами стоит нечто большее - 11 месяцев непрерывной работы, а последние 6 из них проходили в режиме супер интенсивной разработки. В этой статье разберем все изменения MoonShine 4: от новой системы палитр и токенов до AI-генерации интерфейсов. MoonShine 4 действительно меняет правила работы с админками. Эту статью я написал для тех, кому близка тема open-source/laravel/filament/админок. Приятного чтения.
👉 https://habr.com/ru/articles/979870/
#php #laravel #MoonShine
👮♂️ Злой полицейский
11 ноября 2025 года в 11:11 - эта важная дата войдет в историю MoonShine. Четыре единицы = четвертая версия. Символизм? Возможно. Но за этими цифрами стоит нечто большее - 11 месяцев непрерывной работы, а последние 6 из них проходили в режиме супер интенсивной разработки. В этой статье разберем все изменения MoonShine 4: от новой системы палитр и токенов до AI-генерации интерфейсов. MoonShine 4 действительно меняет правила работы с админками. Эту статью я написал для тех, кому близка тема open-source/laravel/filament/админок. Приятного чтения.
👉 https://habr.com/ru/articles/979870/
#php #laravel #MoonShine
👮♂️ Злой полицейский
🔥5👍1
🎸 Открытие года в Рок-опере
В связи с уходом иностранных исполнителей с Яндекс Музыки на их место пришли великолепные русскоязычные коллективы, которые раньше были либо в тени, либо вообще не представлены на сервисе.
В этом году открыл для себя несколько интересных опер в стиле рока.
Крайне рекомендую к прослушиванию:
- Рок-опера "Икар" - https://music.yandex.ru/artist/10804580
- Рок-опера "Орфей" - https://music.yandex.ru/artist/6931366
- Рок-опера "Персефона" - https://music.yandex.ru/artist/18984107
- Рок-опера "Юнона" и "Авось" - https://music.yandex.ru/album/37416257
- Рок-опера "Звезда и Смерть Хоакина Мурьеты" - https://music.yandex.ru/album/39577818
- Метал-опера "Эльфийская рукопись" - https://music.yandex.ru/album/22593788
- Рок-мюзикл "TODD" - https://music.yandex.ru/album/9746908 и http://music.yandex.ru/album/9746905
Если поделитесь ссылками на другие похожие коллективы, буду рад рекомендациям!
#music #rock
👮♂️ Злой полицейский
В связи с уходом иностранных исполнителей с Яндекс Музыки на их место пришли великолепные русскоязычные коллективы, которые раньше были либо в тени, либо вообще не представлены на сервисе.
В этом году открыл для себя несколько интересных опер в стиле рока.
Крайне рекомендую к прослушиванию:
- Рок-опера "Икар" - https://music.yandex.ru/artist/10804580
- Рок-опера "Орфей" - https://music.yandex.ru/artist/6931366
- Рок-опера "Персефона" - https://music.yandex.ru/artist/18984107
- Рок-опера "Юнона" и "Авось" - https://music.yandex.ru/album/37416257
- Рок-опера "Звезда и Смерть Хоакина Мурьеты" - https://music.yandex.ru/album/39577818
- Метал-опера "Эльфийская рукопись" - https://music.yandex.ru/album/22593788
- Рок-мюзикл "TODD" - https://music.yandex.ru/album/9746908 и http://music.yandex.ru/album/9746905
Если поделитесь ссылками на другие похожие коллективы, буду рад рекомендациям!
#music #rock
👮♂️ Злой полицейский
1❤6🔥2
API-First Laravel проекты
Я разрабатываю API на Laravel уже много лет, и одна вещь стала очевидна: способ, которым мы учим Laravel, не совпадает с тем, как мы его на самом деле используем.
Большинство учебников для начинающих по-прежнему сосредоточены на full-stack приложениях с Blade представлениями, скаффолдингом аутентификации и серверным рендерингом страниц. Это хорошо для понимания основ Laravel, но реальность современной разработки иная.
Сегодня Laravel — это бэкэнд. Он питает React-фронтенды, Vue-приложения, мобильные приложения и интеграции третьих сторон. Он говорит на JSON, а не на HTML. Понимание того, как создавать чистые, поддерживаемые API, больше не является полезным навыком — это основание.
Это руководство содержит десять прогрессивных проектов, предназначенных для обучения разработке API с Laravel. Каждый проект развивает концепции предыдущих, представляя новые шаблоны и задачи, с которыми вы столкнетесь в реальных приложениях. Я не буду приукрашивать: некоторые из них вас разочаруют. Это хорошо. Борьба с этими концепциями сейчас означает, что вы не будете их изучать под давлением сроков позже.
👉 https://www.kobzarev.com/laravel/api-first-laravel-projects/
#php #laravel #api
👮♂️ Злой полицейский
Я разрабатываю API на Laravel уже много лет, и одна вещь стала очевидна: способ, которым мы учим Laravel, не совпадает с тем, как мы его на самом деле используем.
Большинство учебников для начинающих по-прежнему сосредоточены на full-stack приложениях с Blade представлениями, скаффолдингом аутентификации и серверным рендерингом страниц. Это хорошо для понимания основ Laravel, но реальность современной разработки иная.
Сегодня Laravel — это бэкэнд. Он питает React-фронтенды, Vue-приложения, мобильные приложения и интеграции третьих сторон. Он говорит на JSON, а не на HTML. Понимание того, как создавать чистые, поддерживаемые API, больше не является полезным навыком — это основание.
Это руководство содержит десять прогрессивных проектов, предназначенных для обучения разработке API с Laravel. Каждый проект развивает концепции предыдущих, представляя новые шаблоны и задачи, с которыми вы столкнетесь в реальных приложениях. Я не буду приукрашивать: некоторые из них вас разочаруют. Это хорошо. Борьба с этими концепциями сейчас означает, что вы не будете их изучать под давлением сроков позже.
👉 https://www.kobzarev.com/laravel/api-first-laravel-projects/
#php #laravel #api
👮♂️ Злой полицейский
🔥7❤1
Доклад Егора Бугаенко на закрытой конференции Банка России об угрозах, которые несёт внедрение ИИ в процесс разработки, и способах защиты от них.
👉 https://vkvideo.ru/video-226887147_456239441
#ai #programming
👮♂️ Злой полицейский
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Евгений Антонов — ведущий технический менеджер проектов и тимлид разработчиков и менеджеров в Yandex Infrastructure, IT-консультант, сооснователь сообщества руководителей Management Hub.
В его зоне ответственности — руководство не только разработчиками, но и менеджерами проектов. Человек, который на собственном опыте исследует грань между технарем, лидом и гуманистом в IT.
Это очень живое интервью, где много чего пошло не по плану!
👉 ВК-видео
👉 YouTube
#teamlead #management
👮♂️ Злой полицейский
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1
Репозиторий дня: Ebook2Audiobook
Self-hosted конвертер, который генерирует полноценную аудиокнигу в одном из популярных форматов (m4b, mp3, flac, wav, ogg) с главами, метаданными и обложкой из текстовых форматов epub/pdf/mobi.
"Под капотом" у него несколько TTS-движков на выбор: XTTSv2, Bark, VITS, Fairseq, YourTTS, Tacotron2
Что умеет
• Клонирование голоса, чтобы модель читала текст именно этим голосом
• Поддержка более 1130 языков мира
• Авторазбитие текста на главы
• Есть веб-морда на Gradio
• Минимальные требования для запуска (4GB RAM)
👉 https://github.com/DrewThomasson/ebook2audiobook
#RepositoryOfTheDay #ai #ebook
👮♂️ Злой полицейский
Self-hosted конвертер, который генерирует полноценную аудиокнигу в одном из популярных форматов (m4b, mp3, flac, wav, ogg) с главами, метаданными и обложкой из текстовых форматов epub/pdf/mobi.
"Под капотом" у него несколько TTS-движков на выбор: XTTSv2, Bark, VITS, Fairseq, YourTTS, Tacotron2
Что умеет
• Клонирование голоса, чтобы модель читала текст именно этим голосом
• Поддержка более 1130 языков мира
• Авторазбитие текста на главы
• Есть веб-морда на Gradio
• Минимальные требования для запуска (4GB RAM)
👉 https://github.com/DrewThomasson/ebook2audiobook
#RepositoryOfTheDay #ai #ebook
👮♂️ Злой полицейский
👍5🔥1
💡 Как генерировать новые идеи
Искусственный интеллект часто обвиняют в том, что он лишь компилирует чужие мысли и не способен создавать по-настоящему новые идеи. Однако проблема обычно не в самом ИИ, а в запросах к нему. Достаточно попросить нейросеть применить те методы креативного мышления, которыми пользуются сами люди (мозговой штурм, синектику, ТРИЗ), и результаты могут вас удивить.
В статье — подборка промптов для генерации идей: от прямых запросов («дай идею») до использования хитрых техник из арсенала изобретателей и креативщиков. Выбирайте запросы, подходящие под вашу задачу, и экспериментируйте.
👉️ https://singularity-app.ru/blog/generaciya-idej-s-pomoshchyu-ii/
#ai #prompt
👮♂️ Злой полицейский
Искусственный интеллект часто обвиняют в том, что он лишь компилирует чужие мысли и не способен создавать по-настоящему новые идеи. Однако проблема обычно не в самом ИИ, а в запросах к нему. Достаточно попросить нейросеть применить те методы креативного мышления, которыми пользуются сами люди (мозговой штурм, синектику, ТРИЗ), и результаты могут вас удивить.
В статье — подборка промптов для генерации идей: от прямых запросов («дай идею») до использования хитрых техник из арсенала изобретателей и креативщиков. Выбирайте запросы, подходящие под вашу задачу, и экспериментируйте.
👉️ https://singularity-app.ru/blog/generaciya-idej-s-pomoshchyu-ii/
#ai #prompt
👮♂️ Злой полицейский
👍5
Максим Ильяхов. «Большая книга про работу: Как не страдать в найме и успевать жить»
Настольное ободряющее пособие по выживанию в офисе, адаптации к самым разным обстоятельствам, коммуникации с коллегами, клиентами и руководством, навыкам продуктивной работы и саморазвитию, сохранению личных границ и аргументированному отстаиванию своей точки зрения. Польза и помощь в одном издании. Её цель — помочь вам не только укрепить положение в компании и авторитет у коллег и клиентов, но и трудиться спокойно и с энтузиазмом, получая от работы максимум удовольствия, при этом не жертвуя собственными интересами и постепенно становясь лучшей версией себя.
Сам автор Максим "читает" книгу в виде подкаста, что намного интереснее, чем просто тупой пересказ страниц книги.
Крайне рекомендую всем! Подсмотрел у @general_it_talks.
👉 https://music.yandex.ru/album/39521629
#book #audio
👮♂️ Злой полицейский
Настольное ободряющее пособие по выживанию в офисе, адаптации к самым разным обстоятельствам, коммуникации с коллегами, клиентами и руководством, навыкам продуктивной работы и саморазвитию, сохранению личных границ и аргументированному отстаиванию своей точки зрения. Польза и помощь в одном издании. Её цель — помочь вам не только укрепить положение в компании и авторитет у коллег и клиентов, но и трудиться спокойно и с энтузиазмом, получая от работы максимум удовольствия, при этом не жертвуя собственными интересами и постепенно становясь лучшей версией себя.
Сам автор Максим "читает" книгу в виде подкаста, что намного интереснее, чем просто тупой пересказ страниц книги.
Крайне рекомендую всем! Подсмотрел у @general_it_talks.
👉 https://music.yandex.ru/album/39521629
#book #audio
👮♂️ Злой полицейский
🔥4❤2