unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
* [Code for fun] Announce my generic server Ragnarok
@ 2012-04-02 16:23 Nala Ginrut
  2012-04-04  2:41 ` Noah Lavine
  0 siblings, 1 reply; 9+ messages in thread
From: Nala Ginrut @ 2012-04-02 16:23 UTC (permalink / raw)
  To: guile-devel, Guile User

[-- Attachment #1: Type: text/plain, Size: 3289 bytes --]

hi falks!
Many guys believe Guile-2.0 is powerful, me too. But we need more and more
guile projects to prove that.
Here's a toy of my coding game. A generic server named "Ragnarok". The
keyword "generic" implied it's not only a http-server, but easy
to add new protocols without considering the common features for a server
such as config/logger/concurrent...
If you checkout its code, you may find that it may didn't use web API you
thought in Guile lib, and it's bother to implement epoll though Andy is
making effort to writing nio/ethread now. Well, the reason is simple,
because that API/epoll did exist or not stable at the time I wrote
Ragnarok. I think it's easy to port it to our future nio/ethread for a
higher concurrency.
It's here: git://gitorious.org/glow/ragnarok.git
I'll make a main page for it if I find a proper web hosting.

Features:
* GPLv3 (of course)
* Object oriented
 (yes, I'm the minority in Guile community who try to program with GOOPS,
though FP features may cancel out most of OO features)
*  HTTP/1.1
*  Multi-protocols
*  Multi-languages
 (Guile is actually a dynamic compiler collection against the GCC who's the
static one according to Andy's free speech. So multi-language
must be the most fascinating feature.)
*  Guile/Scheme Template
*  Configurable
*  MIME
*  Unified epoll/select/kqueue interface
*  Logger
*  Standard CGI
*  Static page and binary downloading service (of course)

These days I'm on my vacation and gave a free speech to Chengdu Linux User
Group for a topic about Guile. Many guys are interested in
using Scheme for web framework. But they thought it's very clumsy to write
Scheme in web development, they love PHP more.
For such a misunderstanding, I showed them one of the features in Ragnarok,
the Guile template:
---------------------------------cut----------------------------------
<html>
<% (if (= 1 1) (begin %>
<p>asdf: <%= (+ 1 1) %></p>
<% )) %>

<% (let ((test-me (expt 3 8))) %>
<p><%= test-me %></p>
<% ) %>
</html>
----------------------------------end-------------------------------

If you get this dynamic page from Ragnarok server, the result will be:
=================
<html>
<p>asdf: 2</p>
<p>6561</p>
</html>
=================
Or open it from any web-browser you like.

Well, it's an interesting feature and easy to implement for most guys in
Lisp world.
The point is, I'm telling them the template is not a big deal for Guile. We
have it.

After the free talking, an audience ask me: why not release it?
I must confess it's just a toy of my coding game. I didn't know if people
will be interested in it.
And many guys here know much than me, so I'm hesitating.
But the sentence on Geiser[1] site struck me: "No hacker is an island".
Then I believe I must share it to the world and get more help.
Anyway, it's buggy but it really works!
If you're in trouble with running it directly, you may try to use it's
<server> class for debugging or working with it:
--------------------------------------------cut-----------------------------------
(use-modules (ragnarok server))
(server:run (make <server> #:name "first-http"))
--------------------------------------------end----------------------------------
Then you get a http server listen in 8080 in default.
Happy hacking!


[1] http://www.nongnu.org/geiser/

[-- Attachment #2: Type: text/html, Size: 4436 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Code for fun] Announce my generic server Ragnarok
  2012-04-02 16:23 [Code for fun] Announce my generic server Ragnarok Nala Ginrut
@ 2012-04-04  2:41 ` Noah Lavine
  2012-04-04  2:42   ` Noah Lavine
  0 siblings, 1 reply; 9+ messages in thread
From: Noah Lavine @ 2012-04-04  2:41 UTC (permalink / raw)
  To: Nala Ginrut; +Cc: guile-devel

That looks excellent! Thanks for posting it.

On Mon, Apr 2, 2012 at 12:23 PM, Nala Ginrut <nalaginrut@gmail.com> wrote:
> hi falks!
> Many guys believe Guile-2.0 is powerful, me too. But we need more and more
> guile projects to prove that.
> Here's a toy of my coding game. A generic server named "Ragnarok". The
> keyword "generic" implied it's not only a http-server, but easy
> to add new protocols without considering the common features for a server
> such as config/logger/concurrent...
> If you checkout its code, you may find that it may didn't use web API you
> thought in Guile lib, and it's bother to implement epoll though Andy is
> making effort to writing nio/ethread now. Well, the reason is simple,
> because that API/epoll did exist or not stable at the time I wrote Ragnarok.
> I think it's easy to port it to our future nio/ethread for a higher
> concurrency.
> It's here: git://gitorious.org/glow/ragnarok.git
> I'll make a main page for it if I find a proper web hosting.
>
> Features:
> * GPLv3 (of course)
> * Object oriented
>  (yes, I'm the minority in Guile community who try to program with GOOPS,
> though FP features may cancel out most of OO features)
> *  HTTP/1.1
> *  Multi-protocols
> *  Multi-languages
>  (Guile is actually a dynamic compiler collection against the GCC who's the
> static one according to Andy's free speech. So multi-language
> must be the most fascinating feature.)
> *  Guile/Scheme Template
> *  Configurable
> *  MIME
> *  Unified epoll/select/kqueue interface
> *  Logger
> *  Standard CGI
> *  Static page and binary downloading service (of course)
>
> These days I'm on my vacation and gave a free speech to Chengdu Linux User
> Group for a topic about Guile. Many guys are interested in
> using Scheme for web framework. But they thought it's very clumsy to write
> Scheme in web development, they love PHP more.
> For such a misunderstanding, I showed them one of the features in Ragnarok,
> the Guile template:
> ---------------------------------cut----------------------------------
> <html>
> <% (if (= 1 1) (begin %>
> <p>asdf: <%= (+ 1 1) %></p>
> <% )) %>
>
> <% (let ((test-me (expt 3 8))) %>
> <p><%= test-me %></p>
> <% ) %>
> </html>
> ----------------------------------end-------------------------------
>
> If you get this dynamic page from Ragnarok server, the result will be:
> =================
> <html>
> <p>asdf: 2</p>
> <p>6561</p>
> </html>
> =================
> Or open it from any web-browser you like.
>
> Well, it's an interesting feature and easy to implement for most guys in
> Lisp world.
> The point is, I'm telling them the template is not a big deal for Guile. We
> have it.
>
> After the free talking, an audience ask me: why not release it?
> I must confess it's just a toy of my coding game. I didn't know if people
> will be interested in it.
> And many guys here know much than me, so I'm hesitating.
> But the sentence on Geiser[1] site struck me: "No hacker is an island". Then
> I believe I must share it to the world and get more help.
> Anyway, it's buggy but it really works!
> If you're in trouble with running it directly, you may try to use it's
> <server> class for debugging or working with it:
> --------------------------------------------cut-----------------------------------
> (use-modules (ragnarok server))
> (server:run (make <server> #:name "first-http"))
> --------------------------------------------end----------------------------------
> Then you get a http server listen in 8080 in default.
> Happy hacking!
>
>
> [1] http://www.nongnu.org/geiser/
>



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Code for fun] Announce my generic server Ragnarok
  2012-04-04  2:41 ` Noah Lavine
