Как стать автором
Обновить

Комментарии 4

Извини, пожалуйста, но считаю, что педагогическая ценность этой статьи близка к нулю, не говоря о том, что не покидает ощущение, что статья сгенерена какой-то ллмкой.

Если раскрыть тезис о педагогической бесполезности, то я бы выделил 2 момента:

  1. Использование сторонней либы. Почитать доку не сильно сложно. Намного полезнее с точки зрения обучения заюзать хотя бы стд либу, написать больше кода, но объяснить процессы.

  2. Отсутствие глубины теоритической, да и практической, если честно. Просто переписать код с комментами... опытному чуваку и так всё понятно, а новичок вряд ли вынесет что-то осознанное.

В общем, вот. Сорян, если что. И прям вот как будто чатгпт написал...

Все верно, без какой-то теории статья просто кусок кода, коих и на гитхабе полно. Ну и c чатжпт в точку. А вот интересные вопросы хотелось бы затронуть.

1) Файловый сервер который одновременно может обсуживать только одного клиента? Подняв планочку до C++20 можно было бы минимальными телодвижениями улучшить это
2) А что если придет relative url? Клиент сможет выбраться за пределы root path
3) Для отправки файла не обязательно костылить цикл с буфером. boost.beast из коробки проворачивает нечто похожее для отправки файлов (см. http::file_body)



Если вы включаете -std=c++17, то можно использовать std::filesystem вместо boost::filesystem.
Ещё, у вас сервер синхронный, т.е. если какие-то дисковые операции выполняются медленно, или застревают, то остальные клиенты просто ждут, и диск у вас получается "узким местом". Например, у вас файловая система по NFS.

boost::program_options для человеческого разбора командной строки.

Весь код из статьи выглядит как туториал из буста. Остальное уже написали :)

В чём же заключается «обучение»?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории