[REBOL] pinging SELMA Re:(5)
In Outlook Express, I can achieve threading by simply clicking at the top of the Subject column to cause the InBox list to be sorted by Subject; this groups all messages with the same subject together, so it's easy to read through them in sequence. Afterwards, I click on the "Received" (date/time) column so the newest messages are at the bottom of the list. Russell [EMAIL PROTECTED] - Original Message - From: <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Monday, September 18, 2000 10:18 PM Subject: [REBOL] pinging SELMA Re:(4) > for threading, > we could have Selma insert/replace a line in the body > like PriorMsg: http://rebol.org/userlist/archive/373/164.html > which points to the most recent (highest numbered) > entry in the same thread. > > probably DONT want it to be in the X-headers though, > many email browsers will make clickable an http:// sequence > so long as it is in the body of the message. > > If Selma does this before broadcasting then > both archive readers and email subscribers will get the benefit. > > > At 04:33 PM 9/19/00 +1200, [EMAIL PROTECTED] wrote: > >Jeff wrote: > > > Anyone actually hacked some improvements to the SELMA code? > > > >I did a while back, but I've since mislaid the code. > > > >Andrew Martin > >ICQ: 26227169 > >http://members.ncbi.com/AndrewMartin/ > >http://members.xoom.com/AndrewMartin/ > >-><- > > > ;# mailto: [EMAIL PROTECTED] >
[REBOL] does REBOL run on Palm or not? Re:(2)
The better enterprise portals, like those described at REBOL.COM, synch with the PalmOS. It's difficult to imagine something like Rebol/Express actually working in the marketplace without at least a Palm conduit < http://www.palmos.com/dev/tech/tools/cdk/ >. If Rebol can't run as an interpreter under the PalmOS stack, perhaps this is the place to start with a native compiler. Basic, C/C++ , and Forth are available now < http://www.palmos.com/dev/tech/tools/ >, along with a free GCC compiler Or at least something like Jump < http://hewgill.com/pilot/jump/index.html >. -Ted. -- Ted Husted, Husted dot Com, Fairport NY USA. -- Custom Software ~ Technical Services. -- Tel 716 425-0252; Fax 716 223-2506. -- http://www.husted.com/
[REBOL] eScribe Rebol Archive vs rebol.org Archive Re:(8)
On 9/8/2000 at 8:03 AM [EMAIL PROTECTED] wrote: >...but then, your message, arriving at my mailbox 12 seconds after the >one you copied the X-SELMA number from has the field >X-SELMA: [REBOL] 342011 >in the header.. >I did not get those 84 messages in between.. Selma routinely skips numbers, as I remember, often because of NDN replies when sending out messages. Though 84 is many more than usual. -T.
[REBOL] pinging SELMA Re:(4)
for threading, we could have Selma insert/replace a line in the body like PriorMsg: http://rebol.org/userlist/archive/373/164.html which points to the most recent (highest numbered) entry in the same thread. probably DONT want it to be in the X-headers though, many email browsers will make clickable an http:// sequence so long as it is in the body of the message. If Selma does this before broadcasting then both archive readers and email subscribers will get the benefit. At 04:33 PM 9/19/00 +1200, [EMAIL PROTECTED] wrote: >Jeff wrote: > > Anyone actually hacked some improvements to the SELMA code? > >I did a while back, but I've since mislaid the code. > >Andrew Martin >ICQ: 26227169 >http://members.ncbi.com/AndrewMartin/ >http://members.xoom.com/AndrewMartin/ >-><- ;# mailto: [EMAIL PROTECTED]
[REBOL] GUI Maker - You'll like this. Re:
Hi Carl and others, just tested the thingy. As I am known as person imediatelly throwing some new ideas in the place, or just a little bit critisize, I will not break from my customs :-) Well, don't worry, just few general comments to GUIs at all ... 1) Thank's for the demo, it's nice, I although a little bit buggy 2) Is it a part of /Author or is /Author completly different product? 3) Could panel like look and feel bocome default one? Anyone? Isn't it just cool looking? And if not, what about providing some 'panel styles which will turn our buttons from flat ones to shadowed, arrows from the flat ones to plastic ones ... Now more seriously 4) We need some more professional aproach to GUIs. Look, some machines use 800x600, and even if I use 1024x768, I have problems with rebodex or just current layout demo to fit the screen. Could any automatic mechanism be built into /View which will check if the window fits the screen and if not, it would place scrollbars to the interface ... or scale coordinates, but it could be unpleasant behavior ... What do you think? I would strongly recommend to not depreciate user interface experience, as after tens of clicks, window movement etc. it could be annoying experience ... 5) What about proper menu system at the top of the screen? Well, thought of, kind of component - if it will not fit the screen, lef, right arrow at the corners to scroll it, etc. 6) The same goes for toolbar ... It would be really cool to get proper OS behavior - maximizable/resizable windows, menu, toolbars, scroll bars etc stuff ... Anyone? -pekr- [EMAIL PROTECTED] wrote: > I just uploaded layout.r -- a script that builds REBOL graphical user interfaces. >With it, you can easily create REBOL GUI's without needing to program a line of code. > > You can get layout.r by running REBOL/View and clicking on REBOL.com. When you start >Layout it includes a few short instructions on how to use it. > > It's pretty good. You can do some fairly sophisticated GUI editing with it. Of >course, it is just a prototype and there is more to come. It is likely to blow out >here and there, so save your work as you go. > > Operation note: run the script in a directory that has a few image files (jpg, gif, >png). That way you can paste the images easily. > > So, now you have no excuses. Let's see some REBOL/View interfaces. > > -Carl > > PS: I wrote this script over the weekend, along with crushing our Merlot grapes. It >will give you a good idea for what 25K can do in REBOL/View.
[REBOL] GUI Maker - You'll like this. Re:
Sure I liked it. It gives me a lot of flexibility. Great Tool, Carl! Carlos Lorenz - Original Message - From: <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Monday, September 18, 2000 7:29 PM Subject: [REBOL] GUI Maker - You'll like this. > I just uploaded layout.r -- a script that builds REBOL graphical user interfaces. With it, you can easily create REBOL GUI's without needing to program a line of code. > > You can get layout.r by running REBOL/View and clicking on REBOL.com. When you start Layout it includes a few short instructions on how to use it. > > It's pretty good. You can do some fairly sophisticated GUI editing with it. Of course, it is just a prototype and there is more to come. It is likely to blow out here and there, so save your work as you go. > > Operation note: run the script in a directory that has a few image files (jpg, gif, png). That way you can paste the images easily. > > So, now you have no excuses. Let's see some REBOL/View interfaces. > > -Carl > > PS: I wrote this script over the weekend, along with crushing our Merlot grapes. It will give you a good idea for what 25K can do in REBOL/View. > > >
[REBOL] pinging SELMA Re:(3)
Jeff wrote: > Anyone actually hacked some improvements to the SELMA code? I did a while back, but I've since mislaid the code. Andrew Martin ICQ: 26227169 http://members.ncbi.com/AndrewMartin/ http://members.xoom.com/AndrewMartin/ -><-
[REBOL] Reinstalling view Re:
Hi Brett, There is a reinstall command line option. Type >>usage in \view console to get the details Cheers, Allen K - Original Message - From: <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Tuesday, September 19, 2000 1:35 PM Subject: [REBOL] Reinstalling view > Scripts will not execute from the panel in View so I thought about > uninstalling view and then reinstalling it. > > > What steps do I need to take to uninstall view? > And do I have to fiddle with the registry to clean it out completely? > > Brett. > > -- > >> my-rebol-stuff > == http://www.codeconscious.com/ > >
[REBOL] Reinstalling view
Scripts will not execute from the panel in View so I thought about uninstalling view and then reinstalling it. What steps do I need to take to uninstall view? And do I have to fiddle with the registry to clean it out completely? Brett. -- >> my-rebol-stuff == http://www.codeconscious.com/
[REBOL] deleting email Re:(3)
> I've > > got a real neat idea of creating a REBOL program to keep its own email > > database and generate a web front-end and voila! a platform independant > > email client. Project Rebmail is similarly a neat idea for a email client but unfortunately (AFAIK) doesn't exist as a useable program yet. http://www.egroups.com/group/Rebmail Brett.
[REBOL] How to load func defs at start-up Re:(2)
I'll just add that I do very similar to this but I try to put all my additions in another script called ConfigureSession.r which resides in a data directory (for ease of backing up my volatile configuration). ConfigureSession.r then sets words and calls utility scripts. Doing this allows the same configuration for Core and View. Brett. - Original Message - From: [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Tuesday, September 19, 2000 5:56 AM Subject: [REBOL] How to load func defs at start-up Re: Following inline is my %user.r, followed by my %utilities.r script. All of the functions listed in utilities are then available to me during the session. *start user.r REBOL [ Title: "User Preferences" Date: 28-Aug-2000 ] protect-system ;protect system words from redefinition with all of my utilities set-net-cases: [ 1 [[EMAIL PROTECTED] smtp.netzero.net pop.netzero.net none none none ] 2 [[EMAIL PROTECTED] smtp.mail.yahoo.com pop.mail.yahoo.com none none none] ] print "Which net account do you want to use?" foreach [number case] set-net-cases [ print [number tab case] ] set-net account: select set-net-cases choice: to-integer ask "Enter your number choice here :>> " system/console/prompt: "REBOL:>> " system/console/result: "REBOL:== " ;utilities to do each time ; keep the utilities folder as a subfolder of where the executable is i.e. %./utilities ;greeting--- print "***" Print "Hello, Alan!" print ["It is" now/date "at" now/time "."] print ["You are currently in the" what-dir "directory." newline] print ["The following are your scripts loaded with utilities.r" newline] do %./utilities/utilities.r ; put utilities in utilities folder and call them in %utilities.r *end of user.r** *start utilities.r** REBOL[ title: "My Utilities" file: %utilities.r purpose: "Things I want available." date: "22-May-2000/10:43:36-4:00" ] ; scripts I want available ;make 'symlinks' to directory functions list: :list-dir pwd: :what-dir cd: :change-dir md: :make-dir ;-a few simple shortcuts--- cls: does [prin ["^(1B)[J"]] ; this clears the screen ;-my utilities-- do %../utilities/ls.r do %../utilities/mail.r do %../utilities/convert-lines.r do %../utilities/makehead.r do %../utilities/s-swap.r ***end user.r*** Hope this helps. [EMAIL PROTECTED] wrote: Hi: How may I load function definitions at startup? As an experiment, I added the following function def to both user.r and rebol.r: import: func[{"do" a file (IMPORT function def}f[string!]] [do make file! f] However, upon starting rebol, rebol does not recognize it. I note also, that set-user is not recognized. Just curious... TIA Tim
[REBOL] standard message object Re:
I'm not entirely sure what your suggestion is. How is that different from using import-email? Thanks. Brett. - Original Message - From: <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Tuesday, September 19, 2000 3:09 AM Subject: [REBOL] standard message object > I have some thoughts about creating a standard message > object! and I would like to hear your input. > > Across the Internet, whether it be in e-mail, newsgroups, > bulletin board systems, or Web pages, the most > common form of communication is the message. > Messages have common values, illustrated as follows: > > EMAIL > - > From: > Subject: > Content: > > NEWS > > From: > Subject: > Content: > > BULLETIN BOARD > -- > Author: > Subject: > Comment: > > NEWS STORY > -- > Byline: > Headline: > Body: > > ...and I'm sure there are more comparisons I cannot think > of at the moment. > > Because of these similarities, I suggest that a standard > message object! be developed so that information can > easily be exchanged between mediums. > > Furthermore, functions should be developed for converting > messages from the e-mail, news, etc., formats into the > standard message object! and vice-versa. > > But what values should be included in the message > object! ? > > A news posting, for example, may include the following > headers... > > From > Subject > Date > Newsgroups > Path > In-Reply-To > Message-ID > References > MIME-Version > Content-Type > Lines > NNTP-Posting-Host > X-Trace > NNTP-Posting-Date > Organization > Xref > Followup-To > Content-Transfer-Encoding > X-Complaints-To > X-Mailer > X-Accept-Language > Reply-To > X-Newsreader > X-Priority > X-MSMail-Priority > X-MimeOLE > User-Agent > X-Abuse-to > X-Comments > X-Anon > X-Mail-To-News-Contact > X-Mimeole > X-Sender > X-Server-Date > X-MIMEOLE > X-Abuse-Info > X-Anon-1 > X-Anon-2 > X-No-Archive > Sender > > > While an e-mail message may include the following > headers... > > Received > Return-path > To > From > Reply-To > Date > Subject > Organization > Message-Id > X-REBOL > MIME-Version > Content-Type > Precedence > X-MindSpring-Loop > Content-transfer-encoding > Priority > In-reply-to > References > X-mailer > X-SELMA > X-PMFLAGS > > > Bulletin Board messages and News Articles have their > own formats, as well. Is there a standard message > object! that could be developed and re-used? > > For example... > > make object! [ > Author: > Date: > Subject: > Body: > Message-ID: > MIME-Version: > Content-Type: > Origin: > ] > > Are more values than the above needed for a standard > message object? > > -Ryan >
[REBOL] GUI Maker - You'll like this. Re:
Hi Carl, that is very cool. It's miles ahead of the tools you usually get to design Web-based dynamic content. It reminds a little of Delphi's VCL approach. They had default method handlers, such that if you double-clicked on a button in the designer, for instance, then you're switched to the code editor with a prepared function skeleton to handle the button's default event, which is a click event. In Delphi it then says: procedure TForm1.Button1Click(Sender: TObject); begin end; You can now add your code to the skeleton. The object that represents the GUI element has automatically registered the name of the procedure as its onclick event handler. Is this where you're heading? (Just curious.) Implementing something like that should be a little more complicated then it may first appear, because the Delphi IDE keeps the sourcecode view in the editor synchronized with the GUI view in the GUI designer at all times. At 03:29 PM 9/18/00 -0700, you wrote: >I just uploaded layout.r -- a script that builds REBOL graphical user interfaces. With it, you can easily create REBOL GUI's without needing to program a line of code. > >You can get layout.r by running REBOL/View and clicking on REBOL.com. When you start Layout it includes a few short instructions on how to use it. > >It's pretty good. You can do some fairly sophisticated GUI editing with it. Of course, it is just a prototype and there is more to come. It is likely to blow out here and there, so save your work as you go. > >Operation note: run the script in a directory that has a few image files (jpg, gif, png). That way you can paste the images easily. > >So, now you have no excuses. Let's see some REBOL/View interfaces. > >-Carl > >PS: I wrote this script over the weekend, along with crushing our Merlot grapes. It will give you a good idea for what 25K can do in REBOL/View. > > > > ;- Elan [ : - ) ] author of REBOL: THE OFFICIAL GUIDE REBOL Press: The Official Source for REBOL Books http://www.REBOLpress.com visit me at http://www.TechScribe.com
[REBOL] Re: GUI Maker - You'll like this. Re:
On 19-Sep-00, [EMAIL PROTECTED] wrote: > Sounds spectacular, so I downloaded the latest view for windows > (looks nice), but there is a problem... > Clicking rebol.com does nothing, and putting > http://www.rebol.com/index.r I get the following message... > ERROR - Cannot load index file: http://www.rebol.com/index.r > I can however load it from a console session by doing: > print read http://www.rebol.com/index.r > Not nearly as fun though. > Any ideas??? layout.r downloaded okay for me from the Test Panel using Amiga View, except Amiga View's only at 0.10.31 and so can't run layout.r yet. ): You can get layout.r directly at... http://www.rebol.com/view/reb/layout.r though.
[REBOL] file picker Re:
Hi Ryan, for a /Core version of file picker you should really check Gabriele's ropus.r script. I think you should be able to get it online (user contributed scripts archive). At 03:18 PM 9/18/00 -0700, you wrote: >I am looking for both /Core and /View file pickers. I have dinked with >Carls view example of one, but have'nt produced anything usable as of >yet. Anybody got one? > >--Ryan > > > > > ;- Elan [ : - ) ] author of REBOL: THE OFFICIAL GUIDE REBOL Press: The Official Source for REBOL Books http://www.REBOLpress.com visit me at http://www.TechScribe.com
[REBOL] A bug in file port? Re:(2)
Hi Geo, then I recommend you skip to Chapter 21 (page 673). It's all about ports. (Specifially page 677 bottom says: "We can return fp to the head of file with the head function: fp: head fp " } In case you haven't discovered it yet, I'll think you'll find the detailed review of the open function (pp. 678) quite enlightening. It reviews the port object that is returned by the open function in some detail. At 03:21 PM 9/18/00 -0700, you wrote: >Yep, it works! Should have read the description more closely. > >Thanks, Elan! > >Geo... > >PS I just got your book. It looks good at first sight. :) > > >[EMAIL PROTECTED] wrote: >> >> Hi Geo, >> >> you're doing great! You overlooked one little detai: >> >> replace >> >> head fp >> >> by >> >> >>fp: head fp >> >> The head function RETURNS the same port whose current position is at the >> head of the port. It does not modify the current position of its argument! >> >> Hope this helps, >> >> >> ;- Elan [ : - ) ] >> author of REBOL: THE OFFICIAL GUIDE >> REBOL Press: The Official Source for REBOL Books >> http://www.REBOLpress.com >> visit me at http://www.TechScribe.com > > > ;- Elan [ : - ) ] author of REBOL: THE OFFICIAL GUIDE REBOL Press: The Official Source for REBOL Books http://www.REBOLpress.com visit me at http://www.TechScribe.com
[REBOL] Small admin/report benchmark Re:(2)
Thanks, Gabriele! I'll be glad to rerun the benchmarks to include your version. If possible, I'll do it later this evening. -jn- [EMAIL PROTECTED] wrote: > > Hello [EMAIL PROTECTED]! > > On 18-Set-00, you wrote: > > j> Read through the colon-delimited file below (a copy of > j> an /etc/passwd file, mangled for security purposes), > j> and print a report tallying the distinct values in the > j> 7th field (in this case, the field that identifies the > j> default shell for each userID). Sort the results by > j> the value of the field being tallied, and print the > j> results in neat columns. > > This uses a /DIRECT port; it's a bit different,too, just to show > another way to do it. :) > > > REBOL [] > > foreach-line: func [ > file [file!] > code [block!] > /local line > ] [ > ; I don't know if this REALLY uses less memory... > file: open/read/direct/lines file > code: func [line] code > while [line: pick file 1] [code line] > close file > ] > > shells: [] > > count-shell: func [shell [string! none!]] [ > change shell: any [ > find/tail shells shell > insert tail shells shell > ] 1 + any [shell/1 0] > ] > > foreach-line %passwords.txt [ > count-shell pick parse/all line ":" 7 > ] > > foreach [shell count] sort/skip shells 2 [ > print [ > ; we really need FORMAT here! > head insert/dup count: form count " " 3 - length? count > any [shell "(none)"] > ] > ] > > > I don't have Perl here, so please repeat the tests with this to > see if it makes any difference. > > Regards, > Gabriele. > -- > Gabriele Santilli <[EMAIL PROTECTED]> - Amigan - REBOL programmer > Amiga Group Italia sez. L'Aquila -- http://www.amyresource.it/AGI/
[REBOL] Associative Data Store Re:(3)
[EMAIL PROTECTED] wrote: > > I'm probably going to get beaten up for this :), but if my question is > totally absurd, please excuse my ignorance... > The only absurd questions are those that are asked out of malice or not asked out of timidity. ;-) I may have strong opinions on what I'd like to be able to do in my own programs, but certainly don't want that to come across as negative value judgements on anyone who wishes to write in a different style. > > You seem to put a lot of emphasis on being able to use block!s as keys. Is > this really necessary or desired? > Well, in terms of strictly "necessary", we could just write everything in tcl, where all data are strings (even data structures). However, REBOL gives us this really nice collection of various data types. Why NOT be able to use them? As the only thing really necessary for looking up a key is to do an equality test, why shouldn't keys be able to come from any data type for which the concept of "equal" makes sense? Also, as one of my co-workers pointed out to me, a block! is a generic container into which I'm allowed to put any kind of REBOL data I wish. If find (for example) is defined to work on blocks, then why shouldn't it work on blocks that contain anything blocks are allowed to contain (such as other blocks)? In terms of "desired", I certainly desire that capability! Let me give an example: Suppose I have a file of data on school children, which includes age and grade level for each student. Now suppose I'm asked to cross-tabulate age and grade level for some report. This means I need a set of counters, where each one corresponds to a specific combination of age and grade. It would be very pleasant, IMHO, to be able to write something like the following sketch: age-grade-tab: assoc/new foreach studentrecord read/lines %studentdemographics.data [ age: get-age studentrecord grade: get-grade studentrecord a-g: reduce [age grade] ; the key IS the combination! age-grade-tab/put a-g 1 + any [age-grade-tab/get a-g 0] ] Now someone may ask why I didn't just use a two-dimensional array, with age and grade as subscripts. A couple of reasons immediately come to mind: 0) A counter is identified by a combination of two facts: age and grade. REBOL provides me with a handy datatype for representing compound values: the block! Why shouldn't I use it? 1) Such an array would be very sparse! As most of the values are clustered along a narrow diagonal band, it would be nice to limit my storage requirements to age/grade combinations that actually exist. (Please remember that this is a small example of a more general concern. I'm only illustrating the fact that arrays are often wildly space-inefficient; I'm sure you can all come up with many examples that are even more extreme, such as weight in grams versus height in centimeters, etc.) 2) Who says that grade is an integer? Perhaps the coding scheme is that "K" is kindergarten, 1-8 are grade numbers, "Fr" "So" "Jr" "Sr" are the last four levels of high school, "GED" high-school equivalent coursework for adults, and "AE" is adult education courses for high school diploma holders. In this case we not only can't use the grade as a numerical index, but now our ranges of values for both age and grade have become much larger, greatly aggravating the sparse-array problem above. 3) Notice that the code sketch above is unaffected by changes in these issues. If I originally wrote the code above only for an elementary school (ages 6-11, grades 1-6) and was suddenly asked to produce the same report for an entire traditional system (ages 4-18, grades 1-12) or a non-traditional school (with the non-numeric grade codings and ages 4-90), the above code wouldn't break. Isn't writing generalized code that doesn't break a good thing to do? Turning the output side of the report, I can start with something as simple as foreach k age-grade-tab/keys [ print [k ":" age-grade-tab/get k] ] which works for all of the above cases. However, if I need to provide a more orderly report, I'll probably write something like foreach k sort/compare age-grade-tab/keys age-grade-sorter [ ; with some nice layout tricks not relevant to this point ] If there is simply a range expansion (grades 1-12 instead of 1-6, with ages 4-18 instead of 6-11) the above code still works (ignoring layout issues). If we go to the mixed coding of (2) above, all I have to do is go to one function age-grade-sorter and adjust it appropriately. All of the rest of the code still works. I VERY much like the idea of encapsulating each policy decision in exactly one place in the code. The idea of having to transform data back and forth between a natural representation and an agglomerated string throughout my program (just because some language feature has a bias in favor of st
[REBOL] GUI Maker - You'll like this. Re:
Sounds spectacular, so I downloaded the latest view for windows (looks nice), but there is a problem... Clicking rebol.com does nothing, and putting http://www.rebol.com/index.r I get the following message... ERROR - Cannot load index file: http://www.rebol.com/index.r I can however load it from a console session by doing: print read http://www.rebol.com/index.r Not nearly as fun though. Any ideas??? [EMAIL PROTECTED] wrote: > I just uploaded layout.r -- a script that builds REBOL graphical user interfaces. >With it, you can easily create REBOL GUI's without needing to program a line of code. > > You can get layout.r by running REBOL/View and clicking on REBOL.com. When you start >Layout it includes a few short instructions on how to use it. > > It's pretty good. You can do some fairly sophisticated GUI editing with it. Of >course, it is just a prototype and there is more to come. It is likely to blow out >here and there, so save your work as you go. > > Operation note: run the script in a directory that has a few image files (jpg, gif, >png). That way you can paste the images easily. > > So, now you have no excuses. Let's see some REBOL/View interfaces. > > -Carl > > PS: I wrote this script over the weekend, along with crushing our Merlot grapes. It >will give you a good idea for what 25K can do in REBOL/View. -- Ryan Cole Programmer Analyst www.iesco-dms.com 707-468-5400 The problem of language here are really serious. We wish to speak in some way about the structure of the atoms . . . But we cannot speak about atoms in ordinary language. -W. Heisenberg
[REBOL] GUI Maker - You'll like this.
I just uploaded layout.r -- a script that builds REBOL graphical user interfaces. With it, you can easily create REBOL GUI's without needing to program a line of code. You can get layout.r by running REBOL/View and clicking on REBOL.com. When you start Layout it includes a few short instructions on how to use it. It's pretty good. You can do some fairly sophisticated GUI editing with it. Of course, it is just a prototype and there is more to come. It is likely to blow out here and there, so save your work as you go. Operation note: run the script in a directory that has a few image files (jpg, gif, png). That way you can paste the images easily. So, now you have no excuses. Let's see some REBOL/View interfaces. -Carl PS: I wrote this script over the weekend, along with crushing our Merlot grapes. It will give you a good idea for what 25K can do in REBOL/View.
[REBOL] file picker
I am looking for both /Core and /View file pickers. I have dinked with Carls view example of one, but have'nt produced anything usable as of yet. Anybody got one? --Ryan
[REBOL] A bug in file port? Re:
Yep, it works! Should have read the description more closely. Thanks, Elan! Geo... PS I just got your book. It looks good at first sight. :) [EMAIL PROTECTED] wrote: > > Hi Geo, > > you're doing great! You overlooked one little detai: > > replace > >> head fp > > by > > >>fp: head fp > > The head function RETURNS the same port whose current position is at the > head of the port. It does not modify the current position of its argument! > > Hope this helps, > > > ;- Elan [ : - ) ] > author of REBOL: THE OFFICIAL GUIDE > REBOL Press: The Official Source for REBOL Books > http://www.REBOLpress.com > visit me at http://www.TechScribe.com
[REBOL] pinging SELMA Re:(2)
Howdy, T: Nice idea, senior! :) Anyone actually hacked some improvements to the SELMA code? (You can obtain a copy of the selma source by sending the subject "selma-source" to SELMA. Now there's a mouthful!) -jeff > Here's a thought.. some sort of thread > control/filtering? Enjoy monitoring the conversation, > but deleting upwards of 100 e-mails on busy days. > > T Brownell > > > --- [EMAIL PROTECTED] wrote: > > > BTW: Anyone made any improvements to SELMA that they would > like to share? > > -jeff > > > > __ Do You > Yahoo!? Yahoo! Mail - Free email you can access from > anywhere! http://mail.yahoo.com/ > >
[REBOL] A bug in file port? Re:
Hi Geo, you're doing great! You overlooked one little detai: replace >> head fp by >>fp: head fp The head function RETURNS the same port whose current position is at the head of the port. It does not modify the current position of its argument! Hope this helps, At 02:18 PM 9/18/00 -0700, you wrote: >As per Core User's Guide 2.2.0, on "Ports Access to Files" page >at section "Line Access", I tried as follows: > >>> fp: open/lines %file.txt >>> print first fp >I wanted the gold, and I got it -- >>> forall fp [if find first fp "gold" [print first fp]] >I wanted the gold, and I got it -- > And somehow the gold isn't all. >== false >>> > >All seems going well. > >For my curiosity, I repeated the last statement: > >>> forall fp [if find first fp "gold" [print first fp]] >== none > >Opps. fp must be at its tail. >So, I tried: > >>> tail? fp >== true >>> head fp >>> head? fp >== false > >It puzzled me! Is it a bug or is it me? > >I am still relatively new to REBOL in spite of my log >experience in programming. > >Geo Massar >Veteran programmer > > > ;- Elan [ : - ) ] author of REBOL: THE OFFICIAL GUIDE REBOL Press: The Official Source for REBOL Books http://www.REBOLpress.com visit me at http://www.TechScribe.com
[REBOL] Re: how to refresh fields in a VID list?
On 18-Sep-00, [EMAIL PROTECTED] wrote: > Hi, > This is a cut-down of the code: > block: copy [ >["ssql" "www.somewhere.com" > "a-o.dll-eUK-osform_template=awake.t" "388"] >["ping" "203.89.213.43" "" "5"] > ] > view layout [ >button "refresh" [{Here, contents of block changes - how should > I refresh list? }] >mylist: list 850x400 80.80.80 [across field field field field] > data block > ] > Anyone can help? > Regards, > Anton. I asked much the same question a while back - which received no response. (: Hope you have better luck, or that the promised new View/VID docs appear soon and help to explain such things a little better.
[REBOL] A bug in file port?
As per Core User's Guide 2.2.0, on "Ports Access to Files" page at section "Line Access", I tried as follows: >> fp: open/lines %file.txt >> print first fp I wanted the gold, and I got it -- >> forall fp [if find first fp "gold" [print first fp]] I wanted the gold, and I got it -- And somehow the gold isn't all. == false >> All seems going well. For my curiosity, I repeated the last statement: >> forall fp [if find first fp "gold" [print first fp]] == none Opps. fp must be at its tail. So, I tried: >> tail? fp == true >> head fp >> head? fp == false It puzzled me! Is it a bug or is it me? I am still relatively new to REBOL in spite of my log experience in programming. Geo Massar Veteran programmer
[REBOL] How to load func defs at start-up Re:(2)
Thank you! You are indeed civic minded :) regards Tim [EMAIL PROTECTED] wrote: > Following inline is my %user.r, followed by my %utilities.r script. > > All of the functions listed in utilities are then available to me > during the session. > > *start user.r > > REBOL [ > Title: "User Preferences" > Date: 28-Aug-2000 > ] > > protect-system ;protect system words from redefinition with all of my > utilities > > set-net-cases: [ > 1 [[EMAIL PROTECTED] smtp.netzero.net pop.netzero.net none none > none ] > 2 [[EMAIL PROTECTED] smtp.mail.yahoo.com pop.mail.yahoo.com none > none none] > ] > > print "Which net account do you want to use?" > foreach [number case] set-net-cases [ > print [number tab case] > ] > set-net account: select set-net-cases choice: to-integer ask "Enter > your number choice here :>> " > > > > system/console/prompt: "REBOL:>> " > system/console/result: "REBOL:== " > > > > ;utilities to do each time > ; keep the utilities folder as a subfolder of where the executable is > i.e. %./utilities > > ;greeting--- > print > "***" > Print "Hello, Alan!" > print ["It is" now/date "at" now/time "."] > print ["You are currently in the" what-dir "directory." newline] > print ["The following are your scripts loaded with utilities.r" > newline] > > do %./utilities/utilities.r ; put utilities in utilities folder and > call them in %utilities.r > > *end of > user.r** > > *start > utilities.r** > > REBOL[ > title: "My Utilities" > file: %utilities.r > purpose: "Things I want available." > date: "22-May-2000/10:43:36-4:00" > ] > > > > ; scripts I want available > > ;make 'symlinks' to directory > functions > list: :list-dir > pwd: :what-dir > cd: :change-dir > md: :make-dir > > ;-a few simple shortcuts--- > cls: does [prin ["^(1B)[J"]] ; this clears the screen > > ;-my utilities-- > do %../utilities/ls.r > do %../utilities/mail.r > do %../utilities/convert-lines.r > do %../utilities/makehead.r > do %../utilities/s-swap.r > > ***end user.r*** > > Hope this helps. > > [EMAIL PROTECTED] wrote: > > > Hi: > How may I load function definitions at startup? > As an experiment, I added the following function def > to both user.r and rebol.r: > import: func[{"do" a file (IMPORT function def}f[string!]] > [do make file! f] > > However, upon starting rebol, rebol does not recognize > it. > > I note also, that set-user is not recognized. > > Just curious... > TIA > Tim >
[REBOL] credit card validation Re:(2)
ah zo! Thanks, Gabriele! > -Original Message- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] > Sent: Monday, September 18, 2000 1:03 PM > To: [EMAIL PROTECTED] > Subject: [REBOL] Re: credit card validation > > > Hello [EMAIL PROTECTED]! > > On 16-Set-00, you wrote: > > r> cleancard: func [card][ > r>replace/all card " " "" > r> parse card [some [to "^M" (remove find card "^M")] to end] > r> parse card [some [to "^/" (remove find card "^/")] to end] > r>card: trim card > r> ] > > I think that: > > trim/with card " ^/^M" > > should be faster. Also, > > to-integer card/1 - 48 > > is a bit faster than: > > to-integer to-string card/1 > > Regards, > Gabriele. > -- > Gabriele Santilli <[EMAIL PROTECTED]> - Amigan - REBOL programmer > Amiga Group Italia sez. L'Aquila -- http://www.amyresource.it/AGI/ >
[REBOL] deleting email Re:(2)
I swear that wasn't there the last time I looked. - Michael Jelinek [EMAIL PROTECTED] on 09/18/2000 02:39:48 PM From: [EMAIL PROTECTED] on 09/18/2000 02:39 PM Please respond to [EMAIL PROTECTED] To: [EMAIL PROTECTED] cc: Subject: [REBOL] deleting email Re: http://www.rebol.com/users/netpop.html#DeletingEmail - Original Message - From: <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Monday, September 18, 2000 2:44 PM Subject: [REBOL] deleting email > The pop:// protocol stuff reads email very well, and I'm very happy with > it. My email client is broken on my computer at home and instead of pulling > all my beautiful hair out trying to beat the MS crap into submission, I've > got a real neat idea of creating a REBOL program to keep its own email > database and generate a web front-end and voila! a platform independant > email client. > > The only piece I don't yet know is how to delete an email item from the > host POP server. Anyone know? > > - Michael Jelinek >
[REBOL] none
unsubscribe
[REBOL] Even I make mistakes Re:(2)
thanks, Elan... handy stuff. > -Original Message- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] > Sent: Monday, September 18, 2000 4:09 PM > To: [EMAIL PROTECTED] > Subject: [REBOL] Even I make mistakes Re: > > > Hi Ralph, > > modules will hopefully reduce the likelyhood of name clashes in > the future. > For now I think that using objects helps to avoid this kind of errors in > scripts that evolve over time. > > Another trick is to execute a trial run while PROTECTing all of > those words > that one wishes to keep unique. Name clashes will then become evident when > a word is inadvertently reused. > > The following script can be helpful. Given a script file filename.r it > writes a new filename.rp file. > > input: filename.r > output: filename.rp > > When you DO the script filename.rp all globally defined words in this > script will be PROTECTed. Attempting to redefine any of these words will > result in an error message. > > How it works: > The script prompts you for a filename or a directory name. > If you provide a comma separated list of filename, the script will process > all the filenames provided. > If you provide a directory name the script will process all the files in > that directory. > Hit return if you want to process all script files in the current > directory. You do not need to provide the current directory name. > > The script assumes that the files you wish to process have the extension > ".r". If a filename does not have the ".r" extension, the script will add > that extension, regardless of whether or not the filename contains a > different extension. > > The script loads the script file, identifies tokens that will be > defined in > the global context by the script it loaded and creates a new script file > that has the same filename as the original file. It replaces the ".r" > extension by the extension ".rp". > > The script appends two things to the original script file which > it saves in > the > .rp file. > 1. A block called __set-words. This block contains all globally defined > words in the script (with exception of words that are defined by using the > set function.) > 2. A foreach expression that protects all the words listed in the > __set-words block. > > If you subsequently attempt to load a script that redefines the same word, > you will get a word protected error, which will alert you to > those globally > defined words that are being redefined in this other script. > > You can easily test the script by first running it to generate a ".rp" > file, DO the .rp file and then DO the original .r file. > > Example: > > 1. First prepare a .rp file: > > >> do %protect-words.r > Script: "Protect-Words" (none) > > Note: Only files with a .r extension will be protected. They will be > saved to > a file that has the same name and the extension .rp. > Please enter > 1. the names of the files you wish to protect separated by > commas; or > 2. the qualified pathname to the directory containing the files you > wish to protect; or > 3. hit to protect all files with a .r extension in the > current directory. > >: %test-prscript.r > > 2. Now evaluate the .rp file > > >> do %test-prscript.rp > Script: "Untitled" (none) > > 3. When you now try to redefine the globally defined word in > test-prscript.rp by evaluating the original test-proscript.r file, you are > notified of the attempt to redefine protected words: > > >> do %test-prscript.r > Script: "Untitled" (none) > ** Script Error: Word this is protected, cannot modify. > ** Where: this: 1 > that: func [] > > The file test-prscript.r contains the following script: > > REBOL [] > > this: 1 > that: func [] [ x: 1] > and-more: "this is more." > > The resulting file test-prscript.rp contains: > REBOL [] > > this: 1 > that: func [] [ x: 1] > and-more: "this is more." > __set-words: [and-more that this] > > foreach word __set-words [ > protect word > ] > > The protect-words.r script file contains: > > REBOL > title: "Protect-Words" > file: %protect-words.r > ] > script: none > set-words: none > protect-set-words: { > foreach word __set-words [ > protect word > ] > } > > dir: system/script/path > > read-script: func [filename [%file]] [ > set-words: make block! 100 > script: read filename > filename > ] > > collect-set-words: func [filename [file!] /local tokens] [ > set-words: make block! 100 > tokens: load/next filename > while [not empty? tokens] > if set-word? first tokens [ > insert set-words to word! first tokens > ] > tokens: load/next second tokens > ] > set-words > ] > > make-protected-script: func [filename [file!] /local protected-filename > tokens] > tokens: mold collect-set-words read-script filename > append script join newline "__set-words: " > append script tokens > append script join newline protect-set-words > protected-filename: append filename #"p" > write protected-filename script > ] > > protect-these-files: ask {
[REBOL] Re: Associative data store Re:(5)
Hello [EMAIL PROTECTED]! On 18-Set-00, you wrote: A> Thanks Gabriele! I just need to change this line: A>] reduce [val] A>to: A>] reduce [value] Oops! I tested that on the console, with: associate: func [blk key val] ... and missed that 'val when changing the function for the list... :-) A>as there's a stray 'VAL running around in Rebol. Some function that lacks a /local declaration... Regards, Gabriele. -- Gabriele Santilli <[EMAIL PROTECTED]> - Amigan - REBOL programmer Amiga Group Italia sez. L'Aquila -- http://www.amyresource.it/AGI/
[REBOL] Re: Essay on Associative Data Stores
Hello [EMAIL PROTECTED]! On 16-Set-00, you wrote: j>>> test-select: func [b [block!] k [any-type!] v j> [any-type!]] [ j>[append b reduce [k v] j>[select b k j>[] j>>> blk: [] j>== [] Try this: >> test-select: func [b k v] [ [append b reduce [k v] [select/only b k [] >> blk: [] == [] >> test-select blk "a" "b" == "b" >> test-select blk [2 3] 6 == 6 j>>> select blk reduce [[2 3]] j>== 6 j> Now THAT was a surprise! I'll be glad to hear any explanations j> anyone can offer for that last case! Whatever the explantion REBOL functions tend to treat series as a sequence of values, not as a single value. They have the /ONLY refinement to treat series as a single value. You SELECT was serching for the value 2 followed by the value 3, not for the value [2 3]. Also notice that: >> blk: [1 2 "one-two" 1 3 "one-three" 2 3 "two-three"] == [1 2 "one-two" 1 3 "one-three" 2 3 "two-three"] >> select blk [1 2] == "one-two" >> select blk [1 3] == "one-three" >> select blk [2 3] == "two-three" Regards, Gabriele. -- Gabriele Santilli <[EMAIL PROTECTED]> - Amigan - REBOL programmer Amiga Group Italia sez. L'Aquila -- http://www.amyresource.it/AGI/
[REBOL] Re: Small admin/report benchmark
Hello [EMAIL PROTECTED]! On 18-Set-00, you wrote: j> Read through the colon-delimited file below (a copy of j> an /etc/passwd file, mangled for security purposes), j> and print a report tallying the distinct values in the j> 7th field (in this case, the field that identifies the j> default shell for each userID). Sort the results by j> the value of the field being tallied, and print the j> results in neat columns. This uses a /DIRECT port; it's a bit different,too, just to show another way to do it. :) REBOL [] foreach-line: func [ file [file!] code [block!] /local line ] [ ; I don't know if this REALLY uses less memory... file: open/read/direct/lines file code: func [line] code while [line: pick file 1] [code line] close file ] shells: [] count-shell: func [shell [string! none!]] [ change shell: any [ find/tail shells shell insert tail shells shell ] 1 + any [shell/1 0] ] foreach-line %passwords.txt [ count-shell pick parse/all line ":" 7 ] foreach [shell count] sort/skip shells 2 [ print [ ; we really need FORMAT here! head insert/dup count: form count " " 3 - length? count any [shell "(none)"] ] ] I don't have Perl here, so please repeat the tests with this to see if it makes any difference. Regards, Gabriele. -- Gabriele Santilli <[EMAIL PROTECTED]> - Amigan - REBOL programmer Amiga Group Italia sez. L'Aquila -- http://www.amyresource.it/AGI/
[REBOL] Re: Decode CGI with checkboxes
Hello [EMAIL PROTECTED]! On 17-Set-00, you wrote: r> Hi, just wondering how you deal with checkboxes when doing r> CGI. The CGI decoder built in YARWeS worked in this case. Let me see if I can dig it back... Hmm... perhaps it's a bit complicated, anyway: insert-no-dups: func [ list [any-block!] word [word!] value [any-type!] /local pos ] [ either found? pos: find head list to-set-word :word [ either list? second pos [ append second pos value ] [ change/only next pos to-list reduce [second pos value] ] ] [ append list reduce [to-set-word :word value] ] head list ] uchar: [unreserved | escape] unreserved: make bitset! #{9277FF03FE7F} escape: [#"%" 2 HEX] HEX: charset "0123456789ABCDEFabcdef" query-allowed: charset ";/?:@+" last-query-name: none last-query-value: none last-query-object: make list! [] namevalue: [ copy last-query-name some [uchar | query-allowed] #"=" copy last-query-value some [uchar | query-allowed] [#"&" | CRLF | end] (insert-no-dups last-query-object to-word decode last-query-name decode last-query-value) ] query-rule: [(last-query-object: make list! []) some namevalue end] decoded-string: copy "" last-string: none last-hex: none filter: func [str] [either none? str [""] [str]] decode-rule: [[ some [copy last-string to #"%" skip copy last-hex 2 HEX ( append decoded-string join filter last-string hex2char last-hex )] | none ] copy last-string to end (append decoded-string filter last-string) ] decode: func [ string [any-string!] ] [ decoded-string: copy "" string: translate copy string #"+" #" " if not parse/all string decode-rule [ throw make error! reduce [ 'user 'message "Decode error" "Error decoding url-encoded string" string ] ] decoded-string ] parse-query: func [string [string!]] [ parse/all string query-rule make object! to-block head last-query-object ] I just did some cut&paste, so probably it won't work. Anyway, you could even continue using DECODE-CGI: >> blk: decode-cgi "name=value1&name=value2&name=value3" == [name: "value1" name: "value2" name: "value3"] >> fixed: [] == [] >> foreach [name value] blk [ [either pos: find fixed :name [ [pos/2: compose [(pos/2) (value)] [] [ [insert insert fixed :name value [] [] == [name: ["value1" "value2" "value3"]] HTH, Gabriele. -- Gabriele Santilli <[EMAIL PROTECTED]> - Amigan - REBOL programmer Amiga Group Italia sez. L'Aquila -- http://www.amyresource.it/AGI/
[REBOL] Re: debugging rebol apps
Hello [EMAIL PROTECTED]! On 17-Set-00, you wrote: r> Hi. Since rebol does not have a compiler, I find it a bit more r> difficult to debug large rebApps. Anyone have any debugging r> tips/strategies? Curious how others debug their scripts... Actually, interpreted languages are usually much easier to debug than compiled ones. WRT REBOL, you can add PROBEs to you code to see what happens; this is the method I prefer, but you need to know where to put PROBEs. Sometime you might want to use TRACE, as in: trace on ; piece of code to debug trace off but note that this produces a lot of output. A good advice, that you surely know, is to subdivide you problem into subproblems, and subdivide your code into functions. This way you can debug every function individually at the console, before testing the whole program. HTH, Gabriele. -- Gabriele Santilli <[EMAIL PROTECTED]> - Amigan - REBOL programmer Amiga Group Italia sez. L'Aquila -- http://www.amyresource.it/AGI/
[REBOL] Re: credit card validation
Hello [EMAIL PROTECTED]! On 16-Set-00, you wrote: r> cleancard: func [card][ r>replace/all card " " "" r> parse card [some [to "^M" (remove find card "^M")] to end] r> parse card [some [to "^/" (remove find card "^/")] to end] r>card: trim card r> ] I think that: trim/with card " ^/^M" should be faster. Also, to-integer card/1 - 48 is a bit faster than: to-integer to-string card/1 Regards, Gabriele. -- Gabriele Santilli <[EMAIL PROTECTED]> - Amigan - REBOL programmer Amiga Group Italia sez. L'Aquila -- http://www.amyresource.it/AGI/
[REBOL] Even I make mistakes Re:
Hi Ralph, modules will hopefully reduce the likelyhood of name clashes in the future. For now I think that using objects helps to avoid this kind of errors in scripts that evolve over time. Another trick is to execute a trial run while PROTECTing all of those words that one wishes to keep unique. Name clashes will then become evident when a word is inadvertently reused. The following script can be helpful. Given a script file filename.r it writes a new filename.rp file. input: filename.r output: filename.rp When you DO the script filename.rp all globally defined words in this script will be PROTECTed. Attempting to redefine any of these words will result in an error message. How it works: The script prompts you for a filename or a directory name. If you provide a comma separated list of filename, the script will process all the filenames provided. If you provide a directory name the script will process all the files in that directory. Hit return if you want to process all script files in the current directory. You do not need to provide the current directory name. The script assumes that the files you wish to process have the extension ".r". If a filename does not have the ".r" extension, the script will add that extension, regardless of whether or not the filename contains a different extension. The script loads the script file, identifies tokens that will be defined in the global context by the script it loaded and creates a new script file that has the same filename as the original file. It replaces the ".r" extension by the extension ".rp". The script appends two things to the original script file which it saves in the .rp file. 1. A block called __set-words. This block contains all globally defined words in the script (with exception of words that are defined by using the set function.) 2. A foreach expression that protects all the words listed in the __set-words block. If you subsequently attempt to load a script that redefines the same word, you will get a word protected error, which will alert you to those globally defined words that are being redefined in this other script. You can easily test the script by first running it to generate a ".rp" file, DO the .rp file and then DO the original .r file. Example: 1. First prepare a .rp file: >> do %protect-words.r Script: "Protect-Words" (none) Note: Only files with a .r extension will be protected. They will be saved to a file that has the same name and the extension .rp. Please enter 1. the names of the files you wish to protect separated by commas; or 2. the qualified pathname to the directory containing the files you wish to protect; or 3. hit to protect all files with a .r extension in the current directory. >: %test-prscript.r 2. Now evaluate the .rp file >> do %test-prscript.rp Script: "Untitled" (none) 3. When you now try to redefine the globally defined word in test-prscript.rp by evaluating the original test-proscript.r file, you are notified of the attempt to redefine protected words: >> do %test-prscript.r Script: "Untitled" (none) ** Script Error: Word this is protected, cannot modify. ** Where: this: 1 that: func [] The file test-prscript.r contains the following script: REBOL [] this: 1 that: func [] [ x: 1] and-more: "this is more." The resulting file test-prscript.rp contains: REBOL [] this: 1 that: func [] [ x: 1] and-more: "this is more." __set-words: [and-more that this] foreach word __set-words [ protect word ] The protect-words.r script file contains: REBOL [ title: "Protect-Words" file: %protect-words.r ] script: none set-words: none protect-set-words: { foreach word __set-words [ protect word ] } dir: system/script/path read-script: func [filename [%file]] [ set-words: make block! 100 script: read filename filename ] collect-set-words: func [filename [file!] /local tokens] [ set-words: make block! 100 tokens: load/next filename while [not empty? tokens] [ if set-word? first tokens [ insert set-words to word! first tokens ] tokens: load/next second tokens ] set-words ] make-protected-script: func [filename [file!] /local protected-filename tokens] [ tokens: mold collect-set-words read-script filename append script join newline "__set-words: " append script tokens append script join newline protect-set-words protected-filename: append filename #"p" write protected-filename script ] protect-these-files: ask { Note: Only files with a .r extension will be protected. They will be saved to a file that has the same name and the extension .rp. Please enter 1. the names of the files you wish to protect separated by commas; or 2. the qualified pathname to the directory containing the files you wish to protect; or 3. hit to protect all files with a .r extension in the current directory. >: } either found? find protect-these-files "," [ protect-these-files: parse/all protec
[REBOL] How to load func defs at start-up Re:
Following inline is my %user.r, followed by my %utilities.r script. All of the functions listed in utilities are then available to me during the session. *start user.r REBOL [Title: "User Preferences"Date: 28-Aug-2000] protect-system ;protect system words from redefinition with all of my utilities set-net-cases: [ 1 [[EMAIL PROTECTED] smtp.netzero.net pop.netzero.net none none none ] 2 [[EMAIL PROTECTED] smtp.mail.yahoo.com pop.mail.yahoo.com none none none]] print "Which net account do you want to use?"foreach [number case] set-net-cases [ print [number tab case]]set-net account: select set-net-cases choice: to-integer ask "Enter your number choice here :>> " system/console/prompt: "REBOL:>> " system/console/result: "REBOL:== " ;utilities to do each time ; keep the utilities folder as a subfolder of where the executable is i.e. %./utilities ;greeting---print "***"Print "Hello, Alan!"print ["It is" now/date "at" now/time "."]print ["You are currently in the" what-dir "directory." newline]print ["The following are your scripts loaded with utilities.r" newline] do %./utilities/utilities.r ; put utilities in utilities folder and call them in %utilities.r *end of user.r** *start utilities.r** REBOL[ title: "My Utilities" file: %utilities.r purpose: "Things I want available." date: "22-May-2000/10:43:36-4:00"] ; scripts I want available ;make 'symlinks' to directory functionslist: :list-dirpwd: :what-dircd: :change-dirmd: :make-dir ;-a few simple shortcuts---cls: does [prin ["^(1B)[J"]] ; this clears the screen ;-my utilities--do %../utilities/ls.rdo %../utilities/mail.rdo %../utilities/convert-lines.rdo %../utilities/makehead.rdo %../utilities/s-swap.r ***end user.r*** Hope this helps. [EMAIL PROTECTED] wrote: Hi:How may I load function definitions at startup?As an experiment, I added the following function defto both user.r and rebol.r:import: func[{"do" a file (IMPORT function def}f[string!]][do make file! f]However, upon starting rebol, rebol does not recognizeit.I note also, that set-user is not recognized.Just curious...TIATim
[REBOL] deleting email Re:
Hi Michael, 18-Sep-2000 you wrote: [...] >The only piece I don't yet know is how to delete an email item from the >host POP server. Anyone know? Just use 'remove on the opened port, like you would with any series. (Absolutely not tested) code for deleting the 4th message in your mailbox: p: open pop://username:[EMAIL PROTECTED] remove at p 4 close p Hope this is what you asked for (since I have a great track record of misunderstanding what people actually want) :-) Kind regards, -- Ole Friis <[EMAIL PROTECTED]> Amiga is a trademark of Amiga Inc.
[REBOL] deleting email Re:
http://www.rebol.com/users/netpop.html#DeletingEmail - Original Message - From: <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Monday, September 18, 2000 2:44 PM Subject: [REBOL] deleting email > The pop:// protocol stuff reads email very well, and I'm very happy with > it. My email client is broken on my computer at home and instead of pulling > all my beautiful hair out trying to beat the MS crap into submission, I've > got a real neat idea of creating a REBOL program to keep its own email > database and generate a web front-end and voila! a platform independant > email client. > > The only piece I don't yet know is how to delete an email item from the > host POP server. Anyone know? > > - Michael Jelinek >
[REBOL] Essay on Associative Data Stores Re:
Hi Joel, 16-Sep-2000 you wrote: >1.1. Keys and values are not distinguised. >1.2. Storage management/economy require extra code to > handle replacement of values for existing keys. >1.3. The block! type doesn't appear to be supported as a key > in a manner consistent with other data types. I've attached some functions for manipulating with an associative data structure. I personally think they suffice for my normal uses, but I'm looking forward to your comments (though, please keep it short then, I don't have the time to read through all that ASCII ;-) ). BTW, using a hash! for the "keys" array would probably be a better idea than just using a block!, as I currently do. _If_ find/only works faster on hash! lists, that is (it should be, but I don't know). Kind regards, -- Ole Friis <[EMAIL PROTECTED]> Amiga is a trademark of Amiga Inc. REBOL [] create-ads: func [ "Creates a new associative data structure" ][ make object! [ keys: copy [] values: copy [] ] ] lookup-ads: func [ "Returns the value associated with the key" ads [object!] "The associative data structure" key [any-type!] "Key" /local t-list ][ if found? t-list: find/only ads/keys key [ pick ads/values index? t-list ] ] associate-ads: func [ "Appends the new key/value pair in the data structure" ads [object!] "The associative data structure" key [any-type!] "Key" value [any-type!] "Value" /local t-list ][ either found? t-list: find/only ads/keys key [ change/only at ads/values index? t-list value ][ append/only ads/keys key append/only ads/values value ] ]
[REBOL] deleting email
The pop:// protocol stuff reads email very well, and I'm very happy with it. My email client is broken on my computer at home and instead of pulling all my beautiful hair out trying to beat the MS crap into submission, I've got a real neat idea of creating a REBOL program to keep its own email database and generate a web front-end and voila! a platform independant email client. The only piece I don't yet know is how to delete an email item from the host POP server. Anyone know? - Michael Jelinek
[REBOL] FTP Absolute Path Problem Re:
I don't think this is an FTP issue; I believe the issue has to do with your machine's setup. Your machine recognizes your user name and sets your HOME path. Your machine forces FTP to prepend the HOME path. I could be wrong, but I don't think FTP can work around this. This is a security feature of the machine. You could always devise a work-around like %../../ or creating a soft-link (in your HOME directory) to the directory you want. - Michael Jelinek [EMAIL PROTECTED] on 09/18/2000 11:32:51 AM From: [EMAIL PROTECTED] on 09/18/2000 11:32 AM Please respond to [EMAIL PROTECTED] To: [EMAIL PROTECTED] cc: Subject: [REBOL] FTP Absolute Path Problem I'm having the following problem: I want to load a file that resides on a server under the absolute path of /var/local/ecdr/data/. However, when I use the ftp command, it always thinks I want to do relative addressing from my home directory. I have tried: records: load ftp://ecdr:[EMAIL PROTECTED]/var/local/ecdr/data/cdr_out and also: records: load ftp://ecdr:[EMAIL PROTECTED]//var/local/ecdr/data/cdr_out and even: records: load join ftp://ecdr:[EMAIL PROTECTED] %/var/local/ecdr/data/cdr_out but it always tells me that rebol is looking for "./var/local/ecdr/data/cdr_out". In other words, it is looking under /home/cribbsj/var/local/ecdr/data/cdr_out, which, of course, does not exist. In short, does anyone know how to make the ftp command use absolute path addressing as opposed to relative path addressing? Any help would be greatly appreciated! -- Jamey Cribbs Sr. Technical Consultant
[REBOL] debugging rebol apps Re:(3)
Heheh, when it works. :D - Michael Jelinek [EMAIL PROTECTED] on 09/18/2000 10:11:18 AM From: [EMAIL PROTECTED] on 09/18/2000 10:11 AM Please respond to [EMAIL PROTECTED] To: [EMAIL PROTECTED] cc: Subject: [REBOL] debugging rebol apps Re:(2) Howdy, Michael: > Well, since you asked... > > I have a fairly large application, divided into several > files (modules). . . . > eprint: make object! [ > adv: func [msg-raw [series!]][ if any [testing/adv > testing/all][print > [ "^(tab)ADV: " reduce msg-raw ]]] > dun: func [msg-raw [series!]][ if any [testing/lib > testing/all][print > [ "^(tab)DUNGEON: " reduce msg-raw ]]] Wow, when do we get to see that? (-: -Jeff
[REBOL] Associative Data Store Re:(5)
Here is my very subtle mold change applied to Gabriele's script: associate: func [block [block!] key value] [ head change/only any [ find/tail block mold key insert tail block mold key ] reduce [value] ] associate?: func [block [block!] key] [ all [key: select block mold key first mold key] ] I cannot find any bugs, someone else want to try? --Ryan [EMAIL PROTECTED] wrote: > Keith and Pek made me realize the obvious. The main problem with select is we > need to use it with two differrent datatypes. Thus so, we can force the key to > string and wrap the data with a block. I believe if we convert the string with > mold we save data type integrity. I think this solves all problems with using > select. > > --Ryan > > [EMAIL PROTECTED] wrote: > > > - Original Message - > > From: <[EMAIL PROTECTED]> > > To: <[EMAIL PROTECTED]> > > Sent: Monday, September 18, 2000 4:35 PM > > Subject: [REBOL] Associative Data Store Re:(2) > > > > > I'm probably going to get beaten up for this :), but if my question is > > > totally absurd, please excuse my ignorance... > > > > > > You seem to put a lot of emphasis on being able to use block!s as keys. Is > > > this really necessary or desired? > > > > > > It seems like an implementation would be easier and/or more efficient if > > we > > > didn't have to worry about that case. Same for logic! values :) > > > > > > Many other languages get by with just strings for keys, why do we have to > > be > > > able to use every Rebol data type as a key? > > > > That's true. Even XBase systems work that way. In real - what about any > > entry form fiels? They are all strings ... and if not, you can convert to > > string first :-) > > > > -pekr- > > > > > > > > Keith > > > > > > - Original Message - > > > From: <[EMAIL PROTECTED]> > > > To: <[EMAIL PROTECTED]> > > > Sent: Monday, September 18, 2000 7:47 AM > > > Subject: [REBOL] Associative Data Store Re: > > > > > > > > > > Here's what happened when I tried it: > > > > > > > > >> blk: [] > > > > == [] > > > > >> Associate blk [2 3] 5 > > > > == [[2 3] [5]] > > > > >> Associate? blk [2 3] > > > > == none > > > > > > > > Beg pardon? Also... > > > > > > > > >> Associate blk 5 7 > > > > == [[2 3] [5] 5 [7]] > > > > >> Associate blk [5] 9 > > > > == [[2 3] [5] 5 [9]] > > > > >> Associate? blk 5 > > > > == 9 > > > > >> Associate? blk [5] > > > > == 9 > > > > > > > > Hmmm... Can't distinguish 5 from [5] ?? > > > > > > > > >> Associate? blk reduce [2 3] > > > > == none > > > > >> Associate? blk reduce [[2 3]] > > > > == 5 > > > > > > > > Aha! Unlike all other data types, an extra [] wrapper is require > > > > for block! -type keys? Well, let's check to see if the old > > > > merged-key/value-space bug is still present. > > > > > > > > >> Associate? blk reduce [[5]] > > > > ** Script Error: first expected series argument of type: series > > > > pair event money date object port time tuple any-function > > > > library struct event. > > > > ** Where: all [ > > > > Value: select Block Key > > > > first Value > > > > ] > > > > > > > > So I can't even check to see if [[5]] (or [5]???) might have been > > > > legitimately used as a key? > > > > > > > > This version still uses find and therefore still "inherits" the > > > > buggy behavior when block! data are used as keys. > > > > > > > > -jn- > > > > > > > > [EMAIL PROTECTED] wrote: > > > > > > > > > > Here's an implementation for an Associative Data Store (ADS) that uses > > > only > > > > > two functions, doesn't require an object per ADS and can use any Rebol > > > value > > > > > as a key. Comment invited. Thanks to Gabriele for showing how to > > shorten > > > the > > > > > 'Associate? function. > > > > > > > > > > > > > [code snipped] > > > > > -- > > Ryan Cole > Programmer Analyst > www.iesco-dms.com > 707-468-5400 > > The problem of language here are really serious. > We wish to speak in some way about the structure > of the atoms . . . But we cannot speak about atoms > in ordinary language. -W. Heisenberg
[REBOL] Small admin/report benchmark Re:
This is great! I love to see stuff like this. It'll help us get a good sense for where we stand and it produces useful scripts to the community at the same time. I haven't had a chance to run the same test here but I will sometime. Did you try parsing the whole file instead of line by line? I would think it would be a little faster that way. Maybe I'll try that later as a break from /Command work. Sterling
[REBOL] Associative Data Store Re:(4)
Keith and Pek made me realize the obvious. The main problem with select is we need to use it with two differrent datatypes. Thus so, we can force the key to string and wrap the data with a block. I believe if we convert the string with mold we save data type integrity. I think this solves all problems with using select. --Ryan [EMAIL PROTECTED] wrote: > - Original Message - > From: <[EMAIL PROTECTED]> > To: <[EMAIL PROTECTED]> > Sent: Monday, September 18, 2000 4:35 PM > Subject: [REBOL] Associative Data Store Re:(2) > > > I'm probably going to get beaten up for this :), but if my question is > > totally absurd, please excuse my ignorance... > > > > You seem to put a lot of emphasis on being able to use block!s as keys. Is > > this really necessary or desired? > > > > It seems like an implementation would be easier and/or more efficient if > we > > didn't have to worry about that case. Same for logic! values :) > > > > Many other languages get by with just strings for keys, why do we have to > be > > able to use every Rebol data type as a key? > > That's true. Even XBase systems work that way. In real - what about any > entry form fiels? They are all strings ... and if not, you can convert to > string first :-) > > -pekr- > > > > > Keith > > > > - Original Message - > > From: <[EMAIL PROTECTED]> > > To: <[EMAIL PROTECTED]> > > Sent: Monday, September 18, 2000 7:47 AM > > Subject: [REBOL] Associative Data Store Re: > > > > > > > Here's what happened when I tried it: > > > > > > >> blk: [] > > > == [] > > > >> Associate blk [2 3] 5 > > > == [[2 3] [5]] > > > >> Associate? blk [2 3] > > > == none > > > > > > Beg pardon? Also... > > > > > > >> Associate blk 5 7 > > > == [[2 3] [5] 5 [7]] > > > >> Associate blk [5] 9 > > > == [[2 3] [5] 5 [9]] > > > >> Associate? blk 5 > > > == 9 > > > >> Associate? blk [5] > > > == 9 > > > > > > Hmmm... Can't distinguish 5 from [5] ?? > > > > > > >> Associate? blk reduce [2 3] > > > == none > > > >> Associate? blk reduce [[2 3]] > > > == 5 > > > > > > Aha! Unlike all other data types, an extra [] wrapper is require > > > for block! -type keys? Well, let's check to see if the old > > > merged-key/value-space bug is still present. > > > > > > >> Associate? blk reduce [[5]] > > > ** Script Error: first expected series argument of type: series > > > pair event money date object port time tuple any-function > > > library struct event. > > > ** Where: all [ > > > Value: select Block Key > > > first Value > > > ] > > > > > > So I can't even check to see if [[5]] (or [5]???) might have been > > > legitimately used as a key? > > > > > > This version still uses find and therefore still "inherits" the > > > buggy behavior when block! data are used as keys. > > > > > > -jn- > > > > > > [EMAIL PROTECTED] wrote: > > > > > > > > Here's an implementation for an Associative Data Store (ADS) that uses > > only > > > > two functions, doesn't require an object per ADS and can use any Rebol > > value > > > > as a key. Comment invited. Thanks to Gabriele for showing how to > shorten > > the > > > > 'Associate? function. > > > > > > > > > > [code snipped] > > -- Ryan Cole Programmer Analyst www.iesco-dms.com 707-468-5400 The problem of language here are really serious. We wish to speak in some way about the structure of the atoms . . . But we cannot speak about atoms in ordinary language. -W. Heisenberg
[REBOL] Small admin/report benchmark Re:
Howdy, Joel: > REBOL solution: > > My effort at producing a comparable REBOL script is > given next. I tried to use appropriate REBOLish > idioms to accomplish equivalent results. > > begin REBOL script > #!/usr/local/bin/rebol -sq > > REBOL [] > > shells: copy make block! 5 > countshell: func [sh [string!] /local shr] [ > either none? shr: find shells sh [ > append shells reduce [sh 1] > ][ > change shr: next shr 1 + shr/1 > ] > ] > > foreach line read/lines %passwords.txt [ > countshell any [pick parse/all line ":" 7 "(none)"] > ] > > foreach [sh n] sort/skip shells 2 [ > n: to-string n > while [3 > length? n] [insert n " "] > print [n sh] > ] > = end REBOL script = Here's an alternate approach: (I skipped the sort for now..) REBOL [] shells: make block! 5 ;- no need for xtra copy do func [/sh/blk][ foreach line read/lines %passwords.txt [ sh: pick parse/all line ":" 7 append any [ select shells sh all [ append shells reduce [sh blk: copy []] blk ] ] sh ] blk: copy [backdrop 20.40.200 title "Shells" across] foreach [name sh] shells [ append blk compose [text (form length? sh) tab text (form name) return] ] view layout blk ] ;-- Note, we used rebol's NONE datatype to represent those ;whose shells are NONE. The approach taken is to use blocks to accumulate data and use length? and index? and what not to do the bean counting. I did cheat, though, and didn't bother sorting. Sorry! Reason why is the REBOL sort function is getting some much needed work done to it right now and the new sort function will make this kind of thing a lot easier. Might even use it to sort the actual layout produced! :-) Perl is likely faster for various tasks to REBOL, but REBOL makes many tasks much easier to do. It's all how you slice it. :) -jeff
[REBOL] pinging SELMA Re:(2)
Yes, please, thread the comments! [EMAIL PROTECTED] wrote: Here's a thought.. some sort of threadcontrol/filtering? Enjoy monitoring the conversation,but deleting upwards of 100 e-mails on busy days.T Brownell--- [EMAIL PROTECTED] wrote:BTW: Anyone made any improvements to SELMA thatthey wouldlike to share?-jeff__Do You Yahoo!?Yahoo! Mail - Free email you can access from anywhere!http://mail.yahoo.com/
[REBOL] standard message object
I have some thoughts about creating a standard message object! and I would like to hear your input. Across the Internet, whether it be in e-mail, newsgroups, bulletin board systems, or Web pages, the most common form of communication is the message. Messages have common values, illustrated as follows: EMAIL - From: Subject: Content: NEWS From: Subject: Content: BULLETIN BOARD -- Author: Subject: Comment: NEWS STORY -- Byline: Headline: Body: ...and I'm sure there are more comparisons I cannot think of at the moment. Because of these similarities, I suggest that a standard message object! be developed so that information can easily be exchanged between mediums. Furthermore, functions should be developed for converting messages from the e-mail, news, etc., formats into the standard message object! and vice-versa. But what values should be included in the message object! ? A news posting, for example, may include the following headers... From Subject Date Newsgroups Path In-Reply-To Message-ID References MIME-Version Content-Type Lines NNTP-Posting-Host X-Trace NNTP-Posting-Date Organization Xref Followup-To Content-Transfer-Encoding X-Complaints-To X-Mailer X-Accept-Language Reply-To X-Newsreader X-Priority X-MSMail-Priority X-MimeOLE User-Agent X-Abuse-to X-Comments X-Anon X-Mail-To-News-Contact X-Mimeole X-Sender X-Server-Date X-MIMEOLE X-Abuse-Info X-Anon-1 X-Anon-2 X-No-Archive Sender While an e-mail message may include the following headers... Received Return-path To From Reply-To Date Subject Organization Message-Id X-REBOL MIME-Version Content-Type Precedence X-MindSpring-Loop Content-transfer-encoding Priority In-reply-to References X-mailer X-SELMA X-PMFLAGS Bulletin Board messages and News Articles have their own formats, as well. Is there a standard message object! that could be developed and re-used? For example... make object! [ Author: Date: Subject: Body: Message-ID: MIME-Version: Content-Type: Origin: ] Are more values than the above needed for a standard message object? -Ryan
[REBOL] FTP Absolute Path Problem
I'm having the following problem: I want to load a file that resides on a server under the absolute path of /var/local/ecdr/data/. However, when I use the ftp command, it always thinks I want to do relative addressing from my home directory. I have tried: records: load ftp://ecdr:[EMAIL PROTECTED]/var/local/ecdr/data/cdr_out and also: records: load ftp://ecdr:[EMAIL PROTECTED]//var/local/ecdr/data/cdr_out and even: records: load join ftp://ecdr:[EMAIL PROTECTED] %/var/local/ecdr/data/cdr_out but it always tells me that rebol is looking for "./var/local/ecdr/data/cdr_out". In other words, it is looking under /home/cribbsj/var/local/ecdr/data/cdr_out, which, of course, does not exist. In short, does anyone know how to make the ftp command use absolute path addressing as opposed to relative path addressing? Any help would be greatly appreciated! -- Jamey Cribbs Sr. Technical Consultant
[REBOL] How to load func defs at start-up
Hi: How may I load function definitions at startup? As an experiment, I added the following function def to both user.r and rebol.r: import: func[{"do" a file (IMPORT function def}f[string!]] [do make file! f] However, upon starting rebol, rebol does not recognize it. I note also, that set-user is not recognized. Just curious... TIA Tim
[REBOL] best means of passing refinements from main to helper function? Re:(4)
> But then this (the example below) explicitly lists the > refinements in the function body. I think the "ultimate" > solution would process an arbitray list, as with a loop. It > is fairly short though :) and IS a step up from 'if > statements, esp for more than 2 refinements. > > - Michael Jelinek Yes, like I meant to say: it's not exactly elegant. (: Refinement transferal is at the frontiers of REBOL research. ;) -jeff > main: func [ > /use-month month-to-use /use-day day-to-use > ] [ > go?: func ['what /it][either it: get what [either true = it [what][it]][]] > do reduce compose/deep [ > to-path [deduction (go? use-month) (go? use-day)] > (go? month-to-use) (go? day-to-use) > ] > ]
[REBOL] debugging rebol apps Re:(2)
Howdy, Michael: > Well, since you asked... > > I have a fairly large application, divided into several > files (modules). . . . > eprint: make object! [ > adv: func [msg-raw [series!]][ if any [testing/adv > testing/all][print > [ "^(tab)ADV: " reduce msg-raw ]]] > dun: func [msg-raw [series!]][ if any [testing/lib > testing/all][print > [ "^(tab)DUNGEON: " reduce msg-raw ]]] Wow, when do we get to see that? (-: -Jeff
[REBOL] debugging rebol apps Re:(2)
Incrementally. Each time I make a change that I think is trivial, I still go make sure it works as expected. I break out common code into functions, and then debug those functions individually. Always add type specifiers to function arguments to be sure you're being passed what is expected. The thing that always seems to help for me is I'll try to make each module do something very simple successfully before elaborating. Like, for instance, if the goal of a function is to generate some data and then display it (or have another function display it) I make my first goal to successfully: print mold data When a script reaches the couple pages mark, I find it helps to break out common parts, like utility functions, to go into their own file. They can always be recombined later, but the more scrolling you end up doing the more confusing it can become. Nothing revolutionary in those approaches, but I find them helpful in building larger apps. -jeff > Hi. Since rebol does not have a compiler, I find it a bit > more difficult to debug large rebApps. Anyone have any > debugging tips/strategies? Curious how others debug their > scripts... > > Rishi
[REBOL] pinging SELMA Re:
Here's a thought.. some sort of thread control/filtering? Enjoy monitoring the conversation, but deleting upwards of 100 e-mails on busy days. T Brownell --- [EMAIL PROTECTED] wrote: BTW: Anyone made any improvements to SELMA that they would like to share? -jeff __ Do You Yahoo!? Yahoo! Mail - Free email you can access from anywhere! http://mail.yahoo.com/
[REBOL] pinging SELMA
Just FYI: If you think one of the lists is down you can always send SELMA a message with only the word "help" on the subject line. If she's running she'll let you know with a copy of the commands she knows: -- Here is some helpful information: Commands to REBOL SELMA are given on the subject line of your message. These commands are currently supported: help - get this information suggest - make a suggestion about the list selma-source - get the current source code to SELMA get msg N - send yourself message #N subscribe - add yourself to the list unsubscribe - remove yourself from the list No other commands are provided at this time. -SELMA --- BTW: Anyone made any improvements to SELMA that they would like to share? -jeff
[REBOL] CGI setup Re:
Hi: Add a new string value to : HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\W3Svc\Parameters\Script Map with name of .r (this is the suffix for the rebol script) and data value of > c:\rebol\rebol.exe -cs %s > (obviously substitute the appropriate path to your executable). This works for me on Win NT 4.0 sp6. You may try you scripts in both cgi-bin and /scripts folder. In my case I can run cgi scripts from the cgi-bin directory and all the folders below that path. -Tim [EMAIL PROTECTED] wrote: > does anyone know how to setup MS PWS with rebol for cgi in windows95/98 > i have n idea. > > aden.
[REBOL] Associative Data Store Re:(3)
- Original Message - From: <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Monday, September 18, 2000 4:35 PM Subject: [REBOL] Associative Data Store Re:(2) > I'm probably going to get beaten up for this :), but if my question is > totally absurd, please excuse my ignorance... > > You seem to put a lot of emphasis on being able to use block!s as keys. Is > this really necessary or desired? > > It seems like an implementation would be easier and/or more efficient if we > didn't have to worry about that case. Same for logic! values :) > > Many other languages get by with just strings for keys, why do we have to be > able to use every Rebol data type as a key? That's true. Even XBase systems work that way. In real - what about any entry form fiels? They are all strings ... and if not, you can convert to string first :-) -pekr- > > Keith > > - Original Message - > From: <[EMAIL PROTECTED]> > To: <[EMAIL PROTECTED]> > Sent: Monday, September 18, 2000 7:47 AM > Subject: [REBOL] Associative Data Store Re: > > > > Here's what happened when I tried it: > > > > >> blk: [] > > == [] > > >> Associate blk [2 3] 5 > > == [[2 3] [5]] > > >> Associate? blk [2 3] > > == none > > > > Beg pardon? Also... > > > > >> Associate blk 5 7 > > == [[2 3] [5] 5 [7]] > > >> Associate blk [5] 9 > > == [[2 3] [5] 5 [9]] > > >> Associate? blk 5 > > == 9 > > >> Associate? blk [5] > > == 9 > > > > Hmmm... Can't distinguish 5 from [5] ?? > > > > >> Associate? blk reduce [2 3] > > == none > > >> Associate? blk reduce [[2 3]] > > == 5 > > > > Aha! Unlike all other data types, an extra [] wrapper is require > > for block! -type keys? Well, let's check to see if the old > > merged-key/value-space bug is still present. > > > > >> Associate? blk reduce [[5]] > > ** Script Error: first expected series argument of type: series > > pair event money date object port time tuple any-function > > library struct event. > > ** Where: all [ > > Value: select Block Key > > first Value > > ] > > > > So I can't even check to see if [[5]] (or [5]???) might have been > > legitimately used as a key? > > > > This version still uses find and therefore still "inherits" the > > buggy behavior when block! data are used as keys. > > > > -jn- > > > > [EMAIL PROTECTED] wrote: > > > > > > Here's an implementation for an Associative Data Store (ADS) that uses > only > > > two functions, doesn't require an object per ADS and can use any Rebol > value > > > as a key. Comment invited. Thanks to Gabriele for showing how to shorten > the > > > 'Associate? function. > > > > > > > [code snipped] >
[REBOL] A couple of things regarding ports Re:(6)
On Mon, 18 Sep 2000 21:41:18 +1200 [EMAIL PROTECTED] wrote: >> hmm, however, if I for example do like: >> >> dispatch [ >> port1 [print first port1] >> port2 [print first port2] >> ] >> >> it waits for the first port before printing the input on the second. both >the ports are open/direct/lines > >Try something like: >dispatch [port1 [print "Port1"] port2 [print "Port2"]] >as your: >print first port1 >may be waiting for input on 'port1. uhm, one more thing, isn't that what it should do..? wait for data from either of the ports, and when it reaches one of them i want to, let's say, print it out?.. how should I work around it then?.. :) Cheers, malte > >That way, you can confirm that dispatch is working correctly. > >Andrew Martin >ICQ: 26227169 >http://members.ncbi.com/AndrewMartin/ >http://members.xoom.com/AndrewMartin/ >-><- > > -- Get your firstname@lastname email for FREE at http://NamePlanet.com/?su
[REBOL] Associative Data Store Re:(2)
I'm probably going to get beaten up for this :), but if my question is totally absurd, please excuse my ignorance... You seem to put a lot of emphasis on being able to use block!s as keys. Is this really necessary or desired? It seems like an implementation would be easier and/or more efficient if we didn't have to worry about that case. Same for logic! values :) Many other languages get by with just strings for keys, why do we have to be able to use every Rebol data type as a key? Keith - Original Message - From: <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Monday, September 18, 2000 7:47 AM Subject: [REBOL] Associative Data Store Re: > Here's what happened when I tried it: > > >> blk: [] > == [] > >> Associate blk [2 3] 5 > == [[2 3] [5]] > >> Associate? blk [2 3] > == none > > Beg pardon? Also... > > >> Associate blk 5 7 > == [[2 3] [5] 5 [7]] > >> Associate blk [5] 9 > == [[2 3] [5] 5 [9]] > >> Associate? blk 5 > == 9 > >> Associate? blk [5] > == 9 > > Hmmm... Can't distinguish 5 from [5] ?? > > >> Associate? blk reduce [2 3] > == none > >> Associate? blk reduce [[2 3]] > == 5 > > Aha! Unlike all other data types, an extra [] wrapper is require > for block! -type keys? Well, let's check to see if the old > merged-key/value-space bug is still present. > > >> Associate? blk reduce [[5]] > ** Script Error: first expected series argument of type: series > pair event money date object port time tuple any-function > library struct event. > ** Where: all [ > Value: select Block Key > first Value > ] > > So I can't even check to see if [[5]] (or [5]???) might have been > legitimately used as a key? > > This version still uses find and therefore still "inherits" the > buggy behavior when block! data are used as keys. > > -jn- > > [EMAIL PROTECTED] wrote: > > > > Here's an implementation for an Associative Data Store (ADS) that uses only > > two functions, doesn't require an object per ADS and can use any Rebol value > > as a key. Comment invited. Thanks to Gabriele for showing how to shorten the > > 'Associate? function. > > > > [code snipped]
[REBOL] [ANN] vanillean alpha 0.2
Hi list folks, you can download an alpha version of my integrated web server / wiki system vanillean (a Vanilla derivative) from http://www.langreiter.com/space/vanillean. A temporary test server is up and running on http://213.229.9.171: vanillean requires only REBOL/View to be installed and should otherwise be self-contained. Installation effort equals zero (or at least it should). I've successfully used it for internal discussions, competitive monitoring, address + contact management and intranet prototyping. Vanilla (its "big brother") is the system I use to manage my web site at http://www.langreiter.com, and of course, it's all written in REBOL. Enjoy! Chris
[REBOL] Please test my script Re:
Hi Carlos, Just a simple check for the file, shows that it doesn't seem to be on your server. print read http://www.rebolbrasil.com/bragweather.r ** User Error: Error. Target url: http://www.rebolbrasil.com/bragweather.r could no t be retrieved. Server response: HTTP/1.0 404 Not Found. ** Where: print read http://www.rebolbrasil.com/bragweather.r Cheers, Allen K - Original Message - From: <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Wednesday, July 19, 2000 12:15 AM Subject: [REBOL] Please test my script Hi ALL, I´d like to ask you to test the script BragWeather.r in REBOLBrasil REBSite. I´m getting a message that REBOL can´t launch it from local HD, why? Thank you
[REBOL] Even I make mistakes
If anyone tried to order either REBOL FOR DUMMIES or REBOL: THE OFFICIAL GUIDE yesterday, you found your order would not go through, even with all the correct information. Why? Even I flub up on occasion. The forms are now fixed and orders go though fine. The mistake was a dumb one (as opposed to a Dummies one) and I reveal it since you may find such instructive in your own coding. I wrote this really slick little credit card validation function (published earlier on this list) Saturday. Tested it rigorously, and it worked fine. So I dropped it into the order forms; tested them briefly; all seemed fine; so I went live with the changes. Then I get e-mail this morning from a couple of people who tried to order books yesterday and the orders would not record. Here's the mistake! One of the REBOL words I defined in my credit card validation function was the same as one in my form processing script (but the words, of course, did different functions). This mismatch did not crash the script (such would have pointed to an obvious problem) but rather caused a more subtle misoperation; i.e. orders would not record. The moral of this tale? Document! I stress that in REBOL FOR DUMMIES. If you don't document, scripts sometimes will coil around and bite you on the well, anyway, I fixed it. Best, --Ralph Roberts Soldier of the REBOLution
[REBOL] Please test my script
Hi ALL, I´d like to ask you to test the script BragWeather.r in REBOLBrasil REBSite. I´m getting a message that REBOL can´t launch it from local HD, why? Thank you
[REBOL] debugging rebol apps Re:
Well, since you asked... I have a fairly large application, divided into several files (modules). My traditional approach to debugging when I have no "debugger" is to write a function which prints its argument only when a global variable is set. This allows me to print messages about the program's behavior while testing, then turn off those messages when the program works. For a large app I have developed this to the following: In the first file which gets loaded into the REBOL session I define the following flags: testing: make object! [ all: false adv: false item: false event: true lib: false main: false melee: true menu: false mon: false party: true play: true player: true room: false util: false weap: false ] Where each element represents a module of the program. Then the testing-print function is defined as follows: eprint: make object! [ adv: func [msg-raw [series!]][ if any [testing/adv testing/all][print [ "^(tab)ADV: " reduce msg-raw ]]] dun: func [msg-raw [series!]][ if any [testing/lib testing/all][print [ "^(tab)DUNGEON: " reduce msg-raw ]]] event: func [msg-raw [series!]][ if any [testing/event testing/all][print [ "^(tab)EVENT: " reduce msg-raw ]]] item: func [msg-raw [series!]][ if any [testing/weap testing/all][print [ "^(tab)WEAP: " reduce msg-raw ]]] lib: func [msg-raw [series!]][ if any [testing/lib testing/all][print [ "^(tab)LIBRARY: " reduce msg-raw ]]] main: func [msg-raw [series!]][ if any [testing/main testing/all][print [ "^(tab)MAIN: " reduce msg-raw ]]] melee: func [msg-raw [series!]][ if any [testing/melee testing/all][print [ "^(tab)MELEE: " reduce msg-raw ]]] menu: func [msg-raw [series!]][ if any [testing/menu testing/all][print [ "^(tab)MENU: " reduce msg-raw ]]] mon: func [msg-raw [series!]][ if any [testing/mon testing/all][print [ "^(tab)MON: " reduce msg-raw ]]] party: func [msg-raw [series!]][ if any [testing/party testing/all][print [ "^(tab)PARTY: " reduce msg-raw ]]] play: func [msg-raw [series!]][ if any [play-test testing/all][print [ "^(tab)PLAY: " reduce msg-raw ]]] player: func [msg-raw [series!]][ if any [testing/play testing/all][print [ "^(tab)PLAYER: " reduce msg-raw ]]] room: func [msg-raw [series!]][ if any [testing/room testing/all][print [ "^(tab)ROOM: " reduce msg-raw ]]] util: func [msg-raw [series!]][ if any [testing/util testing/all][print [ "^(tab)UTIL: " reduce msg-raw ]]] weap: func [msg-raw [series!]][ if any [testing/weap testing/all][print [ "^(tab)WEAP: " reduce msg-raw ]]] report: func ["Report the testing status"][ if play-test [print "* Game is being PLAY-TESTED."] if testing/all [print "* Everything is being error-tested."] foreach test-var (next first testing) [ if true = get in testing test-var [print ["*" test-var "is being error-tested."]] ] ] ] I can turn on ALL testing messages simply by setting: testing/all: true Or any individual module testing messages by, for example: testing/main: true I can then define a testing message by the following (for some reason I don't need 'reform on the parameter block before passing it): eprint/adv [ "Creating char:" form class-fields ", weapon:" wname ", armor:" aname ", shield:" sname] eprint/melee [ "Defender:" combatant/target/name " hp:" combatant/target/hp ] eprint/report ; Displays all module being tested - Michael Jelinek [EMAIL PROTECTED] on 09/16/2000 08:57:16 PM From: [EMAIL PROTECTED] on 09/16/2000 08:57 PM Please respond to [EMAIL PROTECTED] To: [EMAIL PROTECTED] cc: Subject: [REBOL] debugging rebol apps Hi. Since rebol does not have a compiler, I find it a bit more difficult to debug large rebApps. Anyone have any debugging tips/strategies? Curious how others debug their scripts... Rishi
[REBOL] system/network/host
Where in the pc is the obtained in Win 95 ?
[REBOL] A couple of things regarding ports + New View stuff Re:(9)
- Original Message - From: <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Monday, September 18, 2000 11:04 PM Subject: [REBOL] A couple of things regarding ports Re:(8) > > >read source for 'read-net, (which is used by 'request-download & 'read-via) > >to see an example of 'dispatch code. > > hum.. is it just me that thinks that there are loads of undocumented functions > here? :) > > Cheers, malte They are all in experimental pre-beta version, can't really expect them to be documented yet. Who knows how many changes will happen to them before the beta is released? However testing them now is the best way to find the bugs and help improve that code. The beauty of REBOL is that it isn't hard to find the new functions, with the power of 'probe, 'echo, 'what and 'source, nothing (except native implementation) is hidden from us. It's all there for those who want to explore, it's quite fun really. But certainly brief documentation of changes would help this testing process too. Here are a few more new functions in /view for the curious. EXISTS-VIA? - Check if a file is in the cache FORM-LOCAL-FILE - Return correct local public path for a URL., form-local-file http://www.rebolforces.com/reb/mines.r == %/c/rebol/view/public/www.rebolforces.com/reb/mines.r So then other operations can easily be applied to cached files e.g modified? form-local-file http://www.rebolforces.com/index.r == 17-Sep-2000/21:18:22+10:00 CENTER-FACE obj -- (Type: any) area -- (Type: any) - modifies the offset of a face passed to it, to centre that face. ; To center on the screen-face use none for the area arg view center-face layout [text "center test" button "Close" [unview/all]] none ; To center within a region, provide a face object for the area arg (to center over) ;or provide an object that has an offset pair! and size pair! ; this will centre the window between 0x0 and 300x300 view center-face layout [text "center test" button "Close" [unview/all]] make object! [offset: 0x0 size: 300x300] CONTEXT - Defines an underived object from a block. Example usage in vidtest.r ==Changes to existing functions== SHOW and HIDE - now accept either a face or a block of faces CHOOSE - has a new /window refinement, when used, it means the offset of the choose popup will be in relation to that parent window rather than to the screen-face Hope this helps. Cheers, Allen K
[REBOL] best means of passing refinements from main to helper function? Re:(3)
But then this (the example below) explicitly lists the refinements in the function body. I think the "ultimate" solution would process an arbitray list, as with a loop. It is fairly short though :) and IS a step up from 'if statements, esp for more than 2 refinements. - Michael Jelinek [EMAIL PROTECTED] on 09/15/2000 04:04:34 PM From: [EMAIL PROTECTED] on 09/15/2000 04:04 PM Please respond to [EMAIL PROTECTED] To: [EMAIL PROTECTED] cc: Subject: [REBOL] best means of passing refinements from main to helper function? Re:(2) Howdy, Michael: The following approach is exactly elegant, but it gets the job done and it's fairly short. I think it's kind of cute. -jeff REBOL [] deduction: func [ /use-month month-to-use /use-day day-to-use ][ rejoin [ "file-" either use-month [ month-to-use ] [ now/month ] either use-day [ day-to-use ] [ now/day ] ] ] main: func [ /use-month month-to-use /use-day day-to-use ] [ go?: func ['what /it][either it: get what [either true = it [what][it]] []] do reduce compose/deep [to-path [deduction (go? use-month) (go? use-day)] (go? month-to-use) (go? day-to-use)] ] > This seems to be an occasionally reoccurring topic. In > short I don't think anyone has come up with a simple > elegant way of doing this. A few of us have come up with > solutions whichinvolve building the helper-function > call/refinements string. You might find, however, that you > would rather use a bunch of 'if statements. > > - Michael Jelinek > > > > > > [EMAIL PROTECTED]@MailAndNews.com> on 09/15/2000 > 03:30:03 PM > > From:[EMAIL PROTECTED]@MailAndNews.com on > 09/15/2000 03:30 PM > > Please respond to [EMAIL PROTECTED] > > Sent by: Terrence Brannon <[EMAIL PROTECTED]> > > To: [EMAIL PROTECTED] cc: Subject: [REBOL] best means of > passing refinements from main to helper >function? > > > I want to know the best way to propagate refinement > selections (or their lack) to a function which actually > does the processing for them.
[REBOL] REBOL/View and proxy-configuration Re:
I've had the same problem... Thought I was doing something wrong. My send and read commands, when sending mail or fetching a web site work on my computer at home, but flunks out on my Lan based computer at work. This is a real show-stopper! Joe -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] Sent: Sunday, September 17, 2000 6:59 AM To: [EMAIL PROTECTED] Subject: [REBOL] REBOL/View and proxy-configuration Hello, Has anyone made experiences with using REBOL/View in a firewalled LAN? I am in a LAN that blocks nearly all services. We have Squid-Proxies for HTTP and FTP. We have an internal POP3 and SMTP server. If I configure REBOL/View to use our HTTP/FTP Proxy as a 'generic - type Proxy I can fetch HTML pages. But If I click on the "REBOL.com" Icon REBOL/View hangs a while with an empty progress-bar then the window is flashing and I'm on the start screen as before (but the "R" image that shows that REBOL is loading something resists on the down right edge) Is there an option I have to set? I've used REBOL/View successfully with a direct internet connection! Yours sincerely. Jochen Schmidt
[REBOL] Associative Data Store Re:
Hi Andrew, there is a lot of cases, where your functions won't work as expected, eg.: blk: copy [] associate blk [2] 3 associate? blk [2] The other problem is, that your functions won't accept Any-type! values for Key/Value Regards Ladislav > Here's an implementation for an Associative Data Store (ADS) that uses only > two functions, doesn't require an object per ADS and can use any Rebol value > as a key. Comment invited. Thanks to Gabriele for showing how to shorten the > 'Associate? function. > > [ > Rebol [ > Title: "Associate" > Name: 'Associate > File: %Associate.r > Author: "Andrew Martin" > Email: [EMAIL PROTECTED] > Date: 18/September/2000 > ] > > Associate: function [Block [block!] Key Value] [Index] [ > Index: find Block Key > either none? Value [ > if found? Index [ > remove/part Index 2 > ] > ][ > either found? Index [ > change/only next Index reduce [Value] > ][ > append Block reduce [Key reduce [Value]] > ] > ] > Block > ] > > Associate?: function [Block [block!] Key] [Value] [ > all [ > Value: select Block Key > first Value > ] > ] > ] > > Andrew Martin > ICQ: 26227169 > http://members.ncbi.com/AndrewMartin/ > http://members.xoom.com/AndrewMartin/ > -><- > >
[REBOL] Essay on Associative Data Stores Re:
Hi Joel, two notes: 1) I think that some posts on ADS missed one very important point - the speed. The problem is, that Find (sequential search) may be a bottleneck for some apps. 2) Select may be less general than Select/only sometimes. Regards Ladislav
[REBOL] A couple of things regarding ports Re:(8)
>read source for 'read-net, (which is used by 'request-download & 'read-via) >to see an example of 'dispatch code. hum.. is it just me that thinks that there are loads of undocumented functions here? :) Cheers, malte -- Get your firstname@lastname email for FREE at http://NamePlanet.com/?su
[REBOL] Associative Data Store Re:
Here's what happened when I tried it: >> blk: [] == [] >> Associate blk [2 3] 5 == [[2 3] [5]] >> Associate? blk [2 3] == none Beg pardon? Also... >> Associate blk 5 7 == [[2 3] [5] 5 [7]] >> Associate blk [5] 9 == [[2 3] [5] 5 [9]] >> Associate? blk 5 == 9 >> Associate? blk [5] == 9 Hmmm... Can't distinguish 5 from [5] ?? >> Associate? blk reduce [2 3] == none >> Associate? blk reduce [[2 3]] == 5 Aha! Unlike all other data types, an extra [] wrapper is require for block! -type keys? Well, let's check to see if the old merged-key/value-space bug is still present. >> Associate? blk reduce [[5]] ** Script Error: first expected series argument of type: series pair event money date object port time tuple any-function library struct event. ** Where: all [ Value: select Block Key first Value ] So I can't even check to see if [[5]] (or [5]???) might have been legitimately used as a key? This version still uses find and therefore still "inherits" the buggy behavior when block! data are used as keys. -jn- [EMAIL PROTECTED] wrote: > > Here's an implementation for an Associative Data Store (ADS) that uses only > two functions, doesn't require an object per ADS and can use any Rebol value > as a key. Comment invited. Thanks to Gabriele for showing how to shorten the > 'Associate? function. > [code snipped]
[REBOL] bot maddening? Re:
same to me Lorenz - Original Message - From: <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Sunday, September 17, 2000 5:43 PM Subject: [REBOL] bot maddening? > Hey, what's going on? I have at least 4 copies of the same message from the > list. ... > -pekr- > > - Original Message - > From: <[EMAIL PROTECTED]> > To: <[EMAIL PROTECTED]> > Sent: Sunday, September 17, 2000 1:00 PM > Subject: [REBOL] [REBOL] REBOL/View and proxy-configuration > > > > Hello, > > > > Has anyone made experiences with using REBOL/View in a firewalled > > LAN? > > I am in a LAN that blocks nearly all services. > > We have Squid-Proxies for HTTP and FTP. > > We have an internal POP3 and SMTP server. > > > > If I configure REBOL/View to use our HTTP/FTP Proxy as a > > 'generic - type Proxy I can fetch HTML pages. > > But If I click on the "REBOL.com" Icon REBOL/View hangs a while > > with an empty progress-bar then the window is flashing and I'm > > on the start screen as before (but the "R" image that shows that REBOL is > > loading something resists on the down right edge) > > > > Is there an option I have to set? > > > > I've used REBOL/View successfully with a direct internet connection! > > > > Yours sincerely. > > Jochen Schmidt > >
[REBOL] A couple of things regarding ports Re:(10)
[EMAIL PROTECTED] wrote: > > Where can I find 'read-net, 'request-download and 'read-via ? > > source read-net > And I'm sure you can figure out the rest. "the rest" - yes, the following line which probably causes panel doesn't go thru firewall and lives thru last X releases, probably still incorrect? ;-) port: open/direct/binary/no-wait [scheme: 'tcp host: host-name port-id: 80] Could above line go thru proxy? Look at Sterling's aproach taken in reb-prox.r script: port-spec: make port! [ scheme: 'tcp port-id: 80 proxy: make system/schemes/default/proxy [] ] if any [system/schemes/default/proxy/host system/schemes/http/proxy/host] [ proxy-spec: make port! [scheme: 'http] port-spec/proxy: make proxy-spec/proxy copy [] ] So? -pekr- > > > > I really hope it's not a silly question :) > > Make sure you've got the latest version of Rebol. > > Andrew Martin > ICQ: 26227169 > http://members.ncbi.com/AndrewMartin/ > http://members.xoom.com/AndrewMartin/ > -><-
[REBOL] A couple of things regarding ports Re:(10)
Thanks Andrew. Not having latest version was my problem. A few days from last download and I'm out of date! :) So now I can look at the source of read-net. Hmm. Ahh. Ooo. Wow. I'll say it backwards. Wow... :) Brett - Original Message - From: <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Monday, September 18, 2000 8:54 PM Subject: [REBOL] A couple of things regarding ports Re:(9) > > Where can I find 'read-net, 'request-download and 'read-via ? > > source read-net > And I'm sure you can figure out the rest. > > > I really hope it's not a silly question :) > > Make sure you've got the latest version of Rebol. > > Andrew Martin > ICQ: 26227169 > http://members.ncbi.com/AndrewMartin/ > http://members.xoom.com/AndrewMartin/ > -><- >
[REBOL] A couple of things regarding ports Re:(9)
> Where can I find 'read-net, 'request-download and 'read-via ? source read-net And I'm sure you can figure out the rest. > I really hope it's not a silly question :) Make sure you've got the latest version of Rebol. Andrew Martin ICQ: 26227169 http://members.ncbi.com/AndrewMartin/ http://members.xoom.com/AndrewMartin/ -><-
[REBOL] A couple of things regarding ports Re:(8)
> read source for 'read-net, (which is used by 'request-download & 'read-via) > to see an example of 'dispatch code. > > Cheers, > > Allen K > Hi Allen, Where can I find 'read-net, 'request-download and 'read-via ? I really hope it's not a silly question :) Brett.
[REBOL] CGI setup Re:(2)
At the following link you can find an edited message on this subject. Note that it assumes that you are familiar with changing the registry. http://www.codeconscious.com/rebol/rebol-net.html#UsingRebolCGIwithPersonalW ebServer Brett. - Original Message - From: <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Monday, September 18, 2000 5:15 PM Subject: [REBOL] CGI setup Re: > I've managed to do it. But unfortunately I'm at the wrong 'puter atm. You > should add a registry key to map .r cgi's to Rebol though. ;) > > /regards Stefan > > -Original Message- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] > Sent: den 18 september 2000 07:44 > To: [EMAIL PROTECTED] > Subject: [REBOL] CGI setup > > > does anyone know how to setup MS PWS with rebol for cgi in windows95/98 > i have n idea. > > aden. >
[REBOL] A couple of things regarding ports Re:(4)
[EMAIL PROTECTED] wrote: > malte wrote: > > Im also making a multi-connection app, and had the same problems, however, > I don't get things to work with dispatch either.. > > perhaps Im not using it properly.. syntax, anyone? :) > > > > right now I go like > > port: dispatch [port1 port2] > > > > wrong? > > Yes. That's wrong. Have a look at the source for 'dispatch: > > >> source dispatch > dispatch: func [ > {Wait for a block of ports. As events happen, dispatch port handler > blocks.} > port-block [block!] {Block of port handler pairs (port can be timeout > too).} > /local ports awake timeblk result > ][ > ports: copy [] > foreach [port job] port-block: reduce port-block [ > if any [number? port time? port] [if none? timeblk [timeblk: :job]] > append ports port > ] > forever [ > either awake: wait/all ports [ > if foreach item awake [ > set/any 'result do select port-block item item > if all [value? 'result 'break = :result] [break/return true] > ] [break] > ] [do :timeblk] > ] > ] > > Note the 'foreach: > foreach [port job] port-block ah, it's interesting - do you really prefer this aproach? (nested blocks) I remember Carl ones discussed he prefers one aproach, but I don't remember the result ... I would probably prefer having separate block with handlers parallel to port-block ... -pekr- > > There's a job after each port value. Try: > dispatch [port1 Port1Handler port2 Port2Handler] > and have: > Port1Handler: func [... > etc. > > I hope that helps! > > Andrew Martin > ICQ: 26227169 > http://members.ncbi.com/AndrewMartin/ > http://members.xoom.com/AndrewMartin/ > -><-
[REBOL] A couple of things regarding ports Re:(8)
Allen wrote: > I've used 'dispatch in a basic /View chat script demo and it worked as expected. Allen's code looks like this: dispatch [ message-port :do-message event-port :do-event ] 'do-message and 'do-event are both functions. Andrew Martin ICQ: 26227169 http://members.ncbi.com/AndrewMartin/ http://members.xoom.com/AndrewMartin/ -><-
[REBOL] A couple of things regarding ports Re:(7)
- Original Message - From: <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Monday, September 18, 2000 9:00 PM Subject: [REBOL] A couple of things regarding ports Re:(6) > > >Try something like: > >dispatch [port1 [print "Port1"] port2 [print "Port2"]] > >as your: > >print first port1 > >may be waiting for input on 'port1. > > the whole idea was to wait for data from the ports :) > > however, if I do it like [print "Port1"] > I get spammed with a never ending list of Port1's, > allthough the other end of Port1 isn't sending anything, > and occasionally one or two Port2's.. > something with the 'wait seems fishy enough?.. I've used 'dispatch in a basic /View chat script demo and it worked as expected. Try changing the port number to be sure nothing else on your system isn't using the same port number. (If you are using windows kill off any other REBOL processses that have accumulated in the taskmanager, they tend to hang around if the View is closed but the ports weren't closed properly.) read source for 'read-net, (which is used by 'request-download & 'read-via) to see an example of 'dispatch code. Cheers, Allen K
[REBOL] A couple of things regarding ports Re:(6)
>Try something like: >dispatch [port1 [print "Port1"] port2 [print "Port2"]] >as your: >print first port1 >may be waiting for input on 'port1. the whole idea was to wait for data from the ports :) however, if I do it like [print "Port1"] I get spammed with a never ending list of Port1's, allthough the other end of Port1 isn't sending anything, and occasionally one or two Port2's.. something with the 'wait seems fishy enough?.. Cheers, malte -- Get your firstname@lastname email for FREE at http://NamePlanet.com/?su
[REBOL] A couple of things regarding ports Re:(5)
> hmm, however, if I for example do like: > > dispatch [ > port1 [print first port1] > port2 [print first port2] > ] > > it waits for the first port before printing the input on the second. both the ports are open/direct/lines Try something like: dispatch [port1 [print "Port1"] port2 [print "Port2"]] as your: print first port1 may be waiting for input on 'port1. That way, you can confirm that dispatch is working correctly. Andrew Martin ICQ: 26227169 http://members.ncbi.com/AndrewMartin/ http://members.xoom.com/AndrewMartin/ -><-
[REBOL] A couple of things regarding ports Re:(4)
ah yes, at a closer look at the source :) hmm, however, if I for example do like: dispatch [ port1 [print first port1] port2 [print first port2] ] it waits for the first port before printing the input on the second.. both the ports are open/direct/lines ideas? Cheers, malte >Note the 'foreach: >foreach [port job] port-block >There's a job after each port value. Try: >dispatch [port1 Port1Handler port2 Port2Handler] >and have: >Port1Handler: func [... >etc. > >I hope that helps! > >Andrew Martin >ICQ: 26227169 >http://members.ncbi.com/AndrewMartin/ >http://members.xoom.com/AndrewMartin/ >-><- > > -- Get your firstname@lastname email for FREE at http://NamePlanet.com/?su
[REBOL] Re: BUG - Stray word in Rebol
Amiga View 0.10.31 gives... >> help val VAL is a word of value: with No help available about "with" though.
[REBOL] A couple of things regarding ports Re:(3)
malte wrote: > Im also making a multi-connection app, and had the same problems, however, I don't get things to work with dispatch either.. > perhaps Im not using it properly.. syntax, anyone? :) > > right now I go like > port: dispatch [port1 port2] > > wrong? Yes. That's wrong. Have a look at the source for 'dispatch: >> source dispatch dispatch: func [ {Wait for a block of ports. As events happen, dispatch port handler blocks.} port-block [block!] {Block of port handler pairs (port can be timeout too).} /local ports awake timeblk result ][ ports: copy [] foreach [port job] port-block: reduce port-block [ if any [number? port time? port] [if none? timeblk [timeblk: :job]] append ports port ] forever [ either awake: wait/all ports [ if foreach item awake [ set/any 'result do select port-block item item if all [value? 'result 'break = :result] [break/return true] ] [break] ] [do :timeblk] ] ] Note the 'foreach: foreach [port job] port-block There's a job after each port value. Try: dispatch [port1 Port1Handler port2 Port2Handler] and have: Port1Handler: func [... etc. I hope that helps! Andrew Martin ICQ: 26227169 http://members.ncbi.com/AndrewMartin/ http://members.xoom.com/AndrewMartin/ -><-
[REBOL] A couple of things regarding ports Re:(2)
Im also making a multi-connection app, and had the same problems, however, I don't get things to work with dispatch either.. perhaps Im not using it properly.. syntax, anyone? :) right now I go like port: dispatch [port1 port2] wrong? Cheers, malte -- Get your firstname@lastname email for FREE at http://NamePlanet.com/?su
[REBOL] Re: A bug in sorting on dates/times? Re:(2)
Thanks for the response. I guess it's pretty general across platforms then. Hopefully it only affects date sorting, as a work-around should be easy enough to do then. On 18-Sep-00, [EMAIL PROTECTED] wrote: > I've just reported this same bug in REBOL/Core 2.3.0.3.1 > the version for The Official Guide. > Russell [EMAIL PROTECTED] > - Original Message - > From: <[EMAIL PROTECTED]> > To: <[EMAIL PROTECTED]> > Sent: Sunday, September 17, 2000 2:03 PM > Subject: [REBOL] A bug in sorting on dates/times? Re: >> Hi Carl >> Yup, I get the same thing. >> REBOL/View 0.10.33.3.1 10-Sep-2000 >> Copyright 2000 REBOL Technologies. All rights reserved. >> Type DEMO to run demo if it is disabled dates: [10-Sep-2000/18:24:13-5:00 10-Sep-2000/18:24:02-5:00] >> == [10-Sep-2000/18:24:13-5:00 10-Sep-2000/18:24:02-5:00] sort dates >> == [10-Sep-2000/23:24:02-5:00 10-Sep-2000/23:24:13-5:00] dates >> == [10-Sep-2000/23:24:02-5:00 10-Sep-2000/23:24:13-5:00] >> Also the same with latest experimental builds of Core and Command. >> -Larry
[REBOL] Associative Data Store
Here's an implementation for an Associative Data Store (ADS) that uses only two functions, doesn't require an object per ADS and can use any Rebol value as a key. Comment invited. Thanks to Gabriele for showing how to shorten the 'Associate? function. [ Rebol [ Title: "Associate" Name: 'Associate File: %Associate.r Author: "Andrew Martin" Email: [EMAIL PROTECTED] Date: 18/September/2000 ] Associate: function [Block [block!] Key Value] [Index] [ Index: find Block Key either none? Value [ if found? Index [ remove/part Index 2 ] ][ either found? Index [ change/only next Index reduce [Value] ][ append Block reduce [Key reduce [Value]] ] ] Block ] Associate?: function [Block [block!] Key] [Value] [ all [ Value: select Block Key first Value ] ] ] Andrew Martin ICQ: 26227169 http://members.ncbi.com/AndrewMartin/ http://members.xoom.com/AndrewMartin/ -><- [ Rebol [ Title: "Associate" Name: 'Associate File: %Associate.r Author: "Andrew Martin" Email: [EMAIL PROTECTED] Date: 18/September/2000 ] Associate: function [Block [block!] Key Value] [Index] [ Index: find Block Key either none? Value [ if found? Index [ remove/part Index 2 ] ][ either found? Index [ change/only next Index reduce [Value] ][ append Block reduce [Key reduce [Value]] ] ] Block ] Associate?: function [Block [block!] Key] [Value] [ all [ Value: select Block Key first Value ] ] ]
[REBOL] BUG - Stray word in Rebol
Bug - Stray word in Rebol. REBOL/View 0.10.33.3.1 10-Sep-2000 Copyright 2000 REBOL Technologies. All rights reserved. >> help val VAL is a tuple of value: 0.0.0 Allen K has discovered that: > Val also has a value in a fresh console > REBOL/View 0.10.33.3.1 10-Sep-2000 > Copyright 2000 REBOL Technologies. All rights reserved. > Type DEMO to run demo if it is disabled > >> ? val > VAL is a string of value: "imanXwin kludge" > >> Andrew Martin ICQ: 26227169 http://members.ncbi.com/AndrewMartin/ http://members.xoom.com/AndrewMartin/ -><-
[REBOL] Bug - Stray word in Rebol Re:(2)
'val is not in REBOL/Core 2.3.0.3.1 Here's console session: >> ? val Found these words: value? (native) >> End console session. The two lines starting with "Found" were output by REBOL. They signify that the only predefined word containing "val" is 'value? which is a native word. Russell [EMAIL PROTECTED] - Original Message - From: <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Sunday, September 17, 2000 11:40 PM Subject: [REBOL] Bug - Stray word in Rebol Re: > Hi Andrew, > > Val also has a value in a fresh console > > REBOL/View 0.10.33.3.1 10-Sep-2000 > Copyright 2000 REBOL Technologies. All rights reserved. > Type DEMO to run demo if it is disabled > >> ? val > VAL is a string of value: "imanXwin kludge" > >> > > Cheers, > > Allen K > > - Original Message - > From: <[EMAIL PROTECTED]> > To: <[EMAIL PROTECTED]> > Cc: <[EMAIL PROTECTED]> > Sent: Monday, September 18, 2000 2:45 PM > Subject: [REBOL] Bug - Stray word in Rebol > > > > Bug - Stray word in Rebol. > > > > REBOL/View 0.10.33.3.1 10-Sep-2000 > > Copyright 2000 REBOL Technologies. All rights reserved. > > >> change-dir %"/c/windows/desktop/" > > == %/c/windows/desktop/ > > >> help val > > VAL is a tuple of value: 0.0.0 > > > > Anyone know what 'VAL is for? I suspect it's not meant to be there. > > > > Andrew Martin > > ICQ: 26227169 > > http://members.ncbi.com/AndrewMartin/ > > http://members.xoom.com/AndrewMartin/ > > -><- > > > > > > >
[REBOL] CGI setup Re:
I've managed to do it. But unfortunately I'm at the wrong 'puter atm. You should add a registry key to map .r cgi's to Rebol though. ;) /regards Stefan -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] Sent: den 18 september 2000 07:44 To: [EMAIL PROTECTED] Subject: [REBOL] CGI setup does anyone know how to setup MS PWS with rebol for cgi in windows95/98 i have n idea. aden.