@ 2012-04-04  2:42   ` Noah Lavine
  2012-04-04  3:09     ` Nala Ginrut
  2012-04-04 21:42     ` Ludovic Courtès
  0 siblings, 2 replies; 9+ messages in thread
From: Noah Lavine @ 2012-04-04  2:42 UTC (permalink / raw)
  To: Nala Ginrut; +Cc: guile-devel

Oh, a quick followup - could we post a link to this on the Guile web
page? I don't know who is maintaining that now, but it claims to have
a list of projects using Guile, and I think a multi-protocol server is
certainly interesting enough to go there.

Noah

On Tue, Apr 3, 2012 at 10:41 PM, Noah Lavine <noah.b.lavine@gmail.com> wrote:
> That looks excellent! Thanks for posting it.
>
> On Mon, Apr 2, 2012 at 12:23 PM, Nala Ginrut <nalaginrut@gmail.com> wrote:
>> hi falks!
>> Many guys believe Guile-2.0 is powerful, me too. But we need more and more
>> guile projects to prove that.
>> Here's a toy of my coding game. A generic server named "Ragnarok". The
>> keyword "generic" implied it's not only a http-server, but easy
>> to add new protocols without considering the common features for a server
>> such as config/logger/concurrent...
>> If you checkout its code, you may find that it may didn't use web API you
>> thought in Guile lib, and it's bother to implement epoll though Andy is
>> making effort to writing nio/ethread now. Well, the reason is simple,
>> because that API/epoll did exist or not stable at the time I wrote Ragnarok.
>> I think it's easy to port it to our future nio/ethread for a higher
>> concurrency.
>> It's here: git://gitorious.org/glow/ragnarok.git
>> I'll make a main page for it if I find a proper web hosting.
>>
>> Features:
>> * GPLv3 (of course)
>> * Object oriented
>>  (yes, I'm the minority in Guile community who try to program with GOOPS,
>> though FP features may cancel out most of OO features)
>> *  HTTP/1.1
>> *  Multi-protocols
>> *  Multi-languages
>>  (Guile is actually a dynamic compiler collection against the GCC who's the
>> static one according to Andy's free speech. So multi-language
>> must be the most fascinating feature.)
>> *  Guile/Scheme Template
>> *  Configurable
>> *  MIME
>> *  Unified epoll/select/kqueue interface
>> *  Logger
>> *  Standard CGI
>> *  Static page and binary downloading service (of course)
>>
>> These days I'm on my vacation and gave a free speech to Chengdu Linux User
>> Group for a topic about Guile. Many guys are interested in
>> using Scheme for web framework. But they thought it's very clumsy to write
>> Scheme in web development, they love PHP more.
>> For such a misunderstanding, I showed them one of the features in Ragnarok,
>> the Guile template:
>> ---------------------------------cut----------------------------------
>> <html>
>> <% (if (= 1 1) (begin %>
>> <p>asdf: <%= (+ 1 1) %></p>
>> <% )) %>
>>
>> <% (let ((test-me (expt 3 8))) %>
>> <p><%= test-me %></p>
>> <% ) %>
>> </html>
>> ----------------------------------end-------------------------------
>>
>> If you get this dynamic page from Ragnarok server, the result will be:
>> =================
>> <html>
>> <p>asdf: 2</p>
>> <p>6561</p>
>> </html>
>> =================
>> Or open it from any web-browser you like.
>>
>> Well, it's an interesting feature and easy to implement for most guys in
>> Lisp world.
>> The point is, I'm telling them the template is not a big deal for Guile. We
>> have it.
>>
>> After the free talking, an audience ask me: why not release it?
>> I must confess it's just a toy of my coding game. I didn't know if people
>> will be interested in it.
>> And many guys here know much than me, so I'm hesitating.
>> But the sentence on Geiser[1] site struck me: "No hacker is an island". Then
>> I believe I must share it to the world and get more help.
>> Anyway, it's buggy but it really works!
>> If you're in trouble with running it directly, you may try to use it's
>> <server> class for debugging or working with it:
>> --------------------------------------------cut-----------------------------------
>> (use-modules (ragnarok server))
>> (server:run (make <server> #:name "first-http"))
>> --------------------------------------------end----------------------------------
>> Then you get a http server listen in 8080 in default.
>> Happy hacking!
>>
>>
>> [1] http://www.nongnu.org/geiser/
>>



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Code for fun] Announce my generic server Ragnarok
  2012-04-04  2:42   ` Noah Lavine
