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

World: r3wp

[View] discuss view related issues

MikeL
15-Sep-2005
[2576]
I put a VID screen on some mySQL data (using the Doc's protocol) 
and allowed paging through it using the left and right arrows. Worked 
fine for a small database; very fast refresh of the page. 

When I used the same approach on a larger DB with some TEXT fields, 
it started to hang at the same record when going '"right".   


After much trial and error and guessing, I think it is because the 
database is not quite fast enough to refresh the screen to keep up 
with holding the key down.   


I put it sub-second wait in before the screen reshows its values 
and the problem went away.   	ie wait 00:00:00.005   


I don't think it is a database problem because it could happen with 
slower devices such as files. 


Is this consistent with what others have seen or am I 'fixing' the 
wrong problem?
Pekr
15-Sep-2005
[2577x4]
hmm, I would like to know Mike, what actually were you doing? Because 
- in old DBF x-Base days it worked like that - you simply had "cursor" 
at some db position and you moved by using 'skip command .... of 
course even then, it was wise to use indices and to limit the scope 
of data you work with ...
now SQLs are different kind of beasts -  there is NO live connection 
to sql database (on cursors later :-), you simply send a query, SQL 
server prepares results for you and sends it back to you. So, I wonder, 
how could actually SQL server slow your recordset browsing? And IF 
you were sending new requests after a key-press and wanted to stay 
real-time, then it is quite heroic aproach :-) Within our SAP system, 
you are glad if you receive your query result in few secs.
So, mostly, if you work with SQL, you try to find the right context 
of data, limiting your query as much as possible. Then you do a query, 
receive result and browse it. In that case, you already have all 
your data in rebol block already (unless you are reading them from 
port continuously), and it has nothing to do with SQL database anymore 
...
Now on cursors - of course, old x-base aproach is possible with SQL 
too, it is called "live cursor" or something like that. But with 
larger systems, adming don't allow or don't like to see it, as it 
consumes additional resources. Some of databases even don't have 
it. IIRC mySQL will introduce it from version 5.0, or maybe I am 
wrong ....
MikeL
15-Sep-2005
[2581]
Not using a cursor. Right key action  increments current-record-key. 
Retrieves single row for current-record-key, Displays page with data 
for row retrieved.  The database is local and only has (so far) 120 
rows but I have another with three hundred shorter records (no BLOBs) 
on it and it works well without any wait.  i.e. I can hold down the 
right key and it will flash each page by.  MySQL protocol has always 
seemed very fast to me.  Is it possible that View is stacking up 
the key actions and hanging after it gets too many?  p.s. I don't 
want to read the whole database content into memory because then 
I have to worry about locking when I allow HTML updates to it by 
others.  Single row updates with the last update 'winning' in the 
unlikely event of a collision works well for what I need to do.
james_nak
15-Sep-2005
[2582x3]
Hello, anyone have any ideas how I might improve on the integrity 
of a program that sends email to a list of people. I just realized 
I should be using '/only' but I have to check its behavior as I don't 
want each person to get a list of the other recipients. My problem 
is I often get a time out and I want to trap that. Yesterday during 
my first test it got halfway through the list and errored out which 
then caused the program to exit. I figured I should at least keep 
a running log so I can go back.
Again, I check but I wonder how the header will behave with an '/only' 
Will the "to:" address be altered?
I guess it has to be a generic address in the header. It doesn't 
change it. Oh, well, that'll work as well.
Pekr
15-Sep-2005
[2585x3]
/only is not good - then ppl will see one each other ...
there is also bcc field available - meaning blind-copy ... in such 
case, you send it with all adresses just once to the server, server 
sends it to each recipient, but they will not see one each other, 
just some "recipient" string or something like that ...
what about putting your send function in an attempt block?
james_nak
15-Sep-2005
[2588]
Pekr, it actually didn't do a list. Instead it sent individual emails. 
Also I probed send and there is a '/show'' option that will replace 
the to: address. checking...
Pekr
15-Sep-2005
[2589]
how to obey timesouts in general, try following:


