Category : golang

golang
«dap-18» это не dap-18: номер версии протокола не фиксирует формат на проводе

В свободное время пишу на чистом Go порт DAP. DAP, Distributed Aggregation Protocol - это протокол распределённой агрегации для приватных измерений, из IETF, рабочая группа PPM (Privacy Preserving Measurement). Идея простая: собрать статистику по куче пользователей так, чтобы ни один сервер по дороге не увидел ни одного отдельного значения. Реализаций DAP несколько (daphne у Cloudflare, divviup-ts), а я целюсь в Janus на Rust, реализацию ISRG - тех же людей, что делают Let’s Encrypt. Взял его п…

  • среда, 15 июля 2026 г. в 00:00:21
golang
Великая ересь, или Как использовать protobuf без контракта

Привет! На связи Влад, разработчик product-facade — сердца витрины Ozon и одного из самых высоконагруженных сервисов, который выдерживает до 2,2 млн RPS. В прошлой моей статье я рассказывал об одном из архитектурных вызовов, с которым мы столкнулись в процессе работы. В этот раз продолжим тему микросервисной архитектуры и поговорим о том, что происходит, когда привычная строгость контрактов начинает мешать.Одна из ключевых причин использования gRPC для связи между сервисами — строгий protobuf-к…

  • вторник, 14 июля 2026 г. в 00:00:31
golang
Как я создал локальное хранилище и агрегатор VLESS конфигураций

Не секрет, что в последнее время стабильность доступа к некоторым зарубежным ресурсам и API оставляет желать лучшего. Для обычного человека потеря связи с любимыми или нужными ресурсами посреди рабочего дня — это очень неприятно. Полагаться на один зарубежный сервер стало неэффективно: узлы падают, скорость проседает. У меня у самого появилась это проблема, поэтому я захотел сделать ее решение.Что я решил сделать, рассказываю дальше.Какая была задумкаИзначально, все что было в моих идеях — напи…

  • суббота, 11 июля 2026 г. в 00:00:15
golang
Go подробно! Часть 1. Структура проекта

Привет!Буду с вами честен, для меня читать сухие переводы документации или смотреть 40-часовые видеокурсы - то еще удовольствие. Поэтому я решил устроить эксперимент и разбирать Go прямо в публичном поле, шаг за шагом документируя весь процесс.Я не новичок в разработке - повседневно пишу на Python и TypeScript, знаком с базовым devops. Но вот на территорию Go осознанно захожу впервые.Я возьму за основу официальный трек обучения от создателей языка и постараюсь подробно разобрать как Go устроен.…

  • пятница, 10 июля 2026 г. в 00:00:13
golang
JSX для Go: как маленькая разметка потянула за собой рантайм, компилятор и кучу компромиссов

Я не начинал с идеи написать «убийцу JavaScript». Честно говоря, такие заявления обычно только мешают думать.Сначала была гораздо более скромная мысль: мне нравится Go, мне нравится его простота, типизация и ощущение предсказуемого инструмента. Но когда дело доходит до интерактивного веб‑интерфейса, почти неизбежно оказываешься в другой вселенной: JavaScript, Node.js, сборщики, плагины, отдельная модель компонентов, отдельная экосистема.Это нормально. Веб таким стал не случайно. Но мне было инт…

  • пятница, 10 июля 2026 г. в 00:00:12
golang
Как я сделал аналог Hamachi для геймеров: история PortPlay

Привет, Хабр! Когда я был мелкий, и трава зеленее, провайдеры всегда выдавали не белый, а «серый» адрес. Да, он менялся при каждом подключении, но всегда можно было открыть порт и поиграть с корешами в ту же CS 1.6 или Minecraft. Время прошло, и сейчас, чтобы получить белый IP, нужно пройти три круга ада. И то не факт, что дадут. Или: «Купите наш тариф за миллион денег, тогда дадим». Но не про то пошёл разговор.Предыстория: от идеи к прототипуВсё началось с того, что мы с коллегами по работе ре…

  • пятница, 10 июля 2026 г. в 00:00:10
golang
ИИ задеплоит за тебя. А дежурить кто будет?

ИИ задеплоит за тебя. А дежурить кто будет? На днях в чате разработчиков мне написали: «Я описал Клоду проект с телефона, он собрал MVP и сам задеплоил на Firebase. В деплой я вообще не лез. Зачем теперь нужны сервисы деплоя?». Вопрос честный, и короткий ответ на него: незачем. Если ИИ развернул ваш проект и он работает, всё отлично, расходимся. Длинный ответ интереснее.День первый: тут ИИ действительно победил Признаю без оговорок: настройка сервера перестала быть проблемой. Любой ассистент …

  • четверг, 9 июля 2026 г. в 00:00:15
golang
Учимся писать свой Prometheus exporter на Go с нуля. Часть 1

Чтобы измерять нагрузку, ошибки, задержки и потребление ресурсов, осознанно поддерживать SLO и настраивать алерты, не обойтись без Prometheus. Он принимает текстовый формат на HTTP-эндпоинте. Только вот Kafka, PostgreSQL, сетевое железо и Redis метрики по HTTP не отдают, либо понимают только JMX, SNMP и собственный REST API. Так что без переводчика не обойтись.Всем привет! Я DevOps-разработчик из MTC Web Services. Этим материалом я открываю цикл из пяти постов, благодаря которому вы шаг за шаго…

  • четверг, 9 июля 2026 г. в 00:00:14
golang
Используем sqlc в Го: нужно ли делать отдельный слой «репозиторий», или достаточно сгенерированного…

Всем привет! Эта статья является выжимкой моего опыта. Возможно для кого-то это очевидные вещи, тем не менее, считаю, что она может мыть полезна начинающим и не только.Для работы с базами данных в го есть несколько подходов от стандартного "ручного", до удобных, таких как sqlx, GORM, sqlc... Список можно продолжать дальше.При разработке очередного ПО я познакомился с sqlc (https://sqlc.dev/) и его подход мне понравился: на основе sql запросов создается полноценная обертка над бд - чем …

  • четверг, 9 июля 2026 г. в 00:00:13