@ 2012-04-04  3:09     ` Nala Ginrut
  2012-04-04 21:42     ` Ludovic Courtès
  1 sibling, 0 replies; 9+ messages in thread
From: Nala Ginrut @ 2012-04-04  3:09 UTC (permalink / raw)
  To: Noah Lavine; +Cc: guile-devel

Thanks for reply! The answer is definitely yes!
And I'll find a proper web hosting and build a simple site for it soon
if someone is looking for more details or documents. I saw Geiser is
put onto www.nongnu.org. Is it a proper place to build Ragnarok's
site? I'm not sure about what the word "non-gnu" means.

On Wed, Apr 4, 2012 at 10:42 AM, Noah Lavine <noah.b.lavine@gmail.com> wrote:
> Oh, a quick followup - could we post a link to this on the Guile web
> page? I don't know who is maintaining that now, but it claims to have
> a list of projects using Guile, and I think a multi-protocol server is
> certainly interesting enough to go there.
>
> Noah
>
> On Tue, Apr 3, 2012 at 10:41 PM, Noah Lavine <noah.b.lavine@gmail.com> wrote:
>> That looks excellent! Thanks for posting it.
>>
>> On Mon, Apr 2, 2012 at 12:23 PM, Nala Ginrut <nalaginrut@gmail.com> wrote:
>>> hi falks!
>>> Many guys believe Guile-2.0 is powerful, me too. But we need more and more
>>> guile projects to prove that.
>>> Here's a toy of my coding game. A generic server named "Ragnarok". The
>>> keyword "generic" implied it's not only a http-server, but easy
>>> to add new protocols without considering the common features for a server
>>> such as config/logger/concurrent...
>>> If you checkout its code, you may find that it may didn't use web API you
>>> thought in Guile lib, and it's bother to implement epoll though Andy is
>>> making effort to writing nio/ethread now. Well, the reason is simple,
>>> because that API/epoll did exist or not stable at the time I wrote Ragnarok.
>>> I think it's easy to port it to our future nio/ethread for a higher
>>> concurrency.
>>> It's here: git://gitorious.org/glow/ragnarok.git
>>> I'll make a main page for it if I find a proper web hosting.
>>>
>>> Features:
>>> * GPLv3 (of course)
>>> * Object oriented
>>>  (yes, I'm the minority in Guile community who try to program with GOOPS,
>>> though FP features may cancel out most of OO features)
>>> *  HTTP/1.1
>>> *  Multi-protocols
>>> *  Multi-languages
>>>  (Guile is actually a dynamic compiler collection against the GCC who's the
>>> static one according to Andy's free speech. So multi-language
>>> must be the most fascinating feature.)
>>> *  Guile/Scheme Template
>>> *  Configurable
>>> *  MIME
>>> *  Unified epoll/select/kqueue interface
>>> *  Logger
>>> *  Standard CGI
>>> *  Static page and binary downloading service (of course)
>>>
>>> These days I'm on my vacation and gave a free speech to Chengdu Linux User
>>> Group for a topic about Guile. Many guys are interested in
>>> using Scheme for web framework. But they thought it's very clumsy to write
>>> Scheme in web development, they love PHP more.
>>> For such a misunderstanding, I showed them one of the features in Ragnarok,
>>> the Guile template:
>>> ---------------------------------cut----------------------------------
>>> <html>
>>> <% (if (= 1 1) (begin %>
>>> <p>asdf: <%= (+ 1 1) %></p>
>>> <% )) %>
>>>
>>> <% (let ((test-me (expt 3 8))) %>
>>> <p><%= test-me %></p>
>>> <% ) %>
>>> </html>
>>> ----------------------------------end-------------------------------
>>>
>>> If you get this dynamic page from Ragnarok server, the result will be:
>>> =================
>>> <html>
>>> <p>asdf: 2</p>
>>> <p>6561</p>
>>> </html>
>>> =================
>>> Or open it from any web-browser you like.
>>>
>>> Well, it's an interesting feature and easy to implement for most guys in
>>> Lisp world.
>>> The point is, I'm telling them the template is not a big deal for Guile. We
>>> have it.
>>>
>>> After the free talking, an audience ask me: why not release it?
>>> I must confess it's just a toy of my coding game. I didn't know if people
>>> will be interested in it.
>>> And many guys here know much than me, so I'm hesitating.
>>> But the sentence on Geiser[1] site struck me: "No hacker is an island". Then
>>> I believe I must share it to the world and get more help.
>>> Anyway, it's buggy but it really works!
>>> If you're in trouble with running it directly, you may try to use it's
>>> <server> class for debugging or working with it:
>>> --------------------------------------------cut-----------------------------------
>>> (use-modules (ragnarok server))
>>> (server:run (make <server> #:name "first-http"))
>>> --------------------------------------------end----------------------------------
>>> Then you get a http server listen in 8080 in default.
>>> Happy hacking!
>>>
>>>
>>> [1] http://www.nongnu.org/geiser/
>>>



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Code for fun] Announce my generic server Ragnarok
  2012-04-04  2:42   ` Noah Lavine
  2012-04-04  3:09     ` Nala Ginrut
@ 2012-04-04 21:42     ` Ludovic Courtès
  2012-04-06  1:05       ` Noah Lavine
  1 sibling, 1 reply; 9+ messages in thread
From: Ludovic Courtès @ 2012-04-04 21:42 UTC (permalink / raw)
  To: guile-devel

Hi,

Noah Lavine <noah.b.lavine@gmail.com> skribis:

> Oh, a quick followup - could we post a link to this on the Guile web
> page? 

If you want an entry at
<http://www.gnu.org/software/guile/gnu-guile-projects.html#Networking>,
please post an HTML snippet formatted as the ones already there, and
I’ll add it.

Ludo’.




^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Code for fun] Announce my generic server Ragnarok
  2012-04-04 21:42     ` Ludovic Courtès
@ 2012-04-06  1:05       ` Noah Lavine
  2012-04-06  9:12         ` Ludovic Courtès
  0 siblings, 1 reply; 9+ messages in thread
From: Noah Lavine @ 2012-04-06  1:05 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guile-devel

I think this is a fair description:

<DT><B><A HREF="http://gitorious.org/glow/ragnarok/">Ragnarok</A></B>
<DD><TABLE>
<TR><TD><I>description</I></TD>
<TD>A multi-protocol server.</TD>
</TD></TR>
<TR><TD><I>license</I></TD>
<TD>GPL 3</TD></TR></TABLE><P>

On Wed, Apr 4, 2012 at 5:42 PM, Ludovic Courtès <ludo@gnu.org> wrote:
> Hi,
>
> Noah Lavine <noah.b.lavine@gmail.com> skribis:
>
>> Oh, a quick followup - could we post a link to this on the Guile web
>> page?
>
> If you want an entry at
> <http://www.gnu.org/software/guile/gnu-guile-projects.html#Networking>,
> please post an HTML snippet formatted as the ones already there, and
> I’ll add it.
>
> Ludo’.
>
>



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Code for fun] Announce my generic server Ragnarok
  2012-04-06  1:05       ` Noah Lavine
@ 2012-04-06  9:12         ` Ludovic Courtès
  2012-04-06 11:47           ` Noah Lavine
  0 siblings, 1 reply; 9+ messages in thread
From: Ludovic Courtès @ 2012-04-06  9:12 UTC (permalink / raw)
  To: Noah Lavine; +Cc: guile-devel

Hi,

Noah Lavine <noah.b.lavine@gmail.com> skribis:

> I think this is a fair description:

Thanks!

> <DT><B><A HREF="http://gitorious.org/glow/ragnarok/">Ragnarok</A></B>
> <DD><TABLE>
> <TR><TD><I>description</I></TD>
> <TD>A multi-protocol server.</TD>
> </TD></TR>
> <TR><TD><I>license</I></TD>
> <TD>GPL 3</TD></TR></TABLE><P>

Can you elaborate the description?  This one may be too concise to be
correctly interpreted, I think.

Ludo’.



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Code for fun] Announce my generic server Ragnarok
  2012-04-06  9:12         ` Ludovic Courtès
@ 2012-04-06 11:47           ` Noah Lavine
  2012-04-07 12:41             ` Nala Ginrut
  0 siblings, 1 reply; 9+ messages in thread
From: Noah Lavine @ 2012-04-06 11:47 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guile-devel

How about this:

"A server for HTTP and other Internet protocols, with support for
templates, CGI, and more."

Really Nala should be writing this. I haven't used the project yet; I
just think it's good if the Guile webpage lists more projects.

Noah

On Fri, Apr 6, 2012 at 5:12 AM, Ludovic Courtès <ludo@gnu.org> wrote:
> Hi,
>
> Noah Lavine <noah.b.lavine@gmail.com> skribis:
>
>> I think this is a fair description:
>
> Thanks!
>
>> <DT><B><A HREF="http://gitorious.org/glow/ragnarok/">Ragnarok</A></B>
>> <DD><TABLE>
>> <TR><TD><I>description</I></TD>
>> <TD>A multi-protocol server.</TD>
>> </TD></TR>
>> <TR><TD><I>license</I></TD>
>> <TD>GPL 3</TD></TR></TABLE><P>
>
> Can you elaborate the description?  This one may be too concise to be
> correctly interpreted, I think.
>
> Ludo’.



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Code for fun] Announce my generic server Ragnarok
  2012-04-06 11:47           ` Noah Lavine
@ 2012-04-07 12:41             ` Nala Ginrut
  0 siblings, 0 replies; 9+ messages in thread
From: Nala Ginrut @ 2012-04-07 12:41 UTC (permalink / raw)
  To: Noah Lavine; +Cc: Ludovic Courtès, guile-devel

oh~thank you guys! I just end my Chengdu vacation and back to home. So
I didn't reply in time.
I'll give a proper main page address when I done it.
Thanks again!

On Fri, Apr 6, 2012 at 7:47 PM, Noah Lavine <noah.b.lavine@gmail.com> wrote:
> How about this:
>
> "A server for HTTP and other Internet protocols, with support for
> templates, CGI, and more."
>
> Really Nala should be writing this. I haven't used the project yet; I
> just think it's good if the Guile webpage lists more projects.
>
> Noah
>
> On Fri, Apr 6, 2012 at 5:12 AM, Ludovic Courtès <ludo@gnu.org> wrote:
>> Hi,
>>
>> Noah Lavine <noah.b.lavine@gmail.com> skribis:
>>
>>> I think this is a fair description:
>>
>> Thanks!
>>
>>> <DT><B><A HREF="http://gitorious.org/glow/ragnarok/">Ragnarok</A></B>
>>> <DD><TABLE>
>>> <TR><TD><I>description</I></TD>
>>> <TD>A multi-protocol server.</TD>
>>> </TD></TR>
>>> <TR><TD><I>license</I></TD>
>>> <TD>GPL 3</TD></TR></TABLE><P>
>>
>> Can you elaborate the description?  This one may be too concise to be
>> correctly interpreted, I think.
>>
>> Ludo’.
>



^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2012-04-07 12:41 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-04-02 16:23 [Code for fun] Announce my generic server Ragnarok Nala Ginrut
2012-04-04  2:41 ` Noah Lavine
2012-04-04  2:42   ` Noah Lavine
2012-04-04  3:09     ` Nala Ginrut
2012-04-04 21:42     ` Ludovic Courtès
2012-04-06  1:05       ` Noah Lavine
2012-04-06  9:12         ` Ludovic Courtès
2012-04-06 11:47           ` Noah Lavine
2012-04-07 12:41             ` Nala Ginrut

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).