Category : golang

golang
Пишем TCP-сканер портов на Go: goroutine, timeout и CSV-отчёт

Недавно знакомый попросил помочь с небольшой задачей по проверке внешнего периметра сети компании. Сразу уточню: речь шла об инфраструктуре, на проверку которой было разрешение.Под внешним периметром обычно понимают всё, что доступно из интернета: публичные IP-адреса, домены, поддомены, облачные или VPS-серверы, а также сервисы, которые слушают внешние порты.Задача была простой по формулировке, но интересной технически: нужно понять, какие адреса доступны извне и к каким портам можно подключить…

  • пятница, 12 июня 2026 г. в 00:00:24
golang
Как я веб-приложение на Go для архитектуры MIPS кросс-компилировал

ВведениеПривет, Хабр! Являюсь давним пользователем маршрутизаторов Keenetic/Netcraze. В свое время подкупили надежность устройств, широкие возможности программного обеспечения, оперативная техническая поддержка, большое сообщество пользователей возможность установки дополнительных пакетов через среду Entware. В относительно недавнем прошлом производитель строил свои устройства на базе mips/mipsel чипов, таким образом, несколько таких устройств оказались у меня в руках.Дополнительные пакеты в ре…

  • пятница, 12 июня 2026 г. в 00:00:22
golang
Натягиваем сову на глобус или оценка применимости TSI на другие языки

Привет, Хабр! В прошлых статьях я описала, как через нововведенный параметр TSI теоретически можно определить грейд разработчика. Для тех, кто пропустил первую часть: TSI (Topological Seniority Index) — это метрика, которая нивелирует мусор в вакансиях и позволяет отразить качественный скачок при переходе между грейдами. Она считается исходя из суммы взвешенной мощности стека, уровня ответственности и архитектурного признака в списке требований. Но до этого мы говорили только про один язык – C#…

  • пятница, 12 июня 2026 г. в 00:00:20
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