Нас часто спрашивают, умеет ли статический анализатор кода PVS-Studio выявлять утечки памяти (memory leaks). Чтобы много раз не писать похожие тексты в письмах, мы решили дать подробный ответ в блоге. Да, PVS-Studio умеет выявлять утечки памяти и других ресурсов. Для этого в PVS-Studio реализовано несколько диагностик и в статье будут продемонстрированы примеры обнаружения ошибок в реальных проектах.
Читать полностью »
Рубрика «c++» - 101
Да, PVS-Studio умеет выявлять утечки памяти
2017-11-29 в 14:43, admin, рубрики: C, c/c++, c++, pvs-studio, Блог компании PVS-Studio, ответы на вопросы, Си, си/си++, статический анализ кода, утечки памятиКак Discord каждый день изменяет размер 150 млн картинок с помощью Go и C++
2017-11-28 в 13:57, admin, рубрики: afl, c++, cgo, Go, libjpeg-turbo, libpng, Lilliput, nginx, open source, opencv, x86 SSE, обработка изображений, фаззинг
Хотя Discord — это приложение для голосового и текстового чата, каждый день через него проходит более ста миллионов изображений. Конечно, мы бы хотели, чтобы задача была простой: просто перенаправить картинки вашим друзьям по всем каналам. Но в реальности доставка этих изображений создаёт довольно большие технические проблемы. Прямая ссылка на картинки выдаст хосту с картинкой IP-адреса пользователей, а большие изображения расходуют много трафика. Чтобы избежать этих проблем, требуется промежуточный сервис, который будет получать изображения для пользователей и изменять их размер для экономии трафика.
Встречайте Image Proxy
Для выполнения этой работы мы создали сервис Python и креативно назвали его Image Proxy. Он загружает картинки с удалённых URL, а затем выполняет ресурсоёмкую задачу по ресайзингу с помощью пакета pillow-simd. Этот пакет работает удивительно быстро, используя где только возможно для ускорения ресайзинга инструкции x86 SSE. Image Proxy будет получать HTTP-запрос, содержащий URL, чтобы загрузить, изменить размер и, наконец, выдать окончательное изображение.
Читать полностью »
Сравнение качества кода Firebird, MySQL и PostgreSQL
2017-11-28 в 13:40, admin, рубрики: C, c++, cwe, data bases, firebird, Firebird/Interbase, mysql, postgresql, pvs-studio, static code analysis, базы данных, Блог компании PVS-Studio, Программирование, Си, статический анализ кода
Сегодняшняя статья несколько необычна. Как минимум по той причине, что вместо анализа одного проекта, будем искать ошибки сразу в трёх, а также посмотрим, где найдутся наиболее интересные баги. А самое интересное — мы выясним, кто молодец и пишет самый качественный код. Итак, на повестке дня — разбор ошибок в коде проектов Firebird, MySQL и PostgreSQL.
Читать полностью »
Повторное использование кода — как это бывает на практике
2017-11-28 в 13:25, admin, рубрики: c++, reusable component, Анализ и проектирование систем, разработка игр, Совершенный кодСреди программистов очень популярны разговоры о «повторном использовании кода» — и в основном об этом говорят в позитивном ключе. Нам нравится говорить, что спроектированные нами конструкции являются «универсальными» и «пригодными к использованию в других проектах». Почему это считается хорошей вещью легко понять — всем хочется реализовать следующий проект вдвое быстрее предыдущего за счет использования уже имеющихся наработок.
Но когда дело доходит до этого на практике — чаще всего что-то идёт не так. Есть одна очень умная мысль на этот счёт: «Не пытайтесь делать код переиспользуемым, пока вы не видите как минимум три разных места, где его можно будет применить». Я считаю этот совет очень хорошим — я видел немало ситуаций, когда он помог (или помог бы) избежать одержимости попытками написания переиспользуемого кода там, где проблему можно было решить для одного конкретного случая «здесь и сейчас».
Это указывает нам на изъяны в теории о том, что переиспользование всегда является желанной и благородной целью.
Читать полностью »
Conan: менеджер зависимостей для C-C++
2017-11-27 в 18:45, admin, рубрики: C, c++, пакетный менеджер, Промышленное программирование
Здравствуйте. Сегодня речь пойдёт про Conan — современный менеджер зависимостей для C/C++. Если Вы уже активно работаете с ним, то навряд ли найдёт что-нибудь новое для себя. Иначе — прошу под кат.
Читать полностью »
Обзор дефектов кода музыкального софта. Часть 5. Steinberg SDKs
2017-11-27 в 7:14, admin, рубрики: C, c++, cubase, music, music software, open source, pvs-studio, static code analysis, steinberg, Блог компании PVS-Studio, Компиляторы, Работа со звуком, статический анализ кода
Я продолжаю обзор кода музыкальных приложений, и перед нами первый представитель коммерческого программного обеспечения. В комментариях к предыдущим статьям я заметил популярность программы Cubase и решил почитать о ней. Это продукт компании Steinberg, у которой есть несколько программ с закрытым исходным кодом. Случайно на их сайте я нашёл SDK для сторонних разработчиков, и, изучив его, обнаружил множество интересных ошибок.
Читать полностью »
Обзор дефектов кода музыкального софта. Часть 4. Ardour
2017-11-23 в 6:58, admin, рубрики: ardour, C, c++, music, music software, open source, pvs-studio, static code analysis, Блог компании PVS-Studio, Компиляторы, Работа со звуком, статический анализ кода
Ardour пока является самым крупным из музыкальных проектов, участвующих в обзоре дефектов кода. Проект включает около 1000 файлов исходного кода на языке C++. Проект активно поддерживается сообществом разработчиков, при этом я не нашёл упоминаний об использовании каких-либо инструментов статического анализа. Как следствие — множество ошибок разного характера. В статье будут описаны самые интересные из них.
Читать полностью »
Ещё один шажок к C++20. Встреча в Альбукерке
2017-11-22 в 11:55, admin, рубрики: atomic, c++, c++ библиотеки, c++17, C++20, c++2a, constexpr, IT-стандарты, modules, networking, operators, Блог компании Яндекс, Компиляторы, ПрограммированиеИз центральной части Канады — на юго-запад США! Альбукерке расположен в штате Нью-Мексико:
На встрече международного комитета по стандартизации C++, которая прошла в этом городе, приняли одно очень большое нововведение в С++20 и несколько маленьких.Читать полностью »
Драконье Стекло или рассказ о игровом редакторе Larian Studios
2017-11-20 в 15:05, admin, рубрики: .net, C#, c++, Gamedev, larian studios, wpf, Блог компании Larian Studios, никто не читает теги, разработка игрПривет! Это снова Larian Studios. Уф, у нас прошёл релиз, и теперь наконец-то появилось время продолжить делиться с вами нашим опытом и наработками.
Сегодня я расскажу о самом главном инструменте, с помощью которого родилось уже 4 проекта — о кофемашине внутреннем редакторе игры. Редактор доступен в ограниченном (для моддеров и игроков) виде в Steam/GoG, поэтому каждый, кто приобрел игру, может скачать его и попробовать бесплатно.
В статье я проведу обзор основной функциональности, коснусь некоторых архитектурных решений и расскажу немного о процессе его разработки и поддержки. Если понравится — в следующих статьях расскажу подробно о каждом элементе редактора в отдельности.
Ну и еще расскажу, чем занимаются Tools Programmer в нашей студии.
Читать полностью »
Сказ про резисторы и неонки
2017-11-19 в 16:41, admin, рубрики: c++, ардуино головного мозга, ацп, Занимательные задачки, математика, ненормальное программирование, программирование микроконтроллеров, расчёт цепей, троичная логика, цапРасчёт цепей постоянного тока на пальцах, или давайте считать ЦАП для троичной логики
Но для начала неонки, какой же русский их не любит?
Итак, снова я со своими троичными железками, но в этой статье они выступают фоном, сегодня статья про резисторы. Запаял я было несколько платок, в которые можно воткнуть газоразрядные лампы типа ИН-12 или ИН-15, но часы делать не захотел :)