Статья посвящена низкоуровневой работе с сетевым стеком Linux на языке Go. Разберем, как создать и настроить виртуальные TUN-интерфейсы для перехвата и модификации IP-трафика в userspace. Напишем минимальную программу, реализующую логику NAT: подмена адресов в заголовках пакетов и инкрементальный пересчет контрольных сумм для IP и TCP.Программа написана на Go и создает на одной машине два виртуальных TUN-интерфейса. Схема работы выглядит так: tun0 -> go app -> tun1 -> inet. Первый инте…
В этой статье мы перенесем разработанный инструмент на macOS. Логика работы с трафиком в userspace сохраняется, но интеграция с системой требует иных решений. Разберем особенности создания utun-интерфейсов, настройки маршрутизации через ifscope и использования pf для NAT. По итогу запустим цепочку tun0 -> go app -> tun1 -> inet на новой платформе.Принципиальных изменений в коде нет, но туннели создаются и настраиваются иначе. В Linux-варианте я открывал туннель без сторонних библиотек,…
Привет, Хабр! Я — Владимир Балун, и это — вторая часть материала о пакете с отпугивающим названием «unsafe» в Go и том, чем он может быть реально полезен. В первой части мы рассмотрели его содержимое, особенности и нюансы, оптимизации кода с использованием unsafe — все это вы можете освежить в памяти по ссылке.Сегодня перейдем непосредственно к той самой «магии»: трюки, хаки, советы и лучшие практики с моей стороны. Трюки и хакиВажно понять: я не говорю, что вы должны делать именно так на работ…
Проблема: тяжёлые AI-агенты на маленьком железеПоследнее время я экспериментировал с AI-агентами на Raspberry Pi 5.И довольно быстро столкнулся с проблемой: большинство существующих агентных фреймворков оказываются слишком тяжёлыми для небольшого железа.Типичная архитектура таких решений включает:Python-фреймворкнесколько фоновых сервисовorchestration слойиногда векторную базудовольно сложную конфигурациюНа сервере это нормально работает. Но на Raspberry Pi всё начинает ощущаться иначе:долгий с…
Всем привет!В этой статье мы рассмотрим следующий кейс. Есть некоторый внешний поставщик zip архивов, эти архивы содержат в себе множество папок, которые в свою очередь содержат различные js, html и css файлы. Архивы являются 3D турами, для обзора различных помещений музеев. Наша задача, как бекенд разработчика, предоставить пользователю возможность загружать эти архивы на сервер, для последующего просмотра их на соотвествующих страницах веб-сайта.Графическое администрирование файлов, может осу…
Идея этого проекта родилась у меня после двух событий.Первое случилось в самолёте. Мне было нечем заняться, и я решил посмотреть фантастический фильм «Она» (Her, 2013). Я человек впечатлительный, и если в истории есть драма, то легко начинаю сопереживать героям. Фильм рассказывает об одиноком мужчине, который устанавливает ИИ-операционную систему, начинает с ней общаться и постепенно влюбляется в неё. Спойлерить не буду - фильм действительно стоит посмотреть.Второе событие - это хайп вокруг Ope…
В данной статье рассматриваются примечательные ошибки при работе с Kafka, в том числе при использовании библиотеки KafkaJS, а также способы их устранения и методы увеличения производительности при публикации и обработки сообщений.Предполагается, что читатель имеет базовое представление о Kafka (раздел «Общие термины» поможет освежить информацию) и функционале библиотеки KafkaJS.В первой части разбираются аспекты, связанные с публикацией сообщений.Общие терминыBroker (Брокер/нода) – инстансы кл…
Frontend Status: Привет! Свежий дайджест фронтенда и AIПривет!Это девятый выпуск Frontend Status — дайджеста по фронтенд-разработке.В этом выпуске:📺 Разговор с Машей Кондрашиной из Авито о том, что в IT больше не спорят из-за технологий.🤖 VS Code переходит на еженедельные релизы благодаря AI-агентам, Chrome объясняет разницу между MCP и WebMCP, а Эдди Османи вводит термин «comprehension debt».⚛️ React получает shadcn/cli v4 с режимом для агентов, SvelteKit ловит FOWL, Astro v6 подтягивает данны…
Почти три года назад я начал проект, который должен был принести структурированный бэкенд в стиле NestJS в Next.js App Router. Сегодня я выпускаю Vovk.ts — мета-фреймворк, который превращает Route Handlers в полноценный API-слой с контроллерами, сервисами и процедурами, автоматически генерируя типизированные RPC-клиенты, OpenAPI-спецификации и определения инструментов для LLM.Но эта статья не столько о фичах (хотя без них не обойтись), сколько о технических задачах, которые пришлось решать по д…