Все потоки
Поиск
Написать публикацию
Обновить
214.73

C *

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

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

60 антипаттернов для С++ программиста, часть 1 (совет 1 — 5)

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

1053_60_cpp_antipatterns_ru/image2.png


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

Читать дальше →

Вызываем демонов с printf

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

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

Читать далее

Из серии: заглянем под капот clang-e2k/llvm-e2k из штатного дистрибутива для Эльбруса

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

Тема непосредственно самого процессора Эльбрус уже достаточно хорошо раскрыта в различных статьях, в том числе, в статьях, опубликованных на habr.ru. Кроме самого процессора Эльбрус время от времени на просторах рунета можно встретить обсуждения, посвященные вопросу портирования компилятора clang/llvm на Эльбрус. Пожалуй, данная тема еще не получала подробного освещения. Данная заметка призвана заполнить этот «пробел».

Если вкратце, то llvm из e2k-дистрибутива портируется на базе оптимизирующего компилятора LCC. Ну а тем, кому нужно больше подробностей, то добро пожаловать «под кат».

Читать далее

Программирование для Palm OS: ставим CodeWarrior и оживляем ТСД

Уровень сложностиСредний
Время на прочтение30 мин
Количество просмотров7.1K
Приветствую всех!

Немало ушедших в историю платформ успели мы повидать. И столько же ещё будет у нас впереди. Но сейчас поговорим не о чём-то реликтовом и экзотическом, а о КПК, что наверняка успели застать многие пользователи данного ресурса. Эти девайсы имели массу поклонников, не удивлюсь, если кто-то до сих пор пользуется таким. Тем интереснее будет поговорить о разработке софта для данной ОС.



Итак, в сегодняшней статье рассмотрим разработку софта для КПК под управлением легендарной Palm OS. Узнаем, где взять весь нужный софт, как собрать свою программу. Поговорим о некоторых аспектах программирования для этих железок. Традиционно будет много интересного.
Читать дальше →

PostgreSQL под капотом. Часть 6. Сложный SELECT запрос

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

Продолжим погружение в код PostgreSQL. Сейчас посмотрим, что происходит, когда вы хотите выполнить запрос сложнее, чем в прошлый раз: добавим WHERE, GROUP BY, HAVING, ORDER BY, LIMIT.

Плюс:

Системный кэш

Сходство обращения к столбцам и вызовов функций

Предсказание количества возвращаемых кортежей

Работа с простыми типами

Маркировка столбцов при использовании FOR UPDATE

Читать далее

Интеграция полевых устройств в системы автоматизации производств (Язык описания электронных устройств EDDL)

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


Рис. с сайта FIELDCOMM GROUP https://www.fieldcommgroup.org/


Хотя до этого я писал только про встроенное ПО, сегодня речь пойдет немного о другом. Я хочу рассказать о языке Electronic Device Description Language (EDDL) и его применении. Общаясь с разработчиками полевых устройств, я выяснил, что в РФ не так много специалистов в этом сегменте, слышал даже такое мнение, что в России всего 3 разработчика на этом языке, и одного из них я знаю лично.


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

Читать дальше →

Mojo: Python-совместимый язык с производительностью Си — от Криса Лэттнера

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

2 мая 2023 года Modular (одна из компаний-лидеров в сфере AI-инфраструктуры) анонсировала язык программирования Mojo, обещающий полную совместимость с Python в сочетании со сверх-высокой производительностью.

В компании утверждают, что автоматическое низкоуровневое распараллеливание, возможности строгой типизации и статической компиляции уже на самых ранних этапах развития языка позволяют достичь скорости, превосходящей Python в 35 000 раз!

Так что это за чудо-язык такой, правда ли он заменит Python — да и где его пощупать можно?

Давайте разбираться! ?

Реализация утилиты cat на C

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

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

Читать далее

Язык Umka 1.0 и игровой фреймворк Tophat

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

После трёх лет неторопливой разработки вышла версия 1.0 моего скриптового языка Umka. Это статически типизированный язык, предназначенный для встраивания в программы на C/C++. Синтаксис и некоторые особенности семантики Umka были вдохновлены языком Go, однако Umka никак не зависит от экосистемы Go и не требует для работы ничего, кроме стандартной библиотеки C.

Основным применением языка стал игровой фреймворк Tophat, созданный Марком Машкаринцем. Версия Tophat 1.0 вышла одновременно с Umka. Это очень простой модульный фреймворк для создания 2D игр. Несколько мини-игр на нём были написаны для участия в джемах. Сейчас в разработке находятся два более крупных игровых проекта — платформер-головоломка и игра о диспетчеризации железнодорожного движения.

Читать далее

Исследование возможностей оптимизации ПО на примере хеш-таблицы

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

Исследование возможностей оптимизации ПО на примере хеш-таблицы.

