LINUX.ORG.RU

KLone: фреймворк для веб-программирования на C

 


0

0

Перевод заметки об использовании фреймворка KLone для разработки веб-приложений на языке программирования C. Стиль написания веб-приложений с использованием этого фреймворка становится похожим на PHP, но компилируется в бинарный файл.

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



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

Неплохая вещь. C, C++... интеграция с Eclipse... полноценный web-сервер...

Интересно :)

Slavaz ★★★★★
()

> __Стиль написания__ [...] становится похожим на PHP, но __компилируется в бинарный файл__.

Что?

GFORGX ★★★
()

> Стиль написания веб-приложений с использованием этого фреймворка становится похожим на PHP

O_o
Боюсь...

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

Вообще-то там мало похожего на "стиль написания PHP". Наверное, "похожим" показалось включение Сишного кода в HTML (по аналоги с php):

index.php:
<html><body>
<?php
echo "hi,allъ";
?>
</body></html>

index.kl1:
<html><body>
<%
io_printf(out, "hi,allъ");
%>
</body></html>


И всё.

ИМХО идеально подходит для создания вебморд в embedded-системах. Я впечатлён :)

Slavaz ★★★★★
()

ждём новости: "Фреймворк для веб-программирования на ASM"

djung ★★
()

о, тру. пожалуй пора переезжать с c++ server pages, это трушнее. Скорее всего заюзаю в эмбеддед прожекте.

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

Зачем все это?

Зачем объединять вебсервером? cgi-bin мало? На крайний случай, сделать враппер fast-cgi.

Как будет заниматься/освобождаться память? все вручную?

Гораздо проще писать такие вещи на vala. Тот же сишник, только + классы и нормальное управление памятью.

AVL2 ★★★★★
()

> Стиль написания веб-приложений с использованием этого фреймворка становится похожим на PHP

Такая же эпическая жопа со случайно названными без всякого порядка и принципа функциями без неймспейсов и костылями со всех сторон?

anonymous
()

клоуны :)))
слов больше нет :)

anonymous
()

"PHP хорошо известен благодаря своему синтаксису, смешивающему HTML с исходным кодом внутри специальных тегов."

Еще как известен, но авторы пошли еще дальше. Они решили смешивать HTML с Сишным кодом и делать из этого бинарник=)

anonymous
()

по ссылке не ходил, но осуждаю.

anonymous
()

Нич0. Щас понялетят те(труъ-кодеры), кто недавно слил быдлокодерам, ой - лисперам в соотв ветке :)))

По теме. Соглашусь с предыд. оратором про ассемблер - его тоже ой как не хватает в веб-программировании :))

И, как мое предложение - использовать в веб-программировании BF :) Его там оченно щас не хватает :)

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

http://www.koanlogic.com/klone/api/html/index.html
Там фреймворк-специфичных функций раз-два - и обчёлся. В рамках "похожести" на php реализованы только возможности:
1) работа с сессиями
2) кукисы
3) GET/POST/PUT
4) response - формирование http-заголовков (Content-type, Content-length и т.д.)

И всё.

Не понравилось отсутствие php-фичи require/require_once (или инклюдесы) других страниц - Это чтобы дизайн-обвязку не плодить на каждой странице... Впрочем, ИМХО назначение этого фреймворка: в основном конечные, "под ключ" решения: TV-тюнер, ADSL-модем, Smart-switch и т.д. А там огроменные сайты плодить не получится, так что терпимо.
Резюме: для вебморды в свою железяку - это не решение, а "лялечка" :) Само собой, разрабатывать развесистые ынтерпрайз-порталы на этом фреймворке - проще застрелиться.

P.S. Оно в один исполняемый файл (демон) вкомпилячивает все: и изображения, и css/html/js-файлы... Ну ведь рай для "железячника" :)

P.P.S. Господам гусарам, присутствующим в данном топике (то бишь, Ъ): сходите по ссылке, а? Либо не пишите тут чепухи.

