Обновить
128K+

C *

Типизированный язык программирования

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

Автоматизация SBOM в большом legacy-проекте: опыт LibreOffice и Collabora Online

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

Вот уже более 20 лет проходит масштабная конференция разработчиков свободного и открытого ПО – FOSDEM. Для CodeScoring она примечательна тем, что с 2021 года на ней регулярно представлен тематический деврум "SBOMS and supply chains" посвященный составу программного обеспечения и цепочкам поставок.

Эта статья – адаптация доклада "LibreOffice and Collabora Online – how we managed to automate SBOM generation for a large legacy project", с которым Торстен Беренц выступил на конференции в 2026 году. Специально для вас мы перевели выступление и превратили его в статью, оригинал доклада на английском языке – по ссылке.

Читать далее

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

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

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

Читать далее

OSDEV: Разработка аллокатора на С++ часть 3. Финальный аллокатор со списками свободных блоков

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

В третьей статье пойдет речь уже о готовом аллокаторе который вполне пригоден для распределения памяти

Читать далее

Загружаемся с Raspberry Pi Pico

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

Я продолжаю освещать работу с USB на Raspberry Pi Pico. В текущей статье хочу привести пример, как можно использовать Raspberry Pi Pico в качестве загрузочного USB-устройства.

Читать далее

Преобразование числа в строку методом умножения на 10

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

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

Читать далее

Как я купил кота в мешке: реверс-инжиниринг электронных ценников. Часть 1. Знакомство с nrf52832

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

Как-то давным-давно я заинтересовался дешевым железом, ибо был студентом-ардуинщиком, который очень хотел сэкономить. И как-то раз пришла идея — поработать с E-INK дисплеем. Цены на новые модули на Али кусались, поэтому я отправился шерстить Авито и нашел там объявление о продаже б/у электронных ценников из супермаркета и DNS.

О чудо! Всего 250 рублей за штуку: плата, контроллер, корпус, и оно даже работает... наверное.

Я заказал целую партию, не подозревая, что внутри меня ждет коррозия всего - чего можно, чип nRF52832 в новой партии, нестандартный протокол связи и абсолютный ноль документации. О том, как я ковырял эти платы китайским программатором, как писал в RAM через GDB, убил пару ценников, экранов и в итоге завел дисплей через Zephyr RTOS. Спойлер: фрактал Мандельброта успешно выведен! Дум не за горами

Читать далее

OpenPGM: зачем Бирже мультикаст?

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

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

Читать далее

Один баг в проде, после которого я всерьёз воспринимаю неопределённое поведение

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

Много лет назад моя рутинная работа заключалась в поддержке большой базы кода на C++. Этот проект был настоящим кормильцем всей компании, и в нём предоставлялся публичный HTTP API, через который принимались онлайн-платежи. Речь шла об обработке платежей в размере миллиардов евро ежегодно.

Тогда меня ещё было не назвать опытным C++-разработчиком. Разумеется, я знал о неопределённом поведении, но как о чём-то абстрактном, о беде, которая приключается только с новичками. Как же я был неправ!  

В этой статье везде, где написано «структура», я имею в виду «структура или класс».

Читать далее

Обзор SPI Flash памяти MX25L6433F

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

В этом тексте я произвел обзор микросхемы SPI-NOR FLASH памяти MX25L6433F.
Показан код, который позволит запустить на микросхеме файловую систему LittleFS.

Читать далее

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

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

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

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

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

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

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

Читать далее

Четыре простых шага до изделия: использование проектирования на основе моделей для программно-определяемых радиосистем 4

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

В предыдущих частях этой серии статей мы рассказали о платформе быстрого прототипирования Zynq SDR,1 представили этапы использования MATLAB и Simulink для разработки алгоритма, который может успешно обрабатывать и декодировать передачи ADS-B,2 а также показали, как проверить алгоритм как в симуляторе, так и с помощью реальных данных, полученных с платформы SDR.3 Конечная цель всех этапов — создать проверенную модель, которую можно преобразовать в код на языках C и HDL и интегрировать в программно-аппаратную инфраструктуру платформы SDR.

