Публикации за 2020 год
14 материаловИменованные аргументы PHP 8: удобство и новый контракт функции
Когда именованные аргументы PHP 8 делают вызов понятнее и почему переименование параметра может сломать совместимость.
LinuxNginx перед приложением: проверяем reverse proxy по шагам
Проверяем локальное приложение и Nginx по отдельности, разбираемся с proxy_pass и ошибкой 502.
PostgreSQLКак читать EXPLAIN ANALYZE и BUFFERS без догадок
Как читать дерево плана PostgreSQL, сравнивать оценки с фактом и понимать показания BUFFERS.
JavaScriptPromise.allSettled: независимые результаты без потери всей страницы
Показываем частично загруженную страницу через Promise.allSettled и обрабатываем отказ каждого запроса отдельно.
LinuxРаботает вручную, но не в cron: проверяем окружение
Почему скрипт работает из терминала, но не из cron: пути, пользователь, рабочий каталог и вывод ошибок.
JavaScriptFormData: что попадает в отправляемую форму
Какие поля попадают в FormData и почему Content-Type с multipart boundary лучше оставить браузеру.
LinuxРотация файлового журнала: конфиг logrotate и переоткрытие
Настраиваем logrotate для текстового журнала и проверяем, что после ротации приложение пишет в новый файл.
MySQLСоставной индекс MySQL: порядок колонок начинается с запроса
Подбираем составной индекс MySQL под фильтр и сортировку списка заказов и проверяем его через EXPLAIN.
PHPstrict_types в PHP: почему важен файл вызывающего кода
Где действует strict_types в PHP и почему проверка пользовательского ввода всё равно нужна.
PostgreSQLUPSERT для счётчика: конфликт должен иметь явный ключ
Увеличиваем счётчик через INSERT ON CONFLICT и отличаем конкурентный запрос от повторной доставки события.
