Re: Don't know if this is a sily question...

This WebDNA talk-list message is from

2003


It keeps the original formatting.
numero = 50788
interpreted = N
texte = Ok, Ken... here's a quick and easy example. Count the total size of all the files in a folder and its sub-folders - to an unlimited folder depth.Using a recursive function, it took me about 5 minutes to write this, and it worked correctly on my first test:---begin code--- [function name=FolderSize] [math show=F]totSize=0[/math] [listfiles path=[url][theFolder][/url]] [if [isfile]=T][then] [math show=F]totSize=totSize+[size][/math] [/then][else] [math show=F]totSize=totSize+[FolderSize thefolder=[url][theFolder][filename][/url]][/math] [/else][/if] [/listfiles] [return][totSize][/return] [/function][text]myFolder=/[/text][!]Change this to any folder path, but make sure to leave a trailing slash[/!] [FolderSize theFolder=[url][myFolder][/url]] total bytes in [myFolder] ---end code---Time yourself performing the same task using a text variable solution. It can be done (I've done similar in the past), but it will take considerably more time for the initial coding and for testing and debugging. The text solution would need to be in an include file to accept a parameter, you'd need to hand-code a solution to handle recursive scope problems, and you'd need to be careful not to use any variable names in your include file that may be used by the rest of your code. That's what I mean by careful crafting.I'm working on a WebDNA 5 solution for performing mirrored and incremental backups of my web sites now. I'd been planning to do this for a long time, but it was not feasible to develop it under WebDNA 4 - recursive functions in WebDNA 5 have made it much easier to code and less prone to programming errors.- brianOn Thursday, May 29, 2003, at 07:36 PM, Kenneth Grome wrote:> I'm not sure what you mean by careful crafting when all you have to > do is wrap a [raw] context around the text variable value. There's > nothing in this simple task that I would consider careful crafting > any more than any other common webdna coding task. > > Also, you seem to be suggesting that the function solution can perform > 'recursively' but the text variable solution cannot. I have to > disagree with this. I have never seen a situation in which the text > variable solution does not work recursively. Do you have an example > that you can post to the list so we can see what you're talking about > here? > > My conclusion is that the text variable solution does the exact same > thing as the function solution -- and it works in v4 and v5 -- unlike > the function solution which works ONLY in v5. > > Oh, and if there is any question as to the use of the text variable > solution in multiple pages, it is a simple task to put the code into > an include file -- so it can be included in *any* webdna template on > the same server. > > Furthermore the text variable solution can be used on multiple webdna > servers -- by using tcpconnect to retrieve the template that has the > text variable code in it, and then interpreting that code inside the > local webdna template on the local server. > > > >> Yes, the text variable method is a useful technique, but takes >> careful crafting. I also have used similar techniques for years, but >> the new [function] context makes it sooo much easier, especially when >> you get more complex with the reusable code blocks, and when you want >> to do something recursive. It's worth the price of admission for me. >> >> - brian >> >> On Thursday, May 29, 2003, at 10:18 AM, Kenneth Grome wrote: >> >>>> As a related comment, using WebDNA 5 I find myself more often using >>>> [function]s where I used to use [include]s to handle recurring >>>> tasks. The formal use of parameters, the local scope variables, and >>>> the ability to define functions within the page itself as well as >>>> in a shared include file are compelling features. >>>> >>>> As a simple example: >>>> >>>> [function name=MyLink] >>>> [return]>>> db=....&value=[thevalue]&returnfield=ID]>[lookup >>>> db=....&value=[thevalue]&returnfield=title]
[/return] >>>> [/function] >>>> >>>> [search ...] >>>> [founditems] >>>> [MyLink thevalue=[whatever]] >>>> [/founditems] >>>> [/search] >>>> >>>> - brian >>> >>> >>> I've been doing something similar for years, without v5's function >>> context: >>> >>> [text]myLink=[raw]>> db=....&value=[thevalue]&returnfield=ID]>[lookup >>> db=....&value=[thevalue]&returnfield=title]
[/raw][/text] >>> >>> [search ...] >>> [founditems] >>> [myLink] >>> [/founditems] >>> [/search] >>> >>> This has always been an easy way to create a variable once at the >>> top of the page, and then use it any number of times further down on >>> the same page -- while preventing the webdna code inside the text >>> variable from being interpreted until the variable tag is used >>> further down on the page -- such as inside the founditems context in >>> this example. >>> -- >>> >>> Sincerely, >>> Kenneth Grome ------------------------------------------------------------- This message is sent to you because you are subscribed to the mailing list . To unsubscribe, E-mail to: To switch to the DIGEST mode, E-mail to Web Archive of this list is at: http://webdna.smithmicro.com/ Associated Messages, from the most recent to the oldest:

    
  1. Re: Don't know if this is a sily question... (Phillip Bonesteele 2003)
  2. Re: Don't know if this is a sily question... (Kenneth Grome 2003)
  3. Re: Don't know if this is a sily question... (Brian Fries 2003)
  4. Re: Don't know if this is a sily question... (Kenneth Grome 2003)
  5. Re: Don't know if this is a sily question... (Kenneth Grome 2003)
  6. Re: Don't know if this is a sily question... (Brian Fries 2003)
  7. Re: Don't know if this is a sily question... (devaulw@onebox.com 2003)
  8. Re: Don't know if this is a sily question... (Kenneth Grome 2003)
  9. Re: Don't know if this is a sily question... (John Peacock 2003)
  10. Re: Don't know if this is a sily question... (Brian Fries 2003)
  11. Re: Don't know if this is a sily question... (Alex McCombie 2003)
  12. Re: Don't know if this is a sily question... (John Peacock 2003)
  13. Re: Don't know if this is a sily question... (Alex McCombie 2003)
  14. Re: Don't know if this is a sily question... (Bob Minor 2003)
  15. Re: Don't know if this is a sily question... (Alan White 2003)
  16. Re: Don't know if this is a sily question... (Alan White 2003)
  17. Re: Don't know if this is a sily question... (Alex McCombie 2003)
  18. Re: Don't know if this is a sily question... (John Peacock 2003)
  19. Re: Don't know if this is a sily question... (Alan White 2003)
