Практические руководства и статьи по веб-разработке
На странице собрана библиотека практических статей и руководств для веб-разработчиков. Здесь вы найдете актуальные материалы по PHP, включая детальный разбор нововведений в PHP 8.5, миграцию и лучшие практики. В разделе Frontend рассматриваются современный JavaScript, тонкости React и оптимизация производительности. Отдельное внимание уделено безопасности и инфраструктуре: настройке Docker, Nginx, защите VPS и выбору стратегий Git. Все руководства основаны на реальном опыте и содержат готовые к использованию примеры кода.
Ниже представлены последние публикации, отсортированные от новых к старым:
Статьи по веб-разработке: PHP, JavaScript, DevOps, Безопасность
Валидация массивов в 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 файлов. Все примеры адаптированы для самостоятельного повторения.Как писать CSS с @scope
В декабре 2025 года в CSS произошло событие, которое сложно переоценить: последний из основных браузеров — Firefox 146 — добавил поддержку правила@scope. Это означает, что технология получила статус Baseline Newly Available и готова к промышленному использованию во всех современных браузерах без исключений.Модальное окно или диалог: как выбрать и не сломать доступность
Путаница в терминах и непонимание разницы между модальным и обычным диалогом — частая причина плохого UX и проблем с доступностью. Разбираемся в типах компонентов, даём готовые критерии выбора и чек-лист для внедрения.Интеграция каскадных слоёв в существующий проект
Каскадные слои CSS (@layer) предоставляют эффективный механизм управления специфичностью и порядком применения стилей. Однако существующие материалы обычно демонстрируют их использование на новых проектах, тогда как большинство разработчиков работает с унаследованной кодовой базой. В статье на примере реального сайта рассматривается пошаговая стратегия внедрения Cascade Layers в существующий проект: от подготовительного рефакторинга до построения финальной архитектуры слоёв и решения сложных вопросов, возникающих в процессе миграции.CSS `@scope`: Как изолировать стили без BEM и Tailwind
Вы всё ещё пишетеblock__element--modifier? Или смирились с тысячами утилит в HTML? @scope позволяет оставить и классы, и утилиты, но забыть о войнах специфичности. Вот 3 сценария, где @scope меняет правила игры, и точный план внедрения в ваш проект.Настройка Apache для Laravel: полное руководство
Полное руководство по настройке веб-сервера для разработки, тестирования и продакшен окружения.Управление зависимостями PHP с Composer
Управление зависимостями — это фундамент любого современного проекта на PHP. Попытка вручную скачивать, обновлять и следить за совместимостью десятков библиотек для аутентификации, работы с базой данных или логирования быстро превращается в хаос. Конфликты версий, проблемы с безопасностью и «поломка» проекта при обновлении — знакомые боли большинства разработчиков.Выбор стратегии ветвления Git
Стратегия ветвления в Git — это не догма, а рабочий инструмент, который должен соответствовать вашим процессам. Я сталкивался с командами, где подход к ветвлению становился предметом острых споров: сторонники классического Git Flow создавали многоуровневые процессы, а приверженцы Trunk-Based Development выступали за максимальную простоту. При этом многие коллективы работают вовсе без чёткого плана, что со временем приводит к хаосу.Лицензионный аудит зависимостей
Использование сторонних библиотек в PHP ускоряет разработку, но скрывает юридические риски. Лицензионный аудит зависимостей — обязательная практика для защиты проекта. В этом руководстве вы найдёте пошаговый план по интеграции автоматизированных проверок в CI/CD, классификацию рисков и готовые скрипты для немедленного внедрения.Ошибки безопасности VPS
Безопасность VPS — обязательный первый шаг. Реальный эксперимент показал сотни попыток взлома в первый час работы нового сервера. Готовые решения для Ubuntu: закрыть доступroot, настроить SSH-ключи, включить фаервол UFW, защититься от брутфорса через Fail2ban и настроить автономные бэкапы. Начните с чек-листа на 10 минут, затем перейдите к детальной настройке для долговременной защиты.Безопасность Docker: 11 шагов для защиты контейнеров на практике
Взлом контейнера Docker — это реальная угроза, которая уже привела к утечкам данных и криптомайнингу. Чаще всего проблема возникает не из-за сложности, а из-за пренебрежения базовыми мерами безопасности. В этом практическом руководстве мы разберём ключевые шаги по защите Docker-контейнеров на основе анализа реальных инцидентов: от запуска без прав root до изоляции и автоматического сканирования образов.Директива location в Nginx: Руководство с примерами
Директиваlocation — основной механизм маршрутизации в Nginx, от правильной настройки которого зависит доступность сайта, безопасность и производительность. Непонимание работы location приводит к ошибкам 404, некорректной работе API и уязвимостям. В этом полном руководстве разбираем синтаксис, алгоритм выбора и практические примеры для любых задач.Типизация JavaScript через JSDoc
Используете JSDoc для типизации JavaScript? Узнайте, как настроить TypeScript Compiler для профессиональной проверки типов, генерации деклараций и интеграции в процесс разработки.Быстрая загрузка CSS через словари сжатия
Загрузка CSS всегда была компромиссом между скоростью первой загрузки и последующих переходов. Новая технология словарей сжатия ломает эту парадигму — рассказываем как.Symbol.iterator: управление spread-синтаксисом JavaScript
Symbol.iterator — это не просто «ещё один символ» в JavaScript. Это ключ, который позволяет вам сказать языку, как именно ваш объект должен вести себя в таких фундаментальных операциях, как цикл for...of или синтаксис spread (...). На практике это даёт удивительную возможность: создавать объекты, которые могут быть одновременно и структурированными хранилищами данных с именованными свойствами, и коллекциями, готовыми к «разворачиванию» в аргументы функции. В статье мы разберём, как с помощью Symbol.iterator решить классическую дилемму «объект или массив» на конкретном примере из реальной задачи.Ленивые итераторы в JavaScript: руководство с примерами
Полное руководство по хелперам итераторов в JavaScript: как ленивые вычисления заменяют цепочки.map().filter() и экономят память. Примеры, сравнение с массивами, подводные камни.Асинхронные циклы в JavaScript: как избежать ловушек
Запускаете три независимых API-запроса в цикле, а они выполняются друг за другом, заставляя пользователя ждать втрое дольше. Или получаете массив[Promise, Promise, Promise] вместо ожидаемых данных. Всё дело в том, как вы используете await, map и forEach.React изменился, хуки тоже должны измениться
В 2026 году React продолжает эволюционировать. Узнайте, как перейти от злоупотребленияuseEffect к современным паттернам хуков, которые делают код чище, уменьшают ошибки и готовят ваше приложение к будущему.Файловые потоки: Vinyl и vinyl-fs в основе Gulp
Сила современного Gulp — не в сборке фронтенда, а в автоматизации через потоки файлов. В основе — объектVinyl и движок vinyl-fs. Эта статья — разбор этих технологий, сценарии применения и замена устаревшего passthrough на актуальные паттерны.PSR-20 Clock: Тестируемое время в PHP
Представьте: вы пушите код, и в CI падает unit-тест из-за расхождения в одну секунду. Знакомая проблема? В основе лежит зависимость от системного времени. В этой статье разберём, как стандарт PSR-20 Clock решает эту проблему, делая ваши PHP-тесты стабильными и предсказуемыми.Частичное применение функций появится в PHP 8.6
В PHP 8.6 представлено частичное применение функций (PFA) — долгожданное решение для замены однотипных стрелочных функций вarray_map и array_filter. Этот инструмент, выходящий за рамки синтаксического сахара, способствует созданию более чистого и понятного кода. В статье рассматривается принцип работы PFA, приводятся практические примеры и проводится сравнение с классическими подходами.Генерируемые столбцы и SQL-представления: использование в Laravel
В этой статье мы подробно разберём, как использовать генерируемые столбцы SQL в Laravel для ускорения работы приложения.PHP 8.5: CLI/CGI: Удалён параметр `-z` / `--zend-extension`
В PHP 8.5 окончательно удалён параметр командной строки-z (и его алиас --zend-extension), который использовался для загрузки Zend-расширений через CLI и CGI интерфейсы.PHP 8.5: Все константы `MHASH_*` объявлены устаревшими
В PHP 8.5 все константы MHASH_* объявлены устаревшими. Узнайте, почему это важно для безопасности и совместимости вашего кода, и как подготовиться к переходу на современное API hash.PHP 8.5: Вывод из обработчиков буфера вывода объявлен устаревшим
Начиная с PHP 8.5 вывод из обработчиков буфера вывода объявлен устаревшим. При обнаружении вывода из обработчика PHP сгенерирует предупреждениеE_DEPRECATED, хотя сам вывод по-прежнему будет подавлен. В PHP 9.0 это приведёт к фатальной ошибке (Fatal Error), что прервёт выполнение скрипта.PHP 8.5: Функция `socket_set_timeout` объявлена устаревшей
В PHP 8.5 функцияsocket_set_timeout объявлена устаревшей. Полное описание замены на stream_set_timeout: синтаксис, параметры и обратная совместимость.PHP 8.5: Функция `xml_parser_free` объявлена устаревшей
С версии PHP 8.0 вызовxml_parser_free() перестал влиять на работу парсера, а в PHP 8.5 функция официально помечена как устаревшая.PHP 8.5: Функции `curl_close` и `curl_share_close` устарели
Если ваши логи в PHP 8.5 заполонили предупреждения об устареванииcurl_close() — не игнорируйте их. Эти функции действительно стали бесполезными, и их вызов теперь лишь шум. В PHP 8.0 cURL-дескрипторы превратились в объекты, а в PHP 8.5 от пустых функций окончательно решили избавиться. Разбираемся, что это значит для вашего кода.PHP 8.5: Функция mysqli_execute объявлена устаревшей
В PHP 8.5 функцияmysqli_execute объявлена устаревшей. Узнайте, как правильно заменить её на mysqli_stmt_execute и обеспечить совместимость кода с будущими версиями PHP.PHP 8.5: Отказ от использования нестандартных имён приведения типов
В PHP 8.5 типы(boolean), (double), (integer) и (binary) объявлены устаревшими: при использовании этих типов теперь выводятся предупреждения E_DEPRECATED. Эти альтернативные имена использовались параллельно с каноническими (bool), (float), (int) и (string), но в PHP 9.0 они будут удалены. Рассмотрим, почему принято такое решение, как это затронет ваш код и как подготовиться к переходу.PHP 8.5: Новая константа PHP_BUILD_DATE
В PHP 8.5 появилась константаPHP_BUILD_DATE, которая хранит дату и время сборки PHP-бинарного файла. Ранее эту информацию можно было получить только через phpinfo(), что было неудобно из-за необходимости парсить вывод функции. Теперь данные доступны напрямую в удобном формате.PHP 8.5: Новая константа PHP_BUILD_PROVIDER
В PHP 8.5 появилась новая глобальная константаPHP_BUILD_PROVIDER, отображающая информацию о поставщике сборки PHP. Она получает значение из переменной окружения, заданной при компиляции, что позволяет разработчикам получать контекстные данные о сборке приложения. Ранее эта информация была доступна только через вывод phpinfo(), теперь её можно использовать непосредственно в коде.PHP 8.5: Новые функции `get_exception_handler` и `get_error_handler`
В PHP 8.5 появились две важные функции для работы с обработчиками ошибок и исключений —get_error_handler и get_exception_handler. Эти нововведения решают проблему отсутствия прямого доступа к информации о текущих обработчиках, ранее требовавшая использования обходных решений.PHP 8.5: Поддержка трассировки стека для фатальных ошибок PHP
В PHP 8.5 появилась функция трассировки стека для фатальных ошибок, упрощающая процесс отладки приложений. Теперь разработчики могут видеть полный путь выполнения кода до момента возникновения критической ошибки, что существенно ускоряет поиск и устранение проблем. В статье рассматривается новая INI-директиваfatal_error_backtraces, ограничения и взаимодействие с существующими инструментами обработки ошибок.PHP 8.5: новая функция locale_is_right_to_left и Locale::isRightToLeft
В PHP 8.5 появилось обновление для работы с многоязычными приложениями: функцияlocale_is_right_to_left и метод Locale::isRightToLeft, позволяющие разработчикам автоматически определять языки с написанием справа налево, включая арабский и иврит. Эти инструменты значительно упрощают локализацию приложений и обеспечивают корректное отображение текста на языках с RTL написанием письма.PHP 8.5: CLI: php --ini=diff отображает нестандартные INI директивы
Отладка конфигурации PHP стала проще: в PHP 8.5 появилась командаphp --ini=diff. Она одним вызовом показывает все изменённые INI-настройки, избавляя от ручного сравнения конфигов или поиска в phpinfo().PHP 8.5: Intl: новый класс IntlListFormatter
Новый классIntlListFormatter в PHP 8.5 упрощает форматирование списков на разных языках. Синтаксис, примеры и таблицы локализаций внутри.PHP 8.5: новая Curl-функция curl_multi_get_handles — как она работает
В PHP 8.5 расширение cURL получило улучшение, которое делает работу с многопоточными запросами проще. Функцияcurl_multi_get_handles позволяет напрямую получить список всех добавленных CurlHandle, чего раньше катастрофически не хватало.PHP 8.5: Новая INI-директива max_memory_limit
В PHP 8.5 разработчики получили новый инструмент управления ограничениями памяти — INI-директиваmax_memory_limit. Она позволяет задать верхний предел, выше которого значение memory_limit задать невозможно. Это упрощает контроль ресурсов в продакшене и предотвращает неконтролируемый рост потребления памяти.PHP 8.5: новое поведение Filter — исключения при сбоях валидации
В PHP 8.5 функции filter_* могут выбрасывать исключения при ошибках валидации. Рассказываем, как работает новый флаг FILTER_THROW_ON_FAILURE и как использовать его на практике.PHP 8.5: Оператор pipe (|>) — примеры, ограничения, руководство
В PHP 8.5 добавлен новый оператор, оператор pipe (|>), позволяющий связывать несколько вызываемых объектов слева направо, принимая возвращаемое значение левого вызываемого объекта и передавая его вправо.Цикл релизов PHP: новые сроки поддержки 8.1-8.5 и EOL
Цикл релизов PHP изменился: активная поддержка всех текущих и будущих версий PHP продлена с одного года до двух лет, а сроки поддержки привязаны к концу календарного года.Новые сообщения об ошибках в PHP 8.5
Разбираем новые сообщения об ошибках в PHP 8.5: pipe-оператор, deprecated поведение, проблемы с массивами, типами и глобальными константами. Как исправить ошибки и подготовить проект к миграции.Руководство по установке и обновлению PHP 8.5 для Debian и Ubuntu
Полное руководство по установке и обновлению PHP 8.5 в Ubuntu и Debian: подключение репозитория Ondřej, установка PHP-FPM и расширений, миграция конфигурации, удаление старых версий и работа нескольких версий PHP одновременно.Что следует избегать в JavaScript
Распространённые ошибки и неверные подходы среди неопытных фронтенд и бэкенд-разработчиков, которые могут привести к появлению багов или проблемам с отказоустойчивостью.ECMAScript 2025: Что нового
25 июня 2025 года 129-я Генеральная ассамблея Ecma утвердила спецификацию языка ECMAScript 2025, а это значит, что теперь он официально стал стандартом.Всё, что появилось в PHP 8.5
Как и каждый год, в этом году вышла новая версия PHP, а именно PHP 8.5. Это минорная версия в линейке PHP 8, и она вышла 20 ноября этого года. В этом обзоре мы систематизируем все ключевые нововведения PHP 8.5.Понимание рекурсии в JavaScript
Разберитесь в рекурсии на примерах и узнайте, как использовать рекурсивные функции в JavaScript.Статистика версий PHP: Июнь 2025
Использование PHP в июне 2025 годаАгрегатные функции SQL — примеры и использование
В статье мы рассмотрим наиболее часто используемые агрегатные функции SQL, их синтаксис, практические примеры и способы оптимального использования в запросах.Зачем нужны логические свойства CSS
Сегодня я хотел бы поговорить о логических свойствах CSS — новом (и, возможно, более эффективном) способе определения свойств, которые по своей природе являются направленными.CSS if(): новая функция условной логики доступна в Chrome 137+
CSS с каждым днём превращается в настоящий «язык программирования». С появлением новых возможностей, таких как CSS переменные, функцияcalc(), псевдоклассы :has() и :is(), а также универсальные @media запросы, CSS упрощает создание сложных стилей и макетов.Мемоизация кэша в Laravel
Как использовать мемоизацию кэша в Laravel для повышения производительности и сокращения сетевых обращений к Redis, Memcached и другим хранилищам.Что такое this в JavaScript
Во второй части серии Mat Marquis объясняет, что такоеthis на самом деле, и помогает разобраться, чему он соответствует, исходя из различных контекстов.Переход от instanceof к Error.isError: надёжная проверка ошибок
Почемуinstanceof возвращает false для настоящих ошибок из других рилмов, а системы логирования теряют stack trace'ы? Переходим на Error.isError() — надёжный способ проверки ошибок в JavaScript, который работает везде: в iframe, воркерах и браузерных расширениях.React: Какой useEffect запускается первым?
Это не особенно очевидно, но дочернийuseEffect будет выполняться раньше родительского. Давайте разберёмся, почему.Проблемы преобразования значений в строки в JavaScript
Руководство по преобразованию значений в строки в JavaScript: сравнение 5 методов, работа с объектами иJSON.stringify(), практические примеры и лучшие практики.Когда определяется this в JavaScript
Ключевое словоthis в JavaScript ставит в тупик всех разработчиков — от джунов до сеньоров. В первой из двух частей углубимся в основы, необходимые для лучшего понимания this и того, как он работает.PHP 8.5: Новые функции array_first и array_last
PHP 8.5: Новые функции массиваarray_first и array_last.PHP 8.5: Все нововведения, изменения и удаления
PHP 8.5 вышел 20 ноября 2025 и принёс важные нововведения: оператор pipe, улучшенная обработка ошибок, новые функции для массивов и локалей, а также устаревание ряда старых функций. В этом обзоре — полный список изменений с ссылками на подробные статьи.Новые методы массивов в PHP 8.5: array_first() и array_last()
Разбираем новые функции массиваarray_first() и array_last() в PHP 8.5: синтаксис, примеры использования и сравнение с reset() и end(). Узнайте, как упростить работу с массивами.Советы по Laravel, которые должен знать каждый разработчик
Laravel полон скрытых сокровищ, способных значительно ускорить рабочий процесс. Эти практические советы помогут писать более чистый код, создавать быстрее и добиваться большего.Итак, вы хотите отказаться от пре- и постпроцессоров CSS...
Разбираем, можно ли в 2025 году отказаться от Sass и PostCSS в пользу нативного CSS, Lightning CSS и Tailwind. Плюсы и минусы современных инструментов.Значения по умолчанию с оператором нулевого слияния
Оператор нулевого слияния (??) предоставляет простой способ обработки null или undefined значений в JavaScript. Он просто необходим, и я расскажу, почему.Создание кастов моделей
В статье мы рассмотрим, что такое мутаторы, аксессоры и касты и как их использовать в приложении Laravel. Также рассмотрим, как создавать и тестировать касты в Laravel и хранить объекты в базе данных.Расширенное использование attr() в CSS
Теперь можно брать значения из атрибутов HTML, имеющих типы, так что если в элемент поместить атрибутdata-font-size="2.2rem", то его значение можно присвоить.Автоматическая жадная загрузка в Laravel
Жадная загрузка в Laravel — это способ загрузки связанных моделей при запросе к модели. Она сделана для предотвращения проблемы N+1, возникающей, при загрузке модели и последующей поочерёдной загрузке связанных с ней моделей, что приводит к многочисленным запросам к базе данных.Разноцветное выделение в CSS
::selection — это круто, но использование селекторов типа :nth-child(5n+2) — это гораздо интереснее.Модернизация с Web-платформой: Уменьшение движения
Демонстрация того, как современная веб-платформа может упростить уменьшение движения на старой кодовой базе.Резервные значения пользовательских свойств CSS
Браузер не знает, является ли значение CSS переменной валидным, пока переменная не будет разрешена, а к тому времени её обработает каскад и отбросит возможные резервные значения.Отсутствующий в Eloquent метод owns()
Хотя Eloquent ORM в Laravel довольно мощный и покрывает основные потребности для большинства случаев использования, всегда будет чего-то не хватать. Другими словами, всегда найдётся функция, которая не нужна пока не понадобится.Более быстрая сортировка строк с Intl.Collator
Улучшите сортировку строк с учётом локали, заменив повторяющиеся вызовыString.localeCompare одним экземпляром Intl.Collator для более быстрого и эффективного сравнения.Использование currentColor
Нужен лиcurrentColor? Не совсем, лучше использовать CSS переменные. Однако он всё равно имеет свою ценность, и об этом стоит поговорить..Изменение стиля по умолчанию вложенного заголовка h1
Браузеры начинают внедрять изменения в стили UA по умолчанию для вложенных заголовков разделов. Разработчикам следует убедиться, что их сайты не используют стили UA в определённых случаях, во избежание непредвиденных результатов и ошибок в проверках Lighthouse. Рассмотрим, что представляют собой эти изменения, как определить, есть ли проблема на ваших страницах, и дадим несколько советов по обеспечению соответствия и улучшению структуры сайтов.Селектор :root и CSS переменные
Используйте возможности CSS3 с селектором :root, упрощающим глобальную стилизацию, повышающим удобство сопровождения и открывающим динамичный, отзывчивый дизайн.Уменьшение сложности CSS с псевдоклассом :is()
Недавно появился повод воспользоваться новым псевдоклассом CSS:is(), и он превосходен! Хочу рассказать, как с его помощью можно значительно уменьшить сложность селекторов.Тёмный режим для SVG
Использование CSS функцииlight-dark() для реализации светлого и тёмного режима для SVG иконок,включая SVG, используемые с HTML элементом img или в качестве CSS свойства background-image.Возможности middleware в Laravel
Вам приходилось писать одни и те же проверки в нескольких контроллерах? Например, форматирование вводимых данных, блокировка доступа или отслеживание пользовательской активности? Всё это начинает казаться повторяющимся, верно?... и быстро надоедает.Шаблоны повышения производительности Eloquent
Способы улучшения производительности баз данных для приложений Laravel с использованием ORM Eloquent.Форматирование временных интервалов c Intl.DurationFormat
Хватит писать код форматирования временных интервалов вручную. Используйте новый мощный APIIntl.DateTimeFormat для отображения локализированного времени.Спокойное подчёркивание текста
Синие ссылки с подчёркиванием — хороший стиль по умолчанию для ссылок в основном тексте, но он выглядит чересчур резко. Возможно, мы можем его немного смягчить и сделать более гибким.Что такое TypeScript
Если вы JavaScript программист и хотите получить представление об использовании TypeScript (первый шаг перед изучением подробностей), то эта статья для вас.CSS трансформации и матрица
Глубокое погружение в матрицу CSS трансформаций, её взаимосвязь с отдельными свойствами CSS трансформаций, взгляд на скрытые возможности форм функций.Гиф в 2025 году
Вам нужно автовоспроизводящееся зацикленное видео без звука? В разговорной речи именно такое значение имеет слово «гифка». Слово прижилось, но сам формат изображения уже древний и устаревший. Существует множество способов добиться такого результата, но ясно одно: больше нет причин использовать громоздкий формат.gif.Четыре распространённые ошибки Vite в Laravel
Узнайте о четырёх распространённых ошибках, с которыми можно столкнуться при использовании Vite в приложениях Laravel. Рассмотрим возможные причины и способы их устранения.Декодирование CSS селекторов: :has(:not) и :not(:has)
При комбинировании CSS функций вложенность функций имеет значение. В статье мы рассмотрим разницу между:has(:not) и :not(:has), а также то, как подходить к декодированию CSS селекторов, использующих эти вложенные CSS функции.Теперь CSS функция attr() поддерживает типы
CSS функцияattr() позволяет извлечь значение атрибута выбранного HTML элемента и использовать его в качестве значения CSS свойства.Модернизация с Web-платформой: Производительность изображений
Демонстрация того, как современная Web-платформа может радикально упростить и обогатить старую кодовую базу.Простые тесты конечных точек с Policy::fake
Тестирование конечных точек может занять много времени, когда проверяется логика авторизации наряду с их поведением.Три подхода к селектору & (амперсанд) в CSS
& — мощное дополнение к CSS, позволяющее создавать селекторы без повторений и способствующее улучшению организованности и понимания кода.Ускорение сборки Docker с помощью кэша сборки
Как хранить и совместно использовать кэш сборок Docker в разных командах с помощью реестра Docker.Защитите Node.js приложения с `npx is-my-node-vulnerable`
Пакетis-my-node-vulnerable сравнивает вашу версию Node.js с базой данных безопасности Node.js, мгновенно предоставляя информацию о потенциальных рисках безопасности.Несколько интересных вещей о @counter-style
А вы уже использовали@counter-style? Этот инструмент способен существенно облегчить работу со списками и маркерами.Статистика версий PHP: Январь, 2025
Использование PHP в январе 2025 года. Дважды в год я пишу обновлённую информацию об использовании версий PHP в сообществе.Кэширование аутентифицированных пользователей в Laravel
Для ускорения работы приложений Laravel с высокой посещаемостью можно кэшировать аутентифицированных пользователей, избавляясь от лишних обращений к базе данных.Различие между PHP getenv() и $_ENV
Переменные среды играют важную роль в современной разработке, в частности, для управления конфиденциальными данными, такими как ключи API или специфические конфигурации среды. В PHP существует два основных способа доступа к этим переменным: функцияgetenv и суперглобальная переменная $_ENV. Хотя они могут показаться взаимозаменяемыми, но ведут себя по-разному и могут создавать проблемы при неправильном использовании.Руководство по вебхукам в Laravel
Освойте вебхуки в Laravel. Узнайте о настройке, безопасности, обработке событий и многом другом, позволяющем создавать мощные интеграции в режиме реального времени.Что такое PSR-6: Руководство по стандартам кэширования PHP
PHP приложение тормозит из-за повторяющихся запросов к базе данных или неэффективного кэширования? Вы хотите, чтобы переключение между библиотеками кэширования было более простым? PSR-6 — стандарт PHP, обеспечивающий согласованный интерфейс для систем кэширования, делающий код гибким, эффективным и простым в сопровождении.CSS @import: Плюсы и минусы
Импортирование CSS в каскадный слой. Условный импорт CSS с помощью запросов@supports и медиа запросов. @import vs <link>Не раздражающая валидация формы: CSS :user-valid и :user-invalid
Новые псевдоклассы:user-valid и :user-invalid предоставляют более умный способ стилизации состояния валидности формы в зависимости от действия пользователя.align-content: Простой способ выравнивания по центру с CSS
Наконец, можно центрировать/выравнивать по центу содержимое блочных макетов, не прибегая к flexbox гимнастикеHTML элемент details: Встроенный аккордеон, который вы не используете
Узнайте, как HTML элемент<details> может заменить JavaScript аккордеоны и почему он может быть лучше, чем ваше текущее решение.navigator.clipboard — Новый асинхронный Clipboard API в JavaScript
Копирование и вставка текста, изображений и файлов с помощью нового APInavigator.clipboardCSS @supports
Определение поддержки возможностей CSS и обеспечение интеллектуального отката с помощью@supportsCSS единицы измерения: lh и rlh
Изучение новых относительных единиц измерения CSS основанных на высоте строки и позволяющих отказаться от угадывания вертикального ритма.HTML элемент search
HTML-элементsearch — это контейнер, представляющий части веб-страницы с функциональностью поиска.Работа с JavaScript Scheduler API
Откройте для себя возможности управления приоритетами и контроля выполнения задач в JavaScript с помощью нового Scheduler API. Новый подход поможет вам стать более продуктивными и эффективными в своей работе.CSS content-visibility: Улучшение производительности веб-сайтов
CSS свойствоcontent-visibility откладывает рендеринг элемента, включая компоновку и отрисовку, до тех пор, пока он не понадобитсяCSS :has() — Псевдокласс, который давно ждали
Преобразуйте свой CSS с помощью псевдокласса:has(), позволяющего стилизовать элементы на основе их дочерних элементов.Кнопки с несколькими состояниями
Как правило, кнопки либо нажаты, либо нет. Но при условии, что обеспечена доступность, можно сделать группу радиокнопок внешне похожей на кнопку с несколькими состояниями с помощью CSS-хитростей.Изучение Символов JavaScript
Глубокое погружение в JavaScript Символы — что это такое, чем они важны и как их эффективно использоватьlink rel='modulepreload': Оптимизация загрузки модулей JavaScript
rel='modulepreload' указывает, что скрипт модуля должен быть получен, проанализирован и откомпилирован заранее, и сохранён для последующего выполнения.Лучший подход к SVG иконкам
SVG — лучший подход к реализации системы иконок в вебе. Существует множество способов использования SVG, каждый из которых имеет свои плюсы и минусы, и все их мы рассмотрим.Понимание битовых сдвигов JavaScript: << и >>
Практическое руководство по операторам левого и правого битового сдвига JavaScriptНастройка .htaccess для безопасности и производительности Apache
Файл.htaccess — мощный конфигурационный файл, используемый веб-серверами на базе Apache для управления и изменения настроек на уровне каталогов. Изменяя файл .htaccess, можно контролировать многие аспекты поведения веб-сайта, не прибегая к изменению настроек всего сервера.ES2025: Promise.try — Унифицированная обработка ошибок
Прекратите смешиватьtry/catch с цепочками промисов — новый Promise.try в JavaScript обрабатывает возвращаемые значения, промисы и ошибки унифицированоНовые возможности CSS за 2024 год
CSS постоянно развивается — недавно у него появился новый логотип, и за последний год было выпущено множество новых функций, не получивших должного внимания. Мы говорим о таких вещах, как возможность центрироватьdiv, не сходя с ума, более лёгкая работа с темным режимом, анимация скрытых элементов или использование CSS для решения математических задач. Кажется, что теперь можно делать больше с меньшими хлопотами, так что давайте рассмотрим некоторые из новых возможностей CSS, появившихся в последнее время.ES2025: Атрибуты импорта JavaScript
Понимание нового синтаксиса атрибутов импорта и причин, по которым нельзя полагаться только на расширения файлов.Пять примеров использования defer() в Laravel
Узнайте, как функция Laraveldefer() может улучшить время отклика, выполняя фоновые задачи, такие как отправка электронной почты, очистка файлов и ведение логов после отправки ответа.Что означает ошибка "refusing to merge unrelated histories"
Рассмотрим как решить распространённую ошибку Git: "refusing to merge unrelated histories" при объединении репозиториев с несвязанными историями.Доступ к связанным с маршрутом моделям в запросах формы Laravel с #[RouteParameter]
В этой статье вы узнаете о PHP атрибуте#[RouteParameter], который используется в Laravel для доступа к моделям, связанным с маршрутом, в классах запросов форм. Мы подробно рассмотрим, как применять этот атрибут и какие проблемы он решает.Понимание различных типов SSH ключей
Ключи Secure Shell (SSH) неотъемлемая часть современной защиты серверов и сетей. Они позволяют аутентифицировать пользователей и устройства, не полагаясь на пароли, уязвимые для попыток взлома. В статье рассмотрим различные типы ключей SSH и способы их эффективного использования.Руководство по типам данных SQLite
Большинство баз данных имеют определённые типы данных, но SQLite значительно отличается от других систем баз данных. В статье рассказывается о динамической системе типов SQLite и различных типах данных для тех, кто только начинает работать с SQLite.Настройка одного набора цветов для светлого и тёмного режимов
CSS переменные можно использовать, чтобы сделать цвета темнее, когда они отображаются на светлом фоне, и светлее, когда они отображаются на тёмном, что делает их более яркими в обоих случаях.Что бы я хотел знать о Postgres, когда начал его изучать
Я профессионально работаю над веб-приложениями уже более десяти лет, и за это время пришлось научиться использовать множество различных систем и инструментов. В процессе обучения я обнаружил, что официальная документация, как правило, оказывается наиболее полезной.Предзагрузка отзывчивых изображений
Как правильно предзагружать отзывчивые изображения, чтобы улучшить первоначальную загрузку страницыWeb Performance API: как измерить и ускорить загрузку сайта
Практическое руководство по Performance API: измеряем Core Web Vitals и ускоряем загрузку сайта.Эксперимент: Автоматическое включение View Transitions с MutationObserver
Вместо того чтобы добавлятьdocument.startViewTransition в различные места JS, используйте MutationObserver, следящий за мутациями DOM. В обратном вызове Observer'а отмените исходную мутацию и примените её снова, но на этот раз обернув во View Transition.Использовать двойные кавычки или нет
Совсем недавно я снова услышал, что в PHP до сих пор обсуждают одинарные и двойные кавычки, и что использование одинарных кавычек — это просто микрооптимизация, но если вы привыкнете постоянно использовать одинарные кавычки, то сэкономите кучу процессорных циклов!Новое в Symfony 7.2: Различные улучшения (часть 2)
В Symfony 7.2 добавлена оценка надёжности паролей, упрощено тестирование RequestStack, конфигурация nullable boolean, улучшена анонимизация IP-адресов и обновлён Security Profiler.Новое в Symfony 7.2: Различные улучшения (часть 1)
В Symfony 7.2 появились такие возможности, как настраиваемые задержки повторных попыток для Messenger, улучшенная поддержкаnull коалесценции в выражениях, настраиваемые атрибуты для паспортов входа пользователей и улучшенная поддержка VarDumper для PHP 8.4Конфигурационный файл SSH
Конфигурационный файл SSH — мощный инструмент для оптимизации рабочих процессов SSH и внедрения надёжных методов безопасности. Правильная настройка позволяет упростить сложные команды SSH, сохраняя все стандарты безопасности, что обеспечивает баланс между удобством использования и безопасностью в системном администрировании.Паттерны для эффективного манипулирования DOM с ванильным JavaScript
В руководстве рассматриваются такие шаблоны работы с DOM на JavaScript, как выбор правильногоquerySelector, кэширование элементов и улучшение обработки событий.Руководство по установке и обновлению PHP 8.4 для Ubuntu и Debian
Руководство для Debian и Ubuntu по установке PHP 8.4 на новый сервер или обновлению существующего PHP до PHP 8.4.Новое в Symfony 7.2: Опциональный секрет
Symfony 7.2 упрощает настройку приложений, делая секрет опциональным, повышая безопасность и удобство для разработчиков.Переходите на сторону light-dark()
За последние несколько лет интерфейсы с темным режимом сильно изменились. Все мы знаемтрадиционныйподход с использованием медиа-запросов, но в этой статье Sara Joy демонстрирует современные CSS-функции, благодаря которым соблюсти предпочтения пользователя в выборе цветовой схемы становится чертовски просто.
Улучшение производительности с делегированием событий
Делегирование событий — техника в веб-разработке, используемая для более эффективного управления событиями. Вместо того чтобы добавлять слушателей событий к каждому элементу, можно прикрепить один слушатель к родительскому элементу, повысив эффективность. Этот родительский элемент затем обрабатывает события для всех дочерних элементов и становится более эффективным, как продемонстрировано в статье.Новое в Symfony 7.2: Устаревания
В Symfony 7.2 устарело несколько функций, включая параметры конфигурации сессии, пустые идентификаторы пользователей и тег!tagged.Различные (и современные) способы переключения контента
Давайте уделим немного времени рассмотрению Dialog API, Popover API и остальных. Рассмотрим, когда лучше использовать каждый из них в зависимости от требований. Модальные или немодальные? JavaScript или чистый HTML/CSS? Не уверены? Не волнуйтесь, мы разберёмся во всём этом.Новое в Symfony 7.2: Stateless CSRF
В Symfony 7.2 появилась Stateless CSRF защита, позволяющая безопасно проверять токены, не полагаясь на сессии на стороне сервера.Новое в Symfony 7.2: Улучшения Serializer
В Symfony 7.2 в Serializer добавлена поддержка подклассовDateTime, новый конвертер имён SnakeCaseToCamelCase, обновлённые константы UUID и опциональная интеграция WebhookPHP 8.4: Curl: Новая опция CURLOPT_DEBUGFUNCTION
Curl предоставляет опциюCURLOPT_DEBUGFUNCTION для установки пользовательской функции обратного вызова, вызываемой вместо стандартной функции вывода сообщений.PHP 8.4: Curl: Новая опция CURLOPT_TCP_KEEPCNT
Расширение PHP 8.4 Curl представляет новую опцию Curl с названиемCURLOPT_TCP_KEEPCNT, устанавливающую максимальное количество запросов TCP keep-alive.PHP 8.4: Curl: Новая опция CURLOPT_PREREQFUNCTION
Расширение Curl в PHP 8.4 представляет новую опциюCURLOPT_PREREQFUNCTION, позволяющую задать пользовательский callable для принятия решения о продолжении или прерывании запроса. Эта возможность доступна, если расширение собрано с libcurl 7.80.0 или более поздней версии.PHP 8.4: Curl: curl_getinfo - поддержка CURLINFO_POSTTRANSFER_TIME_T
Функцияcurl_getinfo в расширении Curl возвращает список информации о запросе Curl. Также можно передать параметр в функцию, чтобы получить конкретную информацию о запросе.Новое в Symfony 7.2: Переработан компонент TypeInfo
В Symfony 7.2 изменён дизайн компонентаTypeInfo и улучшена его стабильность.Обзор наследования в JavaScript
В JavaScript наследование является важным способом повторного использования кода и управления сложными объектными отношениями. Благодаря модели, основанной на прототипах, в JavaScript существует несколько шаблонов наследования, обладающих уникальными преимуществами. Давайте рассмотрим эти техники и поймём, когда какая из них наиболее эффективна.Новое в Symfony 7.2: Новые параметры команд
В Symfony 7.2 появились новые опции команд, позволяющие отслеживать переменные env контейнера, форматировать вывод статистики мессенджера и фильтровать ресурсы во время отладки.Недостатки JavaScript
JavaScript, незаменимый компонент современной веб-разработки, отличается универсальностью и мощью. Однако даже у такого популярного инструмента есть свои сложности. Давайте разберёмся в дополнительных, часто упускаемых из виду аспектах, делающих JavaScript менее идеальным в определённых ситуациях.Новое в Symfony 7.2: Упрощённые однофайловые приложения Symfony
В Symfony 7.2 однофайловые приложения стали проще и требуют меньше настроек.Laravel под капотом: Немного макросов
Один из способов расширить Laravel с помощью пользовательских методов — макросы и миксины. Давайте покажу как это делается!Новое в Symfony 7.2: Упрощение настройки доверенных прокси
Symfony 7.2 упрощает настройку доверенных прокси с помощью сокращения частной подсети и новых переменных среды.PHP 8.4: exit/die изменены из языковых конструкций в функции
Ключевое словоexit и его псевдоним die — языковые конструкции, выводящие сообщение и завершающие текущий сценарий. В CLI-приложениях exit/die можно использовать для завершения работы приложения с заданным кодом выхода.Испортили git rebase?
Git rebase — мощный инструмент, помогающий перенести или объединить один, или несколько коммитов в новый базовый коммит, переписав историю проекта так, чтобы ваша ветка выглядела созданной из другого коммита. Он помогает поддерживать более чистую и линейную историю.CSS Веерное раскрытие с grid и @property
Анимациявеерное раскрытиеподразумевает последовательное раскрытие элементов из стопки с эффектом
подпрыгивания. Используя CSS grid, мы избавляемся от лишней работы по позиционированию.
Новое в Symfony 7.2: Улучшения ограничений
В Symfony 7.2 добавлены режим валидации для ограничения BIC, errorPath для ограничения Unique, опции format для ограничения Ulid и поддержка контекста для ограничения When.Асимметричная видимость PHP свойств
Одной из менее заметных функций, появившихся в PHP 8.4, каламбурно говоря, является ассиметричная видимость PHP свойств. Это обновление текущей видимости, а также ряд усовершенствованных возможностей по сравнению с readonly, хуками свойств или магическими методами. Это не для всех, но может оказаться весьма полезным. Давайте посмотрим!Новое в Symfony 7.2: Индикатор завершения работы консоли
Symfony 7.2 позволяет настраивать индикатор, отображаемый при завершении команды Console.Руководство по пагинации в Laravel 11
Узнайте о различных типах пагинации, доступных в Laravel, и как их использовать. Также рассмотрим основные генерируемые SQL запросы и как решить, какой подход к пагинации использовать.Глубокое погружение в сессии Laravel
При создании приложений Laravel почти гарантированно придётся иметь дело с сессиями. Они являются фундаментальной частью веб-разработки.Новое в Symfony 7.2: Улучшения в Mime
В Symfony 7.2 в компоненте Mime добавлена поддержка кастомных энкодеров и адресов электронной почты в кодировке Unicode.CSS min() — всё, что нужно
Victor Ayomipo экспериментирует с CSS функциейmin(), исследуя её гибкость с помощью различных единиц измерения, чтобы определить, является ли она абсолютной гарантией отзывчивости. Узнайте, какие предостережения он делает против догматических подходов к веб-дизайну, основываясь на своих выводах.Новое в Symfony 7.2: Keepalive сообщения транспорта
В Symfony 7.2 появилась функцияkeepalive для транспортов Messenger, предотвращающая таймауты при обработке сообщений.Ключевое слово stretch: лучшая альтернатива width: 100% в CSS
Используйтеmargin, избегая переполнения и горизонтальных полос прокрутки с width: stretchКэширование зависимостей в GitHub Action
GitHub Actions предлагает два способа хранения файлов: кэширование для зависимостей и артефакты для результатов работы, таких как логи и бинарники. Несмотря на похожие названия, эти методы служат разным целям.Хук useState в React: Полное руководство
В React хукuseState позволяет добавлять состояние в функциональные компоненты. useState возвращает массив с двумя значениями: текущее состояние и функцию для его обновления.Создание CLI-приложения с Laravel и Docker
Хотя Laravel традиционно используется для создания веб-приложений, некоторые приложения нуждаются в надёжных командах CLI, запускаемых через Docker в продакшн-среде. Узнайте, как настроить образ Docker для запуска Artisan CLI, благодаря чему вы получите основу для распределения CLI-приложений на PHP.Новое в Symfony 7.2: Непустые параметры контейнеров
В Symfony 7.2 появилась новая утилита, требующая, чтобы некоторые параметры существовали и имели непустые значения.PHP 8.4: Curl: Новые константы CURL_HTTP_VERSION_3 и CURL_HTTP_VERSION_3ONLY для поддержки HTTP/3
PHP 8.4: Curl: Новые константыCURL_HTTP_VERSION_3 и CURL_HTTP_VERSION_3ONLY для поддержки HTTP/3Новое в Symfony 7.2: Улучшения DX шаблонов
В Symfony 7.2 можно задавать HTTP заголовки статических страниц и выводить определённые блоки Twig используя атрибуты.Стрелочная функция vs. обычная функция в JavaScript
Разбираем ключевые отличия стрелочных и обычных функций в JavaScript: синтаксис, this, arguments. Узнайте, когда использовать каждый тип для чистого и эффективного кода. Примеры и сравнения.Новое в Symfony 7.2: Уведомления на рабочем столе
Symfony 7.2 позволяет отправлять уведомления прямо на рабочий стол, используя новый каналdesktop в компоненте Notifier.Игнорирование определённых типов исключений в Laravel
В мире разработки Laravel надёжная обработка ошибок имеет решающее значение для поддержания стабильной и комфортной работы приложения. Однако существуют сценарии, в которых требуется игнорировать определённые типы исключений. Laravel предлагает элегантный способ решения этой задачи, позволяя разработчикам тонко настраивать отчёт об ошибках в приложении. Давайте рассмотрим, как можно использовать эту возможность в проектах Laravel.Новое в Symfony 7.2: Улучшенный экстрактор переводов
В Symfony 7.2 улучшена команда извлечения переводов, позволяющая настраивать префиксы, изменять поведение обновлений и сортировать контент.Понимание разницы между объектами File и Blob
В JavaScript для представления двоичных данных используются объектыFile и Blob, но они служат для разных целей и имеют ряд различий.Новое в Symfony 7.2: Улучшение составных ограничений
В Symfony 7.2 составные ограничения легче тестировать и можно определять группы валидации и полезную нагрузку через конструктор.Как использовать Pan для простой аналитики в приложении Laravel
В статье мы рассмотрим, как интегрировать Pan в проект Laravel и отслеживать просмотры, наведение курсора и клики, не собирая персональных данных пользователей.Новое в Symfony 7.2: Улучшения компонента String
Symfony 7.2 улучшает компонент String, добавляя новый метод kebab-case, новые режимы усечения и испанский инфлектор.PHP 8.4: Intl: Новая функция intltz_get_iana_id и метод IntlTimeZone::getIanaID
Расширение Intl в PHP 8.4 предоставляет новую функциюintltz_get_iana_id и новый статический метод IntlTimeZone::getIanaID() в классе IntlTimeZone, возвращающий идентификатор часового пояса IANA для переданного идентификатора часового пояса.Новое в Symfony 7.2: Новая опция choice_lazy для ChoiceType
В Symfony 7.2 представлен новый классLazyChoiceLoader и опция choice_lazy для ChoiceType улучшающие производительности полей выбора с большим количеством вариантов.Не используйте одну и ту же модель для записи и чтения
Модели — отличный инструмент для взаимодействия с хранилищем данных. Можно задать, как выглядят данные, и это гарантирует, что они совместимы с хранилищем данных, обычно базой данных. Когда есть модель, проверяющая вводимые данные и помогающая их записывать, может возникнуть соблазн использовать её и для извлечения данных. За исключением некоторых базовых CRUD-приложений, обычно это не очень хорошая идея. Давайте разберёмся, почему.Новое в Symfony 7.2: Атрибут WhenNot
В Symfony 7.2 появился атрибутWhenNot, позволяющий исключить сервис из определённого окружения.Конфигурирование middleware в Laravel 11
Laravel 11 представляет новый способ конфигурирования middleware с помощью классаIlluminate\Foundation\Configuration\Middleware. Этот мощный класс предоставляет удобный интерфейс для управления стеком middleware приложения. В статье мы рассмотрим публичные методы класса Middleware и продемонстрируем, как эффективно использовать их в приложении Laravel.Git Workflow: Эффективное управление кодовой базой
Независимо от того, являетесь ли вы опытным разработчиком или только начинаете, эффективное управление кодовой базой имеет решающее значение. Git, популярная система контроля версий, помогает отслеживать изменения, сотрудничать с другими разработчиками и поддерживать целостность проекта. Однако без правильной организации рабочего процесса может стать непосильной задачей. В статье мы рассмотрим Git Workflow, охватывающий различные сценарии и лучшие практики, включая стратегии ветвления, такие какfeature-based и forking workflows, для обеспечения эффективного сотрудничества и управления проектом.Новое в Symfony 7.2: Линтер переводов
В Symfony 7.2 появилась новая командаlint:translations для проверки валидности содержимого переводов.Sass: @import объявлен устаревшим
В 2019 году была выпущена система модулей Sass, добавившая в язык новые правила@use и @forward, призванные заменить @import и сделать таблицы стилей более удобными и менее подверженными ошибкам. Теперь можно объявить, что @import официально устарел, начиная с версии Dart Sass 1.80.0.Новое в Symfony 7.2: Именованные сериализаторы
Symfony 7.2 позволяет конфигурировать несколько экземпляров сериализаторов с различными контекстами по умолчанию, конвертерами имён, наборами нормализаторов и кодировщиков.Автоматизация резервного копирования баз данных c Laravel
Обеспечение регулярного резервного копирования баз данных крайне важно для любого приложения. Планировщик задач Laravel в сочетании с облачным хранилищем предоставляет эффективный способ автоматизировать этот процесс. Давайте рассмотрим, как реализовать автоматическое резервное копирование баз данных с помощью Laravel и хранить его в облаке.Новое в Symfony 7.2: Атрибут AsMessage
В Symfony 7.2 представлен новый атрибутAsMessage, позволяющий настраивать транспорт(ы) непосредственно в классе сообщенияКак деструктуризация массивов может замедлить JavaScript код
В статье я расскажу об оптимизации использования деструктурирующего присваивания для повышения производительности. Рассмотрим различия в байткоде между двумя подходами к деструктурирующему присваиванию. Я проведу тест, подчёркивающий эти различия, и в конце вы поймёте, почемуArrayAssignmentPattern не всегда является лучшим выбором.Новое в Symfony 7.2: Улучшения языка выражений
В Symfony 7.2 улучшен компонент ExpressionLanguage, добавлены новые битовые и логические операторы, упрощена регистрация кастомных провайдеров и реализована поддержка комментариев.Напоминание, что @scope и блоки стилей HTML — это мощное сочетание
Существует так много различных инструментов для написания CSS с ограниченной областью видимости с очень разными взглядами на то, как это делать. Иногда это лишь подфункция инструмента, выполняющего другие задачи. Но, как правило, это концепция, требующая инструментария для реализации.Новое в Symfony 7.2: Silent Verbosity
Symfony 7.2 представляет silent verbosity для подавления всего вывода, включая ошибки.Что такое Docker и как он устроен
Docker произвёл революцию в создании, доставке и работе приложений, представив подход контейнеризации, объединяющий различные технологии для упаковки и развёртывания программного обеспечения. Давайте рассмотрим основные концепции, лежащие в основе Docker.Новое в Symfony 7.2: Week, WordCount и Yaml ограничения
В Symfony 7.2 появилось три новых ограничения: первое проверяет номера недель, второе проверяет количество слов, а третье проверяет синтаксис YAML.Релиз Symfony 7.2
Наиболее важные нововведения Symfony 7.2, релиз которого состоялся вНовые возможности Symfony
Серия статей, рассказывающих о новых возможностях, появляющихся в каждой версии Symfony.Руководство по деструктуризации в JavaScript
Если вы проводите много времени, пробираясь через современный JavaScript, то, скорее всего, встречали столько многоточий (...), что даже самый задумчивый герой ролевых игр 90-х был бы посрамлён. Я не буду винить вас за то, что вы находите их немного запутанными. Конечно, я не виню вас за то, что находите что-то в JavaScript запутанным, но я всегда считал эти многоточия уникально не интуитивными с первого взгляда. Не помогает и то, что часто сталкиваетесь с этими маленькими чудаками в контексте деструктурирующего присваивания, которое само по себе является странным синтаксисом.
Практические советы по доступности, которые можно применить сегодня
Мы все бывали там, когда, торопясь уложиться в срок, создавали выпадающее меню или модальное окно, не задумываясь о его доступности. Но что, если внести несколько небольших изменений, которые могли бы значительно улучшить работу с сайтом для широкого круга пользователей? Доступность не должна быть сложной задачей или галочкой в графесоответствие. Речь идёт о создании продуктов, которыми могут пользоваться все, независимо от их способностей, технической грамотности, операционной системы или устройства.
Создание анимации орбиты с помощью CSS переменных
Давайте анимируем CSS переменные! Это мощный способ применения CSS анимации, которая в противном случае была бы утомительной или непрактичной.Не проспите AbortController
Сегодня я хотел бы поговорить об одном из стандартных JavaScript API, который вы, скорее всего, проспали. Он называетсяAbortController.Отладка SQL запросов в Laravel
При создании сложных запросов к базе данных в Laravel наличие под рукой мощных инструментов отладки может стать решающим фактором. Laravel предоставляет набор методов, позволяющих детально изучать запросы, делая процесс отладки более плавным и эффективным. Рассмотрим эти методы и узнаем, как они могут улучшить рабочий процесс разработки.Авторизация маршрутов на основе политики в Laravel
Система авторизации Laravel, основанная на политиках, предоставляет мощный способ управления контролем доступа в приложениях. В сочетании с middleware маршрутов она предлагает чистый и эффективный метод обеспечения безопасности маршрутов на основе прав пользователей. Рассмотрим, как реализовать авторизацию маршрутов на основе политик с помощью middleware 'can'.Гибкое кэширование в Laravel — это очень просто
Познакомьтесь с новым методомCache::flexible() в Laravel, позволяющим сбалансировать свежесть данных и производительность в приложениях с высокой активностью.Используйте useId() вместо вручную созданных ID
Мы считаем, что следует чаще использовать хукuseId(). Если вы обнаружили, что не используете его, есть большая вероятность, что ваше приложение или сайт либо недоступны (a11y), либо вы создаёте код, склонный к ошибкам. Позвольте объяснить.Удаление дубликатов из массивов и строк в JavaScript
Удаление дубликатов — распространённая проблема в программировании, возникающая в различных контекстах, например, при очистке данных или обеспечении уникальности записей. Этот вопрос могут задать на собеседовании, поскольку он довольно прост и может подготовить собеседника к более сложным вопросам.Использование async и defer для управления скриптами
В мире веб-разработки оптимизация времени загрузки страниц имеет решающее значение. Два мощных атрибута тега<script> — async и defer — могут существенно повлиять на производительность сайта. Использование этих атрибутов без их глубокого понимания может негативно сказаться на производительности и привести к ошибкам. Давайте начнём с основ и узнаем, что делают эти атрибуты и когда их следует использовать.Сокращения JavaScript экономящие время
Разработчик JavaScript, пишущий чистый, эффективный и лаконичный код может значительно сократить время разработки. Понимание ряда удобных сокращений JavaScript может сделать код более читаемым и помочь избежать повторяющихся шаблонов. В статье мы рассмотрим 10 мощных сокращений JavaScript, способных сэкономить часы работы над кодом и повысить производительность.PHP 8.4: MBString: База данных символов Юникода обновлена до версии 16
Благодаря поддержке Unicode 16 расширение MBString может работать со всеми новейшими символами Emoji, а также имеет самую актуальную информацию о смене регистра и ширине символов.BCMath: Новая функция bcdivmod
bcdivmod может быть использован в случаях, когда необходимо получить частное и остаток от деления, и избавляет от необходимости вызывать функции bcdiv и bcmod по отдельности.Разница между export default xxx и export {xxx as default}
Разница междуexport default xxx и export { xxx as default } в JavaScript может показаться малозаметной, но может повлиять на поведение кода.Проблемы экспорта по умолчанию в модулях JavaScript
Модули JavaScript — способ организации кода в многократно используемые компоненты, используемые совместно в разных файлах и проектах. Модули можно импортировать и экспортировать с помощью двух различных методов: экспорта по умолчанию и именованного экспорта. Рассмотрим экспорт по умолчанию и причины, по которым следует избегать его использования в модулях JavaScript.Совет по безопасности: Параметризуйте имена параметров!
Ещё один пример того, почему никогда не следует доверять пользовательскому вводу!Новые значения и функции в CSS
Рабочая группа CSS выпустила первый публичный рабочий проект CSS Values and Units Module Level 5. В нем описаны общие значения и единицы измерения, принимаемые свойствами CSS, и синтаксис, используемый для них, а также добавлено несколько интересных новых функций.Все доступные в Laravel PHP атрибуты
Атрибуты PHP — отличный способ добавить метаданные к классам, методам и свойствам. Laravel предоставляет множество атрибутов из коробки, которые можно использовать в приложениях.Градиентный текст с тенью
В наши дни градиентный текст довольно легко сделать с помощьюbackground-clip: text; — но это убивает возможность использовать text-shadow. На помощь приходит SVG.PHP 8.4: Константа E_STRICT объявлена устаревшей
Поскольку все уведомленияE_STRICT были преобразованы в E_NOTICE начиная с PHP 8.0, в PHP 8.4 константа E_STRICT объявлена устаревшей.git switch и git checkout: В чем разница
Командыgit switch и git checkout используются для изменения веток, но у них есть различия в синтаксисе и поведении. Разберёмся в чём разница между ними.Обновления PHP: Блокируйте регрессии с PHPStan
Часто, когда думают о PHPStan, обычно думают об улучшении Type Coverage. На самом деле это лишь малая часть того, на что способен PHPStan. В этой статье рассмотрим, как использовать его для предотвращения регрессий обновления.Синтаксис Pest vs PHPUnit: Примеры expect()
У фреймворка тестирования Pest много поклонников, в основном из-за элегантного, читабельного «англоязычного» синтаксиса. Я покажу три моих любимых примера синтаксисаexpect() и сравню аналогичные вещи в Pest vs PHPUnit.React и FormData
Узнайте о новейшем и одновременно старейшем стандарте React для доступа к данным формы, а также о том, как использовать его с TypeScript.12 вопросов для собеседования по Laravel: Работодателю и кандидату
Существует множество статей с вопросами для собеседования по Laravel, но в основном они звучат как вопросы из викторины.Как восстановить удалённую ветку Git
Узнайте, как восстановить удалённую ветку Git. Познакомьтесь с методиками для начинающих, средних и продвинутых пользователей, использующих Git reflog и историю коммитов, а также с лучшими практиками по предотвращению случайного удаления ветки.Кэширование запросов к базе данных в Laravel
Кэширование запросов к базе данных — мощная техника оптимизации производительности приложений Laravel. Кэшируя часто используемые данные, можно значительно снизить нагрузку на базу данных и ускорить работу приложения. В статье мы рассмотрим, как использовать Laravel методCache::tags() для реализации тонкого контроля над стратегией кэширования.Упрощение преобразования данных с хелпером transform()
Laravel хелперtransform() — мощный, но недооценённый инструмент, способный очистить код при работе с условными модификациями данных. Эта универсальная функция позволяет преобразовывать данные только при соблюдении определённых условий, что делает её идеальной для обработки пользовательского ввода, форматирования ответов API или предоставления значений по умолчанию. Рассмотрим, как эффективно использовать хелпер transform() в проектах Laravel.Оптимизация обработки больших массивов данных с Lazy Collection
При работе с большими массивами данных в Laravel использование памяти может быстро стать узким местом. Lazy Collection предлагает элегантное решение проблемы, позволяя эффективно работать с большими объёмами данных. Давайте рассмотрим, как использовать эту мощную функцию в приложениях Laravel.Руководство по merge, rebase, squash и cherry-pick
Эта статья — просто сборник материалов и реальных примеров, которые я бы с удовольствием прочитал, когда изучал Git. Это сделало бы процесс обучения более насыщенным, предоставив больше информации не только о том, как, но и когда следует использовать эти команды.Что означает гидратация
Гидратация относится к JavaScript-фреймворкам, делающим серверный рендеринг HTML интерактивным.npm vs. yarn: Ключевые различия и сравнение
В экосистеме JavaScript выбор между менеджерами пакетов npm и yarn может существенно повлиять на рабочий процесс разработки. И npm, и yarn широко используются в качестве инструментов, помогающих разработчикам управлять зависимостями в проектах, но каждый из них предлагает уникальные возможности, отвечающие различным потребностям проекта. В статье, посвящённой сравнению npm и yarn, мы рассмотрим их ключевые различия, преимущества и примеры использования, чтобы помочь решить, что лучше для ваших проектов.Руководство по использованию Vite в React
Надоело ждать Webpack по 10 секунд? Vite запускает сервер за 200 мс, а HMR работает мгновенно. В этом гайде: настройка с нуля, работа с картинками и CSS, секреты переменных окружения (.env) и разбор 3 самых частых ошибок. Переходите и пишите код, а не ждите!Стандарт автозагрузки PSR-4 в PHP
Узнайте, как реализовать автозагрузку PSR-4 в PHP. Откройте для себя преимущества PSR-4, как настроить его с помощью Composer, а также лучшие практики организации пространств имён в ваших PHP проектах.useEffect в React
React стала одной из популярных библиотек для создания UI, а с появлением хуков в React 16.8 в распоряжении разработчиков появилось ещё больше мощных инструментов. Один из таких хуков —useEffect, позволяющий выполнять побочные эффекты в компонентах функций. Рассмотрим хук useEffect, его использование и лучшие практики.MySQL GROUP BY
Узнайте всё оGROUP BY в MySQL, от базового до продвинутого использования, с примерами, подводными камнями и лучшими практиками для эффективного объединения данных.Руководство по User Agent
User Agent, часто сокращённо UA, играет важную роль в том, как веб-сервер интерпретирует и отвечает на запросы различных клиентов, таких как браузеры, мобильные устройства и даже боты.Фоны для блочной модели (и чем она может быть полезна)
Можно ограничить распространениеbackground-image элемента с помощью background-clip. Это означает, что можно применить различные фоны, скажем, к padding и border.AggregateError в JavaScript
AggregateError помогает обрабатывать сразу несколько ошибок в JavaScript. Это упрощает управление кодом и делает его более надежным.Artisan: Инструмент управления Laravel
Artisan — это интерфейс командной строки Laravel, помогающий оптимизировать процесс разработки. Давайте изучим его возможности и узнаем, как он может повысить производительность.Упрощение валидации форм в Laravel Livewire с атрибутом #[Validate]
Как разработчики Livewire, мы всегда ищем способы сделать компоненты более лаконичными и простыми в обслуживании. Атрибут#[Validate], появившийся в Livewire v3, предлагает чистый и эффективный способ обработки валидации формы непосредственно в свойствах компонента. В статье мы рассмотрим, как использовать атрибут #[Validate] для упрощения компонентов Livewire и создания более читабельного кода.Как создавать фасады в Laravel
Если фасады в Laravel сбивают с толку, присоединяйтесь и узнайте, как определить сервис, стоящий за любым фасадом, встречающимся во фреймворке.Оптимизация производительности Laravel с утилитой Benchmark
В мире веб-разработки производительность имеет ключевое значение. Laravel предоставляет утилиту Benchmark, позволяющую разработчикам измерять и сравнивать время выполнения различных фрагментов кода. Этот инструмент неоценим для выявления узких мест и оптимизации производительности приложения. Давайте рассмотрим, как использовать утилиту Benchmark в проектах Laravel.Валидация (безопасных) URL-адресов
Знаете ли вы, что валидатор URL в Laravel позволяет контролировать какие протоколы принимаются? Вот моя рекомендация...Пресеты архитектурного тестирования в Pest 3
Узнайте, как Pest 3 упрощает архитектурное тестирование с помощью пресетов, позволяя без труда внедрять лучшие практики и поддерживать качество кода в проектах.Что нового в Pest 3 и как его обновить
Повысьте уровень тестирования PHP с помощью Pest 3. Архитектурные тесты с пресетами, мутации и управление списками задач.Советы по Моделям Laravel
Laravel предоставляет огромное количество классных возможностей, помогающих улучшить опыт разработки (DX). Но из-за регулярных релизов, стрессов, связанных с повседневной работой, и огромного количества доступных функций легко упустить некоторые менее известные возможности, которые могут помочь улучшить код.Как создать PHP пакет
Если хотите создать PHP пакет с нуля и поделиться им с другими PHP разработчиками, Composer — это менеджер зависимостей, упрощающий этот процесс! Благодаря Composer PHP имеет одну из лучших экосистем пакетов. Погрузимся в этот процесс и пройдёмся по шагам создания PHP пакета.Десять редко используемых правил валидации Laravel
Вам известны все правила валидации, доступные в Laravel? Подумайте ещё раз! В Laravel есть множество готовых правил валидации, способных значительно упростить написание кода. Рассмотрим 10 редко используемых правил валидации, о существовании которых некоторые не подозревали."Умные" макеты с контейнерными запросами
Современный CSS даёт множество новых, простых способов решения старых проблем, но часто новые функции не только решают старые проблемы, но и открывают новые возможности.Всё о циклах в JavaScript
В каждом языке программирования есть циклы. Циклы выполняют операцию (т. е. часть работы) несколько раз, обычно по одному разу для каждого элемента массива или списка, или просто повторяют операцию до тех пор, пока не будет выполнено определённое условие.PHP 8.4 Property Hooks (хуки свойств)
Узнайте о новой функции property hooks (хуки свойств), которая будет добавлена в PHP 8.4 выходящем в ноябре 2024 г.CSS свойство contain
CSS Containment используется для оптимизации и открытия возможностей стилизации путём изоляции элементов от остальной части страницы. Различные значенияcontain (size, paint, layout и т. д.) обеспечивают различные преимущества и компромиссы.Новые функции массива в PHP 8.4
Узнайте, как использовать новые функции PHP 8.4array_find, array_find_key, array_all и array_any. Кроме того, приведены аналоги в Laravel, для достижения тех же результатов.Когда использовать if, switch и match в PHP
Узнайте, когда следует использоватьif, switch и match в PHP для оптимальной эффективности и читабельности кода. Изучите синтаксис, примеры использования и практические примеры.Laravel Collections: сила метода reduce()
В Коллекциях Laravel есть хелпер, помогающий работать с массивами данных. Для работы с данными используется подход функционального программирования, и одной из операций, которую можно выполнить, является операция сведенияПочему я предпочитаю функции массива циклам
В PHP я предпочитаю использовать функции массивов, а не циклыforeach. И хотя синтаксис не такой красивый, как в JavaScript, считаю, что они работают лучше, чем "обычный" цикл.Ускорение компиляции Sass в Vite и Webpack
Компиляция Sass может быть узким местом в сборке, но это больше не так.Синтаксис относительного цвета — примеры использования
Поддержка синтаксиса относительного цвета в CSS теперь повсеместна (вперёд, к взаимодействию!), поэтому рассмотрим некоторые базовые (и всё ещё очень полезные) варианты использования, например, применение альфы к цвету, который у вас есть под рукой.Типы репликации баз данных
Репликация базы данных — это как создание копий важных документов, чтобы иметь резервные копии на случай, если с оригиналом что-то случится. Существуют различные способы создания таких копий, например, одна основная копия (master), которая обновляется, а затем создаются копии (slave) этой обновлённой версии. Другой способ — иметь несколько основных копий (master), обновляемых и совместно использующих эти обновления. Далее рассмотрим различные типы репликации баз данных.Как настроить MySQL репликацию Master-Slave
Рассмотрим как настроить MySQL репликацию master-slave, а также каковы плюсы и минусы репликации master-slave.Разделение хостов баз данных для оптимизации в Laravel
Если говорить о производительности базы данных, то она в первую очередь определяется тем, насколько хорошо база данных справляется с операциями чтения и записи.Предоставление определения типа для CSS с @property
Пишите более безопасный CSS, используя@property, позволяющий определять типы для пользовательских свойств. Узнайте, почему традиционные запасные значения могут не сработать и как функции @property повышают устойчивость определений пользовательских свойств.MySQL 9.0 Community Edition: Ключевые возможности и улучшения
Ознакомьтесь с новыми возможностями и улучшениями в MySQL 9.0 Community Edition, вышедшем 1 июля 2024 года. Обзор охватывает обновления типов данных, производительности и новых возможностей, ориентированных на современные приложения.Зачем нужна типизация массивов в PHP
В PHP уже давно существует возможность типизировать параметры методов и функций. Добавление типов в массивы (и просто добавление типов в целом) поможет при использовании IDE или статического анализа, а также поможет другим разработчикам в команде понять ваш код. Также это поможет избежать ошибок и сделает код чище и читабельнее.Что, если использовать контейнерные единицы измерения для... всего
Однажды я спросил себя: а что, если использовать контейнерные единицы измерения для каждого элемента дизайна? Я задался этим вопросом, отчасти потому, что мне показалось, что ответ может быть таким: ну, тогда всё будет очень хорошо масштабироваться!Примеры использования cURL
Независимо от того, разработчик ли вы, DevOps-инженер, системный администратор, QA или представитель любой другой технической профессии, вы наверняка знакомы с cURL — инструментом командной строки и библиотекой для передачи данных с помощью URL (как описано в документации).Зачем нужен элемент dialog
Диалоговые окна — неотъемлемая часть любого пользовательского интерфейса, будь то веб-интерфейс, мобильный или любой другой, существующий на сегодня.Оптимизация производительности PHP
Производительность PHP кода имеет решающее значение для обеспечения плавной и отзывчивой работы пользователей. Независимо от того, создаёте ли систему управления контентом или платформу электронной коммерции, понимание факторов, влияющих на производительность PHP, и влияния версий PHP необходимо для создания быстрых и эффективных веб-приложений. Давайте разберёмся в ключевых аспектах, влияющих на производительность веб-приложения.Что нового в React 19: Новые возможности
React продолжает развиваться, предлагая разработчикам мощные инструменты для создания динамичных и эффективных веб-приложений. В предстоящем релизе React 19 появится несколько революционных возможностей, способных перевернуть представление о том, как разрабатывать с React. В этой статье рассмотрим эти новые возможности, подчеркнём их преимущества и то, как они решают существующие проблемы, а также приведём примеры, иллюстрирующие каждую концепцию.Прекратите использовать MD5 и SHA-1!
MD5 подобен таракану — он живуч и вылезает отовсюду, но ясно одно: необходимо прекратить его использование (и SHA-1 тоже)!Как вычисляется значение пользовательских свойств в CSS
Ознакомьтесь с поведением, о котором следует знать, как браузер вычисляет окончательные значения пользовательских свойств. Непонимание этого процесса может привести к неожиданному или отсутствующему значению, а также к трудностям с поиском и устранением проблемы.Отпечатки запросов и как их использовать в Laravel
Отпечаток — уникальный узор или характеристика, которая может быть использована для идентификации человека или объекта. Это понятие широко используется в различных областях.React 19: Изменение в современной веб-разработке
React, популярная JavaScript-библиотека для создания пользовательских интерфейсов, собирается сделать гигантский прыжок вперёд в своей грядущей версии 19. В преддверии выхода React 19 разработчики по всему миру с нетерпением ждут новых возможностей и улучшений, обещающих произвести революцию в создании веб-приложений.Popover API
Popover API предоставляет разработчикам стандартный, последовательный и гибкий механизм для отображения контента всплывающего поверх другого содержимого страницы. Управление всплывающим контентом может осуществляться как декларативно с помощью атрибутов HTML, так и с помощью JavaScript.Введение в Popover API
В последнее время браузеры стремительно обретают довольно важные возможности. Возможности, для реализации которых могло потребоваться несколько библиотек JavaScript (или CSS), теперь доступны в браузерахиз коробки.
Именованные аргументы в PHP
Узнайте, как использовать именованные аргументы в PHP, чтобы улучшить читаемость кода. Кроме того, поговорим о некоторых проблемах, о которых следует помнить.Базовое руководство по GitHub Actions
В мире разработки программного обеспечения упрощение работы — это всегда выигрыш. И именно здесь на помощь приходит GitHub Actions. Он как эффективный помощник, выполняющий все повторяющиеся задачи, чтобы можно было сосредоточиться на творческих аспектах. Давайте рассмотрим подробнее, почему GitHub Actions такой полезный инструмент.Повышение производительности PHP с OPCache
OPCache — надёжный инструмент, повышающий производительность PHP, делающий веб-приложения быстрее и эффективнее.Как копировать папки через SSH
Копирование папок между локальной и удалённой системами может не относиться к ежедневным задачам, но иногда это необходимо. В этой статье мы рассмотрим практические сценарии использования SSH для копирования папок с упором на командуscp. Рассмотрим основные способы использования, типичные проблемы и советы, позволяющие сделать передачу файлов более эффективной.Руководство по событиям модели Laravel
Рассмотрим, что такое события модели и как их использовать в приложении Laravel. Также рассмотрим, как тестировать события модели и проблемы, на которые следует обратить внимание при их использовании.Создание npm пакета на TypeScript с поддержкой CommonJS и ESM
Если необходимо создать npm пакет и гарантировать, что его смогут использовать все желающие, нужно, чтобы он поддерживал CommonJS (CJS) и ECMAScript Modules (ESM). Рассмотрим, как создать такой пакет используя TypeScript.Версионирование API в Laravel 11
С выходом Laravel 11 скелет приложения был урезан, чтобы удалить лишние файлы, не требующиеся в каждом проекте. Частью этого изменения стало удаление из исходного кода приложения всех сервис провайдеров, кромеAppServiceProvider.array_find в PHP 8.4
В PHP 8.4 добавлено несколько функций, которых давно не хватало:array_find() и её вариации. Назначение array_find() простое: передайте ей массив и обратный вызов, и получите первый элемент, для которого обратный вызов вернёт true.Поддержка HTML 5 в PHP 8.4
Несмотря на то, что HTML 5 существует уже более 16 лет, PHP никогда не поддерживал его должным образом. В PHP есть\DOMDocument, который теоретически должен поддерживать HTML 4, но на самом деле он уже не совместим с HTML 4.CSS свойство display
Понимание CSS свойстваdisplay и его значений важно для создания правильно организованных и привлекательных сайтов.Освоение области запросов в Laravel
В статье рассмотрим локальные и глобальные области запросов. Узнаем, в чем разница между ними, как создавать свои собственные и как писать для них тесты.CSS однострочники для улучшения (почти) любого проекта
Коллекция простых однострочных CSS решений для добавления небольших улучшений на любую веб-страницу.Наследование в CSS
Наследование в CSS — это действительно суперспособность, и именно оно превращает разработку в Интернете в удовольствие, если вы принимаете его. В этой небольшой статье я собираюсь обратить вас в супер фанатов.Поддомены для пользователей в Laravel
В статье рассмотрим, как регистрировать поддомены для пользователя, команды, компании, какой бы ни была модель. Сначала рассмотрим основы определения поддоменов в маршрутах Laravel, а затем перейдём к практическим действиям.Основы каскада и специфичности
Каскад и специфичность, которых часто боятся разработчики, на самом деле очень просты, если использовать правильную модель мышления при создании CSS.Статистика версий PHP: Июль, 2024
Использование PHP в июле 2024 года. Каждые полгода я публикую обновлённую информацию о том, какие версии PHP используются в сообществе.Магические константы в PHP
Узнайте о девяти магических константах, предоставляемых PHP. Рассмотрим примеры того, что делает каждая из магических констант.Маска изображения довольно удобна
Часто упускаемое из виду CSS свойствоmask-image может быть простым способом привнести немного индивидуальности в вашу работу над веб-дизайном.Руководство по PHP атрибутам
Узнайте, что такое PHP атрибуты и как их использовать. Также рассмотрим, как создавать собственные PHP атрибуты.Введение в Alpine.js
Alpine.js — легковесный JavaScript фреймворк. Позволяющий создавать интерактивные пользовательские интерфейсы без написания большого количества JavaScript-кода.Как работают Фасады Laravel
Сегодня погрузимся в мощную возможность Laravel — Фасады. Рассмотрим эту концепцию на практическом и интересном примере: ФасадImageFilter.Тесты поддержки браузерами современных веб-функций на JavaScript
Иногда важно знать, поддерживается ли функция браузером или нет, чтобы можно было что-нибудь предпринять. Возможно, загрузить полифилл или просто выбрать другой подход. В статье рассматриваются новые возможности браузеров и тесты их поддержки браузером.WeakMap — скрытое сокровище в PHP
В PHP 8.0 был добавленWeakMap — мистическая функция, которую мы никогда не использовали, пока не столкнулись со сложной проблемой, требующей решения.Докеризация приложения Laravel 11
Докеризация Laravel приложения не так проста, как кажется, поэтому сегодня рассмотрим процесс создания Docker-образа для приложения Laravel 11. Для этого настроим полное окружение с помощью Docker Compose, чтобы приложение Laravel было готово к развёртыванию в любой среде.Что делает aria-hidden=true с интерактивными элементами на самом деле
Все знают, что нельзя использоватьaria-hidden в интерактивных элементах. Но в чём проблема? Я решил выяснить это, чтобы в следующий раз, когда об этом спросят, я мог лучше объяснить.Утверждение структуры JSON ответа в Laravel
Узнайте, как можно проверить структуру JSON ответов в Laravel с помощью мощных методов утверждения JSON, доступных в классеTestResponse в Laravel.Создание виртуального столбца в базе данных в Laravel
Виртуальные столбцы необходимы, когда требуется добавить в модель столбец, не существующий в базе данных. Это может быть необходимо для таких вещей, как вычисляемые столбцы, или для столбцов, являющихся производными от других столбцов.Полиморфные модели Laravel по типам
Узнайте, как использовать полиморфные модели по типу в Laravel для работы с различными типами параметров в одной таблице базы данных. В статье рассматривается процесс использования полиморфных отношений для работы с различными типами параметров в одной таблице базы данных.7 примеров использования Proxy
ОбъектProxy в JavaScript — удобный инструмент, открывающий мир возможностей и позволяющий создавать в приложениях полезное поведение. В сочетании с TypeScript Proxy расширяет возможности управления и манипулирования объектами и функциями такими способами, о которых вы даже не подозревали. В статье рассмотрим невероятную пользу Proxy на практических примерах.Валидация JSON с JSON Schema и PHP
Простота и гибкость делают JSON идеальным выбором для обмена данными, API и веб-сервисов, конфигурационных файлов, хранения данных и сериализации. Однако такая гибкость может привести к проблемам, если структура данных не будет должным образом проверена. Именно здесь на помощь приходит JSON Schema предоставляющая мощный способ проверки структуры и содержимого данных JSON.Тонкая настройка текстовых полей
Веб формы и поля ввода поддерживают множество дополнительных атрибутов, способных дать подсказку браузеру и улучшить пользовательский опыт заполнения форм в Интернете. Приложив совсем немного дополнительных усилий, можно сделать так, чтобы формы помогали, а не мешали.Алгоритм суммы двух чисел на JavaScript
Представьте, что находитесь на шумной вечеринке, и каждый носит на спине определённое число. Ведущий объявляет игру — найдите двух человек, чьи номера складываются в магическое число, и получите приз!Продвинутый SQL: Оптимизация запросов и комплексные JOIN
Статья посвящена продвинутым темам SQL, в ней рассматриваются сложные стратегии оптимизации запросов, усовершенствованные типы join и тонкости операторов SELECTДве мощные техники: CSS Reset и normalize.css
В современной веб-разработке CSS сброс и нормализация — две важные техники, позволяющие добиться согласованности стилей в разных браузерах.Запуск одного теста, пропуск тестов и другие советы и рекомендации
Вдохновлённый сообщением создателя Pest Nuno Maduro о методе->only() в PestPHP, я собрал советы и рекомендации для PHP-разработчиков по эффективной изоляции, пропуску и итерации тестов.Понимание SQL оператора ORDER BY
SQL операторORDER BY — мощный инструмент, используемый для сортировки результатов запроса.Как использовать Corepack
Недавно я узнал о corepack, инструменте, работающем с Node.js и решающем множество проблем с менеджерами пакетов. С этого момента буду использовать его в своём процессе разработки.Использование CSS анимации, основанной на прокрутке, для индикации прогресса прокрутки на основе секций
Индикатор прогресса прокрутки — довольно простая вещь, которую можно создать с помощью анимации, основанной на прокрутке вscroll()-стиле. Но мы создадим индикаторы для каждого раздела страницы, используя view()-стиль.Сокращаем размер конфигов Symfony до минимума
Считаю, что в каждом приложении Symfony можно уместить сервисный конфиг в 5 строк. Я поделюсь двумя техниками, которые использую последние пару лет для достижения наилучшей архитектуры с наименьшим количеством строк.Как обрабатывать NULL в SQL — функции и примеры использования
NULL в SQL — это не пустое значение, а состояниенеизвестно. Узнайте, как правильно проверять, обрабатывать и избегать ошибок с NULL в ваших запросах.
PHP 8.4: Вызов session_set_save_handler() с более чем 2 аргументами объявлен устаревшим
Вызовsession_set_save_handler() с более чем двумя аргументами объявлен устаревшим.Как сделать таймер на CSS
Давайте рассмотрим использование CSS в качестве альтернативы JavaScript для создания простых таймеров. Используем современные свойства CSS, такие, как@property, @keyframes, и псевдоэлементы со значениями counter().Управляйте промисами используя Promise.withResolvers()
МетодPromise.withResolvers() повышает гибкость, позволяя удалённо разрешать или отклонять промисы, упрощая и оптимизируя асинхронный код.Насколько строга ваша транспортная безопасность
HTTPS — повсюду, но HTTP всё ещё остаётся доступным… Как остановить злоумышленников, перехватывающих и понижающих соединения с вашим сайтом?Composer: Менее известные, но полезные команды
Composer — основной менеджер зависимостей для PHP, и если работаете с PHP, то уже знакомы с такими часто используемыми командами, какcomposer install и composer update. Composer также предоставляет несколько менее известных, но полезных при работе над приложениями в PHP, команд.Генераторы статических сайтов (и какой из них выбрать)
Сегодня хочу поговорить о нескольких инструментах для предварительного рендеринга HTML. Давайте разбираться!Руководство по валидации в Laravel
Валидация — важная часть любого веб-приложения. Она помогает предотвратить уязвимости в системе безопасности, повреждение данных и множество других проблем, которые могут возникнуть при работе с пользовательским вводом.PHP 8.4: Новая функция grapheme_str_split
Расширение Intl в PHP 8.4 добавляет новую функциюgrapheme_str_split, разбивающую заданную строку на массив графем.PHP 8.4: Функции array_find, array_find_key, array_any и array_all
В PHP 8.4 добавлены четыре новые функции массива для поиска и проверки элементов массива с функцией обратного вызова:array_find, array_find_key, array_all и array_any.Иммутабельные даты Carbon в Laravel
Рассмотрим класс даты Carbon в Laravel и то, как изменить настройки использования этого класса в Laravel, чтобы сделать его иммутабельным.Происходит ли утечка информации через ваш Referer
Знаете ли вы, какая информация утекает через заголовок Referer, когда ваши пользователи переходят по внешним ссылкам?Бесконечная прокрутка логотипов на чистом HTML и CSS
Помните HTML-элементmarquee? Он устарел, поэтому вряд ли стоит его использовать, когда понадобится что-то вроде горизонтальной автопрокрутки. Вот тут-то и приходит на помощь CSS, потому что в нём есть все необходимые инструменты для реализации этой функции.Магические методы PHP
PHP разработчику, нужно знать множество особенностей языка, чтобы облегчить написание и сопровождение кода. Без явного рассказа о той или иной части языка сложно даже узнать о её существовании, поэтому сегодня поговорим о магических методах, которыми обладают классы, и о том, как их использовать при написании кода.AbortController в JavaScript
В веб-разработке управление асинхронными задачами имеет решающее значение для создания отзывчивых и эффективных приложений. Асинхронные операции, такие как получение данных с сервера или выполнение трудоёмких вычислений, часто требуют возможности отменить или прервать их до завершения. Здесь на помощь приходит AbortController, о котором и пойдёт речь.Как закоммитить многострочные сообщения в git commit
Есть несколько способов закоммитить многострочные сообщения вgit commit, всё зависит от личных предпочтений.Явное управление ресурсами в JavaScript
Мы пишем код, который что-то открывает: файл, поток, блокировку, соединение с базой. А ещё мы должны это закрыть. Язык наконец берёт это на себя.Анимация элемента dialog
Казалось бы, можно просто установить в CSS transition от 0 к 1 для opacity элемента dialog, но это не работает. Необходимо изучить @starting-style, а также ключевые слова overlay и allow-discrete.Якорные ссылки и как их сделать потрясающими
Якорные ссылки — простой способ создать навигацию по странице. Например, в оглавлении можно использовать якорные ссылки для перехода к различным разделам страницы.Универсальность данных: API геттер и сеттер
Когда я консультирую клиентов по работе с API, то рекомендую никогда не обращаться к API напрямую.Парсинг декларативного shadow DOM
Document.parseHTMLUnsafe — это новый улучшенный .parseFromStringНовые альтернативы innerHTML
getHTML, setHTML, setHTMLUnsafe, декларативный shadow DOM и очистка.Создание ванильного JavaScript signal() с Proxy
Вчера мы рассмотрели ванильные JS Proxy. Сегодня хочу показать, как можно их использовать для создания реактивных сигналов.Введение в JavaScript Proxy
Сегодня рассмотрим JavaScript Proxy: что это такое, как они работают и для чего они могут понадобиться.Как прослушивать несколько событий в веб-компоненте
В предыдущей статье я писал о методеhandleEvent() для работы со слушателями событий в веб-компонентах. Сегодня поговорим о том, как использовать его для обработки нескольких типов событий.Появится ли в PHP 8.4 инстанцирование класса без лишних скобок
Сможем ли отказаться от скобок вокруг ключевого слова new при инстанцировании класса? Узнайте последние новости о статусе этого интересного RFC-предложения PHP 8.4.Как исправить ошибку mysql_native_password is not loaded в MySQL 8.4
Как исправить ошибкуSQLSTATE[HY000] [1524] Plugin 'mysql_native_password' is not loaded, вызванную тем, что MySQL 8.4 больше не подключается по умолчанию плагин mysql_native_password.Что такое ошибка HTTP 403 и как её исправить
Что такое ошибка HTTP 403? Как решить проблему и устранить 403-ю ошибку. Рассмотрим шаги по устранению ошибок и возвращению страниц сайта в онлайн.Atomic CSS: Масштабируемая архитектура в современной веб-разработке
Atomic CSS — новый подход к написанию CSS, позволяющий вместо работы с длинными именами классов и сложными селекторами использовать крошечные, одноцелевые, небольшие классы, о чём и пойдёт речь в статье.Заблуждения о Специфичности CSS
Всякий раз, когда публикуется статья о Специфичности в CSS — и, как следствие, о самом Каскаде — я очень радуюсь, ведь это основная концепция языка, которую должен знать каждый. Чем больше статей об этом, тем лучше!Некоторые интересные вещи из SQLite
SQLite не так прост, как кажется на первый взгляд и обладает рядом интересных возможностей.MongoDB в Laravel: Краткое руководство для начинающих
Laravel известен своим Eloquent ORM, обычно работающим с реляционными базами данных, такими как MySQL. Но что, если нужно выбрать NoSQL-решение, например MongoDB? В статье мы расскажем как начать работу с MongoDB в Laravel.Новое в Symfony 7.1: Атрибут MapUploadedFile
В Symfony 7.1 появился новый атрибут MapUploadedFile, позволяющий внедрять загруженные файлы в аргументы контроллера.Новое в Symfony 7.1: Ограничения MacAddress и Charset
Symfony 7.1 добавляет два новых ограничения для проверки MAC-адресов и набора символов, в которых закодировано содержимое.Совет по безопасности: Повышение привилегий через шаблоны домена
Невероятно часто встречаются жёстко закодированные домены, используемые для идентификации администраторов, однако это также делает простой задачей повышение привилегий до уровня администратора!Больше способов инстанцирования веб-компонентов
Одна из проблем при выполнении кода в constructor() заключается в том, что иногда элемент создаётся, но вложенный в него HTML ещё не готов.Проблема с new URL(), и как URL.parse() её решает
Часто приходится анализировать множество URL-адресов. Частично для их проверки, а также для нормализации или извлечения определённых частей из URL. API URL в браузерах позволяет это делать, но его эргономика не идеальна.Новое в Symfony 7.1: Атрибут IsCsrfTokenValid
Symfony 7.1 содержит новый атрибут IsCsrfTokenValid для упрощения логики, необходимой для проверки валидности CSRF-токенов.Новое в Symfony 7.1: Компонент TypeInfo
В Symfony 7.1 добавлен новый компонент TypeInfo, извлекающий информацию о PHP типе из нескольких элементов (свойства и методы классов, возвращаемые типы функций и методов и т.д.)Новое в Symfony 7.1
Цикл статей, рассказывающих о наиболее важных новых возможностях Symfony 7.1, который выйдет в конце мая 2024 года.Подробнее об атрибуте Override
Подробнее об атрибуте Override: Override имеет несколько специфических, менее известных вариантов поведения с классами, трейтами и интерфейсами.Как использовать Git submodule
В этой статье мы погрузимся в мир подмодулей Git, чтобы лучше понять, как они работают.Рефакторинг метода с опциональными параметрами
В процессе рефакторинга и оптимизации легаси кода я столкнулся с несоответствием сигнатур метода, что вызывало проблемы с производительностью.Зачем использовать пользовательские исключения в PHP
При создании PHP-приложений исключения играют важную роль в обработке ошибок и сбоев, возникающих во время жизненного цикла приложения. Рассмотрим, как использовать пользовательские исключения для улучшения приложений.Как исключить middleware в определённых роутах Laravel
Middleware в Laravel играет важную роль в перехвате HTTP-запросов, поступающих в приложение, для применения пользовательской логики, прежде чем будет выполнен какой-либо фактический код приложения. Однако существуют сценарии, в которых вам может потребоваться исключить определённые маршруты или методы из обработки middleware.Как заставить веб-компоненты общаться (часть 2)
Вчера мы узнали, как связать дочерний и родительский веб-компонент. Сегодня рассмотрим, как использовать пользовательские события Custom Event.Как заставить веб-компоненты общаться (часть 1)
Меня спрашивали, как вложить веб-компоненты друг в друга и передавать информацию от одного к другому. Сегодня мы рассмотрим, как это реализовать.Как обнаружить изменение атрибутов веб-компонента
Сегодня мы рассмотрим, как обнаружить и реагировать на изменение атрибутов веб-компонента.Методы жизненного цикла веб-компонента
Вчера мы изучили различные способы инстанцирования веб-компонента. В статье был упомянут метод жизненного цикла connectedCallback(). Сегодня поговорим об остальных методах жизненного цикла веб-компонентов.Различные способы инстанцирования веб-компонента
Сегодня мы познакомимся с различными способами инстанцирования веб-компонентов (и проблемами, связанными с каждым из этих способов).Что может сломать aspect-ratio в CSS
В CSS есть свойство aspect-ratio, полностью поддерживаемое примерно с 2021 года. Это свойство может быть очень полезным и помочь там, где нельзя использовать фиксированный размер. Но всё может пойти не так, и в результате получится элемент, не соблюдающий aspect-ratio.Улучшение веб-компонента
Сегодня рассмотрим одну из моих любимых фич веб-компонентов: прогрессивное улучшение.Добавление опций в веб-компонент
Вчера мы рассмотрели, как создать собственный веб-компонент. Сегодня мы изучим, как добавлять опции и настройки.Ваш первый веб-компонент
Давайте рассмотрим, как создать свой первый веб-компонент.Копирование файлов между Docker контейнером и хостом
В этой статье мы рассмотрим два метода копирования файлов или папок в контейнеры Docker и из них.Создание собственных PHP хелперов в Laravel проекте
Если вы новичок в Laravel или PHP, давайте рассмотрим, как можно создать собственные хелперы, автоматически загружаемые Laravel.Property Hooks приближаются к реализации в PHP 8.4
Property Hooks в PHP становится всё ближе к появлению в PHP 8.4 благодаря подавляющему большинству голосов 34/1. Узнайте о Property Hooks в PHP и синтаксисе, описанном в предложении.Селекторы атрибутов в CSS
Сегодня мы рассмотрим некоторые из удивительных способов, с помощью которых CSS позволяет выбирать целевые элементы на странице.Утверждение исключений в тестах Laravel 11
Как тестировать ожидаемые исключения, имитировать обработку исключений в Laravel 11 и использовать фасад Laravel Exceptions для утверждения исключений в HTTP-тестах.Текущая ветвь/current branch в git
Привет! Недавно написал статью о HEAD в git, но задумался, что означает термин "текущая ветвь" или "current branch" в git, и это немного страннее, чем я думал.Практическое применение Flexbox
Вчера мы выяснили, как работает Flexbox. Сегодня я хочу рассказать о его практическом применении.Введение в Flexbox
Flexbox — способ создания гибких макетов, расположенных в виде столбцов или строк.Laravel Фасады — Пишем тестируемый код
Laravel в значительной степени опирается на фасады. Кто-то может подумать, что это антипаттерны. Но я считаю, что при правильном использовании они могут привести к чистому и тестируемому коду. Давайте посмотрим, как это сделать.Git Worktree: руководство по изоляции задач
Git Worktree позволяет работать с несколькими ветками одновременно в изолированных директориях. Идеально для срочных исправлений, экспериментов и параллельной разработки без риска для основного кода. В статье — примеры, команды и лучшие практики.Совет по безопасности: Увеличьте раунды bcrypt
Пришло время повысить количество раундов bcrypt до 12 (или выше)!Как создать универсальную сетку с помощью CSS Grid
Вчера мы познакомились с основами CSS Grid. Сегодня узнаем, как создать универсальную систему сеток, позволяющую быстрее и проще создавать различные макеты сайтов.Введение в CSS Grid
Сегодня мы изучим основы CSS Grid — создания макета на основе Grid. Приступим!Автоматическое перехэширование паролей в Laravel 11
Давайте проверим три опции конфигурации, доступные в рамках Автоматического перехэширования паролей: пользовательские поля, отключение перехэширования и изменение раундов bcrypt.Как HEAD работает в git
Вроде бы HEAD — это довольно простая тема, но многие разработчики не уверены, что полностью понимают.Миграция с MySQL на Postgres с помощью конструктора запросов Laravel
Мы недавно перевели инфраструктуру баз данных с MySQL на Postgres. Это обзор того, как мы использовали конструктор запросов Laravel для миграции данных.Понимание работы кэширования в GitHub Actions
GitHub предоставляет собственные экшены для кэширования в рабочих процессах.Современные команды и возможности Git
Все мы — используем git каждый день, однако большинство из нас, как будто задержались в 2005 году, используют только основные команды, такие как add, commit, push или pull.Обработка ошибок при работе со сторонними API
Узнайте, как создавать, выбрасывать и обрабатывать исключения при выполнении запросов к сторонним API.Создание API ресурсов в Laravel
Использование контроллероподобных классов и Laravel-data для эффективного взаимодействия с API.Оптимизация API ответов в Laravel с DTO
Руководство по созданию Объектов Передачи Данных (DTO) для повышения читабельности, эффективности и тестируемости API интеграций в Laravel.Упрощение интеграции API с фасадом Http в Laravel
Создание многократно используемого класса API-запроса и клиента.Используйте EXISTS вместо COUNT при проверке существования записей
TL;DR Используйте EXISTS при проверке наличия записей в SQL вместо COUNT. EXISTS гораздо эффективнее и выходит из цикла, когда найдена первая запись.Поиск оптимальных настроек PHP-FPM
Файлы конфигурации PHP-FPM обычно не привлекают к себе особого внимания, пока ничего не происходит. Но что делать, когда это произошло?Масштабируемый CSS с архитектурой ITCSS
В веб-разработке управление крупными CSS проектами сопряжено со значительными трудностями. Важность масштабируемого и поддерживаемого CSS невозможно переоценить для долгосрочного успеха проекта. В статье рассматривается архитектура Inverted Triangle CSS как решение этих проблем, а также даётся глубокое понимание, причины её использования, практические шаги по реализации и сравнение с другими методологиями.Классы кэша в Laravel
Использование специализированных классов для управления кэшем.Как решить проблему PHP Curl с центром сертификации HTTPS в Windows
В Windows запросы HTTPS, выполняемые с помощью расширения Curl, могут не выполняться, поскольку у Curl нет списка корневых сертификатов для проверки сертификатов сервера. Рассмотрим безопасные и эффективные решения, а также обратим внимание на плохие советы, которые могут сделать PHP-приложения небезопасными.Красивый перенос текста с CSS свойством text-wrap
Рассмотрим CSS свойство text-wrap и то, как с его помощью можно улучшить перенос текста на веб-странице.Нет, типы TypeScript не существуют во время выполнения
Почему типы в TypeScript не существуют во время выполнения. Как TypeScript компилируется в JavaScript и чем он отличается от других языков с сильной типизацией.Laravel фасады vs псевдонимы классов
Есть разница между тем, что в Laravel называют фасадами и псевдонимами классов. Давайте рассмотрим, чем они отличаются друг от друга и как они стали так тесно переплетаться в глазах общественности.Методы авторизации и валидации контроллеров в Laravel 11
В рамках упрощения структуры приложений в Laravel 11 методы Request Authorization и Validation больше не доступны в контроллере — вот как их вернуть.PHP 8.4: OpenSSL: минимальная требуемая версия увеличена до 1.1.1
Расширение PHP OpenSSL предоставляет функции шифрования, аутентификации, обмена ключами, хэширования паролей и общего хэширования в PHP. Расширение OpenSSL использует библиотеку OpenSSL для обеспечения этой функциональности.Husky: Форматирование, линтинг и тестирование при коммите или пуше
Когда команда работает над проектом, поддержание кодовой базы в соответствии со стандартами кодирования может оказаться непростой задачей. Возможно, кто-то из членов команды присылает код, не соответствующий установленному стилю кодирования, или вы делаете коммит, исправляющий один компонент, но непреднамеренно ломающий другой. Что можно сделать, чтобы снизить эти риски?Исследование переноса текста и слов
Давайте поговорим о различных способах управления переноса текста на веб-странице. CSS даёт множество инструментов, позволяющих сделать текст таким, каким мы хотим его видеть. Также рассмотрим трюки с использованием HTML и специальных символов.Руководство по MySQL JOIN с примерами
Разбираемся в MySQLJOIN без скучной теории. Вместо абстрактных примеров — две конкретные таблицы с «дырками» в данных, чтобы сразу было видно разницу между INNER, LEFT и RIGHT. Бонус: чек-лист по ускорению запросов, если ваш сайт тормозит. Всё, как вы любите — код, таблицы и никакой воды.Конфигурация Middleware в Laravel 11
В Laravel 11 middleware по умолчанию перенесено в сам фреймворк, а конфигурация передаётся через класс bootstrap/app.php.В чём разница между Virtual DOM и Shadow DOM
В веб-разработке понимание внутренней работы Document Object Model (DOM) имеет решающее значение. Два понятия, которые часто встречаются в дискуссиях о DOM, — это Virtual DOM и Shadow DOM.Работа с CSS переменными
Одно из преимуществ CSS переменных — хранение таких значений, как цвета, размеры и другие элементы дизайна, в одном месте, с последующим использованием их во всей таблице стилей. Мы расскажем о значении CSS переменных и о том, как упростить поддержку и обновление стилей, что позволит повысить навыки фронтенд-разработки.Создание приложения Node.js с TypeScript
Узнайте, как настроить TypeScript для создания приложений Node.js с pnpm, Node.js, TypeScript и ES Modules для удобной разработки.SASS vs CSS
CSS уже не тот, что в 1996 году, и SASS тоже вырос с момента своего создания — какому из них отдать предпочтение сегодня? Мы рассмотрим плюсы и минусы обоих вариантов.Оптимизация webpack в CI
Компиляция ресурсов с помощью webpack отнимает много времени. Каждый раз, когда проект собирается в CI, ресурсы приходится компилировать снова и снова.PHP 8.4: Объявление параметров с неявным nullable объявлено устаревшим
PHP поддерживает объявление типов для параметров функций, возвращаемых значений, свойств классов, констант классов и Enum. Будучи динамически типизированным языком и языком с десятилетиями истории, за прошедшие годы PHP получил ряд улучшений и возможностей.Добавление текста к изображению с помощью PHP и GD
Может быть множество причин, по которым необходимо добавить текст поверх существующего изображения. Для меня основной причиной было добавление заголовка статьи поверх фонового изображения "шаблона" для создания SEO-изображений.Пять новых возможностей JavaScript в 2024 году
Рассмотрим самые интересные и ожидаемые функций JavaScript, появление которых запланировано на 2024 год.Как работают дженерики в TypeScript
TypeScript с его мощной системой типов предлагает функцию Дженерики, позволяющую разработчикам писать многократно используемый и типобезопасный код. Дженерики позволяют создавать компоненты, способные работать с различными типами, а не с одним.Хватит использовать устаревшие методы оптимизации в PHP
Прекратите использовать приёмы микрооптимизации в PHP, жертвуя читабельностью кода ради мнимого повышения производительности. Более того, перестаньте учить этим трюкам новичков. В этом нет никакого смысла.Отключение сообщения packages are looking for funding в NPM
Узнайте, как отключить сообщения "packages are looking for funding" в проекте или глобально.Шпаргалка по TSConfig
Узнайте о важнейших параметрах конфигурации TypeScript и создайте лаконичный файл tsconfig.json для своих проектов с помощью этой шпаргалки.Доводы против самозакрывающихся тегов в HTML
Хотя мы, как индустрия, в целом отказались от большинства требований XHTML, оформление самозакрывающегося тега, похоже, сохранилось, несмотря на то, что является пережитком спецификации, от которой отказались более 10 лет назад. Люди даже добавляют пробел перед/, который был добавлен для совместимости с браузерным движком из прошлого тысячелетия.Использование CSS :has() в реальных условиях
Я создал несколько примеров сниппетов:has(), используемых в реальных клиентских проектах.Ошибки в составлении SQL запросов и как их избежать
SQL запросы — рабочие лошадки, получающие данные, манипулирующие и управляющие ими. Создаёте веб-приложение, управляете бизнес-операциями или проводите сложный анализ данных, SQL запросы — это мост, соединяющий данные с приложением. Поэтому важно, чтобы запросы были не только функциональными, но и оптимизированными для повышения эффективности.PHP 8.4: Curl: curl_version() поддержка feature_list
В PHP 8.4 функцияcurl_version возвращает дополнительный ключ массива feature_list, содержащий массив функций Curl и информацию о том, поддерживаются они или нет.PHP 8.4: Новые функции mb_ucfirst и mb_lcfirst
В PHP 8.4 расширение mbstring добавило функции mb_ucfirst и mb_lcfirst в качестве многобайтовых безопасных альтернатив функциям ucfirst и lcfirst.Проверка типов данных в Коллекциях Laravel с помощью метода ensure()
Ознакомьтесь с методом "ensure" и узнайте, как с его помощью проверить, что в Коллекциях Laravel существуют элементы только заданного типа данных.PHP 8.4: Новые функции http_(get|clear)_last_response_headers
В PHP 8.4 добавлены две новые функцииhttp_get_last_response_headers и http_clear_last_response_headers, которые можно использовать для получения и очистки HTTP-заголовков последнего ответа HTTP-обёртки, что может заменить историческую переменную $http_response_header.PHP 8.4: Обновление PCRE2 и изменения в регулярных выражениях
Обновление PCRE2 в PHP 8.4 содержит ряд изменений, которые могут быть несовместимы с существующими регулярными выражениями или несовместимы с другими версиями движков регулярных выражений.CSS Специфичность: Приоритет стилей и селекторов
CSS — это основа, на которой разработчики превращают HTML документы в визуально привлекательные и функциональные веб-сайты. Для frontend разработчика понимание правил, регулирующих CSS, имеет решающее значение для повышения мастерства в оформлении веб-сайтов. В статье мы рассмотрим концепцию специфичности CSS, разберём её составляющие и покажем, как более глубокое понимание может улучшить навыки стилизации веб-сайтов.Laravel 11: Руководство по обновлению
Мы стараемся документировать все возможные изменения. Поскольку некоторые из изменений находятся в малоизвестных частях фреймворка, только часть из них может реально повлиять на ваше приложение. Хотите сэкономить время? Используйте Laravel Shift для автоматизации обновления приложений.Стратегии оптимизации производительности Laravel
Познакомьтесь с ключевыми стратегиями повышения производительности Laravel-приложений, включая кэширование, эффективное кодирование и оптимизацию баз данных.PHP 8.4: Новые возможности и изменения
PHP 8.4: Новости и изменения. PHP 8.4 — это активная ветвь разработки, в которую в настоящее время добавляются новые функции, основные изменения и новые RFC. Релиз вышел год.PHP 8.4: Curl: Минимальная требуемая версия libcurl повышена до 7.61.0
Расширение Curl предоставляет функциональность libcurl в PHP. Хотя расширение Curl можно скомпилировать с любой поддерживаемой версией libcurl, расширение требует определённую минимальную версию libcurl. Это позволяет расширению гарантировать, что определённая функциональность и API всегда будут доступны.PHP 8.4: Новая функция request_parse_body
В PHP 8.4 добавлена новая функцияrequest_parse_body, раскрывающая встроенную в PHP функциональность парсинга HTTP-запросов отличных от POST.PHP 8.4: Расширения OCI8 и PDO-OCI перенесены из PHP Core в PECL
Расширения oci8 и pdo_oci8 предоставляют функциональность для использования баз данных Oracle в PHP. Эти расширения опираются на проприетарные библиотеки от коммерческого производителя Oracle.PHP 8.4: Расширение IMAP перенесено из PHP Core в PECL
Расширение IMAP в PHP предоставляет функциональность для работы с почтовыми ящиками по протоколу IMAP. Базовая библиотека C, от которой зависит расширение, не получала обновлений с 2018 года.PHP 8.4: Расширение Pspell перенесено из PHP Core в PECL
Расширение Pspell предоставляет возможности проверки правописания в PHP с помощью Pspell или Aspell. Зависимости этого расширения не получали обновлений в течение последних нескольких лет, и расширение Pspell было перенесено из ядра PHP в расширение PECL в PHP 8.4.PHP 8.4: Curl: Константа CURLOPT_BINARYTRANSFER устарела
КонстантаCURLOPT_BINARYTRANSFER, предоставляемая расширением Curl, в PHP 8.4 объявлена устаревшей. Эта константа не имела эффекта начиная с версии PHP 5.1.2. Уже давно назрела необходимость её удаления.PHP 8.4: round() — неправильные режимы вызывают исключения
Функция round() округляет значение float до ближайшего целого числа или десятичного значения заданной точности. Она поддерживает тонкую настройку метода округления с помощью дополнительного параметра.PHP 8.4: Opcache: Изменения в INI, влияющие на включение JIT
В PHP 8.0 была добавлена поддержка компиляции Just-In-Time. По умолчанию JIT отключена, и есть два переключателя, opcache.jit и opcache.jit_buffer_size, контролирующие режим основной функциональности PHP и размер буфера, разрешённый для использования JIT.PHP 8.4: Тип констант PHP_ZTS и PHP_DEBUG изменён с int на bool
PHP 8.4: Тип значения констант PHP_ZTS и PHP_DEBUG изменён с int на bool.PHP 8.4: Стоимость Bcrypt по умолчанию изменена с 10 на 12
В PHP 8.4 изменён параметр стоимости bcrypt по умолчанию встроенного в PHP API хеширования паролей.PHP 8.4: Новые методы DateTime(Immutable)::get/setMicroseconds
Классы DateTime и DateTimeImmutable в PHP 8.4 и более поздних версиях поддерживают методы getMicroseconds и setMicroseconds для получения и установки количества микросекунд в объектах DateTime/DateTimeImmutable.PHP 8.4: Новые режимы округления в функции round()
Функция round() округляет значение float до ближайшего целого числа или десятичного значения заданной точности. Она поддерживает различные режимы округления, а в PHP 8.4 добавлены четыре новых метода округления.PHP 8.4: Новые методы DateTime(Immutable)::createFromTimestamp
Классы DateTime и DateTimeImmutable в PHP 8.4 получили новый метод createFromTimeStamp, создающий экземпляр из заданной временной метки UNIX в виде целого числа или числа с плавающей точкой.PHP 8.4: Mbstring: Новые функции mb_trim, mb_ltrim и mb_rtrim
В PHP 8.4 добавлены эквиваленты функцииmb_ для существующих функций trim, ltrim и rtrim.PHP 8.4: phpinfo показывает информацию о размере целого числа
phpinfo() в PHP 8.4 показывает размер целого числа, поддерживаемого текущей установкой PHP, в битах.Играем с Infinity в CSS
В CSS есть константаinfinity. Когда я впервые узнал об этом, мозг озарило множество абсурдных возможностей. Давайте обсудим! Возможно, найдутся и практические варианты использования.Методы оптимизации SQL-запросов в высоконагруженных приложениях
Успех высоконагруженных приложений зависит от эффективной работы баз данных, лежащих в их основе. По мере роста сложности SQL-запросов, особенно тех, которые включают в себя сложные соединения и проблемы индексирования, оптимизация запросов приобретает первостепенное значение.Создание веб-компонента с нуля
Сегодня я решил, что мы создадим HTML веб-компонент с нуля. Давайте создадим компонент, показывающий и скрывающий текст при переключении кнопки.Как скрыть полосу прокрутки (скроллбар) с помощью CSS
С помощью новых CSS атрибутов полосу прокрутки можно стилизовать и скрывать, не влияя на возможность пользователя прокручивать страницу. Мы покажем, как скрыть полосу прокрутки в большинстве браузеров с помощью CSS.Конкатенация строк в PHP: 5 способов с примерами
Собрать сообщение, сформировать запрос, вывести HTML — без конкатенации строк в PHP не обойтись. Но какой способ выбрать: оператор., .=, интерполяцию, implode() или str_replace()? В статье — практические сценарии и таблица для быстрого выбора.PHP 8.4: что нового и дата выхода
Релиз PHP 8.4 вышел . Давайте рассмотрим новые функции и изменения.Новые возможности Laravel 11
Привет, веб-разработчики! Недавно появились новости о Laravel 11, и о новых возможностях, с которыми определённо стоит пообщаться. Если вы увлекаетесь Laravel так же, как и я, наверняка не терпится узнать, что нового появилось и как это облегчит жизнь. Так что давайте погрузимся в тему. И да, сделаем это в непринуждённой манере с большим количеством примеров кода, чтобы было понятно и весело.Что такое htmx
В этой статье мы рассмотрим, что такое HTMX, и какие возможности он предоставляет разработчикам.Пользовательские события CustomEvent
JavaScript CustomEvent расширяют функциональность встроенной системы событий. Проще говоря, они позволяют программистам создавать и обрабатывать события, уникальные для их приложения, и в этой статье мы расскажем о них всё.TypeScript vs JavaScript — Детальное сравнение
В этой статье приводится глубокое сравнение и противопоставление TypeScript и его предшественника, стандартизированного ECMA, JavaScript.Пора заменить MySQL и PostgreSQL на SQLite
В последнее время SQLite вызывает всеобщий ажиотаж, но действительно ли он может конкурировать с MySQL и PostgreSQL в продакшне веб-приложений?Валидация в Laravel стала проще
Узнайте, как проверять входящие данные в приложениях Laravel, начиная с основ и заканчивая более сложными концепциями.Простая целостность данных с валидацией массивов в Laravel
Узнайте, как легко управлять валидацией массива в Laravel, для обеспечения целостности данных в ваших веб-приложениях.Как синхронизировать Google Events с Laravel
В этой статье мы будем привязывать Google Events к Google Календарям. Давайте рассмотрим, какие параметры нужно отправлять и что они означают.Как синхронизировать Google Календарь с Laravel
В этой статье мы рассмотрим, как синхронизировать Google Календари с Laravel приложением, основные параметры для получения API-ресурсов. Создадим и оптимизируем код.Laravel: Решение проблемы "Vite manifest not found"
Узнайте о решениях проблемы "Vite manifest not found" в Laravel, включающих установку, настройку среды, очистку кэша и управление ресурсами.Обновление веб-сайтов Symfony на AssetMapper
В течение последних недель мы обновляли сайты Symfony, такие, какsymfony.com, live.symfony.com и certification.symfony.com, на использование AssetMapper вместо Webpack Encore. В этой статье мы расскажем о том, как это было реализовано.Почему не HTMX
Один из вопросов, который мне чаще всего задают в течение последнего года… Вы слышали о HTMX? Что вы думаете о нем?Git: Поддерживайте чистоту ветви с помощью fixup и autosquash
Кто не устал от коммитов "Remove pdb" или "Fix a typo" через несколько минут или часов после коммита чистой фичи? Несколько лет назад я обнаружил в GIT две полезные опции, которые работают вместе:git commit --fixup и git rebase --autosquash. С их помощью можно легко объединить небольшие исправления с оригинальной фичей и сохранить ветвь чистой.Создание меню "вне холста" с <dialog> и веб-компонентами
Меню "вне холста" — распространённый паттерн в веб-дизайне. Его часто можно увидеть на мобильных сайтах, где вы кликаете на кнопку гамбургер, и меню выдвигается сбоку экрана, обычно перекрывая контент, находящийся за ним.Жадная загрузка может быть вредна
Да, вы всё правильно поняли. Жадная загрузка может вредить, сильно вредить. Однако мы часто прибегаем к ней, когда имеем дело со сценарием N+1, думая, что решили проблему, а на самом деле, возможно, сделали ещё хуже. Каким образом? Давайте посмотрим.Функциональное программирование в JavaScript
В этой статье мы рассмотрим фундаментальные концепции функционального программирования на JavaScript и то, как применять их для написания чистого, лаконичного и сопровождаемого кода.Модернизация конфигурации Symfony
Конфигурация Symfony — одно из тех изменений, которые трудно заметить, пока они не будут удалены в следующей мажорной версии. Тогда приходится гуглить "сообщение об ошибке invalid option id" и надеяться на решение. Не самый лучший способ провести выходные, не так ли?Инъекция зависимостей в командах Laravel Artisan
Использование метода__construct() для инъекции зависимостей в командах Laravel Artisan может привести к неожиданным последствиям.Введение в CSRF-токены в Symfony
Начиная знакомство с Symfony, часто приходится следовать документации, не всегда понимая значение тех или иных механизмов. В этом контексте стоит поближе рассмотреть токены CSRF, которые на первый взгляд могут показаться дополнительным усложнением, но их роль крайне важна для безопасности приложения. В этой статье я расскажу, почему CSRF-токен так важен, и проиллюстрирую это на примере популярной социальной сети, которая столкнулась с проблемами безопасности из-за недостаточной проверки этих токенов.Функции высшего порядка в JavaScript
Функции высшего порядка — одна из самых мощных возможностей JavaScript, позволяющая разработчикам писать лаконичный, гибкий и модульный код. Функция высшего порядка — это просто функция, которая либо принимает одну или несколько функций в качестве аргументов, либо возвращает функцию в качестве результата. В этой статье мы рассмотрим, что такое функции высшего порядка, почему они полезны и как использовать их в своём коде.Использование $fillable для валидации
Свойство$fillable в моделях Eloquent может оказаться разумным местом для размещения логики валидации. В конце концов, учитывая, что этот список является практически частью валидации, было бы расточительно не использовать ту же структуру для определения правил соответственно.Все рекурсивные функции в PHP
Рекурсивная функция — это функция, вызывающая саму себя для решения задачи. Этот тип функций часто используется в ситуациях, когда задачу можно разбить на более мелкие, похожие, но всё же более мелкие задачи. Функция продолжает вызывать себя с изменёнными аргументами до тех пор, пока не будет достигнут базовый случай, после чего функция перестаёт вызывать себя и начинает возвращать значения. Итак, все ли рекурсивные функции в PHP нам известны?Процессы и команды Artisan в Laravel
Узнайте как создавать и тестировать команды для взаимодействия с Laravel приложением и сервером. Откройте для себя новые советы и рекомендации по написанию команд Artisan, а также по использованию фасада Process в Laravel 10.Моя стратегия ветвления/тегирования пакетов
Это та статья в блоге, которую я хотел бы получить, когда искал хороший рабочий процесс для ветвления и тегирования пакетов/библиотек с открытым исходным кодом.Автоматическое хэширование значений моделей кастом "Hashed"
Узнайте, как автоматически хэшировать конфиденциальные данные (например, пароли) с помощью каста "hashed" модели Laravel. Также рассмотрим, как проверить правильность хэширования поля.Использование интерфейсов в сторонних пакетах
Как эффективно использовать интерфейсы, чтобы сделать PHP-пакет более удобным в работе и более настраиваемым, чем когда-либо прежде.Улучшение UX форм с CSS свойством field-sizing
Рассмотрим CSS-свойствоfield-sizing и то, как оно может улучшить удобство взаимодействия с веб формой.Тройное C: Currying, Closure и Callback в JavaScript
В этой статье вы узнаете о концепции Тройного C в JavaScript, включающей в себя Currying, Closures и Callbacks.Привязка Laravel маршрутов для конечных объектов
Инъекция зависимостей в Laravel — сложная тема, и в основном она используется для сторонних пакетов и некоторых внутренних компонентов. Вы можете использовать её и в своём приложении, но, на мой взгляд, она часто усложняет код больше, чем стоит, и значительно затрудняет отладку.Ошибки доступности, встречающиеся при проведении аудита
Когда я начинаю работать с новыми клиентами, одной из первых вещей, которые я люблю делать, это аудит их существующего сайта.Именование переменных в CSS
"Именовать вещи сложно", — гласит аксиома программной инженерии, и CSS не является исключением. Здесь собраны некоторые соображения, связанные с именованием пользовательских свойств CSS. Я буду использовать термины "переменная" и "пользовательское свойство" как взаимозаменяемые, поскольку для целей определения того, как их называть, это фактически одно и то же.Объектно-ориентированное программирование в JavaScript
В этой статье мы рассмотрим объектно-ориентированное программирование в JavaScript: Узнайте, как использовать классы, наследование и инкапсуляцию для получения более чистого и эффективного кода в ваших веб-проектах.Виртуальные колонки БД в миграциях Laravel и MySQL
В Laravel, если мы хотим, вычислить значение БД на лету, мы часто используем мутаторы. Но мы можем делать это на уровне базы данных с помощью генерируемых виртуальных/хранимых столбцов.Исследование middleware в Laravel 11
Мне кажется, что это изменение в Laravel 11 потребует гораздо больше неявных знаний о встроенном middleware. Имеет ли это значение? Скорее всего, нет. Но это изменение увеличивает кривую обучения.Именовать вещи всё ещё сложно?
Многие проблемы, связанные с именованием, возникают из-за попыток умничать или создания вещей, которые пытаются сделать слишком много.Androxgh0st нацелен на Laravel приложения?
Что это за вредоносная программа, нацеленная на Laravel, и стоит ли вам беспокоиться о своих приложениях?Как убрать за собой в PHP
Как убрать за собой в PHP : используйтеregister_shutdown_function, __destruct и try-catch-finally, чтобы убедиться, что уборка выполняется всегдаРуководство для начинающих по блочной модели CSS
Блочная модель/Box Model CSS — фундаментальная концепция, позволяющая размещать и выравнивать элементы на веб-странице. Владение блочной моделью необходимо для управления отступами, размерами, позиционированием и разработкой макета веб-страницы в целом.Установка и использование php-cs-fixer
В этой статье мы рассмотрим различные способы установки и использования php-cs-fixer. Мы увидим, что всё не так очевидно, как кажется. Поехали! 😎Игнорирование файлов в Git. Больше, чем просто .gitignore
Существует несколько способов игнорировать передачу файлов в Git-репозитории из локального в удаленный.Создание изолируемых команд в Laravel
Как создать в Laravel команды, выполняющиеся только в том случае, если они ещё не запущены в другом процессе.История compact() и extract()
compact() и extract() — две классические функции PHP: давайте рассмотрим, как они используются сейчас и как их можно модернизировать.Простое управление временными файлами в Laravel
Узнайте, как PHP-пакет spatie/temporary-directory упрощает работу с путями временных файлов в Laravel и других PHP-проектах.Совет по безопасности: Не используйте nl2br()!
Как бы полезно это ни звучало, ноnl2br() может оставить вас уязвимым для межсайтового скриптинга (XSS)… Вместо него лучше использовать CSS!Наука о JavaScript движке: Как компьютеры читают ваш код
Изучите работу движка JavaScript, от разбора кода до оптимизации его производительности, а также такие ключевые техники, как скрытые классы и управление памятью.Подробно: Знакомство с Random
Random генерирует криптографически защищённые случайные значения в различных форматах с помощью простого PHP пакета.Как использовать Fetch API в Node.js, Deno и Bun
Узнайте, как использовать Fetch API - более простую и удобную альтернативу XMLHttpRequest, основанную на промисах, — с помощью Node.js, Deno и Bun.Текучая типографика для отзывчивого дизайна
Внедрение текучей типографики означает создание текста, адаптирующегося к различным размерам экрана. По мере совершенствования технологий продолжают появляться устройства различных форм и размеров. Как фронтенд-разработчик, вы должны создавать приложения, которые хорошо адаптируются к различным размерам экрана. Дизайн с использованием текучей типографики улучшает пользовательский опыт и доступность; в этой статье мы расскажем как это сделать.Понимание среды выполнения JavaScript
Нюансы среды выполнения JavaScript и почему каждый опытный специалист должен быть хорошо знаком с ними.Оптимизация запросов MySQL
Оптимизация запросов к MySQL считается актуальной темой среди бэкенд-разработчиков, поскольку ресурсы базы данных имеют решающее значение. Очень важно экономить и избегать перерасхода этих ресурсов. Вот несколько советов для бэкенд-разработчиков по оптимизации запросов:HUG CSS, как я подхожу к архитектуре CSS
Сегодня я хочу рассказать о том, как я подхожу к CSS-архитектуре в своих проектах. Давайте покопаемся!Бесклассовые vs. основанные на классах дизайн-системы CSS
Сегодня я хочу поговорить о бесклассовых и основанных на классах дизайн-системах CSS, бойлерплейтах и фреймворках: чем они отличаются, какой подход я предпочитаю и так далее.Улучшение связности в Symfony — хранение шаблонов Twig вместе с кодом
Несмотря на то, что я большой поклонник Symfony, я считаю, что для больших приложений стандартная структура каталогов оставляет желать лучшего.Понимание хелпера fake() в Laravel
Хелпер fake() в Laravel — это мощный инструмент для генерации фиктивных данных. Узнайте, как использовать его для заполнения баз данных и прототипов.Nullsafe оператор на практике
Null-safe оператор был добавлен в PHP 8.1: это новый объектный оператор, предотвращающий фатальную ошибку и последующую остановку выполнения при вызове метода или свойства со значениемnull. Он имеет большую привлекательность, поскольку называется "безопасным" и сокращает количество проверок перед вызовом метода. Однако на практике у оператора nullsafe есть и свои недостатки.6 лучших практик, советов и приёмов Tailwind CSS на 2024 год
Tailwind CSS - мой любимый CSS-фреймворк, которым я пользуюсь с 2018 года. Позвольте мне поделиться своими знаниями и соображениями, полученными благодаря многолетнему опыту.Как создать favicon: SVG, PNG и ICO для всех устройств
Отдавайте предпочтение SVG, а не PNG, доверяйте браузерам в вопросах уменьшения масштаба, отказывайтесь от непонятных форматов — это полное, исчерпывающее руководство по favicon для современного веба. Включает шаги для статического HTML и Webpack.Как использовать CSS свойство gap
В этой статье мы рассмотрим использование CSS свойства gap, позволяющее очень просто добавлять пространство между элементами и решающее ряд проблем с вёрсткой, беспокоивших разработчиков на протяжении многих лет.Laravel под капотом: Facades
Laravel предлагает элегантную возможность вызова методов под названием Facades. На первый взгляд, они напоминают статические методы, но это не так! Что за магию творит Laravel?Понимание BOM в JavaScript: Быстрое объяснение с примерами
JavaScript — универсальный язык программирования, позволяющий разработчикам создавать динамичные и интерактивные веб-приложения. Хотя основная функциональность языка заключается в манипулировании веб-контентом с помощью объектной модели документа (DOM), JavaScript также предоставляет объектную модель браузера (BOM) для взаимодействия со средой браузера.Основные псевдоклассы фокуса :focus, :focus-within, и :focus-visible
Состояние фокуса пользователя совершенно не учитывается веб-разработчиками. Представьте себе навигацию по сайту без чёткого указания того, где вы находитесь и с чем взаимодействуете; это сбивает с толку. Именно здесь на помощь приходят CSS-псевдоклассы, такие, как:focus, :focus-within и :focus-visible. Цель этой статьи — пролить свет на важность состояния фокуса в веб-разработке.Laravel без .env файлов
Я работал с Laravel и Docker с 2016 по 2022 год. В течение всех этих лет у меня была небольшая проблема, связанная с переменными среды.Плавная миграция от массива к объекту
Как осуществить плавную миграцию от массива к объекту в PHP: используя динамический синтаксис PHP, общий для массивов и объектовПротиводействие Login CSRF с помощью Symfony
Подделка межсайтовых запросов (CSRF) - одна из традиционных уязвимостей, с которыми приходится сталкиваться веб-приложениям. Все веб-фреймворки, включая Symfony, поддерживают защиту от CSRF из коробки. Менее известной уязвимостью является Login CSRF, особый вид CSRF-атаки.Версионирование API в Laravel: Как сделать это правильно
Вы можете легко ориентироваться в версиях API Laravel с помощью Версионирования URI, обеспечивая последовательную и надёжную интеграцию даже по мере развития приложения.Laravel под капотом: CSRF
Не раз и не два мы сталкивались с печально известным исключением 'Token Mismatch' в Laravel. Но, бедняга просто заботится о вас, пытаясь защитить от зла 😈, давайте посмотрим...Экранирование с e(), htmlspecialchars() и htmlentities()
[Совет#64] Знаете ли вы разницу междуe(), htmlspecialchars() и htmlentities()? Можно ли просто использовать e() для всего?Не полагайтесь на порядок ключей в значениях MySQL JSON
Вы наверняка слышали, что полагаться на то, что ключи массива сохраняют определённый порядок, опасно. В спецификации JSON эти пары ключ/значение даже определяются как "неупорядоченные". Но, возможно, на практике вы никогда не сталкивались с ситуацией, когда порядок изменялся по сравнению с тем, что вы ожидали.Продвинутые Value Objects в PHP 8
В предыдущей статье мы рассмотрели возможности Value Objects в повышении качества кода, надёжности системы и минимизации необходимости обширной валидации. Теперь давайте погрузимся глубже, чтобы улучшить понимание и использование этого важнейшего инструмента.Value Objects в PHP 8: Создание лучшего кода
В мире программирования поддержание чистоты и надёжности кода имеет большое значение. Паттерн Value Objects способен значительно улучшить качество вашего кода, сделав его более надёжным и удобным для сопровождения.SSH3: более быстрый и безопасный шелл с использованием HTTP/3
SSH3 — это полный пересмотр протокола SSH, накладывающий его семантику на механизмы HTTP.Основы TypeScript: Сетеры/Гетеры, protected, private/public/static
Добро пожаловать в десятую и заключительную часть нашей серии статей о TypeScript! В этой части мы исследуем тонкости работы с сеттерами/геттерами, protected, private/public и static.JSDoc: Типизация JavaScript без TypeScript
Хотите типизацию TypeScript без компиляции? JSDoc позволяет добавлять статическую проверку типов в обычный JavaScript. Узнайте, как использовать JSDoc-аннотации для улучшения кода, ускорения разработки и сокращения ошибок без перехода на TypeScript.Основы TypeScript: ООП практика, классы и наследование
Добро пожаловать в девятую часть нашей серии статей о TypeScript! В этой части мы углубимся в практику объектно-ориентированного программирования (ООП), уделив особое внимание классам и наследованию.PHP 8.4: Sodium: Поддержка AEGIS-128L и AEGIS256
AEGIS — это семейство алгоритмов аутентифицированного шифрования на основе AES, которое быстрее, чем AES-GCM. Расширение Sodium в PHP 8.4 поддерживает алгоритмы шифрования AEGIS-128L и AEGIS256, если расширение Sodium скомпилировано с libsodium 1.0.19 или более поздней версии.Шифрование AEGIS с расширением PHP Sodium
Расширение Sodium в PHP 8.4 теперь поддерживает шифры аутентифицированного шифрования AEGIS-128L и AEGIS256. Они значительно быстрее, чем AES-GCM и CHACHA20-POLY1305. В этой статье мы сравним их и объясним, как безопасно шифровать и расшифровывать данные с помощью AEGIS-128L и AEGIS256 на PHP.Понимание обработки исключений в Laravel
Обработка исключений — важнейший аспект разработки веб-приложений, гарантирующий, что ваше приложение сможет изящно справиться с неожиданными ошибками и предоставить пользователям содержательные ответы. Laravel поставляется с надёжной системой обработки исключений, которая позволит вам эффективно справляться с ошибками. В этой статье мы рассмотрим основы обработки исключений в Laravel, а также ключевые концепции.Основы TypeScript: Any, Void, Never, Null, Строгие проверки Null
Добро пожаловать в восьмую часть нашей серии статей о TypeScript! В этой части мы познакомимся с динамичным ландшафтом типов TypeScript, изучим типыany, void, never, null и значение строгой проверки null.Неортодоксальный Eloquent II
Я работаю с Eloquent уже более пяти лет, и пришло время поделиться своим очередным багажом трюков. Вы гарантированно узнаете что-то новое!Основы TypeScript: Типизация функций и сигнатур
Добро пожаловать в седьмую часть цикла статей о TypeScript! В этой части мы сосредоточимся на типизации функций и сигнатур, обеспечивающих функциональность и безопасность типов вашего кода.Стратегии кэширования в Laravel
При использовании кэширования обещание значительного повышения производительности должно быть сопоставлено с его стоимостью, связанной со сложностью и инфраструктурой. Давайте обсудим доступные варианты, чтобы вы могли использовать наилучшую реализацию для любой ситуации.Основы TypeScript: Объединение, Литеральные и Размеченные типы
Добро пожаловать в шестую часть нашей серии статей о TypeScript! В этой части мы рассмотрим объединение типов, литеральные типы и размеченное объединение типов, обеспечивающие точность и выразительность в определении типов.Совет по безопасности: Безопасна ли функция strip_tags()
PHP включает несколько очень удобных функций, ориентированных на безопасность, но вы должны знать, как правильно их использовать, иначе рискуете оставить значительную уязвимость, ожидающую своего применения!Основы TypeScript: Создание типов, перечислений и интерфейсов
Добро пожаловать в пятую часть нашей серии статей о TypeScript! В этой части мы переключим наше внимание на создание пользовательских типов, перечислений и интерфейсов. Эти мощные конструкции позволяют создавать выразительные и чётко определённые структуры кода.Семь советов по добавлению второго сервера приложения
Добавление второго сервера к вашему приложению может стать отличным способом улучшить его производительность и/или повысить надёжность. Однако при добавлении второго сервера необходимо учитывать несколько моментов.Основы TypeScript: Неявные и Явные типы, Утверждения типов
Добро пожаловать в четвёртую часть цикла статей о TypeScript! В этой части мы рассмотрим концепции неявных и явных типов, а также утверждения типов.Знакомство с утилитарным классом Laravel Number
В Laravel появился новый класс Number, предоставляющий несколько новых хелперов для форматирования чисел.Основы TypeScript: Примитивы и базовые типы
Добро пожаловать в третью часть нашего цикла о TypeScript! В этой части мы рассмотрим фундаментальные строительные блоки TypeScript — примитивные и базовые типы.Пять полезных встроенных PHP констант
В PHP есть множество встроенных констант. Некоторые из них полезны при работе с файлами, а некоторые — с целыми числами. Но все они имеют одну общую черту — все они доступны глобально. В этой небольшой статье мы рассмотрим типичные примеры и случаи использования констант в Laravel.Основы TypeScript: JavaScript в сравнении с TypeScript
Добро пожаловать во вторую часть нашей серии статей о TypeScript! В этой части мы проведём сравнение между JavaScript и TypeScript, что поможет вам сделать осознанный выбор при принятии решения о переходе на TypeScript.Что нужно сделать перед развёртыванием Docker в продакшене
Краткое руководство, показывающее, как перейти от локальной разработки к продакшену с помощью Docker, включая рабочие процессы развёртывания и CI/CD.Основы TypeScript: компилятор `tsc` и `tsconfig.json`
Первая часть серии основ TypeScript посвящена компиляторуtsc и файлу конфигурации tsconfig.json. Узнайте, как преобразовать TypeScript в JavaScript и централизованно управлять настройками проекта.Тестирование абстрактных классов PHP с помощью анонимных классов
Абстрактные классы не могут быть инстанцированы напрямую, что создаёт проблему при тестировании функциональности, реализованной в самом абстрактном классе. В этой статье я поделюсь своим подходом к решению этой проблемы.Будьте последовательны в использовании скриптов Composer в CI
Сценарии Composer — это очень удобный способ определения команд, которые вы часто используете. Например, у нас есть скрипты composer для запуска тестов, проверки стиля кодирования или обновления хелперов IDE.PHP атрибуты в Laravel
В PHP 8 появились атрибуты, которые являются довольно впечатляющими и мощными. В этой статье мы будем использовать их для включения и выключения маршрутов Laravel, насколько это круто?Как использовать файловую систему в Node.js
Веб-приложениям не всегда нужна запись в файловую систему, но Node.js предоставляет для этого обширный интерфейс прикладного программирования (API). Это может понадобиться, если вы ведёте логи отладки, передаёте файлы на сервер или с сервера, или создаёте инструменты командной строки.Почему нам нравятся минимальные сидеры для тестов
Если все сделать правильно, ваши тесты будет намного легче поддерживатьНовое в Symfony 6.4: Профилировщик Workflow
Symfony 6.4 включает новую функцию Profiler, позволяющую исследовать определения рабочих процессов и отображать их в виде визуальной диаграммы.Изучение новых методов массивов из ECMAScript 2023
В ECMAScript 2023 появились новые функции, призванные улучшить язык и сделать его более мощным и удобным. Новая версия включает в себя интересные функции и новые методы массивов JavaScript, благодаря которым программирование на JavaScript становится более лёгким и приятным. В этой статье мы подробно рассмотрим функциональные возможности новых методов JavaScript на прототипах массивов.Не нужно вручную заполнять базы данных в тестах
Почему использование свойства$seed лучше ручного заполнения базы данных? Просто ли это избавление от необходимости писать несколько строк кода?Как установить/обновить PHP 8.3 на MacOS с помощью Homebrew
В этой статье рассказывается, как установить или обновить PHP 8.3 на macOS с помощью Homebrew.Как установить или обновить PHP 8.3 на Fedora, RHEL, CentOS
Полное руководство по установке или обновлению PHP 8.3 на Fedora, RHEL, CentOS, Alma Linux, Rocky Linux и другие.Как установить или обновить PHP 8.3 на Ubuntu и Debian
Полное руководство по установке или обновлению до PHP 8.3 на Ubuntu 22.04 (Jammy), Ubuntu 20.04 (Focal) и Debian 12 (Bookworm), Debian 11 (Bullseye), Debian 10 (Buster).Удивительная проблема с Auth user и тестами
Этот совет продолжает начатую вчера тему, связанную с проверкой строгости Eloquent.Новое в Symfony 6.4: Улучшения DX (часть 2)
В Symfony 6.4 добавлено множество функций для улучшения DX (опыта разработчиков): добавление серверных параметров при клике по ссылкам, определение атрибутов краулера по умолчанию и т.д.Несколько способов упростить CSS в 2023 году
Мы переживаем некий ренессанс CSS: новые возможности, техники, эксперименты и идеи появляются в таком количестве, какого мы не видели со времён "CSS3". Легко почувствовать себя подавленным, когда, кажется, что твоя профессия развивается с бешеной скоростью, но Джефф Грэм (Geoff Graham) считает, что "современный" CSS в 2023 году фактически сделал CSS "проще" в написании.Защита от ленивой загрузки не перехватывает все N+1 запросы
Я большой поклонник нового "strict mode" для моделей Laravel. Одна из вещей, которую он помогает отловить, — это ужасный запрос "N+1", вызывающий проблемы с производительностью в продакшене.Запуск Laravel Pint как части CI-конвейера с помощью Github Actions
Nuno Maduro из Laravel core-team объявил о выпуске нового пакета Laravel Pint, представляющего собой "[...] специализированный корректор стиля PHP-кода для минималистов. Pint построен на базе PHP-CS-Fixer и помогает убедиться, что стиль вашего кода остаётся чистым и последовательным".Действительно ли редиректы (301, 302, ...) влияют на SEO
Как работать с редиректами и каковы последствия их использования — вот несколько вопросов, возникающих в процессе SEO-аудита. Некоторые SEO-эксперты более фаталистично, чем другие, относятся к тому, как редиректы могут повлиять на рейтинг вашего сайта на страницах результатов поисковых систем (SERP).Советы по оптимизации Laravel 10 с помощью строковых хелперов
Раскройте весь потенциал вспомогательных строковых хелперов в Laravel 10 с помощью 10 советов по оптимизации в 2023 году.Как использовать Node.js с Docker
В этом руководстве рассказывается о преимуществах запуска приложений Node.js в контейнерах Docker и о том, как создать практичный рабочий процесс разработки.TypeScript: Освоение Перегрузки и Дженериков
TypeScript, статически типизированный надмножество JavaScript, привносит в язык дополнительные статические типы и объектно-ориентированное программирование на основе классов. Две важнейшие концепции, которые вводит TypeScript, — это Перегрузка и Дженерики. Эти возможности повышают гибкость, удобство повторного использования кода и безопасность наших программ.Новое в Symfony 6.4: Улучшения AssetMapper
AssetMapper в Symfony 6.4 содержит огромное количество новых функций: загрузка локальных вендоров, поддержка CSS, более интеллектуальная предзагрузка и многое другое.Что такое цепочка прототипов в JavaScript
Цепочка прототипов — это механизм в JavaScript, позволяющий объектам наследовать свойства и методы других объектов, имея общий прототип. В JavaScript каждый объект имеет связанный с ним прототип объекта, и эти прототипы образуют цепочку. Когда свойство или метод не найдены в объекте, JavaScript просматривает цепочку прототипов, чтобы найти его в прототипе объекта или в прототипах его предков.Новое в Symfony 6.4: Улучшения DX (часть 1)
В Symfony 6.4 реализована поддержка числовых кодов ISO 3166-1, улучшено ограничение Type, повышена точность форматирования временных сообщений, улучшена работа утилит фильтрации FinderОчистите свой JavaScript: Избавьтесь от регулярных выражений
В этой статье я рассмотрю регулярные выражения, также известные как Regex, и попытаюсь убедить вас в том, что их наличие в вашей кодовой базе — плохая идея. Для краткости я не буду пытаться объяснить внутреннюю работу и применение Regex, но постараюсь убедить вас в необходимости их рефакторинга из вашей кодовой базы.Очистите свой JavaScript: Трансформация условных операторов
В программировании, особенно в динамичном и постоянно развивающемся мире JavaScript, путь от новичка до опытного профессионала сопряжён с множеством трудностей и кривых обучения. Один из важнейших выводов, который я вынес из своего богатого опыта, как в качестве интервьюера, так и в качестве интервьюируемого, заключается в огромной важности понимания "почему", стоящего за нашими кодовыми решениями. Именно такое глубокое понимание и способность чётко сформулировать причины каждого решения действительно отличают исключительных специалистов.Создание Laravel пакета в локальной среде
Как настроить локальную среду разработки для тестирования классов или утилит пакета в рамках локального проекта Laravel.Что на самом деле происходит при выполнении команды 'Docker Run'
Docker — это инструмент, облегчающий создание, развёртывание и запуск приложений с помощью контейнеров. Контейнеры позволяют инженеру упаковать приложение со всеми необходимыми компонентами, например библиотеками и другими зависимостями, и отправить его в виде единого пакета. Это означает, что приложение будет работать на любой другой машине, независимо от настроек, которые могут отличаться от настроек машины, использовавшейся для написания и тестирования кода.PHP 8.3 что нового. Изменения и новый функционал.
PHP 8.3 вышел 23 ноября 2023 года, и, как обычно, вам нужно быть в курсе новых функций и критических изменений, чтобы упростить переход.Вышел PHP 8.3
Команда PHP выпустила PHP 8.3, в котором появились типизированные константы классов, функцияjson_validate(), динамическое получение константы класса, атрибут #[Override] и многое другое.Семантические горизонтальные списки
Иногда требуется, чтобы список отображался не вертикально, а в виде горизонтального списка (как в навигационном меню).Веб-производительность и параллельная vs. waterfall загрузка
Давайте разберёмся нужны ли бандлеры для сборки JavaScript проектов? Есть ли выгода от пакетирования, или лучше загружать множество небольших js-файлов?Предотвращение повторной отправки форм с помощью атомарной блокировки
Предотвращение повторных отправок форм и диспетчеризации заданий с помощью атомарных блокировок Laravel.Новое в Symfony 6.4: Улучшения безопасности
В Symfony 6.4 добавлено разрешение бейджей безопасности в профилировщике, более безопасные логи безопасности и возможность раздельного определения нескольких паттернов в брандмауэрах безопасности.Понимание принципов работы сессий в Laravel
Если мы не знаем, как что-то работает, то ещё больше запутываемся, когда что-то ведёт себя не так, как ожидалось.Git Cherry-Pick: полное руководство по выборочному переносу коммитов
Хотите перенести только нужные коммиты без слияния целых веток? Командаgit cherry-pick позволяет выборочно применять изменения между ветками Git. В этом руководстве — синтаксис, практические примеры и лучшие практики.Возврат массивов и объектов из метода reduce()
Приёмы, которые вы, вероятно, не знали о методеreduce()Совет по безопасности: Защитите свой файл .env
[Совет #62] Поисковые системы любят просматривать все ваши файлы, поэтому будьте внимательны к тому, что вы оставляете на видном месте.Новое в Symfony 6.4: Интеграции Mailer, Translation, Notifier, Webhook и RemoteEvent
В Symfony 6.4 добавлено 12 новых интеграций со сторонними сервисами в компонентыMailer, Translation, Notifier, Webhook и RemoteEvent.DatePoint: Новый класс иммутабельной даты/времени для Symfony 6.4
DatePoint является полноценной заменой классов даты/времени PHP, предоставляющей множество утилит, полную интеграцию с компонентом Clock и улучшенную обработку ошибок.Новое в Symfony 6.4: Атрибуты AutowireLocator и AutowireIterator
В Symfony 6.4 вводится новый атрибут AutowireLocator, позволяющий определять локаторы сервисов с помощью PHP атрибутов, а не конфигурационных файлов.Обновление синтаксиса CSS вложенности
В Chrome 120 включена функция заглядывающей вперёд вложенности.Неортодоксальный Eloquent
Я работаю с Eloquent уже более пяти лет, и пришло время поделиться своим опытом. Пристегните ремни, это будет хорошая поездка!Новое в Symfony 6.4: Улучшения Serializer
В Symfony 6.4 добавлены новые возможности в Serializer, такие, как групповые атрибуты на основе классов, нормализация объектов Translatable и детализация ошибок декодирования JSON.Пакет Laravel htmx
Laravel htmx — это пакет Maurizio Bonani, позволяющий работать с библиотекой htmx. Эта библиотека позволяет получать доступ к современным функциям браузера непосредственно из HTML, а не с помощью JavaScript:Контроллеры и их истинное предназначение
На прошлой неделе я написал в твиттере о том, как выглядят контроллеры в моих приложениях и как я вообще к ним отношусь. Этот твит быстро стал вирусным и привлёк к себе много внимания, но, к сожалению, не по тем причинам. Поэтому в этой статье я хотел бы пролить свет на то, к чему я стремился, и объяснить, каким должен быть (UI) контроллер в целом.Семь "трюков" с dd() в Laravel
В этой статье мы поговорим о функции, используемой каждым Laravel разработчиком —dd(). Я покажу различные творческие способы использования dd() в наших приложениях.Новое в Symfony 6.4: Больше встроенных обработчиков сообщений
В Symfony 6.4 добавлены новые обработчики Messenger, позволяющие запускать процессы, команды и пинговать URL-адреса.CSS text-wrap: pretty
Выберите оптимизированный перенос текста, для красоты, а не для скорости.CSS медиа запрос prefers-reduced-transparency
Оптимизация и настройка под пользователей, предпочитающих непрозрачный пользовательский интерфейс.Новое в Symfony 6.4: Улучшения локали
В Symfony 6.4 реализованы некоторые улучшения, связанные с локалями, такие, как установка локали при отображении содержимого электронной почты и доступ к списку включённых локалей из шаблонов.Ошибка 503 в Nginx: Руководство по диагностике и исправлению
Полное руководство по устранению ошибки 503 в Nginx: от диагностики по чек-листу до тонкой настройки таймаутов, балансировки нагрузки и health checks. Готовые команды и примеры конфигурации.Новое в Symfony 6.4: Больше тестируемых утверждений
В Symfony 6.4 добавлены новые тестовые утверждения, связанные с селекторами CSS, компонентом HttpClient и темами электронной почты.Новые возможности CSS облегчающие вашу жизнь
CSS — постоянно развивающийся язык. С каждой итерацией он становится все лучше и лучше. Поэтому важно следить за новейшими возможностями CSS, чтобы использовать их в своих проектах и меньше зависеть от библиотек сторонних разработчиков.Отзывчивая типографика с CSS clamp
Для frontend-разработчика одним из самых утомительных занятий является определение свойств текстовых элементов для различных размеров экрана с помощью медиа-запроса, что приводит к созданию большого файла css. В этой статье мы расскажем как сделать тексты на сайте отзывчивыми без использования медиа-запроса, тем самым сэкономив время и место.Восемь способов писать чистый и лаконичный код в Laravel
Определение чистого кода субъективно. Оно часто становится источником горячих споров между разработчиками в Интернете. В этой статье мы рассмотрим возможности Laravel, позволяющие писать меньше кода.Начните тестировать Laravel код меньше чем за 5 минут
Кодирование — это весело. А вот отладка? …Не очень. Именно поэтому тестирование имеет решающее значение для успеха любого нетривиального проекта. В этой статье я покажу как легко начать тестировать свои Laravel приложения. Давайте растопим лёд раз и навсегда!Новое в Symfony 6.4: Улучшения каталога сборки
В Symfony 6.4 добавлена поддержка переменной средыAPP_BUILD_DIR и обновлены подогреватели кэша для получения параметра build_dir.Переменные среды/окружения в Node.js: Как правильно их установить
Вы когда-нибудь сталкивались с проблемой управления различными конфигурациями в Node.js приложениях? Хотелось бы иметь централизованный и организованный способ работы с такими секретами, как ключи API и учётные данные баз данных? Не ищите дальше! На помощь приходят переменные среды. В этой статье мы погрузимся в мир переменных среды в Node.js, рассмотрим их преимущества, примеры использования и лучшие практики эффективного управления ими.9 распространённых ошибок в CSS, которые мы совершаем
Каскадная таблица стилей (CSS) — это мощный язык стилей, помогающий фронтенд разработчикам оформлять обычные веб-страницы. Однако при использовании этого языка стилей можно допустить ряд ошибок мешающих писать эффективный код. В данной статье рассматриваются некоторые распространённые ошибки и предлагается решение для каждой из них.Оптимизация Laravel Eloquent запросов
Вот несколько советов и приёмов, которые я узнал на своём пути, помогающих оптимизировать запросы к базе данных в Laravel. Иногда небольшие изменения могут быть очень существенными.Как CSS @scope может заменить БЭМ
Одним из наиболее распространённых и сложных вопросов, с которыми сталкиваются фронтенд-инженеры, являются соглашения об именовании CSS. С популярностью метода Блок Элемент Модификатор (БЭМ) многие привыкли организовывать свои стили по удобной схеме.Новое в Symfony 6.4: Упрощённый выход из системы
В Symfony 6.4 улучшена функция выхода из системы, что избавляет от необходимости явно определять маршруты выхода из системы в своих приложениях.О чем нам говорит удаление свойств объектов в JavaScript
Удаление свойств объекта в JavaScript — не самая интересная задача, но существует множество способов её решения, каждый из которых раскрывает фундаментальный аспект работы JavaScript. В этой статье Juan Diego Rodríguez рассматривает каждый из способов.Новое в Symfony 6.4: DatePoint
В Symfony 6.4 представлен DatePoint, заменяющий PHP-классы даты/времени, предоставляющий множество утилит, полную интеграцию с компонентомClock и улучшенную обработку ошибок.Laravel Impersonate — Как выдавать себя за других пользователей
Одной из интересных особенностей Laravel Nova является возможность выдавать себя за пользователя прямо из панели управления. Это удобно по многим причинам, но я считаю, что когда вы получаете сообщение об ошибке или проблеме и хотите увидеть, что именно видит пользователь, выдача себя за него экономит массу времени, поскольку вы можете увидеть именно то, что видит пользователь.События в Laravel
События в Laravel — это полезное удобство программирования, позволяющее разработчику оповещать, что в программе произошло нечто значимое.Не бойтесь JavaScript-генераторов
Давайте будем честными: как часто мы сталкиваемся с кодом, использующим генераторы?Новое в Symfony 6.4: Контексты сериализатора на основе классов
В Symfony 6.4 можно применить атрибут контекста сериализатора ко всему классу, чтобы определить общую конфигурацию контекста для всех свойств класса.Проверка существования свойства объекта в JavaScript
Когда нам необходимо проверить, содержит ли объект JavaScript определённое свойство, мы можем использовать несколько методов, включая операторы JavaScript, специфические статические методы класса Object, методы экземпляра объекта, методы экземпляра массива и пользовательскую функцию JavaScript.Новое в Symfony 6.4: Утилиты имперсонации
В Symfony 6.4 появились новые функции Twig для генерации относительных/абсолютных URL, необходимых для имперсонации пользователей.Нюансы base64-кодирования строк в JavaScript
Кодирование и декодирование base64 — это распространённая форма преобразования двоичного содержимого для представления его в виде безопасного для веб-приложений текста. Она широко используется для URL данных, таких как встроенные изображения.Новое в Symfony 6.4: Маршруты на основе FQCN
В приложениях Symfony система маршрутизации требует, чтобы каждый маршрут имел имя, которое представляет собой произвольную строку, однозначно идентифицирующую маршрут. В дальнейшем это имя используется, например, при генерации URL-адресов на основе определений маршрутов.Новое в Symfony 6.4: Обработчик подпроцессов
В Symfony 6.4 реализована новая возможность запуска подпроцессов с той же конфигурацией, что и их родительские PHP-процессы.Новая CSS функция light-dark() для переключения цвета темы
В Интернете существует множество способов переключения между светлыми и тёмными темами. Мы можем использовать JavaScript или медиазапрос prefers-color-scheme в CSS для переключения между темами на основе системных предпочтений пользователя.Новое в Symfony 6.4: CHIPS Cookie
Такие браузеры, как Google Chrome, постепенно откажутся от поддержки сторонних файлов cookie, начиная с середины 2024 года. Альтернатива называется CHIPS, что является аббревиатурой "Cookies Having Independent Partitioned State".Регулярные выражения в JavaScript
Регулярные выражения могут быть пугающими, но это не так! Узнайте все необходимое о регулярных выражениях и их использовании в JavaScript.В Вашем JS-приложении происходит утечка памяти, а Вы об этом не знаете
Утечки памяти можно сравнить с утечками воды в доме: хотя небольшие капли поначалу не кажутся большой проблемой, со временем они могут нанести значительный ущерб.Новое в Symfony 6.4: Профилировщик команд
Symfony 6.4 включает новый профилировщик команд, позволяющий собирать информацию о выполняемых командах в процессе их выполнения, чтобы впоследствии можно было отладить возникшие проблемы.Шпаргалка по кодировке символов для JavaScript разработчиков
Кодировка символов — важнейший аспект разработки JavaScript как на фронтенде, так и на бэкенде. В этой статье мы рассмотрим основы кодирования символов, его важность и то, как оно влияет на отображение данных на веб-страницах. Также обсудим лучшие практики и типичные ошибки, которые помогут вам избежать проблем с кодировкой в своих проектах.Валидация JSON Schema для столбцов
Расширение традиционной схемы базы данных столбцами NoSQL JSON позволяет сделать схему более понятной. При её использовании база данных будет гарантировать, что все JSON-данные, хранящиеся в столбце, являются валидным JSON. Но можно ли также гарантировать наличие определённых свойств в JSON-документе?Понять Композицию в JavaScript раз и навсегда
Когда мы вступаем на путь кодирования на JavaScript, мы сталкиваемся с множеством концепций, и одной из таких интересных концепций является Композиция Функций.Заполнение пропусков в результатах статистических временных рядов
Статистические расчёты на временном интервале должны учитывать недостающие данные. Вместо того чтобы заполнять недостающие записи в приложении, можно изменить запрос, чтобы делать это напрямую.Ограничение области действия селекторов с помощью CSS правила @scope
Узнайте, как использовать @scope для выбора элементов только в ограниченном поддереве DOM.TypeScript: Сравнение Типа и Интерфейса
TypeScript, мощная надстройка над JavaScript, завоевал популярность среди разработчиков благодаря сложной системе типизации. Он предлагает два способа определения форм данных: типы и интерфейсы. Но как сделать выбор между ними? Знание тонких различий и вариантов использования очень важно для эффективной разработки. В статье мы рассмотрим типы и интерфейсы, изучим их ключевые различия и практические случаи использования, чтобы вы могли принять взвешенное решение о том, когда использовать каждый из них.Понимание Value Objects/Объектов Значения в PHP
Value Objects/Объекты Значения — это фантастическая концепция, которую мы можем использовать для улучшения наших приложений. Они представляют собой небольшие объекты, такие как Money, DateRange, Email или Age, которые мы используем в сложных приложениях. Они являются ключевыми элементами при создании эффективного, понятного и сопровождаемого кода.Полное руководство по типу Never в TypeScript
Типnever в TypeScript очень мало обсуждается, поскольку он не так распространён и не так неизбежен, как другие типы. Начинающий пользователь TypeScript, вероятно, может игнорировать тип never, поскольку он появляется только при работе с расширенными типами, такими как условные типы, или при чтении их загадочных сообщений об ошибках типов.Размещение NULL значений для ORDER BY с nullable столбцами
Для значений NULL в nullable столбцах применяется определённый порядок. Поведение базы данных может быть унифицировано или изменено в соответствии с намерениями приложения путём корректировки размещения значений NULL.Композиция вместо Наследования в PHP
В последнее время в сообществе PHP разработчиков ведутся дебаты о преимуществах и недостатках Композиции и Наследования. В мире объектно-ориентированного программирования (ООП) существует множество мощных инструментов и концепций, каждая из которых имеет свои сильные и слабые стороны и призвана улучшить читаемость, модульность и возможность повторного использования кода.Избегайте AOP: Array-Oriented Programming
Массивы — удобный способ организации и передачи данных в PHP-приложениях, но стоит ли это делать? В этой статье я расскажу о минусах злоупотребления использованием ассоциативных массивов и покажу простую альтернативу этому.Итерация файлов и каталогов в PHP
Недавно мне пришлось решать задачи, требующие знаниясырыхфункций PHP, таких, как итерация файлов и каталогов. По мере развития все более высоких уровней абстракции мы часто перестаём помнить, как работать на низком уровне. В реальности это имеет множество последствий, особенно с точки зрения производительности.
Использование UUID для предотвращения атак методом перебора
В большинстве приложений ресурсы адресуются в URL по числовым инкрементным идентификаторам. Злоумышленник может легко увеличить идентификатор, чтобы перебрать все записи, собирая все доступные данные. Однако это легко предотвратить.PHP итераторы для перебора структур данных
Обход, фильтрация и манипулирование данными с помощью итераторов в PHP. Как создавать пользовательские итераторы и фильтры.Как настроить среду разработки Laravel для Windows без Docker
Локальные среды Laravel под Windows, такие, как Vagrant/Homestead, Laravel Sail или Laragon, могут быть очень медленными или ресурсоёмкими. Давайте создадим более нативную установку, которая работает очень хорошо! Нам удалось сократить время выполнения сложных операций с 13 с. до 1,5 с., что составляет прирост около 800%!Зачем использовать declare(strict_types=1) в PHP
Включите режим строгой типизации в PHP с помощью declare(strict_types=1). Разберём его последствия на примерах кода.Более современный сброс CSS
Я написал A Modern CSS Reset почти 4 года назад, и, да, он не слишком хорошо сохранился. Несколько дней назад я заметил, что на него снова ссылаются, и подумал, что, вероятно, это хорошая идея — опубликовать обновлённую версию.Laravel: Глубокое погружение в FormRequest
В Laravel валидация форм является ключевым моментом для обеспечения безопасности и точности пользовательских данных. Компонент FormRequest упрощает эту задачу, поскольку правила валидации хранятся в специальном классе, а не в контроллере. Это также делает код более аккуратным и позволяет использовать специальные функции, связанные с запросом, такие как получение модели или изменение типа данных в поле.Менее известные трюки и советы по Composer, которые нужно знать
Менеджер зависимостей Composer является де-факто способом управления зависимостями в PHP-проектах. Вся современная PHP-разработка немыслима без Composer. Но знаете ли вы, что с помощью Composer можно делать многое, кроме установки и обновления зависимостей?Защита frontend приложений с помощью CORS и CSP
Frontend-приложения играют центральную роль в обеспечении бесперебойной работы пользователей. В современной взаимосвязанной сети, где широко распространены сторонние интеграции и API, обеспечение надёжной безопасности имеет первостепенное значение. Нарушение безопасности может привести к краже данных, несанкционированному доступу и ухудшению репутации бренда. В этой статье мы расскажем вам, как использовать CORS и CSP для обеспечения безопасности ваших веб-страниц.Vim: Изменение размера сплитов
Манипулируйте размеров сплитов для получения нужной площади области просмотра.For each циклы с LATERAL соединениями
Объединять данные с помощью SQL очень просто. Однако иногда очень нужны зависимые соединения, возвращающие лишь небольшое подмножество данных объединённой таблицы. С помощью LATERAL соединения знакомый для каждого цикл может быть воспроизведён в SQL.Глубокое погружение в отношения Фабрик
В Laravel фабрики играют важную роль в генерации данных для моделей.Все способы обработки null значений в PHP
Тип null является единичным типом PHP, т.е. имеет только одно значение: null. В этой статье мы рассмотрим все способы работы со значениями null в PHP.UUID в Laravel: Общие вопросы
Если вы только начали работать с UUID, то может возникнуть немало вопросов о них. Мы постараемся ответить на наиболее распространённые из них.Удаление дубликатов строк
В каждом приложении в какой-то момент появляются дубликаты строк. Очистка часто реализуется в логике приложения, хотя база данных может сделать это с помощью одного запроса, включающего выборку того, какие строки следует оставить.Выведение типов и аннотации типов в TypeScript
TypeScript основывает обнаружение и определение типов на выведении типов (Type Inferences) и аннотациях типов (Type Annotations), и в этой статье мы расскажем о них, чтобы вы могли понять, когда и как их использовать.PHP генераторы — практический пример
Генераторы в PHP позволяют конструировать итераторы без необходимости создания всего массива. Это позволяет значительно сократить потребление памяти.Как отправить e-mail с Laravel используя Gmail
Laravel предлагает встроенный метод отправки электронной почты из вашего приложения с помощью фасада Mail. Этот метод требует подключения внешнего почтового сервера, например SMTP-сервера Gmail, который мы будем использовать в данной статье.Laravel Where
В Laravel очень мощный конструктор запросов. Он предлагает богатый набор методов, позволяющих легко и просто писать SQL-запросы.Советы по оптимизации производительности Nginx
Являясь основой многих сайтов с высокой посещаемостью, Nginx зарекомендовал себя как надёжное, высокопроизводительное и гибкое решение для обслуживания веб-контента.Повышение эффективности кодирования с соглашениями об именовании CSS
Соглашения об именовании CSS улучшают взаимодействие членов команды при работе над проектами, повышают сопровождаемость и масштабируемость проекта, позволяя разработчикам оптимизировать свои рабочие процессы. В этой статье мы погрузимся в мир соглашений об именовании CSS, покажем практические примеры и преимущества, которые они дают в процессе разработки.Использование нескольких баз данных в проекте Laravel
Как использовать несколько баз данных в проекте Laravel и управлять разделёнными записями в базе данных.Поддержка Bun в Laravel Sail и Forge
Свежий релиз Laravel Sail включает поддержку Bun, быстрой универсальной среды выполнения JavaScript. Узнайте, как начать использовать Bun в своих проектах Laravel уже сегодня.Введение в View Transitions API
Новый View Transitions API предлагает более простой способ анимации между двумя состояниями DOM — даже между загрузками страницы. Это прогрессивное усовершенствование, работающее уже сегодня.Использование Bun в качестве менеджера пакетов в PHP проектах
Насладитесь быстрым процессом создания зависимостей front-end в ваших PHP-проектах благодаря возможностям управления пакетами Bun.Laravel: Шифрование данных моделей с помощью кастов
Если вы хотите избежать хранения конфиденциальных данных БД (например, номеров паспортов) в виде обычного текста, Laravel может зашифровать их в Моделях Eloquent, просто присвоив им значениеencrypted. Давайте посмотрим, как это работает.Ошибка Livewire 3 и Laravel Breeze: Конфликт Alpine.js
Если вы попытаетесь использовать Livewire 3 со стартовым набором Laravel Breeze, то можете заметить, что ваши компоненты не реагируют на реакцию, а некоторые функции Livewire просто не работают. Причиной может быть Alpine.js, который загружается дважды. Сейчас я покажу вам, как это исправить.Пять способов получения последнего вставленного ID в Laravel
В Laravel после вставки данных в таблицу базы данных может потребоваться получить ID последней вставленной после создания записи. Этот идентификатор необходим для решения различных задач, таких как перенаправление пользователей на вновь созданный ресурс или выполнение дальнейших операций.6 лучших практик Laravel RESTful APIs
Овладейте искусством создания RESTful API с Laravel благодаря этим лучшим практикам.JavaScript итераторы и генераторы: Полное руководство
С появлением ES6 итераторы и генераторы были официально добавлены в JavaScript.Написание CSS в 2023 году: Отличается ли он от того, что было раньше?
CSS развивается быстрее, чем когда-либо. С учётом всех новых возможностей, которые появились — и ещё появятся — после появления Flexbox и Grid несколько лет назад, меняется и способ написания CSS. В этой статье Geoff Graham рассказывает о том, какие функции оказали наибольшее влияние на его нынешние подходы к CSS, а также о тех, которые не оказали (по крайней мере, пока).firstOrCreate() vs createOrFirst()
В Laravel v10.20 появился совершенно новый методcreateOrFirst(), созданный Tony Messias, который может вызвать некоторое недоумение, поскольку в Laravel уже был метод firstOrCreate(). В чем же заключаются различия? Зачем нам нужны два метода? Давайте посмотрим...Laravel: Паттерн Pending Object
Паттерн Pending Object играет ключевую роль в Laravel, поскольку используется практически во всех его аспектах. Он обеспечивает исключительный опыт разработчика (DX).Как избежать CSS-сдвигов макета связанных с ch
Сдвиги макета CSS означают неожиданное перемещение (или сдвиг) элементов в макете веб-страницы в процессе рендеринга. Это происходит при изменении размеров или положения элементов, что приводит к перетеканию или смещению содержимого на странице. Сдвиги макета могут привести к ухудшению пользовательского интерфейса, так как перемещение может нарушить взаимодействие с пользователем или затруднить чтение, или доступ к содержимому.Vim: Выравнивание сплитов
Для сохранения баланса размера сплитов, используйте команду выравнивания размеров сплитов Ctrl+w =.Преимущества пользовательских свойств в CSS
Пользовательские свойства CSS, известные как переменные, — это мощная функция, позволяющая разработчикам определять многократно используемые значения в таблицах стилей. Использование пользовательских свойств позволяет значительно повысить удобство повторного использования и сопровождения кода, а также создавать динамические стили для своих веб-проектов. Цель данной статьи — всесторонне объяснить пользовательские свойства CSS и их применение с помощью функцииvar.Введение в htmx
Современные веб-пользователи ожидают от одностраничных приложений (SPA) плавных и динамичных эффектов. Однако для создания SPA часто используются сложные фреймворки, такие, как React и Angular, которые могут быть сложны для изучения и работы с ними. Появилась htmx — библиотека, позволяющая по-новому взглянуть на создание динамических веб-приложений, используя такие возможности, как Ajax и CSS-переходы, непосредственно в HTML.Руководство по оптимизации JavaScript файлов
В этой статье мы рассмотрим практические методы оптимизации JavaScript-файлов, способы решения проблем производительности, связанных с JavaScript-файлами, а также инструменты, помогающие в процессе оптимизации. Вы получите знания, позволяющие повысить скорость работы веб-приложений и обеспечить бесперебойную работу пользователей.Как реализовать пагинацию с помощью HTML, CSS и JavaScript
В Интернете пагинация — это способ разбиения больших фрагментов содержимого на более мелкие части. В этой статье мы рассмотрим простой способ разделения содержимого на ряд "страниц" с помощью HTML, CSS и обычного JavaScript.Пять практических примеров использования регулярных выражений
Ознакомьтесь с конкретными ситуациями, в которых регулярные выражения оказываются оптимальным решение проблемы.Понимание сериализации в PHP
Сериализация — это процесс, в котором принимается часть данных и создаётся хранимое или переносимое представление этих данных.Ленивая загрузка в JavaScript
Ленивая загрузка — это метод, позволяющий отложить загрузку несущественного содержимого до того момента, когда оно станет необходимым для просмотра пользователем. В отличие от других методов загрузки, при которых все объекты сайта загружаются одновременно при доступе к странице, при ленивой загрузке используется более расчётливый подход. Она откладывает отображение некоторых элементов, таких как изображения, видео и другие мультимедиа, до тех пор, пока пользователь не начнёт активно взаимодействовать с веб-страницей. В этой статье мы расскажем вам, как использовать эту технологию, чтобы пользователи получали больше удовольствия от работы с вашим сайтом.Рефакторинг CSS: Оптимизация размера и производительности
Рефакторинг кодовой базы должен привести к аналогичной или повышенной производительности и улучшению состояния кодовой базы. В конце концов, если развёртывание обновлённой базы вызовет проблемы с загрузкой или производительностью, это приведёт к снижению трафика и доходов. К счастью, существует множество методов оптимизации, которые можно применить для решения потенциальных проблем с размером файлов и производительностью.Знакомство с Laravel Sushi — драйвером массива для Eloquent
Sushi — это недостающий драйвермассивовEloquent, поскольку иногда хочется использовать Eloquent без работы с базой данных.
Руководство по четырём новым методам Array.prototype в JavaScript
Четыре новых методаArray.prototype были недавно утверждены в рамках ECMAScript 2023. О том, как их использовать, читайте в этом подробном руководстве.Отладка ошибок шлюза/Gateway Errors 502 и 504
Иногда возникают ошибки шлюзов, обычно "502 Bad Gateway" или "504 Gateway Timeout". Nginx возвращает эти ошибки, когда посылает запрос PHP, а PHP возвращает ошибку, говорящую, что он не может обработать запрос. Как правило, это НЕ ошибки, возникающие в приложении, а ошибки, возникающие до того.PHP функция max()
Погрузитесь в это увлекательное руководство по рефакторингу фрагмента кода с использованием функцииmax в PHP.Laravel 11: грядущие изменения и дата выхода
Laravel 11 будет выпущен 12 марта 2024 года. Его разработка продолжается до сих пор. Давайте рассмотрим все значимые новые возможности, о которых мы уже знаем.12 лучших практик безопасности Laravel на 2023 год
Обеспечение безопасности приложения Laravel: защита конфиденциальных файлов, обновление пакетов и Laravel, использование политик, проверка вводимых данных и многое другое.Руководство по шифрованию и хэшированию в Laravel
Хеширование и шифрование — важнейшие концепции безопасности, о которых должен знать каждый веб-разработчик. В этой статье мы рассмотрим, что такое хеширование и шифрование, в чем разница между ними и как их использовать в своих приложениях Laravel.Понимание логических свойств CSS
Логические свойства CSS — эффективный способ управления макетом веб-страниц. Со временем CSS эволюционировал, отвечая требованиям современного веб-дизайна, и одним из значительных достижений последних лет стало внедрение логических свойств CSS. В статье мы рассмотрим логические свойства CSS, их отличия от традиционных (физических) свойств и их важность для создания гибких и адаптивных макетов.CSRF: Обход ограничений SameSite cookie-файлов
SameSite — это механизм защиты браузера, определяющий, когда файлы cookie сайта включаются в запросы, поступающие с других сайтов. Ограничения на использование файлов cookie SameSite обеспечивают частичную защиту от различных межсайтовых атак, включая CSRF, межсайтовые утечки и некоторые CORS-эксплойты.Освоение z-index в CSS
z-index — свойство, используемое для управления порядком расположения слоёв в документе. Элементы с большим значением z-index располагаются над элементами с меньшим значением. Подобно тому, как оси x и y на странице определяют расположение элементов по горизонтали и вертикали, z-index определяет, как они располагаются друг над другом по оси z.Рефакторинг CSS: Стратегия, тестирование и сопровождение
В этой статье мы подробно рассмотрим сам процесс рефакторинга, стратегию инкрементного рефакторинга, визуальное регрессионное тестирование и сопровождение отрефакторенной кодовой базы.Laravel: Добавление или изменение данных Request перед валидацией
Иногда требуется добавить данные в Request или изменить их перед валидацией. В Laravel для этого есть несколько трюков — методmerge().Рефакторинг CSS: Введение
Рефакторинг CSS — задача не из лёгких: его нужно провести так, чтобы не создать проблем. Сначала необходимо проанализировать существующую кодовую базу, провести аудит состояния CSS-кодовой базы, выявить слабые места, согласовать подход и убедить руководство в необходимости вложения времени и ресурсов в этот процесс.Шесть возможностей JavaScript ES12, которые следует использовать
Ещё в 2015 году была представлена революционная версия ES6 с множеством функций, широко используемых в современной веб-разработке.Знакомство с контейнерными запросами CSS
Контейнерные запросы CSS — интересное дополнение к миру CSS. В этой статье мы дадим вам базовое представление о контейнерных запросах CSS и о том, как они работают.Десять основных соглашений об именовании JavaScript
В этой статье перечислены 10 лучших соглашений об именовании JavaScript, которые должен знать каждый разработчик JavaScript, чтобы писать код, понятный остальным разработчикам.Пять различных способов глубокого сравнения JavaScript объектов
Сравнение объектов в JavaScript не так просто, как сравнение примитивных типов данных. В статье рассматриваются пять способов глубокого сравнения объектов в JS.Повторное использование кода: Освоение SCSS-миксинов
Миксины SCSS обеспечивают эффективный способ повторного использования CSS-кода. Миксины уменьшают дублирование и улучшают структуру кода за счёт инкапсуляции стилей в блоки многократного использования. Благодаря возможности принимать аргументы, миксины становятся невероятно адаптивными и универсальными. В этой статье мы расскажем о том, как SCSS-миксины улучшают разработку фронтенда, способствуя модульности и согласованности кода, и упрощая написание CSS.Лучшие веб-сервера в 2023 году
Всесторонний анализ и сравнение лучшего программного обеспечения для веб-серверов. Найдите оптимальное серверное решение, соответствующее именно вашим потребностям в хостинге.Как включить TLS 1.3 в Apache и Nginx на Ubuntu и CentOS
Веб-мастерам и администраторам серверов крайне важно быть в курсе новейших протоколов и технологий. Одной из таких технологий является Transport Layer Security (сокращённо — TLS) 1.3 — последняя версия протокола, обеспечивающего безопасное взаимодействие в компьютерной сети.Понимание module.exports и exports в Node.js
Рассмотрим, как работать с модулями в Node.js, уделяя особое внимание их экспорту и использованию, а также объясняя разницу между module.exports и exports.Руководство по использованию Websockets в Laravel
Узнайте, как можно использовать WebSockets и Pusher для добавления функциональности реального времени в приложения Laravel.Глубокое погружение в Laravel Folio
Недавно Тейлор выложил бета-версию Laravel Folio на YouTube в видеоролике с ключевой конференции Laracon. В настоящее время документация состоит только из файла readme, что отражает простоту пакета. Благодаря своей простоте мы можем легко догадаться о его внутреннем устройстве. Я решил углубиться в эту тему, и в этой статье мы отправимся на поиски его внутренних механизмов.Повышение уровня TypeScript с помощью типов Record
Исследуем тип Record в TypeScript, чтобы лучше понять, как он работает. Также рассмотрим примеры его использования, например, использование с дженериками.PHP 8.3: Проблемы безопасности парсинга INI-строк и файлов
PHP предоставляет функцииparse_ini_string и parse_ini_file, которые повторно используют встроенный в PHP синтаксический анализатор, применяемый для собственных конфигурационных файлов PHP на основе INI.Планирование периодической очистки базы данных на Laravel
Как очистить базу данных удалив ненужные данные с помощью встроенной функции Laravel для повышения производительности запросовPHP 8.3: class_alias() создание псевдонимов встроенных классов
PHP-функцияclass_alias() может создавать псевдоним для заданного класса. Псевдоним ведёт себя точно так же, как и оригинальный класс.Руководство по стилизации скроллбара (полосы прокрутки) в CSS
В этой статье мы рассмотрим несколько способов стилизации скроллбара в CSS, в разных браузерах, чтобы вы могли настроить скроллбар по умолчанию в соответствии с вашим брендом или дизайном.PHP 8.3: PHP CLI Lint (php -l) проверка нескольких файлов
В CLI PHP предусмотрена функция линтинга, которая проверяет переданное имя файла на наличие синтаксических ошибок. Это удобно для быстрой проверки PHP-файла или фрагмента перед выполнением.Как работает Интернет
Для разработчика важно иметь твёрдое представление, что такое интернет и как он работает. Это фундамент, на котором строится большинство современных программных приложений. Чтобы создавать эффективные, безопасные и масштабируемые приложения и сервисы, необходимо хорошо понимать, как работает интернет и как использовать его возможности и связи.PHP 8.3: Поддержка резервных значений в синтаксисе переменных PHP INI
PHP поддерживает замену значений PHP INI на переменные окружения с помощью синтаксиса строковой интерполяции PHP. Если указанная переменная окружения недоступна, парсер INI использует пустую строку. В PHP 8.3 этот синтаксис расширен для поддержки объявления запасного/fallback значения, если переменная окружения не установлена.Как использовать CSS background-size и background-position
Со свойствами фона CSS можно сделать очень многое. В этой статье мы рассмотрим, как использовать свойствоbackground-size для установки размера фонового изображения, а также изучим варианты позиционирования фонового изображения с помощью background-position.Все, что нужно знать о DNS
Если вы читаете эту статью, то, скорее всего, вы использовали систему доменных имён (DNS), даже не подозревая об этом. DNS — фундаментальная часть интернета, которая позволяет нам получать доступ к веб-сайтам и онлайн-услугам, используя вместо цифровых адресов удобные для человека имена. Но как именно она работает? В этой статье я расскажу об основах DNS и о том, как она помогает нам ориентироваться в Интернете.Основы сетевых технологий
Сетевое взаимодействие — это основа современных технологий, необходимая для подключения устройств и служб. В этой статье вы узнаете о ключевых понятиях, терминологии и протоколах, которые используются в сетевых технологиях.Валидация Laravel: Как настроить формат сообщений об ошибках
В Laravel валидация возвращает ошибку в виде JSON-ответа с сообщениями об ошибке в строгом стандартном формате. Что делать, если вы хотите изменить его на совершенно другую структуру, потому что ваши фронтендеры запрашивают определённые пары ключ-значение?Шпаргалка по TypeScript
Все, что вам нужно знать о TypeScript, в одной удобной шпаргалкеКак изменить порт SSH по умолчанию в Linux
SSH (Secure Shell) — широко распространённый протокол для безопасного удалённого доступа и управления Linux-серверами. По умолчанию SSH прослушивает порт 22. Изменение порта SSH по умолчанию может обеспечить дополнительный уровень безопасности сервера, затруднив проведение автоматизированных атак или сканирования.Изучение Livewire 3, Volt и Folio на примере создания плеера подкастов
В этом руководстве мы познакомимся с основами Livewire 3, Volt и Folio и создадим простое приложение, в котором будут отображаться эпизоды подкаста Laravel News.Понимание flatMap() и других массивов TypeScript
В TypeScript объект Array поставляется с различными методами, облегчающими работу с массивами, включая метод flatmap().Как настроить оповещения по электронной почте о входе по SSH на Linux
Мониторинг входов в SSH на Linux-сервере очень важен для обеспечения безопасности системы. Одним из способов информирования об активности входа в систему является настройка оповещений по электронной почте при каждом входе в систему через SSH. В этом руководстве мы покажем Вам, как настроить сервер Linux на отправку уведомлений по электронной почте при входе в систему по протоколу SSH.Поиск в PDF-файлах с помощью MySQL и Laravel
Если на сайте представлены документы с большим объёмом текста, например, PDF-файлы, то часто возникает необходимость предоставить пользователям возможность перечисления и поиска в содержимом этих документов.Как использовать защиту типов в TypeScript
TypeScript использует некоторые встроенные операторы JavaScript, такие, какtypeof, instanceof и оператор in, которые используются для определения того, содержит ли объект свойство.Как использовать CSS aspect-ratio
Бывают случаи, когда действительно необходимо поддерживать определённое соотношение между шириной и высотой отзывчивых элементов на веб-странице. Долгое время это можно было сделать с помощью различных CSS-трюков. Свойство CSSaspect-ratio изменило ситуацию: теперь мы можем задавать соотношение сторон элемента в одной строке кода. Давайте рассмотрим, как использовать свойство aspect-ratio.Автоматическая генерация RSS лент в приложении Laravel
Одним из удобных способов информирования пользователей о ваших материалах является создание RSS-канала. Это позволит им подписываться на него с помощью программы чтения RSS. Усилия, затраченные на реализацию этой функции, стоят того, чтобы принять во внимание, поскольку у сайта появится ещё один канал распространения контента.Фильтрация типов значений TypeScript
Узнайте, как работают фильтры TypeScript, включая фильтры массивов и типов значений, а также как использовать и избегать проблем с защитой типов.Тестирование правил валидации Laravel с помощью Pest PHP
Узнайте, как тестировать правила валидации Laravel с помощью Pest PHP.Как добавить CSS-анимацию раскрытия к изображениям
В этой статье мы рассмотрим некоторые CSS трюки, которые позволят создать анимацию наведения для раскрытия наших изображений.Что появится в Laravel 11
Выпуск Laravel 11 запланирован на 12 марта 2024 года, но давайте рассмотрим некоторые из анонсированных новых возможностей.Четыре способа быстрого добавления CSS на Laravel сайт
В этой статье мы покажем вам четыре способа включения файла CSS в проект Laravel, включая прямое подключение из каталога /public, URL CDN, использование Vite и Laravel Mix.Подтверждение паролем чувствительных действий в Laravel
Как легко предотвратить уязвимые действия в вашем Laravel приложении.Как более эффективно прослушивать событие в разных сценариях
Сегодня мы поговорим о том, как управлять слушателями событий, когда у вас есть несколько сценариев, которые слушают одно и то же событие.Laravel Folio — система маршрутизации на основе файлов и каталогов
Laravel Folio — новая система автоматической маршрутизации на основе файлов и каталогов. В результате вы получаете каталог страниц; когда на одну из этих страниц попадает URL, она автоматически загружается.Аннулирование сессий на других устройствах в Laravel
Laravel предоставляет способ аннулирования ивыходаиз сеансов активного пользователя на других устройствах без аннулирования сеанса на текущем устройстве.
Как исправить ошибку 419 Page Expired/CSRF token mismatch
Использование CSRF-токенов добавляет дополнительный уровень безопасности, подтверждая, что запрос исходит от того же приложения, а не от вредоносного источника. Laravel обеспечивает встроенную защиту от CSRF-атак путём генерации и проверки CSRF-токенов.Record и Tuple в JavaScript
В этой статье мы рассмотрим готовящееся предложение Record / Tuple. Как их создавать, зачем их использовать и чем они отличаются от обычных объектов и массивов?Как хранить данные JSON в базе данных в Laravel (с примерами)
Хранение данных JSON в базе данных Laravel обеспечивает гибкое решение для управления динамическими атрибутами или неструктурированными данными.Варианты использования Web Storage API в HTML
Существуют различные способы использования веб-хранилищ в веб-приложениях. Front-end разработчики используют современный браузерный API веб-хранилища для создания более персонализированных, эффективных и отзывчивых веб-сайтов. В этой статье мы рассмотрим множество примеров использования, которые помогут вам создавать привлекательные веб-приложения.Как использовать отношение One-to-Many в Laravel
ОтношенияOne-to-Many— это наиболее распространённый тип отношений, используемый в Laravel Eloquent и ORM в целом.
Готовимся к переходу на Symfony 6.4 и Symfony 7.0
Symfony 6.4 и Symfony 7.0 будут выпущены одновременно в конце ноября 2023 года. В этой статье рассказывается об их различиях и о том, как выбрать оптимальную версию для своих проектов.Выпущена бета-версия Livewire v3
Калеб Порцио, выступая на конференции Laracon, только что выпустил официальную бета-версию Livewire v3! В своём выступлении он продемонстрировал множество новых возможностей, некоторые из которых мы рассмотрим здесь.Node.js: В чём разница между exports и module.exports
Вы знаете в чём разница между exports и module.exports в Node.js?Всё что нужно знать о HTTP протоколе
Узнайте всё, что нужно знать о HTTP протоколе, на котором работает вся сеть.Свойства API-интерфейса IntersectionObserver
Вчера мы рассмотрели, как определить, когда элемент входит или выходит из области просмотра. Сегодня мы познакомимся с некоторыми подробностями, которые можно получить об этих элементах из объекта IntersectionObserverEntry.Запуск команд в Laravel c использованием Процессов
В этом руководстве вы узнаете, как использовать фасад Laravel Process, построенный на основе высокоэффективного компонента Symfony Process, для выполнения команд вне среды Laravel.Как определить, когда элемент входит или выходит из области просмотра
API Intersection Observer можно использовать для наблюдения за элементом и запуска функции обратного вызова, когда он входит или выходит из области просмотра (или из другого элемента).Как установить MySQL сервер на Ubuntu Linux 22.04 LTS
Объясняем, как установить MySQL 8 сервер на Ubuntu linux 22.04 LTS с помощью APT, создать пользователей, базу данных и настроить сервер.Примитивные объекты в JavaScript: Когда их использовать (часть 2)
Во второй части цикла Кирилл рассматривает полезность примитивных объектов, изучая, как уменьшение их возможностей может быть полезно для вашего проекта.БЭМ vs SMACSS: Сравнение CSS методологий
Следование CSS методологии гарантирует, что все, кто участвует в процессе разработки, говорят на одном языке. БЭМ и SMACSS отличаются друг от друга, но имеют ряд уникальных преимуществ.Laravel: Погружение в CORS
Из этого руководства вы узнаете, как использовать возможности Laravel CORS. Узнайте, что это такое, и раскройте его потенциал для беспрепятственного совместного использования ресурсов из разных источников.Новые возможности и изменения в Laravel Livewire v3
В этой статье вы узнаете о некоторых важных возможностях, которые появятся в Laravel Livewire v3.20 функций PHP, которые вы должны знать в 2023 году
PHP постоянно развивается, и важно быть в курсе последних функций и улучшений. В этой статье представлены 20 функций PHP, которые вы должны знать в 2023 году, каждая из которых проиллюстрирована удобным примером кода.Mobile-First подход с HTML и CSS
В современном цифровом ландшафте подход, ориентированный на мобильные решения (mobile-first), приобрёл большое значение в веб-дизайне и разработке. Применяя подход mobile-first в HTML и CSS, вы отдаёте приоритет потребностям мобильных пользователей и обеспечиваете бесперебойную и увлекательную работу вашего сайта на небольших экранах. В этой статье мы расскажем о принципах и преимуществахmobile-firstдизайна и реализации конкретных стратегий в HTML и CSS, чтобы вы могли применить эту методику.
Руководство по сокрытию элементов в CSS
Мы изучим различные подходы к сокрытию элементов веб-страниц с помощью CSS и оценим их производительность.Использование CSS свойств object-fit и object-position
В статье объясняется и демонстрируется, как использовать два CSS свойства, которые могут помочь при создании отзывчивых макетов — object-fit и object-position.Руководство по использованию ts-reset для TypeScript
Пакет ts-reset решат ряд проблем с типами в TypeScript, подобно кнопке сброса CSS, чтобы избежать ошибок, вызванных ошибками типов.Laravel Pagination: Сохранение параметров запроса на второй странице
Одна из типичных проблем с пагинацией возникает, если у вас на странице есть несколько фильтров с GET-параметрами. Как сделать так, чтобы они не исчезали, когда пользователь переходит на страницу/?page=2?Больше контроля над выбором :nth-child() с синтаксисом of S
Предварительная фильтрация набора дочерних элементов перед применением c к ним логики An+B.PHP Enum: Руководство для начинающих
Давайте улучшим ваш код с помощью более безопасного способа программирования с использованием перечислений PHP, или enum. В этой статье вы узнаете о них всё, что нужно.Вложенность CSS
Одна из наших любимых функций CSS препроцессора теперь встроена в CSS: вложения правил стиля.API Аутентификация в Laravel
Когда речь идёт об аутентификации в Laravel, существует множество вариантов. Но что использовать, когда речь идёт об аутентификации вашего API?Создание движка шаблонов на PHP — Рендеринг и Эхо
Давайте создадим крошечный движок шаблонов для PHP! Эта статья будет посвящена рендерингу шаблона и отображению данных, которые можно экранировать с помощьюhtmlspecialchars().Понимание CSS медиа-запросов
В этой статье я расскажу о том, как лучше всего использовать CSS медиа-запросы для достижения отзывчивости сайта.Перенос паролей из легаси PHP приложения в Laravel
Для переноса легаси PHP приложения на Laravel, вероятно, потребуется кастомный драйвер хэширования.Рефакторинг CSS: техники для чистого и быстрого кода
В постоянно развивающемся мире веб-разработки, где CSS является ключевым элементом стиля, освоение техники рефакторинга CSS имеет решающее значение для создания эффективных и удобных в обслуживании таблиц стилей. Рефакторинг CSS позволяет оптимизировать код, устранить избыточность и повысить общее качество кода. Применение правильных техник может превратить запутанные таблицы стилей в хорошо организованный, модульный и легко обслуживаемый код. В этой статье мы расскажем вам о техниках рефакторинга CSS.Vim: Как изменить регистр при замене
Узнайте как изменить регистр текста внутри шаблона при замене в Vim.Что такое URL
URL-адреса встречаются повсюду. Мы используем их для доступа к веб-сайтам, отправки электронной почты, загрузки файлов и многого другого. Но что такое URL и как он работает? В этой статье мы рассмотрим анатомию URL, различные типы URL, способы кодирования и декодирования URL, разработку и отладку URL, а также некоторые советы по безопасности при использовании URL.Vim: Вставить совпавший шаблон
Используйте этот трюк для быстрого поиска и замены.Настройка и установка PostgreSQL с помощью Docker
В этой статье мы расскажем, как установить и запустить PostgreSQL с помощью Docker. Мы не будем вдаваться в подробности установки Docker, поэтому убедитесь, что он установлен и запущен в вашей системе.Vim: Оставайтесь в режиме поиска
Ищите быстрее в Vim благодаря улучшенному рабочему процессу.Руководство по семантическому HTML
Если вы новичок в веб-разработке, то, возможно, слышали термин "Семантический HTML" и задавались вопросом, что он означает. Проще говоря, Семантический HTML — это использование разметки HTML для передачи смысла содержимого веб-страницы, а не только её внешнего вида.Наследование в объектно-ориентированном программировании JavaScript
Наследование в объектно-ориентированном программировании (ООП) JavaScript — фундаментальная концепция, которая развивалась с течением времени, и в этой статье мы покажем, как она работает и как её использовать.Знакомство с примитивными объектами в JavaScript (первая часть)
В первой части серии Кирилл Мышкин рассказывает о некоторых аспектах JavaScript, помогающих приблизить объекты к примитивным значениям, что позволяет воспользоваться общими возможностями языка, которые обычно не ассоциируются с объектом, такими как сравнение и арифметические операторы.Vim: Повторить последнюю замену
В Vim есть несколько способов повторить последнюю замену.Понимание генераторов TypeScript
Функции-генераторы выглядят как обычные функции, но ведут себя немного иначе, позволяя приостановить и выполнить код в более поздний момент времени.Работа со сторонними сервисами в Laravel
Итак, чуть более двух лет назад я написал руководство о том, как работать со сторонними сервисами в Laravel. На сегодня это самая посещаемая страниц на моём сайте. Однако за последние два года всё изменилось, и я решил снова обратиться к этой теме.Vim: Подсчёт вхождений
Вы знаете быстрый способ подсчитать количество совпадений в тексте с шаблоном при помощи простого трюка Vim?Шпаргалка по Git командам: работа с ветками, репозиториями, историей
Ищете быстрый справочник по Git? Эта шпаргалка содержит все основные и продвинутые команды с практическими примерами для ежедневной работы с системой контроля версий.Хуки жизненного цикла в Laravel
Мы, как программисты, должны уметь разбивать большие и сложные задачи на более мелкие и простые в управлении фрагменты. Однако иногда оказывается, что с некоторыми из тех небольших повторяющихся фрагментов кода, которые мы извлекли, чтобы уменьшить дублирование (или по какой-то другой причине), приходится взаимодействовать по-разному в зависимости от некоторого внешнего контекста.Использование нескольких селекторов в методах селекторов JavaScript
Один из моих любимыхтрюковванильного JS заключается в том, что можно передать несколько селекторов в такие методы селектора JavaScript, как
Element.querySelector(), Element.querySelectorAll(), Element.closest() и Element.matches().Безопасный способ использования переменных .env в Laravel
При разработке в Laravel обращение к значениям конфигурации и конфиденциальной информации из файла .env — обычное дело. В этой статье мы рассмотрим важность использования вспомогательной функцииconfig() и почему при чтении значений следует избегать использования вспомогательной функции env().Генерация Laravel миграций из существующей базы данных
Одной из распространённых проблем при переносе легаси PHP-приложения на Laravel является создание миграции базы данных на основе существующей базы данных.Sass для веб-разработки
Написание CSS имеет решающее значение для создания красивых и функциональных веб-сайтов, но управление CSS может стать сложной задачей по мере роста размеров и сложности сайтов. Вот тут-то и появляются препроцессоры CSS, такие, как Sass. В этой статье вы познакомитесь с Sass и узнаете, как он может упростить рабочий процесс и помочь писать более эффективный и удобный код.Дженерики (универсальные типы) в TypeScript
Дженерики играют решающую роль в программировании, поскольку они позволяют создавать типобезопасные функции без предварительного указания точного типа, но допуская ограничения и проверки типов программистом. В этой статье представлена концепция дженериков, перечислены их преимущества и показано, как их использовать.Три причины изучить Laravel
Laravel стал одним из самых популярных PHP фреймворков благодаря своим обширным функциям, простоте использования и удобочитаемости. Это отличный выбор для веб-разработчиков, стремящихся создавать надёжные и масштабируемые приложения. Если вы всё ещё сомневаетесь, стоит ли делать решительный шаг, вот три веские причины изучить Laravel.Laravel: Условная валидация
При проверке форм или API запросов иногда правило для одного поля зависит от значений других полей. В этой статье я покажу четыре различных примера синтаксиса Laravel для достижения этой цели.CSS: Введение в контейнерные запросы
Контейнерные запросы позволяют стилизовать элементы в зависимости от доступного пространства. Они позволяют создавать устойчивые адаптивные компоненты.Отзывчивые CSS макеты без медиа-запросов
Узнайте, как Flexbox и Grid позволяют создавать плавно реагирующие макетные сетки без медиа-запросов.Основы TLS (Transport Layer Security)
Протокол защиты транспортного уровня (TLS) шифрует данные, отправляемые через Интернет, чтобы гарантировать, что перехватчики и хакеры не смогут увидеть, что вы передаёте, что особенно полезно для личной и конфиденциальной информации, такой как пароли, номера кредитных карт и личная переписка. В этой статье объясняется, что такое TLS, как он работает и почему его следует использовать.#[Override] в PHP 8.3
В PHP 8.3 появилась новая функция: атрибут#[Override]. Эта функция уже известна в других языках, но позвольте мне объяснить, если вы не знаете, что она делает.Делегирование событий и вложенные элементы
Сегодня я хотел бы поговорить о том, как обрабатывать вложенные элементы с делегированием событий.SQL-запросы: порядок выполнения и оптимизация обработки
Понимание порядка выполнения SQL-запросов необходимо для оптимизации работы с базами данных. От корректности построения запросов зависит скорость обработки информации и эффективность использования ресурсов. Знание последовательности операций помогает создавать производительные решения при работе с данными и существенно улучшать работу базы.JavaScript: Освоение оператора switch
Освойте оператор switch: более организованную и лаконичную альтернативу использования нескольких операторов if-else10 часто задаваемых вопросов по GraphQL
В этой статье мы ответим на десять часто задаваемых вопросов о GraphQL, включая разбиение на страницы, управления версиями GraphQL, пакетную загрузку, обработку кэша, загрузку файлов и многое другое.Как управлять часовыми поясами в PHP
Изучите основы использования часовых поясов в PHP и как сделать лучший выбор из набора функций предлагаемых PHP.TypeScript или JavaScript: Что выбрать, чтобы стать веб-разработчиком
Цель этой статьи — провести всестороннее сравнение TypeScript и JavaScript, чтобы помочь веб-разработчикам принять обоснованное решение о том, какой язык использовать для проектов.Как добавить администратора на сайт Laravel в продакшене
Добавление пользователя администратора на сайт в продакшене — одна из самых распространённых вещей, которые делаются при первом развёртывание Laravel проекта на сервере. В этой статье я покажу два способа сделать это.10 лучших SEO рекомендаций для веб-разработчиков
Вы создали замечательный веб-сайт, но как сделать так, чтобы люди могли найти его через поисковые системы? В этой статье мы рассмотрим 10 лучших рекомендаций, чтобы ваша статья не только выделялась, но и хорошо ранжировалась в поисковых системах.Создайте сервис контейнер на PHP — минимальный контейнер
В этой мини статье вы узнаете, как создать сервис контейнер для внедрения зависимостей в PHP. Я начну с самого простого контейнера, совместимого с PSR-11, а затем добавлю различные функции, пока у нас не получиться мощный контейнер общего назначения.7 причин не использовать генераторы статических сайтов
Генераторы статических сайтов (SSGs) популярны и предлагают множество преимуществ, но в этой статье обсуждаются причины, по которым они могут быть неподходящей заменой вашей системе управления контентом (CMS).7 причин использовать генератор статических сайтов
Является ли CSM излишней для вашего следующего приложения? Может ли генератор статических сайтов улучшить производительность, управление и безопасность? Узнайте о преимуществах использования SSG.Написание более чистого CSS кода с помощью БЭМ
Чистый и организованный код имеет решающее значение в современных веб-проектах, и разработчики постоянно ищут способы улучшить удобство сопровождения и организации кода. К счастью, для достижения этой цели существуют различные методы, включая популярную методологию Блок Элемент Модификатор (БЭМ), и в этой статье объясняется, как работает БЭМ и почему вы должны начать его применять.Введение в CSS Viewport (Область просмотра)
Новые viewport единицы измерения — интригующая и мощная функция, которую рассматривают для включения в CSS, и эта статья поможет узнать о них и о том, как ими пользоваться.Почему async/await больше, чем синтаксический сахар
Несмотря на то, что тысячи статей об async/await и Promise уже существуют, многие из них оставляют желать лучшего. Поэтому хочу написать свою статью на эту тему.Как исправить: Using $this when not in object context
Давайте разберёмся почему возникает ошибка 'Using $this when not in object context' и как её исправить.Ретроспектива Laravel: что изменилось с версии 5.8
Погрузитесь в историю Laravel. Если вы отдалились от Laravel, это подходящее место, чтобы возобновить своё путешествие.Выпущен первый Alpha релиз PHP 8.3
Первый альфа-релиз PHP 8.3 уже отмечен и доступен для загрузки и тестирования.Middleware обеспечивающее безопасность Laravel
Middleware не является чем-то новым, мы уже давно используем его для различных целей в наших приложениях, от аутентификации до авторизации и не только.Laravel: Как улучшить безопасность приложения с CSP
В этой статье мы рассмотрим, что такое CSP и что он даёт. Затем рассмотрим, как использовать пакет для добавления CSP в Laravel приложении. Также кратко рассмотрим несколько советов по упрощению добавления CSP в существующее приложение.Кликджекинг (UI redressing)
В этой статье мы объясним что такое кликджекинг, опишем распространённые примеры атак кликджекинга и обсудим, как защититься от этих атак.XSS: Внедрение висячей разметки
В этой статье мы рассмотрим внедрение висячей разметки, как работает типичный эксплойт и как предотвратить атаки висячей разметки.Vim: Дилемма swap и backup файлов
Рано или поздно вы заметите, что когда редактируете файлы, Vim создаёт файлы с именами вроде .filename.swp в том же месте, что и редактируемый файл. Эти файлы называются файлами подкачки.Слепая SQL-инъекция
В этой статье мы разберёмся, что такое слепая SQL-инъекция, объясним различные методы поиска и эксплуатации слепых SQL-инъекций.PHP Файберы: Что это такое и где их использовать
Файберы представленные в PHP представляют собой элегантный способ имитации параллельной работы. Узнайте больше о том, чем они отличаются от потоков и сопрограмм.Symfony 6.3 Добавлены новые возможности
Вышел Symfony 6.3. Как и для любого другого выпуска Symfony, наше обещание обратной совместимости применимо, и это означает, что вы сможете легко обновиться до версии 6.3, ничего не меняя в коде.Новое в Symfony 6.3 — Компонент Scheduler
Symfony 6.3 включает новый компонент Scheduler тесно интегрирующийся с компонентом Messenger для создания сообщений, которые должны обрабатываться несколько раз по заранее определённому расписанию.Проходя мимо Action классов в Laravel
За последний год подход, основанный на action классах, набирает популярность в мире Laravel. Я принял его довольно рано и был большим поклонником этого подхода.Как получить вошедшего в систему пользователя
Прочтите о разных подходах, которые можно использовать для получения аутентифицированного пользователя в Laravel проектах. В этой статье рассматривается результат проведённого в Twitter опроса.Новое в Symfony 6.3 — Интеграция Webhook с Mailer и Notifier
Symfony 6.3 обеспечивает полную интеграцию веб-хуков c Mailer и Notifier для абстрагирования от различий в обработке веб-хуков сторонних сервисов.Искусство записи Laravel Логов: Рекомендации и примеры
Laravel — популярный PHP-фреймворк обеспечивающий простой и элегантный способ создания веб-приложений. Одной из особенностей выделяющих Laravel, является его мощная и гибкая система ведения логов/логирование.CGI, FastCGI, php-fpm, nginx и Laravel
Если вы запускаете приложения PHP/Laravel в продакшене, есть большая вероятность, что вы используете некоторые из этих вещей:CGI, FastCGI, php-fpm, nginx и Laravel. Как разработчик, я считаю важным понимать хотя бы основы этих компонентов. Итак, давайте разбираться.Десять основных проблем аудита безопасности Laravel
Давайте углубимся и рассмотрим десять наиболее распространённых проблем безопасности, которые я обнаружил во время своих аудитов безопасности Laravel приложений.Новое в Symfony 6.3 — Компонент AssetMapper
Symfony 6.3 включает новый компонент AssetMapper с полной поддержкой карт импорта в качестве альтернативы Webpack Encore.Новое в Symfony 6.3 — Улучшения Dependency Injection
В Symfony 6.3 улучшен компонент Dependency Injection, добавлена поддержка автоподключения сервисов в виде замыканий и вызываемых методов, генерация адаптеров для функциональных интерфейсов.Laravel: Gate и Policy
Laravel — популярный PHP-фреймворк широко используемый в веб-разработке. Он поставляется со встроенной системой авторизации позволяющей определять контроль доступа для разных пользователей и ролей. Двумя основными компонентами системы авторизации Laravel являются Gate и Policy. В этой статье мы рассмотрим концепцию Gate и Policy Laravel и то, как использовать их для защиты веб-приложений.Laravel аналитика. Зачем и как я сделал свой пакет
Я использовал Google Analytics в течение нескольких лет, и она работала хорошо. Возникает вопрос, зачем я написал свой пакет аналитики.Value Object /Объект-Значение в Laravel
Как уменьшить количество багов, сделать личную и командную работу более эффективной и улучшить качество кода в целом — Объект-Значение один из подходов для достижения этого.Профилирование Сервис Контейнера Laravel
После профилирования сервис контейнера я узнал, что Laravel приложение создаёт десятки тысяч объектов, которые ему не нужны.Шпаргалка по часто используемым CSS селекторам
Шпаргалка по CSS селекторам. С подсказками, как выбирать HTML элементы по классу, имени, атрибутам и списку дочерних селекторов.Тригонометрические функции в CSS
В дополнение к математическим функциям CSS были добавлены тригонометрические функции sin(), cos(), tan(), asin(), acos(), atan() и atan2(). Эти функции определены в модулеЗначения и единицы измерения CSS уровня 4и доступны во всех браузерах.
Обработка исключений в Laravel: советы и рекомендации
Laravel — это популярный фреймворк, который обеспечивает простой и элегантный способ создания веб-приложений. Одной из особенностей, которая выделяет Laravel, является встроенная система обработки ошибок и исключений. В этой статье мы рассмотрим некоторые советы и рекомендации по эффективной обработке исключений в Laravel.Новое в Symfony 6.3 — Улучшения DX (Часть 3)
Symfony 6.3 улучшает ограничение Cascade, позволяя обрезать XML параметры, устанавливать службы в тестовом контейнере и улучшает обработку сигналов Console.Руководство по замыканиям и стрелочным функциям в PHP
Прочтите о разнице между замыканиями и стрелочными функциями в PHP. В этой статье рассказывается, что они из себя представляют, чем отличаются, и как вы можете использовать их в своём коде.Новое в Symfony 6.3 — Улучшения WebProfiler
Symfony 6.3 улучшает профилировщик с лучшей доступностью, динамическими иконками и кликабельными путями шаблона.Эффективное удаление старых строк с секционированием
Удаление сотен тысяч строк происходит медленно, влияет на производительность и не освобождает выделенное место на диске. Используя секционирование, вы можете сделать это очень быстро, освободив место на диске.Новое в Symfony 6.3 — Интеграция Notifier
Symfony 6.3 добавляет новые интеграции Notifier для Twitter, Mastodon, LINE, Pushover, PagerDuty и других.Новое в Symfony 6.3 — Улучшения DX (Часть 2)
Symfony 6.3 будет включать улучшения DX, такие, как обнаружение невидимых символов в VarDumper, улучшенный дамп YAML дат, параметры сборки сервис контейнера и потоковые JSON ответы.Настройка CSP в Laravel и Vite
В этой статье я покажу как настроить заголовки Content Security Policy с помощью Laravel и Vite. Предполагается, что у вас есть некоторый опыт работы с Laravel и Vite.Использование `declare(strict_types=1)` для повышения надёжности кода
Прочитайте о том, как вы можете использоватьdeclare(strict_types=1) для повышения безопасности типов PHP-кода. Мы обсудим, как сделать код более надёжным и избежать принудительного приведения типов, что может привести к ошибкам.Новое в Symfony 6.3 — Улучшения HttpClient
Symfony 6.3 улучшает HTTP-клиент с новым JsonMockResponse, множественными повторными URI, дополнительными настраиваемыми параметрами, улучшениями загрузки файлов и поддержкой шаблонов URI.Laravel Миграции: Как добавить индекс, если он, возможно, существует
Если вы хотите добавить индекс в Laravel миграции и не уверены, существует ли этот индекс, как убедиться, что при выполнении миграции не возникнет ошибок?Выполнение скриптов Python с помощью Shebang
В этом руководстве вы узнаете, когда и ка использовать строку shebang в скриптах Python для их исполнения из Unix-подобной оболочки.Vim: Сохранить всё сразу
Используйте :wa или :qa, чтобы записать всё сразу или закрыть Vim без записи данных.Безопасное обновление с PHP 7.4 до 8.1 с Rector
Если кратко изложить суть статьи, то она сводится к одному: Вам просто нужно попробовать Rector. Пусть тесты ломаются, просто запустите его.Новое в Symfony 6.3 — Улучшения DX (developer experience)
Symfony 6.3 включает улучшения DX (developer experience) в глобальной переменной app, компоненте YAML, профилировщике, пулах кэша и функциях дампа.Vim: Что такое set hidden
Используйте set hidden, чтобы разрешить скрытие несохранённых буферов в Vim.Новое в Symfony 6.3 — Улучшения Clock
Symfony 6.3 представляет новый класс Clock и новый ClockAwareTrait; от также интегрирует компонент Clock в другие функции Symfony.Как узнать какую версию Laravel вы используете
Важно узнать используемую версию Laravel, прежде чем начать писать код в новом проекте. Есть несколько способов, как узнать используемую версию Laravel.Новое в Symfony 6.3 — Компоненты Webhook и RemoteEvent
Symfony 6.3 представляет несколько новых компонентов, упрощающих создание и обработку веб-хуков в ваших приложениях.Как безопасно использовать Laravel Фасады
В документации по Laravel это не проясняется, что может сбить с толку новичков и привести к нежелательным ошибкам. Узнайте как избежать распространённой ошибки.Новое в Symfony 6.3 — Улучшения эмодзи
Symfony 6.3 добавляет новую функцию для удаления эмодзи из содержимого строки и возможность сжатия всех данных эмодзи для экономии места на диске.Laravel AaaS — Actions as a Service
Сейчас Action классы и Вызываемые Контроллеры горячая тема Laravel. В этой статье я объясню, почему считаю вызываемые контроллеры плохой идеей, и объясню архитектурный шаблон, который я создал и назвал AaaS.Laravel 10: Чтение JSON файлов
Узнайте, как использовать File::json() и Storage::json() в Laravel приложениях для чтения JSON файлов. Так же рассмотрим различия между этими методами и способы улучшения обработки ошибок.Улучшение Laravel шаблонов с Blade директивами
Узнайте как создавать собственные директивы Blade, для упрощения шаблонов Laravel Blade. В статье рассказывается, что такое директивы Blade, как они используются во фреймворке, и как создать собственную директиву.Внедрение PHP-CS-Fixer в легаси PHP-проекты
Если вы работаете над унаследованным PHP-проектом, какой может быть стратегия внедрения PHP-CS-Fixer, снижающая риск и приглашающая других разработчиков к сотрудничеству?Новое в Symfony 6.3 — Улучшения производительности
Symfony 6.3 улучшает производительность извлечения сообщений перевода, компиляции сервисного контейнера и нормализации/денормализации сериализатора.Vanilla JavaScript: Как работать с датами и временем
Объект Date в JavaScript представляет момент времени. Хотя у него есть полезные функции, работать с ним сложно. Мы рассмотрим, как создать новый объект Date и, надеюсь, сделать его немного проще в использовании.Новое в Symfony 6.3 — Сопоставитель параметров запроса
Symfony 6.3 включает новый атрибутMapQueryParameter для сопоставления и проверки отдельных параметров строки запроса с аргументами контроллера.CSS: Свойства трансформации translate, rotate и scale
Более детальный контроль над CSS трансформациями с помощью индивидуальных свойств трансформации элементов translate, rotate и scale.Новое в Symfony 6.3 — Улучшения login и logout
Symfony 6.3 позволяет перенаправлять пользователей после их программного логина, добавляет поддержку 'Запомнить меня' для JSON логинов и позволяет очищать данные сайта после выхода пользователя.Новое в Symfony 6.3 — Улучшения Перечислений
В Symfony 6.3 добавлена поддержка перечислений в выражениях, деревьях конфигурации и параметрах маршрута.PHP: Выполнение более строгих проверок
Эти более строгие проверки помогают писать более надёжный и предсказуемый код, выявлять ошибки на ранней стадии и избавиться от потенциальных головных болей в будущем. Хотя к некоторым из этих рефакторингов может потребоваться время для привыкания, они стоят усилий по улучшению качества кода.JavaScript: Что такое API и как с ним работать
Рассмотрим что такое API и зачем он нужен на примере небольшого магазина. По шагам напишем сценарий получающий данные из реального API и обрабатывающий их.Использование PHP Атрибутов для добавления значения
PHP Атрибуты были добавлены в PHP 8.0, и для многих разработчиков это было неверным названием. Каковы их преимущества и как их использовать?10 Функций JavaScript и TypeScript, которых я избегаю
Они не всегда являются проблемой. Но ими злоупотребляют, и их часто можно заменить лучшими альтернативами. Вот почему я избегаю их и что я делаю вместо этого...В чём разница между composer.json и composer.lock
В каждом Laravel/PHP проекте у вас будет два файла: composer.json и composer.lock. В чём разница между ними? Зачем нужен composer.lock, если есть composer.json.Vim: Установка плагинов
Хотя мы склоняемся к нативной функциональности Vim в этом списке, большинство опытных пользователей Vim в какой-то момент расширяют возможности Vim с помощью любого из тысяч доступных плагинов с открытым исходным кодом. Если вы не живёте и не дышите Vim, вы можете не знать, сколько существует способов установки и управления плагинами, включая встроенный метод, поставляемы с Vim 8.Новое в Symfony 6.3 — Улучшения Form
Symfony 6.3 улучшает обработку секунд в полях даты/времени, обновляет виджеты HTML 5 для даты/времени и позволяет настраивать параметры опции placeholder.Vim: Файлы шаблонов
Существует множество плагинов для сниппетов и шаблонов для Vim, но вы можете создавать шаблоны файлов без каких-либо плагинов, используя концепцию, которую в Vim называют скелетными файлами.Новое в Symfony 6.3 — Команда отладки сериализатора
Symfony 6.3 включает новую команду, которая выводит метаданные сериализатора заданного класса, чтобы помочь отладить любые проблемы с Serializer.Laravel: Как отложить задания и слушателей в транзакциях базы данных
Если у вас есть задания и слушатели, запускаемые в транзакциях базы данных, это может привести к несогласованности данных при откате транзакции. Узнайте как правильно обращаться с ними.Новое в Symfony 6.3 — Полезная нагрузка запроса
В Symfony 6.3 добавлен метод getPayload() к объекту Request для получения содержимого POST и/или содержимого тела запроса.Корпоративные менеджеры паролей
Во второй части нашей серии статей о менеджерах паролей рассматриваются технологии бизнес-уровня для обработки токенов API, учётных данных для входа и т.д.Новое в Symfony 6.3 — Обработчик токена OpenID Connect
Symfony 6.3 добавляет совместимость с серверами OpenID Connect с помощью двух новых обработчиков токенов OIDC.Менеджеры паролей: Какой выбрать
Первое руководство из серии менеджеров паролей, состоящей из двух частей, помогающих выбрать лучший способ управления своими учётными записями.Новое в Symfony 6.3 — Ограничение надёжности пароля
Symfony 6.3 включает средство проверки надёжности паролей, чтобы проверить, достигают ли данные пароли определённого уровня безопасности на основе их энтропии.SQL-инъекции: Исследование базы данных атаками
При эксплуатации уязвимостей SQL-инъекций часто необходимо собрать некоторую информацию о самой базе данных. Это включает тип и версию программного обеспечения базы данных, а также содержимое базы данных с точки зрения содержащихся в ней таблиц и столбцов.Laravel: Девять типичных ошибок новичков
Некоторое время назад я сделал серию на Youtube под названием Code Reviews. Из этой серии и других обзоров я собрал наиболее распространённые ошибки допускаемые в Laravel новичками.Расширение перечислений PHP 8.1 с помощью атрибутов
Атрибуты PHP, заимствованные из концепции аннотаций в других языках, могут добавить вашим перечислениям мощную функциональность.Новое в Symfony 6.3 — Преобразование целевых значений
Symfony 6.3 вводит новый атрибут ValueResolver для явного выбора преобразователя аргументов, для использования в аргументах контроллера.Архитектурный плагин Pest
С выходом PestPHP v2 мы можем тестировать архитектуру наших приложений. В этом руководстве мы рассмотрим как использовать этот плагин.Новое в Symfony 6.3 — Сопоставление данных Request с типизированными объектами
В Symfony 6.3 представлены два новых атрибута PHP для сопоставления данных входящего запроса Request с типизированными объектами, таким как DTO, и их автоматическая проверка.Продвинутый Laravel: Контракты и Реализации
Контракты и реализации — это мощные инструменты в Laravel, позволяющие определять стандартный интерфейс и писать код, который можно адаптировать к различным реализациям.Новое в Symfony 6.3 — Атрибуты исключений HTTP
Symfony 6.3 вводит два новых атрибута для настройки кода состояния, заголовков и уровня журнала ваших HTTP исключений.Нужно ли комментировать свой код?
При обсуждении комментирования кода некоторые разработчики говорят, что вы всегда должны писать комментарии. Другие говорят, что код должен быть достаточно чистым и комментироваться только в исключительных случаях. Давайте рассмотрим примеры.Новое в Symfony 6.3 — Ограничение NoSuspiciousCharacters
Symfony 6.3 включает новое ограничение NoSuspiciousCharacters, чтобы избежать spoofing атак, основанных на использовании символов, которые отличаются, но внешне выглядят одинаково.Новое в Symfony 6.3 — Early Hints
В Symfony 6.3 добавлена поддержка Early Hints, что позволяет браузерам загружать ресурсы, пока серверы всё ещё готовят ответ. Это значительно улучшает воспринимаемую производительность.Laravel 10: Пример CRUD с Tailwind CSS
В этом примере мы создадим CRUD интерфейс в Laravel 10 и будем использовать PHP 8.2+, Laravel 10, Laravel Breeze и текущую версию Tailwind CSS.Развёртывание Laravel приложения с GitHub Actions
В этой статье я подробно расскажу о том, как вы можете автоматизировать развёртывание Laravel приложения на VPS, разумеется, бесплатно.Клонирование readonly свойств в PHP 8.3
В PHP 8.3 добавлена возможность перезаписи значения readonly свойств при клонировании объекта. Не заблуждайтесь: вы не можете клонировать любой объект и перезаписывать его readonly значения из любого места. Эта функция касается только очень специфического (но важного) пограничного случая.SQL-инъекции: UNION атаки
Когда приложение уязвимо для SQL-инъекций и результат запроса возвращаются в ответах приложения, можно использовать ключевое слово UNION для извлечения данных из других таблиц базы данных. Это приводит к SQL-инъекции с UNION атакой.SQLi: Шпаргалка по SQL-инъекциям
Эта шпаргалка по SQL-инъекциям содержит примеры полезного синтаксиса, который можно использовать для различных задач, часто возникающих при выполнении атак с помощью SQL-инъекций.SQL-инъекция
В статье мы рассмотрим, что такое SQL-инъекции (SQLi), опишем несколько распространённых примеров, объясним, как находить и использовать различные виды уязвимостей SQL-инъекций, а также подведём итоги, как предотвратить SQL-инъекции.Null в Python: Понимание объекта Python NoneType
В этой статье вы узнаете оNoneType — объекте None, выполняющем роль null в Python. Этот объект представляет собой пустоту, и его можно использовать для обозначения параметров по умолчанию и даже для того, чтобы показать, когда у вас нет результата. None — инструмент, позволяющий делать все из ничего!Python: Идентичность и равенство объектов
В этом кратком и практическом руководстве вы узнаете, когда использовать операторы Python is, is not, == и !=. Вы увидите, что эти операторы сравнения делают под капотом, погрузитесь в некоторые особенности идентификации объекта и интернирования, а также определите пользовательский класс.Laravel: Моделирование бизнес процессов
Как разработчики, мы часто сопоставляем бизнес процессы с цифровыми процессам, от отправки электронного письма до чего-то довольно сложного. Давайте посмотрим, как взять более сложный процесс и написать чистый и элегантный код.CSS: Что такое color-mix() и как смешивать цвета
CSS функцияcolor-mix() появилась в Chrome 111. В этой статье объясняется, как использовать эту функцию для смешивания цветов в таблицах стилей.Laravel: Всё, что вы можете протестировать в приложении
Общая проблема при тестировании заключается не в том, как что-то протестировать, а в том, что вы можете протестировать. Я составил список всего, что мне нравиться тестировать в своих приложениях.Laravel: Поговорим о запросах формы / Form Request
Запросы формы наиболее известны тем, что переносят логику проверки из контроллеров в класс, который будет выполнять предварительную проверку. Они фантастические, и я постоянно опираюсь на них. Что ещё мы можем сделать с запросами форм?Laravel: Хелперы массива которые нужно знать
Laravel известен своей элегантностью, простотой и выразительностью. Одной из самых мощных возможностей Laravel являются хелперы. Хелперы массивов Laravel — важный инструмент для разработчиков, работающих с массивами данных.Laravel: Как написать хелпер
Хотите написать собственный хелпер в Laravel? Узнайте, как создавать собственные вспомогательные функции (хелперы) с помощью этого руководства.Laravel: Беспарольная аутентификация
Иногда мы не хотим, чтобы у пользователей были пароли. Иногда мы хотим отправить волшебную ссылку на адрес электронной почты пользователя, чтобы он кликнул по ней и получил доступ.Python: Виртуальные среды — это просто
Большинство новичков не знают, как настроить в Python среду разработки, соответствующую последним стандартам, используемым профессиональными программистами. В этом руководстве вы узнаете, как правильно создать полностью работающую среду разработки Python с использованием лучших отраслевых рекомендаций.Архитектурная концепция Laravel: Сервис Провайдеры
Сервис провайдеры это центральный узел начальной загрузки всех приложений Laravel. Ваше приложение, а также все основные службы загружаются через них.502 Bad Gateway Nginx: причины и исправление ошибки
Ошибка 502 Bad Gateway возникает при нарушении коммуникации между Nginx и вышестоящими сервисами. В руководстве анализируем пять основных причин: сбои серверных служб, перегрузку ресурсов, ошибки конфигурации, блокировки брандмауэром и проблемы прикладного кода. Для каждой причины приводим методы диагностики и конкретные команды восстановления.Что такое CSS маски и зачем они нужны
В мире дизайна маскирование — популярная техника достижения уникальных дизайнерских эффектов. Как дизайнер, я использовал его много раз, но редко использую в Интернете. Думаю, причина, по которой я не использую CSS маски, заключается в поддержке браузеров. Они частично поддерживаются в браузерах blink (Chrome и Edge) и полностью поддерживаются в Safari и Firefox.Laravel: Руководство по тестированию с Pest
Откройте для себя Pest, удобную среду тестирования Laravel. Узнайте как тестировать маршруты и модели Laravel с помощью примеров из этого руководства.Архитектурная концепция Laravel: Жизненный цикл запроса
Эта статья перевод страницы документации Laravel о жизненном цикле запроса и приложения обрабатывающего поступивший запрос от сервера.Основы Laravel: Структура каталогов приложения
Структура каталогов Laravel приложения предназначена для обеспечения отправной точки как для больших, так и для малых приложений.Laravel: Советы и рекомендации по работе с HTTP клиентом
Как веб-разработчикам, нам часто приходится взаимодействовать с API из Laravel приложений. HTTP-клиент Laravel, представленный в седьмой версии — удобная и интуитивно понятная оболочка для Guzzle HTTP библиотеки. В этой статье мы рассмотрим пять полезных приёмов работы с HTTP-клиентом Laravel, которые помогут сделать ваше разработку более эффективной и приятной.CSRF: Обход проверки токена
В этой статье мы разберёмся, что такое CSRF токены, как они защищают от CSRF атак и как потенциально можно обойти эту защиту.Tailwind CSS v 3.3: Новые возможности
Tailwind CSS v3.3 уже здесь — он содержит множество новых функций, о которых люди давно просили, и множество новых вещей, о которых вы даже не подозревали.Совместное использование правил PHPCS между проектами и командами
PHPCS — инструмент cli с открытым исходным кодом обнаруживающий нарушения стилей кода заданного стандарта кодирования, а также предоставляющий автоматические исправления для автоматически исправляемых правил.JavaScript: Полное руководство по обработке ошибок
В этом руководстве мы погрузимся в обработку ошибок JavaScript, чтобы вы могли выбрасывать исключения, обнаруживать и обрабатывать собственные ошибки.CORS и заголовок ответа Access-Control-Allow-Origin
В этой статье мы объясним, что такое заголовок ответа Access-Control-Allow-Origin в отношении CORS и как он является частью реализации CORS.JavaScript: Что такое Промисы / Promise
Разберёмся как создавать промисы и работать с ними в JavaScript. Рассмотрим цепочки промисов, обработку ошибок и некоторые из новых методов промисов, добавленных в язык.JavaScript: Delay, Sleep, Pause, & Wait
Многие языки программирования имеют функцию sleep, которая задерживает выполнение программы на заданное количество секунд. Однако эта функциональность отсутствует в JavaScript из-за его асинхронной природы. В этой статье мы рассмотрим почему это произошло, а затем как реализовать функцию sleep самостоятельно.JavaScript: Управление потоком
В этой статье мы подробно рассмотрим, как работать с асинхронным кодом в JavaScript. Мы начнём с обратных вызовов, перейдём к промисам и закончим более современными async/await. В каждом разделе будет предложен пример кода, изложены основные моменты, о которых следует знать.JavaScript: Введение в Fetch API
Как выглядит Fetch API, какие проблемы решает, и какой способ получения удалённых данных с помощью функции fetch() внутри веб-страницы наиболее практичен.JavaScript: Функциональное Выражение vs. Объявление Функции
В JavaScript есть два способа создания функции: функциональное выражение и объявление функции. Мы обсудим когда использовать функциональное выражение, а когда объявление и объясним различия между ними.Laravel: Загрузка файлов с помощью FilePond
При создании веб-приложения часто требуется добавить функцию, позволяющую пользователям загружать файлы. Например, вы можете разрешить пользователям обновлять изображения своего профиля или обмениваться файлами друг с другом.JavaScript: Руководство по async/await, с примерами
Ключевые слова async и await представляют современный синтаксис JavaScript, помогающий обрабатывать асинхронный операции. В этом руководстве мы подробно рассмотрим, как использовать async/await для управления потоком данных.JavaScript: Спасение из ада обратных вызовов
Ад обратного вызова реален. Разработчики часто рассматривают обратные вызовы как чистое зло, вплоть до того, что избегают их. Гибкость JavaScript совсем не помогает в этом. Но не обязательно избегать обратных вызовов. Хорошая новость в том, что есть простые шаги спасения от ада обратных вызовов.JavaScript: Что такое функции обратного вызова/Callback
Когда вы начинаете изучать JavaScript, вскоре услышите терминфункции обратного вызова. Обратные вызовы — неотъемлемая часть модели выполнения JavaScript, и важно понимать, что они из себя представляют и как работают.
Что такое CORS (Cross-origin resource sharing)
В этой статье мы объясним что такое CORS, опишем некоторые распространённые примеры атак основанных на CORS, и обсудим, как от них защититься.CSP: Политика безопасности контента
В этой статье мы объясним, что такое политика безопасности контента, и опишем как использовать CSP для защиты от некоторых распространённых атак.Eloquent: Примеры трейтов в Моделях
Трейты в PHP — мощный функционал позволяющий повторно использовать код в нескольких классах не повторяясь.OpenAI PHP Client. Документация
OpenAI PHP — поддерживаемый сообществом PHP API клиент, позволяющий взаимодействовать с Open AI API.Laravel: Классы Response
Ответ от Laravel приложения — это то, что я бы назвал жизненно важным, особенно когда вы создаёте API. Давайте посмотрим, как можно улучшить наши ответы.PHP: Добавьте ИИ в проект с помощью OpenAI
Начните использовать возможности ИИ уже сегодня. Он позволяет делать разработчикам невероятные вещи, и многие стартапы создают продукты на его основе.SOP: Что такое Same-origin policy
В этой статье мы разберёмся, что такое Same-origin policy (SOP) - Политика единого источника и как она реализована.Laravel: Погружение в Уведомления / Notifications
В большинстве Laravel приложений необходимо отправлять уведомления, будь то внутри приложения, по электронной почте или в slack — обычно это уведомления о транзакциях, чтобы предупредить пользователя о каком-либо действии или событии в вашем приложении. Давайте разберёмся, что это такое и как действует.Laravel: CI с GitHub Actions
GitHub Actions — фантастический способ запуска рабочих процессов Continuous Integration, от запуска тестов до статического анализа и многого другого.Eloquent: Аксессоры и Мутаторы в примерах
При работе с моделями часто нужно сделать что-то с данными до или после их сохранения в базе данных: изменить формат, обрезать пробелы, вырезать HTML-тэги и так далее.Laravel: Рекомендации на 2023 год. Полное руководство
Независимо от того, используете ли вы Laravel 10, 9 или 8, давайте рассмотрим рекомендации по улучшению кодовой базы в 2023 году.Laravel: Кэширование Eloquent — Что нужно знать
При работе с большими набора данных, которые сложно получить или они редко изменяются, для снижения нагрузки на базу данных мы можем использовать кэширование.PHP: Что такое Интерфейс
Что такое PHP-интерфейс? PHP интерфейс определяет контракт, который должен выполнить класс. Если PHP класс — это схема объектов, то интерфейс — это схема классов. Любой класс реализующий данный интерфейс, будет иметь одинаковое поведение с точки зрения того, что можно вызвать, как его можно вызвать и что будет возвращено.PHP: Что такое Класс
Как новичок в программировании, особенно в PHP, вы, возможно, слышали термины классы или объекты. Что такое PHP класс?PHP: Что такое функция
Важно понимать, что такое PHP функция. Мы разберём, что такое PHP функция, сколько существует PHP функций, и рассмотрим примеры PHP функций.Laravel: Сокращение дублирования кода
Дублирование кода — самая болезненная вещь для многих разработчиков, вы думаете, что решили проблему, но есть несколько случаев одной и той же проблемы.Laravel: События Модели
При работе с Моделями Eloquent обычно используют события, отправляемые в течении жизненного цикла Моделей. Есть несколько разных способов сделать это, и в этой статье я расскажу о них и объясню преимущества и недостатки каждого из них.Laravel: Data Transfer Objects — Зачем и Как
Data Transfer Object (DTO) — шаблон, который при правильном использовании может улучшить качество и удобство сопровождения приложения. В этой статье мы узнаем, зачем вы должны использовать DTO в своих приложениях и как это сделать в Laravel.Laravel: Управление маршрутами в большом приложении
Файлы маршрутов Laravel могут быть сильно загружены. Однажды вы замечаете, что нужно приложить усилия, для того чтобы найти что-нибудь. Как вы с этим боретесь?Как установить PHP 8.2 на Debian/Ubuntu
Подробное и краткое руководство по установке и обновлению PHP 8.2 в системах Debian и Ubuntu.PHP: Продление срока службы легаси приложений
PHP продолжает развиваться с новыми критическими изменениями, и хотя это отлично подходит для большинства PHP-приложений, существуют легаси/устаревшие приложения, которые не могут оправдать затрат на их поддержку. Это руководство о том, как продлить срок службы легаси приложений с помощью обновлений безопасности и обслуживания.CSRF: Обход защиты основанной на Referer
Помимо средств защиты, использующих CSRF токены, некоторые приложения используют HTTP-заголовок Referer, для попытки защититься от CSRF атак путём проверки того, что запрос исходит из собственного домена приложения. Как правило, этот подход менее эффективен и имеет обходные пути.XSS: Использование уязвимостей
Традиционный способ доказать, что вы обнаружили XSS уязвимость, — создать всплывающее окно с помощью функцииalert(). Это не потому, что XSS имеет какое-то отношение к всплывающим окнам; это просто способ доказать, что вы можете выполнять произвольный JavaScript в заданном домене. Вы могли заметить, что некоторые люди используют alert(document.domain). Это способ сделать явным демонстрацию на каком домене выполняется JavaScrip код.Laravel: Валидация данных приложения
Валидация обязательна для любого современного проекта, и в Laravel очень просто начать. Внутри методов контроллера вы можете вызвать метод, передать запрос и массив правил, на соответствие которыми хотите проверить данные.Laravel: Что такое Pipeline / Пайплайн
Pipeline/Пайплайн — одна из малоизвестных возможностей Laravel. Он часто используется в самом фреймворке, например, маршрутизация, но не так много разработчиков его используют. В этой статье я попытаюсь объяснить их и показать несколько примеров.Laravel: Объекты-Значения повсюду
В этой статье я хотел бы поговорить об объектах-значениях. Если вы не знаете, что это такое, вот краткое введение.Тестирование конечных точек JSON:API с PestPHP
JSON:API предоставляет множество возможностей для фильтрации, сортировки и включения дополнительных данных в запрошенные данные с использованием параметров запроса. Тестирование может быть утомительным, но в этом руководстве я расскажу, как подхожу к тестированию этих конечных точек c PestPHP.В чём разница между XSS и CSRF
В этой статье мы объясним различия между XSS и CSRF, и обсудим, могут ли токены CSRF предотвратить XSS атаки.Laravel API: Создание API
Создание API в Laravel — это искусство. Вы должны думать не только о доступе к данным и обёртывании Eloquent Моделей в конечные точки API.Laravel: DDD и Объект-Значение
Давайте разберёмся, что такое DDD? Что делает Объект-Значение и какие у него преимущества? Как и зачем их использовать в Laravel приложении.Laravel: Всё о контейнере внедрения зависимостей
В Laravel есть фантастический контейнер внедрения зависимостей, но многие избегают его. В этой статье я расскажу, как использовать контейнер Laravel, чтобы мой код работал на меня.Laravel: Как обрабатывать длительные задания
С длительными заданиями в Laravel сложно работать. К счастью, есть способы обойти эти проблемы. Давайте рассмотрим несколько решений.Laravel: Используем PHP Codesniffer
Давайте рассмотрим как установить и настроить PHP Codesniffer с новым Laravel проектом.Laravel API: Переопределение Сообщения об Ошибке 404
Если вы используете привязку модели к маршруту в API Контроллерах и запись не найдена, она автоматически вернёт статус код 404 с сообщением об ошибке, напримерNo query results for model [App\Models\User] 1. Как это изменить?
Laravel: Ошибки связанные с мутабельностью Carbon
Типичная ошибка, которую вижу у разработчиков: использование$date->addDays(1), а затем ещё одного $date->addYears(1) в том же запросе и получение неправильных результатов. Позвольте мне объяснить.Laravel: Как тестировать invokable правила
Laravel 9 представил новый способ создания пользовательских правил валидации: вызываемые правила (invokable rules). Это позволяет написать пользовательское правило валидации только с одним методом:__invoke.Eloquent: Оптимизация подсчёта Моделей по Отношениям
При подсчёте записей Модели, сгруппированных по типу в отношении, возникает соблазн загрузить в память слишком много запросов к БД или слишком много данных. Есть несколько способов оптимизировать его, давайте рассмотрим пример.Как предотвратить XSS атаку. Два уровня защиты
В этой стать мы опишем некоторые общепринятые принципы предотвращения XSS уязвимостей и способы использования различных распространённых технологий защиты от XSS атак.Laravel: Eloquent Наблюдатели не выполняются при массовых событиях
Если у вас есть события Наблюдателя для обновления или удаления записей, важно знать, что они выполняются только при обновлении отдельных записей, а не при массовом обновлении или удалении.Laravel: Как передать глобальные переменные в Blade.
Представьте, что вы хотите показать некиеглобальныеданные в Blade: например, количество новых пользователей на этой неделе в верхнем блоке навигации. Не знаете от каких контроллеров будут поступать данные? Вы можете выполнить это действие в Service Provider тремя способами.
Laravel: Eloquent упорядочивание по hasMany отношениям
Представьте, что вы хотите загрузить Модель со многими связанными моделями, но отсортировать эти связанные результаты по некоторому столбцу в этой связанной БД. Как это сделать? Давайте сделаем ещё веселее и возьмём пример двухуровневых отношений.Laravel 10: Что такое Processes / Процессы
Laravel представляет выразительный минимальный API для компонента Symfony Process, позволяющий удобно вызывать внешние процессы из приложения Laravel.Laravel 10: Фасад Process
В выходящем Laravel 10 будет представлен новый слой фасадов Process. Давайте посмотрим зачем он нужен и в чём его преимущества.PHP: Абстрактная Фабрика
Абстрактная фабрика — шаблон проектирования, предоставляющий интерфейс для создания семейств связанных или независимых объектов без указания конкретных классов.Map и Set в JavaScript: Руководство по структурам данных
Объекты и массивы — фундамент JavaScript, но для динамических коллекций и уникальных значений существуют более подходящие инструменты:Map, Set, WeakMap и WeakSet. Разбираемся, когда и зачем их использовать.JavaScript: Более безопасное чтение и запись URL
Создание и манипулирование URL-адресами в виде строк может казаться безопасным, пока не сложатся общие ошибки. Но у современного JavaScript есть решение для этого, Конструктор URL, делает чтение, запись и изменение URL-адресов более безопасным и чистым.Laravel 10: Стоит ли обновлять?
Давайте выясним действительно ли вам нужно обновлять своё приложение до Laravel 10? Или можно не спешить и сделать это в удобный момент?XSS: Контексты межсайтового скриптинга
Во время тестирования Отражённого или Сохранённого XSS ключевой задачей является определение контекста XSS: место, где появляются данные и обработка данных приложением.XSS: DOM-based XSS — Основанные на DOM XSS
В этой статье мы рассмотрим межсайтовый скриптинг на основе DOM (DOM XSS), выясним как найти уязвимости DOM XSS.XSS: Stored XSS — Сохранённые межсайтовые сценарии
В этой статье мы разберёмся что такое Сохранённые XSS (Stored XSS), рассмотрим влияние сохранённых XSS атак и объясним, как найти сохранённые XSS уязвимости.XSS: Reflected XSS — Отражённые межсайтовые сценарии
В этой статье мы рассмотрим отражённые межсайтовые сценарии, влияние отражённых XSS-атак и выясним как найти отражённые XSS-уязвимости.XSS: Межсайтовые сценарии
В этой статье мы объясним, что такое межсайтовые сценарии (XSS), опишем разновидности уязвимостей XSS и разъясним, как найти и предотвратить XSS.PHP: Зачем переносить фигурные скобки на новую строку
Фигурная скобка редко используется как знак препинания, но это один из самых распространённых символов в языках программирования.JavaScript: Руководство по localStorage
Cookie были единственным способом хранения временной и локальной информации, но теперь у нас есть localStorage. Он широко обсуждается и используется во множестве приложений JavaScript. В этой статье мы рассмотрим всё, что нужно знать о localStorage в JavaScript.Laravel 10: Руководство по обновлению
Перевод официального руководства по обновлению с Laravel 9 до Laravel 10. Примерное время обновления 10 минут.JavaScript: Новое событие scrollend
Удалите функции таймаута и избавьтесь от связанных с ними багов, вот событие которое действительно нужно:scrollend.Laravel: Стандартные ответы API с Responsable классами
Представьте работу приложения, в котором каждая конечная точка по-разному возвращает данные об успешных вызовах и вызовах с ошибками. Если это маленькое и простое приложение, поддерживаемое одним человеком, это может быть немного проще. Но если приложение начнёт расти и к команде присоединится больше людей, через некоторое время будет полный хаос для поддержки и улучшения приложения.PHP 8.3: gc_status дополнительная информацию о GC
С PHP версии 8.3 gc_status возвращает дополнительную информацию о сборщике мусора (GC).Laravel: Eloquent create() vs Query Builder insert()
Чтобы добавить запись в базу данных, вы можете использовать один из двух методов Eloquentcreate() или Query Builder insert().CSRF: Как предотвратить уязвимость
В этой статье мы рассмотрим какие есть средства защиты от CSRF уязвимости и как правильно их реализовать на своём сайте для предотвращения уязвимости.Laravel: Web и API — одинаковые или разные контроллеры?
Вы можете столкнуться с ситуацией, когда нужно вернуть одни и те же данные для web и для API. Должно ли это быть в одном или разных контроллерах? Есть несколько способов решения.Laravel: Как автоматически вернуть JSON для Eloquent
При работе с API часто требуется вернуть ответ Eloquent в формате JSON.CSRF: Подделка межсайтовых запросов
В этой статье мы объясним, что такое подделка межсайтовых запросов, опишем несколько примеров уязвимостей CSRF и разберём, как предотвратить CSRF атаку.PHP: Зачем следовать PSR-20
Недавно была выпущена спецификация PHP Standards Recommendation 20, призванная помочь разработчикам использовать общий интерфейс получения системных даты и времени. Это важная рекомендация, если вам необходимо протестировать PHP код, манипулирующий системной датой и временем.Laravel: 4 инструмента для статического анализа
За эти годы я научился пользоваться целым рядом удивительных инструментов используемых для разработки приложений на PHP и Laravel.Laravel: Внедрение зависимости и Сервис контейнер
В этой статье я расскажу о принципе внедрения зависимостей, так же известном как контейнер Inversion of Control (IoC). Расскажу как Laravel использует его внутри и предлагает эту концепцию разработчикам, чтобы их код был понятным и менее взаимозависимым.Laravel: Что такое Фасады и как они работают
Фасады, их любят или ненавидят. Но они естественная часть того, чем сегодня является Laravel. Фасады Laravel это не совсем фасады, не так ли?Laravel: Перенос проекта с Webpack на Vite
Vite — новый фронтенд инструмент для Laravel. Давайте посмотрим, как перенести Laravel проект с webpack на Vite.Laravel: Использование логов для отладки API
Недавно мы создавали Laravel API для мобильного приложения созданного отдельной командой. Когда пользователь сообщил о проблеме, одним из первых вопросов былЭта ошибка связана с API или мобильным приложением?В этой статье я поделюсь стратегией ведения лога, которую мы использовали для быстрого поиска причин проблемы.
Laravel: Как начать тестировать приложение
Из этой статьи вы узнаете, как легко начать автоматизированное тестирование в Laravel.Laravel: Применяем принципы SOLID
SOLID. Звучит по-научному, не так ли? Но это просто маркетинг. На самом деле это самая простая вещь во вселенной. Набор принципов популяризованных Робертом С. Мартином.Laravel Pint: Настройка базовой конфигурации
Laravel Pint — новинка от команды Laravel. Отличная оболочка для PHP CS Fixer, мой любимый инструмент для стандартизации кода.Laravel: Как работают транзакции базы данных
Продолжаем серию статей о происходящем под капотом, на этот раз о транзакциях базы данных в Laravel. Я не буду повторять всё о том, как вы можете использовать транзакции в Laravel. Если вы не знакомы с темой можете всё найти в официальной документации. Сейчас мы сосредоточимся на том, как эти реализации работают в фоновом режиме, что вызывало головную боль и как этого избежать. Итак, давайте разбираться.PHP: Разница между self::, static:: и parent::
В этой статье мы обсудим различия междуself::, static:: и parent:: в PHP. Также расскажем, когда и почему вы можете использовать каждый из них в своём коде.Коллекции Laravel
Узнайте, как использовать Коллекции Laravel для фильтрации, преобразования и оптимизации работы с данными. От основ (filter, map) до продвинутых техник: ленивые коллекции, макросы и операции сведения.TypeScript: Типы данных, аннотация и синонимы
В этой статье мы рассмотрим распространённые типы значений. Это не исчерпывающий список, и в следующих статьях мы рассмотрим другие способы именования и использования типов.Laravel: Параметры маршрута из нескольких слов
Все мы время от времени совершаем глупые ошибки. Я делюсь этим, чтобы избавить кого-то ещё от небольшого разочарования.Laravel Pint — средство исправления стиля кода
Долгожданный ажиотаж наконец-то закончился, Laravel выпустили консольное приложение с открытым исходным кодом и мы получили его в свои руки. Представляем Laravel Pint...Laravel: Где использовать middleware?
Если у вас есть Middleware, где его использовать: в файле маршрутов или в Контроллере? Рассмотрим четыре варианта.Laravel: Использование генераторов для пагинации
Давайте попробуем использовать генераторы для постраничного разбиения всех записей на примере PokeAPI.CSS единицы измерения: em и rem
Рассмотрим, что такоеem и rem, чем они отличаются, когда и как их использовать, и практические примеры использования.PHP: Редирект 301 и 302
Редиректы или перенаправления в PHP это просто. Мы рассмотрим их шаг за шагом и я покажу, как избежать некоторых ловушек. Мы узнаем нюансы между 301 и 302 перенаправлением.Laravel: Эффективный Eloquent
Приготовьтесь повысить уровень Laravel навыков с помощью этого руководства по запросам Eloquent! Вы узнаете всё, что вам нужно знать, от начальных до продвинутых техник.Laravel: Рефакторинг контроллера
В этом руководстве вы узнаете о некоторых способах рефакторинга контроллера и использовании сервисов, событий, action классов и многое другое.TypeScript: Выведение типа
TypeScript — типизированный язык. Однако необязательно указывать тип переменной. TypeScript выводит типы переменных, когда нет доступной явной информации в виде аннотации типов.TypeScript: Утверждение Типа
В этой статье мы разберёмся как TypeScript вывод и проверяет тип переменной, используя внутренний логический механизм, называемый Type Assertion - Утверждение Типа.Laravel: Преимущество минимальных фабрик
Фабрики Laravel значительно экономят время при написании тестов. Раньше я создавал фабрики, чтобы каждое свойство модели находилось в состоянии по умолчанию, но в последнее время я переключился на минимальные фабрики по умолчанию. Я объясню причины этого изменения и какие преимущества я обнаружил.Laravel: Три вещи, которые нужны для TDD
Тестирование или Разработка Через Тестирование (Test-Driven Development) важные и сложные темы программирования. Особенно сложным будет переход от простого написания тестов к TDD.TypeScript: 11 советов, которые улучшат ваши навыки
Изучение TypeScript часто является путешествием с повторными открытиями. Ваше первоначальное впечатление может быть довольно обманчивым: разве это не способ аннотации JavaScrip, чтобы компилятор помог найти потенциальные ошибки?JavaScript: Полное руководство по модулям в браузере и Node.js
Большинство языков программирования имеют концепцию модулей: способ определить функции в одном файле и использовать их в другом.Laravel 9: Ваше первое приложение
Если вы никогда не создавали Laravel приложение, позвольте показать вам пошаговое руководство по Laravel с нуля — без особых требований. Следуйте инструкциям, для изучения Laravel.Laravel: Правило валидации с периодом дат и несколькими полями
Недавно я прочитал сообщение на форуме Laracasts с вопросом о валидации периода даты. Решил написать эту статью с возможным решением.PHP: Разница между Трейтом, Интерфейсом и Абстрактным классом
Эти три структуры могут сбить с толку новичков в PHP или опытных разработчиков, поэтому давайте рассмотрим, что делает каждая из них и когда их лучше всего использовать.`require` vs `import` в JS: Руководство и сравнение
Ключевое словоimport используется для импорта привязок, которые экспортируются другим модулем, а функция require() используется для загрузки модуля в приложении Node.js. Эти два механизма похожи, но у них есть важные отличия о которых следует знать. Мы обсудим их в этой статье.mkcert: Полное руководство по HTTPS для локальной разработки
Устали от предупрежденийНебезопаснов браузере при локальной разработке? mkcert решает эту проблему за 5 минут. Это инструмент, который автоматически создаёт и устанавливает доверенные SSL-сертификаты для localhost и тестовых доменов, работая с Nginx, Apache и другими серверами.
PHP 7.4: Строгая типизация против Слабой
В PHP 5 ввели объявление типов (также известное как подсказки типов), которые позволяют функциям требовать, чтобы параметры имели определённый тип во время вызова. Если заданное значение имеет неправильный тип, то генерируется ошибка: в PHP 5 — исправимая фатальная ошибка, а в PHP 7 — исключение TypeError.Laravel: Все секреты миграции
Миграции необходимы в любом приложение Laravel, использующем базу данных. Я расскажу, что это такое, почему нужно их использовать и как их генерировать.Laravel 10: Дата выхода и новые возможности
Laravel 10 вышел 14 февраля 2023 года. Его разработка ещё продолжается. Давайте изучим новые функции о которых уже известно.PHP 8.3: Дополнение Randomizer
Этот RFC предлагает добавить новые методыстроительных блоковв
\Random\Randomizer, реализующие полезные операции, которые либо многословны, либо очень сложны для реализации в пользовательской среде.Laravel: Рекомендации на 2022 год. Полное руководство
Изучение фреймворка может быть ошеломляющим. Время и практика сделают вас мастером. Вот несколько рекомендаций, которые помогут вам в достижении цели.PHP 8.3: unserialize() обновление ошибки E_NOTICE до E_WARNING
PHP представляет функцииserialize() и unserialize() для сериализации любого значения PHP (строки, целые числа, объекты, NULL, массивы, перечисления и т. д.) и восстановление PHP-значения из этого строкового представления.PHP 8.3: Добавлена функция json_validate
В PHP 8.3 добавлена новая функция названаяjson_validate, возвращающая true или false в зависимости от того, является ли заданная строка допустимой JSON-строкой.Laravel: переносим Контроллер в Сервисный Класс с внедрением
В этой статье я покажу, как сократить Контроллеры с помощью Сервисных классов, а также различные способы инициализации и внедрения этого Сервиса.Laravel: Сервис Контейнер — что нужно знать новичкам
Сервис Контейнер (Контейнер Служб), пожалуй, одна из самых запутанных тем для новичков в Laravel. Официальная документация объясняет его хорошо, но с большим количествомтеоретических слов. Давайте приступим к практике, и я покажу основные практические примеры, которые вам нужно знать.
Laravel: Как работает cron и планировщик задач
Довольно часто я вижу людей, которые ищутcronв контексте Laravel. У фреймворка есть механизм работающий поверх
crontab в Linux, позвольте показать вам, как это работает.Laravel: Логирование в приложении
Чтобы помочь вам узнать больше что происходит в вашем приложении, Laravel предоставляет надёжные службы логирования. Логирование в Laravel основано наканалах. Каждый канал представляет определённый способ записи информации в лог.
Laravel: Использование DTO для сохранения контекста
DTO, или Domain Transfer Object, можно использовать для многих целей. С момента выпуска PHP 8 создание этих фантастических классов стало ещё проще.Laravel: Ваши контроллеры должны выглядеть так
Наведите порядок в контроллерах с помощью сервисных классовPHP: Это DTO или Объект-Значение?
Обычное недоразумение, это различие между DTO и Объект-Значение. И поэтому я искал способ классифицировать эти объекты без ошибок.PHP: Когда использовать трейт
Когда использовать трейт? Никогда. Для трейта всегда есть лучшая альтернатива. В любом случае на практике я всегда нахожу лучшие альтернативы трейту.PHP 8.2: Что нового. Изменения и новый функционал.
Релиз PHP 8.2 запланирован на 8 декабря 2022 года. В этой статье мы рассмотрим новые возможности, улучшения производительности, изменения и что объявлено устаревшим.PHP 8.2: Readonly-классы / классы только для чтения
В PHP 8.2 введён новый способ объявления классов: readonly-классы. Поскольку readonly-классы — просто синтаксический сахар для того, что бы сделать все свойства класса доступными только для чтения, это означает, что те же правила применяются и к readonly-классам.PHP 8.1: Клонирование и изменение readonly-свойств
В PHP 8.1 введены readonly-свойства. Они избавляют от множества проблем, но и добавляют новую — запрет на переопределение readonly-свойств клонированного объекта. Давайте разберёмся с решением этой проблемы и найдём обходной путь.PHP 8.1: Readonly-свойства / свойства только для чтения
PHP 8.1 решает несколько проблем, вводя ключевое слово readonly. Это ключевое слово делает то, что предполагает его название: как только свойство установлено, оно больше не может быть изменено.PHP 8.0 и 8.1: Объяснение современных возможностей
С момента выхода, в конце 2020 года, PHP 8 изменил правила игры. В этом руководстве я рассмотрю все последние нововведения с реальными примерами того, как я могу их использовать.Laravel: 20 полезных советов
Итак, я решил составить список из 20 моих любимых советов, которые я размещал в своих аккаунтах в соцсетях, чтобы все могли познакомиться с ними. Они не размещены в каком-то определённом порядке, но я надеюсь, что вы найдёте хотя бы один новый совет, который окажется полезным.Топ-5 генераторов статических сайтов в 2022
Многие страницы сайтов динамические. Это означает, что содержимое страницы может меняться от сеанса к сеансу в зависимости от того, кто её загружает, вошёл ли он в систему или вышел, а также от ряда других факторов. Если ваш сайт этого не делает, значит, вы имеете дело со статическими страницами.JavaScript: Понимание асинхронных вызовов
При написании кода для web, в конечном итоге вам требуется выполнить некий процесс, который может занять несколько минут. JavaScript не может работать в многозадачном режиме, поэтому нам нужен способ обработки этих длительных процессов.Как преобразовать Node.js Buffer в String
При преобразовании между Buffer и String может быть указана кодировка символов. Если кодировка не указана, по умолчанию будет использоваться UTF-8Laravel: Создание драйвера для Laravel Socialite
Laravel Socialite — официальный пакет Laravel для аутентификации у провайдеров OAuth. Он поддерживает аутентификацию с помощью Facebook, Twitter, LinkedIn, Google, GitHub и Bitbucket. Но что, если вы хотите использовать другой драйвер?Сравнение Node.js с JavaScript в браузере
Способность понимать Node по-прежнему остаётся важным навыком, если вы фронтэнд разработчик. Deno появился как ещё один способ запуска JavaScript вне браузера, но огромная экосистема инструментов и программного обеспечения Node, означают, что в ближайшее время он никуда не денется.Зачем нужны веб-фреймворки. Ванильная Альтернатива.
Во второй части рассмотрим несколько примеров непосредственного использования веб-платформы в качестве альтернативы некоторым решениям, предлагаемым фреймворкамиЗачем нужны веб-фреймворки и как обойтись без них
В этой статье подробно рассматривается несколько технических возможностей, которые являются общими для всех фреймворков. Объясняется как они реализуются в различных фреймворках и какова стоимость их применения.JavaScript: Проверка формы с Constraint Validation API
Проверка формы — одна из основных причин использования клиентского JavaScript. Это может предотвратить ошибки ввода пользователя до того, как выше приложение попытается отправить данные на сервер.Возможности ES2022: блоки статической инициализации класса
Для настройки статической части класса у нас есть только статические поля. Предложение ECMAScript вводит статические блоки инициализации для классов, которые, грубо говоря, являются для статических классов тем же, чем конструкторы являются для экземпляров.Tailwind CSS v3.0: 10 лучших новых возможностей
Я продемонстрирую 10 лучших функций, предлагаемых в Tailwind CSS v3.0, чтобы вы могли начать использовать их и улучшать свой опыт фронтэнд разработки.Symfony: лучший способ быстрого запуска проектов
При создании новых проектов Symfony вы можете начать с bare-bones skeleton или kitchen sink skeleton. Я никогда не использовал kitchen sink skeleton, так как предпочитаю начинать с минимального количества зависимостей и добавлять пакеты только тогда, когда они мне нужны. Symfony делает это безболезненным, так как в большинстве случаев сообщает, какой пакет добавить, когда вы пытаетесь использовать что-то, что ещё не входит в ваш набор зависимостей.Laravel: подключение Tailwind CSS 3
Настройка Tailwind CSS 3 в проекте Laravel, перевод официальной документации Tailwind.Laravel: подключение Tailwind CSS 2
В статье мы кратко рассмотрим, что такое Tailwind CSS и почему я считаю его полезным. Затем мы рассмотрим два разных способа настройки Tailwind в Laravel проектах.JavaScript: Глубокое копирование и structuredClone
Долгое время приходилось прибегать к обходным путям и библиотекам для создания глубокой/deep копии значения JavaScript. Появилась поддержка глубокого копирования встроенной функцийstructuredClone().Laravel: Получение информации о пользователе
При разработке веб-приложения может возникнуть ситуация, когда вам нужно узнать некоторую информацию о браузере и операционной системе вашего пользователя. В этой статье мы рассмотрим как это сделать.JavaScript: Неизменность / Иммутабельность строк
Я вижу много путаницы в отношении неизменяемости/иммутабельности строк и подумал, что сделаю всё возможно, чтобы прояснить, что это значит для запутавшихся.Laravel: Чистка контроллеров
Контроллеры играют огромную роль в любом проекте основанном на MVC (Model View Controller). По сути, они являются "клеем", который принимает пользовательский запрос, выполняет какую-то логику, а затем возвращает ответ. Если вы когда-либо работали над какими-либо довольно большими проектами, вы замечали, что у вас много контроллеров, и они могут довольно быстро начать превращаться в бардак. В этой статье мы рассмотрим, как можно очистить раздутый контроллер в Laravel.Laravel: Создаём страницы ошибок
Стандартные страницы ошибок в Laravel выглядят немного ужасно. В этой статье я покажу, как настроить страницы ошибок. К счастью для нас, в Laravel это очень просто. Мы создадим страницы для 404, 500 и 503 ошибок.Как обновить опубликованный пакет npm
Предположим, что мы сделали обновление, ноnpm publish выдаёт ошибку. Как исправить ошибку: "You cannot publish over the previously published versions"Laravel: Использование транзакций
В веб-разработке важны целостность и точность данных. Поэтому необходимо быть уверенным, что мы пишем код, который безопасно хранит, обновляет и удаляет данные в наших базах данных. В этой статье мы рассмотрим, что такое транзакции базы данных, почему они важны и как начать их использовать в Laravel. Мы так же рассмотрим типичные проблемы связанные с заданиями в очереди и транзакциями баз данных.PHP: Интерфейсы vs Абстрактные классы
Недавно я опубликовал статью об улучшении PHP кода с помощью интерфейсов. Она охватывает основы того что такое интерфейс, что он может делать. И как вы можете использовать его сделав свой PHP код более расширяемым и поддерживаемым. Один из вопросов, заданных в комментариях к статье был от разработчиков, которые хотели знать "когда я должен использовать интерфейс вместо абстрактного класса?". Я подумал и решил написать статью, что бы объяснить различия между абстрактными классами и интерфейсами в PHP и дать краткий обзор того, когда вы должны использовать каждый из них.PHP: Используем Интерфейсы для улучшения кода
В программировании важно убедится, что ваш код легко читается, поддерживается, расширяется и тестируется. Один из способов улучшить эти факторы — использовать интерфейсы.Laravel: Как создать функцию хелпер
Хелперы могут быть полезны в ваших Laravel проектах. Они помогают упростить код в проекте простым и понятным способом. В Laravel есть множество встроенных хелперов.Два умных способа организации структуры Sass
В зависимости от размера проекта над которым вы работаете, вы можете структурировать Sass двумя способами: простым для небольших и более сложным для крупных проектов.Git: Руководство по исправлению ошибок (Часть 2)
Ошибки. Эти жестокие злодеи не останавливаются даже на прекрасном мире разработки программного обеспечения. Мы не можем избежать ошибок, но мы можем научиться их исправлять! В этой статье будут рассмотрены инструменты, подходящие для повседневной работы с Git.Git: Руководство по исправлению ошибок (Часть 1)
Независимо от того, насколько вы опытны, ошибки - неизбежная часть разработки программного обеспечения. Но мы можем научиться исправлять их! И это то, что мы рассмотрим в этой серии из двух частей: Руководства по исправлению ошибок с помощью Git.Рассмотрим Tailwind CSS
В этом году было много шумихи вокруг популярного CSS фреймворка Tailwind. Хочу поделиться мыслями и опасениями по поводу UI этого фреймворка. У меня был небольшой опыт написания utility-first CSS кода, когда я начинал свою карьеру во фронтенде несколько лет назад.JavaScript: Четыре хитрых концепции в одной строке
На днях коллега подошёл ко мне со строкой кода, которую нашёл на StackOverflow, и спросил, как это работает. И я подумал, что это отличный пример четырёх концепций от среднего до продвинутого уровня JavaScript, поэтому решил записать и обосновать своё объяснение.HTML: Семь интересных атрибутов
Семь редко используемых HTML атрибутов, о которых вы возможно не знали.Введение в деструктуризацию массивов в ES6
Деструктуризация в JavaScript — упрощённый метод извлечения нескольких свойств из массива путём извлечения структуры и разложения её на составные части с помощью присваивания, используя синтаксис, похожий на литералы массива.Объяснение JSON простым языком
Долгое время XML был предпочтительным форматом данных для обмена между двумя точками. Затем, в начале 2000 года, был представлена JSON как альтернативный формат данных для обмена информацией. В этой статье вы узнаете всё о JSON. Вы поймёте, что это такое, как им пользоваться, и мы проясним несколько заблуждений.Защитный CSS — коллекция сниппетов
Часто хочется, чтобы был способ избежать возникновения определённой проблемы или поведения CSS. Вы знаете, что контент динамический, и на веб-странице всё может измениться, что увеличивает вероятность возникновения проблемы с CSS или странного поведения.JavaScript: Что такое hoisting
В JavaScript hoisting позволяет использовать функции и переменные до их объявления. В этой статье мы узнаем что такое hoisting, и как он работает.CSS: Современные селекторы псевдоклассов
Проект черновика рабочей группы CSS для Selectors Level 4 включает несколько селекторов псевдоклассов, которые уже поддерживаются в большинстве современных браузеров. В этом руководстве будут рассмотрены те из них, которые имеют наилучшую поддержку, а так же приведены примеры, демонстрирующие как вы можете их использовать уже сейчас.Новое в Symfony 5.4: Различные улучшения (часть 3)
Улучшения в Symfony 5.4: более длинные интервалы для компонента RateLimiter; простой способ создания ошибок в компоненте Validator; блокировка файлов при добавлении данных в методе Filesystem; экстрактор метаданных PhpStan для компонента PropertyInfoНовое в Symfony 5.4: Различные улучшения (часть 2)
Улучшения в Symfony 5.4: настраиваемый статус-код HTTP для шаблонов из маршрутов; новый метод innerText() в компоненте DomCrawler; рекурсивная поддержка .gitignore в компоненте Finder, и новая команда для отладки переменных окружения.Новое в Symfony 5.4: Различные улучшения (часть 1)
Новые улучшения в Symfony 5.4: Строгий режим для ресурсов, улучшения страницы ошибок, исключения каталогов для линтера yaml, новый нулевой класс ULID и новые строковые функции.Новое в Symfony 5.4: Улучшения сериализатора
Symfony 5.4 вышел несколько дней назад, но у нас ещё есть записи в блоге об улучшениях основных функций ожидающие своей публикации. В этой публикации мы расскажем об улучшениях добавленных в компонент Serializer.Новое в Symfony 5.4: Улучшения профилировщика
Помимо переработанной панели логов, Symfony 5.4 включает другие улучшения связанные с профилировщиком Symfony.Новое в Symfony 5.4: Улучшения компонента Messenger
В Symfony версии 5.4 значительно улучшили компонент Messenger, теперь можно любой класс назначить обработчиком компонента, стало проще получать метаданные воркера и появилась обработка сообщений в пакетном режиме.Symfony: Обновление основной версии (c 5.4.0 до 6.0.0)
Каждые два года Symfony выпускает новый релиз основной/мажорной версии (изменяется первый номер). Эти выпуски довольно сложно обновить, поскольку они могут нарушать обратную совместимость. Однако, Symfony максимально упрощает процесс обновления. Это означает, что вы можете обновить большую часть своего кода до того, как основная версия будет выпущена в релиз. Это называется "сделать ваш код совместимым с будущим релизом".CSS: Соотношение сторон или aspect-ratio
Важно иметь постоянное соотношение ширины и высоты изображений и других отзывчивых элементов. Мы много лет использовали в CSS хак с отступами, но сейчас у нас есть встроенная поддержка соотношения сторон в CSS. В этой статье я расскажу, что такое соотношение сторон, как мы его использовали и как это делать по-новому. Конечно, будут варианты использования с подходящими запасными вариантами.CSS: Пропорциональное масштабирование с css-переменными
В этой статье я хочу поделиться, тем что я делаю при CSS масштабировании элементов в DevTools браузера.CSS: Отзывчивые макеты, меньше CSS медиа запросов
Мы не можем говорить о веб-разработке, не упоминая Отзывчивый Дизайн. В наши дни это просто данность, и так было уже много лет. Медиа запросы — часть отзывчивого дизайна, и они никуда не денутся. С момента появления медиа-запросов (буквально десятилетия назад) CSS эволюционировал до такой степени, что существует множество трюков, которые могут нам помочь существенно сократить количество медиа-запросов. В некоторых случая я покажу вам, как заменить несколько медиа-запросов только одним CSS объявлением. Эти подходы могут привести к уменьшению объёма кода, упрощению обслуживания и большей степени привязаны к имеющемуся контенту.Прилипающие CSS Grid элементы
Если вы когда-нибудь пытались разместить прилипающий элемент в макетной сетке grid и наблюдали, как элемент прокручивается вместе с остальным содержимым, вы могли прийти к выводу, чтоposition: sticky не работает с CSS Grid.Объяснение Git: Диапазоны коммитов
Команды Gitlog и diff полезны для проверки изменений вашего репозитория. Обе команды принимают диапазоны коммитов в разных форматах, что может сбивать с толку. В этой статье я пролью свет на различия между диапазонами коммитов a b, a..b, a...b.Объяснение Git: Переписывание истории
Не бойтесь команд Git, меняющих историю, а вместо этого воспользуйтесь ими.CSS с селекторами атрибутов
Откройте возможности селекторов атрибутов CSS, их синтаксис и практическое применение, включая стилизацию по значению, состоянию и пользовательским атрибутам данных.CSS: Анимация подчёркивания ссылок
Анимированное подчёркивание ссылок на чистом CSS: от центра, слева, справа. Без JavaScript и лишней разметки. Разбор кода, подводные камни и примеры.Цвета CSS: Полное руководство по RGB, HSL, LCH, LAB и HWB моделям
CSS предлагает разнообразные методы работы с цветом, от классических моделей RGB и HSL до современных LCH и LAB. Это руководство охватывает все актуальные цветовые функции CSS, их практическое применение в дизайн-системах, особенности браузерной поддержки и перспективные возможности стандарта.Vim: Стань HTML-ниндзя с Emmet
Мы рассмотрим несколько возможностей Emmet плагина для vim на конкретных примерах, и к концу этой статьи вы будете выдавать html-код, как по волшебству, и вам будет интересно узнать больше!Семь вещей о Vim, которые нужно знать
В этой статье я хотел бы объяснить некоторые вещи о Vim, которые большинство людей не знают. От причин, по которым он был разработан таким, какой он есть. До некоторых замечательных скрытых функций, которые вы, вероятно, (ещё) не используете.Gulp 4: Сквозные исходные потоки
Ещё одно приятное дополнение кvinyl-fs, которое появилось в Gulp 4 – это возможность иметь 'сквозные' исходные потоки. Оно делает gulp.src доступным для записи.