Как стать автором
Обновить
206.74

C++ *

Типизированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Переходим на C++26: как собрать и настроить GCC 15.1 в Ubuntu

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров1.2K

На днях вышел GCC 15.1.0 с поддержкой некоторых фич C++26.

Однако нынешняя версия Ubuntu все еще использует старый GCC 13.

Здесь мы и рассмотрим, как вручную установить GCC 15.1 на Ubuntu и начать использовать новейшие элементы C++26 уже сегодня.

Поехали в будущее =>

Новости

Game++. Patching patterns

Уровень сложностиПростой
Время на прочтение46 мин
Количество просмотров1.4K

Книга Design Patterns: Elements of Reusable Object-Oriented Software («Приёмы объектно-ориентированного проектирования. Паттерны проектирования»), также известная под названием "синей книги", по цвету обложки первого издания, или книги "банды четырех/GoF" издана почти тридцать лет назад.

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

Я всё еще считаю, что книга актуальна - как базовые знания вроде математики, алгоритмов и примитивов синхронизации, но за прошедшие годы люди создали и обнаружили множество новых, хоть и не таких известных. А некоторые паттерны, настолько стали, затасканными что ли, что превратились скорее в антипаттерны, как например, Singleton и совсем потерялся смысл его использования. И там где разумное применение не приносит больше вреда, но позволяет развязать зависимости, создание архитектуры на таких принципах - ведет только к разбуханию кода, и коду ради кода.

Другие шаблоны, например Command/Flyweight были забыты и мало применяются в общем софтостроении, но прочно обосновались в разработке игр и интерактивных системах. Собственно о таких вещах и хотел рассказать в этой статье, и показать несколько специфичных шаблонов, применяемых в игрострое, о которых вы вряд ли услышите за его пределами, или будете порицаемы за их использование.

Заходите, великов и граблей хватит на всех.

Читать далее

Unreal Engine для начинающих: Учимся работать со сторонним API и создавать динамические текстуры

Уровень сложностиПростой
Время на прочтение23 мин
Количество просмотров1.4K

Работа с API и создание динамических текстур в Unreal Engine может показаться сложной задачей, особенно для новичков. В этом материале на реальном примере мы разберем, как с помощью C++ получить изображение из публичной базы данных The Art Institute of Chicago, преобразовать его в текстуру, добавить её в материал и отобразить на 3D-объекте прямо в движке. Вместе мы шаг за шагом создадим интерактивную виртуальную галерею, познакомимся с основами работы с HTTP-запросами, JSON-данными, динамическими материалами и текстурами, а также научимся строить структуру собственного актора для подобных проектов.

Читать далее

Сборка на CMake для новичка

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров3K

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

Читать далее

Путь и план амбициозного разработчика от игр к бизнес-приложениям на C++

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров2.7K

Привет, Хабр! Меня зовут Никита, мне 14 лет, и я владелец телеграмм канала NikitaTech Nexus. С детства мечтал создавать игры, но со временем мои амбиции выросли - теперь я планирую разрабатывать не только игры, но и серьезные десктопные приложения. В этой статье хочу поделиться своим прогрессом, текущими проектами и планами на будущее.

Узнать

«Куб → Город: школьный игровой движок и зрячий ИИ-копилот»

Время на прочтение4 мин
Количество просмотров1.1K

Можно ли создать свой движок на Vulkan в 13 лет и обучить ИИ, который сам дорисует сцену по одному кубику?

Спойлер: да. Это история школьного геймдева, которая началась с Blender в 7 лет и выросла в MIA Engine NEO — движок с собственной ECS, Vision-CNN и LLM-копилотом. Никакой Unity, только VkPipelineBarrier и мечта «один куб → целый мир».

Читать далее

Интеграция Kafka с Manticore Search: пошаговое руководство по обработке данных в реальном времени

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров1.5K

Kafka — это популярный брокер сообщений, который используется в самых разных проектах: от обработки логов и управления очередями задач до персонализации контента и аналитики в реальном времени. Например, его можно использовать для индексирования изменений в Википедии или поиска товаров в интернет-магазинах. Manticore Search, в свою очередь, поддерживает интеграцию с Kafka, что позволяет автоматически импортировать данные и использовать их для полнотекстового поиска, аналитики, векторного поиска и многого другого.

При импорте данных в Manticore вы можете гибко их обрабатывать:

Читать далее

Senders/Receivers в C++26: от теории к практике

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров4.9K

Каждому C++-разработчику приходится решать задачи асинхронности — от сетевых запросов до фоновых вычислений. В этой статье вы увидите, как P2300-модель Senders/Receivers в C++26 расширяет возможности std::async/std::future и позволяет строить ясные, декларативные конвейеры (then, when_all, upon_error и др.).

Читать далее

Очень простая структура данных, с помощью которой решаются сложные задачи

Время на прочтение7 мин
Количество просмотров13K

В этой статье я расскажу о стеке и задачах в которых он применяется. Включая задачу с заключительного этапа Всероссийской олимпиады школьников по информатике 2025 года.

Читать далее

Как добавить в Qt QVariant свой тип данных Currency (он же Decimal)

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров979

Как добавить свой тип данных в QVariant для совместимости с VT_CY VARIANT от корпорации Майкрософт.

Речь о фреймворке Qt, решаем проблему с подключением ккт Штрих к программе на С++.

Читать далее

Линус Торвальдс: Критика C++ — Комплексный анализ

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров24K

