Category : golang

golang
Как быстро встроить MAX в свои системы

MAX для бизнеса без лишней магии MAX в России постепенно превращается не просто в «ещё один мессенджер», а в канал, который всё чаще рассматривают как рабочую точку контакта с пользователем: для уведомлений, сервисных сообщений, внутренних ботов и групповых сценариев. И как только компания доходит до реальной интеграции, почти всегда начинается знакомая история: сначала один скрипт на отправку уведомлений, потом второй на обработку входящих сообщений, потом отдельная логика для групп, потом ещ…

  • понедельник, 23 марта 2026 г. в 00:00:25
golang
Я написал кэш для API на Go за 120 строк кода — и PostgreSQL перестал быть узким местом (ускорение …

Если API начинает тормозить, первое решение обычно очевидно — добавить Redis. Но иногда оказывается, что проблема гораздо проще. В одном из сервисов PostgreSQL начал упираться в повторяющиеся запросы. Одни и те же данные запрашивались тысячами клиентов. Практически каждый HTTP-запрос заканчивался одинаковым SQL-запросом. Любопытство победило — вместо готового решения был написан небольшой кэш прямо внутри сервиса. На это ушло примерно полчаса.Результат оказался неожиданным: некоторые эндпоинты …

  • воскресенье, 22 марта 2026 г. в 00:00:12
golang
Паттерны конкурентности в Go. Подробный разбор. Часть 2. Fan-Out/Fan-In

Fan-Out/Fan-InПаттерн Fan-Out/Fan-In — это подход к параллельной обработке задач в Go с использованием горутин и каналов. Он позволяет распределить работу между несколькими исполнителями (Fan-Out) и затем собрать результаты в одном месте (Fan-In). Паттерн Fan-Out/Fan-In очень похож на паттерн Worker Pool. Более того, в большинстве практических случаев Worker Pool можно считать частным (специальным) случаем паттерна Fan-Out/Fan-In. По сути, принципиальная разница заключается в том, что Fan-Out/F…

  • воскресенье, 22 марта 2026 г. в 00:00:01
golang
Видеонаблюдение на Go с потоковой передачей в Telegram

Привет всем! Хочу поделиться небольшим личным проектом, который родился из чистой бытовой необходимости. Я давно хотел иметь возможность удаленно поглядывать на свою дачу, особенно когда уезжаю на несколько недель. Готовые решения в духе "умных камер" меня не совсем устраивают: то подписки дорогие, то Privacy Policy сомнительная, то функционал избыточный. В итоге я решил, что проще и надежнее будет написать свою собственную утилиту.Идея проста: поставить на даче маломощный неттоп, подкл…

  • суббота, 21 марта 2026 г. в 00:01:31
golang
Разбираем net/http на практике. Часть 2.2: Архитектура и безопасность. Внедряем Clean Architecture,…

Предыдущая часть Предисловие. Спасибо за тёплые отзывы о предыдущих статьях цикла. Ваша поддержка – настоящий стимул продолжать дальнейшую работу! Оставляйте мнение и вопросы по пройденному материалу в комментариях – я буду рад любой обратной связи.Если вы читали предыдущую часть – вы помните, какой серьезный фундамент мы заложили для нашего сервиса. DeadDrop уже научлся: Принимать и обрабатывать POST-запросы Парсить файлы Защищаться от DoS-атак Хранить данные в потоко-безопасном in-memory х…

  • суббота, 21 марта 2026 г. в 00:01:19
golang
Свой Firewall Operator для Docker

Думаю, многие разработчики, которые используют Docker, согласятся с тем, что он предоставляет обширные возможности для контроля прав контейнеров. Тут есть инструменты на любой вкус: хочешь открывай порты наружу, хочешь меняй права контейнера через cap_add / cap_drop, хочешь показывай контейнеру все процессы, а хочешь - можешь разрешить использовать девайсы или сеть хоста, ну и так далее.Погружение в проблемуОднако, работая с Docker вот уже более 7 лет, я заметил, что я часто сталкиваюсь с одним…

  • суббота, 21 марта 2026 г. в 00:01:08
golang
Давайте добавим в Go условное выражение

Если вы являетесь Go-разработчиком, то вне зависимости от того, из какого языка программирования пришли в Go, наверняка когда-то задавались вопросами «А есть ли тут тернарный оператор? Нет? А почему?»Конечно, можно заглянуть в секцию FAQ документации Go и найти там ответ авторов. Но останавливаться на этом — удел слабых, так?) Иногда ведь так хочется удобно написать присвоение результата в зависимости от условия... Без заведения лишних временных переменных, и может быть даже в одну строчку...А …

  • суббота, 21 марта 2026 г. в 00:00:57
golang
Работа с TUN-интерфейсами в Linux: простая реализация на Go

Статья посвящена низкоуровневой работе с сетевым стеком Linux на языке Go. Разберем, как создать и настроить виртуальные TUN-интерфейсы для перехвата и модификации IP-трафика в userspace. Напишем минимальную программу, реализующую логику NAT: подмена адресов в заголовках пакетов и инкрементальный пересчет контрольных сумм для IP и TCP.Программа написана на Go и создает на одной машине два виртуальных TUN-интерфейса. Схема работы выглядит так: tun0 -> go app -> tun1 -> inet. Первый инте…

  • пятница, 20 марта 2026 г. в 00:00:15
golang
Туннелирование трафика в macOS: адаптация примера на Go

В этой статье мы перенесем разработанный инструмент на macOS. Логика работы с трафиком в userspace сохраняется, но интеграция с системой требует иных решений. Разберем особенности создания utun-интерфейсов, настройки маршрутизации через ifscope и использования pf для NAT. По итогу запустим цепочку tun0 -> go app -> tun1 -> inet на новой платформе.Принципиальных изменений в коде нет, но туннели создаются и настраиваются иначе. В Linux-варианте я открывал туннель без сторонних библиотек,…

  • пятница, 20 марта 2026 г. в 00:00:13