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

Под впечатлением от прочтения замечательной статьи о Variadic Templates от уважаемого FlexFerrum решил поупражняться в метапрограммировании и написать свою реализацию структуры данных, называемой Tuple (Кортеж), с использованием шаблонов с переменным количеством аргументов. Для тех кто не знаком, кортеж — структура данных, которая хранит в себе одновременно данные различных типов. У нас же в данном конкретном случае это будет шаблонный класс, который хранит в себе данные тех типов, которые были переданы ему как шаблонные параметры (с учетом порядка).

Предполагается что читатель уже ознакомлен с вышеуказанной статьей, при описании процесса разработки я буду отталкиваться от нее.
Читать полностью »

Давным-давно, когда трава была зеленее, а деревья выше, жил-был тролль, по имени Xenocephal. Жил он, в принципе, во многих местах, но мне повезло встретить его на одном форуме, где я, в то время, набирался ума-разума. Я уже не вспомню топика, в котором протекала беседа, но суть ее сводилась к тому, что Xenocephal пытался убедить всех окружающих, что Lisp (с его макросами) — всему голова, а C++, с его шаблонами, жалкое подобие левой руки. Также утверждалось, что наметапрограммировать в нем что-то сложнее набившего оскомину факториала не представляется возможным.
Читать полностью »

Единорог вернулся
Приглашаю Си/Си++ программистов присоединиться к блогу PVS-Studio. Вы узнаете о разных интересных вещах из мира Си/Си++ и о том, кто, где и как программирует. Расскажу немного о том, что не было опубликовано на Хабре за время нашего отсутствия здесь.
Читать полностью »

Давным давно, когда я писал игру под адроид, нужно было мне разобраться с OpenGL ES 1.1. Вроде бы ничего сложного, 2D графика, нужно было просто рисовать PNG изображения, с возможностью масштабирования, поворота, добавления прозрачности. Тогда я потратил на это около недели, а может даже и больше, уже не помню. Было сложно, поскольку с OpenGL я никогда дела не имел. Сильно помог исходный код libgdx, в котором, кстати, все низкоуровневые OpenGL функции спрятаны от разработчика.
Времена меняются, на смену OpenGL ES 1.1 приходит версия 2.0, которая довольно сильно отличается. Приходится разбираться, что это за шейдеры, и почему без них никак. На это опять уходит несколько дней. Казалось бы, должно быть легко, ведь 2D, все просто. Например, если использовать QML, это делается вот так:

Image
{
    source: "brick.png"
    opacity: 0.8
    rotation: 90
}

А если писать все на С++, то получается много-много строк кода, которые сложно понять, если не знаком с OpenGL. Я пытался найти какую-нибудь библиотеку, обертку над OpenGL, как libgdx, только для Qt, но безуспешно. Поэтому решил, после того, как у меня все заработает, я напишу небольшую обертку, которая прячет все OpenGL вызовы и позволяет удобно работать с 2D графикой.
Читать полностью »

Опечатки бывают иногда полезны тем, что веселят читателя. Поисковые системы оценить юмора пока не в состоянии, и слова, набранные с ошибками, приводят их в замешательство, что в результате огорчает пользователя. Для предотвращения этих явлений существуют автоматические «исправляторы» опечаток, они же спеллчекеры.

О различных подходах к исправлению опечаток написано уже более чем достаточно, поэтому в этой статье я не буду повторять уже известное, а покажу, как написать спеллчекер с нуля — простой, но вполне дееспособный. Всё, что для этого нужно — это список правильных слов и немного С++.

Обработка и классификация запросов. Часть третья: Исправление опечаток

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

Как я писал Pacman’a и что из этого получилось. Часть 2
Здравствуй! Во второй части статью я продолжу рассказ о том, как я писал клон игры Pacman. Первую часть можно почитать здесь.
С момента, когда я последний раз работал над пакманом прошло порядка трех недель. Прошла большая часть сессии, стало немного больше времени и я решил продолжить. В этот момент появилось желание доделать игру до состояния, когда ее можно будет выложить в Google Play Market, хотя в самом начале разработки я об этом даже не помышлял. Кроме того, доделывание до играбельного состояния – неплохая тренировка. Где-то я слышал, что игры (да и вообще приложения) стоит доделывать.
Напомню, что разработка игры велась с использованием Android NDK (С++) и OpenGL ES 2.0.

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