Читать далее

pg_stl: анализ временных рядов прямо в PostgreSQL, без выгрузки данных

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

Если вы работаете с временными рядами в PostgreSQL, скорее всего сталкивались с необходимостью в выгрузке данных в Python, а потом как-то возвращали результат обратно. Это работает, но неудобно и медленно. Я написала расширение pg_stl, которое позволяет делать всё это прямо внутри базы — на нативном C, без экспорта данных наружу.

В этой статье расскажу, что это такое, как работает и почему это быстрее, чем подход с Python.

Читать далее

Как написать свое расширение postgres?

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

Привет, хабровчане! Сегодня покажу, как писать расширения для PostgreSQL. На примере pg_plan_alternatives, который логирует все пути, рассматриваемые планировщиком. Вы увидите то, что обычно скрывает планировщик.

Нам потребуется:

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

(Не)безопасный eBPF: что маркетологи забыли упомянуть об уязвимостях

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

eBPF называют «безопасным по умолчанию». Но что, если это не так?

Все хвалят eBPF за «безопасность и изоляцию». Но что если данные из вашей eBPF-мапы может прочитать любой процесс с правами root?

Я не буду учить писать свой eBPF-хелпер. Я покажу практический пример демонстрации этой уязвимости.

Пора разобрать вопрос, о котором часто молчат: почему данные из eBPF-мап могут быть доступны не только вашему агенту.

Читать далее

Шестнадцатеричная запись чисел с плавающей точкой в C++, Java, Go

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

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

В этой коротенькой заметке-памятке - взглянем на формат записи (он может показаться не вполне логичным и не вполне шестнадцатеричным, вопреки названию) и поддержку стандарта разными языками. Основным же применением для этой "фичи" может быть, наверное - троллить друг друга на собеседованиях :)

Если вам случалось использовать такую запись на практике - поделитесь в комментариях. Или хотя бы если вы можете придумать случай когда она потенциально пригодится.

0xBEDA.BEDAp0

Разработка эмулятора NES на отечественном микроконтроллере К1921ВГ1Т

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

Привет, Хабр! Сегодня мы поговорим о реализации базовой версии эмулятора консоли NES на отечественном микроконтроллере К1921ВГ1Т и даже поиграем на нём в игры.

Съесть гриб и вырасти

CactOS

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

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

Читать далее

Распределённая система мониторинга и аналитики присутствия людей в инфраструктурных объектах без использования камер

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

Обзор будущего продукта. Distributed Occupancy Intelligence Platform - это распределённая система мониторинга и аналитики присутствия людей в зданиях и инфраструктурных объектах без использования камер и сбора персональных данных.

Читать далее

Веб-терминал для COM-порта без установки: подключается за 2 секунды

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

Полностью браузерный терминал для работы с последовательными портами (COM-портами). Приложение не требует установки, работает прямо в Chrome или Edge, и при этом поддерживает все необходимые фичи для отладки микроконтроллеров, общения с сетевым железом или просто мониторинга UART-трафика.

https://github.com/GidroByte/web-serial-terminal-ru

Весь код одним файлом. Не требует компиляции и сборки, леко править обычным блокнотом — открыл и работаешь.

Читать далее

VSCode как IDE для embedded разработки

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

В данной статье рассматривается процесс настройки vscode для разработки встроенного ПО на базе ядер cortex-M и процессе превращения редактора в полноценную IDE. При этом большинство представленных расширений являются универсальными и применимы в широком спектре задач программирования.

В отличии от проприетарных решений, таких как Keil, подход использования редактора vscode + компилятор gcc позволяет гибко настроить каждый пункт от начала разработки до релиза продукта. За время своей работы мною было опробованы разные решения: от классического keil до связки sublime и CodeSourcery. В последние годы я перешел на vscode + msys2: практически все ПО Open Source, не требует лицензий, не ограничено 32 Кб кода и может работать без сети интернет.

Читать далее