Обновить
256K+

Системное программирование *

Обеспечение работы прикладного ПО

230,58
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Интеграция ИИ уровня предприятия: встраивание LLM в бизнес-процессы крупных компаний — redb.Route.Llm 3.1.1

Уровень сложностиСложный
Время на прочтение29 мин
Охват и читатели8.2K

redb экосистема

В предыдущей статье я анонсировал redb.Route.Llm как 24-й транспорт redb.Route — мы делали LLM ещё одним endpoint'ом наравне с Kafka, RabbitMQ и HTTP, чтобы выкинуть отдельную «AI-инфраструктуру», стоящую рядом с интеграционной. Заодно я повесил в конец статьи «честный skip-list» — список того, что в 3.1.0 ещё не доделано: streaming, ToolCacheStore, KnowledgeStore, BatchStore, EvalRunStore, sliding-window память, sandbox-инструменты.

Из этого skip-list'а делано больше, чем я планировал. Но не это главное. Главное — что в процессе доделывания обнаружилась настоящая ценность всей затеи: LLM-транспорт оказался не очередным чат-фреймворком, а недостающим звеном в ESB, после которого «бизнес-агент в проде» перестаёт быть отдельным проектом. Эта статья — про то, как чат-демо превращается в enterprise-агентскую платформу, не переписываясь и не превращаясь в «AI-монолит сбоку».

Всё, что ниже — реальный код из репозитория, не псевдокод. Ссылки на демо-маршруты в конце.

Читать далее

Новости

Алиасинг памяти в C++: прошлое, настоящее, будущее

Уровень сложностиСредний
Время на прочтение18 мин
Охват и читатели12K

Привет, Хабр! Меня зовут Владислав, я разрабатываю компиляторы в YADRO. В этой статье я расскажу вам про алиасинг памяти в C++: как он развивался, к чему пришел сейчас и что комитет по стандартизации языка думает делать с алиасингом в будущем. По пути я немного затрону алиасинг в других языках, рассмотрю связанные случаи undefined behavior, а также пропозалы C++, которые, как ожидалось, проблемы с алиасингом решат.

Читать далее

MLIR-to-RTL simulation flow: от linalg.matmul до systolic array

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели6.7K

Привет! Хотел бы рассказать о своем MVP проекта hw-mlir-lab, где я использую MLIR для lowering операции умножения матриц (matmul) на systolic array, который я симулирую в Verilator.

Читать далее

sing-box-lx: как, почему и зачем я завёл fork сетевого ядра — XHTTP + AWG2 для всех

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели9.5K

Если вы пользовались моим LxBox или десктопным лаунчером, то могли натыкаться на оранжевый баннер: «с этим узлом, скорее всего, не соединится». Так клиент честно сознаётся, что наткнулся на узел с транспортом XHTTP, а ядро sing-box, на котором всё крутится, его не умеет. В этот момент лаунчер тихо даунгрейдит конфиг до HTTPUpgrade.

А еще сразу как я выпустил приложение пришли запросы с AWG/AWG2 и такие: сделай! а я сюда

В какой-то момент я устал ждать и собрал свой форк ядра — sing-box-lx. Сегодня расскажу, зачем он понадобился, что внутри, и почему главное в нём — не сами фичи, а то, как он сделан.

Читать далее

Как попытка облегчить линукс может провалиться?

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели7.3K

Я считаю, что попытки сделать линукс системой для любого - не лучшая идея. Она может погубить много проектов, и вот почему.

Читать далее

Создаём HTTP/2-сервер на C++ и хостим на нём свой сайт

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели11K

Что будет, если написать HTTP/2-сервер на C++23 с нуля, собрать для него минимальный контейнер и выставить всё это в интернет? Я проверил проект на реальном трафике, усилил защиту бинарника и контейнера, столкнулся с ограничениями Cloudflare, bunny.net и Cloud Run, а заодно поймал утечку памяти в OpenSSL. Получился практический разбор того, где заканчивается учебный эксперимент и начинается эксплуатация системного кода.

Заглянуть под капот

Украсть пиксели и не задохнуться в сетевом канале. Возможности трансляции экрана в Windows

Уровень сложностиСредний
Время на прочтение23 мин
Охват и читатели5.3K

...или Протокол SPICE в современном графическом стеке, часть 3.

Мы продолжаем увлекательное путешествие по миру удалённого доступа. Это третья часть цикла про протокол доставки рабочего стола SPICE и то, как он вынужден работать в современных условиях.

Наша конечная цель - создать пилот стримингового агента для виртуальной машины на ОС Windows. В предыдущих двух частях рассматривали архитектуры самого протокола и графической подсистемы Windows, а сегодня мы готовим плацдарм в вопросах захвата экрана в Windows и сжатия видео средствами различных библиотек, фреймворков и API. С кодом и компактными пояснениями.

Приглашаю под кат всех любознательных - в особенности тех, кто сталкивается с Windows не только как пользователь; с решениями для удалённого доступа; с протоколом SPICE; с системами виртуализации и виртуальными машинами в принципе.

К технологиям доставки рабочего стола

WebSocket на C++11 и Rust: сравнительный анализ библиотек и двух реализаций одного протокола

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели8.4K

WebSocket — один из самых распространенных транспортов для обмена данными в реальном времени: чаты, биржевые котировки, игровые серверы, IoT. На практике выбор библиотеки редко сводится к вопросу «кто быстрее парсит заголовок фрейма». Важнее сочетание совместимости со старым набором инструментов сборки, поддержки TLS, сжатия per-message-deflate, модели асинхронности или блокировки, размера бинарника и способа обработки ошибок.

Читать далее

COM-порт из ничего: PTY, epoll и немного RS485-боли

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели9.9K

Демон «ничего не делал» — а одно ядро было загружено на 100%. История про виртуальный COM-порт для Linux/WSL2: PTY, epoll и эмуляция RS485, с кодом и граблями.

Рассказываю, как сделал vseriald — демон, который создаёт виртуальный последовательный порт /dev/ttyV0 в Linux и WSL2 и выводит его в сеть, FIFO или очередь сообщений. Разбираю три неочевидных места: псевдотерминал, после закрытия которого одно ядро уходит в 100%; притормаживание источника в однопоточном epoll-цикле без блокировок; эмуляцию полудуплексного RS485 как конечного автомата с таймингами и коллизиями. Плюс честный ответ на вопрос «зачем это, если есть socat и /dev/pts» — и код из реального проекта.

Читать далее

Почему OSDev никогда не превратят в конструктор

Уровень сложностиСложный
Время на прочтение4 мин
Охват и читатели12K

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

Обсудим «конструкторы ОС» и все его плюсы и недостатки.

Читать далее

100 вопросов с собесов по Rust: что реально спрашивают на junior, middle, senior позиции в 2026

Уровень сложностиСредний
Время на прочтение127 мин
Охват и читатели11K

Я срьрал 100+ вопросов с собеседований по Rust с краткими разборами: владение, типажи, конкурентность, async, unsafe, производительность и др. Отдельный продвинутый блок A1–A21 для staff-уровня. Цель - показать, где обычно спотыкаются даже опытные, и помочь подготовиться к следующему собеседованию. Надеюсь будет реально полезно!

Читать

Rust 1.96.0: новые типы Range, assert_matches, debug_assert_matches, WebAssembly targets

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели6.3K

Команда Rust рада объявить о выходе новой версии языка — Rust 1.96.0. Rust — это язык программирования, который помогает каждому создавать надёжное и эффективное программное обеспечение.

Если у вас уже установлена предыдущая версия Rust через rustup, вы можете получить 1.96.0 командой:

$ rustup update stable

Если Rust ещё не установлен, вы можете получить rustup на соответствующей странице нашего сайта и ознакомиться с подробными release notes для 1.96.0.

Если вы хотите помочь нам, тестируя будущие релизы, можете переключиться локально на beta-канал (rustup default beta) или nightly-канал (rustup default nightly). Пожалуйста, сообщайте обо всех найденных ошибках!

Что нового в stable 1.96.0

Поднимаем Linux на плате Zynq RK-7020-F V1.1 c помощью Buildroot и U-Boot SPL

Уровень сложностиСредний
Время на прочтение23 мин
Охват и читатели10K

Не так давно у меня на руках появилась плата RK-ZYNQ7020-F REV 1.1.

В данной статье я хочу поделиться своим опытом, связанным с подготовкой buildroot для данной платы. Здесь мы разберем этапы от формирования xsa файла до запуска платы и первых логов, с объяснением что происходит в железе на каждом этапе.
Также в рамках этой статьи я не буду использовать FSBL, мы попробуем обойтись U-Boot SPL.

Итак, приступим к рассмотрению!

Описание отладочной платы

Базовый набор периферии на данной плате, заявленный в документации:

Читать далее

Ближайшие события

Внутреннее устройство ОС RT-11. Копаемся в исходном коде. Часть третья

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели4.8K

В операционной системе RT-11 существуют варианты резидентного монитора с поддержкой многозадачности — например, RMONFB. Многозадачность здесь реализована полностью на программном уровне, без аппаратной поддержки. Если вам интересно посмотреть исходный код, отвечающий за многозадачность в RT-11, вместе с пояснениями из Руководства системного программиста — добро пожаловать под кат.

Читать далее

