position: sticky не работает — где искать причину
Как диагностировать прилипание элемента при прокрутке и устранить ошибки в разметке или стилях
Connection refused и timed out: что говорит текст ошибки
Почему возникает отказ соединения и как отличить его от других сетевых ошибок
Пул соединений: то их слишком много, то ни одного
Как распознать и устранить три типа отказов базы данных по поведению приложения и настройкам соединений
Стиль не применяется: кто победил в каскаде
Как диагностировать и исправлять проблемы с неприменяемыми стилями в CSS пошагово и без ошибок
z-index растёт, а элемент всё равно внизу
Как работают контексты наложения и почему z-index иногда игнорирует даже огромные числа
Место на диске кончилось, а удалять нечего
Как быстро найти и устранить причину нехватки места на диске без лишних удалений и перезагрузок
Логи на сервере: почему в них «ничего нет»
Как определить местонахождение логов сервиса и проверить права доступа для их чтения
Flexbox или Grid: как выбрать раскладку
Как выбрать между Flexbox и Grid для разных элементов интерфейса и эффективно совмещать их в одном макете
SSH отклоняет ключ: где искать причину
Как правильно настроить права на файлы и каталоги, чтобы SSH-сервер не игнорировал ключи
Core Web Vitals: что действительно двигает оценку
Как устранить задержки при взаимодействии со страницей и сделать её отзывчивой для пользователей
HTTPS с нуля: сертификат, перенаправление, проверка
Как настроить HTTPS без ошибок и обеспечить безопасное соединение для всех пользователей сайта
REST API: что решить до первого маршрута
Как правильно структурировать данные в API, чтобы избежать дублирования и упростить поддержку
С каких тестов начинать, если их нет совсем
Как превратить баги в тесты и защититься от их повторного появления
Ответ модели плохой: что менять в запросе
Как получить от модели точный и полезный ответ вместо общих фраз и неструктурированных данных
Отладка: как искать причину, а не симптом
Как задавать правильные вопросы системе, чтобы быстро находить корень проблемы
Постраничная выдача: смещение против курсора
Как избежать проблем с пагинацией и ускорить запросы к большим наборам данных
Разбор инцидента: как написать так, чтобы его прочитали
Как написать постмортем, который действительно помогает избежать повторения ошибок и экономит время команде
UUID или автоинкремент: чем платят за каждый
Как выбрать первичный ключ для базы данных и избежать проблем с производительностью и масштабированием
Валидация форм: на клиенте, на сервере или везде
Как сделать валидацию удобной для пользователя и безопасной для системы без лишних ошибок и путаницы
Картинки на сайте: форматы, размеры и ленивая загрузка
Как уменьшить вес изображений на сайте и ускорить загрузку страниц без потери качества
Сервер тормозит: команды первой минуты
Как быстро определить нехватку ресурсов и найти причину тормозов сервера за минуту
Индексы в базе: какие ставить и когда они не спасают
Как индексы ускоряют запросы и почему иногда не работают несмотря на все усилия
Резервные копии: проверяем восстановление, а не наличие
Как настроить резервное копирование, чтобы данные всегда восстанавливались быстро и без потерь
Мониторинг с нуля: что включить в первую неделю
Как медленные ответы делают сервис непригодным и как вовремя заметить проблему до жалоб клиентов
Заголовки безопасности: какие ставить и что они ломают
Что ломается при неправильной настройке заголовков безопасности и как этого избежать
Срочный фикс в master, когда в dev лежит несделанное
Как выкатить срочный фикс в продакшен без риска сломать систему незавершённым кодом
Миграции базы без простоя: порядок, который работает
Как сделать так, чтобы приложение работало с базой во время любых изменений схемы
502 и 504: кто именно не ответил и что чинить
Как диагностировать и устранять ошибки 502 и 504, чтобы восстановить работу серверной инфраструктуры
Пароли пользователей: как хранить и что проверить сегодня
Как определить уязвимости в хранении паролей и быстро исправить их в своём проекте
Кеширование по HTTP: заголовки, которые действительно работают
Срок годности и проверка — разные механизмы, и путают их чаще всего
Память течёт: как найти и чем мерить
Порядок действий, который доводит до причины, и порядок, который нет
Время в приложении: где оно ломается
Под одним словом прячутся момент, местное время и намерение на будущее. Путаница между ними двигает встречи и ломает суточные отчёты.
Сертификат истёк: почему это повторяется
Почему напоминание в календаре не спасает и чем его заменить
Браузерные тесты: что автоматизировать, а что оставить руками
Что проверять браузером, что оставить глазам и как пережить с этим полгода
Регулярное выражение, которое можно поддерживать
Выражение пишут один раз, а читают годами. Что делает его поддерживаемым и где регулярные выражения — неправильный инструмент.
Скрипт на shell, который не сломается
Shell по умолчанию продолжает работу после ошибки. Четыре строки в начале файла переводят скрипт из режима «молча делает не то» в режим «останавливается и говорит».
Медленный запрос в PostgreSQL: с чего начинать
Порядок действий, который дешевле наугад повешенного индекса: статистика, план выполнения, условие — и только потом индекс.
Образ, который собирается минуту вместо десяти
Время сборки определяется не объёмом работы, а тем, какая её часть выполняется заново. Одна перестановка строк даёт больше, чем подбор базового образа.
Доступность как инженерная задача, а не как галочка
Почему чек-листы и оверлеи не делают сайт доступным, где на самом деле живут барьеры и как найти их обычной клавиатурой
Оценка качества агента до релиза
Почему один успешный прогон агента ничего не доказывает и как выстроить оценку, которая до релиза покажет форму распределения и характерные отказы
Дежурство по агенту: порядок действий
Как дежурному по агенту отличить жёсткий отказ от мягкого, не тратить время на рестарт и откат и найти причину по трассе одного эпизода
Что агент не делает: список, который пишут заранее
Почему перечисление действий и запреты в инструкции не задают границу ответственности агента и как провести её снаружи списком из трёх колонок
Контракты данных: как перестать чинить отчёты
Чем настоящий контракт данных отличается от страницы в вики, из каких четырёх частей состоит и с какого отчёта начинать внедрение
Где проходит граница клиент — сервер
Почему границу между клиентом и сервером нужно проводить не по типам компонентов, а по моменту, когда становятся известны входные данные
Деплой без кластера: что осталось живым
Что кластер даёт на самом деле, почему однонодовый вариант — тупик и как выкатывать сервисы через релиз-каталоги, атомарный симлинк и systemd
Платформенная команда: когда её заводить
Как посчитать на ваших числах, когда платформенная команда окупается, почему стандарты и одиночный инфра-инженер не спасают, и что проверить перед стартом
Как мерить производительность, чтобы себе не соврать
Почему типовой прогон на стенде расходится с продакшеном и как собрать протокол замера: от решения через модель нагрузки до кривой вместо точки
TypeScript в рантайме: что типы не проверяют
Разбираемся, почему типы не защищают внешние данные, где проходит граница процесса и как проверять всё, что её пересекает
Как объяснить совету директоров затраты на ИИ
Почему обещанная окупаемость превращает защиту бюджета в допрос и как сменить форму заявки на измеримую цену одной задачи
Что мерить у модели кроме точности
Почему одна цифра не отражает качество языковой модели и как измерять калибровку и отдельные режимы отказа, чтобы понять, стало ли лучше
Алерты, на которые перестали смотреть
Почему дежурные рационально перестают читать канал алертов и почему подстройка порогов меняет частоту алертов, а не их применимость
Что писать в трассировку, а что нет
Как проектировать трассировку под дежурного: какие поля писать в спанах, а какие выносить в архив, чтобы трейс сразу показывал, где сломался запрос
Политика обновления зависимостей, которую соблюдают
Разбираемся, почему матрицы дедлайнов и дни обновлений не работают и как построить политику, в которой обновлять зависимости дешевле, чем откладывать
Что о вашей компании видно снаружи
Как бесплатно проверить, что о вашей компании видно постороннему: DNS, публичные журналы сертификатов и другие открытые источники, которые выдают забытые активы
Цепочка поставок: перечень, который кто-то читает
Почему перечень состава после генерации не читает никто и какие шаги превращают файл в индекс, отвечающий на запросы по всем сборкам
Git-приёмы, которые перестают быть страшными
Как на самом деле git хранит историю, почему опасные команды почти ничего не удаляют, когда работа теряется безвозвратно и как вернуть её через reflog
Терминал, который экономит часы, а не минуты
Почему быстрые эмуляторы и алиасы не экономят время, где теряются настоящие часы и как проверить это на своём рабочем дне