❌

Normal view

Как Go выбирает механизм defer: open-coded, stack и heap

Про defer в Go до сих пор говорят, что он медленный и в горячем коде ему не место. Когда-то так и было: до Go 1.13 каждый defer означал аллокацию в куче. Но с тех пор компилятор научился реализовывать его тремя способами: open-coded, stack и heap. Первые два почти ничего не стоят, а в кучу defer попадает совсем не там, где обычно думают. Разбираемся, как компилятор выбирает между ними, почему defer в цикле всегда дорогой, а рекурсия, горутины и замыкания с захватом переменных на самом деле не страшны, и как посмотреть решение компилятора одной командой.

Читать далее

Не давайте агенту docker.sock: как я сделал для ИИ отдельный вход в свой Docker-менеджер

Я пишу d9c, терминальный менеджер Docker для удалённых серверов, и однажды заметил, что через него к моим серверам ходит уже не только я, но и Claude Code. Таблицы для людей агенту не подходят. Ему нужен JSON, ограничение на объём вывода, чёткая граница между «посмотреть» и «сломать» и человек, который подтверждает удаление. Рассказываю, как сделал для агентов CLI-режим, MCP-сервер и десять skills, почему инструментов двенадцать, а не сорок, и как агент всё-таки удалил стейджинг, не спросив меня, хотя задумано было ровно наоборот.

Читать далее

Остатки нельзя обороты

IT драма с элементами комедии

Фриланс манит свободой — к черту офис! Теперь ты сам себе начальник! Однако свобода эта обманчива. Вот вроде сидишь ты, работаешь дома, тебе тепло и сухо, и начальства над тобой нет, и никто не мешает, ты один... совсем один. И отвечаешь за все ты. А время уже далеко за полночь, А код выкидывает исключения, а Django ORM отказывается вывозить нагрузку, а все варианты архитектуры сулят скорее минусы, а таймер биржи неумолимо тикает. Тик‑тик‑тик... И нужно уже что‑то решать, но помочь некому — психов нет.

Читать далее

Пишу разбор демок CS2 на вахтах: Go‑парсер, ИИ без фантазий и грабли Laravel

Я работаю в авиации, езжу на вахты, у меня ипотека и семья — и по вечерам после смены пишу платформу для тренировок в CS2. Внутри: Go-парсер, который разбирает демку на 350 МБ за 4 секунды, ИИ-разбор, где факты считает код, а модель только объясняет, тактическая доска на Reverb и пачка граблей Laravel, которые стоили мне вечеров.

Читать далее

UN condemns U.S. economic embargo of Cuba though more nations sit out amid Trump push

The U.N. General Assembly condemned the U.S. economic embargo of Cuba for the 34th year on Wednesday, even as Washington's campaign to influence the outcome led to a number of countries voting against the resolution or sitting out the decision for the first time.

Как я устал от VPN‑клиентов на 300 МБ ОЗУ и написал свой TUN‑клиент на чистом Rust (Unbihex)

Всем привет! Последние пару лет экосистема обхода блокировок развивалась по принципу «больше фич — жирнее обертка». Большинство популярных десктопных и мобильных клиентов сегодня — это либо тяжелые комбайны на Electron/Flutter, либо графические обертки над ядром Xray или sing‑box через gomobile и C‑FFI, которые тянут за собой рантайм Go, сборщик мусора и жрут от 200 до 400 МБ оперативки просто в фоне.

Когда у тебя слабый ноутбук, офисная машина или телефон, на котором открыта пара тяжелых приложений, лишние 300 МБ под один только VPN начинают ощутимо бить по системе. А если речь идет об iOS, где системный лимит на сетевые расширения (PacketTunnelProvider) составляет жесткие 50 МБ, такие клиенты регулярно падают по OOM (Out Of Memory) при попытке загрузить крупные гео‑базы.

В один прекрасный день мне это надоело. Я решил взять всё в свои руки и написал с нуля собственный кроссплатформенный TUN‑клиент и сетевое ядро на чистом Rust без единой сторонней прослойки. Встречайте — Unbihex (названный в честь гипотетического 126-го элемента унбигексия). Сейчас он потребляет 18 МБ ОЗУ в режиме TUN (и 12 МБ в прокси), поддерживает полный стек современных протоколов и уже готов к продакшену.

Под катом — как это устроено под капотом, какие грабли пришлось собрать при работе с TUN под Windows и как удалось подружить ядро с популярными панелями.

Читать далее
❌