❌

Reading view

Внутри диаграммы Ганта: холст 480 на 360, палитра на 30 цветов и число без последнего бита

Я собираю файл конфигурации из XML так, чтобы он совпал с платформенным с точностью до бита. Диаграммы Ганта в типовых конфигурациях пустые, и на них ушло шесть дней. Внутри нашлись обычная диаграмма, воображаемый холст 480 на 360, число, у которого платформа теряет последний бит, и палитра, где серия номер -1 получает 15-й цвет. Рассказываю, как это устроено и как добывалось: дизассемблер, Frida и серия загрузок платформой.

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

Управляемый DTLS-прокси на Rust: решения, ошибки и цена упрощения

В первой части я рассказывал, как, почти не зная Rust, взялся за UDP/DTLS-прокси для системы управления 300 тыс. устройств и поручил большую часть реализации ИИ. Тогда я сосредоточился на том, как меняется работа инженера, когда код пишет модель.

Теперь — техническая сторона этой истории: почему локальная таблица маршрутов в XDP теряла рукопожатия, как прокси без общего хранилища находит владельца DTLS-сессии и почему 26-байтовый CID с HMAC и подписанный PPv2 уступили более простым решениям. Расскажу, какие компромиссы пришлось принять и какие ошибки удалось обнаружить на испытаниях.

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

Unbihex 0.2.3: разбор узких мест TCP, 938 подключений/с в REALITY и консольный клиент для роутеров и NAS

Недавно я выложил первую статью про Unbihex - легковесный VPN-клиент и сетевое ядро на Rust, которое потребляет 12-18 МБ оперативной памяти. Ожидал дежурной критики и пары десятков просмотров, но публикация собрала больше 2000 прочтений, репозиторий перевалил за сотню звёзд, а в комментарии и Issues пришли практикующие сетевики и системные инженеры.

За прошедший день проект дорос до версии 0.2.3. Мы закрыли основные запросы сообщества (роутеры, NAS, JSON-конфиги, TUI в стиле btop), добавили постквантовый обмен ключами, выложили тестовый сервер и провели глубокий аудит производительности, в результате которого обогнали Xray и sing-box по скорости обработки новых соединений.

Но перед техническим разбором сразу закрою вопрос, который активно обсуждали в прошлый раз.

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

Я сделал экран для мониторинга моих квот LLM провайдеров

Начну с того, что еще недавно мои познания в схемотехнике балансировали на уровне непонимания различия между транзистором и резистором. Из всего арсенала, хоть как-то применимого к embedded, за душой был только Rust. Но когда на радаре замаячил так называемый встриваемый AI (машинное обучение и компьютерное зрение прямо на копеечных микроконтроллерах), - спортивный интерес взял верх. Не тратя недели на теорию, я просто доехал до радиорынка и вернулся с джентльменским набором первопроходца: ESP32, первым попавшимся экраном и энкодером. Амбиции по запуску нейросетей моментально разбились о суровую реальность первого вечера: как вообще заставить этот кусок текстолита ожить и вывести на дисплей хотя бы пару цифр?

Цифры при этом были вполне конкретные. У меня сразу несколько подписок на LLM, и у каждой свои лимиты: окно на пять часов, окно на неделю, месячный потолок. Сбрасываются они в разное время, живут на разных сайтах, а узнать остаток можно, только открыв нужную вкладку. Мне хотелось поднять глаза от клавиатуры и сразу увидеть, на что еще хватит квоты.

В итоге получился настольный монитор: нативное приложение не жрущее много памяти для Windows, которое как раз собирает лимиты четырех подписок, и маленький экран с ESP32 показывающий их прямо перед глазами.

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

Лаунчер Minecraft на Rust и iroh: P2P-комнаты, автосинхронизация сборок и голос поверх QUIC

Играть вдвоём в Minecraft с модами сложнее, чем кажется: нужны одинаковые версии, загрузчик, моды и конфиги, а потом ещё Hamachi или аренда сервера. Я написал лаунчер на Rust и Tauri, где всё это заменяет одна ссылка. Расскажу, как устроены P2P-комнаты на iroh (QUIC), туннель игрового трафика, передача сборки в формате .mrpack и голосовой чат на Opus с RNNoise. А ещё про то, как я делал проект вместе с Claude Code

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

Вычисления, хранение, масштабируемость: погружение в архитектуру гиперконвергентной дата-платформы

Привет, Хабр. Меня зовут Павел Кутаков. Я главный архитектор VK Data Platform, VK Tech.

