Рубрика «Go» - 2

ч1: Обзор. Полгода после утечки через tun0. Кто из VPN-клиентов закрыл дыру, а кто закрыл issue.

ч2: Разбор. Как мы закрывали утечку через tun0 в AmneziaVPN.

TL;DR

  • Приложение, которое вы исключили из VPN на Android, может привязать сокет к tun0, пройти через ваш туннель и узнать адрес сервера. Мы закрыли это внутри клиента: когда пакет выходит из туннельного интерфейса, фильтр спрашивает у Android, чьё это соединение, и чужие не пропускает.

  • Читать полностью »

Недавно мне дали тестовое задание на проектирование интеграции между 1С и Yandex 360. На первый взгляд задача выглядела достаточно прямолинейно: 1С формирует письмо, дальше его нужно передать в почтовую систему, отправить и получить информацию о результате. Но в исходном ТЗ не было отдельного сервиса на Go. Я добавил его сам. И в этой статье хочу разобрать не столько само тестовое задание, сколько процесс принятия архитектурного решения: зачем вообще добавлять ещё один компонент и в какой момент он действительно оправданЧитать полностью »

Кто тут любит коммерческие прокси-сервисы? Я не вижу ваши руки? Да, я тоже не особый фанат. Но приходится признавать, что как только домашний Xray с вручную вписанными в JSON ключами выходит за пределы узкого круга непосредственных родственников, приходится разбираться в том же спектре проблем: гео-блоки со стороны сервисов, маршрутизация, слив и слишком обширное использование подписки, из-за чего пользователи начинают мешать друг-другу, а машины блокируются по превышению квоты.

Торопитесь? Вот код

Читать полностью »
SVG4 — каталог векторных иконок

SVG4 — каталог векторных иконок

Больше года назад я запустил SVG4Читать полностью »

Несколько месяцев назад мне понадобилось заключить договор с водоканалом. Казалось бы, обычная бюрократическая задача: отправил документы, дождался ответа, подписал договор. На практике всё оказалось значительно веселее — ответа долго не было, сроки шли, а что делать дальше, было не совсем понятно.

Юриста у меня не было, зато был AI. Я загрузил документы, описал ситуацию и начал разбираться, какие вообще есть варианты дальнейших действий. В итоге с помощью AI подготовил несколько обращений и жалоб, после чего ситуация сдвинулась с места и договор со мной всё‑таки заключили.

Читать полностью »

С сериализацией всё вроде бы просто. Есть значение x, мы превращаем его в последовательность байт, передаём куда‑то ещё, а потом восстанавливаем:

x → encode → bytes → decode → x'

И первое, что хочется проверить:

decode(encode(x)) == x

Если получилось — значит, сериализация работает. По крайней мере, так кажется. Потому что в этой формуле есть одна маленькая деталь, которую легко не заметить: что именно означает ==?

Когда одинаковое — не то же самое

Возьмём совершенно обычный Go‑код: a := &Node{Value: 42} и x := []*Node{a, a}.

В xЧитать полностью »

Работа с гигантской памятью из Go на выделенном сервере

Работа с гигантской памятью из Go на выделенном сервере

Массив на 160 ГиБ

Читать полностью »

Боль

Если вы держите on‑prem кластер на десятки или сотни нод, дальше можно не объяснять. Обновили CNI, или ядро, или драйвер сетевой карты, или просто переехали частью нод в новый сегмент. Проходит какое‑то время, и начинают капать тикеты: «у нас иногда таймаутит между подами», «DNS иногда не резолвится», «health‑check то падает, то нет».

Читать полностью »

Зачем эта статья

В первую очередь статья (или статьи) написана ради комментариев, чтобы развлечь себя и читателя, но с надеждой получить какие‑то дельные советы и мнения по теме проекта.

Как это началось

Точкой старта работы над проектом можно считать день, когда Дедушка Мороз положил мне под ёлку набор «Робот‑автомобиль для Raspberry Pi 4B» от Keyestudio.

Читать полностью »

Год назад мой типичный пулл‑реквест писался руками часа три и ревьюился минут двадцать. Сейчас четыреста строк агент выдаёт за минуту, а ревью того же дифа занимает час: приходится вычитывать уверенно написанный чужой код, в котором ошибка выглядит ровно так же убедительно, как правильное решение. Узкое место переехало с набора кода на его проверку, и усилием воли оно не расширяется.

В августе у Google вышел текст о том, почему Go хорошо подходит для разработки с агентамиЧитать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js