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

Dockimbel
17-Nov-2010
[9232]
SVN revision 110:

FEAT: default REBOL CGI scripts are now run as normal CGI.

FEAT: new config keyword: fast-rebol-cgi. Forces running REBOL CGI 
scripts in FastCGI mode.

FIX: (Windows) CGI handler rewritten to fix environment variables 
passing.

FIX: CGI 'set-env mapping code refactored, setup errors are now properly 
logged.
FIX: CGI scripts errors are now logged in %trace.log file.

Windows binaries are available for testing:
http://cheyenne-server.org/tmp/cheyenne-r110-pro.zip
http://cheyenne-server.org/tmp/cheyenne-r110-cmd.zip
Dockimbel
19-Nov-2010
[9233]
New binaries for revision 114: http://cheyenne-server.org/blog.rsp?view=24
Endo
24-Nov-2010
[9234]
what was the difference between pro and cmd versions? Sorry if it 
was asked for several times before.
Dockimbel
24-Nov-2010
[9235]
- pro: REBOL/Pro kernel
- cmd: REBOL/Command kernel
Endo
24-Nov-2010
[9236]
no functionality difference, right?
Dockimbel
24-Nov-2010
[9237]
No, Cheyenne just relies on /Library and /Shell components which 
are present in both kernels.
GrahamC
24-Nov-2010
[9238]
Yes, command kernel allows you access to odbc database sources
amacleod
25-Nov-2010
[9239]
Does cheyenne support callbacks
Kaj
25-Nov-2010
[9240]
From where to where?
amacleod
25-Nov-2010
[9241x5]
from a client app (phone app) to my server with my data base.  like 
a json call in js
using jo js framework; 

joScript(url + "&callback=Commuter.dataSource.setData");
So the server, assuming it supports a callback, sends back something 
like this, which gets executed immediately:

Commuter.dataSource.setData({ ... JSON data ...});
Maybe i'm confuesed. Is the callback a function of the web server 
or is it just how I setup my cgi script?
do i just format my data result to look like: 
Commuter.dataSource.setData({ ... JSON data ...});
and then 'print' it for the client to catch (read)?
Oldes
26-Nov-2010
[9246x4]
I think so.
Also you may need to set up correct mime type. The best way is to 
use wireshark to see how it looks elsewhere.
But basicaly I guess that your framework is just using JS to get 
some data from server.
So it must be pretty easy to make it in Cheyenne.. so the final answer 
is: yes:)
Kaj
26-Nov-2010
[9250x4]
I don't think that should be called a callback. The most defining 
nature of callbacks is that they are asynchronous, and that just 
doesn't fit into the browser/web server model
I suspect they would call it a callback because some JavaScript is 
transferred to be executed on the other side, but that's just exchanging 
program code, not asynchronicity
So the answer is indeed that this is nothing more than a normal request 
yielding a response, where the response happens to be JSON or maybe 
even full JavaScript. This depends entirely on your own server and 
client programs, not on the intermediating web server
The code in my Try REBOL site supports this, although it isn't even 
used that way
GrahamC
1-Dec-2010
[9254x2]
If you view this page https://fd.cloud-ehr.net/drugreactions.rsp?rxcuilist=855348541713 541713 849339 108911


Does your browser complain that it doesn't understand what to do 
with the rsp page?
I have this which I thought should be enough

