cfparam vs. cfif/isDefined/cfset

2002-03-26 Thread Earl, George

Here is my application.cfm file:

cfapplication name=appname applicationtimeout=#CreateTimeSpan(2, 0, 0,
0)#

cfparam name=application.appnameroot default=/appname
cfparam name=application.includesDir default=/appname/includes
cfparam name=application.imagesDir default=/appname/images
cfparam name=application.menusDir default=/appname/menus
cfparam name=application.templatesDir default=/appname/templates
cfparam name=application.smapDir default=/appname/smap

Should I be locking these cfparam tags? Should I wrap them all in one lock
or should I lock each one individually?

What is the difference between using cfparam tags as I have above and using
cfif with isDefined and cfset to accomplish the same thing? Is one method a
better practice than the other?

Thanks!

George
[EMAIL PROTECTED]
__
Structure your ColdFusion code with Fusebox. Get the official book at 
http://www.fusionauthority.com/bkinfo.cfm
FAQ: http://www.thenetprofits.co.uk/coldfusion/faq
Archives: http://www.mail-archive.com/cf-talk@houseoffusion.com/
Unsubscribe: http://www.houseoffusion.com/index.cfm?sidebar=lists



RE: cfparam vs. cfif/isDefined/cfset

2002-03-26 Thread Dave Watts

 Here is my application.cfm file:
 
 cfapplication name=appname 
 applicationtimeout=#CreateTimeSpan(2, 0, 0,
 0)#
 
 cfparam name=application.appnameroot default=/appname
 cfparam name=application.includesDir default=/appname/includes
 cfparam name=application.imagesDir default=/appname/images
 cfparam name=application.menusDir default=/appname/menus
 cfparam name=application.templatesDir default=/appname/templates
 cfparam name=application.smapDir default=/appname/smap
 
 Should I be locking these cfparam tags? 

Yes. Make sure you set TYPE=EXCLUSIVE, since you may be setting the
values.

 Should I wrap them all in one lock or should I lock each 
 one individually?

I'd wrap them all in one lock.

 What is the difference between using cfparam tags as I have 
 above and using cfif with isDefined and cfset to accomplish 
 the same thing? 

There's no functional difference between the two.

 Is one method a better practice than the other?

That's a good question. I use CFPARAM for this, myself, but I suspect that
it performs more slowly in certain situations. In any case, though, the
difference will be insignificant, and one line of code is better than three,
all other things being equal.

Dave Watts, CTO, Fig Leaf Software
http://www.figleaf.com/
voice: (202) 797-5496
fax: (202) 797-5444

__
Structure your ColdFusion code with Fusebox. Get the official book at 
http://www.fusionauthority.com/bkinfo.cfm
FAQ: http://www.thenetprofits.co.uk/coldfusion/faq
Archives: http://www.mail-archive.com/cf-talk@houseoffusion.com/
Unsubscribe: http://www.houseoffusion.com/index.cfm?sidebar=lists



Re: cfparam vs. cfif/isDefined/cfset

2002-03-26 Thread Bryan Stevenson

Definately wrap a lock around those, and I would only run that block if 1 of the vars 
inside isn't
defined (if 1 isn't then they all aren'tlike when CF Server is restarted).

As far as CFPARAM goes
You are correct in using it herewhy write 3 lines of code when you can write 1 ;-)

HTH

Bryan Stevenson
VP  Director of E-Commerce Development
Electric Edge Systems Group Inc.
p. 250.920.8830
e. [EMAIL PROTECTED]
-
Macromedia Associate Partner
www.macromedia.com
-
Vancouver Island ColdFusion Users Group
Founder  Director
www.cfug-vancouverisland.com

- Original Message -
From: Earl, George [EMAIL PROTECTED]
To: CF-Talk [EMAIL PROTECTED]
Sent: Tuesday, March 26, 2002 8:21 AM
Subject: cfparam vs. cfif/isDefined/cfset


 Here is my application.cfm file:

 cfapplication name=appname applicationtimeout=#CreateTimeSpan(2, 0, 0,
 0)#

 cfparam name=application.appnameroot default=/appname
 cfparam name=application.includesDir default=/appname/includes
 cfparam name=application.imagesDir default=/appname/images
 cfparam name=application.menusDir default=/appname/menus
 cfparam name=application.templatesDir default=/appname/templates
 cfparam name=application.smapDir default=/appname/smap

 Should I be locking these cfparam tags? Should I wrap them all in one lock
 or should I lock each one individually?

 What is the difference between using cfparam tags as I have above and using
 cfif with isDefined and cfset to accomplish the same thing? Is one method a
 better practice than the other?

 Thanks!

 George
 [EMAIL PROTECTED]
 
