Many Cards Versus One Card and a List Field

2008-01-15 Thread Peter Alcibiades
Maybe I don't understand the question (does happen!) but isn't the answer 
something like this.

1)  Once data storage gets serious, more than a few thousand records, Rev 
alone is not what to do it in.  If you want to do the rest of the app in Rev, 
you have to add a real database.  This means sqlite, mysql (if you need multi 
user and networked), Valentina, whatever.
  
The issue is not one card versus many, the issue is tab delimited fields 
versus real databases.  

2)  If data storage retrieval and reports is the primary or only need, its 
incredibly much quicker to do that sort of thing to some level in Filemaker, 
but it may not come for your OS and has other limitations.  But you do get 
point and click relational database and report construction.  

This is a real issue about Rev + sqlite, but its also an issue about 
alternatives to Rev + sqlite.

3)  Even if you can live with tab delimited files for storage, getting reports 
out of them in Rev is not much fun  So you have to add Quartam.  Or Perl or 
Awk.  This too is much easier and quicker in FM.  But the same comment applies 
to the alternatives to Rev. 

Is there a gui package  (except the database packages with end user 
pretensions like FM) that does data storage and retrieval and reporting much 
better than Rev?  Most seem to be a lot worse.  Python for instance, I think 
you have to use a real database for just about any storage.  Nothing is 
perfect.

This is my own case:  15-20k records of sales during the fiscal year.  I 
accumulate them (with some trepidation) into an external tab delimited text 
file.  Then we need to go through and extract sales by product by month for 
some 200+ items.  After a prolonged meditation on switch, if and repeat, and 
the prospect of creating a 200 x 12 matrix of fields with each one 
individually named and scripted, I broke out Effective Awk Programming.  

Its like reaching for a plane, after trying to get a smooth finish with a 
chisel.  But chisels have their uses too, and are often the right tool for 
the job.  Don't try doing a mortise with a plane!

Well, please correct if this is not right.


Peter

  



___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: How to change cursor with ctrl and shift?

2008-01-15 Thread Sakari Ruoho

Hello Jerry,

This was the problem in the first place.. I did not get any rawKeyDown  
message, when I pressed ctrl or shift and yes I'm developing on a mac.  
Even tho we're doing mainly software for the Windows users, I would  
like to make it OS X/Linux/Unix compatible, since they can make big  
difference in the future. I think I can deal with mouseWithin  
messages, if I raise the idleTicks to some low rate like 10 seconds in  
cases, when it's not needed. Thanks for your help Jerry and the rest,  
this was really nice of you.


Sakari

On Jan 15, 2008, at 12:03 AM, Jerry Daniels wrote:


Sakari,

If you want to change the cursor anytime a modifier key is depressed  
on both Windows and Mac, then I believe you will have to use either  
a polling method (send in time), idle message or mouseWithin--none  
of which are very processor friendly and can interfere with other  
things like clicking links.


HOWEVER...if you are developing for Windows only, then you are in  
luck. ANYTIME you depress a mod key, the rawKeydown message is sent.  
This may also be so for Linux, but I have not tested that.


I would dearly love to have the ability to check mod keys anytime  
via rawkeydown message on Mac as well, but, at least in my tests  
over the years, this is not yet possible. As anyone who has  
developed a standalone application knows, there is an event loop  
that spawns things like the idle message and mousewithin message  
that Rev has. I am baffled why it is so hard to send a message  
anytime any key is depressed from within the Revolution engine. How  
could the Mac OS forbid such a thing. It never used to when I worked  
on apps in C and Pascal on Mac OS 7.


We check mod keys for no-click inspection in GLX2, so I think I  
understand the exercise. We need to know mod key states even if the  
mouse is not within rect of the stack as well. So we check the mod  
key states while the mouse is moving and then send a series of  
staggered messages every 350 millisecs after the mouse stops  
moving to catch modifier key states outside of the stack window,  
etc. This taxes our processor time very, very little and provides  
almost zero interference with the IDE's other tasks, fortunately.  
But it is certainly not ideal as the staggered messages die out  
after a few seconds.


Best,

Jerry Daniels

Daniels  Mara, Inc.
Makers of GLX2
http://www.daniels-mara.com/glx2



On Jan 14, 2008, at 2:40 PM, Jan Schenkel wrote:


--- Sakari Ruoho [EMAIL PROTECTED] wrote:

Hello folks,

Was wondering how to change the mouse cursor
behavior, when user
presses either ctrl or shift key? Like in photoshop
with select tool
where u can add to selection by pressing shift and
remove from
selection by pressing ctrl? If anyone has
implemented anything like
this, any help would be appreaciated. Thank you!

Sakari Ruoho



Hi Sakari,

Others already suggested trapping the 'mouseWithin'
message, or polling every 100 milliseconds using a
'send in time' construct; here's a different approach:

##

local sKeysDown

on rawKeyDown pKey
if the keysDown is not sKeysDown then RefreshCursor
pass rawKeyDown
end rawKeyDown

on rawKeyUp pKey
if the keysDown is not sKeysDown then RefreshCursor
pass rawKeyUp
end rawKeyUp

on RefreshCursor
put the keysDown into sKeysDown
if the controlKey is down then
  set the defaultCursor to hand
else
  set the defaultCursor to arrow
end if
end RefreshCursor

##

Hope this helped,

Jan Schenkel.

Quartam Reports  PDF Library for Revolution
http://www.quartam.com

=
As we grow older, we grow both wiser and more foolish at the same  
time.  (La Rochefoucauld)



 


Looking for last minute shopping deals?
Find them fast with Yahoo! Search.  
http://tools.search.yahoo.com/newsearch/category.php?category=shopping
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your  
subscription preferences:

http://lists.runrev.com/mailman/listinfo/use-revolution



___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your  
subscription preferences:

http://lists.runrev.com/mailman/listinfo/use-revolution


Sakari Ruoho
Software Designer
[EMAIL PROTECTED]



___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


RE: Many Cards Versus One Card and a List Field

2008-01-15 Thread Randall Lee Reetz
Gregory, do you have a more detailed study of the architecture of your dna data 
solution that you would be willing to share... How physically you re storing 
and manipulating and reporting your data?

randall

-Original Message-
From: Gregory Lypny [EMAIL PROTECTED]
To: use-revolution@lists.runrev.com
Sent: 1/14/2008 6:00 PM
Subject: Re: Many Cards Versus One Card and a List Field

Hello everyone,

Having started this thread, perhaps I can throw in that the question  
for me has always been a practical one.  If I need to work with and  
analyze the data in many records and the characteristics of those  
subsets most of the time (How many in total?, How many are red?, What  
is the median?), then I build something with a list-like or array-like  
structure because an individual record or card isn't really relevant;  
it's the ability to gather them quickly into groups and characterize  
the group.  That's why when I built a program in MetaCard a few years  
ago to index the human genome database (Unigene) and extract subsets  
of the 100,000 plus entries, cards never entered the picture.   
Likewise, when I did the same with 127,000 news releases made by  
Canada NewsWire and associated the words in the headlines with some  
360,000 entries in Webster's Dictionary and the 3,600 firms trading on  
the SP/TSX.  But when I mostly need to find and study the details of  
an individual record, then the card model is a good one.  However, I'm  
finding that my need to look at individual details is now almost  
always accompanied by a need to aggregate and study groups of records,  
and for databases of, say, 100 records or more, I have to maintain a  
series of lists anyway.

Regards,

Gregory
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


RE: Many Cards Versus One Card and a List Field

2008-01-15 Thread Randall Lee Reetz
Does rev offer a table object?

-Original Message-
From: Peter Alcibiades [EMAIL PROTECTED]
To: How to use Revolution use-revolution@lists.runrev.com
Sent: 1/15/2008 12:11 AM
Subject: Many Cards Versus One Card and a List Field

Maybe I don't understand the question (does happen!) but isn't the answer 
something like this.

1)  Once data storage gets serious, more than a few thousand records, Rev 
alone is not what to do it in.  If you want to do the rest of the app in Rev, 
you have to add a real database.  This means sqlite, mysql (if you need multi 
user and networked), Valentina, whatever.
  
The issue is not one card versus many, the issue is tab delimited fields 
versus real databases.  

2)  If data storage retrieval and reports is the primary or only need, its 
incredibly much quicker to do that sort of thing to some level in Filemaker, 
but it may not come for your OS and has other limitations.  But you do get 
point and click relational database and report construction.  

This is a real issue about Rev + sqlite, but its also an issue about 
alternatives to Rev + sqlite.

3)  Even if you can live with tab delimited files for storage, getting reports 
out of them in Rev is not much fun  So you have to add Quartam.  Or Perl or 
Awk.  This too is much easier and quicker in FM.  But the same comment applies 
to the alternatives to Rev. 

Is there a gui package  (except the database packages with end user 
pretensions like FM) that does data storage and retrieval and reporting much 
better than Rev?  Most seem to be a lot worse.  Python for instance, I think 
you have to use a real database for just about any storage.  Nothing is 
perfect.

This is my own case:  15-20k records of sales during the fiscal year.  I 
accumulate them (with some trepidation) into an external tab delimited text 
file.  Then we need to go through and extract sales by product by month for 
some 200+ items.  After a prolonged meditation on switch, if and repeat, and 
the prospect of creating a 200 x 12 matrix of fields with each one 
individually named and scripted, I broke out Effective Awk Programming.  

Its like reaching for a plane, after trying to get a smooth finish with a 
chisel.  But chisels have their uses too, and are often the right tool for 
the job.  Don't try doing a mortise with a plane!

Well, please correct if this is not right.


Peter

  



___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Many Cards Versus One Card and a List Field

2008-01-15 Thread Peter Alcibiades
Does rev offer a table object?

Yes, theoretically, you can drag and drop table fields onto a card, but the 
general opinion here seems to have been to stay away from them.  Even could 
you do it, you're still storing 10s of thousands of records in a text file, 
its just a rather inaccessible one.

I considered using an ordinary field on a card for tab delimited storage.  But 
that implies writing the reports in Rev because the data in the card field is 
not accessible from other programs.   Once you've decided to use a text file 
of any sort for storage, and to awk that file, it has to be external.  Well, 
you could put to it from a card field and then awk it.  Is there any 
advantage to that?  Be nice to know if people think there is.

I will move from an external text file to an sqlite file as soon as 2.9 is 
released in final form and has an sqlite driver.

No sort of expert - well you all know that - just trying to find a logical way 
through the problem, so if this is all wrong, it would be great to be given 
some guidance.

Peter
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Many Cards Versus One Card and a List Field

2008-01-15 Thread Luis
Anyone mention OpenBase (www.openbase.com)? 'Similar' to FM in  
certain aspects although I've found it more performant.

The OpenBase Forms might be an alternative reporting tool to look at.

The coolest EPOS I've seen uses it as a back end.

Cheers,

Luis.



On 15 Jan 2008, at 08:54, Randall Lee Reetz wrote:


Does rev offer a table object?

-Original Message-
From: Peter Alcibiades [EMAIL PROTECTED]
To: How to use Revolution use-revolution@lists.runrev.com
Sent: 1/15/2008 12:11 AM
Subject: Many Cards Versus One Card and a List Field

Maybe I don't understand the question (does happen!) but isn't the  
answer

something like this.

1)  Once data storage gets serious, more than a few thousand  
records, Rev
alone is not what to do it in.  If you want to do the rest of the  
app in Rev,
you have to add a real database.  This means sqlite, mysql (if you  
need multi

user and networked), Valentina, whatever.

The issue is not one card versus many, the issue is tab delimited  
fields

versus real databases.

2)  If data storage retrieval and reports is the primary or only  
need, its
incredibly much quicker to do that sort of thing to some level in  
Filemaker,
but it may not come for your OS and has other limitations.  But you  
do get

point and click relational database and report construction.

This is a real issue about Rev + sqlite, but its also an issue about
alternatives to Rev + sqlite.

3)  Even if you can live with tab delimited files for storage,  
getting reports
out of them in Rev is not much fun  So you have to add Quartam.  Or  
Perl or
Awk.  This too is much easier and quicker in FM.  But the same  
comment applies

to the alternatives to Rev.

Is there a gui package  (except the database packages with end user
pretensions like FM) that does data storage and retrieval and  
reporting much
better than Rev?  Most seem to be a lot worse.  Python for  
instance, I think
you have to use a real database for just about any storage.   
Nothing is

perfect.

This is my own case:  15-20k records of sales during the fiscal  
year.  I
accumulate them (with some trepidation) into an external tab  
delimited text
file.  Then we need to go through and extract sales by product by  
month for
some 200+ items.  After a prolonged meditation on switch, if and  
repeat, and

the prospect of creating a 200 x 12 matrix of fields with each one
individually named and scripted, I broke out Effective Awk  
Programming.


Its like reaching for a plane, after trying to get a smooth finish  
with a
chisel.  But chisels have their uses too, and are often the right  
tool for

the job.  Don't try doing a mortise with a plane!

Well, please correct if this is not right.


Peter





___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your  
subscription preferences:

http://lists.runrev.com/mailman/listinfo/use-revolution


___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your  
subscription preferences:

http://lists.runrev.com/mailman/listinfo/use-revolution



___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Many Cards Versus One Card and a List Field

2008-01-15 Thread Mark Smith

Peter, did you look into using arrays and customPropertySets?
In (somewhat) similar circumstances, I've found that these can deal  
with largish data sets and provide pretty good performance.
I have 18000+ records in one of my data sets, each record with  
between 3 and 30 fields. I save the data as a customPropertySet in a  
stack file, and archive it regularly as a text file in a simple text  
format. Searching and comparing within the data seems quite quick on  
the whole, and though I don't have to produce nicely formatted  
reports I do have to assemble sub-sets of the data (by searching) in  
regular use.


Best,

Mark


On 15 Jan 2008, at 08:11, Peter Alcibiades wrote:


This is my own case:  15-20k records of sales during the fiscal  
year.  I
accumulate them (with some trepidation) into an external tab  
delimited text
file.  Then we need to go through and extract sales by product by  
month for
some 200+ items.  After a prolonged meditation on switch, if and  
repeat, and

the prospect of creating a 200 x 12 matrix of fields with each one
individually named and scripted, I broke out Effective Awk  
Programming.


Its like reaching for a plane, after trying to get a smooth finish  
with a
chisel.  But chisels have their uses too, and are often the right  
tool for

the job.  Don't try doing a mortise with a plane!

Well, please correct if this is not right.


Peter





___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your  
subscription preferences:

http://lists.runrev.com/mailman/listinfo/use-revolution


___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


FTP Program

2008-01-15 Thread Sakari Ruoho

Hiya folks!

Because people were so helpful to me on my last problem, I wanted to  
share a piece of code I did last summer. It's not even close to a  
complete program, but might have something useful in it. It's very  
poorly documented, but if needed I can do something about it. This  
program never got finished and was primarily a code library for  
internet updates and I have to say, that I was against the whole idea  
of using FTP for this task in the beginning and still am, but I made  
the code, so feel free to use it or improve it. I've asked my boss and  
it's all good, since it would not be a big seller anyways :D It does  
not support synchronous down/upload, because I did misinterpret some  
document I did read, which was written well before servers started  
supporting synchronous downloads. This should not be too hard problem  
to solve.


File is located under utilities category with name FTP Program or u  
can look under my user name which is Sakari. Any feedback is  
appreciated.


With best regards,

Sakari Ruoho
Software Designer
[EMAIL PROTECTED]

P.S. If I've let my ftp passwords and username to my own ftp site  
inside the code, please let me know :D


___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Rev cgi search question

2008-01-15 Thread Richard Miller

Thanks.

A few other questions about using Rev in the cgi-bin.

Can a Rev cgi script use the launch command to run a small Rev app  
from inside cgi-bin?


Do I understand correctly that several instances of the Rev cgi  
application can be running concurrently? In other words, the server  
could be simultaneously processing the requests from several users,  
but each request would cause the Rev app to start its own instance.  
Is that right?


Thanks.
Richard


On Jan 14, 2008, at 8:41 PM, Kee Nethery wrote:


We do stuff like this all the time. caching data locally.

The deal is we store last datetime changed for each row in each  
table in our database. Every time the row gets changed the datetime  
gets updated.


The various systems that use the data search the local data cache,  
not the external database.


Before doing the search we do an update to the cache and to do that  
we keep track of the lastdatetime when the database was looked at  
and we look for any rows that have changed since then. If the  
result set is zero, then the cached data gets used as is and the  
lastdatetime gets incremented in the cache.


If the resultset is not zero, we grab the changes, and incorporate  
them into the data set and then update the cache date.


Then once the cache is updated, we do the search.

If the cache is empty, or the last cache check date is empty, we do  
a complete pull from the database.


Kee


On Jan 14, 2008, at 11:28 AM, Richard Miller wrote:


I'm looking for suggestions on how to accomplish the following.

