Обновить
256K+

C++ *

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

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

Отчет о проекте эффективного приоритетного дерева SAPT

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

Отчет о, написанном мною, алгоритмическом статичном двунаправленном дереве, имеющим сложность O(1) по всем параметрам. Не считаю эту статью чем-то выдающимся, никуда не претендую, это всего лишь отчет моей работы. Если вам понравится можете свободно пользоваться.

В качестве небольшого предисловия:
Зачем я спроектировал дерево?

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

Пример профилей поведения будет в конце статьи.

Читать отчет

Cocos2d-x тестирование производительности

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

Всем привет, меня зовут Артурас. В свободное время пишу браузерный движок для игр jsge, делаю на нем небольшие игрушки и работаю над улучшением его производительности.

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

Результат тестирования движка cocos2d-x мне показался интересным и я решил поделиться с Хабром.

Читать далее

Точность позиционирования объектов в играх: возможные ошибки

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

- Чем чревато брать float или double в качестве типа данных для хранения позиций объектов?
- Как это может повлиять на наличие багов в игре и ошибки синхронизации сетевой игры или реплеев?

Об этом вы узнаете в этом гайде с наглядными гифками и пруфом на C++

Читать далее

Установка Qt на Windows без регистрации и VPN. Часть 1. VisualStudio Community + Conan.io

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

До присоединения Qt Group к санкциям, для установки Qt Framework and Tools было достаточно скачать Qt Online Installer, ввести данные учетной записи и выбрать интересующие компоненты в меню. Ныне приходится выбирать из скольких вариантов установки: прибегнуть к помощи одного из пакетных менеджеров или собрать из исходников. У каждого варианта есть свои плюсы и минусы. В этой статье рассмотрим установку через один из наиболее популярных пакетных менеджеров для с++ Conan.

Целевая операционная система: Windows 10

Шаг 0. Установка компилятора

Скачиваем с официального сайта VisualStudio Community

https://visualstudio.microsoft.com/ru/downloads/

Запускаем инсталлятор, для работы понадобится набор «Разработка классических приложений С++»

Читать далее

Гайд по подготовке к собеседованию для Backend-разработчиков

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

Недавно я провёл своё 40-е собеседование в Booking.com, где оцениваю кандидатов по кодингу, системному дизайну и код‑ревью. Я хорошо понимаю ожидания от кандидатов на разные уровни: core developer, senior developer и engineering manager. Эти знания могут быть полезны для тех, кто готовится к собеседованию в Booking.com или других крупных компаниях с аналогичной структурой.

Читать далее

Криптоанализ шифра Виженера. Как реализовать и взломать

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

Сказал как-то один французский дипломат...

Что же он такого мог сказать в 16 веке ? Разберемся в этой статье.

Читать далее

Armadillo: матрицы, кубы и разреженные данные на C++

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

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

Работа с матрицами в стандартном C++ — это боль, страдание и масса ненужного кода. Почему? Потому что стандартная библиотека STL вообще не предназначена для линейной алгебры. Например, если вы хотите умножить две матрицы, вам придётся писать кастомный алгоритм, отлаживать его, а затем ещё раз писать его, когда поймёте, что оптимизация не та.

Но есть библиотека Armadillo — и с ней всё иначе.

Читать далее

PVS-Studio в 2024 году

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

За окном январь 2025 года, а это значит, пора подвести итоги за 2024 год! В этой статье вы узнаете, чем занималась команда PVS-Studio в прошлом году: новые плагины, интеграции, фичи и многое другое!

Читать далее

Пишем легаси с нуля на С++, не вызывая подозрение у санитаров. 04 — Компиляторная археология

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

В данной статье затронем частичку компиляторной истории. И постараемся собрать проект под компилятор 1995 года. Вы спросите, но зачем? Я отвечу: Потому, что можем!

Loading, please wait

Анализ реального исходного кода OpenSource проекта. Заметки на полях

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

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

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

Читать далее

О том, как легкомысленное использование полиморфных аллокаторов может испортить вам жизнь

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

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

Читать далее

Добро пожаловать в Древний…

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

...Египет — мир величественных пирамид, бурных вод Нила и одной из самых теплых и ламповых 2D-стратегий из 1999 года! Здесь вы станете архитектором и правителем, строя города, заботясь о благополучии жителей и возводя памятники, достойные фараонов. А вы знали, что у Фараона была полноценная демка? Хотя это нормально для индустрии того периода, вот о различиях с retail версией и пойдет речь.

…но помните, что в 2025-м всё это великолепие может не завестись и потребует доработки напильником, для работы на современных системах. Самый надежный способ насладиться стареньким, но не потерявшим свою магию, ситибилдером без глюков — это установить виртуалку с WinXP, но и это не всегда работает. Виртуалка поможет избавиться от большинства проблем, к сожалению на всех ОС после XP игра работает все хуже и хуже.

Читать далее

Работа с NRF24L01 и STM32F1

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

Процесс запуска NRF24L01 в связке со STM32F1. Разработка ведется в Arduino IDE. В статье указан код и схемы подключения для того, чтобы можно было повторить проект самому.

Читать далее

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

Тонкости в распараллеливании с OpenMP программы, написанной одновременно на C++ и Fortran

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

