Уже довольно давно я опубликовал пост «Как тестировать код финализатора (c#)», в котором делился опытом тестирования кода, реализованного в финализаторе. Не прошло и года, как тест все-таки упал. Подробности под катом.
Читать полностью »
Метка «c++» - 6
Как тестировать код финализатора (c#). Послесловие: тест все-таки упал
2014-06-16 в 11:52, admin, рубрики: .net, appdomain, dispose, finalizer, idisposable, nunit, testing, тестирование, финализатор, метки: .net, appdomain, c++, dispose, finalizer, idisposable, nunit, testing, финализаторПоиграем в эволюцию? Генетические алгоритмы в скринсейвере
2014-06-16 в 8:01, admin, рубрики: c++, game development, SFML, эволюция, метки: c++, SFML, эволюцияПоследний месяц в армии. Постепенно освобождается время для разных интересных проектов. Остается только определиться, чем именно занять мозги. Закончил читать «Эгоистичный ген» Ричарда Докинза и идея была сформулирована – хочу сделать визуализацию, использующую принципы эволюции.
Рисунок 1. Популяция бактерий перестраивает среду под свои нужды.
Итак, вперед!
Читать полностью »
Снижение компонентной связности кода С++
2014-06-16 в 6:50, admin, рубрики: c++, ioc, pimpl, Проектирование и рефакторинг, Совершенный код, метки: c++, ioc, pimpl
Избавляемся от недостатков классического ООП и пишем на С++ в модульном стиле.
Читать полностью »
Легко и просто проверяем Firefox с помощью PVS-Studio Standalone
2014-06-15 в 9:39, admin, рубрики: bugs, c++, code review, Firefox, open source, pvs-studio, static code analysis, Блог компании PVS-Studio, обзор кода, ошибки в программе, статический анализ кода, метки: bugs, c++, code review, firefox, pvs-studio, static code analysis, обзор кода, ошибки в программе, Си, статический анализ кода
Три года назад мы уже проверяли Mozilla Firefox с помощью анализатора PVS-Studio. Тогда это было неудобно и затруднительно. Для Firefox отсутствует проектный файл для Visual Studio. Сборка осуществляется с помощью make-файлов. Поэтому просто взять и проверить проект нельзя. Требовалось интегрировать PVS-Studio в систему сборки, что оказалось трудной задачей. В результате, как мне помнится, была проанализирована только часть проекта. Но всё поменялось, когда появился PVS-Studio Standalone. Теперь можно отследить все запуски компиляторов и легко проверить проект.
Читать полностью »
Получение снимков с цифровой зеркальной камеры (Nikon) из программного кода на c#
2014-06-13 в 20:03, admin, рубрики: .net, api, Nikon, SDK, автоматическое управление, фотография, Фототехника, метки: .net, api, c++, Nikon, SDK, автоматическое управление, фотографияЗдравствуйте.
Столкнулся я с задачей получения фотографий с фотокамеры в моей программе на c#, причем надо было так, чтобы пользователь нажал кнопку в программе, или случилось какое-то программное событие, и мы ррррраз и получили снимок с камеры в программу и дальше его как-нибудь обработали/сохранили/отправили, в общем сделали с ним что-нибудь программным же образом.
Как оказалось, у производителей цифровых зеркальных фотокамер есть специальный SDK, через который можно программным путем к этой самой камере обратиться и поуправлять ею. У меня камера Nikon D5200, хотя для Sony и Canon вроде бы тоже видел подобный SDK.
Цель статьи рассказать о возможности и показать короткий пример. Как известно, если вы знаете что что-то можно сделать, то узнать, как это сделать – пара пустяков.
Читать полностью »
Логирование сообщений с Easylogging++
2014-06-12 в 9:17, admin, рубрики: c++, отладка, Программирование, метки: c++
Система логирования — незаменимый инструмент для протоколирования работы приложений. Для тех, кто не хочет реализовывать его самостоятельно, на C++ уже существует бессчётное количество готовых библиотек (Log4cplus, Apache log4cxx, Boost.Log и тд.), однако Easylogging++ отличается простотой использования и компактностью, не требует сторонних библиотек или инсталляции. Весь её код содержится в одном единственном заголовочном файле, который просто необходимо включить в код приложения.
Данная статья предлагает краткий обзор функционала Easylogging++ и примеры использования этой библиотеки.
Читать полностью »
Наводим порядок в Hierarchy View!
2014-06-11 в 14:01, admin, рубрики: unity, unity3d, метки: c++, unity, unity3d
Не так давно разработчики Юнити порадовали нас новой версией 4.5 (а в 4.6, совсем скоро, нас ждет новый GUI, ура!), и среди списка изменений один пункт касается сортировки в окне Hierarchy: «sorting of elements is now based on transform order instead of name».
Что это значит? Вы можете вручную перетаскивать элементы в окне иерархии в нужном вам порядке. И если раньше вы собирали сцену из расчета на автоматическую сортировку по имени, то теперь список объектов на сцене превратился в кашу.
Мы могли бы просто сделать как было… но сделаем лучше :)
На картинке вы видите привычную сортировку по имени, за исключением трёх вспомогательных объектов, которые располагаются внизу. Кроме того ориентироваться на сложных сценах будет проще за счет цветовой дифференциации штанов иконок.
Создание аудиоплагинов, часть 5
2014-06-09 в 21:17, admin, рубрики: c++, dsp, GUI, Martin Finke, Reaper, Visual Studio, VST, xcode, интерфейсы, перевод, Работа со звуком, метки: c++, dsp, gui, Martin Finke, Reaper, Visual Studio, VST, xcode, АУ, перевод Все посты серии:
Часть 1. Введение и настройка
Часть 2. Изучение кода
Часть 3. VST и AU
Часть 4. Цифровой дисторшн
Часть 5. Пресеты и GUI
______________________________________________________________
Давайте добавим несколько предустановок для плагина и создадим [относительно] симпатичный интерфейс.
Читать полностью »
Создание аудиоплагинов, часть 4
2014-06-09 в 18:40, admin, рубрики: c++, dsp, GUI, Martin Finke, Reaper, Visual Studio, VST, xcode, перевод, Работа со звуком, метки: c++, dsp, gui, Martin Finke, Reaper, Visual Studio, VST, xcode, АУ, перевод Все посты серии:
Часть 1. Введение и настройка
Часть 2. Изучение кода
Часть 3. VST и AU
Часть 4. Цифровой дисторшн
______________________________________________________________
Пора приступать к написанию нашего первого плагина. Это будет грязный цифровой дисторшн. Если говорить точнее, плагин будет просто обрезать пики амплитуды звукового сигнала.
Читать полностью »
Драйвера на С++ для STM8L051F3
2014-06-09 в 11:50, admin, рубрики: c++, Драйвер, Программинг микроконтроллеров, метки: c++, ДрайверПроблемы и требования к драйверу
Каждый опытный программист микропроцессоров сталкивался с написанием драйверов. При реализации небольших проектов или при переносе уже готового отлаженного кода на другой процессор, написание и отладка драйверов может занимать 50% и больше времени разработки. Причем процесс написания драйвера, для нового процессора, и состыковка существующего кода может быть очень не приятной из-за отсутствия структуры и общности в драйвере. Для программиста это становится нервной рутиной. Определим важные проблемы, при написании драйвера:
- Отсутствие структуры драйвера. Решение данной проблемы позволить лучше ориентироваться по драйверу, следовательно, отладка становится проще.
- Отсутствие общности драйвера. То есть интерфейс драйвера должен быть одинаковый, для, хотя бы, линейки процессоров, и в идеале для аналогичных процессоров разных фирм. Это позволит переносить код, завязанный на драйвер, без изменений или с минимальными изменениями.
- Сохранение эффективности по скорости выполнения драйвера.
- Оптимальное использование памяти.
В данном посте я покажу, как можно ликвидировать эти проблемы и сделать процесс написания драйвера более приятной задачей на примере двух драйверов UART и DMA реализованных на языке С++. Для этого я сформулировал требования, для драйвера:
Читать полностью »