
C++ *
Типизированный язык программирования
Собственный zigbee2mqtt на C++ с бустом и исключениями

Домашняя автоматизация - вещь неоднозначная, каждый понимает под ней что-то свое: для кого-то это подключить обогреватель через wi-fi розетку, а кому-то подавай домашний сервер, километры кабеля, KNX и часы работы интеграторов. Если в городских квартирах система "умный дом" - не всегда благо, то для загородного дома или дачи необходимость ее наличия сильно возрастает: проконтролировать отопление, выключить свет или разогреть электропечку в любимой сауне перед приездом. При этом такая система должна быть простой, дешевой и уметь работать автономно: никто не хочет приехать в промёрзший из-за упавшего интернета дом. А что нужно сделать, если готовые решения полностью не устраивают, правильно - написать самому...
Рефлексия в C++Next на практике

Определение понятия "рефлексия" из Википедии:
In computer science, reflective programming or reflection is the ability of a process to examine, introspect, and modify its own structure and behavior.
В последние годы разрабатываются варианты ввода рефлексии в стандарт C++.
В этой статье мы напишем код на C++ с рефлексией для решения разных задач, скомпилируем и запустим его на форке компилятора с рабочей реализацией рефлексии.
HTTP менеджер запросов в Unreal Engine

Приветствую, Хабр!
В этой статье я разберу небольшую, но очень полезную тему HTTP запросов в UE. Все будет выполнено строго на C++.
Как я написал алгоритм сортировки, который быстрее std::sort. Продолжение

Прим. Wunder Fund: не спешите минусовать эту публикацию — её перевода на Хабре ещё не было :)
Это — продолжение моей предыдущей публикации (вот — первая, вторая и третья части перевода), посвящённой тому, как я создал алгоритм сортировки, который быстрее std::sort. Эта статья — мой шанс углубиться в те детали, о которых меня спрашивали в комментариях. Я собираюсь разъяснить здесь некоторые вещи, которые оказались непонятными аудитории, и поговорить о будущем моего алгоритма, о доработках, в которых он нуждается.
Кто-то, за что я этому неизвестному благодарен, разместил ссылки на мою статью на Hacker News и на Reddit. И хотя эти ссылки там разместил не я, я, всё же, прочитал большую часть комментариев, сделанных пользователями этих сайтов. По какой-то причине те комментарии, что были сделаны в моём блоге, оказались гораздо позитивнее, чем комментарии на Hacker News и Reddit. Но у меня такое ощущение, что причина появления негативных комментариев заключается, в целом, в неправильном понимании того, о чём я пишу. Здесь я собираюсь расставить все точки над «i».
Самые интересные блоги и сайты для C++ программистов

Наверняка у читателя есть свои любимые сайты и блоги, посвящённые программированию на языке С++. Сегодня ваша коллекция пополнится.
Зачем писать ботов ВК на C++?
Постараюсь поделиться своей библиотекой для работы API VK.
FFmpeg libav с нуля. Часть 1: знакомство и начало работы

Всем привет! Сегодня я хочу открыть серию статей по изучению FFmpeg libav с нуля.
Сразу уточню, что в основном статьи направлены на программирование, используя библиотеки libav*, где в качестве языка выступит С++.
Отмечу то, что я не являюсь профессионалом в данной теме и моей целью является просто облегчить жизнь тем, кто, как и я, делает первые шаги в данном направлении.
Коллекционирую вредные советы для С++ программистов

Я пишу статьи, посвященные написанию качественного кода и про поиск ошибок с помощью инструментов статического анализа. Однообразие наскучивает, хочется пошалить. А давайте все вместе напишем статью "100 вредных советов для С++ программиста". Я начну, а вы подхватите.
Как я написал алгоритм сортировки, который быстрее std::sort. Часть 3

Публикуем третью часть перевода материала о быстром алгоритме сортировки. Вот, на всякий случай, ссылки на первую и вторую части. В тех материалах мы говорили о теории сортировки, об особенностях работы нового алгоритма, разбирали тесты его производительности. Сегодня речь пойдёт о проблемах алгоритма, автор даст ответы на некоторые вопросы и поделится планами на будущее.
Прим. Wunder Fund: ну, вы наверное, и сами догадываетесь, как мы любим быстрые алгоритмы и оптимизации. Если вы тоже такое любите — вы знаете, что делать)
Нельзя копировать код с помощью memcpy, всё намного сложнее

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

Хочу предложить к обозрению небольшую коллекцию функций, для удобной работы со списком структур. Такие списки представляются как таблицы, к ним со временем у меня приработался своеобразный функционал.
Ближайшие события
Как я написал алгоритм сортировки, который быстрее std::sort. Часть 2

