Обновить
97.52

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

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

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

.NET под микроскопом | процессы, метаданные, AOT и GC

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

Эта статья скорее всего будет полезна тем, кто продолжает разбираться или работать на платформах .NET . Предупреждаю! Здесь будет далекое плавание в разные места, и с точки ОС будет упомянуто достаточно много!

На просторах Хабра есть несколько хороших статей про устройство и поведение .NET. Мне хотелось бы стать "чем-то по связующим" между ними.

Спустить шлюпку

Новости

Как работает RPC. Пишем свое RPC-приложение

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

В данной статье мы подробно поговорим об устройстве RPC. Также для лучшего понимания применим знания на практике и напишем свое RPC-приложение под Windows.

Изучить матчасть

Join-to-domain. Вводим устройство под управлением РЕД ОС в домен и забываем про скучные мануалы

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

Привет, Хабр! Меня зовут Владлен, я ― инженер-программист отдела разработки РЕД ОС. Ко мне пришли с предложением рассказать об утилите, которую мы создали для быстрого ввода устройств на базе РЕД ОС в домен. Тема интересная, ведь join-to-domain умеет в несколько механизмов подключения, пережил перенос на другой язык программирования и дружит с РЕД АДМ. Итак, сегодня я расскажу подробнее о том, как мы создали join-to-domain и как использовать его на благо вашей ИТ-инфраструктуры.

Читать далее

Необычный заказ: разработка под CP/M

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

Древний дисковод ожил и издавая чудовищный скрежет стал медленно загружать мое послание. Через какое-то время на экране появились строки:

NE PUERO GLADIUM, DR. KRIGER. 04.03.2026

Три пары глаз повернулись ко мне в немом изумлении.

— Это длинная история, нам лучше присесть.

Читать далее

Внутренне устройство CP/M: копаемся в исходном коде

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

CP/M — это известная операционная система для 8 битных процессоров Intel 8080. Если вам интересно узнать, как она была устроена на самом деле (не по пересказам, а по оригинальному исходному коду) — добро пожаловать под кат.

Читать далее

Под капотом Beetroot: как я написал менеджер буфера обмена на Tauri v2 и Rust с установщиком 6 МБ

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

Переезд с macOS на Windows для разработчика часто сопровождается болью от потери привычного инструментария. В моем случае решающим стимулом свитчнуться на ПК стала мощная видеокарта. Сейчас мой верный MacBook всё так же лежит на столе и даже подключен к мониторам, но по факту именно Windows (как бы сильно она мне ни не нравилась) стала основной рабочей системой.

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

Штатный инструмент Windows (Win+V) разочаровал моментально: лимит в 25 элементов, отсутствие поиска и полное обнуление после перезагрузки ОС. Поиск альтернатив тоже не увенчался успехом: Ditto надежен, но выглядит как гость из 2005 года, а мощный CopyQ имеет перегруженный интерфейс суровой системной утилиты. Ни в одном из них не было современных функций вроде OCR «из коробки» или базовой интеграции с LLM для обработки текста на лету.

Решение напрашивалось само собой — написать свой велосипед. Но сделать его легким, быстрым и без Electron. В этой статье расскажу о том, как устроен Beetroot — менеджер буфера обмена с бесконечной историей, нативным OCR и AI-трансформациями.

Как это работает под капотом

Контракт вместо настроек: чего я жду от OLTP-БД

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

После первой статьи в комментариях несколько раз прозвучало примерно одно и то же:
"Всё правильно, но это же про любую зрелую СУБД — что с этим делать?"

Я думал над этим вопросом несколько недель. И в итоге решил не искать ответ в виде
"возьмите правильный инструмент X" — а попробовать честно сформулировать:
какими свойствами OLTP-БД должна обладать сама по себе, независимо от того,
насколько хорош ваш оператор, консультант или runbook.

Что такое "контракт" — и почему это не маркетинг

Попробую объяснить не через определение, а через ощущение.

Когда вы покупаете автомобиль, вы не читаете инструкцию к тормозам каждое утро.
Вы просто знаете: нажал педаль — машина тормозит. Это контракт. Он не зависит от того,
правильно ли вы настроили тормозную жидкость этим утром или не забыли включить
"режим торможения" в меню.

