r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[!Cheyenne] Discussions about the Cheyenne Web Server

Kaj
25-Aug-2010
[8859x3]
Florin, Gabriele wrote a templating engine based on XML ID attributes 
several years ago. It's called Temple
I agree with your requirement of designer-approachable templates
Most other REBOL engines you'll find are based on the reverse concept 
of wanting to make as much as possible into REBOL syntax
florin
25-Aug-2010
[8862x3]
Kaj, thanks. I will look for it.
Well, half hour google search does not help finding it.
Does anyone have a busy httpd.cfg to share? Trying to learn from 
some practical examples.
Graham
25-Aug-2010
[8865]
I don't think I've ever seen Temple
florin
25-Aug-2010
[8866]
I don't find much use of rebol view. I'm interested in browser based 
stuff, and that's the only way I'd spend time with rebol. I'd love 
to take a look at Temple.
PeterWood
25-Aug-2010
[8867x2]
I believe this is what you are looking for - http://www.rebol.it/giesse/temple.r

I found it by searching the mailing list archives at rebol.org
This recorded AltME discussion seems to serve as documentation - 
http://www.rebol.it/giesse/Temple.pdf
florin
25-Aug-2010
[8869x3]
Wonderful. I'm going to look into it.
I read the conversation. That is what I am looking for. Unfortunatelly, 
it was anandoned. Temple is not using Cheyenee but cgi.
Graham: It appears that this could be some proof in the puding. Andrew 
has few concerns that seemed to be much like yours. Interesting read. 
I wish I came accross this type of framework when I was still doing 
Struts in 2003.
Graham
25-Aug-2010
[8872x3]
temple is pre-cheyenne
It looks like similar ideas are involved .. complete separation of 
layout from code
Interesting item from the past .. both Brett and Andrew have droppped 
out of the Rebol scene ... the latter not by choice though
florin
25-Aug-2010
[8875]
He passed away or rebol became illegal in his country?
Graham
25-Aug-2010
[8876x2]
He lives in NZ .. I'm not aware of any laws against Rebol here
But he did get sick ..
Gabriele
26-Aug-2010
[8878]
Temple is just an engine, so it can run in any context. It was mostly 
an experiment, and the HTML parser was very basic. I have a much 
better parser now, adapting the functions from Temple should not 
be hard. (left as a nice exercise to the reader :-)

