Category : golang

golang
ccswap: переключаю Claude Code между своими подписками без прокси и перезапуска

У меня несколько своих подписок Claude, и Claude Code работает почти весь день: я пишу сам, параллельно крутятся агенты. Пятичасовой лимит заканчивается в самый неудобный момент, недельный — задолго до конца недели. Дальше всё одинаково: открыть терминал, выйти, залогиниться другим аккаунтом в браузере, вернуться в сессию и вспомнить, на чём остановился. В какой-то момент мне надоело делать это руками.Так появился ccswap — демон на Go для macOS и Linux. Когда текущий аккаунт подходит к лимиту (…

  • воскресенье, 18 октября 2026 г. в 00:00:08
golang
GoOS: от любопытства к собственному ядру

Ещё в школе, когда я впервые начал писать на Pascal, меня заинтересовал вопрос: что именно происходит, когда запускается программа? Программа читает клавиатуру, выводит текст, выделяет память. Но кто её запускает? Кто выделяет ей процессорное время? Почему она не может прочитать память другого процесса? Как нажатие клавиши превращается в событие для приложения? И что происходит между включением компьютера и первым приглашением командной строки? Вместо того чтобы ограничиться прикладным программ…

  • суббота, 17 октября 2026 г. в 00:00:16
golang
Доставка пива, алгоритм «Октагон» и поиск компании в EDGE: какие архитектуры придумали на Avito Gri…

Обычно на митапах всё довольно предсказуемо: доклады, слайды, кофе-брейк и немного общения между ними. Но в прошлом году мы решили перевернуть привычный формат — собрать Go-сообщество и побрейнштормить архитектуру. Активность была похожа на System Design, но с фаном и мясом!Так появился Avito Grill & Go. Формат зашёл настолько, что участники попросили повторить. И мы подумали: а почему бы не привезти его в Петербург?В этот раз собрали 130 Go-разработчиков во дворике Union Bar и разделили их…

  • суббота, 17 октября 2026 г. в 00:00:16
golang
Genoas — ещё один генератор OpenAPI 3.1 для Go

Всем привет!Меня зовут Егор, и я уже несколько лет пишу на Go.Сегодня я хотел бы представить свой небольшой проект по генерации свагера для Go‑проектов.С чего всё началосьКогда я работал в банке, у нас были жёсткие требования: API бэкенда должно быть досконально описано. Паттерны для строк, максимальная/минимальная длина и так далее. Но главное — спецификация должна была быть версии не ниже 3.0.К сожалению, подходящих библиотек на тот момент было не то чтобы много. Я уже не говорю о том, подход…

  • суббота, 17 октября 2026 г. в 00:00:13
golang
В 39% игр в Тайного Санту двое дарят друг другу. Считаем жеребьёвку как следует

Раздать имена в Тайном Санте — задача на пять строк: перемешал список, проверил, что никто не достался сам себе, готово. Я так и думал, пока не посчитал. При таком способе почти в четырёх играх из десяти найдутся двое, которые дарят друг другу, и это не баг реализации, а свойство случайных перестановок.Я делаю сервис для Тайного Санты (My Santa), и жеребьёвка в нём — те самые пять строк, которые разрослись до ста тридцати. Ниже — почему разрослись, как устроены и какой перекос я нашёл в собстве…

  • суббота, 17 октября 2026 г. в 00:00:12
golang
Расписание ИТМО жило в приложении, а мне нужен был календарь. Поэтому я сделал сервис

Расписание живёт в приложении ИТМО, а вся моя жизнь — в календаре: работа, секции, встречи, поездки. Каждую неделю я сверял одно с другим и почти каждый раз находил расхождение. В итоге сделал сервис, который превращает расписание в подписку: одна ссылка, и пары появляются в календаре сами. Сервис неофициальный: у ИТМО такой подписки нет, поэтому её сделал я.Как былоПроще всего объяснить на примере. Однажды я приехал на пару на Кронверкский, а она оказалась перенесена на Ломоносова. Уведомлени…

  • суббота, 17 октября 2026 г. в 00:00:11
golang
Fairway: балансировщик корпоративных прокси, который сам выясняет, какой выход лучше для какого сай…

В компании редко бывает один прокси. Обычно это пара Squid в основном ЦОДе, свои прокси в филиалах и отдельные внешние выходы для облачных сервисов. Клиенты при этом настроены просто: PAC‑файл с двумя адресами по порядку, и всё.Беда в том, что «какой прокси лучше» зависит от сайта. Партнёрский банк пускает в API только с согласованных адресов, и выход питерского филиала в этот список не попал. Зеркало пакетов через европейский выход отдаёт втрое быстрее, чем через московский. Канал в филиале уз…

  • суббота, 17 октября 2026 г. в 00:00:09
golang
NKT (NetKnownsThat): open-source замена зоопарку инфраструктурных инструментов

"Я каждый день работаю с кучей инструментов для мониторинга и управления инфраструктурой и меня сильно раздражает то, что путь от момента первого запуска до нормального использования неоправданно длинный."  - Владислав, инженерМеня зовут Александр, я один из разработчиков NKT (NetKnownsThat) — нашего первого опенсоурс проектаNKT - это один бинарник на Go (~29 МБ) с встроенным веб-интерфейсом на React+TypeScript+Ant Design. Без Python, Node.js и внешних зависимостей, всё внутри бинарника…

  • суббота, 17 октября 2026 г. в 00:00:08
golang
Разворачиваем порты VPS'а: маленькая шалость программиста

При заказе VPS/VPS (уж не знаю, для каких вам нужд) - стандартная схема - при минимальной комплектации вам дают сервер, к которому можно подключиться только по SSH, и нельзя открыть никакие другие порты. Сам порт SSH может отличаться от стардартного 22-го (обычно так и происходит в начале).За дополнительную плату можно подключить опцию “статический IP” - и тогда уже можно открывать какие угодно порты и вешать на них какие угодно сервисы, веб-серверы, прокси-серверы.В целом, деньги то есть, и ту…

  • суббота, 17 октября 2026 г. в 00:00:07