C++ *
Типизированный язык программирования
Новости
7-zip — нет времени спешить
Данной заметки не должно было быть, но мы живем не в идеальном мире. Есть много пользователей, что предпочли стандартному проводнику Windows альтернативу и наверное еще больше пользователей архиватора 7-zip. Имеет смысл поделиться с ними, подумал я и вот мы здесь.
Опустим лишние подробности, случилось так, что я заметил в используемом файловом менеджере значительную задержку появления окна контекстного меню при выборе большого количества файлов. Даже учитывая что его код меню написан без учета современных рекомендаций MS, лаг был подозрительно большим. И хоть никого не вдохновляет идея потратить личное время на неоплачиваемую работу с непредсказуемым результатом, я решил немного разобраться в причинах.
Что делает обычный эникейщик в подобной ситуации? Конечно же берет в руки первый подвернувшийся профайлер.
C++ для Maya
Создание кастомного локатора в Autodesk Maya с помощью C++
Здравствуйте. В этой статье я хочу поделиться тем опытом, который приобрел при написании плагина на C++ для Maya.
Алгоритмы диапазонов C++20 — 7 немодифицирующих операций
Библиотека Ranges для C++20 предлагает альтернативы для большинства алгоритмов. На этот раз я хочу показать вам десять немодифицирующих операций. Мы сравним их со «старой» стандартной версией и увидим их преимущества и ограничения.
Подробности — к старту нашего курса по разработке на C++.
Нестандартный полиморфизм. Паттерн Type Erasure
Нестандартный полиморфизм. Паттерн Type Erasure.
Посмотрим на проблему, решим ее обычным полиморфизмом и пройдем небольшими шагами к более элегантному решению с помощью современного паттерна.
Инверсия зависимостей (dependency inversion principle)
Одним из принципов SOLID является инверсия зависимостей (dip). В литературе по программированию и в интернете масса источников с детальным описанием этого принципа. И большинство кандидатов на собеседовании успешно отвечают заученными фразами на вопрос: "Что такое инверсия зависимости?". Но при практической реализации мгновенно возникает вопрос, а в чем же собственно заключается инверсия и как она программируется? Далее будет рассмотрен данный принцип более подробно.
Помимо Правил Трех, Пяти и Ноля
В предыдущей статье мы разобрали Правила Трех, Пяти и Ноля — что они из себя представляют, и когда и какое из них следует использовать (спойлер: львиная доля кода должна быть написана в соответствии с Правилом Ноля).
Но очень часто у правил бывают исключения, и иногда эти исключения не менее важны, чем сами правила. Сегодня мы с вам разберемся, какие ситуации не подпадают под Правила Ноля.
Параллелизм истинный и мнимый или… и ты туда же, Рикитаке
Я уже не знаю кому и чему верить. Собрался было подводить итоги по обсуждению аттрактора Лоренца, но что-то меня заставило "поиграть" еще с одним - мотором Рикитаке [1]. И, честное слово, какого-либо подвоха я, ну, никак не ожидал. Просто потому, что по виду графиков он был, пожалуй, наиболее стабильным и характерным по внешнему виду во всех программных пакетах - MATLAB, SimInTech и ВКПа (cм. также предыдущую статью [2]).
На структурном уровне рассматриваемые аттракторы можно представить в виде трех блоков ("черных ящиков"), отличающихся лишь видом связей. Структурная модель аттрактора Рикитаке представлена на рис. 1а, а на рис. 1б для сравнения приведена схема аттрактора Лоренца.
UNIGINE 2.16.1 — Screen-Space Haze Global Illumination, улучшенный API импорта, усовершенствования для VR
Почти под ёлочку состоялся минорный релиз 2.16.1, который, однако, содержит пару крутых фичей - например, SSHGI (глобальное освещение дымки в экранном пространстве), добавляющее сразу +100 к атмосфере и возможность из любой сцены сделать Сайлент Хилл. А еще мы усовершенствовали API импорта ассетов в процессе работы приложения, добавили опцию для еще более реалистичных динамических отражений, оптимизировали рендеринг теней - об этом и остальном читайте под катом.
PVS-Studio и RPCS3: лучшие предупреждения в один клик
Best Warnings — режим анализатора, оставляющий в окне вывода 10 лучших предупреждений. Мы предлагаем вам ознакомиться с обновлённым режимом Best Warnings на примере проверки проекта RPCS3.
SuperIndustry — Dev log #0 – Начало приключения
Привет, друзья! В этом цикле статей я максимально подробно буду рассказывать о процессе разработки игры на UE – SuperIndustry. Вы сможете на моем примере познать процесс разработки 3D игры на UE. Вкратце про игру: Представьте гибрид Oxygen not included и Satisfactory, в далеком будущем и на специфичной экзо планете. В игре будет простенький сюжет, который будет повествоваться через своеобразный дневник. Главная цель – улететь с планеты (либо же остаться на ней, и немного поиграв дойти до второй, более загадочной и неоднозначной концовки)
Весенние конференции JUG Ru Group: много офлайна и много онлайна
Помните доисторические времена вроде 2019 года, когда ещё не было пандемии? Тогда мы проводили офлайновые конференции, и обычно они длились дня два с утра до вечера: можно успеть и доклады послушать, и наобщаться вволю.
В эпоху онлайн-конференций многие ностальгировали по этому и просили «вернуть как было». Однако другие участники успели полюбить удобство онлайна (например, те, кто живёт далеко от Москвы/Петербурга). И просто вернуть прежний формат означало бы сделать им хуже.
Поэтому на наших весенних конференциях мы постараемся, чтобы никто не ушёл обиженным: и офлайн будет двухдневным (с 2019-го такое не делали), и у онлайн-участников будет много контента. Подробности — под катом.
Правила Трех, Пяти и Ноля
Цель этого поста — познакомить вас с Правилами Трех, Пяти и Ноля и объяснить, какое из них и когда вам следует использовать. В следующем посте мы углубимся в применение Правила Пяти в различных сценариях.
Истории
Используем Objective-C в C++ без проблем
Интегрируем Objective-C код из Apple SDK в C++ проект, без переписывания всего проекта на Objective-C++, с использованием PIMPL идиомы. Также, сборка всего проекта вместе с использованием Makefile и CMake (для генерации .xcodeproject).
Использование final для повышения производительности в C++
Динамический полиморфизм (виртуальные функции) занимает центральное место в объектно-ориентированном программировании (ООП). При правильном использовании он способствует созданию входных точек в существующей кодовой базе, с помощью которых новый функционал и поведение могут (относительно) легко интегрироваться в уже проверенную, хорошо протестированную кодовую базу.
История разработчиков коммерческой системы видеосвязи Video Union, путь 2013 — 2022
В 2022 году существенно вырос спрос на отечественный софт, в первую очередь заменяющий зарубежные решения. Вопрос замены ПО до сих пор остро стоит во многих компаниях и государственных структурах, особенно после ухода из России зарубежных вендоров и организаций, предоставляющих удобные сервисы для коммуникации. В сегодняшнем интервью поговорим с Сергеем Выборновым @serg52 — одним из основателей системы видеоконференций Video Union и одним из совладельцев этого проекта. Video Union стал одним из вариантов на замену популярных в России сервисов Zoom и Microsoft Teams, постепенно прекращающих бизнес в РФ. Сергей расскажет историю сервиса, интересные и неочевидные моменты развития проекта и как на Video Union повлияла ситуация в мире.
Кастомный аллокатор для закрытого 3rd
Существует ряд ситуаций, когда это имеет смысл. От полного контроля памяти, до вынужденной необходимости. К примеру, одна из возможных ситуаций:
1. Мы используем alignment аллокаторы.
2. Мы перегружаем какой-то класс и данные от нашей 3rd зависимости.
3. 3rd зависимость не использует alignment аллокаторы.
Пишем мультиметоды из Lisp в С++
В статье разберёмся что такое мультидиспетчеризация и как её можно воссоздать на С++
Полиморфные структуры данных и производительность
Обзор существующих проблем, а также способов их решения и интересных контейнеров, позволяющих значительно увеличить удобство и производительность полиморфного кода.
Вклад авторов
-
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