Более 10 лет подход с разделением compute- и storage-слоев де-факто считается стандартом, следование которому позволяет максимально эффективно использовать доступные ресурсы. Но на практике подобный подход применим не всегда — например, по нашему мнению, он не всегда оптимален для построения платформ данных. Именно поэтому при разработке VK Data Platform мы реализовали единую гиперконвергентную архитектуру. 

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

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

Rust круче C++? Часть 1: скорость

Привет, Хабр!

Спор «Rust или C++» идёт с 2015 года, с выхода Rust 1.0, и за одиннадцать лет превратился в отдельный жанр со своими приколами. «В Rust на каждом индексе проверка, вот он и тормозит». «В плюсах проверок нет, значит, быстрее». «Ага, а у Rust ссылки не пересекаются, так что быстрее как раз он». «Паника дорогая», «исключения дорогие», «абстракции бесплатные». Каждая сторона уверена в своём, а в ассемблер почти никто не смотрит, хотя ответ лежит прямо там (и местами он неприятный для обеих сторон).

В одну статью вопрос «круче ли Rust, чем C++» не влез, так что это первая часть, и она про скорость. Безопасность и прочие поводы поругаться ждут своей очереди.

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

UI-фреймворк для людей и AI-агентов: Rust, C, C++, ASM, 6 платформ, 900 КБ

Хочу представить лёгкий UI-фреймворк на Rust, работает на Windows (x64, ARM), macOS, Linux, Android, iOS/iPadOS и даже в браузере через WASM. Снабжён примерами использования на Rust, C, C++ и даже ASM.

Отличительная особенность: фреймворк имеет два формата – либо отображает графический UI для людей, либо же рендерит UI в JSON так, чтобы с ним могли взаимодействовать AI-агенты без снятия скриншотов. Эта же фишка позволила добавить возможность перебросить UI по SSH.

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

Бесплатное ПО, пять лет разработки и немного наглости. Как я пытаюсь попасть в реестр российского ПО

Привет, Хабр! Я Артур Валиев. Разработчик, предприниматель из небольшого села в Ставропольском крае и человек, который однажды решил, что написать собственный удалённый рабочий стол — хорошая идея.

Спойлер: идея оказалась хорошей. А вот количество работы я немного недооценил. Примерно на пять лет.

Но начать хочу совсем с другого.

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

Пишем свою мобильную ОС с нуля на Rust. Часть 4: GUI, SQLite и DOOM

Прошёл год с момента выхода первой части. Тогда нам удалось вывести изображение на экран настоящего телефона. Это была проверка того, что идея в принципе реализуема.

Дальше началась системная работа, о которой я писал в предыдущей части. Теперь ОС наращивает userspace-слой. На экран вернулась картинка — уже с окнами, кнопками и приложениями для телефона, Raspberry Pi и QEMU. На телефоне заработал и тачскрин.

Эта часть будет обзорной: посмотрим, как теперь устроены связи между программами, файловая система и поддержка C и C++, запустим SQLite и DOOM. А в конце напишем своё GUI-приложение — калькулятор. В третьей части он выводил результат в UART. В этой сделаем калькулятор с окном и кнопками.

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

Давай отлаживать по TCP

Когда в моей Среде разработки К дошла очередь до отладчика, выбор был такой: по HTTP - проще, но с глюками, знакомыми по мобильной разработке; по TCP - быстрее, но протокол закрытый: им штатная среда говорит с тонким клиентом. Я выбрал TCP: снял обмен с провода и повторил его. RSA-1024 с PKCS#1 v1.5, 192 байта на тройном DES, NTLM, контрольная сумма по полям GUID и идентификатор, который нельзя делать случайным. Рассказываю, где спотыкался и что получилось: точки с условием, шаги, стек, локальные, вычисление и остановка по ошибке - на живом клиенте.

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

13 релизов за неделю: OpenShift, алерты, фильтры и первые внешние контрибьюторы Sextant

В прошлой статье про Sextant в конце стоял роадмап на четыре версии. Все четыре вышли к 23 октября, а за ними — ещё восемь релизов: алерты из Prometheus и Alertmanager, логи удалённых подов из Loki, OpenShift, OLM, k3s/RKE2, vcluster и фильтры в таблицах. Всего за неделю — 13 релизов, от 0.20.0 до 0.25.5.

Но главное в этой неделе — сообщество. Первые внешние pull request’ы вошли в релизы, идея из внешнего PR сократила память на отслеживаемый объект в пять раз, а целая версия 0.25.5 выросла из одного обсуждения про AI-агентов на кластерах с ограниченным RBAC.

