CORS: почему браузер блокирует запрос и что менять на сервере
Как браузер проверяет безопасность запросов и почему сервер должен правильно настраивать CORS
Уровни логирования: что писать, а что выключить
Как правильно выбирать уровни логирования и что писать в логах, чтобы быстро находить причины сбоев
Протокол вместо фреймворка: что изменилось в сборке агентов
Где проходит граница между вашим кодом и чужими системами и что протокол не решает
JSON как контракт: где он подводит
Формат, который читается без описания, обычно и передают без описания. Что записать отдельно от кода, чтобы обмен пережил расхождение версий.
Соединения таблиц: почему строк больше, чем ожидали
Число строк результата определяется кратностью связи, а не таблицами. Одна проверка до запроса ловит почти все завышенные суммы в отчётах.
Слой трансформаций: движок в процессе против конвейера
Почему вычисление переезжает внутрь процесса и где эта схема ломается
Обратный прокси: что он решает и что ломает
Что он действительно снимает с приложения и что ломает молча
Асинхронность: что она ускоряет, а что нет
Асинхронность не ускоряет вычисления — она позволяет не простаивать в ожидании. Как понять, поможет ли она, до того как переписывать код.
Что растёт и что сдувается в экосистемах
Наш замер реестров: что команды сейчас кладут в сборки, а что перестали
Где чаще всего остаются без ответа
Наш замер: без ответа остаётся то, что нельзя воспроизвести у себя
Токен в браузере: где его хранить
Вопрос о месте хранения решается моделью угрозы, а не удобством. Две популярные ответа защищают от разных вещей, и одно хранилище не даёт обоих свойств.
Конфликт слияния: почему он ваш и что с ним делать
Конфликт означает не «код сломан», а «два намерения пересеклись». Почему выбор стороны — это потеря, и как разрешать, ничего не теряя.
Состояние в React: когда нужна библиотека, а когда нет
Состояние бывает четырёх видов, и библиотека нужна только для одного. Как понять, для какого именно, и когда решение вообще пора принимать.
Java никуда не делась: где она осталась и почему
Решение о языке принимает не мода, а тот, кто платит за содержание системы десять лет. Что стоит считать, прежде чем спорить о синтаксисе.
Python тормозит: что действительно ускоряет
Под «медленно» прячутся три разные ситуации, и лечатся они по-разному. Как понять, в какой вы, прежде чем переписывать код на другом языке.
Новые инструменты живут без вопросов
У инструмента, о котором все говорят, может не быть ни одного публичного ответа о себе. Разрыв между массовыми и новыми темами — в четыре порядка.
Куда делись вопросы разработчиков
Публичный архив ответов по программированию перестал пополняться: по пяти крупнейшим темам поток вопросов упал в двадцать раз. Что это меняет в оценке задач.
Что современный CSS убрал из вашего JS
Почему JavaScript-наблюдатели за внешним видом опаздывают на кадр, какие механизмы CSS решают эти задачи внутри конвейера рендеринга и где скрипты остаются обязательными
Дообучение или поиск по документам: как выбрать
Почему дообучение и поиск по документам лечат разные отказы, и как понять, какой именно мешает вашей модели
Бюджет времени в многошаговом агенте
Почему лимит шагов и таймаут страхуют агентный цикл от разных отказов и как выбирать бюджеты, которые ограничивают именно то, что вы думаете
Агенты в продакшене: что отказывает на второй неделе
Сбои многошаговых агентов почти никогда не начинаются с модели. Они выводятся из арифметики шагов — и поэтому предсказуемы до запуска.
Lakehouse без хайпа: что реально поменялось
Разбираем, чем плоха связка озера и склада, почему внешние таблицы не спасают, как лейкхаус даёт транзакции поверх открытых файлов и во что это обходится
Схема поехала: пять способов узнать об этом первым
Почему дрейф схемы первым замечает потребитель, почему процессные договорённости и красные джобы его пропускают и как устроены пять автоматических проверок на пути данных
Серверные компоненты: год в продакшене
Вы узнаете, как серверные компоненты пересылают дерево по проводам, почему проп через границу становится частью сетевого контракта и какие поломки модели предсказуемы заранее
WebAssembly: где он уже окупается
Откуда у WebAssembly берётся скорость, какой ценой она достаётся и почему переписать самую тяжёлую функцию — не решение, а тупик
Golden path вместо документации
Почему документация гниёт, почему её нельзя спасти процессами и ревью, и как golden path делает стандартные операции исполняемыми
Почему Go стал платформенным дефолтом
Почему горутины, планировщик и статическая линковка делают Go дефолтом для микросервисных платформ — и где те же свойства начинают вредить
Rust в сервисах: где окупается, а где нет
Спор давно идёт не о скорости. Решающими оказываются два фактора, и ни один из них не технический.
Повторы, которые удваивают счёт
Разбираемся, почему счёт за API языковых моделей растёт при неизменном продукте, как повторные попытки превращаются в умножение затрат и что чинить на самом деле
OpenTelemetry: что стало стандартом, а что ещё нет
Разберёмся, какие слои OpenTelemetry действительно стали стандартами, а какие остаются удобным клеем, и почему граница проходит именно между ними
Трассировка шагов вместо логов
Как заменить ленту логов на дерево шагов, чтобы видеть не только где упало, но и почему агент решил именно так
Секреты в CI: пять типовых утечек
Разберём, почему хранение секретов в хранилище и маскирование логов не спасают от утечки, и покажем пять мест, где конвейер CI теряет ключи