Наша программа обрабатывает сетевые пакеты, в частности, заголовки TCP/IP/etc. В них числовые значения — смещения, счетчики, адреса — представлены в сетевом порядке байтов (big-endian); мы же работаем на x86 (little-endian). В стандартных структурах, описывающих заголовки, эти поля представлены простыми целочисленными типами (uint32_t
, uint16_t
). После нескольких багов из-за того, что порядок байтов забыли преобразовать, мы решили заменить типы полей на классы, запрещающие неявные преобразования и нетипичные операции. Под катом — утилитарный код и конкретные примеры ошибок, которые выявила строгая типизация.
Читать полностью »
Рубрика «c++» - 50
Польза строгой типизации в C++: практический опыт
2019-10-12 в 20:38, admin, рубрики: c++, endianess, Программирование, типизацияДелаем автономного водного дрона или как я мечтал помочь Байкалу, но я не газпром. Часть 1
2019-10-10 в 15:08, admin, рубрики: avr, c++, Drone, esp8266, github, байкал, программирование микроконтроллеров, робототехникаПривет!
Я живу рядом с Байкалом, и много раз бывал на нем. Это красивое озеро с чистым воздухом. Несколько лет назад озеро начало загрязняться. И вот я подумал почему бы не сделать дрона с солнечными батареями, поставить на нее двигатель, нейронный компьютер с YolloV3(нейросеть которая обеспечивает зрение компьютеру) со стереокамерой, добавить GPS и научить его чистить Байкал в автономном режиме.Читать полностью »
Уравнение Навье-Стокса и симуляция жидкостей на CUDA
2019-10-09 в 8:42, admin, рубрики: c++, fluid simulation, gpgpu, gpgpu (nvidia cuda), navier-stokes equation, SFML, математика, физикаПривет. В этой статье мы разберемся с уравнением Навье-Стокса для несжимаемой жидкости, численно его решим и сделаем красивую симуляцию, работающую за счет параллельного вычисления на CUDA. Основная цель — показать, как можно применить математику, лежащую в основе уравнения, на практике при решении задачи моделирования жидкостей и газов.
Когда хочется красивый GUI, а gpu нет
2019-10-08 в 20:41, admin, рубрики: c++, nanogui, UI, никто не читает теги, Работа с векторной графикойОбычно для рабочих утилит не требуется вменяемый UI, с кнопками, списками, окнами, поддержкой мыши и прочей мелочевкой, большинство рабочих «хотелок» можно упаковать в скрипты и иногда запускать их с параметром --help, и так будет даже правильней с точки зрения настройки и масштабирования. Все становится хуже, когда тулами начинают пользоваться не только команда разработки, но и сторонние люди. А они не всегда готовы вникать в стройные мысли, уложенные в строчки кода. И тогда приходится городить UI, а он у разработчиков выходит обычно простой, квадратный, функциональный и совсем скучный. Некоторое время назад я работал над небольшой системой управления вентиляцией/обогрева/камерами и еще того «что придумает вон тот дядечка в желтой каске» для подземной автостоянки.

