Category : golang

golang
cfzt: как я обернул Zero Trust Cloudflare Tunnel в одну команду и зачем туда пришлось добавить вотч…

В домашней инфраструктуре у меня крутится десяток сервисов: Grafana, Zabbix, n8n, Navidrome, ollama, БД, пара дашбордов и тестовых API. Каждый раз, когда нужно было выставить новый сервис наружу, я открывал дашборд Cloudflare и руками проходил один и тот же путь: создать туннель, прописать ingress‑правило, добавить DNS записи, настроить Zero Trust Access. Минут пятнадцать, если без ошибок. С ошибками — больше, потому что один неверно скопированный tunnel ID ломает всю цепочку и приходится откат…

  • вторник, 23 июня 2026 г. в 00:00:15
golang
Как один комментарий на Хабре перевернул архитектуру моего мессенджера

История о том, как я перестал добавлять новые функции и начал строить системуПосле моей первой статьи про Pulse я не ожидал, честно говоря, примерно ничего. Но к моему удивлению увидел реакцию: немного поддержки, немного критики, несколько советов по UX.PulseЯ получил около 7 тысяч просмотров, десятки комментариев и, неожиданно для себя, полноценный аудит проекта. Особенно, просто золотой грааль - комментарий от пользователя domix32. Он не обсуждал идеи. Не спорил про дизайн. Не рассуждал о буд…

  • понедельник, 22 июня 2026 г. в 00:00:04
golang
Все тесты зелёные, а байты разные: как я проверяю порты бинарных форматов

В свободное время пишу на чистом Go порты CRDT-движков. CRDT - это структуры, на которых держится совместное редактирование в реальном времени, вроде гугл-доков: несколько человек правят один документ, и копии сходятся к одному состоянию без центрального арбитра. Эталонные реализации живут на других языках: Yjs на JavaScript, Loro и data model протокола Willow на Rust. Я переписываю их на Go, потому что FFI и CGO плохо ложатся на мобилку и WASM, а pure-Go порт собирается куда угодно. И смысл та…

  • воскресенье, 21 июня 2026 г. в 00:00:06
golang
Тёмная сторона Go: разбор живых уязвимостей с продакшена и инструменты против них

Статья написана по мотивам доклада Георгия Фатеева (Application Security инженер, МТС Web Services) на конференции GolangConf. Представьте обычный HTTP-обработчик. Пользователь передаёт имя файла через query-параметр, код подставляет это имя в shell-команду и зовёт ls -l. Выглядит безобидно. А теперь пользователь присылает вот такое значение:/?filename=.;rm%20-rf%20/ Go аккуратно соберёт и выполнит команду:sh -c "ls -l .;rm -rf /" И снесёт систему по своей оси. Уязвимый Go-обработчик: …

  • воскресенье, 21 июня 2026 г. в 00:00:05
golang
Проектирование веб-краулера. Как решать System Design?

Привет! Продолжаю разбирать классические задачи с System Design интервью на стримах (за анонсами можете следить тут https://t.me/siliconchannel), а это текстовая версия стрима. В прошлый раз была бесконечная лента, сегодня очередная классика жанра - веб-краулер. Условие звучит примерно так:Спроектировать веб-краулер, который обходит интернет, вытаскивает со страниц текст и складывает его в хранилище. На этом тексте потом будут обучать LLM (условный ChatGPT). На весь обход даётся 5 дней - данные…

  • воскресенье, 21 июня 2026 г. в 00:00:04
golang
Как мы построили распределённый мониторинг аптайма

В прошлый раз я писал про рекурсивную задачу мониторинга: кто мониторит монитор? Если Prometheus упал — вы не видите ничего, и самое коварное тут в том, что отвалившийся мониторинг внешне неотличим от идеальной стабильности. Та статья заканчивалась честно и немного грустно: чистого решения нет, есть только слои подстраховки и остаточный риск, с которым приходится жить.Эта статья — про то, что было дальше. Я попробовал зайти с другой стороны: не «как защитить монитор от падения», а «как сделать …

  • суббота, 20 июня 2026 г. в 00:00:07
golang
Я собрал свой мессенджер по вечерам после работы

Я обычный инженер‑программист в банке. Вечерами, после работы и семьи, я начал эксперимент: смогу ли я один, с помощью нейросетей, сделать мессенджер таким, каким, как мне кажется, он должен быть? Не «убийцу Telegram» или кого‑либо другого, а просто альтернативу — спокойное место для общения. Без шума, без бесконечных кружков, без ощущения, что ты должен читать каналы, на которые никогда не подписывался.Знаете это чувство, когда подписки и личные чаты свалены в одну кучу? Да, папки есть, но эти…

  • пятница, 19 июня 2026 г. в 00:00:10
golang
Как незаметная indirect-зависимость в Go дописала ручку в ваш HTTP-сервер

Как незаметная indirect-зависимость в Go дописала ручку в ваш HTTP-серверВсе примеры из статьи лежат в репозитории github.com/korableg/init-injection-example. Код «вредоноса» написан в учебных целях — чтобы показать класс проблемы, а не дать готовый инструмент. Запускайте только в песочнице.История простая: у нас есть аккуратный сервис на net/http с единственной ручкой /time. Мы обновляем одну библиотеку через go get, ничего не меняя в своём коде. После рестарта в сервисе появляется ручка /__in…

  • четверг, 18 июня 2026 г. в 00:00:14
golang
Как управлять модовыми серверами без боли: наш опыт с Docker, Go и MiniMin

Всем привет! Частенько ли у вас возникает желание пойти в одну очень популярную песочницу (Minecraft) ? Я думаю раз в пол года - год у многих возникает такое желание. И также часто возникает желание поставить парочку… сотен модов.Этот пост написан для себя-любимого и для тех людей кого тоже очень бесит настраивать моды , пытаться их синхронизировать между друзьями. Я не претендую на какой то Clean код и тд и тп. Сразу признаюсь. Код писали ИИ агенты. Я просто как обычный обыватель и разработчик…

  • среда, 17 июня 2026 г. в 00:00:10