LINUX.ORG.RU

kcgi 0.9.0

 , , ,


2

3

Доступна новая версия kcgi — минимальной библиотеки CGI/FastCGI, написанной на C.

Пример кода, выводящего «Hello, world!»:

#include <stdint.h>
#include <stdlib.h>
#include <kcgi.h>
 
int main(void) {
  struct kreq r;
  const char *page = "index";
  if (KCGI_OK != khttp_parse(&r, NULL, 0, &page, 1, 0))
    return(EXIT_FAILURE);
  khttp_head(&r, kresps[KRESP_STATUS], 
    "%s", khttps[KHTTP_200]);
  khttp_head(&r, kresps[KRESP_CONTENT_TYPE], 
    "%s", kmimetypes[r.mime]);
  khttp_body(&r);
  khttp_puts(&r, "Hello, world!");
  khttp_free(&r);
  return(EXIT_SUCCESS);
}

В новой версии добавлены функции для преобразования даты и времени из unix (epoch) time в формат HTTP и обратно, а также исправлены различные ошибки.

>>> Официальный сайт

>>> Подробности

★★★★★

Проверено: Shaman007 ()

Пример кода, выводящего «Hello, world!»:

А не хрена ли себе код, для вывода козюлишного «Hello, world!»? Что ж тогда за код будет у серьёзной проги?

O_o

anonymous ()

И тебя скоро добавят в мини-новости.

Sociopsih ★★ ()

kcgi is an open source CGI and FastCGI library for C web applications.
C web applications.

Пользуясь случаем хочу передать привет heartbleed.

Singularity ★★ ()

Прекрасное в «подробностях»:

OpenBSD's httpd, httpd(8), inherits from relayd(8) and was recently imported into OpenBSD after an aborted attempt to use nginx instead of the legacy Apache1.3.

Ну и собсно, подробоности.

LamerOk ★★★★★ ()

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

thesis ★★★★★ ()
Ответ на: комментарий от anonymous

ну если по чесноку, то явно видно, что это просто «правильно оформленный» ответ сервера, а не простое выплевывание стринга, как обычно в хелловорлдах показывают

nerfur ★★★ ()

Веб на С это Ъ!

Годнота! Нужно! Ждём ебилдов :)

Harald ★★★★★ ()

Выглядит как-то очень странно. На libevent/evhttp подобное выглядит намного более интуитивно понятнее, хотя в том случае там не CGI, а полновесный вебсервер выходит.

ncrmnt ★★★★ ()

kcgi

А почему k? У меня сразу же ассоциируется с тем, что это CGI в kernel space (модуль для ядра).

Кстати, на хабре есть статьи про FastCGI, но на C++: Веб-приложение на C++, или укрощение демона FastCGI (FastCGI-Daemon). И на его базе Фреймворк Fastcgi Container (Fastcgi-Container). Вот бы кратенькое сравнение, чем отличаются от kcgi.

gag ★★★★★ ()

Сука, до слез. Скоко еще будут дрочить на єтот динозавр?

anonymous ()
Ответ на: комментарий от gag

У меня сразу же ассоциируется с тем, что это CGI в kernel space

А у меня с программой из экосистемы KDE.

Sociopsih ★★ ()
#!/usr/bin/python3

print ("Hello, world!")

По сравнению с этим сабж выглядит монструозным убожеством.

Rinaldus ★★★★★ ()
Ответ на: комментарий от Rinaldus

В каком именно месте ты выставил хидеры ответа, школьничек?

anonymous ()
Ответ на: комментарий от tp_for_my_bunghole

Ясно, спасибо. Надо было ему назвать тогда как-то так: kricgi или dzocgi.

gag ★★★★★ ()

Из описания на сайте не понятно, поддерживает ли оно select. Блокирующий кал уже есть в лице libfcgi. И поддерживает ли inetd/systemd-style передачу сокета от http-сервера fcgi-серверу?

makoven ★★★★ ()
Ответ на: комментарий от Rinaldus

Не удивлюсь, если node.js уделает либу топикстартера по производительности, тупо из-за асинхронности.

menangen ★★★★★ ()

мда писать такое на C.
Even your Mom handles strings better than your compiled language

bl ★★ ()
Ответ на: комментарий от menangen

и по количеству потребляемой памяти ^_^

ggrn ★★★★★ ()
Ответ на: комментарий от menangen

как будто прилепить асинхронность — это не дело 10 минут

anonymous ()

ЭЭЭ ... а куда выводит то? )) Пока вижу, что в структуру хидеров натолкали + ХВ! )) а потом free сделали.

PETER ★★ ()

Вы ничего не понимаете. Раз либу написали на Си, значит можно сразу, без танцев с биндингами, писать веб аппы на ассемблере.

