Рубрика «c plus plus» - 3

Недавно пришлось мне разбираться с одним Open Source проектом. Нужно было разобраться с одной ошибкой. Ошибка была плавающей и проявлялась исключительно на стенде, после получаса раб. Да и то не всегда. Поэтому было принято решение логировать определенные участки кода.
Поэтому была написана простая функция:
void dbg(const char * AMsg);
которая записывала строку в лог. Вскоре оказалось, что такой функции недостаточно и она была переписана в таком виде:
void dbg(const char * AFmt, ...);
т.е. теперь она при помощи функции vfprintf() записывала в файл форматированную строку. По мере роста числа вызовов, захотелось писать в файл еще два параметра, а именно __LINE__ и __FILE__.Читать полностью »

Ревизия кода / Повторная проверка проекта Notepad++

Прошло более года, как мы проверили Notepad++ с помощью PVS-Studio. Интересно посмотреть, насколько анализатор PVS-Studio стал лучше, и что было исправлено в Notepad++ из прежних ошибок.
Введение

Итак, мы проверили проект Notepad++ взятый из репозитория 31 января 2012. Для проверки использовался анализатор PVS-Studio версии 4.54.
Как уже было сказано, мы ранее проверяли этот проект. Ошибок нашли не много, но всё-таки что-то нашли. В новой версии проекта часть старых ошибок исправлена, а часть нет. Это странно. По всей видимости, прежняя заметка осталась незамеченной авторами Notepad++ и они не воспользовались PVS-Studio для проверки проекта.Читать полностью »

Алгоритмы / [Из песочницы] Алгоритм Ляна-Кнута для расстановки мягких переносов
При работе с текстом часто возникает потребность корректно расставить переносы. Задача на первый взгляд не такая уж очевидная, нужно учитывать особенности каждого языка, чтобы решить, в каком месте разорвать слово. Как правильно формализовать такие требования, и как потом применить их в алгоритме? Одно из самых распространенных на сей день решений предложил Франклин Марк Лян, студент известного профессора Дональда Кнута. Алгоритм так и называется – «Алгоритм Ляна-Кнута», он применяется в издательской системе TeX, автор которой опять же Д. Кнут.
Алгоритм основан на сравнении исходного слова с набором правил (шаблонов). Чем большеЧитать полностью »

C++ / [Из песочницы] DynLib: библиотека для создания и работы с DLL
Библиотека DynLib предоставляет удобные средства для разработчиков, использующих межмодульное взаимодействие (EXEDLL, DLLDLL) в своих проектах, и значительно сокращает время и количество кода.
DynLib была написана для внутреннего использования одним из наших сотрудников SergX и стала неотъемлемым инструментом разработки. Под катом делимся результатами.
Недостатки традиционного подхода к реализации DLL

К основным недостаткам традиционного подхода (реализации) можно отнести:отсутствие возможности использовать пространства имен

большое количество служебного кода, необходимого:при реализацииЧитать полностью »

Для любой задачи можно придумать тест, который даст необходимый результат. ©
Но в этот раз никаких специальных задач не было, а просто захотелось узнать насколько быстр GHC и вот что получилось.
Дано: массив 16k целых чисел
Тест: 1000 раз quicksort
C (own) 0m2.528s x 1.00
C (qsort) 0m3.282s x 1.30
C++ (std) 0m3.250s x 1.28

Haskell 0m3.867s x 1.53

PHP 1m18.73s x 30
Python 1m38.55s x 38
Perl 2m53.69s x 67

В последних трех тестах не стояла цель получить лучшие результаты, они оставлены для общего маштаба.Исходники: as is, без специальной тест системы, использовался time (man 1 time)Железо: MacBook Pro Mid 2010 / 2.4 GHz Intel Core i5Версии:
gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.1.00)
Читать полностью »

В первой части статьи, переведенной уважаемым skb7, было рассмотрено идиому Pimpl (pointer to implementation, указатель на реализацию), ее назначение и преимущества. Во второй части будет рассмотрено проблемы, возникающие при использовании этой идиомы, а также предложены некоторые варианты их решения.
Ссылки на оригинал

Это перевод второй части статьи, опубликованной на сайте Heise Developer. Перевод первой части можно найти тут. Оригиналы обеих частей (на немецком языке) лежат тут и здесь.
Перевод был сделан с английского перевода.
Аннотация

Много было написано про эту забавно звучащую идиому, такжеЧитать полностью »


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