Читать далее

Загоняем Альпаку на Эльбрус (Часть 2. Оптимизации)

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

В прошлой статье я писал о запуске Alpaca на Эльбрусе. На момент написания той статьи оптимизации под Эльбрус не проводились. Однако теперь, благодаря стараниям @troosh можем протестировать Эльбрус уже с оптимизациями. ВНИМАНИЕ! Проект llama.cpp обновляется очень часто, и многое меняется. На данный момент это самая актуальная версия llama.cpp под Эльбрус.

Читать далее

Сколько Надо Строк Кода Для Того Чтобы Подписать Артефакты?

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

Бывает ситуация, когда надо чтобы прошивка или любой другой артефакт сам сказал в каком состоянии был GIT репозиторий с кодовой базой, когда эту прошивку собирали. Надо как-то добавить в text/rodata сегмент памяти такие метаданные как "из какой ветки собрали прошивку", "какой была контрольная сумма последнего коммита".

Данная подсказка может существенно помочь при сопровождении ПО.

В тексте представлен скрипт, который делает эту работу.

Как вы думаете сколько строк кода надо для подписи прошивки?

Читать далее

Управление параметрами FPV видеопередатчиков по протоколам IRC Tramp и TBS SmartAudio

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

Управление параметрами FPV видеопередатчиков по протоколам IRC Tramp и TBS SmartAudio

Читать далее

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

Очередной драйвер SPI флэшек… Но уже с кэшем и «нормальным» api

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

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

Будем пытаться писать быстрый драйвер флешки и при этом попробуем сэкономить её ресурс при перезаписях.

Читать далее

Отладка C при помощи пакета Cosmopolitan Libc

Время на прочтение12 мин
Количество просмотров3.9K
Cosmopolitan Libc предоставляет набор отладочных возможностей, повышающих удобство разработки на C: трассировка вызовов функций, интеграция с gdb, среда выполнения ASAN/UBSAN и многое другое! На C написано много быстрого и критически важного кода. Если вы пользуетесь программами, написанными на C, если вам приходится предусматривать интерфейсы для работы с библиотеками на C, исправлять баги в коде на C, либо даже переписывать имеющуюся на С программу на каком-то другом языке, то именно этот инструмент помогает понять, что делается в вашем коде на C. Отладка – это не просто россыпь инструкций printf. В этом посте будет рассмотрено, как Cosmopolitan Libc помогает наверняка и как следует отлаживать код C. Все примеры находятся в этом репозитории.
Читать дальше →

Загоняем Альпаку на Эльбрус

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

Думаю уже все слышали об Alpaca - аналоге chatGPT, которую можно запустить локально на процессоре. И раз есть такая возможность почему бы не сделать это на Эльбрусе?!

Читать далее

Как закалялась сталь современной симметричной криптографии. Глава 2. Математическая криптография

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

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

Читать далее

PostgreSQL под капотом. Часть 5. Простой SELECT запрос

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

Приветствую!

В этой статье рассмотрим какой путь проходит простой SELECT запрос. От стадии сырой строки до отправки ответа клиенту.

А еще:

Работу со статистикой приложения через API Linux.

Реализацию динамического списка.

«Наследование» в C.

Как ведется работа с диском в БД.

Немного легаси.

Читать далее

Сборка firmware для CC2652 из Makefile

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

В этом тексте представлена инструкция настройки ToolChain(а) для работы с микроконтроллером CC26x2 при помощи языка программирования С и компилятора GCC. Сборка осуществляется прямо из Makefile(ов).

Тут же представлена инструкция для настройки пошаговой отладки в консоли Windows.

В принципе, если вы собираете из Makefile, то вам всё равно какой там микроконтроллер и какого он вендора. Для добавления поддержки очередного MCU достаточно написать всего один *.ld и один *.mk файлик.

Во многом по этому сборка из Makefile является предпочтительнее, когда в организации много разнообразного оборудования на разных МК (или просто много сборок) и одна переносимая кодовая база на всё.

Читать далее

Разработка BIOS на языках высокого уровня

Уровень сложностиСложный
Время на прочтение11 мин
Количество просмотров29K
Ничего лишнего: материнская плата, видеокарта и ROM-BIOS

Меня давно волнует вопрос, как подступиться к разработке на голом железе, на чистом си. Хотелось понять, каким же образом идёт запуск BIOS, u-boot, grub и прочих первичных загрузчиков. Ведь необходимо перейти от ассемблера к тёплому ламповому си и соблюсти условие, собрать всё это в линукс любимым компилятором gcc.

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

Здесь я хочу свести основные моменты разработки BIOS в одном месте и разобраться обо всех проблемах, которые я получил во время своих опытах в разработке (первая и вторая части).
Читать дальше →

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