Как стать автором
Обновить
185.7

C *

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

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

Путешествие Embox на AMUR

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

Всем привет. Embox продолжает своё путешествие по отечественным микропроцессорам. В этой серии мы опишем путешествие на AMUR (MIK32). Кто не знает, это — полностью отечественный микроконтроллер К1948ВК018 на архитектуре RISC‑V, который производится в РФ на мощностях компании МИКРОН, входящей в ГК «Элемент».

Читать далее
Всего голосов 12: ↑12 и ↓0+19
Комментарии3

CodeChecker: анализируем большой проект на С++ быстро, эффективно и бесплатно

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

Привет, Хабр! Меня зовут Давид, еще недавно я был стажером YADRO, а сейчас работаю в отделе разработки ПО поддержки сетевой аппаратной части. У нас в команде есть большой проект на более 100 000 строк, написан на C++ (и частично на С). Код переписывался много раз, а за самим проектом на правах легаси особо никто не следил: работает — не трогай. Когда я пришел в команду, у меня была задача: привести код в порядок и отловить ошибки, которые пропускает компилятор — например, возможное разыменование нулевого указателя, неинициализированные переменные или простые опечатки. 

Одним из очевидных решений было использование статического анализатора. Выбрали довольно известное коммерческое решение, но долгие прогоны не привели ни к чему дельному. Решили поэкспериментировать с другими вариантами статических анализаторов, сделав ставку на open source. Поиски привели к инфраструктуре CodeCheсker, которая предоставляет удобный интерфейс запуска и настройки статических анализаторов через аргументы командной строки. С помощью инструмента удалось достичь результатов, которые значительно превысили значения, полученные на коммерческом решении.  

Под катом расскажу, что же такое CodeCheсker, как с ним работать и почему его точно стоит попробовать на большом проекте.

Читать далее
Всего голосов 37: ↑37 и ↓0+52
Комментарии10

Случай из практики анализа кода

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

Приветствую всех хабрачитателей. Если выкинуть административную работу, то моя основная деятельность на работе — поиск различных уязвимостей. Чаще всего мой инструментарий представляет собой набор каких‑то отладчиков, динамических анализаторов и прочего подобного. Но иногда приходится заниматься анализом исходного кода произвольной степени кривизны понятности. И это практически отдельный параллельный мир в области безопасности.

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

Открываем код OpenJDK на гитхабе
Всего голосов 12: ↑12 и ↓0+19
Комментарии1

Интеграция Стилистического Анализа в общий Make Скрипт Сборки Проекта

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

В некоторых компаниях есть внутренние требования к стилю оформления исходных кодов на Си.

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

Читать далее
Всего голосов 8: ↑4 и ↓4+3
Комментарии32

Истории

Программирование на C в Linux на примере создания командной оболочки: часть 2

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

Я решил недавно улучшить свой навык владения C, путем написания проектов. Самая первая мысль, которая пришла мне на ум — это командный интерпретатор, командная оболочка, shell проще говоря. А также я расскажу о системе сборки make, и о том, как правильно писать и документировать C-код.

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

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

Читать далее
Всего голосов 25: ↑24 и ↓1+33
Комментарии12

Портируем декодер AV1 с С на Rust для повышения быстродействия и безопасности

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

AV1 становится всё более значимым видеоформатом, которому требуется безопасный и производительный декодер. Исходя из этой идеи, мы в тандеме с командой из Immutant создали rav1d, портировав на Rust написанный на С декодер dav1d. Перед вами первая из двух статей, посвящённых решению этой задачи.

— Джош Аас, глава проекта Prossimo организации ISRG
Читать дальше →
Всего голосов 36: ↑34 и ↓2+50
Комментарии92

Знакомимся с трансляторами ассемблера для ПК

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

Привет, Хабр! Сегодня я хочу поделиться своими наблюдениями и опытом по работе с различными ассемблерами. Я сам пишу на языке C и относительно редко касался темы ассемблера. Но недавно решил восполнить этот пробел в знаниях и посмотреть на различные ассемблеры. В данной статье мы не будем рассматривать ARM, AVR и другие микроконтроллерные архитектуры, а сосредоточимся исключительно на компьютерных ассемблерах. Давайте не будем судить строго, ведь это скорее исследовательский опыт, чем глубокое погружение.

