Дисклеймер: я делаю self-hosted observability-платформу Gotcha, и дальше - разбор того, как в ней устроена группировка инцидентов. Механика описана так, чтобы её можно было повторить в любой своей системе алертинга: конкретный код тут вторичен, первичны грабли.Падает один узел - шлюз, гипервизор, единственный узел БД. Дальше начинается то, что дежурный видит как ковровую бомбардировку:перестают слать телеметрию хосты, которые сидят за этим узлом, - открываются инциденты “хост молчит”;гаснет upt…
Вывод в консоль картыИнструменты в пайплайнах уже стали рутиной, линтеры, проверки зависимостей, конфигов, образов — в пайплайн кладется все, что помогает контролировать релиз и делать его безопаснее. И вот улучшая свой devsecops пайплайн, я задумался, над тем насколько реально написать свой инструмент для CI/CD и внедрить его в рамках GitHub Actions. Оказалось не так уж и сложно, ведь для того чтобы выложить свою утилиту в GitHub Marketplace, который бы импортировался одной строчкой, нужно про…
Пятьдесят из шестидесяти трёх горутин в моём тестовом сервисе не проснутся никогда. Я узнал это одной командой, без чтения дампов и без гадания по стекам.19 августа вышел Go 1.27, и в нём из эксперимента вышел профиль goroutineleak. В релиз-ноутах ему отведено полтора абзаца, что для такой штуки маловато. Я собрал тулчейн, написал под него десяток мелких программ и полез в runtime смотреть, как это устроено внутри. Ниже то, что получилось.Коротко для тех, кто спешит:Профиль показывает только те…
Привет, Хабр!Не так давно я на ровном месте занялся написанием библиотеки на Go для, казалось бы, тривиальной задачи — спиннера, который гарантированно не будет ломаться при конкурентных записях в stderr и stdout.Все началось с того, что я писал вообще другой код — консольную утилиту для запуска тестов. И захотел прикрутить туда спиннер. Но не просто спиннер, а такой, что позволил бы использовать оба потока вывода — stderr и stdout, без риска оставить артефакты на экране. Более того, во время а…
За время работы с backend‑разработкой я реализовал достаточно REST API и TODO‑подобных приложений. На них удобно отрабатывать HTTP, взаимодействие с базой данных, разделение приложения на слои и обработку ошибок. Однако в какой‑то момент задачи начинают повторяться и сводиться к одному сценарию:принять данные → сохранить в базе → вернуть ответ;принять запрос → получить данные из базы → вернуть ответ.Такой опыт создаёт необходимую основу, но почти не затрагивает долгоживущее состояние, конкурент…
Все сейчас пилят ИИ-агентов, но когда их становится больше трех, начинается ад. Протокол MCP (Model Context Protocol) частично решает проблему, но готовых инструментов для глобальной оркестрации, настройки прав (RBAC) и визуального контроля логики на рынке просто нет. Мы задолбались собирать костыли и решили написать свой кастомный хабПочему я выбрал для бекенда именно GoКогда мы говорим об оркестрации ИИ агентов важным становится конкурентность, предсказуемое потребление памяти и скорость сете…
Мой первый KitRover: попытка сделать машинку с управлением по сети (часть 1)Мой первый KitRover: попытка сделать машинку с управлением по сети (часть 2)ВступлениеВ предыдущей статье рассказал, как сделал управление с телефона. Теперь можно управлять машинкой в пределах комнаты, но для выезда за её пределы, хотелось видеть, куда движется устройство на экране. Чем я и начал заниматься дальше.LiveKitНастраивая звонки для одного из сервисов, я познакомился с проектом LiveKit. Несложно поднять в Doc…
telEgo - шустрый Telegram прокси на Go, в последней версии которого появилась поддержка всех четырёх WEB протоколов.Telegram Desktop теперь умеет подключаться через WEB proxy. Снаружи такое соединение выглядит как работа обычного сайта: клиент открывает HTTPS-страницу в браузере, а она становится транспортом между Telegram Desktop и прокси.У тех, кто уже держит свой MTProxy, сразу возникает практический вопрос: что делать с портом 443? Его нельзя одновременно отдать MTProxy и Nginx. Переносить …
Продолжение первой и второй частей. В первой мы развернули двухуровневую инфраструктуру: Root CA и три промежуточных центра — Person, Server и Code. Во второй научились отзывать сертификаты, раздавать CRL и подняли OCSP-responder. В самом начале первой части я обещал «беспарольный вход в админку». Пришло время его получить.Как и предыдущие части, статья задумана как подробное пособие: по каждой директиве и каждой переменной приведён расширенный справочник — синтаксис, допустимые значения, умолч…