Статьи
Директива 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 они будут удалены. Рассмотрим, почему принято такое решение, как это затронет ваш код и как подготовиться к переходу.