Ваша корзина пуста.
Сказал как-то один французский дипломат...
Что же он такого мог сказать в 16 веке ? Разберемся в этой статье.
Читать далееПривет, Хабр!
Работа с матрицами в стандартном C++ — это боль, страдание и масса ненужного кода. Почему? Потому что стандартная библиотека STL вообще не предназначена для линейной алгебры. Например, если вы хотите умножить две матрицы, вам придётся писать кастомный алгоритм, отлаживать его, а затем ещё раз писать его, когда поймёте, что оптимизация не та.
Но есть библиотека Armadillo — и с ней всё иначе.
Читать далееЗа окном январь 2025 года, а это значит, пора подвести итоги за 2024 год! В этой статье вы узнаете, чем занималась команда PVS-Studio в прошлом году: новые плагины, интеграции, фичи и многое другое!
Читать далееВ данной статье затронем частичку компиляторной истории. И постараемся собрать проект под компилятор 1995 года. Вы спросите, но зачем? Я отвечу: Потому, что можем!
Loading, please waitНедавно мне пришлось разбираться с достаточно известным опен-сорсным проектом ЛибрОфис. Мне показали как его скомпилировать под windows и под (разные) Линукс и, к моему восхищению, и там и там он работает почти одинаково если в качестве движка визуализации используется QT. Давайте посмотрим в каком смысле это идеальный проект, а в каком почти негативный паттерн.
Не рекомендуется для чтения лицам испытывающим нежные чувства к ОпенСоурсным проектам, такой контент может шокировать ваши чувства.
Читать далееВы хотите идти в ногу со временем и перевести ваш проект на полиморфные аллокаторы? Вас не могут отговорить от этого даже затраты на виртуальные вызовы? Тогда вы просто обязаны знать о нюансах с лайфтаймом, и почему нельзя просто взять и поменять свои контейнеры на аналоги из пространства имён pmr.
Читать далее...Египет — мир величественных пирамид, бурных вод Нила и одной из самых теплых и ламповых 2D-стратегий из 1999 года! Здесь вы станете архитектором и правителем, строя города, заботясь о благополучии жителей и возводя памятники, достойные фараонов. А вы знали, что у Фараона была полноценная демка? Хотя это нормально для индустрии того периода, вот о различиях с retail версией и пойдет речь.
…но помните, что в 2025-м всё это великолепие может не завестись и потребует доработки напильником, для работы на современных системах. Самый надежный способ насладиться стареньким, но не потерявшим свою магию, ситибилдером без глюков — это установить виртуалку с WinXP, но и это не всегда работает. Виртуалка поможет избавиться от большинства проблем, к сожалению на всех ОС после XP игра работает все хуже и хуже.
Читать далееПроцесс запуска NRF24L01 в связке со STM32F1. Разработка ведется в Arduino IDE. В статье указан код и схемы подключения для того, чтобы можно было повторить проект самому.
Читать далееВ данной заметке я расскажу о своем опыте распараллеливания программы с использованием OpenMP, написанной одновременно и на С++, и на Fortran 90, причем вызов фортрановской части кода осуществляется параллельно в цикле из C++ части. Остановлюсь в основном на тех деталях и тонкостях, которые мне показались настоящими сюрпризами. Суть программы достаточно проста: есть некая цилиндрическая структура, которая модельно разбивается на аксиальные ячейки, каждая аксиальная ячейка с использованием методов математического моделирования обсчитывается независимо. Основная часть кода написана на C++, но вот то, что нужно рассчитать для каждой аксиальной ячейки, написано на Fortran 90, и надо сказать, что эта фортрановская часть достаточно внушительная. Код испокон веков обсчитывал последовательно каждую аксиальную ячейку, и в виду того, что фортрановская часть делает объемные вычисления, код считал долго. И тут была поставлена задача – распараллелить код, т.е. считать каждую аксиальную ячейку параллельно, дабы ускорить время расчета всей программы. Была принята следующая идея: выделение памяти под массивы и т.п., необходимые для фортрановских расчетов, оставить как и прежде, т.е. там же в фортране, удобно перегруппировав их в массив объектов структуры, описывающей аксиальную ячейку, и плюсом расширив данные, а вот вызов главной функции, делающей вычисления в фортрановской части, делать в цикле по аксиальным ячейкам параллельно в C++ части, т.е. примерно так...
Читать далееПриветствую, Хабравчане!
В данной статье я начну реализацию кроссплатформенной библиотеки LDL. Опишу её исходный код, архитектуру. Пока библиотека умеет только рисовать несколько примитивов, но я только в начале реализации. Если интересно заходите.
Loading, please waitПривет, Хабр! В этой статье я поделюсь своим опытом создания утилит в Unreal Engine, которые автоматизируют процесс генерации Actor Blueprint и Data Asset. Эти утилиты значительно упрощают работу дизайнерам уровней, помогая сократить время на рутинные задачи и минимизировать ошибки, а также могут быть полезны в широком спектре задач, связанных с разработкой.
Мы рассмотрим, как использовать Editor Utility Widgets на практике, чтобы упростить работу в редакторе. Основная часть будет выполнена в Blueprint, но для решения отдельных задач нам также понадобятся функции на C++. Помимо этого, я расскажу о важных аспектах работы с Asset Registry, фабриками ассетов и Subobject Data Subsystem.
Читать далееЯ хочу, чтобы вы задали себе один вопрос и честно на него ответили. Когда в последний раз вы получали настоящее удовольствие от программирования? Оглядываясь назад, я понимаю, что не испытывал подобных ощущений, наверное… уже лет десять. Удовольствия у меня не было ни от JavaScript, ни от Python, ни от Ruby или C — ни от чего. Когда я говорю «удовольствие» — я имею в виду ощущения человека, которого во время работы над неким проектом переполняет искренний восторг. Этот человек постоянно ловит себя на такой мысли: «Ох, ну какая ж круть. Поверить не могу, что моя безумная идея и правда сработала!».
Например, я писал маленькую игру-«рогалик». У меня была такая идея: «Готов поспорить, что у меня получиться воспользоваться этим вашим алгоритмом Дейкстры для соединения комнат при генерировании карты, сначала инвертируя карту, а потом его запуская. Вероятно, мне удастся прокопать отличнейшие туннели между комнатами». То было благословенное время, когда я пытался справиться с этой задачей, и при этом не чувствовал, что C++ мне мешает. Мне тогда удалось решить эту задачу, попутно многому научившись. Потом у меня появилась такая мысль: «Интересно, получится мне взять пользовательский интерфейс, сделанный на FTXUI, и просто напрямую его отрендерить в окно визуализации SFML?». Как и следовало ожидать, у меня всё отлично получилось. И хотя это было не так уж и сложно, я по ходу дела много узнал о том, как в C++ обрабатывается юникод. Ни одна из этих задач лёгкой не была, но все их, в принципе, можно было решить, и я не могу напридумывать себе достаточно много «подводных камней», которыми C++ мог бы помешать мне сделать то, что я хочу. Это — то, что я называю «удовольствием».
Читать далееСтатья в продолжение темы безопасной разработки на С++ с примером работающего кода. Кратко предыдущие тезисы:
Стремление С++ стать более "безопасным" языком программирования плохо сочетается с требования к стандарту языка. Ведь любой стандарт должен обеспечивать обратную совместимость со старым легаси кодом, что автоматически сводит на нет любые попытки внедрения какой либо новой лексики на уровне единого стандарта С++.
А раз текущее состояние С++ не может гарантировать безопасную разработку на уровне стандартов, то выходит, что:
Возможным выходом из данной ситуации является реализация такого синтаксиса безопасного С++, который бы позволил удовлетворить оба этих требования. Причем самый лучший вариант,
вообще не принимать какие либо новые стандарты С++ для изменения лексики, а попробовать использовать уже существующие принятые ранее.
Сейчас телеграм боты крайне популярны, казалось бы, если всё так просто и есть спрос, то наверняка уже сотни библиотек для удобного создания ботов?
Вкратце - нет, если вы захотите написать телеграм бота, то вы (были) вынуждены делать это на python. Библиотеки на...
Читать далееМиллионы пользователей ежедневно заходят на Яндекс Маркет. И одна из ключевых задач сервиса — показывать им точные сроки доставки на поиске и в корзине. При пиковых нагрузках это около 40 тысяч запросов в секунду. Как обеспечить столь быструю и точную обработку данных о доставке?
Привет, Хабр! Меня зовут Никита Деревянко. Я руковожу разработкой логистической платформы Яндекс Маркета. Люблю играть в шахматы, бильярд и программировать. Изучаю японский язык, чтобы тренировать мозг и смотреть аниме в оригинале. Расскажу о том, как построить логистический runtime на Go, не являясь Golang-разработчиком. Рассмотрим, как справиться с большим объёмом данных и какие преимущества может (или не может) предложить Golang для масштабной задачи.
Читать далееПроект автоматизации процесса поддержания давления в гидравлическом прессе.
Разработка позволяет производителям сыродавленного масла экономить до нескольких часов своего времени в день.
Читать далееВ разработке игр динамические и статические массивы являются основным инструментом при работе с набором объектов, буду дальше называть их vector. Вы можете подумать про разные map, set, и другие ускоряющие структуры, но их тоже предпочитают делать поверх векторов. Почему так? Вектора просты для понимания, удобны для большого числа задач, особенно там, где объём данных заранее неизвестен или примерно известен. Но как вы понимаете, за все надо платить, и расплачиваться приходится производительностью, которой, как обычно, всегда не хватает. Так что, использование динамических массивов имеет свои ограничения и особенности.
Читать далееOh, and the documentation: It's extensive but never tells me what I need to know.
Эта цитата взята из обсуждения CMake на Reddit, и она очень точно описывает большую часть моих проблем с CMake: когда я хочу что-то сделать, документация не помогает с этим вообще, - приходится искать решения в чужих проектах и статьях.
В этой статье будут разобраны проблемы, с которыми я столкнулся в процессе изучения Vulkan. Однако материал будет полезен и тем, кто настраивает любой другой проект.
Читать далееПрошло уже более года с момента моей публикации о программаторе для CH341A под Linux - IMSProg и у меня возникло желание избавиться от еще одной программы, не дающей навсегда забыть о существовании Windows. Мой прежний программатор SFP собран на чипе FT232RL и имел софт только под Windows.
Каждый SFP-модуль имеет с своем составе стандартную микросхему 24C04 или 24C02, что натолкнуло меня на мысль использования простейшего переходника для программатора CH341 с использованием четырех проводов - земли, питания, I2C сигналов SDA и SCL. После просмотра разработок различных фирм я добавил в переходник джамперы на сигналы питания для снятия защиты от записи медных модулей - J1, J2 и J3 (контакты SFP TxPWR, RxPWR и TxEN). В результате получилась такая схема:
Читать далееПростая система частиц на SFML C++
Приветствую всех, кто интересуется графикой и программированием! Сегодня мы погрузимся в увлекательный мир создания систем частиц с помощью библиотеки SFML на C++. Эта тема открывает широкие возможности для визуализации различных эффектов, от простых искр и дыма до сложных взрывов и магических заклинаний в играх и других приложениях.
Системы частиц — это мощный инструмент для генерации динамических визуальных эффектов. Они основаны на идее создания множества мелких объектов (частиц), каждый из которых обладает собственными параметрами, такими как положение, скорость, цвет, размер и время жизни. Управляя этими параметрами, можно добиться самых разнообразных результатов.
Создадим отдельный класс для управления системой частиц.
Назовём его ParticleSystem. Ниже реализация кода данного класса.
Читать далееПолный список здесь