Обновить
87.25

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

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

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

Python и Go — идеальный набор (высокоуровневых языков)

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

Перед вами - известное письмо Линуса Торвальдса, где он написал, что если бы единственная причина использовать С, а не С++, была в том, чтобы отпугивать программистов на С++ - это уже была бы весомая причина.

Питон в последнее время завоевал лидирующие позиции в дата саенс и машинном обучении, что меня как разработчика на нём не может не радовать. В данной статье вы узнаете, почему, следуя духу минимализма из указанной цитаты, нужно использовать го в тех областях, где лидерство питона не так очевидно. А в питоне - не заморачиваться с async/await, фреймворками и прочей ерундой.

Читать далее

Линус Торвальдс жёстко отверг поддержку big-endian RISC-V

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

Линус Торвальдс в своём классическом стиле категорически высказался против предлагаемой поддержки режима big-endian для архитектуры RISC-V в ядре Linux. Всё началось с вопроса в рассылке о том, смогут ли патчи для RISC-V BE попасть в текущий цикл разработки ядра.

Читать далее

NE-Executable | Разбор деталей часть 4 (Импорты)

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

Эта статья завершает цикл статьей про формат сегментных NE файлов
для Microsoft Windows 1.x-3x и OS/2 1.x.
Эта часть содержит значительно больше информации, о несостыковках
с официальными документами. Это не только обзор, сколько
попытка открыть глаза на то, что "Не все так просто, как кажется на первый взгляд."

Читать далее

NE-Executable | разбор деталей Часть 3 (Экспорты)

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

Эта заметка или статья является продолжением цикла о формате
Новых исполняемых (ориг. "NE") файлов для Windows 1.x-3x и OS/2 1x.
В этот раз речь пойдет о таблицах резидентных и не резидентных имён,
будет разбор типов экпортируемых записей и много интересных наблюдений
за Microsoft LINK.EXE.

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

Читать далее

NE-Executable | Разбор деталей часть 2 (Таблица сегментов и релокаций)

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

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

Читать далее

NE-Executable | Разбор деталей часть 1 (Части заголовка)

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

Формат "Новых исполняемых" файлов называют сегментным. Даже в официальной документации Microsoft её заголовок это "Сегментный Новый Исполняемый формат" (ориг. "Segmented NEW Executable Format").

Этот сегментный формат программ поддерживал

Сегментную модель памяти;

Защищенный режим Intel 286+

Динамичкую компановку (Dynamic Linking);

Управление ресурсами;

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

Читать далее

NE-Executable | Разбор деталей часть 1

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

Формат "Новых исполняемых" файлов называют сегментным. Даже в официальной документации Microsoft её заголовок это "Сегментный Новый Исполняемый формат" (ориг. "Segmented NEW Executable Format").

Этот сегментный формат программ поддерживал

Сегментную модель памяти;

Защищенный режим Intel 286+

Динамичкую компановку (Dynamic Linking);

Управление ресурсами;

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

Читать далее

Пишем и запускаем свой исполняемый файл на Linux

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

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

Больше ничего интересного не будет :-)

Интересненько...

Управляем умным домом Home Assitant через Алису и без интернета. Часть 3

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

В этой части рассмотрим с теоретической стороны разработку дополнений (add-ons) для Home Assistant Operating System.

Читать далее

snapd, 100% загрузка cpu и баг ядра

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

Еще одна поучительная история из жизни с Linux, специально чтобы вы потеряли сон и покой, узнав что такое вообще возможно.

Читать далее

DIY-операционки с нуля — эксперименты энтузиастов

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

Поговорим о трёх пет-проектах, авторы которых не претендуют на разработку второго Linux, но интересуются устройством системного программного обеспечения. Расскажем про операционки Snowdrop, Banan, Serena и их уникальные черты.

Читать далее

Rust 1.90.0: ldd для x86_64-unknown-linux-gnu, публикация рабочих пространств и понижение x86_64-apple-darwin до Tier 2

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

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

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

$ rustup update stable

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

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

Что стабилизировано в 1.90.0

Пишем с нуля ядро операционной системы

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

