Category : golang

golang
Все (я надеюсь) способы работать с транзакциями в go

Так уж вышло, что я до сих пор не могу выбрать лучший способ для работы с транзакциями. Поэтому я решил написать эту обзорную статью. Я разберу все известные мне паттерны для работы с транзакциями и постараюсь выбрать лучший.ВводныеРассмотрим самый дефолтный проект с любой реляционной БД. У проекта есть две сущности — пользователи и заказы. Каждая сущность хранится в своей таблице. Мы пытаемся (насколько это возможно) не мешать слой БД со слоем бизнес‑логики и стараемся писать поддерживаемый и …

  • вторник, 29 сентября 2026 г. в 00:00:17
golang
Почему fallback между LLM может сломать семантику ответа

Когда проектируешь обычный backend, fallback обычно воспринимается как довольно понятный механизм.Есть основной upstream. Если он недоступен, переключаемся на резервный. Если один pod умер, запрос обслужит другой. Если один PostgreSQL read replica недоступен, читаем с другой. Если основной endpoint партнёра отвечает ошибкой, можно попробовать резервный.В большинстве таких случаев мы предполагаем, что резервный исполнитель реализует тот же контракт.С LLM это предположение начинает ломаться.Две м…

  • вторник, 29 сентября 2026 г. в 00:00:17
golang
Доверить сервер ИИ-агенту и не пожалеть: как спать спокойно без SSH

При разборе инцидентов я всё чаще использую ИИ-агента: он быстро собирает информацию о сервере — нагрузку, память, диски, процессы, журналы — и сводит её с данными мониторинга, чтобы понять, почему тормозит сайт, чем забит диск или что упало ночью. По его выводам я могу попросить агента и решить проблему, а для этого ему может понадобиться перезапустить сервис, изменить конфиг или даже настройки ядра. Дать ему для этого SSH с sudo — не самый безопасный путь. Мне хотелось попробовать другой подх…

  • понедельник, 28 сентября 2026 г. в 00:00:15
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