Рубрика «С++»

Я являюсь автором проекта по математическому моделированию прикладной механики и в работе моей программы до 90% вычислительного времени уходит на решение системы линейных уравнений. Цель этой статьи сугубо практическая - найти оптимальный метод решения системы линейных уравнений с точки зрения производительность/трудозатрат для небольшого проекта и рассказать о результате.

В прошлом я уже несколько раз обращал внимание на вычисления на GPU, но всегда что-то останавливало. И вот у меня накопился достаточный практический опыт программирования на C/C++ и наконец дошли руки, чтобы протестировать OpenCL.

Читать полностью »

Компьютерные игры давно вошли в нашу жизнь. Переносные устройства для игр тоже существуют давно. И, конечно же, с появлением мобильных телефонов, КПК и других носимых устройств игры проникли и на них. С развитием смартфонов (смеси КПК и мобильного телефона) игры на них становились всё более требовательными и графически интересными. Индустрия игр настолько развилась, что игры типа Genshin Impact или Fortnite отлично работают на смартфонах, а Doom (часто благодаря Raspberry Pi) запускают даже на тостере или кишечной палочке. Однако сейчас разговор пойдёт скорее об энтузиастах и других ОС.

Читать полностью »

Пилим движок Arcanum. Урок 01. Начало - 1

Приветствую, читатели!

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

  1. Мотивация

    Читать полностью »

Интернет вещей плотно вошел в нашу жизнь и используется повсеместно. Для меня же это возможность не только пользоваться, но еще и создавать разные умные устройства.

Да здравствует кастомный автозвук, или Мой DIY Bluetooth-пульт на основе ESP32 - 1

Меня зовут Евгений Глейзерман, я — Head of KasperskyOS IoT Protection Development в «Лаборатории Касперского». Отвечаю за различные IoT-продукты на собственной микроядерной операционной системе KasperskyOS: шлюзы, контроллеры, блоки телематики и т. д. А еще я иногда ковыряю устройства поменьше, на которые KasperskyOS пока установить нельзя. В данной статье хочу рассказать о своем хобби-проекте и поделиться возможностями esp-32 на примере DIY-девайса для автозвука: как я собрал пульт, регулирующий громкость по Bluetooth, взяв за основу популярный микроконтроллер.
Читать полностью »

4 типовые ловушки в работе со строками в С и С++ и как их избежать - 1

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


Читать полностью »

Как malloc сломала JPGLoader в Serenity, или как выиграть в лотерее - 1


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

Странно, не так ли? Похоже, будто просто перепутали RGB и BGR. При этом внесение в JPGLoader.cpp следующего изменения:

-   const Color color { (u8)block.y[pixel_index], (u8)block.cb[pixel_index], (u8)block.cr[pixel_index] };
+   const Color color { (u8)block.cr[pixel_index], (u8)block.cb[pixel_index], (u8)block.y[pixel_index] };
    context.bitmap->set_pixel(x, y, color);

приводит к корректному показу картинки. Вроде бы можно считать дело закрытым!

…Но нет. Возникает вопрос, почему вообще произошёл этот сбой?Читать полностью »


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