PVS-Studio идёт в облака: CircleCI
2019-10-07 в 12:14, admin, рубрики: c++, circleci, continuous integration, devops, kodi, pvs-studio, static code analysis, Блог компании PVS-Studio, разработка под windows
Мы продолжаем цикл статей по использованию статического анализатора PVS-Studio в облачных CI-системах. Сегодня рассматриваем очередной сервис — CircleCI. В качестве проекта для анализа в этот раз выступит медиаплеер Kodi, в исходном коде которого постараемся найти интересные места.
Читать полностью »
Шпаргалка по аббревиатурам C++ и не только. Часть 1: C++
2019-10-07 в 6:17, admin, рубрики: c++, аббревиатуры, акронимы, Программирование, разработка, С++Когда-то я собеседовался на должность C++ разработчика в одну приличную и даже известную контору. Опыт у меня тогда уже кое-какой был, я даже назывался ведущим разработчиком у тогдашнего своего работодателя. Но на вопросы о том, знаком ли я такими вещами, как DRY, KISS, YAGNI, NIH, раз за разом мне приходилось отвечать «Нет».
Собеседование я с треском провалил, конечно. Но упомянутые аббревиатуры потом загуглил и запомнил. По мере чтения тематических статей и книг, подготовок к собеседованиям и просто общения с коллегами я узнавал больше новых вещей, забывал их, снова гуглил и разбирался. Пару месяцев назад кто-то из коллег небрежно упомянул в рабочем чате IIFE в контексте C++. Я, как тот дед в анекдоте, чуть с печки не свалился и опять полез в гугл.
Оптимизация портфеля облигаций с применением библиотеки ALGLIB
2019-10-05 в 17:41, admin, рубрики: alglib, c++, инвестиции, математика, облигации, С++В статье пойдет речь об опыте разработки программы для составления эффективного портфеля облигаций с точки зрения минимизации его дюрации. Возможно, я не буду оригинален и для всех, кто инвестирует в облигации вопросы определения оптимальных весов давно решены, но все же, надеюсь, описанный подход и приведенный программный код будут кому-то полезны.
Статья, ввиду наличия в ней не малого объема математики, кому-то может показаться усложненной. Но если уж Вы решили заняться инвестициями, то нужно быть готовым к тому, что в финансовой реальности часто встречается математика и еще значительно сложнее.
Исходные коды программы и пример портфеля для оптимизации выложены на GitHub.
Итак, имеем задачу сформировать эффективный портфель облигаций.
Читать полностью »
Инициализация в современном C++
2019-10-04 в 10:20, admin, рубрики: c++, C++ Russia, c++ russia 2019, c++ russia 2019 piter, ПрограммированиеОбщеизвестно, что семантика инициализации — одна из наиболее сложных частей C++. Существует множество видов инициализации, описываемых разным синтаксисом, и все они взаимодействуют сложным и вызывающим вопросы способом. C++11 принес концепцию «универсальной инициализации». К сожалению, она привнесла еще более сложные правила, и в свою очередь, их перекрыли в C++14, C++17 и снова поменяют в C++20.
Под катом — видео и перевод доклада Тимура Домлера (Timur Doumler) с конференции C++ Russia. Тимур вначале подводит исторические итоги эволюции инициализации в С++, дает системный обзор текущего варианта правила инициализации, типичных проблем и сюрпризов, объясняет, как использовать все эти правила эффективно, и, наконец, рассказывает о свежих предложениях в стандарт, которые могут сделать семантику инициализации C++20 немного более удобной. Далее повествование — от его лица.
Преподавателям на заметку: PVS-Studio для знакомства студентов с инструментами анализа кода
2019-10-04 в 7:12, admin, рубрики: C, c++, codereview, csharp, devops, education, java, programming, pvs-studio, SAST, static code analysis, static code analyzer, tool, Блог компании PVS-Studio, информационные технологии, обучение, обучение программированию, Программирование, Си, Совершенный код, статический анализ кода, статический анализатор кода, Учебный процесс в IT
По общению в поддержке и некоторым другим косвенным признакам мы заметили, что среди наших бесплатных пользователей стало много студентов. Причина: анализатор PVS-Studio начал использоваться некоторыми преподавателями в рамках дисциплин, связанных с разработкой программного обеспечения. Нам это очень приятно, и мы решили написать эту небольшую заметку, чтобы привлечь внимание и других преподавателей. Мы рады, что студенты знакомятся с методологией статического анализа кода в целом и инструментом PVS-Studio в частности. Наша команда постарается внести вклад в развитие этой тенденции.
Читать полностью »
For professors’ note: use PVS-Studio to get students familiar with code analysis tools
2019-10-04 в 6:59, admin, рубрики: C, c++, codereview, csharp, devops, education, java, programming, pvs-studio, SAST, static code analysis, static code analyzer, tool, Блог компании PVS-Studio, Программирование, Совершенный код, Учебный процесс в IT
Our support chats and some other indirect signs showed that there are many students among our free users. Here's the reason: PVS-Studio is now more often used by professors in courses related to software development. We are very pleased with this, and we decided to write this small article to fall under notice of other teachers. We are pleased that students become acquainted with the methodology of static code analysis in general and the PVS-Studio tool in particular. Our team will try to contribute to this trend.
Читать полностью »