__
This list and all House of Fusion resources hosted by CFHosting.com. The place for 
dependable ColdFusion Hosting.
FAQ: http://www.thenetprofits.co.uk/coldfusion/faq
Archives: http://www.mail-archive.com/cf-talk@houseoffusion.com/
Unsubscribe: http://www.houseoffusion.com/index.cfm?sidebar=lists



Re: cfparam vs. cfif/isDefined/cfset

2002-03-26 Thread Michael Dinowitz

1. You should lock the entire group with a CFLOCK and a scope of application. 
2. An IsDefined() with a set is actually slightly faster than a CFAPPLICATION. There's 
even a UDF that does just this and its still faster even with the small UDF overhead. 
Note that this is limited to the isdefined() then default. When you start doing the 
other things that a CFPARAM is useful for then the balance changes.

At 11:21 AM 3/26/02, you wrote:
Here is my application.cfm file:

cfapplication name=appname applicationtimeout=#CreateTimeSpan(2, 0, 0,
0)#

cfparam name=application.appnameroot default=/appname
cfparam name=application.includesDir default=/appname/includes
cfparam name=application.imagesDir default=/appname/images
cfparam name=application.menusDir default=/appname/menus
cfparam name=application.templatesDir default=/appname/templates
cfparam name=application.smapDir default=/appname/smap

Should I be locking these cfparam tags? Should I wrap them all in one lock
or should I lock each one individually?

What is the difference between using cfparam tags as I have above and using
cfif with isDefined and cfset to accomplish the same thing? Is one method a
better practice than the other?

Thanks!

George
[EMAIL PROTECTED]

__
Structure your ColdFusion code with Fusebox. Get the official book at 
http://www.fusionauthority.com/bkinfo.cfm
FAQ: http://www.thenetprofits.co.uk/coldfusion/faq
Archives: http://www.mail-archive.com/cf-talk@houseoffusion.com/
Unsubscribe: http://www.houseoffusion.com/index.cfm?sidebar=lists



Re: cfparam vs. cfif/isDefined/cfset

2002-03-26 Thread Sharon DiOrio

I tend to set all the commonly used defaults as Request scope variables.  No
locking, no cfparam, available anywhere.

cfscript
REQUEST.dsn = myDSN;
REQUEST.dbType = dbtype;
REQUEST.webRoot = C:/inetpub/wwwroot/;
etc...
/cfscript

PS, Good to know that UDFs are faster.  Are there any exceptions to the
rule?

Sharon
- Original Message -
From: Michael Dinowitz [EMAIL PROTECTED]
To: CF-Talk [EMAIL PROTECTED]
Sent: Tuesday, March 26, 2002 11:35 AM
Subject: Re: cfparam vs. cfif/isDefined/cfset


 1. You should lock the entire group with a CFLOCK and a scope of
application.
 2. An IsDefined() with a set is actually slightly faster than a
CFAPPLICATION. There's even a UDF that does just this and its still faster
even with the small UDF overhead. Note that this is limited to the
isdefined() then default. When you start doing the other things that a
CFPARAM is useful for then the balance changes.

 At 11:21 AM 3/26/02, you wrote:
 Here is my application.cfm file:
 
 cfapplication name=appname applicationtimeout=#CreateTimeSpan(2, 0, 0,
 0)#
 
 cfparam name=application.appnameroot default=/appname
 cfparam name=application.includesDir default=/appname/includes
 cfparam name=application.imagesDir default=/appname/images
 cfparam name=application.menusDir default=/appname/menus
 cfparam name=application.templatesDir default=/appname/templates
 cfparam name=application.smapDir default=/appname/smap
 
 Should I be locking these cfparam tags? Should I wrap them all in one
lock
 or should I lock each one individually?
 
 What is the difference between using cfparam tags as I have above and
using
 cfif with isDefined and cfset to accomplish the same thing? Is one method
a
 better practice than the other?
 
 Thanks!
 
 George
 [EMAIL PROTECTED]
 
 
__
Structure your ColdFusion code with Fusebox. Get the official book at 
http://www.fusionauthority.com/bkinfo.cfm
FAQ: http://www.thenetprofits.co.uk/coldfusion/faq
Archives: http://www.mail-archive.com/cf-talk@houseoffusion.com/
Unsubscribe: http://www.houseoffusion.com/index.cfm?sidebar=lists



