Protobuf достаточно распространённый протокол сериализации структурированных данных, однако для многих не секрет, что запуск чего-либо на плюсах бывает сопряжено с испытаниями, если ты новичок. Поэтому, я решил написать небольшой туториал, который будет содержать максимально безболезненный путь всего необходимого для работы с Protobuf, а так же, предоставить необходимый минимум, который позволит понять как формируются посылки и как работать с самими сообщениями.
C++ *
Типизированный язык программирования
- Новые
- Лучшие
- Все
- ≥0
- ≥10
- ≥25
- ≥50
- ≥100
Новости
Новый язык обычного и параллельного программирования Planning C 2.0
Здравствуйте, уважаемые читатели.
Хочу написать здесь об одном из своих проектов -- языке Planning C (v2.0). Он является расширением C++, дополняющим базовый язык рядом новых конструкций. В настоящее время проект доступен в репозитории (исходный код прототипного транслятора-препроцессора, множество примеров, конвертер простых программ MPI->Planning C). От других языков Planning C отличается тем, что многие его новые конструкции построены на базе так называемых процедур с планированием повторного входа, которые в первую очередь удобны для программирования некоторых алгоритмов, использующих стек, дек или очередь (но могут использоваться и для программирования произвольных алгоритмов). Язык содержит различные средства алгоритмизации и распараллеливания, более-менее унифицированные и для обычных в наше время компьютеров с многоядерными процессорами, и для видеокарт, и для кластерных систем. Во второй версии языка были введены стандартные средства расширения языка новыми конструкциями, «интеллектуальная» мемоизация и еще некоторые возможности. Надеюсь, кому-нибудь данный язык покажется интересным, может быть даже перспективным для применения и/или развития. Сам я иногда им пользуюсь для быстрого написания некоторых расчетных параллельных программ.
В этой статье напишу лишь о самых базовых возможностях языка, преимущественно на примерах. Если тема вызовет интерес, то, возможно, впоследствии напишу еще одну-две статьи о «продвинутых»/необычных возможностях.
О шаблонах в С++, чуть сложнее
После недавней статьи о шаблонах С++ для начинающих осталось жгучее желание показать что-нибудь похожее, но на практическом примере, да так, чтобы и порог входа был не высоким, и чтобы скучно не было. А так как в голове крутится задача перевода чего бы то ни было в строку, то этим и предлагаю заняться под катом всем желающим потрогать компилятор за шаблоны.
Статическое константное дерево на шаблонах C++
Поиск можно считать одной из наиболее нужных и часто используемых операций при разработке программного обеспечения. На сегодняшний день известно большое количество алгоритмов и структур данных, обеспечивающих высокую скорость поиска. Пусть и в меньшей степени, но подобные задачи возникают и в сфере разработки ПО для встраиваемых систем, одной из главных особенностей которой является существенная ограниченность системных ресурсов.
В статье предлагается рассмотреть особенности реализации элементарной структуры данных и способы оптимизации в условиях малого объема доступной памяти.
Аллокаторы внутри
После прошлого поста про базовые концепции аллокаторов хотелось бы всё-таки посмотреть на что-то настоящее, из жизни и заодно доказать, что ни Андрей Александреску, ни я не врём, и что-то из рассказанного и правда используется в продакшене. Потому посмотрим на несколько популярных аллокаторов и попытаемся что-нибудь в них понять.
Опыт применения API SolidWorks для автоматизированного проектирования тары
Следует отметить, что задачами автоматизации проектирования тары занимался ряд ученых, разработчиков и организаций (см. например [1, 2, 3]). Однако не существует широко известных инструментов, предназначенных для решения узкоспециализированной задачи: проектирования ящиков типа VI по ГОСТ 5959-80 (см. рисунок выше) на основе API SolidWorks. Поэтому представляют интерес способы такого решения.
[sobjectizer] Синхронное общение с агентами в реальном проекте
Давненько мы ничего не писали про SObjectizer. Надо бы исправить это упущение, тем более, что представился достойный повод. Ну а чтобы было интереснее, в этот раз поговорим не об абстрактных фичах в вакууме, а о примерах использования вполне себе конкретной функциональности в коде реального проекта.
Рассказать о том, что именно это за проект мы не можем, т.к. это закрытая заказная разработка. Но о том, как SObjectizer применяется мы все-таки попробуем поговорить. Естественно, речь пойдет не обо всем, а об одном моменте, которые запомнился лично мне.
Просто о шаблонах C++
Статья для тех, кто боится слова template в C++. Вводная информация с примерами и их подробным разбором.
Дзен Nim
1. Копирование плохого дизайна — плохой дизайн.
2. Если компилятор не может рассуждать о коде, то и программист не может.
3. Не стой на пути у программиста.
4. Перенеси работу на этап компиляции: программы запускаются гораздо чаще, чем компилируются.
5. Настраиваемое управление памятью.
6. Лаконичный код не мешает читабельности, он ей способствует.
7. (Задействовать метапрограммирование, чтобы оставить язык компактным).
8. Оптимизация это специализация: если вам нужно больше скорости, пишите кастомный код.
9. Должен быть только один язык программирования для всего. Этот язык — Nim.
Собираем свой chromium/electron, с блекджеком и поэтессами
Добрый день. Меня зовут Тимур и я программист.
Сегодня я предлагаю посмотреть как можно подрихтовать исходники chromium-а, собрать свой вариант браузера и подтянуть это добро в electron. Эта статья — пробный шар, какая то часть ее позже перекочует в документацию проекта который, я надеюсь, смогу раскачать и сделать популярным, но об этом потом.
Если Вам хочется похейтить пользователей электрона в частности или джисеров в целом — проходите мимо. Электрон я сам не особо люблю и как раз пытаюсь сделать лучшую замену ему, что касается фронтовиков — я один из них, но про js в статье будет очень мало. Сорян.
Мультиплеер в Unreal Engine: Подключение и Хостинг
Привет Хабр!
В этой статье я хочу раскрыть механику создания онлайн сессии и подключения к ней. Все выполнено в с использованием Online Subsystem для возможного расширения вашей игры в контексте Steam, Origin, Play Station Store и т.д
Кросс-компиляция с Clang – это просто
Разберемся с кросс-компиляцией при помощи Clang на пальцах, попутно посмотрим на CMake, не оставим без внимания Conan, соберем самый настоящий .deb пакет и конечно же - максимально контейнеризируем и автоматизируем весь процесс. Посмотрим зачем нам тут Clang, и почему иногда не обойтись без него.
RustCon Russia 2021: как прошла конференция, и о чем там говорили
RustCon Russia 2021: как прошла конференция, и что на ней обсуждали
Собственный 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*, где в качестве языка выступит С++.
Отмечу то, что я не являюсь профессионалом в данной теме и моей целью является просто облегчить жизнь тем, кто, как и я, делает первые шаги в данном направлении.
Вклад авторов
-
Andrey2008 6455.9 -
tangro 2409.0 -
SvyatoslavMC 2388.0 -
antoshkka 1404.0 -
haqreu 1366.0 -
olegchir 968.2 -
khizmax 945.4 -
eao197 845.0 -
anastasiak2512 741.0 -
0xd34df00d 726.0