http://www.rebol.it/power-mezz/mezz/load-html.html
Graham
26-Aug-2010
[8879x2]
still CGI though?
Hmm... that makes 3 websites you keep your stuff?
Gabriele
26-Aug-2010
[8881x2]
load-html is just a function.
i have some old stuff scattered around. i'm trying to put most of 
the newest stuff in the Power Mezz package which is on Sourceforge 
and www.rebol.it
Graham
26-Aug-2010
[8883]
what's colle...a used for?
Gabriele
26-Aug-2010
[8884]
more "personal" / work in progress stuff. i've decided to put the 
Power Mezz on www.rebol.it instead because that seems to make more 
sense.
Graham
26-Aug-2010
[8885]
so no more Apache directory listings?
Graham
27-Aug-2010
[8886x2]
Doc says he will try and fix the 'alert issue ... though he's not 
sure it will fix the ability to run as a service
He'll be back here in a few days to answer questiona
florin
28-Aug-2010
[8888]
Gabrielle: temple.r is dependent on utilities.r. Could not find it.
Graham
28-Aug-2010
[8889x2]
FYI, Gabrielle is the female form of Gabriele
check out http://www.colellachiara.com/soft/libs/
florin
28-Aug-2010
[8891]
Thanks for the FYI
Steeve
28-Aug-2010
[8892]
Gabrielle !
http://www.youtube.com/watch?v=7QS6Op-vV94
Graham
28-Aug-2010
[8893]
seems to be encrypted
Steeve
28-Aug-2010
[8894]
at the end ?
Graham
28-Aug-2010
[8895]
codec du francois
Steeve
28-Aug-2010
[8896x2]
lol
But I prefer this one Gabrielle = Gaby
http://www.youtube.com/watch?v=mey8GokRFf4
Graham
28-Aug-2010
[8898]
doc is going to kick us out of his group soon!
Steeve
28-Aug-2010
[8899]
Don't Bother, I know how to deal with him :-)
florin
29-Aug-2010
[8900]
Gabriele: in the temple.r file, the word CONTEXT is used to define 
some functions, then you export them with the 'export function defined 
in the utility.r file. Is there a 'best practice' about it as I don't 
see the difference compared to simply defining it within the scope 
of the file?
Kaj
29-Aug-2010
[8901]
I think it's Gabriele's module system. Similar functionality is standard 
in REBOL 3. When you export explicitly, you can choose what to export 
and what to leave internal to the context, so you have minimum potential 
for conflicts with the global context
florin
29-Aug-2010
[8902]
Got it. Pattern #1.
Gabriele
30-Aug-2010
[8903]
Kaj: well, it's not my module system, but it's basically the same 
thing as using SET 'WORD instead of WORD: , except that it is more 
readable (a newbie can guess what "export" means, while it's harder 
to guess that SET 'WORD is different from WORD:)


Florin: since R2 does not natively include the concept of "modules", 
all of us have been doing various things to avoid polluting the global 
context too much. I eventually got tired of all this and created 
this instead: http://www.rebol.it/power-mezz/mezz/module.html
Dockimbel
3-Sep-2010
[8904]
Hi all, just to let you know that I'm upgrading Cheyenne websocket 
support to the last ws draft RFC, the handshaking part has changed 
and is not compatible with the previous version, causing all current 
Cheyenne ws apps to not work with latest browsers (like Chrome 6).
Davide
3-Sep-2010
[8905]
I've made a func to calculate the challengin code given the header 
request.

It was in the "I'm new" section, but it works nicely, I'm using it 
very often, so it's well tested.


ws-chall: funct [header [string!]] [		
	
	cnt: funct [k] [
		n: copy "" 
		ns: 0 
		repeat x k [
			if all [x >= #"0" x <= #"9"][
				append n x
			] 
			if x = #" " [
				ns: ns + 1
			]
		]
		if ns = 0 [
			return none
		]			
		(to decimal! n) / ns
	]
	
	int-2-char: funct [n [integer! decimal!]] [
		;n: to decimal! n
		head insert insert insert insert make string! 4
			to char! n / 16777216
			to char! (n // 16777216) / 65536 
			to char! (n // 65536) / 256
			to char! n // 256
	]

	attempt [
		t: parse/all replace/all header crlf lf "^/"

  l: copy [] repeat x t [if n: find x ":" [insert tail l reduce [copy/part 
  x (index? n) - 1 next n]]] l: head l
		k1: next select l "Sec-WebSocket-Key1"
		k2: next select l "Sec-WebSocket-Key2"
		k3: next next find header "^/^/"
		aux1: cnt k1
		aux2: cnt k2
	]

	if any [none? aux1 none? aux2 none? k3] [return ""]

 to-string checksum/method rejoin [int-2-char aux1 int-2-char aux2 
 k3] 'md5		
]
Dockimbel
3-Sep-2010
[8906x2]
Thanks for the code, but the handshake implementation was trivial. 
My current issue is the fact that the new ws draft is breaking HTTP 
specifications by using a GET request with a message body...WTF?

I'm not the only one to find that odd: http://blog.iworks.at/?/archives/69-WebSockets-Handshake-non-HTTP-conforming.html
SVN revision 87: websocket support updated to follow draft 76 specs 
(works with Chrome 6+)
Pekr
4-Sep-2010
[8908]
Is http://nodejs.orgsimilar to what websockets does? I found it 
when reading about upcoming Palm (HP) WebOS 2.0 release ...