Re: cfparam vs. cfif/isDefined/cfset

2002-03-26 Thread Tomo Smith

there is however a minute difference between cfparam and the if/else
block...  the if/else block outperforms the params.  more code maybe, but
when writing the the application I recommend doing it as quickly as possible
and with exclusive locks.
- Original Message -
From: Bryan Stevenson [EMAIL PROTECTED]
To: CF-Talk [EMAIL PROTECTED]
Sent: Tuesday, March 26, 2002 4:33 PM
Subject: Re: cfparam vs. cfif/isDefined/cfset


 Definately wrap a lock around those, and I would only run that block if 1
of the vars inside isn't
 defined (if 1 isn't then they all aren'tlike when CF Server is
restarted).

 As far as CFPARAM goes
 You are correct in using it herewhy write 3 lines of code when you can
write 1 ;-)

 HTH

 Bryan Stevenson
 VP  Director of E-Commerce Development
 Electric Edge Systems Group Inc.
 p. 250.920.8830
 e. [EMAIL PROTECTED]
 -
 Macromedia Associate Partner
 www.macromedia.com
 -
 Vancouver Island ColdFusion Users Group
 Founder  Director
 www.cfug-vancouverisland.com

 - Original Message -
 From: Earl, George [EMAIL PROTECTED]
 To: CF-Talk [EMAIL PROTECTED]
 Sent: Tuesday, March 26, 2002 8:21 AM
 Subject: cfparam vs. cfif/isDefined/cfset


  Here is my application.cfm file:
 
  cfapplication name=appname applicationtimeout=#CreateTimeSpan(2, 0,
0,
  0)#
 
  cfparam name=application.appnameroot default=/appname
  cfparam name=application.includesDir default=/appname/includes
  cfparam name=application.imagesDir default=/appname/images
  cfparam name=application.menusDir default=/appname/menus
  cfparam name=application.templatesDir default=/appname/templates
  cfparam name=application.smapDir default=/appname/smap
 
  Should I be locking these cfparam tags? Should I wrap them all in one
lock
  or should I lock each one individually?
 
  What is the difference between using cfparam tags as I have above and
using
  cfif with isDefined and cfset to accomplish the same thing? Is one
method a
  better practice than the other?
 
  Thanks!
 
  George
  [EMAIL PROTECTED]
 
 
__
Get the mailserver that powers this list at http://www.coolfusion.com
FAQ: http://www.thenetprofits.co.uk/coldfusion/faq
Archives: http://www.mail-archive.com/cf-talk@houseoffusion.com/
Unsubscribe: http://www.houseoffusion.com/index.cfm?sidebar=lists



Re: cfparam vs. cfif/isDefined/cfset

2002-03-26 Thread Chris Norloff

Yes, they MUST be locked.

These look like variables that don't change - I'd do a CFIF test on one, and if it 
doesn't exist then set them all.  As long as you always set them all together, you can 
use the existence of one to test for all.

This way the app vars are set only once, and don't bog down your pages, since 
Application.cfm is called with every request.

Chris Norloff

-- Original Message --
from: Earl, George [EMAIL PROTECTED]
Reply-To: [EMAIL PROTECTED]
date: Tue, 26 Mar 2002 11:21:07 -0500

Here is my application.cfm file:

cfapplication name=appname applicationtimeout=#CreateTimeSpan(2, 0, 0,
0)#

cfparam name=application.appnameroot default=/appname
cfparam name=application.includesDir default=/appname/includes
cfparam name=application.imagesDir default=/appname/images
cfparam name=application.menusDir default=/appname/menus
cfparam name=application.templatesDir default=/appname/templates
cfparam name=application.smapDir default=/appname/smap

Should I be locking these cfparam tags? Should I wrap them all in one lock
or should I lock each one individually?

What is the difference between using cfparam tags as I have above and using
cfif with isDefined and cfset to accomplish the same thing? Is one method a
better practice than the other?

Thanks!

George
[EMAIL PROTECTED]

__
Get the mailserver that powers this list at http://www.coolfusion.com
FAQ: http://www.thenetprofits.co.uk/coldfusion/faq
Archives: http://www.mail-archive.com/cf-talk@houseoffusion.com/
Unsubscribe: http://www.houseoffusion.com/index.cfm?sidebar=lists



RE: cfparam vs. cfif/isDefined/cfset

2002-03-26 Thread Justin Hansen

Yeah, the request rounte it the way to go. I also have a Settings table in
my apps for application/request vars used in a particular application. Take
a look at this snip from my application.cfm

