Два с половиной часа в поезде – прекрасное время для того, чтобы написать благодарность организатору конференции Сергею Платонову (sermp) и его команде за то, что наконец-то в России появилась конференция про C++! Заслуги Сергея поистине впечатляют, учитывая то, что он не обладал бюджетами Microsoft и Intel. Однако оказалось, что главное не бюджет, а желание и энтузиазм. Поэтому собранные Сергеем докладчики были выше всяческих похвал, иностранные гости – крайне общительны и любезны. А на стендах JetBrains, IncrediBuild, Kaspersky и PVS-Studio собрались не говорящие головы, а профессионалы, с которыми интересно было общаться и гостям, и соседям по стенду. Наши личные впечатления – под катом.
Рубрика «c++» - 178
Отзыв команды PVS-Studio о конференции C++ Russia, 2015
2015-02-28 в 19:32, admin, рубрики: C, c++, C++ Russia, PVS-Studo, Блог компании PVS-Studio, Платонов - молодец!, Программирование, разработка, метки: C++, C++ Russia, PVS-Studo, Платонов - молодец!Использование цветовых пространств в ATTiny13a для WS2811
2015-02-26 в 16:22, admin, рубрики: atmel, attiny13a, c++, ws2811, Алгоритмы, программирование микроконтроллеров, метки: Atmel, Attiny13a, ws2811, Программирование микроконтроллеров.
И вновь, приветствую!
Моя новая идея посвящена использованию цветовых пространств в микроконтроллерах.
То что моя новость кому-то таковой не покажется, я нисколько не удивлюсь.
Однако я предлагаю метод и его реализацию, подобных которому я не встречал.
Читать полностью »
Ekspozzer — создание панорамы из видео, усреднение видеопотока
2015-02-24 в 8:24, admin, рубрики: averaging, c++, exposition, panoram creation, slit camera, video processing, Алгоритмы, обработка видео, обработка изображений, Работа с видео, разработка под windows, слит-камера, создание панорамы, усреднение, экспозиция, метки: panoram creation, создание панорамыПривет!
Сразу скажу: ничего феноменального в статье нет. Эта статья посвящена разработанной «на коленке» программе по созданию панорам из видео и временному усреднению видеопотока (кадров). Программа также может быть использована как виртуальная slit-камера. Статья будет интересна всем тем, кто увлекается обработкой видео и изображений, а так же гик-артом. Весьма простая программа — весьма интересный результат. В конце статьи ссылка на скачивание. Осторожно, трафик!
Читать полностью »
Гибридные приложения в Qt на примере использования D3.js
2015-02-23 в 16:18, admin, рубрики: c++, D3, javascript, qt, визуализация данных, Программирование, метки: D3, qtD3 — мощная JavaScript библиотека для визуализации данных. На мой взгляд — просто рай для web-разработчика, казалось бы недоступный для Qt-программиста. Но гибкость фреймворка Qt позволяет интегрировать web-frontend в толстый клиент с помощью механизма Qt Web Bridge. Такие приложения получили наименование гибридные (Qt Hybrid Apps).
Для JavaScript-программистов хорошая новость заключается в том, что их решения можно легко интегрировать в Desktop приложения, что потенциально может увеличить целевую аудиторию пользователей разрабатываемых библиотек (во всяком случае это верно для мира Qt приложений).
На скриншоте ниже изображен виджет Dependency Wheel (Круг Зависимостей), отрисовка которого осуществляется с помощью D3.js а управление данными и отображением — с помощью Qt. При нахождении указателя над соответствующей дугой её взаимосвязи «подсвечиваются», а остальные становятся полупрозначными. Данный виджет можно использовать для визуализации различного рода зависимостей (например библиотек).
В отличии от оригинального JS решения диаграмма динамически изменяет размер под размер виджета, а данные устанавливаются на стороне Qt, а не с помощью загрузки JSON-файла.
Статья больше ориентирована на Qt-программистов, но также может быть интересна и JS программистам.
Собственная реализация https с использованием crypto++ для начальной загрузки I2P
2015-02-22 в 17:09, admin, рубрики: c++, HTTPS, i2p, tls 1.2, Программирование Каждый новый узел I2P при первом запуске должен откуда то получить начальный список узлов. Для этого существуют специальные сервера (reseed), адреса которых жестко прописаны в коде. Раньше загрузка осуществлялась по http, однако с недавних пор reseed-ы стали переходить на https. Для успешной работы «пурпурного» I2P также потребовалось внести соответствующие изменения. Используемая там криптографическая библиотека crypto++ не поддерживает ssl. Вместо использования дополнительной библиотеки типа openssl, фактически дублирующей криптографию, был выбран рассмотренный ниже вариант.
Начальная загрузка это единственное место в I2P, где используется https.
С другой стороны, статья будет интересно тем кому интересно понять, как работает ssl и попробовать самому.
CxxMock — Mock-объекты в C++
2015-02-20 в 17:33, admin, рубрики: agile, c++, cxxtest, tdd, unit-testing, Программирование, разработкаЕсли вы верите в Agile и разработка через тестирование для вас является нормой, а не какой-то непонятной практикой, но наверное столкнулись с такой нехорошей проблемой как организацией тестирования объектов которые используют другие объекты через интерфейсы на C++.
Если для .NET есть замечательная библиотека Rhino.Mocks, которой достаточно «скормить» интерфейс и вы получаете возможность программирования поведения методов интерфейса прямо в модульном тесте. То для С++ все сильно сложнее, так как нет замечательного рефлекшена который позволяет строить код во время исполнения. И приходится писать объекты-заглушки вручную. И в случае изменения интерфейса приходится не только обновлять все классы в приложении но обновлять весь набор «одноразовых» классов заглушек реализующих интерфейс которые применяются в тестах.
Читать полностью »
Указатели, ссылки и массивы в C и C++: точки над i
2015-02-19 в 20:12, admin, рубрики: C, c++, массив, ссылка, указательВ этом посте я постараюсь окончательно разобрать такие тонкие понятия в C и C++, как указатели, ссылки и массивы. В частности, я отвечу на вопрос, так являются массивы C указателями или нет.
Обозначения и предположения
- Я буду предполагать, что читатель понимает, что, например, в C++ есть ссылки, а в C — нет, поэтому я не буду постоянно напоминать, о каком именно языке (C/C++ или именно C++) я сейчас говорю, читатель поймёт это из контекста;
- Также, я предполагаю, что читатель уже знает C и C++ на базовом уровне и знает, к примеру, синтаксис объявления ссылки. В этом посте я буду заниматься именно дотошным разбором мелочей;
- Буду обозначать типы так, как выглядело бы объявление переменной TYPE соответствующего типа. Например, тип «массив длины 2 int'ов» я буду обозначать как
int TYPE[2]
; - Я буду предполагать, что мы в основном имеем дело с обычными типами данных, такими как
int TYPE
,int *TYPE
и т. д., для которых операции =, &, * и другие не переопределены и обозначают обычные вещи; - «Объект» всегда будет означать «всё, что не ссылка», а не «экземпляр класса»;
- Везде, за исключением специально оговоренных случаев, подразумеваются C89 и C++98.
Указатели и ссылки
Указатели. Что такое указатели, я рассказывать не буду. :) Будем считать, что вы это знаете. Напомню лишь следующие вещи (все примеры кода предполагаются находящимися внутри какой-нибудь функции, например, main):
int x;
int *y = &x; // От любой переменной можно взять адрес при помощи операции взятия адреса "&". Эта операция возвращает указатель
int z = *y; // Указатель можно разыменовать при помощи операции разыменовывания "*". Это операция возвращает тот объект, на который указывает указатель
Разработка простой игры в Code::blocks с использованием Direct3D 9
2015-02-19 в 17:13, admin, рубрики: c++, codeblocks, direct3d 9, game development, Работа с анимацией и 3D-графикой, разработка игр под Windows, метки: C++, codeblocks, direct3d 9, разработка игр под Windows Хочу рассказать о своем первом опыте в геймдеве. Сразу стоит оговориться, что статья будет чисто технической, поскольку моей целью было всего лишь получение навыков разработки графических приложений, использующих Direct3D, без привлечения высокоуровневых средств разработки игр типа Unity. Соответственно, никаких разговоров о внедрении, монетизации и раскрутке игры также не будет. Статья ориентирована на новичков в программировании приложений Direct3D, а также просто на людей, интересующихся ключевыми механизмами работы подобных приложений. Также в конце привожу список литературы по геймдеву, тщательно отобранный мной из более чем ста книг по программированию игр и компьютерной графики.
Читать полностью »
Драйвер внешнего оборудования для 1С на примере фискального регистратора Мария-301МТМ
2015-02-19 в 10:10, admin, рубрики: 1С, c++, мария-301мтм; С++; native api, Программирование, системное администрирование, метки: 1С, мария-301мтм; С++; native api
При реализации проектов на 1С зачастую приходится сталкиваться с разного рода устройствами и их сопряжением. Покуда будут существовать устройства на древним RS232 будет необходимость во внешних компонентах такого рода. Как правило с устройством идет документация, которая нередко содержит систему команд и некий драйвер который распространяется «так как есть». Очень часто драйвера «так как они есть» оставляют ожидать лучшего. Я предлагаю немного окунутся в системное программирование и решить для себя сей вопрос раз и навсегда.
Прекрасная статья содержит пример и достаточное описание что к чему, что где менять. Пример компилируется. Для быстрого старта замечательная статья. Подобный пример свободно распространяется фирмой 1С и валяется в куче хлама на диске ИТС. Много раз мелькало в глазах но было заложено на дальнюю полку с ярлыком «обязательно изучить».
Читать полностью »
Межпроцессная репликация объектов с помощью QtRemoteObjects
2015-02-18 в 22:18, admin, рубрики: c++, IPC, qt, RPC, Программирование, метки: ipc, qt, rpc7 октября 2014 года в публичном доступе появились исходники Qt-модуля QtRemoteObjects. Модуль создан в недрах Ford Motor Company (автор Brett Stottlemyer). Вещь, на мой взгляд, очень перспективная. Модуль позволяет, например, передавать сигналы между объектами по сети. Но этим возможности модуля не ограничиваются. Более точно суть модуля описывает его предыдущее наименование — Replica, так как объекты «реплицируются» между процессами.
Ключевой идеей QtRemoteObjects, которая качественно отличает его от других способов межпроцессного взаимодействия/удаленного вызова процедур, является идея полностью продублировать Qt-объект в другие процессы. Это значит, что все изменения свойств (properties) в объекте — источнике отражаются (с уведомлением посредством сигналов) в объекте-реплике. Любые сигналы, которые эмитируются объектом-источником будут также эмитированы в каждом объекте-реплике. Также можно устанавливать свойства, вызывать слоты и в объекте-реплике, при этом запросы отправляются объекту-источнику, который их обрабатывает и затем изменения отражаются в других объектах-репликах посредством сигналов или с помощью изменения свойств. В результате все объекты (включая объект-источник) синхронизируются. При этом вся сложность межпроцессного взаимодействия скрыта внутри QtRemoteObjects.
Читать полностью »