Re: Bypass Dirty Save
On 21/06/2006, at 17:44, Scott Rossi wrote: Is there an incantation I can use to bypass/remove/kill the Do you want to save... dialog that the IDE throws up even when nothing has changed on a stack? Even more fabulous, is there something which deals with the deeply stupid Really the remove the stack file ... from memory? Any changes made since saving will be lost... when _zero_ changes have been made since the last save? David Thanks Regards, Scott Rossi ___ 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: First record status inconsistent using SQLite
On 28/05/2006, at 1:24, Devin Asay wrote: OTOH, documentation errors are easy to fix. I recently stumbled across a minor doco error in one of the revDB functions and submitted it to BZ. Lo and behold it showed up as fixed in the next 2.7.x release. You should submit it for sure. I would even vote for it because I've run into this before and was puzzled until I figured out what was going on. #3647 regards David ___ 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: Directory Walker Conundrum
On 29/05/2006, at 9:52, Alex Tweedly wrote: change delete line 1 of tDirList to something like filter tDirList without .. This one works anyway, and also does not suffer from a couple of other bugs which exist in Ken's older version, to do with permissions and infinite recursion in OS X and possibly other 'nixes. -- This recursive function expects a folder path. -- It returns a file list for that folder and for each -- sub-folder it contains (pre-order search) -- Invisible files are excluded. function walkDir dirPath if dirPath contains //Network then return empty end if put empty into tList set defaultFolder to dirPath -- Dar's discovery. Check permissions were ok get the Result if it is not empty then return empty end if put the long files into fList repeat for each line fLine in fList if char 1 of fLine . then -- Change this line to determine what components are returned put dirPath / item 1 of fLine comma item -2 to -1 of fLine return after tList end if end repeat get the folders repeat for each line x in it if char 1 of x . then put walkDir(dirPath / x) after tList end if end repeat return tList end walkDir regards David ___ 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
First record status inconsistent using SQLite
Using Rev 2.7.1 with AltSqlite/SQLite 3, I found inconsistent behaviour (as I see it) with the function revdb_isbof alias RevCurrentRecordIsFirst. Let us assume you find a record set comprising one record. -- revdb_isbof will be true (expected) -- revdb_iseof will be false (not expected) This is inconsistent. Let us now assume you find a record set comprising two records -- revdb_isbof will be true (tick) -- revdb_iseof will be false (tick) Now go to the Next (last) record -- revdb_isbof will be false (tick) -- revdb_iseof will be false (unexpected) Now, go back to the first record -- revdb_isbof will be false (unexpected, and inconsistent with our starting state) -- revdb_iseof will be false (tick) So, the functions purporting to state whether you are at the first or last record in a cursor will become true only when you attempt to go _past_ the first or last record, rather than when you are at it. However, the First Record function inconsistently returns true when you first obtain the record set but not thereafter for the same record position. Is this a Rev bug, a SQLite bug or an AltSQLite bug, or expected (unexpectedly)? regards David ___ 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: First record status inconsistent using SQLite
On 26/05/2006, at 19:02, Jan Schenkel wrote: I remember an old discussion about when exactly you were at the end of a cursor: on the last record, or after you call revdb_movenext on the last record? FoxPro seemed to think that the EOF() was _after_ the last record, not on it. I do not particularly mind which standard is adopted; rather, I am bothered by the fact that _isbof acts inconsistently and the RR function names CurrentRecordIsFirst and CurrentRecordIsLast appear to take one position on the above question in their names but to behave otherwise. Posting here was a bit of a scattergun in that I expect that it will be read by all who might have an answer or be in a position to deny that the problem lies with them. If I can get that resolved, then I can post the bug in the right place :-) regards David ___ 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: First record status inconsistent using SQLite
On 27/05/2006, at 12:30, Kay C Lan wrote: ... ...BUT once you move away from these, moving back to them using 'previous' or 'next' will not result in them be recognised, you need to try an move past them, then they'll be recognised. I recognise it but it leaves me thinking that the old names revdb_isbof and revdb_iseof were more accurate descriptors than the new synonymsrevCurrentRecordIsFirst or revCurrentRecordIsLast. They could be changed to revNoPreviousRecord and revNoNextRecord when they would fit their dictionary descriptions. I will BugZilla it but somehow I do not see this piece of documentation semantics hitting a high on their ToDo list. It will just have to be rediscovered by new users as they reach it. cheers David HTH. ___ 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: Delete item won't work in Repeat for each loop
On 25/05/2006, at 7:52, Ian McKnight wrote: I think I see whats happening. I'm not altering the original data in theImportedData variable rarther the copy of the data thats in the loop variable. So unless I store this -- I lose it. In fact, if you do alter importedData itself rather then theRecord in your Repeat For Each loop then the loop will either crash or corrupt importedData because the loop pointers will be out of sync with the data through which it is stepping. RFE is a very different beast from a standard i = j to k loop. regards David ___ 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: [OT] Routerless Network?
On 10/05/2006, at 9:15, Mark Schonewille wrote: FYI, it is not necessary to use VPC for that. On the PC side, I have Client for MS Networks installed, together with the correct ethernet drivers. I have also a TCP/IP protocol defined for that Ethernet driver, with the correct IP number and subnet mask. Then I turned on file sharing and set the properties of an entire hard disk partition such as to share it with the local network. On the Mac, I configured TCP/IP manually and turned on Windows sharing. Indeed, either should work, and Scott's O'Reilly reference shows the flexibility. Personally i would define the IP addresses (like Mark) rather than using self-assigned addresses, and would share the PC and connect from the Mac end. You do not have to share both. However, Scott's last post on his lack of success on something which should work readily leaves me at a bit of a loss to troubleshoot it remotely and without information on machines, versions, settings and so on. Probably quicker to use iPodNet or thumbDriveNet or connect the PC to the airport. I was optimistic earlier when I said Macs three to five years old should do the auto-crossover trick. I think it might only have come in with the PB17 three years ago and then spread to later models. regards David ___ 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 manage large SQL data sets - reply 2
On 06/05/2006, at 4:22, [EMAIL PROTECTED] [EMAIL PROTECTED] wrote: Ruslan wrote: RevDataFromQuery -- is not good choice in your case. it load everything into string of result You need to use RevQueryDatabase == The successful use of this command returns an integer, not the data. How do I get the data into a table list on the card? The integer is your cursor reference which you then use while moving back and forth through the record list. The list itself is not held in memory so you can handle any size of data set. Read about it in the documentation, Mark. Look up revQueryDatabase in the Dictionary, and also revMoveToNextRecord to get a good set of links. Look up the User Guide in Section 8 on database use to understand use of cursors. In general, just type database into the Dictionary search field or into the search function in your PDF reader. Ruslan is the progenitor of a fast database product, Valentina, which competes with MySQL and others, so he is being courteous in helping you with basic SQL. Some self-help might also be appropriate when the documentation is there, integrated with the product :-) regards David Thanx, Mark ___ 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: test.gz problem
On 21/04/2006, at 21:50, Chipp Walters wrote: I don't see any test.gz file on my system anywhere. altSQLite in the demo does create some sample databases, but they aren't named 'test.gz' ?? This file is created either by altSQLite directly or by the demo stack. In zipped form its contents are: 1f 8b 08 00 00 00 00 00 00 03 03 00 00 00 00 00 00 00 00 00 and unzipped it is empty. I assumed it was part of your licencing. Nothing else created it. David As you know, test.gz refers to a gzipped file. Are you gzipping anything? best, Chipp Alex Shaw wrote: hi Experiencing a small problem with a project I've installed on a client's system. The network is just basic shared access thru a standard windows network. The app was developed with rev 2.6.1 storing info using the great altsqlite2 plugin (saving sl3 for the next version :) Users have a shortcut to the network drive where my application sits, it apppears admins can run the app fine but not general users.. From their system administrator: I have just finished investigating the problems that CAAPS are having and I think I have narrowed the problem down to a file called C:\test.gz. Basically when I logged into the PC as a standard user, it fails to create the file. After I modified the users permission level to Power User, the application worked fine. The filemon logs that I have show the failure of the standard user to create and then access the file, and the success of the power user to create and access the file. Let me know if you would like the logs emailed. I know my code isn't creating this file so i'm wondering if this file (test.gz) is related to altsqlite? What is it for Is it needed? If so, can you control where it's created? I noticed on the mac this file is created (called c/\test.gz) in the same folder as the main exe, can this behaviour be replicated on windows? I also noticed running my app from a read-only medium (DVD) worked on windows but would not work on mac (ie. only mac windows standalones tested not linux). Any suggestions? regards alex ___ 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: PIM
Mikey I have one in HyperCard and need to convert it to Rev before I can buy an Intel Mac. I have the core design for the Rev version but not a line of code. The old one was first developed in 1989 and successively refined over the years, now being in V8.30 of 2003. It is one of three files I _must_ back up to survive fire or theft, because its journalling functions mean that much of my private and business life is retained there. So, I do not have what you want but if you are thinking of building one then I am happy to discuss needs and implementations off list. regards David On 20/04/2006, at 23:57, Mikey wrote: WAAAY back in the day I used to use Connections, which was a PIM product that ran in HC. I'm incredibly unhappy with all the PIM's I've used since, so I'm thinking of killing myself cranking one out. Do we have an RR based PIM somewhere? -- On the first day, God created the heavens and the Earth On the second day, God created the oceans. On the third day, God put the animals on hold for a few hours, and did a little diving. And God said, This is good. ___ 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
Unexpected problem with Forum
When I wrote in favour of a Forum late last year: Subject: Re: Recent Development on the Use-LIst Date: 16 December 2005 10:52:27 GMT+11:00 among my arguments were that: Secondly, a single button brings up in tree format every post made since you yourself last checked, and no others. Alas, this forum does not. Sure, it brings up the topics on which posts were most recently made, but it does not bring up a tree list of recent posts made so you can click on one to go directly to that comment. Further, when you click on a thread on which there have been posts since you last looked, it puts you at the top of the thread rather than on the first new post, so you have to rely on memory to find whereabouts you should start reading. These two lacks are clumsy, wasteful of my time and disappointing. Is there some preference I can set which will make the Forum behave in a reasonable manner? If not, then the Forum software needs reconfiguration or else, if the behaviour I describe is beyond its capabilities, then it needs a platform shift. Having argued in favour of a Forum based on experience with other systems, I can not use it in its present form :-( regards David ___ 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: Custom Properties
Thanks for the idea, Devin. I had looked at custom props previously, sufficiently to know what they do but without keeping them in mind for real applications. You have just simplified a database system I am writing, where I employ what appears to the user to be modeless operation, tracking the state internally to decide whether create/update/delete/undo are logical continuations and setting button states accordingly. Now I will write this logic in one place rather than scattered about the buttons which are repeated across many data screens. Consider happy thoughts to be floating in your general direction and enjoy your day :-) cheers David On 13/04/2006, at 7:26, Devin Asay wrote: On Apr 12, 2006, at 11:44 AM, Thomas McGrath III wrote: Does anyone have any examples on the get/setProps in real usage? I have been using custom props but not the setProp etc. I would love some more insightful ideas on it's usage. The way I use it is much more pedestrian than the Marks'. For me it's a really easy way to make sure my interface objects get set to the proper states. For example, let's say I want to toggle between an 'editable' and 'noneditable' mode for a text editor: setProp editMode pMode if pMode then enable button Save enable button TextColor set the lockText of fld myfld to true set the traversalOn of fld myFld to true else disable button Save disable button TextColor set the lockText of fld myfld to false set the traversalOn of fld myFld to false end if pass editMode -- the docs say you have to explicitly pass it to have it set the prop end editMode Anyway, this is a crude example, but illustrates how it's been most useful to me. There may be several events in my program that could trigger a change in edit mode for this field, but in each case all I'd have to do would be to set the editMode of cd editor to true ## or false Devin Devin Asay Humanities Technology and Research Support Center Brigham Young University ___ 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: Custom Properties
On 13/04/2006, at 7:55, David Vaughan wrote: ...I had looked at custom props previously ... I meant to say GetProp/SetProp not custom props. One always uses the latter. ___ 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: Custom Properties
On 13/04/2006, at 8:11, J. Landman Gay wrote: Now I'm curious what's the advantage, if any, of using a setProp handler over a standard command handler? This isn't just to you, Devin, but to anyone who uses these regularly. In my instance I am already setting a property or two so using setProp fits in. Generally, I use commands and functions to do things whereas properties are about states. I have never felt very comfortable about using a command to change a state (or collection thereof) rather than to process information, if you go along with the distinction. The fact that we also use custom properties for data can distract from their state-nature. regards David ___ 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: Deselecting a line
On 13/04/2006, at 8:47, Graham Samuel wrote: Thanks to Klaus, Devin and Ken for their replies: both Klaus and Ken pointed out that I need to set the hilitedLines of the field to zero or empty. I hadn't realised that I was necessarily using a list field, but in fact I am, since I see that it means that a single click hilites a whole line, which is what I need for file selections. I simply wanted to deny the user the chance to make a selection in one particular instance (when they hadn't signed up to fully use the program). I guess I was expecting there to be an 'unselect' command. Anyway thanks again Graham Graham Am I right to read into the tone of your reply that you feel as though the problem is unsolved, or is it just grievous disappointment that there is no unSelect command? :-) If the former, a mouseDown handler which zeroes the hilitedLines property will leave only the slightest flicker while visible selection does not happen. regards David -- - Graham Samuel / The Living Fossil Co. / UK and France ___ 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: bugs
On 09/04/2006, at 17:44, Geoff Canyon wrote: I think you and I are agreed: the software itself is bug free. There seems to be debate over whether a bug in the code's context -- requirements, the engine, the OS, etc. -- qualifies as a bug in the software. I think it doesn't, but I can understand the point of people who think that's a useless distinction. In fact I'm likely to agree, but I still maintain that the code itself is bug free ;-) It's funny that this all started as a joke, but I'm actually experiencing this as we speak: the windowshade control I released. I think the code is clean, but some people are having troubles with it. I can't replicate their errors, and there are others using it without troubles as well. Is there a context issue? Am I wrong that the code is clean? I'm stuck trying to figure that out. sigh As for my posts referring to your code, Geoff, I hoped I had made it sufficiently clear already that I was using it as a jumping off point to elaborate on the issues of what is a bug and differences in user experiences, and nothing at all to do with your code which I understood and accepted in the context in which you presented it. cheers David As far as my programming prowess is concerned, I hope it takes more than one line of code to judge that! You are too modest g LOL regards, Geoff ___ 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: bugs
On 10/04/2006, at 1:56, David Burgun wrote: The real problem here is if the marketing department get ahold of it, they will make it into a feature ! e.g. this Application is supposed to tell you the time in the USA, it's so cool you don't have to figure it out for yourself, thereby cutting out the rest of the world from the product. Eventually when the US market slows down, they add a preference to allow the time to be shown in local time, call it an upgrade and charge everyone for the privilege of fixing the bug! How many times you seen that happen??? :-) All the Best Dave ___ 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: bugs
On 10/04/2006, at 2:37, Geoff Canyon wrote: The question is this: what do you think is the upper limit for _completely_ bug-free code? Was your code bug-free the first time you wrote it, no typographic errors or any other changes? Do not answer that because it is only a lead-in to the next comment, that the upper limit is for code which can be made bug free with reasonable economic effort, and that is in my view controlled by the number of people involved. Your script worked well because you (I presume) conceived the requirement, the design and the implementation and it was self- documenting in that the descriptive text carries import to you which it may not for other people. I take it for the moment that you are also the user. To the extent that you introduce new actors at any one of those five roles, you will increase the probability of bugs both arising and persisting. I have some small to complex stacks which to the best of my knowledge are bug free, but no-one else uses them, they are substantially undocumented, and the design and usage pattern are perfectly matched, both being through me. I have little doubt that use by other people might expose real bugs and absolutely no doubt whatsoever that those other users would raise as bugs points which I considered to be obvious design choices or usages. I have also a fairly complex stack with at least one obvious bug but I know about it and work around it because that costs me less effort, even on a regular basis, than investing in fixing that stack compared with my other development priorities which are themselves way below my other life priorities (reiterating for those who have not read it before that I do not develop software to order nor for product). Eventually, it will irritate me enough and I will have the spare time so I will fix it. The last part was a bit of a digression. The main answer is that bugs arise less from code size than from the count of actors in the five steps from concept to use. A sufficiently complex project conceived, developed and used by a single person will merely not be finished while the development bugs are being ironed out. :-) cheers David ___ 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: bugs
I forgot to mention the sixth actor, although alluding to it in my very first line below: inverse time. David On 10/04/2006, at 10:21, David Vaughan wrote: On 10/04/2006, at 2:37, Geoff Canyon wrote: The question is this: what do you think is the upper limit for _completely_ bug-free code? Was your code bug-free the first time you wrote it, no typographic errors or any other changes? Do not answer that because it is only a lead-in to the next comment, that the upper limit is for code which can be made bug free with reasonable economic effort, and that is in my view controlled by the number of people involved. Your script worked well because you (I presume) conceived the requirement, the design and the implementation and it was self- documenting in that the descriptive text carries import to you which it may not for other people. I take it for the moment that you are also the user. To the extent that you introduce new actors at any one of those five roles, you will increase the probability of bugs both arising and persisting. I have some small to complex stacks which to the best of my knowledge are bug free, but no-one else uses them, they are substantially undocumented, and the design and usage pattern are perfectly matched, both being through me. I have little doubt that use by other people might expose real bugs and absolutely no doubt whatsoever that those other users would raise as bugs points which I considered to be obvious design choices or usages. I have also a fairly complex stack with at least one obvious bug but I know about it and work around it because that costs me less effort, even on a regular basis, than investing in fixing that stack compared with my other development priorities which are themselves way below my other life priorities (reiterating for those who have not read it before that I do not develop software to order nor for product). Eventually, it will irritate me enough and I will have the spare time so I will fix it. The last part was a bit of a digression. The main answer is that bugs arise less from code size than from the count of actors in the five steps from concept to use. A sufficiently complex project conceived, developed and used by a single person will merely not be finished while the development bugs are being ironed out. :-) cheers David ___ 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: bugs
On 08/04/2006, at 16:36, Geoff Canyon [EMAIL PROTECTED] wrote: So tell me what could go wrong? ;-) You are limiting yourself to the code, where bugs can have the forms of user requirements, specification and documentation as well as coding. In this case, the user may have wanted to know the date in long form ;-) However, your code snippet as written does indeed have a bug. If I run it here, I see the answer 4/8/06 which I consider an absurd answer and very clearly a bug. In Australia, it is not yet August. cheers David regards, Geoff ___ 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: bugs
So tell me what could go wrong? ;-) I realised while cooking the salmon this evening (crocodile being off the menu) that Geoff had inadvertently provided a wonderful case study on bugs. Any link to Geoff in the following is purely coincidental and nothing to do with him at all :-) Once upon a time, an aspiring programmer wrote: on mouseUp -- display the date answer the date with OK end mouseUp and released it as shareware. His American audience loved it. He received five star ratings on Versiontracker and plaudits on download.com, so impressed were users at being able to load an application, click a single button and see the date. Most impressive of all, it looked bug free. Then, some old bloke from Australia gave a negative review, declaring the code contained a bug in that the information 4/8/06 for 8 April was simply wrong. A Frenchman wrote to say that the format should be 060408. Both complained that this was a clear-cut bug about which the developer should have known before releasing the software with the documentation Displays the date. Relying on precedents in Gutnick v. Dow Jones, they observed that even though the software was uploaded in America to an American server, it was published in Australia and France where it was read, and therefore subject to those foreign laws of fitness for purpose, with which any judge in those jurisdictions would agree ;-) Therefore, we have an indisputable bug in even this simple application. Now that we know that no code is bug-free, two issues arise, one of morality and one of money. Has the programmer committed an Immoral Act by publishing this software with a bug about which those foreign users believe he should surely have known? What commercial decision should the programmer make? Add 33% more lines to the code (set the useSystemDate to true) just to cater for foreign system dates, or add one word to the documentation so that it says Displays the U.S. date? One action will cost more than the other, and either will cost more than doing nothing and restricting his target market. Perhaps he should focus his development energies on his upcoming product Displays the time which he expects to sell at twice the price? So, it appears that - bugs happen, even when they are sincerely believed not to exist and with the best will in the world, and testing which seemed comprehensive at the time; - money matters in commercial decisions without greed per se being a factor; - the morality of the developer is not questioned by the discovered bug. Perhaps RunRev has more bugs than it should have. That is something I do not know, but Lynn may on industry benchmarks. Regardless, bugginess is a relative question. regards David ___ 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: bugs
On 09/04/2006, at 6:23, Garrett Hylltun wrote: The thing is, that is not a bug. The programmer did not make any error in his code at all. The code works as it was intended. You could also claim that if a user in Japan downloaded the program and could not read it because it was in English and not Japanese, that he could say that the program has a bug. Or a Linux user downloaded the Windows version, it would not run, so it must be a bug. Your scenario is lacking completely, and rather a petty attempt to push your belief. Garrett Thank you for the ad hominem attack in your last line. Mark has already disposed of your prior argument that there is no bug (programmer's intention) so I will not elaborate on his concise statement. For your further enlightenment here is a set categories of bugs: - Requirements defects - Design defects - Source code defects - User documentation defects - Bad fixes, or secondary defects found in repairs to prior defects [source: Capers-Jones, Applied Software Measurement] Your attempt to dismiss the basis of the single coding example I used seems rather an attempt to avoid the three conclusions I drew. - bugs happen, even when they are sincerely believed not to exist and with the best will in the world, and testing which seemed comprehensive at the time; - money matters in commercial decisions without greed per se being a factor; - the morality of the developer is not questioned by the discovered bug. I will not discuss these further here with you because I see no point to it. I expect that great majority of developers would take these points as self-evident. If you wish to evangelise your position of bug-free heaven where commerce does not exist, write to me privately. Better still, write to someone else. Where you have an actual bug of any category, post it to support or with Revzilla David -Garrett ___ 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: bugs
On 09/04/2006, at 9:26, Garrett Hylltun wrote: The intent of the code is far too obvious for you or anyone else here to say any different. Ah, the sweetness of certainty; the certainty of not knowing. You're just upset because your belief that bug free is impossible was shown to be wrong. Mark did not put that position so far as I recall. Neither did I. You may recall I have consistently referred to questions of scale. Either attack the correct person, or stop putting up straw men and go back to your contributions to this list. David -Garrett ___ 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: [Ticket#: 2006040510000641] Re: [OT] Articles to read
On 07/04/2006, at 15:46, Garrett Hylltun [EMAIL PROTECTED] wrote: about what David Vaughan wrote: and I have replied off-list because this list is about software and, as Garrett himself says, he has made himself and his assumptions, not RunRev, the subject of this particular rant. regards David ___ 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: [OT] why eating your own haggis is not too bad for a companybased in Scotland
On 08/04/2006, at 0:50, Scott Kane [EMAIL PROTECTED] wrote: I wonder if it beats roo meat or crocodile? I've had both and they were excellent. Crocodile is excellent, better than kangaroo and emu although there is nothing wrong with kangaroo. I think emu can be a bit tough. The kangaroo and the emu are on Australia's coat of arms, so we can at least claim the distinction that we eat out own national emblems. cheers David ___ 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: [Ticket#: 2006040510000641] Re: [OT] Articles to read
On 08/04/2006, at 8:48, Ken Ray [EMAIL PROTECTED]wrote: Oh, Yeah? Well WE had to walk 35 miles through a raging snowstorm with only flipflops and snorkles while juggling crazed rabid wombats and breathing sulphur just to LOOK at a cardboard computer! ;-) Ken Ray Now, now Ken, you know that is hard to believe. We do not have rabies here in wombat's own country. David David ___ 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: [Ticket#: 2006040510000641] Re: [OT] Articles to read
On 08/04/2006, at 0:50, David Burgun [EMAIL PROTECTED] wrote: One way of putting it is that the boundaries of capability have been pushed over the years while the rise in bugs has been disproportionately low. Over what years are you talking about? I really can't see this, for instance: When I first started in programming we used assembler on Mini- Computers.. Back then, programmers used to get paid a bonus for shipping bug free code, that bonus would decrease as the bug count increased. It was even possible to go into negative bonus which would be subtracted from bonus of the next project. Sounds a fine idea but alas you are off my point. I understand QA processes very well. Your mini-computer/assembler example is inevitably of a simpler system compared with those one can readily create today in languages such as Rev. Yes, assembler programming is complex (been there, done that) but the delivered functionality of a 3GL or later language is light years beyond what you and I were doing with kerosene-powered computers and rice-paper Hollerith cards. Complexity and errors per function point rise with the measurable size of the software whereas small, simple applications are simple to make relatively bug free. Despite that, the rate of errors per function point declines with more powerful languages, and those languages enable the delivery of applications of a complexity which could not reasonably be done thirty years ago. Hence my point that capabilities have extended at a disproportionately low error rate. Simple, and well established from industry benchmarks in at least the last twenty five years. When I first started of the Mac, the software was must more robust and bug free. Not in my experience :-) As Richard said elsewhere, perhaps my usage and environment exposed bugs you did not see, and now our positions are reversed. Which brings me to Bob Warren's comment about ignoring bugs. I promise faithfully I do not ignore them, I just do not encounter significant bugs in my use of the IDE on OS X 10.4.5 with a zillion other applications running. I can not comment on Linux. When I find what I think is a bug I start by searching my own actions, maybe ask this list for help, see if someone else has it on Bugzilla and if not then I will raise it thanks to Ken's Revzilla interface. I have no current bugs in Bugzilla. All the Best Dave and David ___ 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: [Ticket#: 2006040510000641] Re: [OT] Articles to read
On 07/04/2006, at 10:25, Garrett Hylltun [EMAIL PROTECTED] wrote: What it comes down to is money. Yes, the cost and benefit analysis of which Richard spoke. I'm sorry, but my expectations of software is higher. I get so tired of hearing B.S. and excuses as to why software isn't or can't be bug free. Software is a creative product of staggering complexity, one whose reliability has increased enormously over the years. One way of putting it is that the boundaries of capability have been pushed over the years while the rise in bugs has been disproportionately low. I can accept bugs that slip by undetected Look at the work being put in by others on the list right now, illustrating how hard it can be to define a bug. As I have said to you before, without a causal definition, the bug can not be fixed. Would you like to contribute to the effort, perhaps, rather than lambasting the work of others? Consider it a question of ethical behaviour :-) How can someone sleep at night knowing they've release software with bugs in it? Don't you feel guilty about it? My morals and virtues are not for sale. If I can't do the job right, then I'm not doing the job at all! Why do you develop software, Garrett, since you have just said you will never do it? Or is it that you have no commercial software product and thus avoid the discovery of many bugs? David ___ 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: OT: Apple at 30 - My Piece of the Big Fruit
On 31/03/2006, at 8:28, Robert Brenstein [EMAIL PROTECTED] wrote: We had Apple III (yes, the ill-fated 3 not 2) in the p-chem lab and nobody knew what to do with it, so I got a free rein in using it. That was a few years before Lisa and Macs. The Mac did not appear in Australia until 1985. We opened our first company in 1984 and were handed the Lisa, so after playing with that I was pretty disappointed with the Mac. I avoided it until Multifinder arrived, then, being the technical arm of our company, I grabbed an SE/30 while the others were using SE II and started on HyperCard. One of our clients, a partner at a medium accounting firm, for years drafted all his documents on a Mac Plus using MacPaint (yes, Paint, not Write) before handing them to his PA to type up. He just loved the ease of use :-) When in the mid-90s the huge mining company by which I was then employed decided to standardise on Windows PCs, I had such a wealth of software which was now vital to the analysis and modelling work I did that I alone was allowed to hang on to my Mac and just connect into their network with SoftPC and later VirtualPC. Despite the gloomy prognostications of my good friends at the time, Apple revived and since 2000 my very small business has been supported very well by our all-Apple computing power (portables, XServe, wireless and that most important hard disk backup tool, iPod :-) ) regardless of what our clients use. If they can just keep going another thirty years then I should be sufficiently dead not to worry about their third term ;-) cheers David ___ 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
Bugs bunnies
I would much rather have 75% of the functionality with 5% bugs, than 100% of the functionality with 25% bugs! Good thought, I thought, but what if RunRev could not target quite that well? What if there were 77% of the functionality with, alas, 6% bugs, or 55% functionality with 1% bugs? Would either of those be acceptable? Fortunately, I have a solution to this conundrum and expect soon to become very rich :-) I propose that all interested parties complete the following simple exercise and send the results to me. For every percentage of functionality between 50 and 100 and every bug percentage from 25 to 0, rate each of the 1326 combinations on a desirability scale from 0 (min) to 9 (max). From this I will be able to derive a mathematical function, probably polynomial, which will describe to RunRev the average risk profile of their user base. Oh, it is also essential that you define accurately for me what constitutes a percentage of functionality, or what is a percentage of bugs. Also, what punishment should we inflict if a fug or bunction is accidentally missed? If your point is that, generally speaking, you prefer reliability to features then welcome to a diverse community, You may or may not find yourself in the tail of a Bell curve at the far end of which is a set of users devoted to cutting edge functionality at the cost of several work-arounds and in the middle of which is a large group of people who use the product with varying levels of delight or discomfort. Uncomfortable people exist at both ends of the scale, not only on the side you personally inhabit. This seething mass of desires and groans is what RunRev happily call a market. The weekend will be here soon; then they might like to have a Scotch :-D cheers David Post Script: I stripped the name of the person who originated the quotation above because they are undoubtedly frustrated by a problem which they currently are unable to get around. I am commenting on the problems involved in simple expressions of needs. ___ 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: Transcript and Dot Notation
People, this is not cool. Sleep time. cheers David ___ 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: On the Democratic Operation of Bugzilla
On 26/02/2006, at 0:50, Sarah Reichelt [EMAIL PROTECTED] wrote: snip To digress slightly, I think the reason Rev appears to have so many bugs is because it is so versatile. We all use Rev in different ways to do widely different projects. I ignore some bugs because I never do the things they refer to. Others find the same bugs to be project blockers. Then again, some people use Rev in a way that the development team never imagined. That's great, but it means they will be the first to strike bugs in those areas. By comparison, testing a single-use application like a word-processor should be simple, but they still crash :-) Very true. Rev is a complex application. The productive efficiency of writing it in itself, as it were, should not fool anyone into believing otherwise. I wonder is the Rev team doing itself a disservice by letting all Rev users access the bug reports? While most people seem to value the chance to point out problems and influence future versions, some people regard a public bug list as an admission of failure. Maybe it would be better to restrict bugzilla to members of the improve-rev list or make it by invitation only. Perhaps rather than restricting it by fiat, RR could make access to the bug list voluntary, just as it allows switching on access to this list or doing so in digest or e-mail form. If you sign up then you also receive notifications of changes to the bug list [optionally Selected or All], the intention being to keep you actively involved while you continue your interest but shutting the list off from casual access. Sign-up would also be a moderated event. Thus, engage those who are interested (and allow them more votes) with full information available, still open in principle to anyone. Meanwhile, Rev could also provide a Problem report option under the Help menu where you did not have access directly to the bug list but had the opportunity to enter a problem, rate it on its own (with reasons), and have some lookup of related problems (based on selected category or on key terms) so that the user could also say their problem is the same as or like or unlike others which from their terms appear to be related. Thus, serious simplification with information concealment while still allowing free report. My general idea is to retain for all the ability to report to the real list even if that list remains behind the scenes, allow the simplest and easiest access for anyone to do so, and to engage more effectively by interaction the users motivated to provide comparative voting rather than one-off voting. Give me some critique and I will try making an enhancement proposal. These are speculative thoughts on my part. Just a few random thoughts, Sarah regards David ___ 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: On the Democratic Operation of Bugzilla
On 25/02/2006, Garrett Hylltun [EMAIL PROTECTED] and Gregory Lypny [EMAIL PROTECTED] wrote stuff. Sorry to others for some repetitious elements in here but I see a couple of basic themes in the offerings from Garrett and Gregory (principally the former) which I wish to answer. My credentials for so doing include not only the usual geological ages in and around software but particularly more than ten years spent observing or intervening in large scale projects which were off the rails and subject to commercial dispute, always involving millions to tens of millions of dollars. Problem management is, more or less, how I make my living. I also designed quality assurance facilities for a couple of government departments, one carrying a 2000-strong IT workforce and another doing highly critical defence work. The relevance of that is a high level of familiarity with what constitutes a faulty product to different people and how users' requirements are obtained, interpreted and implemented. I understand Garrett to be saying that all bugs should be fixed and that the order of their repair is immaterial given the first assumption. His dissatisfaction with the failure of this desirable outcome is exacerbated by the perceived high price of the product. However, Garrett fails to define a bug and there immediately is a massive problem. One person's bug is another person's feature request, a third person's could not care less and as often than not is unrelated to the software in question anyway (false report). This is unavoidable and and automatically renders any fix all bugs request as, well, just plain silly. I apologise for any personal offence anyone might take from that because I mean none, but there is really no other description for it. There will always be a range of items where their bug status is legitimately moot, so where do you draw the line? That is a matter of commercial dispute, of priority against demand and resources, of adequate bug definition and ultimately of agreement about where effort is most productively invested so that *both* parties are commercially successful. The inexhaustible and infallible Alpha and Beta testing teams you seek do not exist outside the halls of Valhalla [or insert preferred paradise] and even there they are driven to drinking and argument. Incidentally, Gregory, the same bug will not, alas, appear in headers without human intervention and interpretation of the myriad descriptions, many of them fairly incompetent, of the potential bug. For decades we have been grabbing developers and banging their heads against brick walls and steel pillars screaming What about the customer's business needs! So, how is it that RR will make all decisions on criticality of those bugs of which they are aware and which they choose to define as bugs? Their problem is not that they are too customer-driven with BZ, it is contrarily that it is damned hard to get some decent customer input. Even Dan, who is as experienced as anyone, confesses that he does not get motivated to use Bugzilla. Criticality, or priority, does matter. In a bank, if there were a bug which even in rare circumstances created an incorrect transaction then there would be a fix and release before virtually any other bug were managed in that software. Far from denigrating RR for exposing their bug data to entry and voting, we should be applauding their sound system and devising ways of making it more acceptable to users (as attempted by RZ). One of the most reliable pieces of large scale software I know is OS/ 390 or z/OS in its current incarnation. It hosts a myriad of the most critical commercial and defence systems around the world. How much money would you like to lay down, Garrett, that its bug list has zero length? Or that every one on the list is always fixed by the next release, or that customers pay no licence fee to obtain fixes? It is a waste of time even to imagine it, or to borrow words from your own blog, it is not science, it is nothing but pure religion. Finally, the cost issue is not worth debating too much except for a couple of observations. My daughter is currently in Edinburgh and reports no stream of Ferrari Enzos racing about the Scottish hills while the RR office lies silent but for the flickering stream of bug reports. Bill Gates and Steve Jobs, however, have no problem affording such fripperies should they wish it, for they charge hundreds of dollars for software sold to millions or tens of millions, not to thousands. Yet, every now and then, I see a window appear on my machine. It says: Would you like to report this problem to Apple? regards David Director DVK Consult Pty Ltd ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription
Re: File sharing, locking, etc... between multiple users...
On 23/02/2006, at 5:00, Jonathan Lynch [EMAIL PROTECTED] wrote: any other tips? Rob's comment about supporting 15-30 users is valid although it depends also on the transaction rates they can achieve. Jim's discussion of pre-emptive rights for certain actions or user types will add complexity to the locking and checking process. My own view is that I would adopt a real client-server database if I were going to that level. Given we are talking about a small system and user base, pre-emption should not be critical. We are relying on a process to give up a lock anyway, which is something else you should consider (removing stale locks where a process has died or improperly quit). Jim's general strategy of reserving line 1 for metadata is very nice. I would stick to flags for locking, though, simply for the small speed gain. To create a flag, generate a random number and create a file of that name .flag. To see if you can go ahead, first count the number of flag files and, if one, check that it is yours. Remember to remove the flag under all exit conditions and consider the tradeoffs of a cleanup daemon which arbitrarily removes flags older than X, where X is entirely your problem in your context :-). At the least you should be able to post a warning message. Finally, you may need to time your flag setting/checking loop under various conditions so you can set a safe minimum wait time to avoid races while the maximum does not delay processing too much. We should be talking a range of milliseconds. HTH regards David ___ 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: File sharing, locking, etc... between multiple users...
On 22/02/2006, at 5:00, Jonathan Lynch [EMAIL PROTECTED] wrote: 1) User A reads the file, and determines it is not owned 2) In the few milliseconds between when User A reads the file, and resaves it, user B reads the file and also reads that it is not owned. 3) User A makes changes and saves the data 4) User B, who should have been locked out but was not, makes changes and saves his data, overwriting the changes made by User A. My plan is to minimize the possibility of this type of collision by having the minimum possible time between reading a file and resaving it with ownership. Secondly, I will include some collision detection code That sort of thing can work quite well in scripted apps. I had to do a similar thing where the rate of access was very low but it was nonetheless important that there be no conflict. It worked like this: 1. User A reads directory and if the file is already owned, sleeps a randomly short time and tries again. 2. On finding the path clear, User A writes a flag asserting ownership and sleeps a randomly short(er) time. 3a. On waking again, User A reads the flags and if it is still the sole owner, sets about its business. 3b. If, on this second awakening, User A finds another owner contesting (i.e. a race condition slipped through the first check above) then User A removes their own ownership claim and goes back to the beginning. Like I said, this is for low volume stuff but it is perfectly effective in preventing conflicts arising from race conditions while the random components avoid continuous synchronised failure. Setting a flag file in the directory should be faster than reading, changing and writing the content of the main file. regards David ___ 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: Re: File sharing, locking, etc... between multiple users...
On 19/02/2006, at 9:21, Jim Ault [EMAIL PROTECTED] wrote: From: Subject: Re: File sharing, locking, etc... between multiple users... To: How to use Revolution use-revolution@lists.runrev.com Message-ID: [EMAIL PROTECTED] Content-Type: text/plain; charset=US-ASCII On 2/18/06 6:39 AM, Kurt Kaufman [EMAIL PROTECTED] wrote: On further thought on the record locking.. It might be possible for you to take the approach that the real field is never edited real time, but only a temp field that is later processed in the time sequence (the seconds) 'submitted' in an orderly event loop. This way, 4 users could be editing the same field while seeing that other users are doing likewise (chat room style). Many years ago there was a database which operated in a manner similar to Kurt's description; Dataflex. The theory was that a record was not locked until you actually tried to commit your edit. At this point, it would be locked and re-read from the database, and if it did not match the previously cached read then the write did not occur and it was up to the programmer (and user) to resolve the situation. The advantages were allowing multiple readers and sheer speed given it used a file locking rather than record locking method -- the file was locked for only a fraction of a second. Taking Jim's examples: Thus, only one edit at a time. Imagine two ticketing agents for an airline selling the last first class seat for a flight in few weeks to different people, one agent in New York, another in Paris. Record locking prevents this. The Dataflex approach meant that both clients would be told the flight was available until one of them actually laid their money down. Otherwise, one client may be told the flight had gone when in fact the other then changed their mind and left it available. If you paid too late and lost the flight, too bad; that's commerce. Another dilemma would be if a third person asked the database for the value of a field that was in the process of being edited... What value do you report to that third person? The value currently in the database because no-one has committed a change, and edits might yet be cancelled. Then add to that, a field that was allowed to be edited by two different users, neither of which was done with the edit. Which version is correct? Which version replaces the other two? This was Dataflex's biggest problem in this method, where two users read, one writes and the second attempts to write, meaning that the second user's edit was on false data. Programmer hell or user frustration. I am not advocating the Dataflex approach at all. Rather, it was a way of getting around the limitation that it (and dBase of the era) used file rather than record locking but in our experience it was a rather effective method with considerable speed advantages (never being told your record is unavailable) for small business applications where conflicts were unlikely anyway. Not every multi- user solution has to be good for a thousand users, so long as it keeps its own integrity. regards David ___ 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: Mac stacks look like Windows
On 18/02/2006, at 15:19, [EMAIL PROTECTED] wrote: So far my experience with Rev 2.7 has left much to be desired. The latest: When I open a stack that has been automatically converted to the new file format by Rev 2.7, with a new standalone (created with Rev 2.7) I get the Windows appearance (blue hilights on buttons, raised scroll bars, etc.). None of these stacks has ever been on a Windows computer. I have no Windows standalones. I don't run Windows. This has never happened before. Before I add this to Bugzilla, I'd like to know if anyone else has observed this. (OS X 10.4.3, Al PB, 1 gig., Rev 2.7) Not seen on a few stacks here, Paul OSX 10.4.5 PB17 1GB Rev 2.7 No other repeatable problems with 2.7 either, so far. On one occasion Rev crashed not long after Constellation closed the object inspector next to the script pane but left the slide-out window frame behind. regards David Paul Looney ___ 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: Pointlessness [was Revolution RUMORS!]
On 16/02/2006, at 5:00, David Burgun [EMAIL PROTECTED] wrote: snip Yes, in order to stop other people getting into the same position. Once the cat was out of the bag there was no need for anyone to go to the site again. It could be argued that he should be praised for his selfless actions and RunRev chastised for their unsafe site! David, I have full regard for the value of your posts on other topics but what you have above is about the most specious argument for anything that I have ever seen on this site. Your later paragraphs, about the list to which the material might have been posted and possible consequences thereof, are pure sophistry. Runtime owns this particular list and may include or exclude any person on their own cognizance and in their own commercial interests. Over many years, I have found them to walk a pretty good line, with tolerance, humour and only the occasional fit of pique :-). Should we infer from your last line that you like to have the last word? I promise not to write on the topic again, so here you go: Would have been ended! ___ 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: Serial communication
On 13/01/2006, at 9:37, Camm29 [EMAIL PROTECTED] wrote: David thanks , that's seems to do the trick. Any ideas how to break out of repeat loops in say 10 seconds as a timeout ? Glad it worked for you. I take it you want a loop to execute but stop after an amount of time apart from any other condition. Leaving aside mechanisms which will simply kill the handler, you will probably need to check the time before the loop, add ten seconds to it and then inside the loop check the current time to see if you have reached that the nominated expiry time yet. e.g. put the seconds + 10 into expiry put false into timedOut repeat on some other condition do something useful if the seconds expiry then put true into timedOut exit repeat end if end repeat -- Now checking timedOut will tell you under what condition you did exited, normally or by time. Does anyone have a more elegant solution for this? regards David ___ 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: Serial communication
On 10/01/2006, at 21:48, Camm29 [EMAIL PROTECTED] wrote: I have some custom made Hardware that i communicate to in Serial. This Hardware returns the Character when ready and able to Receive and/or finished replying. so before any write to file COM:1 or read from file COM:1 (I must have received the Char ) i have tried many combinations in trying to get this to work !! somehow if i loop like below i still manage to send before is received it would seem which causes errors ??? repeat 100 write --- wait for read --- end if you must wait for before any write or ... read then firstly your code needs another wait statement. The above code will write after reading and without waiting for a ready character, which is the problem you report. The following will work _provided_ you are happy that you will always receive the requisite characters )and that the device is ready the first time) or else it will wait forever. repeat N write something wait for read something wait for end repeat In the basic form of the loop above you will need an outside send statement to make sure things are still alive and get you out of problems, which would require a construct along the lines of 'wait for with messages' This might be done better with wait for messages then test whether the message was one which allows you to read/write or if you must exit the loop. HTH David It's a mystery or i lost the plot. Nothing wrong with comm settings or hardware for sure. Regards Camm ___ 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: Sorting array
On 20/12/2005, at 12:27, Brad Borch [EMAIL PROTECTED] wrote: snip Flash will be reading what is essentially a tab-delimited database. First, am I better off dropping text into an array in Rev to edit it, or simply sorting and managing the text as a big hunk of text? Second, if the array is better, how do I sort the array? (I've already built the Rev tool to split the text into the array). I've tried sort gMyEvents numeric by item 1 of each (after defining the itemDelimiter as tab). Is there a simple way to sort an array? Am I missing something? You could manage a tab-delimited list as suggested but if it is otherwise useful to have array access then you need an answer to that question, sorting an array. Answer: You don't; you just access it in sorted order. Explanation: Take an array flashData put the keys of flashData into fKeys sort fKeys repeat for each line fk in fKeys doSomething flashData[fk] etc This way you still have your array with direct key access and also can iterate through it in sorted order as desired. HTH regards David ___ 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: Cross-Platform Memory Inconsistencies
On 17/12/2005, at 22:58, Mathewson [EMAIL PROTECTED]wrote: Why does a stack on a CD run really quite well on a Pentium 2, 300MHz, 128 MB RAM (Win 98), a Pentium 3, 700 MHz, 128 MB RAM (Ubuntu 5.10) and grind to a shuddering halt on an iMac G3, 333MHz, 320 MB RAM (Mac 10.4)? This is a 'bother' as one has to plan for eventualities with machines and operating systems one might not own and/or have access to. I would expect a 333MHz iMac G3 running OS X 10.4 to grind exceedingly slow all by itself. I have an old 300MHz Powerbook G3 256MB running OS X 10.2 and it goes quite respectably and runs Rev perfectly well within its own limitations. I suggest that Rev is not the problem. The rational comparison with Win 9x on old platforms is Mac OS9, not the latest and greatest in OS X. Alternatively, have you tried Linux on the iMac? regards David post script: The G3 is not the machine I use, thankfully. We do have current Powerbooks on which to work while the G3 waits on the shelf still hoping for a role in life :-) ___ 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: revdb error using record set (AltSQLite) -- Fixed
My apologies to all. The line get revdb_query(gConn,SELECT * FROM taxl) was the default in a SWITCH statement. I discovered eventually that a cutely simple error on my part meant that one of the earlier CASE statements was being executed where I had expected them all to be bypassed. However, the search in that CASE returned no data, something for which I was not testing because I was trying to get the DEFAULT code working first! The rest of the errors flowed from there. sorry David On 15/12/2005, at 13:35, David Vaughan wrote: Using a licenced AltSQLite as the database, I created a record set and endeavoured to extract data using the following code (some error checking and other irrelevant pieces omitted from both fragments): handler 1 get revdb_query(gConn,SELECT * FROM taxl) put it into p set the cursors of this stack to p get revdb_moveFirst(p) newRecDisplay on newRecDisplay put the cursors of this stack into p put revdb_columncount(p) into k repeat with i = 1 to k put revdb_columnByNumber(p,i) into field i end repeat The code executes but at first put something like revdberr, invalid column number into each field but now pretty consistently just crashes Rev. The database is open and a few rows of data exist in it with three columns, fully populated, in each row. I can see that data using revdb_queryList() so one option is to switch away from using the cursor structure and just manage the returned data in variables myself. Before making that move, I would like to know if I have made a mistake in this code or have encountered a bug in the RR wrappers or in AltSQLite. I added revdb_moveFirst() in the first handler, as a trial fix although I expect that the cursor would automatically be pointing to the first record. thanks David ___ 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: Recent Development on the Use-LIst
On or before 16/12/2005, at 7:58, various people wrote in relation to the old question of forum vs mailing list. After a few years on the RunRev Use and Improve lists I switched to digest mode which cleaned my mailbox a bit but took away the ability to see messages in a timely manner. A few months ago I observed that there were so many new users asking and answering questions that I had no great need (or perhaps ability) to contribute and nothing to ask for myself at the time. I considered this a triumph for Rev, evidence of both a growing user base and increasing sophistication rather than it formerly being a mix of the deeply knowledgeable and the deeply inexperienced. This week, tackling an SQL database for the first time, I had need of assistance (although the problem naturally proved to be my own) and was impressed to see Chris Bohnert and Mark Wieder both take the trouble to test my code and respond very helpfully. I have no fears for the constructive quality of the readership and contributions. It was also a bit of a homecoming, to see (for example) Klaus and Richmond being their very different selves. So, to the actual topic here which is the medium for the discussions. On one of the occasions this debate ran a few years ago, I found the mailing list format easy to manage and use and agreed that it was preferable to forum software. The content was not very voluminous then. In the past 6-12 months I have spent much of my time on another list, on a wholly unrelated topic, using forum software. It employs Discus which is reputed by some to be not the greatest piece of forum software. Despite that supposed disadvantage, I find it to be vastly superior to the mailing list in every significant respect with key gains in responsiveness, coherence and time management. The notion, recently expressed by one highly respected member here, that a forum obliges trolling material or does not allow casual integration of list review with other work, is probably born of a lack of knowledge of the alternative. These are precisely the problems I find in a mailing list whereas a forum simplifies and expedites working with the list. Firstly, topics are broadly categorised based on input from the users. Secondly, a single button brings up in tree format every post made since you yourself last checked, and no others. Additional to the topic/thread categorisation, the hierarchy gives you crucial information on author and the first line of content. Using a tabbed browser you quickly pick out the items of interest and review or respond to them. Timeliness is superior because you manage the material in bulk when you wish to without waiting for a digest to turn up or alternatively being bombarded with irrelevant messages. If you wish to trace material there is a powerful built-in search facility. You can also immerse yourself in a topic or thread from the start for learning purposes, and having learned will most probably use the Posts [since I last checked] feature. You can use basic web text styling for clarification without tripping over mail reader limitations and easily add diagrams or pictures (size and density restricted) where relevant. It also facilitates creation of informative user profiles, although in the forums I use I do prefer the one which excludes signature lines within the post (additional to author identification in the left column) as completely useless clutter. I guess these advantages have all been discussed before, but I wish to emphasise their superiority in my practical experience. No-one expects everyone to favour a change but from what I am reading at least some of the pro-mail-list group are going to be pleasantly surprised when the inevitable change occurs. Whether RunRev manages a forum of its own, blesses an existing forum, or abandons the whole thing to the market is something on which I choose not to have an opinion at the moment but I agree that one of the alternatives they are doubtlessly considering needs to be taken up. Sorry about the length of post. Perhaps I have indulged myself in compensation for having been away for a while. cheers David ___ 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
revdb error using record set (AltSQLite)
Using a licenced AltSQLite as the database, I created a record set and endeavoured to extract data using the following code (some error checking and other irrelevant pieces omitted from both fragments): handler 1 get revdb_query(gConn,SELECT * FROM taxl) put it into p set the cursors of this stack to p get revdb_moveFirst(p) newRecDisplay on newRecDisplay put the cursors of this stack into p put revdb_columncount(p) into k repeat with i = 1 to k put revdb_columnByNumber(p,i) into field i end repeat The code executes but at first put something like revdberr, invalid column number into each field but now pretty consistently just crashes Rev. The database is open and a few rows of data exist in it with three columns, fully populated, in each row. I can see that data using revdb_queryList() so one option is to switch away from using the cursor structure and just manage the returned data in variables myself. Before making that move, I would like to know if I have made a mistake in this code or have encountered a bug in the RR wrappers or in AltSQLite. I added revdb_moveFirst() in the first handler, as a trial fix although I expect that the cursor would automatically be pointing to the first record. thanks David ___ 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: recursion limits
On 04/08/2005, at 12:47, Chris Sheffield [EMAIL PROTECTED] wrote: I'm talking about recursion as in calling the same handler/ function from within itself. I'm guessing there could be issues with this if the folder to back up has a large directory structure, as in many sub folders and files. Chris, several people have proposed you avoid recursion just in case. It was also advised that you read the thread on directory walker from early last year. I suggest you do the latter. I wrote (as did others) and use a recursive directory walker and have found no problems on whole disks of applications and data numbering at least a hundred thousand files. However, there is a gotcha in OS X and also with permissions on any platform, either of which can relegate you to an infinite loop. This may account for some of the bad experiences implied by other people. Alex's suggestion that you gather the entire file list first is a good safety measure but I suggest there are no other reasons to avoid the comparative speed and elegance of a recursive approach. We have not found limits for it. regards David ___ 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: MatchText and PCRE
On 20/07/2005, at 10:15, Mark Greenberg [EMAIL PROTECTED] wrote: David, I am by no means an advanced programmer in Rev, but I have been using Regex a lot lately. This is what I have discovered in my use of Regex in Rev: snip I highly recommend the book Mastering Regular Expressions by Jeffrey E. F. Friedl. There are a bunch more obscure codes that work in the Rev flavor of Regex. thanks Mark. I have the book on order. I have also been contemplating buying RegExplorer, which is written in RealBasic and includes four checkboxes related to my four questions. Apparently, these are parameters you set in the RealBasic Class so I was wondering about the corresponding behaviours and options in Rev. Now I know how to set these switches for Rev defaults and will change behaviours when needed by using the RegEx codes rather than the checkboxes in the program. regards David Mark Greenberg ___ 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
MatchText and PCRE
The documentation says to see the PCRE manual for regular expression syntax. The PCRE manual refers to certain properties set as part of a C program. Consequently, I am unsure of the answers to the following four questions. True, I can experiment to see how these currently work but that will not answer the question of whether those behaviours are modifiable, so I am seeking answers before I dive in to using matchText. Is it greedy? If so, is that reversible and how? Does the dot match newline? If not, can it be made to do so? Does a pattern like .* match empty? If not, can it be changed? Is case-sensitivity in matchText affected by Rev's caseSensitive property? It appears not. Is case sensitivity settable? thanks David ___ 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: Getting started with Rev Databases
On 15/05/2005, at 7:17, Dave Cragg [EMAIL PROTECTED] wro Getting off topic.. :) When I hear the word cursor I still think of the transparent sliding thingy on a slide rule. So when doing selects on two database tables, I conjure up this notion of the tables somehow sliding over each other, and the cursor reading off the intersection. That probably explains why I haven't progressed much with SQL syntax. :-) :-) Forget the mathematical line and consider the slide rule cursor frame as a window. No further problems :-) Dave ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Calculator help
On 06/05/2005, at 13:25, Paul Salyers [EMAIL PROTECTED] wrote: Dear Rev Programmer, Had a basic calculator been made in Rev, If so can I have help. on getting it to add when you type in numbers say, (12 + 12) before pressing the [=] key in the read out which is a label field I'm getting 1212 Yes, I wrote one, essentially an extensible field in which every exposed line is a unique processor with common memory stores, but it is RPN :-) Can some1 help me on this? A sample of your code related to the above will help us understand your problem. David Paul Salyers PS1 - Senior Rep. [EMAIL PROTECTED] Http://ps1.SoftSeven.org ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Ann: Greenhouse effect on Venus
On 07/04/2005, at 2:00, Jim Hurley [EMAIL PROTECTED] wrote: It is worthwhile to examine what effect greenhouse gases have on the temperature of other planets besides Earth. It turns out that Venus is very hot, about 832 degrees Fahrenheit. But how much of this due to greenhouse gases and how much to the fact that it is closer to the Sun? To neutralize the proximity effect I have introduced a comparison standard, a Blackbody planet. In the stack below it is possible to place this imaginary planet anywhere in the (near) solar system and observe its temperature, the steady state temperature when the incident solar radiation absorbed by the black body is balanced by thermal radiation from the black body, something that is easy to compute. snip Jim, So why is Mars colder than a blackbody planet in its orbit position? Just curious. thanks David Jim ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
Re: How to get the difference between two lists?
On 04/04/2005, at 16:34, Ken Ray [EMAIL PROTECTED] wrote: I've got two lists - one with is the comprehensive list that is return-delimited, like: 3 5 6 snip And another list which is the list I would like to *remove* from the comprehensive list: 5 6 snip Which should give me: 3 snip Any ideas? Ken (and all the other ingenious people), you have something against the intersect command? Convert both lists to arrays and intersect them leaving only the non-common elements. cheers David Ken Ray Sons of Thunder Software ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
Re: How to get the difference between two lists?
On 05/04/2005, at 0:38, Ken Ray [EMAIL PROTECTED] wrote: On 4/4/05 1:39 AM, Monte Goulding [EMAIL PROTECTED] wrote: Ken (and all the other ingenious people), you have something against the intersect command? Convert both lists to arrays and intersect them leaving only the non-common elements. My understanding is the intersect command creates an array with only common keys. If there was an inverse of the command it would be perfect as you say. I added this as an enhancement request to Bugzilla (Bug #2763 if anyone wants to vote on it). I'll vote for it Ken. While I am at it I might vote that I do not reverse-read documentation as well ;-) cheers David Ken Ray Sons of Thunder Software ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Problem solving methods in software development
On 01/04/2005, at 19:05, Alejandro Tejada [EMAIL PROTECTED] wrote: Hi Developers, Long time ago, surfing the net i found a forum, where the administrator supervised the threads and when a question was responded correctly or a problem was solved, he (or she) closed the message thread and added a message after the thread that identified the problem solving approach used to solve the problem or respond the question... Did anyone remember which forums use this approach? No, but while I can see its attraction I think it inappropriate for Rev or indeed for any other language of creative expression. Sure, we see the same question asked again (and again) but that is often helpful to newbies. More importantly, I see different answers touching on nuances of the original problem, or simply stylistically different ways of doing the same thing (and everyone has style preferences). So, when is a thread to be closed? regards David Thanks in advance. al ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Poll: the sum(7,9)
On 16/03/2005, at 5:57, various people wrote on: Subject: Re: Poll: the sum(7,9) Reply-To: How to use Revolution use-revolution@lists.runrev.com It's this: How do you mentally process simple addition/subtraction facts? What actually happens in your brain to elicit 16 when you hear 7+9? (for example) It depends a bit on how complex the question. My response to 7 9 + was initially the second of those originally suggested by Mark - pattern recognition, probably a direct consequence of his third option, rote learning at school. The same certainly happens instantly for numbers where the sum is less than 13 and very fast for others. When the numbers get larger, I use accumulated pattern-bits to break down the problem and derive an answer, which actually seems to involve an approximation on most parts of the number then fixing the details in any unconsidered digits. If it is difficult or I am tired then concrete methods start to move in to deal with it, involving visualising changing numbers. However, the later question, 17 9 - (seriously folks, over 30 years my thinking really has shifted to the point where RPN is as easy as and more sensible than infix) caught my attention. The answer came straight away but I managed to rerun the question immediately in my head and think I got some glimpse of what happened, insofar as one can believe introspection. It went something like 9 is one less than 10 and I see 17 so the answer is 8. Bang. Nothing more I noticed (I barely caught the and I see 17 but it had to be there) and in retrospect I am not quite sure I would think of it quite that way, but it seems to work. cheers David ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
Re: use-revolution Digest, Vol 18, Issue 53
Richard It is many years since I played much in Terminal and then not with tcsh, so let me tell you how I worked my way through this and see if it helps you. Watch for the dots I have in here, e.g. in sudo mv ./airport /usr/local/bin there is one at the beginning of the first path. I downloaded the file from macstumbler and decompressed it to the desktop, producing a folder airport. In Terminal, I typed cd and then dragged the airport folder into terminal which put in the proper path for me. I typed make which ran and created the executable in the folder. If it does not run for you, check your default path or try /usr/bin/make Assuming that works, enter sudo mv ./airport /usr/local/bin and your password when requested. If you are within the airport folder this should copy just the executable, not the whole folder. If you accidentally move the whole folder, cd to /usr/local/bin and rename the folder (sudo mv airport airportf) and then move the file up a level (sudo mv ./airportf/airport .). The command /usr/local/bin/airport should now run for you. The signal data is word 1 of line 2 of the output. regards David On 15/03/2005, at 7:15, [EMAIL PROTECTED] wrote: From: Richard Miller [EMAIL PROTECTED] Date: 15 March 2005 6:44:05 GMT+11:00 To: How to use Revolution use-revolution@lists.runrev.com Subject: Re: Airport status Reply-To: How to use Revolution use-revolution@lists.runrev.com Alex, While I'm not at all familiar with Terminal, I believe I get into the correct folder. Typed MAKE. Received back error COMMAND NOT FOUND. Richard ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
Re: OT: Help with motivation
On 23/02/2005, at 12:07, Thomas McGrath III [EMAIL PROTECTED] wrote: Hello listers, I hope this is not too far off topic. Well, I suppose it is not about Rev but in every other respect it seems a pertinent topic ;-) I have been having problems getting myself motivated. snip Any helpful ideas on how to jump start a project? I was going to put my ideas down but recognised their common threads with other people's, so rather than the detail, my general approach is: 1. Remove the distractions, while doing something useful 2. Do **something** however trivial, just to get you rolling. On the first, I often do a desk cleanup because it tends to clutter as my ideas accumulate and I clear it as a metaphor for re-ordering my thoughts. Like Richard, I go for a walk to get some physical energy you can never acquire sitting there. I elaborately prepare for work by making sure I am physically comfortable, have the right music, relax over a coffee or something. Read the paper. Do all the minor things until you run out of them and am confronted with the fact you have to start somewhere. On the second, Jacque and others had it pretty right. The first part of getting yourself moving and doing trivial tasks (or taking an active break) should enable you to start on a minor or non-crucial part of the job. Alternatively, sketch the crucial part to prove to yourself you have an overview of it. Communicate with someone else what it is you are up to and what small part you will be doing next. Take another break. Soon, you will not be able to resist going back to the task. In fact, this discussion makes me wonder whether writers' block is not a mild form of depression, before the manic creative phase perhaps. At a client site (a rehabilitation service) last Friday I was idly reading (i.e. bored with discussion) on their conference room wall a poster on depression. I just checked my recollection with my contact there. It said: Breathe Prioritise Exercise Communicate Take a break Do one thing at a time Stay positive Sounds a bit similar, doesn't it? regards David Thanks Tom ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Introducing our new Evangelist
On 18/02/2005, at 7:27, Marian Petrides [EMAIL PROTECTED] wrote: Unless I miss my guess, he is Heather (aka List Mom)'s spousal unit. Her spousal unit? :-D :-D :-D At last, I really know my place. cheers David ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Split, combine ok but where's extract?
On 14/02/2005, at 4:00, Alex Tweedly [EMAIL PROTECTED] wrote: snip If you take the case of put 1,2 into myArray[a,b] put 1,3 into myarray[c,d] snip Nope. It will actually give v1 = a,c v2 = b,d v3 = 1 v4 = 3 the other value got lost in the split immediately before the assignment to v3; I don't know if it's theoretically guaranteed which of the values it will give, but in practice, with few entries, it will give the latter one. Alex Perhaps I have misunderstood the depth of the problem. I do not appear to have the described difficulty with the example data. Here is code (assume a couple of testing fields, f1 and f2) and the results using your actual example data. put 1,2 into myArray[a,b] put 1,3 into myarray[c,d] put the keys of myArray into field f1 combine myArray with return put myArray into field f2 splits the keys from the data, preserving all components, while (using data from the fields as created above) put field f1 into tData -- the a,b \r c,d data put field f2 into tKeys -- the 1,2 \r 1,3 data split tData with return put 1 into i repeat for each line x in tKeys put tData[i] into myArray[x] add 1 to i end repeat -- and to prove it happened combine myArray with return and # put myArray into field f2 puts them back in an array. The only relevant possibility of duplication appears to be with the keys of the original array, which by definition were not duplicated anyway. I receive the digest so discussions may be slow. regards David -- Alex Tweedly http://www.tweedly.net ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Split, combine ok but where's extract?
Xavier, Alex and all. The principal difficulty with the split/combine code I have suggested for extract/merge is that key order is not preserved in relation to the data when you get the keys. If you wish to re-merge after an extract then you must know what is the correct key order (e.g. a simple sort). Oh, and I also reversed the data and keys in the second code block (first two lines) compared with the extract. Mechanical error. regards David ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Split, combine ok but where's extract?
On 13/02/2005, at 4:00, MisterX [EMAIL PROTECTED] wrote: Xavier I have not searched back to your original request, but if I understand it correctly then you wish to be able to de-merge columns from an array, and that these columns may be of the data or of the keys. Let us assume you have an array where an element is defined by: put n1,n2 into myArray[a,b] Here, you can extract anything from the keys or the element using split and combine. For example, this code places all four columns in separate variables v1-v4 (untested) put the keys of myArray into tKeys split tKeys with return and comma put the keys of tKeys into v1 combine tKeys -- discards the keys put tKeys into v2 combine myArray -- discards the keys split myArray with return and comma put the keys of myArray into v3 combine myArray put myArray into v4 Now, v1=a, v2=b, v3=n1, v4=n2 (or close enough if I made a coding error) I have a column merge function somewhere. I will look it up to see if it is any improvement over what you have. regards David ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Split, combine ok but where's extract?
Moron me! Doing some edits from my test script I omitted the line add 1 to i just before end repeat On 13/02/2005, at 10:43, David Vaughan wrote: Xavier This is the merge part Assume you have the following two variables: v1 contains a v2 contains b split v2 with return put 1 into i repeat for each line x in v1 put v2[i] into myArray[x] end repeat combine myArray with return and comma myArray is now a list whose first line is a,b This code avoids any repeat with i = 1 to n loops and is thus fairly linear in time taken with longer lists. Incidentally, I left with return off a couple of lines in the previous extract code. I have not done any speed tests. Hope this is relevant. regards David ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Success with Sending email without a SMTP Server!!!!
On 31/01/2005, at 9:13, Andre Garzia [EMAIL PROTECTED] wrote: snip Well folks the stack is available under my username soapdog at revOnline or thru http://www.soapdog.org/rev/smtpraw.rev sorry I put a space in the file name Andre, I tested sending to a .mac address and got this error in the log: Server was offended by our HELO message I am behind a corporate firewall at the moment and suspecting it might have interfered. Does this seem likely? regards David Cheers andre -- Andre Alves Garzia 2004 BRAZIL http://studio.soapdog.org ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
Re: What do most Rev developers do?
I do not do professional development but use it in a couple of main areas. I have applications written to support my life. Examples include manage my Super Fund, look after contacts, do backups, provide a small multi-entry RPN calculator, calculate optimal gearing for model racing cars, calculate any parameter for allocated pensions under Australian rules, value stock market options, make decisions when there are many possibilities, generate bridge hands against a variety of parameters, calculate wheel/tyre combinations for given rollouts and other things of even lesser moment. My second use is as an ad hoc scripting package (having a general purpose stack for this) to massage data for input to a couple of stats packages or for other apps. David ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
Re: RAD contest...;-)
On 22/01/2005, at 4:00, [EMAIL PROTECTED] wrote: It seems to me a more significant contest between the two systems would be to assign the same project to two very experienced developers with each development environment, and see who gets it finished quicker. -- I think after 20yrs...I should be able to make at least in FULL: 1. MacWrite 1.0 -- word processing 2. MacPaint 1.0 -- bitmap editing 3. MacDraw 1.0 -- vector editing 4. Excel 1.0 -- number processing Richard's comment on productivity was intended to focus on tasks typically facing professional developers rather than on artificial contests. It is indeed important that you can process words, bitmaps, vectors and numbers but a contest involving creating new, complete applications in each of these fields is hardly relevant to the daily needs of most people on this list or of the customers they serve. I can see next that this discussion would descend into a feature contest in each of the specific areas; again, not what Richard intended. Let's drop it. As for Mr Grogono, a man who on my reading can deny and then admit the same thing in a single paragraph, he might recall that a predecessor in his company when writing to this list had the courage to sign his messages in full rather than restrict the information to his e-mail address. I doubt that either Mr Rivers or Mr Grogono actually achieved anything by their writing other than a change of employment for the first gentleman. Perhaps Mr Grogono is looking for a job ;-) regards David In either RB or RR...so show me which RAD tool is up to the challage! :) Andrew ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
Re: RunRev vs RealBasic (nothing to do with it really)
On 19/01/2005, at 4:00, Thomas Gutzmann [EMAIL PROTECTED] wrote: snip I'm glad that most English people I know are very tolerant and polite. Probably less so than those people who have managed my Australian-accented French and German with only the ripple of a suppressed smile. :-) It has always been a pleasure to visit your countries. I now realise a tactful need to add that I have also enjoyed visiting America, and Italy and Japan and Vanuatu ... oh forget it. David Thomas G. ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
Re: arrow keys in a text field?
On 13/09/2004, at 22:12, Geoff Canyon [EMAIL PROTECTED] wrote: I'm using 2.5 and I have a palette where the arrow keys aren't working in a field. I've already checked that the appropriate properties are set, and the arrow keys work if I move the field out of the group it's in. I remember there being an issue if some portion of a field is covered by something else, but that doesn't seem to be the case here. I've tried setting the group to the highest layer, and the field to the highest layer in the group, with no luck. I've looked at the rawKeyUp data, and that message is being triggered. But the arrow keys still don't move the cursor. Any ideas before I go prematurely gray? Geoff I have had a similar problem for ages with my Stocks stack, where attempting to navigate within a field actually moves you to the next field. Your problem inspired me to check the problem again. I found a group, which I do not recall creating but which may be giving background behaviour to the objects on the cards (it is a reimplementation of a HyperCard stack). In its properties, I unchecked Arrow keys navigate contents and my problem was resolved. Hope it might work for you. regards David regards, Geoff Canyon [EMAIL PROTECTED] ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: next repeat problem
On 18/08/2004, at 7:17, Rich Lague [EMAIL PROTECTED] wrote: Thanks Klaus (and Jan!), Yes, adding the complete descriptor for i did allow my 'next repeat' to run. However, I'm still having problems getting rid of the extra lines in my global variable. I have also been trying your suggestion of using 'repeat for each'. I get an error when I try to 'apply' this script-- --- set the itemdel to tab repeat for each line i in fld daTable if i = empty then delete line i of fld daTable else put item 1 of field daTable return after theList end if end repeat -- The error I get is Chunk: error in chunk expression and it highlights the line put item 1 of field daTable return after theList -- this is a line of the script that worked before... Rich Please go back to the sample code sent to you by Klaus. Repeat for each does not allow you to manipulate the lines of data in your source file. By trying to delete something to which it thinks it is pointing, you are confusing it, hence the error. When changing data using Repeat for each always move the lines you want, modified as you please, to a new container. As Klaus shows, this simply involves copying non-empty lines and is damn fast. regards David ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: How to extract characters from the middle of a string?
On 08/07/2004, at 8:47, J. Landman Gay [EMAIL PROTECTED] wrote: If I have a string containing 25 characters, how do I extract the eight characters starting at position 5 in the string? [In BASIC this would be left$(5,8) or some such.] This should be a simple thing to do but I can't figure it out and can't figure out which dictionary item applies. get char 5 to 12 of myString Nice to see that the fourth answer to the question finally got the arithmetic part of the syntax right ;-) David -- Jacqueline Landman Gay | [EMAIL PROTECTED] HyperActive Software | http://www.hyperactivesw.com ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: OS X screen saver - somewhat off topic
On 27/04/2004, at 16:40, Sarah Reichelt [EMAIL PROTECTED] wrote: Like the AppleScript, it works fine so long as the screen saver time limit hasn't been reached, now to test if it has. For anyone who is interested, the script is slightly different to the one Andre suggested: get shell(ps -auxc | grep quote ScreenSaverE quote) if it is empty then exit to top put word 2 of it into pID get shell (kill pID) Sarah If it works, then Transcript now supports the kill command for OS X, including nominating the signal type (including 9). You are sending sig 1 or 15 (I forget which) in the above. regards David Many thanks, Sarah ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: OS X screen saver - somewhat off topic
On 27/04/2004, at 19:20, Sarah Reichelt [EMAIL PROTECTED] wrote: Sorry, it doesn't work if the screen saver has come on after it's time setting. In fact it is exactly the same as the AppleScript. You can see it happening as the screens saver goes off for about half a second, then comes straight back on again :-( Most frustrating as it seems that it is ALMOST working. Thanks for all your help anyway, Sarah To be precise, did your tests include kill -9, the real killer? regards David Sarah ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: OS X screen saver - somewhat off topic
On 28/04/2004, at 10:19, Sarah Reichelt [EMAIL PROTECTED] wrote: Thanks to everyone for their suggestions, however none of them will do what I need. Using either AppleScript's quit of the shell's kill (with or without -9) works fine if you have started the screen saver by pushing the mouse into the specified corner. If the screen saver has come on after it's set time, both these methods stop the current screen saver process but another one is immediately started. Sarah What is the parent process ID of the new process that starts (try ps -ajx)? Is it something else you can reasonably kill, so it will not spawn further savers? As an aside, I am wondering if these behaviours are related to a problem I have where my Powerbook will occasionally refuse to wake properly - the disk sounds are all as usual but the screen never clears and the only resort is the reset button. regards David Cheers, Sarah ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Erratic drawers - OS X
I am seeing erratic behaviour with drawers. First one: Create a stack with a menubar. Create a substack of it. Add a button to the main stack to show the substack as a drawer (at bottom, if it matters). When you press the button to show the drawer (a problem in itself as discussed below) then the menubar switches to the stack menus. The Rev IDE menus can be restored by selecting the Pointer tool, but the behaviour seems strange in any event. Anyone seen this or have an explanation? Second one: Using the drawer command and hide or close to close the drawer does not seem to work as advertised. To slide out the drawer for the first time requires additional code to show the stack and to maintain normal open/close after that requires some other code as indicated by the script from a test stack below. Without the elaboration of the property, the position can arise (without a precise recipe yet) where the drawer simply will not appear. on mouseUp get the propLocOn of stack Locations -- set to 0 on openStack switch it case 0 drawer stack Locations at bottom show stack Locations set the propLocOn of stack Locations to 2 break case 1 show stack locations if the visible of stack Locations then set the propLocOn of stack Locations to 2 else set the propLocOn of stack Locations to 0 end if break case 2 hide stack locations set the propLocOn of stack Locations to 1 break end switch end mouseUp I have already buzilla'd the first problem but will delete if someone has a good explanation. thanks David ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Something about speed
I have been engaged in an off-list conversation with Dar Scott, mostly around his solution to the Yavelow test. In the course of it we found out or re-confirmed a few things about Rev characteristics and I pass them on here for anyone who is interested. The information comprises a somewhat random collection. On a file of decent size it is faster to strip all non-alphanumerics (the set .,!#$%'()*+-/:;=[EMAIL PROTECTED]|}~] quote) and use -replace- than it is to use a single -matchText- on every word in a -repeat for each- loop. The code would be something like: constant unwanted=.,!#$%'()*+-/:;=[EMAIL PROTECTED]|}~] put quote unwanted into stripThisLot repeat for each char i in stripThisLot replace i with space in whatever end repeat If you can limit to a subset (most text uses less than half that punctuation) then of course you save some more time. Stripping non-alphanumeric characters saves a lot of trouble with word handling as otherwise constructions like elsewhere!--Oh! might confuse matters by appearing as one word. Handling items is about 20% faster than handling words. This advantage may be lost where you have to account for empty items, whereas words are never empty. For example, elsewhere,,,Oh, vs elsewhere Oh have five items and two words respectively. Three of the items are empty. The -replace- command (replace x with y in z) slows down with larger data sets in a highly predictable way, defined as: log(time) is a linear function of log(length(data)) To make the point, the log formula fits a regression of the experimental data to a level of 99.96% on data of length 1000 to 300,000 characters. Note that in this instance the log formula is not the same statement as time is a linear function of length(data). Array insertion time is almost constant with array size, in arrays from ten to a million unique keys. Therefore, it is clearly faster to work on one large array than on multiple smaller arrays and then use union at the end. Sometimes, breaking a job into smaller pieces slows it down. Stripping alphanumerics gives different answers. This may or may not be what you want. For example, below is Dar's code with minor modifications by me and some changes for consistency with Brian Yennie's code. It runs about 20% slower than Brian's solution and produces 15% more matches ;-). Not setting caseSensitive true would add another match. It all depends on what you want. regards David constant nonWords=.,!#$%'()*+-/:;=[EMAIL PROTECTED]|}~] --Just so I remember the full set on mouseUp local sTicks, sMS, tt, stList, unwanted, i, wordNumber, prevWord, w, stL local match, currentPos, numberMatches put empty into field TheResults set cursor to watch put the milliseconds into sMS lock screen -- Using direct data as we already know the data load takes 18mS put field TargetText into tt put field SearchTextList into stList set caseSensitive to true -- Stripping this sub-set takes 6% of run time. put quote .,!'()*-:;? into unwanted repeat for each char i in unwanted replace i with space in tt replace i with space in stList end repeat -- Create set of single words and set of position sets for double words -- Following repeat loop takes just over 80% of run time put 1 into wordNumber put $$$ into prevWord repeat for each word w in tt put true into boolA[w] put wordNumber space after ttA[prevWord,w] add 1 to wordNumber put w into prevWord end repeat -- Search -- Just over 13% of run time repeat for each line stLine in stList put empty into stL repeat for each word w in stLine put w space after stL end repeat if the number of words in stL = 1 then put boolA[word 1 of stL] into match else repeat with i = 2 to the number of words in stL put (word (i-1) of stL),(word i of stL) into w if i=2 then put ttA[w] into currentPos else -- This function absorbs 11 points of the 13% put intersectPosSet(currentPos, ttA[w]) into currentPos end if put the number of words in currentPos into numberMatches if numberMatches is 0 then exit repeat end repeat put numberMatches is not zero into match end if if match then put stLine cr after MatchList end if end repeat put matchList into field TheResults put timeit(sMS, Check Matches) into sMS -- Sort lines and counting them is outside the timing sort lines of field TheResults ascending text put (the number of lines of field TheResults) lf before field TheResults end mouseUp -- modified intersection function that adds one to elements of the first function intersectPosSet cPos ttPos local newPos, p1, p2 put empty into newPos put (word 1 of cPos)+1 into p1 put word 1 of ttPos into p2 repeat forever -- until (cPos is empty) or (ttPos is empty) if p1 p2 then delete word 1 of cPos if cPos is empty
Re: RB unclear couldyetbewinner in speedwhatfor microtest :-)
On 22/04/2004, at 10:12, Brian Yennie [EMAIL PROTECTED] wrote: Monte, Looks ok here. I ran the old vanilla offset() function and it got the same number of matches. Is anyone seeing differently? On guard! Another Rev entry! That's fast Brian (64 tickes here) but not meaning to offend I noticed that it only produces 18 matches. Is this correct as a post the other day indicated there should be nearly 250 matches? Cheers Monte Brian, Monte The 250 referred to the old triple-word search. In the new search concentrating on 4-7-word phrases 18 is, as I see it, the right answer. It is still unknown what you are supposed to do with duplicate matches or, as Monte so nicely put it on reading the book, why we are doing this anyway. regards David ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: RE: But what's the question?
On 22/04/2004, at 1:57, Frank Leahy [EMAIL PROTECTED] wrote: On Wednesday, April 21, 2004, at 06:55 AM, Monte Goulding [EMAIL PROTECTED] wrote: We can't change the fact that RB has a faster substring searcher than Rev but we can make that fact irrelevant. Cheers Monte Monte, I don't think this is true. Frank, undoubtedly, if you assume Monte works for RunRev on the core engine. He has his own business and spoke, I believe, as a user. regards David ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: REV, RB, SC speed test, Latest results
On 21/04/2004, at 1:02, Norman Winn [EMAIL PROTECTED] wrote: Norman I am aware of responses already from Ken Ray and James Richards to your comments below but, as author of the key programming step I find excuse to add my own perspective. I am a user assessing Revolution as a replacement++ for Filemaker. I am also assessing other tools so am following this discussion with interest. Here are my observations: There has been a recent thread on Filemaker and RR. If you missed it you should look it up as well. 1) Can any of you consider this to be a fair comparison? Yes. Perfectly. It was up there on the web site for the same time for everyone and, so far as I know, posted to all the lists. I assume that the RB players paid it no attention as the game appeared already won. In any case it took me very little time after I got hold of real data to work out a solution and another day before I had time to publish. As I have written previously I think winning it, the simple speed comparison, does not matter. You, the 'you' being probably the best RR programmers on the planet, have had a couple of weeks [sic] to optimise RR's algorithm. Sorry, because there is no reason you would know, but this is hilarious; at least for me, not for my brilliant colleagues. I have not programmed anything for sale or direct profit since selling my small business at the end of the eighties. For me, RR is a handy scripting tool replacing awk for one-off manipulations of patterned data and HyperCard for small applications which help me either in my business or my hobbies. I know practically nothing of its multimedia or visual design capabilities, for example, and never read those posts. Has the sense of justice in anyone pushed them to pass the challenge to the RB list? You know now that Ken said as much. You might also look up my response to his post to see that in my view all of this is fairly unimportant anyway. See also Richard Gaskin's posts on the topic. 2) One of the suggested strengths of Revolution is the simplicity of getting things done. Why should such a common task take such a lot of optimisation to produce the best results? Are not the 'out of the box' solutions i.e. those that will be produced by the average user, a fairer comparison? As Ken pointed out, the challenge was not What does it do? but This is what it does; make it go faster. The actual text from Chris' first post is ...try to tweak them to run faster. The object is ... to create the fastest code... 3) On a more positive note, the possibilities of optimisation have revealed to me a rich programming environment underlying the IDE, Now we come to the important point, at least to me. The original problem set by Chris used artificial data. Ken Ray promptly blew that away by exploiting the enormous redundancy using a keys comparison. I wrote to Chris asking for some real test data and at about the same time he put some up on his site. Seeing data patterns, I exploited this and an alternate Rev command to more or less settle the issue. Chris tried some tests on real real data and before and after this Monte Goulding and Brian Yennie published what I call production optimisations, which exploited possible repetitions in serial analyses. Note the thread in this: optimisation is a function of the data you face, more than the tools at hand. Richness of the tool set makes more optimisation opportunities available. Here, we optimised speed. Remember those other two in the impossible triangle, cost and quality?** They too can be optimised with Rev, which is partly why I enjoy using it. Hope you make a sound product choice which satisfies your application needs, is enjoyable _for you_ to work with and is well supported on its user list. regards David **(Old programming/engineering saying: You want it fast, high quality and cheap; any one is easy, you can get two, but you can never have all three) Norman Winn ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: But what's the question? (was: RB clear winner in speed test)
On 21/04/2004, at 10:45, Chris Yavelow [EMAIL PROTECTED] wrote: Now there has been considerable activity on the RB list, and the total speed is down to 77 ticks for RB, 70 for Revolution. But, looking at the Revolution code, I see that the hacks are optimized for 3-word searches, and that's not the intention. Also, RB counts all the duplicate matches (for a total of 248) while Rev doesn't count the dupes and comes to 192 matches. and later Thanks for the help in working this out. The people from the Revolution list had gradually optimized the code for 3-word strings. I have generated new search data consisting of random lengths from 3 to 7 words and the effect on the Revolution speed is staggering, while there is no effect on the RB speed. Chris, what are you doing? Several points come immediately to mind: - There are no hacks - The Rev code was not gradually optimised for 3-word strings. It was directly optimised for each successive data set you published; nothing gradual about it. - Why are you staggered by the effect on the Rev speed? If you read any of the previous posts (e.g. from Dar Scott) then you and we already knew instrb() was much faster than is in, and we have changed none of that. - Do you want dupes counted twice or not? - How many words do you wish to search for (you published 1-27 with a mode of 3 then said 4-7 but published 1-7 with a mode of 7) - Are searches repeated for either source or target text? - Your web site has for a couple of days published as the Rev code a mix of lines from RB and Rev i.e. rubbish. - Your data is wrong or else a tick lasts 42mS under RB but the usual ~17mS under Rev - Your web site promised to credit improvers (but please do not associate my name with it) but you have not fulfilled that promise for anyone at any time. Incidentally, I immediately cut your published Rev time to 2 seconds but I decline to publish for three reasons: - It should be obvious to you anyway, if you think in concepts or strategies and not hacks - I do not trust you have stated the problem completely - i.e. your real-world application - I no longer trust that you are comparing products in any broad sense (see my previously published comments in response to Ken Ray and to Norman Winn for consistency of my position). regards David ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: SC, Rev,and RB speed test K1,K2?? and data set
On 19/04/2004, at 2:00, [EMAIL PROTECTED] wrote: repeat for each word inWord in tMatchList put k2 into k1 put k3 into k2 put inWord into k3 put true into sMatch[k1 k2 k3] end repeat -- I have been sorta reading along, but what and where is k2 and k1 coming from? and where is the link to the data set. Thanks. Go to http://www.yav.com/speed.html and link to the the SAMPLE DATA download. tMatchLIst in the above contains the text to be searched. The loop then puts each word into k3 and hence into k2 and then k1 in successive iterations, so within the loop you always have the last three words (It actually starts with a one and two word index from the first and second iterations but these disappear in the intersection anyway and are not worth worrying about). The array index is concatenated from these three words to capture every successive three-word group in the file. regards David ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: SC, Rev,and RB speed test
On 17/04/2004, at 5:36, Chris Yavelow [EMAIL PROTECTED] wrote: ... In the meantime, I did put some realistic data up on my speedtest page: http://www.yav.com/speed.html I took Chris data and examined it. My solution below exploits that knowledge of the data but if it is genuinely a typical search set (most search material being three words or so) then the following does the trick. Using the algorithm on Chris' web page I process the material in 530 ticks on my machine (Chris does it in 494). With the code below this is cut to 51 ticks so it should run in 50 ticks on Chris' machine, an all-time record. The trick is to exploit intersect (look it up) which is amazingly fast at, er, intersecting. The intersection itself executes in around 50 milliSeconds or about 3 ticks. It is all the preparatory work which takes the other 48 ticks. on mouseUp -- local tFind,tSearch,tLine,tMatchList, sMS, sTicks set cursor to watch put empty into field TheResults put the milliseconds into sMS put ticks() into sTicks put field SearchTextList into stList put field targetText into tMatchList -- stripping quotes from both sets saves problems with single quotes -- or with quoted strings being treated as a word replace quote with empty in stList replace quote with empty in tMatchList -- Prepare the target text in all consecutive triplet groups put empty into k1 put empty into k2 repeat for each word inWord in tMatchList put k2 into k1 put k3 into k2 put inWord into k3 put true into tMatch[k1 k2 k3] end repeat repeat for each line inLine in stList if the number of words of inLine = 3 then put true into tSearch[inLine] else -- Do a simple search for groups other than three words if inLine is in tMatchList then put inLine return after MatchList end if end if end repeat -- Now for the Revolution! intersect tSearch with tMatch put keys(tSearch) cr MatchList into field TheResults put the milliseconds - sMS ms return ( ticks()-sticks ticks) return before field SpeedRecords end mouseUp Hope this is interesting, not to mention helpful. regards David Thanks for the comments, Chris ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: SC, Rev,and RB speed test
On 17/04/2004, at 21:46, Brian Yennie [EMAIL PROTECTED] wrote: It's amazing how many different optimizations we can find based on the type of data. There's the baseline brute force, there's mine which takes a constant factor out (by shrinking the text), but would fail if you had many different words throughout with the same suffixes (as odd as that may seem). There were a couple of methods that fly through redundant text. And there's your latest which really whoops it up on large texts with certain length search strings. I wonder on yours, could there be some advantage to be gleaned from the fact that longer searches can be broken down into shorter sub-searches (i.e. 6 words = 3 words + 3 words)? Could be interesting if there's a slick way to utilize that. From what I can tell, the algorithms roughly look like: Brute force: ~500 ticks Dual-G4 baseline, runs faster when there are more matches Redundancy array methods: As little as a few ticks, but slower on pseudo-random data Suffix indexing method: about 60-80% faster at eliminating matches and 20-40% slower at finding matches than brute force 3-word indexing method: About 10% overhead with 99% speedup on 3 word queries, same speed on others and also One interesting thing to note here... many of the algorithms using array indexing schemes give different results than the brute force. They tend to miss compound words, such as I like to use dashes--like this. Search for I like to use dashes and you may find that dashes--like was thought of as a word. Same problem with quotes. Brian Liked your token method, an approach I had not considered. I have not tackled the question of re-grouping the search text because at this stage I would need yet more information about Chris' intended application. I have assumed he is finding characteristic triplets in text to use in author-identification or to compare classes or styles of literature or some such. In these circumstances I doubt that punctuation matters. The only reason I stripped quotes in my version is that I noticed unbalanced quotes in the search text but in a presumed real application I would probably do it more comprehensively with something like: repeat with i = 33 to 47 replace NumToChar(i) in whateverText with space end repeat -- and so on Given that Chris' original SuperCard app takes over 15 seconds on the sample text while we now have it under a second, I suspect we can afford a few more bits of work to get the right technical result. I would like to see all of the prime strategies we have devised published on Chris Yavelow's web site, to prove the richness and versatility of RunRev as well as its speed. As Richard Gaskin said early on, there is more to an app than one speed test. regards David ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: SC, Rev,and RB speed test
On 18/04/2004, at 9:42, Ken Ray [EMAIL PROTECTED] wrote: If you haven't brought this up on the RealBasic list, you probably should to be fair... we've had a lot of chances to provide optimized routines; I'm assuming the RealBasic routine you use is one you developed... someone on the RB list may have a faster algorithm. Just looking for fairness in the comparison... Ken True enough and I welcome someone else having some fun with it but I think the point now is that it does not matter if our solutions are beaten. The perspective of the original problem was 15 seconds in the current application reducing to 8 (RR) or 1 (RB). Had we achieved, say, three seconds or better then I would have regarded the speed question as no longer material to the product decision and I suspect RG would take a stronger position than that. If 800 milliseconds (~ 20x faster than SC) is beaten to a pulp at, say, 200mS in an optimised RB strategy then who cares? Remember that writing a C++ external was explicitly excluded from the options in the speed test, so speed is not in fact the be- and end-all. regards David Ken Ray Sons of Thunder Software Email: [EMAIL PROTECTED] Web Site: http://www.sonsothunder.com/ ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: SC, Rev,and RB speed test
On 15/04/2004, at 17:51, Chris Yavelow [EMAIL PROTECTED] wrote: I'm conducting an informal speed test comparing identical projects in SuperCard (4.1.2), Revolution (2.2), and RealBasic (5.5.1). The projects match 3,000 short phrases against an 81,920 word text. There has already been some feedback and these simple projects are now running even faster. Each one is only a dozen lines of code. Here are the current statistics: RealBasic -- 234 ticks Revolution -- 1120 ticks - [1548 ticks or nearly 26 seconds on my 1GHz G4 Powerbook - DV] SuperCard -- 1889 ticks I've set up a page for downloading the sample projects, if you'd like to try to tweak them to run faster. The object is not the fewest lines of code, it is to create the fastest code (without xfcns or xcmds, etc.). You can inspect the latest version of the code there as well, and see the latest speed results (in ticks). I had another look at the test stack from Chris. His text to be searched (target text) comprises 8192 identical 42-character lines and his search text comprises 2900 identical 15-character lines and another 100 identical 10-character lines which match the target text. So, the array method put forward by Ken Ray and improved by Geoff Canyon resolves to searching a one line variable for either of two other lines. I am not surprised it is fast (37 mS on my machine). I created a string containing the sets 0-9, a-z and space and then generated text of 8192 lines each of 42 characters selected by randomly accessing that string 42 times. The search text was similarly created with 3000 lines of fifteen random characters each. There were no matches, and the array approach was of course slower than the original method, although not by a lot so it remains very relevant wherever a bit of replication is expected. I think Richard Gaskin's query is pertinent. The question is very close to find the intersection of two large sets. Is that the crux of the real life problem? Are there any other considerations? With more information about the real data I believe that we could improve the Rev performance in other ways so that it suffered no user-recognisable performance handicap in the real world. regards David ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: News: Retrolution 4 Released
On 02/04/2004, at 6:38, [EMAIL PROTECTED] wrote: NOW THAT I HAVE RETROLUTION ON MY OLD C64, I AM SIMPLY AMAZED AT HOW MUCH FASTER IT IS THAN TODAYS BLOATED SYSTEMS. WITH ONLY 61832 BYTES OF XTALK, I HAVE CREATED A NEURAL NETWORK THAT FAR EXCEEDS THE INTELLIGENCE LEVEL OF A MICROSOFT CEO. AFTER I OPTIMIZE THE CODE, I BELIEVE IT WILL FIT ON A 320K FLOPPY DISKETTE. ;-D ...and while we are on old com.uters, I am de.ressed at the lack of su..ort for my Ohio Scientific C1-4P, with 40KB flo..y disk drive and nice wooden side .anels on the case. Unfortunately, having only 32KB of RAM means that when I run Roger's .rogram it emulates a CEO with only half a brain. David ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Database Experience
On 16/03/2004, at 8:47, John Dixon [EMAIL PROTECTED] wrote: I am interested to know what database people are using with Revolution. What seems to be the favourite and for what reason... Are you using MySQL, Postgres or Valentina, for example... Valentina What prompted your choice ? Speed (execution) Are you using databases in a personal or commercial capacity ? Internal to own business Any information on this would be appreciated for an article on database use that I am working on. Sorry, I haven't much more to add really. Rather than posting your replies to the list, if you would reply to me offlist... That'll keep a lot of people happy. Well, for my part I am curious to see summary responses. cheers David Kind regards, John Dixon ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Upgrade version and pricing [was] Re: Fix it before moving ahead [OT]
On 15/03/2004, at 8:55, someone whom I am not attacking personally wrote: Ayup. It happens but that isn't necessarily the right way to do things. For example, contractors fail to fix warranty items on new homes all the time, claiming they are not defects and knowing that most people will not take the time to pursue them. It's a fact of life, but that doesn't make it right AND it doesn't confer immunity if someone gets REALLY ticked off and decides to approach the issue with the class action sledge hammer. Just look at Apple's approach to the iPod battery thing. They are entirely correct in saying, if a battery drops dead after a year that is not a manufacturing defect. Doesn't stop them from bad Apple's dirty little secret publicity nor does it prevent the same ticked off customers from availing themselves of the only recourse they really have--which is to get together a class actionl. Does it t matter that Compaq's iPaq is far, far worse with respect to battery life--also not user serviceable. Nope. That's no protection at all. My point in all this is that manufacturers CAN and do cram terms they want down the throats of customers all the time. And most of the time get away with it. But that doesn't make it right and it DOES make for very annoyed customers who are looking for a way to strike back. Is this any way to do business? I think not. What happened to the Golden Rule? BTW, the comments above are NOT to be construed as applying to RunRev and not even to Apple (although they ARE worse about some of this). By and large, both DO care about customers far more than those guys in Redmond. The comments are simply addressed at the question which was posed by Dar which I read to be: what should a manufacturer's obligation be when defects surface in a product they no longer sell. consumer warning strong statements /consumer warning rant There is little sense being spoken in this thread. The above set of non sequiturs is an example. The industry practice and RunRev policy of three-part changes (bug/minor/major) and associated pricing policies (none/small/large) is well established and of minor interest unless someone has a unique and commercially viable proposal which they should then put straight to Kevin Miller anyway. If a major upgrade emerges then new bug-fix work will cease on all previous versions, although you can continue to use the prior version at its last fix level as you please. What else do you reasonably expect from a software vendor? Using the expected changes to the Distribution Builder as an example: There were some bugs in the old Distribution Builder. There were also a lot of things which people thought could work better, and extensive discussion of it on the list of enterprise licence holders. Consequent on this a fine developer worked with RunRev on an upgraded version which is being tested. Yes, it contains bug fixes but better, it is a serious improvement in the product. If my licence says I should pay an upgrade fee then I will. Bandying words on the exact divider on the continuum between bug and feature is otiose if the product was not previously unusable (it was not) and there is actual product improvement (there is). Vehicle analogies are pointless. They are fixed term, quite specific and their like does not exist in the software industry today. Also, they exclude wear-and-tear on consumable parts, which is what an iPod battery is and always was. My own iPod battery is fading. My current Powerbook battery is down to 2.5 hrs max after nine months. I replaced that in the older TiBook after 18 months. So what? The fact that the supinely ignorant can extort money from Apple via the publicity of a class action is simply free lunching. YMMV. A while ago, I considered direct investment in RunRev, the company. I chose not to do so because, after consideration, the nature of a software company such as this exceeded my risk appetite at the time. Others have taken greater risk and I continue to benefit from their efforts. I support the company while limiting my risks to licence costs and to my reputation when I evangelise the product. If they appear to be dudding me I will protest, as I have before. If they are threatened by ludicrously self-serving licence misinterpretations or by people seeking a free lunch I will stand in their defence. /rant calm stuff This thread started, not even on this list, when Ken Norris merely (albeit in his somewhat absolutist fashion) asked that priority be shifted from new features to bug fixes. The balance between these is a difficult one for a company to judge and to keep. They can not afford either extreme, either financially or in reputation (i.e. their long term financial position). I look forward to the next version. /calm stuff David ___ use-revolution mailing list [EMAIL PROTECTED]
Re: Parentheses
On 23/02/2004, at 9:00, [EMAIL PROTECTED] wrote: From: [EMAIL PROTECTED] Date: 23 February 2004 5:20:08 GMT+11:00 To: [EMAIL PROTECTED] Subject: Re: PARENTHESES Reply-To: How to use Revolution [EMAIL PROTECTED] Your right about the ^ being a caret/carrot. But what then are the left and right angle brackets called besides left and right brackets or less than/greater than??? any ideas??? The nearest to a formal name for left and right angle brackets is guillemet. Normally, these appear as and are used in European languages but the single form, a single guillement, is also used in typography. However, the guillemet is actually quite a bit smaller than the angle bracket used in most computer character sets while typographers also use a taller, less-angled version called well actually I don't know what that one is called (Tall Guillemet? Slim Guille?), so someone still has room to enlighten me. It seems perfectly good to me to keep calling them left and right angle brackets, or else you will sound like you are navigating in a rally for a manic in a Citroen. cheers David T ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: mission critical apps
On and before 10/02/2004, at 7:19, several people wrote many things on this topic: Fundamentally, Alex is right but it does not matter a lot. So is Rob but in a different sphere. Meanwhile, I think Frank is wrong. Without going back to the original, I recall Alex's basic points as being: - Rev lacks the inherent or external tools to support large team development. - A Smalltalk-like message passing structure makes assurance of formal correctness difficult. I am not certain that the second point (as I have interpreted him) is true in the sense that it can not be dealt with in tool design or code management but the first alone is sufficient to wipe Rev out of large scale application development anyway. So, does this matter? While some of the commentary drifted between xTalk as a viable language and the actual topic of message model and team development, the nub appears to be: in what market is Rev playing, and is the tool you are using viable? In fact, I think this thread originally grew from Alex or someone's difficulty in getting Rev accepted as a development tool by a client. There was an article a year or so ago (there will be a ref in the archives somewhere) on xTalks. Essentially, it placed them as very high level RAD tools ideally adapted to glue functions. Recall that Alex never gainsaid Rev's productivity advantages, only its fitness for large scale development. I think his reference to mission critical is a little off topic in that mission critical is quite often a discovery after the software has been in use for a while. I would simply stick with a measure of size, which of course is highly correlated with mission-critical. Rob's defence of Rev's productivity and reliability is fair but again is off the core point. Rev is perfectly suited to those millions of small-scale niche (in the best sense) applications for business, on which the computing world actually thrives. It is also excellently suited to systems integration tasks of glueing unlike apps together, or post-processing standardised output to give interactive and enhanced access or multimedia presentation. In either of those roles, it can and will be used in the enterprise and is a powerful platform for a small firm marketing to those enterprises. It is just that it will not be used to re-write SAP or Sabre or ComputerShare or the like. It may help glue, say, the accounting system with a proprietary case management system and provide joint reporting from them or to enable common web access to a (Rev) engine reprocessing corporate data. These are things MIS generally does not want to do and present golden opportunities for small integration firms. Then, there are endless apps already made by people on this list. Core tools like Rob's SDB, Sarah's POP library and Shao Sean's LibSMTP. Apps like Oenolog and Tom's instructive CD or Alex' ARC (excuse me for not going on). They are providing reliable and effective service because they are based on a solid platform. Hence, I think Alex's positioning of Rev is fair but in my view not in any respect damaging. Let me put this another way. You could be a programmer in a huge enterprise or in a small business, possibly your own. Where have you chosen to work? Then choose the right tool for what you are doing and don't fret over what you are not doing. While I'm here, I may as well add my free trade comment on Frank's request for C-like syntax: - It will remove zero bugs from Rev - It is more likely to add programmer coding and reading bugs than to reduce them - It will make some people more comfortable with the language and others less. - Transcript is a perfectly good (in the vernacular sense) formal language as it stands. Those interested in it can always write the requisite pre-processor themselves and insert it into the editor, then release and maintain it for a price. The market will answer for their opinion. regards David ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Rev Review
Rev 2.1 has now been reviewed in Australian MacWorld (Feb p68) Andy Ihnatko's review is generally positive in a post-Hypercard way although I personally disagree with his closing comment: Just don't imagine that you'll be able to build the ambitious programs you can turn out in RealBasic and Xcode. regards David ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Directory Walker question
/Applications/Revolution 2.1.2/Revolution.app Creator: Type: On 05/02/2004, at 15:36, Barry Levine [EMAIL PROTECTED] wrote: In a number of earlier digests, there was discussion about the directory walker. I've copied that code into my script and, sure enough, it works exactly as advertised. However, in OSX, it also walks down through app bundles. I'd like to stop before diving into the bundle. However, I need to get the total size of the bundle (both data and resource) for later purposes. I've played with the detailed files function and it looks like I may have to use it to add up everything inside the bundle. I don't mind doing that (as Rev is really quite fast). Near as I can tell, I'd have to use the detailed files function after using the directory walker in order to add up the bytes of both forks of all the files, and then run a modified version of the directory walker routine which would permit me to recognize app bundles and end up with a list that's similar to what the user sees in the Finder. (Alternatively, once I have the detailed files of the entire tree, could I parse through it and eliminate what I don't need?) Here's what the directory walker sees (I've removed the enclosing folders to make it readable in this eMail): Adobe ImageReady 7.0/Adobe ImageReady 7.0,0,949 Adobe ImageReady 7.0/Contents/Info.plist,14148,0 Adobe ImageReady 7.0/Contents/MacOS/ACECarbonLib,526041,518 Adobe ImageReady 7.0/Contents/MacOS/ADM-PNG,46781,2989 Adobe ImageReady 7.0/Contents/MacOS/ADMCarbon Plugin,882650,71737 (and lots more lines listing the stuff inside the ImageReady app) So the big question is: How do I get the directory walker to recognize that it's encountered an OSX app bundle (ImageReady 7.0, in this case) and have it -not- examine what's inside. In the above example, it's already dropped inside the ImageReady bundle. Using the above example, what I'd like to end up with is simply Adobe ImageReady 7.0 as the only line. Barry I notice that in the detailed folders listing, an app bundle appears as follows (for example): Revolution.app,136,1535180800,1035608180,1068205493,1075788371,0,501,80, 777, Note it is in the folder list, not the file list, has question marks for creator/type and a .app suffix on the name. I am assuming this will provide reliable identification. When you encounter a folder of this nature, initiate directory walker for that folder alone (this is within your normal walk process - you will need to add this code), add up the components, and list it under the app bundle name with .app stripped. OK? Well, I think it should work :-) cheers David Thanks for any suggestions, Barry ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Comunication COM1: and a CNC milling machine (timeout?)
On Friday, Sep 19, 2003, at 01:29 Australia/Brisbane, [EMAIL PROTECTED] (Malte Brill) wrote: snip Quoting Sarah: You might want to try out my Serial test stack - available from my web page at http://www.troz.net/Rev/ I have just updated it so that it allows you to select termination characters i.e. whether sends should end with CR (ASCII 13), LF (ASCII 10) or CRLF and the same for receives. I think it will solve your reading problem, because it doesn't do a single read, but reads continuously as long as the port is open, reporting whenever it gets any data. That´s an interesting approach. I had a look at your stack, but couldn´t test it with the mill yet, as I disturb the production process every time I try testing the stack and they are really busy today. When I would use the method of testing if there is data sent, how would I know that the transmission is done? Could I try listening to the port until data is sent and then read until EOF? Or would I need to write a stop handler to terminate reading when no more data is sent? Malte While reading earlier bits in this thread I had forgotten that I wrote a similar stack a couple of years ago. These points are probably covered in Sarah's stacks but the following is the strategy I used. The device was an intelligent battery charger which simply pumped out data when it was working. No commands, no handshakes. I used three buttons, Clear, Prepare and Stop, with fields to show time, data and state (clear, waiting, running, stopped). Prepare started a listener which cycled looking for the first instance of data. If you have no input buffer then skip this step or roll it into the second. When it found data it started the Reader, Writer and Monitor routines (all running in cycles rather than continuously) Reader kept up with reading data, taking it in small chunks and using send in to run again at a short interval. With 300 baud input you should have no problem cycling yet still capture unbuffered characters. Writer logged the data to disk every half minute. (Skippable) Monitor ran at five minute intervals. If no new data had appeared in the last five minutes it cancelled the other handlers and closed the port. You can also press Stop to do the same. Since this device normally ran for over half an hour I did not hang around to watch the excitement :-). All of these intervals should be tailored to the machine with which you are communicating. For platform reasons (i.e. lack of successful USB access under OS X at the time) the draft in RR was transferred to HyperCard on an old Mac so I was using idle, but send in time should accomplish all the same today. regards David ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Deep Space
On Wednesday, Sep 10, 2003, at 15:06 Australia/Brisbane, Wouter [EMAIL PROTECTED] wrote: Hi, If this post is redundant don't read it. My workaround OS X only: snip change to eliminate the aliases get shell(ls -F) filter it with *[/] Redundant perhaps. More importantly, just wrong. Please read my previous posts on this, lest newbies be misled. The code and advice in my posts stands. It may be less confusing if you do not reply :-) cheers David Greetings WA ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Deep Space (was: The Directory Walker revisited)
On Monday, Sep 8, 2003, at 23:18 Australia/Brisbane, David Vaughan [EMAIL PROTECTED] wrote: Hmm. I have now encountered the same problem. As I wrote before, I had no difficulty with 100,000 files and directories 17 deep, but the same folders examined from their parent (the volume name) lead to a far higher depth count (should have been only 18) snip The alternative might be some trigger into circularity, which is what happened with permissions. Found it folks! On OS X systems the folder //Network contains a reference to the local computer, which is where you started, so round you go again. I made a specific adjustment at the beginning of the handler, thus: function walkDir dirPath if dirPath contains //Network then return empty end if -- etc as before Running this worked across the entire root volume, returning over 230,000 files in a 24MB list (maxDepth 18 as expected), no problems. The same circularity will equally affect an iterative routine, not only a recursive approach, so whatever you do you need to protect against the specific problem or simply not allow a user to walk from root. The point of this exercise was to confirm that stack size did not limit a recursive approach. Note also WA's apparent problem with an X11 sub-folder, although aliases did not appear to have added any circularity in my testing. Any routine should also be tested specifically on a Linux or Windows platform if it will be deployed there. The testing code comprises displaying the current path every time you hit a new maxDepth. regards David ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Deep Space
On Tuesday, Sep 9, 2003, at 21:33 Australia/Brisbane, Robert Brenstein [EMAIL PROTECTED] wrote: snip Hmm, actually, when one walks directories, shouldn't one walk only the true directories and treat aliases as files (which they are)? Yes. As I intimated in my previous post, and have now verified again by experiment, the walker is *not* fooled by an alias. I created this structure on a separate volume called sliver: tmp a real file, called CRS BC Report.mell a real directory, called parent of fake an alias to tmp On being asked to walk this, the handler returned two files as follows: /Volumes/sliver/tmp/CRS+BC+Report.mell /Volumes/sliver/tmp/parent of fake/tmp with maxDepth of 2, and did not loop. This is correct behaviour. The problem I described in my previous post does not arise from an alias, but from a reference in //Networks to [your computer name].local. which kicks off the cycling. regards David Robert ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Deep Space
On Tuesday, Sep 9, 2003, at 21:33 Australia/Brisbane, Wouter [EMAIL PROTECTED] wrote: WA But thank to this I discovered a difference in the alias folders. Try for yourself: Type in the msg box : set the directory to /etc;put the directories You get the directories in which you see etc as a directory. After this use open in the file menu and you will see that the etc folder is in fact an aliased folder. Make an aliased folder yourself and do: set the directory to /wherever_your_aliased_folder_is;put the detailed files you see the aliased folder is actually a file with a creator and type code of MACSfdrp. If you do: set the directory to /wherever_your_aliased_folder_is;put the folders you won't see a directory called as your aliased folder name. if you do: set the directory to /;put the detailed directories the etc aliased folder's creator an file type is This means that if if the directory walker stumbles on an aliased folder from the first kind pointing to its parentdirectory you get the loop which makes the recursinglevel go to its limit. No you don't. You are being fooled by doing this in the message box. I have no alias to /etc within /etc but if I did then it would not matter. What is happening to you is as follows: You set the directory to /etc -- success You set the directory to /etc/etc -- fails, and the directory remains set to /etc, but you do not see this in the message box You list the files and lo! you appear to have circularity because you have listed /etc again. If you run my most recent actual code (including Dar's permissions fix) on your /etc you will see that it works correctly, listing the alias as a file and not cycling. No additional special cases need to be checked for aliases. See also my response to Robert Brenstein, who recognised that this error should not occur. hope this clarifies it. regards David The problem is to recognize the special aliases. I made an incomplete solution to circumvent this problem and stumbled into yet another problem, but I have to investigate this a bit further before releasing it on the list. Excuse me for this appletalk but may be something similar can be found on the other platforms. Greetings, WA ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Deep Space
On Wednesday, Sep 10, 2003, at 12:29 Australia/Brisbane, Wouter [EMAIL PROTECTED]> wrote: snip This means that languages which use diacriticals can't use this version of the directory walker until the conversion is solved. It works as is. There is no problem because... change to eliminate the aliases get shell(ls -F) filter it with *[/] shell() returns for used in some cases to designate a folder is not necessary to deal with aliases, as explained in the digest in which your above note appeared and which I trust you will receive shortly. Character encoding problems do not arise on reading the directory alone. Hoping this is clear now. regards David Greetings, WA
Re: Deep Space (was: The Directory Walker revisited)
On Monday, Sep 8, 2003, at 18:12 Australia/Brisbane, Wouter [EMAIL PROTECTED] wrote: Thank you very much for answering for I see my confusion now. But the excellent recursive function from David Vaughn has encountered an other limit. It crashes Metacard/Revolution at about 20303 to 20335 iterations on my computer (tested on the complete Mac OS X volume which seems to have 10 folders, didn't go further by lack of time). Makes you think about what is more preferable, though this is an extreme condition. But it's probably something for the Metacard-engine coders to solve. Hmm. I have now encountered the same problem. As I wrote before, I had no difficulty with 100,000 files and directories 17 deep, but the same folders examined from their parent (the volume name) lead to a far higher depth count (should have been only 18) and did not finish after 30 minutes. There was no crash, per se, just endless processing. The amount of work being done makes this a bad one to try to trace. I am wondering if this is a problem arising from the amount of data (roughly estimated at 10MB considering a full path for every file) being returned on the stack as the function nears the top. The alternative might be some trigger into circularity, which is what happened with permissions. Perhaps it is OSX-specific. Is the same issue encountered on Windows or Linux please? Seems worth some work given the code should work for virtually any situation. regards David (Vaughan) Greetings, WA ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Deep Space
On Tuesday, Sep 9, 2003, at 07:20 Australia/Brisbane, Wouter [EMAIL PROTECTED] wrote: Correction: In this case it is the compiled_alias_folder at //etc/X11/xkb/compiled/ And you still have the honor. No, I have no such folder, not having compiled X11. I'll keep looking. regards David ReGreetings, WA ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: The Directory Walker revisited
On Friday, Sep 5, 2003, at 16:48 Australia/Brisbane, Dar Scott [EMAIL PROTECTED] wrote: Permissions! Good work Dar. Thanks. I'll add the path test for future safety. regards David ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution