Обновить
258.12

C++ *

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

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

Руководство по сборке Qt под Windows из исходников с MinGW

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели6.2K

Официальный способ установки готовых бинарников Qt - через онлайн инсталлятор. Однако он требует обязательной регистрации. Да еще и недоступен на территории РФ. Есть и другие способы получить бинарники, или собрать с компилятором от Microsoft, однако не всегда эти способы приемлемы. Сборка из исходников под Windows может оказаться несколько нетривиальна для новичков, потому сделал небольшую инструкцию по сборке Qt 5 и Qt 6. А так же рассмотрена базовая настройка QT Creator.

Читать далее

Ссылки и указатели в C++

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

Привет, Хабр!

Сегодня разбираем &&* неувядающую классику C++ — ссылки & и указатели *. Казалось бы, два оператора, делов-то, но стгоит нырнуть под крышку — и выясняется: тут и разное время жизни, и несменяемость адреса, и прочие вещички. Разберемся в статье подробнее.

Читать далее

Подборка авторских Telegram-каналов про разработку

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

Подборка авторских Telegram-каналов про разработку

Приветствую, Хабр. На связи агент того самого анализатора, и сегодня я предлагаю вам изучить Telegram-каналы крутых айтишников, которые познали себя не только в коде, но и блогинге. Переворошила Telegram, чтобы вам не пришлось. Надеюсь, они помогут вам преисполниться в своём познании....

Поехали!

ML на «плюсах»: 5 материалов о необычном подходе к обучению моделей

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

Когда мы говорим о машинном обучении, то автоматически подразумеваем Python. Это справедливо: на Python есть множество удобных ML-инструментов, например, популярная библиотека PyTorch. Тем не менее, некоторые задачи можно решать с помощью С++. И не только ради эксперимента, а для увеличения производительности сервисов и упрощения работы с кодом. 

Кирилл Колодяжный, разработчик СХД в YADRO, несколько лет изучает машинное обучение на С++. Он уже написал программы для поиска лица на фото и для распознавания объектов в реальном времени. Под катом — пять материалов Кирилла, после которых инженерам захочется «пересесть» с Python на C++. Хотя бы на время.

Читать далее

Game++. Patching patterns

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

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

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

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

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

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

Читать далее

Пишем сканер штрихкодов на c++

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

Штрихкод и с чем его едят на плюсах. Сегодня я покажу вам как я писал простейший сканер штрихкодов EAN-8 и EAN-13. Конечно, я мог бы взять готовые и более функциональные сканеры из интернета, НО зачем? Зачем, если можно сделать самому, если можно развить свои навыки и расширить портфолио? Вот и я так подумал...

Если вы заинтересовались - я сейчас вам раскачаю про код...

Просканировать статью

Разрабатываем игру для Wii в 2025

Время на прочтение11 мин
Охват и читатели1.5K

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

Чтобы дать вам такой опыт, существуют онлайн фэнтезийные игровые консоли, такие как PICO-8 (небесплатная) и TIC80, которые делают очень доступным создание прототипов и получение минимальных навыков. Также есть аппаратные системы, такие как Playdate (пропиетарная), которые работают с методами ввода и форм-факторами еще больше ограничивая вашу площадку для игр. Наконец, есть процветающие сообщества энтузиастов-любителей вокруг таких консолей как SNES и N64 (посмотрите на этот потрясающий демейк Portal!).

Лично я всегда питал слабость к Wii. Отчасти потому, что я вырос на ее невероятных играх, таких как Super Mario Galaxy 2, но также потому, что моддинг игр для Wii дал мне возможность заглянуть в то, что позже станет моей карьерой: разработку игр. Хотя я и занимался разработкой для Wii в прошлом, я никогда не чувствовал что действительно понимаю что делаю. Пару месяцев назад я решил это исправить. Имея законченное задание по DirectX для университетского курса программирования графики и открытые возможности «вы можете добавлять дополнительные функции, чтобы повысить свои оценки, но они не являются обязательными», я подумал: что, если я приду на экзамены со своим Wii и сделаю презентацию на нем?

Читать далее

Пишем простую виртуальную машину (1я часть. Минимально работоспособный код эмулятора)

Время на прочтение10 мин
Охват и читатели4.7K

Всем привет! Я решил попробовать написать собственный эмулятор (минимально рабочий код), чтобы систематизировать свои знания в архитектуре компьютера. Мы сделаем эмуляцию CPU, опкодов, памяти, а также возможность подключать внешние устройства. Уровень - кто недавно начал изучать архитектуру компьютера. В перспективе можно будет сделать графику, звук и постоянную память.

Читать далее

FFI: как создать мост между Rust и C/C++

Время на прочтение12 мин
Охват и читатели3.2K

Привет, Хабр!

Сегодня мы рассмотрим, как создать безопасные FFI-интерфейсы в Rust для интеграции с C/C++ библиотеками

Если говорить проще, FFI (foreign function interface — интерфейс вызова внешних функций) – это способ «позаимствовать» функциональность из другого языка. В контексте нашей статьи, с одной стороны у нас Rust, где каждый байт памяти охраняется компилятором, а на другой C++, где свобода обращения с памятью может обернуться утечками или, что еще хуже, непредсказуемым UB (англ. undefined behavior, в ряде источников непредсказуемое поведение). И наша задача – сделать так, чтобы эти два мира не конфликтовали, а работали в унисон.

