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

C *

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

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

Измерение частоты на STM32

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

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

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

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

Новости

«Клиентов нужно не искать, а создавать»: погружение в Telegram API через TDLib

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

Сперва я рассказывал простые вещи о Telegram Bot API и делал интересных ботов — виртуальную подругу и друга для заказа шавермы. Затем коснулся тестовых серверов и юзерботов. И наконец, пришла пора заглянуть глубже — узнать, как сделать свой клиент для Telegram. Что такое TL-схема и TDLib? Об этом мы сегодня и узнаем.

Данная статья не только поможет тем, кто решил написать свой клиент для Telegram, но и немного расширит кругозор остальным: MTProto — это не приевшийся JSON API. Добро пожаловать под кат!

Готовы показать свои знания в IT? Примите участие в IT-кроссворде Selectel, выиграйте 10 000 рублей на аренду серверов и эксклюзивный мерч Selectel.

Читать дальше →
Всего голосов 29: ↑29 и ↓0 +29
Комментарии 7

История языка С

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

What’s up guys?

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

В этой статье я рассказал краткую историю одного из самых популярных языков программирования - языка Си.

Читать далее
Всего голосов 16: ↑0 и ↓16 -16
Комментарии 31

Пишем printf на языке ассемблера FASM

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

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

Читать далее
Всего голосов 47: ↑46 и ↓1 +45
Комментарии 5

Истории

Считаем медиану быстрее numpy

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

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

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

Опечатки, нулевые указатели и коварный таб: 33 фрагмента в библиотеке GTK

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

Использование TAB в строковом литерале


GTK – популярный фреймворк с открытым исходным кодом для создания графических интерфейсов, который интересно проверять с помощью анализатора PVS-Studio. Тем более, что предыдущую проверку мы делали около 3 лет назад, а значит, наверняка найдём в нём новые ошибки.


Очень не хотелось частично повторять введение из прошлой статьи "Выявляем опечатки в проекте GTK 4 с помощью PVS-Studio", но подозреваю, что далеко не все читатели знакомы с GTK. Поэтому вкратце: библиотека позволяет кроссплатформенно реализовывать графический пользовательский интерфейс. Полностью бесплатна и имеет открытый исходный код, лицензированный под GNU GPL, что позволяет использовать её в любых проектах (даже коммерческих).

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

Готовим драйвера МК для проброса периферии

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

В предыдущей статье рассматривался принцип, как можно прокинуть периферию микроконтроллера (UART, I2C, CAN bus etc) в обычную ПК программу, так как если бы она входила в состав нашего компьютера и висела на обшей шине с памятью. В той публикации рассматривается теория и инструменты, которые позволяют это сделать. В этой части мы рассмотрим, как на практике осуществляется подготовка кода драйверов к инструментизации ADIN LLVM pass и последующей сборке в отдельную динамическую библиотеку, которую вы можете использовать в своих проектах

Готовим код драйверов
Всего голосов 16: ↑15 и ↓1 +14
Комментарии 0

Хардварный проброс

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

Оказывается пробрасывать можно не только сетевые порты, а еще и регистры периферии микроконтроллера(МК). Идея та же самая - открыть периферию для использования вне микроконтроллера. В случае проброса периферии, внешними клиентами будут выступать программы на ПК, и для них мы будем давать доступ к внутренним регистрам микроконтроллера. Для программ это будет выглядеть так, как будто регистры периферии находятся в адресном пространстве компьютера(ПК). Все равно, что эти самые регистры периферии висели бы на одной шине с памятью и другими устройствами ввода-вывода

Два пути как это сделать
Всего голосов 22: ↑22 и ↓0 +22
Комментарии 20

Интервью с разработчиками мультитула для хакеров и пентестеров Flipper Zero

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

Flipper Zero — карманный "мультитул" для гиков, сокровище для пентестеров, ваш собственный кибер-зверёк. Возможности девайса ограничиваются только вашим воображением и сноровкой.

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

Читать далее
Всего голосов 60: ↑54 и ↓6 +48
Комментарии 29

Как и почему я писал для Флиппера на Си-с-классами

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 11K
Мой Флиппер дошёл до меня больше полугода назад, но что-то под него написать я собрался только сейчас. Его API рассчитаны на язык С — а у меня с ним опыта не очень много. Но проблем с тулингом не возникло — у Флиппера есть своя система сборки, которая скачала мне нужный тулчейн и сгенерировала настройки для IDE.