Линус Торвальдс, создатель (и великодушный диктатор) Linux, всегда с особой критикой относился к C++, объясняя почему он отвергает его в разработке ядра Linux. Но он не просто резко высказывается против использования C++, а приводит ряд аргументов, которые мы с вами сегодня и рассмотрим.

Читать далее

Google sheets with C++

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров2.6K

Google sheets with C++

Привет, пишу тг бота на C++. Недавно мне требовалось подключить выгрузку данных из бд в гугл таблицы, но годного гайда как это сделать я не нашел. Поэтому будет простенький гайд. Расписываю как читать и записывать данные в гугл таблицы. Использовал библиотеки rapidjson, libcurl и jwt-cpp.

Читать далее

Ближайшие события

Как Microsoft задушил Delphi, создав .NET: история одного программиста и одного чемодана

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров32K

Личный взгляд программиста с стажем на то, как Microsoft переманил Хейлсберга, создал .NET и вытеснил Delphi с технологической сцены. История предательства, перехода эпох и чемодана, который до сих пор скрипит в углу.

Как Microsoft задушил Delphi читать далее

Маркировка по ФФД 1.2 м сканеры штрих кода в режиме клавиатуры

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров1K

Поводом написания этой маленькой статьи послужила странная ситуация, сложившаяся с настройкой сканеров штрих кода для работы с маркировкой в режиме именно клавиатуры.

Я думаю многие уже бились головой об стену не понимая как настроить сканер для корректной работы с маркировкой по ФФД 1.2.

Под корректной работой понимается, что считанный сканером код должен хотя бы распознаваться сначала корректно онлайн сервером ОФД и конечно далее сервером честного знака.

Суть проблемы в том, что в коде маркировка по формату Datamatrix присутствуют обычно 2 разделителя со значением 0x1d или их ещё называют GS. 

Это управляющие символы, как они ещё применялись со времён программирования на перфокартах. Проблема в том, что они отсутствуют на клавиатуре визуально, располагаются в самом начале таблицы ASCII, и не имеют символьного представления. То есть в текстовом редакторе вы их просто так не увидите.

Да, надо отметить,развлекаемся со сканерами мы в Виндоус. На Винде, как я понял, USB драйвер  клавиатуры всегда передавал сканкоды в соответствии с таблицей XT стандарта, где за каждой клавишей закреплёно конкретное значение.

USB драйвер всегда передает байты, как вы понимаете, и всегда от конкретной клавиши идёт одно конкретное значение (байт если хотите).

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

Читать далее

Обзор CUDA: сюрпризы с производительностью

Время на прочтение6 мин
Количество просмотров9K

Наверное, я очень опоздал с изучением CUDA. До недавнего времени даже не знал, что CUDA — это просто C++ с небольшими добавками. Если бы я знал, что изучение её пойдёт как по маслу, я бы столько не медлил. Но, если у вас есть багаж привычек C++, то код на CUDA у вас будет получаться низкокачественным. Поэтому расскажу вам о некоторых уроках, изученных на практике — возможно, мой опыт поможет вам ускорить код.

Читать далее

Пишем кастомную физику для брелков в Unreal Engine

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров1.8K

В этой статье я поделюсь своей реализацией брелков через CableComponent.

Идея написания данной статьи возникла у меня во время реализации брелков для оружия. Как оказалось, в Unreal Engine на данный момент не существует готовых инструментов для реализации данного аксессуара. Тут можно было подумать, что брелки возможно реализовать через стоковый CableComponent, но как бы не так:

Читать далее

RAII 2.0: RAII как архитектурный инструмент в C++

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров3.9K

Идиома RAII — давно зарекомендовал себя как удобный способ автоматического управления ресурсами в C++. Обычно мы применяем его для управления памятью, файловыми дескрипторами или мьютексами. Однако что, если расширить понятие RAII до управления не только физическими ресурсами, но и логическими контрактами и состояниями системы?

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

Читать далее

Три икса: новый уровень работы с большими свертками в PyTorch для обучения моделей

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров2K

Привет, Хабр! Продолжим разговор про свертки в ML-обучении на C++. Мы уже обсудили, какие есть подходы к реализации сверток, — ссылку на первую часть ищите в конце статьи. 

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

Читать далее

Game++. Work hard

Уровень сложностиПростой
Время на прочтение15 мин
Количество просмотров2.8K

Разнесение выполнения (concurrent) систем играют ключевую роль в играх — от обновления поведения ИИ и физики до рендеринга и загрузки ресурсов. Разные модели параллелизма позволяют по-разному организовать работу потоков, распределяя задачи и определяя, как потоки взаимодействуют между собой для достижения общей цели. Правильно выбранная модель влияет не только на производительность, но и зачастую на стабильность игры.

Модели выполнения используются разные — от простой многопоточности с ручной синхронизацией до более продвинутых систем акторов, job-based подходов или task graph. Например, системы поведения ИИ могут обновляться параллельно с физикой, пока основной поток отвечает за рендеринг. Некоторые движки, такие как Unreal Engine, используют task graph (граф задач), где зависимости между задачами выражаются явно, и задачи автоматически распределяются по доступным ядрам. Другие подходы, как в CryEngine Perth (аналог ECS, матрица задач), позволяют организовать данные так, чтобы минимизировать ложные зависимости и повысить кэш-эффективность. Конечный выбор всегда зависит от архитектуры движка, платформы и требований конкретной задачи или группы задач.

Читать далее
1
23 ...

Вклад авторов

Работа

Программист C++
99 вакансий
QT разработчик
7 вакансий