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

Картинка для привлечения внимания

Я думаю, большинство людей, кто застал времена DOS и ранних Windows 9x, играли или хотя-бы слышали о такой замечательной игре, как Supaplex. Лично для меня — это игра-легенда. Я до сих пор с трепетом вспоминаю долгие зимние вечера, проведённые в попытке пройти какой-нибудь сложный уровень на стареньком 286-м.

Так сложилось, что я программист. И не просто программист, а программист компьютерных игр. Так что, где-то в 2008 году я занялся написанием движка-«убийцы крузиса» (или что там было круто на тот момент, я уже не помню). Примерно через год меня настигло прозрение, что моих человеко-часов на проект уровня Unreal Engine не хватит. И я решил сделать легкую, «казуальную», версию движка и написать на ней пару простеньких игрушек.

Мой выбор пал на клон Supaplex. Правда, на тот момент уже существовало несколько клонов под Windows и другие платформы, поэтому просто писать все с нуля было неинтересно. Зато в мою голову заползла крамольная мысль: а что, если дизассемблировать оригинальный Supaplex и сделать игру с логикой, «идентичной натуральной». Такая задача казалась крайне заманчивой, и я взялся за её осуществление. Я заказал 3D-модельки у одного хорошего знакомого фрилансера и, пока он был занят моделлингом, я приступил к изучению пациента. Сразу предупреждаю, что я уже не помню многих деталей и могу что-то забыть или приврать, всё-таки это было довольно давно.

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

Категория — очень простая концепция.
Категория состоит из объектов и стрелок, которые направлены между ними. Поэтому, категории так легко представить графически. Объект можно нарисовать в виде круга или точки, а стрелки — просто стрелки между ними. (Просто для разнообразия, я буду время от времени рисовать объекты, как поросят а стрелки, как фейерверки.) Но суть категории — композиция. Или, если вам больше нравится, суть композиции — категория. Стрелки компонуются так, что если у вас есть стрелка от объекта А к объекту B, и еще одна стрелка из объекта B в C, то должна быть стрелка, — их композиция, — от А до С.
image
Читать полностью »

Всем привет!
Вновь доносим до вас новости из жизни C++ сообщества в России.

Некоторые из вас знают, для некоторых это будет новостью, но в феврале 2015 года в Москве впервые пройдет
конферецния полностью посвященная C++. В течении года мы колесили по стране, привозили в разные уголки необъятной
докладчиков из других концов этой самой необъятной. И вот теперь, мы решили, что пора собрать всех, кого сможем в на пару
дней вместе, чтобы все смогли послушать друг друга, пообщаться друг с другом, может быть даже поспорить. Чтобы сделать событие
ещё интереснее мы пригласили открывать событие Шона Пэрента.

Кратко о главном

Что: конеренция, целиком посвящённая C++.
Где: Москва, ГТК «Измайлово», гостиница «Альфа» (м. Партизанская).
Когда: 27-28 февраля 2015

Цена: билет стоит 3500 руб.
Сайт: meetingcpp.ru

Кратки обзор тем под катом.
Читать полностью »

Компания, где я работаю, разрабатывает программное обеспечение на C++ под Linux. Долгое время мы использовали Qt Creator, с редкими ребятами работающими из Emacs и Vim. Когда я сам попытался пересесть на Vim, я понял, что ситуация с плагинами для разработки на С++ очень не простая. Поработав немного с CTags, я быстро понял, что без напильника работать в Vim будет очень сложно.
К сожалению, с ростом опыта работы с Vim редактор в Qt Creator в режиме эмуляции устраивал меня все меньше, и в какой-то момент я решил потратить немного времени и разобраться, как же сделать из Vim нормальную среду.
Я очертил для себя четыре вещи, которые я бы хотел от среды разработки, и которых мне бы хватило в Vim, чтобы полностью на него перейти:

1. Автодополнение
2. Навигация по коду
3. Отладка прямо из среды
4. Интеграция с Git (в частности Blame прямо в редакторе, и Git Grep)

Автодополнение в Vim — это решенная проблема, и название у решения YouCompleteMe. Это очень качественный плагин, который реализует автодополнение для большого количества языков программирования, в частности Python и C++. Ходят слухи, что внутри Google YouCompleteMe решает и вторую проблему с навигацией кода, но использует для этого внутренные инструменты гугла для индексирования.