cfscript
request.dsSQL = whatever;
request.RootURL = http://whatever.com;;
request.RootPath = x:\whatever\whatever.com;
request.zeroGUID = ----;

/cfscript


!--- create application.setting.Struct and request.setting.Struct ---
cflock type=READONLY scope=APPLICATION timeout=10
cfset locAppDefined = isDefined(application.setting)
/cflock

cfif locAppDefined eq 0 or isDefined(url.resetapp)
cfquery name=qrySettings datasource=#request.dsSQL#
SELECT SettingName, SettingValue
FROM Settings
/cfquery

cflock type=EXCLUSIVE scope=APPLICATION timeout=10
cfscript
structDelete(application, setting);
application.setting = StructNew();
for (i=1; i lte qrySettings.recordCount; i=i+1) {
application.setting.#qrySettings.SettingName[i]# =
qrySettings.SettingValue[i];
}
/cfscript
/cflock
/cfif

cflock type=READONLY scope=APPLICATION timeout=10
cfscript
request.setting = StructNew();
request.setting = Duplicate(application.setting);
/cfscript
/cflock


Justin Hansen
--
Uhlig Communications
Web Developer / Programmer
--
[EMAIL PROTECTED]
913-498-0123 ext 284
--

-Original Message-
From: Sharon DiOrio [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, March 26, 2002 11:10 AM
To: CF-Talk
Subject: Re: cfparam vs. cfif/isDefined/cfset


I tend to set all the commonly used defaults as Request scope variables.  No
locking, no cfparam, available anywhere.

cfscript
REQUEST.dsn = myDSN;
REQUEST.dbType = dbtype;
REQUEST.webRoot = C:/inetpub/wwwroot/;
etc...
/cfscript

PS, Good to know that UDFs are faster.  Are there any exceptions to the
rule?

Sharon
- Original Message -
From: Michael Dinowitz [EMAIL PROTECTED]
To: CF-Talk [EMAIL PROTECTED]
Sent: Tuesday, March 26, 2002 11:35 AM
Subject: Re: cfparam vs. cfif/isDefined/cfset


 1. You should lock the entire group with a CFLOCK and a scope of
application.
 2. An IsDefined() with a set is actually slightly faster than a
CFAPPLICATION. There's even a UDF that does just this and its still faster
even with the small UDF overhead. Note that this is limited to the
isdefined() then default. When you start doing the other things that a
CFPARAM is useful for then the balance changes.

 At 11:21 AM 3/26/02, you wrote:
 Here is my application.cfm file:
 
 cfapplication name=appname applicationtimeout=#CreateTimeSpan(2, 0, 0,
 0)#
 
 cfparam name=application.appnameroot default=/appname
 cfparam name=application.includesDir default=/appname/includes
 cfparam name=application.imagesDir default=/appname/images
 cfparam name=application.menusDir default=/appname/menus
 cfparam name=application.templatesDir default=/appname/templates
 cfparam name=application.smapDir default=/appname/smap
 
 Should I be locking these cfparam tags? Should I wrap them all in one
lock
 or should I lock each one individually?
 
 What is the difference between using cfparam tags as I have above and
using
 cfif with isDefined and cfset to accomplish the same thing? Is one method
a
 better practice than the other?
 
 Thanks!
 
 George
 [EMAIL PROTECTED]
 


__
This list and all House of Fusion resources hosted by CFHosting.com. The place for 
dependable ColdFusion Hosting.
FAQ: http://www.thenetprofits.co.uk/coldfusion/faq
Archives: http://www.mail-archive.com/cf-talk@houseoffusion.com/
Unsubscribe: http://www.houseoffusion.com/index.cfm?sidebar=lists



RE: cfparam vs. cfif/isDefined/cfset

2002-03-26 Thread Tony_Petruzzi

why use the application scope, when you have the request scope and you don't
have to mess with locking.

Anthony Petruzzi
Webmaster
954-321-4703
http://www.sheriff.org


-Original Message-
From: Chris Norloff [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, March 26, 2002 1:11 PM
To: CF-Talk
Subject: Re: cfparam vs. cfif/isDefined/cfset


Yes, they MUST be locked.

These look like variables that don't change - I'd do a CFIF test on one, and
if it doesn't exist then set them all.  As long as you always set them all
together, you can use the existence of one to test for all.

This way the app vars are set only once, and don't bog down your pages,
since Application.cfm is called with every request.

Chris Norloff

-- Original Message --
from: Earl, George [EMAIL PROTECTED]
Reply-To: [EMAIL PROTECTED]
date: Tue, 26 Mar 2002 11:21:07 -0500

Here is my application.cfm file:

cfapplication name=appname applicationtimeout=#CreateTimeSpan(2, 0, 0,
0)#

