[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Code for fun] Announce my generic server Ragnarok

From: Noah Lavine
Subject: Re: [Code for fun] Announce my generic server Ragnarok
Date: Tue, 3 Apr 2012 22:42:37 -0400

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.


On Tue, Apr 3, 2012 at 10:41 PM, Noah Lavine <address@hidden> wrote:
> That looks excellent! Thanks for posting it.
> On Mon, Apr 2, 2012 at 12:23 PM, Nala Ginrut <address@hidden> 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://
>> 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]

reply via email to

[Prev in Thread] Current Thread [Next in Thread]