1. User starts a search of my text-based database (via browser and  
Rev cgi).
2. My app finds the results (which are a series of line numbers...  
possibly as many as 1000)
3. I now want to store those results so that when the user brings  
up a data page resulting from the search, they can go back to the  
results (presumably to go to another data page from the results)  
without having to re-do the search or use the back-button on their  
browser. I know how to store the results within a link (i.e.  
http://www.results.com?results=1,2,3...;), and I'm using this in  
various places already. But this won't work for me in all cases.


I'm guessing one solution might be to issue a temporary id number  
and connect that to a given users search process. The results  
could then be stored in a file on the server under this ID, with  
this page liquidated after some period of time (30 minutes? 60  
minutes?). Would this work or is there a better way to handle this.


Thanks.
Richard Miller
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your  
subscription preferences:

http://lists.runrev.com/mailman/listinfo/use-revolution





-
I check email roughly 2 to 3 times per business day.
Kagi main office: +1 (510) 550-1336


___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your  
subscription preferences:

http://lists.runrev.com/mailman/listinfo/use-revolution


___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Rev cgi search question

2008-01-15 Thread Andre Garzia
Richard,

using 'launch' is not advisable. Not only every instance of your cgi
will start it's own program but there's a big chance that your cgi is
running as 'nobody' or 'apacheuser' or some other very limited user on
your server (this is a good thing, it's security wise to put the cgi
user on a sandbox of sorts). If you want to run a persistent software
on your server, you must do it with text file scripts and revolution,
trying to run stacks or standalones will try to connect to the X11
server and unless you're running a framebuffer display server, this
will fail and your software will fail to start with it.

If you're thinking about running a software to cope with your previous
search result issue, then let me say that you don't need it.

The idea to solve this kind of trouble is to have session variables.
This variables are assigned to each of your clients and you can store
useful information in them. Revolution does not provide us with
session variables from the start but with minimal effort you can
create your own. In my RevOnRockets package (
http://www.andregarzia.com/RevOnRockets ), I have a minimal
EasySession library that can help you.

My current session library implementation is not in sync with
EasySession. What I am using today is plain stack files. Each stack
file holds a session. The name of the file is a unique id and I pass
this name in the SessionID url parameter or a cookie. I have two
functions one for setting a value and one for getting a value. My
library has lockfile features, so a user with two browser windows open
(and maybe the same session on both) will not overwrite himself.

whenever I need to store some value, I call my value setting function
which not only sets the value taking care not to overwrite other
changes being made but it also save the file, so once the value is
set, it is not lost anymore. Getting values is easy, we don't need to
check anything, we just pull the value from the stack and thats all. I
use custom properties to hold values.

You may ask, Why, Oh Brazilian Fool, are you using stack files
instead of a database? and the answer is quite simple. First, I like
stacks. Second, session variables don't usually need heavy concurrent
access or fort knox level security. You just use it to store simple
data, if you need security you use a database and make a pointer in
the stack file like myDatabaseId = '#23525' so your database record is
safe and your session still contains the parts needed to construct the
information you need.

The main benefit of databases in my very humble opinion are:
* many users changing the same resources.
* searches!

With session variables you have only one user changing his own session
and you don't need searches, so, I guess we don't need a RDBMS
afterall.

Now, there are other ways if you digg into Javascript. You can use a
hidden div to hold all your search data and use javascript in
combination with xmlHTTPRequest to move things around. I don't know if
this is overkill though.

The RevOnRockets package comes with EasySession that uses text files
instead of stack files and has no lockfile features so it is possible
to overwrite changes if a user has two browser windows open with the
same session. Still it is good enough for simple sessioning. With
EasySession each session is write-once-read-once, or in plain english:
you set a session then you read it afterward and when you read, it is
deleted, if you want to move what you read forward then you need to
set it again. This was done for security purposes so that sessions
can't be re-used. If some hacker picks your url with a session id,
there's no problem because that session has a great chance of not
existing anymore.

So what easy session is good for? Moving secret data from one page to
another. In one page you set the data, for example credit card number,
user information and when moving to the next one, you pass the session
id. In this page, the data is read and session is cleared. Your url
and your post/get requests hold no sensitive information. I've created
this library mostly for doing confirmation pages where the user fill
data, then he is moved to a confirmation page, then the data is
proccessed. This way, I simply set the session on one page and clear
it on the next, the sensitive data is held on server for a very brief
time, just the interval when the user is in transit from one page to
the other since in each page the session is cleared. It is hard to
capture this session and impossible to re-use it. Feel free to
download RevOnRockets and check on EasySession.


I hope this helps.

Andre


On 1/15/08, Richard Miller [EMAIL PROTECTED] wrote:
 Thanks.

 A few other questions about using Rev in the cgi-bin.

 Can a Rev cgi script use the launch command to run a small Rev app
 from inside cgi-bin?

 Do I understand correctly that several instances of the Rev cgi
 application can be running concurrently? In other words, the server
 could be simultaneously processing the 

Re: Many Cards Versus One Card and a List Field

2008-01-15 Thread Russell Martin
I don't currently have a project where I'm trying to store thousands of
records. To some, maybe that will invalidate my views on the subject.

I just read what Sarah had written below and I was frankly a bit
peeved. I've spent a considerable amount of time learning how to use
stacks as documents and then to find out that even at a paltry 4000
cards, Revolution is in her words 'unworkably slow'.

That just doesn't sit well with me. Most of us have yesterday's
supercomputers sitting on our desks or in our laps. Revolution
shouldn't take a performance hit until you're dealing with millions of
cards. Maybe it's doing something stupid in all of that searching, like
thousands of saves to disk when it should be suspending them until the
search operation is over.

--- Sarah Reichelt [EMAIL PROTECTED] wrote:
 
 I would recommend the list field-single card method for Rev. With
 Hypercard, marking cards by finding was super fast. With Rev this is
 not the case. I wrote a small database (about 4000 records) in
 Hypercard for some friends, using the one card per record method.
 When
 they changed to OS X, I tried just importing it into Rev but
 searching
 for multiple matches was unworkably slow. I converted it all to a
 single card plus data field and it was all good again. Plus the data
 is easier to back up and restore if I send them a program update.
 
 Cheers,
 Sarah
 ___
 use-revolution mailing list
 use-revolution@lists.runrev.com
 Please visit this url to subscribe, unsubscribe and manage your
 subscription preferences:
 http://lists.runrev.com/mailman/listinfo/use-revolution
 



  

Never miss a thing.  Make Yahoo your home page. 
http://www.yahoo.com/r/hs
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Many Cards Versus One Card and a List Field

2008-01-15 Thread Richard Gaskin

Peter Alcibiades wrote:
Maybe I don't understand the question (does happen!) but isn't the answer 
something like this.


1)  Once data storage gets serious, more than a few thousand records, Rev 
alone is not what to do it in.  If you want to do the rest of the app in Rev, 
you have to add a real database.  This means sqlite, mysql (if you need multi 
user and networked), Valentina, whatever.
  
The issue is not one card versus many, the issue is tab delimited fields 
versus real databases.  


True.  If you need a database, Rev has connections available for a wide 
variety of them, including SQLite, MySQL, Valentina, Oracle, and ODBC 
for everything else.


But as Mark Smith noted, you may be pleasantly surprised by what you can 
do with storing data in custom property sets.  One could use text files 
as well, but I tend to use properties so I can have metadata containing 
field names, types, and sizes in a separate property set from the data 
itself.  I regularly work with data sets from 100 to 50,000 records this 
way.


Using repeat for each... I can search at the rate of 98,000 records 
per second for a single-criterion search, and more than 34,000 records 
per second for a three-criteria search.  I can extract a single column 
at the rate of about a million records a second (for field 7; 1.4 
million for field 1), and return only unique values in that column at 
about three-quarter-million records per second.  And that's using a 
generalized (read slower than is possible) method on a modest Mac.  On 
a top-of-the-line Wintel box I would imagine one can nearly double that.


For smaller data sets of about a thousand records or so, one can still 
use cards if desired.  I prefer the flexibility of separating code from 
presentation, but for quick-n-dirty solutions using cards can be convenient.


Being able to handle data up to 50,000 records in Rev alone is not bad, 
and having the connectivity to a variety of well-honed DBMS engines is 
even better.



2)  If data storage retrieval and reports is the primary or only need, its 
incredibly much quicker to do that sort of thing to some level in Filemaker, 
but it may not come for your OS and has other limitations.  But you do get 
point and click relational database and report construction.  

This is a real issue about Rev + sqlite, but its also an issue about 
alternatives to Rev + sqlite.


FileMaker is in a class by itself for ease of use, and I've seen a few 
projects done in Rev, even commercial ones, that might well have 
benefited from having been done with FMP instead.  It's a good tool, and 
if it does what a project needs it can be a very good choice.



3)  Even if you can live with tab delimited files for storage, getting reports 
out of them in Rev is not much fun  So you have to add Quartam.  Or Perl or 
Awk.  This too is much easier and quicker in FM.  But the same comment applies 
to the alternatives to Rev. 


True, reporting in most 4GLs is done through commercial add-ons.  VB 
uses Crystal Reports, HyperCard used Reports Data Pro, and Rev uses Quartam.


That said, I've rolled my own reporting as needed, since my apps tend to 
have specialized needs, and they've been acceptable in both cost and 
performance.  Though I don't have the direct experience to say with 
certainty, I would venture to guess that rolling one's one reporting 
tools would be more costly in VB by at least a factor of two, and 
perhaps an order of magnitude in Java.



Is there a gui package  (except the database packages with end user 
pretensions like FM) that does data storage and retrieval and reporting much 
better than Rev?  Most seem to be a lot worse.  Python for instance, I think 
you have to use a real database for just about any storage.  Nothing is 
perfect.


This is my own case:  15-20k records of sales during the fiscal year.  I 
accumulate them (with some trepidation) into an external tab delimited text 
file.  Then we need to go through and extract sales by product by month for 
some 200+ items.  After a prolonged meditation on switch, if and repeat, and 
the prospect of creating a 200 x 12 matrix of fields with each one 
individually named and scripted, I broke out Effective Awk Programming.  

Its like reaching for a plane, after trying to get a smooth finish with a 
chisel.  But chisels have their uses too, and are often the right tool for 
the job.  Don't try doing a mortise with a plane!


Well, please correct if this is not right.


