Планировалось, что, написав статью "Обидно за мнения про статические анализаторы кода", мы выговоримся и спокойно отпустим тему. Но неожиданно эта статья вызвала бурный отклик. К сожалению, обсуждение пошло не туда, и сейчас мы сделаем вторую попытку объяснить своё видение ситуации.
Читать полностью »
Рубрика «С++» - 4
Продолжение: обидно за мнения про статические анализаторы кода
2020-10-16 в 7:36, admin, рубрики: C, c++, pvs-studio, volatile, Блог компании PVS-Studio, опечатки, ошибки в коде, С++, Си, Совершенный код, статический анализ кода, статический анализатор кодаСолнце в коробке
2020-10-04 в 17:44, admin, рубрики: diy или сделай сам, веб-дизайн, инди-разработка, микроконтроллеры stm, программирование микроконтроллеров, Разработка для интернета вещей, С++, ТехноТекст, электроника своими руками«Это мой лучший друг: всегда в хорошем настроении и не задаёт лишних вопросов» — Леон о растении.
Не секрет, что зеленые друзья расползлись по подоконникам многих из нас, вот и мне захотелось вырастить у себя что-нибудь. Да не просто «что-нибудь», а что-нибудь плодоносящее. К сожалению, в квартирных условиях обеспечить необходимые для этого условия весьма непросто. Однако попытаться стоит. Так, и взбрела мне в голову мысль разработки устройства для решения этой задачи — умного гроубокса. Конечно, идея не нова, но найти что-нибудь интересное, да еще и настольного формата среди готовой продукции мне не удалось и захотелось соорудить кое-что своё. Дело дошло до версии 2.0 и вот, я готов поделиться полученными результатами.Читать полностью »
В этой статье мы подробно разберем понятие сопрограмм (coroutines), их классификацию, детально рассмотрим реализацию, допущения и компромиссы, предлагаемые новым стандартом C++20.
Проверка QEMU с помощью PVS-Studio
2020-09-04 в 6:53, admin, рубрики: C, c++, open source, programming, qemu, virtual machine, Блог компании PVS-Studio, Программирование, С++
QEMU – достаточно известное приложение для эмуляции. Статический анализ может помочь разработчикам таких сложных проектов, как QEMU, отлавливать ошибки на раннем этапе и в целом повысить его качество и надёжность. В этой статье будет проверен исходный код приложения QEMU на потенциальные уязвимости и ошибки с помощью инструмента статического анализа PVS-Studio.
Читать полностью »
Обучение технологии ray-casting, часть 1
2020-08-15 в 11:39, admin, рубрики: c++, движок, перевод, разработка игр, С++Двумерное indie… трехмерные AAA-проекты… А может что-то промежуточное?
Приветствую всех читателей. Мною было решено обобщить и перевести замечательную серию статей «Ray-Casting Tutorial For Game Development And Other Purposes» за авторством Ф. Пермади по изучению технологии ray-casting.
Как можно и как нельзя использовать нулевой указатель в С++
2020-07-30 в 12:23, admin, рубрики: c++, clang, Cpp, gcc, MSVC, null, promwad, нулевые указатели, Программирование, Производство и разработка электроники, Разработка под Linux, С++
Некоторым этот банальный вопрос уже набил оскомину, но мы взяли 7 примеров и попытались объяснить их поведение при помощи стандарта:
struct A {
int data_mem;
void non_static_mem_fn() {}
static void static_mem_fn() {}
};
void foo(int) {}
A* p{nullptr};
/*1*/ *p;
/*2*/ foo((*p, 5));
/*3*/ A a{*p};
/*4*/ p->data_mem;
/*5*/ int b{p->data_mem};
/*6*/ p->non_static_mem_fn();
/*7*/ p->static_mem_fn();
Параллелизм и эффективность: Python vs FSM
2020-06-14 в 8:42, admin, рубрики: c++, FSM, python, qt, автоматное программирование, параллельное программирование, С++Признаюсь, но я не знаю Python. Просто потому, что не использую. Тем не менее, взявшись за его освоение, а также в попытках расшифровать загадочную аббревиатуру GIL, вышел на статью с описанием «необъяснимых магических явлений» параллельного варианта CPU-зависимой функции на Python. Возникло желание перепроверить данный тест и сравнить с эквивалентной реализацией в форме модели конечного автомата (Finite-state machine или сокращенно FSM) в среде Визуального Компонентного Программирования (автоматного) — ВКП(а).
Очевидно любая программа в определенной мере CPU-зависима. С другой стороны, если это только не ассемблер, то тестированием на том или ином языке высокого уровня мы в большей степени исследуем программную прослойку, скрываемую им. Поэтому, рассматривая Python, правильнее было бы говорить о CPU-зависимости его интерпретатора. Можно даже утверждать, что программа на Python будет иметь скорость, зависимую от версии интерпретатора, и обладать характерной для него «мистикой».
В то же время есть ситуации, когда зависимости от CPU может почти не быть (в этом мы убедимся). Речь идет о языках, вычислительная модель которых отлична от типовой архитектуры процессоров. Вычислительная модель Python, ей соответствует, а автоматная модель вычислений, о которой далее пойдет речь, имеет другую архитектуру и это будет определять специфику ее тестирования. Какая будет скорость и будет ли иметь место мистика выяснится в процессе тестирования «автоматного кода».
Читать полностью »
Отображение данных в формате json на структуру C++
2020-06-12 в 19:32, admin, рубрики: c++, json, Программирование, С++В идеале хотелось бы определить структуру С++
struct Person {
std::string name;
int age;
bool student;
} person;
передать экземпляр person в метод отображения вместе с данными json_data
map_json_to_struct(person, json_data)
после чего просто пользоваться заполненной структурой
std::cout << person.name << " : " << person.age;
StructMapping пытается решить эту задачу.
Как починить все самому, если баг-репорты игнорируются: отлаживаю wkhtmltopdf под Windows
2020-06-10 в 11:14, admin, рубрики: c++, open source, PDF, python, wkhtmltopdf, Блог компании RUVDS.com, Разработка веб-сайтов, С++wkhtmltopdf — это один из самых мощных инструментов для генерации PDF. Он позволяет использовать в генерируемом документе все возможности HTML и CSS. «Под капотом» у него движок WebKit, так что результат почти в точности соответствует выводу «Print to PDF», встроенному в Chrome. Судя по вопросам на Stack Overflow, wkhtmltopdf используется для генерации карт, графиков, бухгалтерских отчётов, подарочных сертификатов, и практически любого другого контента, который в конечном счёте должен оказаться распечатанным на бумаге.
Мой давний заказчик с помощью wkhtmltopdf генерирует PDF-инвойсы в своём веб-магазине. При печати в «шапке» инвойса должен отображаться чёрно-белый логотип, тогда как на сайте используется цветной. Очевидное решение — подменить изображение в CSS @media print { ... }
Но тут обнаружилась проблема: если изображение не используется вне @media print
, то оно не загружается и при печати (этот баг можно заметить и в окне Print Preview самого Chrome).Читать полностью »
Аллокаторы памяти
2020-06-06 в 17:42, admin, рубрики: C, c++, Алгоритмы, програмирование, Программирование, С++Всем привет! Не так давно, после очень плотного изучения аллокаторов и алгоритмов распределения памяти, а также в последующем применении их на практике мне в голову пришла идея написать статью, в которой будет максимально подробно рассказано о них. Считаю, что данная тема будет достаточно востребованной, так как в сети, особенно в русскоязычной части, на данный момент существует очень мало источников, посвященных этому вопросу.
Читать полностью »