cfparam name=application.appnameroot default=/appname
cfparam name=application.includesDir default=/appname/includes
cfparam name=application.imagesDir default=/appname/images
cfparam name=application.menusDir default=/appname/menus
cfparam name=application.templatesDir default=/appname/templates
cfparam name=application.smapDir default=/appname/smap

Should I be locking these cfparam tags? Should I wrap them all in one lock
or should I lock each one individually?

What is the difference between using cfparam tags as I have above and using
cfif with isDefined and cfset to accomplish the same thing? Is one method a
better practice than the other?

Thanks!

George
[EMAIL PROTECTED]


__
This list and all House of Fusion resources hosted by CFHosting.com. The place for 
dependable ColdFusion Hosting.
FAQ: http://www.thenetprofits.co.uk/coldfusion/faq
Archives: http://www.mail-archive.com/cf-talk@houseoffusion.com/
Unsubscribe: http://www.houseoffusion.com/index.cfm?sidebar=lists



RE: cfparam vs. cfif/isDefined/cfset

2002-03-26 Thread Shawn Grover

I agree, if you are using the application scope, they must be locked.
However, I fail to see a need to scope the variables (meaning local scope).
If Application.cfm gets run on every page (except includes, cfmodules/custom
tags), then these variables are ALWAYS available to you.

As for the CFIF to determine if they exist, that's the purpose of CFPARAM
with a default attribute.  If the parameter exists, it is used as is,
otherwise it is created with the default value.  I've heard some talk over
time as to performance issues and such regarding CFPARAM and IsDefined(),
but have never seen a definitive answer saying one is most definetly
faster - and my own testing says they are both fast enough (for my purposes
at least).

Some people will recommend putting all your variables in the Request scope
(thereby allowing custom tags to have access to them).  I look at this as
declaring all your variables as global - which is frowned on in other
programming languages (C/C++, VB, Fortran, etc.) because it means more
care/management is required to make sure they are not being inadvertently
changed in some obscure function.  It is better programming practice to use
the smallest scope (local scope) where possible, and pass parameters to
functions (or custom tags in this case).  Those who would dispute this
either know something I don't, or don't have much experience outside web
development (no offense intended...).

As for my own practices regarding variables similar to what you've shown, I
declare a LOCAL scoped structure called App.
Then make each variable a member of the structure.  For example:

cfscript
App = StructNew();
//Datasources
StructInsert(App, DSN, MyDSN);