Интеграция с Git в какой-то степени решена с помощью vim-fugitive. Это не такая комплексная интеграция, как бывает у Jet Brains, или в Visual Studio, но сравнимая с тем, что предлагает Qt Creator. Те два сценария, которые нужны были мне: blame и grep — работают хорошо.

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

Возник на днях у нас вопрос: «Как спрятать от любителей hex-редаторов строчки текста в скомпилированном приложении?». Но спрятать так, чтобы это не требовало особых усилий, так, между прочим…
Задача состоит в том, что бы использовать в коде строки как обычно, но при этом в исполняемом файле эти строки в явном виде не хранились, возможности сторонних утилит, которые работают с уже скомпилированными бинарными файлами, задействовать так же не хочется, все нужно делать из обычного C++ кода.
Читать полностью »

в 15:44, , рубрики: c++, qt, qt creator

Про релиз Qt 5.4 читайте отдельный пост

Мы рады представить релиз Qt Creator 3.3.

Улучшена поддержка для разделения редактора и порождения новых окошек редактирования. Вы можете теперь перетаскивать редакторы между частями за иконку файла. Можно открыть новый редактор, удерживая Ctrl, вместо перемещения (на том же документе). Перетащив файл из системного навигатора в QtC, он откроется в нужном сплите (split, разделенное окно).

Теперь можно использовать переменные окружения в определенных наборах (kits). Отображаемые имена наборов и версий Qt могут содержать макросы вроде %{Qt:Version}, которые заполняются нужной версией. Также теперь можно выбрать все наборы сразу при настройке проекта.

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

При выборе формата хранения или обмена векторными 2D изображениями, SVG один из главных претендентов, благодаря открытости и распространенности. При всех его достоинствах, авторы, на мой взгляд, чрезмерно увлеклись удобством и гибкостью при создании документов, что привело к большой вариативности и избыточности, а, следовательно, и сложностью чтения. Кроме того, ради компактности были изобретены разные грамматики, встроенные внутрь XML, что тоже добавило головной боли программистам.

Сейчас есть несколько C/C++ библиотек, которые могут загрузить SVG и отрисовать его в растр, но это только малая часть возможных применений SVG в приложениях.

Я разработал C++ библиотеку, которая должна взять на себя реализацию большинства нюансов спецификации, предоставляя данные SVG в удобном виде. Читать полностью »

в 15:04, , рубрики: c++, qt, qt5

Примечание переводчика: в оригинале очень много маркетинговых оборотов, и, похоже какой-то SEO в тексте. Я постарался местами убирать лишние повторы слова «Qt», но текст всё равно слегка слащав.
Про релиз Qt Creator 3.3 перевод.

Я рад сообщить, что Qt 5.4 выпущен сегодня (10 декабря) и уже доступен для скачивания с qt.io. Вместе с Qt 5.4, мы также выпускаем Qt Creator 3.3 и обновление для Qt для создания устройств под управлением встроенными Linux или Android.

Но сперва давайте о Qt 5.4. Один из главных акцентов, которые я бы хотел сделать на релезе — это Web-технологии, и мы можем показать вам много клевых штук.

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

CppCat для обучения
CppCat – это простой статический анализатор кода для поиска ошибок в программах на языке Си/Си++. Мы начали выдавать бесплатные академические лицензии всем желающим (студентам, преподавателям и так далее). Для большей популяризации CppCat среди студентов я решил написать эту заметку об ошибках, которые можно найти в лабораторных работах, встречающихся на сайте Pastebin.com.
Читать полностью »

Lock-free структуры данных. Диссекция очереди - 1
Со времени предыдущего поста из жизни lock-free контейнеров прошло немало времени. Я рассчитывал быстро написать продолжение трактата об очередях, но вышла заминка: о чем писать, я знал, но реализации на C++ этих подходов у меня не было. «Не годится писать о том, что сам не попробовал», — подумал я, и в результате я попытался реализовать в libcds новые алгоритмы очередей.
Сейчас настал момент, когда я могу аргументированно продолжить свой цикл. В данной статье закончим с очередями.

Кратко напомню, на чем я остановился. Были рассмотрены несколько интересных алгоритмов lock-free очередей, а под занавес приведены результаты их работы на некоторых синтетических тестах. Главный вывод — всё плохо! Надежды на то, что lock-free подход на магическом compare-and-swap (CAS) даст нам пусть не линейный, но хотя бы какой-то рост производительности с увеличением числа потоков, не оправдались. Очереди не масштабируются. В чем причина?..
Читать полностью »


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