Читать далее
Всего голосов 11: ↑7 и ↓4+6
Комментарии15

Умножение матриц и SMT – почему бы и нет?

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

Привет, Хабр! Меня зовут Евгений Буевич, я работаю в Рунити. Как-то раз у меня возникла непреодолимая потребность умножать матрицы определенного размера, смотреть, что получится и умножать опять до тех пор, пока что-нибудь не получится.

Остановился на BLIS, скомпилировал, подключил, и было мне счастье. Матрицы стали подрастать в числе и размере, скорость процесса, как ей и положено, падала в кубе от размера и кратно от числа. В конце концов стало ощущаться, что на ЦПУ 486,4 GFLOPS и ни флопсом больше, а замеры показывали, что на самом деле их около 350.

Читать далее
Всего голосов 20: ↑20 и ↓0+26
Комментарии15

Дорогая, я уменьшил {fmt}: уменьшил размер до 14kB и избавился от рантайма C++

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

Библиотека форматирования {fmt} известна своим небольшим влиянием на размер бинарников. Чаще всего её код в несколько раз меньше по сравнению с такими библиотеками, как IOStreams, Boost Format или, что иронично, tinyformat.

Давайте разберем, как можно уменьшить размер бинарников еще больше!

Читать далее
Всего голосов 40: ↑38 и ↓2+47
Комментарии26

Руководство по межпроцессному взаимодействию (IPC) в Linux — Часть 2

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

Представляю вашему вниманию вторую часть перевода статьи A guide to inter-process communication in Linux.

Первая часть перевода была посвящена общему введению в курс дела и механизму разделяемого хранилища (shared storage). В этой части будут рассмотрены механизмы каналов (именованных и неименованных) и очереди сообщений.

Приятного чтения!

Читать далее
Всего голосов 3: ↑3 и ↓0+3
Комментарии2

Подводные камни устройства карты видимости в СУБД PostgreSQL

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

Карта видимости - это достаточно простой механизм в СУБД PostgreSQL, но даже он имеет множество интересных тайн, если погрузиться в детали реализации.

В этой статье мы выясним:

1. Какие особенности есть у механизма сбрасывания и установки бита полной видимости.

2. Как Index only scan использует бит полной видимости.

3. Зачем записывать информацию об изменении карты видимости в WAL.

4. Каким образом карта видимости участвует в оптимизации предвыборки Bitmap scan.

5. Зачем механизму оценки селективности нужна карта видимости.

Читать далее
Всего голосов 10: ↑10 и ↓0+13
Комментарии0

Ему не место на помойке: хакаем 15-летний электронный переводчик и пишем под него приложения

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

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

Я всегда любил находить новые применения стареньким девайсам, даже если обход защиты и разработка для них чего-то полезного занимала у меня некоторое время. И если с прошлыми моими статьями, где я привносил новую жизнь смартфонам на Android 2.3, а затем и на Android 1.5, всё понятно – девайсы получили возможность не только быть звонилками, но и вполне полноценными смартфонами, то в случае таких необычных девайсов, как электронные переводчики – всё гораздо интереснее, ведь по сути, это дешёвые альтернативы таким легендарным устройствам, как HP Jornada! Недавно я купил переводчик Ectaco за 1.500 рублей на Windows CE, обошел встроенную оболочку, написал программу, которая твикает реестр и даже портировал туда эмулятор NES. Интересно узнать об этом процессе во всех подробностях? Тогда добро пожаловать под кат!

Читать далее
Всего голосов 70: ↑66 и ↓4+81
Комментарии24

Корутины? Простейшая имплементация на C, protothread и Arduino

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

*иногда хочется уйти от управляемых будней

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

Читать далее
Всего голосов 14: ↑13 и ↓1+17
Комментарии17

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

19 августа – 20 октября
RuCode.Финал. Чемпионат по алгоритмическому программированию и ИИ
МоскваНижний НовгородЕкатеринбургСтавропольНовосибрискКалининградПермьВладивостокЧитаКраснорскТомскИжевскПетрозаводскКазаньКурскТюменьВолгоградУфаМурманскБишкекСочиУльяновскСаратовИркутскДолгопрудныйОнлайн
24 – 25 октября
One Day Offer для AQA Engineer и Developers
Онлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
26 октября
ProIT Network Fest
Санкт-Петербург
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань

Дайджест канала opensource_findings за август 2024

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

Привет!

Под катом множество сложных технических тем внутри питона: от генерации стратегий hypothesis до устройства тайпчекера MyPy.

В качестве тестового формата решил сделать подборку сложных технических тем, про которые писал в августе у себя в тг канале: https://t.me/opensource_findings со ссылками на полные посты.

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

Читать далее
Всего голосов 3: ↑3 и ↓0+5
Комментарии3

Инженер. Путь в IT

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

Предисловие. Программирование.

Определим начальный статус, просто чтобы было понятно: времени на учёбу у всех на самом деле мало, это полностью вопрос самоорганизации рабочего пространства. 02.2024 - 39 лет, женат, двое детей, ипотека и дом с огородом, автомобиль, user Win.

Кто-то скажет:  есть чем заниматься, времени на учёбу нет.

С другой стороны — всё уже есть, дом строить не надо, жену нашёл, детей родил, дерево посадил, займусь-ка магией, ой, программированием.

Писал сам, угловато, за красотой строки идите к GPT (но это неточно).

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

Читать далее
Всего голосов 5: ↑2 и ↓3+1
Комментарии4

Демосцена и FreeBSD

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

Решил вспомнить счастливое детство и полазить по сайтам демосценеров — с удивлением обнаружил, что многие выкладывают релизы под.. FreeBSD.

FreeBSD — мягко говоря не самая подходящая система для занятия оптимизированной графикой, поэтому наличие такого количества демо создаваемых под эту систему озадачило.

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

Погрузиться в тему
Всего голосов 25: ↑24 и ↓1+33
Комментарии42

Программирование на C в Linux на примере создания своей командной оболочки

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

Привет, хабр! Язык программирования C — основополагающий, как я считаю. И его знать, нет, не обходимо, но довольно желательно. Большинство языков отсылают к C, и зная C (или C++) другой язык будет даваться намного легче.

Я решил недавно улучшить свой навык владения C, путем написания проектов. Самая первая мысль, которая пришла мне на ум — это командный интерпретатор, командная оболочка, shell проще говоря. А также я расскажу о системе сборки make, и о том, как правильно писать и документировать C-код.

В этом туториале я буду использовать компилятор CLANG, а не GCC, и расскажу его преимущества

Итак, для создания своего шелла на C для Linux вам понадобится простой советский копеечный...

Узнать
Всего голосов 28: ↑25 и ↓3+36
Комментарии42

Проблемы вызова Python кода из C кода

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

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

Меня зовут Никита Соболев, я опенсорс разработчик и core-разработчик CPython.

Давайте поговорим про одну из самых сложных частей интерпретатора CPython – вызов Python кода из C кода. Почему сложных? Потому что Python может резко и внезапно менять стейт всего кода на C. А особо злобный код на Python вообще часто приводит к [1] 88503 segmentation fault python

Данный пост создан по материалам из моего канала в Телеграмеopensource_findings: https://t.me/opensource_findings/842

Под катом – кишки питона, я предупредил!

Ужасаться здесь
Всего голосов 41: ↑39 и ↓2+55
Комментарии9

Красно-черные сигналы в node.js

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

Что происходит, когда мы отправляем сигнал приложению на node.js? Когда вызываются обработчики? А где хранятся? Во всем этом мы разберемся в данной статье, начиная от пользовательского кода на javascript и до встречи с операционной системой.

Читать далее
Всего голосов 8: ↑8 и ↓0+12
Комментарии0

Дымовая Завеса в Eclipse IDE

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

Прошивки часто пишут в Eclipse.

В Eclipse есть такая возможность как серая дымка неиспользуемых сейчас кусков кода. Якобы то, что не используется в коде визуально становится серой зоной отчуждения.

Именно этот аргумент огромная fun база Eclipse плагинов и приводит в качестве главного за Eclipse плагины.

В этом же тексте я написал как активировать эту пресловутую опцию даже при сборке сторонними скриптами. Причем любыми.

Читать далее
Всего голосов 7: ↑3 и ↓4+3
Комментарии21

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

Работа

Программист С
48 вакансий