The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Реализация FastCGI на современном C++

17.05.2019 11:08

Доступна новая реализация протокола FastCGI, написанная на современном C++17. Библиотека примечательна простотой в использовании и высокой производительностью. Возможно подключение как в виде статически и динамически связанной библиотеки, так и через встраивание в приложение в форме заголовочного файла. Кроме Unix-подобных систем обеспечена поддержка использования в Windows. Код поставляется под свободной лицензией zlib.

  1. Главная ссылка к новости (https://github.com/dmitigr/fcg...)
  2. OpenNews: Релиз nginx 1.16.0
  3. OpenNews: Доступен Cutelyst 1.0.0, фреймворк для разработки web-приложений на C++ и Qt
  4. OpenNews: Уязвимость, позволяющая совершить MITM-атаку через манипуляцию с HTTP-заголовком Proxy
  5. OpenNews: Обновление PHP 5.5.12 с устранением уязвимости в PHP-FPM
Автор новости: dmitigr
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/50699-fastcgi
Ключевые слова: fastcgi
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (181) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 12:58, 17/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    а чо, текущая реализация непростая и медленная?
     
     
  • 2.3, A.Stahl (ok), 13:00, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +13 +/
    В тексте новости нет сравнения сложности и производительности, есть лишь утверждение что библиотека проста и производительна, поэтому твой вопрос не логичен.
     
     
  • 3.38, test_test (?), 15:40, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Как и сами утверждения в новости, не?
     
     
  • 4.58, Sw00p aka Jerom (?), 17:11, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    и бенчмарков примитивных не вижу
     
  • 2.5, Аноним (5), 13:07, 17/05/2019 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     
     
  • 3.6, Попугай Кеша (?), 13:13, 17/05/2019 Скрыто ботом-модератором     [к модератору]
  • +5 +/
     
     
  • 4.21, Аноним (21), 14:03, 17/05/2019 Скрыто ботом-модератором     [к модератору]
  • –6 +/
     
     
  • 5.33, омномномним (?), 15:10, 17/05/2019 Скрыто ботом-модератором     [к модератору]
  • +6 +/
     
     
  • 6.39, Аноним (39), 15:47, 17/05/2019 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
     
  • 7.49, Аноним (49), 16:37, 17/05/2019 Скрыто ботом-модератором     [к модератору]
  • –2 +/
     
     
  • 8.84, asdasd (?), 18:16, 17/05/2019 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
  • 2.15, Andrey Mitrofanov (?), 13:51, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > а чо, текущая реализация непростая и медленная?

    Конечно.  Модулем ядра и на ассемблере - всяко быстрее.

    И руками смержить с дырвером сетевой.

    Точно быстрее.  Без шуток.  Было в Новостях Опеннета.

     
     
  • 3.97, Аноним (97), 19:24, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    А если на FPGA реализовать всю логику сайта + http + tcp/ip?
     
  • 2.36, петькаваська (?), 15:31, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +4 +/
    О какой "текущей реализации" речь? Если об официальной сишной библиотеке, то она уже давно как не поддерживается. Даже сайт fastcgi.com уже давно не доступен. Так что эта либа вполне себе свежак!
     

  • 1.2, Аноннн (?), 12:58, 17/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –15 +/
    fastcgi в 2к19 легаси

    даже бусты уже в http умеют

     
     
  • 2.4, Аноним (4), 13:03, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    ну и пользуйте комбайны. а кому-то юникс-вей по душе.
     
     
  • 3.128, anonnn (?), 02:45, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • –3 +/
    какой-то ненужный у вас юниксвей
    хттп сейчас более востребован
     
  • 2.7, kai3341 (ok), 13:20, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +7 +/
    > fastcgi в 2к19 легаси
    > даже бусты уже в http умеют

    Как закончишь делать уроки, разберись в этой статье: https://ru.wikipedia.org/wiki/FastCGI
    И впредь не торопись хоронить nginx unit

     
     
  • 3.129, anonnn (?), 02:48, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    1. к чему эта статья тут?
    2. причем тут nginx unit?
    мне не ясно как вы связали nginx unit (работающий по хттп) и fastcgi
     
  • 2.9, Аноним (9), 13:23, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • –7 +/
    Видимо кому-то все еще нужно поддерживать древнее барахло, а начав установку, оно потянуло в зависимостях еще более древнее барахло. Вот и написал сервер на скорую руку без каких-либо зависимостей.
     
     
  • 3.141, Anonim (??), 11:13, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Видимо кому-то все еще нужно поддерживать древнее барахло,
    >написанная на современном C++17

    ???

     
  • 2.37, петькаваська (?), 15:34, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Бусты в HTTP. Лол. Вы когда-нибудь пробовали Boost.Beast? Ну и как оно? Всё просто, не правда ли?
     
     
  • 3.147, Аноним (147), 13:43, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • +4 +/
    «Всё просто» — это в любом случае не про кресты.
     
  • 2.41, Аноним (39), 15:50, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    fastcgi в 2190?
     
     
  • 3.42, петькаваська (?), 15:53, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Почему бы и нет?
     
     
  • 4.50, Аноним (50), 16:38, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В 2190 Ом? O.o
     
     
  • 5.51, Аноним (51), 16:39, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Ну а чо?
     
     
  • 6.59, Sw00p aka Jerom (?), 17:13, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    grpc не?
     
  • 5.79, Аноним (39), 18:06, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • –4 +/
    > В 2190 Ом? O.o

    Все вопросы к начавшему ветку, 2к19 это 2190.

     
     
  • 6.188, runoverheads (ok), 00:03, 20/05/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    200019
     
  • 5.196, Георг (?), 18:52, 20/05/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ближайший будет красный-коричневый-серый-коричневый-зелёный.
     
  • 2.53, Anonymoustus (ok), 16:45, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +10 +/
    > 2к19

    Чтоб тебе доктор рецепты и справки на такие даты выписывал, а бухгалтерия — зарплатную ведомость.

     

  • 1.8, Аноним (8), 13:22, 17/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > через встраивание в приложение в форме заголовочного файла

    Некорректная формулировка.

     
  • 1.10, Аноним (10), 13:23, 17/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Мдя, 2019 год, свежий стандарт плюсов, а поделка уровня студента: зависимость от какой-то левой библиотеки, простыня инструкций по сборке,  кода helloworld на целый экран (про MT вообще молчу, руками потоки надо делать)...

    Для сравнения, код 4-х летней давности на ржавчине (не для сравнения языков!! на плюсах можно сделать не хуже), просто удобство, краткость, лаконичность:
    https://docs.rs/fastcgi/1.0.0/fastcgi/

     
     
  • 2.13, Rustanalz (?), 13:38, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Уродский синтаксис у раста...
     
  • 2.120, RibiKukan (ok), 23:15, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Поделка действительно уровня студента и никакого "свежего стандарта" там нет и близко. Но ты ссылаешься на такую студ-поделку.

    >https://docs.rs/fastcgi/1.0.0/fastcgi/

    Что конкретно тут лаконично? Кроме отсутствия убогих потоков. Хотя нет, макрос говна хуже убогих потоков.

     
     
  • 3.125, Ananimususus (?), 00:36, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    А есть чего нормального на плюсах для FastCGI?
     
     
  • 4.126, RibiKukan (ok), 01:14, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > А есть чего нормального на плюсах для FastCGI?

    Может и есть, но я таким убожеством не пользуюсь - не знаю. Я ни разу не работал с подобным(FastCGI) бесполезным легаси-говном.

     
     
  • 5.127, Ananisimus (?), 02:29, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    А с чем работаешь?
     
     
  • 6.131, _ (??), 03:46, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Он членами деревянными на базаре торгует! (С) :-)
     
     
  • 7.142, Anonim (??), 11:16, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Деревянные -суровое легаси! Им резиновые пришли на смену, ещё в прошлом веке!
     
  • 6.133, RibiKukan (ok), 04:48, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    В каком плане? Насколько я понимаю fcgi это такой плебейский ipc. Мало практикую подобное. Так же вроде оно сетевое. Сетевых библиотек множество. На этом уровне работаю в с двумя вещами. uWebSockets - для плебейской коммуникации(оно может в хттп(почти не используется)/ws(используется всегда)). Для внутренней коммуникации - самопал.
     
     
  • 7.134, Anaranizimuzus (?), 04:54, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >Насколько я понимаю fcgi это такой плебейский ipc.

    Ага.

    >uWebSockets
    >оно может в хттп(почти не используется)/ws(используется всегда)

    То что нужно, спасибо.

     
  • 7.189, Аноним (189), 01:03, 20/05/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >В каком плане? Насколько я понимаю fcgi это такой плебейский ipc

    Понимание уровня "не читал, но осуждаю"

     
     
  • 8.192, RibiKukan (ok), 04:15, 20/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    С чего вдруг, клоун Я тут не обсуждаю fcgi, а обсуждаю говнокод Что там автор ... текст свёрнут, показать
     
     
  • 9.193, superkullhacker1997 (?), 09:59, 20/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    и как тебе не надоело напрасно ты тратить свое время многие годы ты пыт... текст свёрнут, показать
     
  • 9.194, Аноним (194), 11:56, 20/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    О Неужели Царь-Батюшка вернулся и опять несет фекалии в массы ... текст свёрнут, показать
     

  • 1.11, X4asd (ok), 13:30, 17/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    не могу понять -- а где тут выход из цикла?




          while (true) {
            const auto conn = server->accept();
            conn->out() << "Content-Type: text/plain" << crlfcrlf;
            conn->out() << "Hello from dmitigr::fcgi!" << crlf;
            conn->close(); // Optional.
          }



     
     
  • 2.17, СеменСеменыч777 (?), 13:52, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > а где тут выход из цикла?

    выбирайте:
    1) выхода нет, эта музыка будет вечной;
    2) выход по SIGINT/SIGKILL

     
     
  • 3.30, X4asd (ok), 14:34, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    как тогда понимать --




        for (auto& t : threads)
          t.join();

        server->close(); // Optional.


    в какой момент код доходит до "server->close();" ?

     
     
  • 4.31, Andrey Mitrofanov (?), 14:47, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > как тогда понимать --

    Брысь учить C++$((N++)).

     
  • 4.187, KonstantinB (ok), 19:00, 19/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    В тот момент, в какой вы этот код напишете.

    Подставьте вместо true свое условие, соответствующее архитектуре вашего сервера. Это, блин, миниальный пример использования из readme, а не production ready решение.

    Production ready решение - это, знаете ли, такая штука, которая пишется самостоятельно, а не копипастится с README.md и StackOverflow.

     
  • 2.18, Andrey Mitrofanov (?), 13:53, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > не могу понять -- а где тут выход из цикла?
    >code]
    >       while (true) {

    Та, вот же ОН! --->>>  ^C

    Как маленький прям.

     
     
  • 3.34, Аноним (34), 15:12, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    SIGTERM не остановит эту программу, SIGKILL нужен.
     
     
  • 4.65, X4asd (ok), 17:29, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > SIGKILL нужен.

    ну а ещё  можно зайти в gdb, зааттачить и оттуда




    call close(номер)


    очень удобно (sarcasm)

     
  • 4.71, ноунейм (?), 17:37, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > SIGTERM не остановит эту программу, SIGKILL нужен.

    Во-первых, ^C — это SIGINT. Во-вторых почему не остановит? Там где-то обработчики переопределяются?

     
  • 2.61, Sw00p aka Jerom (?), 17:18, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    это же обработка соединения со стороны сервера, без цикла не принял бы другое соединение.

     
     
  • 3.64, X4asd (ok), 17:28, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > без цикла не принял бы другое соединение.

    без бесконечного цикла который никогда не прерывается? :-)

     
     
  • 4.75, Sw00p aka Jerom (?), 18:02, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > без бесконечного цикла который никогда не прерывается? :-)

    А вы заранее знаете сколько соединений вы обработаете? На то и серверное сетевое приложение, которое работает фактически вечно для обслуживания запросов. У вас какая-то другая точка зрения как это реализовать? А выход из цикла - равносилен либо аварийному выходу (try catch), либо по сигналу.


     
     
  • 5.115, Ordu (ok), 22:10, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Нет Реальное серверное приложение имеет документированные возможности, позволяю... большой текст свёрнут, показать
     
     
  • 6.122, Sw00p aka Jerom (?), 00:02, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    while true - всегда можно остановить while true - это вечный цикл , и если... большой текст свёрнут, показать
     
     
  • 7.130, Ordu (ok), 02:57, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    При чём здесь man accept Мне казалось очевидно, что речь идёт о том самом serve... большой текст свёрнут, показать
     
     
  • 8.154, Sw00p aka Jerom (?), 16:58, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    А притом, что это системный вызов, и без разницы какие тами уровни абстракции по... большой текст свёрнут, показать
     
     
  • 9.175, Ordu (ok), 23:03, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нет, не без разницы server- accept, вероятно, проводит не только accept на соке... большой текст свёрнут, показать
     
     
  • 10.176, Sw00p aka Jerom (?), 02:40, 19/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    все порождаемые accept классы ошибок - описаны, не определенных ошибок нет Лу... большой текст свёрнут, показать
     
     
  • 11.177, Ordu (ok), 03:58, 19/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    ДА ЛАДНО НЕ МОЖЕТ БЫТЬ Знаешь, мне надоело объяснять Думай сам Если тебе хоч... текст свёрнут, показать
     
  • 4.83, Sw00p aka Jerom (?), 18:14, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    с пруфами лучше, вот ссылка на fastcgi в пхп https github com php php-src blob... большой текст свёрнут, показать
     
  • 4.85, Sw00p aka Jerom (?), 18:17, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    https://github.com/dmitigr/fcgi/blob/master/lib/dmitigr/fcgi/listener.cpp

    Строка 153, и смотрим при каких условиях прервется ваш цикл.

     

  • 1.14, Аноним (14), 13:47, 17/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    Что-то я не понимаю. Почему какая-то поделка ноунейма выкладывается на opennet? Проплачено или что?
     
     
  • 2.20, Andrey Mitrofanov (?), 13:55, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Что-то я не понимаю. Почему какая-то поделка ноунейма выкладывается на opennet? Проплачено
    > или что?

    Конечно.

    "Оригинальные новостные статьи"(тм)  оплачены щедрыми донорами.

    Сбор донатов на опеннете -- видел, да?

     
     
  • 3.23, Аноним (8), 14:07, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Так вон они, ниже в конце страницы :)
     
     
  • 4.24, Andrey Mitrofanov (?), 14:12, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    #>>Сбор донатов на опеннете -- видел, да?
    > Так вон они, ниже в конце страницы :)

    Эти - не те.  Не видел, значит.  Окэ.

     
  • 2.56, Аноним (49), 17:00, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >Почему какая-то поделка ноунейма выкладывается на opennet?

    Потому, что open source?

     
  • 2.116, segesg (?), 22:42, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    аффтар сам и выкладывает, пиарится
    точнее - позорится
     

  • 1.16, Аноним (16), 13:52, 17/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Автор, начни с чтения вот этого https://stackoverflow.com/questions/213907/c-stdendl-vs-n что ли (это я мягко так намекаю про "нужность" дефайнов с crlf).
    Да и вообще код действительно выглядит как поделка, а использование С++17 в описании - лишь как маркетинговая уловка.
     
     
  • 2.25, пох (?), 14:15, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • –3 +/
    просто обезьяныш не умеет не обмазываться свеженьким, и c++17 в описании означает не какие-то там достоинства кода, а просто то, что ничем кроме пре-альфа-версии gcc99 это не собирается.

     
  • 2.40, петькаваська (?), 15:48, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Автор, начни с чтения вот этого https://stackoverflow.com/questions/213907/c-stdendl-vs-n
    > что ли (это я мягко так намекаю про "нужность" дефайнов с
    > crlf).
    > Да и вообще код действительно выглядит как поделка, а использование С++17 в
    > описании - лишь как маркетинговая уловка.

    Этими дефайнами автор хочет, вероятно, привести код в соответствии протоколу HTTP, в котором перевод строки строго определён как "\r\n". Так что мат. часть, вероятно, надо учить как раз Вам.

     
     
  • 3.60, Аноним (49), 17:14, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Что подвигло Тима Бернерса-Ли выбрать для перевода строки \r\n, он же ползовался NIX-like ОС?
     
     
  • 4.67, Ordu (ok), 17:30, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Я могу предположить. Использование "\r\n" в качестве разделителя строк протокола позволяет в одну строку протокола впихнуть многострочный файл со "\n" в качестве разделителя строк. Но это лишь предположение, реально я не знаю как дело было, просто ты задал вопрос, я задумался над этим, и мне пришёл в голову такой вот возможный ответ.
     
  • 4.70, Аноним (50), 17:34, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Что подвигло Тима Бернерса-Ли выбрать для перевода строки \r\n, он же ползовался NIX-like ОС?

    А он и не выбирал. Он просто передрал RFC822.

     
     
  • 5.77, Аноним (50), 18:04, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ну то есть не передрал, а сослался, конечно.
    https://tools.ietf.org/html/rfc2068#section-4.1
     
  • 3.88, dmitigr (ok), 18:26, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Совершенно верно. operator<< - это оператор форматированного вывода. Вызов ostream << "\n" записывает в поток "\r\n" в Windows и "\n" в Unix. Протокол HTTP предписывает использование "\r\n" в качестве разделительной последовательности.
     
  • 3.113, Аноним (16), 21:52, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > автор хочет, вероятно, привести код в соответствии протоколу HTTP, в котором перевод строки строго определён как "\r\n". Так что мат. часть, вероятно, надо учить как раз Вам.

    Матчасть учить нужно тому, кто не знает про существование std::ios_base::openmode binary, когда ему нужно выводить данные в поток без преобразования символов под конкретную ОС.

     
  • 2.63, Ordu (ok), 17:27, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > начни с чтения вот этого https://stackoverflow.com/questions/213907/c-stdendl-vs-n

    И что он там должен увидеть? Может быть это:

    > There's another function call implied in there if you're going to use std::endl
    > a) std::cout << "Hello\n";
    > b) std::cout << "Hello" << std::endl;
    > a) calls operator << once.
    > b) calls operator << twice.

    ?

    endl -- это принудительный flush и зависимость перевода строки от платформы под которую собирался код. Зачем это нужно? Сетевые протоколы чётко фиксируют, что используется для терминации строки, и если там написано "\r\n", то тебе даже в unix'е придётся использовать "\r\n".

     
     
  • 3.68, udro (?), 17:33, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > зависимость перевода строки от платформы

    нет.

     
     
  • 4.73, Ordu (ok), 17:45, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    В смысле? Он не выводит "\r\n" в венде? А зачем тогда он нужен такой? Ну вот вообще зачем было заморачиваться добавлять в библиотеку endl, если "\n" нагляднее?
     
     
  • 5.74, udro (?), 18:00, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    В одном клике от твоей ссылки: https://en.cppreference.com/w/cpp/io/manip/endl
    > Inserts a newline character into the output sequence os and flushes it as if by calling os.put(os.widen('\n')) followed by os.flush().
     
     
  • 6.93, Ordu (ok), 19:14, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Что такое os widen Что он там расширяет Не расширяет ли он заодно n до r n... большой текст свёрнут, показать
     
     
  • 7.143, udro (?), 11:24, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Что такое os.widen? Что он там расширяет? Не расширяет ли он заодно '\n' до \r\n, когда нужно?

    Он — нет. Он только кодировки преобразует, если надо (в UTF-16LE, например, мало ли). А возврат каретки и без него добавляется в ostream. Я хз, чё они курили, но просто вывести \n на винде ещё постараться надо.

     
  • 2.76, dmitigr (ok), 18:04, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Автор, начни с чтения вот этого https://stackoverflow.com/questions/213907/c-stdendl-vs-n что ли

    Здесь автор. Мне не нужно это читать.

    > (это я мягко так намекаю про "нужность" дефайнов с crlf).

    Эти дефайны обеспечивают кроссплатформенность кода.

    > Да и вообще код действительно выглядит как поделка, а использование С++17 в описании - лишь как маркетинговая уловка.

    Это именно поделка, которой я любезно поделился с сообществом. Кому не нравится, тот просто обходит стороной.

     
     
  • 3.98, Sw00p aka Jerom (?), 19:35, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    О круть, сам автор тут)

    Хотелось бы одно замечание сделать

    "namespace dmitigr"

    простите, но что за "неймдроппинг" такой? как то не серьезно.

     
     
  • 4.107, dmitigr (ok), 20:42, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Спасибо за комментарий. Странные у Вас вопросы. Резервирование пространства имён для проектов одного автора или компании - обычная практика. Я зарезервировал пространство имён dmitigr для своих проектов. А, например, Niels Lohmann, выбрал пространство имён nlohmann для своих проектов, например namespace nlohmann::json.
     

  • 1.19, mumu (ok), 13:55, 17/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Указатели все разыменовали? За границы буферов не повыходили? Или как обычно?
     
     
  • 2.26, Andrey Mitrofanov (?), 14:15, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Указатели все разыменовали? За границы буферов не повыходили? Или как обычно?

    Надо больше замыканий, монадов, строгой типизации и W^X на опенне ^W Microsoft Github-е!

     
     
  • 3.200, Аноним (49), 11:16, 23/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Замыканий лучше коротких.
     
     
  • 4.201, Andrey Mitrofanov (?), 11:24, 23/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Замыканий лучше коротких.

    Вот про размер не надо.

    Разыменовыватели буферов и разграничители указаетелей обидятся же.

     
  • 2.78, dmitigr (ok), 18:05, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не стоит беспокоится. Все разыменовали и за границы не повыходили. Будут проблемы - обращайтесь. Как обычно.
     
  • 2.110, Аноним (110), 21:20, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Используем стд:стринг, автоуказатели и горя не знаем.
    А ты как перебиваешься, мир небось замирает, как в матрице у Нео. У него тоже ГЦ неоптимизированный был
     

  • 1.22, тоже Аноним (ok), 14:07, 17/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Я таки ничего не знаю за автора этого кода, но на своем персональном сайте он называет себя исключительно "мы". Несколько настораживает...
     
     
  • 2.28, Andrey Mitrofanov (?), 14:19, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Я таки ничего не знаю за автора этого кода, но на своем
    > персональном сайте он называет себя исключительно "мы". Несколько настораживает...

    Может, его кот по клавиатуре прогуливался.  Мы B-P ж не знаем.

     
  • 2.66, Аноним (50), 17:29, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Предлагаю скинуться и выслать ему пачку декариса.
     

  • 1.27, Аноним (27), 14:18, 17/05/2019 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • –3 +/
     
  • 1.29, fgi (?), 14:30, 17/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    неюзабельно
    уровня студента
    давайте побольше ваших сладких булочек
     
     
  • 2.43, мимопроходил (?), 16:05, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    В каком месте там неюзабельно и в каком месте уровень студента. А то это уже не первый комментарий подобный.
     

  • 1.35, Ilya Indigo (ok), 15:30, 17/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Это будет иметь отношение к mod_fcgid для Apache?
     
     
  • 2.80, dmitigr (ok), 18:07, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Нет. Никакого отношения к mod_fcgid обсуждаемая библиотека не имеет. Вы можете использовать mod_proxy_fcgi для проксирования HTTP-запросов приложению на базе dmitigr_fcgi.
     

  • 1.44, НяшМяш (ok), 16:07, 17/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Вот взъелись вы на дядьку. А он может работу ищет. Сейчас на каждом собеседовании второй вопрос это "есть ли у вас открытые проекты на гитхабе". Поэтому надо выложить хоть что-нибудь, чтобы иметь какой-то вес на собесе.
     
     
  • 2.47, Аноним (51), 16:19, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Это классика. 5 стадий принятия неизбежного: отрицание, гнев, торг, депрессия, принятие. Сейчас где-то фаза 1 или 2. Потом полегчает :-)
     
  • 2.81, dmitigr (ok), 18:08, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо за беспокойство! Работу я не ищу.
     

  • 1.45, Аноним (39), 16:10, 17/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > DMITIGR_ASSERT((content_len <= max_content_length) && (padding_len <= max_padding_length));

    Определение макроса в предлагаемой библиотеке отсутствует. Находится оно в другом месте. Вот такое:

    [CODE]
    #define DMITIGR_ASSERT__(a, t) {                                        \
        if (!(a)) {                                                         \
          DMITIGR_DOUT__("assertion (%s) failed\n", #a)                     \
          if constexpr (t)                                                  \
            throw std::logic_error{"assertion (" #a ") failed at " __FILE__ ":" DMITIGR_XSTRINGIZED(__LINE__)}; \
        }                                                                   \
    }
    [/CODE]
    Кто-то может объяснить смысл?

     
     
  • 2.46, Аноним (51), 16:13, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Может быть какая-то либа-зависимость не установлена?
     
     
  • 3.72, Аноним (39), 17:43, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Может быть какая-то либа-зависимость не установлена?

    Если я нашёл определение, значит нашёл и либу (того же автора).

    Вопрос по сементике самого макроса.

     
     
  • 4.82, dmitigr (ok), 18:09, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Вопрос по сементике самого макроса.

    Что конкретно Вам не ясно?

     
     
  • 5.104, Аноним (39), 19:57, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Не ясно, зачем ассерт бросает исключение, которое а из названия не очевидно б... большой текст свёрнут, показать
     
     
  • 6.108, dmitigr (ok), 20:51, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Здесь автор.

    > Не ясно, зачем ассерт бросает исключение

    Я используют DMITIGR_ASSERT() вместо стандартного assert() почти везде из-за того, что обычный assert() слишком груб и по умолчанию приводит к завершению программы. DMITIGR_ASSERT() же просто генерирует исключение std::logic_error если утверждение ложно. (Мне очевидно, что надо это задокументировать.)

    > а) из названия не очевидно;

    Спасибо за замечание. Я задокументирую этот момент!

    > б) может быть по недоразумению проигнорировано.

    По недоразумению может быть всё, что угодно. std::logic_error игнорировать не стоит. Это признак бага в программе или в библиотеках, от которых она зависит.

     
     
  • 7.119, RibiKukan (ok), 23:13, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Кто тебе мешает использовать нормальные имена Это семантика асерта https gi... большой текст свёрнут, показать
     
     
  • 8.135, Аноним (39), 07:22, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    По-простому это называется глаз замылился Автору и без имён понятно, что дела... большой текст свёрнут, показать
     
     
  • 9.136, RibiKukan (ok), 07:40, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Полный бред Я там объяснял почему Причин гениальней это я не слышал Т е cons... текст свёрнут, показать
     
     
  • 10.139, Аноним (39), 08:26, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Да, там похоже на это самое Мы ведь понимаем, что бред не технический аргумен... текст свёрнут, показать
     
     
  • 11.157, RibiKukan (ok), 18:01, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Технический Твоя обязанность обосновать Ты не обосновал, а поиграл в клоуна И... текст свёрнут, показать
     
     
  • 12.161, Аноним (39), 18:32, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Бред, по определению, девиация мышления на фоне деменции И есть, Петька, один н... текст свёрнут, показать
     
     
  • 13.169, RibiKukan (ok), 20:36, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Клоун, мне без разницы на то кто ты Ты для меня не отличаешься от любого другог... текст свёрнут, показать
     
     
  • 14.180, Аноним (39), 08:57, 19/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Знаю Ты ошибся адресатом, что лишает персонализированные обращения смысла, но д... текст свёрнут, показать
     
  • 7.138, Аноним (39), 08:07, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    А зачем продолжать её исполнение Виноват, но я принципиально не смотрел докумен... большой текст свёрнут, показать
     
     
  • 8.140, dmitigr (ok), 10:31, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Здесь больше интересен вопрос как по-мягче завершить её выполнение Меня не уст... большой текст свёрнут, показать
     
     
  • 9.144, Аноним (39), 11:32, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Наверное, прежде всего для этого необходимо обеспечить 100 гарантии вызова обра... большой текст свёрнут, показать
     
     
  • 10.145, dmitigr (ok), 11:46, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Обработчики исключений, которые пересекают границы библиотек, определяются в при... большой текст свёрнут, показать
     
     
  • 11.149, Аноним (39), 15:24, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Следует Автору виднее Автор может поступать, как считает нужным Сам ... текст свёрнут, показать
     
     
  • 12.155, dmitigr (ok), 17:01, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Следует С чего вдруг некий DMITIGR_ASSERT должен повторять семантику стандарт... текст свёрнут, показать
     
     
  • 13.159, Аноним (39), 18:18, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Должен не то слово Есть ожидания пользователя, читателя кода Если они расход... текст свёрнут, показать
     
  • 9.151, Anonymoustus (ok), 16:29, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Аффтару нимб не жмёт ... текст свёрнут, показать
     

     ....большая нить свёрнута, показать (21)

  • 1.48, Аноним (48), 16:27, 17/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    FastCGI настолько простой протокол что только ленивый студент не реализовывал его на своем любимом языке
     
  • 1.52, Аноним (50), 16:40, 17/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/


    In file included from /home/dmitry/tmp/fcgi/lib/dmitigr/fcgi/basics.hpp:62,
                     from /home/dmitry/tmp/fcgi/lib/dmitigr/fcgi.hpp:26,
                     from /home/dmitry/tmp/fcgi/lib/dmitigr/fcgi.cpp:7:
    /home/dmitry/tmp/fcgi/lib/dmitigr/fcgi/basics.cpp:9:10: fatal error: dmitigr/common/debug.hpp: Нет такого файла или каталога
    #include <dmitigr/common/debug.hpp>
              ^~~~~~~~~~~~~~~~~~~~~~~~~~
    compilation terminated.


    Автор, ну ты понел.
     
     
  • 2.57, Аноним (57), 17:08, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    пишут что нужно 'common' имени дмитрия ингишина иметь:
    https://github.com/dmitigr/fcgi/blob/master/README.md#dependencies
     
     
  • 3.62, Аноним (50), 17:27, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    То есть он даже поиск библиотеки в cmake не осилил? Молодец какой. Дальше смотреть не вижу смысла.
     
     
  • 4.86, dmitigr (ok), 18:21, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Кто-то не осилил прочитать документацию. Дальше смотреть нет смысла.

    В действительности, всё что требуется, это установить библиотеку dmitigr_common. Всё остальное CMake сделает автоматически.

     
     
  • 5.90, Аноним (50), 19:01, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Установить куда? А если я её в нестандартный префикс хочу, чтобы систему не поганить? CMake должен делать автоматически не «всё остальное», но и поиск библиотеки тоже. Если её нет — вывести внятное сообщение об ошибке. А тут конфигурация типа прошла успешно, а оказывается — зависимостей не хватает!
     
     
  • 6.91, dmitigr (ok), 19:09, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо за отзыв CMake ищет библиотеку автоматически Я только что попробовал с... большой текст свёрнут, показать
     
     
  • 7.96, Аноним (50), 19:23, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Действительно, сообщение есть, я его не заметил. Но это всего лишь warning, статус завершения 0, Makefile создался, в конце:

    Using  library
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /home/anon/fcgi/build

    Потому выше по логу и не смотрел. Должно быть завершение с ошибкой, если зависимость обязательная.

     
     
  • 8.118, dmitigr (ok), 23:06, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Спасибо, исправил Эта регрессия появилась из-за относительно давнего рефакторин... текст свёрнут, показать
     
     
  • 9.152, Anonymoustus (ok), 16:31, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Это опенсорс Никто никому ничего не должен 8482 ... текст свёрнут, показать
     
     
  • 10.153, dmitigr (ok), 16:50, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Хм А какое Вы имеете отношение к open source Разве Вы что-то сотворили ... текст свёрнут, показать
     
  • 9.198, Аноним (198), 06:40, 22/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    You must be new here ... текст свёрнут, показать
     

  • 1.54, Аноним (57), 16:50, 17/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +11 +/
    Список новостей:
    - Microsoft открыл код библиотеки векторного поиска, используемой в Bing
    - Дима Игришин сделал git push
    - Фонд свободного ПО сертифицировал звуковые карты и WiFi-адаптеры ThinkPenguin
     
     
  • 2.124, Аноним (124), 00:19, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ну и норм
     

  • 1.55, Anonymouss (?), 16:55, 17/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Судя по коду это fcgi, а не fastcgi. какой смысл тогда?
     
     
  • 2.87, dmitigr (ok), 18:22, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Это реализация FastCGI. FCGI - это сокращение FastCGI.
     
     
  • 3.99, eRIC (ok), 19:36, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    dmitigr, бенчмарки вашей реализации есть для сравнения?
     
     
  • 4.109, dmitigr (ok), 20:56, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Бенчмарков нет. Я сравнивал с libfcgi. dmitigr_fcgi быстрее где-то на 15-20%. Я знаю ещё несколько мест в своей реализации для оптимизации и прироста производительности. В скором времени улучшу.
     
     
  • 5.111, eRIC (ok), 21:40, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Бенчмарков нет. Я сравнивал с libfcgi. dmitigr_fcgi быстрее где-то на 15-20%. Я
    > знаю ещё несколько мест в своей реализации для оптимизации и прироста
    > производительности. В скором времени улучшу.

    интересно. с активным по сей день с библиотекой https://github.com/eddic/fastcgipp (C++14) попробуйте произвести бенчмарки, будет очень интересно. в будущем надеюсь в проекте бенчмарк отчеты появятся.

     
  • 3.105, Anonymouss (?), 20:13, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Заявление ничем не подкрепленное?
    Ну ок.

    https://www.apachelounge.com/viewtopic.php?t=4385

     
     
  • 4.106, dmitigr (ok), 20:34, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Библиотека dmitigr_fcgi реализована в соответствии со спецификацией FastCGI. См. http://www.mit.edu/afs.new/sipb/user/yandros/doc/specs/fcgi-spec.html

    FCGI - это сокращённое название FastCGI. Apache mod_fcgi или mod_fastcgi не имеют никакого отношения к моей библиотеке.

     

  • 1.92, eRIC (ok), 19:09, 17/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Многие тут комментаторы от Бога так и не понимают в чем изюминка этой реализации FastCGI, дело в " написанная на современном C++17" - "The FastCGI implementation on modern C++".

    Делая выводы можно сказать что она как алтернативная реализация по спецификации FastCGI придаст прирост в производительности, легкости и т.д., что позволяет дать современные последние версии компиляторы c поддержкой C++17 (ведь язык программирования C++ тоже не стоит на месте и совершенствуется)

    P.S: кстати, если кто-то будет искать закрытый сайт FastCGI, можете посмотреть в архиве: https://fastcgi-archives.github.io/

     
     
  • 2.94, Ordu (ok), 19:20, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Многие тут комментаторы от Бога так и не понимают в чем изюминка

    Многие комментаторы здесь делают сознательные усилия, чтобы не понимать. Всё комментирование здесь сводится к специальной олимпиаде на тему, кто самым возмутительным образом не поймёт, что написано.

     
     
  • 3.95, eRIC (ok), 19:21, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Многие комментаторы здесь делают сознательные усилия, чтобы не понимать. Всё комментирование
    > здесь сводится к специальной олимпиаде на тему, кто самым возмутительным образом
    > не поймёт, что написано.

    особенно (A|O)нонимы :)


     
  • 2.100, Sw00p aka Jerom (?), 19:40, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > как алтернативная реализация спецификации FastCGI

    Кхммм, спецификации? вы серьезно? Альтернативная реализация ---> по <--- спецификации FastCGI!

     
     
  • 3.102, eRIC (ok), 19:45, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Кхммм, спецификации? вы серьезно? Альтернативная реализация ---> по <--- спецификации
    > FastCGI!

    да, верно, имелось что это не новая спецификация FastCGI, а имплементация его

     
  • 2.101, Аноним (50), 19:44, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Делая выводы можно сказать что она как алтернативная реализация спецификации FastCGI придаст прирост в производительности, легкости и т.д.

    Из чего и каким образом можно сделать такие выводы?

    > усоверешенствовыется

    Ты б свой русский посвершенствовывал, что ли.

     
     
  • 3.103, eRIC (ok), 19:50, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >> усоверешенствовыется
    > Ты б свой русский посвершенствовывал, что ли.

    после чтения толкового словаря по русскому языку, исправлено. старую информацию смотрите, нажмите F5 :)

     
  • 3.112, Sw00p aka Jerom (?), 21:45, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Бывает, когда в мыслях проговариваешь, а в комментарии думаешь что написал, да, да, нажимаем сразу отправить потом только видим ошибку :)
     
  • 2.114, Аноним (16), 22:04, 17/05/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > on modern C++

    Писать по-английски – это вообще-то не слова по словарю с вашего языка переводить.

     
     
     
     
     
     
     
     
    Часть нити удалена модератором

  • 9.186, Аноним (186), 18:06, 19/05/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Креационизм ничем не хуже утверждений, что хвост предки человеков потеряли из-за... текст свёрнут, показать
     
  • 2.190, Аноним (189), 01:13, 20/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >Делая выводы можно сказать что она как алтернативная реализация по спецификации FastCGI придаст прирост в производительности, легкости и т.д., что позволяет дать современные последние версии компиляторы c поддержкой C++17 (ведь язык программирования C++ тоже не стоит на месте и совершенствуется)

    Трудно представить, какой приницпиальный выигрыш в производительности может быть у реализации FastCGI на С++ по сравнению с С, не говоря у же о С++17 по сравнению со старым С++. Там же простой бинарный протокол, который парсится обычными сишными структурами

     

  • 1.121, Аноним (121), 23:55, 17/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    cppcms же есть
     
     
  • 2.132, Аноним (132), 04:34, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем есть же libevent с HTTP поддержкой
     
     
  • 3.197, Аноним (121), 20:07, 20/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Во-первых, топик про FastCGI. Во-вторых, где libevent, а где cppcms.. В последней есть всё для создания полноценного web-бэкенда (транспорт, маршрутизация запросов на исполняющий код, пулы рабочих потоков, сессии и сопутствующие шифрование и hmac-и, json, журналирование и проч.), и оно уже на плюсах и используется в проде.
     

  • 1.146, Аноним (146), 12:20, 18/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +8 +/
    Непонятно откуда столько негатива в коментах. Люди, вы если с чем-то несогласны, пишите аргументировано. Давайте уже перестанем сеять среди нашего общества негатив.

    Советую к прочтению:
    en: http://paulgraham.com/disagree.html
    ru: https://web.archive.org/web/20120505004501/http://translated.by/you/how-to-dis

     
     
  • 2.164, eRIC (ok), 19:14, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    +1
    наследие СССР :)
     
     
  • 3.182, Аноним (4), 12:43, 19/05/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    чушь. при СССР технари к технарям оч.хорошо относились. почитайте сообщения на форумах/эхах 90х годов (это как раз поколение выросшее в СССР) - все оч вежливо, никакой ругани, ехиндичиства и т.д.

    те, о ком вы говорите совсем другое поколение.

     
     
  • 4.183, eRIC (ok), 16:42, 19/05/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > те, о ком вы говорите совсем другое поколение.

    ну я как раз имел в виду не технарей, которые в годы СССР работали, а последствия распада СССР, приходом демократии, и приходом диванных критиков :)


     
     
  • 5.191, Аноним (189), 01:16, 20/05/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Поколение Пепси
     
     
  • 6.195, eRIC (ok), 13:35, 20/05/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Поколение Пепси

    точно +1

     
  • 6.202, Аноним (49), 11:55, 23/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    А сейчас смузи.
     
  • 2.199, Michael Shigorin (ok), 12:43, 22/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Советую к прочтению:
    > en: http://paulgraham.com/disagree.html
    > ru: https://web.archive.org/web/20120505004501/http://translated.by/you/how-to-dis

    Спасибо за статью Полу, а Вам -- за ссылку!

     

  • 1.150, Филимон Печальный (?), 16:28, 18/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    Народ, вы чего ? Человек написал библиотеку, выложил бесплатно, никого использовать её не заставляет... Где здесь повод исходить говном ?
    Это массовый психоз какой-то :-(
     
     
  • 2.163, Аноним (39), 18:52, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Да какой массовый? Парочка типичных персонажей изображают толпу.
     
  • 2.170, Anonymoustus (ok), 20:41, 18/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Утешься прекрасным:

    https://www.govnokod.ru/25608

     
  • 2.178, souryogurt (ok), 05:22, 19/05/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Лично мне просто непонятно почему это в новостях на опеннет. Разве это какая-то значимая для open source новость? Можно было бы на форуме ее разместить, если хочется найти своих пользователей или разработчиков, или просто пропиарится для чего-то еще.
    Ну и глядя на то, как оформлена репа и личный блог автора, так и тянет тролить. Везде МЫ во всех названиях присутутсвует dmitrygr, и т.д. Доходит до абсурда. Вы только прочитайте в слух первую строчку документации:
    "Client programs that use Dmitigr Fcgi must include header file dmitigr/fcgi.hpp. and must link with dmitigr_fcgi (or the debug build - dmitigr_fcgid) if Dmitigr Fcgi is used as a regular library."
    Другими словами, неймспейс неоч :)

    Бог создал землю за шесть дней. Дмитрий Ингришин создал FastCGI за пять.

     

  • 1.204, greenwar (ok), 10:15, 13/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    забота о пользователе зашкаливает...
    >> CMake Error at CMakeLists.txt:5 (cmake_minimum_required):
    >>  CMake 3.17 or higher is required.  You are running version 3.13.4
    >> sudo apt install cmake
    >> Уже установлен пакет cmake самой новой версии (3.13.4-1).

    (debian buster)

     
  • 1.205, greenwar (ok), 10:22, 13/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    3.17 это самая последняя версия cmake на офф.сайте (3.17.2)
    её только вручную ставить
    чё без cmake никак чтоли не поставить это чудо инженерной мысли?
     
  • 1.206, greenwar (ok), 11:34, 13/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а это чё:
    >> /usr/bin/ld: /tmp/ccf5Ifs9.o: in function 'main':
    >> fcgi-hello.cpp:(.text+0x52): undefined reference to 'dmitigr::fcgi::Listener_options::make(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, int)'
    >> /usr/bin/ld: fcgi-hello.cpp:(.text+0x11d): undefined reference to 'dmitigr::fcgi::crlfcrlf(std::ostream&)'
    >> collect2: error: ld returned 1 exit status

    при попытке скомпилировать dmitigr/fcgi/test/fcgi/fcgi-hello.cpp

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру