![](https://webcf.waybackmachine.org/web/20221222084408im_/https://habrastorage.org/getpro/habr/upload_files/35f/61a/75e/35f61a75e8d6c12f43bacb81b88ee529.jpg)
![](http://webcf.waybackmachine.org/web/20221222084408im_/https://habrastorage.org/getpro/habr/hub/01b/2ed/295/01b2ed29584e1245479ca857b0264ff1.png)
C++ *
Типизированный язык программирования
Новости
7-zip — нет времени спешить
![](https://webcf.waybackmachine.org/web/20221222084408im_/https://habrastorage.org/getpro/habr/upload_files/726/f2a/602/726f2a60216c638f9c91f5fbb14d5c6a.png)
Данной заметки не должно было быть, но мы живем не в идеальном мире. Есть много пользователей, что предпочли стандартному проводнику Windows альтернативу и наверное еще больше пользователей архиватора 7-zip. Имеет смысл поделиться с ними, подумал я и вот мы здесь.
Опустим лишние подробности, случилось так, что я заметил в используемом файловом менеджере значительную задержку появления окна контекстного меню при выборе большого количества файлов. Даже учитывая что его код меню написан без учета современных рекомендаций MS, лаг был подозрительно большим. И хоть никого не вдохновляет идея потратить личное время на неоплачиваемую работу с непредсказуемым результатом, я решил немного разобраться в причинах.
Что делает обычный эникейщик в подобной ситуации? Конечно же берет в руки первый подвернувшийся профайлер.
C++ для Maya
![](https://webcf.waybackmachine.org/web/20221222084408im_/https://habrastorage.org/getpro/habr/upload_files/3d5/be7/173/3d5be7173002b2fb5260c289e0647275.jpg)
Создание кастомного локатора в Autodesk Maya с помощью C++
Здравствуйте. В этой статье я хочу поделиться тем опытом, который приобрел при написании плагина на C++ для Maya.
Алгоритмы диапазонов C++20 — 7 немодифицирующих операций
Библиотека Ranges для C++20 предлагает альтернативы для большинства алгоритмов. На этот раз я хочу показать вам десять немодифицирующих операций. Мы сравним их со «старой» стандартной версией и увидим их преимущества и ограничения.
Подробности — к старту нашего курса по разработке на C++.
Нестандартный полиморфизм. Паттерн Type Erasure
![](https://webcf.waybackmachine.org/web/20221222084408im_/https://habrastorage.org/getpro/habr/upload_files/17a/787/e04/17a787e04f4dbaa3bccb9191c003c3fc.jpg)
Нестандартный полиморфизм. Паттерн Type Erasure.
Посмотрим на проблему, решим ее обычным полиморфизмом и пройдем небольшими шагами к более элегантному решению с помощью современного паттерна.
Инверсия зависимостей (dependency inversion principle)
Одним из принципов SOLID является инверсия зависимостей (dip). В литературе по программированию и в интернете масса источников с детальным описанием этого принципа. И большинство кандидатов на собеседовании успешно отвечают заученными фразами на вопрос: "Что такое инверсия зависимости?". Но при практической реализации мгновенно возникает вопрос, а в чем же собственно заключается инверсия и как она программируется? Далее будет рассмотрен данный принцип более подробно.
Помимо Правил Трех, Пяти и Ноля
![](https://webcf.waybackmachine.org/web/20221222084408im_/https://habrastorage.org/getpro/habr/upload_files/582/d42/032/582d420325295dde125e98a0314b3467.png)
В предыдущей статье мы разобрали Правила Трех, Пяти и Ноля — что они из себя представляют, и когда и какое из них следует использовать (спойлер: львиная доля кода должна быть написана в соответствии с Правилом Ноля).
Но очень часто у правил бывают исключения, и иногда эти исключения не менее важны, чем сами правила. Сегодня мы с вам разберемся, какие ситуации не подпадают под Правила Ноля.
Параллелизм истинный и мнимый или… и ты туда же, Рикитаке
![](https://webcf.waybackmachine.org/web/20221222084408im_/https://habrastorage.org/getpro/habr/upload_files/068/633/8f0/0686338f06998e7689db3ceb388f3388.png)
Я уже не знаю кому и чему верить. Собрался было подводить итоги по обсуждению аттрактора Лоренца, но что-то меня заставило "поиграть" еще с одним - мотором Рикитаке [1]. И, честное слово, какого-либо подвоха я, ну, никак не ожидал. Просто потому, что по виду графиков он был, пожалуй, наиболее стабильным и характерным по внешнему виду во всех программных пакетах - MATLAB, SimInTech и ВКПа (cм. также предыдущую статью [2]).
На структурном уровне рассматриваемые аттракторы можно представить в виде трех блоков ("черных ящиков"), отличающихся лишь видом связей. Структурная модель аттрактора Рикитаке представлена на рис. 1а, а на рис. 1б для сравнения приведена схема аттрактора Лоренца.
UNIGINE 2.16.1 — Screen-Space Haze Global Illumination, улучшенный API импорта, усовершенствования для VR
![](https://webcf.waybackmachine.org/web/20221222084408im_/https://habrastorage.org/getpro/habr/upload_files/502/6d8/5e1/5026d85e108604712aba6f8e9383f415.jpg)
Почти под ёлочку состоялся минорный релиз 2.16.1, который, однако, содержит пару крутых фичей - например, SSHGI (глобальное освещение дымки в экранном пространстве), добавляющее сразу +100 к атмосфере и возможность из любой сцены сделать Сайлент Хилл. А еще мы усовершенствовали API импорта ассетов в процессе работы приложения, добавили опцию для еще более реалистичных динамических отражений, оптимизировали рендеринг теней - об этом и остальном читайте под катом.
PVS-Studio и RPCS3: лучшие предупреждения в один клик
![](https://webcf.waybackmachine.org/web/20221222084408im_/https://habrastorage.org/getpro/habr/upload_files/019/cd1/647/019cd1647927aa14d255291663369a0e.png)
Best Warnings — режим анализатора, оставляющий в окне вывода 10 лучших предупреждений. Мы предлагаем вам ознакомиться с обновлённым режимом Best Warnings на примере проверки проекта RPCS3.
SuperIndustry — Dev log #0 – Начало приключения
![](https://webcf.waybackmachine.org/web/20221222084408im_/https://habrastorage.org/getpro/habr/upload_files/99c/b49/ae3/99cb49ae38a7058086389d13870370c2.png)
Привет, друзья! В этом цикле статей я максимально подробно буду рассказывать о процессе разработки игры на UE – SuperIndustry. Вы сможете на моем примере познать процесс разработки 3D игры на UE. Вкратце про игру: Представьте гибрид Oxygen not included и Satisfactory, в далеком будущем и на специфичной экзо планете. В игре будет простенький сюжет, который будет повествоваться через своеобразный дневник. Главная цель – улететь с планеты (либо же остаться на ней, и немного поиграв дойти до второй, более загадочной и неоднозначной концовки)
Весенние конференции JUG Ru Group: много офлайна и много онлайна
![](https://webcf.waybackmachine.org/web/20221222084408im_/https://habrastorage.org/getpro/habr/upload_files/d8c/f9c/068/d8cf9c068946999d4ab1ba2e475f4c98.jpg)
Помните доисторические времена вроде 2019 года, когда ещё не было пандемии? Тогда мы проводили офлайновые конференции, и обычно они длились дня два с утра до вечера: можно успеть и доклады послушать, и наобщаться вволю.
В эпоху онлайн-конференций многие ностальгировали по этому и просили «вернуть как было». Однако другие участники успели полюбить удобство онлайна (например, те, кто живёт далеко от Москвы/Петербурга). И просто вернуть прежний формат означало бы сделать им хуже.
Поэтому на наших весенних конференциях мы постараемся, чтобы никто не ушёл обиженным: и офлайн будет двухдневным (с 2019-го такое не делали), и у онлайн-участников будет много контента. Подробности — под катом.
Правила Трех, Пяти и Ноля
![](https://webcf.waybackmachine.org/web/20221222084408im_/https://habrastorage.org/getpro/habr/upload_files/b02/c4d/434/b02c4d434ac0e322470c882a5e28ef2e.png)
Цель этого поста — познакомить вас с Правилами Трех, Пяти и Ноля и объяснить, какое из них и когда вам следует использовать. В следующем посте мы углубимся в применение Правила Пяти в различных сценариях.
Истории
Используем Objective-C в C++ без проблем
Интегрируем Objective-C код из Apple SDK в C++ проект, без переписывания всего проекта на Objective-C++, с использованием PIMPL идиомы. Также, сборка всего проекта вместе с использованием Makefile и CMake (для генерации .xcodeproject).
Использование final для повышения производительности в C++
![](https://webcf.waybackmachine.org/web/20221222084408im_/https://habrastorage.org/getpro/habr/upload_files/2d2/c8c/3b0/2d2c8c3b06c22f74cb8d9aaf366fea7c.png)
Динамический полиморфизм (виртуальные функции) занимает центральное место в объектно-ориентированном программировании (ООП). При правильном использовании он способствует созданию входных точек в существующей кодовой базе, с помощью которых новый функционал и поведение могут (относительно) легко интегрироваться в уже проверенную, хорошо протестированную кодовую базу.
История разработчиков коммерческой системы видеосвязи Video Union, путь 2013 — 2022
![](https://webcf.waybackmachine.org/web/20221222084408im_/https://habrastorage.org/getpro/habr/upload_files/f6a/f2b/b20/f6af2bb20c0f6eedcdd571db1bad457e.png)
В 2022 году существенно вырос спрос на отечественный софт, в первую очередь заменяющий зарубежные решения. Вопрос замены ПО до сих пор остро стоит во многих компаниях и государственных структурах, особенно после ухода из России зарубежных вендоров и организаций, предоставляющих удобные сервисы для коммуникации. В сегодняшнем интервью поговорим с Сергеем Выборновым @serg52 — одним из основателей системы видеоконференций Video Union и одним из совладельцев этого проекта. Video Union стал одним из вариантов на замену популярных в России сервисов Zoom и Microsoft Teams, постепенно прекращающих бизнес в РФ. Сергей расскажет историю сервиса, интересные и неочевидные моменты развития проекта и как на Video Union повлияла ситуация в мире.
Кастомный аллокатор для закрытого 3rd
![](https://webcf.waybackmachine.org/web/20221222084408im_/https://habrastorage.org/getpro/habr/upload_files/8e9/0ca/887/8e90ca887cfb443aab8dc04d4f40aa49.png)
Существует ряд ситуаций, когда это имеет смысл. От полного контроля памяти, до вынужденной необходимости. К примеру, одна из возможных ситуаций:
1. Мы используем alignment аллокаторы.
2. Мы перегружаем какой-то класс и данные от нашей 3rd зависимости.
3. 3rd зависимость не использует alignment аллокаторы.
Полиморфные структуры данных и производительность
![](https://webcf.waybackmachine.org/web/20221222084408im_/https://habrastorage.org/getpro/habr/upload_files/7c5/040/fcb/7c5040fcbca6df583d949a5b29b1c049.png)
Обзор существующих проблем, а также способов их решения и интересных контейнеров, позволяющих значительно увеличить удобство и производительность полиморфного кода.
Вклад авторов
-
Andrey2008 6584.9 -
tangro 2409.0 -
SvyatoslavMC 2388.0 -
antoshkka 1761.0 -
haqreu 1366.0 -
olegchir 968.2 -
khizmax 945.4 -
eao197 876.0 -
anastasiak2512 741.0 -
0xd34df00d 726.0