Как и всем разработчикам, мне часто приходилось читать и слышать утверждение, что «композиция всегда лучше наследования». Наверное, даже слишком часто. Однако я не склонен принимать что-либо на веру, поэтому давайте разберёмся, так ли это.
Читать полностью »
Рубрика «c++» - 231
Композиция vs наследование
2013-04-21 в 19:50, admin, рубрики: c++, агрегация, композиция, наследование, ооп, Программирование, Стратегия, метки: агрегация, композиция, наследование, ооп, Стратегия«Центр речевых технологий» предоставляет речевые базы для создания прототипа системы распознавания речи
2013-04-19 в 9:22, admin, рубрики: c++, Алгоритмы, Программирование, распознавание речи, центр речевых технологий, црт, метки: распознавание речи, центр речевых технологий, цртС целью найти талантливых специалистов, готовых посвятить себя деятельности по развитию речевых технологий в России, Центр речевых технологий (ЦРТ) предоставляет собственные речевые базы. Они содержат не просто звуковые файлы с текстовками, но и разметку по времени, выполненную специалистами ЦРТ. Читать полностью »
Быстрый старт. Как не бояться Win API или «Нельзя просто так взять, и начать программировать»
2013-04-19 в 3:51, admin, рубрики: c++, windows, ПесочницаВам интересно, как же работают все эти чудесные программы(и игры)!
Как они переключаются в полноэкранный режим и что дальше происходит?
Это будет интересно в первую очередь тем, кто никогда не задумывался как написать «что-то», чтобы оно работало в точности как наши любимые программы.
- если есть опыт программирования на других языках(java, phpm javascript, ecmascript)
- если есть опыт использования графических приблуд типа 3dSMax
- если вы участвовали в game-проектах но никогда не лезли в нутряшки
Автор — перед написанием статьи занимался html-версткой и php.
Читать полностью »
Android NDK: OpenSL ES
2013-04-16 в 22:46, admin, рубрики: android, c++, game development, OpenSL ES, Разработка под android, метки: android, c++, OpenSL ES Здравствуйте, уважемые читатели!
Недавно, читая хабр, я увидел статью об Android NDK и OpenAL. А в комментариях был задан вопрос о OpenSL ES. Тогда у меня и родилась мысль написать статью об этой библиотеке. Я занимался этой темой, когда мне понадобилось добавить звуки и музыку в игру под Android, написанную на C++, под NDK. Статья не претендует на полноту, здесь будут лишь основы.
Содержание:
- Краткое описание структур OpenSL ES
- Инициализация механизма библиотеки и создание объекта для работы с динамиками
- Проигрывание PCM(wav)
- Проигрывание MP3, OGG
- Заключение
Основы Android NDK на примере работы с OpenAL
2013-04-13 в 13:42, admin, рубрики: android, c++, Ndk, ogg, wav, библиотеки, Разработка под android, метки: android, Ndk, ogg, wav, библиотекиДень добрый, уважаемые читатели!
С недавних пор занимаюсь разработкой приложений под Android, в частности разработкой игр. Так сложилось, что для одного проекта пришлось работать с Android ndk. Все трудности и нюансы работы с native рассмотреть в принципе невозможно в рамках одной статьи, решил в данной статье небольшое введение в ndk написать.
А чтобы статья была интересна не только новичкам, покажу как работать с OpenAL и форматами WAV, OGG.
Несколько подробностей об std::string
2013-04-10 в 21:01, admin, рубрики: c++, linux, ненормальное программирование, метки: c++Недавно заинтересовался реализацией std::string в libstdc++. Не в связи с принятием нового стандарта, а чтобы разобраться. Благо требования к строковму типу почти не изменились.
Основным средством для анализа кода несомненно является метод пристального вглядывания, но чтобы сузить область вглядывывания и сделать процедуру более захватывающей можно реализовать для строки идиому «трассер» подсмотренную в «C++ Templates: The Complete Guide». Трассировка позволяет выявлять подозрительные интересные операции над строками.
Как известно, std::string это псевдоним для std::basic_string<char>
и нам ничего не мешает определить std::basic_string<X>
. В X можно определить несколько статических счетчиков и итерировать их в конструкторе, деструкторе и остальных методах. Выполняя разные операции над такой строкой можно будет проследить эффективность применяемых алгоритмов в терминах количества операций.
Кроме того, в g++ для std::string a(«entrails»);
выражение
std::cout << reinterpret_cast<char*>(*((void**)(&a)));
выведет содержимое строки. Т.е. std::string — является, по сути, указателем на char.
Вобщем, эти и другие шокирующие поднобности под катом. Читать полностью »
Сохранение изображения с помощью libpng
2013-04-10 в 5:46, admin, рубрики: c++, OpenGL, обработка изображений, метки: OpenGL
Развлекаясь на досуге с OpenGL, решил научиться делать скриншоты средствами программы, а не системы. Довольно быстро нагуглил функцию glReadPixels, но вот с сохранением картинки вышла проблема. Вспомнил былые времена, когда полностью своим кодом сохранял в bmp, нашел функцию сохранения в tga, понял, что все эти варианты попахивают велосипедизмом и решил использовать широко распространенную библиотеку. Выбор пал на libpng.
Дальше пошли грабли.
Оказалось, что никакого описания библиотеки на русском языке нет (собственно поэтому и пишу сейчас этот пост), а английская документация написана не самым удобным образом и не содержит даже простейшего полноценного примера использования.
Ниже я постараюсь объяснить, как средствами libpng сохранить изображение в простейшем случае.
Читать полностью »
Написание многопоточных приложений для магазина Windows с помощью Intel Threading Building Blocks — теперь с DLL
2013-04-10 в 4:33, admin, рубрики: c++, c++ библиотеки, c++11, intel parallel studio, intel tbb, intel threading building blocks, tbb, Visual Studio, Блог компании Intel, параллельное программирование, метки: c++, c++ библиотеки, c++11, intel parallel studio, intel tbb, intel threading building blocks, tbbЭта статья описывает, как построить простое приложение для магазина Windows используя Intel® Threading Building Blocks (Intel® TBB).
Мой предыдущий пост Windows 8: Написание многопоточных приложений для магазина Windows с помощью Intel® Threading Building Blocks описывает экспериментальную поддержку для приложений для магазина Windows. Обновление 3 для Intel TBB 4.1, так же как стабильный релиз tbb41_20130314oss содержит динамические библиотеки для таких приложений.
Читать полностью »
Миграция данных с MySQL на PostgreSQL
2013-04-04 в 12:28, admin, рубрики: c++, mysql, postgresql, метки: c++, mysql, postgresqlПо мере работы с базами данных, ознакомления с их плюсами и минусами, возникает момент, когда принимается решение миграции с одной СУБД в другую. В данном случае возникла задача переноса сервисов с MySQL на PostgreSQL. Вот небольшой перечень вкусностей, которые ждут от перехода на PostgreSQL, версии 9.2 (с более подробным списком возможностей можно ознакомится тут):
- наследование таблиц (есть ограничения, которые обещают в будущем исправить)
- диапазоны: int4range, numrange, daterange
- поддержка из коробки несколько языков для хранимых функций (PL/pgSQL, PL/Tcl, PL/Perl, PL/Python и голый C)
- оператор WITH, позволяющий делать рекурсивные запросы
- (планируется) материализованные представления (частично они доступны и сейчас — как IUD правила к представлению)
- (планируется) триггера на DDL операции
Как правило, существующие решения опираются на работу с уже готовым SQL дампом, который конвертируется в соответствии с синтаксисом целевой БД. Но в некоторых случаях (активно использующееся веб-приложение с большим объемом информации) такой вариант несет определенные временные затраты на создание SQL дампа из СУБД, его конвертации и загрузку получившегося дампа снова в СУБД. Поэтому оптимальней будет online-вариант (прямиком из СУБД в СУБД) конвертера, что может существенно уменьшить простой сервисов.
Читать полностью »