anonymous ()

Похоже на ненужное ненужно.

AVL2 ★★★★★ ()

CppCMS мне больше по душе.

А для минималистичности и встраиваемых систем есть libmicrohttpd.

Пытаюсь придумать use case для этого инструмента.

anonymous00 ()
Ответ на: комментарий от anonymous

Да Си вообще для лохов. Лучше бы на питоне написали. Переносимость была бы на высоте. Можно было бы и с Java использовать (через Jython) и с С# (ironPython) и с Ruby (через ерланговский Eport) и с node.js (Cython->emscripten)

makoven ★★★★ ()

Больше велосипедов всяких разных! Походу каждый в своей жизни пишет или ОС, или библиотеку CGI на сях :)

anonymous ()
Ответ на: комментарий от gag

Тут же напрашивается: то что ты подлинковал на плюсах, а сабж на си. В эмбедеде плюсов может и не оказаться в прошивке.

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от anonymous00

бэкэнд для вебморды в всякой встройке, в которую ничто приличное не лезет.

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от Harald

Годнота! Нужно! Ждём ебилдов :)

Я ещё в 2004-2006х такую библиотеку запилил, на сях и даже под LGPL. Однако за 5 лет количество посещений страниц, её описывающих, от силы сотню перевалило. Я уж молчу про количество загрузок (по пальцам посчитать можно было). Снёс сайт за никому-ненадобностью. Желающим могу выслать последний релиз моей библиотеки по почте. Вот тебе и «годнота» ;)

PS: Интересно, а kcgi поддерживает кроме GET-а метод POST, мультипарты и несколько значений одной переменной? Влом сырцы смотреть :)

Druker ()
Ответ на: комментарий от Druker

Желающим могу выслать последний релиз моей библиотеки по почте. Вот тебе и «годнота» ;)

можешь на гитхаб выложить, так проще и быстрее будет, дело 5 минут

Harald ★★★★★ ()
Ответ на: комментарий от Harald

Я могу и сайт обратно поднять, правда под другим доменом уже :) Всё сохранено в архивах. Если есть реальный интерес - маякни, на днях запилю...

Druker ()
Ответ на: комментарий от Pentium02

Всегда пожалуйста: https://github.com/dumbler/libcgi Для простоты сборки качаем архив, разворачиваем локально, make ... PROFIT!!!111 :-) Ах да, подправьте Makefile'ы - уберите оттуда упоминания целевой архитектуры PentiumIII, не актуально уже на современном оборудовании...

Druker ()
Последнее исправление: Druker (всего исправлений: 1)
Ответ на: комментарий от tp_for_my_bunghole

А почему k?

Kristaps, имя автора.

Нет, у чувака просто BSD головного мозга. А там всё на k.

LamerOk ★★★★★ ()
Ответ на: комментарий от LamerOk

Сынок, тебя били в туалете, когда учитель рассказывал про поисковые машины?

Найденное тобой (видимо, правильно учитель по «поисковым машинам» регулярно тебя в сортире мочил) по ченджлогу на пару-тройку месяцев позднее моего кода, глянь заголовки моих файлов для приличия, что-ли.

Druker ()
Ответ на: комментарий от Dark_SavanT

Даже libmicrohttpd не влезет? Он же как раз для этого разработан.

anonymous00 ()
Ответ на: комментарий от anonymous00

Читал, что в freertos влезает, но не без труда. Еще в официальной докумендации намисано, что его запускали на Cortex M3, но не уточнено на голом ли железе или на mbed или еще как

https://lists.gnu.org/archive/html/lwip-users/2012-08/msg00100.html

mongoose влезает лучше и даже оптимизирован для ESP8266. Но лицензия либо GPL либо коммерческая

makoven ★★★★ ()
Последнее исправление: makoven (всего исправлений: 3)
Ответ на: комментарий от Druker

заголовки моих файлов

Кого волнует, что ты там написал в свои файлы?

Найденное тобой (..) по ченджлогу на пару-тройку месяцев позднее моего кода

Которого до вчерашнего дня не существовало:

 dumbler committed a day ago

В сравнении с

libcgi-0.7.3.tar.gz	2002-04-22

М-да, походу, били тебя по голове.

LamerOk ★★★★★ ()
Ответ на: комментарий от LamerOk

Ты дурачок совсем какой-то, штоле? Сидит сравнивает даты и названия.

Код сравнивал, умник?

anonymous ()

Я фигею... Тут что одна школота ничего не слышавшая про ембедед?

anonymous ()
Ответ на: комментарий от buddhist

Не, я себе свой велосипед накалякал.

Но так как я перешел на вебсокеты, а данные храню не в куках, а в локалсторидже, он утратил актуальность. CGI и куки — прошлый век!

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.