Category : golang

golang
sing-box-lx: как, почему и зачем я завёл fork сетевого ядра — XHTTP + AWG2 для всех

Если вы пользовались моим LxBox или десктопным лаунчером, то могли натыкаться на оранжевый баннер: «с этим узлом, скорее всего, не соединится». Так клиент честно сознаётся, что наткнулся на узел с транспортом XHTTP, а ядро sing-box, на котором всё крутится, его не умеет. В этот момент лаунчер тихо даунгрейдит конфиг до HTTPUpgrade.А еще сразу как я выпустил приложение пришли запросы с AWG/AWG2 и такие: сделай! а я сюдаВ какой-то момент я устал ждать и собрал свой форк ядра — sing-box-lx. Сегод…

  • четверг, 11 июня 2026 г. в 00:00:22
golang
Рецензия на книгу «Go: разработка приложений в микросервисной архитектуре»

Июнь — месяц рецензий на книги по языку Go в нашем блоге SSP SOFT. Сегодня разбираем книгу Юлии Поповой «Go: разработка приложений в микросервисной архитектуре с нуля».При этом, в названии позиционирование указано не очень четко, речь именно про процесс разработки микорсервисов с нуля, а не про нулевые навыки в Go. Книга в основном ориентирована на уже уверенных в своих знаниях языка начинающих разработчиков (джунов) на Go. Книга небольшая, 320 страниц, пять глав. И самое ценное в ней —  пример…

  • четверг, 11 июня 2026 г. в 00:00:21
golang
Мессенджер Ласточка. Мы в Rustore. Cобственный DSL и федеративная архитектура

Путь от идеи до работающего мессенджера с открытым кодом — в последнем отчёте.Я начал рассказывать о проекте «Ласточка» на Хабре чуть больше двух месяцев назад. Тогда это были вопросы нужен ли еще один мессенджер, которые переросли в твёрдое намерение построить честный российский мессенджер для обычной жизни — семьи, друзей, работы. Регистрация в RustoreЧерез некоторое время после публикации предпоследней статьи я получил вот такое письмоСкрин из почтыИ после нескольких модераций приложение одо…

  • четверг, 11 июня 2026 г. в 00:00:19
golang
Accept-driven development или давайте снова понимать свой код

Наверное, через это уже прошёл каждый из нас :)Где-то после полугода очень достаточно работы с агентами я стал принимать диффы быстрее, чем успеваю реально в них вникнуть, в итоге в один из я оказался в ситуации, что словил баг, а на поиски проблемы потратил чуть больше часа, а найдя ее, я понял, на сколько она была тривиальнойКороче говоря, то что мы используем агентов - конечно суперсила, но в итоге, мы все начинаем идти по “Accepted driven development” , а это уже начинает сильно отупливать …

  • четверг, 11 июня 2026 г. в 00:00:18
golang
PII-Shield: режем персональные данные в логах до того, как они доехали до ELK

Изначально идея была грубее: взять логовую строку, посчитать энтропию у подозрительных кусков и скрывать всё, что похоже на случайный секрет.PII здесь — это personally identifiable information, то есть персонально идентифицируемая информация: email, телефон, адрес, паспортные данные, номера карт, токены доступа и другие значения, которые не должны свободно гулять по логам.На бумаге звучало неплохо. Многие токены, ключи и сессионные строки действительно выглядят как шум:x9VdQp2Mz_La77kPq0 sk_liv…

  • среда, 10 июня 2026 г. в 00:00:18
golang
Пишем автомигратор на Go: как узнать схему PostgreSQL

Когда говорят «генератор миграций», обычно в голове сразу появляется что-то вроде:CREATE TABLE users (     id BIGSERIAL PRIMARY KEY,     email TEXT NOT NULL );Но настоящий генератор миграций начинается не с CREATE TABLE. Он начинается с менее эффектного, но гораздо более важного вопроса:Как вообще представить текущую схему базы в коде?Пока у нас нет ответа на этот вопрос, мы не можем нормально сделать почти ничего:сгенерировать начальную миграцию для уже существующей базы;сравнить ожидаемую схе…

  • среда, 10 июня 2026 г. в 00:00:17
golang
jumie — локальный ИИ ассистент в терминале

Пример работы jumie Все мы часто используем терминал, но мало кто помнит наизусть все флаги команды find или как правильно распаковать хитрый архив без гугла. Обычно процесс выглядит так: идем в браузер, просим ИИ написать какую то нестандартную команду, копируем, вставляем, получаем ошибку. Почему? Потому что мы сидим на маке, а ИИ выдал команду с GNU флагами для линукса, или использовал утилиту, которой у нас вообще нет. Поэтому я написал jumie - умного локального демона, который понимает кон…

  • вторник, 9 июня 2026 г. в 00:00:24
golang
Почему в Go больно писать автотесты (и дело не в синтаксисе)

ВступлениеАвтотесты на Go обычно начинают с testing.T — и на этом, по сути, всё. Дальше каждый проект вынужден сам решать, как именно исполняются тесты: в каком порядке, с каким окружением, с какими зависимостями, ретраями и логированием.testing даёт нам минимальный набор примитивов — t.Run, t.Cleanup, TestMain. Этого достаточно для unit-тестов, но за пределами простых сценариев быстро становится ясно: в Go нет единого execution engine, который бы занимался оркестрацией тестов как системы.И это…

  • вторник, 9 июня 2026 г. в 00:00:22
golang
10 вопросов на Go собеседовании, которые валят большинство джунов

Готовиться к Go-собеседованию по списку с GitHub — значит знать ровно то же, что знают все остальные. Интервьюеры это чувствуют сразу. В этой статье — 10 вопросов, которые реально задают на Golang Junior собеседованиях, с разбором так, как это объяснили бы вам после интервью на обратной связи. Вопрос 1. Nil-ловушка интерфейсовСмотрим на код:type MyError struct{ msg string } func (e *MyError) Error() string { return e.msg } func getError() error { var myErr *MyError = nil return myErr …

  • вторник, 9 июня 2026 г. в 00:00:21