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

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

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

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

Как-то давным-давно я заинтересовался дешевым железом, ибо был студентом-ардуинщиком, который очень хотел сэкономить. И как-то раз пришла идея — поработать с E-INK дисплеем. Цены на новые модули на Али кусались, поэтому я отправился шерстить Авито и нашел там объявление о продаже б/у электронных ценников из супермаркета и DNS.
О чудо! Всего 250 рублей за штуку: плата, контроллер, корпус, и оно даже работает... наверное.
Я заказал целую партию, не подозревая, что внутри меня ждет коррозия всего - чего можно, чип nRF52832 в новой партии, нестандартный протокол связи и абсолютный ноль документации. О том, как я ковырял эти платы китайским программатором, как писал в RAM через GDB, убил пару ценников, экранов и в итоге завел дисплей через Zephyr RTOS. Спойлер: фрактал Мандельброта успешно выведен! Дум не за горами

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

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

В этом тексте я произвел обзор микросхемы SPI-NOR FLASH памяти MX25L6433F.
Показан код, который позволит запустить на микросхеме файловую систему LittleFS.
Не так давно у меня на руках появилась плата RK-ZYNQ7020-F REV 1.1.
В данной статье я хочу поделиться своим опытом, связанным с подготовкой buildroot для данной платы. Здесь мы разберем этапы от формирования xsa файла до запуска платы и первых логов, с объяснением что происходит в железе на каждом этапе.
Также в рамках этой статьи я не буду использовать FSBL, мы попробуем обойтись U-Boot SPL.
Итак, приступим к рассмотрению!
Описание отладочной платы
Базовый набор периферии на данной плате, заявленный в документации:

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

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

Привет, хабровчане! Сегодня покажу, как писать расширения для PostgreSQL. На примере pg_plan_alternatives, который логирует все пути, рассматриваемые планировщиком. Вы увидите то, что обычно скрывает планировщик.
eBPF называют «безопасным по умолчанию». Но что, если это не так?
Все хвалят eBPF за «безопасность и изоляцию». Но что если данные из вашей eBPF-мапы может прочитать любой процесс с правами root?
Я не буду учить писать свой eBPF-хелпер. Я покажу практический пример демонстрации этой уязвимости.
Пора разобрать вопрос, о котором часто молчат: почему данные из eBPF-мап могут быть доступны не только вашему агенту.

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

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

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

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

Полностью браузерный терминал для работы с последовательными портами (COM-портами). Приложение не требует установки, работает прямо в Chrome или Edge, и при этом поддерживает все необходимые фичи для отладки микроконтроллеров, общения с сетевым железом или просто мониторинга UART-трафика.
https://github.com/GidroByte/web-serial-terminal-ru
Весь код одним файлом. Не требует компиляции и сборки, леко править обычным блокнотом — открыл и работаешь.
В данной статье рассматривается процесс настройки vscode для разработки встроенного ПО на базе ядер cortex-M и процессе превращения редактора в полноценную IDE. При этом большинство представленных расширений являются универсальными и применимы в широком спектре задач программирования.
В отличии от проприетарных решений, таких как Keil, подход использования редактора vscode + компилятор gcc позволяет гибко настроить каждый пункт от начала разработки до релиза продукта. За время своей работы мною было опробованы разные решения: от классического keil до связки sublime и CodeSourcery. В последние годы я перешел на vscode + msys2: практически все ПО Open Source, не требует лицензий, не ограничено 32 Кб кода и может работать без сети интернет.

Ни когда не думал, что программированием можно увлечься, но около года назад я узнал про существование микроконтроллеров и тут началось.
Мне нужен шрифт, причём срочно! — Так я подумал спустя полгода. В сумбурном поиске я попробовал много вариантов, приводивших к систематическому разочарованию. Спустя еще пару месяцев этот вопрос начал тормозить моё обучение и вводить в депрессию.

Если бы Кардинал Ришелье был программистом, он бы сказал: «Дайте мне шесть строк кода, написанных рукой самого профессионального C-программиста в мире, и я найду в них лазейку для вызова неопределённого поведения.
Никто не может написать безошибочный код на С или C++. И я говоря об этом как человек, который пишет на этих языках почти каждый день около 30 лет. Я слушаю подкасты по C++. Я смотрю выступления про C++ на конференциях. Мне нравится читать и писать на этом языке.
C++ послужил нам сполна, но на дворе 2026 год, и современная рабочая среда явно отличается от среды 1985 (C++) или 1972 (С).
И я далеко не первый, кто об этом заговорил. Помню ещё с десять лет назад читал статью какого-то известного человека, в которой он утверждал, что использование C++ вполне обоснованно можно подвести под нарушение закона Сарбейнза-Оксли (SOX). И хотя с остальной его критикой я не был согласен (как и с тем, что он путал «its» и «it’s»), конкретно с этим пунктом я никогда не спорил.
Мало того, со временем я всё больше убеждался в его истинности. На деле в С для возникновения неопределённого поведения (undefined behaviour, UB) есть гораздо больше возможных причин, чем вы могли предполагать.
Все знают, что двойное освобождение памяти, её использование после освобождения, выход за границы объекта (например, массива) и чтение неинициализированной памяти — это UB. Как ни крути, но в контексте работы с памятью C и C++ безопасными не назовёшь. Тем не менее даже эти ошибки продолжают совершаться повсеместно раз за разом.

Добрый день, коллеги!
Разрабатывали очередной аутсорсный заказ и в процессе разработки поняли с командой, что это может быть довольно интересным универсальным продуктом. В статье (без подробностей) расскажу, что изначально делали и что получили в итоге.
Совместно с заказчиком продумывали идею автоматизации производства. Они занимаются разработкой и изготовлением отечественных электронных компонентов, но процесс измерения основных параметров делался оператором вручную, с использованием 2-ух отдельных средств измерений, поочередно и по одному фильтру за раз.
Мы предложили автоматизировать этот процесс, разработать систему измерения, к которой можно будет подключить оба измерителя, до 10 тестовых образцов с механическим креплением на контактирующих устройствах, персональный компьютер с программным обеспечением, которое будет управлять всей системой, автоматически генерировать протокол измерений, собирать статистику и максимально упростит задачу оператора.
Разрабатывая решение под конкретную задачу конкретного заказчика, мы получили довольно универсальный мультиплексор, который могут использовать любые лаборатории для автоматизации своих измерительных процессов.

Если у вас кроссплатформенный проект на C или C++, то, как правило, вы не завязываетесь на одну систему сборки, а используете генератор сценариев для сборочных систем. Самый распространённый из них, CMake, недавно получил официальную интеграцию со статическим анализатором PVS-Studio для этих языков.