I think you summed it up well.  If one needs a database, use a database. 
 If FMP, or even Bento (FileMaker Inc.'s new ultra-simple DB product) 
will do the trick, it'd be a shame not to use it.


And if one needs more flexibility with the UI than FileMaker 
accommodates, Rev can be used for tens of thousands of records natively 
or take advantage of its connectivity options for millions of records 
with any of its many DBMS engines.


--
 Richard Gaskin
 Managing Editor, revJournal
 

Re: Many Cards Versus One Card and a List Field

2008-01-15 Thread Mark Smith
Russell, please don't take this as unfriendly or agressive, and being  
quite good at peevish myself, I can understand your point of view.
But if you don't currently need to deal with thousands of records,  
then your current level of expertise with using cards will serve you  
well, and since the card metaphor is inherent in Revoluton, it has  
more uses than just wrangling data, obviously.
When and if you need to deal with bigger data sets, then you'll have  
the opportunity to develop your expertise for that (whether it be  
files, custom props, databases, or whatever), and you can be sure  
that people here will be happy to help and advise.
Personally, I find devising schemes for handling data is one of the  
more enjoyable and interesting aspects of programming, though of  
course YMMV.


Best,

Mark

On 15 Jan 2008, at 17:56, Russell Martin wrote:

I don't currently have a project where I'm trying to store  
thousands of

records. To some, maybe that will invalidate my views on the subject.

I just read what Sarah had written below and I was frankly a bit
peeved. I've spent a considerable amount of time learning how to use
stacks as documents and then to find out that even at a paltry 4000
cards, Revolution is in her words 'unworkably slow'.

That just doesn't sit well with me. Most of us have yesterday's
supercomputers sitting on our desks or in our laps. Revolution
shouldn't take a performance hit until you're dealing with millions of
cards. Maybe it's doing something stupid in all of that searching,  
like

thousands of saves to disk when it should be suspending them until the
search operation is over.

--- Sarah Reichelt [EMAIL PROTECTED] wrote:


I would recommend the list field-single card method for Rev. With
Hypercard, marking cards by finding was super fast. With Rev this is
not the case. I wrote a small database (about 4000 records) in
Hypercard for some friends, using the one card per record method.
When
they changed to OS X, I tried just importing it into Rev but
searching
for multiple matches was unworkably slow. I converted it all to a
single card plus data field and it was all good again. Plus the data
is easier to back up and restore if I send them a program update.

Cheers,
Sarah
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your
subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution





   
__ 
__

Never miss a thing.  Make Yahoo your home page.
http://www.yahoo.com/r/hs
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your  
subscription preferences:

http://lists.runrev.com/mailman/listinfo/use-revolution


___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Many Cards Versus One Card and a List Field

2008-01-15 Thread Mikey
Russell,
I'm kind of late replying to this comment (re your dismay).

I understand your frustration, and I agree with you.  RR has lots of
warts, and this is one of them.  I have not been able to use it as my
primary development tool because I develop mainly database-centric
applications, and RR's implementation of the HC paradigm isn't what I
expected, either.

HOWEVER, RR's ODBC routines are simple to use and are quick.  The
ability to hack RR is rare in development tools.  I was able to write
a general purpose ODBC front-end including list and individual record
form layouts in almost no time at all, which was cool, and I was able
to implement interface features that RR was missing (such as
splitters) very quickly and with very little effort.

So, yep, it needs work.  Yep, it's buggy.  Nope, it isn't perfect, and
yep, it would be better if the card paradigm was more in line with HC.

But, for the time being it appears that it should work ok for you, and
when your needs outgrow it, it looks like it will be pretty easy to
write some front-end scripts that will substitute a database back end
for RR's native card format, but not sacrifice your effort.


I will repeat here yet again that the fact that we can't hack RR
commands makes the previous action more difficult, but it is what it
is, and it is certainly easier to hack in general than HC ever was.
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Many Cards Versus One Card and a List Field

2008-01-15 Thread Richard Gaskin

Hey Mikey -

Good to see you here.

Even though Bill Atkinson himself said that HyperCard isn't a database, 
I can understand the desire of those who've used it as one to use Rev 
similarly.


What made it possible to use HC that way was its hint bits, a system 
for indexing field contents which is not only proprietary but patented 
as well.  Hint bits made it ultra-fast for obtaining data across the 
otherwise-complex structures that make up cards and fields.


So while we might want Rev to adopt something like this, in all fairness 
no other card-based system has ever done so, nor are they likely to in 
the future, for at least two reasons:


First, it's proprietary, and while it may be possible to recreate 
something similar from scratch it would be a fair amount of work, 
unlikely given:


Moreover, the rest of the world has moved on to separate content from 
presentation, and the Rev team seems well focused on those options.


In this thread we've outlined three distinct ways of managing data with Rev:

1.  3,000 records:  cards work okay
2.  50,000 records: delimited text stored in custom properties
3.  50,000 records: true database engine (SQlite, MySQL, etc.)

If you were using RB, VB, Java, or just about any other system, the 
first two wouldn't even be options (well, you could store delimited text 
in a text file, but without the ease of working with metadata or Rev's 
chunk expressions).


Rev gives you all three, with a few limits on the first two.

And the latter two are reflective of pretty much how everyone in the 
world except HyperCarders work with data, providing a lot of flexibility 
and with the ease of Rev's chunk expressions and other scripting niceties.



FWIW, Rev does two other things HC never did:

As a RAM-based system, you have control over when it saves.  This allows 
you to implement true document behaviors, or write a simple automatic 
saving mechanism, whichever you choose.  HyperCard gave you no control 
over saving.


When saving, the entire file is written to disk in a single pass, rather 
than HC's paging from/to disk, which introduces a risk of file 
corruption that's nearly unknown in the Rev world (remember Error 
5454?).  Sure, the risk of corruption could be minimized in HC with 
regular compaction, but any paging system is inherently more prone to 
corruption than a non-paging one.


Extra bonus points: if power outage or other anomaly happens during 
save, the first thing the Rev engine does when saving is make a copy of 
the file as a backup, named the same as the file but preceded with ~ 
(e.g., ~mystack.rev).  So in the rare case where file corruption might 
occur, you have an automatic backup - just toss the bad copy, delete the 
~ from the backup, and get back to work.



So in brief, Rev definitely works differently than HC, but I wouldn't 
necessarily think of that difference as being broken.  HC had a number 
of conveniences unique to it, but in the modern world where most folks 
are accustomed to the flexibility of having content and presentation 
separated it doesn't seem likely the Rev team would be willing to devote 
the significant resources needed to replicate HC's hint bits.



For projects requiring a simpler approach than Rev offers, Bento may be 
worth looking at:

http://www.filemaker.com/products/bento/

It's a nifty tool, not nearly as flexible as Rev but it seems to do what 
it does well.


--
 Richard Gaskin
 Managing Editor, revJournal
 ___
 Rev tips, tutorials and more: http://www.revJournal.com
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Many Cards Versus One Card and a List Field

2008-01-15 Thread Stephen Barncard
Wrong assumptions. Rev works completely in RAM after loading. Save to 
disk is only done under command or script control.
What you're seeing as disk activity is probably virtual memory in 
your OS. Rev doesn't touch that.


Most of us have given up the card data metaphor for serious projects. 
Forget the speed issue - having business code and data mixed together 
is just bad practice.


What you might consider 'lacking' is a trade-off most of us are happy 
to accept considering all the other advantages. I'm sure the makers 
of Rev have a good technical reason.  And I frankly don't care about 
the card metaphor - to me it's just to accommodate legacy hypercard 
stacks for the transition and simple applications and documentation. 
There are so many ways to store data. Even in my Hypercard days I 
started storing data in resource forks of stacks.The great 
Rinaldi had an XCMD set that could save and get text in TEXT 
resources that could be edited in ResCopy or ResEdit. They were just 
like todays custom properties in Rev.


I was looking for ways to improve data use in Hypercard back in the 
90's as one of the first users of the SQL database 'Butler'. It was 
the first SQL server built to run on a mac.  Unfortuately the server 
was buggy and the XCMDs worse, it was crashing too much to even 
develop more than a few lines of SQL.


There's a lot more 'stuff' on a Rev card than a Hypercard 'card', so 
I guess moving and searching among the cards causes some messaging to 
occur, and some amount of housekeeping is done on each page change. A 
lot of this stuff goes away with  lock screen etc.


But boy, if you're used to Hypercard speed and you hook up a real 
database to Rev... it will blow your socks off with speed and has so 
many more features you can apply to your data.. like working on 
entire columns at once, aggregate functions, etc.




supercomputers sitting on our desks or in our laps. Revolution
shouldn't take a performance hit until you're dealing with millions of
cards. Maybe it's doing something stupid in all of that searching, like
thousands of saves to disk when it should be suspending them until the
search operation is over.


--


stephen barncard
s a n  f r a n c i s c o
- - -  - - - - - - - - -



___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Rev cgi search question

2008-01-15 Thread Richard Miller
Thanks, Andre, for the extensive reply. I'll study it and get back to  
you if I have any questions.

Richard



On Jan 15, 2008, at 10:47 AM, Andre Garzia wrote:


Richard,

using 'launch' is not advisable. Not only every instance of your cgi
will start it's own program but there's a big chance that your cgi is
running as 'nobody' or 'apacheuser' or some other very limited user on
your server (this is a good thing, it's security wise to put the cgi
user on a sandbox of sorts). If you want to run a persistent software
on your server, you must do it with text file scripts and revolution,
trying to run stacks or standalones will try to connect to the X11
server and unless you're running a framebuffer display server, this
will fail and your software will fail to start with it.

If you're thinking about running a software to cope with your previous
search result issue, then let me say that you don't need it.

The idea to solve this kind of trouble is to have session variables.
This variables are assigned to each of your clients and you can store
useful information in them. Revolution does not provide us with
session variables from the start but with minimal effort you can
create your own. In my RevOnRockets package (
http://www.andregarzia.com/RevOnRockets ), I have a minimal
EasySession library that can help you.

My current session library implementation is not in sync with
EasySession. What I am using today is plain stack files. Each stack
file holds a session. The name of the file is a unique id and I pass
this name in the SessionID url parameter or a cookie. I have two
functions one for setting a value and one for getting a value. My
library has lockfile features, so a user with two browser windows open
(and maybe the same session on both) will not overwrite himself.

whenever I need to store some value, I call my value setting function
which not only sets the value taking care not to overwrite other
changes being made but it also save the file, so once the value is
set, it is not lost anymore. Getting values is easy, we don't need to
check anything, we just pull the value from the stack and thats all. I
use custom properties to hold values.

You may ask, Why, Oh Brazilian Fool, are you using stack files
instead of a database? and the answer is quite simple. First, I like
stacks. Second, session variables don't usually need heavy concurrent
access or fort knox level security. You just use it to store simple
data, if you need security you use a database and make a pointer in
the stack file like myDatabaseId = '#23525' so your database record is
safe and your session still contains the parts needed to construct the
information you need.

The main benefit of databases in my very humble opinion are:
* many users changing the same resources.
* searches!

With session variables you have only one user changing his own session
and you don't need searches, so, I guess we don't need a RDBMS
afterall.

Now, there are other ways if you digg into Javascript. You can use a
hidden div to hold all your search data and use javascript in
combination with xmlHTTPRequest to move things around. I don't know if
this is overkill though.

The RevOnRockets package comes with EasySession that uses text files
instead of stack files and has no lockfile features so it is possible
to overwrite changes if a user has two browser windows open with the
same session. Still it is good enough for simple sessioning. With
EasySession each session is write-once-read-once, or in plain english:
you set a session then you read it afterward and when you read, it is
deleted, if you want to move what you read forward then you need to
set it again. This was done for security purposes so that sessions
can't be re-used. If some hacker picks your url with a session id,
there's no problem because that session has a great chance of not
existing anymore.

So what easy session is good for? Moving secret data from one page to
another. In one page you set the data, for example credit card number,
user information and when moving to the next one, you pass the session
id. In this page, the data is read and session is cleared. Your url
and your post/get requests hold no sensitive information. I've created
this library mostly for doing confirmation pages where the user fill
data, then he is moved to a confirmation page, then the data is
proccessed. This way, I simply set the session on one page and clear
it on the next, the sensitive data is held on server for a very brief
time, just the interval when the user is in transit from one page to
the other since in each page the session is cleared. It is hard to
capture this session and impossible to re-use it. Feel free to
download RevOnRockets and check on EasySession.


I hope this helps.

Andre


On 1/15/08, Richard Miller [EMAIL PROTECTED] wrote:

Thanks.

A few other questions about using Rev in the cgi-bin.

Can a Rev cgi script use the launch command to run a small Rev app
from inside cgi-bin?

Do I understand 

large amounts of data and cgi

2008-01-15 Thread Bernard Devlin
Part of a web application I'm working on requires a large number of
queries joining several tables, and each table containing millions of
rows.  Accessing the database  (Frontbase) using either the JDBC
drivers or the Rev drivers provided by Frontbase, resulted in single
queries that would take anywhere between 300-900ms.  As there could be
hundreds of such queries in order to produce one response, I had to
look at ways to speed this up.  I don't believe that it is a question
of writing better SQL - the queries have to spider across the data,
and keep a track of the route they take to get to each node in the
graph.

I tuned the database, making sure that all the 'where' columns were
indexed, and checked the query plan to ensure that it was precisely
those indexes being used in the queries.  I gave the database 100mb of
RAM cache, and even tried loading the core tables 100% into RAM.  But
still I could not really get much better performance.  From my
testing, the data did not seem to be found in RAM until after the
first time it was retrieved from disk, despite my setting the tables
to pre-load in RAM.  Perhaps over time RAM-cached data would have
shown a much better performance than at this stage.

I decided to try HSQLDB - a rdbms written in Java, and which can
contain all its tables in RAM, so I could be sure that the data was in
RAM.  After exporting the core tables to CSV format (and transforming
them to  SQL Inserts using Rev), it took about 1 hour to start the
database, and when started the database took 1.5gb of RAM.  But the
queries were still slow (my guess is that HSQLDB is just not designed
to take that much data).

So, I took the CSV data and imported it into a stack, turning each
table into a custom property set.  I could now search the data in a
tiny fraction of a second -- literally.  The hundreds of queries
involved in making a single response are completed in 200ms.  That's
right -- I can now run the entire series of queries in less time than
it took to do a single query accessing a rdbms.

Obviously, custom properties being used in this way are not
appropriate if one needs referential integrity, locking, concurrent
access, etc.  But for a read-only query, Rev has provided a very
satisfactory solution.  Moreover, whilst HSQLDB would take an hour and
1.5gb of RAM, Rev could load the 100mb of CSV data in 2-4 secs, making
the frequent updating of data and subsequent restarting of the
application feasible.

After following Pierre Sahores' tutorial on creating persistent Rev
CGI processes, I now have these queries returning a web page in 200ms,
instead of the 30 secs they would have taken using Java and a
database.  I know all of this flies in the face of many people's
expectations, and it is certainly not the position I saw myself being
in 2 weeks ago.  The rest of the application is written in Java, but
this core feature has been made possible using Rev.  I  expect that
associative arrays in e.g. PHP might also be as fast in this regard.

Bernard
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: large amounts of data and cgi

2008-01-15 Thread Andre Garzia
Bernard,

have you tried valentina? It is very fast!!! :-D

cheers
andre

On 1/15/08, Bernard Devlin [EMAIL PROTECTED] wrote:
 Part of a web application I'm working on requires a large number of
 queries joining several tables, and each table containing millions of
 rows.  Accessing the database  (Frontbase) using either the JDBC
 drivers or the Rev drivers provided by Frontbase, resulted in single
 queries that would take anywhere between 300-900ms.  As there could be
 hundreds of such queries in order to produce one response, I had to
 look at ways to speed this up.  I don't believe that it is a question
 of writing better SQL - the queries have to spider across the data,
 and keep a track of the route they take to get to each node in the
 graph.

 I tuned the database, making sure that all the 'where' columns were
 indexed, and checked the query plan to ensure that it was precisely
 those indexes being used in the queries.  I gave the database 100mb of
 RAM cache, and even tried loading the core tables 100% into RAM.  But
 still I could not really get much better performance.  From my
 testing, the data did not seem to be found in RAM until after the
 first time it was retrieved from disk, despite my setting the tables
 to pre-load in RAM.  Perhaps over time RAM-cached data would have
 shown a much better performance than at this stage.

 I decided to try HSQLDB - a rdbms written in Java, and which can
 contain all its tables in RAM, so I could be sure that the data was in
 RAM.  After exporting the core tables to CSV format (and transforming
 them to  SQL Inserts using Rev), it took about 1 hour to start the
 database, and when started the database took 1.5gb of RAM.  But the
 queries were still slow (my guess is that HSQLDB is just not designed
 to take that much data).

 So, I took the CSV data and imported it into a stack, turning each
 table into a custom property set.  I could now search the data in a
 tiny fraction of a second -- literally.  The hundreds of queries
 involved in making a single response are completed in 200ms.  That's
 right -- I can now run the entire series of queries in less time than
 it took to do a single query accessing a rdbms.

 Obviously, custom properties being used in this way are not
 appropriate if one needs referential integrity, locking, concurrent
 access, etc.  But for a read-only query, Rev has provided a very
 satisfactory solution.  Moreover, whilst HSQLDB would take an hour and
 1.5gb of RAM, Rev could load the 100mb of CSV data in 2-4 secs, making
 the frequent updating of data and subsequent restarting of the
 application feasible.

 After following Pierre Sahores' tutorial on creating persistent Rev
 CGI processes, I now have these queries returning a web page in 200ms,
 instead of the 30 secs they would have taken using Java and a
 database.  I know all of this flies in the face of many people's
 expectations, and it is certainly not the position I saw myself being
 in 2 weeks ago.  The rest of the application is written in Java, but
 this core feature has been made possible using Rev.  I  expect that
 associative arrays in e.g. PHP might also be as fast in this regard.

 Bernard
 ___
 use-revolution mailing list
 use-revolution@lists.runrev.com
 Please visit this url to subscribe, unsubscribe and manage your subscription 
 preferences:
 http://lists.runrev.com/mailman/listinfo/use-revolution



-- 
http://www.andregarzia.com All We Do Is Code.
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Many Cards Versus One Card and a List Field

2008-01-15 Thread -= JB =-


On Jan 15, 2008, at 1:16 PM, Richard Gaskin wrote:



In this thread we've outlined three distinct ways of managing data  
with Rev:


1.  3,000 records:  cards work okay
2.  50,000 records: delimited text stored in custom properties
3.  50,000 records: true database engine (SQlite, MySQL, etc.)


--
 Richard Gaskin
 Managing Editor, revJournal
 ___
 Rev tips, tutorials and more: http://www.revJournal.com
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your  
subscription preferences:

http://lists.runrev.com/mailman/listinfo/use-revolution




Option 3.  50,000 records you said to use a database.

What would be the disadvantage of using cards and a database  
together.  So the
database handles the searching etc. but the card includes info you  
don't need to
access from the database.  And if you find you do need to access it  
you just build

another database to access it.

-=JB=-

___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Many Cards Versus One Card and a List Field

2008-01-15 Thread J. Downs
What made it possible to use HC that way was its hint bits, a  
system for indexing field contents which is not only proprietary  
but patented as well.  Hint bits made it ultra-fast for obtaining  
data across the otherwise-complex structures that make up cards and  
fields.


Certainly any such patent has expired by now.  Patents are  
enforceable a maximum of 20 years past the filing date.


J.

___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Many Cards Versus One Card and a List Field

2008-01-15 Thread Joe Lewis Wilkins
I believe patents are limited to 14 years, but something like this is  
probably more of a copyright issue; copyrights are good for 28 years  
and renewable for two additional 28 year periods for a total of 84  
years. Of course, I've been wrong before. (sheepish grin)


Joe Wilkins

On Jan 15, 2008, at 5:35 PM, J. Downs wrote:

What made it possible to use HC that way was its hint bits, a  
system for indexing field contents which is not only proprietary  
but patented as well.  Hint bits made it ultra-fast for obtaining  
data across the otherwise-complex structures that make up cards  
and fields.


Certainly any such patent has expired by now.  Patents are  
enforceable a maximum of 20 years past the filing date.


J.

___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your  
subscription preferences:

http://lists.runrev.com/mailman/listinfo/use-revolution


___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Https: how to get Rev app certified

2008-01-15 Thread Sivakatirswami


if I put

https://[EMAIL PROTECTED]:[EMAIL PROTECTED]/f.api/7522423

into my  browser I'll be asked to authenticate and the server spits back 
info we expect.


Now... if I put this into the msg in Rev:


put url 
(https://[EMAIL PROTECTED]:[EMAIL PROTECTED]/f.api/7522423)


result:

error -Error with certificate at depth: 0  issuer   = 
/C=US/O=Equifax/OU=Equifax Secure Certificate Authority  subject  = 
/C=US/O=api.feedblitz.com/OU=GT65832592/OU=See 
www.geotrust.com/resources/cps (c)07/OU=Domain Control Validated - 
QuickSSL Premium(R)/CN=api.feedblitz.com  err 20:unable to get local 
issuer certificate


how do we do the https-certificate handshake from within a Rev app?



___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Many Cards Versus One Card and a List Field

2008-01-15 Thread Richard Gaskin

J. Downs wrote:
What made it possible to use HC that way was its hint bits, a  
system for indexing field contents which is not only proprietary  
but patented as well.  Hint bits made it ultra-fast for obtaining  
data across the otherwise-complex structures that make up cards and  
fields.


Certainly any such patent has expired by now.  Patents are  
enforceable a maximum of 20 years past the filing date.


Cool.  Let us know what Apples says when you write to ask them for the 
code. ;)


--
 Richard Gaskin
 Managing Editor, revJournal
 ___
 Rev tips, tutorials and more: http://www.revJournal.com
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


RE: Many Cards Versus One Card and a List Field

2008-01-15 Thread Gregory Lypny

Hello Randall,

It's been a while.  I could dig it up, but it would be embarrassing  
(although the program is still being used).  My scripting is like  
Johnny Cash's guitar playing was: primitive.


Here's the gist of it, although I'm sure (actually certain) that  
there's nothing here that people on the list don't already know.  But  
let me know if I can clarify anything.


Regards,

Gregory Lypny

Associate Professor of Finance
John Molson School of Business
Concordia University
Montreal, Canada

- The raw sequence data is available in a text files, which are 500 MB  
plus.  Later projects involved files of more than a GB.  These are  
what I call flat-file databases in that each record can have a varying  
number of sub-records (none to thousands) pertaining to other  
variables.  Records follow each other in a long stream and are  
delimited by characters such as .  Variables within records are  
labelled at the beginning of each line in capitals followed by a  
colon.  After that, any line may contain a further breakdown, which  
can be delimited any number of ways.  Basically a mess, and the files  
aren't very useful in themselves for aggregating or doing batch  
searches where there would be many hits.  I think they were originally  
set up (by the NIH?  I forget.) to return results for single web-based  
queries, kind of like finding a card in HyperCard.  I don't think it  
was foreseen that some researches might want to submit a batch of  
queries (called probe sets) to find whether they had been sequenced.


- Having figured out the record delimiter, it was a question of  
reading in the file a bit at a time to index the information about  
each variable, that is, break it down and store it in separate files  
for searching and extracting later.  I experimented with reading in as  
many complete records as possible (as opposed to lines or characters)  
so as never to mistakenly cut off or lose part of a record, subject to  
the constraint that the amount read into what I knew would be the  
biggest MetaCard variables (what I called indexes) did not exceed a  
certain size in MB because MetaCard would slow down dramatically after  
a certain point and, of course, go a slow as molasses if virtual  
memory was called upon.  I don't have the stats handy, but trial and  
error in setting the reading criteria really pays off.


- The MetaCard variables that were used as indexes to store the  
various record variables were always simple tab-delimited lists or  
arrays that would be later converted to lists.  These were always  
created using Repeat-for-each-line loops because this type of loop is  
very fast.  Another thing that increased the speed of indexing was to  
dump the contents of the indexes to text files intermittently to free  
up memory.  Again trial and error was necessary (for me, anyway) to  
determine the optimal number of times to write to disk because writing  
takes time, so you're balancing write time with variable size.  On an  
ancient Mac, the one-time indexing process could take about 40 minutes.


- The next step was to build a simple interface so that searches and  
extraction of hits could be done.  The user imports a list of search  
terms (such as probe sets); the appropriate index files are read in  
and the lines matched with the submitted queries.  Output files that  
can be slapped into a spreadsheet are created and stats reported.  A  
batch query of about 500 probe sets across the 100,000 plus DNA  
sequences used to take about three to seven minutes on an old blue  
iMac (forgot what those are called).






On Tue, Jan 15, 2008, at 10:47 AM, [EMAIL PROTECTED] 
 wrote:


Gregory, do you have a more detailed study of the architecture of  
your dna data solution that you would be willing to share... How  
physically you re storing and manipulating and reporting your data?


randall


___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Constructing and calling a handler as do

2008-01-15 Thread Kay C Lan
On Jan 14, 2008 8:18 AM, Randall Lee Reetz [EMAIL PROTECTED] wrote:

 I use delimeters so that i can auto deconstruct (this is much slower if
 one has to filter for cap letters).


This is lightning bolt brilliant!

I've had the odd occasion where I've needed to be able to 'interpret' and
'manipulate' an bunch of object names and have usually resorted to coming up
with some kind of naming convention that forces a prefix and/or suffix to be
a fixed number of char long so I can search for 'char 1 to 3' (or 4 or 5
or.because looking for the offset of the char whose charToNum fell
between the range of 65 to 90 seemed more difficult to me that just going
with fixed length prefix/suffix) which typically resulted in names that
weren't as self evident as I'd like. To use an underscore, change the
itemDelimiter and search by item is so staring you in the face Rev chunk
obvious I can't believe I've spent so much time renaming things to fit my
ever-changing fixed width prefix/suffix system.

I'd like to try and blame Richard, for his excellent 'script style' bible,
but midWord capitalization for me dates back to the origin of HyperCard so
it's a habit that clearly blinded me to the advantages that could be
afforded by using a naming convention which ALSO incorporated taking
advantage of chunk expressions.

Randall, any tips, tricks or pitfalls to using this approach?
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Many Cards Versus One Card and a List Field

2008-01-15 Thread Kay C Lan
On Jan 16, 2008 10:06 AM, Richard Gaskin [EMAIL PROTECTED] wrote:


 Cool.  Let us know what Apples says when you write to ask them for the
 code. ;)


I had to smile two days ago, I was on the Apple site registering some
software and noticed that HyperCard is listed there; so I guess Apple think
it very much alive and theirs.

I wasn't on the net when I got HC and I'm sure I wouldn't have bothered
posting international to register, so I'm thinking, I might just log in and
register my copy of HC;-)
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Many Cards Versus One Card and a List Field

2008-01-15 Thread J. Downs
Cool.  Let us know what Apples says when you write to ask them for  
the code. ;)


lol.  i'd reverse engineer it for you, but haven't the foggiest where  
to begin with such an enterprise.  :P


j.

___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Many Cards Versus One Card and a List Field

2008-01-15 Thread J. Landman Gay

Richard Gaskin wrote:

J. Downs wrote:
What made it possible to use HC that way was its hint bits, a  
system for indexing field contents which is not only proprietary  but 
patented as well.  Hint bits made it ultra-fast for obtaining  data 
across the otherwise-complex structures that make up cards and  fields.


Certainly any such patent has expired by now.  Patents are  
enforceable a maximum of 20 years past the filing date.


Cool.  Let us know what Apples says when you write to ask them for the 
code. ;)




I think it also falls into the category of company secrets. In every 
NDA I've signed, this has legal significance.


--
Jacqueline Landman Gay | [EMAIL PROTECTED]
HyperActive Software   | http://www.hyperactivesw.com
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Many Cards Versus One Card and a List Field

2008-01-15 Thread Joe Lewis Wilkins
Well, at least I'm the first to let me know I was wrong. Appears they  
changed it in 1995 to 20 years as JD said earlier; and it had been  
changed from 14 to 17 years sometime even earlier. You know about  
old coots. (smile)

http://www.fda.gov/cder/about/smallbiz/patent_term.htm
Joe Wilkins


On Jan 15, 2008, at 5:45 PM, Joe Lewis Wilkins wrote:


I believe patents are limited to 14 years, but something like this  
is probably more of a copyright issue; copyrights are good for 28  
years and renewable for two additional 28 year periods for a total  
of 84 years. Of course, I've been wrong before. (sheepish grin)


Joe Wilkins



On Jan 16, 2008 10:06 AM, Richard Gaskin  
[EMAIL PROTECTED] wrote:




Cool.  Let us know what Apples says when you write to ask them for  
the

code. ;)



I had to smile two days ago, I was on the Apple site registering some
software and noticed that HyperCard is listed there; so I guess  
Apple think

it very much alive and theirs.

I wasn't on the net when I got HC and I'm sure I wouldn't have  
bothered
posting international to register, so I'm thinking, I might just  
log in and

register my copy of HC;-)
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your  
subscription preferences:

http://lists.runrev.com/mailman/listinfo/use-revolution


___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


handler: error in statement

2008-01-15 Thread mfstuart

Hi all,

This error (see subject) happens when I double-click on a table field of
data that has an on mouseDoubleUp in it.
The idea of the script is to get the ID value (item 1) and place it into a
global variable.
Then go to a card to edit the record.

Here's the RunRevScript:

on mouseDoubleUp
  set the itemDel to tab
  put item 1 of the selectedText into gRecord
  go card EditRecord of stack names
end mouseDoubleUp

Anything wrong with this script?
3rd line causes the error.

With some testing, I did the following to get this to break - to cause the
above error:
  Created a New Stack
  placed a button on the card
  created a card named: EditRecord
  added a script for the button: on mouseUp
   script:
 go card EditRecord
That's it, and it works.

As soon as I put this script (go card...) into the table field and use it
there, the above error occurs.
Any help is much appreciated.

Thanx,
Mark Stuart

-- 
View this message in context: 
http://www.nabble.com/handler%3A-error-in-statement-tp14860651p14860651.html
Sent from the Revolution - User mailing list archive at Nabble.com.

___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Https: how to get Rev app certified

2008-01-15 Thread Mark Smith
Sivakatirswami, this looks like an SSL certificate problem, have a  
look at this thread:


http://article.gmane.org/gmane.comp.ide.revolution.user/59030/ 
match=ssl+certificate


which covers it, I think.

Best,

Mark
On 16 Jan 2008, at 01:42, Sivakatirswami wrote:



if I put

https://[EMAIL PROTECTED]:[EMAIL PROTECTED]/f.api/7522423

into my  browser I'll be asked to authenticate and the server spits  
back info we expect.


Now... if I put this into the msg in Rev:


put url (https://[EMAIL PROTECTED]:[EMAIL PROTECTED]/ 
f.api/7522423)


result:

error -Error with certificate at depth: 0  issuer   = /C=US/ 
O=Equifax/OU=Equifax Secure Certificate Authority  subject  = /C=US/ 
O=api.feedblitz.com/OU=GT65832592/OU=See www.geotrust.com/resources/ 
cps (c)07/OU=Domain Control Validated - QuickSSL Premium(R)/ 
CN=api.feedblitz.com  err 20:unable to get local issuer certificate


how do we do the https-certificate handshake from within a Rev app?



___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your  
subscription preferences:

http://lists.runrev.com/mailman/listinfo/use-revolution


___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Showing unsaved status for document-based windows

2008-01-15 Thread Kay C Lan
On Jan 14, 2008 2:15 AM, Stephen Barncard [EMAIL PROTECTED]
wrote:

I've filed a long standing bug report on this...


Would that be bug 5179, which I hope you'll be canceling now that you've
squashed it:-)
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


RE: Constructing and calling a handler as do

2008-01-15 Thread Randall Lee Reetz
Wow, i hate it when people like my ideas as much as i do... Makes you suspect.  
Anyway, ya there are lots of pitfalls that may happen when one falls off the 
path.  The problem with live code (scripts your scripts modify on the fly) are 
that none of us quite know exactly how any particular runtime interpreter 
works.  But if all you re doing is conastructing messages... You will usually 
be fine.  Of course the rest of your code might need to keep aware of your 
current dels (or get in the habit of deliborately resetting your dels to the 
defaults right after your use is complete)... The other thing i to remember not 
to choose dels that may be present already in the source parts you will be 
linking up.  Like others hve said, little niceties like double clicking to 
select a handler in the script editor may not work.  Also, maybe someone else 
kows the char length limit for var, costume prop, and handler names.

Have fun,

randall 

-Original Message-
From: Kay C Lan [EMAIL PROTECTED]
To: How to use Revolution use-revolution@lists.runrev.com
Sent: 1/15/2008 6:14 PM
Subject: Re: Constructing and calling a handler as do

On Jan 14, 2008 8:18 AM, Randall Lee Reetz [EMAIL PROTECTED] wrote:

 I use delimeters so that i can auto deconstruct (this is much slower if
 one has to filter for cap letters).


This is lightning bolt brilliant!

I've had the odd occasion where I've needed to be able to 'interpret' and
'manipulate' an bunch of object names and have usually resorted to coming up
with some kind of naming convention that forces a prefix and/or suffix to be
a fixed number of char long so I can search for 'char 1 to 3' (or 4 or 5
or.because looking for the offset of the char whose charToNum fell
between the range of 65 to 90 seemed more difficult to me that just going
with fixed length prefix/suffix) which typically resulted in names that
weren't as self evident as I'd like. To use an underscore, change the
itemDelimiter and search by item is so staring you in the face Rev chunk
obvious I can't believe I've spent so much time renaming things to fit my
ever-changing fixed width prefix/suffix system.

I'd like to try and blame Richard, for his excellent 'script style' bible,
but midWord capitalization for me dates back to the origin of HyperCard so
it's a habit that clearly blinded me to the advantages that could be
afforded by using a naming convention which ALSO incorporated taking
advantage of chunk expressions.

Randall, any tips, tricks or pitfalls to using this approach?
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Https: how to get Rev app certified

2008-01-15 Thread Andre Garzia
Aloha Swami,

the @ in the username needs to be replaced with %40, that is urlencode(@).

The error you got on rev is an ssl problem. Avoid it with:

libURLSetSSLVerification false

Om Shanti
andre

On 1/15/08, Sivakatirswami [EMAIL PROTECTED] wrote:

 if I put

 https://[EMAIL PROTECTED]:[EMAIL PROTECTED]/f.api/7522423

 into my  browser I'll be asked to authenticate and the server spits back
 info we expect.

 Now... if I put this into the msg in Rev:


 put url
 (https://[EMAIL PROTECTED]:[EMAIL PROTECTED]/f.api/7522423)

 result:

 error -Error with certificate at depth: 0  issuer   =
 /C=US/O=Equifax/OU=Equifax Secure Certificate Authority  subject  =
 /C=US/O=api.feedblitz.com/OU=GT65832592/OU=See
 www.geotrust.com/resources/cps (c)07/OU=Domain Control Validated -
 QuickSSL Premium(R)/CN=api.feedblitz.com  err 20:unable to get local
 issuer certificate

 how do we do the https-certificate handshake from within a Rev app?



 ___
 use-revolution mailing list
 use-revolution@lists.runrev.com
 Please visit this url to subscribe, unsubscribe and manage your subscription 
 preferences:
 http://lists.runrev.com/mailman/listinfo/use-revolution



-- 
http://www.andregarzia.com All We Do Is Code.
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Constructing and calling a handler as do

2008-01-15 Thread Björnke von Gierke
Although this does not work for handlers, for names of objects I  
always use space. that way I can  say for example:


put word 2 of the short name of button 3 -- autoName 12 -- 12

or:

clone button x
set the name of it to (the short name of button x  2) --  
originalName 2


Quite simple to write, read and edit per code...


On 16 Jan 2008, at 03:14, Kay C Lan wrote:

On Jan 14, 2008 8:18 AM, Randall Lee Reetz  
[EMAIL PROTECTED] wrote:


I use delimeters so that i can auto deconstruct (this is much  
slower if

one has to filter for cap letters).



This is lightning bolt brilliant!

I've had the odd occasion where I've needed to be able to  
'interpret' and
'manipulate' an bunch of object names and have usually resorted to  
coming up
with some kind of naming convention that forces a prefix and/or  
suffix to be
a fixed number of char long so I can search for 'char 1 to 3' (or 4  
or 5

or.because looking for the offset of the char whose charToNum fell
between the range of 65 to 90 seemed more difficult to me that just  
going
with fixed length prefix/suffix) which typically resulted in names  
that

weren't as self evident as I'd like. To use an underscore, change the
itemDelimiter and search by item is so staring you in the face Rev  
chunk
obvious I can't believe I've spent so much time renaming things to  
fit my

ever-changing fixed width prefix/suffix system.

I'd like to try and blame Richard, for his excellent 'script style'  
bible,
but midWord capitalization for me dates back to the origin of  
HyperCard so

it's a habit that clearly blinded me to the advantages that could be
afforded by using a naming convention which ALSO incorporated taking
advantage of chunk expressions.

Randall, any tips, tricks or pitfalls to using this approach?
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your  
subscription preferences:

http://lists.runrev.com/mailman/listinfo/use-revolution




--

official ChatRev page:
http://chatrev.bjoernke.com

Chat with other RunRev developers:
go stack URL http://homepage.mac.com/bvg/chatrev1.3.rev;

___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Constructing and calling a handler as do

2008-01-15 Thread Richard Gaskin

Kay C Lan wrote:

...midWord capitalization for me dates back to the origin of HyperCard...


Oh, it's much, much older than that, older than the Pascal that helped 
inspire it


--
 Richard Gaskin
 Managing Editor, revJournal
 ___
 Rev tips, tutorials and more: http://www.revJournal.com
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


[OT] SoCAl Linux Expo

2008-01-15 Thread Richard Gaskin

Anyone here going to this year's SCaLE?:

The sixth annual Southern California Linux Expo
To be held Friday, Saturday and Sunday, February 8-10, 2008
at the Westin Los Angeles Airport.

http://www.socallinuxexpo.org/

If so let me know.  I'm thinking of going

--
 Richard Gaskin
 Fourth World Media Corporation
 ___
 [EMAIL PROTECTED]   http://www.FourthWorld.com
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


RE: Constructing and calling a handler as do

2008-01-15 Thread Randall Lee Reetz
Anyone ever try to set a del to  or empty?

-Original Message-
From: Björnke von Gierke [EMAIL PROTECTED]
To: How to use Revolution use-revolution@lists.runrev.com
Sent: 1/15/2008 7:15 PM
Subject: Re: Constructing and calling a handler as do

Although this does not work for handlers, for names of objects I  
always use space. that way I can  say for example:

put word 2 of the short name of button 3 -- autoName 12 -- 12

or:

clone button x
set the name of it to (the short name of button x  2) --  
originalName 2

Quite simple to write, read and edit per code...


On 16 Jan 2008, at 03:14, Kay C Lan wrote:

 On Jan 14, 2008 8:18 AM, Randall Lee Reetz  
 [EMAIL PROTECTED] wrote:

 I use delimeters so that i can auto deconstruct (this is much  
 slower if
 one has to filter for cap letters).


 This is lightning bolt brilliant!

 I've had the odd occasion where I've needed to be able to  
 'interpret' and
 'manipulate' an bunch of object names and have usually resorted to  
 coming up
 with some kind of naming convention that forces a prefix and/or  
 suffix to be
 a fixed number of char long so I can search for 'char 1 to 3' (or 4  
 or 5
 or.because looking for the offset of the char whose charToNum fell
 between the range of 65 to 90 seemed more difficult to me that just  
 going
 with fixed length prefix/suffix) which typically resulted in names  
 that
 weren't as self evident as I'd like. To use an underscore, change the
 itemDelimiter and search by item is so staring you in the face Rev  
 chunk
 obvious I can't believe I've spent so much time renaming things to  
 fit my
 ever-changing fixed width prefix/suffix system.

 I'd like to try and blame Richard, for his excellent 'script style'  
 bible,
 but midWord capitalization for me dates back to the origin of  
 HyperCard so
 it's a habit that clearly blinded me to the advantages that could be
 afforded by using a naming convention which ALSO incorporated taking
 advantage of chunk expressions.

 Randall, any tips, tricks or pitfalls to using this approach?
 ___
 use-revolution mailing list
 use-revolution@lists.runrev.com
 Please visit this url to subscribe, unsubscribe and manage your  
 subscription preferences:
 http://lists.runrev.com/mailman/listinfo/use-revolution



-- 

official ChatRev page:
http://chatrev.bjoernke.com

Chat with other RunRev developers:
go stack URL http://homepage.mac.com/bvg/chatrev1.3.rev;

___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Many Cards Versus One Card and a List Field

2008-01-15 Thread Peter Alcibiades
I have to admit to not having been able to make Rev work as a storage and 
retrieval language and am getting close to giving up after a couple of weeks 
hard trying.  Its mostly the documentation probably.  It must be possible 
since people on the list are doing it, but there seems no way to find out how 
from the documentation. 

The problem is not storage.  Nor is it retrieval.  It is reporting.

Its a childishly simple problem.  There is a file with 15k records.  Tab 
delimited.  Each record has five fields and is of the form:

number  eg 123
description  eg Pen, Pencil
price eg 2.00
category eg AA, AB...
date eg  12/4/2008, 21/5/2008 (UK style)

We then have 30 fields, which are the combination of a category and a month.  
So for instance we need to look at each record, if and only if it has both AA 
in item 4 and /4/ in item 5,  then add the price item 3 to field AAApril.  If 
and only if it has both AA and /5/ then add it to AAMay, and so on.  6 
months, five categories = 30 fields..  

Its a five minute job in a spreadsheet, but its defeated me for a couple of 
weeks now in Rev.  

There must be a way of combining switch, break and if-then to do this.The 
different ways I've tried sometimes go into loops.  Sometimes they 
accumulate, as if case is leading it to retain previous totals and add new 
match totals to them.  Sometimes they put all zeros into the fields.  
Sometimes half the fields go blank when I know there are matches.  Sometimes 
it records half of the AAs, or a quarter.   Sometimes it works with some of 
the months, or some of the categories. 

What is also deeply discouraging is that even can one get through this, there 
will be the problem of how to make Rev print it in Linux.  This seems 
insuperable.  It doesn't see the installed printers.  Like it doesn't see the 
installed fonts.  No idea why, everything else does.  Maybe going out to the 
shell and using a2p will work?  Maybe a different distro than debian?   But 
this could well be another black hole

Peter
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Many Cards Versus One Card and a List Field

2008-01-15 Thread Joe Lewis Wilkins

Peter,

I'm not sure this will work for you, but it worked for me with HC. I  
designed stacks that could be used for printing reports and then  
stored data in those stacks when I needed to print new data; the  
action stacks, used to acquire and change/revise new data would  
pick up the data from these stacks on start up, putting it into  
global variables. Then at the end of the day or at the completion of  
the work with these variables, they would be redeposited into the  
reports stacks for printing.


I realize that this is very general, but perhaps you can see the  
approach and adapt it to your specific set of circumstances.  
Admittedly, I did convert some of these activities to XCMDs with  
Compile-It for speed reasons, but that was because I was dealing with  
SE30 Macs at the time. When we got around to using later generation,  
much faster Macs, in several instances I reverted back to the  
original HyperTalk handlers with no noticeable decrease in speed.


With the current machines and memory capacity, this should easily  
work with Rev. Of course one of the reasons I did as I did was  
because HC auto saved stuff, so I needed to keep everything in  
globals; something that was a bit dangerous, but HC was so rock solid  
that it was very, very seldom that we lost anything due to a crash of  
some sort. With Rev that might be a concern. Originally, when we were  
using 400k floppy disks to back-up data, the 2,000+ accounts were  
split into 13 different account stacks. Eventually, once we had hard  
drives and removable cartridges for back-up, they were all assembled  
into a single stack.


Just some thoughts. HTH,

Joe Wilkins

On Jan 15, 2008, at 10:47 PM, Peter Alcibiades wrote:

I have to admit to not having been able to make Rev work as a  
storage and
retrieval language and am getting close to giving up after a couple  
of weeks
hard trying.  Its mostly the documentation probably.  It must be  
possible
since people on the list are doing it, but there seems no way to  
find out how

from the documentation.

The problem is not storage.  Nor is it retrieval.  It is reporting.

Its a childishly simple problem.  There is a file with 15k  
records.  Tab

delimited.  Each record has five fields and is of the form:

number  eg 123
description  eg Pen, Pencil
price eg 2.00
category eg AA, AB...
date eg  12/4/2008, 21/5/2008 (UK style)

We then have 30 fields, which are the combination of a category and  
a month.
So for instance we need to look at each record, if and only if it  
has both AA
in item 4 and /4/ in item 5,  then add the price item 3 to field  
AAApril.  If

and only if it has both AA and /5/ then add it to AAMay, and so on.  6
months, five categories = 30 fields..

Its a five minute job in a spreadsheet, but its defeated me for a  
couple of

weeks now in Rev.

There must be a way of combining switch, break and if-then to do  
this.The

different ways I've tried sometimes go into loops.  Sometimes they
accumulate, as if case is leading it to retain previous totals and  
add new

match totals to them.  Sometimes they put all zeros into the fields.
Sometimes half the fields go blank when I know there are matches.   
Sometimes
it records half of the AAs, or a quarter.   Sometimes it works with  
some of

the months, or some of the categories.

What is also deeply discouraging is that even can one get through  
this, there

will be the problem of how to make Rev print it in Linux.  This seems
insuperable.  It doesn't see the installed printers.  Like it  
doesn't see the
installed fonts.  No idea why, everything else does.  Maybe going  
out to the
shell and using a2p will work?  Maybe a different distro than  
debian?   But

this could well be another black hole

Peter


___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Re: Constructing and calling a handler as do

2008-01-15 Thread Kay C Lan
On Jan 16, 2008 11:15 AM, Björnke von Gierke [EMAIL PROTECTED] wrote:

 Although this does not work for handlers,


Yes, I appreciate all that, and I've definitely done something similar on
many occasions, but what I like about Randall's approach is that it can work
for handlers and custom properties:-) Which brings and added bonus.

My gray matter definitely doesn't work like it use to and I've since found
it very very advantageous to name things exactly the same to avoid confusion
- so a mySQL column might be named the same as a field or custom property;
or fields may contain scripts with the name of the field matching the name
of the handler. mySQL (and probably other dbs) doesn't allow multi-word
column names, plus there are other traps if you use multi-word names in Rev,
like if you forget to quote.

Basically what I like most about Randall's approach is the use of 'item'.
Myself, and clearly others, have successfully used prefixes, char and word,
but have not extended the concept to  'item'.
___
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution