<?xml version="1.0" encoding="iso-8859-1"?>

<rdf:RDF 
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns="http://purl.org/rss/1.0/"
>
		
		
		
	<channel rdf:about="http://www.fwscott.com/blog">
	<title>Francis Scott&apos;s Blog</title>
	<description>Powered by BlogCFM</description>
	<link>http://www.fwscott.com/blog</link>
	
	<items>
		<rdf:Seq>
			
			
			
				
			<rdf:li rdf:resource="http://www.fwscott.com/blog/1/2005/11/CFImplements-improved.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.fwscott.com/blog/1/2005/11/CFImplements.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.fwscott.com/blog/1/2005/10/Editable-CFGrids.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.fwscott.com/blog/1/2005/08/CFMX7-WebService-gotcha.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.fwscott.com/blog/1/2005/07/Stats-plugin-ported-to-ModelGlue.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.fwscott.com/blog/1/2005/07/Fusebox-Plugin-for-stats-take-two-already.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.fwscott.com/blog/1/2005/07/Fusebox-plugin-for-log-based-stats-programs.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.fwscott.com/blog/1/2005/07/ActiveWidgets-datagrid-control.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.fwscott.com/blog/1/2005/06/Old-quote-but-still-funny.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.fwscott.com/blog/1/2005/06/Updates-to-the-DAO-Bean-and-Gateway-generator.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.fwscott.com/blog/1/2005/06/Faking-a-null-value.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.fwscott.com/blog/1/2005/06/Adding-a-blogger-ping-utility-to-BlogCFM.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.fwscott.com/blog/1/2005/06/Greasemonkey.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.fwscott.com/blog/1/2005/05/Adding-Pods-to-BlogCFM.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.fwscott.com/blog/1/2005/05/CFC-DAO-Generator-Take-two.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.fwscott.com/blog/1/2005/05/First-experience-with-BlogCFM.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.fwscott.com/blog/1/2005/05/CFC-Generator-and-my-first-real-use.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.fwscott.com/blog/1/2005/05/CFC-DAO-Generator.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.fwscott.com/blog/1/2005/05/Trip-to-Thailand.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.fwscott.com/blog/1/2005/05/E6.Welcome-to-my-new-website.cfm" />
			
			
		</rdf:Seq>
	</items>
	
	</channel>
		
		
		
		
		
		
		
		
		
  	<item rdf:about="http://www.fwscott.com/blog/1/2005/11/CFImplements-improved.cfm">
	<title>CF_Implements improved!</title>
	<description>Very close to pseudo interfaces for Coldfusion CFCs.&lt;br/&gt;
&lt;br/&gt;
Did some rework on the CF_Implements tag.&amp;nbsp; Now it allows you to take the interface type for a function call.&amp;nbsp; It still has some issues working with multiple inheritance with each sub level of inheritance implementing interfaces and/or multiple inheritance of interfaces.&amp;nbsp; If anyone would like to help with this... let me know.&lt;br/&gt;
&lt;br/&gt;
&lt;b&gt;Please only use in a testing environment&lt;/b&gt; for now... sometimes it acts weird.&lt;br/&gt;
&lt;br/&gt;
Also I decided to do away with the CFC version, it didnt make sense to me calling a CFC to run a tag like keyword.&lt;br/&gt;
&lt;br/&gt;
I put up a page to show you how the CF_Implements could be used, you can see it working live &lt;a href=&quot;http://www.franciswscott.com/cfimplements/&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;.&lt;br/&gt;
&lt;br/&gt;
You can download the tag from &lt;a href=&quot;http://www.franciswscott.com/downloads/cfimplements.zip&quot;&gt;here&lt;/a&gt; , remember to copy it into your CustomTags directory.&lt;br/&gt;
&lt;br/&gt;
Enjoy&lt;br/&gt;</description>
	<link>http://www.fwscott.com/blog/1/2005/11/CFImplements-improved.cfm</link>
	<dc:date>2005-11-04T20:02:24-04:00</dc:date>
	
	<dc:subject>Coldfusion</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.fwscott.com/blog/1/2005/11/CFImplements.cfm">
	<title>CF_Implements</title>
	<description>I got bored last night and decided I would try to come up with a way to have an &amp;quot;Implements&amp;quot; keyword in ColdFusion.&lt;br/&gt;
&lt;br/&gt;
The download contains four files&lt;br/&gt;
&lt;ol&gt;
    &lt;li&gt;implements.cfm - If you want to use the custom tag version, copy this to your CustomTags directory.&lt;/li&gt;
    &lt;li&gt;implements.cfc&lt;/li&gt;
    &lt;li&gt;iComponentCache.cfc - a sample interface&lt;/li&gt;
    &lt;li&gt;ComponentCache.cfc - a sample class using the &amp;quot;Implements&amp;quot; keyword.&lt;/li&gt;
&lt;/ol&gt;
Useage:&lt;br/&gt;
For the Custom Tag, at the very top of your CFC put a &lt;br/&gt;
&lt;div class=&quot;code&quot;&gt;&amp;lt;cf_implements interfaces=&amp;quot;full.path.to.interface1,full.path.to.interface2,etc,etc&amp;quot; /&amp;gt;&lt;/div&gt;
&lt;br/&gt;
&amp;nbsp;It will throw an error if the class does not implement all the methods in the interfaces provided.&lt;br/&gt;
Example:&lt;br/&gt;
&lt;div class=&quot;code&quot;&gt;&amp;lt;cfcomponent&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;cf_implements interfaces=&amp;quot;iPerson&amp;quot; /&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;cffunction name=&amp;quot;test&amp;quot; ..........&lt;br/&gt;
......&lt;br/&gt;
.....&lt;br/&gt;
&amp;lt;/cfcomponent&amp;gt;&lt;/div&gt;
&lt;br/&gt;
&lt;br/&gt;
For the implements.cfc, You can use the object&apos;s init method to check the interface for an object anywhere.&amp;nbsp; To force a cfc to implement something, use &lt;br/&gt;
&lt;div class=&quot;code&quot;&gt;&amp;lt;cfset createObject(&amp;quot;component&amp;quot;,&amp;quot;path.to.implements.cfc&amp;quot;).init(this,&amp;quot;path.to.interface1,path.to.interface2&amp;quot;) /&amp;gt;&lt;br/&gt;
&lt;/div&gt;
&lt;br/&gt;
Example:&lt;br/&gt;
&lt;div class=&quot;code&quot;&gt;&amp;lt;cfcomponent&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;cfset createObject(&amp;quot;component&amp;quot;,&amp;quot;com.implements&amp;quot;).init(this,&amp;quot;com.iPerson&amp;quot;) /&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;cffunction name=&amp;quot;test&amp;quot; ..........&lt;br/&gt;
......&lt;br/&gt;
.....&lt;br/&gt;
&amp;lt;/cfcomponent&amp;gt;&lt;/div&gt;
&lt;br/&gt;
If you want to make sure an instance passed to a function uses a certain interface, replace &amp;quot;this&amp;quot; with &amp;quot;arguments.whatevertheinstancevariableis&amp;quot;.&lt;br/&gt;
Example:&lt;br/&gt;
&lt;div class=&quot;code&quot;&gt;&amp;lt;cffunction name=&amp;quot;savePerson&amp;quot; access=&amp;quot;public&amp;quot; output=&amp;quot;false&amp;quot;&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;cfargument name=&amp;quot;thePerson&amp;quot; type=&amp;quot;any&amp;quot; required=&amp;quot;true&amp;quot; hint=&amp;quot;Must implement iPerson&amp;quot; /&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;cfset createObject(&amp;quot;component&amp;quot;,&amp;quot;com.implements&amp;quot;).init(arguments.thePerson,&amp;quot;com.iPerson&amp;quot;) /&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp; .....&lt;br/&gt;
....&lt;br/&gt;
&amp;lt;/cffunction&amp;gt;&lt;/div&gt;
&lt;br/&gt;
&lt;br/&gt;
There are a couple other things.&lt;br/&gt;
&lt;ol&gt;
    &lt;li&gt;To set the custom tag to &amp;quot;production&amp;quot; mode.&amp;nbsp; put &amp;lt;cf_implements mode=&amp;quot;production&amp;quot; /&amp;gt; in your application.cfc/.cfm&lt;/li&gt;
    &lt;li&gt;To set the implements.cfc to &amp;quot;production&amp;quot; mode, you must pass the argument &amp;quot;mode&amp;quot; with the value of &amp;quot;production&amp;quot; to the init method.&lt;/li&gt;
    &lt;li&gt;You can also pass in your own CacheManager to the implements.cfc, the passed in CacheManager must implement iComponentManager.&lt;/li&gt;