Читать далее

Mini-Shell: Часть 2 — Pipes, фоновые процессы и управление задачами

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

Это продолжение серии. Если вы не читали первую часть, рекомендую начать с неё: https://habr.com/ru/articles/1000766/

Читать далее

Управление предпусковым подогревателем Webasto

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

Добрый день, в контексте моего хобби по схемотехнике и программированию микроконтроллеров появилась идея реализовать устройство для дистанционного запуска предпускового котла Webasto, в моем случае это "Webasto Thermo Top Evo 5". Вероятно предложенный материал подойдет и для реализации устройств управления для схожих отопителей данной марки работающих по протоколу W-bus.

Читать далее

«Создание встраиваемых систем». Обзор книги

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

Как только я узнал, что книга Making Embedded Systems 2nd Edition (русская версия: «Создание встраиваемых систем. Паттерны проектирования отличных программ. 2-е издание») доступна для предзаказа, я не раздумывая отправился на Amazon и раскошелился за неё.

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

Рассчитывал, что эта книга даст мне хороший каркас, на базе которого можно будет формализовать мой рост и обучение.

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

Просмотрев на сайте O'Reilly предметный указатель и выложенные для просмотра главы, я обнаружил, что такой «конфигурационной» главы в книге нет. Также в предисловии прямо рекомендовалось не прыгать по книге от главы к главе, а проработать её всю по порядку.

Читать далее

Профилирование и PGO в LLVM

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

Нередко при оптимизации приложений, написанных на языках со статической компиляцией (C, C++, Rust), наступает момент, когда стандартные методы оптимизации, такие как улучшение алгоритмов, подбор структур данных, флаги компиляции вроде -O3, перестают давать дополнительный прирост производительности. В этот момент многие вспоминают про фундаментальное ограничение статических компиляторов. В отличие от JIT, они не знают, какой код будет горячим, а какой холодным. JIT-компиляторы (JVM, V8, .NET) получают эту информацию в runtime и адаптируют оптимизации под реальную нагрузку. Статические компиляторы генерируют машинный код заранее и лишены информации о поведении программы в runtime. Для решения этой проблемы используется подход Profile Guided Optimization (PGO). Он позволяет собрать данные о выполнении программы и передать их компилятору для принятия более оптимальных решений при генерации кода. По сути, PGO - это способ дать статическому компилятору некоторые преимущества JIT, сохраняя при этом все преимущества ahead-of-time компиляции: отсутствие пауз на перекомпиляцию и полный контроль над билдом.

Читать далее

Почему AI не может полноценно участвовать в разработке на С++

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

По данным отраслевых опросов, в 2025 году 84% разработчиков использовали ИИ-инструменты для написания, отладки и автоматизации кода. А в 2026 году ожидается, что более 80% компаний будут применять генеративный ИИ в разработке своих продуктов. Но у LLM есть ограничения, которые не позволяют им быть одинаково эффективными для всех языков программирования — например, для С++.

Тему ограничений AI в пайплайне «плюсовой» разработки обсудили Андрей Золотых и Илья Казаков из YADRO, Константин Владимиров из Синтакор, Илья Шишков из Сбертех и Денис Фокин из LRI. К каким выводам пришли эксперты, читайте под катом. 

Изучить ограничения →

Кен Томпсон, который в одиночку написал первые версии Unix

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

Кен Томпсон с Деннисом Ритчи являются соавторами Unix — операционной системы, которая лежит в фундаменте современной ИТ-индустрии. Важно заметить, что он начал работать над Unix раньше Ритчи. По словам Томпсона, он в одиночку написал первые версии Unix и делал в Bell Labs предшественников Unix и С — ОС Multics, языки Bon и B — ещё до того, как туда пришёл юный аспирант Деннис, помог всё улучшить и разработал язык С. Но вообще их карьера очень похожа: обоих после вуза направили в Bell Labs, где они трудились почти всю жизнь.

Томпсон неоднократно входил в топ-10 программистов всех времён и тому подобные рейтинги. Кроме Unix, в его послужном списке операционная система Plan 9, язык программирования Go и несколько выдающихся программ.

Читать далее

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

Кэш, который нас предал: как мы ловили призраков в L3 и нашли side-effects в продакшене

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

