Обновить
110.37

C *

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

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

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

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

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

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

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

Коробка багов (эмулируется)

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

24 августа 2025 года состоялся релиз 86Box 5.0. Низкоуровневый эмулятор IBM PC и совместимых с ним компьютеров получил новый динамический рекомпилятор инструкций процессора, расширил поддержку "железа" и улучшил работу множества уже существующих компонентов.

Что ещё внутри "коробки"?

Практическая реализация энкодера с использованием датчика HOA0902 и STM32

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

Привет, Хабр!

В системах точного позиционирования и измерения угла поворота оптические энкодеры остаются критически важным компонентом, обеспечивающим обратную связь по положению. Среди множества датчиков данной категории, будет рассмотрен HOA0902-11 — это двухканальный фотодатчик, предназначенный для высокоточного измерения углового положения, скорости и направления вращения, его конструкция и схема работы основаны на принципе оптической модуляции света через диск.

В данной статье будут рассмотрены:

— Принципы работы HOA092-11;
— Схема электрическая принципиальная энкодера;
— Программная реализация (расчет пройденного пути, скорости и направления движения, а также вывод информации на дисплей);
— Тестирование системы, будет рассмотрено (пройденный путь, скорость, направление движения).

Читать далее

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

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

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

Читать далее

Портирование драйвера VL53L1X на CH32V003

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

Опыт портирования драйвера VL53L1X с STM32 на CH32V003. Рассказываю, как адаптировать низкоуровневые функции I2C, настроить системный таймер для таймаутов и HAL_Delay, а также организовать пример работы через UART. Статья будет полезна тем, кто хочет использовать готовые драйверы STM32 на простых микроконтроллерах

Читать далее

Список докладов с PythoNN в рамках ITGorky

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

Всем привет! Сегодня продолжаем нырять в глубины питона, но в другом формате.

В субботу (20 сентября 2025го) у нас завершилась наша первая бесплатная конференция сообществ Нижнего Новгорода.

На ней у нас был шикарный Python-трек с очень глубокими докладами от наших любимых хабравчан про устройство разных частей интерпретатора и несколькими вводными на смежные темы. Выступали и новички, и «старички» :)

Как по мне — вышло отлично.

Под катом будет полный список докладов и материалов, заходите и смотрите!

Читать далее

Динамическая память и реализация динамического массива в C

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

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

Читать далее

Покраска Cтека (Stack Painting)

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

В процессорах ARM Cortex‑M стек растет от большего адреса к меньшему. То есть вниз. В этом тексте я написал как оценивать расходование стековой памяти прямо во время исполнения программы на микроконтроллере. Считать израсходованный стек можно определив соотношение непрерывно прописанных нулей к ненулевым значениям в диапазоне стековой памяти.

Читать далее

Как построить открытую АСУТП. Настройка плагина протокола Modbus TCP/RTU Master/Slave

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

Добрый день! Меня зовут Евгений Ионенко, я — руководитель направления в ИТ-команде «Северстали», занимающейся разработкой компонентов для открытой автоматизированной системы управления технологическим процессом (АСУТП). В марте этого года мы начали выпуск статей, посвящённых разработке компонентов открытой АСУТП, с предыдущей статьёй этого цикла можно ознакомиться здесь: Статья №3.

В этой статье я расскажу, как настраивать плагин протокола Modbus TCP/RTU Master/Slave на примере небольшого проекта.

Читать далее

STM32H745: взлетаем на 480 МГц

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


Речь пойдёт о микроконтроллере (МК) STM32H745IIT6, в корпусе LQFP — 176, с ядрами Cortex‑M4 240 МГц и Cortex‑M7 480 МГц. Далее я буду ссылаться на официальную документацию STM — RM0399 Reference Manual Rev. 4 и DS12923 Rev. 2 Datasheet STM32H745xI/G.

