AltME groups: search
Help · search scripts · search articles · search mailing listresults summary
world | hits |
r4wp | 4382 |
r3wp | 44224 |
total: | 48606 |
results window for this page: [start: 19301 end: 19400]
world-name: r3wp
Group: !Cheyenne ... Discussions about the Cheyenne Web Server [web-public] | ||
Maxim: 20-May-2009 | thanks... wrt CRON... when you release the next version, I could drop that into it and send it back to you. you don`t have to do everything yourself :-D | |
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. ;-) | |
Dockimbel: 21-May-2009 | A few small intranet apps in a couple of TOP 5 french company are using Cheyenne and RSP. | |
Dockimbel: 21-May-2009 | And we have also a big product using Cheyenne/RSP with already a few dozens customers. | |
Henrik: 21-May-2009 | Dockimbel, let's say R3 was done and most bugs were squashed, would you then build Cheyenne for R3 and would it be from scratch? | |
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 | R3: when it will be feature complete and in final beta stage, sure I will. I'll probably rewrite complety the lower level networking code and try to keep as much as possible the higher level code. | |
Henrik: 21-May-2009 | what role would uniserve play, if networking is completely async and threading is possible in R3? | |
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. | |
Maxim: 21-May-2009 | and obviously, you musn't have two servers with the same ports. | |
Janko: 21-May-2009 | as Henrik said.. cheyenne was certanly rebol "web-window" for me. The day I tested and saw it can handle 300req/sec I switched to rebol for webdev.. there is no way I would use ordinary CGI to make webapps at this time. | |
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. | |
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. | |
Maxim: 21-May-2009 | pekr, who cares if there are 2000 versions of compiled rebol out there. RT's is always going to be the default, and all the rest will be purpose built. at least now we can play with any other tool. | |
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. | |
Pekr: 22-May-2009 | BrianH: how do you want to bring something like Cheyenne (Uniserve) to R3, if such low level stuff as concurency is not designed yet? Wouldn't it (using tasks or not) influence its design? So do we wait for new R3 concurency model, or do we proceed with protocols, and rewrite later? (we can move to R3 chat instead) | |
Pekr: 22-May-2009 | BrianH: I think that what Doc means by Windows console is R2 kind of console, not that ugly black monster Windows offers you by default :-) There was lots of talk about the console topic and we imo need both - system default one, for admins, and GUI based one, for normal users. But GUI console could be created using View, as Cyphre showed, even in R2 it was nicely usable ... | |
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. | |
BrianH: 22-May-2009 | Be sure to select the QuickEdit Mode and Insert Mode options for the DOS console - they make your life easier :) | |
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 | logging: See %changelog.txt (search for disable-log and no-log) | |
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). | |
Maxim: 22-May-2009 | the thing is that in order to save resources, mod-remark will be creating MANY static files (including images and css scripts) but the content of those pages can ultimately change at each refresh, if the user is editing preference type information. | |
Dockimbel: 22-May-2009 | Just remember one important thing : mods live in the main process (the one running UniServe), so you have to keep mod handlers fast enough to not slow down the whole server. That's why Task-master service and it's helper process are here, to handle the load for the main process. See mod-action as an example of unloading the main process from the burden of running CGI scripts. | |
Maxim: 22-May-2009 | yep. I know all about the task handlers... they are one reason I was having difficulty tracking where and how dynamic code was being run in my client's app. ;-) | |
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). | |
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 | So, it looks like everything from client to server, to cheyenne is passed correctly. And than inside the RSP page it's lost. | |
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. | |
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. | |
Maxim: 24-May-2009 | hehehe, will be providing the link to my site once its on-line, and then will start working on revault, for which I also purchased domains. | |
Maxim: 24-May-2009 | already using cheyenne-admin to setup my bash user config files (~/.xxxx files) copying files locally, editing in ultra-edit, and uploading them back all via one click for xfer :-) I'm lazy hehehehe | |
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. | |
Maxim: 25-May-2009 | there are too few comments (read as almost none ;-) in your code, and that doesn't slow down server in any way ;-D | |
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 | Session data is passed to task-handlers along with each request and saved back in main process on task-handlers response. | |
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 | 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 | 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. | |
Maxim: 25-May-2009 | all the code which was originally called to create the news items is skipped... until some site parameter changes how the news items are built, which will automatically cause the news item to reprocess... but on the page and server side, nothing special needs to be done. liquid's internal caching will fork the processing by itself, and then start serving the new cached data the very next time any single news item is asked for again. | |
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 difference is that with liquid, its explicit, and I can explicitely share some data accross many scripts, but just some of them. the headers can be half cached, where each page uses half the common header, inserts its local menu into it, and that header is now permanently cached for all further requests of that page, but it used part of data which was already cached by another page. | |
Robert: 25-May-2009 | query-string: Ah, the problem comes from a wrong rewrite rule for GET requests. I need to figure out how to handle this case. That's what I like about web-stuff: There are so many possibilities and places that something can fail... | |
Maxim: 25-May-2009 | its actually a global property of php that you can change the url parameter separators for your site in order to fight back against bots and make hacking a bit more complicated. | |
Maxim: 25-May-2009 | so most people put their time on tackling the real problems like sql injection and https use properly | |
Maxim: 25-May-2009 | and use https properly. | |
Maxim: 29-May-2009 | doc, I have noticed a usage in your mods which you might want to change for speed reasons. you use the word return a lot... and in my tests, it causes a BIG performance hit on function calling... I really mean noticeable when you do loop profiling ... a minimum of 20% slow down IIRC. so instead of: phase: func [svc req conf][ if declined? [return none] ... if let-others [return false] ... true ] you really should be doing phase: func [svc req conf][ if accept? req [ ... true = let-others? req ] ] just my two cents. | |
Maxim: 29-May-2009 | its just a question of maximising performance, and I know dockimbel is very serious about improving cheyenne's . | |
Maxim: 29-May-2009 | help! cheyenne has no trace.log file in logs, and I can't get the verbosity to work without using command-line args which isn't an option in my current setup. | |
Maxim: 29-May-2009 | but I finaly conceded victory to cheyenne and managed to setup args for my startup... | |
Graham: 29-May-2009 | and exactly why can't you run it in verbose mode? | |
Maxim: 29-May-2009 | I was studying the req object and it has a log? parameter in the out subobject. | |
Maxim: 29-May-2009 | download and double click.... but I'm working on mod-remark, so its not currently serving web pages... | |
Maxim: 29-May-2009 | still at first, i did see the standard cheyenne pages and don't have any logs. | |
Dockimbel: 30-May-2009 | RETURN usage: your benchmark doesn't reflect real usage. RETURN cost is only significant if you didn't spent much time since you've entered in the function. In other terms, if RETURN is at the very beginning of the function, it might have a significant (means measurable, doesn't imply high) impact on performances, if much code has been processed before reaching it, I guess that you won't be able to measure any difference in performances. In Cheyenne's mods, I often use a testing expression at the beginning and jumping out if it doesn't match. Let's try to calculate how much gain I would get by removing this early RETURN : - 500 incoming req/s (extreme load conditions) - 10 mods - 12 callback / mod (each one having a early RETURN) - execution time for testing expression before each RETURN : 0 (will give us the maximum possible final gain) RETURN evaluation time : (according to your benchmark) >> (1.032 - 0.296) / 1E6 == 7.36E-7 # of RETURN evaluated under the testing conditions during 1 sec : >> 500 * 10 * 12 == 60000 Time spent in 60000 RETURN : >> 7.36E-7 * 60000 == 4.416E-2 ; = 44 ms, roughly 1 / 20 sec So, under extreme conditions, having a testing condition before RETURN taking no time, we can have a maximum gain of 5%. This translates in real usage in a gain of 0 to 5% depending on server's load and test branching conditions performances. Looking at the testing conditions in current mods, I guess we could squizze between 0 and 2% (under extreme load only). I'll try to hunt down those early RETURN cases in future versions. Btw, there's a drawback in not using RETURN, you end up with nesting IF/EITHER expressions, which gives you less readable code IMO. | |
BrianH: 30-May-2009 | Also, setting conditions and using IF or EITHER expressions has overhead too. | |
Robert: 30-May-2009 | Are the paremters in request/content somehow checked after receving from the client if they contain malisous Rebol code or anything else? Or is everything just plain converted to string! and that's it? | |
Maxim: 30-May-2009 | verbose is at vvvvv (working) and pages are being served... yet I have no *.log files. | |
Maxim: 30-May-2009 | thanks for the log-dir config... should put ALLthe configs in the httpd.conf file and gray them, like apache does it... with comments on what each config does... | |
Dockimbel: 31-May-2009 | Currently yes. I didn't found any value of having logs both on screen and on disk at the same time. But if you can convince me that it has a value, I may support it in future. | |
Maxim: 31-May-2009 | if you had log option and console option within the default config file, (commented out or not) then users choose what they want. | |
Maxim: 31-May-2009 | my client uses the console for real-time status checking... using remote desktop and just noticing if the client isn't serving stuff anymore... but the logs then allow you unravel what led to that problem. | |
Dockimbel: 1-Jun-2009 | Max: I agree the main issue is not having config options documented. About the current logging rules, I've always found that's way handier to pass command-line options than having to edit a config file. I'll see in the next version how I can improve that. Btw, I recommend running Cheyenne as encapped binary on production servers, it's simplier to handle (especially on Unix) and more secure (you can't corrupt some vital source file). | |
Maxim: 6-Jun-2009 | in the httpd.cfg... listen [83] I'm using cheyenne on port 81 since I also have apache on my system and it works. the url will be http://mysite.com:81/index.html not using vhost though. | |
amacleod: 6-Jun-2009 | Yes its listening to port 83 and I get the default web page (Cheyenne test page for now) If I URL to the "mysite" dir (www.defaultsite.com/mysite) I get vhost index page... | |
amacleod: 9-Jun-2009 | I have no reference to it... just localhost and a bunch added by spybot | |
Maxim: 9-Jun-2009 | and if they are set to local host, then you can even trap them using a service expecting known ports. | |
Dockimbel: 10-Jun-2009 | Amacleod: did you tried Apache and Cheyenne using same server port? | |
amacleod: 10-Jun-2009 | no, doc apache is on 82...cheyenne is on port 81 on the server and i tried 83 on y other computer.. iI reaching the default page..just not getting vhosts dir | |
Robert: 12-Jun-2009 | I have a problem, that after some running time Cheyenne seems to get into an unstable state and my REST shopping-cart isn't working any longer. I got this error in the trace.log, which seems to be Cheyenne internal: 5/6-10:09:48.142823-## Error in [task-handler-40014] : Make object! [ code: 501 type: 'access id: 'not-open arg1: "Port" arg2: none arg3: none near: [parse/all current: fourth entry [ any [ end break | "#[" copy value to #"]" skip ( append out reform [ " prin any [pick cat" locale/id? value mold value #"]" ] ) | "<%" [#"=" (append out " prin ") | none] copy value [to "%>" | none] 2 skip ( if value [repend out [value #" "]] ) | s: copy value [any [e: "<%" :e break | e: "#[" :e break | skip]] e: ( append out reform [" txt" index? s offset? s e #" "] ) ] ]] where: 'confirm ] ! 5/6-23:01:46.501455-## Error in [task-handler-40014] : Make object! [ code: 501 type: 'access id: 'not-open arg1: "Port" arg2: none arg3: none near: [unless no-lang [ id: locale/lang locale/set-default-lang ] out: make ] where: 'confirm ] ! | |
Robert: 12-Jun-2009 | Any idea what's going on? I could install a CRON job to killall instances and restart Cheyenne every 24h but IMO that shouldn't be the case. | |
Janko: 12-Jun-2009 | I have cheyenne (previous version) running 2 sites with moderate load for 2 months on some VPS and I never needed to reset it.. onother VPS I have the latest version running for about amonth too | |
Robert: 12-Jun-2009 | Mostly nothing. Cheyenne is working as a reverse proxy and just servers an RSP file. | |
Robert: 12-Jun-2009 | I just use GET and POST. | |
Dockimbel: 15-Jun-2009 | It's just a intermediate binary, it's not the full 0.9.20 version I'm planning to release, there's still a lot of small fixes and enhancements to add. | |
Maxim: 20-Jun-2009 | doc: might I do a RFE (request for enhancement)? add a ./conf/ dir to cheyenne and load every file that ends with .cfg this would allow us to distribute a configuration file with a module and provide setups per mod... its much more flexible to manage. we could also have a setup for each vhost in our system, if that makes sense for the web admin. | |
Maxim: 20-Jun-2009 | cool. and I'm reiterating the need to provide a sample file ala apache with a paragraph of comments or two which explain all configs... just in case you forgot to note it... this for me is big hassle. for example... the subtleties behind 'BIND and 'BIND-EXTERN are not obvious to deduce just by the name... -what is the difference in how they are cached? -is an external handler explicitely needed with 'BIND-EXTERN (no, in fact, but it enables it) -how does one use an external handler? | |
Maxim: 20-Jun-2009 | yes... I already new... but I had to trace the code and lost some time wondering why my page wasn't being re-rendered when I first used 'BIND ;-) I also had to trace the logic to make sure that cheyenne wasn't actually expecting an external handler if I used 'BIND-EXTERN... I ended up loosing more than an hour to figure it out myself... now that is just one config... there are MANY... a lot of them I don't even know exist. the above is exactly the kind of information which should be included within the httpd.cfg file, even if an example is commented out, but provided as an example use. just like apache does it. | |
Maxim: 20-Jun-2009 | I am trying to make mod-remark as consistent and integrated as possible with the rest of cheyenne. the end goal being that you remove the rsp from your modules and drop-in remark instead. | |
Maxim: 20-Jun-2009 | I've scrapped the previous remark system in favor building remark v3 right away. this will actually help me build the mod much faster and will provide 100% dataflow engine from its first release. every single programmable entity within mod-remark is now based on a plug. the architecture I have now is becoming very orthogonal... instead of building up different objects for each level of config, I think I'll be able to reduce it to ONE. these models will serve as references for the !compilator to create persistent !documents... note that !documents are multi-leveled... you build documents by linking up document together.... so if only part of a !document is dynamic, only that part will cause processing... and by dynamic, I don't mean that its cgi... I mean it has actually changed. down to a single HTML element. that's what I am aiming in any case. !documents can be stored at any level... from server down to specific page and single session. caching is embeded in liquid so it should be pretty fast, and inter document data sharing should allow us to make it very RAM efficient too. | |
Dockimbel: 20-Jun-2009 | I hate Apache config file. Because I hate having to read tons of docs to just "switch on" some app. Cheyenne's config file has never been designed to copy the Apache way, nor to be used by average end user. It's just a placeholder waiting to be replaced by a builtin web GUI allowing a simple, fast and straightforward way to manage the server. That has been the plan since the beginning and one of the main motivation for building Cheyenne. Unfortunately, I never had the required time to complete that goal yet, so I'm stuck with that, and that's also why Cheyenne is still at 0.9.x. | |
Maxim: 20-Jun-2009 | but the cfg file becomes documentation... that is the real use of the text, and it lives directly within system, so you don't have to maintain different things. hate apache as you like, anyone can configure it very quickly, since its all there. | |
Maxim: 20-Jun-2009 | and GUIs are a hell of a lot more complicated to maintain than text. change one little thing in the file format and you've got to redesign alot of code... this doesn't happen with a file, since its being used directly. | |
Dockimbel: 20-Jun-2009 | Anyway, I'll try to list and add one or two comment lines for each available option in the next release, but I won't spend days writing docs for the config file. | |
Maxim: 20-Jun-2009 | if the config GUI is web based... then it relies on the server actually working... but I'm not trying to argue with you, just pointing out the fact that server configuration is usually much better handled in text and I think many admins prefer it. the fact that everything in windows is GUI based is the most annoying aspect about it. | |
Maxim: 20-Jun-2009 | I have a generic configuration managing library... the documentation is directly embeded in the configuration engine... if you save out the config or print it on screen, you have all the docs right there with it. if you build a gui which uses the configuration data, you can also pull out the text from it. maybe that is what should be done.... allow string types within the config dialect (and store it appropriately). then you/we could easily build tools using that info directly. | |
Dockimbel: 20-Jun-2009 | True, but the goal is to make it simple and easy to use for the average user, without requiring to read lengthly docs. | |
Maxim: 20-Jun-2009 | as long as the config GUI is only a tool over the files, and it doesn't overwrite the files automatically, I won't complain :-) |
19301 / 48606 | 1 | 2 | 3 | 4 | 5 | ... | 192 | 193 | [194] | 195 | 196 | ... | 483 | 484 | 485 | 486 | 487 |