[go: up one dir, main page]

Обновить
119.57

C *

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

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

Передача JPEG-видео по RTP/UDP на ESP32 (RFC 2435)

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

В этой статье я разберу, как реализовать передачу JPEG-видео по RTP поверх UDP напрямую с ESP32 - так, чтобы поток открывался в VLC и ffplay, без RTSP, FFmpeg и промежуточных серверов.

Читать далее

Новости

CPython — Сборка мусора изнутри, ч.3

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

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

Если вам интересно, давайте попробуем разобраться.

Читать далее

Разработка конвертера формата кардиограммы ECG в формат EDF

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

В предыдущей статье я разобрался с устройством формата файлов ECG кардиограммы цифрового портативного кардиографа «Кардиан-ПМ». Это было сделано с целью получения доступа к информации о кардиограмме с помощью какого-либо другого ПО. Идея пришла использовать формат EDF – популярный формат временных рядов с открытой спецификацией. Как оказалось, этот формат используют на практике также для хранения кардиограмм. Одна из популярных программ, где можно открыть этот формат, – EDFbrowser. Именно с этой программой я и предпочёл работать.

Читать далее

Ненормальные непотребства, трюки, хаки и алгоритмы на C

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

Доброго времени суток, господа и дамы! Иногда у некоторых людей возникает желание заняться откровенным непотребством в программировании — то, что не несет практической пользы напрямую, но помогает развлечься. И я — не исключение. В этой статье я хочу рассказать вам о лайфхаках, трюках (магических и не очень), алгоритмах на языке C!

Идея написать эту статью зародилась из моего поста, после него я начал серию статей, которая раскрывала много интересных моментов — от математических алгоритмов и оптимизации до ГПСЧ.

Если вы видите на экране эту шестую часть нашей бесконечной саги о ненормальном программировании на C, значит, мы с вами прошли уже немало: от конвертации миль в километры через Фибоначчи до ГПСЧ и быстрых вычислений.

В этой статье будет еще порция свежих хаков, фанов, трюков, еще больше магии и скорости!

Добро пожаловать в шестую часть. Прошу под кат — там будет жарко, быстро и очень, очень интересно.

Читать далее

Конфигуратор микроконтроллеров STM8S103/105

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

Разработана программа с целью обучения и быстрого создания программ для управления робототехническими комплексами или электропреобразовательными установками. Программа представляет собой приложение для персонального компьютера (ПК) с операционной системой (ОС) Windows 10 и выше, разрядностью 64-бит, (версия 32-бит проверялась на Windows 7), позволяющее визуально создавать конфигурацию периферийных устройств микроконтроллеров (МК) STM8S103/STM8S105, что позволяет ускорить процесс создания “прошивки” для МК и (или) уменьшить количество ошибок при разработке. Программа по созданной визуально конфигурации, путем выбора из заданных альтернатив, ввода числовых значений и контроля правильности ввода (предупреждает об ошибках), формирует файлы проекта для программирования МК на языках C (с библиотекой SPL или программирование на уровне регистров) и Assembler (язык выбирается в настройках программы). Позволяет сохранить созданную конфигурацию в файл для использования в дальнейшем. Имеется необходимая справочная информация по МК, SPL, C упрощающая создание кода. Созданные файлы проекта можно перед отправкой в IDE редактировать в сразу этой программе.

Скачать программу Конфигуратор микроконтроллеров STM8S103/105.

Читать далее

NetBSD и NVIDIA Optimus

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

Чтобы задать уровень выдаваемой дичи сразу на весь 2026 год вперед, я написал эту замечательную статью.

Читать далее

Может ли устареть инкремент: обзор выполнения оператора на современных вычислительных платформах

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

Привет, Хабр! В ходе своей работы я часто изучаю сам и обучаю других писать и оптимизировать код. Однако когда я рекомендую в своих материалах «делайте так», я не всегда уверен, что тиражирую актуальную и достоверную информацию.

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

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

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

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

Рассмотрим «простой» пример цикла, выполняющего сложение двух массивов. Слово «простой» взято в кавычки не случайно. Даже тезисное обсуждение эффективных методов сложения массивов на GPU (NVIDIA или AMD) с коллегами занимает несколько часов. Полноценно раскрыть эту тему в одной статье невозможно.
Поэтому сосредоточимся лишь на части примера – операции инкремента «i++» в управляющей части цикла.

Для анализа обратимся к книгам, рекомендованным на профильных it-ресурсах: Хабр, Яндекс.Практикум, Proglib и др.

Чтобы уточнить информацию, рассмотрим официальные руководства следующих производителей вычислительных устройств: CISC (Intel, AMD), VLIW (МЦСТ, Texas Instruments), RISC (Apple, Qualcomm, MediaTek и др.) и GPU (NVIDIA, AMD).

Читать далее

А не замахнуться ли нам на Вильяма нашего Аккермана?

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

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

Про функцию Аккермана тоже будет, она используется в качестве теста.
Уж извините за кликбейтный заголовок.

Читать далее

By the pricking of my thumbs, something wicked this way comes

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

Эту фразу из «Макбета» Шекспира автор осмелится перевести как «благодаря зуду на кончиках моих пальцев может появиться что‑то очень странное».

