Pull to refresh

Comments 7

А какие есть плюсы от написания бота на C++, кроме случая, когда программист не знает другие языки?

Объективно плюсов не так много за исключением явно проглядываемых двух)))
Ну а если серьёзно, я неоднократно видел что то для написания ботов плюсовики используют другие языки, и я их конечно не осуждаю это дело каждого, но если у тебя основной ЯП это C++ то зачем писать бота на Phyton если на родном C++ это так же просто сделать)
+ Если ты планируешь делать какие то вычисления на стороне сервера, у тебя ни куда не пропадает основная фишка плюсов - быстрая скорость выполнения, писав на том же Phyton этого ты не получишь, опять же - дело каждого, и кому как угодно, я лишь постарался показать в простом примере как это делается)

У меня два вопроса:

  1. Почему Вы учите разработчиков ставить что ни попадя в систему, минуя пакетный менеждер ("git clone" откуда-то), да ещё использовать sudo под root ("выполнять под root правами" -> "sudo make install")?

  2. Почему Вы учите разработчиков делать SQL injection: использование неэкранированного message при ручном формировании INSERT-ов (конкатенации строк)?

Уже третий десяток XXI века как-никак, уж эти-то вещи вроде бы давно разобраны и признаны небезопасными и вредными…

1.Во первых, через пакетный менеджер вы не установите никак библиотеку TgBot, её там просто нету))) И клонирование средствами гита из официального репозитория библиотеки TgBot - нет ничего опасного или плохого, множество библиотек клонируются именно с гита, это и есть правильный подход, вы конечно можете не согласиться со мной - но это база как я считаю.

  1. Без экранирования сделано что бы код более читаем и SQL запросы можно было наглядно увидеть, я лично начинал программировать без знания C++, думаю многие начинают именно так, на основе этого и выбрано решение использовать простую конкатенацию

  1. Я знаю, что в пакетном менеждере нет библиотеки TgBot. Но она и не нужна как system-wide¹. Достаточно (получив исходники локально через git clone в пользовательской каталог с проектами) установить её, например, в ~/_libs/, и путь к установленной туда библиотеке добавить к Вашей команде компиляции (g++ …) с ещё одним ключом «-I».

  2. Добавление экранирования никак не ухудшит читаемость (Вы же используете 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?

Опять же для простоты, многие начинающие и не работают сразу с cmake, учту , спасибо!)

Sign up to leave a comment.

Articles