Рубрика «c++» - 259

Здравствуй уважаемыйин!

Это мой дебют на Хабре!

Я достаточно долгое время читаю статьи с хабра мне они все нравятся. Но вот в чем загвоздка, я сам захотел попробовать что то свое сделать, так сказать сделать свой вклад в развитие данного проекта, хотя мой вклад будет достаточно мал и ничтожный.

Предусловие

Я хотел бы показать, рассказать более простым языком новичкам о GUI-приложениях на WinAPI.
GUI — (Graphic User Interfrace) графический пользовательский интерфрейс.
Для новичков это будет может более понятно, тем листать мануалы по WinAPI. Для более опытных программистов С++, моя статья
не содержит никакой полезной и интересной информации, так что смело можете давить Alt + Left, если нет тогда читаем до конца
Чтобы писать GUI-приложения нужно иметь хоть малейшее представление что такое GUI.
Читать полностью »

Вычисление CRC32 строк в compile time
По своей программистской природе я очень не люблю неоптимальность и избыточность в коде. И вот, читая в очередной раз на работе исходный код 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» я быстро понял, что задача это не самая тривиальная, а готовых решений мне найти так и не удалось.
Читать полностью »

Недавно мне в голову пришла мысль: а нельзя ли, подключив синтезатор к компьютеру, набирать на нем текст? Я попробовал реализовать это, и у меня получилось. Моя программа считывает нажатия клавиш синтезатора и эмулирует нажатия клавиш обычной клавиатуры. В этой статье я расскажу, как это реализовать. Писать будем под Linux на C++ с использованием Qt.

Читать полностью »

Мы с Vass записали и выложили четвертую серию подкаста «Заметки о Qt».
Подкаст «Заметки о Qt» s01e04
Сам подкаст на rpod.ru — qt-notes.rpod.ru/275603.html
Читать полностью »

Буквально на днях вышел QtCreator 2.5.0, и в нем появился плагин TODO. Но этот плагин поддерживает комментарии вида: &ltKEYWORD&gt: &ltsome text&gt, а я везде использую doxygen комментарии: @&ltKEYWORD&gt &ltSOME_TEXT&gt. Поэтому я решил доработать плагин, так чтобы он мог поддерживать комментарии обоих видов. Читать полностью »

Если ваше приложение зависит не только от локального времени, но и от его представлении в других часовых поясах, вы наверняка сталкивались со сложностью представления времени в разных временных зонах. Не сталкивались? Значит вы не портировали своё приложение в мир Unix.

Действительно, в ОС Windows для работы с временными зонами программисту предоставляется удобный набор специализированных функций WinAPI. Примером могут служить структура TIME_ZONE_INFORMATION и функция GetTimeZoneInformation к ней в придачу.

Но что делать, если вам необходимо знать смещение относительно UTC+0, правила перехода на «летнее время», учитывать при этом високосные годы с високосными секундами и прочую специфическую информацию для какого-нибудь региона, да всё это в unix-подобных операционных системах? Статья посвящена практике работы со всем этим барахлом на языке C/C++.
Читать полностью »

Добрый день.

Решил поделиться, с Вами, своим небольшим опытом создании чита для Counter-Strike Source v34 (но должен работать и на текущей версии). Данное приложение было написано исключительно ради спортивного интереса, так как в годы своей юности (изрядно убил времени за этой игрой :() всегда интересовало как же устроены эти программы, хотя теоретически знал как они работают. И вот спустя пол десятка лет (в 2010 году), после игры с коллегами в канун одного из праздников я опять вспомнил о своем давнем *интересе*…

Думаю с прелюдиями стоит закончить, скучно это, переходим к практике.
Будет много кода.
Полных исходников выкладывать не буду (хотя первоначально планировал так сделать), но это рабочие фрагменты кода, которых достаточно чтоб воссоздать полноценный чит.
Для раззадоривания скажу, что в данном чите реализована функция позволяющая стрелять в любое место и убивать противников которые могут находиться где угодно, главное, чтобы был прострел (можно бежать и убивать всех за спиной), ее я назвал AssShot — для настоящих читеров, не привыкших скрываться. VAC его не обнаруживает, но это пока кто-то не выложит его в свободный доступ.
Читать полностью »

Иногда при разработке сетевого приложения возникает задача загрузки на сервер файла, и не просто так, а как части заполненной http формы. Это пример так называемого multipart/form-data запроса. Стандартные методы библиотеки Qt этого сделать не позволяют, поэтому приходится выкручиваться своими силами.
Читать полностью »

«Техническая» часть АРСС моделирования
В предыдущей статье я уделил внимание исключительно алгоритму и «физике» метода. В этой статье будет описано немного про получение результатов и их представлении.

Читать полностью »

Мы с Vass записали и выложили третью серию подкаста «Заметки о Qt».
На этот раз у нас в гостях Gorthauer87
Подкаст «Заметки о Qt» s01e03
Сам подкаст на rpod.ru — qt-notes.rpod.ru/274520.html
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js