Sextant — десктопный клиент Kubernetes на Rust и Tauri 2, замена Lens без аккаунта и телеметрии, со встроенным MCP-сервером для AI-агентов. Он бесплатный и таким останется. Весь его код сгенерирован Claude Code: человек ставит задачи, принимает архитектурные решения и делает ревью, а каждое изменение много раз проходит тесты.

Под катом — дайджест релизов, обзор нового по темам и благодарности всем, кто присылал баги, идеи и код.

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

[Перевод] Ускоряем self-hosted Convex в два раза: AOT-компиляция TypeScript-функций в Wasm

Convex – это новый, но набирающий популярность фреймворк для реактивных веб-приложений, который позволяет писать транзакционные квери (queries) и мутации (mutations) на TypeScript с гарантиями консистентности.

Вся статья ниже относится к self-hosted версии Convex: convex-backend, а точнее, к моей пропатченной версии оного, так как “официальная” версия не пригодна к работе в продакшене и вряд ли тестировалась на сколь-нибудь нагруженном кейсе. Моя версия работает на виртуальном сервере с 32 ядрами и 64Гб памяти и обрабатывает до 15 тысяч Convex-кверей и мутаций в минуту.

Я навайбкодил convex-wasm-compiler, который компилирует Convex-квери и мутации в WebAssembly, и соответствующий патч для convex-backend, позволяющий выполнять скомпилированные в Wasm Convex-функции на файберах Wasmtime прямо в Tokio рантайме convex-backend.

TLDR: квери и мутации в среднем работают в 2 раза быстрее, хвосты задержек сократились втрое. Объём памяти, который сервер удерживает под готовые к выполнению окружения (V8-контексты или Wasm-окружения), уменьшился на 80%.

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

Тулпар: компилируемый язык с казахским синтаксисом, написанный с нуля (без LLVM, без libc, без C-компилятора)

Рассказываю про Тулпар (Тұлпар) — язык программирования с казахскими ключевыми словами и синтаксисом в стиле Python, который компилируется в нативный код x86-64. Компилятор и рантайм написаны на Rust с нуля: без LLVM и без libc, с собственным аллокатором регистров и сборщиком мусора. Разбираю конвейер компиляции, устройство GC, замеры против C, Rust и Python, а также то, чего в языке пока нет.

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

Можно ли навайбкодить операционную систему как Linux, только быструю?

Наступила эпоха, когда любая домохозяйка за несколько промптов поднимает себе CRM: фронтенд на JS, бэкенд на Go, данные в Postgres. И при этом не понимает ни слова из того, что я сейчас написал.

А куда заведёт кривая гика, который пятнадцать лет отдал коммерческой разработке ещё в доLLMную эпоху?

Дело было вечером, подписка на Claude Code простаивала, мысли вертелись. Перебирая прожитые годы, я вспомнил детскую мечту: написать свою операционную систему. Хорошую, чтобы всех радовала и приносила людям пользу. Как Windows, только лучше.

Windows из списка хороших систем я вычеркнул ещё в школе, вместе с синим экраном. Да и Linux перестал казаться идеалом, когда я начал считать микросекунды.

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

Четыре протокола и одна кнопка «Разрешить»: как я подключил Claude Code, Codex, Qwen и Hermes к Telegram

Claude Code и Codex умеют работать долго и без присмотра, но только пока ты сидишь рядом. Агент то спрашивает разрешение на команду, то задаёт уточняющий вопрос и ждёт ответа. Отошёл от компьютера - и всё встало.

Как-то мне пришлось срочно уехать по делам, а задач на день было много. Хотелось ставить их агентам с телефона и подтверждать команды кнопкой, а не держать открытыми шесть терминалов. Так появился agent-hub: десктопное приложение на Rust, в котором каждая тема Telegram-группы - отдельная сессия агента на моём компьютере. За 3-4 часа в дороге я провёл через него больше шести задач.

Похожие решения есть, но мне не подошли. Мне важно, чтобы у каждой задачи была своя история переписки и не приходилось помнить ID сессий, а темы в группе для этого подходят идеально.

В статье расскажу не столько про сам инструмент, сколько про то, как он устроен внутри: как четыре агента с разными протоколами сведены к одному интерфейсу, как запрос разрешения превращается в кнопку Telegram и обратно и какие ограничения Telegram пришлось обходить.

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

Переводчик в каждый дом

Одно время я очень боялся проходить собеседования на английском. При том, что знаю его неплохо и даже 2 года жил в США. Тем не менее, долгий перерыв в голосовом общении дает о себе знать. Особенно меня беспокоит то, что я могу не понять что именно мне говорят во время созвона.

Но оказалось, что это не очень страшно...
  •  
❌