response/buffer: to-json ResObj
response/set-header 'Content-type "application/json"
Claude
1-Dec-2010
[9256x2]
cheyenne for R3 exist ?
cheyenne for R3 exist ?
Pekr
1-Dec-2010
[9258]
I think not. R3 has different port model. First the Uniserve engine 
would have to be ported. Then I am not sure, if Cheyenne uses DLL 
interface or not, but DLL interface is not present in R3 too, we've 
got Extension interface instead. And IIRC, one of main reasons why 
Doc did not port Cheyenne to R3 was - lack of multitasking/threading. 
So - unless RT brings tasking on-board, no Cheyenne for R3.
Dockimbel
1-Dec-2010
[9259x2]
Graham: Chrome shows the JSON output while FF offers to download 
it. It's better to use a READ and a JSON decoder from the console 
to display JSON strings or a plugin like Firebug rather that rely 
on the browser.
Cheyenne on R3: R3 lacks /Shell and /Library components that Cheyenne 
requires, and R3 is still far from being stable (both in design and 
implementation). Extension is also far from being a /Library drop-in 
replacement, I don't want to have to write and maintain per-platform 
C code, that defeats the purpose of using a (supposedly) cross-platform 
tool and it's, IMHO, a big regression from R2. Moreover, once concurrency 
support at low-level will be ready, a big part of Cheyenne would 
need a re-design and rewrite, so I prefer to wait for that for a 
real added value of a R3 port.
GrahamC
1-Dec-2010
[9261]
Doc, I've noticed also that Firefox seems to prioritize the extension 
over the content-type header.
Kaj
1-Dec-2010
[9262]
My Firefox 3.5 wants to save the file. Isn't that a normal reaction 
for a bare json file?
Dockimbel
1-Dec-2010
[9263]
Browsers saving a received content with a application/* mime type 
looks logical to me (unless requested from a JS XHR object).
GrahamC
1-Dec-2010
[9264x2]
What I mean is that FF appears to value the RSP extension higher 
than the content-type header.
in some instances
Kaj
1-Dec-2010
[9266]
I don't think that can be concluded from this case alone
GrahamC
1-Dec-2010
[9267x2]
I have another page which sends application/pdf and it downloads 
the rsp page instead
Or was it application/xfdf ...
Kaj
2-Dec-2010
[9269]
If it downloads the RSP, that would be a problem in the Cheyenne 
configuration, because it is always supposed to execute an RSP
Oldes
2-Dec-2010
[9270]
Are you sure it's Cheyenne what is giving you the rsp page?
GrahamC
2-Dec-2010
[9271]
What else?
Dockimbel
2-Dec-2010
[9272]
it downloads the rsp page instead
 Do you mean that you get the RSP source or RSP output?
GrahamC
2-Dec-2010
[9273]
RSP output
Kaj
2-Dec-2010
[9274]
What's the problem, then?
Dockimbel
2-Dec-2010
[9275]
Graham: you should try by adding the following header to your RSP 
script outputting a PDF file in order to display it in the browser 
:
response/header 'Content-disposition  {inline;filename="doc.pdf"}
GrahamC
2-Dec-2010
[9276]
This is what I am sending

HTTP/1.1 200 OK
Server: Cheyenne/0.9.20
Date: Thu, 02 Dec 2010 15:33:25 GMT
Content-Length: 475
Content-Type: application/vnd.adobe.xfdf
Connection: Keep-Alive
Content-Encoding: deflate
Set-Cookie: RSPSID=XESYTVZSEFSXPQHCTITGRDQG; path=/md; HttpOnly
Cache-Control: private, max-age=0
Expires: -1


Firefox opens up the PDF referenced in the xfdf file that is downloaded.

Chrome just downloads and saves the content.  So maybe it's just 
Chrome's PDF "plugin" that doesn't understand what to do ...
Dockimbel
3-Dec-2010
[9277]
Seems like a Chrome mime type mapping issue, see : http://www.google.com/support/forum/p/Chrome/thread?tid=43bec1a85f6c7c9c&hl=en
Pekr
3-Dec-2010
[9278x2]
Doc - I would like to ask about your argument of R3 missing DLL port 
- just shortly - what is Cheyenne using DLL interface for? And second 
- DLLs are generally not cross platform too, no?
/shell is available, just less powerfull. /wait was added at least. 
/output is not there, but in such a case /wait is sufficient - you 
can redirect to file, and read it after the return from the call/wait 
.... it is just a note, I don't want to lobby for R3 port, that would 
be - preliminary :-) ... at least unless concurrency model is available, 
it would be worthless ...
Dockimbel
3-Dec-2010
[9280]
What is Cheyenne using DLL interface for?
 

- UNIX: CGI support, running as user instead of root, management 
of external servers (like PHP)

- Windows: CGI support, external servers (PHP), Desktop detection 
(for hiding working files), NT Services support, mutiple instances 
support, systray menu

DLLs are generally not cross platform too, no?

DLL are not, but the mappings to the DLL can be written easily in 
REBOL code, no need to go down to C. I see that as a big advantage 
in simplicity and maintainability.

/shell is available, just less powerfull.
Cheyenne requires /info, /output, /input and /error.


/output is not there, but in such a case /wait is sufficient - you 
can redirect to file, and read it after the return from the call/wait

If you want to have the slowest CGI support in the world, that's 
a good way for sure!
Pekr
3-Dec-2010
[9281]
That sucks then ... RT's attitude is - do it yourself, as it is 12 
pages of C code, and we don't care about having R3 doing at least 
the same stuff as was possible with R2. I described the syndrome 
here:


http://rebol.net/wiki/What_makes_a_good_beta#Wrong_attitude_towards_finishind_R3.3F