Рубрика «c/c++» - 6

Intel® Tamper Protection Toolkit — обфусцирующий компилятор и средства проверки целостности кода - 1
Совсем недавно компания Intel выпустила очень интересный набор инструментов для разработчиков программного обеспечения, позволяющий добавить защиту программного кода от взлома и существенно усложнить жизнь взломщикам программ. Этот набор включает в себя обфусцирующий компилятор, средство для создания файла подписи, используемого для проверки целостности загружаемых динамических библиотек, а также библиотеку функций проверки целостности и дополнительные полезные инструменты. Intel Tamper Protection Toolkit beta можно совершенно бесплатно скачать на сайте Intel.
Читать полностью »

PVS-Studio
Мы временами экспериментируем с триальным режимом, чтобы знакомство с анализатором PVS-Studio проходило как можно эффективней. Сейчас мы вновь поменяли формат триальной версии. Эта заметка должна ответить на все вопросы, которое могут возникнуть у разработчиков, пожелавших познакомиться с нашим инструментом. Фактически эта статья является ответом на вопрос «можно ли попробовать демонстрационную версию и какие в ней ограничения?».
Читать полностью »

Эта статья написана прежде всего для программистов C/C++, использующих в своей работе Visual Studio 2013. Поскольку я, как говорится, totally windows guy, то я не могу оценить полезность этой статьи для программистов, не использующих эту среду в своей работе. Итак.

Не секрет, что стандартный аллокатор new/delete/malloc/free в языке C/C++ не блещет быстродействием. Конечно, всё зависит от реализации, но, если говорить об оной от компании Microsoft, то это факт. Кроме того, стандартная реализация аллокатора обладает еще одним фатальным недостатком — фрагментацией памяти. Если в вашей программе происходят частые выделения/освобождения памяти, вы можете обнаружить, что спустя несколько часов работы ваша программа упала по причине нехватки памяти, хотя свободной памяти еще достаточно — просто в результате фрагментации в пуле аллокатора не осталось свободного участка достаточного размера. (Это, кстати, абсолютно реальный случай, который случился на одном из проектов, в котором я принимал непосредственное участие.)
Читать полностью »

Разрабатываю устройство с выводом информации на LED-матрицу. Стандартное типовое решение на МК STM8S105C6T6 + 74HC595.

image

И вот, после прогоночных тестов на простых картинках и строках, я столкнулся с проблемой, как же забивать эти массивы данных самым простым способом? Ведь каждый пиксел это или 1 или 0, а даже в самой маленькой матрице 8х8 – этих пикселов аж целых 64.
Читать полностью »

Почти каждый микроконтроллерщик сталкивался с громадными switch-case и мучительно их отлаживал.
И много кто, начиная писать реализацию какого-либо протокола, задумывался как написать её красиво, изящно, так чтобы через месяц было понятно что ты имел в виду, чтобы она не отжирала всю память и вообще какала бабочками.
И вот тут на помощь приходят машины состояний, они же конечные автоматы (те самые которые используются в регулярных выражениях).

Собственно через регулярные выражения я к ним и пришёл.
Читать полностью »

Всем привет!

Решил задуматься над созданием собственного стартапа в области системного программирования (либо прильнуть к уже существующему), а именно: вирусописании и руткитописании. Читать полностью »

На днях обновился Google Testing Framework до версии 1.7.0.
В новой версии:
* Новая функция: death-тесты поддерживаются на OpenBSD и в IOS Simulator;
* Новая функция: Test :: RecordProperty () теперь может быть использована за пределами тестового метода;
* Новые возможности: — gtest_list_tests теперь печатает параметры-типы и параметры-значения для каждого теста;
* Улучшение: указатели char и массивы символов теперь обрабатываются корректно;
* Улучшение: отчеты об отказах в XML файлах теперь содержат номер строки и файл;
* «Potentially breaking change»: RUN_ALL_TESTS () теперь реализована в виде функцим вместо макроса для того, чтобы лучше работать с Clang;
Читать полностью »

Браузер Chromium очень быстро развивается. Например, когда в 2011 году мы впервые проверили этот проект (solution), он состоял из 473 проектов. Сейчас, он состоит уже из 1169 проектов. Нам было интересно, смогли ли разработчики Google сохранить высочайшее качество кода, при такой скорости развития Chromium. Да, смогли.
Читать полностью »

Кому предназначена статья

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

С чего стоит начать новичку-хеллоуворлдщику

image

Первое, с чего стоит начать, так это определиться, в какой области и в каких языках вы собираетесь быть профессионалом. Для этого сначала лучше оценить потребности на рынке труда в том городе, где вы собираетесь работать (хотя расположение не мешает вам фрилансить где и на кого угодно). Это можно проделать самому по hh.ru, career.ru, hantim.ru или воспользоваться соответствующими статьями. Для примера оценка на 2012г: habrahabr.ru/company/hh/blog/156803/ (ссылки в статье не ради рекламы) Но не стоит бросаться на самые популярные языки (php, javascript и прочие языки с низким порогом вхождения). Тем более на то, что изучают в школе (turbo pascal, basic и т.п.), таким путём вы потратите время впустую и не будете представлять какой-либо ценности работодателю.
Читать полностью »

Не в совокупности ищи единства, но более – в единообразии разделения.
Козьма Прутков

Немного воды вначале

Нельзя не заметить, что аспектно-ориентированное программирование с каждым годом берет новые рубежи популярности. На хабре было уже несколько статей посвященных этому вопросу, от Java до PHP. Пришло время обратить свой взор на С/C++. Теперь я в первом же абзаце признаюсь, что речь пойдет не об «настоящих аспектах», но о чем-то, близко с ними связанном. Также рассуждение будет вестись в контексте embedded-проектов, хотя описываемые методы могут применяться где угодно, но именно embedded, это та область, где эффект будет максимально ощутимым. Еще я буду использовать слова «хидер» и «дефайн» для обозначения, соответственно, «заголовочного файла» и «макроопределения». Сухой и академичный язык это хорошо, но в данном случае, мне кажется, все будет проще понять, если пользоваться устоявшимися англицизмами.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js