&lt;/ol&gt;
I havent tested this in a production environment, and hardly tested in a testing environment... but would like some feedback before I try to improve this.&lt;br/&gt;
&lt;br/&gt;
Can download it &lt;a href=&quot;http://www.franciswscott.com/downloads/cfimplements.zip&quot;&gt;here&lt;/a&gt;&lt;br/&gt;
&lt;br/&gt;
Enjoy</description>
	<link>http://www.fwscott.com/blog/1/2005/11/CFImplements.cfm</link>
	<dc:date>2005-11-02T17:07:08-04:00</dc:date>
	
	<dc:subject>Coldfusion,Coldfusion</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.fwscott.com/blog/1/2005/10/Editable-CFGrids.cfm">
	<title>Editable CFGrids</title>
	<description>Had the hardest time making an editable CFGrid go into edit mode after a DataGrid.insertRow() was done.&amp;nbsp; It appears that the insertRow() does not fire the onChange event even though it selects the new row for you.&amp;nbsp; Also if you try to focus on the column in your button&apos;s onClick event, something ends up overriding it after the function is done and just the new row ends up being selected.&lt;br/&gt;
&lt;br/&gt;
After quite a bit of time&amp;nbsp;&lt;img src=&quot;/blog/FCKeditor/editor/images/smiley/msn/confused_smile.gif&quot; alt=&quot;&quot;/&gt; I came up with the following: (I know VERY little about flash)&lt;br/&gt;
&lt;br/&gt;
&amp;nbsp;
&lt;div class=&quot;code&quot;&gt;&amp;lt;cfform action=&amp;quot;someaction.cfm&amp;quot; method=&amp;quot;post&amp;quot; format=&amp;quot;flash&amp;quot; skin=&amp;quot;haloblue&amp;quot; name=&amp;quot;myform&amp;quot; onload=&amp;quot;onFormLoad()&amp;quot; height=&amp;quot;500&amp;quot; width=&amp;quot;500&amp;quot; &amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfformitem type=&amp;quot;script&amp;quot;&amp;gt;&lt;br/&gt;
&lt;br/&gt;
&lt;br/&gt;
function onFormLoad(){&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var btnlistener:Object = {};&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //put the controls in scope to avoid calling _root&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var nameList:mx.controls.DataGrid = namelist;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var insertbtn:mx.controls.Button = Insertbtn; &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; btnlistener.click = function(evt):Void {&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var myInterval:Number;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function doselect() {&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; clearInterval(myInterval);&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nameList.focusedCell = {columnIndex:2, itemIndex:nameList.selectedIndex};&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br/&gt;
&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GridData.insertRow(nameList);&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myInterval = setInterval(doselect, 500);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br/&gt;
&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; insertbtn.addEventListener(&apos;click&apos;,btnlistener);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br/&gt;
}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/cfformitem&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfgrid rowheaders=&amp;quot;true&amp;quot; name=&amp;quot;namelist&amp;quot; colheaders=&amp;quot;yes&amp;quot; selectmode=&amp;quot;edit&amp;quot; height=&amp;quot;280&amp;quot; width=&amp;quot;300&amp;quot;&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfgridcolumn name=&amp;quot;id&amp;quot; display=&amp;quot;no&amp;quot;/&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfgridcolumn name=&amp;quot;firstname&amp;quot; display=&amp;quot;yes&amp;quot; select=&amp;quot;yes&amp;quot; header=&amp;quot;First Name&amp;quot; width=&amp;quot;75&amp;quot; /&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfgridcolumn name=&amp;quot;lastname&amp;quot; display=&amp;quot;yes&amp;quot; select=&amp;quot;yes&amp;quot; header=&amp;quot;Last Name&amp;quot; width=&amp;quot;75&amp;quot; /&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfgridrow data=&amp;quot;1,First Name,Last Name&amp;quot; /&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/cfgrid&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;lt;cfinput type=&amp;quot;button&amp;quot; value=&amp;quot;Insert&amp;quot; name=&amp;quot;Insertbtn&amp;quot; /&amp;gt;&lt;br/&gt;
&lt;br/&gt;
&amp;lt;/cfform&amp;gt; &lt;br/&gt;
&lt;/div&gt;
&lt;br/&gt;
Not sure if this is the cleanest way but it seems to work.&lt;br/&gt;
&lt;br/&gt;
Couple other things:&lt;br/&gt;
&lt;ul&gt;
    &lt;li&gt;even if you dispatchEvent(&amp;quot;change&amp;quot;) in your onClick for your button, the event fires and you can set focus but... it only sets focus for a second until something else selects the newly inserted row.&lt;/li&gt;
    &lt;li&gt;Also learned that the doLater() function seems to be ignored in flash forms.&lt;/li&gt;
&lt;/ul&gt;
&lt;br/&gt;
&lt;br/&gt;</description>
	<link>http://www.fwscott.com/blog/1/2005/10/Editable-CFGrids.cfm</link>
	<dc:date>2005-10-28T18:38:45-04:00</dc:date>
	
	<dc:subject>Coldfusion,Coldfusion,Coldfusion</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.fwscott.com/blog/1/2005/08/CFMX7-WebService-gotcha.cfm">
	<title>CFMX7 WebService gotcha?</title>
	<description>Not exactly sure what ended up causing this but...&lt;br/&gt;
&lt;br/&gt;
Scenario:&lt;br/&gt;
&lt;ol&gt;
    &lt;li&gt;One Coldfusion MX7 instance running for multiple virtual hosts on the same server.&lt;/li&gt;
    &lt;li&gt;CFMX7 Standard Edition&lt;/li&gt;
    &lt;li&gt;IIS 6 / Win2k3.&lt;/li&gt;
    &lt;li&gt;Worked on CFMX 6.1&lt;/li&gt;
&lt;/ol&gt;
Problem:&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; I have a &amp;lt;cfcomponent displayname=&amp;quot;Survey&amp;quot;&amp;gt; with a few &amp;lt;cffunction access=&amp;quot;remote&amp;quot; ....&amp;gt;s in it. Only problem is... when invoking the component from any client that can consume a webservice, I get some type of error about an invalid webservice.&amp;nbsp; &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Trying to invoke using a &amp;lt;cfinvoke webservice=&amp;quot;&amp;quot;&amp;gt; I get something along the lines of &amp;quot;Can not generate stub objects&amp;quot;.&lt;br/&gt;
&lt;br/&gt;
Fix:&lt;br/&gt;
&amp;nbsp;&amp;nbsp; After talking with my hosting provider and them talking with Macromedia, I get a response saying delete everything under &amp;quot;&amp;lt;CFMX7 install directory&amp;gt;\stubs&amp;quot;. Modify the CFC to show &amp;lt;cfcomponent displayname=&amp;quot;Surveys&amp;quot;&amp;gt; and restart the CFMX service.&lt;br/&gt;
&lt;br/&gt;
Not sure what exactly happened but... now I can invoke the webservice with no problem.&amp;nbsp; Is &amp;quot;Survey&amp;quot; a reserved word in CFMX7?&lt;br/&gt;</description>
	<link>http://www.fwscott.com/blog/1/2005/08/CFMX7-WebService-gotcha.cfm</link>
	<dc:date>2005-08-01T20:37:19-04:00</dc:date>
	
	<dc:subject>Coldfusion,Coldfusion,Coldfusion,Coldfusion</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.fwscott.com/blog/1/2005/07/Stats-plugin-ported-to-ModelGlue.cfm">
	<title>Stats plugin ported to Model-Glue</title>
	<description>Ive been wanting to learn some about Model-Glue for a while now.&amp;nbsp; I figured I may as well convert the Fusebox plugin for stats so it will work with Model-Glue.&amp;nbsp; Model-Glue seemed like a good fit since all requests come in through one page, like Fusebox.&lt;br /&gt;
&lt;br /&gt;
Doing this gave me a quick look at how controllers and config beans worked... mission accomplished.&lt;br /&gt;
&lt;br /&gt;
You can download the &amp;quot;plugin&amp;quot; &lt;a href=&quot;http://www.fwscott.com/downloads/statsplugin.zip&quot;&gt;here&lt;/a&gt;.&amp;nbsp; Unzip the file and look at the readme for instructions on how to configure Model-Glue to use this.&lt;br /&gt;
&lt;br /&gt;
Basically it creates parsed files named by the Event name, and one viewstate variable that you reference in your layout file.&amp;nbsp; The viewstate variable contains script to request three images from the server so the request gets logged in your stats program.&lt;br /&gt;
&lt;br /&gt;
Using a method like this, you can exclude index.cfm from your pageviews report and you should see &amp;lt;EventName&amp;gt;.cfm requests.&lt;br /&gt;
&lt;br /&gt;
One thing I couldnt figure out was.... is it possible to pass coldfusion variables from a BeanConfig.xml file?</description>
	<link>http://www.fwscott.com/blog/1/2005/07/Stats-plugin-ported-to-ModelGlue.cfm</link>
	<dc:date>2005-07-26T19:06:21-04:00</dc:date>
	
	<dc:subject>Coldfusion,Coldfusion,Coldfusion,Coldfusion,Coldfusion</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.fwscott.com/blog/1/2005/07/Fusebox-Plugin-for-stats-take-two-already.cfm">
	<title>Fusebox Plugin for stats... take two already!</title>
	<description>Sorry, I do this alot but I was thinking about ways to change the plugin on the way home from work...&lt;br/&gt;
&lt;br/&gt;
Got to thinking that site paths still would not work or quite a few other things.&amp;nbsp; In order to be more flexible I changed things around to where it creates a parsed file and the invisible image will be served from the parsed file.&lt;br/&gt;
&lt;br/&gt;
So when you look at your stats now, you will see that circuit.fuseaction.cfm was hit and then they went to anothercircuit.anotherfuseaction in your site paths.&amp;nbsp; Also doing this, your stats program does not have to support reports by query strings.&lt;br/&gt;
&lt;br/&gt;
Here is the modified code, if anyone has a better way of checking/creating the parsed files... please let me know.&lt;br/&gt;
&lt;br/&gt;
&lt;div class=&quot;code&quot;&gt;&amp;lt;cfsilent&amp;gt;&lt;br/&gt;
&amp;lt;!--- The full path to where the CFM files should be stored for stats ---&amp;gt;&lt;br/&gt;
&amp;lt;cfset plugin.statsdir = &amp;quot;#application.fusebox.rootdirectory#fbstats\&amp;quot; /&amp;gt;&lt;br/&gt;
&amp;lt;!--- The relative path to where the CFM files should be stored for stats ---&amp;gt;&lt;br/&gt;
&amp;lt;cfset plugin.statsrelpath = &amp;quot;/fbstats/&amp;quot; /&amp;gt;&lt;br/&gt;
&amp;lt;!--- The full path to the invisible image ---&amp;gt;&lt;br/&gt;
&amp;lt;cfset plugin.fullimagepath = &amp;quot;#application.fusebox.rootdirectory#images\spacer.gif&amp;quot; /&amp;gt;&lt;br/&gt;
&amp;lt;!--- Current fuseaction file to create, example: mycircuit.myfuseaction.cfm ---&amp;gt;&lt;br/&gt;
&amp;lt;cfset plugin.currentfusefilename = myfusebox.originalcircuit &amp;amp; &amp;quot;.&amp;quot; &amp;amp; myfusebox.originalfuseaction &amp;amp; &amp;quot;.cfm&amp;quot; /&amp;gt;&lt;br/&gt;
&amp;lt;!--- The file to create to keep track of total client resolution, example: clientresolution.cfm ---&amp;gt;&lt;br/&gt;
&amp;lt;cfset plugin.clientresolutionfilename = &amp;quot;clientresolution.cfm&amp;quot; /&amp;gt;&lt;br/&gt;
&amp;lt;!--- The file to create to keep track of viewable browser client resolution, example: clientviewableres.cfm ---&amp;gt;&lt;br/&gt;
&amp;lt;cfset plugin.clientviewableresolutionfilename = &amp;quot;clientviewableres.cfm&amp;quot; /&amp;gt;&lt;br/&gt;
&lt;br/&gt;
&amp;lt;!--- Create the output for the coldfusion image files&lt;br/&gt;
This should be just enough to serve the image.&lt;br/&gt;
Currently just inserting &amp;lt;cfcontent file=&amp;quot;#plugin.fullimagepath#&amp;quot; type=&amp;quot;image/gif&amp;quot;&amp;nbsp; deletefile=&amp;quot;no&amp;quot; /&amp;gt;&lt;br/&gt;
&amp;nbsp;---&amp;gt;&lt;br/&gt;
&amp;lt;cfset plugin.imageout = &amp;quot;&amp;quot;&amp;gt;&lt;br/&gt;
&amp;lt;cfset plugin.imageout = plugin.imageout &amp;amp; &apos;&amp;lt;cfcontent file=&amp;quot;#plugin.fullimagepath#&amp;quot; type=&amp;quot;image/gif&amp;quot;&amp;nbsp; deletefile=&amp;quot;no&amp;quot; /&amp;gt;&apos; /&amp;gt;&lt;br/&gt;
&lt;br/&gt;
&amp;lt;!--- Check to see if our image serving files exist, if not create them with the code to serve&lt;br/&gt;
the blank image&lt;br/&gt;
---&amp;gt;&lt;br/&gt;
&amp;lt;cfif not(directoryexists(plugin.statsdir))&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;cfdirectory action=&amp;quot;create&amp;quot; directory=&amp;quot;#plugin.statsdir#&amp;quot; /&amp;gt;&lt;br/&gt;
&amp;lt;/cfif&amp;gt;&lt;br/&gt;
&amp;lt;cfif not(fileexists(plugin.statsdir &amp;amp; plugin.currentfusefilename))&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;cffile action=&amp;quot;write&amp;quot; file=&amp;quot;#plugin.statsdir &amp;amp; plugin.currentfusefilename#&amp;quot; output=&amp;quot;#plugin.imageout#&amp;quot; /&amp;gt;&lt;br/&gt;
&amp;lt;/cfif&amp;gt;&lt;br/&gt;
&amp;lt;cfif not(fileexists(plugin.statsdir &amp;amp; plugin.clientviewableresolutionfilename))&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;cffile action=&amp;quot;write&amp;quot; file=&amp;quot;#plugin.statsdir &amp;amp; plugin.clientviewableresolutionfilename#&amp;quot; output=&amp;quot;#plugin.imageout#&amp;quot; /&amp;gt;&lt;br/&gt;
&amp;lt;/cfif&amp;gt;&lt;br/&gt;
&amp;lt;cfif not(fileexists(plugin.statsdir &amp;amp; plugin.clientresolutionfilename))&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;cffile action=&amp;quot;write&amp;quot; file=&amp;quot;#plugin.statsdir &amp;amp; plugin.clientresolutionfilename#&amp;quot; output=&amp;quot;#plugin.imageout#&amp;quot; /&amp;gt;&lt;br/&gt;
&amp;lt;/cfif&amp;gt;&lt;br/&gt;
&amp;lt;cfsavecontent variable=&amp;quot;request.fbstats&amp;quot;&amp;gt;&lt;br/&gt;
&amp;lt;script language=&amp;quot;javascript&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br/&gt;
&amp;lt;!--&lt;br/&gt;
var fbstatsscreenW = 640, fbstatsscreenH = 480;&lt;br/&gt;
if (parseInt(navigator.appVersion)&amp;gt;3) {&lt;br/&gt;
&amp;nbsp;fbstatsscreenW = screen.width;&lt;br/&gt;
&amp;nbsp;fbstatsscreenH = screen.height;&lt;br/&gt;
}&lt;br/&gt;
else if (navigator.appName == &amp;quot;Netscape&amp;quot; &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;&amp;amp; parseInt(navigator.appVersion)==3&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;&amp;amp; navigator.javaEnabled()&lt;br/&gt;
&amp;nbsp;&amp;nbsp; ) &lt;br/&gt;
{&lt;br/&gt;
&amp;nbsp;var fbstatsjToolkit = java.awt.Toolkit.getDefaultToolkit();&lt;br/&gt;
&amp;nbsp;var fbstatsjScreenSize = jToolkit.getScreenSize();&lt;br/&gt;
&amp;nbsp;fbstatsscreenW = fbstatsjScreenSize.width;&lt;br/&gt;
&amp;nbsp;fbstatsscreenH = fbstatsjScreenSize.height;&lt;br/&gt;
}&lt;br/&gt;
&lt;br/&gt;
var fbstatsinnerwidth= 640, fbstatsinnerheight= 480; // defaults &lt;br/&gt;
if (self.innerHeight) &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // all except Explorer &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; fbstatsinnerwidth= self.innerWidth; &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; fbstatsinnerheight= self.innerHeight; &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br/&gt;
&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (document.documentElement &amp;amp;&amp;amp; document.documentElement.clientHeight) &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // Explorer 6 Strict Mode &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; fbstatsinnerwidth= document.documentElement.clientWidth; &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; fbstatsinnerheight= document.documentElement.clientHeight; &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br/&gt;
&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (document.body) &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // other Explorers &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; fbstatsinnerwidth= document.body.clientWidth; &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; fbstatsinnerheight= document.body.clientHeight; &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br/&gt;
&lt;br/&gt;
&amp;lt;cfoutput&amp;gt;&lt;br/&gt;
fbstatsclientviewableresimage = new Image(1,1);&lt;br/&gt;
fbstatsclientviewableresimage.src = &amp;quot;#plugin.statsrelpath##plugin.clientviewableresolutionfilename#?resolution=&amp;quot; + fbstatsinnerwidth + &amp;quot;x&amp;quot; + fbstatsinnerheight;&lt;br/&gt;
fbstatsclientresolutionimage = new Image(1,1);&lt;br/&gt;
fbstatsclientresolutionimage.src = &amp;quot;#plugin.statsrelpath##plugin.clientresolutionfilename#?resolution=&amp;quot; + fbstatsscreenW + &amp;quot;x&amp;quot; + fbstatsscreenH;&lt;br/&gt;
&amp;lt;/cfoutput&amp;gt;&lt;br/&gt;
// --&amp;gt;&lt;br/&gt;
&amp;lt;/script&amp;gt;&lt;br/&gt;
&amp;lt;cfoutput&amp;gt;&lt;br/&gt;
&amp;lt;img src=&amp;quot;#plugin.statsrelpath##plugin.currentfusefilename#&amp;quot; height=&amp;quot;1&amp;quot; width=&amp;quot;1&amp;quot; border=&amp;quot;0&amp;quot;&amp;nbsp; /&amp;gt;&lt;br/&gt;
&amp;lt;/cfoutput&amp;gt;&lt;br/&gt;
&amp;lt;/cfsavecontent&amp;gt;&lt;br/&gt;
&amp;lt;/cfsilent&amp;gt;&lt;/div&gt;
&lt;br/&gt;
One thing to remember... If you use the application.cfm from the Fusebox downloads, you must allow the directory through the filter.&lt;br/&gt;
&lt;br/&gt;
Something like:&lt;br/&gt;
&lt;br/&gt;
application.cfm&lt;br/&gt;
&lt;div class=&quot;code&quot;&gt;&amp;lt;cfsilent&amp;gt;&lt;br/&gt;
&amp;lt;cfif right(cgi.script_name, Len(&amp;quot;index.cfm&amp;quot;)) NEQ &amp;quot;index.cfm&amp;quot; AND right(cgi.script_name, 3) NEQ &amp;quot;cfc&amp;quot; and&amp;nbsp; not (cgi.PATH_INFO contains &amp;quot;/fbstats&amp;quot;)&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cflocation url=&amp;quot;index.cfm&amp;quot; addtoken=&amp;quot;no&amp;quot;&amp;gt;&lt;br/&gt;
&amp;lt;cfelse&amp;gt;&lt;br/&gt;
&amp;lt;/cfif&amp;gt;&lt;br/&gt;
&amp;lt;/cfsilent&amp;gt;&lt;/div&gt;
&lt;br/&gt;
Add it to your fusebox.xml.cfm. I have mine as a preFuseaction plugin, but should work in preProcess also.&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;div class=&quot;code&quot;&gt;&amp;lt;plugin name=&amp;quot;fbstats&amp;quot; template=&amp;quot;fbstats.cfm&amp;quot; /&amp;gt;&lt;/div&gt;
&lt;br/&gt;
Then just reference request.fbstats in your layout file.&lt;br/&gt;
&lt;br/&gt;
You can download the zipped version &lt;a href=&quot;http://www.franciswscott.com/downloads/fbstats.zip&quot;&gt;here&lt;/a&gt;.&lt;br/&gt;</description>
	<link>http://www.fwscott.com/blog/1/2005/07/Fusebox-Plugin-for-stats-take-two-already.cfm</link>
	<dc:date>2005-07-25T22:04:40-04:00</dc:date>
	
	<dc:subject>Coldfusion,Coldfusion,Coldfusion,Coldfusion,Coldfusion,Coldfusion,Fusebox</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.fwscott.com/blog/1/2005/07/Fusebox-plugin-for-log-based-stats-programs.cfm">
	<title>Fusebox plugin for log based stats programs</title>
	<description>So I was reading on &lt;a href=&quot;http://www.petefreitag.com/item/417.cfm&quot; target=&quot;_blank&quot;&gt;Pete Freitag&apos;s&lt;/a&gt; blog about the most common screen resolutions...&lt;br/&gt;
