[Nitro] Bounty: Serverside (pure ruby http server) adapter for Nitro

Michael Fellinger manveru at weez-int.com
Sun Sep 3 22:20:52 EDT 2006


On Monday 04 September 2006 11:11, Alex Pooley wrote:
> Thanks for the link. Firstly, it's nice to have another option. Still,
> I'm intrigued...
>
> I wonder if they (or anyone else?) can actually substantiate the claim
> that it is faster than Mongrel? Mongrel doesn't really do much, so where
> could you improve? Mongrel even goes to the trouble of jumping to C to
> partially pre-process requests.
>
> Also, just flicking through the code (see below) it looks like you won't
> get multiple name=>value pairs for query parameters and cookies. Also
> converting everything to a symbol carries potential for leaking memory,
> particularly when used in this way. That's a DOS waiting to happen
> yeh? :(

Indeed, the more i learn about ServerSide, the more i'm convinced that it's 
trying to be a very lightweight way to serve directory-listings...
not to offend the original author, there are some neat things in there too, 
but i don't think it would stand long in a production-environment.

on the other hand, the very simple clustering and spawning and using 
('serverside start/stop' comes to mind) will have its place on my machine - 
though not to serve nitro - since i'll not use it in production anyway, i've 
got other more crucial things to work on :)
but it's a very nice way to let someone grab a file or two via http... exactly 
the kind of thing i miss since i left kde and don't have the 
kicker-fileserve-plugin anymore :`(

anyway, my advice is to give it a try... :) not as adapter, but as a fine 
additional tool... and who knows what the project will yield later on.

>
> Still, I'll be keeping my eye on ServerSide.
>
> --------------------------------------------------------
> (connection.rb)
>       # Parses query parameters by splitting the query string and
> unescaping
>       # parameter values.
>       def parse_parameters(query)
>         query.split(Const::Ampersand).inject({}) do |m, i|
>           if i =~ Const::ParameterRegexp
>             m[$1.to_sym] = $2.uri_unescape
>           end
>           m
>         end
>       end
>
>       # Parses cookie values passed in the request
>       def parse_cookies
>         @headers[Const::Cookie].split(Const::CookieSplit).inject({}) do |m,
> i| if i =~ Const::CookieRegexp
>             m[$1.to_sym] = $2.uri_unescape
>           end
>           m
>         end
>       end
>
> On Sat, 2006-09-02 at 22:07 +0200, Jonathan Buch wrote:
> > Hi,
> >
> > very interesting: http://code.google.com/p/serverside/
> >
> > Just got that address from James Britt, really interesting....
> > To quote him:  "Faster than Mongrel, but pure Ruby? Interesting ..."
> >
> > Adapter?  Anyone? :P
> >
> > Jo

-- 
Weez International Limited

East Roppongi Bldg 5F, 509
3-16-35 Roppongi, Minato-ku Tokyo #106-0032
Tel: 81-(0)3-3505-3881 Fax: 81-(0)3-3505-3883
E-mail: manveru at weez-int.com
Website: http://weez-int.com


More information about the Nitro-general mailing list