r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[Core] Discuss core issues

Ladislav
9-Mar-2006
[3682x2]
OTOH, your experiments suggest, that there are some "legal" timezones, 
that aren't representable in REBOL ?
(I should have said "legal" dates)
PeterWood
9-Mar-2006
[3684x3]
I did submit the two "missing" zones to RAMBO some time ago. Understandably, 
it was suggested that as the two time zones were so obscure it wasn't 
worthwhile catering for them.
I would be good if the "zone" behavious was documented at least in 
the Datatypes! Appendix to the core user guide.

I'll try to draft something and submit via Rabo.
Actually when I checked the documenation it already  states :

The resolution of the time zone is to the half hour.


Perhaps the only clarification needed is that the timezone is always 
rounded down.
DideC
9-Mar-2006
[3687]
Is there a "Rebolish" way to change this string! :
	"A text with%27some%25encoded chars"
to this string! :
	"A text with%some'encoded chars"
Without using replace/all in a loop?
Ashley
9-Mar-2006
[3688]
parse?
DideC
9-Mar-2006
[3689x3]
In the other way there is 'to-url :
	>> to-url "a b"
	== a b
But is there something simple to do the opposite ?
GOT IT : dehex !!!
(I found it in 'decode-cgi)
Terry
13-Mar-2006
[3692]
Does Rebol have an equal to PHP's exit; function?
Henrik
13-Mar-2006
[3693]
HALT is probably the closest
Terry
13-Mar-2006
[3694]
Yeah, I suppose that would work from a cgi environment.
Oldes
14-Mar-2006
[3695]
quit
Terry
14-Mar-2006
[3696]
I need to keep rebol going... so some kind of 'throw''
Oldes
14-Mar-2006
[3697]
only wait if you want to wait and do not want to quit;-)
Terry
14-Mar-2006
[3698]
too legit to quit
Pekr
14-Mar-2006
[3699]
if I wait on multiple ports, and I am not using wait/all, what if 
there is event happening on two ports? Will it return one of them, 
or both in block?
Pekr
15-Mar-2006
[3700x3]
if I have something like following:

event: wait [server client1 client2 ... clientx 0.001]
if block? event [event: first events]


and now I just maintain one port and its data, I wonder what happens 
with next 'wait? Remember I am not using wait/all, but still I am 
not sure, what happens if there is even waiting on more than one 
port?
... or simply without /all refinemet 'wait will always return only 
one of ports, even if data is waiting on multiple of them?
will not I loose data when 'wait is entered for the second time because 
of "if block? event [event: first event]"? Hopefully not ... or maibe 
wait without /all never returns a block, even if there is event on 
more than one port at a time?
sqlab
15-Mar-2006
[3703]
If I remember right, you get only the first event, the others will 
still appear as long as you did not satisfiy them.
Pekr
15-Mar-2006
[3704]
ok ... so what happens if there is still data on first port in the 
wait-list? will it always return that one? So it means that other 
ports will simply wait for maintanance, because first port in the 
wait-list is still receiving a data?
sqlab
15-Mar-2006
[3705]
I do not know if you will get your first port again as the first, 
if you did for example just copy/part from it.

But imagine, that you do a copy on it, and new data arrives at the 
same time. This will probably raise a new event on it and this port 
will probaby the last in your queue of waiting events.
Pekr
15-Mar-2006
[3706]
ah, thanks a lot ... so wait [port1 ... portn] does not anything 
in common with the order how 'wait returns the events? That is good, 
because otherwise I would maintain only first port, till the data 
would not stop appearing ...
sqlab
15-Mar-2006
[3707x2]
Just what I think is a little bit annyoing, that sometimes you do 
not get the proper timeout, if you have a timeout value in your wait 
list  and many events.

Yes, I always thought that I got the ports ordered according their 
event time and not according their position in the event list.
I have to correct me.
I just tested this approach, and it does not look so good.
It always gave me the data from one port
Pekr
15-Mar-2006
[3709x4]
ah, that is bad .... but expectable ... so I have to prioritise ports 
myself and probably always use wait/all ... but then - I am not sure 
I want to maintain them all at once ....
but maybe that is the only corrent aproach - to use wait/all and 
maintain data on all ports in a loop, then go for the next wait ...
or, to use random to pick ports randomly :-) .... but it is interesting 
that 'wait returns events according to wait-list order ....
anyway - I am doing very small util for my friend who programs our 
new board for kiosk system event detection and am having fun with 
it :-)
sqlab
15-Mar-2006
[3713]
Just use small messages.

I gather every day messages in the tenth of thousands with peaks 
during the working hours and it is working so far.
Pekr
15-Mar-2006
[3714]
yes, it surely will work ... I was just curious what would by the 
correct aproach for multiplexing engine ....
sqlab
15-Mar-2006
[3715x2]
My test now revealed, that you will maintain the port you get as 
first, until it is empty, but then there is always some prioritize.
I just tested it with awake functions and this gave me data from 
two ports alternately.  Thanks god, that I use this approach since 
I heard about it. Probably the efficiency and the time granularity 
there is higher.
Robert
21-Mar-2006
[3717x4]
How can I avoid the scientific notation?
>> round/to (sm/n * sm/s * 0.9) 0.0001
== 9E-2
I want to get back: 0.09
>> round/to (sm/n * sm/s * 1.111231) 0.0001
== 0.1111
It seems that only for values < 0 the E notation is used.
Pekr
21-Mar-2006
[3721]
I wrote the function for it. It was debated several times, but I 
do not remember if some solution came-up ...
Tomc
21-Mar-2006
[3722x4]
robert the short but usless answer is don't use windows
other platforms do not have this behavior
should also be noted that other  langs i.e. perl exibit the same 
behavior on windows do it is apt to be an OS call that decides two 
decimal places is wau too heady for its users
that said it has been solved here and on the maillist several times
Geomol
21-Mar-2006
[3726x2]
Robert, here is my solution used in Canvas:

form-decimal: func [n /local p d] [
	n: form n
	if p: find n #"E" [
		if d: remove find n #"." [d: index? d p: back p]
		if not d [if d: remove find n #"," [d: index? d p: back p]]
		if not d [d: index? p]
		either p/2 = #"-" [
			insert/dup n #"0" (to-integer skip p 2) - d + 1
			insert n "0."
		][
			insert/dup p #"0" (to-integer next p) - (index? p) + d
		]
		clear find n #"E"
	]
	n
]
>> form-decimal 9E-2
== "0.09"
JaimeVargas
21-Mar-2006
[3728]
Robert you can use the PRINTF wrapper function in rebol.org. It helps 
with all kinds of number formating.
Robert
21-Mar-2006
[3729]
Thanks a lot. But I really can't believe that this formatting stuff 
isn't supported by default.
sqlab
22-Mar-2006
[3730x2]
>> form-decimal -0.099
== "0.-99"
rebol []
form-decimal: func [n /local p d s] [
	all [s: negative? n n: abs n]
	n: form n
	if p: find n #"E" [
		d: index? any  [
			all [ d: remove find n #"." 	p: back p	d]
			all [ d: remove find n #"," 	p: back p	d]
			p
		]
		either p/2 = #"-" [
			insert/dup n #"0" (to-integer skip p 2) - d + 1
			insert n "0."
		][
			insert/dup p #"0" (to-integer next p) - (index? p) + d
		]
		clear find n #"E"
	]
	if s [insert n "-"]
	n
]