Посмотрев конференцию GoingNative 2012 решил попытаться описать «best practice» для написания программ в стиле C++11. Планируется цикл статей, кому интересно, auto articlesIterator = articles.begin();
Читать полностью »
Рубрика «c++» - 260
Type-rich Programming
2012-05-22 в 17:51, admin, рубрики: best practice, c++, c++11, style guide, Программирование, Совершенный код, метки: best practice, c++11, style guideДелаем свое GUI приложение средствами WinAPI
2012-05-16 в 19:08, admin, рубрики: c++, GUI, WinAPI, интерфейсы, метки: c++, gui, WinAPIЗдравствуй уважаемыйин!
Это мой дебют на Хабре!
Я достаточно долгое время читаю статьи с хабра мне они все нравятся. Но вот в чем загвоздка, я сам захотел попробовать что то свое сделать, так сказать сделать свой вклад в развитие данного проекта, хотя мой вклад будет достаточно мал и ничтожный.
Предусловие
Я хотел бы показать, рассказать более простым языком новичкам о GUI-приложениях на WinAPI.
GUI — (Graphic User Interfrace) графический пользовательский интерфрейс.
Для новичков это будет может более понятно, тем листать мануалы по WinAPI. Для более опытных программистов С++, моя статья
не содержит никакой полезной и интересной информации, так что смело можете давить Alt + Left, если нет тогда читаем до конца
Чтобы писать GUI-приложения нужно иметь хоть малейшее представление что такое GUI.
Читать полностью »
Вычисление CRC32 строк в compile-time
2012-05-16 в 15:30, admin, рубрики: c++, compile-time, inline, mail.ru агент, локализация, метки: compile-time, inline, mail.ru агент, локализация
По своей программистской природе я очень не люблю неоптимальность и избыточность в коде. И вот, читая в очередной раз на работе исходный код Mail.Ru Агента, вновь наткнулся на одну раздражающую особенность в способе реализации перевода строк продукта на разные языки.
Локализация здесь выполняется довольно нехитро. Все строки, требующие перевода, оборачиваются в макрос _TR()
:
wprintf(L"%sn", _TR("Some hashing string"));
Макрос возвращает нужную версию текста в зависимости от текущего используемого языка. Определён он следующим образом:
#define _TR(x) g_Translator.Translate(x)
Здесь происходит обращение к глобальному объекту g_Translator
, который в функции Translate()
считает crc32 от указанной строки и ищет в своей xml-базе перевод с совпадающей контрольной суммой.
Не буду судить насколько такое решение оправдано, но оно проверено временем и показало себя достаточно надёжным. И всё бы ничего, но такое решение не лишено недостатков: по сути, функция делает лишнюю работу — контрольные суммы можно было бы подсчитать один раз на этапе компиляции, и использовать в дальнейшем уже готовые числовые значения. Это также избавило бы от необходимости хранить в исполняемом образе дублирующиеся строки, ведь они уже есть во внешнем xml-файле с переводами.
Немного погуглив по запросу «compile-time crc32» я быстро понял, что задача это не самая тривиальная, а готовых решений мне найти так и не удалось.
Читать полностью »
Использование синтезатора в качестве компьютерной клавиатуры
2012-05-15 в 13:04, admin, рубрики: c++, linux, qt4, ненормальное программирование, метки: qt4Недавно мне в голову пришла мысль: а нельзя ли, подключив синтезатор к компьютеру, набирать на нем текст? Я попробовал реализовать это, и у меня получилось. Моя программа считывает нажатия клавиш синтезатора и эмулирует нажатия клавиш обычной клавиатуры. В этой статье я расскажу, как это реализовать. Писать будем под Linux на C++ с использованием Qt.
Подкаст «Заметки о Qt» s01e04
2012-05-15 в 11:01, admin, рубрики: c++, KDAB, nokia, phonon, QML, qt, qt components, qt quick, Qt Software, qt webkit, qt5, QtCreator, Raspberry Pi, подкасты, Программирование, метки: c++, KDAB, nokia, phonon, QML, Qt, qt components, qt quick, qt webkit, qt5, qtcreator, Raspberry Pi Мы с Vass записали и выложили четвертую серию подкаста «Заметки о Qt».
Сам подкаст на rpod.ru — qt-notes.rpod.ru/275603.html
Читать полностью »
Доработка плагина TODO для QtCreator 2.5.0
2012-05-13 в 13:50, admin, рубрики: c++, Qt Software, QtCreator, Программирование, метки: c++, qtcreator, ПрограммированиеБуквально на днях вышел QtCreator 2.5.0, и в нем появился плагин TODO. Но этот плагин поддерживает комментарии вида: <KEYWORD>: <some text>, а я везде использую doxygen комментарии: @<KEYWORD> <SOME_TEXT>. Поэтому я решил доработать плагин, так чтобы он мог поддерживать комментарии обоих видов. Читать полностью »
Практика работы со временем в разных часовых поясах в unix-like системах
2012-05-09 в 9:16, admin, рубрики: boost, c/c++, c++, UNIX, время, метки: boost, c/c++, unix, время, тзЕсли ваше приложение зависит не только от локального времени, но и от его представлении в других часовых поясах, вы наверняка сталкивались со сложностью представления времени в разных временных зонах. Не сталкивались? Значит вы не портировали своё приложение в мир Unix.
Действительно, в ОС Windows для работы с временными зонами программисту предоставляется удобный набор специализированных функций WinAPI. Примером могут служить структура TIME_ZONE_INFORMATION и функция GetTimeZoneInformation к ней в придачу.
Но что делать, если вам необходимо знать смещение относительно UTC+0, правила перехода на «летнее время», учитывать при этом високосные годы с високосными секундами и прочую специфическую информацию для какого-нибудь региона, да всё это в unix-подобных операционных системах? Статья посвящена практике работы со всем этим барахлом на языке C/C++.
Читать полностью »
CS Source кратко о создании чита All in One
2012-05-02 в 17:27, admin, рубрики: c++, cheats, game development, игры, метки: c++, cheats, игрыДобрый день.
Решил поделиться, с Вами, своим небольшим опытом создании чита для Counter-Strike Source v34 (но должен работать и на текущей версии). Данное приложение было написано исключительно ради спортивного интереса, так как в годы своей юности (изрядно убил времени за этой игрой :() всегда интересовало как же устроены эти программы, хотя теоретически знал как они работают. И вот спустя пол десятка лет (в 2010 году), после игры с коллегами в канун одного из праздников я опять вспомнил о своем давнем *интересе*…
Думаю с прелюдиями стоит закончить, скучно это, переходим к практике.
Будет много кода.
Полных исходников выкладывать не буду (хотя первоначально планировал так сделать), но это рабочие фрагменты кода, которых достаточно чтоб воссоздать полноценный чит.
Для раззадоривания скажу, что в данном чите реализована функция позволяющая стрелять в любое место и убивать противников которые могут находиться где угодно, главное, чтобы был прострел (можно бежать и убивать всех за спиной), ее я назвал AssShot — для настоящих читеров, не привыкших скрываться. VAC его не обнаруживает, но это пока кто-то не выложит его в свободный доступ.
Читать полностью »
Отправка multipart/form-data запроса в Qt
2012-05-02 в 9:54, admin, рубрики: c++, qt, Программирование, метки: Qt, Программирование Иногда при разработке сетевого приложения возникает задача загрузки на сервер файла, и не просто так, а как части заполненной http формы. Это пример так называемого multipart/form-data запроса. Стандартные методы библиотеки Qt этого сделать не позволяют, поэтому приходится выкручиваться своими силами.
Читать полностью »
«Техническая» часть АРСС моделирования
2012-05-01 в 17:56, admin, рубрики: arma, c++, latex, mpi, tex, Алгоритмы, арсс, прогнозирование, прогнозирование временных рядов, метки: arma, c++, latex, mpi, tex, арсс, прогнозирование, прогнозирование временных рядов
В предыдущей статье я уделил внимание исключительно алгоритму и «физике» метода. В этой статье будет описано немного про получение результатов и их представлении.