Category : golang

golang
Ваш сервис на домене клиента: CNAME, certbot и 300 строк Go вместо ACME on-demand

Есть класс фич, которые выглядят на одну строчку в тикете и на неделю в реализации. «Хочу, чтобы статус-страница жила на моём домене» — из таких. Клиент добавляет CNAME status.client.ru → status.your-service.com, и дальше начинается интересное: кто выпустит сертификат для чужого домена, кто его продлит, как не дать одному пользователю положить всю схему мусорными доменами и почему X-Forwarded-For может превратить внутренний эндпоинт в публичный.Я делал это для сервиса мониторинга — у него есть …

  • суббота, 5 сентября 2026 г. в 00:00:17
golang
Go 1.27 подменил движок encoding/json. Замерил три конфигурации и нашёл, где стало хуже

В Go 1.27 пакет encoding/json остался тем же по API и перестал быть тем же внутри: теперь это тонкий слой совместимости поверх нового encoding/json/v2. Обещание Go 1 выполняется честно, старый код компилируется и ведёт себя как раньше, но цифры под ним поменялись, причём в обе стороны. Я собрал go1.27.0 из исходников, взял старый go1.24.7 для контроля и прогнал одинаковые бенчмарки в четырёх конфигурациях. Разбор ниже: где выиграли, где потеряли полтора раза на ровном месте, что именно уже изме…

  • пятница, 4 сентября 2026 г. в 00:00:12
golang
Как мы скрестили Go, Rust и MCP, чтобы построить масштабируемый оркестратор ИИ-агентов часть 2

Итак в прошлый раз я рассказал вам про свой проект в целом ,сегодня же мы будем разбирать бекендГлубокий разбор архитектуры Zettaverse AgentHubКастомная валидация структуры flow_json и построение DAGАрхитектура DAG-оркестрацииВ основе AgentHub лежит Directed Acyclic Graph (DAG) - направленный ациклический граф, где узлы представляют собой задачи агентов, а рёбра - зависимости между ними . Это позволяет декомпозировать сложные задачи на подзадачи, назначать каждой специализированного агента и па…

  • пятница, 4 сентября 2026 г. в 00:00:11
golang
Горутины изнутри, часть 3

Финал серии про горутины и рантайм Go. Здесь то, что происходит за пределами уютного мира G/M/P: системные вызовы, сеть, сборщик мусора. Плюс полный круг планировщика, после которого вывод GODEBUG=schedtrace читается как обычный лог, и все свежее из Go 1.22-1.27: рантайм, который начал делать работу за программиста.План серии:Почему потоки ОС не масштабируются и как Go придумал GMP.Переезжающий стек, сигнал SIGURG и жизнь горутины.syscall, netpoll, полный круг планировщика и свежий Go.Короткий …

  • четверг, 3 сентября 2026 г. в 00:00:19
golang
Как быстро влиться в чужой проект и не завалить коллег вопросами: тестируем Gemini Notebook

Обычный вечер понедельника. Я уже собирался уходить домой после работы, как вдруг зацепился за разговор коллег о неком Gemini Notebook. Стало интересно, что это, как люди им пользуются, а главное — надо ли оно мне. Глянул пару обзорных видео, послушал про его плюсы, чудеса и все такое прочее, но больше всего зацепил меня тезис о том, что окно контекста у этой штуки — миллион токенов. Вечер перестал быть томным.Привет, Хабр! Меня зовут Вадим Гартман, я бэкенд-разработчик в Selectel. Недавно стал…

  • четверг, 3 сентября 2026 г. в 00:00:18
golang
От Root CA до User Authorization в nginx+apache. Часть 4. Свой web-УЦ: выпуск из браузера, роли и а…

Продолжение цикла. В первой части мы развернули двухуровневую инфраструктуру: Root CA и три промежуточных центра. Во второй научились отзывать сертификаты, раздавать CRL и подняли OCSP-responder. В третьей настроили вход по клиентскому сертификату в nginx и Apache. Осталось ответить на вопрос, который возникает сразу после первого успешного входа: а откуда у людей берутся сертификаты?Пока удостоверяющим центром пользуется один человек, openssl в терминале — идеальный интерфейс. Как только прихо…

  • четверг, 3 сентября 2026 г. в 00:00:17
golang
Каскад из одной аварии: как схлопнуть шторм алертов в одну карточку инцидента

Дисклеймер: я делаю self-hosted observability-платформу Gotcha, и дальше - разбор того, как в ней устроена группировка инцидентов. Механика описана так, чтобы её можно было повторить в любой своей системе алертинга: конкретный код тут вторичен, первичны грабли.Падает один узел - шлюз, гипервизор, единственный узел БД. Дальше начинается то, что дежурный видит как ковровую бомбардировку:перестают слать телеметрию хосты, которые сидят за этим узлом, - открываются инциденты “хост молчит”;гаснет upt…

  • среда, 2 сентября 2026 г. в 00:00:16
golang
Судьба в пайплайне: пишем детерминированный Quality Gate на Go с механикой Таро

Вывод в консоль картыИнструменты в пайплайнах уже стали рутиной, линтеры, проверки зависимостей, конфигов, образов — в пайплайн кладется все, что помогает контролировать релиз и делать его безопаснее. И вот улучшая свой devsecops пайплайн, я задумался, над тем насколько реально написать свой инструмент для CI/CD и внедрить его в рамках GitHub Actions. Оказалось не так уж и сложно, ведь для того чтобы выложить свою утилиту в GitHub Marketplace, который бы импортировался одной строчкой, нужно про…

  • вторник, 1 сентября 2026 г. в 00:00:14
golang
Утёкшие горутины теперь ищет сборщик мусора. Проверил, где он молчит

Пятьдесят из шестидесяти трёх горутин в моём тестовом сервисе не проснутся никогда. Я узнал это одной командой, без чтения дампов и без гадания по стекам.19 августа вышел Go 1.27, и в нём из эксперимента вышел профиль goroutineleak. В релиз-ноутах ему отведено полтора абзаца, что для такой штуки маловато. Я собрал тулчейн, написал под него десяток мелких программ и полез в runtime смотреть, как это устроено внутри. Ниже то, что получилось.Коротко для тех, кто спешит:Профиль показывает только те…

  • вторник, 1 сентября 2026 г. в 00:00:13