AltME groups: search
Help · search scripts · search articles · search mailing listresults summary
world | hits |
r4wp | 5907 |
r3wp | 58701 |
total: | 64608 |
results window for this page: [start: 25201 end: 25300]
world-name: r3wp
Group: !Cheyenne ... Discussions about the Cheyenne Web Server [web-public] | ||
Dockimbel: 16-May-2009 | I was thinking about making a low-level dialect allowing to simulate user actions in a web browser. Then use that dialect to build a higher level dialect (specific for each webapp) allowing to navigate inside a webapp, make complex actions and check the result, using a minimal set of keywords. I haven't wrote down, nor refined those ideas, but it should be able to give you (at the higher level) something like : [ go site-assistant signup login: "[user-:-test-:-com]" pass: "pass" check-page default-page add-new-website website: "rebol.com" registrar: "registrar" check-result site-created "rebol.com" check-details website-form "rebol.com" "registrar" ... ] | |
Dockimbel: 16-May-2009 | In this example, test data is hardcoded, but the dialect should be able to read data from scenarii blocks allowing to loop test a sequence of features using several data sets. | |
Dockimbel: 16-May-2009 | I'd like to have a test dialect being it's own meta-dialect, so that you can build higher level dialect one on top of the other, to be able to test you webapp at *any* level (from basic HTTP request, to full simulation of a working day). | |
Janko: 16-May-2009 | yes, dialect based solution would be very interesting ... I was thinking about dialects a little too (not concrete yet) ... currently my testing engine is made so that it uses a proxy and it records your what you do via browser and then it can repeat the same and comparte the output (it already figures out that it needs to set different cookie and some basic stuff to login for example , and I have idea to make it scriptable for other dynamic data but I haven't come that far yet ) . It also doesn't do any smart comparisson of the outputs, but more of a report for human to view for now | |
Dockimbel: 16-May-2009 | The recording proxy can be a very efficient approach for non-regression testing. | |
Robert: 16-May-2009 | A bit OT but Lad and I started a test-dialect for RebGUI. You could send CLICK to GUI objects etc. and compare results and state, make screenshots of something was wrong etc. | |
Robert: 16-May-2009 | I think I will pic-up the project in a couple of weeks again and push a bit forward and than it get useable. | |
Dockimbel: 16-May-2009 | Yes, I think we could come up with a compatible reporting format. | |
Robert: 16-May-2009 | Here is a snippet of a test script: new_company: [ dt: "Eingabe/Firmeninformationen" with company [ ; reset data form press-right a check note = "" name: "Test Suite Company 1" address: "Teststra§e. 10" ; should bring up an ALERT check-window [press a][press ok] ; country: "Deutschland" ; press a ; select sector check-window [press req-sector][ sector-table: ["27"] ] ] ] | |
Robert: 16-May-2009 | company_tbl_test: [ company_tbl: [61 "GFA-Motoren"] check company_tbl = [61 "GFA-Motoren"] ] First line sets a line in a table, second line checks if the selected value matches. | |
Dockimbel: 16-May-2009 | Robert, maybe it should be the right time to switch to a "Testing" group (surprinsingly, there's no such group yet), we're going too OT. | |
Dockimbel: 16-May-2009 | Max, that sounds too hard, a ringing bell would be more accurate. ;-) | |
Maxim: 18-May-2009 | I was doing a search on cheyenne the other day and came accross this. Is she a relative of yours doc? ;-) | |
Maxim: 18-May-2009 | yess.... a glorious cheyenne built 404 page not found in my browser using firefox and my new VPS with shiny 6 letter domain name :-) | |
Maxim: 18-May-2009 | now the fun part... building a new web site from scratch, using brand new technology ;-) | |
Dockimbel: 18-May-2009 | Cheyenne's 404 : sounds like a victory scream. :-) | |
Maxim: 19-May-2009 | doc, trying to understand the mod 'WORDS dialect... I am reading its parser, and I still don't get what the 'IN token does. or what options I can use, or even why its needed. can you give me a few pointers on how and why it should be used? | |
Maxim: 19-May-2009 | Q2: within the mod, requests have a locals value of none, does any of the uniserve/cheyenne internals touch this or can I use this at will within any module, creating an object and appending/changing attributes as needed? | |
Maxim: 19-May-2009 | Q3: Are there any time-based call backs we can implement through mods? sort of like a rate on a view face. this would be very usefull: -it could allow me to keep statistics on mod internals at regular intervals ex: average load, high/low peaks, -perform cash cleanup/buildup, ping remote tools for "I am alive" monitors, etc. | |
Robert: 20-May-2009 | I hope there is a simple trick I don't see at the moment: | |
Robert: 20-May-2009 | As a result of an RSP script I want to return a new web-page that's on the file-system. I do it like this: print read %payment/index.html So far this works. What I need to do is, to insert some dynamic content into the read HTML file. | |
Robert: 20-May-2009 | For this I see several options: 1. Somehow load this file as an RSP file and have it processed. 2. Somehow load this file as a SHTML file and have it processed as SSI file. 3. Add some marks and inser the stuff on the fly before delivering it. | |
Dockimbel: 20-May-2009 | Q1 - WORDS dialect : this dialect allow defining new config keywords that can be used in the %httpd.cfg file for your mod. IN defines the config file sections where it can apply. Possible values are : - globals : global config block used for server-wide options - main : applies to a domain or webapp context - location / folder : reserved for future use. | |
Dockimbel: 20-May-2009 | Q3 : Not yet. It's a planned feature that I need also to add a simple CRON-like task scheduler inside Cheyenne. Feel free to add your own in your mod, I don't that I'll have time to work on it before middle summer (low priority task). | |
Dockimbel: 21-May-2009 | I'd like to not do everything by myself, but it's not that easy. I have some deep concerns for Cheyenne core part such as speed, memory usage, stability and security. Cheyenne has become a *critical* part of our business, I have to garantee that a new version won't break our webapps in production, nor make them instable, insecure or noticeably slower. My responsibility also extends to other companies that are selling products or services based on Cheyenne. I've already accepted small patches on Cheyenne core in the past, but it takes me a lot of time to study and test each line of code an rewrite them if required. If your code has only a local impact, I might use it, if it needs to patch a lot of parts of Cheyenne/UniServe, I probably won't. Anyway, you can send it to me, it's always a good inspiration to see how other developers solved some specific problem. | |
Dockimbel: 21-May-2009 | I can't disclose much right now, one of our Cheyenne based product is getting a lot of attention recently and in a couple of weeks, we will know if we need to hire a few more peoples at Softinnov. ;-) | |
Graham: 21-May-2009 | I thought he worked for a company .. didn't realise Rebol was important in that way. | |
Dockimbel: 21-May-2009 | A few small intranet apps in a couple of TOP 5 french company are using Cheyenne and RSP. | |
Graham: 21-May-2009 | I did release my Hylafax web portal which I know a few people are using :) | |
Dockimbel: 21-May-2009 | And we have also a big product using Cheyenne/RSP with already a few dozens customers. | |
Dockimbel: 21-May-2009 | I prefer to keep it "under the radar" for a few more weeks. ;-) | |
Graham: 21-May-2009 | I did build a web portal to my medical database .. but too busy to keep that going. Have to learn a lot more jQuery .... | |
Graham: 21-May-2009 | Still, I have a few users of that as well. | |
Henrik: 21-May-2009 | I see Cheyenne as a web-window to REBOL apps. | |
Graham: 21-May-2009 | the inability to run more than one Cheyenne server at the same time has been a problem too. | |
Graham: 21-May-2009 | I don't see it anymore because now I use a Rebol client to access Cheyenne and not a web browser. | |
Dockimbel: 21-May-2009 | UniServe is a thin framework layer other the raw port! stuff. It provides an event-oriented framework for implementing server or client side protocols. Some UniServe events are same as the lower async ones : on-connect, on-close. Other are higher level such as : on-receive (trigger when a given amount of data or a given sequence is received). | |
Graham: 21-May-2009 | Did I mention I'd like to see a zope clone one day :) | |
Robert: 21-May-2009 | response/Forward: This looks good. from the docs I see that it's possible to forward to a new RSP page. Will this work with a SHTML page as well? | |
Maxim: 21-May-2009 | graham, you can run MANY cheyenne servers on the same system . and they can be handling several thousand requests / hour each without failure. at my client cheyenne is probably the most stable server application they have, a part from apache. | |
Dockimbel: 21-May-2009 | UniServe still has a purpose in R3, but it implementation will be much lighter and it will run much faster. Btw, one of UniServe's plugin, Task-master, is in charge of running and exchanging data with external processes given true multitasking abilities to UniServe's based products (RSP scripts are evaluated in such helper processes). R3 multithreading will make multitasking much simpler and way much faster. | |
Maxim: 21-May-2009 | the mod for access refusal is finished btw. it works really well, I ended up doing it in a mod and doing a few invisible actions within the make-response and task-done callbacks. | |
Janko: 21-May-2009 | Graham: qwikitodo has close to 100 todos so it's "finished" although it will keep evolving, but it's a small project | |
Henrik: 21-May-2009 | that said, if R3 provides the capability of producing a really good webserver in 5 kb, I might use that instead. | |
Maxim: 21-May-2009 | henrik: "that said, if R3 provides the capability of producing a really good webserver in 5 kb, I might use that instead." what do you mean? a webserver is not just about tcp/ip.... its all the framework it provides. supporting the full range of reply errors, plugins, proper headers, etc , etc. you can't really make that kind of thing in 5kb. | |
Henrik: 21-May-2009 | Well, maybe you can't. I haven't given any thought to what it takes. I was only thinking of the basics like large file transfer and proper working async ports and threading. some basics that a good webserver can do. | |
Maxim: 21-May-2009 | right now, I can tell you that cheyenne, from the client's point of view, does all of that. R3 will just allow it to be a bit faster, probably a bit more robust at the seams, and definitely easier to support, since some of the workarounds will now be implemented directly, and whatever is missing, doc can add/fix directly in binary. | |
Maxim: 21-May-2009 | apache coders would already be jealous at how easy it really is to build a mod right now... even the configs can be specified within the mod with a few words. | |
Dockimbel: 21-May-2009 | Having the TCP/IP part open-sourced in R3 will be great. It will allow to use much faster OS hooks for file transfers, extend the port! API to bind only on selected interfaces, etc...I wonder if the main event loop will be there also, so we can replace the not-scalable Select( ) call by other faster ones or even integrate libevent. That would definitely make Cheyenne able to handle a much higher number of connections. | |
Maxim: 21-May-2009 | for my part, when R3 goes open, I'll be integrating liquid-paint with OpenGL asap... which will completely alleviate my need for /view. we will have a 3D native GUI :-) | |
BrianH: 21-May-2009 | Not just the TCP code will be open in R3 - the HTTP port code will also be open. One of the goals is to make something like UniServe completely unnecessary for R3. This is not a criticism of UniServe, but of R2. If R2's networking infrastructure were good enough we wouldn't need UniServe. Hopefully by the time that Cheyenne is ready to be rewritten for R3 it will be able to be written right on R3's HTTP ports. | |
Pekr: 21-May-2009 | libevent was suggested in the past, along with links to liboop etc. Not sure the licence is OK. Anyway - I wonder where do we go such a way? I can already imagine complete mess and tens of versions of custom R3s, if such low level things as main event loop are open-sourced and replaceable. | |
BrianH: 21-May-2009 | Doc, the intention is for the R3 HTTP scheme to also support http server use. However, the current HTTP scheme is just a placeholder until someone can update or rewrite it. Client use is jst what (barely) works in the placeholder. | |
BrianH: 21-May-2009 | Perhaps someone who has already written a kick-ass web server... :) | |
BrianH: 21-May-2009 | That would require me to get a round tuit though. | |
Maxim: 21-May-2009 | for example, i know of a server which profiled the tcp stack of their server and realised that some buffer sizes didn't get cached the same way through windows. | |
Maxim: 21-May-2009 | just changing the size of buffers and tcp payloads added a big speed boost. stupid detail, but now if we have such cases, we can actually really go as deep as that. | |
Dockimbel: 22-May-2009 | Just played a little with DOS console parameters to try to make it look&feel like R2 console. Quite close so far (except for the font). Need to test it in action with R3 to see if I can use it for serious work. I'm very picky about the tools I use daily. | |
BrianH: 22-May-2009 | Yeah, the intention is that a GUI console will be written in REBOL, part of the community-created, open-source portion. Then you can use or adapt the console for your own apps as well if you like. How about having RConsole being implemented with that? :) Right now the GUI doesn't have good-enough Unicode support to make the console yet, so the GUI console will have to wait for the release of the host code (the current priority), and the subsequent resumption of the GUI work. | |
Henrik: 22-May-2009 | How exactly does Cheyenne cache file loads? I have trouble getting a specific REBOL script to load. | |
Henrik: 22-May-2009 | I think I have found a bug where Cheyenne keeps serving an empty file, if I have first had it put in a server directory as a MacOSX shortcut and then replaced it with a real file of the same name. | |
Maxim: 22-May-2009 | is there a way to prevent caching and logging? | |
Dockimbel: 22-May-2009 | If you want mod-remark to take other mod-static caching, just provide a 'make-response handler in mod-remark, give it a higher priority and make sure to return a TRUE value (that will end the phase shadowing mod-static's handler for that phase). You can also just unload mod-static by commenting it inside GLOBALS section in config file (you'll have then to provide all the adequate handlers for serving static resources). | |
Dockimbel: 23-May-2009 | Looks like you've gone really deep in UniServe. Sending job to helper processes has a cost (building message, MOLDing, transmitting through TCP, LOADing, decoding message). With R3 and multithreading, this cost will reduce to zero, thanks to shared memory (or equivalent system). | |
Maxim: 23-May-2009 | yep threads will be a big plus in R3... many apps are much easier to write with threads (of any kind). it breaks up the domain of many problems into smaller pieces. | |
Robert: 24-May-2009 | I use code like this: <input type="radio" name="paymethod" value="paypal" /> <input type="radio" name="paymethod" value="somethingelse" /> And this code is wrapped in a DIV. | |
Robert: 24-May-2009 | It looks like the JS lib toQueryString creates two differnt versions... I'm using mooTools. Very strange. Or is there a cause for this? | |
Graham: 24-May-2009 | Is this a cheyenne issue? | |
Robert: 24-May-2009 | toQueryString: This was a false alarm, it's working correct. | |
Robert: 24-May-2009 | No, I load the answer HTML page and insert some HTML on the fly before returning the page via a PRINT. | |
Dockimbel: 24-May-2009 | It looks like you've added a reformed query-string to a URL already having a query-string. Are you using request/query-string? | |
Maxim: 24-May-2009 | how do I use rconsole to tell cheyenne to reload a mod that has changed on disk... or does cheyenne detect mod-file changes and reload them automatically? | |
Dockimbel: 24-May-2009 | You can't. Mods are part of Cheyenne's kernel and the priority of each mod's callback is determined relatively to the other mods during Cheyenne boot (kind of competition for higher priority for each phase). Reloading a mod would required reloading all the mods, breaking most of the active connections (CGI, RSP, FastCGI,...). So the answer is : kill and reload Cheyenne. | |
Maxim: 24-May-2009 | with your permission I would like to rebrand ssh-admin to Cheyenne-admin. its like a stand-alone cpanel for cheyenne-based systems. All the current file and system commands options to manage the host server too will be complimented with any tools needed to configure and control cheyenne and any mods which are installed. | |
Dockimbel: 24-May-2009 | I make a hash! list of all the phases' callbacks, so the impact on performances remains very low. | |
Dockimbel: 24-May-2009 | Go on for the name, my own Cheyenne admin panel is still at a very early stage. | |
Maxim: 24-May-2009 | I am using this site as a showcase for all of my work. including web, visual arts, music, design, programming, etc. | |
Maxim: 24-May-2009 | cheyenne-admin also has a *VERY* nice GUI, using GLayout. | |
Maxim: 24-May-2009 | Note this is a linux server-side only tool (currently). currently: -remote browing of files in a gui. -uploading/downloading any files to/from the webserver -running command-lines remotely soon: -chmoding remote files -handling webserver start/stop/restart remotely. -more as time goes by. | |
Graham: 24-May-2009 | ie. you can't run it from a client PC? | |
Maxim: 24-May-2009 | I meant the server has to be a linux box. | |
Maxim: 24-May-2009 | anyone know if there is a detailed doc on sessions within cheyenne? | |
Maxim: 24-May-2009 | what we need with !cheyenne are minial examples of services and mods which implement all callbacks and give just a small comment on why and when it is called... this would help soo much in understanding how to implement cheyenne extensions. I am currently looking at the rsp code and its so huge and complex that its a big daunting to grasp the whole by looking at its parts. | |
Dockimbel: 25-May-2009 | Mod-RSP is the most complex one and it does a lot of things. Sessions in Cheyenne are RSP-specific. There's a synchronization system in RSP sessions for protection of session data from corruption in concurrent executions. That may be easy to understand by just reading the code. Anyway, feel free to ask for explanations of specific code parts. | |
Dockimbel: 25-May-2009 | It works using a semaphore (session/busy?: yes|no). It used to be very fined-grained with distinction of RSP scripts just reading session data from scripts modifying session data, but it was even more complex to maintain and the RSP source static analysis I was doing could never be 100% accurate (it''s easy to bypass any form of static analysis in R2). So now, it just blocks concurrency inside a user session (only 1 RSP script per user session allowed). | |
Dockimbel: 25-May-2009 | Yes it can, from the server perspective, it's just a sequence of RSP requests. | |
Dockimbel: 25-May-2009 | If you can think of a solid method for allowing concurrency in the same user session, while preserving session data from corruption, I'll be very interested. | |
Maxim: 25-May-2009 | a part from having handler tcp interaction, I can't think of any a part from identifying a way to detect which session data is being used by both scripts. | |
Dockimbel: 25-May-2009 | It's always possible to write session data to disk or to a DB and rely on the DB locking system to ensure that data is safe, but there's a performance overhead in that case that I'm afraid, may not result in any speed gain for the user. It also requires to have a DB engine installed on all servers running Cheyenne using RSP sessions, which might be overkill in some situations. | |
Maxim: 25-May-2009 | this being said... mod-remark will be using persistent liquid nodes for session and post/get parameter side of things, and its possible that I might store session data outside of the server itself, using a liquid-tcp node. so that access to actuall session data could be brokered outside the server's jurisdiction, extremely efficiently, locked one value at a time. and any access/change could be perpetuated to other handlers when they attempt to lock to one session value. | |
Maxim: 25-May-2009 | the idea being that interacting via xml request or full page refresh, with only part of a page parameters, creates the same output :-) | |
Maxim: 25-May-2009 | you could actually have one page sending xml requests to the server in ajax, and another page refreshes with the results of those requests... the second page could also send a page request with the some parameters sent, and the server will reflect all changes to the current session/page so far. | |
Dockimbel: 25-May-2009 | I thought also about doing a TCP based session server (with session variable granularity), but the overhead in synchronization would hit performances (and scalability) too much IMO. If each time you're setting a new value to a session variable in a script, you have to query a TCP server (even a local one), that would have a huge impact on a script execution time. | |
Maxim: 25-May-2009 | might still be much faster than a db call. but the real game-changing aspect of mod-remark is that a document in ram, will only render parts of itself which are changed, or which cannot be cached, so, unless you've actually changed a parameter, it knows that it hasn't changed and will not need to ask for the broker to give it back the value. in fact, it wont even process that part of the page, only using the data in its local node cache directly. | |
Maxim: 25-May-2009 | header/ footer / current login state box/ static page content... this can be shared accross sessions, across the entire site, or as granular as a single page request. | |
Maxim: 25-May-2009 | a news reader could have all the news items cached already and all its doing is assembling those which are matched via the request... really only doing a fast rejoin of many items, and then a rejoin of header news and footer and then spit it out. | |
Dockimbel: 25-May-2009 | That's quite close to how RSP are working. Each RSP script is compiled to optimized REBOL code and cached in memory. A RSP request will then result in evaluating the REBOL code which mostly just append static and dynamic parts in the output buffer. | |
Maxim: 25-May-2009 | the current issue is trying to share the cached data between different handlers... which pits me against a liquid value broker, but its the creation of the data on the broker which might become complex... so not yet shure how I will proceed.. | |
Dockimbel: 25-May-2009 | Max, applying dataflows principles to a web framework looks really appealing, when will be able to see some demos? | |
Maxim: 25-May-2009 | I am aiming for sometime next week, just a few simple prototypes to explore how to handle the difference in nature of web requests opposed to persistent data. |
25201 / 64608 | 1 | 2 | 3 | 4 | 5 | ... | 251 | 252 | [253] | 254 | 255 | ... | 643 | 644 | 645 | 646 | 647 |