Прим. Wunder Fund: ну, вы наверное, и сами догадываетесь, как мы любим быстрые алгоритмы и оптимизации. Если вы тоже такое любите — вы знаете, что делать)
Публикуем вторую часть перевода материала об очень быстром алгоритме сортировки — «Ska Sort». В первой части говорилось о временной сложности алгоритмов и о том, какие улучшения базового алгоритма «Американский флаг» позволили автору «Ska Sort» повысить скорость сортировки. Сегодняшний материал посвящён рассказу о том, почему новый алгоритм быстрее других алгоритмов сортировки.
История одной фичи в Qt Multimedia

Несмотря на рекомендации мейнтейнеров, этот модуль каждый раз возраждается в Qt Essentials Modules.
Некоторые требовали закопать и не откапывать, чтобы в мире было меньше страданий.
Другие всегда с надеждой смотрели на новые релизы в ожидании долгожданных фиксов, говоря, что надо просто знать тонкости настройки, тогда не больно.
Модуль, который хейтили много поколений разработчиков.
Проверяем код дельфина Flipper Zero на чистоту с помощью PVS-Studio

Flipper Zero — швейцарский нож для гиков и пентестеров с открытым исходным кодом. Так получилось, что пути этого проекта и анализатора PVS-Studio пересеклись. Философский вопрос: начинать ли проверять проект, зная, что авторы проекта уже исправляют ошибки? Попробуем.
Что там у ReactOS?

16 декабря сего года, команда разработчиков ReactOS, спустя долгое время после последнего релиза (с последнего прошло почти полтора года) выпустила новую версию под номером 0.4.14. Это все еще альфа-версия.
В данной статье мы рассмотрим основные новшества как со стороны разработчиков, так и со стороны сообщества.
C++ Builder. Есть ли жизнь после смерти? Мнение одного динозавра

В этой статье я опишу собственные впечатления о последних версиях среды разработки RADStudio от Embarcadero и, возможно, постараюсь помочь кому-то в ответе на вопрос: «А оно мне надо?».
Сразу оговорюсь. Все описанное в этой статье является моим личным мнением и любые сравнения и характеристики, являющиеся плюсами или минусами, являются таковыми только для меня и моего способа использования инструментом. Если для Вас какие-то из указанных достоинств или недостатков так же являются таковыми – очень хорошо, но если это не так, то не стоит впадать в берсерк и начинать крестовую войну. Тут никто не воюет.
Девиации и разветвление личности: как лечить?
В этой статье мне хотелось бы поговорить о двух аспектах программирования, которые лично у меня всегда вызывают много вопросов, а рекомендации от мэтров не дают исчерпывающих ответов.
Здесь я попытаюсь изложить некую стратегию-рекомендацию, которую я вывел для себя на данном этапе, и применимую для различных языков программирования общего назначения. Тем не менее, для пущей наглядности, будут примеры на конкретных ЯП.
Итак, я хотел бы поговорить о разумной обработке ошибок и безопасном многопоточном кодировании.
Как я написал алгоритм сортировки, который быстрее std::sort. Часть 1

Прим. Wunder Fund: ну, вы наверное, и сами догадываетесь, как мы любим быстрые алгоритмы и оптимизации. Если вы тоже такое любите — вы знаете, что делать)
В наши дни сказать, что изобрёл алгоритм сортировки, который на 30% быстрее того, что считают эталонным, это значит — сделать довольно смелое заявление. Я, к сожалению, вынужден сделать ещё более смелое заявление. Дело в том, что я создал алгоритм сортировки, который, для многих вариантов входных данных, вдвое быстрее std::sort. И, за исключением сортировки специально созданных входных последовательностей, на которых алгоритм упирается в свой худший случай, он всегда быстрее std::sort. (А когда появляются данные, приводящие к худшему случаю алгоритма, я эту ситуацию детектирую и автоматически перехожу на std::sort).
Почему я сказал: «…к сожалению, вынужден…»? Вероятно из-за того, что мне, скорее всего, предстоит нелёгкое дело убеждения читателя в том, что я действительно увеличил скорость сортировки в два раза. Поэтому материал, который я начинаю писать, вполне может получиться достаточно длинным. Но весь мой код открыт — это значит, что вы можете попробовать мои наработки на данных, характерных для вашей сферы деятельности. Поэтому я могу убедить вас в достоинствах моего алгоритма с помощью массы аргументов и результатов измерений. А ещё вы можете просто попробовать алгоритм самостоятельно.
Учитывая то, о чём я писал в моём прошлом материале, это, конечно, вариант поразрядной сортировки (radix sort). То есть — его временная сложность ниже, чем O(n log n). Вот два основных направления, по которым я усовершенствовал базовый алгоритм:
