<?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.opensourcecf.com">
	<title>The Coldfusion Open Source Software Blog</title>
	<description>Powered by BlogCFM</description>
	<link>http://www.opensourcecf.com</link>
	
	<items>
		<rdf:Seq>
			
			
			
				
			<rdf:li rdf:resource="http://www.opensourcecf.com/1/2008/03/Value-Object-Generator.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.opensourcecf.com/1/2007/08/AIR-Url--Adobe-AIR-Project.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.opensourcecf.com/1/2007/05/ImageCFC-216-Now-Available.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.opensourcecf.com/1/2007/05/My-First-Apollo-Application.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.opensourcecf.com/1/2007/05/Smith-Project--Open-Source-Coldfusion-Server.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.opensourcecf.com/1/2007/04/Paging-Through-Record-Sets-without-URL-variables.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.opensourcecf.com/1/2007/03/Join-the-Open-Source-NCAA-Pool.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.opensourcecf.com/1/2007/03/CFMBB-120-Release-Candidate-Available.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.opensourcecf.com/1/2007/03/ImageCFC-214-Released.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.opensourcecf.com/1/2007/02/CFMBB-120-In-Beta.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.opensourcecf.com/1/2007/02/Open-Source-NCAA-Tournament-Pool.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.opensourcecf.com/1/2007/02/Determining-Zip-Code-Proximity.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.opensourcecf.com/1/2007/01/CFCPhotoBlog-to-use-ImageCFC.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.opensourcecf.com/1/2007/01/CFOpenChat-101-Released.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.opensourcecf.com/1/2007/01/ImageCFC-213-Now-Available.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.opensourcecf.com/1/2006/12/ImageCFC-211-Released.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.opensourcecf.com/1/2006/12/UDF-to-generate-File-Drops-in-CSV-Excel-and-Tab-delimited-formats.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.opensourcecf.com/1/2006/12/ImageCFC-210-Released.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.opensourcecf.com/1/2006/12/ImageCFC-20-Released.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.opensourcecf.com/1/2006/12/62.ImapCFC-Update.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.opensourcecf.com/1/2006/12/C2.ImapCFC-Update.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.opensourcecf.com/1/2006/12/A4.ImapCFC-Update.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.opensourcecf.com/1/2006/12/ImapCFC-Update.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.opensourcecf.com/1/2006/11/Using-coldfusion-to-strip-some-or-all-HTML-tags-from-a-string.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.opensourcecf.com/1/2006/09/CFOpenChat-Updated.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.opensourcecf.com/1/2006/08/Debugging-ajaxCFC.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.opensourcecf.com/1/2006/08/CFML-String-Concatenation-is-SLOW--Use-Java-StringBuffer-instead.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.opensourcecf.com/1/2006/07/Asynchronous-HTTP-from-Coldfusion.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.opensourcecf.com/1/2006/07/Reading-large-files-with-java-versus-CFFILE.cfm" />
			
			
			
				
			<rdf:li rdf:resource="http://www.opensourcecf.com/1/2006/06/BlogCFM-112-Released.cfm" />
			
			
		</rdf:Seq>
	</items>
	
	</channel>
		
		
		
		
		
		
		
		
		
  	<item rdf:about="http://www.opensourcecf.com/1/2008/03/Value-Object-Generator.cfm">
	<title>Value Object Generator</title>
	<description>&lt;p&gt;I wrote a little CFM file to generate actionscript classes for value objects from coldfusion queries.&amp;nbsp; It uses getMetaData() on the query to determine data types for the VO.&amp;nbsp; I&apos;ve only coded in some simple datatypes in the getColType() method to handle the conversion from the dbtype to actionscript data type - you can add whatever you need.&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;p&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;&amp;lt;cfsetting enablecfoutputonly=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;cfset voName = &amp;quot;EntityLogVO&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;cfset voPackage = &amp;quot;model.vo&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;cfset remoteClass = &amp;quot;cfcs.enquire.vo.#voName#&amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;&amp;lt;cfquery name=&amp;quot;qry&amp;quot; datasource=&amp;quot;ENQUIRE&amp;quot; maxrows=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;select &lt;br /&gt;
