World: r3wp
[!Cheyenne] Discussions about the Cheyenne Web Server
older newer | first last |
Kaj 25-May-2011 [10701] | But I pretend it's way less when programming :-) |
onetom 25-May-2011 [10702x2] | how do u pretend? in ur mind or actually w some traffic shaper? :) |
is it really that fast usually? | |
Kaj 25-May-2011 [10704] | Well, I don't even pretend. I just design things to be as efficient as possible, and that means it almost never needs the speeds here |
onetom 25-May-2011 [10705] | my macbook could still saturate it though 6 times |
Kaj 25-May-2011 [10706x2] | The nice thing about this connection is that it's (mostly) symmetric. But most people here have downstreams roughly in that order, although there's also 2 and 100 MBit around |
You're right about the speed relations. We run ancient hardware, but what usually matters is network speed | |
onetom 25-May-2011 [10708] | the funny thing is with this angularjs framework is that most of the code are static files... hardly any rsp processing is needed. small json is generated dynamically, but even the frontend text dictionaries are static javascript files, and angularjs is doing the language switch live without any server turn around... |
Kaj 25-May-2011 [10709] | Yeah, because the dynamics are moved to the client |
Dockimbel 25-May-2011 [10710] | FYI, I plan to work this Sunday on: - adding proper log file relocation ability for UNIX platforms - make a draft mod for testing static file compression support |
onetom 25-May-2011 [10711] | awesome! |
Kaj 25-May-2011 [10712] | Cool |
Endo 26-May-2011 [10713] | That's nice! |
onetom 28-May-2011 [10714] | studying v8 + node + express + connect looks like a great architecture... i wish it was rebol :) |
Kaj 28-May-2011 [10715] | How does it integrate with AngularJS? |
onetom 28-May-2011 [10716] | i would just use the router and the bodyParser middle wares from it, so it does the json parsing back n forth and the restful url parsing |
onetom 29-May-2011 [10717] | https://github.com/joyent/node/wiki/modules#compression these are the kind of compression solutions for nodejs they also have a plain gzip command line utility based solution too |
Kaj 29-May-2011 [10718] | The zlib binding is written in C++, with templates |
onetom 29-May-2011 [10719x2] | Dockimbel: could you work on the log file location / compressoin stuff? |
imean were u able to work? | |
Dockimbel 29-May-2011 [10721] | not yet |
onetom 29-May-2011 [10722x2] | as im browsing nodejs, i see so many features implemented which is missing from cheyenne, but i have already wanted to use, which makes me seriously consider switching to node. cheyenne has the right foundations, but i feel it requires too much studying of the internals to extend it in a practical way. i think it's better if u focus on red. that's something which not many ppl can and want to do, but would be able to affect the world big time. |
for example i was mapping a company directory service under each companies own subdomains, just to allow them to contribute to this shared directory of companies. but as i see there is a cross origin resource sharing module for nodejs' connect framework, which can take care of sending the access-control-allow-origin headers | |
Kaj 29-May-2011 [10724] | Red has even less features for the moment being, and switching from NodeJS to Red will be harder than from Cheyenne to Red |
onetom 29-May-2011 [10725] | i think it's more a economical usage of our resources if we use nodejs' ecosystem for the next 1-2yrs and copy it to red later. |
Kaj 29-May-2011 [10726] | How so? You'd have switching costs twice in 1-2 years |
onetom 29-May-2011 [10727x2] | im not sure were talking about the same switching. i just have a couple of kilobytes of code in rebol behind cheyenne. other part of the system is in angularjs. im trying to switch that little backend to nodejs from cheyenne. |
as a result im hoping to have this cross origin services, compression, digest auth working and have a convenient url router too. | |
Kaj 29-May-2011 [10729] | So you'll have costs switching all that to Red later. In practice, this usually simply doesn't happen |
onetom 29-May-2011 [10730x2] | i was not thinking about switching all this to red... but i would love to write newer projects on top of a red based async webframework, rather than javascript... |
even the javascript guys hate javascript, i think. that's why they made coffe-script, which looks more like rebol, except they borrowed the indentation from python to achieve less syntax | |
Kaj 29-May-2011 [10732] | Doc, any plans for a JS backend that compiles Red to JavaScript? |
nve 29-May-2011 [10733] | French presentation of Cheyenne available here on http://www.red-chronicle.com | Documentation |
onetom 29-May-2011 [10734] | this cross site request crap would require the handling of OPTION methods too for the so called preflight request which tells the browser what can it expect from the "other origin" -- just saying |
Kaj 29-May-2011 [10735x2] | With a server side framework you don't need this |
It's one of the consequences of moving functionality to the browser | |
onetom 29-May-2011 [10737] | hmm... ok, i step back and think about it. thx, for ringing the complexity alarm! :) on the other hand, i just saw there is https://github.com/nodejitsu/node-http-proxy which is a reverse proxy for nodejs. if u remember, i was missing this functionality from cheyenne too. i think what carl was aiming w rebol is happening w javascript / json now... it's not as advanced as rebol, though, but it's |
Kaj 29-May-2011 [10738x4] | Yes, the good-enough-trauma |
AKA Worse Is Better | |
Red is the only way we have to save a piece of the dream | |
I've just switched NginX in front of Cheyenne to do the reverse proxying, and other things | |
onetom 29-May-2011 [10742x2] | well, i was successfully using the 5k mini webserver as a plain/text webservice ~2yrs ago and i could even chop it down to ~2kb, but in my current project the scenario is not very simple... |
switched nginx ? u mean switched TO nginx? | |
Kaj 29-May-2011 [10744x2] | No, NginX is the reverse proxy for Cheyenne (and Fossil). Several people here went before me |
It's more or less the original web server that did the ultra efficient event I/O that NodeJS is now also doing | |
Dockimbel 29-May-2011 [10746x5] | JS backend: I thought about that, it should be very doable and probably easier than to support a new CPU target. It would require some deep changes in %emitter.r to make storage for global data platform-specific (this change would be required for other real VMs support like JVM, CLR or AVM2). I've planned to use one of these VM for starting such change on a separate branch of code, as I would probably work on it from time to time during next months in experimental mode. |
New revision 144: - added -f option to change working folder location - added -c option to load the config file from a new location See %changelog.txt for more details. | |
Tested only on Windows in encapped mode, will test on Linux tomorrow (sleep time here). | |
Re compression: after a deeper look, there is no way to support "on-the-fly" compression of static files without totally killing Cheyenne performances. If it is done in a mod, it will totally freeze Cheyenne on every CALL. If it is done in an handler, most of benefits from the async I/O main engine is lost, and Cheyenne will be limited to serve small files only (they will be transfered from workers to main process) and limited to 1 request per worker (so if 4 workers, maximum simultaneous request = 4, all others will be put in queue and waiting). So, the only way to support static file compression is by pre-compressing files and adding some config options to let Cheyenne know which files are compressed (file sufix alone is not enough). Pre-compressing means having to manage compressed versions of static files (When and how to compress? Where to put the files? When to delete them? etc...) | |
Nginx might have a good solution to that problem, but if Cheyenne has to copy the nginx approach and performances are required, I guess that it would be more efficient to just use nginx as front-end directly for static files. | |
older newer | first last |