Изначально хотелось всего‑лишь ознакомиться с Verilog, но, «опасное это дело, выходить за порог: стоит ступить на дорогу и, если дашь волю ногам, неизвестно куда тебя занесет».

Занесло в сторону процессора с собственной архитектурой. Автор давно неровно дышит в сторону стековых процессоров, здесь так же присутствуют раздельные конвейеры для потоков управления/исполнения и расширяемая упаковка кода.

Надеюсь, это окажется кому‑то полезным, так же как когда‑то автору был полезен игрушечный hoc из книги Кернигана и Пайка «Unix — программное окружение».

Читать далее

ISO 7816-4: пишем файловую систему

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

Стандарт ISO 7816 состоит из 15 частей и главным образом нацелен на приведение к общему виду тех отраслей, что используют смарт-карты. Четвертая часть документа описывает логическую структуру файловой системы, получившую широкое распространение: ее можно встретить в идентификационных документах, средствах криптографической защиты информации, в банковском секторе и телекоме.

Читать далее

Программа контроллера сети CAN

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

Продолжаю публикацию статей по структуре "Умный дом" на основе локальной сети CAN. В этой статье описывается программа, которая записывается в каждый контроллер локальной сети.

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

В общем «не стреляйте в музыканта, он играет как может».

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

И попытался кратко описать основные моменты программы.

Читать далее

IBM 5150 и разработка под самый первый PC

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

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

Читать далее

От PDP-11 до Windows: как кросс-компилировать ретро-код на macOS без машины времени

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

Гайд по кросс-компиляции для ретро-платформ на macOS с Apple Silicon.
Описаны настройка и использование:

Open Watcom v2 — для DOS (16/32-бит), OS/2, Windows 3.x/9x/NT, с примерами сборки .com, .exe и функцией для переключения таргетов в shell.

Amsterdam Compiler Kit (ACK) — компиляция ANSI C под PDP-11, с запуском крестиков-ноликов на Unix Version 7 в эмуляторе open-simh (включая создание лент, mkfs, restor, mknod).

msvc-wine — полноценный MSVC-тулчейн для Windows (x86/x64/arm64) через LLVM Clang и LLD, без MinGW-зависимостей.

Дополнительно: тестирование через Wine, DOSBox-X, OrbStack; фиксы для Apple Silicon.

Подробные шаги по сборке, установке и примерам.
Интересно? Велком внутрь.

Читать далее

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

Есть ли толк от E-ядер в OpenMP приложениях?

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

В настоящее время многоядерные процессоры с гетерогенными архитектурами, в которых сочетаются ядра с различной производительностью, становятся всё более и более распространенными. Если ещё пару лет назад такие архитектуры были в основном распространены в мобильном сегменте (см. ARM BIG.little), то с анонсом в 2022 году компанией Intel процессоров 12-го поколения линейки Intel Core, такие процессоры стали распространяться в сегменте десктопов и рабочих станций. Однако, до сих пор остается открытым вопрос — необходимо ли каким‑то специальным образом учитывать особенности данных архитектур для достижения максимальной многопоточной производительности?

Читать далее

Интерпретация параллельных процессов в среде языка «С» микроконтроллера ADuC и ему подобных

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

Интерпретация параллельных процессов, управляющих автоматом заварки герконов.

Автомат — это карусель, на каждой позиции выполняется операция, затем поворот и все повторяется.

Работу автомата можно представить как множество параллельных процессов. Как же программно смоделировать множество параллельно работающих процессов?

Читать далее

Линейная и полиномиальная регрессия на C++

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

В статье я (немного фривольно) решил исследовать связь количества прочитанных книг и средней зарплаты программиста. Проанализируем эту связь, построив уравнение линейной регрессии и полиномиальной регрессии (2-й степени)

Читать далее

Баги на диком западе: топ-10 ошибок в C и C++ проектах за 2025 год

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

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

Читать далее

Деннис Ритчи. Человек, который подарил нам циклы и рекурсию

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

Деннис Макалистер Ритчи (/dmr) родился в 1941 году в престижном пригороде Нью-Йорка, в семье известного учёного из Bell Labs Алистера Ритчи, соавтора учебника по теории релейных схем. Вскоре семья переехала в Саммит, Нью-Джерси.

Читать далее

Создаём замыкания С из замыканий Lua

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

Когда я взялся полноценно портировать API Windows с C на Lua, одна из самых интересных и занимательных задач заключалась в том, как делать обратные вызовы к коду C из функций Lua. Без них значительная часть API — например, WNDPROC – осталась бы бесполезной.

Читать далее

Компиляторы, AI-ассистенты и вызов IOCTL: доклады о С++ и Linux вместо новогоднего кино

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

Представьте, что вам не нужно выбирать. Ни между красной и синей таблетками, ни между макарошками и пюрешкой, ни между светлой и темной сторонами. Вы можете взять лучшее от каждого предложения. Мы посмотрели все доклады System Level Meetup, выбрали самые интересные, собрали презентации и записи в одном месте. Для удобства разделили материал на треки , C++ и С/Linux Kernel, но смотреть можно все подряд.

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