Category : golang

golang
Sing-Box Launcher: как собрать VPN + WireGuard + split-tunneling без JSON-конфигов

Рассказываю про развитие своего проекта — мультиплатформенного десктопного клиента Sing-Box Launcher.GitHub проекта: https://github.com/Leadaxe/singbox-launcherДумаю многие хотели сделать конфигурацию, где:рабочие сайты открываются через корпоративную сетьгосуслуги работают даже из аэропорта Стамбулалокальная домашняя сеть доступнаYouTube тоже не ломаетсяИ желательно всё это настроить без танцев с JSON-конфигами, стабильно и прозрачно. Покажу по шагам, как это можно собрать и как именно это реа…

  • воскресенье, 8 марта 2026 г. в 00:00:13
golang
Микросервисная трансформация в Купере. Часть II: Как выносить функциональность

Всем привет! С вами Федор Засечкин, и это моя вторая статья из цикла о том, как мы в Купере распиливали монолит. Если хотите максимально погрузиться в контекст, перед чтением этого текста загляните по ссылке:Микросервисная трансформация в Купере — как это было. Часть I: Начинаем распил монолитовА в продолжение темы я хочу поговорить о том, с чего начинается вынос функциональности в сервисы. Будут и вопросы чисто технического характера, и организационные — потому что в нашем случае вынос состоял…

  • пятница, 6 марта 2026 г. в 00:00:08
golang
Выделение памяти в Go

Эта статья посвящена языку программирования Go 1.24, работающему на Linux на архитектуре ARM. Она может не охватывать специфические для других операционных систем (ОС) или аппаратных архитектур детали.В этой статье подробно рассматриваются следующие вопросы:Отображение виртуальной памяти Арена и страницаКлассы Span и SizeКласс спанаМножество спановБиты кучи и заголовок mallocУправление кучей Выделение спана: mheap.allocЦентрализованный менеджер спанов: mcentralРаспределитель памяти процессора: …

  • четверг, 5 марта 2026 г. в 00:00:09
golang
Пишем свой TCP-чат на Go: пошаговый гайд на пальцах

Привет, Хабр! Начинаю серию статей, которые позволят погрузиться начинающим разработчикам в сетевое программирование на Go. В этой статье мы напишем простой консольный чат, используя только стандартную библиотеку. Никаких фреймворков и лишних зависимостей — только чистый код и понимание того, как данные передаются по сети. Понимание сокетов — это фундамент для написания высоконагруженных сервисов, микросервисов и понимания того, как работает интернет «под капотом».Порог для понимания статьи: си…

  • четверг, 5 марта 2026 г. в 00:00:09
golang
Пусть ваш AI пишет тесты. Имба, о которой не знает ни один вайбкодер

Вы попросили ChatGPT добавить скидку 10% на заказы больше $100. Он выдал 40 строк кода. Скидка работает - проверили на заказе в $150, получили $135. Закоммитили.Чего вы не заметили: модель переписала функцию расчёта цены целиком. Не потому что нужно было. Просто так получилось - LLM не "редактирует" код, он генерирует новый текст на основе вашего промпта и контекста. В процессе он изменил порядок вычисления налога. Заказы меньше $100 теперь считают налог дважды. Товар за $10 стоит $10.8…

  • среда, 4 марта 2026 г. в 00:00:11
golang
Как дата саинтист имиджборду писал

Добро пожаловать. Снова.ДисклеймерЦель статьи — посмотреть на мир веб-разработки глазами человека, знакомого с алгоритмами и структурами данных, синтаксисом языка, работой с БД, но ничего не знающего про веб. Статья носит сугубо развлекательный характер, написана простым языком, некоторые технические моменты намеренно опускаются.На дворе конец 2023. Я только что уволился из Яндекса и скучаю по ячану, чуть меньше скучаю по этушке, вообще не скучаю по таскам, дедлайнам, ревью. Чтобы заполнить воз…

  • вторник, 3 марта 2026 г. в 00:00:07
golang
Дженерики в Go: три года спустя

Когда в феврале 2022-го вышел Go 1.18 с дженериками, сообщество разделилось на два лагеря. Первые кричали «наконец-то!» и бросились переписывать всё подряд. Вторые — «не нужны были, не нужны и сейчас». Прошло три года. Пыль улеглась. И я хочу поговорить не о том, как написать func Max[T constraints.Ordered](a, b T) T — этому посвящены тысячи туториалов. Я хочу поговорить о том, что реально прижилось, какие паттерны оказались полезными, а где дженерики только мешают.До 1.18 у нас было два пути: …

  • вторник, 3 марта 2026 г. в 00:00:06
golang
Когда успешная миграция сломалась, а партиционирование превратилось в cross-cluster move

Привет! На связи вновь команда Геосервисов. Как вы помните, в прошлой статье я делился нашим опытом партиционирования и выводами, к которым мы пришли. Но на этом история не закончилась. Что же было дальше? Партиционирование завершилось успешно. VACUUM сократился с 6+ часов до ~20 минут. Запросы ускорились. Мы думали, что всё позади. Через неделю после swap проверили реплику — и обнаружили, что она пуста.Обнаружение: реплика пустаяБыла обычная пятница. Проверяли репликацию lag, всё было в поряд…

  • воскресенье, 1 марта 2026 г. в 00:00:12
golang
Создаём микросервис обработки изображений на Go с gRPC

В этой статье мы рассмотрим создание микросервиса обработки изображений на golang с использованием технологии gRPC. Цель статьи - показать как может выглядеть такой сервис и что он может в себя включать. В результате мы получим полностью рабочий сервис по обработке изображений, который принимает данные, сохраняет исходную картинку, сжимает её, накладывает на неё ватермарку, изменяет размер изображения, и конвертирует его в нужный формат.Разберём возможные варианты взаимодействия клиента с серве…

  • воскресенье, 1 марта 2026 г. в 00:00:11