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 уже давно не доступен. Так что эта либа вполне себе свежак!
     

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

  • 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, и смотрим при каких условиях прервется ваш цикл.

     

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

  • 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 [^] [^^] [^^^] [ответить]  
  • +/
    > Указатели все разыменовали? За границы буферов не повыходили? Или как обычно?

    Надо больше [I] замыканий, монадов, строгой типизации и W^X [/I] на опенне ^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-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру