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

World: r3wp

[Core] Discuss core issues

Anton
17-Jun-2009
[14097]
It may not seem obvious, but 

	view layout [image %file.png]

does make use of LOAD-IMAGE, as Oldes pointed out.
Here is where the IMAGE style does it:

	print mold get in svv/vid-styles/image/multi 'file
Sunanda
17-Jun-2009
[14098]
Gabriele: that may be true in an ideal world, but not in a Windows 
one.


I tried the test code below in R2 on a freshly booted machine.....I'd 
start a REBOL session, paste the code in,ánd wait until it gave me 
the timing. Then start another session (leaving the old one active) 
and repeat.


I only needed five console sessions to exhaust all physical memory, 
and have Windows behaving in an unstable manner. Killing the console 
sessions returned things to almost normal.


Basically, if this code modeled an application's start-up memory 
usage, it would be unwise to run it under Windows:

rebol []
    t: now/time/precise
    b: copy ["a"]
    attempt [
        forever [
          append b b
          append b join last b last b
          ]
     ]
     print length? b
     foreach a b [clear a]
     clear b
     recycle
     print now/time/precise - t
     halt
Gabriele
19-Jun-2009
[14099x2]
Is it REBOL's fault that Windows sucks? ;)
Maybe Carl should treat Windows as a special case...
Maxim
19-Jun-2009
[14101x5]
but I've been told before that rebol doesn't deallocate ram, it only 
frees it from the pool.
so this might not just be a windows issue.
and using swap still takes up ram, it prevents other apps from using 
swap, so its a bad idea on any platform to occupy several hundred 
megs of unneeded ram.
on windows, the detail is that even the OS uses swapable RAM by default. 
 there is registry setting to prevent this, and it makes a hell of 
a big difference in windows itself.  when the machine is under load, 
the OS stays responsive, as opposed to becoming a hog.
I remember doing 3D rendering where up to 4GB of swap can be needed, 
just to get the scenes to render... had I known about this switch 
then, It would have made such a difference.  waiting 30 seconds for 
the task manager to open, cause it has to free it from swap is just 
not feasible when you are charging clients per hour.
BrianH
19-Jun-2009
[14106x2]
In Windows you want virtual memory to be turned on, but you can set 
it to not use a swap file if you like, without touching the registry. 
Virtual memory is used to support memory-mapped files and speeds 
program loading and use (which is done with memory-mapping). The 
computer I am on right now has virtual memory and no swap file since 
it has an SSD, and it runs fine.
You better be sure you have enough RAM though, and for some purposes 
you might need 64bit Windows to even support enough RAM.
Maxim
19-Jun-2009
[14108]
In my experience, even with 2GB of ram on a machine with xp and one 
or two software, you will get OS out of memory errors if you turn 
off swap files.  this, with 1GB physical RAM still available... I've 
tried it a few times before and after a short period I had to reboot 
my machine.   The kernel is built in such a way that it expects it 
and it just can't really cope without it.
BrianH
19-Jun-2009
[14109]
just to get the scenes to render
 - this might explain your experience :)
Maxim
19-Jun-2009
[14110x3]
the registry tells the OS not to use ram which can be swapped to 
disk, eating up about 500MB.  its still virtual, it just doesn't 
swap to files.
no that is different usage... hehe
the registry *hack*.
BrianH
19-Jun-2009
[14113]
I get out-of-memory errors sometimes even with a swap file :)
Maxim
19-Jun-2009
[14114]
increase it and it will disapear... and don't let the OS auto-increase 
the size.... that leads to other out-of memory conditions when your 
disks are near full.
BrianH
19-Jun-2009
[14115]
However, I tend to not get out-of-memory errors on this computer, 
which has 1GB of RAM and no swap file. This is because I am careful 
about which programs I use (no IE, no Firefox).
Henrik
27-Jun-2009
[14116x2]
has anyone been successful in compressing data in php and decompressing 
it again in R2? I see I asked such a question 7 years ago on the 
mailing list, but no solution was found back then. :-)
I think I've figured it out. Anyhow, the solution I have working 
here seems stable.
Oldes
28-Jun-2009
[14118]
using ZLIB?
Janko
30-Jun-2009
[14119x4]
I was nagging you about the actors+message passing rebol lib I was 
playing with..  Now I have a real thing running with it .. I will 
post source code on blog soon. It's not that exciting video .. just 
some text changing :) but I hope it will help in getting a picture 
when I post the code.


On left is a Linux server with work dispatcher on  right are two 
workers on windows. There can be as many workers on many computers 
or none and workers can drop out at any time without work being undone/"halfdone". 