Slavaz ★★★★★
()

<stupid_dream_mode>Вот ктоб лучше JBoss на JavaME портировал, чтоб мобилкой можно было через Ъ интырпрайз веб консоль управлять</stupid_dream_mode>

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

"Ну ведь рай для "железячника" :)" - согласен, меня самого заинтересовала эта мега крутотень :) Хотелось бы познакомиться с этим подробнее...

fpga
()

честно попытался поставить и скомпилять…
зависимостей, конечно, потянуло вагон, ну да фиг с ними, но хелловорлд собирался минуты 3-4, не меньше…
насчёт скорости, кстати, вроде не обманули, хотя на хелловорлде и 20 потоках tomcat, похоже, уже обгоняет

зы dpkg -I myhello_0.1_i386.deb
новый пакет Debian, версия 2.0.
размер 71400 байт(а): управляющий архив длиной 835 байт(а).
20 байт(а), 1 строк conffiles
413 байт(а), 11 строк control
186 байт(а), 3 строк md5sums
312 байт(а), 12 строк * postinst #!/bin/sh
173 байт(а), 7 строк * postrm #!/bin/sh
269 байт(а), 11 строк * prerm #!/bin/sh
Package: myhello
Version: 0.1
Architecture: i386
Maintainer: Undefined Maintainer <not@set.invalid>
Installed-Size: 212
Depends: libc6 (>= 2.7-1), libgcc1 (>= 1:4.1.1), libssl0.9.8 (>= 0.9.8f-5), libstdc++6 (>= 4.1.1), zlib1g (>= 1:1.1.4)
Section: web
Priority: optional
Description: custom KLone generated web server
This package contains a web server generated by KLone web application
development framework.

thevery ★★★★
()

Ага, теперь ненадо ковырять апач, можно будет срывать стек прямо у скрипта. :)

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

>Тока грёбаныые извращенцы не знают что такое разделение кода Вот бля как на пхп писать надо) Вообще с использованием ООП писать надо всё. http://www.webtoolkit.eu/wt вот на мой взгляд то что надо по сабжу. А это похоже на поронографию по крайней мере описание не внушает доверия.Исправьте ,если не прав

Konstantyn
()

Yet Another PHP (после похода на ссылку) Походу эти из koanlogic нифига кроме С не знают, и знать не хотят. Вот и пытаются применить его во все дыры.

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

> "Ну ведь рай для "железячника" :)" - согласен, меня самого заинтересовала эта мега крутотень :) Хотелось бы познакомиться с этим подробнее...

А разве похапэ - это не фреймворк для вызова сишных функций?

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

> Гораздо проще писать такие вещи на vala. Тот же сишник, только + классы и нормальное управление памятью.

Думаю что лучше будет mono (mono не виртуальная машина, читайте man - ECMA-CLI native code generator (Just-in-Time and Ahead-of-Time)).

anonymous_num_0
()

Как уже говорилось -- максимум что можно из этого выжать -- вебморды для железок. В остальном -- не нужно.

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

> Тока грёбаныые извращенцы не знают что такое разделение кода Вот 
>бля как на пхп писать надо) Вообще с использованием ООП писать надо 
>всё. http://www.webtoolkit.eu/wt вот на мой взгляд то что надо по 
>сабжу. А это похоже на поронографию по крайней мере описание не 
>внушает доверия.Исправьте ,если не прав

http://www.webtoolkit.eu/wt

ПРЕДУПРЕЖДЕНИЕ: по ссылке, жесткий ++ ms-десктоп-порн-кодинг для веба, сядьте и уберите от себя колюще-режущие предметы

  mainMenu_->addItem
    (tr("introduction"), introduction())->setPathComponent("");
  mainMenu_->addItem
    (tr("news"), deferCreate(boost::bind(&Home::news, this)),
     WMenuItem::PreLoading);
  mainMenu_->addItem
    (tr("features"), wrapViewOrDefer(&Home::features),
     WMenuItem::PreLoading);

