Статический анализатор PVS-Studio известен в мире C, C++ и C# как инструмент для выявления ошибок и потенциальных уязвимостей. Однако у нас мало клиентов из финансового сектора, так как выяснилось, что сейчас там востребованы Java и IBM RPG(!). Нам же всегда хотелось стать ближе к миру Enterprise, поэтому, после некоторых раздумий, мы приняли решение заняться созданием Java анализатора.
Читать полностью »
Рубрика «c++» - 89
Разработка нового статического анализатора: PVS-Studio Java
2018-06-20 в 11:18, admin, рубрики: c++, java, pvs-studio, Блог компании PVS-Studio, Программирование, статический анализДоклады с Минской С++ конференции CoreHard Spring 2018
2018-06-18 в 15:06, admin, рубрики: c++, corehard, Блог компании PVS-Studio, качество кода, конференции, Программирование, статический анализ кода7 — 8 апреля сообщество CoreHard провело в Минске восьмую международную конференцию CoreHard Spring 2018, посвященную языку С++ и сопутствующим «хардкорным» технологиям. В конференции участвовали спикеры из ведущих IT-компаний Беларуси, России, Украины, Германии и Голландии. Они рассказали о своем опыте в разработке и тестировании.
Теперь доклады с конференции размещены в свободном доступе на YouTube и все желающие могут познакомиться с ними. Благодарим организаторов конференции.
Читать полностью »
Особенности вызова функций в С++
2018-06-18 в 10:46, admin, рубрики: abi, c++, clang, optional, system v, xeon, виртуальные функции, вызов функции, инициализация, массивы, ненормальное программирование, оптимизация, Программирование, производительность, хвостовая рекурсияНе так давно у меня произошёл очередной разговор с коллегой на извечную тему: "по ссылке, или по значению". В результате возникла данная статья. В ней я хочу изложить результаты моего исследования по этой и смежным темам. Далее будут рассмотрены:
- Регистры и их назначение при вызове функций.
- Передача и возврат простых типов и структур.
- Как передача по ссылке и по значению влияют на оптимизации тела функции компилятором.
- Как используется место при многочисленных вызовах функций.
- Механизм виртуальных вызовов.
- Оптимизация хвостовых вызовов и рекурсии.
- Инициализация структур, массивов и векторов.
Осторожно! Статья содержит большое количество кода на C++ и ассемблере (с комментариями), а также множество таблиц с оценками производительности.
Инфраструктура открытых ключей: библиотека GCrypt как альтернатива OpenSSL с поддержкой российской криптографии
2018-06-18 в 4:18, admin, рубрики: C, c++, certificate, cms разработка, gcc, libgcrypt, open source, openssl, PKI, python, tcl, TK26, x509, ГОСТ 34.10-2012, ГОСТ 34.11-2012, криптография, Программирование, Разработка под LinuxПриближается вторая половина 2018 года и скоро должен наступить «2000-й год» в ИОК на базе российской криптографии. Это связано с тем, что
использование схемы подписи ГОСТ Р 34.10-2001 для формирования подписи после 31 декабря 2018 года не допускается!
Уже сегодня не имеет смысла получать сертификаты с подписью по ГОСТ Р 34.10-2001. Читать полностью »
Windows и case-sensitive filesystem
2018-06-15 в 15:22, admin, рубрики: c++, linux, ntfs, Windows 10, WSL, Блог компании «Лаборатория Касперского», Настройка Linux, системное администрирование, системное программированиеДавным-давно, на заре своего рождения Windows использовала файловую систему FAT. Потом ей на смену Microsoft и IBM разработали NTFS. В те давние времена возникло два противоположных подхода к файловой системе. В Linux используется case-sensitive файловая система, а в Microsoft — case-insensitive.
Суть в том, что в case-sensitive файловой системе считается, что имена, написанные в разных регистрах (например, FILE.txt и file.txt) — это разные имена. А для Windows между ними нет разницы.
Несмотря на нечувствительность Windows к регистру букв, разработчики NTFS подошли к делу ответственно, и бережно сохраняют регистр имен каталогов и файлов. Возможно, они не теряли надежды на сближение с противоборствующим лагерем.
Читать полностью »
1. По мотивам Мейерса «Эффективный и современный c++» — вывод типа шаблона
2018-06-15 в 15:18, admin, рубрики: c++, c++11, C++14, c++17, Профессиональная литератураДобрый день, дорогой читатель!
Эта статья — первая в цикле статей-конспектов, которые я буду писать по ходу прочтения книги Скотта Мейерса "Эффективный и современный c++". Каждой из таких статей будет соответствовать отдельная директория в специально заведенном на github.com проекте с примерами использования описываемых возможностей и приемов.
Апгрейдим текстовые протоколы до бинарных и боремся с legacy-кодом на встрече C++ User Group
2018-06-14 в 16:14, admin, рубрики: c++, legacy-код, апгрейд протоколов, Блог компании «Лаборатория Касперского», митапПриглашаем вас на очередную встречу C++ User Group, которая пройдет 28 июня в рамках нашей event-платформы CoLaboratory. В прошлый раз мы обсуждали перформанс и Clang Static Analyser. Теперь поговорим о наболевшем: как избавиться от legacy-кода? Как избежать его образования в дальнейшем? Какие сложности возникают при апгрейде протокола взаимодействия, и как с ними справиться?Читать полностью »
Использование Docker для сборки и запуска проекта на C++
2018-06-14 в 13:53, admin, рубрики: c++, cmake, docker, GTest, ПрограммированиеВ этой публикации речь пойдет о том, как выполнить сборку C++ проекта, использующего GTest и Boost, при помощи Docker. Статья представляет собой рецепт с некоторыми поясняющими комментариями, представленное в статье решение не претендует на статус Production-ready.
Зачем и кому это может понадобиться?
Предположим, что вам, как и мне очень нравится концепция Python venv, когда все нужные зависимости расположены в отдельной, строго определенной директории; или же вам необходимо обеспечить простую переносимость среды сборки и тестирования для разрабатываемого проекта, что очень удобно, например, при присоединении нового разработчика к команде.
Эта статья будет особенно полезна начинающим разработчикам, кому необходимо выполнить базовую настройку окружения для сборки и запуска C++ проекта.
Представленное в статье окружение можно использовать как каркас для тестовых заданий или лабораторных работ.
Полный цикл разработки IoT устройства управления подогревом бассейна на ESP8266 в среде Arduino
2018-06-13 в 7:59, admin, рубрики: arduino, c++, EasyEDA, esp32, esp8266, IoT, VisualMicro, микроконтроллер, Программирование, программирование микроконтроллеров, Разработка под Arduino, схемотехника, умный домВ данной публикации я поделюсь опытом о создании IoT устройства с ноля: от появления идеи и воплощении ее в «железе» до создания микропрограммы для контроллера и web-интерфейса для управления созданным устройством через сеть интернет.
До создания этого устройства я:
- Почти не разбирался схемотехнике. Только на уровне принципов работы
резистора/транзистора… Я не имел никакого опыта в создании сколь-нибудь сложных схем. - Никогда не проектировал печатных плат.
- Никогда не паял SMD компонент. Уровень владения паяльником был на уровне припаивания проводов и какого-нибудь реле.
- Никогда не писал таких сложных программ для микроконтроллера. Весь опыт был на уровне «зажги светодиод в Arduino», а контроллер ESP8266 я встретил впервые.
- Совсем немного писал на C++ для «большого брата», но это было более десятка лет назад и все давно забылось.
Конечно, опыт работы программистом (главным образом это Microsoft .NET) и системное мышление помогли мне разобраться в теме. Думаю, сможет и читатель этой публикации. Полезных ссылок и статей в интернете море. Самые, на мой взгляд интересные, и помогающие разобраться в теме, я привожу по ходу статьи.