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

Мой опыт разработки на языке Nim - 1

Привет!

Уже довольно давно я пишу свой игровой фреймворк — такой pet project для души. А так как для души нужно выбирать что-то, что нравится (а в данном случае — на чём нравится писать), то выбор мой пал на nim. В этой статье я хочу поговорить именно про nim, про его особенности, плюсы и минусы, а тема геймдева лишь задаёт контекст моего опыта — какие задачи я решал, какие трудности возникли.

Давным-давно, когда трава была зеленее, а небо чище, я встретил nim. Хотя нет, не так. Давным-давно я хотел заниматься разработкой игр, чтобы написать свою Самую Классную Игру — думаю, многие проходили через это. В те времена Unity и Unreal Engine только-только стали появляться на слуху и, вроде как, ещё не были бесплатными. Я не стал их использовать, не столько из-за жадности, сколько из-за желания написать всё самому, создать игровой мир полность с нуля, с самого первого нулевого байта. Да, долго, да, сложно, зато сам процесс приносит удовольствие — а что ещё для счастья надо?

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

В прошлом посте мы рассказали, как проехать из точки А в точку Б, не задев при этом ничего. Но, чтобы что-то объехать, нужно понять, где находимся мы сами, и где находятся динамические препятствия (наши противники и не только).

У человека есть глаза, уши и заложенный природой и личным опытом софт для того, чтобы он мог спокойно передвигаться и ориентироваться в пространстве. Система локализации — почти что глаза и уши для роботов. Она нужна, чтобы робот мог ориентироваться в пространстве и, подстраиваясь под окружающую среду, перемещаться в нем.

Сегодня мы расскажем про то, как решали проблему определения положения роботов на поле Eurobot, как всё это сделать, запустить и настроить под себя.

Локализация по Aruco маркерам - 1
Читать полностью »

Введение

В статье описана ленивая реализация обхода дерева на языке C++ с использованием сопрограмм и диапазонов на примере улучшения интерфейса работы с дочерними элементами класса QObject из фреймворка Qt. Подробно рассмотрено создание пользовательского представления для работы с дочерними элементами и приведены ленивая и классическая его реализации. В конце статьи есть ссылка на репозиторий с полным исходным кодом.

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

Статическая подписка с использованием шаблона Наблюдатель на примере С++ и микроконтроллера Cortex M4 - 1

Всем доброго здравия!

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

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

Всем привет! Я — тимлид команды по разработке десктопных приложений в компании Роджии Европа. Мы разрабатываем программные решения для нефтегазовой отрасли.

Так получилось, что в нашем флагманском продукте StarSteer нет панели корреляции — классического инструмента проводчиков скважин. Задача долго откладывалась из-за других, более приоритетных, но осенью прошлого года мы наконец смогли к ней приступить.

Обходя вопросы наследия кодовой базы — о нём я упомяну в статье — был один фундаментальный вопрос — с помощью какой технологии делать? Однозначно нам был нужен OpenGL — который уже применяется в MapView и 3d view на базе OpenSceneGraph — но очевидно, что не голый, и с элементами графического интерфейса. OSG отвалился =(. Технологию, удовлетворяющую двум требованиям — граф сцены и GUI на OpenGL — я знал только одну — Qt QML/Quick. О том, что же у нас получилось и чем нам есть поделиться — внутри.Читать полностью »

Ловим утечки памяти в С-С++ - 1

Приветствую вас, Хабровчане!

Сегодня я хочу немного приоткрыть свет над тем, как бороться с утечкой памяти в Си или С++.

На Хабре уже существует две статьи, а именно: Боремся с утечками памяти (C++ CRT) и Утечки памяти в С++: Visual Leak Detector. Однако я считаю, что они недостаточно раскрыты, или данные способы могут не дать нужного вам результата, поэтому я хотел бы по возможности разобрать всем доступные способы, дабы облегчить вам жизнь.

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

Picture 7

Ещё один год стремится к окончанию, поэтому настало время заварить себе кофе и перечитать обзоры ошибок за прошедший год. Конечно, на это уйдёт много времени, поэтому эта статья и была написана. Предлагаю взглянуть на наиболее интересные темные места проектов, которые встретились нам в 2019 году в проектах, написанных на C и C++.
Читать полностью »

Около года назад разработчики PyTorch представили сообществу TorchScript — инструмент, который позволяет с помощью пары строк кода и нескольких щелчков мыши сделать из пайплайна на питоне отчуждаемое решение, которое можно встроить в систему на C++. Ниже я делюсь опытом его использования и постараюсь описать встречающиеся на этом пути подводные камни. Особенное внимание уделю реализации проекта на Windows, поскольку, хотя исследования в ML обычно делаются на Ubuntu, конечное решение часто (внезапно!) требуется под "окошками".

Примеры кода для экспорта модели и проекта на C++, использующего модель, можно найти в репозиториии на GitHub.

Как подружить PyTorch и C++. Используем TorchScript - 1

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

C++ Russia: прошлое, настоящее и будущее - 1

В 2019-м конференция C++ Russia сильно изменилась организационно — и отзывы говорят, что к лучшему. Конец года — подходящее время, чтобы и подытожить результаты, и заглянуть в будущее: хотя до C++ Russia 2020 Moscow ещё четыре месяца, кое-что о ней уже известно.

Поэтому этот пост состоит из трёх частей:

  • «Прошлое»: как конференция развивалась и что изменилось с этого года
  • «Настоящее»: как прошла недавняя C++ Russia 2019 Piter (и какие из её лучших докладов уже доступны онлайн)
  • «Будущее»: что готовит 2020-й

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

Перевод статьи подготовлен специально для студентов курса «Разработчик С++». Интересно развиваться в данном направлении? Смотрите запись мастер-класса «Практика использования Google Test Framework»!

C++ vtables. Часть 2 (Virtual Inheritance + Compiler-Generated Code) - 1

Часть 3 — Виртуальное наследование

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


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