...

  app->setTitle("Drag & drop");
  new WText("<h1>Wt Drag &amp; drop example.</h1>", app->root());

...

  for (SimpleChatServer::UserSet::iterator i = users.begin();
       i != users.end(); ++i) {
    if (*i == user_)
      usersStr += "<span class='chat-self'>" + *i + "</span><br />";
    else

...

  return new WTreeNode("<a href=\"" + fixRelativeUrl("wt/src/" + name)
		       + "\" target=\"_blank\">"
		       + name + "</a>", labelIcon, parent);
}



ELF ★★
()

Вообще интересная тема, но только для эмбедщиков, для остальных есть fastcgi.

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

нет, это просто полный ооП,

tab->elementAt(0, 1)->setPadding(8);
cal->setMargin(8);

html не надо мешать, надо смешивать до полного растворения, начинающие пхпшники после Этого, суровые пуритане

ELF ★★
()

Слишком мало платформ и операционных систем поддерживается, а так приятная штука для эмбеддера.

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

> Как будет заниматься/освобождаться память? все вручную? 

аллокируешь память в request-poole и получаешь автоматический   
grabage collector. В случае C++ пишешь overloaded operator new

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

> "Ну ведь рай для "железячника" :)"

для "железячника" надо писать под boa, lighthttpd,  ngnix etc.
Сам когда-то написал одну вещч. Вот мечтаю "возродить" тот проект.

С манифестом можно ознакомиться ниже: 
The main ideas about it:
-  To write very light module which based on CINT http://root.cern.ch/twiki/bin/view/ROOT/CINT.
-  All extension/additional libs/DLLs must be (run/startup)-time loadable.
- it should be "integrated" with "tunneling web server"
  (see explanations below)
- will have many new (in respect to my old module) features - file upload, automatic garbage
  collection (overloading "new operator"  will allocate
  objects in request-pool),  etc.
- run under *nixes, windows, with different web-servers:
  apache, ngnix, lighthttpd, boa (possibility to run on embedded systems)
- in fly compilation of C/C++ scripts
- it would be good to develop php2cpp utility which would help
  to adapt existing php scripts 
- providing many loadable libs (a la php extensions)


tunneling web server:
1. assume, we have a public web apache server (hosting.com) exposed to the WWW.
2. our web server (hosting.com) is running linux
3. we have an user account (which is very restricted) e.g. onuchin
4. onuchin has his own web server (onuchin.local) somewhere
   behind remote NAT firewall or inside remote VPN and
   it's "invisible" (no IP, no name) to hosting.com.
5. onuchin can connect to hositng.com via ssh with tunneling
   between onuchin.local machine and hositng.com

The scenario:
-  a request like onuchin.hosting.com/dir/scipt.php
  is retranslated, retransmitted over ssh tunnel to onuchin's
  webserver (onuchin.local) and executed over there
  as onuchin.local/dir/script.php -> the result of this
  is sent over ssh tunnel back to hosting.com and exposed to the WWW.
- a request like virtual.onuchin.hosting.com/dir/scipt.php
  goes to virtual.onuchin.local (remote virtual hosting)


The task:
 1. (re)write mod_proxy in such way, so all requests to
    user.hosting.com will be transmitted to corresponding
    user's ssh tunnel, i.e.
    to user's remote machine -> user's web server.
 2. adding a new user to the system (hosting.com) should not
    require apache reconfiguring, restarting.
 3. write an apache_module for client's web-server  which
    supports ssh tunneling between client's web server and
    hosting.com in transparent way.
    The process of client loginning to hosting.com is "a part" of this module.
    That allows to have an automatic reloginning in case of disconnection
    between client's mashine and hosting.com.
 Everything must be transparent to user/client.
He/she knows nothing about ssh-forwarding, Putty-tunneling etc.