Что тут может быть сложного, спросите вы. В наш век IDE всё же решается автоматически? Нужно лишь нажать на кнопку? Но нет, не в этот раз, и не с родной средой производителя CubeIDE V1.18.0, куда интегрирован конфигуратор CubeMX 6.14.2. Для начала рассмотрим концепт масштабирования напряжения, или Voltage Scaling (VOS). Это означает, что чем выше тактовая частота, тем больше напряжения нужно ядру, и направлено на снижение потребляемой мощности, и соответственно, разогрева чипа. Отключить этот функционал нельзя. Соответствие между напряжением питания ядра VOS и тактовой частотой представлено в Таблице 1 ниже.

Читать далее

DIY Open Source принтер. Часть 0

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

Привет, Хабровчане! Этот цикл (надеюсь) статей будет посвящён моему пути в создании своего собственного решения по струйной печати. Это будет что-то вроде блога или дневника разработчика в котором постараюсь изучить как же всё таки работает печатающая головка у принтера и как ей можно управлять с помощью микроконтроллера. А также нас ждёт интригующий ответ на вопрос: "Если ли место DIY и OpenSourse в мире струйной печати".

Читать далее

Запускаем радугу на светодиодке с STM32 и Bluetooth

Время на прочтение6 мин
Количество просмотров4.3K

Привет, Хабр! Сегодня поделюсь опытом работы со связкой stm32F401CCu6 и светодиодной лентой на базе диодов ws2812. В наличии у меня имеется микроконтроллер семейства AVR и обычная адресная лента на 144 диода а также блок питания на 5 вольт, 3 ампера, для наших целей его вполне хватит. Также стоит заранее подготовить какой-нибудь понижающий DC-DC преобразователь, я взял LM2596.

Читать далее

Почему в Linux «Всё есть файл»? Или почему гениальные абстракции UNIX настолько гениальны

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

– Ваш терминал и ваше интернет соединение – это файл!
– Да что вы такое говорите?
– Скажите ещё, что и мышка в моей руке или жёсткий диск – это тоже файл.
– Абсолютно верно!

На самом деле, с точки зрения Linux – это так.

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

Читать далее

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

Xfce и «автоматический» диалог

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

Сейчас будет еще одна «трешевая» история из мира открытого ПО, из тех что не рассказывают детям, дамам и сотрудникам ППС.

Читать далее

Медианный фильтр на двух бинарных кучах

Уровень сложностиПростой
Время на прочтение21 мин
Количество просмотров5.5K

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

В этом тексте я произвел разбор решения LeetCode задачи 480. Sliding Window Median в контексте реализации на языке программирования Си.

Читать далее

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

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

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

Читать далее

Мой путь в изучении языка C: какие книги реально помогли

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

Когда я начинал изучать C, я сразу взялся за «библию» — «Язык программирования С» Брайана Кернигана и Денниса Ритчи.

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

Читать далее

Минимальный «эксплойт» на Си, который научил меня любить защиты

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

Я всегда считал, что взлом — это магия адресов и байтов. А потом я написал десять строчек на C и понял, что настоящая магия — это защиты компилятора и ОС. В этой статье я сознательно построю крохотный уязвимый пример, добьюсь управляемого падения (это и будет мой «эксплойт»), а затем превращу баг в безопасный и быстрый код. Ни одного шага против чужих систем — только локальная лаборатория и гигиена памяти.

Читать далее

Reverse Engineering для самых маленьких

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

В этой статье мы разберём самую базу реверс‑инжиниринга на примере простого crackme — программы, созданной для практики «хацкинга». Ничего серьёзного.

Читать далее

Демистификация unaligned access undefined behavior в C

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

Неопределённое поведение (Undefined Behavior, UB) в C и C++ — одна из причин, по которым разработчики всё чаще ищут языки с полностью определённой семантикой. Одним из самых коварных UB является unaligned access, с точки зрения стандарта C это, например, когда происходит попытка разыменовать указатель как uint32_t, а значение указателя (адрес) не кратно четырём. Один из частых сценариев использования, приводящих к такому UB - получение данных по сети и их интерпретация как чисел.

Читать далее

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