Это история о том, как мы несколько недель искали странные скачки latency в продакшене и в итоге уткнулись в поведение кэша процессора. Не в аллокатор, не в GC, не в сеть. В кэш. В статье — реальные эксперименты, код, метрики, гипотезы, которые не подтвердились, и довольно неприятные выводы о том, насколько процессор может быть непредсказуемым, когда система нагружена по-взрослому.

Читать далее

Open Source: Зачем это тебе на самом деле?

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

Open Source — это отличный способ выйти за пределы учебной песочницы. Это даёт возможность заглянуть под капот известных инструментов, поработать плечом к плечу с опытными разработчиками и внести вклад в продукты, которыми пользуются тысячи людей.

Рассказываем, как найти актуальный проект, не утонуть в заброшенных Issue и грамотно отправить свой первый PR. А если вы сами развиваете проект то узнаете, как дать ему шанс получить: звёзды, обсуждение, интерес со стороны других разработчиков и первые контрибьюты в дружелюбной среде.

▶ Войти в Open Source

Типовая разметка памяти STM32F4

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

Как Вы могли заметить, у микроконтроллеров STM32F4 секторы NOR Flash памяти обладают разным размером: 16kByte(4 шт), 64kByte (1 шт), 128kByte ( 7+ шт.).

Это накладывает определенную специфику на программирование микроконтроллеров STM32F4.

Из каких секций обычно состоит Flash память микроконтроллерной программы?

В этом тексте я предлагаю простое решение проблемы разметки памяти для случая работы с микроконтроллерами STM32F4.

Читать далее

Внутреннее устройство веб-сервера. Часть 1: От syscalls до WSGI

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

В этой статье мы разберём, какие механизмы предоставляет Linux для работы с сетью и как на их основе строятся фреймворки и библиотеки, которыми мы пользуемся каждый день. К концу статьи мы напишем минималистичный WSGI-веб-сервер, с помощью которого можно запускать произвольные WSGI-приложения.

Читать далее

Как разрабатывать утилиты для тестов embedded-прошивок без железа: практика Test Driven Development

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

Часто SDET-инженеры, работающие со встраиваемыми системами, не приступают к работе, пока не получат реальное железо: датчик, микроконтроллер или плату с новым чипом. Такой подход обычно оправдывают тем, что без физического девайса «на столе» писать корректно работающий софт невозможно. Очевидный минус: увеличивается время выхода продукта и нового функционала на рынок. Но разработку можно начать, даже не имея в своем распоряжении устройства: все дело в договоренности между командами.

Меня зовут Рустам Ахмадуллин, я старший инженер по системной верификации аппаратуры в YADRO. Расскажу на примере датчика температуры LM75A, как написать API без физического доступа к устройству и его прошивке. Разберем методологию Test Driven Development, при которой разработка начинается с написания автоматизированных тестов, а не самого кода.

Читать далее

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

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

Что происходит, когда вы вводите ls в терминале? Как 2 буквы превращаются в список файлов на экране? Я решил разобраться и написал свой терминал с нуля на C++.

В этой статье я объясняю через метафору ресторана, как работают три магических системных вызова — fork(), exec() и wait() — которые лежат в основе любого терминала. Вы узнаете, почему cd нельзя сделать обычной программой, как работает перенаправление >, и какой коварный баг я поймал из-за непонимания процессов. Без сложной теории — только практика и понятные объяснения.

Читать далее

PostgreSQL для финансов 2.0: Как мы заменили SWIFT на gRPC и внедрили WASM-политики

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

В предыдущих сериях (От стартапа к протоколуПочему финтеху нужен капитальный ремонтПочему мы терпим факс в эпоху ИИ) мы обсуждали, почему современный финтех - это "Ferrari на грунтовке", и зачем мы начали писать с нуля свой леджер Qazna (на Rust) и ERP-систему Orda (на Go).

В комментариях вы справедливо спрашивали: "Зачем изобретать велосипед, если есть PostgreSQL и Kafka?" и "Чем это отличается от Hyperledger/Ripple?".

Сегодня я отвечу на эти вопросы кодом и архитектурой. Мы не просто "переписали базу". Мы построили суверенный стек, который делает три вещи, невозможные в legacy-системах:

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