[REBOL] parsing text???? Re:

2000-08-25 Thread chris

Hi Stephane,

 I have the following text
 dog.eat.dog.eat.cat.eat.fish
 dog.eat.dog.eat.cat.eat.fish?but no
 dog.eat.dog.eat.cat.eat.fish"really
 dog.eat.dog.eat.cat.eat.fish
 dog.eat.dog.eat.cat.eat.fish"
 dog.eat.dog.eat.cat.eat.fish
 and am using the following code to parse it:
 html-code: [
  thru newline copy url to {?|"|newline} (append urls url) |
  copy txt to newline (append text txt)
 ]
 page: read %emails.txt
 parse page [ to newline copy url some html-code (append urls url) ]
  it freezes I tried many combination but just cannot get the whole txt
 only parts at the time or parts of the original file.
 help
 Stephane

How about:

page: read/lines %emails.txt
text: copy []
urls: copy []

;an just stands for alphanumeric
an-chars: charset [#"a" - #"z"] ;add more, this is a simple example
an-text: [some an-chars]
an-url: [an-text some ["." an-text]]
rule: [
copy url an-url (append urls url) any [
["?" | {"}] copy txt an-txt (append text txt)
]
]

foreach line page [parse line rule]


I'm not sure if this entirely addresses your question.

- Chris




[REBOL] parsing text???? Re:

2000-08-25 Thread jelinem1


First, unless you know something I don't (very possible) I don't think the
following is correct:

copy url to {?|"|newline}

This will look for the string '?|"|newline' in the file. I think what you
really wanted was:

copy url [ to "?"| to {"}| to newline]

Unfortunately this won't work and is my biggest pet peeve with 'parse. What
*I* expect this to do is to look for the first occurrance of "?" OR {"} OR
newline, WHICHEVER COMES FIRST. What this actually does is to look for an
occurrance of "?" in the file. If the ENTIRE FILE does not contain "?" then
it looks for an {"}. Again, if the ENTIRE FILE does not contain {"} then it
looks for newline. Is this bevavior useful in anybody's case? I guess it
could be, but I haven't run into it yet.

If your data does not contain "?" or {"} then you can use your code but
you'll have to process a line at a time. Instead of searching the entire
file for one of these chars, it will only search the entire current line.
Either that, or rewrite your code NOT to use 'parse. NOTE: You might be
able to do something with 'charset but I haven't played with enough to know
for sure.

- Michael Jelinek





[EMAIL PROTECTED] on 08/24/2000 09:26:10 PM

From: [EMAIL PROTECTED] on 08/24/2000 09:26 PM

Please respond to [EMAIL PROTECTED]
To:   [EMAIL PROTECTED]
cc:
Subject:  [REBOL] parsing text


I have the following text
dog.eat.dog.eat.cat.eat.fish
dog.eat.dog.eat.cat.eat.fish?but no
dog.eat.dog.eat.cat.eat.fish"really
dog.eat.dog.eat.cat.eat.fish
dog.eat.dog.eat.cat.eat.fish"
dog.eat.dog.eat.cat.eat.fish
and am using the following code to parse it:
html-code: [
 thru newline copy url to {?|"|newline} (append urls url) |
 copy txt to newline (append text txt)
]
page: read %emails.txt
parse page [ to newline copy url some html-code (append urls url) ]
 it freezes I tried many combination but just cannot get the whole txt only
parts at the time or parts of the original file.
help
Stephane












[REBOL] Multimedia quality (was) One disk OS + REBOL Re:(7)

2000-08-25 Thread steve . shireman

[EMAIL PROTECTED] wrote:

 Yes, I know - as Dave Haynie said - he left mainly because Scala got too
 much tied to Windows. It uses DirectX IIRC. But do you remember those
 glory days of Amiga and its chipset? Scala running very very smoothly on
 such underpowered (by today standards) piece of hw. And what? Was it
 bigger than 500 kb? And scala presentation was just script.

The script was a 'dialect' called Lingua
It is the best practical example of what a 'dialect' is that I can think
of.

 And it had
 network capabilities too.

Ahh, but not nearly as cool as Rebol's...


Hey, with serial: support, it is possible to make a platform-independent
dongle for high-value products...

Steve Shireman

(maybe Steven Wright knew lisp...)

"...when I talk and sometimes you can't here me, it is because sometimes
I am in parentheses..." Steven Wright




[REBOL] Please help with proxy setup

2000-08-25 Thread princepawn

Hi, we dont have a pop server here at work, they have some beast call MAPI (not IMAP) 
that is used, for example, if you want to setup Microsoft Outlook or something.

I have an outside ISP (Earthlink) and I know that it gets my email from 
pop.earthlink.net.

Our proxy is 
esnproxy
the port by which it is accessed is 80

So, how do I setup Rebol at work? Any help is appreciated.

--- at home, I simply followed answered Rebol's questions and was up and runnning in 
20seconds. at home I answered as follows:

email address: [EMAIL PROTECTED]

email server: pop.earthlink.net

no proxy


Get your FREE Email and Voicemail at Lycos Communications at
http://comm.lycos.com




[REBOL] Please help with proxy setup Re:

2000-08-25 Thread bhandley

Hi,

MAPI is a piece of technology inside Outlook/Windows.

You will need to talk to your network administrator at work. It is quite
possible that they will have to make a special setting (there are multiple
ways they could do it) on their network server machines in order for you to
be able to use Rebol or any other TCP/IP client to access your outside pop
server. When (and if) they do this, they should tell you the address you
should use for the "pop server".  Whether they do this for you will depend
on the security/network policy at your work and how much extra admin it
causes them.

Brett.

- Original Message -
From: [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Friday, August 25, 2000 11:58 PM
Subject: [REBOL] Please help with proxy setup


 Hi, we dont have a pop server here at work, they have some beast call MAPI
(not IMAP) that is used, for example, if you want to setup Microsoft Outlook
or something.

 I have an outside ISP (Earthlink) and I know that it gets my email from
pop.earthlink.net.

 Our proxy is
 esnproxy
 the port by which it is accessed is 80

 So, how do I setup Rebol at work? Any help is appreciated.

 --- at home, I simply followed answered Rebol's questions and was up and
runnning in 20seconds. at home I answered as follows:

 email address: [EMAIL PROTECTED]

 email server: pop.earthlink.net

 no proxy


 Get your FREE Email and Voicemail at Lycos Communications at
 http://comm.lycos.com





[REBOL] How to properly count lister size?

2000-08-25 Thread petr . krenzelok

Hi,

I tried to parse out some website and wanted to display links together
with description and image in a list. However, - I am encountering some
problems using 'supply.

... btw: lists are the most difficult part of /View to understand. It's
mixed with listers and one has to know inners of /View face interface.
The worst and the least intuitive part is 'supply itself. Where does the
'count come from etc etc ...

So, let's say my list size is 500x400. I have 80 pixels wide rows:

seznam: list 580x400 [
 across
; img: image 100x100
 film: text 200x15 font [color: 1.1.251 shadow: none image:
none] [print film/text]
; at 101x16
 desc: text 400x80 font [size: 10 color: 1.1.1 shadow: none]

 ] supply [
   count: count + num
   either (count = length? titles) [
film/text: pick titles count
;img/image: load pick images count
desc/text: pick descriptions count
   ][ film/text: copy ""
;img/image: none
desc/text: copy ""

]

]

at 610x50
lista: slider 16x400 length? titles [print lista/data num:
lista/data - 1 show seznam]

So, length? titles returns 21. Once I scroll to the bottom of the
slider, it shows some binary??? strings ... Note: descriptions string
are large and don't fit in the 80 pixels wide rows ...

How to properly set slider size, please?

Thanks,
-pekr-




[REBOL] Does REBOL only use proxying for HTTP and FTP.. or also for POP3

2000-08-25 Thread princepawn

 
If my pop3 client I want to use to send mail is outside of our firewall on the 
internet, then I must access its POP3 port via our proxy.

I am able to use our CERN(generic) proxy just fine to make HTTP connections, but was 
wondering if REBOL was not doing so for POP3

I am using a href=http://www.netzero.net/support/email/email_setup.htmlThe settings 
posted at Netzero/a

and used the following REBOL set-net command:

 set-net [[EMAIL PROTECTED] smtp.netzero.net pop.netzero.net esnproxy 80 generic]
 read http://www.instinet.com
connecting to: www.instinet.com
== {HTML
!-- This document was created with HTMLed32  --
!-- Author: Michael L. Capalbo   --
!-- Date:  ...
 read http://www.rit.edu
connecting to: www.rit.edu
connecting to: www.rit.edu
== {HTML
HEAD
^-TITLERIT, Rochester Institute of Technology/TITLE
META name="keywords" content="rochester,RIT,university,c...
 send [EMAIL PROTECTED] "hi there"
connecting to: smtp.netzero.net
** User Error: Server error: tcp HTTP/1.0 408 Request Time-out.
** Where: smtp-port: open [scheme: 'smtp]
if email?

 set-net [[EMAIL PROTECTED] pop.netzero.net smtp.netzero.net esnproxy 80 
generic]
 send [EMAIL PROTECTED] "hi there"
connecting to: pop.netzero.net
** Access Error: Network timeout.
** Where: smtp-port: open [scheme: 'smtp]
if email?
--

On Sat, 26 Aug 2000 0:23:54   
 bhandley wrote:
Hi,

MAPI is a piece of technology inside Outlook/Windows.

You will need to talk to your network administrator at work. It is quite
possible that they will have to make a special setting (there are multiple
ways they could do it) on their network server machines in order for you to
be able to use Rebol or any other TCP/IP client to access your outside pop
server. When (and if) they do this, they should tell you the address you
should use for the "pop server".  Whether they do this for you will depend
on the security/network policy at your work and how much extra admin it
causes them.

Brett.

- Original Message -
From: [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Friday, August 25, 2000 11:58 PM
Subject: [REBOL] Please help with proxy setup


 Hi, we dont have a pop server here at work, they have some beast call MAPI
(not IMAP) that is used, for example, if you want to setup Microsoft Outlook
or something.

 I have an outside ISP (Earthlink) and I know that it gets my email from
pop.earthlink.net.

 Our proxy is
 esnproxy
 the port by which it is accessed is 80

 So, how do I setup Rebol at work? Any help is appreciated.

 --- at home, I simply followed answered Rebol's questions and was up and
runnning in 20seconds. at home I answered as follows:

 email address: [EMAIL PROTECTED]

 email server: pop.earthlink.net

 no proxy


 Get your FREE Email and Voicemail at Lycos Communications at
 http://comm.lycos.com





Get your FREE Email and Voicemail at Lycos Communications at
http://comm.lycos.com




[REBOL] Re: mailing list since 1998 full names in sender Re:

2000-08-25 Thread g . santilli

Hello [EMAIL PROTECTED]!

On 24-Ago-00, you wrote:

 k There's a few different ways that e-mail programs format the
 k From: header, and parsing all of the permutations was a bit of
 k a trick. My sample code from late '99 (message 13311) was
 k fixed up by Thomas Jensen in message 13315 and is a great
 k starting point for a final solution to this.

SELMA doesn't need to recreate the message; it could keep at least
the interesting fields (I would RESEND the message as is, but
perhaps stripping Received: headers etc. makes sense).

I posted a patch for the header parser, too, anyway...

Regards,
Gabriele.
-- 
Gabriele Santilli [EMAIL PROTECTED] - Amigan - REBOL programmer
Amiga Group Italia sez. L'Aquila -- http://www.amyresource.it/AGI/




[REBOL] Does REBOL only use proxying for HTTP and FTP.. or also for POP3 Re:

2000-08-25 Thread holger

On Fri, Aug 25, 2000 at 09:13:08AM -0700, [EMAIL PROTECTED] wrote:
  
 If my pop3 client I want to use to send mail is outside of our firewall on the 
internet, then I must access its POP3 port via our proxy.

This sounds strange. You cannot access the POP3 port of a POP3 client (email 
application),
only that of a POP3 server (at your ISP). Clients can only connect to servers, not the
other way around.

Also, POP3 is not used to send mail, only to receive mail. For sending mail you use
SMTP.

If you are running a POP3/SMTP email application (client) inside of your firewall, and 
want to
access a POP3 server (to fetch your email) or an SMTP server (to send email) outside 
of your
firewall, then you may have to connect through a (SOCKS) proxy. See below.

If it is the other way around (you are outside of the firewall with your POP3/SMTP 
client,
and the POP3/SMTP server you are connecting to is inside of the firewall), then you are
probably out of luck -- unless the sysadmin agrees to "punch a hole" in the
firewall for you.

 I am able to use our CERN(generic) proxy just fine to make HTTP connections, but was 
wondering if REBOL was not doing so for POP3

CERN proxies do not support POP3 or SMTP. They can only be used for HTTP and (usually) 
FTP
and gopher. If you want to be able to access services other than these through a proxy
then you need a SOCKS4 or SOCKS5 proxy.

-- 
Holger Kruse
[EMAIL PROTECTED]




[REBOL] Network related problem with the Experimental releases

2000-08-25 Thread jhagman

Hi,

I am suffering with a problem with the experimental releases of Rebol.
I am unable to read data over HTTP from anywhere but my own domain.
I have tried to tweak with the proxy settings, but with no success. I
am hoping there is something I have overlooked and someone on th list
could give me some assistance. I am also cc:ing this mail to
[EMAIL PROTECTED], although I have reported this problem also
earlier. 

With Core 2.3 networking works without a proxy. With proxy set works
HTTP fine. FTP, FINGER and maybe some others don't. This is of course
not a big problem as it is possible to specify different proxy servers
for different protocols. Netscape works though fine with FTP.

Using Experimental Core without proxy allows me to read files only
from this domain (abo.fi) no other that I've tested works. FTP works
fine without proxy. If proxy is on I can not read files over http even
from this domain. Also FTP is not working but this was expected.

Something has changed between the released versions and the
experimental versions. As one works and other don't. I have tested
this program on Linux (libc6), Windows98, BeOS and FreeBSD. All tests
were on this same machine and gave same results. At work experimental
version of Core works like a charm.

If any of you have any ideas to solve this problem it would be great.

Yours,
Jussi

P.S.

Enhancement request:
Would it not be possible to determine the type of proxy
automatically? I have not had to know it for installation of any other
program. It would make installing rebol easier for common users. 

-- 
Jussi HagmanCS in Åbo Akademi University
Studentbyn 4 D 33   [EMAIL PROTECTED]
20540 Åbo   [EMAIL PROTECTED]
Finland




[REBOL] Setting array variables Re:

2000-08-25 Thread rryost

Here's an illustrative console session that addresses your question:

 dat: array [2 3]
== [[none none none] [none none none]]
 dat/1: [1 2 3]
== [[1 2 3] [none none none]]
 dat/2: [3 4 5]
== [[1 2 3] [3 4 5]]
 change dat/1 777
== [2 3] ; this return allows you to change a number of elements in one
statement, but I don't use it here.
 dat
== [[777 2 3] [3 4 5]]
 change at dat/1 2 888 ; to change the second element of first row of
array.
== [3]
 dat
== [[777 888 3] [3 4 5]]

- Original Message -
From: [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Thursday, August 24, 2000 9:32 PM
Subject: [REBOL] Setting array variables


 I have been using "compose" to set variables within an array,
 I have the sneaky feeling that there may be easier way.

 data: [ [ 1 2 3 ] [ 3 4 5 ] ]
 == [[1 2 3] [3 4 5]]
  b: 2
 == 2
  c: 3
 == 3
  new-data: 777
 == 777
  do compose [ (to-set-path reduce [ 'data :a :b ])  new-data ]
 == [777 4 5]
  data
 == [[1 2 3] [777 4 5]]

 Anyone know of an easier way?

 Mike Yaunish
 [EMAIL PROTECTED]







[REBOL] oops!

2000-08-25 Thread galtbarber

2) write a whole download service using raw ftp to process downloading an 
entire list of links.

I meant tcp, not ftp!

There is something wrong with this darned keyboard! :-)

-Galt




[REBOL] Setting array variables Re:(2)

2000-08-25 Thread rryost

I've added some more stuff to show how to use a variable for a row number.

- Original Message - 
From: [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Friday, August 25, 2000 11:37 AM
Subject: [REBOL] Setting array variables Re:


 Here's an illustrative console session that addresses your question:
 
 dat: array [2 3]
== [[none none none] [none none none]]
 dat/1: [1 2 3]
== [[1 2 3] [none none none]]
 dat/2: 3 4 5
== 5
 dat
== [[1 2 3] 3]
 dat/2: [3 4 5]
== [[1 2 3] [3 4 5]]
 change dat/1 777
== [2 3]
 dat
== [[777 2 3] [3 4 5]]
 change at dat/1 2 888
== [3]
 dat
== [[777 888 3] [3 4 5]]

;  here's how to  use a variable for a row number.

 a: 2
== 2
 dat/:a
== [3 4 5]
 change at dat/:a 2 999
== [5]
 dat
== [[777 888 3] [3 999 5]]

Seems easier, no?

  Anyone know of an easier way?
 
  Mike Yaunish
  [EMAIL PROTECTED]
 
 
 
 




[REBOL] Horribly Busy, but Woohoo! a Web Server Object :)

2000-08-25 Thread rex

I'm in the process of moving to a new apartment this weekend, so I don't
have the time to properly upload this to the script libraries, so I'm
just appending it this email. Hopefully nothing will get goofed up... At
least it's somewhat commented. :)

This is a generic self-contained HTTP server object. It handles multiple
connections and has rudimentary cookie support. It currently handles GET,
PUT, POST, and HEAD requests. 

To make good use of this object, you should at least override the get-
handler method and possibly the post-handler, put-handler, and head-
handler methods. It all depends on what you want to do. 

Fortunately, you should only have to override these four methods. And
odds are you'll only need to override the get-handler and post-handler
methods, since HEAD and PUT requests are pretty rare. You'll probably
want to change the listen port from the default of 80 if you plan on
running other servers.

As presented, It does *not* serve files from disk or run CGI scripts. The
default handlers merely display the headers and data that the client sent
over. (Good for debugging, and an interesting learning experience...) The
purpose of this object was to facillitate the creation of special purpose
servers that use the HTTP protocol. 

All of the normal functionality one expects in a traditional web server
can be easily layered on top. 

XML-RPCers should love this, and once I'm done with the move, I'll join
in the effort to get a Rebol XML-RPC server up and going. It should be a
night's work with this object to get a rudimentary server up and running.
All of the HTTP stuff is handled, you can just concentrate on the meat,
i.e. parsing the request XML, handling the method invocation, and
generating the response XML.

I haven't done any substantial benchmarking,  but under Mac OS 8.6 and
using the experimental Rebol 2.4 PPC build, this server seems to be able
to send data at ~150 - 200k/s. (It depends on where and how you're
generating the data.) 

To give this thing a try, do something like this:
s:  make http-server []
s/run 

Thanks to everyone on the list who have answered questions that have
indirectly helped me with this. Enjoy!
:Eric

;Start of code


Rebol
[
Title: "Rebol HTTP Server Object"
Date: 25-Aug-2000
Author: "Eric King"
]


;
;   Random notes: 
;   If the debug attribute is set to true (which it is by default)
;   Attempting to read (GET) from /shutdown will cause the web server
;   to clean up and shutdown. 
;
;   As presented here, this web server does *not* serve pages from disk.
;   Why? Because, I wanted a very general and flexible HTTP protocol server.
;   That is, I did not necessarily want URIs to map directly to files.
;   That said, getting this to serve pages, images, sounds, etc is 
;   really easy. In your get-handler method, convert the Target-URI: 
;   header to a path and put the resulting file in the entity field of your
;   handler-response object. Also set the code, cookie, hdrs, and mime fields 
;   to something appropriate. 
;   e.g. response/code: "200" response/mime: "text/plain" response/cookie: ""
;   response/hdrs: copy [] 
;
;   response/entity: open %target-file.txt 
;   or
;   response/entity: read %target-file.txt  (This seems faster under MacOS 9)
;

http-server: make object!
[
;
;   HTML Templates
;
default-template: copy
{!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"
html
titleRebol HTTP Server Object/title
style type="text/css"
!--
a:link ^{ text-decoration: none; color: #6D4D4D ^}
a:visited ^{ text-decoration: none; color: #4D4D6D ^}
text {font-family: Arial, Sans-serif; font-size: 12px;}
--
/style
meta name="generator" content="Reblog 3.0"
body bgcolor = "#FF"
div class = "text"
!--content--
/div
/body
/html}

;
;   Attributes
;
port:   80
connections:0
listener:   none
;Queues to hold the state of multiple connections
read-q: copy[]
write-q:copy[]
;Create a 4k buffer for headers
header-buffer:  make string! 4096
;Send/Receive data in 8k chunks
read-chunk-size: 8192
write-chunk-size: 8192
;Limit size of PUT or POSTed data
max-entity: 32768
debug: true
;Copy this object and set the appropriate fields in the
;get-handler, put-handler, post-handler, and head-handler methods.
handler-response: make object!
[
code:   copy "200"
mime:   copy "text/html"
cookie: copy "value=nothing"
entity: copy ""
hdrs:   copy []
]
;
;   Utility Methods
;
cmt-insert: function 
[str [string!] tag [string!] con [string!] /dup /every]
[ s t c d]
[
s: rejoin [ copy "!--" copy tag "--" ]
c: copy con
 

[REBOL] context of a function Re:(9)

2000-08-25 Thread galtbarber

I hate to disagree with people that are smarter than me,
but I seriously think you are underestimating what it 
takes to really understand rebol, especially for those 
less brilliant.

I generally find that most of my knowledge of other 
computer systems to gain insight into rebol is quite 
helpful and revealing.  Even having the context to 
say, this is like scheme or logo in rebol, but that 
is like some other language, etc. is all helpful.

So, yes, it is true that rebol is different in 
important ways from other languages and therefore 
you will have to gain a new understanding.
But this notion that you would be better off 
starting from a point of total ignorance and 
then everything would be easy is patently absurd.

When I have trouble with Rebol, if I was a less 
knowledgeable user I would probably just give up.
Being able to make some guesses about possible causes 
or solutions is much better.

So, the best way really, is for Rebol to tell us how 
it works inside.  When you know how rebol lists really 
work, and string literals and contexts and words, then 
you understand rebol.  Ignorance or innocence isn't much 
help.

Obviously, one should try never to allow preconceptions and 
prejudice to inhibit understanding, and that is true of 
everything, not just Rebol.

I am not a stupid person, even if I am not a genius.
I only got this far with Rebol because I am doggedly 
persistent, not because I have the pleasantly uncluttered 
mind of an infant.

I really like and respect you Andrew, and I appreciate 
all the work you have done for Rebol and the members of 
the list.  I just didn't want to let this go by yet 
again ...

Now, this doesn't mean that I am anti-Rebol or 
want to be critical or whatever.  We all love Rebol 
and want to use it as much as possible!  I still 
don't know how forgetting everything I know is going to help 
me figure out just what the heck read-io really does
and why timeouts dont seem to work as advertised for 
downloading big files...

I will tell you, one of the joys of using Rebol 
is that it's so much nicer than other languages 
in many areas.  If you didn't know something about 
them you probably would wonder what the fuss 
was all about when you hear people rave about Rebol!

-Galt

p.s. I bet Carl dreamed up Rebol, not by forgetting 
everything he ever knew, but by knowing so much 
about the current systems and their problems, 
and deeply pondering causes and possible solutions,
and using insight gained throught deep experience 
and hard work.


= Original Message From [EMAIL PROTECTED] =
Brian wrote:
 Functions are simpler than most think they are.

Gabriele wrote:
 Actually, REBOL is simpler than most think it is. This is the reason
because they often complain for bugs or strange behaviour: humans have a lot
of difficulty to grasp simplicity.

I totally agree. Rebol is so simple, that people willfully insert complexity
into it and then try to understand it! The best way is do as Carl Sassenrath
suggests in his rephrasing of my insight on page xiv of Rebol - The Official
Guide, "If you know other other languages, forget them while you learn
REBOL."

Andrew Martin
ICQ: 26227169
http://members.xoom.com/AndrewMartin/
--




[REBOL] Multimedia quality (was) One disk OS + REBOL Re:(8)

2000-08-25 Thread galtbarber

Whatever Rebol code you wrote for the dongle could 
easily be read by devious miscreant ne'er-do-wells.
People trying to sell expensive Rebol products may 
be frustrated by Rebol's open-ness.

Some commercial systems are so large and complex 
and ever changing that they dont fear customers 
having the source, since if the user wasn't registered they 
wouldn't get the constant flow of bugfixes and support they 
need to keep the blasted monstrosity going.

Also big corporate customers tend to play by the book and 
buy most of their software and are much more 
reliable in this way than the typical individual user
for personal use.

Small software that just works would however be 
copied endlessly without protection, is my guess.

I like free sw as much as the next guy, but it is 
harder for people to find time to volunteer rather 
than time that earns them income, to work on a 
software project.  Linux is pretty amazing, 
but not all sw is going to be developed that way.
The vast majority of people bought their Linux 
from somebody, like RedHat, who bundles it 
with apps and so on...

If sw is all that you do and you don't have some 
other way to make money, then your sw work has 
got to pay or you starve.  We still don't seem to have 
a way to bridge the gap between commercial production 
where all is paid and owned and controlled and re-inventing 
the wheel and dominating the market, and freeware cooperatives
where it is friendly and less controlling but where 
no one gets monetary recompense.

So, what else is new?


= Original Message From [EMAIL PROTECTED] =
[EMAIL PROTECTED] wrote:

 Yes, I know - as Dave Haynie said - he left mainly because Scala got too
 much tied to Windows. It uses DirectX IIRC. But do you remember those
 glory days of Amiga and its chipset? Scala running very very smoothly on
 such underpowered (by today standards) piece of hw. And what? Was it
 bigger than 500 kb? And scala presentation was just script.

The script was a 'dialect' called Lingua
It is the best practical example of what a 'dialect' is that I can think
of.

 And it had
 network capabilities too.

Ahh, but not nearly as cool as Rebol's...


Hey, with serial: support, it is possible to make a platform-independent
dongle for high-value products...

Steve Shireman

(maybe Steven Wright knew lisp...)

"...when I talk and sometimes you can't here me, it is because sometimes
I am in parentheses..." Steven Wright




[REBOL] Interfaces to C code Is there a mailing list archive?

2000-08-25 Thread princepawn

1- Given that REBOL is distributed as a binary, I was wondering how one might compile 
in support for external FORTRAN or C or C++ libraries... 

2- I looked around for a mailing list archive before asking this question, but did not 
see one.



Get your FREE Email and Voicemail at Lycos Communications at
http://comm.lycos.com




[REBOL] Network related problem with the Experimental releases Re:

2000-08-25 Thread jhagman

Hi, 

An addition, after reading Galt's mail I realized that I should test
the plain tcp connection. And that works! With and without the proxy
following happens:

REBOL/core (Experimental) 2.4.34.4.2

 set-net [none none none none none none]
 read http://www.rebol.com
connecting to: www.rebol.com
** Access Error: Network timeout.
** Where: read http://www.rebol.com
 p: open tcp://www.rebol.com:80
 insert p {GET / HTTP/1.0^/^/}
 loop 100 [prin first p] print []
HTTP/1.1 200 OK
Date: Fri, 25 Aug 2000 19:23:14 GMT
Age: 533
Server: Apache/1.3.6 (Unix) mod_frontpa

 set-net [none none none "yok.cache.utu.fi" 80 'generic]
 read http://www.rebol.com  
connecting to: www.rebol.com
** Access Error: Network timeout.
** Where: read http://www.rebol.com
 close p
 p: open tcp://www.rebol.com:80 
 insert p {GET / HTTP/1.0^/^/}  
 loop 100 [prin first p] print []   
HTTP/1.1 200 OK
Date: Fri, 25 Aug 2000 19:23:14 GMT
Age: 678
Server: Apache/1.3.6 (Unix) mod_frontpa
 

So the problem seems not to be just with proxy but with REBOL. Some more
work with network guys. :) The proxy or something else on our net
surely affects rebol as it worked just fine at my workplace.

Yours,
Jussi


-- 
Jussi HagmanCS in Åbo Akademi University
Studentbyn 4 D 33   [EMAIL PROTECTED]
20540 Åbo   [EMAIL PROTECTED]
Finland




[REBOL] Index?

2000-08-25 Thread ptretter


Is there an alternative for:

a: "101"
foreach item a [print index? item]
1
2
3

Obvious to you REBOL gurus this generates an error.  But it illustrates
clearly what I want to do.  Damn, index? is native!  :)   Anyone have some
helpful alternatives.


Paul Tretter




[REBOL] Interfaces to C code Is there a mailing list archive? Re:

2000-08-25 Thread jhagman

Quoting [EMAIL PROTECTED] ([EMAIL PROTECTED]):

 1- Given that REBOL is distributed as a binary, I was wondering how
 one might compile in support for external FORTRAN or C or C++
 libraries... 

Currently no. 

There are ways to use external libraries but they are not something to
suggest. The upcoming REBOL/Command that already exists as a beta
version let's you use libraries. 

Yours,
Jussi

-- 
Jussi HagmanCS in Åbo Akademi University
Studentbyn 4 D 33   [EMAIL PROTECTED]
20540 Åbo   [EMAIL PROTECTED]
Finland




[REBOL] Index? Re:

2000-08-25 Thread rryost

Paul, I don't see the result as an error.
You're just printing out the "index" of each item in 'a;

Look at this console session, with remarks inserted following the :'s:

 a: "101"
== "101"
 foreach item a [print item]
1 ; the index of this '1 is 1.
0 ; the index of this '0 is 2, etc.
1

- Original Message -
From: [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Friday, August 25, 2000 12:47 PM
Subject: [REBOL] Index?



 Is there an alternative for:

 a: "101"
 foreach item a [print index? item]
 1
 2
 3

 Obvious to you REBOL gurus this generates an error.  But it illustrates
 clearly what I want to do.  Damn, index? is native!  :)   Anyone have some
 helpful alternatives.


 Paul Tretter






[REBOL] Index? Re:

2000-08-25 Thread jhagman

Quoting [EMAIL PROTECTED] ([EMAIL PROTECTED]):
 
   Is there an alternative for:
 
   a: "101"
   foreach item a [print index? item]
   1
   2
   3
 
 Obvious to you REBOL gurus this generates an error.  But it illustrates
 clearly what I want to do.  Damn, index? is native!  :)   Anyone have some
 helpful alternatives.

Ummm... I don't have clue what you are trying to do, but maybe
following will help:

  while [not tail? a] [
  print index? a 
  a: next a
  ]

Yours,
Jussi

-- 
Jussi HagmanCS in Åbo Akademi University
Studentbyn 4 D 33   [EMAIL PROTECTED]
20540 Åbo   [EMAIL PROTECTED]
Finland




[REBOL] Setting array variables Re:(3)

2000-08-25 Thread rryost

Oops in my preceding post, I forgot to delete some erroneous stuff.  It's
separated out below by blank lines.
- Original Message -
From: [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Friday, August 25, 2000 11:47 AM
Subject: [REBOL] Setting array variables Re:(2)


 I've added some more stuff to show how to use a variable for a row number.

 - Original Message -
 From: [EMAIL PROTECTED]
 To: [EMAIL PROTECTED]
 Sent: Friday, August 25, 2000 11:37 AM
 Subject: [REBOL] Setting array variables Re:


  Here's an illustrative console session that addresses your question:
 
  dat: array [2 3]
 == [[none none none] [none none none]]
  dat/1: [1 2 3]
 == [[1 2 3] [none none none]]


; The following is the wrong way to insert a block!

  dat/2: 3 4 5
 == 5
  dat
 == [[1 2 3] 3]

; Here's the correct way:

  dat/2: [3 4 5]
 == [[1 2 3] [3 4 5]]
  change dat/1 777
 == [2 3]
  dat
 == [[777 2 3] [3 4 5]]
  change at dat/1 2 888
 == [3]
  dat
 == [[777 888 3] [3 4 5]]

 ;  here's how to  use a variable for a row number.

  a: 2
 == 2
  dat/:a
 == [3 4 5]
  change at dat/:a 2 999
 == [5]
  dat
 == [[777 888 3] [3 999 5]]

 Seems easier, no?

   Anyone know of an easier way?
  
   Mike Yaunish
   [EMAIL PROTECTED]
  
  
  
 





[REBOL] Programming contest!

2000-08-25 Thread Alfred_Pang


The Third Annual ICFP Programming Contest
http://www.cs.cornell.edu/icfp/

'On Saturday, August 26, 2000 at 5PM EST a challenge task will be
posted on the Internet and mailed to all registered participants.'

Anyone daring enought to take on the challenge with REBOL?




[REBOL] Office Spec. Was Who Writes The Big Rebol Apps ? Re:

2000-08-25 Thread mailinglists

Hehehe...

 REBOL arm patches and tattoos. Gang style initiations.

That's a good one, Ryan!

Regards,
Rachid





[REBOL] Programming contest! Re:

2000-08-25 Thread trobrock

That might be interesting!

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
Sent: Friday, August 25, 2000 4:39 PM
To: [EMAIL PROTECTED]
Subject: [REBOL] Programming contest!



The Third Annual ICFP Programming Contest
http://www.cs.cornell.edu/icfp/

'On Saturday, August 26, 2000 at 5PM EST a challenge task will be
posted on the Internet and mailed to all registered participants.'

Anyone daring enought to take on the challenge with REBOL?




[REBOL] Rebol/Command Doc

2000-08-25 Thread trobrock

Does anyone know where i can get Any REBOL/Command Documentation?




[REBOL] Index? Re:

2000-08-25 Thread ryanc

Hi Paul,

 a: "101"
== "101"
 forall a [print index? a]
1
2
3
== false


This changes the actual index of a, so you will likely want to do this
afterward:

a: head a

Foreach does not effect the index, it just feeds you the data. :-()

--Ryan

[EMAIL PROTECTED] wrote:

 Is there an alternative for:

 a: "101"
 foreach item a [print index? item]
 1
 2
 3

 Obvious to you REBOL gurus this generates an error.  But it illustrates
 clearly what I want to do.  Damn, index? is native!  :)   Anyone have some
 helpful alternatives.

 Paul Tretter

--

Ryan Cole
Programmer Analyst
www.iesco-dms.com
707-468-5400





[REBOL] Re: CGI: reading POST-method data with read-io Re:(2)

2000-08-25 Thread g . santilli

Hello [EMAIL PROTECTED]!

On 25-Ago-00, you wrote:

 p Could you be more specific, please? How do you want to
 p substitute read-io read-by-buffer-size-parts functionality?

You need to use READ-IO when you a) want the raw data and b) don't
want to wait for the remote part to close the port. COPY/PART had
a similar functionality on /BINARY TCP ports, but it still waited
if there were no data in the port. Now you can just use COPY or
COPY/PART, because it no more waits for data. 

Imagine a client-server communication. With the new experimental
core:

Asynchronous communication:

Server:
 listen: open tcp://:1
 conn: first listen

Client:
 conn: open tcp://localhost:1
 insert conn "hello server!"

Server:
 copy conn
== "hello server!"
 insert conn "hello client!"

Client:
 copy conn
== "hello client!"

and so on.

Synchronous communication:

Server:
 listen: open/wait tcp://:1
 conn: first listen

Client:
 conn: open tcp://localhost:1
 insert conn "1234567890"

Server:
 copy/part conn 20
(waits...)

Client:
 insert conn "1234567890"

Server:
(ends waiting)
== "12345678901234567890"

You don't even need to use a cycle if you use syncronous
operations (which you can use if you don't need to handle
multiple connections or other events).

Regards,
Gabriele.
-- 
Gabriele Santilli [EMAIL PROTECTED] - Amigan - REBOL programmer
Amiga Group Italia sez. L'Aquila -- http://www.amyresource.it/AGI/




[REBOL] Re: Multimedia quality (was) One disk OS + REBOL Re:(6)

2000-08-25 Thread g . santilli

Hello [EMAIL PROTECTED]!

On 25-Ago-00, you wrote:

 p Yes, I know - as Dave Haynie said - he left mainly because
 p Scala got too much tied to Windows. It uses DirectX IIRC. But
 p do you remember those glory days of Amiga and its chipset?

That's platform dependance. If REBOL/View was designed with the
Amiga chipset in mind, it would probably be quite different and
would be fast on the Amigas, but not really fast on the other
systems. It was instead designed with an abstact system in mind;
probably that was too abstract, and /View is using only a little
of the power of our computers.

 p It lacks slightly more :-)

I was referring to the layering engine. Surely /View can be
enhanched a lot more than it is now, but the layering engine
already has a lot of effects...

Regards,
Gabriele.
-- 
Gabriele Santilli [EMAIL PROTECTED] - Amigan - REBOL programmer
Amiga Group Italia sez. L'Aquila -- http://www.amyresource.it/AGI/




[REBOL] Re: context of a function Re:(8)

2000-08-25 Thread g . santilli

Hello [EMAIL PROTECTED]!

On 25-Ago-00, you wrote:

 b As far as I know, it is only humans that can give the word
 b simple a meaning. ;)
 b So it is humans that interpret something as simple.

What I was trying to say is that when we have a problem we tend to
give a complex solution first, and then, only after a lot of thought,
we are able to get to the simpler one. This is true when you're
giving an explanation, or when you're designing something. We call
genious those that are able to give the simplest solution with
"little" thought.

Regards,
Gabriele.
-- 
Gabriele Santilli [EMAIL PROTECTED] - Amigan - REBOL programmer
Amiga Group Italia sez. L'Aquila -- http://www.amyresource.it/AGI/




[REBOL] FWD: Index? Re:

2000-08-25 Thread galtbarber

I have often wished I could do what you want.
Sometimes you want to have your cake and eat it, too!

It is a drag to have to insert first everywhere
in examples like this:

forall somelist [print first somelist]

and when you do this:

foreach element somelist [print element]

this is great as long as you don't also need
to know it's position.  many times you may
need that position.

You can also do this:

repeat i length? somelist [print somelist/:i]

which is sort of ok

as you can see, in your example below,
item is the actual character from the string,
not the string, therefore you can't ask for it's
position, as it won't have access to that info.

I suppose Rebol could create a local keyword
that stored that index, because obviously, internally
it does know what the index really is.
But Rebol avoids creating new keywords, and
when you get multiple nested structures, exposing
that index as a keyword might be a real drag.

And how come there isn't a short hand for:
  list: next list

wouldn't it be helpful to everybody to have
something like this:
  advance list
which would do the same thing, and even better
as a native.

I guess one could make up your own function,
but then everybody would be re-inventing this
wheel independently.  It seems like it ought to
come with the system.




= Original Message From [EMAIL PROTECTED] =
   Is there an alternative for:

   a: "101"
   foreach item a [print index? item]
   1
   2
   3

Obvious to you REBOL gurus this generates an error.  But it illustrates
clearly what I want to do.  Damn, index? is native!  :)   Anyone have some
helpful alternatives.


Paul Tretter




[REBOL] Rebol - The Official Guide Re:(2)

2000-08-25 Thread Al . Bri

  Finally got my copy. It's nice to see my name in it.

 Did you get yours locally or directly from Rebolpress?

I ordered mine locally, from the Dymocks shop in Napier, less than five
minutes walk from my house.

 I see that flyingpig have it and at a price much less than if purchased
from overseas.  No book reviews there though.

I think it's great! :-)

Andrew Martin
ICQ: 26227169
http://members.xoom.com/AndrewMartin/
--




[REBOL] CGI: reading POST-method data with read-io Re:(4)

2000-08-25 Thread holger

On Fri, Aug 25, 2000 at 08:03:31PM +0200, [EMAIL PROTECTED] wrote:
 Hello [EMAIL PROTECTED]!
 
 You need to use READ-IO when you a) want the raw data and b) don't
 want to wait for the remote part to close the port. COPY/PART had
 a similar functionality on /BINARY TCP ports, but it still waited
 if there were no data in the port. Now you can just use COPY or
 COPY/PART, because it no more waits for data. 

Please wait for the next experimental build (i.e. a version AFTER
Core 2.4.34, View 0.10.25 or Command 0.6.12) before publically releasing
any scripts that use the new non-blocking features in REBOL, because
we need to change the behavior (again), for better compatibility with
older scripts, and to avoid future legacy problems, This change will
break scripts that rely on the behavior in the current exp-build.

The changes are: copy on TCP ports opened without refinements will work
the way it used to originally (i.e. block if there is no data). If you
don't want copy to block then use /no-wait on the open call. This means
instead of a /wait refinement there will be a /no-wait refinement,
and the default behavior will be reversed compared to the current
exp-build, and thus will be the same way it used to be in Core = 2.3
(blocking).

The main reason is that with this change scripts which loop on copy
until it returns none will continue to work on new versions of REBOL,
without adapting the script.

Also, if there is no data then copy will return an empty series, not
none, as it does in current exp-builds, allowing you to distinguish the
"no data available yet, would block" case from an end of stream, i.e.
the peer closing the connection (for which copy will still return none).

There will also be some changes to wait to make it more useful, e.g.
wait [0 port] will poll the port (i.e. return the port if there is
data, and none otherwise). This also works with multiple ports.
Old versions of Core already used to do this on some platforms,
somewhat inofficially, but current versions don't. It will become
an official feature on all platforms starting with the next
experimental build. There will also be a new "/all" refinement
to wait which causes wait to return a block of all ports that have
data waiting (instead of returning just one port). This allows you
to write your own scheduler (e.g. round-robin) for handling incoming
data on a multiplexed server written in REBOL.

We are also planning other enhancements to wait and ports in general
in the future, to make it easier to handle interactive, asynchronous
connections, to support asynchronous sending, asynchronous connecting,
asynchronous accepting of connections, asynchronous UDP operation,
and to simplify the handling of multiple connections at the same time,
e.g. for downloads in the background and for multiplexed web/ftp
servers. Lots of good stuff ahead :).

Please avoid using read-io whenever possible. It is a very low-level
function that exposes your script to operating system-dependent
oddities. For instance the amount of data typically returned may vary
with the operating system, making testing more difficult for you. You
also lose the convenience of line feed conversion etc., which may cause
unexpected problems with your script when moving between Windows and
Unix machines. "Normal" port functions in REBOL (copy, insert etc.)
do these things automatically for you.

We realize that in the past some shortcomings in the "normal" port
functions (in particular copy blocking) have prevented you from doing
some useful things, and sometimes read-io seemed to help, but these
issues should be resolved in the next exp builds, and then the use of
read-io will be discouraged even more than it is now.

And just in case you are wondering, those new port features together with
work on some additional enhancements in VID are the reasons why the
new exp build for View we promised earlier is not out yet -- sorry for
that delay. RSN, really...

-- 
Holger Kruse
[EMAIL PROTECTED]




[REBOL] Rolling your own ideal looper: does Repeat still have a bug?

2000-08-25 Thread galtbarber

Hi.

See attached rebol file and output.

Seems promising, although it turned up 
a bug in 'repeat apparently.

I thought that bug had been squashed 
a while ago!

Probably this would be interesting 
for Elan, Sterling, Brett, Ladislav, etc.

I included the script in this mail, and as an attachment, too.

At first I tried using bind, but I couldn't figure 
out how to get what I wanted with that.
So I was pretty lucky I thought to make it work 
with word replacement, even dealing with "scoping"
properly, so far as my testing indicates to date.

-Galt

Rebol [
Title: "test looper"
File: %test-looper.r
Author: "Galt Barber"
Purpose: {
 The person who wanted to have the benefits of foreach,
 where you can refer to the element by name alone,
 and yet also be able to get the current index,
 which is not available with foreach,
 motivated me to try to write his "ideal" looper,
 which takes an index word accessible in the block.
 I am just trying to roll my own enhanced version
 of foreach.
 It seemed to work pretty well, but I did notice
 that 'repeat seems to have a bug, reminiscent
 of something I thought I remember was a problem
 reported long ago in an earlier version!
}
]

;;; hack to quickly re-load edited source
r: func [][do %test-looper.r]

rec-replace-words: func [
 b [block!]
 target [word!]
 replacement [word!]
][
 forall b [
  if word? first b [
   if (first b) = target [
change b replacement
   ]
  ]
  if block? first b [
   rec-replace-words first b target replacement
  ]
 ]
 head b
]

ideal-looper: func [
 'element [word!]
 'index [word!]
 s [series!]
 code [block!]
 /local
 eee
 iii
 ccc
][
 ccc: copy/deep code
 rec-replace-words ccc element 'eee
 rec-replace-words ccc index   'iii
 repeat i length? s [
  iii: i
  eee: s/:i
  do ccc
 ]
]

{
Here is what the output looks like, which is wrong!
 r
 do z
1   h  h hello
6   none  none hello
6   none  none hello
6   none  none hello
6   none  none hello
== false

I thought I may have made a mistake, 
but then I thought to try removing 
repeat from the definition, and using 
while instead, and that did work!
see below!
}


x: "hello"

z: [  ;;; test function, usage is do z

 ideal-looper char pos x [

  embedit: func [][
   prin [pos " " char]
  ]
  embedit

  sillyobj: make object! [
   q: char
   showit: func [][prin [" " q]]
  ]
  sillyobj/showit

  prin " "
  ideal-looper char pos x [
   prin [char]
  ]

  print ""
 ]
]


{  ;;; this one works, using while instead of repeat!
   ;;; it is commented out at the moment.

ideal-looper: func [
 'element [word!]
 'index [word!]
 s [series!]
 code [block!]
 /local
 eee
 iii
 ccc
 i
][
 ccc: copy/deep code
 rec-replace-words ccc element 'eee
 rec-replace-words ccc index   'iii
 i: 0
 while [i  length? s] [
  i: i + 1
  iii: i
  eee: s/:i
  do ccc
 ]
]
}

{ ;;; here is the correct output!
 r
 do z
1   h  h hello
2   e  e hello
3   l  l hello
4   l  l hello
5   o  o hello
== false

}


halt

 test-looper.r


[REBOL] Multimedia quality (was) One disk OS + REBOL Re:(8)

2000-08-25 Thread holger

On Fri, Aug 25, 2000 at 08:03:16PM +0200, [EMAIL PROTECTED] wrote:
 That's platform dependance. If REBOL/View was designed with the
 Amiga chipset in mind, it would probably be quite different and
 would be fast on the Amigas, but not really fast on the other
 systems. It was instead designed with an abstact system in mind;
 probably that was too abstract, and /View is using only a little
 of the power of our computers.

REBOL internally keeps data in 32-bit chunky format (image!
datatype). This is efficient on pretty much every hardware
architecture, with the exception of the somewhat obsolete planar
bitmap format the Amiga chipset uses.

Planar bitmaps were great in the late 80's when it was important
to use as few bits as possible per pixel (fewer than 8 typically),
in order to achieve high resolutions with little memory. Things have
changed since then though, and today everyone is using 8, 16, 24
or 32 bits per pixel. For that chunky formats are more efficient, in
particular when manipulating individual pixels.

What makes REBOL/View relatively slow on Amigas with the native graphics
chipset is the necessary chunky-to-planar conversion. We are using
optimized Assembler code for that, but it is still a bottleneck. On
Amigas with graphics boards REBOL/View is reasonably fast (often
faster than under Unix/X running on the same hardware).

REBOL/View cannot directly use planar bitmaps for its internal
images, not only because that would require some rewrites, but
also because the up to 8 planes the Amiga hardware supports would
not be sufficient to support the various effects View provides
(blending, colorization etc.). Those effects need to operate on
32-bit images throughout, and quantize colors down to the
requirements of the display hardware only as the last step. This
makes chunky-to-planar conversion inevitable. If REBOL stored
all internal bitmaps in 8 or fewer bits then errors would add up
when processing effects and the resulting images would look "ugly".

-- 
Holger Kruse
[EMAIL PROTECTED]




[REBOL] CGI: reading POST-method data with read-io Re:(5)

2000-08-25 Thread galtbarber

Expletives of Joy!!

I must say that I am extremely delighted!

You guys are right on the bulls-eye!!!

This is the kind of excellence Rebol Tech is famous for!

These are just what we needed, and well thought out, too!

Hip hip hooray!!!

-Galt

p.s. Could we also get more than 63 ports per process 
on Windows?  Would help when you are doing a http or proxy 
server or load-tester.  Seriously, I already have 
a bitchin rebol app that works, but it hits that limit!
Real servers have hundreds or thousands of conns going.

= Original Message From [EMAIL PROTECTED] =
On Fri, Aug 25, 2000 at 08:03:31PM +0200, [EMAIL PROTECTED] wrote:
 Hello [EMAIL PROTECTED]!

 You need to use READ-IO when you a) want the raw data and b) don't
 want to wait for the remote part to close the port. COPY/PART had
 a similar functionality on /BINARY TCP ports, but it still waited
 if there were no data in the port. Now you can just use COPY or
 COPY/PART, because it no more waits for data.

Please wait for the next experimental build (i.e. a version AFTER
Core 2.4.34, View 0.10.25 or Command 0.6.12) before publically releasing
any scripts that use the new non-blocking features in REBOL, because
we need to change the behavior (again), for better compatibility with
older scripts, and to avoid future legacy problems, This change will
break scripts that rely on the behavior in the current exp-build.

The changes are: copy on TCP ports opened without refinements will work
the way it used to originally (i.e. block if there is no data). If you
don't want copy to block then use /no-wait on the open call. This means
instead of a /wait refinement there will be a /no-wait refinement,
and the default behavior will be reversed compared to the current
exp-build, and thus will be the same way it used to be in Core = 2.3
(blocking).

The main reason is that with this change scripts which loop on copy
until it returns none will continue to work on new versions of REBOL,
without adapting the script.

Also, if there is no data then copy will return an empty series, not
none, as it does in current exp-builds, allowing you to distinguish the
"no data available yet, would block" case from an end of stream, i.e.
the peer closing the connection (for which copy will still return none).

There will also be some changes to wait to make it more useful, e.g.
wait [0 port] will poll the port (i.e. return the port if there is
data, and none otherwise). This also works with multiple ports.
Old versions of Core already used to do this on some platforms,
somewhat inofficially, but current versions don't. It will become
an official feature on all platforms starting with the next
experimental build. There will also be a new "/all" refinement
to wait which causes wait to return a block of all ports that have
data waiting (instead of returning just one port). This allows you
to write your own scheduler (e.g. round-robin) for handling incoming
data on a multiplexed server written in REBOL.

We are also planning other enhancements to wait and ports in general
in the future, to make it easier to handle interactive, asynchronous
connections, to support asynchronous sending, asynchronous connecting,
asynchronous accepting of connections, asynchronous UDP operation,
and to simplify the handling of multiple connections at the same time,
e.g. for downloads in the background and for multiplexed web/ftp
servers. Lots of good stuff ahead :).

Please avoid using read-io whenever possible. It is a very low-level
function that exposes your script to operating system-dependent
oddities. For instance the amount of data typically returned may vary
with the operating system, making testing more difficult for you. You
also lose the convenience of line feed conversion etc., which may cause
unexpected problems with your script when moving between Windows and
Unix machines. "Normal" port functions in REBOL (copy, insert etc.)
do these things automatically for you.

We realize that in the past some shortcomings in the "normal" port
functions (in particular copy blocking) have prevented you from doing
some useful things, and sometimes read-io seemed to help, but these
issues should be resolved in the next exp builds, and then the use of
read-io will be discouraged even more than it is now.

And just in case you are wondering, those new port features together with
work on some additional enhancements in VID are the reasons why the
new exp build for View we promised earlier is not out yet -- sorry for
that delay. RSN, really...

--
Holger Kruse
[EMAIL PROTECTED]




[REBOL] CGI: reading POST-method data with read-io Re:(5)

2000-08-25 Thread tim

Hello:
When Holger speaks, I pay attention. I have the following line
of code for reading POST input from CGI as follows:
;===
either tmp  0
[
buffer: make string! (tmp + 10) ; allocate storage space
while [tmp  0] ; and read
; I think Holger suggests this is not good:
[tmp: tmp - read-io system/ports/input buffer tmp]
return buffer
]
What would be a safe alternative, please?
TIA
-Tim
[EMAIL PROTECTED] wrote:

 Please avoid using read-io whenever possible. It is a very low-level
 function that exposes your script to operating system-dependent
 oddities. For instance the amount of data typically returned may vary
 with the operating system, making testing more difficult for you. You
 also lose the convenience of line feed conversion etc., which may cause
 unexpected problems with your script when moving between Windows and
 Unix machines. "Normal" port functions in REBOL (copy, insert etc.)
 do these things automatically for you.

 We realize that in the past some shortcomings in the "normal" port
 functions (in particular copy blocking) have prevented you from doing
 some useful things, and sometimes read-io seemed to help, but these
 issues should be resolved in the next exp builds, and then the use of
 read-io will be discouraged even more than it is now.

 And just in case you are wondering, those new port features together with
 work on some additional enhancements in VID are the reasons why the
 new exp build for View we promised earlier is not out yet -- sorry for
 that delay. RSN, really...

 --
 Holger Kruse
 [EMAIL PROTECTED]




[REBOL] Re: Multimedia quality (was) One disk OS + REBOL Re:(8)

2000-08-25 Thread kolla

On Fri, 25 Aug 2000 [EMAIL PROTECTED] wrote:

 What makes REBOL/View relatively slow on Amigas with the native graphics
 chipset is the necessary chunky-to-planar conversion. We are using
 optimized Assembler code for that, but it is still a bottleneck. On
 Amigas with graphics boards REBOL/View is reasonably fast (often
 faster than under Unix/X running on the same hardware).

But still dog slow, even on my P3@650MHz linux box I find it annoyingly 
slow, and I often end up clicking on buttons twice, or more. On the Amiga 
(060/PPC/CVPPC) dragging subwindows inside rebol windows is like running
a macemul in HAM on a lowend A1200, faster than X doesnt really say much 
as X is per def a slow memory greedy dog, no matter what hardware ;)


-- kolla




[REBOL] Setting array variables Re:(3)

2000-08-25 Thread mike . yaunish

At 11:47 AM 8/25/2000 -0700, you wrote:
Yes, that is exactly what I was looking for, thanks.
I knew there had to be some better way.

I've added some more stuff to show how to use a variable for a row number.

- Original Message - 
From: [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Friday, August 25, 2000 11:37 AM
Subject: [REBOL] Setting array variables Re:


 Here's an illustrative console session that addresses your question:
 
 dat: array [2 3]
== [[none none none] [none none none]]
 dat/1: [1 2 3]
== [[1 2 3] [none none none]]
 dat/2: 3 4 5
== 5
 dat
== [[1 2 3] 3]
 dat/2: [3 4 5]
== [[1 2 3] [3 4 5]]
 change dat/1 777
== [2 3]
 dat
== [[777 2 3] [3 4 5]]
 change at dat/1 2 888
== [3]
 dat
== [[777 888 3] [3 4 5]]

;  here's how to  use a variable for a row number.

 a: 2
== 2
 dat/:a
== [3 4 5]
 change at dat/:a 2 999
== [5]
 dat
== [[777 888 3] [3 999 5]]

Seems easier, no?

  Anyone know of an easier way?
 
  Mike Yaunish
  [EMAIL PROTECTED]
 
 
 
 


Mike Yaunish
[EMAIL PROTECTED]





[REBOL] Binary to Decimal Function

2000-08-25 Thread ptretter


Here is a useful function for anyone needing to convert binary digits to
decimal.  Took me awhile but here it is:

bnfunc:  func [
"Convert Binary digits to Decimal equivalent"
bn [string!] "The binary representation"
/local holder count][
holder: make integer! 0
reverse bn
count: length? bn
for x 1 count 1 [
if (to-string (pick bn x)) = "1" [
holder: (2 ** (x - 1)) + holder
]
]
return holder

]

Let me know what you think.

I am gonna create some refinements to enhance it a bit.

Paul Tretter




[REBOL] Multimedia quality (was) One disk OS + REBOL Re:(10)

2000-08-25 Thread allen


- Original Message -
From: [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Saturday, August 26, 2000 11:38 AM
Subject: [REBOL] Re: Multimedia quality (was) One disk OS + REBOL Re:(8)


 On Fri, 25 Aug 2000 [EMAIL PROTECTED] wrote:

  What makes REBOL/View relatively slow on Amigas with the native graphics
  chipset is the necessary chunky-to-planar conversion. We are using
  optimized Assembler code for that, but it is still a bottleneck. On
  Amigas with graphics boards REBOL/View is reasonably fast (often
  faster than under Unix/X running on the same hardware).

 But still dog slow, even on my P3@650MHz linux box I find it annoyingly
 slow, and I often end up clicking on buttons twice, or more.

This is interesting, I haven't seen anyone mention speed problems on Linux
before.
I must set up a linux version to test on.
I've tested View on my old faithful Celeron 333, under Win 98, Win2000, BeOS
and Amiga (under emulation).

My general observations of platform differences...
The Amiga was slow, but it sounds like it was running faster under emulation
than the older native machines. Win platforms speed is quite good, except
for iterated faces and large area scrolling. Timer events seems have a
better resolution on Win2000 than Win98.
BeOS has the fastest smoothest scrolling of all of the above.
Font rendering/display seems to be best/clearest on Windows.

Cheers,

Allen K