Читать далее

Основы криптоанализа шифра простой перестановки

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

Опять какие‑то философы из V века до н.э. зашифровали ваше сообщение? Разберемся, что с этим делать, в этой статье.

Читать далее

RAII в современном C++: как правильно организовать автоматическое управление ресурсами

Время на прочтение4 мин
Охват и читатели8.2K

Привет, Хаброжители!

Сегодня мы приготовили для вас перевод статьи про RAII в современном C++. Вы узнаете как правильно организовать автоматическое управление ресурсами.

В современном C++ управление ресурсами — это ключевая составляющая корректности программы, затрагивающая память, дескрипторы файлов, блокировки и все внешние системы, с которыми приходится взаимодействовать вашему коду. Начинающие программисты часто полагают, что при работе с C++ требуется активно очищать память вручную, пользуясь командами new, delete, malloc или free. Но на самом деле в современном C++ эта работа строится существенно иначе.

Читать далее

Автоматизация печати в конструкторском бюро (в двух частях)

Уровень сложностиСредний
Время на прочтение20 мин
Охват и читатели6.6K

Часть 1. DWG. Как побочный кейс стал основным

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

Читать далее

VL53L0X что это такое и с чем это едят

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

В этом посте пойдет рассказ о ToF-датчиках, которые мы с моей командой пытались обуздать чуть более недели. На рынке большое количество различных датчиков расстояния, их вариаций и модификаций. От ультразвуковых датчиков HC-SR04 мы решили сразу отказаться, так как нам нужна была максимальная точность и стабильность измерений.

Окунуться в мир приключений

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

Реализация сервиса на C++: TDD, DDD и событийно-ориентированная архитектура

Уровень сложностиСредний
Время на прочтение33 мин
Охват и читатели9.3K

Статья о реализации сервиса на C++ с применением TDD, DDD и событийно-ориентированной архитектуры. Проект переносит идеи из книги «Паттерны разработки на Python: TDD, DDD и событийно-ориентированная архитектура» на C++.

Читать далее

Старт в «железной» индустрии: от модуля ядра Linux для СнК до работы с GSM-системами

Время на прочтение8 мин
Охват и читатели10K

Каждый год десятки студентов проходят стажировку «Импульс», чтобы попробовать себя в реальных проектах, познакомиться с индустрией изнутри и понять, как рождается современное IT-оборудование — серверы, СХД, базовые станции и другие устройства. Для кого-то это первые шаги в промышленной разработке, для кого-то — возможность углубиться в уже знакомую область, а совершенно для всех — время, когда можно попробовать себя в роли фултайм-сотрудника большой компании. 

О том, как студенты впервые сталкивались с промышленным кодом, учились искать ответы в Confluence и разбираться в пайплайнах и задачах, — читайте под катом. 

Читать далее

Боремся с хедкрабами в исходниках Source SDK

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели8K

GameDev тернист и неисповедим. Как и любой проект, он проходит испытания кровью и потом, сражаясь с тварями, тьмой порождёнными: барнаклы, пиявки, муравьиные львы. И это ещё не сказочка, это только смазочка. Больше всего стоит остерегаться жуков хедкрабов. Да, это те самые баги в коде. Если их вовремя не убить монтировкой, то ваша участь — стать отвратительным кадавром. Предлагаем читателю побывать в роли Гордона Фримена, погрузиться в недры Source SDK и побороться с хедкрабами. В качестве монтировки же выступит PVS-Studio.

Читать далее

std::mdspan в C++23: многомерные данные без самодельных view

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

Привет, Хабр!

В C++ долго не было нормального стандартизованного способа адресовать многомерные данные без самодельных обвязок на указателях, индексации по формуле и пачек typedef с макросами. В C++20 появился std::span для одномерных непрерывных диапазонов. Следующий логичный шаг — многомерный view с настраиваемым отображением индексов в адреса памяти. Этим шагом в C++23 стал std::mdspan в заголовке <mdspan>. Это не контейнер и не владеет памятью, это слой адресации поверх уже существующего буфера. Формально идею закрепили в P0009, а в стандарт попали mdspan, extents и политики layout; отдельная функция submdspan пошла в следующую версию стандарта C++26.

Читать далее

Жизнь в консоли или как я полюбил боль

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

Много лет был адептом GUI и вот уже ворочу нос от этой смердятины. Всё постоянно давит, всё не нравится. Если открываю VS Code или QtCreator - 10 минут вспоминаю как этом пользоваться. Хочу поделиться с тобой своей историей...

Все на дно!

История одного тестового задания в HFT-компанию под NDA

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

В один прекрасный день мне написал рекрутер с крайне заманчивым предложением.

Я на тот момент как раз находился в поиске новой работы, поэтому предложение принял. Опустим стандартный звонок с этим рекрутером, с HR'ом компании и онлайн-тестовое и перейдём к более интересному - тестовому заданию. Сразу скажу, что тестовое не оплачивалось, и я взялся за него по нескольким причинам. Во-первых, оно мне и вправду понравилось, во-вторых, кодовую базу я планировал использовать в своём с корешами pet-проекте по финансам, в-третьих, не оставлял надежд пройти отбор до конца и получить желаемый offer. Спойлер - игра стоила свеч, поэтому прошу к прочтению.

Читать далее

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

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

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

Читать далее

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