Comments 7
А какие есть плюсы от написания бота на C++, кроме случая, когда программист не знает другие языки?
Объективно плюсов не так много за исключением явно проглядываемых двух)))
Ну а если серьёзно, я неоднократно видел что то для написания ботов плюсовики используют другие языки, и я их конечно не осуждаю это дело каждого, но если у тебя основной ЯП это C++ то зачем писать бота на Phyton если на родном C++ это так же просто сделать)
+ Если ты планируешь делать какие то вычисления на стороне сервера, у тебя ни куда не пропадает основная фишка плюсов - быстрая скорость выполнения, писав на том же Phyton этого ты не получишь, опять же - дело каждого, и кому как угодно, я лишь постарался показать в простом примере как это делается)
У меня два вопроса:
Почему Вы учите разработчиков ставить что ни попадя в систему, минуя пакетный менеждер ("git clone" откуда-то), да ещё использовать sudo под root ("выполнять под root правами" -> "sudo make install")?
Почему Вы учите разработчиков делать SQL injection: использование неэкранированного
message
при ручном формированииINSERT
-ов (конкатенации строк)?
Уже третий десяток XXI века как-никак, уж эти-то вещи вроде бы давно разобраны и признаны небезопасными и вредными…
1.Во первых, через пакетный менеджер вы не установите никак библиотеку TgBot, её там просто нету))) И клонирование средствами гита из официального репозитория библиотеки TgBot - нет ничего опасного или плохого, множество библиотек клонируются именно с гита, это и есть правильный подход, вы конечно можете не согласиться со мной - но это база как я считаю.
Без экранирования сделано что бы код более читаем и SQL запросы можно было наглядно увидеть, я лично начинал программировать без знания C++, думаю многие начинают именно так, на основе этого и выбрано решение использовать простую конкатенацию
Я знаю, что в пакетном менеждере нет библиотеки TgBot. Но она и не нужна как system-wide¹. Достаточно (получив исходники локально через git clone в пользовательской каталог с проектами) установить её, например, в
~/_libs/
, и путь к установленной туда библиотеке добавить к Вашей команде компиляции (g++ …
) с ещё одним ключом «-I
».Добавление экранирования никак не ухудшит читаемость (Вы же используете
std::to_string
!), а ещё лучшей читаемости (там как раз будет виден именно запрос!) и бо́льшей безопасности можно достичь через использование Prepared Statement² (который ненамного увеличит код).
думаю многие начинают именно так
Ну так Вы-то не начинающий, зачем поощряете вредные практики? Пусть начинающие видят, как правильно использовать SQL (и устанавливать/использовать сторонние библиотеки).
Иначе они посмотрят, как это несложно и будут использовать повсюду SQL через конкатенацию, хотя удобнее (и требуется ненамного больше кода, если) это делать, разделяя SQL-запрос и данные для него.
.
Пожалуйста, исправьте статью, чтобы те, кто заинтересуются C++, не привыкали бы писать код, состоящий из уязвимостей!
—
¹ Моё предыдущее сообщение — о том, что Вы приучаете ставить в систему что ни попадя (не конкретно про TgBot), выкачивая (без проверки) через git clone какой-то код (в общем случае). С учётом того, что install script — это имеено что произвольный скрипт (который обычно копирует собранные [или просто находящиеся в исходниках] файлы по опрелённому пути; никто не мешает делать что угодно — например, скачивать с произвольного сервера бинарник, его копировать и/или запускать). Делать это под root-ом — очень плохой совет.
² https://www.sqlite.org/c3ref/stmt.html
Я понимаю, что это сильно учебный материал, но зачем городить
# Clone TgBot from repository, build and installgit clone https://github.com/reo7sp/tgbot-cpp.git
cd tgbot-cpp
cmake .
Когда для проектов с CMake практически стандартом является FetchContent_Declare?
Телеграм бот на С++ сложно? Давайте развеем этот миф