Недавно я реализовал минимальный proof of concept ядра операционной системы с разделением времени для RISC-V. В этом посте я расскажу о том, как работает прототип. Целевая аудитория поста — все, кому интересно понимание низкоуровневого системного ПО, драйверов, системных вызовов и так далее. Надеюсь, он окажется особенно полезным для студентов, изучающих архитектуру ПО и компьютеров.

Это новый подход к упражнению, которое я выполнил на моём студенческом курсе по операционным системам; функционально он должен напоминать типичный проект по ОС. Однако в этом эксперименте сделан упор на современный инструментарий, а также на современную архитектуру RISC-V. RISC-V — это потрясающая технология, в которой проще разобраться быстрее, чем в других архитектурах CPU; в то же время она остаётся популярным выбором для многих новых систем, а не только архитектурой для обучения.

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

Читать далее

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

Пошаговая разработка SPI драйвера для ЗОСРВ «Нейтрино»

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

В современных встраиваемых системах SPI остаётся одним из ключевых интерфейсов для обмена данными с периферийными устройствами — от датчиков до Flash-памяти. При этом эффективная работа с SPI требует не просто доступа к регистрам контроллера, а продуманной архитектуры, где драйвер выступает как последнее звено между программной логикой и аппаратной реализацией. В данной статье мы расскажем про архитектуру SPI и на практикте разберем все этапы разработки SPI драйвера для нашей операционной системы реального времени "Нейтрино".

Читать далее

Процессорный модуль Corgi SoM v1 на базе Xilinx Zynq-7000

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

Коллеги, приветствую, обзорная статья работы с Corgi SoM v1 на базе AMD (Xilinx) Zynq-7000. Статья охватывает работу модуля с Vivado IDE, Vitis IDE, подготовку базового образа, работу с Embedded Linux (u-boot, device tree, linux kernel, rootfs). Подготовку образа для SPI NOR памяти, SPI NAND памяти и сопутствующие моменты необходимые для старта работы с данным модулем. Дополнительно статья будет полезно для linux embedded разработчиков, которые делать будут bring-up плат на базе AMD(Xilinx) zynq платформ.

Читать далее

Прячемся в «пещере кода»

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

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

Но это вовсе не значит, что в выполнимые файлы нельзя вносить изменения. Если мы корректно заменим один или несколько байтов, приложение не перестанет работать, но его логика может измениться. Например, как мы все знаем по крякам, что программу можно отучить от жадности, просто заменив одну инструкцию условного перехода на безусловный. Да, контрольная сумма изменится, но кто ее проверяет?

Читать далее

Кастомный процессор для OpenTelemetry Collector. А почему бы и нет?

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

Всем привет! Меня зовут Артем, я платформенный инженер и в работе часто приходится сталкиваться с Observability‑инструментами. Одним из таких инструментов, о котором я хотел бы рассказать является OpenTelemetry Collector. Это мощный инструмент, который позволяет работать с различной телеметрией и строить гибкие пайплайны для метрик, логов и трейсов.

Но иногда возможностей стандартного набора компонентов не хватает, чтобы справиться с поставленными задачами без использования костылей и изоленты. Тогда на сцену выходят кастомные компоненты для Otel-Collector.

В этой статье я расскажу про свой опыт написания кастомного процессора для otel-collector. Он обогащает спаны данными из CSV‑файла: находит совпадение по атрибуту и добавляет дополнительные поля прямо внутрь трейсов. Мы разберём архитектуру процессора, посмотрим код и конфигурацию, а в конце покажу, как собрать и запустить Collector с этим расширением.

Читать далее

Нужна такая же CRM для B2B, но с перламутровыми пуговицами. Будем кастомизировать сами

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

Часто складывается так, что проще работать через костыли, чем переезжать на новый софт. Производитель стройматериалов тоже оттягивал со сменой CRM из опасений поменять шило на мыло. Все изменилось, когда зарубежный вендор прекратил обслуживать российских клиентов. Требовалось решение, где можно в короткие сроки настроить специфические функции и не превысить бюджет. Показываем, как решили задачу через low-code платформу.

Читать далее

Ещё одно тестирование Angie, HAProxy, Envoy, Caddy и Traefik от Devhands

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

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

Читать далее

Достучаться до RDPMC вайб-кодингом Windows драйвера

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

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

Читать далее

Вклад авторов