&amp;nbsp;&amp;nbsp;A.QUERYID, A.USERID, A.QUERYDATE, A.INSTANCE, &lt;br /&gt;
&amp;nbsp;&amp;nbsp;A.TITLE, A.SAVED, A.LASTRUNDATE,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;A.CRITERIA&lt;br /&gt;
&amp;nbsp;from dbo.DROP_QUERIES A&lt;br /&gt;
&amp;nbsp;where &lt;br /&gt;
&amp;nbsp;&amp;nbsp;A.USERID=&amp;lt;cfqueryparam cfsqltype=&amp;quot;cf_sql_char&amp;quot; value=&amp;quot;ADSRJR&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;AND A.SAVED=&amp;lt;cfqueryparam cfsqltype=&amp;quot;cf_sql_smallint&amp;quot; value=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;order by &lt;br /&gt;
&amp;nbsp;&amp;nbsp;A.QUERYDATE desc&lt;br /&gt;
&amp;lt;/cfquery&amp;gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;&amp;lt;cffunction name=&amp;quot;getColType&amp;quot; output=&amp;quot;false&amp;quot; returnType=&amp;quot;string&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;cfargument type=&amp;quot;string&amp;quot; name=&amp;quot;coltypename&amp;quot; required=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;lt;cfset coltypename = listfirst(coltypename, &amp;quot; &amp;quot;)&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;cfif coltypename contains &amp;quot;char&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;cfreturn &amp;quot;String&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;cfelseif coltypename contains &amp;quot;int&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;cfreturn &amp;quot;int&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;cfelseif coltypename contains &amp;quot;date&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;cfreturn &amp;quot;Date&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;cfelseif coltypename contains &amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;cfreturn &amp;quot;String&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;cfelseif coltypename contains &amp;quot;float&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;cfreturn &amp;quot;Number&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;cfelseif coltypename contains &amp;quot;double&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;cfreturn &amp;quot;Number&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;cfelse&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;cfthrow message=&amp;quot;Unhandled Database Type&amp;quot; detail=&amp;quot;the database type #coltypename# is not handled.&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;/cfif&amp;gt;&lt;br /&gt;
&amp;lt;/cffunction&amp;gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;&amp;lt;cfoutput&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////&lt;br /&gt;
// #voName#.as&lt;br /&gt;
//&lt;br /&gt;
// generated by voGenerator.cfm (Rick Root)&lt;br /&gt;
// generated on #dateFormat(Now(),&apos;yyyy-mm-dd&apos;)# at #TimeFormat(Now(),&apos;h:mm tt&apos;)#&lt;br /&gt;
// &lt;br /&gt;
//&lt;br /&gt;
/////////////////////////////////////////////////////&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;package #voPackage#&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;[RemoteClass(alias=&amp;quot;#remoteClass#&amp;quot;)]&lt;br /&gt;
&amp;nbsp;public class #voName#&lt;br /&gt;
&amp;nbsp;{&lt;br /&gt;
&amp;lt;/cfoutput&amp;gt;&lt;br /&gt;
&amp;lt;cfset metadata = getMetaData(qry)&amp;gt;&lt;br /&gt;
&amp;lt;cfloop from=&amp;quot;1&amp;quot; to=&amp;quot;#ArrayLen(metadata)#&amp;quot; step=&amp;quot;1&amp;quot; index=&amp;quot;x&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;cfoutput&amp;gt;&amp;nbsp;&amp;nbsp;private var _#metadata[x].Name#: #getColType(metadata[x].TypeName)#;#chr(10)#&amp;lt;/cfoutput&amp;gt;&lt;br /&gt;
&amp;lt;/cfloop&amp;gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;&amp;lt;cfloop from=&amp;quot;1&amp;quot; to=&amp;quot;#ArrayLen(metadata)#&amp;quot; step=&amp;quot;1&amp;quot; index=&amp;quot;x&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;cfoutput&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public function get #metadata[x].Name#(): #getColType(metadata[x].TypeName)#&lt;br /&gt;
&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;return _#metadata[x].Name#;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;&amp;nbsp;&amp;nbsp;public function set #metadata[x].Name#(value:#getColType(metadata[x].TypeName)#): void&lt;br /&gt;
&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;_#metadata[x].Name# = value;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;&amp;nbsp;&amp;lt;/cfoutput&amp;gt;&lt;br /&gt;
&amp;lt;/cfloop&amp;gt;&lt;br /&gt;
&amp;lt;cfoutput&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public function #voName#()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;{&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/cfoutput&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Here is an example of the value object generated from the code above:&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;p&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;/////////////////////////////////////////////////////&lt;br /&gt;
// EntityLogVO.as&lt;br /&gt;
//&lt;br /&gt;
// generated by voGenerator.cfm (Rick Root)&lt;br /&gt;
// generated on 2008-03-07 at 12:40 PM&lt;br /&gt;
// &lt;br /&gt;
//&lt;br /&gt;
/////////////////////////////////////////////////////&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;package model.vo&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;[RemoteClass(alias=&amp;quot;cfcs.enquire.vo.EntityLogVO&amp;quot;)]&lt;br /&gt;
&amp;nbsp;public class EntityLogVO&lt;br /&gt;
&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;private var _QUERYID: int;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;private var _USERID: String;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;private var _QUERYDATE: Date;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;private var _INSTANCE: String;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;private var _TITLE: String;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;private var _SAVED: int;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;private var _LASTRUNDATE: Date;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;private var _CRITERIA: String;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;&amp;nbsp;&amp;nbsp;public function get QUERYID(): int&lt;br /&gt;
&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;return _QUERYID;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;&amp;nbsp;&amp;nbsp;public function set QUERYID(value:int): void&lt;br /&gt;
&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;_QUERYID = value;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public function get USERID(): String&lt;br /&gt;
&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;return _USERID;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;&amp;nbsp;&amp;nbsp;public function set USERID(value:String): void&lt;br /&gt;
&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;_USERID = value;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public function get QUERYDATE(): Date&lt;br /&gt;
&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;return _QUERYDATE;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;&amp;nbsp;&amp;nbsp;public function set QUERYDATE(value:Date): void&lt;br /&gt;
&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;_QUERYDATE = value;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public function get INSTANCE(): String&lt;br /&gt;
&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;return _INSTANCE;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;&amp;nbsp;&amp;nbsp;public function set INSTANCE(value:String): void&lt;br /&gt;
&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;_INSTANCE = value;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public function get TITLE(): String&lt;br /&gt;
&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;return _TITLE;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;&amp;nbsp;&amp;nbsp;public function set TITLE(value:String): void&lt;br /&gt;
&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;_TITLE = value;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public function get SAVED(): int&lt;br /&gt;
&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;return _SAVED;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;&amp;nbsp;&amp;nbsp;public function set SAVED(value:int): void&lt;br /&gt;
&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;_SAVED = value;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public function get LASTRUNDATE(): Date&lt;br /&gt;
&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;return _LASTRUNDATE;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;&amp;nbsp;&amp;nbsp;public function set LASTRUNDATE(value:Date): void&lt;br /&gt;
&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;_LASTRUNDATE = value;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public function get CRITERIA(): String&lt;br /&gt;
&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;return _CRITERIA;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;&amp;nbsp;&amp;nbsp;public function set CRITERIA(value:String): void&lt;br /&gt;
&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;_CRITERIA = value;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;public function EntityLogVO()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;{&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;</description>
	<link>http://www.opensourcecf.com/1/2008/03/Value-Object-Generator.cfm</link>
	<dc:date>2008-03-07T10:11:00-07:00</dc:date>
	
	<dc:subject>Flex and Actionscript</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.opensourcecf.com/1/2007/08/AIR-Url--Adobe-AIR-Project.cfm">
	<title>AIR Url - Adobe AIR Project</title>
	<description>&lt;p&gt;The Adobe on AIR bus tour is stopping by the Raleigh area on Saturday, courtesy of TACFUG and RDAUG, and they&apos;re having a contest.&amp;nbsp; Best AIR app wins a prize!&lt;/p&gt;
&lt;p&gt;Well, my url shortener app may not be the best, but if I&apos;m lucky, it&apos;ll be the only app submitted.&lt;/p&gt;
&lt;p&gt;I&apos;ve recompiled the URL shortener app as an AIR app (I built it when it was still called Apollo), and you can get it here:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;AIR Url Installer - &lt;a href=&quot;/AirUrl.air&quot;&gt;AIRUrl.air&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here&apos;s the source code:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;p&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;mx:WindowedApplication&lt;br /&gt;
&amp;nbsp;xmlns:mx=&amp;quot;http://www.adobe.com/2006/mxml&amp;quot;&lt;br /&gt;
&amp;nbsp;layout=&amp;quot;absolute&amp;quot;&lt;br /&gt;
&amp;nbsp;width=&amp;quot;400&amp;quot; height=&amp;quot;68&amp;quot;&lt;br /&gt;
&amp;nbsp;creationComplete=&amp;quot;init()&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;mx:Script&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;![CDATA[&lt;br /&gt;
import mx.rpc.events.FaultEvent;&lt;br /&gt;
import mx.rpc.events.ResultEvent;&lt;br /&gt;
import mx.rpc.Fault;&lt;br /&gt;
import mx.controls.Alert;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;import mx.utils.StringUtil;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;private function init():void {&lt;br /&gt;
&amp;nbsp;txtLongUrl.setFocus();&lt;br /&gt;
}&lt;br /&gt;
private function genericFault(e:FaultEvent):void&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;txtShortUrl.text = e.fault.faultString;&lt;br /&gt;
&amp;nbsp;btnTryIt.enabled = false;&lt;br /&gt;
}&lt;br /&gt;
private function tryUrl(url:String):void {&lt;br /&gt;
&amp;nbsp;navigateToURL(new URLRequest(url), &apos;_blank&apos;);&lt;br /&gt;
}&lt;br /&gt;
private function addUrlResult(e:ResultEvent):void {&lt;br /&gt;
&amp;nbsp;txtLongUrl.text = &apos;&apos;;&lt;br /&gt;
&amp;nbsp;txtShortUrl.text = e.result.toString();&lt;br /&gt;
&amp;nbsp;if (e.result.toString() != &apos;Invalid Source URL!&apos;) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;btnTryIt.enabled = true;&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
}&lt;br /&gt;
&amp;nbsp;]]&amp;gt;&lt;br /&gt;
&amp;lt;/mx:Script&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;mx:WebService id=&amp;quot;ro&amp;quot; wsdl=&amp;quot;http://url.rickroot.com/url.cfc?wsdl&amp;quot; showBusyCursor=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;mx:operation name=&amp;quot;addUrl&amp;quot; fault=&amp;quot;genericFault(event)&amp;quot; result=&amp;quot;addUrlResult(event)&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;/mx:WebService&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;mx:VBox x=&amp;quot;10&amp;quot; y=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;mx:HBox&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;mx:Label text=&amp;quot;Url to Shorten:&amp;quot; width=&amp;quot;100&amp;quot; fontWeight=&amp;quot;bold&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;mx:TextInput id=&amp;quot;txtLongUrl&amp;quot; width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;mx:Button id=&amp;quot;btnDoIt&amp;quot; label=&amp;quot;Do It!&amp;quot; click=&amp;quot;txtShortUrl.text = &apos;&apos;; ro.addUrl(txtLongUrl.text);&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;/mx:HBox&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;mx:HBox&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;mx:Label text=&amp;quot;Results:&amp;quot; width=&amp;quot;100&amp;quot; fontWeight=&amp;quot;bold&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;mx:TextInput id=&amp;quot;txtShortUrl&amp;quot; width=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;mx:Button id=&amp;quot;btnTryIt&amp;quot; label=&amp;quot;Try It!&amp;quot; click=&amp;quot;tryUrl(txtShortUrl.text);&amp;quot; enabled=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;/mx:HBox&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;/mx:VBox&amp;gt;&amp;nbsp;&lt;br /&gt;
&amp;lt;/mx:WindowedApplication&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
	<link>http://www.opensourcecf.com/1/2007/08/AIR-Url--Adobe-AIR-Project.cfm</link>
	<dc:date>2007-08-15T09:06:34-07:00</dc:date>
	
	<dc:subject>Flex and Actionscript,Adobe AIR,Apollo</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.opensourcecf.com/1/2007/05/ImageCFC-216-Now-Available.cfm">
	<title>ImageCFC 2.16 Now Available</title>
	<description>&lt;p&gt;ImageCFC Project Page:&amp;nbsp; &lt;a href=&quot;http://www.opensourcecf.com/imagecfc/&quot;&gt;http://www.opensourcecf.com/imagecfc/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I released ImageCFC 2.15 yesterday without testing it.&lt;/p&gt;
&lt;p&gt;Today, I released ImageCFC 2.16 *AFTER* testing it.&amp;nbsp; Not heavily, but I did run at least one test of every method.&amp;nbsp; I also included my simple test file, &amp;quot;test-cases.cfm&amp;quot;&lt;/p&gt;
&lt;p&gt;If you haven&apos;t gotten ImageCFC lately, you should definately update!&amp;nbsp; If you&apos;re using a recent version of ImageCFC, you should be able to just drop the code in place without changing YOUR code.&amp;nbsp; ImageCFC 2.15 and 2.16 only included changes to the main &amp;quot;image.cfc&amp;quot; file.&lt;/p&gt;
&lt;p&gt;See the &lt;a href=&quot;http://www.opensourcecf.com/imagecfc/CHANGELOG.TXT&quot;&gt;CHANGELOG&lt;/a&gt; for details.&lt;/p&gt;</description>
	<link>http://www.opensourcecf.com/1/2007/05/ImageCFC-216-Now-Available.cfm</link>
	<dc:date>2007-05-31T08:48:59-07:00</dc:date>
	
	<dc:subject>Flex and Actionscript,Adobe AIR,Apollo,Image Manipulation</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.opensourcecf.com/1/2007/05/My-First-Apollo-Application.cfm">
	<title>My First Apollo Application</title>
	<description>&lt;p&gt;okay, it&apos;s really my second apollo application.&amp;nbsp; But it seemed silly for my first apollo blog entry here to say &amp;quot;My second apollo application&amp;quot; when I never mentioned the first one.&amp;nbsp; Plus, the first one is really an internal app for my job that serves no purpose outside my department.&lt;/p&gt;
&lt;p&gt;Anyway, if you participate in a lot of mailing lists, then you probably use tinyurl a lot.&amp;nbsp; Need a shorten a URL, load up &lt;a href=&quot;http://www.tinyurl.com&quot;&gt;www.tinyurl.com&lt;/a&gt;, paste in your url, and submit.&amp;nbsp; It returns a nice &amp;quot;tiny url&amp;quot; for you.&lt;/p&gt;
&lt;p&gt;Well now you can have a little flex app running all the time called &amp;quot;My Url Shortener&amp;quot; that does the same thing, without having to launch a browser.&amp;nbsp; Just keep it running.. put it in your startup or something like that.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;To run this application, you&apos;ll first need to install the &lt;a href=&quot;http://labs.adobe.com/downloads/apolloruntime.html&quot;&gt;Apollo Runtime&lt;/a&gt;&amp;nbsp;from Adobe, then get the &lt;a href=&quot;http://url.rickroot.com/MyUrlShortener.air&quot;&gt;MyUrlShortener installer&lt;/a&gt; and run it.&lt;/p&gt;
&lt;p&gt;If you&apos;d like the source, which includes the mxml, cfc, and cfm files, along with a README.TXT, the LICENCE.TXT, the air file, and a sample virtual host entry from httpd.conf using mod_rewrite, you should download &lt;a href=&quot;http://url.rickroot.com/MyUrlShortener.zip&quot;&gt;MyUrlShortner.zip&lt;/a&gt;.&lt;/p&gt;</description>
	<link>http://www.opensourcecf.com/1/2007/05/My-First-Apollo-Application.cfm</link>
	<dc:date>2007-05-11T14:37:24-07:00</dc:date>
	
	<dc:subject>Flex and Actionscript,Adobe AIR,Apollo,Image Manipulation,Utilities,Apollo</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.opensourcecf.com/1/2007/05/Smith-Project--Open-Source-Coldfusion-Server.cfm">
	<title>Smith Project - Open Source Coldfusion Server</title>
	<description>&lt;p&gt;&lt;a href=&quot;http://smithproject.org/&quot;&gt;The Smith Project&lt;/a&gt;, another alternative CFML server, announced yesterday that they&apos;ve gone to an open source license.&lt;/p&gt;
&lt;p&gt;From their web site:&lt;/p&gt;
&lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;div class=&quot;cHeading&quot;&gt;&lt;strong&gt;07-May-2007&lt;/strong&gt; &lt;/div&gt;
&lt;p&gt;Smith goes open-source. &lt;br /&gt;
&lt;br /&gt;
After the very positive feedback from the ColdFusion&amp;reg; Developer Community, youngculture decided to open source its ColdFusion&amp;reg; Server &amp;quot;Smith&amp;quot;. Till the end of April Smith Application Server has been downloaded more than 6&apos;000 times. &lt;br /&gt;
&lt;br /&gt;
Developers are welcome to join the project. The project is published under the GPL Licence and will be run and maintained by the newly founded Smith Open Source Software Association (SOSSA). &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I haven&apos;t tried Smith yet, but it looks promising.&lt;/p&gt;</description>
	<link>http://www.opensourcecf.com/1/2007/05/Smith-Project--Open-Source-Coldfusion-Server.cfm</link>
	<dc:date>2007-05-08T06:14:15-07:00</dc:date>
	
	<dc:subject>Flex and Actionscript,Adobe AIR,Apollo,Image Manipulation,Utilities,Apollo,CFML Servers</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.opensourcecf.com/1/2007/04/Paging-Through-Record-Sets-without-URL-variables.cfm">
	<title>Paging Through Record Sets without URL variables</title>
	<description>&lt;p&gt;One of my clients recently asked me to avoid the use of URL variables when paging through record sets.&amp;nbsp; He wanted the &amp;quot;clean&amp;quot; URL look.&amp;nbsp; So I converted some code I&apos;d written to the following.&lt;/p&gt;
&lt;p&gt;The following code uses a hidden form and some javascript to achieve the first/next/previous/last functionality.&amp;nbsp; It also displays &amp;quot;Showing records X - Y of Z total records&amp;quot;&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;
&lt;p&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;&amp;lt;cfsetting enablecfoutputonly=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;cfset perPage = 100&amp;gt;&lt;br /&gt;
&amp;lt;!--- set defaults ---&amp;gt;&lt;br /&gt;
&amp;lt;cfparam name=&amp;quot;session.lastStartRow&amp;quot; default=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;cfparam name=&amp;quot;startRow&amp;quot; default=&amp;quot;#session.lastStartRow#&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;cfif startRow gt qry.recordCount or startrow lt 1&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfset startRow = 1&amp;gt;&lt;br /&gt;
&amp;lt;/cfif&amp;gt;&lt;br /&gt;
&amp;lt;!--- calculate next and previous starting position ---&amp;gt;&lt;br /&gt;
&amp;lt;cfset nextStartRow = startRow + perPage&amp;gt;&lt;br /&gt;
&amp;lt;cfset prevStartRow = startRow - perPage&amp;gt;&lt;br /&gt;
&amp;lt;!--- calc the last row for display purposes ---&amp;gt;&lt;br /&gt;
&amp;lt;cfset endRow = startRow + perPage - 1&amp;gt;&lt;br /&gt;
&amp;lt;cfif endRow gt qry.recordCount&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfset endRow = qry.recordCount&amp;gt;&lt;br /&gt;
&amp;lt;/cfif&amp;gt;&lt;br /&gt;
&amp;lt;!--- save in case we leave the page and come back ---&amp;gt;&lt;br /&gt;
&amp;lt;cfset session.lastStartRow = startRow&amp;gt;&lt;br /&gt;
&amp;lt;!--- the index of the first row of the LAST page is lastPageStart ---&amp;gt;&lt;br /&gt;
&amp;lt;cfset lastPageStart = qry.recordCount - (qry.recordCount MOD perPage)&amp;gt;&lt;br /&gt;
&amp;lt;!--- output the hidden form used for navigation ---&amp;gt;&lt;br /&gt;
&amp;lt;cfoutput&amp;gt;&amp;lt;form name=&amp;quot;frmPage&amp;quot; action=&amp;quot;DataTable.cfm&amp;quot; method=&amp;quot;post&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;startRow&amp;quot; value=&amp;quot;1&amp;quot; id=&amp;quot;startRow&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;script language=&amp;quot;Javascript&amp;quot;&amp;gt;&lt;br /&gt;
function goPage(startRow) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // update the form and submit&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; document.frmPage.startRow.value = startRow;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; document.frmPage.submit();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/cfoutput&amp;gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;&amp;lt;!---&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Save the navigation to a variable so we can&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output it above AND Below the content easily.&lt;br /&gt;
---&amp;gt;&lt;br /&gt;
&amp;lt;cfsavecontent variable=&amp;quot;pager&amp;quot;&amp;gt;&amp;lt;cfoutput&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Showing records #startRow#-#endRow# of #qry.recordCount#.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;javascript:goPage(1);&amp;quot;&amp;gt;First&amp;lt;/a&amp;gt; &amp;amp;nbsp; &lt;br /&gt;
&amp;lt;cfif startRow gt 1&amp;gt;&amp;lt;a href=&amp;quot;javascript:goPage(#prevStartRow#);&amp;quot;&amp;gt;Previous&amp;lt;/a&amp;gt;&amp;lt;cfelse&amp;gt;Previous&amp;lt;/cfif&amp;gt; &amp;amp;nbsp; &lt;br /&gt;
&amp;lt;cfif endRow lt qry.recordCount&amp;gt;&amp;lt;a href=&amp;quot;javascript:goPage(#nextStartRow#);&amp;quot;&amp;gt;Next&amp;lt;/a&amp;gt;&amp;lt;cfelse&amp;gt;Next&amp;lt;/cfif&amp;gt; &amp;amp;nbsp; &lt;br /&gt;
&amp;lt;a href=&amp;quot;javascript:goPage(#lastPageStart#)&amp;quot;&amp;gt;Last&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&amp;lt;/cfoutput&amp;gt;&amp;lt;/cfsavecontent&amp;gt;&lt;br /&gt;
&amp;lt;cfsetting enablecfoutputonly=&amp;quot;yes&amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt;
&lt;font style=&quot;BACKGROUND-COLOR: #ffffcc&quot; face=&quot;Courier&quot;&gt;
&lt;p&gt;&lt;br /&gt;
&amp;lt;cfoutput&amp;gt;#pager#&amp;lt;/cfoutput&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;cfoutput query=&amp;quot;qry&amp;quot; maxrows=&amp;quot;#perPage#&amp;quot; startrow=&amp;quot;#startRow#&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--- do stuff ---&amp;gt;&lt;br /&gt;
&amp;lt;/cfoutput&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;cfoutput&amp;gt;#pager#&amp;lt;/cfoutput&amp;gt;&lt;br /&gt;
&lt;/p&gt;
&lt;/font&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
	<link>http://www.opensourcecf.com/1/2007/04/Paging-Through-Record-Sets-without-URL-variables.cfm</link>
	<dc:date>2007-04-06T17:41:01-07:00</dc:date>
	
	<dc:subject>Flex and Actionscript,Adobe AIR,Apollo,Image Manipulation,Utilities,Apollo,CFML Servers,Code Snippets</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.opensourcecf.com/1/2007/03/Join-the-Open-Source-NCAA-Pool.cfm">
	<title>Join the Open Source NCAA Pool!</title>
	<description>&lt;p&gt;The Open Source NCAA Pool is now open!&amp;nbsp; The winner gets a 2gb USB Flash Drive!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.opensourcecf.com/forums/ncaapool.cfm&quot;&gt;http://www.opensourcecf.com/forums/ncaapool.cfm&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
	<link>http://www.opensourcecf.com/1/2007/03/Join-the-Open-Source-NCAA-Pool.cfm</link>
	<dc:date>2007-03-12T16:34:52-07:00</dc:date>
	
	<dc:subject>Flex and Actionscript,Adobe AIR,Apollo,Image Manipulation,Utilities,Apollo,CFML Servers,Code Snippets,Entertainment</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.opensourcecf.com/1/2007/03/CFMBB-120-Release-Candidate-Available.cfm">
	<title>CFMBB 1.20 Release Candidate Available</title>
	<description>&lt;p&gt;&lt;strong&gt;Project Page for CFMBB:&lt;/strong&gt; &lt;a href=&quot;http://www.cfmbb.org/&quot;&gt;http://www.cfmbb.org/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I&apos;ve been working on CFMBB 1.20 for a little over a month now, adding features, debugging, etc... there are a HUGE number of changes to CFMBB 1.20. User groups, restricted forums based on usergroup membership, integrated &amp;quot;content management&amp;quot;, integrated file manager, integrated chat, lots of caching for better performance on busy sites, improved installation script, CAPTCHA for improved spam prevention, new topic notification options for entire site, per conference, and per forum, along with some bug fixes, modifications for Bluedragon 7 compatibility, etc. &lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.cfmbb.org/index.cfm?pf=download&quot;&gt;Download CFMBB 1.20RC now!&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Thanks to everyone who helped me get it to this point! And thanks to Ray for a great app to start with :)&lt;/p&gt;</description>
	<link>http://www.opensourcecf.com/1/2007/03/CFMBB-120-Release-Candidate-Available.cfm</link>
	<dc:date>2007-03-07T10:16:40-07:00</dc:date>
	
	<dc:subject>Flex and Actionscript,Adobe AIR,Apollo,Image Manipulation,Utilities,Apollo,CFML Servers,Code Snippets,Entertainment,Forums / Message Boards</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.opensourcecf.com/1/2007/03/ImageCFC-214-Released.cfm">
	<title>ImageCFC 2.14 Released</title>
	<description>&lt;p class=&quot;content&quot;&gt;&lt;strong&gt;Project Page for ImageCFC&lt;/strong&gt;: &amp;nbsp;&lt;a href=&quot;http://www.opensourcecf.com/imagecfc/&quot;&gt;http://www.opensourcecf.com/imagecfc/&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;New in Version 2.14 - Exact Size Thumbnails&lt;/h4&gt;
&lt;p&gt;Thanks to some contributed code, there is now a new &amp;quot;cropToExact&amp;quot; argument to the resize() method. This argument, when combined with a specified width, specified height, and the preserveAspect argument being set to true will cause a image to be resized then cropped to fit exactly within the specified dimensions.&lt;/p&gt;
&lt;p&gt;For example, this will allow you to take a 800x600 image, and create a 100x100 thumbnail while still preservign the aspect ratio. In this case, the image would be resized to 133x100, then cropped to 100x100.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.opensourcecf.com/imagecfc/download.cfm&quot;&gt;Download ImageCFC 2.14 Now!&lt;/a&gt;&lt;/p&gt;</description>
	<link>http://www.opensourcecf.com/1/2007/03/ImageCFC-214-Released.cfm</link>
	<dc:date>2007-03-07T09:53:08-07:00</dc:date>
	
	<dc:subject>Flex and Actionscript,Adobe AIR,Apollo,Image Manipulation,Utilities,Apollo,CFML Servers,Code Snippets,Entertainment,Forums / Message Boards,Image Manipulation</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.opensourcecf.com/1/2007/02/CFMBB-120-In-Beta.cfm">
	<title>CFMBB 1.20 In Beta</title>
	<description>&lt;p&gt;&lt;a href=&quot;http://www.cfmbb.org&quot;&gt;CFMBB&lt;/a&gt; 1.20 is in beta now!&amp;nbsp; It includes many new features, including support for user groups, restricting forum access to specific user groups, integration of the &lt;a href=&quot;/cfopenchat&quot;&gt;CFOpenChat&lt;/a&gt; chat software, addition of basic content management features with integrated file manager (&lt;a href=&quot;/cffm&quot;&gt;CFFM&lt;/a&gt;).&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Themes have been &amp;quot;simplified&amp;quot; in that the navigation is no longer included in the header/footer pages.&amp;nbsp; Previous versions of the themes included with CFMBB used wrapping tables, which aren&apos;t used any more.&lt;/p&gt;
&lt;p&gt;Version 1.20 also includes several bug fixes, adds support for Bluedragon 7 (they&apos;ve implemented a new built-in CFML function called querySort, which was the name of one of the UDFs in CFMBB, so I had to change its name to qrySort)&lt;/p&gt;
&lt;p&gt;This is not an official release, but if you&apos;d like to download the beta for testing, it&apos;s &lt;a href=&quot;http://www.cfmbb.org/cfmbb-1.20b.zip&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Check out the demo &lt;/strong&gt;&lt;a href=&quot;http://demo.cfmbb.org&quot;&gt;&lt;strong&gt;here&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.&amp;nbsp; Username: admin, password: admin&lt;/strong&gt;&lt;/p&gt;</description>
	<link>http://www.opensourcecf.com/1/2007/02/CFMBB-120-In-Beta.cfm</link>
	<dc:date>2007-02-27T01:24:20-07:00</dc:date>
	
	<dc:subject>Flex and Actionscript,Adobe AIR,Apollo,Image Manipulation,Utilities,Apollo,CFML Servers,Code Snippets,Entertainment,Forums / Message Boards,Image Manipulation,Forums / Message Boards</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.opensourcecf.com/1/2007/02/Open-Source-NCAA-Tournament-Pool.cfm">
	<title>Open Source NCAA Tournament Pool</title>
	<description>&lt;p&gt;My NCAA Tournament pool application has been updated.&amp;nbsp; It now works with both Galleon (untested) and CFMBB.&amp;nbsp; You can probably pretty easily modify it to work with pretty much any authentication framework.&lt;/p&gt;
&lt;p&gt;For a demo, check out &lt;font face=&quot;Arial&quot;&gt;&lt;a href=&quot;http://www.opensourcecf.com/forums/ncaapool.cfm&quot;&gt;http://www.opensourcecf.com/forums/ncaapool.cfm&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;The project page is here:&amp;nbsp; &lt;a href=&quot;http://www.opensourcecf.com/ncaapool&quot;&gt;www.opensourcecf.com/ncaapool&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The brackets included are current projections from CollegeRPI.com (Jerry&apos;s February 23 brackets).&amp;nbsp; Don&apos;t come whining to me about why your team isn&apos;t in there, and don&apos;t come whining to me about why your team is seeded so low!&lt;/p&gt;</description>
	<link>http://www.opensourcecf.com/1/2007/02/Open-Source-NCAA-Tournament-Pool.cfm</link>
	<dc:date>2007-02-27T01:16:13-07:00</dc:date>
	
	<dc:subject>Flex and Actionscript,Adobe AIR,Apollo,Image Manipulation,Utilities,Apollo,CFML Servers,Code Snippets,Entertainment,Forums / Message Boards,Image Manipulation,Forums / Message Boards,Forums / Message Boards,Entertainment</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.opensourcecf.com/1/2007/02/Determining-Zip-Code-Proximity.cfm">
	<title>Determining Zip Code Proximity</title>
	<description>&lt;p&gt;So I got a request from one of our development officers the other day.&amp;nbsp; They wanted to be able to perform prospect reports based on zip code, or a range of zip codes.&amp;nbsp; So I started investigating, and found numerous resources thanks to the members of the coldfusion community on the cf-talk mailing list.&lt;/p&gt;
&lt;p&gt;First, someone pointed me to &lt;a href=&quot;http://www.teamredline.com/&quot;&gt;http://www.teamredline.com/&lt;/a&gt;, a company that sells zip code databases for $5.&amp;nbsp; The database contains city, state, state abbreviation, zip code, latitude, and longitude.&amp;nbsp; I forked out the $5 and downloaded the data, and then imported it into SQL Server.&lt;/p&gt;
&lt;p&gt;Russ also provided a SQL Server function that would determine the distance between two points on the globe, and here it is:&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;p&gt;CREATE FUNCTION [dbo].[getDistance]&lt;br /&gt;
(&lt;br /&gt;
&amp;nbsp;@lat1 numeric(9,6),&lt;br /&gt;
&amp;nbsp;@lon1 numeric(9,6),&lt;br /&gt;
&amp;nbsp;@lat2 numeric(9,6),&lt;br /&gt;
&amp;nbsp;@lon2 numeric(9,6)&lt;br /&gt;
)&lt;br /&gt;
RETURNS NUMERIC( 10, 5 )&lt;br /&gt;
AS&lt;br /&gt;
BEGIN&lt;br /&gt;
&amp;nbsp;DECLARE @x decimal(20,10)&lt;br /&gt;
&amp;nbsp;DECLARE @pi decimal(21,20)&lt;br /&gt;
&amp;nbsp;SET @pi = 3.14159265358979323846&lt;br /&gt;
&amp;nbsp;SET @x = sin( @lat1 * @pi/180 ) * sin( @lat2 * @pi/180&amp;nbsp; ) + cos(&lt;br /&gt;
&amp;nbsp;@lat1 &lt;a href=&quot;mailto:*@pi/180&quot;&gt;*@pi/180&lt;/a&gt; ) * cos( @lat2 * @pi/180 ) * cos( abs( (@lon2 * @pi/180) -&lt;br /&gt;
&amp;nbsp;(@lon1 &lt;a href=&quot;mailto:*@pi/180&quot;&gt;*@pi/180&lt;/a&gt;) ) )&lt;br /&gt;
&amp;nbsp;SET @x = atan( ( sqrt( 1- power( @x, 2 ) ) ) / @x )&lt;br /&gt;
&amp;nbsp;RETURN ( 1.852 * 60.0 * ((@x/@pi)*180) ) / 1.609344&lt;br /&gt;
END&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;He also provided a method of querying based on zip code that used a cross join.&amp;nbsp; Several other users had recommended modifying his query to restrict the number of zip codes it compares by looking for latitude between A-X and A+X where A is the latitude of the origin zip code, and X is some factor of degrees that would contain the search radius.&amp;nbsp; You can do the same for longitude (though the further north you go, the wider the area you end up including because the longitude is only 69 degrees per mile at the equator... but enough math!&amp;nbsp; Here&apos;s the query, cfquery style:&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;SELECT&lt;br /&gt;
&amp;nbsp;z2.CITY, z2.ABBR, z2.ZIPCODE&lt;br /&gt;
FROM&lt;br /&gt;
&amp;nbsp;ADSPRD.dbo.zipcodes z &lt;br /&gt;
&amp;nbsp;cross join ADSPRD.dbo.zipcodes z2 &lt;br /&gt;
WHERE&lt;br /&gt;
&amp;nbsp;z.zipCode=&amp;lt;cfqueryparam cfsqltype=&amp;quot;cf_sql_char&amp;quot; value=&amp;quot;#zipcode#&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;AND z2.LATITUDE BETWEEN z.latitude-(&amp;lt;cfqueryparam cfsqltype=&amp;quot;cf_sql_smallint&amp;quot; value=&amp;quot;#range#&amp;quot;&amp;gt;*0.014457*2) and z.latitude+(&amp;lt;cfqueryparam cfsqltype=&amp;quot;cf_sql_smallint&amp;quot; value=&amp;quot;#range#&amp;quot;&amp;gt;*0.014457*2)&lt;br /&gt;
&amp;nbsp;AND z2.LONGITUDE BETWEEN z.longitude-(&amp;lt;cfqueryparam cfsqltype=&amp;quot;cf_sql_smallint&amp;quot; value=&amp;quot;#range#&amp;quot;&amp;gt;*0.014457*2) and z.longitude+(&amp;lt;cfqueryparam cfsqltype=&amp;quot;cf_sql_smallint&amp;quot; value=&amp;quot;#range#&amp;quot;&amp;gt;*0.014457*2)&lt;br /&gt;
&amp;nbsp;and ADSPRD.dbo.getDistance(z.Latitude, z.longitude,z2.latitude, z2.longitude) &lt;br /&gt;
&amp;nbsp;&amp;lt;= &amp;lt;cfqueryparam cfsqltype=&amp;quot;cf_sql_smallint&amp;quot; value=&amp;quot;#range#&amp;quot;&amp;gt;;&lt;br /&gt;
&lt;/div&gt;
&lt;p&gt;But I found an even faster way, as follows.&amp;nbsp; It uses some Transact-SQL statements, but gets the same results without the cross join.&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;p&gt;DECLARE @lat1 decimal(5,2);&lt;br /&gt;
DECLARE @long1 decimal(5,2);&lt;br /&gt;
DECLARE @rangeFactor decimal(7,6);&lt;br /&gt;
SET @rangeFactor = 0.014457;&lt;br /&gt;
SELECT @lat1 = LATITUDE, @long1 = LONGITUDE from ADSPRD.dbo.zipcodes where zipcode = &amp;lt;cfqueryparam cfsqltype=&amp;quot;cf_sql_char&amp;quot; value=&amp;quot;#zipcode#&amp;quot;&amp;gt;;&lt;/p&gt;
&lt;p&gt;SELECT B.CITY, B.ABBR, B.zipcode &lt;br /&gt;
FROM ADSPRD.dbo.zipcodes B &lt;br /&gt;
WHERE &lt;br /&gt;
&amp;nbsp;B.LATITUDE BETWEEN @lat1-(&amp;lt;cfqueryparam cfsqltype=&amp;quot;cf_sql_smallint&amp;quot; value=&amp;quot;#range#&amp;quot;&amp;gt;*@rangeFactor) and @lat1+(&amp;lt;cfqueryparam cfsqltype=&amp;quot;cf_sql_smallint&amp;quot; value=&amp;quot;#range#&amp;quot;&amp;gt;*@rangeFactor)&lt;br /&gt;
&amp;nbsp;AND B.LONGITUDE BETWEEN @long1-(&amp;lt;cfqueryparam cfsqltype=&amp;quot;cf_sql_smallint&amp;quot; value=&amp;quot;#range#&amp;quot;&amp;gt;*@rangeFactor) and @long1+(&amp;lt;cfqueryparam cfsqltype=&amp;quot;cf_sql_smallint&amp;quot; value=&amp;quot;#range#&amp;quot;&amp;gt;*@rangeFactor)&lt;br /&gt;
&amp;nbsp;AND ADSPRD.dbo.getDistance(@lat1,@long1,B.latitude,B.longitude) &lt;br /&gt;
&amp;nbsp;&amp;lt;= &amp;lt;cfqueryparam cfsqltype=&amp;quot;cf_sql_smallint&amp;quot; value=&amp;quot;#range#&amp;quot;&amp;gt;;&lt;br /&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;The difference in query execution time is pretty minimal in terms of actual milliseconds, but it is significant, anywhere from 2x to 3x faster, depending on the radius of the area you&apos;re looking in.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;nbsp;UPDATE - Mysql GetDistance Function&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;goondocs.com took the above code and produced a MySQL function for the same purpose.&amp;nbsp; Since links in comments in my blog don&apos;t do anything for search engine visibility due to the nofollow attribute, I&apos;m posting the link up here as an update:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.goondocks.com/blog/08-01-22/zip_code_radius_search_using_mysql.aspx&quot;&gt;MySQL function to compute the distance between two zip codes&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;</description>
	<link>http://www.opensourcecf.com/1/2007/02/Determining-Zip-Code-Proximity.cfm</link>
	<dc:date>2007-02-06T12:51:00-07:00</dc:date>
	
	<dc:subject>Flex and Actionscript,Adobe AIR,Apollo,Image Manipulation,Utilities,Apollo,CFML Servers,Code Snippets,Entertainment,Forums / Message Boards,Image Manipulation,Forums / Message Boards,Forums / Message Boards,Entertainment,Code Snippets</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.opensourcecf.com/1/2007/01/CFCPhotoBlog-to-use-ImageCFC.cfm">
	<title>CFCPhotoBlog to use ImageCFC</title>
	<description>&lt;p&gt;I had a conversation with Seth Duffey via email the other day.&amp;nbsp; Seth is the author of &lt;a href=&quot;http://www.leavethatthingalone.com/projects/CFCPhotoBlog/&quot;&gt;CFCPhotoBlog&lt;/a&gt;, a free,&amp;nbsp;open source photo blogging project.&amp;nbsp; It&apos;s a pretty nice project, if you&apos;re looking for a photo blogging application.&lt;/p&gt;
&lt;p&gt;Looks like future versions are going to implement my ImageCFC project for some basic image manipulation like flip and rotate.&lt;/p&gt;
&lt;p&gt;Check it out if you get a chance!&lt;/p&gt;</description>
	<link>http://www.opensourcecf.com/1/2007/01/CFCPhotoBlog-to-use-ImageCFC.cfm</link>
	<dc:date>2007-01-29T09:47:36-07:00</dc:date>
	
	<dc:subject>Flex and Actionscript,Adobe AIR,Apollo,Image Manipulation,Utilities,Apollo,CFML Servers,Code Snippets,Entertainment,Forums / Message Boards,Image Manipulation,Forums / Message Boards,Forums / Message Boards,Entertainment,Code Snippets,Blog Software,Image Manipulation</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.opensourcecf.com/1/2007/01/CFOpenChat-101-Released.cfm">
	<title>CFOpenChat 1.01 Released</title>
	<description>&lt;p&gt;CFOpenChat&amp;nbsp;version&amp;nbsp;1.01 is now available.&amp;nbsp; There were two very minor bug fixes, both of which were discussed in the forums quite some time ago, I finally decided to put out a release.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.opensourcecf.com/cfopenchat/download.cfm&quot;&gt;download&amp;nbsp;CFOpenChat 1.01&amp;nbsp;here&lt;/a&gt;.&lt;/p&gt;</description>
	<link>http://www.opensourcecf.com/1/2007/01/CFOpenChat-101-Released.cfm</link>
	<dc:date>2007-01-26T11:21:00-07:00</dc:date>
	
	<dc:subject>Flex and Actionscript,Adobe AIR,Apollo,Image Manipulation,Utilities,Apollo,CFML Servers,Code Snippets,Entertainment,Forums / Message Boards,Image Manipulation,Forums / Message Boards,Forums / Message Boards,Entertainment,Code Snippets,Blog Software,Image Manipulation,Chat</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.opensourcecf.com/1/2007/01/ImageCFC-213-Now-Available.cfm">
	<title>ImageCFC 2.13 Now Available</title>
	<description>&lt;p&gt;ImageCFC version 2.13 is now available.&amp;nbsp; Very minor bug fix only to prevent unfriendly errors when attempting to read non-image files or unsupported image types like CMYK jpeg images.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/imagecfc/download.cfm&quot;&gt;download ImageCFC 2.13 here&lt;/a&gt;.&lt;/p&gt;</description>
	<link>http://www.opensourcecf.com/1/2007/01/ImageCFC-213-Now-Available.cfm</link>
	<dc:date>2007-01-25T12:37:43-07:00</dc:date>
	
	<dc:subject>Flex and Actionscript,Adobe AIR,Apollo,Image Manipulation,Utilities,Apollo,CFML Servers,Code Snippets,Entertainment,Forums / Message Boards,Image Manipulation,Forums / Message Boards,Forums / Message Boards,Entertainment,Code Snippets,Blog Software,Image Manipulation,Chat,Image Manipulation</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.opensourcecf.com/1/2006/12/ImageCFC-211-Released.cfm">
	<title>ImageCFC 2.11 Released</title>
	<description>&lt;p class=&quot;content&quot;&gt;&lt;strong&gt;Project Page for ImageCFC&lt;/strong&gt;: &amp;nbsp;&lt;a href=&quot;http://www.opensourcecf.com/imagecfc/&quot;&gt;http://www.opensourcecf.com/imagecfc/&lt;/a&gt;&lt;/p&gt;
&lt;p class=&quot;content&quot;&gt;version 2.11&amp;nbsp;includes the following changes:&lt;/p&gt;
&lt;div&gt;
&lt;ul&gt;
    &lt;li&gt;performance improvements to the GaussianFilter.cfc and BoxBlurFilter.cfc&lt;/li&gt;
    &lt;li&gt;corrected bugs in GetOption() method&lt;/li&gt;
    &lt;li&gt;Added an object oriented wrapper cfc called ImageObject.cfc (as yet undocumented, though the cfc itself has some example code)&lt;/li&gt;
    &lt;li&gt;corrected documentation error in docs/getOption.cfm&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;I originally realized 2.11 on December 14, but made a minor correction to ImageObject.cfc today and repacked it without changing the version number so if you downloaded version 2.11 already, please do so again.&lt;/p&gt;
&lt;p&gt;Also, ImageCFC 2.11 has been integrated into &lt;a href=&quot;/cffm&quot;&gt;CFFM 1.15&lt;/a&gt;.&lt;/p&gt;</description>
	<link>http://www.opensourcecf.com/1/2006/12/ImageCFC-211-Released.cfm</link>
	<dc:date>2006-12-18T13:33:56-07:00</dc:date>
	
	<dc:subject>Flex and Actionscript,Adobe AIR,Apollo,Image Manipulation,Utilities,Apollo,CFML Servers,Code Snippets,Entertainment,Forums / Message Boards,Image Manipulation,Forums / Message Boards,Forums / Message Boards,Entertainment,Code Snippets,Blog Software,Image Manipulation,Chat,Image Manipulation,Image Manipulation</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.opensourcecf.com/1/2006/12/UDF-to-generate-File-Drops-in-CSV-Excel-and-Tab-delimited-formats.cfm">
	<title>UDF to generate File Drops in CSV, Excel, and Tab delimited formats</title>
	<description>&lt;p&gt;At a reader&apos;s request, I&apos;m posting a UDF I wrote to generate file drops from queries.&amp;nbsp; The UDF takes as its arguments a query, a format (EXCEL, CSV, or TAB), a list of column names, and a list of column labels.&amp;nbsp; It returns a text string that can be used to either generate a file on the server or can be returned with cfcontent with the appropriate mime type.&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;&amp;lt;cfscript&amp;gt;&lt;br /&gt;&amp;nbsp;function formatFileOutput(qry, format, columnNames, columnLabels)&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;// use java string buffer to dramatically improve&lt;br /&gt;&amp;nbsp;&amp;nbsp;// performance for large queries.&lt;br /&gt;&amp;nbsp;&amp;nbsp;var output = createObject(&amp;quot;java&amp;quot;,&amp;quot;java.lang.StringBuffer&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;var x = 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;var fields = &amp;quot;&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;var row = 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;var col = 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;var PAGE_HEADER = &amp;quot;&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;var PAGE_FOOTER = &amp;quot;&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;var ROW_HEADER = &amp;quot;&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;var ROW_FOOTER = &amp;quot;&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;var START_OUTPUT = &amp;quot;&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;var END_OUTPUT = &amp;quot;&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;var START_ROW = &amp;quot;&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;var END_ROW = &amp;quot;&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;var START_FIELD = &amp;quot;&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;var END_FIELD = &amp;quot;&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;// generate column label structure&lt;br /&gt;&amp;nbsp;&amp;nbsp;for (x=1; x lte listLen(columnLabels); x = x + 1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;columnData[listGetAt(columnNames,x)] = listGetAt(columnLabels,x);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;format = trim(ucase(format));&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;// set up output variables&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (format eq &amp;quot;CSV&amp;quot; or format eq &amp;quot;TAB&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;page_header = &amp;quot;&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;row_header = &amp;quot;&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (x=1; x lte listLen(columnNames); x = x + 1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;row_header = listAppend(row_header, columnData[listGetAt(columnNames,x)]);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;row_header = row_header &amp;amp; chr(13) &amp;amp; chr(10);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;start_output = &amp;quot;&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;end_output = &amp;quot;&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;start_row = &amp;quot;&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;end_row =&amp;nbsp; chr(13) &amp;amp; chr(10);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;start_field = &amp;quot;&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (format eq &amp;quot;TAB&amp;quot;) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;row_header = listChangeDelims(row_header,&amp;quot;&amp;nbsp;&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end_field = &amp;quot;&amp;nbsp;&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end_field = &amp;quot;,&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;page_footer = &amp;quot;&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;} else if (format eq &amp;quot;EXCEL&amp;quot;) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;page_header = &amp;quot;&amp;lt;HTML;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;title&amp;gt;Results&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;style type=&amp;quot;&amp;quot;text/css&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;BODY, TD {&lt;br /&gt;&amp;nbsp;font-family: sans-serif;&lt;br /&gt;&amp;nbsp;white-space: nowrap;&lt;br /&gt;}&lt;br /&gt;TD.header {&lt;br /&gt;&amp;nbsp;font-weight: bold;&lt;br /&gt;&amp;nbsp;background-color: ffff00;&lt;br /&gt;}&lt;br /&gt;&amp;lt;/style&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;row_header = &amp;quot;&amp;lt;tr&amp;gt;#Chr(10)#&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (x=1; x lte listLen(columnNames); x = x + 1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;row_header = row_header &amp;amp; &amp;quot;&amp;nbsp;&amp;lt;td class=#chr(34)#header#chr(34)#&amp;gt;#columnData[listGetAt(columnNames,x)]#&amp;lt;/td&amp;gt;#CHR(10)#&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;row_header = row_header &amp;amp; &amp;quot;&amp;lt;/tr&amp;gt;#Chr(10)#&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;start_output = &amp;quot;&amp;lt;table cellpadding=2 cellspacing=0 border=1&amp;gt;#Chr(10)#&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;end_output = &amp;quot;&amp;lt;/table&amp;gt;#Chr(10)#&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;start_row = &amp;quot;&amp;lt;tr&amp;gt;#Chr(10)#&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;end_row = &amp;quot;&amp;lt;/tr&amp;gt;#Chr(10)#&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;start_field = &amp;quot;&amp;nbsp;&amp;lt;td valign=top&amp;gt;&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;end_field = &amp;quot;&amp;lt;/td&amp;gt;#Chr(10)#&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;page_footer = &amp;quot;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;output.append(PAGE_HEADER);&lt;br /&gt;&amp;nbsp;&amp;nbsp;output.append(START_OUTPUT);&lt;br /&gt;&amp;nbsp;&amp;nbsp;output.append(ROW_HEADER);&lt;br /&gt;&amp;nbsp;&amp;nbsp;for (row=1; row lte qry.recordCount; row = row + 1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;output.append(START_ROW);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (col = 1; col lte listLen(columnNames); col=col+1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;thisColumn = listGetAt(columnNames,col);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;field = evaluate(&amp;quot;qry.#ThisColumn#[row]&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (field eq &amp;quot;&amp;quot; and format eq &amp;quot;EXCEL&amp;quot;) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;field=&amp;quot;&amp;amp;nbsp;&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;output.append(START_FIELD);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (format eq &amp;quot;CSV&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (field neq &amp;quot;&amp;quot; and not isNumeric(field) ) &lt;br /&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;field = replace(field,chr(34),&amp;quot;#chr(34)##chr(34)#&amp;quot;,&amp;quot;ALL&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;field = &amp;quot;#Chr(34)##field##Chr(34)#&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;output.append(field);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;output.append(FIELD);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (col lt listlen(columnNames,&amp;quot;,&amp;nbsp;&amp;quot;)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;output.append(END_FIELD);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;output.append(END_ROW);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;output.append(END_OUTPUT);&lt;br /&gt;&amp;nbsp;&amp;nbsp;output.append(PAGE_FOOTER);&lt;br /&gt;&amp;nbsp;&amp;nbsp;return output.toString();&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;lt;/cfscript&amp;gt;&lt;br /&gt;&lt;/div&gt;
&lt;p&gt;Here&apos;s an example of how to use it.&amp;nbsp; You could place the following code in a file called &amp;quot;drop.cfm&amp;quot;&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;&amp;lt;cfparam name=&amp;quot;FORMAT&amp;quot; default=&amp;quot;TAB&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;cfquery name=&amp;quot;myQuery&amp;quot; datasource=&amp;quot;WEBREPORTS_MSSQL&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;select top 30 * from dbo.TB907&lt;br /&gt;&amp;lt;/cfquery&amp;gt;&lt;br /&gt;&amp;lt;cfscript&amp;gt;&lt;br /&gt;&amp;nbsp;if (format eq &amp;quot;EXCEL&amp;quot;)&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;mimetype = &amp;quot;application/msexcel&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;filename = &amp;quot;report.xls&amp;quot;;&lt;br /&gt;&amp;nbsp;} else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;mimetype = &amp;quot;text/plain&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;filename = &amp;quot;report.txt&amp;quot;;&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;results = formatFileOutput(myQuery, format, myQuery.columnlist, myQuery.columnlist);&lt;br /&gt;&amp;lt;/cfscript&amp;gt;&lt;br /&gt;&amp;lt;cfsetting enablecfoutputonly=&amp;quot;Yes&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;cfcontent type=&amp;quot;#mimetype#&amp;quot; reset=&amp;quot;Yes&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;cfheader name=&amp;quot;Content-Disposition&amp;quot; value=&amp;quot;attachment; filename=#filename#&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;cfoutput&amp;gt;#results#&amp;lt;/cfoutput&amp;gt;&lt;br /&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
	<link>http://www.opensourcecf.com/1/2006/12/UDF-to-generate-File-Drops-in-CSV-Excel-and-Tab-delimited-formats.cfm</link>
	<dc:date>2006-12-18T09:41:46-07:00</dc:date>
	
	<dc:subject>Flex and Actionscript,Adobe AIR,Apollo,Image Manipulation,Utilities,Apollo,CFML Servers,Code Snippets,Entertainment,Forums / Message Boards,Image Manipulation,Forums / Message Boards,Forums / Message Boards,Entertainment,Code Snippets,Blog Software,Image Manipulation,Chat,Image Manipulation,Image Manipulation,Code Snippets</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.opensourcecf.com/1/2006/12/ImageCFC-210-Released.cfm">
	<title>ImageCFC 2.10 Released</title>
	<description>&lt;p&gt;&lt;strong&gt;Project Page for ImageCFC&lt;/strong&gt;: &amp;nbsp;&lt;a href=&quot;http://www.opensourcecf.com/imagecfc/&quot;&gt;http://www.opensourcecf.com/imagecfc/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;version 2.10 adds image filtering capability to ImageCFC, including the following:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;o simple blur (very fast)&lt;br /&gt;&amp;nbsp;o box blur (slow)&lt;br /&gt;&amp;nbsp;o gaussian blur (slow)&lt;br /&gt;&amp;nbsp;o sharpen&lt;br /&gt;&amp;nbsp;o posterize&lt;/p&gt;
&lt;p&gt;Some examples of each of the filters.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.opensourcecf.com/imagecfc/examples.cfm&quot;&gt;http://www.opensourcecf.com/imagecfc/examples.cfm&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Thanks to everyone who assisted via the list!&lt;/p&gt;
&lt;p&gt;Rick&lt;br /&gt;&lt;/p&gt;</description>
	<link>http://www.opensourcecf.com/1/2006/12/ImageCFC-210-Released.cfm</link>
	<dc:date>2006-12-13T16:10:25-07:00</dc:date>
	
	<dc:subject>Flex and Actionscript,Adobe AIR,Apollo,Image Manipulation,Utilities,Apollo,CFML Servers,Code Snippets,Entertainment,Forums / Message Boards,Image Manipulation,Forums / Message Boards,Forums / Message Boards,Entertainment,Code Snippets,Blog Software,Image Manipulation,Chat,Image Manipulation,Image Manipulation,Code Snippets,Image Manipulation</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.opensourcecf.com/1/2006/12/ImageCFC-20-Released.cfm">
	<title>ImageCFC 2.0 Released</title>
	<description>&lt;p&gt;I&apos;ve completed imageCFC version 2.0&lt;/p&gt;
&lt;p&gt;Numerous changes since beta 3... and unfortunately some of the changes will break your code if you&apos;re using image.cfc 2.0 beta.&lt;/p&gt;
&lt;a href=&quot;http://www.opensourcecf.com/imagecfc&quot;&gt;http://www.opensourcecf.com/imagecfc&lt;/a&gt;
&lt;p&gt;&lt;strong&gt;NEW (REAL) DOCUMENTATION!&lt;/strong&gt;&lt;br /&gt;&lt;a href=&quot;http://www.opensourcecf.com/imagecfc/docs/imageCFC.cfm&quot;&gt;http://www.opensourcecf.com/imagecfc/docs/imageCFC.cfm&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This release includes a few bug changes plus the following changes:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;readImage() and writeImage() are now public methods. &lt;/li&gt;
    &lt;li&gt;writeImage() method writes to temp directory and then uses cffile to move image to its final destination. This corrects a known issue where resizing an image down and saving it to the same file did not actually reduce the physical file size. &lt;/li&gt;
    &lt;li&gt;changed scaleX() to scaleWidth() &lt;/li&gt;
    &lt;li&gt;changed scaleY() to scaleHeight() &lt;/li&gt;
    &lt;li&gt;Added optional preserveAspect argument to resize() method (allowing you to resize an image to fit within a certain width and height without messing with the aspect ratio) &lt;/li&gt;
    &lt;li&gt;You can turn text antialiasing on and off, or change the interpolation mode now using the setOption() method. &lt;/li&gt;
    &lt;li&gt;WROTE REAL API DOCUMENTATION! &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are a variety of other fixes and minor enhancements. Please see the full change log on the site for details.&lt;/p&gt;</description>
	<link>http://www.opensourcecf.com/1/2006/12/ImageCFC-20-Released.cfm</link>
	<dc:date>2006-12-08T23:36:44-07:00</dc:date>
	
	<dc:subject>Flex and Actionscript,Adobe AIR,Apollo,Image Manipulation,Utilities,Apollo,CFML Servers,Code Snippets,Entertainment,Forums / Message Boards,Image Manipulation,Forums / Message Boards,Forums / Message Boards,Entertainment,Code Snippets,Blog Software,Image Manipulation,Chat,Image Manipulation,Image Manipulation,Code Snippets,Image Manipulation,Image Manipulation</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.opensourcecf.com/1/2006/12/62.ImapCFC-Update.cfm">
	<title>ImapCFC Update</title>
	<description>&lt;p&gt;&lt;a href=&quot;http://www.opensourcecf.com/CFOpenMail&quot;&gt;CFOpenMail / ImapCFC project page&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Every time I made a change to the code in imap.cfc, I had to reinitialize it and log in again.&amp;nbsp; I had to do this because the init() method stored the connection information in the variables scope of the CFC.. so reloading the CFC would wipe them out.&amp;nbsp; That got old really fast, so I moved the connection information into the session scope.&amp;nbsp; Now during development, the CFC can be reloaded on every page call if I want.. but I&apos;ll probably just add a &amp;quot;refresh CFC&amp;quot; shortcut into CFOpenMail to ccause that to occur so it only happens when I want it to.&lt;/p&gt;
&lt;p&gt;I updated the delete() method to allow the deletion of multiple messages.&amp;nbsp; I also adjusted the getfolderinfo() and getfolderstructure() methods so they return more information, and don&apos;t attempt to get information like message counts and unread message counts on folders that can&apos;t actually hold messages.&lt;/p&gt;
&lt;p&gt;The copyMessages() method now throws meaningful errors for things like &amp;quot;The destination folder does not exist&amp;quot; and &amp;quot;The destination folder cannot contain messages&amp;quot;.&lt;/p&gt;
&lt;p&gt;Also, the getMessage() method will throw a meaningful message when you attempt to retrieve an invalid message number.&amp;nbsp; &amp;quot;The specified message number was not found in the specified folder.&amp;quot; instead of what was essentially an &amp;quot;Array index out of bounds&amp;quot; error.&lt;/p&gt;</description>
	<link>http://www.opensourcecf.com/1/2006/12/62.ImapCFC-Update.cfm</link>
	<dc:date>2006-12-06T15:50:30-07:00</dc:date>
	
	<dc:subject>Flex and Actionscript,Adobe AIR,Apollo,Image Manipulation,Utilities,Apollo,CFML Servers,Code Snippets,Entertainment,Forums / Message Boards,Image Manipulation,Forums / Message Boards,Forums / Message Boards,Entertainment,Code Snippets,Blog Software,Image Manipulation,Chat,Image Manipulation,Image Manipulation,Code Snippets,Image Manipulation,Image Manipulation,Email</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.opensourcecf.com/1/2006/12/C2.ImapCFC-Update.cfm">
	<title>ImapCFC Update</title>
	<description>&lt;p&gt;&lt;a href=&quot;http://www.opensourcecf.com/CFOpenMail&quot;&gt;CFOpenMail / ImapCFC project page&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I corrected the issue with the folderDelete() method.&amp;nbsp; It&apos;s very strange the way the actual delete method works in the java folder object.&amp;nbsp; It nearly always returns true, even if the delete fails.&amp;nbsp; The correct way to determine if the delete was successful is to run the exists() method on the folder you just deleted.&amp;nbsp; Sometimes, I think OO programming is a little wacky.&amp;nbsp; Or maybe it&apos;s just this particular implementation.&lt;/p&gt;
&lt;p&gt;I also implemented the copyMessages() method in CFOpenMail.&amp;nbsp; I haven&apos;t tested it thorougly, but it does work.&lt;/p&gt;
&lt;p&gt;The CFC on the project page has been updated to include today&apos;s changes.&lt;/p&gt;</description>
	<link>http://www.opensourcecf.com/1/2006/12/C2.ImapCFC-Update.cfm</link>
	<dc:date>2006-12-05T16:02:47-07:00</dc:date>
	
	<dc:subject>Flex and Actionscript,Adobe AIR,Apollo,Image Manipulation,Utilities,Apollo,CFML Servers,Code Snippets,Entertainment,Forums / Message Boards,Image Manipulation,Forums / Message Boards,Forums / Message Boards,Entertainment,Code Snippets,Blog Software,Image Manipulation,Chat,Image Manipulation,Image Manipulation,Code Snippets,Image Manipulation,Image Manipulation,Email,Email</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.opensourcecf.com/1/2006/12/A4.ImapCFC-Update.cfm">
	<title>ImapCFC Update</title>
	<description>&lt;p&gt;&lt;a href=&quot;http://www.opensourcecf.com/CFOpenMail&quot;&gt;CFOpenMail / ImapCFC project page&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I corrected a bug in the folderRename() method involving mismatched variable names (obj_Folder and objFolder).&amp;nbsp; However, the method still doesn&apos;t work.&amp;nbsp; Maybe my imap server doesn&apos;t allow renaming of folders.&amp;nbsp; It says it&apos;s working, but it&apos;s just not renaming the folder.&amp;nbsp; No errors,&amp;nbsp;and it returns true.&lt;/p&gt;
&lt;p&gt;I also added a recurse option to the folderDelete() method that should prevent you from deleting a non-empty folder unless you specify to do the delete recursively.&amp;nbsp; This too, doesn&apos;t work.&amp;nbsp; Might be time to drop a line to the JavaMail-INTEREST mailing list.&lt;/p&gt;</description>
	<link>http://www.opensourcecf.com/1/2006/12/A4.ImapCFC-Update.cfm</link>
	<dc:date>2006-12-04T15:58:27-07:00</dc:date>
	
	<dc:subject>Flex and Actionscript,Adobe AIR,Apollo,Image Manipulation,Utilities,Apollo,CFML Servers,Code Snippets,Entertainment,Forums / Message Boards,Image Manipulation,Forums / Message Boards,Forums / Message Boards,Entertainment,Code Snippets,Blog Software,Image Manipulation,Chat,Image Manipulation,Image Manipulation,Code Snippets,Image Manipulation,Image Manipulation,Email,Email,Email</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.opensourcecf.com/1/2006/12/ImapCFC-Update.cfm">
	<title>Imap.CFC Update</title>
	<description>&lt;p&gt;&lt;a href=&quot;/CFOpenMail&quot;&gt;CFOpenMail / ImapCFC project page&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Earlier this week, I decided it would be fun to build a webmail application.&amp;nbsp; Of course, any good webmail application connects to an IMAP mail server, so I needed to figure out how to use imap in Coldfusion.&lt;/p&gt;
&lt;p&gt;Although Bluedragon has a CFIMAP tag, Coldfusion (currently) does not.&amp;nbsp; I wanted to go open source, and didn&apos;t want to require any DLL installations or anything so most of the custom tag options out there were not options (like CFX_IMAP, CFX_IMAP4, etc).&amp;nbsp; But I did find a project on sourceforge called cfimap-cfc.&amp;nbsp; Sweet.&lt;/p&gt;
&lt;p&gt;I started cranking away, and I&apos;ve made a LOT of changes to imap.cfc, enhancing its functionality, fixing bugs, etc.&amp;nbsp; Some of the major changes so far:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;an authenticated imap session can be stored in memory (the session scope), so you don&apos;t have to authenticate every time you try to do something.&amp;nbsp; This was a HUGE performance increase.&lt;/li&gt;
    &lt;li&gt;the &amp;quot;view&amp;quot; method was incompatible with multipart mime messages with parts whose content type was multipart/*.&amp;nbsp; In otherwise, a message might have two parts, but one of those parts might also have multiple parts as well.&amp;nbsp; Curiously, the old imap.cfc worked with such messages but only grabbed the first subpart in such situations.&amp;nbsp; This required taking part of the view() method out and putting it into a separate method called getParts(), which calls itself recursively for multipart parts.&lt;/li&gt;
    &lt;li&gt;I&apos;ve properly var scoped *EVERYTHING*.&amp;nbsp; Version 1.0 of imap.cfc was not var scoped at all, and you could have easily experienced all kinds of variable problems.&lt;/li&gt;
    &lt;li&gt;The old imap.cfc attempted to put HTML and text attachments inline.&amp;nbsp; Personally, in a web based application, I&apos;d just rather see them as attachments, and so that&apos;s what it does now.&lt;/li&gt;
    &lt;li&gt;The download method was enhanced by adding an includeData argument, which, when false, causes the returned structure to not include the actual binary file contents.&amp;nbsp; The method also now returns file size as well, so you can publish the list of attachments along with their content type and size.&lt;/li&gt;
    &lt;li&gt;Added a slew of try/catch statements because some folders can&apos;t contain messages, so you can&apos;t open them.&amp;nbsp; I don&apos;t really know why for sure, but I&apos;ve got one such folder in my Sent folder, so I added error trapping.&lt;/li&gt;
    &lt;li&gt;I also added code hints, changed some variable names and column names, and did some commenting of the code too.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It&apos;s worth mentioning that I&apos;ve never worked with the JavaMail API before, so this was fun and challenging.&lt;/p&gt;
&lt;p&gt;There&apos;s still a lot of work to do, particularly with regards to the send() feature.&amp;nbsp; I also haven&apos;t yet&amp;nbsp; tested the deleting, creating, or renaming of folders, nor have I tested the copyMessages() method either.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
	<link>http://www.opensourcecf.com/1/2006/12/ImapCFC-Update.cfm</link>
	<dc:date>2006-12-01T22:36:16-07:00</dc:date>
	
	<dc:subject>Flex and Actionscript,Adobe AIR,Apollo,Image Manipulation,Utilities,Apollo,CFML Servers,Code Snippets,Entertainment,Forums / Message Boards,Image Manipulation,Forums / Message Boards,Forums / Message Boards,Entertainment,Code Snippets,Blog Software,Image Manipulation,Chat,Image Manipulation,Image Manipulation,Code Snippets,Image Manipulation,Image Manipulation,Email,Email,Email,Email</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.opensourcecf.com/1/2006/11/Using-coldfusion-to-strip-some-or-all-HTML-tags-from-a-string.cfm">
	<title>Using coldfusion to strip some or all HTML tags from a string</title>
	<description>&lt;p&gt;Years ago (ie, 1999), I wrote a custom tag called CF_TAGSTRIPPER that would strip HTML tags from a source string, optionally preserving specific tags.&lt;/p&gt;
&lt;p&gt;A few years ago, I converted it to a UDF and I&apos;ve used it in a variety of my applications to strip out all but a few tags - like if I wanted to allow users to use bold and italic tags.&lt;/p&gt;
&lt;p&gt;Recently, I&apos;ve had a desire to strip out only certain tags, so I modified my tagStripper function to perform this task as well.&amp;nbsp; Here&apos;s the code.&amp;nbsp; Please let me know if you see anything wrong with it!&lt;/p&gt;
&lt;p&gt;There are two versions of this UDF - one for CFMX and one for CF 5.&amp;nbsp; They are functionally the same, so use whichever you prefer.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CFMX Version using CFFUNCTION tag:&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;p&gt;&amp;lt;cffunction name=&amp;quot;tagStripper&amp;quot; access=&amp;quot;public&amp;quot; output=&amp;quot;no&amp;quot; returntype=&amp;quot;string&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfargument name=&amp;quot;source&amp;quot; required=&amp;quot;YES&amp;quot; type=&amp;quot;string&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfargument name=&amp;quot;action&amp;quot; required=&amp;quot;No&amp;quot; type=&amp;quot;string&amp;quot; default=&amp;quot;strip&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfargument name=&amp;quot;tagList&amp;quot; required=&amp;quot;no&amp;quot; type=&amp;quot;string&amp;quot; default=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;lt;!---&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; source = string variable&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; This is the string to be modified&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; action = &amp;quot;preserve&amp;quot; or &amp;quot;strip&amp;quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; This function will either strip all tags except &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; those specified in the tagList argument, or it will &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; preserve all tags except those in the taglist argument.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The default action is &amp;quot;strip&amp;quot;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tagList = string variable&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; This argument contains a comma separated list of tags to be excluded from&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; the action.&amp;nbsp; If the action is &amp;quot;strip&amp;quot;, then these tags won&apos;t be stripped.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If the action os &amp;quot;preserve&amp;quot;, then these tags won&apos;t be preserved (ie, only &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; these tags will be stripped)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; EXAMPLE&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; tagStripper(myString,&amp;quot;strip&amp;quot;,&amp;quot;b,i&amp;quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; This invocation will strip all html tags except for&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;b&amp;gt;&amp;lt;/b&amp;gt; and &amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
---&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfscript&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var str = arguments.source;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var i = 1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (trim(lcase(action)) eq &amp;quot;preserve&amp;quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // strip only the exclusions&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (i=1;i lte listlen(arguments.tagList); i = i + 1)&lt;br /&gt;
&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tag = listGetAt(tagList,i);&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; str = REReplaceNoCase(str,&amp;quot;&amp;lt;/?#tag#.*?&amp;gt;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;ALL&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // if there are exclusions, mark them with NOSTRIP&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (tagList neq &amp;quot;&amp;quot;)&lt;br /&gt;
&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (i=1;i lte listlen(tagList); i = i + 1)&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; {&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; tag = listGetAt(tagList,i);&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; str = REReplaceNoCase(str,&amp;quot;&amp;lt;(/?#tag#.*?)&amp;gt;&amp;quot;,&amp;quot;___TEMP___NOSTRIP___\1___TEMP___ENDNOSTRIP___&amp;quot;,&amp;quot;ALL&amp;quot;);&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; }&lt;br /&gt;
&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; str = reReplaceNoCase(str,&amp;quot;&amp;lt;/?[A-Z].*?&amp;gt;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;ALL&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // convert excluded tags back to normal&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str = replace(str,&amp;quot;___TEMP___NOSTRIP___&amp;quot;,&amp;quot;&amp;lt;&amp;quot;,&amp;quot;ALL&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str = replace(str,&amp;quot;___TEMP___ENDNOSTRIP___&amp;quot;,&amp;quot;&amp;gt;&amp;quot;,&amp;quot;ALL&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return str;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/cfscript&amp;gt;&lt;br /&gt;
&amp;lt;/cffunction&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Coldfusion 5 Compatible Version:&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;p&gt;&amp;lt;cfscript&amp;gt;&lt;br /&gt;
function tagStripper(str)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var i = 1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var action = &apos;strip&apos;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var tagList = &apos;&apos;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (ArrayLen(arguments) gt 1 and lcase(arguments[2]) eq &apos;preserve&apos;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; action = &apos;preserve&apos;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (ArrayLen(arguments) gt 2)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tagList = arguments[3];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (trim(lcase(action)) eq &amp;quot;preserve&amp;quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // strip only those tags in the tagList argument&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (i=1;i lte listlen(tagList); i = i + 1)&lt;br /&gt;
&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tag = listGetAt(tagList,i);&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; str = REReplaceNoCase(str,&amp;quot;&amp;lt;/?#tag#.*?&amp;gt;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;ALL&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // strip all, except those in the tagList argument&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // if there are exclusions, mark them with NOSTRIP&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (tagList neq &amp;quot;&amp;quot;)&lt;br /&gt;
&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (i=1;i lte listlen(tagList); i = i + 1)&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; {&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; tag = listGetAt(tagList,i);&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; str = REReplaceNoCase(str,&amp;quot;&amp;lt;(/?#tag#.*?)&amp;gt;&amp;quot;,&amp;quot;___TEMP___NOSTRIP___\1___TEMP___ENDNOSTRIP___&amp;quot;,&amp;quot;ALL&amp;quot;);&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; }&lt;br /&gt;
&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; // strip all remaining tsgs.&amp;nbsp; This does NOT strip comments&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str = reReplaceNoCase(str,&amp;quot;&amp;lt;/?[A-Z].*?&amp;gt;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;ALL&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // convert unstripped back to normal&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str = replace(str,&amp;quot;___TEMP___NOSTRIP___&amp;quot;,&amp;quot;&amp;lt;&amp;quot;,&amp;quot;ALL&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str = replace(str,&amp;quot;___TEMP___ENDNOSTRIP___&amp;quot;,&amp;quot;&amp;gt;&amp;quot;,&amp;quot;ALL&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return str;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/cfscript&amp;gt;&lt;br /&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
	<link>http://www.opensourcecf.com/1/2006/11/Using-coldfusion-to-strip-some-or-all-HTML-tags-from-a-string.cfm</link>
	<dc:date>2006-11-28T15:45:00-07:00</dc:date>
	
	<dc:subject>Flex and Actionscript,Adobe AIR,Apollo,Image Manipulation,Utilities,Apollo,CFML Servers,Code Snippets,Entertainment,Forums / Message Boards,Image Manipulation,Forums / Message Boards,Forums / Message Boards,Entertainment,Code Snippets,Blog Software,Image Manipulation,Chat,Image Manipulation,Image Manipulation,Code Snippets,Image Manipulation,Image Manipulation,Email,Email,Email,Email,Code Snippets</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.opensourcecf.com/1/2006/09/CFOpenChat-Updated.cfm">
	<title>CFOpenChat Updated</title>
	<description>&lt;p&gt;A lot of progress has been made in the last week with regards to the reliability of CFOpenChat.&amp;nbsp; It handles temporary connection failures much better now, and will hopefully no longer just randomly decide to boot everyone out of the chat room at will.&lt;/p&gt;
&lt;p&gt;CFOpenChat is a coldfusion powered chat room application built using Rob Gonda&apos;s ajaxCFC.&amp;nbsp; It supports MSSQL and MySQL, and could easily be adapted for other database as well.&lt;/p&gt;
&lt;p&gt;For full details, a demo, and the download, visit:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.opensourcecf.com/cfopenchat/&quot;&gt;http://www.opensourcecf.com/cfopenchat/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;CFOpenChat is free, open source software licensed under the BSD license.&lt;/p&gt;</description>
	<link>http://www.opensourcecf.com/1/2006/09/CFOpenChat-Updated.cfm</link>
	<dc:date>2006-09-06T06:54:03-07:00</dc:date>
	
	<dc:subject>Flex and Actionscript,Adobe AIR,Apollo,Image Manipulation,Utilities,Apollo,CFML Servers,Code Snippets,Entertainment,Forums / Message Boards,Image Manipulation,Forums / Message Boards,Forums / Message Boards,Entertainment,Code Snippets,Blog Software,Image Manipulation,Chat,Image Manipulation,Image Manipulation,Code Snippets,Image Manipulation,Image Manipulation,Email,Email,Email,Email,Code Snippets,Chat</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.opensourcecf.com/1/2006/08/Debugging-ajaxCFC.cfm">
	<title>Debugging ajaxCFC</title>
	<description>Rey Bango posted this to cf-talk,and I thouht wothy of blogging.&lt;br /&gt;&lt;br /&gt;
&lt;pre wrap=&quot;&quot;&gt;&lt;div class=&quot;code&quot;&gt;Here&apos;s a tip that I wanted to share within everyone here. It may be&lt;br /&gt;&lt;span class=&quot;moz-txt-citetags&quot;&gt;&lt;/span&gt;known but I only found out about it today and wanted to share.&lt;br /&gt;&lt;span class=&quot;moz-txt-citetags&quot;&gt;&lt;/span&gt;&lt;span class=&quot;moz-txt-citetags&quot;&gt;&lt;/span&gt;If you ever get the dreaded &amp;quot;Invalid Reply from Server&amp;quot; message from&lt;br /&gt;&lt;span class=&quot;moz-txt-citetags&quot;&gt;&lt;/span&gt;AjaxCFC, spark up Firefox/FireBug and call your site from your local IP.&lt;br /&gt;&lt;span class=&quot;moz-txt-citetags&quot;&gt;&lt;/span&gt;This will give you the actual message that DWR is sending back.&lt;br /&gt;&lt;span class=&quot;moz-txt-citetags&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;moz-txt-citetags&quot;&gt;&lt;/span&gt;Put a stop point at about line 517 (or immediately after&lt;br /&gt;&lt;span class=&quot;moz-txt-citetags&quot;&gt;&lt;/span&gt;&amp;quot;batch.req.send(query);&amp;quot;) of engine.js and look for the &amp;quot;batch&amp;quot; object.&lt;br /&gt;&lt;span class=&quot;moz-txt-citetags&quot;&gt;&lt;/span&gt;In the there you&apos;ll find the &amp;quot;req&amp;quot; (XMLHttpRequest request) object which&lt;br /&gt;&lt;span class=&quot;moz-txt-citetags&quot;&gt;&lt;/span&gt;has a standard attribute called responseText. That will give you all of&lt;br /&gt;&lt;span class=&quot;moz-txt-citetags&quot;&gt;&lt;/span&gt;the details of your error but for security reasons, it only shows it via&lt;br /&gt;&lt;span class=&quot;moz-txt-citetags&quot;&gt;&lt;/span&gt;your local IP address (127.0.0.1).&lt;br /&gt;&lt;span class=&quot;moz-txt-citetags&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;moz-txt-citetags&quot;&gt;&lt;/span&gt;Rey...&lt;/div&gt;&lt;/pre&gt;</description>
	<link>http://www.opensourcecf.com/1/2006/08/Debugging-ajaxCFC.cfm</link>
	<dc:date>2006-08-24T17:53:38-07:00</dc:date>
	
	<dc:subject>Flex and Actionscript,Adobe AIR,Apollo,Image Manipulation,Utilities,Apollo,CFML Servers,Code Snippets,Entertainment,Forums / Message Boards,Image Manipulation,Forums / Message Boards,Forums / Message Boards,Entertainment,Code Snippets,Blog Software,Image Manipulation,Chat,Image Manipulation,Image Manipulation,Code Snippets,Image Manipulation,Image Manipulation,Email,Email,Email,Email,Code Snippets,Chat,AJAX</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.opensourcecf.com/1/2006/08/CFML-String-Concatenation-is-SLOW--Use-Java-StringBuffer-instead.cfm">
	<title>CFML String Concatenation is SLOW!  Use Java StringBuffer instead</title>
	<description>&lt;p&gt;I was trying to speed up a process of mine that involves a large amount of string concatenation.&lt;/p&gt;
&lt;p&gt;In other words, &amp;lt;cfset str = str &amp;amp; someOtherString&amp;gt;&lt;/p&gt;
&lt;p&gt;Turns out there&apos;s a much faster way.&amp;nbsp; In my case, I was dynamically generating an data file from a query.&amp;nbsp; Each row had let&apos;s say 50 fields.&amp;nbsp; Generation of each row required 3 string concatenations at a time (maybe more, depending on how it worked when compiled to the servlet).&amp;nbsp; Do a drop of 5000 records, and well, that&apos;s a lot of string concats!&amp;nbsp; 750,000 at a minimum.&lt;/p&gt;
&lt;p&gt;Someone on cf-talk suggested using a StringBuffer might be wise because Coldfusion probably creates a new string object every time you do &amp;lt;cfset foo = foo &amp;amp; foo2&amp;gt;.&amp;nbsp; So I decided to write some code to test it out.&lt;/p&gt;
&lt;p&gt;Sure enough, using the java StringBuffer class is quite a lot faster.&amp;nbsp; On my local machine, I ran the following code (see below).&amp;nbsp; The CFML method completed in 89 seconds, while the java StringBuffer method completed in only 28 seconds - about 1/3 of the time!&lt;/p&gt;
&lt;p&gt;Here&apos;s the code, if you&apos;re interested:&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;p&gt;&amp;lt;cfset a = &amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;cfset starttime = now()&amp;gt;&lt;br /&gt;&amp;lt;cfset cnt = 0&amp;gt;&lt;br /&gt;&amp;lt;cfloop index=&amp;quot;i&amp;quot; from=&amp;quot;1&amp;quot; to=&amp;quot;2000000&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfset a = a &amp;amp; &amp;quot;This is some crazy stuff. &amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfset cnt = cnt + 26&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfif i mod 1000 is 0&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--- write to file and reset string to empty ---&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfset a = &amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/cfif&amp;gt;&lt;br /&gt;&amp;lt;/cfloop&amp;gt;&lt;br /&gt;&amp;lt;cfoutput&amp;gt;&amp;lt;p&amp;gt;Done with #cnt# bytes in #abs(dateDiff(&apos;s&apos;,Now(),starttime))# seconds.&amp;lt;/p&amp;gt;&amp;lt;/cfoutput&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;cfset a = createObject(&amp;quot;java&amp;quot;,&amp;quot;java.lang.StringBuffer&amp;quot;)&amp;gt;&lt;br /&gt;&amp;lt;cfset starttime = now()&amp;gt;&lt;br /&gt;&amp;lt;cfset cnt = 0&amp;gt;&lt;br /&gt;&amp;lt;cfloop index=&amp;quot;i&amp;quot; from=&amp;quot;1&amp;quot; to=&amp;quot;2000000&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfset a.append(&amp;quot;This is some crazy stuff. &amp;quot;)&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfset cnt = cnt + 26&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfif i mod 10000 is 0&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--- write to file and reset string to empty ---&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfset a = createObject(&amp;quot;java&amp;quot;,&amp;quot;java.lang.StringBuffer&amp;quot;)&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/cfif&amp;gt;&lt;br /&gt;&amp;lt;/cfloop&amp;gt;&lt;br /&gt;&amp;lt;cfoutput&amp;gt;&amp;lt;p&amp;gt;Done with #cnt# bytes in #abs(dateDiff(&apos;s&apos;,Now(),starttime))# seconds.&amp;lt;/p&amp;gt;&amp;lt;/cfoutput&amp;gt;&lt;br /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
	<link>http://www.opensourcecf.com/1/2006/08/CFML-String-Concatenation-is-SLOW--Use-Java-StringBuffer-instead.cfm</link>
	<dc:date>2006-08-18T07:38:45-07:00</dc:date>
	
	<dc:subject>Flex and Actionscript,Adobe AIR,Apollo,Image Manipulation,Utilities,Apollo,CFML Servers,Code Snippets,Entertainment,Forums / Message Boards,Image Manipulation,Forums / Message Boards,Forums / Message Boards,Entertainment,Code Snippets,Blog Software,Image Manipulation,Chat,Image Manipulation,Image Manipulation,Code Snippets,Image Manipulation,Image Manipulation,Email,Email,Email,Email,Code Snippets,Chat,AJAX,Java</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.opensourcecf.com/1/2006/07/Asynchronous-HTTP-from-Coldfusion.cfm">
	<title>Asynchronous HTTP from Coldfusion</title>
	<description>Ever wanted to make an HTTP request but you didn&apos;t really care whether or not it returned anything successfully?&lt;br /&gt;&lt;br /&gt;You can&apos;t do that with CFHTTP... well, you can, but you would have to still wait for it to finish before your page continued - it&apos;s not asynchronous.&lt;br /&gt;&lt;br /&gt;Well, your prayers are answered.&amp;nbsp; Mark Mandel justed posted his AsyncHTTP package that uses existing java classes to perform asynchronous http GET and POST operations.&lt;br /&gt;&lt;br /&gt;You can find out more here:&lt;br /&gt;
&lt;pre wrap=&quot;&quot;&gt;&lt;a href=&quot;http://www.compoundtheory.com/?action=asynchttp.index&quot; class=&quot;moz-txt-link-freetext&quot;&gt;http://www.compoundtheory.com/?action=asynchttp.index&lt;/a&gt;&lt;/pre&gt;</description>
	<link>http://www.opensourcecf.com/1/2006/07/Asynchronous-HTTP-from-Coldfusion.cfm</link>
	<dc:date>2006-07-18T18:06:47-07:00</dc:date>
	
	<dc:subject>Flex and Actionscript,Adobe AIR,Apollo,Image Manipulation,Utilities,Apollo,CFML Servers,Code Snippets,Entertainment,Forums / Message Boards,Image Manipulation,Forums / Message Boards,Forums / Message Boards,Entertainment,Code Snippets,Blog Software,Image Manipulation,Chat,Image Manipulation,Image Manipulation,Code Snippets,Image Manipulation,Image Manipulation,Email,Email,Email,Email,Code Snippets,Chat,AJAX,Java,Coding Tips,Extensions</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.opensourcecf.com/1/2006/07/Reading-large-files-with-java-versus-CFFILE.cfm">
	<title>Reading large files with java versus CFFILE</title>
	<description>&lt;p&gt;A question was posted on the cf-talk list (&lt;a target=&quot;_blank&quot; href=&quot;http://www.houseoffusion.com/cf_lists/messages.cfm/forumid:4/threadid:46759&quot;&gt;thread&lt;/a&gt;) about reading large files with CFFILE and problems they were having.&lt;/p&gt;
&lt;p&gt;I suggested trying java to read the large file line by line and I posted the following code:&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;p&gt;&amp;lt;cfsetting showdebugoutput=&amp;quot;Yes&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;cfscript&amp;gt;&lt;br /&gt;&amp;nbsp;cnt = 0;&lt;br /&gt;&amp;nbsp;// large text file, 4MB, 80,000+ lines&lt;br /&gt;&amp;nbsp;srcFile = &amp;quot;E:\Inetpub\wwwroot\tools\mass_email\list.dat&amp;quot;;&lt;br /&gt;&amp;nbsp;// create a FileReader object&lt;br /&gt;&amp;nbsp;fr = createObject(&amp;quot;java&amp;quot;,&amp;quot;java.io.FileReader&amp;quot;);&lt;br /&gt;&amp;nbsp;// Call the constructure with the source file path&lt;br /&gt;&amp;nbsp;fr.init(srcFile);&lt;br /&gt;&amp;nbsp;// create a BufferedReader object&lt;br /&gt;&amp;nbsp;br = createObject(&amp;quot;java&amp;quot;,&amp;quot;java.io.BufferedReader&amp;quot;);&lt;br /&gt;&amp;nbsp;// call the constructor with the FileReader as the arg&lt;br /&gt;&amp;nbsp;br.init(fr);&lt;br /&gt;&amp;nbsp;// read the first line&lt;br /&gt;&amp;nbsp;str = br.readLine();&lt;br /&gt;&amp;nbsp;// loop ... str will be undefined if there are no more lines&lt;br /&gt;&amp;nbsp;while (isDefined(&amp;quot;str&amp;quot;)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;// do stuff with the string&lt;br /&gt;&amp;nbsp;&amp;nbsp;cnt = cnt + 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;// read the next line so we can continue the loop&lt;br /&gt;&amp;nbsp;&amp;nbsp;str = br.readLine();&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;// close the buffered reader object&lt;br /&gt;&amp;nbsp;br.close();&lt;br /&gt;&amp;nbsp;writeOutput(cnt);&lt;br /&gt;&amp;lt;/cfscript&amp;gt;&lt;br /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The code above was tested on CFMX 7 and it does work.&amp;nbsp; On my server, it consistently returns the results in about 400ms (ranging between 350ms and 500ms).&lt;/p&gt;
&lt;p&gt;In order to compare, I wrote some CFML code that does essentially the same thing using CFFILE and looping through the file content as a list with chr(10) as the delimiter.&lt;/p&gt;
&lt;p&gt;The CFFILE route was slower and much more erratic, ranging from 450ms to over 2000ms - probably averaging 1400ms in the 20-30 times I reloaded the page.&lt;/p&gt;
&lt;p&gt;So if you&apos;re reading a large file and doing line by line processing - consider using native java rather than CFFILE.&lt;/p&gt;</description>
	<link>http://www.opensourcecf.com/1/2006/07/Reading-large-files-with-java-versus-CFFILE.cfm</link>
	<dc:date>2006-07-12T14:15:39-07:00</dc:date>
	
	<dc:subject>Flex and Actionscript,Adobe AIR,Apollo,Image Manipulation,Utilities,Apollo,CFML Servers,Code Snippets,Entertainment,Forums / Message Boards,Image Manipulation,Forums / Message Boards,Forums / Message Boards,Entertainment,Code Snippets,Blog Software,Image Manipulation,Chat,Image Manipulation,Image Manipulation,Code Snippets,Image Manipulation,Image Manipulation,Email,Email,Email,Email,Code Snippets,Chat,AJAX,Java,Coding Tips,Extensions,Coding Tips,Java,Chat</dc:subject>
	</item>
	
	
 	
		
		
		
		
		
  	<item rdf:about="http://www.opensourcecf.com/1/2006/06/BlogCFM-112-Released.cfm">
	<title>BlogCFM 1.12 Released</title>
	<description>&lt;p&gt;I finally got around to fixing all the bugs in BlogCFM and made version 1.12 available for download from the BlogCFM web site at &lt;a href=&quot;http://www.blogcfm.org/download.cfm&quot;&gt;http://www.blogcfm.org/download.cfm&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It is purely a bug fix release, and hopefully will be nice and stable!&lt;/p&gt;</description>
	<link>http://www.opensourcecf.com/1/2006/06/BlogCFM-112-Released.cfm</link>
	<dc:date>2006-06-09T19:49:00-07:00</dc:date>
	
	<dc:subject>Flex and Actionscript,Adobe AIR,Apollo,Image Manipulation,Utilities,Apollo,CFML Servers,Code Snippets,Entertainment,Forums / Message Boards,Image Manipulation,Forums / Message Boards,Forums / Message Boards,Entertainment,Code Snippets,Blog Software,Image Manipulation,Chat,Image Manipulation,Image Manipulation,Code Snippets,Image Manipulation,Image Manipulation,Email,Email,Email,Email,Code Snippets,Chat,AJAX,Java,Coding Tips,Extensions,Coding Tips,Java,Chat,Blog Software</dc:subject>
	</item>
	
	
 	
	</rdf:RDF>
	