&lt;br/&gt;
It got me interested in what my websites were being viewed at.&amp;nbsp; Come to find out my hosting provider&apos;s new stats engine does not support this natively.&amp;nbsp; I think quite a few Coldfusion people use HostMySite which recently dropped using Deep Metrixs and went to SmarterStats, so I hope this plugin will be useful to others.&lt;br/&gt;
&lt;br/&gt;
First thing, the plugin could be integrated directly into the layout file but I decided to use a plugin instead.&amp;nbsp; I put this into the PreProcess stage. The javascript came from a few places on the internet.&lt;br/&gt;
&lt;br/&gt;
&lt;div class=&quot;code&quot;&gt;&amp;lt;cfsavecontent variable=&amp;quot;request.clientstats&amp;quot;&amp;gt;&lt;br/&gt;
&amp;lt;script&amp;gt;&lt;br/&gt;
var screenW = 640, screenH = 480;&lt;br/&gt;
if (parseInt(navigator.appVersion)&amp;gt;3) {&lt;br/&gt;
&amp;nbsp;screenW = screen.width;&lt;br/&gt;
&amp;nbsp;screenH = screen.height;&lt;br/&gt;
}&lt;br/&gt;
else if (navigator.appName == &amp;quot;Netscape&amp;quot; &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;&amp;amp; parseInt(navigator.appVersion)==3&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;&amp;amp; navigator.javaEnabled()&lt;br/&gt;
&amp;nbsp;&amp;nbsp; ) &lt;br/&gt;
{&lt;br/&gt;
&amp;nbsp;var jToolkit = java.awt.Toolkit.getDefaultToolkit();&lt;br/&gt;
&amp;nbsp;var jScreenSize = jToolkit.getScreenSize();&lt;br/&gt;
&amp;nbsp;screenW = jScreenSize.width;&lt;br/&gt;
&amp;nbsp;screenH = jScreenSize.height;&lt;br/&gt;
}&lt;br/&gt;
&lt;br/&gt;
var innerwidth= 640, innerheight= 480; // defaults &lt;br/&gt;
if (self.innerHeight) &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // all except Explorer &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; innerwidth= self.innerWidth; &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; innerheight= self.innerHeight; &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br/&gt;
&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (document.documentElement &amp;amp;&amp;amp; document.documentElement.clientHeight) &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // Explorer 6 Strict Mode &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; innerwidth= document.documentElement.clientWidth; &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; innerheight= document.documentElement.clientHeight; &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br/&gt;
&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (document.body) &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // other Explorers &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; innerwidth= document.body.clientWidth; &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; innerheight= document.body.clientHeight; &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br/&gt;
&amp;lt;cfoutput&amp;gt;&lt;br/&gt;
document.write(&apos;&amp;lt;img src=&amp;quot;clientresolution.htm?resolution=&apos; + screenW + &apos;x&apos; + screenH + &apos;&amp;quot; height=&amp;quot;1&amp;quot; width=&amp;quot;1&amp;quot; /&amp;gt;&apos;);&lt;br/&gt;
document.write(&apos;&amp;lt;img src=&amp;quot;fusebox.htm?fuseaction=#myfusebox.originalcircuit#.#myfusebox.originalfuseaction#&amp;quot; height=&amp;quot;1&amp;quot; width=&amp;quot;1&amp;quot; /&amp;gt;&apos;);&lt;br/&gt;
document.write(&apos;&amp;lt;img src=&amp;quot;clientviewableres.htm?resolution=&apos; + innerwidth + &apos;x&apos; + innerheight + &apos;&amp;quot; height=&amp;quot;1&amp;quot; width=&amp;quot;1&amp;quot; /&amp;gt;&apos;);&lt;br/&gt;
&amp;lt;/cfoutput&amp;gt;&lt;br/&gt;
&amp;lt;/script&amp;gt;&lt;br/&gt;
&amp;lt;/cfsavecontent&amp;gt;&lt;/div&gt;
&lt;br/&gt;
Then I &amp;lt;cfoutput&amp;gt;ed #request.clientstats# in the body section on my layout files.&lt;br/&gt;
&lt;br/&gt;
In order to not generate a bunch of 404 errors in the server logs, I also created empty htm files for clientresolution.htm,clientviewableres.htm and fusebox.htm.&lt;br/&gt;
&lt;br/&gt;
Now in SmarterStats I can run a custom report on querystrings for the files above that show client resolutions and the original fuseaction that is called per view (useful if any/all of your fuseactions are not URL submitted).&lt;br/&gt;
&lt;br/&gt;
Oh and so far the results on my main website show only 16% of the requests coming in use 800x600 or lower.&lt;br/&gt;
&lt;br/&gt;</description>
	<link>http://www.fwscott.com/blog/1/2005/07/Fusebox-plugin-for-log-based-stats-programs.cfm</link>
	<dc:date>2005-07-25T17:46:03-04:00</dc:date>
	
	<dc:subject>Coldfusion,Coldfusion,Coldfusion,Coldfusion,Coldfusion,Coldfusion,Fusebox,Coldfusion,Fusebox</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.fwscott.com/blog/1/2005/07/ActiveWidgets-datagrid-control.cfm">
	<title>ActiveWidgets datagrid control</title>
	<description>This is mostly for myself but others feel free to use this.&lt;br/&gt;
&lt;br/&gt;
Coldfusion Custom tag for &lt;a href=&quot;http://www.activewidgets.com&quot; target=&quot;_blank&quot;&gt;ActiveWidgets&lt;/a&gt; datagrid control.&amp;nbsp; Reminder that a commercial license is needed for ActiveWidgets with anything other than opensource projects.&lt;br/&gt;
&lt;br/&gt;
More info and examples at &lt;a href=&quot;http://www.franciswscott.com/activewidgets&quot; target=&quot;_blank&quot;&gt;http://www.franciswscott.com/activewidgets&lt;/a&gt;&lt;br/&gt;
&lt;br/&gt;</description>
	<link>http://www.fwscott.com/blog/1/2005/07/ActiveWidgets-datagrid-control.cfm</link>
	<dc:date>2005-07-22T09:24:15-04:00</dc:date>
	
	<dc:subject>Coldfusion,Coldfusion,Coldfusion,Coldfusion,Coldfusion,Coldfusion,Fusebox,Coldfusion,Fusebox,Coldfusion,Misc</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.fwscott.com/blog/1/2005/06/Old-quote-but-still-funny.cfm">
	<title>Old quote but still funny</title>
	<description>&lt;font size=&quot;3&quot; face=&quot;Times New Roman&quot; color=&quot;#14254b&quot;&gt;&lt;span style=&quot;font-size: 12pt; color: rgb(20, 37, 75);&quot;&gt;Pretty old but someone just sent this to me today.&lt;br/&gt;
&lt;br/&gt;
&amp;ldquo;&lt;i&gt;The difference between the Pope and  your boss... the Pope only expects you to kiss his ring&lt;/i&gt;&amp;rdquo;&lt;/span&gt;&lt;/font&gt;</description>
	<link>http://www.fwscott.com/blog/1/2005/06/Old-quote-but-still-funny.cfm</link>
	<dc:date>2005-06-30T10:31:46-04:00</dc:date>
	
	<dc:subject>Coldfusion,Coldfusion,Coldfusion,Coldfusion,Coldfusion,Coldfusion,Fusebox,Coldfusion,Fusebox,Coldfusion,Misc,Misc</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.fwscott.com/blog/1/2005/06/Updates-to-the-DAO-Bean-and-Gateway-generator.cfm">
	<title>Updates to the DAO, Bean and Gateway generator</title>
	<description>After a few suggestions coming by the way of emails, I decided to put them into the distribution of the CFC DAO, Bean and gateway creator for Coldfusion MX 6/7 . Also, it should correctly work with Microsoft SQL server.&lt;br/&gt;
&lt;br/&gt;
Changes:&lt;br/&gt;
&lt;ol&gt;
    &lt;li&gt;Bean&apos;s setter functions now have two additional optional arguments: isNull and Validate&lt;/li&gt;
    &lt;li&gt;Now the bean controls the length of fields and if something is nullable.&amp;nbsp; Initially the generator will create the configuration for you but you can modify later by changing the setBeanConfig() function inside the bean CFC.&lt;/li&gt;
    &lt;li&gt;The bean setter functions perform validation on the data passed in according to the specs from bean config.&lt;/li&gt;
    &lt;li&gt;Each property of the bean has an isNull{property name} function&lt;/li&gt;
    &lt;li&gt;All data coming from the database is considered trusted and will not be validated when passing it back to the bean setters.&lt;/li&gt;
&lt;/ol&gt;
To see the changes in action, view the &lt;a href=&quot;http://www.franciswscott.com/cfccreator/&quot; target=&quot;_blank&quot;&gt;demo&lt;/a&gt;.&lt;br/&gt;
&lt;br/&gt;
You can download it &lt;a href=&quot;http://www.franciswscott.com/downloads/cfccreator.zip&quot;&gt;here&lt;/a&gt;. The downloadable version contains a transformsbasic directory that contains the original transforms.&lt;br/&gt;
&lt;br/&gt;
I am not sure I will put any other changes in the distribution as other suggestions were more specific and could be implemented in other ways.&amp;nbsp; But, remember you can incorporate your changes just by modifying the XSL files.&amp;nbsp; If you need some help, just contact me via the email address in the readme file.</description>
	<link>http://www.fwscott.com/blog/1/2005/06/Updates-to-the-DAO-Bean-and-Gateway-generator.cfm</link>
	<dc:date>2005-06-15T12:44:04-04:00</dc:date>
	
	<dc:subject>Coldfusion,Coldfusion,Coldfusion,Coldfusion,Coldfusion,Coldfusion,Fusebox,Coldfusion,Fusebox,Coldfusion,Misc,Misc,Coldfusion,CFC Generator</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.fwscott.com/blog/1/2005/06/Faking-a-null-value.cfm">
	<title>Faking a null value</title>
	<description>The more and more I am generating code with the &lt;a href=&quot;http://www.franciswscott.com/cfccreator/&quot; target=&quot;_blank&quot;&gt;CFC Bean, DAO and gateway creator&lt;/a&gt;&lt;br/&gt;
&lt;br/&gt;
The more I am noticing the need to support a null value and I am trying not to go in and write work arounds for each bean / dao / gateway CFCs to support nulls.&lt;br/&gt;
&lt;br/&gt;
So, would defining a default bogus null value per bean be the way to go?&lt;br/&gt;
&lt;br/&gt;
Example:&lt;br/&gt;
&lt;div class=&quot;code&quot;&gt;&amp;lt;cfcomponent displayname=&amp;quot;myBean&amp;quot; hint=&amp;quot;I model a single myBean.&amp;quot;&amp;gt;&lt;br/&gt;
&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfset variables.NumericNull = -99999 /&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfset variables.StringNull = &amp;quot;null&amp;quot; /&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfset variables.DateNull = CreateDate(1877,01,01) /&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfset variables.BinaryNull = toBinary(toBase64(&amp;quot;null&amp;quot;)) /&amp;gt;&lt;/div&gt;
&lt;br/&gt;
Now in the DAOs have something like:&lt;br/&gt;
&lt;div class=&quot;code&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cffunction name=&amp;quot;update&amp;quot; returntype=&amp;quot;void&amp;quot; output=&amp;quot;false&amp;quot; hint=&amp;quot;CRUD method&amp;quot;&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfargument name=&amp;quot;myBean&amp;quot; type=&amp;quot;myBean&amp;quot; required=&amp;quot;true&amp;quot; /&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfset var myBeanUpdate = 0 &amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfset var numericNull = arguments.myBean.getNumericNull() /&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfset var DateNull = arguments.myBean.getDateNull() /&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfset var StringNull = arguments.myBean.getStringNull() /&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfset var BinaryNull = arguments.myBean.getBinaryNull() /&amp;gt;&lt;br/&gt;
&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfquery name=&amp;quot;myBeanUpdate&amp;quot; datasource=&amp;quot;#variables.dsn#&amp;quot; &amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; UPDATE myBean&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SET&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; myBeanValue1 = &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfif arguments.myBean.getmyBeanValue1() NEQ stringNull&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;cfqueryparam cfsqltype=&amp;quot;cf_sql_vchar&amp;quot; value=&amp;quot;#arguments.myBean.getmyBeanValue1()#&amp;quot; maxlength=&amp;quot;10&amp;quot; /&amp;gt; &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfelse&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;cfqueryparam cfsqltype=&amp;quot;cf_sql_vchar&amp;quot; null=&amp;quot;yes&amp;quot; /&amp;gt; &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/cfif&amp;gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WHERE&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; id = &amp;lt;cfqueryparam cfsqltype=&amp;quot;cf_sql_integer&amp;quot; value=&amp;quot;#arguments.myBean.getmyBeanID()#&amp;quot; /&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/cfquery&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/cffunction&amp;gt;&lt;br/&gt;
&lt;/div&gt;
&lt;br/&gt;
I uploaded new transforms to the demo CFC Creator script to reflect these changes if you want to see how a fully generated CFC looks using the above.&lt;br/&gt;
&lt;br/&gt;
Thoughts?&lt;br/&gt;
&lt;br/&gt;
Think I should use the new transforms in the &lt;a href=&quot;http://www.franciswscott.com/downloads/cfccreator.zip&quot;&gt;downloadable&lt;/a&gt; version of CFC Creator?&lt;br/&gt;</description>
	<link>http://www.fwscott.com/blog/1/2005/06/Faking-a-null-value.cfm</link>
	<dc:date>2005-06-09T15:19:00-04:00</dc:date>
	
	<dc:subject>Coldfusion,Coldfusion,Coldfusion,Coldfusion,Coldfusion,Coldfusion,Fusebox,Coldfusion,Fusebox,Coldfusion,Misc,Misc,Coldfusion,CFC Generator,Coldfusion,CFC Generator</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.fwscott.com/blog/1/2005/06/Adding-a-blogger-ping-utility-to-BlogCFM.cfm">
	<title>Adding a blogger ping utility to BlogCFM</title>
	<description>Since &lt;a href=&quot;http://weblogs.macromedia.com/mxna/&quot;&gt;MXNA&lt;/a&gt; is aggregating my feed now, I needed to have BlogCFM notify MXNA when a new post was done.&lt;br/&gt;
&lt;br/&gt;
&lt;a href=&quot;http://www.franciswscott.com/blog/1/2005/05/First-experience-with-BlogCFM.cfm&quot;&gt;Previously&lt;/a&gt; , I showed how to add your own configuration options to BlogCFM.&amp;nbsp; This time I added a PING_ON_UPDATE configuration option, along with adding the field to the admin screen.&lt;br/&gt;
&lt;br/&gt;
My SendPings function is very simple but could use some work for error checking and stuff.&amp;nbsp; Perhaps I will work in some error checking later but since it is only me using this function currently, I know I will type in the correct ping URLs.&lt;br/&gt;
&lt;br/&gt;
I added the following to the BlogCFM.cfc but could be used in any blog really. It accepts one argument, a list of URLs to send to seperated by &amp;quot;;&amp;quot;&lt;br/&gt;
&lt;br/&gt;
&lt;div class=&quot;code&quot;&gt;&amp;lt;cffunction name=&amp;quot;SendPings&amp;quot; access=&amp;quot;public&amp;quot; output=&amp;quot;false&amp;quot; returntype=&amp;quot;void&amp;quot;&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfargument name=&amp;quot;UrlLIST&amp;quot; type=&amp;quot;string&amp;quot; required=&amp;quot;yes&amp;quot; hint=&amp;quot;A list of URLs seperated by ;&amp;quot;&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfloop from=&amp;quot;1&amp;quot; to=&amp;quot;#listlen(arguments.UrlList,&amp;quot;;&amp;quot;)#&amp;quot; index=&amp;quot;listindex&amp;quot;&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfhttp url=&amp;quot;#listgetat(arguments.UrlList,listindex,&amp;quot;;&amp;quot;)#&amp;quot; throwonerror=&amp;quot;no&amp;quot;&amp;gt;&amp;lt;/cfhttp&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/cfloop&amp;gt;&lt;br/&gt;
&amp;lt;/cffunction&amp;gt;&lt;/div&gt;
&lt;br/&gt;
&lt;br/&gt;
Next was to tell BlogCFM to send the pings.&lt;br/&gt;
I put the following below the notifications area of SaveEntry()&lt;br/&gt;
&lt;br/&gt;
&lt;div class=&quot;code&quot;&gt;&amp;lt;cfif getBlogConfigValue(arguments.blog_id, &amp;quot;PING_ON_UPDATE&amp;quot;) NEQ &amp;quot;&amp;quot;&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;cfset SendPings(getBlogConfigValue(arguments.blog_id, &amp;quot;PING_ON_UPDATE&amp;quot;))&amp;gt;&lt;br/&gt;
&amp;lt;/cfif&amp;gt;&lt;/div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br/&gt;
&lt;br/&gt;
That did it!&amp;nbsp; Now BlogCFM will ping whatever URLs I type into the admin screen (MXNA).&lt;br/&gt;</description>
	<link>http://www.fwscott.com/blog/1/2005/06/Adding-a-blogger-ping-utility-to-BlogCFM.cfm</link>
	<dc:date>2005-06-07T21:47:35-04:00</dc:date>
	
	<dc:subject>Coldfusion,Coldfusion,Coldfusion,Coldfusion,Coldfusion,Coldfusion,Fusebox,Coldfusion,Fusebox,Coldfusion,Misc,Misc,Coldfusion,CFC Generator,Coldfusion,CFC Generator,Coldfusion,BlogCFM</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.fwscott.com/blog/1/2005/06/Greasemonkey.cfm">
	<title>Greasemonkey!</title>
	<description>&lt;br/&gt;
Well, this is probably not new technology to most but I just read about it the other evening.&lt;br/&gt;
&lt;br/&gt;
&lt;a href=&quot;http://greasemonkey.mozdev.org/&quot;&gt;http://greasemonkey.mozdev.org/&lt;/a&gt;&lt;br/&gt;
&lt;br/&gt;
For anyone that doesnt know what it does, it basically allows you to make any webpage look how you want it to look.&amp;nbsp; Lots of cool examples at &lt;a href=&quot;http://dunck.us/collab/GreaseMonkeyUserScripts&quot;&gt;http://dunck.us/collab/GreaseMonkeyUserScripts.&lt;/a&gt;&lt;br/&gt;
&lt;br/&gt;
Anyways....&amp;nbsp; after reading over all this stuff I decided I wanted to make something.&amp;nbsp; The best thing I could think of was a minor annoyance I had with some websites not offering their own search feature.&lt;br/&gt;
&lt;br/&gt;
So I figured every site should at least have a google search on it.&amp;nbsp; Now I just needed a decent way to show the form and I found &lt;a href=&quot;http://www.xs4all.nl/~jlpoutre/BoT/Javascript/RSSpanel/rsspanel.html&quot;&gt;http://www.xs4all.nl/~jlpoutre/BoT/Javascript/RSSpanel/rsspanel.html&lt;/a&gt; as a starting point of my project.&amp;nbsp; It offers a user draggable interface for a floating window.&lt;br/&gt;
&lt;br/&gt;
After mangling his code and inserting some of my own, I came up with:&lt;br/&gt;
&lt;img width=&quot;466&quot; height=&quot;132&quot; alt=&quot;Search this site picture&quot; src=&quot;http://www.franciswscott.com/blog/1/custom/creation.jpg&quot;/&gt;&lt;br/&gt;
&lt;br/&gt;
Couple key things added to his code.&lt;br/&gt;
&lt;ol&gt;
    &lt;li&gt;It saves the location/visibility of the search box for the site you are currently visiting.&lt;/li&gt;
    &lt;li&gt;Has a user command to force the search box to show for the current site.&lt;/li&gt;
    &lt;li&gt;You can restore the default location of the search box via the user command menu.&lt;/li&gt;
&lt;/ol&gt;
So, now whenever I visit a site, I can always search the site directly from the webpage.&amp;nbsp; If the webpage has a form that contains the text &amp;quot;search&amp;quot;, the search box will not display unless I force the search box to display.&lt;br/&gt;
&lt;br/&gt;
If interested, you can install the Greasemonkey script at &lt;a href=&quot;http://www.franciswscott.com/downloads/searchthissite.user.js&quot;&gt;http://www.franciswscott.com/downloads/searchthissite.user.js&lt;/a&gt;&lt;br/&gt;
&lt;br/&gt;
To sum up Greasemonkey..... very very nice idea!&lt;br/&gt;
&lt;br/&gt;
&lt;br/&gt;</description>
	<link>http://www.fwscott.com/blog/1/2005/06/Greasemonkey.cfm</link>
	<dc:date>2005-06-07T19:31:34-04:00</dc:date>
	
	<dc:subject>Coldfusion,Coldfusion,Coldfusion,Coldfusion,Coldfusion,Coldfusion,Fusebox,Coldfusion,Fusebox,Coldfusion,Misc,Misc,Coldfusion,CFC Generator,Coldfusion,CFC Generator,Coldfusion,BlogCFM,Greasemonkey</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.fwscott.com/blog/1/2005/05/Adding-Pods-to-BlogCFM.cfm">
	<title>Adding &quot;Pods&quot; to BlogCFM</title>
	<description>Adding a &amp;quot;pod&amp;quot; (side item) to BlogCFM proved to be very easy.&lt;br/&gt;
&lt;br/&gt;
All you have to do is duplicate one of the pods in the &amp;quot;pod&amp;quot; directory and modify the contents.&lt;br/&gt;
&lt;br/&gt;
To finally include it on your webpage open up the below.cfm and add an&lt;br/&gt;
&lt;br/&gt;
&amp;lt;cfinclude template=&amp;quot;#variables.mapping#pods/&amp;lt;podfilename&amp;gt;.cfm&amp;quot;&amp;gt;&lt;br/&gt;
&lt;br/&gt;
Next pod I add will be a managed pod probably containing links stored inside the database.&amp;nbsp; We shall see how that goes.&lt;br/&gt;</description>
	<link>http://www.fwscott.com/blog/1/2005/05/Adding-Pods-to-BlogCFM.cfm</link>
	<dc:date>2005-05-26T12:22:57-04:00</dc:date>
	
	<dc:subject>Coldfusion,Coldfusion,Coldfusion,Coldfusion,Coldfusion,Coldfusion,Fusebox,Coldfusion,Fusebox,Coldfusion,Misc,Misc,Coldfusion,CFC Generator,Coldfusion,CFC Generator,Coldfusion,BlogCFM,Greasemonkey,BlogCFM</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.fwscott.com/blog/1/2005/05/CFC-DAO-Generator-Take-two.cfm">
	<title>CFC DAO Generator: Take two</title>
	<description>Since my first post of the CFC DAO Generator I have made a few changes.&lt;br/&gt;
&lt;br/&gt;
&lt;ol&gt;
    &lt;li&gt;Reorganized my CFCs to read table information.&lt;/li&gt;
    &lt;li&gt;Added a tableindex CFC to hold an index of a table.&lt;/li&gt;
    &lt;li&gt;Interface now generates a gateway CFC for the table based on indexes.&lt;/li&gt;
    &lt;li&gt;Added the ability to save the generated CFCs.&lt;/li&gt;
&lt;/ol&gt;
With the above changes, I am now able to automatically generate all my database CFCs with little to no changes.&amp;nbsp; The gateway CFC now contains querys based on every index of the table being shown, so assuming I built the table correctly, all searchable fields should have a query generated for them.&lt;br/&gt;
&lt;br/&gt;
Also, this should work with all databases supported by ColdFusion which makes it a big plus.&lt;br/&gt;
&lt;br/&gt;
Again, you can demo the CFCCreator &lt;a target=&quot;demo&quot; href=&quot;http://www.franciswscott.com/cfccreator/&quot;&gt;here&lt;/a&gt; and download the source &lt;a target=&quot;download&quot; href=&quot;http://www.franciswscott.com/downloads/cfccreator.zip&quot;&gt;here&lt;/a&gt;.&lt;br/&gt;
&lt;br/&gt;
Please read the README file inside the zip for installation instructions.&lt;br/&gt;
&lt;br/&gt;
Any further suggestions to make this better, leave some comments.</description>
	<link>http://www.fwscott.com/blog/1/2005/05/CFC-DAO-Generator-Take-two.cfm</link>
	<dc:date>2005-05-23T17:50:13-04:00</dc:date>
	
	<dc:subject>Coldfusion,Coldfusion,Coldfusion,Coldfusion,Coldfusion,Coldfusion,Fusebox,Coldfusion,Fusebox,Coldfusion,Misc,Misc,Coldfusion,CFC Generator,Coldfusion,CFC Generator,Coldfusion,BlogCFM,Greasemonkey,BlogCFM,CFC Generator</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.fwscott.com/blog/1/2005/05/First-experience-with-BlogCFM.cfm">
	<title>First experience with BlogCFM</title>
	<description>Bugs found:&lt;br/&gt;
&lt;ol&gt;
    &lt;li&gt;FckEditor shipped with BlogCFM would not work with Firefox with the default toolbar turned on.&lt;/li&gt;
    &lt;li&gt;Couldnt edit a post over a certain length. (damn typos)&lt;br/&gt;
    &lt;/li&gt;
    &lt;li&gt;If blogCFM is not installed to the root of your website and/or the site does not have access to /CFIDE all the cfform validation will fail and will generate tons of 404 errors in the web server log.&lt;/li&gt;
&lt;/ol&gt;
Fixes:&lt;br/&gt;
&lt;ol&gt;
    &lt;li&gt;Downloaded and installed the latest version of FCKEditor.&amp;nbsp; It was simple, the only changes I had to make were in the FCKEditor config files so it would work with ColdFusion.&lt;/li&gt;
    &lt;li&gt;lines 857-858 of blogcfm.cfc had the wrong cfsqltype, had to change it to cfsqltype=&amp;quot;cf_sql_longvarchar&amp;quot;&lt;/li&gt;
    &lt;li&gt;Had to modify all cfform tags and add an attribute of scriptsrc=&amp;quot;#variables.blogConfig.webRoot#/CFIDE/scripts/cfform.js&amp;quot;.&amp;nbsp; This sounds bad but Dreamweaver&apos;s advanced find and replace makes it easy.&lt;/li&gt;
&lt;/ol&gt;
Now that I had everything fixed that I found wrong. It was time to do see how easy it was to make modifications.&lt;br/&gt;
&lt;br/&gt;
First thing I didnt like was to have the basic toolbar show by default for the FCKEditor and I couldnt find an option to change the default.&amp;nbsp; This seemed like a great first experiment.&lt;br/&gt;
&lt;ol&gt;
    &lt;li&gt;ALTER TABLE blog_config ADD HTML_EDITOR_DEFAULT_STYLE varchar(25)&lt;/li&gt;
    &lt;li&gt;Added HTML_EDITOR_DEFAULT_STYLE to the getBlogConfig query in blogcfm.cfc&lt;/li&gt;
    &lt;li&gt;Added HTML_EDITOR_DEFAULT_STYLE=&amp;lt;cfqueryparam cfsqltype=&amp;quot;cf_sql_varchar&amp;quot; value=&amp;quot;#arguments.details.HTML_EDITOR_DEFAULT_STYLE#&amp;quot;&amp;gt; in the update statement of saveblogconfig()&lt;/li&gt;
    &lt;li&gt;changed &amp;lt;cfparam name=&amp;quot;toolbarSet&amp;quot; default=&amp;quot;#variables.blogConfig.HTML_EDITOR_DEFAULT_STYLE#&amp;quot;&amp;gt; in entry_edit.cfm&lt;/li&gt;
    &lt;li&gt;added &amp;lt;cfparam name=&amp;quot;FORM.HTML_EDITOR_DEFAULT_STYLE&amp;quot; default=&amp;quot;Basic&amp;quot;&amp;gt; under the isDefined(&amp;quot;form.blogConfig&amp;quot;) in edit_entry.cfm&lt;/li&gt;
    &lt;li&gt;&amp;nbsp;added &lt;br/&gt;
    &amp;lt;br&amp;gt;&lt;br/&gt;
    &amp;lt;b&amp;gt;HTML Editor Options&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br/&gt;
    Default style: &amp;lt;select name=&amp;quot;HTML_EDITOR_DEFAULT_STYLE&amp;quot;&amp;gt;&lt;br/&gt;
    &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;option value=&amp;quot;Basic&amp;quot;&amp;lt;cfif blogConfig.HTML_EDITOR_DEFAULT_STYLE IS &apos;Basic&apos;&amp;gt; SELECTED&amp;lt;/cfif&amp;gt;&amp;gt;Basic&amp;lt;/option&amp;gt;&lt;br/&gt;
    &amp;nbsp; &amp;lt;option value=&amp;quot;Default&amp;quot;&amp;lt;cfif blogConfig.HTML_EDITOR_DEFAULT_STYLE IS &apos;Default&apos;&amp;gt; SELECTED&amp;lt;/cfif&amp;gt;&amp;gt;Default&amp;lt;/option&amp;gt;&lt;br/&gt;
    &amp;lt;/select&amp;gt;&lt;br/&gt;
    to admin/index.cfm&lt;br/&gt;
    &lt;/li&gt;
&lt;/ol&gt;
That was all I had to do to make a new setting show up in the admin screen and have it be applied to every instance of the blog entry editor/creator.&amp;nbsp; &lt;br/&gt;
&lt;br/&gt;
Considering I knew nothing about BlogCFM before, these changes were easy to make and find where to put the correct new code.&lt;br/&gt;
&lt;br/&gt;
Next on the list will be creating a Links section, will keep you posted on how that works out.&lt;br/&gt;</description>
	<link>http://www.fwscott.com/blog/1/2005/05/First-experience-with-BlogCFM.cfm</link>
	<dc:date>2005-05-19T22:43:07-04:00</dc:date>
	
	<dc:subject>Coldfusion,Coldfusion,Coldfusion,Coldfusion,Coldfusion,Coldfusion,Fusebox,Coldfusion,Fusebox,Coldfusion,Misc,Misc,Coldfusion,CFC Generator,Coldfusion,CFC Generator,Coldfusion,BlogCFM,Greasemonkey,BlogCFM,CFC Generator,BlogCFM</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.fwscott.com/blog/1/2005/05/CFC-Generator-and-my-first-real-use.cfm">
	<title>CFC Generator and my first real use</title>
	<description>So, I thought the CFC generator would be a perfect match for my coding needs till I started coding with the generated CFCs.&amp;nbsp; I found myself having to create a gateway CFC for each table. &lt;br/&gt;
&lt;br/&gt;
&amp;nbsp;I knew I would need gateway objects but at first I did not think I could automate what I needed. Then I noticed that most of my gateway querys were based on indexes created in the database.&amp;nbsp; &lt;br/&gt;
&lt;br/&gt;
Well, the CFC Generator already can read all indexes on a database but I was only taking advantage of the primary key index. So, I just had to add a new class of tableindex and feed the other indexes into the class. &amp;nbsp; I already have some changes made to my private version of the generator and will upload them to my site soon.&lt;br/&gt;
&lt;br/&gt;
Can already tell you that the table to XML structure has changed a little.&lt;br/&gt;
&lt;br/&gt;
It now looks like&lt;br/&gt;
&lt;br/&gt;
&lt;div class=&quot;code&quot;&gt; &amp;lt;table&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;name&amp;gt;tablename&amp;lt;/tablename&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;dbtype&amp;gt;Database type&amp;lt;/dbtype&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;columns&amp;gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;column&amp;gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;column name1&amp;lt;/name&amp;gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;length&amp;gt;column length&amp;lt;/length&amp;gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; etc&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; etc&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; etc&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/column&amp;gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;column&amp;gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;column name2&amp;lt;/name&amp;gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;length&amp;gt;column length&amp;lt;/length&amp;gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; etc&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; etc&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; etc&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/column&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/columns&amp;gt;&lt;br/&gt;
&lt;br/&gt;
&amp;lt;!--This is where new stuff and the beauty of XML/XSL come into play --&amp;gt;&lt;br/&gt;
&lt;br/&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;indexes&amp;gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;index&amp;gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;name&amp;gt;Index name&amp;lt;/name&amp;gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;type&amp;gt;index type&amp;lt;/type&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;columns&amp;gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;column&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;column name1&amp;lt;/name&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;length&amp;gt;column length&amp;lt;/length&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; etc&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; etc&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; etc&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/column&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;column&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;column name2&amp;lt;/name&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;length&amp;gt;column length&amp;lt;/length&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; etc&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; etc&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; etc&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/column&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/columns&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/index&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;/indexs&amp;gt;&lt;br/&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;
&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br/&gt;
I imagine the default generated gateway CFC will have functions something like:&lt;br/&gt;
&lt;div class=&quot;code&quot;&gt; &amp;lt;cffunction name=&amp;quot;get#Tablename#by#indexname#&amp;quot; returntype=&amp;quot;query&amp;quot;&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfargument name=&amp;quot;#indexfield1#&amp;quot; type=&amp;quot;#indexfield1type#&amp;quot; required=&amp;quot;true&amp;quot;&amp;gt;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfargument name=&amp;quot;#indexfield2#&amp;quot; type=&amp;quot;#indexfield2type#&amp;quot; required=&amp;quot;true&amp;quot;&amp;gt;&lt;br/&gt;
&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfquery .....................&lt;br/&gt;
&lt;br/&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;/cfquery&amp;gt;&lt;br/&gt;
&lt;br/&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;cfreturn thequery&amp;gt;&lt;br/&gt;
&amp;lt;/cffunction&amp;gt;&lt;/div&gt;
&lt;br/&gt;
&lt;br/&gt;
and a getAll function to read all rows from the table.&lt;br/&gt;
&lt;br/&gt;
Also, the next version should work with any database supported by CF with no changes made to code.</description>
	<link>http://www.fwscott.com/blog/1/2005/05/CFC-Generator-and-my-first-real-use.cfm</link>
	<dc:date>2005-05-19T22:18:51-04:00</dc:date>
	
	<dc:subject>Coldfusion,Coldfusion,Coldfusion,Coldfusion,Coldfusion,Coldfusion,Fusebox,Coldfusion,Fusebox,Coldfusion,Misc,Misc,Coldfusion,CFC Generator,Coldfusion,CFC Generator,Coldfusion,BlogCFM,Greasemonkey,BlogCFM,CFC Generator,BlogCFM,CFC Generator</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.fwscott.com/blog/1/2005/05/CFC-DAO-Generator.cfm">
	<title>CFC DAO Generator</title>
	<description>Since my blog was not up while developing this application I will not go into the details of what all I had to overcome, only why I created this application.&lt;br/&gt;
&lt;br/&gt;
Why?&lt;br/&gt;
I am in the process of migrating an existing application that has over 200 tables in the database.&amp;nbsp; We do not have any of the queries or access to the source code of the existing application.&amp;nbsp; The closest thing I could find that would do something similar, did not support my database type.&lt;br/&gt;
&lt;br/&gt;
What I needed:&lt;br/&gt;
The ability to generate DAO/Bean CFCs from analyzing a table structure.&lt;br/&gt;
&lt;br/&gt;
What I came up with was:&lt;br/&gt;
A multi-database CFC DAO generator.&amp;nbsp; Its all based on XML and is easy to generate a CFC if you know XSL.&lt;br/&gt;
I have uploaded a &lt;a target=&quot;_blank&quot; href=&quot;http://www.franciswscott.com/cfccreator&quot;&gt;demo&lt;/a&gt; here, the demo only runs off the cfsnippets datasource and the &lt;a href=&quot;http://www.franciswscott.com/downloads/cfccreator.zip&quot; target=&quot;_blank&quot;&gt;downloadable&lt;/a&gt; version displays all datasources registered with CF Admin.&lt;br/&gt;
&lt;br/&gt;
Results:&lt;br/&gt;
Amazing for me, I was able to generate over 45 files in about 10 minutes.&amp;nbsp; These CFCs fitted the database structure we were working with and allowed me to create a standard base DAO factory with ease.&lt;br/&gt;
&lt;br/&gt;
If you download this, please make sure you read the README file in the zip file for instructions on installing / customizing.&amp;nbsp; The frontend is nothing to brag about but the results are just great.&lt;br/&gt;
&lt;br/&gt;
Tell me what you think.&lt;br/&gt;</description>
	<link>http://www.fwscott.com/blog/1/2005/05/CFC-DAO-Generator.cfm</link>
	<dc:date>2005-05-19T12:27:26-04:00</dc:date>
	
	<dc:subject>Coldfusion,Coldfusion,Coldfusion,Coldfusion,Coldfusion,Coldfusion,Fusebox,Coldfusion,Fusebox,Coldfusion,Misc,Misc,Coldfusion,CFC Generator,Coldfusion,CFC Generator,Coldfusion,BlogCFM,Greasemonkey,BlogCFM,CFC Generator,BlogCFM,CFC Generator,CFC Generator</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.fwscott.com/blog/1/2005/05/Trip-to-Thailand.cfm">
	<title>Trip to Thailand</title>
	<description>These pictures are from when I visited Thailand a few months back.&lt;br/&gt;
&lt;br/&gt;
I am in the process of uploading others but I wanted to test out how the photo galleries worked.&lt;br/&gt;</description>
	<link>http://www.fwscott.com/blog/1/2005/05/Trip-to-Thailand.cfm</link>
	<dc:date>2005-05-18T23:52:42-04:00</dc:date>
	
	<dc:subject>Coldfusion,Coldfusion,Coldfusion,Coldfusion,Coldfusion,Coldfusion,Fusebox,Coldfusion,Fusebox,Coldfusion,Misc,Misc,Coldfusion,CFC Generator,Coldfusion,CFC Generator,Coldfusion,BlogCFM,Greasemonkey,BlogCFM,CFC Generator,BlogCFM,CFC Generator,CFC Generator,Misc</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.fwscott.com/blog/1/2005/05/E6.Welcome-to-my-new-website.cfm">
	<title>Welcome to my new website</title>
	<description>Well I finally went out and did it.&lt;br/&gt;
&lt;br/&gt;
I bought a domain name for me to use. &lt;img src=&quot;/blog/FCKeditor/editor/images/smiley/msn/shades_smile.gif&quot; alt=&quot;&quot;/&gt;&lt;br/&gt;
&lt;br/&gt;
You might ask why would I do this?&lt;br/&gt;
&lt;ol&gt;
    &lt;li&gt;I wanted a place to post my thoughts.&lt;/li&gt;
    &lt;li&gt;I enjoy reading other people&apos;s blog, so I hope you will enjoy reading mine.&lt;/li&gt;
    &lt;li&gt;I wanted a place that I could share coding problems and maybe some tips.&lt;/li&gt;
    &lt;li&gt;I wanted a place that I could test certain code.&lt;/li&gt;
    &lt;li&gt;I like learning new things and this gives me a reason to learn.&lt;/li&gt;
&lt;/ol&gt;
This site is currently running BlogCFM and I must say I am very happy with how easy it was to setup.&amp;nbsp; Next on my list is to dig into BlogCFM and customize the site.&amp;nbsp; I plan to blog my experience so anyone that is curious about BlogCFM stay tuned.&lt;br/&gt;
&lt;br/&gt;
Now to tighten up on my writing skills and get to sharing &lt;img src=&quot;/blog/FCKeditor/editor/images/smiley/msn/teeth_smile.gif&quot; alt=&quot;&quot;/&gt;&lt;br/&gt;
&lt;br/&gt;
Enjoy!</description>
	<link>http://www.fwscott.com/blog/1/2005/05/E6.Welcome-to-my-new-website.cfm</link>
	<dc:date>2005-05-18T22:51:55-04:00</dc:date>
	
	<dc:subject>Coldfusion,Coldfusion,Coldfusion,Coldfusion,Coldfusion,Coldfusion,Fusebox,Coldfusion,Fusebox,Coldfusion,Misc,Misc,Coldfusion,CFC Generator,Coldfusion,CFC Generator,Coldfusion,BlogCFM,Greasemonkey,BlogCFM,CFC Generator,BlogCFM,CFC Generator,CFC Generator,Misc,Annoucements</dc:subject>
	</item>
	
	
 	
	</rdf:RDF> 