Category : golang

golang
(Не)безопасный eBPF: что маркетологи забыли упомянуть об уязвимостях

Дисклеймер 1Данная статья носит исключительно исследовательский характер. Моя цель - рассказать сообществу об архитектурных особенностях подсистемы eBPF в Linux. Ведь для того чтобы эффективно защищать системы, необходимо знать об ограничениях используемых технологий.Дисклеймер 2Для чтения статьи надо уже быть знакомым с Linux и eBPF. Но если все еще интересно, то оставлю тут ссылку на то, как устроена эта технология. Что происходит?В последнее все чаще решения ИБ продуктов для мониторинга Linu…

  • понедельник, 1 июня 2026 г. в 00:00:21
golang
DNSSEC validation на Go: написал свой validator и не до конца сошёл с ума

ну и снова привет, Хабр!Я пилю VantageDNS, privacy-focused recursive DNS-резолвер с фильтрацией. Edge-фронт на Go, 10 нод по миру, миекговский miekg/dns под капотом. На каком-то этапе у меня закончились отговорки, и пришлось писать DNSSEC validator. Своими руками. Ночью. Под кофе восьмой кружки.Ниже расскажу, как устроен trust chain, что есть в стандартной библиотеке, какие грабли разложены по дороге, и почему алгоритм 14 я до сих пор обхожу как кота во дворе. В конце ссылки на open-source реал…

  • понедельник, 1 июня 2026 г. в 00:00:16
golang
Жизненный цикл объекта в Kubernetes: путь от kubectl apply до полного удаления

Привет. В предыдущих статьях этого цикла мы разбирали, как Kubernetes-объекты читаются (первая — informer и кэш в controller-runtime) и записываются (вторая — Server-Side Apply, patch’и, managedFields). Сегодня — про их жизненный цикл.Между kubectl apply и появлением объекта в etcd проходит целая цепочка: admission chain, мутирующие и валидирующие вебхуки, schema-валидация, встроенные плагины. Между kubectl delete и реальным исчезновением объекта может пройти от миллисекунд до часов — в зависим…

  • суббота, 30 мая 2026 г. в 00:00:17
golang
Resolvable Config Struct — отличная альтернатива Functional Options в Go

Если честно, то лично я считаю, что это не просто «альтернатива», а предпочтительный выбор по умолчанию для большинства API (где конфигурация — это именно данные).По большому счёту, паттерн Resolvable Config Struct просто наводит порядок в тех структурах Config и Options, которыми мы все пользуемся на порядок-два чаще, чем Functional Options. Чтобы его внедрить понадобится лишь минимальный рефакторинг, потому что всеми элементами этого паттерна мы и так постоянно пользуемся, просто сейчас там б…

  • суббота, 30 мая 2026 г. в 00:00:15
golang
ИИ-агент двойного назначения

В наши дни каждый разработчик, наверняка, пробовал вайбкодить, а некоторые идут дальше и заводят себе целых ИИ агентов. Однако отовсюду доносятся новости о том, как какой-то AI агент удалил базу данных со всеми бэкапами. Поэтому давайте посмотрим исходных код проектов, которые так или иначе связаны с агентной разработкой.ВведениеАгентская разработка и различные AI-решения всё теснее входит в разработку программного обеспечения. Поэтому мы решили проверить нашим Go анализатором проекты, которые …

  • суббота, 30 мая 2026 г. в 00:00:14
golang
Шестнадцатеричная запись чисел с плавающей точкой в C++, Java, Go

Эта возможность есть в нескольких популярных языках программирования - но она настолько невостребованна, что и не все-то коллеги о ней знают - а в других не менее популярных языках её отказываются добавлять, несмотря на запросы энтузиастов. Этакий живой курьёз.В этой коротенькой заметке-памятке - взглянем на формат записи (он может показаться не вполне логичным и не вполне шестнадцатеричным, вопреки названию) и поддержку стандарта разными языками. Основным же применением для этой "фичи"…

  • пятница, 29 мая 2026 г. в 00:00:18
golang
Когда Reality не хватает: добавляем Hysteria2 + Salamander в iOS-мессенджер, и как всегда грабли по…

Эту статью я готовил с прошлой недели, и пока готовил, ТСПУ выкатил новые правила фильтрации, целящиеся именно в Reality-handshake, о котором тут речь. То есть статья стала актуальнее, чем когда я её начинал.В прошлой статье я рассказывал, как мы встроили VLESS + Reality прямо в наше iOS-приложение через sing-box, чтобы обход блокировок был не задачей пользователя, а деталью реализации. Если коротко: TLS-рукопожатие проксируется на посторонний крупный сайт, активный пробинг упирается в этот сай…

  • четверг, 28 мая 2026 г. в 00:00:09
golang
Слишком много открытых файлов: лимит Linux, который валит прод в 3 часа ночи

Ваш сервис спокойно живёт неделями: графики ровные, алерты молчат, релизы проходят без сюрпризов. А потом в три часа ночи под нагрузкой всё начинает разваливаться с ошибкой: too many open filesНа Go это может выглядеть так:http: Accept error: accept tcp 0.0.0.0:8080: accept4: too many open files; retrying in 5msНа Java — так:java.io.IOException: Too many open files       at sun.nio.ch.FileDispatcherImpl.init0(Native Method)На Python — так:OSError: [Errno 24] Too many open filesНазвания разные, …

  • четверг, 28 мая 2026 г. в 00:00:07
golang
io_uring без розовых очков: 5 граблей, которые сожгли мне неделю, и где он реально быстрее epoll

Прод. Сервис на Go, 80k RPS, p99 latency 12 мс. Читаю Phoronix, новость: "io_uring быстрее epoll в 2-4 раза". Решаю переписать сетевую часть. Через неделю - откат в master. p99 не упал, а вырос до 18 мс, CPU подскочил на 15%, под нагрузкой иногда залипает на 200-400 мс. Эта статья - не про "io_uring - будущее async I/O", а про то, что в этом будущем реально работает в 2026 году, что нет, и где меня обманули бенчмарки.TL;DR как естьio_uring не убил epoll и не убьёт. Для классичес…

  • четверг, 28 мая 2026 г. в 00:00:07