World: r3wp
[View] discuss view related issues
older newer | first last |
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". |
older newer | first last |