Category : golang

golang
Умная теплица на Raspberry Pi 4. Или сказ про то как проект вырос в полноценный контроллер умного д…

В первой части я рассказывал о системе автоматизации теплицы на Raspberry Pi 4. Она собирала показания датчиков и управляла оборудованием. Постепенно захотелось применить её и за пределами теплицы: дома, в мастерской или серверной. Задачи там знакомые — следить за температурой, включать устройства по условию и получать уведомления.Для этого понадобились новые способы подключения устройств, удалённый доступ и обновления с сохранением настроек. В проекте появились Zigbee‑датчики, поддержка Rock P…

  • понедельник, 28 сентября 2026 г. в 00:00:13
golang
От «быстрого JSON» к потоковой обработке данных: смена парадигмы в оценке производительности проток…

Сразу хочу обозначить важный момент: эта статья не столько про пакет SilentJSON, сколько про схему работы с информацией, которую на его примере удалось реализовать и проверить на практике.SilentJSON здесь – скорее инструмент и конкретная реализация идеи. Ту же архитектуру вполне можно реализовать самостоятельно, адаптировать под другой формат данных, другой язык или конкретные ограничения проекта. Она может получиться лучше или хуже SilentJSON, но главное – она может оказаться гораздо лучше при…

  • понедельник, 28 сентября 2026 г. в 00:00:13
golang
Какие наши продукты задевает эта CVE? Я продолжил заброшенный Minefield и нашёл, что он читал SBOM …

Выходит новость о критической уязвимости в популярной библиотеке. Первый вопрос, который задаёт себе любая команда, выпускающая больше одного продукта: а у нас она где? Не «есть ли она в этом репозитории» — на это отвечает любой сканер, — а «какие из наших продуктов её тянут, напрямую или через пять уровней чужих зависимостей, и что из этого чинить первым».С 11 сентября 2026 года у этого вопроса появился срок. Cyber Resilience Act обязывает производителей продуктов с цифровыми элементами, прода…

  • воскресенье, 27 сентября 2026 г. в 00:00:10
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