It uses message passing and actors for everything.. and comunication 
works like at tuple spaces so you get autobalancing. It's not something 
that special, you could do something roughly the same with http server 
app probably, although it would be a little more messy.
video is here: http://screencast.com/t/ieXjmEz2b9:)
I needed this setup because I need to make screenshots of websites 
in browsers for websites in site assistant and you can't make a screenshot 
of IE browser on linux. I don't intend to have any windows servers 
running but I will have workers on mine and computers of colegues 
running on background and doing it's job silently. Thats why it's 
all made so that there is nothing wrong even if no workers are avalable 
for bigger amounts of time
and they can get on and off work as they please :) .. I call this 
"casual workers system" :)
Graham
30-Jun-2009
[14123x2]
So, is this like doc's task manager except the tasks are on different 
computers
I'd be interested in trying this library out ...
Graham
1-Jul-2009
[14125]
Janko, I see you were using rebXR in 2002 ... so why not just use 
xml-rpc for this as well?
Janko
1-Jul-2009
[14126x6]
I haven't seen it but heard of doc's task manager, and he uses multiple 
worker processes in cheyenne. I am certain those two (or one if it's 
the same) are much faster and robust. I am mostly experimenting here 
on how a "message passing with actors" system would or could look 
in REBOL , so I am not focused on implementation, but for now more 
on look of code.
I will post the code shortly so you can try it, but I am about to 
do big changes to it.. if actors will remain rebol objects then I 
will make whole lib more OO, refine the methods etc.. I have another 
option where actors would become just functions (this would make 
them more lightweight (which is important at actor systems) and it 
would enable some cool things, but I am not 100% if it will all work.
RPCs and message passing are quite different things and whole code 
logic works differently .. async message passing is " send and pray 
" (quote by Erlang inventor) model while RPC are "request response" 
.. I have been folowing erlang and message passing for so long but 
I wanted to see how it really is in practice thats why I started 
making this actor-net rebol library
I wrote something about XMLRPC into webservices channel..
two processes ping ponging to eachother 10 times with actor-net would 
look something like this now

pinger: make actor [ act-match: [ 

    [ 'pong count addr ] [ ~send addr compose [ ping (count) (get-my-addr) 
    ] ] 
    [ ''bye ] [ print "ok, bye" ]
]
ponger: make actor [ act-match: [ [ 'ping count addr ] [ 

        ~send addr compose ( either lesser? count 10 [ [ pong (count) (get-my-addr) 
        ] ] [ [ bye ] ] )
    ] 
]


and you would add the third actor that would act only once to "lend 
them the ball" to start them


server: make once-actor [ act-once: [ ~send get-actor 1 compose [ 
ping 0 (get-actor 2) ] ] ]


But the library is still quite messy .. especially with adresses 
of actors, global vars, I have a big list of things now to improve 
after I made that thing on the screencast
(ping pong above can run in the same rebol process, multiple on same 
computer or on different computers (it's just the matter of addreses-- 
which are not well thought out yet)
Graham
1-Jul-2009
[14132x2]
I need to view various files in a browser and if I use 'browse, then 
this blocks the UI until the browser appears with the file.  I just 
tried with a xmlrpc server accepting the url and it works fine.
the xmlrpc-exe returns immediately ( with an error though - no matter 
) and the page pops up.
Janko
1-Jul-2009
[14134x3]
btw.. because I think Doc uses TCP with task master I think it should 
be no problem to work over different computers also
how do you get a return value .. with xmlrpc-exe ... what do you 
mean a page pops up?
(the previous version sources , examples and 2 more blog posts about 
actor-net can be found here http://itmmetelko.com/blog/2009/06/08/playing-with-making-an-actor-like-distributed-system-in-rebol-3/
)
Graham
1-Jul-2009
[14137x3]
xmlrpc-exec/async pc [ f ] :local-function
what I mean is that I use xmlrpc to start up the browser and bring 
up the page I want
result: xmlrpc-exec pc [ add 2 4 ]
Janko
1-Jul-2009
[14140]
I have to admit I don't get what borwser (you mean like IE FF?) has 
to do with xmlrpc in this case ... and I.. aha this is a GUI app 
you you don't mean that xmlrpc-exec returns imediately (without waiting 
for result -- thats why I ask how you get the resut then) .. but 
that GUI doesn't block while waiting for it
Graham
1-Jul-2009
[14141x6]
Yes, that's correct.  My gui doesn't block while I wait for FF to 
start up and load the page I want.
Doc wrote async-call which would also work .. except it locks up 
VID when I recently tested it.
How does one determine which of the interfaces reported by get-modes 
tcp:// 'interfaces is the active one??
I see lo0, if11, if25, if13
This is pretty cool ... I am sitting in front of my laptop, and on 
the other side of the room is my 46" LCD screen with my media PC 
attached.  I installed the rebxr xmlrpc server on it .., and I have 
cheyenne installed on the laptop.  I click on a file in my application, 
it gets downloaded to the www directory in cheyenne, and then I send 
a command to the xmlrpc server to browse to that file so that it 
displays on the big screen but is served up by the laptop's cheyenne 
server.
It's now quite remote controlling a browser on another PC because 
all I can do is tell it to open a new page.