Category : golang

golang
Как перестать искать ошибки в YAML глазами: пишем валидатор для Go

Мне нужно было просто валидировать YAML. В итоге получилась библиотека с JSON SchemaКогда я начинал писать go-yamlvalidator, никакой большой идеи за этим не было. Мне нужен был нормальный способ проверять YAML-конфиг.Я разрабатываю EasyP — инструмент для работы с Protobuf-контрактами, зависимостями и генерацией кода. Когда у пользователей что-то не работало, они часто писали нам в чат EasyP и присылали свои YAML-конфиги. В итоге нам самим приходилось глазами искать лишний отступ, неправильную в…

  • суббота, 26 сентября 2026 г. в 00:00:19
golang
Из ClickOps в код: как я оживил Terraformer и научил его говорить с провайдерами напрямую

Почти у каждой команды есть «накликанная» инфраструктура. Кто‑то когда‑то создал VPC в консоли, кто‑то вручную настроил бакет, DNS‑зоны живут отдельно, а в Terraform описана только половина. Чтобы взять это под управление, нужно две вещи: найти всё, что существует, и написать для каждого объекта конфиг, который совпадает с реальностью.Для этого был Terraformer от Waze SRE: 14,5 тысячи звёзд на GitHub, около 800 тысяч скачиваний релизов, 44 провайдера, от AWS и Google Cloud до Datadog, Cloudflar…

  • суббота, 26 сентября 2026 г. в 00:00:17
golang
Ограничение скорости скачивания пользователей в Xray-core

Кто тут любит коммерческие прокси-сервисы? Я не вижу ваши руки? Да, я тоже не особый фанат. Но приходится признавать, что как только домашний Xray с вручную вписанными в JSON ключами выходит за пределы узкого круга непосредственных родственников, приходится разбираться в том же спектре проблем: гео-блоки со стороны сервисов, маршрутизация, слив и слишком обширное использование подписки, из-за чего пользователи начинают мешать друг-другу, а машины блокируются по превышению квоты.Торопитесь? Вот …

  • суббота, 26 сентября 2026 г. в 00:00:16
golang
MLow — голосовой кодек звонков WhatsApp *

* Meta Platforms Inc. (владелец Facebook, Instagram, WhatsApp и Messenger) признана экстремистской организацией, её деятельность запрещена на территории РФ. Facebook и Instagram запрещены в РФ.Когда вы звоните в WhatsApp, Messenger или Instagram*, ваш голос, скорее всего, сжимает не Opus, а MLow - собственный низкобитрейтный кодек Meta*, созданный для плохих сетей и слабых смартфонов. Компания рассказала о нём в инженерном блоге, но ни спецификации, ни исходников, ни описания формата кадра нет.…

  • суббота, 26 сентября 2026 г. в 00:00:15
golang
xk6-sip: SIP-телефония как код

Парадокс 2026 годаНа дворе 2026 год. Веб-сервисы тестируют облачные оркестраторы: тысячи виртуальных пользователей поднимаются из пайплайна, метрики падают в Prometheus, деградации ловит алерт до того, как их заметит клиент. А в телефонии, которая до сих пор держит колл-центры, банки, скорую помощь и диспетчерские, релиз АТС часто проверяют так же, как двадцать лет назад: тестировщик берёт два телефона и звонит сам себе. Нагрузку дают SIPp со сценариями в XML, которые проверяют сигнализацию, но…

  • суббота, 26 сентября 2026 г. в 00:00:14
golang
PostgreSQL: три источника времени в одной таблице

ПроблемаСтек: Gin + GORM v2 + pgx/v5 в режиме simple protocol, PostgreSQL, PgBouncer. Кейс: при оформлении заказа товар резервируется на 30 минут, дальше резерв снимается, а товар удаляется из корзины.За снятие отвечает фоновая джоба. Раз в 5 минут она ищет истёкшие резервы и завершает их.В поддержку прилетает тикет:Пользователь оформляет заказ, фронт показывает таймер «резерв истечёт через 30 минут», но через пять минут из корзины пропадает товар. Воспроизводится у всех клиентов.Разбираемся в …

  • пятница, 25 сентября 2026 г. в 00:00:16
golang
Go сделали скучным — и после нейросетей это выстрелило

Go двадцать лет дразнили языком для дураков. Без дженериков, без перегрузок, без нормальных перечислений, без магии. Синтаксис учится за выходные, выразительность — на уровне табуретки.А теперь смотрим на 2026 год. Индустрия побежала писать AI-агентов и гейтвеи — и пишет их на Go или Rust. Нейронки генерируют код на Go лучше, чем почти на любом другом языке, потому что Go читается. Можно сказать, что язык оказался настолько тупым, чтобы снять пороги входа для LLM. И это, возможно, оказалось сам…

  • пятница, 25 сентября 2026 г. в 00:00:14
golang
Создание коммерческого ПО, в современных условиях

В этой статье я бы хотел поделиться своим взглядом на разработку коммерческого ПО небольшими трудовыми коллективами.И так, начну, пожалуй, и начну издалека. Я человек старой формации, учился как сейчас говорят «хард скилам», и посвятил учебе изрядный кусок своей жизни.Жизнь у меня была сложная, путь школа → институт → работа преграждала масса препятствий, однако же видимо родителям удалось привить мне тягу к знаниям, за что им вечно буду благодарен. Худо бедно, в перерывах между борьбой за выжи…

  • пятница, 25 сентября 2026 г. в 00:00:13
golang
vet молчит, -race молчит: горутины, которые переживают CI

В прошлой статье я писал, что компилятор — первый ревьюер кода, который написал агент. У этой идеи есть слепое пятно, и я в него наступил: конкурентность. Компилятор проверяет типы, go vet проверяет десяток известных шаблонов, -race ловит гонки данных. А горутина, которая никогда не завершится, — это не ошибка типов и не гонка. Код, который не слышит отмену, — тоже.Такой код собирается, проходит vet и go test -race, под нагрузкой тоже живёт. Вылезает проблема позже: на graceful shutdown, когда …

  • пятница, 25 сентября 2026 г. в 00:00:12