io_uring без розовых очков: 5 граблей, которые сожгли мне неделю, и где он реально быстрее epoll

Время на прочтение20 мин
Охват и читатели9K

io_uring продавали как убийцу epoll. На деле на HTTP keep-alive разница 0-15%, иногда не в его пользу. Но на NVMe с queue depth 128 - в 3 раза быстрее. Честный разбор с бенчмарками, реальными граблями (SQPOLL, cancel race, partial recv) и почему Google отключил io_uring в ChromeOS.

Читать далее

VBoxGuest для KolibriOS: архитектура и устройство драйвера

Уровень сложностиСложный
Время на прочтение55 мин
Охват и читатели10K

VBoxGuest — драйвер гостевых дополнений для KolibriOS, написанный с нуля на FASM.

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

Сравнение с upstream-реализациями для Linux/Windows/FreeBSD. Для системных программистов и энтузиастов OSDev.

Читать далее

Idempotency keys: 5 граблей, которые мы поймали на проде

Уровень сложностиСложный
Время на прочтение11 мин
Охват и читатели18K

Пятница, 23:47. PagerDuty: “Платёж AmEx, провайдер вернул 5xx три раза подряд, билеты не зарезервированы.” Открываю логи – действительно три ответа провайдера 5xx, ни одной успешной транзакции по нашей базе. Закрываю как временный сбой на стороне провайдера, пишу короткую сводку в дежурный чат и иду досматривать. Через 40 минут второй алерт – уже от ночной поддержки: клиент прислал скрин выписки, 3 списания подряд за одну бронь. У клиента рейс через 6 часов, ему нужна действующая бронь и подтверждение, что он завтра нормально улетит, а не тикет в поддержку.

Мы делали B2B-платформу для деловых поездок: бронь авиа, отели, трансфер, страховка, в финале – оплата корпоративной картой через платежный шлюз. С этой ночи началась история, которая закончилась переписыванием всего платёжного слоя нашего booking-сервиса. По дороге мы поймали 5 граблей.

Читать далее

CactOS

Уровень сложностиСложный
Время на прочтение7 мин
Охват и читатели15K

Эта статья — не руководство по написанию ОС и не туториал. Это срез архитектуры работающего ядра, которое прошло путь от вечных Page Faults и Segmentation Faults (в ring 3) до системы с 95 системными вызовами, сетевым стеком, COW и MLFQ-планировщиком. Все исходники открыты под GPLv3.

Читать далее

MemForge2: загрузочная флешка, которая за минуту говорит — какую планку памяти менять

Уровень сложностиСредний
Время на прочтение16 мин
Охват и читатели25K

Сегодня собирал HP EliteDesk 8300, четыре планки DDR3 по 2 ГБ. При первой загрузке — синий экран Windows. Стандартный сценарий: сейчас полчаса вытаскивать планки по одной, перезагружаться, выяснять какая сбойная. «Танцы с бубнами», которые каждый сервисник делал тысячу раз.

Потом вспомнил, что у меня есть собственный инструмент ровно для этого. Воткнул флешку, прогон, минута — на экране большими буквами: REPLACE DIMM1, confidence HIGH. Чтобы убедиться что программа не «запоминает» слот а реально находит планку, переставил её в DIMM4. Прогон повторно — нашла её и в DIMM4, тот же серийник из SPD. Замена планки — BSOD больше нет.

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

Сразу честно про авторство. Я не программист. Я сборщик. Код MemForge2 писал не я — его писал Claude (LLM от Anthropic) под мою постановку задачи. Я приходил с пониманием предметной области («нужно SPD через SMBus, серийник для гарантии, MCA‑снимок до/после, контекст в момент ошибки»), описывал что должна делать программа на конкретных кейсах со своей сборки, гонял каждую версию на реальном железе, ловил баги, возвращался с дампами и описаниями поведения. Claude писал C, разбирался с UEFI‑API, MSR‑ами, SMBus‑протоколом, SPD JEDEC‑стандартом.

Читать далее

Zero — новый agent-first язык программирования от Vercel, который изменит все (нет)

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели17K

Agent-first язык программирования звучит как хорошая идея, да?

В конце концов, агентам не нужны фигурные скобки. Им не нужна красота if, while, for, match, Result, try, await, naming conventions и вот этого всего, сделанного для нас - кожаных мешков.

Именно поэтому Zero от Vercel Labs на первый взгляд выглядит как интересный эксперимент. Официальный сайт называет его языком для агентов, README говорит про "agent-first programming language", а авторский пост в X обещает systems language, который быстрее, меньше и проще для агентов в использовании и дебаге.

Звучит почти убедительно. До тех пор, пока вы не открываете код.

Читать далее
1
23 ...