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

JetBrains готовит к выпуску С++ IDE Я не являюсь представителем компании JetBrains и вообще никак с ней не связан, но не смог пройти мимо на мой взгляд очень многообещающей новости. На днях JetBrains объявили о планах выпустить C++ IDE на базе AppCode для Objective-C. Эта новость была крайне вскользь упомянута и вероятно большинство (как и я) попросту не заметили её под столь скушным названием. Но поскольку качественных и высокофункциональных IDE для С++ — кот наплакал, то подобная новость от JetBrains просто не может не радовать и должна быть быть озвучена отдельно.

Поскольку продукты этой компании хорошо зарекомендовали себя для таких языков каr Java, Python, Ruby, C#, Objective-C и практически все, кто пользовался их продуктами, сходятся во мнении — продукты очень качественные и высоко функциональные, поэтому можно ожидать, что C++ IDE их производства будет таким же прекрасным продуктом.

Многие засомневались в реальности этой новости из-за даты её публикации — 1 апреля, поэтому компания подтвердила у себя в блоге — это не первоапрельская шутка.

AppCode для Objective-C на текущий момент работает только под Mac OS, но новая С++ IDE уже объявлена кроссплатформенной и заявлена поддержка трёх основных платформ: Windows, Mac OS и Linux. На странице посвящённой грядущей IDE можно найти краткое описание того, какой функционал перекочует из AppCode и что нового будет добавлено в будущую IDE, чтобы она была наиболее удобна при работе с C++ проектами.
Читать полностью »

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

Вводная

Тем из нас, кому приходится тратить полчаса-час на путешествие из Москвы в Москву, приходится искать, чем занять и разогреть ещё не до конца проснувшийся мозг. Кто-то читает, кто-то кидает птичек, кто-то решает математические головоломки. Например, классическая задачка: среди шести цифр автобусного билета расставить скобки и операторы так, чтобы получилось число 100. Бывает так, что ну никак не удаётся найти решение, и конкретная задачка не отпускает весь оставшийся день. Поневоле задумаешься над алгоритмом.
Решение «в лоб» подстановкой скобок и операторов и проверка на каком-нибудь математическом движке не устраивало, генетические алгоритмы, по которым я с ума схожу, не подходили из-за склонности скапливаться в локальных экстремумах. В итоге задача свелась к перебору всех возможных двоичных деревьев с заданным числом листьев (для шести их ровно 42).
Читать полностью »

Доброго времени суток всем!
Недавно я выкладывал свою реализацию перехватчика(тут).
Получился он, чего уж греха таить, громоздким и коряво работающим. В 1 же из комментариев отписался уважаемый k_d и упомянул о своей обертке над mhook(MHook vs Zuma).
Конечно, меня заинтересовала альтернатива, работающая с перехватом не только __cdecl'а но и, более того, позволяющая ставить перехват практически в любом месте кода.
Решение понравилось и я решил переписать свою библиотеку, которую использую для различного рода перехватов, начисто, с использованием материала от k_d. Текущий вариант умеет перехватывать все, до чего дотянутся загребуще-экспериментальные ручки программиста и парсить аргументы из стека(по крайней мере, потенциально идея это все умеет. Наверное.)
Представляю Вашему вниманию то, что получилось.
Читать полностью »

Введение

Начну с истории создания этого логгера. Есть довольно специфическая программа, которую я разрабатываю, в ней довольно много анти-отладочного кода плюс несколько ассемблерных вставок. По отдельности функции работают, а в релизной версии случаются глюки. Поэтому было принято решение заглянуть под капот программы. Хотелки были следующие:
• Минимальный размер кода (84Кб сама программа)
• Возможность гибко управлять детализацией информации
• Незаметность на машине пользователя
• Простота в использовании
Поиск по интернетам выдал настоящих монстров логгирования, чтение отзывов еще больше меня опечалило. Сложилось мнение что и в стане С++ ков думают что: гигабайтом больше, гигабайтом меньше и это не важно. Что получилось, вы сможете посмотреть ниже.
Читать полностью »

На хабре уже было несколько статей про lock-free алгоритмы. Этот пост — это перевод статьи моего коллеги, которую мы планируем публиковать в нашем корпоративном блоге. По роду деятельности мы пишем огромное количество lock-free алгоритмов и структур данных, и этой статьей хочется показать, насколько это интересно и сложно одновременно.

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

Занимаясь разработкой алгоритмов, постоянно одергиваю себя, а вдруг изменения, которые работают на небольшом примере, привнесут разброд и шатание в результаты на других, больших данных. Тогда мне на помощь приходит командная строка. Самое ужасное, что каждый раз реализовывать парсер аргументов уже надоело, а значит, не последним средством для C++ программиста оказывается пакет program_options из библиотеки boost.
Читать полностью »

Недавно вышла хорошая книга, посвященная разработке программ на C++ под Windows с помощью свободного инструментария MinGW.
Читать полностью »

Доброе время суток, уважаемые читатели!

Прослушав курс по компьютерной графике в университете и вдоволь наигравшись с OpenGL, я решил, что пора бы уже двинуться дальше и попробовать себя в разработке игр. Писать с нуля свой движок, прямо скажем, не очень-то хотелось. Главной целью было скорее посмотреть как это делается, вынести уроки и может быть создать что-то на базе выбранного движка. Беглый поиск показал, что с открытыми кроссплатформенными движками немного туго. У одного проблемы с Linux, Windows или Mac OS, у другого со свежими версиями мобильных ОС, третий почти заброшен… Но я-таки наткнулся на один очень привлекательный экземпляр, о котором и хочу поведать в этой статье.

gameplay

Имя этому фреймворку — GamePlay 3D. Информации о нём на просторах интернета не очень много, чего уж говорить про рунет. Это open source фреймворк написанный на C++ для программирования игр на C++ со всеми вытекающими из этого достоинствами и недостатками. Авторы проекта позиционируют его как универсальный инструмент, эдакий аналог cocos2d для 3D игр. Чтобы начать писать на GamePlay 3D не нужно обладать глубокими знаниями OpenGL, GLSL или математики 3D графики, однако все мы понимаем, что для достижения хорошего результата от этого никуда не деться. Подробности и небольшой пример для старта под катом.

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

Дробление непрерывного потока данных на структурные единицы

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

Такие задачи возникают, к примеру, при передаче телеметрии и для управления удаленным оборудованием. С одной стороны обычно стоит простейший микроконтроллер, с другой стороны стоит компьютер. Связь между ними может осуществляться по старому, доброму RS232. Хотя бывает и сложнее, например, выход микроконтроллера UART преобразуется в 802.11b, затем идет распространение радиосигнала до радиомачты и в сервер приходит Ethernet.

Если интересен мой велосипед на эту тему, добро пожаловать под кат.
Читать полностью »


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