User can place his/her static HTML pages , images on hosting.com
available at hosting.com/~user/

Users management on hosting.com  be done via web interface.
It should be as simple as  possible.
Potential client (pedestrian) knows nothing about linux etc.

Of cause, hosting.com may provide any other services to the clients,
e.g. filtering content(security) which goes to the client's web-server etc.

One of the potential usages of such system is secure running of
ROOT/C/C++/PHP scripts on client's web server.
All security problems are now client's concern - NOT web hosting provider.

---------------------------------------------------------------------

"Web Operation System"

1. we have hosting.com - analog to unix root directory /
2. user1.hosting.com - analog to /user1
   user1.group.hosting.com - /group/user1
   user2.group.hosting.com - /group/user2
   ....
3. "executable programms"
   user1.hosting.com/path/my.php
   user2.group.hosting.com/path/hsimple.C
   ...

   all scripts are executed on separate sites.
   It's analogous to "execution in protected user memory space"
4. remaining features to implement  -
   "file ownership" & "access permissions"
 
   In the same manner, let's introduce  "access permissions"
   read, execute,  later write (possibility to write/edit/delete
   files on remote user site)

  group - request to read/execute user.group.hosting.com/path/hsimpe.C
        is allowed only for those clients who came from "group" site
   owner - request to user.group.hosting.com/path/hsimpe.C
           allowed only for  "group" site
           and for client with name "user" -
           probably we'll need to introduce additional
           authentication/authorization mechanism
   world - read/execute user.group.hosting.com/path/hsimpe.C
           allowed for everybody

Obviously such mechanism must be implemented on hosting.com level.
chown, chmod - will be implemented as web scripts/interface.

Such system will allow to execute "C/C++ scripts" safely

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

> Как уже говорилось -- максимум что можно из этого
> выжать -- вебморды для железок. В остальном -- не нужно.

Народные умельцы ваяют мини-вики на AWS. В принципе, и на KLone
можно писать. Только C, ИМХО, наименее удобен для веб-сервера будет.
Скажем, на Аде легко написать функцию с прототипом: 

function Render_Pager
  (Pages_Total, Current_Page : Natural;
   On_Change_Page : -- возвращает URL других страниц
    access function (New_Page : Natural) return String)
   return Rope; 

И это будет обобщённая реализация пейджера
("<< 1 2 3 ... 4 5 6 ... 21 >>") 

Из замыкания On_Change_Page можно обращаться к локальным переменным,
а в C пришлось бы объявлять структуру и копировать локальные
переменные в неё. Для дивлетов посложнее это будет проблемой.

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

> С манифестом можно ознакомиться ниже: > The main ideas about it:

а как же корованы?

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

>Думаю что лучше будет mono (mono не виртуальная машина, читайте man - ECMA-CLI native code generator (Just-in-Time and Ahead-of-Time)).

чтоб эта невиртуальная машина жрала память и процессор тоннами? И чтоб все моно надо было портировать на железку прежде чем что нибудь написать?

Вот уж спасибо!

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

>Гораздо проще писать такие вещи на C++. Тот же сишник, только + классы и нормальное управление памятью.

fixed

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

>аллокируешь память в request-poole и получаешь автоматический grabage collector. В случае C++ пишешь overloaded operator new

зашибись. По скорости это будет даже не cgi...

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

для встроенных решений давно уже придуман perl.

В нем есть все и недорого.

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

C++, это не сишник с классами, а портабельный ассемблер с выгибанием пальцев в сторону ООП.

С++ мертв. не насилуйте уже этот труп...

AVL2 ★★★★★
()

А ClearSilver уже типа отменили?

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

>Помницца, мой первый динамический скрипт был написан на сях.

Мне было проще. Я раньше, чем с Си познакомился с Фортом. Поэтому когда требовалось писать свои скрипты на любом языке - я по-быстрому лепил очередной Форт :)

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