Статьи
Валидация массивов в Laravel без N+1
Правилоexists в Form Request незаметно порождает N+1 запросов при валидации массивов — каждый элемент проверяется отдельным обращением к базе. Разбираем, как с помощью prepareForValidation() выполнить один запрос, сохранить точные сообщения об ошибках и не скатиться в архитектурный костыль.JSON в браузере: import или fetch
Сравниваем два способа загрузить JSON:import { type: "json" } и fetch() + response.json(). Разбираем безопасность MIME, управление памятью, отмену запросов и кеширование. Даём чек-лист для выбора под ваш сценарий.Проксирование fetch() в серверном JavaScript
Проксированиеfetch() в серверном JavaScript выглядит по-разному в Node.js, Deno, Bun и Cloudflare Workers — потому что спецификация Fetch эту возможность не определяет. Вместо очередного перебора примеров кода: таблица сравнения сред, сценарии «простой прокси за минуту» против «гибкости с undici», архитектурные компромиссы для Workers и чек-лист проверки, действительно ли трафик пошёл через прокси. Прочитайте эту статью, чтобы не копировать первый попавшийся рецепт, а осознанно выбрать решение под вашу задачу.Taskfile: Когда пора отказаться от Makefile
Makefile остаётся стандартом автоматизации уже почти 50 лет, но Taskfile предлагает иную модель: декларативную, самодокументируемую, кросс-платформенную. Разбираем, в каких сценариях Taskfile действительно упрощает жизнь, а когда Makefile остаётся лучшим выбором. Примеры для Node.js, Docker, Kubernetes, циклы, матрицы, интерактивные сценарии — и три стратегии внедрения без риска.Практическое руководство по элементу img
Элемент<img> кажется простым, но его неправильное использование — одна из частых причин проблем с производительностью: смещение макета, загрузка тяжёлых изображений на мобильные устройства, медленный LCP. Руководство объясняет, как и почему браузер работает с изображениями: от указания размеров и адаптивности через srcset с sizes до современных форматов в <picture>, управления приоритетами загрузки и стратегий для LCP с предварительной загрузкой.Приёмы работы с PostgreSQL, меняющие архитектуру решений
PostgreSQL часто воспринимают как пассивное хранилище, хотя его возможности позволяют пересмотреть архитектуру приложения. Ограничения схемы (EXCLUDE, GENERATED) берут на себя проверки целостности. Выразительные средства языка (DISTINCT ON, FILTER, рекурсивные CTE) делают запросы компактнее. А выбор между JSONB и композитными типами открывает разные пути моделирования данных — от полной гибкости до строгой схемы.Как сделать Laravel-контроллер тестируемым
Если вы пишете тесты в Laravel, но чувствуете, что они какие-то формальные — проверяют статусы, но не логику — этот текст для вас. Разбираем один приём, после которого ваши тесты начнут находить проблемы, а не просто проходить.Мягкое удаление (Soft Delete) в Laravel: Полное руководство
Представьте, что пользователь случайно удалил важную запись в блоге. Или администратор очистил таблицу с данными, которые нужны для квартального отчёта. В обычной ситуации эти данные исчезли бы навсегда.Понижаем приоритет группы CSS-правил с помощью @layer
Вы, вероятно, уже знаете, что можно использовать:where() для снижения специфичности одного селектора, но знали ли вы, что можно добиться аналогичного эффекта сразу для нескольких правил?Атрибут alt и figcaption: в чём разница и что использовать
Чем отличается описательный текст атрибутаalt изображения от подписи figcaption, которая размещается в элементе <figure>?Атрибуты и свойства HTML: в чём разница
Атрибуты и свойства HTML-элементов часто путают, но их различие напрямую влияет на работу с формами и динамическим контентом. Разбираемся, почемуinput.value и getAttribute('value') возвращают разные значения и как писать надёжный код.URL Pattern API: Маршрутизация в JavaScript
URL Pattern API — это как регулярные выражения для адресной строки, только проще. Разбираем синтаксис, три главных метода и сценарии использования: от умного кэширования в Service Worker до роутинга на сервере.Настройка доверенной публикации в npm: пошаговая инструкция
В связи с участившимися атаками на цепочки поставок и последовавшим отзывом долгоживущих npm-токенов, разработчикам необходимо перейти на механизм доверенной публикации (trusted publishing). Официальная документация npm описывает общие принципы работы, на практике процесс настройки содержит ряд неочевидных требований. В статье рассмотрены шаги для настройки доверенной публикации через GitHub Actions, включая конфигурацию пакета, права доступа и корректные параметры публикации, а также разобраны типичные ошибки и способы их устранения.Чистое API для чтения PHP-атрибутов
Большинство разработчиков даже не подозревают, сколько строк кода они пишут каждый раз, когда читают атрибуты. Reflection API заставляет повторять одни и те же конструкции в каждом проекте. Но есть способ сократить этот код на 80% без потери гибкости.Руководство по стилю объектного проектирования для PHP 8.5
Хватит писать тонны геттеров и сеттеров! Это руководство по стилю объектного проектирования покажет, как принципы Маттиаса Нобака реализуются в PHP 8.5. Readonly-классы, property hooks, clone with, pipe-оператор и другие возможности для чистого кода без бойлерплейта. Примеры и полный гайд.JavaScript: передаём параметры в addEventListener правильно
Слушатели событий необходимы для интерактивности в JavaScript, но они могут незаметно вызывать утечки памяти, если их не удалить надлежащим образом. А что, если слушателю событий нужны параметры? Вот тут-то и начинается самое интересное. Рассмотрим, какие функции JavaScript делают обработку параметров с помощью обработчиков событий возможной и хорошо поддерживаемой.Итераторы в JavaScript: подробное руководство
Чем отличается итерируемый объект от итератора? Как работаютSymbol.iterator, next(), for...of? Создание своих итераторов и ленивые вычисления. С примерами кода и ссылками на смежные статьи.Fluid-типографика: создание адаптивных и доступных текстов
Адаптивная типографика — это не просто "сделать текст плавным". Это умение балансировать между красивой адаптивностью и уважением к пользователю. В этом руководстве мы разберём, как создать систему, которая подстраивается под любой экран, учитывает личные настройки и проходит проверку на доступность (WCAG). Никакой воды — только код, объяснения и готовые шаблоны.JSDoc на практике: настройка проверки типов в JavaScript
Переходим от теории к практике. Разберём реальный кейс: как разработчик Крис Фердинанди добавил проверку типов в свой UI-кит Kelp, используя JSDoc и TypeScript Compiler, но без единого.ts файла. Рассмотрим пошаговую настройку окружения, основные приёмы типизации переменных, функций и DOM-элементов, создание собственных типов с @typedef, а также следующие шаги — от автоматической проверки в CI до генерации .d.ts файлов. Все примеры адаптированы для самостоятельного повторения.