Comments 12
— Парень в бронированном костюме. А снять — кто ты без него?
-3д моделлер, фрилансер, с++ разработчик тг ботов.
С boost во время работы IDE а также компиляции - не может быть температура процессора 37)
UPD: а, там же GPU на картинке
Скрытый текст

Curl был бы более лаконичным решением, для простых http запросов уж точно.
Но раз Вы используете boost, то почему используется nlohmann/json.hpp
, а не boost JSON?
У меня тоже такое было... Вкорячил громоздкий буст в проект, позднее оказалось что все самое интересное из буста уже давно перекочевало в std, но раз уже вкорячил, надо как-то оправдать его наличие))
Создание Telegram-ботов обычно ассоциируется с Python
надо же, а мне в моей статье про библиотеку для тг ботов на С++ писали, что это всё ложь и можно использовать какую-то там обёртку на go и это очень популярно...
Кстати, вот сама библиотека, которая сильно бы упростила
создать Telegram-бота на C++, который взаимодействует с Telegram API для отправки и получения сообщений
Краткое кодревью.)
Исключения... Да ещё по (...). Просто море исключений. И до кучи ещё и error_code вместо них для отдельных вызовов
Весь проект - странная помесь плюсов и си. Где conan или vcpkg?
Целый asio для простых запросов к апи. Серьёзно? Есть Curl (раз уж автор так любит си), sockpp. nlohmann, когда есть reflect-cpp.
И как будто этого мало, вот вам ещё popen. Давайте, попробуйте на своей винде)
Витринные проекты так не пишут. Хотя если цель была в том, чтобы показать, как не надо, она достигнута.
У него не просто asio, у него boost beast, которому не нужен ни Curl, ни тем более sockpp, на котором вообще весь HTTPS протокол пришлось бы ему самому реализовывать. Так что человек вполне разумно взял готовый https(s) инструмент, причём не сишный, а плюсовый.
reflect-cpp - это здоровенный комбайн с кучей форматов (де)сериализации, тянущий для них кучу зависимостей, а автору был нужен только JSON, вот он и выбрал одну из самых простых в освоении реализацию nlohmann.
У него не просто asio, у него boost beast, которому не нужен ни Curl, ни тем более sockpp, на котором вообще весь HTTPS протокол пришлось бы ему самому реализовывать. Так что человек вполне разумно взял готовый https(s) инструмент, причём не сишный, а плюсовый.
Возвращаясь к разумности, логично было взять курл, раз уже на плюсах человек не любит писать. Неразумно брать целый буст для простых запросов (как вы это назвали ниже, "здоровенный комбайн"). Насчёт sockpp это конечно неудачный пример был, эта либа для другого предназначена, но вот в чём штука - "легковесные" либы для отправки простых http запросов тоже есть! Не надо палить из пушки по воробьям, особенно в витринном примере.
reflect-cpp - это здоровенный комбайн с кучей форматов (де)сериализации, тянущий для них кучу зависимостей
Иногда не помешало было не просто "искоса низко голову наклоня" по диагонали пробежать документацию, а немного вдумчиво её прочитать (ну раз уж вы спорите и полезли её читать). А там написано, что по умолчанию зависимостей нет. Да, внутри есть yyjson, но это не внешняя зависимость. Давайте глянем поближе на этот "здоровеннейший комбайн":
Rebuild started at 10:44...
1>------ Rebuild All started: Project: reflectcpp, Configuration: Release x64 ------
1>Building Custom Rule D:/proj/installer/build/_deps/rfl-src/CMakeLists.txt
1>reflectcpp.cpp
1>yyjson.c
1>Generating Code...
1>reflectcpp.vcxproj -> D:\proj\installer\build\lib\Release\reflectcpp.lib
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========
========== Rebuild completed at 10:44 and took 12,176 seconds ==========
140кб оверхеда со статическими зависимостями VC для указанного примера - считаете это чем-то запредельным?
а автору был нужен только JSON, вот он и выбрал одну из самых простых в освоении реализацию nlohmann.
Она самая распространённая (одна из), но при чём тут простота в освоении? И судя по описанию, reflect-cpp зашла бы идеально
Я конечно хз, наверное для кого-то сложно освоить простые структуры в cpp... Но по идее они уже должны быть освоены, если вы пишете на плюсах. А для reflect-cpp больше ничего и не надо знать, кроме 2 функций.
А раз уж человек взял пушку в виде буста, то почему не юзал её и для json? Зачем ещё одна сторонняя либа?
Ответ на поверхности
Создание Telegram-ботов обычно ассоциируется с Python , но C++ — это мощная альтернатива для тех, кто ценит производительность и контроль над ресурсами
Вообще, часто их пишут и на более производительных ЯПах, вроде go. Даже на расте писал лично. Но по своей сути, напомню, что в клиент-серверных приложениях >99.9% времени занимает обычно именно сетевое взаимодействие. Так что подобная оптимизация помогла бы где угодно, но только не в программах, где все упирается в IO-bound, тем более сетевой
Не агитирую писать их на чем-то конкретном, можно хоть на ASM, просто сам поинт едва ли имеет смысл в случае с тг-ботами
Создание бота для телеграмма на c++, используя библиотеку Boost