Добавляем Web API для программы на C++ с помощью библиотеки POCOВ жизни любой достаточно большой программы наступает момент, когда нужно вывести наружу какой-нибудь API — для плагинов, для интеграции с другими системами, для автоматизации и т.д. Для этого есть много разных технологий, но как-то так исторически сложилось, что сейчас принято делать API в виде REST-сервисов. В принципе, если не гнаться за экономией каждого байта и микросекунды, то в этом есть смысл: HTTP-запрос сделать легко из любого языка, это хорошо работает и локально, и по сети, не нужно сильно глубоко погружаться в недры сетевых протоколов.
Давайте посмотрим, как к уже существующей программе на C++ можно быстренько прикрутить Web API, используя для этого библиотеку POCO.
Читать полностью »

Все хорошее имеет тенденцию повторяться, и конференция Infostart Event не исключение.

23 и 24го мая в Санкт-Петербурге, в Концертном зале «Колизей» на Невском пр., 100 пройдет Infostart Event Evolution – самое значимое мероприятие по управлению проектами и профессиональной разработке на платформе 1С: Предприятие в 2013 году.

Тема конференции: Управление и технологии автоматизации учета на платформе 1С: Предприятие.

Традиционно мероприятие посетят около 600 человек, это — руководители финансовых и ИТ-отделов, системные администраторы, экономисты, бухгалтеры, консультанты, аналитики, менеджеры проектов – вообщем все те, кто внедряет систему автоматизации учета в своих компаниях и использует программы учета для решения своих профессиональных задач.

К слову INFOSTART.RU – самый посещаемый (более 350 000 участников!) ресурс по автоматизации учета и управления в Рунете.

Infostart Event Evolution 2013 – мероприятие, сохранившее формат и масштаб, но полностью изменившее программу конференции. Докладчиками конференции снова выступят признанные «звезды» в области автоматизации учета и управления на 1С, менеджеры нового поколения и первоклассные профессионалы.
По многочисленным просьбам мы делаем конференцию такой же крутой решено сохранить прежний формат мероприятия — работу двух залов: большого, где проходят выступления спикеров, и малого, где участникам предоставляется возможность лично пообщаться с докладчиками. Так же будет работать 3й, дополнительный зал, с презентациями наших партнеров
По традиции после завершения официальной части первого дня конференции приглашаем участников на Infostart Afterparty в клуб Money Honey на Садовой, 28.

Докладчиками и ведущими мастер-классов Infostart Event Evolution 2013 станут Павел Чистов, Никита Зайцев, Андрей Гилев, Фарит Насипов, Александр Тарасинский, Сергей Старых, Евгений Гилев, Евгений Сосна, Сергей Коцюра, Антон Щекачев, Валерий Агеев, Алексей Патюков, Федор Куликов, Евгений Шумилов, Сергей Яковенко, Артур Абеленцев, Франц Бдоян, Михаил Харитонов, Сергей Лебедев, Андрей Аристархов, Андрей Акулов. и список продолжает пополняться

Официальный информационный партнер конференции Infostart Event Evolution 2013 – CNEWS. Почетные гости – PricewaterhouseCoopers.

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

Здравствуйте, уважаемые читатели!
Последние несколько месяцев, в свободное время, я занимался разработкой клона знаменитой игры Pacman для ОС Android. Как это было, и что из этого вышло я хочу рассказать.

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

Марафонские задачки по С++Приветствую всех!

В этом посте мы обсудим решение нескольких задачек, которые я подсмотрел из «Марафон задач по С++» (мне кажется ссылки легко найдутся поисковиком). Нет, к сайту я решительно никакого отношения не имею, однако узнал о нем с хабра: либо был у кого-то в профиле, либо была ссылка в комментариях. Итак, определимся с задачками, решения которых будут рассматриваться (задачек всего 9, но эти показались мне интересными):

  • Забыл, как умножать. Помогите!
    Умножить число на 7, не используя операцию умножения.
  • Два в одном.
    Какой-то умник поменял местами кнопки в лифте. Поставил вместо первого этажа второй, а вместо второго – первый. Честное слово, мне лень ковырять кнопки. Я лучше перепрограммирую лифт. Но программировать мне тоже лень. На вас вся надежда. Напишите, пожалуйста, функцию-переключатель, которая возвращает 1, если на входе 2 и 2, если на входе 1.

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


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