Всем привет. Embox продолжает своё путешествие по отечественным микропроцессорам. В этой серии мы опишем путешествие на AMUR (MIK32). Кто не знает, это — полностью отечественный микроконтроллер К1948ВК018 на архитектуре RISC‑V, который производится в РФ на мощностях компании МИКРОН, входящей в ГК «Элемент».
C *
Типизированный язык программирования
CodeChecker: анализируем большой проект на С++ быстро, эффективно и бесплатно
Привет, Хабр! Меня зовут Давид, еще недавно я был стажером YADRO, а сейчас работаю в отделе разработки ПО поддержки сетевой аппаратной части. У нас в команде есть большой проект на более 100 000 строк, написан на C++ (и частично на С). Код переписывался много раз, а за самим проектом на правах легаси особо никто не следил: работает — не трогай. Когда я пришел в команду, у меня была задача: привести код в порядок и отловить ошибки, которые пропускает компилятор — например, возможное разыменование нулевого указателя, неинициализированные переменные или простые опечатки.
Одним из очевидных решений было использование статического анализатора. Выбрали довольно известное коммерческое решение, но долгие прогоны не привели ни к чему дельному. Решили поэкспериментировать с другими вариантами статических анализаторов, сделав ставку на open source. Поиски привели к инфраструктуре CodeCheсker, которая предоставляет удобный интерфейс запуска и настройки статических анализаторов через аргументы командной строки. С помощью инструмента удалось достичь результатов, которые значительно превысили значения, полученные на коммерческом решении.
Под катом расскажу, что же такое CodeCheсker, как с ним работать и почему его точно стоит попробовать на большом проекте.
Случай из практики анализа кода
Приветствую всех хабрачитателей. Если выкинуть административную работу, то моя основная деятельность на работе — поиск различных уязвимостей. Чаще всего мой инструментарий представляет собой набор каких‑то отладчиков, динамических анализаторов и прочего подобного. Но иногда приходится заниматься анализом исходного кода произвольной степени кривизны понятности. И это практически отдельный параллельный мир в области безопасности.
Под катом я расскажу об одном примере разбора небольшой проблемы в коде.
Интеграция Стилистического Анализа в общий Make Скрипт Сборки Проекта
В некоторых компаниях есть внутренние требования к стилю оформления исходных кодов на Си.
В этом тексте я показал как можно интегрировать проверку стандарта оформления исходных кодов в общий процесс сборки программы, так чтобы вместе с бинарём получить и отчет с указанием мест нарушений.
Истории
Программирование на C в Linux на примере создания командной оболочки: часть 2
Я решил недавно улучшить свой навык владения C, путем написания проектов. Самая первая мысль, которая пришла мне на ум — это командный интерпретатор, командная оболочка, shell проще говоря. А также я расскажу о системе сборки make, и о том, как правильно писать и документировать C-код.
В первой части мы задали базовую структуру кода, разобрались с чтением вывода и созданием процессов. А в этой части нашей задачи будет дойти с альфа-стадии на бета-стадию — то есть реализовать прочий важный функционал, такой как: минимальная поддержка плагинов; автодополнение; подсветка синтаксиса; переменные окружения, новые встроенные утилиты.
Да-да, мы превратим наш велосипед в мопед! Я вынес из прошлой статьи итоги, и попытался решить все проблемы и замечания. Продолжаем погружение в пучины разработки под Linux!
Портируем декодер AV1 с С на Rust для повышения быстродействия и безопасности
AV1 становится всё более значимым видеоформатом, которому требуется безопасный и производительный декодер. Исходя из этой идеи, мы в тандеме с командой из Immutant создалиrav1d
, портировав на Rust написанный на С декодерdav1d
. Перед вами первая из двух статей, посвящённых решению этой задачи.
— Джош Аас, глава проекта Prossimo организации ISRG
Знакомимся с трансляторами ассемблера для ПК
Привет, Хабр! Сегодня я хочу поделиться своими наблюдениями и опытом по работе с различными ассемблерами. Я сам пишу на языке C и относительно редко касался темы ассемблера. Но недавно решил восполнить этот пробел в знаниях и посмотреть на различные ассемблеры. В данной статье мы не будем рассматривать ARM, AVR и другие микроконтроллерные архитектуры, а сосредоточимся исключительно на компьютерных ассемблерах. Давайте не будем судить строго, ведь это скорее исследовательский опыт, чем глубокое погружение.
Умножение матриц и SMT – почему бы и нет?
Привет, Хабр! Меня зовут Евгений Буевич, я работаю в Рунити. Как-то раз у меня возникла непреодолимая потребность умножать матрицы определенного размера, смотреть, что получится и умножать опять до тех пор, пока что-нибудь не получится.
Остановился на BLIS, скомпилировал, подключил, и было мне счастье. Матрицы стали подрастать в числе и размере, скорость процесса, как ей и положено, падала в кубе от размера и кратно от числа. В конце концов стало ощущаться, что на ЦПУ 486,4 GFLOPS и ни флопсом больше, а замеры показывали, что на самом деле их около 350.
Дорогая, я уменьшил {fmt}: уменьшил размер до 14kB и избавился от рантайма C++
Библиотека форматирования {fmt} известна своим небольшим влиянием на размер бинарников. Чаще всего её код в несколько раз меньше по сравнению с такими библиотеками, как IOStreams, Boost Format или, что иронично, tinyformat.
Давайте разберем, как можно уменьшить размер бинарников еще больше!
Руководство по межпроцессному взаимодействию (IPC) в Linux — Часть 2
Представляю вашему вниманию вторую часть перевода статьи A guide to inter-process communication in Linux.
Первая часть перевода была посвящена общему введению в курс дела и механизму разделяемого хранилища (shared storage). В этой части будут рассмотрены механизмы каналов (именованных и неименованных) и очереди сообщений.
Приятного чтения!
Подводные камни устройства карты видимости в СУБД PostgreSQL
Карта видимости - это достаточно простой механизм в СУБД PostgreSQL, но даже он имеет множество интересных тайн, если погрузиться в детали реализации.
В этой статье мы выясним:
1. Какие особенности есть у механизма сбрасывания и установки бита полной видимости.
2. Как Index only scan использует бит полной видимости.
3. Зачем записывать информацию об изменении карты видимости в WAL.
4. Каким образом карта видимости участвует в оптимизации предвыборки Bitmap scan.
5. Зачем механизму оценки селективности нужна карта видимости.
Ему не место на помойке: хакаем 15-летний электронный переводчик и пишем под него приложения
Дисклеймер: статья очень подробная и во всех красках «простым языком» описывает процесс хакинга и программирования под такой необычный девайс. Так что даже если вас не интересуют электронные переводчики и минипк, статья может оказаться для вас занимательной!
Я всегда любил находить новые применения стареньким девайсам, даже если обход защиты и разработка для них чего-то полезного занимала у меня некоторое время. И если с прошлыми моими статьями, где я привносил новую жизнь смартфонам на Android 2.3, а затем и на Android 1.5, всё понятно – девайсы получили возможность не только быть звонилками, но и вполне полноценными смартфонами, то в случае таких необычных девайсов, как электронные переводчики – всё гораздо интереснее, ведь по сути, это дешёвые альтернативы таким легендарным устройствам, как HP Jornada! Недавно я купил переводчик Ectaco за 1.500 рублей на Windows CE, обошел встроенную оболочку, написал программу, которая твикает реестр и даже портировал туда эмулятор NES. Интересно узнать об этом процессе во всех подробностях? Тогда добро пожаловать под кат!
Корутины? Простейшая имплементация на C, protothread и Arduino
*иногда хочется уйти от управляемых будней
Корутины — это функции, которые могут приостанавливать своё выполнение и возобновлять его позже, сохраняя своё состояние между вызовами. Это позволяет выполнять несколько задач одновременно без необходимости создания отдельных потоков или процессов.
Ближайшие события
Дайджест канала opensource_findings за август 2024
Привет!
Под катом множество сложных технических тем внутри питона: от генерации стратегий hypothesis до устройства тайпчекера MyPy.
В качестве тестового формата решил сделать подборку сложных технических тем, про которые писал в августе у себя в тг канале: https://t.me/opensource_findings со ссылками на полные посты.
Посмотрим, насколько такой формат работает, напишите свои мысли в комментарии! Буду благодарен обратной связи, поехали!
Инженер. Путь в IT
Предисловие. Программирование.
Определим начальный статус, просто чтобы было понятно: времени на учёбу у всех на самом деле мало, это полностью вопрос самоорганизации рабочего пространства. 02.2024 - 39 лет, женат, двое детей, ипотека и дом с огородом, автомобиль, user Win.
Кто-то скажет: есть чем заниматься, времени на учёбу нет.
С другой стороны — всё уже есть, дом строить не надо, жену нашёл, детей родил, дерево посадил, займусь-ка магией, ой, программированием.
Писал сам, угловато, за красотой строки идите к GPT (но это неточно).
Программист = маг. Это, собственно, моё сорокалетнее ироничное понимание глубины своего невежества в программировании. Но надо его пересмотреть исходя из тех предпосылок, что уже сложились в процессе обучения. Что же такое программист? Нам не нужно готовое определение, нужно что-то ёмкое и понятное таким новичкам, как мы. Все знают, кто такой программист, но нас это не устраивает, мы же с начала начинаем. Давайте напишем определение.
Демосцена и FreeBSD
Решил вспомнить счастливое детство и полазить по сайтам демосценеров — с удивлением обнаружил, что многие выкладывают релизы под.. FreeBSD.
FreeBSD — мягко говоря не самая подходящая система для занятия оптимизированной графикой, поэтому наличие такого количества демо создаваемых под эту систему озадачило.
Поскольку я немного понимаю в компьютерах и использую FreeBSD в качестве одной из основных ОС, решил немедленно собрать и запустить самые интересные проекты.
Программирование на C в Linux на примере создания своей командной оболочки
Привет, хабр! Язык программирования C — основополагающий, как я считаю. И его знать, нет, не обходимо, но довольно желательно. Большинство языков отсылают к C, и зная C (или C++) другой язык будет даваться намного легче.
Я решил недавно улучшить свой навык владения C, путем написания проектов. Самая первая мысль, которая пришла мне на ум — это командный интерпретатор, командная оболочка, shell проще говоря. А также я расскажу о системе сборки make, и о том, как правильно писать и документировать C-код.
В этом туториале я буду использовать компилятор CLANG, а не GCC, и расскажу его преимущества
Итак, для создания своего шелла на C для Linux вам понадобится простой советский копеечный...
Проблемы вызова Python кода из C кода
Привет, Хабр!
Меня зовут Никита Соболев, я опенсорс разработчик и core-разработчик CPython.
Давайте поговорим про одну из самых сложных частей интерпретатора CPython – вызов Python кода из C кода. Почему сложных? Потому что Python может резко и внезапно менять стейт всего кода на C. А особо злобный код на Python вообще часто приводит к [1] 88503 segmentation fault python
Данный пост создан по материалам из моего канала в Телеграмеopensource_findings
: https://t.me/opensource_findings/842
Под катом – кишки питона, я предупредил!
Красно-черные сигналы в node.js
Что происходит, когда мы отправляем сигнал приложению на node.js? Когда вызываются обработчики? А где хранятся? Во всем этом мы разберемся в данной статье, начиная от пользовательского кода на javascript и до встречи с операционной системой.
Дымовая Завеса в Eclipse IDE
Прошивки часто пишут в Eclipse.
В Eclipse есть такая возможность как серая дымка неиспользуемых сейчас кусков кода. Якобы то, что не используется в коде визуально становится серой зоной отчуждения.
Именно этот аргумент огромная fun база Eclipse плагинов и приводит в качестве главного за Eclipse плагины.
В этом же тексте я написал как активировать эту пресловутую опцию даже при сборке сторонними скриптами. Причем любыми.
Вклад авторов
Andrey2008 3740.9SvyatoslavMC 1738.0alizar 714.0Firemoon 702.8bodyawm 551.0zzeng 535.0humbug 523.0m1rko 449.6anastasiak2512 422.0aabzel 416.0