Ok, Ken... here's a quick and easy example. Count the total size of all the files in a folder and its sub-folders - to an unlimited folder depth.Using a recursive function, it took me about 5 minutes to write this, and it worked correctly on my first test:---begin code--- [function name=FolderSize] [math show=F]totSize=0[/math] [listfiles path=[url][theFolder][/url]] [if [isfile]=T][then] [math show=F]totSize=totSize+[size][/math] [/then][else] [math show=F]totSize=totSize+[FolderSize thefolder=[url][theFolder][filename][/url]][/math] [/else][/if] [/listfiles] [return][totSize][/return] [/function][text]myFolder=/[/text][!]Change this to any folder path, but make sure to leave a trailing slash[/!] [FolderSize theFolder=[url][myFolder][/url]] total bytes in [myFolder] ---end code---Time yourself performing the same task using a text variable solution. It can be done (I've done similar in the past), but it will take considerably more time for the initial coding and for testing and debugging. The text solution would need to be in an include file to accept a parameter, you'd need to hand-code a solution to handle recursive scope problems, and you'd need to be careful not to use any variable names in your include file that may be used by the rest of your code. That's what I mean by careful crafting.I'm working on a WebDNA 5 solution for performing mirrored and incremental backups of my web sites now. I'd been planning to do this for a long time, but it was not feasible to develop it under WebDNA 4 - recursive functions in WebDNA 5 have made it much easier to code and less prone to programming errors.- brianOn Thursday, May 29, 2003, at 07:36 PM, Kenneth Grome wrote:> I'm not sure what you mean by careful crafting when all you have to > do is wrap a [raw] context around the text variable value. There's > nothing in this simple task that I would consider careful crafting > any more than any other common webdna coding task. > > Also, you seem to be suggesting that the function solution can perform > 'recursively' but the text variable solution cannot. I have to > disagree with this. I have never seen a situation in which the text > variable solution does not work recursively. Do you have an example > that you can post to the list so we can see what you're talking about > here? > > My conclusion is that the text variable solution does the exact same > thing as the function solution -- and it works in v4 and v5 -- unlike > the function solution which works ONLY in v5. > > Oh, and if there is any question as to the use of the text variable > solution in multiple pages, it is a simple task to put the code into > an include file -- so it can be included in *any* webdna template on > the same server. > > Furthermore the text variable solution can be used on multiple webdna > servers -- by using tcpconnect to retrieve the template that has the > text variable code in it, and then interpreting that code inside the > local webdna template on the local server. > > > >> Yes, the text variable method is a useful technique, but takes >> careful crafting. I also have used similar techniques for years, but >> the new [function] context makes it sooo much easier, especially when >> you get more complex with the reusable code blocks, and when you want >> to do something recursive. It's worth the price of admission for me. >> >> - brian >> >> On Thursday, May 29, 2003, at 10:18 AM, Kenneth Grome wrote: >> >>>> As a related comment, using WebDNA 5 I find myself more often using >>>> [function]s where I used to use [include]s to handle recurring >>>> tasks. The formal use of parameters, the local scope variables, and >>>> the ability to define functions within the page itself as well as >>>> in a shared include file are compelling features. >>>> >>>> As a simple example: >>>> >>>> [function name=MyLink] >>>> [return]>>> db=....&value=[thevalue]&returnfield=ID]>[lookup >>>> db=....&value=[thevalue]&returnfield=title]
[/return] >>>> [/function] >>>> >>>> [search ...] >>>> [founditems] >>>> [MyLink thevalue=[whatever]] >>>> [/founditems] >>>> [/search] >>>> >>>> - brian >>> >>> >>> I've been doing something similar for years, without v5's function >>> context: >>> >>> [text]myLink=[raw]>> db=....&value=[thevalue]&returnfield=ID]>[lookup >>> db=....&value=[thevalue]&returnfield=title]
[/raw][/text] >>> >>> [search ...] >>> [founditems] >>> [myLink] >>> [/founditems] >>> [/search] >>> >>> This has always been an easy way to create a variable once at the >>> top of the page, and then use it any number of times further down on >>> the same page -- while preventing the webdna code inside the text >>> variable from being interpreted until the variable tag is used >>> further down on the page -- such as inside the founditems context in >>> this example. >>> -- >>> >>> Sincerely, >>> Kenneth Grome ------------------------------------------------------------- This message is sent to you because you are subscribed to the mailing list . To unsubscribe, E-mail to: To switch to the DIGEST mode, E-mail to Web Archive of this list is at: http://webdna.smithmicro.com/ Brian Fries

DOWNLOAD WEBDNA NOW!

Top Articles:

Talk List

The WebDNA community talk-list is the best place to get some help: several hundred extremely proficient programmers with an excellent knowledge of WebDNA and an excellent spirit will deliver all the tips and tricks you can imagine...

Related Readings:

Exclamation point (1997) Sub Categories (2000) RAM variables (1997) [WebDNA] [thisurlplusget] and [thisurl] - misbehaves (2012) No luck with taxes (1997) WebCat2: Items xx to xx shown, etc. (1997) WC in FL (1999) More questions about serial number dishing (1997) Before I Can Begin . . . (1998) Time for a hard questions. (1997) [OT] Live Chat with Video capability (2008) [OrderFile] being testy (2000) WebCat2: multiple currency support (1997) Individual Tax on Items (1998) authenticate and password (1998) Nested vs conditional (1997) Old BugaBoos (2000) multi-paragraph fields (1997) math a various prices (1997) Frames and WebCat (1997)