Где-то здесь не так давно был пост о нововведених в Qt5. Всё вроде выглядит замечательно, но как же обстоят дела на самом деле в отношении уже имеющихся приложений? В этой статье я рассмотрю пример портирования одного из своих проектов на Qt5 с сохранением совместимости исходников с Qt4.
Рубрика «c++» - 240
Портируем Qt4 приложение на Qt5
2013-01-04 в 14:00, admin, рубрики: c++, porting, programming, qt, Qt Software, qt5, Программирование, метки: porting, programming, Qt, qt5Способы передвижения компьютерных персонажей (часть 3)
2013-01-03 в 9:45, admin, рубрики: c++, Алгоритмы, движение, ИИ, искусственный интеллект, перемещение, метки: движение, ИИ, перемещениеЭто заключительная часть серии статей, описывающих перемещения компьютерных персонажей. Я расскажу о смешанных видах передвижений, которые сочетают в себе векторные и плиточные методы, небольшая оптимизация плиточных перемещений и ускорение просчетов добавлением сетки к векторам. А так же поведу общее сравнение всех описанных методов в виде таблицы.Читать полностью »
libcppa vs. Erlang vs. Scala в смешанном сценарии
2013-01-03 в 8:17, admin, рубрики: benchmark, c++, erlang, Erlang/OTP, scalaПрим. переводчика: перевод выполнялся для erlanger.ru. Заранее приношу извинения за возможные неточности.
Этот бенчмарк производит следующие действия:
- симулирует создания и удаления большого количества актеров/процессов
- отправляет более чем 50 000 000 сообщений между актерами
- производит сложные численные вычисления для симуляции реальной рабочей нагрузки
Тестовая программа создает 20 колец по 50 актеров в каждом. Токен с начальным значением 10 000 передается по кольцу и его значение уменьшается на единицу при каждой итерации. Клиент, получивший токен, обязательно передает его следующему клиенту в кольце и завершает работу, если значение токена равно 0.
Читать полностью »
Результаты новогоднего Хабра-соревнования по программированию, анализ и обсуждение
2013-01-02 в 14:59, admin, рубрики: 2013, c++, Алгоритмы, соревнование, Спортивное программирование, метки: 2013, соревнованиеЧестно говоря, я не ожидал такого количества решений: за 24 часа было прислано 265 решений, из которых после удаления повторных отправок осталось 183.
Из 183 решений у 11 был превышен допустимый размер решения, в 19 случаях — не удалось скомпилировать (об этих ошибках подробнее ниже). Далее 47 дали неправильные ответы на простых тестах (1..1000000), 8 не успели посчитать ответ за минуту (образец решения из условия задачи для 1млн работал 5 минут 36 секунд).
На сложных тестах — 5 решений выдали неверный ответ, и 12 — не уложились в одну минуту. 86 — успешно прошли все тесты.
Если кто потерял, вот топик о старте соревнования.
Читать полностью »
Способы передвижения компьютерных персонажей (часть 2)
2013-01-02 в 13:54, admin, рубрики: c++, Алгоритмы, движение, ИИ, искусственный интеллект, перемещение, метки: движение, ИИ, перемещениеВ предыдущей статье я рассказал о видах передвижений и перемещений в плиточном мире. Сегодня расскажу подробней о векторных способах. Как и в прошлый раз расскажу теорию, объясню суть и покажу пример реализации перемещений на языке C++.Читать полностью »
Способы передвижения компьютерных персонажей (Часть 1)
2013-01-01 в 12:00, admin, рубрики: c++, Алгоритмы, движение, ИИ, искусственный интеллект, перемещение, метки: движение, ИИ, перемещениеВсе, кто начинал заниматься реализацией игрового искусственного интеллекта, наверняка сталкивались с проблемой реализации движений своих персонажей. Дело в том, что поведение и в реальном мире в большей степени определяет интеллектуальность того или иного существа. Даже люди друг друга зачастую оценивают по поведению (что немного неверно). Эта статья рассчитана на тех, кто только приступает к реализации своего первого игрового ИИ. Я расскажу о видах перемещений, их преимуществах и недостатках, а также покажу на примере как можно реализовать тот или иной способ на языке C++. Замечания и критика, а так же свои точки зрения приветствуются. Читать полностью »
Новогоднее хабра-соревнование по программированию-2013 (C++)
2012-12-31 в 20:00, admin, рубрики: 2013, c++, Алгоритмы, соревнование, Спортивное программирование, метки: 2013, соревнованиеВсе мы слышали поговорку: как новый год встретишь — так его и проведешь. Оливье в сторону!
Рассчитывать на 5 часов адского программирования в праздник было бы негуманно, потому задача всего одна и она весьма лапидарна:
Программа должна прочитать из стандартного потока ввода целое число N (от 1 до 230), и напечатать сумму простых чисел меньших либо равных N.
Побеждает тот, кто напишет самое быстрое решение, проходящее все тесты (хотя-бы один неправильный ответ — и решение отклоняется). Скорость решения оценивается на тестах в районе верхней границы допустимого диапазона N (но не ровно 230).
Победитель получает всеобщее признание, сотни кармы и приятное чувство что он порвал всех на Хабре. Долгие годы молодые поколения разработчиков будут восхищаться его кодом, а девушки — чепчики в воздух бросать. По меньшей мере первые 4 read-only пользователя будут приглашены на Хабр.Читать полностью »
Что такое TCHAR, WCHAR, LPSTR, LPWSTR,LPCTSTR (итд)
2012-12-31 в 16:46, admin, рубрики: ansi, api, c++, Unicode, visual c++, windows api, переводы, С++, строки, метки: ansi, Unicode, visual c++, windows api, С++, строки
Многие C++ программисты, пишущие под Windows часто путаются над этими странными идентификаторами как TCHAR, LPCTSTR. В этой статье я попытаюсь наилучшим способом расставить все точки над И. И рассеять туман сомнений.
В свое время я потратил много времени копаясь в исходниках и не понимал что значат эти загадочные TCHAR, WCHAR, LPSTR, LPWSTR,LPCTSTR.
Недавно нашел очень грамотную статью и представляю ее качественный перевод.
Статья рекомендуется тем кто бессонными ночами копошиться в кодах С++.
Вам интересно ??
Прошу под кат!!!
Читать полностью »
Быстрый старт с Google Test
2012-12-31 в 12:10, admin, рубрики: c++, Google, tdd, метки: c++, Google, tdd
Google Test — это фреймворк от Google для юнит-тестирования кода на С++. Общей архитектурой он слегка напоминает общепринятые boost::test и CppUnit, хотя слегка отличается в деталях (как по мне — в лучшую сторону). Большая обзорная статья этого фреймворка уже как-то пробегала на Хабре, но нынче она в каком-то побитом состоянии (код не отображается), да и кажется мне слишком сложной для начала работы. Поэтому я коротко опишу «Hello world» на Google Test, указав на несколько потенциальных проблем, с которыми вы можете столкнуться, используя Google Test при разработке под Visual Studio.
Читать полностью »
Использование подключений к СУБД в многопоточных приложениях на QT
2012-12-29 в 17:16, admin, рубрики: c++, qt, базы данных, Песочница, метки: Qt, базы данныхПри написании много-сервисной системы в корой каждый сервис должен быть многопоточен, столкнулись с проблемой использования подключения к базе данных. Сервисы разрабатываются на QT, поэтому использовали модуль QtSql для взаимодействие с БД.
Проблемы
- Для каждого потока необходимо свое собственное подключение к БД (QSqlDatabase). При использовании одного подключения из разных потоков возникаем ошибка сегментирования.
- Т.к. в текущий момент времени возможно держать открытыми ограниченное число подключений к БД, необходимо реализовать захват, освобождение и ожидание подключения потоками.
- В контексте потока, для правильной работы с транзакциями необходимо работать только с одним подключением. Например: Сущность заказ содержит в себе сущности Товар. При сохранении Заказа должны сохранится все товары. Если при сохранении товара возникает исключительная ситуация, то вся транзакция по сохранению заказ должна отменится.
- Библиотека должна уметь работать с несколькими БД одновременно, причем разных типов (Mysql,PostgreSQL)
Решение
В итоге у нас получилось 3 класса:
- Connection — класс обертка отвечающий за работу с БД: Подключение, выполнение и обработка результатов запросов.
- ConnectionManager — синглтон хоронящий в себе подключени и отвечает за выдачу и освобождение подключений.
- ManagedConnection — класс обертка для автоматизации захвата и освобождения подключения.