А для написания кода я решил использовать всё же не C, а C++ — точнее, даже «Си-с-классами». На мой взгляд, затуманенный языками более высокого уровня, такой подход получился удобнее, чем писать на чистом C. Результат можно увидеть в моём репозитории, а в этой статье я попытаюсь описать, какие конкретные фичи языка я использовал, и как именно они мне помогли.

Читать дальше →
Всего голосов 62: ↑59 и ↓3 +56
Комментарии 8

Пишем графический ASCII-калькулятор с помощью стандартной библиотеки Си

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

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


Читать дальше →
Всего голосов 74: ↑73 и ↓1 +72
Комментарии 25

Исследуем саундбар Yamaha YAS-109, часть 2

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

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

В конце первой части статьи по исследованию саундбара Yamaha я упомянул о плачевном состоянии его безопасности. Но вот то, насколько оно плачевное, я тогда представлял не до конца.

И что, сифонит таки?
Всего голосов 46: ↑46 и ↓0 +46
Комментарии 12

Безопасное программирование на Си. Часть 1

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

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

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

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

Битва пет-проектов
Дата 25 сентября – 30 ноября
Место Онлайн
HolyJS
Дата 2 – 12 ноября
Время 15:00 – 19:00
Место Санкт-Петербург Онлайн
IT Recruiting – HR Forum 2023
Дата 8 – 10 ноября
Время 9:00 – 18:00
Место Москва
Яндекс Backend Tour
Дата 13 – 26 ноября
Время 18:00 – 23:00
Место Москва Нижний Новгород Екатеринбург Новосибирск Санкт-Петербург Онлайн
Национальный рекламный форум
Дата 15 – 17 ноября
Время 10:00 – 19:30
Место Москва
Онлайн IT HR-конференция HR42
Дата 17 – 18 ноября
Время 10:00 – 14:00
Место Онлайн
Импульс Т1
Дата 17 ноября
Время 13:00
Место Иннополис Онлайн
HighLoad++ 2023
Дата 27 – 28 ноября
Время 9:00 – 20:00
Место Москва Онлайн
Импульс Т1
Дата 1 декабря
Время 12:30
Место Москва Онлайн

Делаем crackme. Часть вторая: шифруем функции

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

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

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

Генерация зависимостей внутри программы

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

В программировании программы часто строятся иерархично. Один программный компонент вызывает функции из другого программного компонента. Как бы представить эту взаимосвязь в законченной программе?

Эту задачу можно решить прибегнув к языку Graphviz и утилитам cpp, dot, make, chrome.

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

Делаем crackme. Часть первая: whitebox AES

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

Эта статья первая из цикла, в котором мы будем создавать crackme для linux amd64. В crackme будут реализованы шифрование каждой функции отдельным ключём и наномиты для противодействия отладке. В данной статье мы рассмотрим алгоритм встраивания ключа шифрования в код для усложнения расшифровки функций пользователем. Если стало интересно, прошу под кат.

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

Как я писал свою первую игру для Dendy

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

Что такое Dendy? Что так любит детвора? Это электронная игра! Ооо, дендиии...

В этой статье я вам расскажу о своем первом опыте разработки игры для NES/Famicom консоли. Постараюсь рассказать о инструментах, которые использовал и о интересных особенностях разработки игр для Dendy с которыми столкнулся во время создания игры.

Погрузиться в мир Dendy
Всего голосов 70: ↑70 и ↓0 +70
Комментарии 21

Замешиваем файлы в тэги. Часть 3

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

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

Часть 1: Описание задачи, Модуль ядра

Часть 2: Модуль ядра, Регистрация файловой системы

Часть 3: Inode, Lookup

Что в результате получилось можно увидеть по ссылкам: демо-видео, код.

Продолжаем разбираться
Всего голосов 7: ↑6 и ↓1 +5
Комментарии 2

Оскар Толедо: потомственный волшебник

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

Семья Толедо (пригород Мехико) и разнообразная техника их кустарного производства, в том числе компьютер, 1980 год

Оскар Толедо — пятикратный победитель программистского конкурса IOCCC, (Международный конкурс обфусцированного кода на С). Он интересен не только сам по себе, но ещё в контексте своей семьи. Это уникальные люди, которые скромно живут в пригороде Мехико и вообще не стремятся к известности. 25 лет назад они написали свою ОС, браузер и кучу софта для него.

Оскар Толедо — просто продолжатель семейного дела, которое началось примерно в 70-е годы прошлого века.
Читать дальше →
Всего голосов 66: ↑64 и ↓2 +62
Комментарии 8

IMSProg — программатор для CH341a в Linux

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

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

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

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

Работа

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