either none? attempt [conn: open http://www.rebol.au][print "not 
connected"][print "connected"]
james_nak
15-Sep-2005
[2590]
OK, thanks.
Pekr
15-Sep-2005
[2591x3]
alhough I am used to use if not error? try [ .....]
... as 'attempt is functions available from some older core versions 
...
but there were cases , where I failed even inside of 'try block, 
maybe if function contains other functions, dunno ... I am really 
not an expert in all that throwing errors principles ... Ladislav 
or other folks here will do much better service to you :-)
james_nak
15-Sep-2005
[2594]
OK, I can't seem to get the show to shove the to: address in but 
I'll keep at it.
Pekr
15-Sep-2005
[2595]
then use /header refinement and construct header yourself ...
james_nak
15-Sep-2005
[2596x3]
Well I'm doing each mail individually and it seems to slow that way.
Anyway, setting header/to: none works but it puts the entire list 
there as you mentioned. Hmmm, maybe I have to do it individually.
thanks.
Graham
15-Sep-2005
[2599x2]
Just wondering how one matches a GUI like VID to an asynchronous 
data source. I am thinking of building a mulit tab panel application 
with an asynchronous backend.  If the user requests some data on 
one screen, and then changes their mind by switching to another screen, 
what does one do with the data when it arrives?  Does one refresh 
the original screen request and move focus from where the user switched 
to ?
Or,  say there is a chat window as part of the application.  How 
does one refresh the chat window without losing the focus on whatever 
the user is currently doing?
Volker
15-Sep-2005
[2601]
maybe some kind of feedback? requester would be to heavy, some blinking 
light "new data"? think of the red in altme-groups
Graham
15-Sep-2005
[2602x2]
Hmm.
I guess it depends upon whether the updating of the display grabs 
focus or not.
Volker
15-Sep-2005
[2604]
what triggers the data? somebody else like with altme, or more like 
a browser?
Graham
15-Sep-2005
[2605x2]
well, the data will be sent if there is a chat like aspect to it.
and also if the user requests it.
Volker
15-Sep-2005
[2607]
overlooked your second post. its about relayouting and keeping focus?
Graham
15-Sep-2005
[2608x2]
maybe I can do it like Altme.
change the colour of the tab for the panel that is updated.
Anton
16-Sep-2005
[2610x2]
MikeL, I think the problem is as you suspect. Whenever you WAIT for 
something (in your case MySQL), you are also waiting for view events. 
Your view events are arriving faster than the results are in the 
mysql port. Put a simple lock in your code:

 button "next" [if not working? [ working?: yes  next-page  working?: 
 no ]  ; where next-page sends and waits for my-sql port.
James, you can test what happens by sending mail to yourself. If 
you have two accounts then you can test the multiple addresses functionality.
MikeL
16-Sep-2005
[2612]
A bit more about my guesses about VID and mySQL. I wasn't sure it 
was not the number of rows that was causing the lockup so I loaded 
100,000 rows into the MySQL table and VID seems to be able to page 
through them based on right arrow (meaning get the next, display 
it, repeat until last row) i.e. hold it down and the row information 
will flash on the screen and eventually catch up.   The hanging seems 
to be a combination of stacked UI events and hitting a mySQL row 
that has a large BLOB in it.   Small text values in the BLOB are 
handled.   I can page past a large BLOB provided that there is not 
an accumulation of UI events.  If there is not a large BLOB in the 
rows being read, then it does not hang when VID is asked to page 
through at a rate it can not quite keep up with.
Anton
16-Sep-2005
[2613]
Mmm. Interesting. Can you identify the precise size of the BLOB needed 
to cause the lockup ?
MikeL
16-Sep-2005
[2614]
It is the largest BLOB on this table but is only 13410 bytes.
Geomol
16-Sep-2005
[2615]
In request-color a function "setc" is used. I can see it in system/words, 
but I can't see source. I seem to remember a way, or am I wrong?
Henrik
16-Sep-2005
[2616]
it's probably in a context with an object. I ran into the same problem 
with request-dir, which someone magically found the context for me, 
for :-)
Geomol
16-Sep-2005
[2617]
Found it: system/words/req-funcs/req-color/setc
Thanks for the hint!
Henrik
16-Sep-2005
[2618]
how?
Geomol
16-Sep-2005
[2619]
I used anamonitor.r found in the library.
Chris
16-Sep-2005
[2620]
probe req-funcs/req-color
DideC
16-Sep-2005
[2621x2]
Is there still people developing with Rebol/view without using Anamonitor 
??!!
Shame on you
Graham
16-Sep-2005
[2623]
does it work with rebgui ?
Henrik
16-Sep-2005
[2624]
I've never used it :-)
DideC
16-Sep-2005
[2625]
It was a time (not so far) where view doc was pretty inexistent.

Anamonitor was (is!) the way to correct partially this "state of 
fact".