В данной заметке я расскажу о своем опыте распараллеливания программы с использованием OpenMP, написанной одновременно и на С++, и на Fortran 90, причем вызов фортрановской части кода осуществляется параллельно в цикле из C++ части.  Остановлюсь в основном на тех деталях и тонкостях, которые мне показались настоящими сюрпризами. Суть программы достаточно проста: есть некая цилиндрическая структура, которая модельно разбивается на аксиальные ячейки, каждая аксиальная ячейка с использованием методов математического моделирования обсчитывается независимо. Основная часть кода написана на C++, но вот то, что нужно рассчитать для каждой аксиальной ячейки, написано на Fortran 90, и надо сказать, что эта фортрановская часть достаточно внушительная. Код испокон веков обсчитывал последовательно каждую аксиальную ячейку, и в виду того, что фортрановская часть делает объемные вычисления, код считал долго. И тут была поставлена задача – распараллелить код, т.е. считать каждую аксиальную ячейку параллельно, дабы ускорить время расчета всей программы. Была принята следующая идея: выделение памяти под массивы и т.п., необходимые для фортрановских расчетов, оставить как и прежде, т.е. там же в фортране, удобно перегруппировав их в массив объектов структуры, описывающей аксиальную ячейку, и плюсом расширив данные, а вот вызов главной функции, делающей вычисления в фортрановской части, делать в цикле по аксиальным ячейкам параллельно в C++ части, т.е. примерно так...

Читать далее

Пишем легаси с нуля на С++, не вызывая подозрение у санитаров. 03 — Начинаем разрабатывать фреймворк

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

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

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

Loading, please wait

Editor Scripting в Unreal Engine: создание утилит для генерации Actor и Data Asset

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

Привет, Хабр! В этой статье я поделюсь своим опытом создания утилит в Unreal Engine, которые автоматизируют процесс генерации Actor Blueprint и Data Asset. Эти утилиты значительно упрощают работу дизайнерам уровней, помогая сократить время на рутинные задачи и минимизировать ошибки, а также могут быть полезны в широком спектре задач, связанных с разработкой.

Мы рассмотрим, как использовать Editor Utility Widgets на практике, чтобы упростить работу в редакторе. Основная часть будет выполнена в Blueprint, но для решения отдельных задач нам также понадобятся функции на C++. Помимо этого, я расскажу о важных аспектах работы с Asset Registry, фабриками ассетов и Subobject Data Subsystem.

Читать далее

С++ — это настоящий кайфǃ

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

Я хочу, чтобы вы задали себе один вопрос и честно на него ответили. Когда в последний раз вы получали настоящее удовольствие от программирования? Оглядываясь назад, я понимаю, что не испытывал подобных ощущений, наверное… уже лет десять. Удовольствия у меня не было ни от JavaScript, ни от Python, ни от Ruby или C — ни от чего. Когда я говорю «удовольствие» — я имею в виду ощущения человека, которого во время работы над неким проектом переполняет искренний восторг. Этот человек постоянно ловит себя на такой мысли: «Ох, ну какая ж круть. Поверить не могу, что моя безумная идея и правда сработала!».

Например, я писал маленькую игру-«рогалик». У меня была такая идея: «Готов поспорить, что у меня получиться воспользоваться этим вашим алгоритмом Дейкстры для соединения комнат при генерировании карты, сначала инвертируя карту, а потом его запуская. Вероятно, мне удастся прокопать отличнейшие туннели между комнатами». То было благословенное время, когда я пытался справиться с этой задачей, и при этом не чувствовал, что C++ мне мешает. Мне тогда удалось решить эту задачу, попутно многому научившись. Потом у меня появилась такая мысль: «Интересно, получится мне взять пользовательский интерфейс, сделанный на FTXUI, и просто напрямую его отрендерить в окно визуализации SFML?». Как и следовало ожидать, у меня всё отлично получилось. И хотя это было не так уж и сложно, я по ходу дела много узнал о том, как в C++ обрабатывается юникод. Ни одна из этих задач лёгкой не была, но все их, в принципе, можно было решить, и я не могу напридумывать себе достаточно много «подводных камней», которыми C++ мог бы помешать мне сделать то, что я хочу. Это — то, что я называю «удовольствием».

Читать далее

Безопасная работа с памятью на С++ без нарушения обратной совместимости. Библиотека MemSafe и плагин для компилятора

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


Статья в продолжение темы безопасной разработки на С++ с примером работающего кода. Кратко предыдущие тезисы:


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


А раз текущее состояние С++ не может гарантировать безопасную разработку на уровне стандартов, то выходит, что:


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

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

Читать дальше →

Зачем мы написали библиотеку для создания телеграм ботов на С++?

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


Сейчас телеграм боты крайне популярны, казалось бы, если всё так просто и есть спрос, то наверняка уже сотни библиотек для удобного создания ботов?

Вкратце - нет, если вы захотите написать телеграм бота, то вы (были) вынуждены делать это на python. Библиотеки на...

Читать далее

Так ли плох Go в глазах C++ разработчика: пишем микросервис и учимся на ошибках

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

Миллионы пользователей ежедневно заходят на Яндекс Маркет. И одна из ключевых задач сервиса — показывать им точные сроки доставки на поиске и в корзине. При пиковых нагрузках это около 40 тысяч запросов в секунду. Как обеспечить столь быструю и точную обработку данных о доставке?

Привет, Хабр! Меня зовут Никита Деревянко. Я руковожу разработкой логистической платформы Яндекс Маркета. Люблю играть в шахматы, бильярд и программировать. Изучаю японский язык, чтобы тренировать мозг и смотреть аниме в оригинале. Расскажу о том, как построить логистический runtime на Go, не являясь Golang-разработчиком. Рассмотрим, как справиться с большим объёмом данных и какие преимущества может (или не может) предложить Golang для масштабной задачи.

Читать далее