
html/template в Go: как автоэкранирование спасает от XSS
Пакет html/template экранирует данные сам, но только если вы даёте ему работать. Разбираем, где контекстное экранирование ломается и как не открыть дыру через template.HTML.

Пакет html/template экранирует данные сам, но только если вы даёте ему работать. Разбираем, где контекстное экранирование ломается и как не открыть дыру через template.HTML.

Три способа собрать PDF в Go — от рисования по координатам до рендеринга HTML через headless-браузер. У каждого своя цена по скорости, точности вёрстки и зависимостям.

Утечки соединений, зависшие горутины, битые загрузки и ретраи, которые не спасают. Разбираем частые ошибки в коде работы с S3-совместимыми хранилищами на Go и показываем, как их избежать.

Вебхук приходит один раз, а платёж списывается дважды — потому что обработчик не был идемпотентным. Разбираем ошибки, которые ломают приём вебхуков на Go: от чтения тела до ретраев.

aws-sdk-go-v2, minio-go или самописный клиент через HTTP — у каждого свой вес в бинарнике, свой стиль ретраев и свои сюрпризы с эндпоинтами. Разбираем, что выбрать под задачу.

Пользователь заливает видео на 800 МБ, а сервис отвечает out of memory. Разбираем, чем отличаются загрузка через память, потоковую обработку и presigned URL, и когда что выбирать.

Пакет log/slog в стандартной библиотеке Go закрывает большинство задач структурированного логирования. Разбираем, что проверить перед выкатом: формат, уровни, контекст, PII и производительность.

Что выбрать для приёма файлов на 2-10 ГБ в Go-сервисе: multipart, стриминг в io.Copy, прямой upload в S3. Разбор четырёх подходов с ценой каждого и типичными ошибками.

Наивный обработчик multipart в Go складывает файл в память и роняет сервис на файле в пару гигабайт. Разбираем, как принимать большие загрузки потоком, ограничивать размер и не держать всё в RAM.

Как протянуть контекст с trace_id через горутины, HTTP-клиенты и логи в Go, не превращая сигнатуры функций в помойку. Разбор рабочих подходов и их цены.

log/slog в стандартной библиотеке, zap и zerolog — три способа писать структурированные логи в Go. Разбираем, чем они платят за скорость и когда что выбирать.

Вебхук приходит один раз, а обрабатывается плохо: дубли, гонки, потерянные события при рестарте. Разбираем, как принять, проверить подпись и не потерять полезную нагрузку на Go 1.22+.