//Locations
StructInsert(App, BaseURL, http://localhost/myapp;);
StructInsert(App, BaseDirectory, /myapp);
structInsert(App, IncludesDir, #App.BaseDirectory#/includes;

..
/cfscript

With a little more thought, it's possible to declare the structure in the
application or session scope, and only create it once.  Just be sure to lock
where needed.  And keep in mind that only YOU know the right answer for your
needs.

My two cents worth.

Shawn Grover

-Original Message-
From: Chris Norloff [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, March 26, 2002 1:11 PM
To: CF-Talk
Subject: Re: cfparam vs. cfif/isDefined/cfset


Yes, they MUST be locked.

These look like variables that don't change - I'd do a CFIF test on one, and
if it doesn't exist then set them all.  As long as you always set them all
together, you can use the existence of one to test for all.

This way the app vars are set only once, and don't bog down your pages,
since Application.cfm is called with every request.

Chris Norloff

-- Original Message --
from: Earl, George [EMAIL PROTECTED]
Reply-To: [EMAIL PROTECTED]
date: Tue, 26 Mar 2002 11:21:07 -0500

Here is my application.cfm file:

cfapplication name=appname applicationtimeout=#CreateTimeSpan(2, 0, 0,
0)#

cfparam name=application.appnameroot default=/appname
cfparam name=application.includesDir default=/appname/includes
cfparam name=application.imagesDir default=/appname/images
cfparam name=application.menusDir default=/appname/menus
cfparam name=application.templatesDir default=/appname/templates
cfparam name=application.smapDir default=/appname/smap

Should I be locking these cfparam tags? Should I wrap them all in one lock
or should I lock each one individually?

What is the difference between using cfparam tags as I have above and using
cfif with isDefined and cfset to accomplish the same thing? Is one method a
better practice than the other?

Thanks!

George
[EMAIL PROTECTED]



__
Structure your ColdFusion code with Fusebox. Get the official book at 
http://www.fusionauthority.com/bkinfo.cfm
FAQ: http://www.thenetprofits.co.uk/coldfusion/faq
Archives: http://www.mail-archive.com/cf-talk@houseoffusion.com/
Unsubscribe: http://www.houseoffusion.com/index.cfm?sidebar=lists



RE: cfparam vs. cfif/isDefined/cfset

2002-03-26 Thread Chris Norloff

So you don't have to set the variable again and again, with every request.

Chris Norloff

-- Original Message --
from: [EMAIL PROTECTED]
Reply-To: [EMAIL PROTECTED]
date: Tue, 26 Mar 2002 13:18:40 -0500

why use the application scope, when you have the request scope and you don't
have to mess with locking.

Anthony Petruzzi
Webmaster
954-321-4703
http://www.sheriff.org


-Original Message-
From: Chris Norloff [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, March 26, 2002 1:11 PM
To: CF-Talk
Subject: Re: cfparam vs. cfif/isDefined/cfset


Yes, they MUST be locked.

These look like variables that don't change - I'd do a CFIF test on one, and
if it doesn't exist then set them all.  As long as you always set them all
together, you can use the existence of one to test for all.

This way the app vars are set only once, and don't bog down your pages,
since Application.cfm is called with every request.

Chris Norloff

-- Original Message --
from: Earl, George [EMAIL PROTECTED]
Reply-To: [EMAIL PROTECTED]
date: Tue, 26 Mar 2002 11:21:07 -0500

Here is my application.cfm file:

cfapplication name=appname applicationtimeout=#CreateTimeSpan(2, 0, 0,
0)#

cfparam name=application.appnameroot default=/appname
cfparam name=application.includesDir default=/appname/includes
cfparam name=application.imagesDir default=/appname/images
cfparam name=application.menusDir default=/appname/menus
cfparam name=application.templatesDir default=/appname/templates
cfparam name=application.smapDir default=/appname/smap

Should I be locking these cfparam tags? Should I wrap them all in one lock
or should I lock each one individually?

What is the difference between using cfparam tags as I have above and using
cfif with isDefined and cfset to accomplish the same thing? Is one method a
better practice than the other?

Thanks!

George
[EMAIL PROTECTED]



__
This list and all House of Fusion resources hosted by CFHosting.com. The place for 
dependable ColdFusion Hosting.
FAQ: http://www.thenetprofits.co.uk/coldfusion/faq
Archives: http://www.mail-archive.com/cf-talk@houseoffusion.com/
Unsubscribe: http://www.houseoffusion.com/index.cfm?sidebar=lists



RE: cfparam vs. cfif/isDefined/cfset

2002-03-26 Thread Tony_Petruzzi

if you declare the variable inside the application.cfm, then you don't have
to set them with every request.

Anthony Petruzzi
Webmaster
954-321-4703
http://www.sheriff.org


-Original Message-
From: Chris Norloff [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, March 26, 2002 1:46 PM
To: CF-Talk
Subject: RE: cfparam vs. cfif/isDefined/cfset


So you don't have to set the variable again and again, with every request.

Chris Norloff

-- Original Message --
from: [EMAIL PROTECTED]
Reply-To: [EMAIL PROTECTED]
date: Tue, 26 Mar 2002 13:18:40 -0500

why use the application scope, when you have the request scope and you
don't
have to mess with locking.

Anthony Petruzzi
Webmaster
954-321-4703
http://www.sheriff.org


-Original Message-
From: Chris Norloff [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, March 26, 2002 1:11 PM
To: CF-Talk
Subject: Re: cfparam vs. cfif/isDefined/cfset


Yes, they MUST be locked.

These look like variables that don't change - I'd do a CFIF test on one,
and
if it doesn't exist then set them all.  As long as you always set them all
together, you can use the existence of one to test for all.

This way the app vars are set only once, and don't bog down your pages,
since Application.cfm is called with every request.

Chris Norloff

-- Original Message --
from: Earl, George [EMAIL PROTECTED]
Reply-To: [EMAIL PROTECTED]
date: Tue, 26 Mar 2002 11:21:07 -0500

Here is my application.cfm file:

cfapplication name=appname applicationtimeout=#CreateTimeSpan(2, 0, 0,
0)#

cfparam name=application.appnameroot default=/appname
cfparam name=application.includesDir default=/appname/includes
cfparam name=application.imagesDir default=/appname/images
cfparam name=application.menusDir default=/appname/menus
cfparam name=application.templatesDir default=/appname/templates
cfparam name=application.smapDir default=/appname/smap

Should I be locking these cfparam tags? Should I wrap them all in one lock
or should I lock each one individually?

What is the difference between using cfparam tags as I have above and
using
cfif with isDefined and cfset to accomplish the same thing? Is one method
a
better practice than the other?

Thanks!

George
[EMAIL PROTECTED]




__
This list and all House of Fusion resources hosted by CFHosting.com. The place for 
dependable ColdFusion Hosting.
FAQ: http://www.thenetprofits.co.uk/coldfusion/faq
Archives: http://www.mail-archive.com/cf-talk@houseoffusion.com/
Unsubscribe: http://www.houseoffusion.com/index.cfm?sidebar=lists



RE: cfparam vs. cfif/isDefined/cfset

2002-03-26 Thread Chris Norloff

cfparam checks only one variable at a time.  The point is to check one variable of a 
bunch that are always set together, and se them all if it doesn't exist.  

For example: we maintain 5 server locations, some secure and some not.  Some of the 
site-specific information is contained in application scoped variables.  We either set 
them all or we don't set any.  Thus, we check for one of them, and if it doesn't exist 
then set all of them.

This is much faster than running cfparam on every single variable.

Chris Norloff


-- Original Message --
from: Shawn Grover [EMAIL PROTECTED]
Reply-To: [EMAIL PROTECTED]
date: Tue, 26 Mar 2002 11:47:27 -0700

I agree, if you are using the application scope, they must be locked.
However, I fail to see a need to scope the variables (meaning local scope).
If Application.cfm gets run on every page (except includes, cfmodules/custom
tags), then these variables are ALWAYS available to you.

As for the CFIF to determine if they exist, that's the purpose of CFPARAM
with a default attribute.  If the parameter exists, it is used as is,
otherwise it is created with the default value.  I've heard some talk over
time as to performance issues and such regarding CFPARAM and IsDefined(),
but have never seen a definitive answer saying one is most definetly
faster - and my own testing says they are both fast enough (for my purposes
at least).

Some people will recommend putting all your variables in the Request scope
(thereby allowing custom tags to have access to them).  I look at this as
declaring all your variables as global - which is frowned on in other
programming languages (C/C++, VB, Fortran, etc.) because it means more
care/management is required to make sure they are not being inadvertently
changed in some obscure function.  It is better programming practice to use
the smallest scope (local scope) where possible, and pass parameters to
functions (or custom tags in this case).  Those who would dispute this
either know something I don't, or don't have much experience outside web
development (no offense intended...).

As for my own practices regarding variables similar to what you've shown, I
declare a LOCAL scoped structure called App.
Then make each variable a member of the structure.  For example:

cfscript
   App = StructNew();
   //Datasources
   StructInsert(App, DSN, MyDSN);

   //Locations
   StructInsert(App, BaseURL, http://localhost/myapp;);
   StructInsert(App, BaseDirectory, /myapp);
   structInsert(App, IncludesDir, #App.BaseDirectory#/includes;

   ..
/cfscript

With a little more thought, it's possible to declare the structure in the
application or session scope, and only create it once.  Just be sure to lock
where needed.  And keep in mind that only YOU know the right answer for your
needs.

My two cents worth.

Shawn Grover

-Original Message-
From: Chris Norloff [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, March 26, 2002 1:11 PM
To: CF-Talk
Subject: Re: cfparam vs. cfif/isDefined/cfset


Yes, they MUST be locked.

These look like variables that don't change - I'd do a CFIF test on one, and
if it doesn't exist then set them all.  As long as you always set them all
together, you can use the existence of one to test for all.

This way the app vars are set only once, and don't bog down your pages,
since Application.cfm is called with every request.

Chris Norloff

-- Original Message --
from: Earl, George [EMAIL PROTECTED]
Reply-To: [EMAIL PROTECTED]
date: Tue, 26 Mar 2002 11:21:07 -0500

Here is my application.cfm file:

cfapplication name=appname applicationtimeout=#CreateTimeSpan(2, 0, 0,
0)#

cfparam name=application.appnameroot default=/appname
cfparam name=application.includesDir default=/appname/includes
cfparam name=application.imagesDir default=/appname/images
cfparam name=application.menusDir default=/appname/menus
cfparam name=application.templatesDir default=/appname/templates
cfparam name=application.smapDir default=/appname/smap

Should I be locking these cfparam tags? Should I wrap them all in one lock
or should I lock each one individually?

What is the difference between using cfparam tags as I have above and using
cfif with isDefined and cfset to accomplish the same thing? Is one method a
better practice than the other?

Thanks!

George
[EMAIL PROTECTED]




__
Your ad could be here. Monies from ads go to support these lists and provide more 
resources for the community. http://www.fusionauthority.com/ads.cfm
FAQ: http://www.thenetprofits.co.uk/coldfusion/faq
Archives: http://www.mail-archive.com/cf-talk@houseoffusion.com/
Unsubscribe: http://www.houseoffusion.com/index.cfm?sidebar=lists



RE: cfparam vs. cfif/isDefined/cfset

2002-03-26 Thread Chris Norloff

Application.cfm runs with every request.  
If you set a variable in Application.cfm then the variable is set with every request.

Chris Norloff

-- Original Message --
from: [EMAIL PROTECTED]
Reply-To: [EMAIL PROTECTED]
date: Tue, 26 Mar 2002 13:48:27 -0500

if you declare the variable inside the application.cfm, then you don't have
to set them with every request.

Anthony Petruzzi
Webmaster
954-321-4703
http://www.sheriff.org


-Original Message-
From: Chris Norloff [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, March 26, 2002 1:46 PM
To: CF-Talk
Subject: RE: cfparam vs. cfif/isDefined/cfset


So you don't have to set the variable again and again, with every request.

Chris Norloff

-- Original Message --
from: [EMAIL PROTECTED]
Reply-To: [EMAIL PROTECTED]
date: Tue, 26 Mar 2002 13:18:40 -0500

why use the application scope, when you have the request scope and you
don't
have to mess with locking.

Anthony Petruzzi
Webmaster
954-321-4703
http://www.sheriff.org


-Original Message-
From: Chris Norloff [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, March 26, 2002 1:11 PM
To: CF-Talk
Subject: Re: cfparam vs. cfif/isDefined/cfset


Yes, they MUST be locked.

These look like variables that don't change - I'd do a CFIF test on one,
and
if it doesn't exist then set them all.  As long as you always set them all
together, you can use the existence of one to test for all.

This way the app vars are set only once, and don't bog down your pages,
since Application.cfm is called with every request.

Chris Norloff

-- Original Message --
from: Earl, George [EMAIL PROTECTED]
Reply-To: [EMAIL PROTECTED]
date: Tue, 26 Mar 2002 11:21:07 -0500

Here is my application.cfm file:

cfapplication name=appname applicationtimeout=#CreateTimeSpan(2, 0, 0,
0)#

cfparam name=application.appnameroot default=/appname
cfparam name=application.includesDir default=/appname/includes
cfparam name=application.imagesDir default=/appname/images
cfparam name=application.menusDir default=/appname/menus
cfparam name=application.templatesDir default=/appname/templates
cfparam name=application.smapDir default=/appname/smap

Should I be locking these cfparam tags? Should I wrap them all in one lock
or should I lock each one individually?

What is the difference between using cfparam tags as I have above and
using
cfif with isDefined and cfset to accomplish the same thing? Is one method
a
better practice than the other?

Thanks!

George
[EMAIL PROTECTED]





__
Structure your ColdFusion code with Fusebox. Get the official book at 
http://www.fusionauthority.com/bkinfo.cfm
FAQ: http://www.thenetprofits.co.uk/coldfusion/faq
Archives: http://www.mail-archive.com/cf-talk@houseoffusion.com/
Unsubscribe: http://www.houseoffusion.com/index.cfm?sidebar=lists



RE: cfparam vs. cfif/isDefined/cfset

2002-03-26 Thread Shawn Grover

In your particular case, then yes, this makes sense.  And for variables in
application scope, this is probably good practice.  I just wanted to point
out that what is right for one situation is not always right for all
situations.  But that's kinda like stating the obvious to developers isn't
it?... grins

Shawn Grover

-Original Message-
From: Chris Norloff [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, March 26, 2002 11:58 AM
To: CF-Talk
Subject: RE: cfparam vs. cfif/isDefined/cfset

snip
For example: we maintain 5 server locations, some secure and some not.  Some
of the site-specific information is contained in application scoped
variables.  We either set them all or we don't set any.  Thus, we check for
one of them, and if it doesn't exist then set all of them.
/snip

__
This list and all House of Fusion resources hosted by CFHosting.com. The place for 
dependable ColdFusion Hosting.
FAQ: http://www.thenetprofits.co.uk/coldfusion/faq
Archives: http://www.mail-archive.com/cf-talk@houseoffusion.com/
Unsubscribe: http://www.houseoffusion.com/index.cfm?sidebar=lists