<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:cc="http://web.resource.org/cc/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">

<channel>
<title><![CDATA[CFLOVE]]></title>
<link>http://cflove.org/</link>
<description><![CDATA[with ColdFusion]]></description>
<language>en-us</language>
<pubDate>Mon, 14 May 2012 16:07:14</pubDate>
<lastBuildDate>Mon, 14 May 2012 16:07:14</lastBuildDate>
<generator>cflove.SimpleBlog</generator>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
<managingEditor>sam@cflove.org</managingEditor>
<webMaster>sam@cflove.org</webMaster> 
<item>
<title><![CDATA[Solved – Dreamweaver [The following Translators were not loaded due to errors]]]></title>
<link>http://cflove.org/2012/03/solved-dreamweaver-the-following-translators-were-not-loaded-due-to-errors.cfm</link>
<description><![CDATA[<p>Dreamweaver have a habit of throwing annoying pop-up error messages when you tries to start your morning and this morning it throw at me an minor paragraph:</p>
<p><strong>The following translators were not loaded due to errors: <br />ICEregions.htm: had configuration information that is invalid. <br />jQueryMobile.html: has configuration information that is invalida.<br />XSLT Transform.htm: has configuration information that is invalid.</strong></p>
<p style="text-align: center;"><img src="http://cflove.org/warehouse/UserImages/dreamweaver-error.JPG" alt="" /></p>
<p>Most of Dreamweaver errors cause by its file cache system. If you are lucky, a quick workspace layout reset can solve some of minor problems. Menu <span class="vardana">: [Window] &gt; [Workspace layout] &gt; [Reset </span><em class="vardana"><span style="color: #000000;">&lsquo;Current Workspace name&rsquo;</span></em><span class="vardana">].</span> If that didn&rsquo;t help, we have to dig into window&rsquo;s application data folder.</p>
<p>Go to : <span class="vardana">C:\Users\</span><em class="vardana">[Current User]</em><span class="vardana">\AppData\Roaming</span><br />Or&nbsp; Windows start menu &gt; Run &gt;&nbsp;type:<span class="vardana"> %appdata%</span> and hit enter.</p>
<p>From there, navigate to <span class="vardana">Adobe\Dreamweaver CS(</span><em class="vardana">Version Number</em><span class="vardana">)\(</span><em class="vardana">Language</em><span class="vardana">)\Configuration</span> <br />in my computer it&rsquo;s Adobe\Dreamweaver CS5.5\en_US\Configuration</p>
<p>Find the file <span class="vardana">WinFileCache*.dat</span> file(s) and delete them.. If you have more than one Configuration folder, I have "Configuration" and "Configuration-1", go into each one of those and&nbsp; delete WinFileCache*.dats.</p>
<p>Restart Dreamweaver. You can start coding again.</p>]]></description>

<pubDate>Mon, 14 May 2012 16:07:15</pubDate>
<guid>http://cflove.org/2012/03/solved-dreamweaver-the-following-translators-were-not-loaded-due-to-errors.cfm</guid>
</item>

<item>
<title><![CDATA[DNSPark DDNS update with ColdFusion]]></title>
<link>http://cflove.org/2012/03/dnspark-ddns-update-with-coldfusion.cfm</link>
<description><![CDATA[<p>This website is hosted in a server that laying under my TV stand for past couple of years. I blogged about my initial setup, even though the setup have improved a bit since then, I still use DNSPark.com to host my DNS records. With having a Dynamic IP, occasionally my IP address changes. Since I have not running any DDNS update client in my server as any other normal person would do, I had to update new IP address directly in DNSPark.com admin interface. Here I&rsquo;m going to sort this out with ColdFusion.</p>
<p>My server is behind a NAT Router witch quite adamantly own my real IP and my server, the server have no clue about the IP it actually connected to the rest of the world. I can&rsquo;t use CGI variables or java.net.InetAddress in this case. But DNSPark offers a web base IP detection page at <a href="http://ipdetect.dnspark.net/">http://ipdetect.dnspark.net</a> with the limitation of calling it no more than once an every 10 minute interval. <a href="http://checkip.dyndns.org/">http://checkip.dyndns.org</a> offers the same function and I&rsquo;m sure they also have a same sort of a usage limitation. Following Code fetch the IP address from either one of above URLs.<br /><cf:code id="codeblock" title="Code Block" class="codeblock">&lt;cfhttp url="http://checkip.dyndns.org" method="get"&gt;&lt;/cfhttp&gt;<br />&lt;cfset myip = listfirst(listlast(cfhttp.Filecontent,':'),' &lt;')&gt;</cf:code></p>
<p>I&rsquo;m behind a LinkSys E series router and like most routers, the admin interface of it display the real IP its currently occupying, with bit of fishing around the admin section HTML page, here I was able to fetch out the real IP directly from the router without been burden to a third party service.<br /><cf:code id="codeblock" title="Code Block" class="codeblock">&lt;cfhttp url="<a href="http://192.168.1.1/Status_Router.asp">http://192.168.1.1/Status_Router.asp</a>" username="admin" password="[mypassword]" method="get"&gt;<br />&lt;cfset myip &nbsp;&nbsp;= listgetat(mid(cfhttp.Filecontent, find('var wan_ip',cfhttp.Filecontent),40),2,'"')&gt;</cf:code></p>
<p>Now having the real IP address, all we have to do is call DNSPark API URL with the correct information (<a href="http://www.dnspark.com/support/developers/">documentation here</a>). Bellow is the complete Code, and I used cfschedule to run this page every 10 minute, check if the IP address is changed, if true, Call DNSPark with the new IP. Also I add a text log on this, because I&rsquo;m sort of turning into a log freak.</p>
<p><cf:code id="codeblock" title="Code Block" class="codeblock">&lt;cfset myhostnames &nbsp;= "[host names separated by comma]"&gt;<br />&lt;cfset DDNSUser &nbsp;= "[DNS Park DDNS User Name]"&gt;<br />&lt;cfset DDNPW&nbsp; &nbsp;= "[DNS Park DDNS Password]"&gt;<br />&lt;cfset LogFilePath&nbsp;= "#FileExists('/DNSparklog.txt')#"&gt;<br />&lt;cfset URLhere&nbsp; &nbsp;= "http://localhost/dnspark.cfm"&gt; <br /><br />&lt;!--- *********************************************************** ---&gt;<br />&lt;!--- Fetch the real IP from dnspark.net&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ---&gt;<br />&lt;!--- *********************************************************** ---&gt;<br />&lt;cfhttp url="http://ipdetect.dnspark.net" method="get"&gt;&lt;/cfhttp&gt;<br />&lt;cfset myip = listfirst(listlast(cfhttp.Filecontent,':'),' &lt;')&gt; <br /><br />&lt;cfset logstring&nbsp;= ArrayNew(1)&gt;<br />&lt;cfparam name="url.oldip" default="#myip#"&gt;<br />&lt;cfset ArrayAppend(logstring,myip)&gt; <br />&lt;cfif myip neq url.oldip&gt;<br />&nbsp;&lt;!--- IP changed, lets talk to DNSpark ---&gt;<br />&nbsp;&lt;cfset ArrayAppend(logstring,'SENT')&gt;<br />&nbsp;&lt;cftry&gt;<br />&nbsp;&lt;cfhttp username="#DDNSUser#" password="#DDNPW#" url="https://www.dnspark.net/api/dynamic/update.php?hostname=#myhostnames#&amp;ip=#myip#" method="get"&gt;&lt;/cfhttp&gt;<br />&nbsp;&lt;cfset url.oldip = myip&gt;<br />&nbsp;&lt;cfset Filecontent = replacenocase(cfhttp.Filecontent,chr(10),' ','all')&gt;<br />&nbsp;&lt;cfswitch expression="#listfirst(Filecontent,' ')#"&gt;<br />&nbsp;&nbsp;&lt;cfcase value="ok,nochange"&gt;<br />&nbsp;&nbsp;&nbsp;&lt;!--- update successful ---&gt;<br />&nbsp;&nbsp;&nbsp;&lt;cfset ArrayAppend(logstring,Filecontent)&gt;<br />&nbsp;&nbsp;&lt;/cfcase&gt;<br />&nbsp;&nbsp;&lt;cfcase value="nofqdn,nohost,abuse,unauth,blocked,notdyn"&gt;<br />&nbsp;&nbsp;&nbsp;&lt;cfset ArrayAppend(logstring,Filecontent)&gt;<br />&nbsp;&nbsp;&nbsp;&lt;!--- DNSPark retuned an error message. This is a god palace to add email notification to yourself. ---&gt;<br />&nbsp;&nbsp;&lt;/cfcase&gt;<br />&nbsp;&nbsp;&lt;cfdefaultcase&gt;<br />&nbsp;&nbsp;&nbsp;&lt;!--- DNSPark retuned Something else - posibly possibly an server error ---&gt;<br />&nbsp;&nbsp;&nbsp;&lt;cfset url.oldip = ''&gt;<br />&nbsp;&nbsp;&nbsp;&lt;cfset ArrayAppend(logstring,'OTHER #cfhttp.Statuscode#')&gt;<br />&nbsp;&nbsp;&lt;/cfdefaultcase&gt;<br />&nbsp;&lt;/cfswitch&gt;<br />&nbsp;&nbsp;&lt;cfcatch&gt;<br />&nbsp;&nbsp;&nbsp;&lt;cfset url.oldip = ''&gt;<br />&nbsp;&nbsp;&nbsp;&lt;cfset ArrayAppend(logstring,'ERROR')&gt;<br />&nbsp;&nbsp;&lt;/cfcatch&gt;<br />&nbsp;&lt;/cftry&gt;<br />&lt;/cfif&gt; <br /><br />&lt;!--- Save the log ---&gt;<br />&lt;cfset ArrayAppend(logstring,"#dateformat(now(),'dd/mm/yy')# #TimeFormat(now(),'HH:mm:ss')#")&gt;<br />&lt;cffile action="append" file="e:\iis\cflove.org\warehouse\DNSPark.txt" output="#ArrayToList(logstring,' | ')#"&gt; <br /><br />&lt;!--- Let's Create a Schedule ---&gt;<br />&lt;cfschedule&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; action &nbsp;&nbsp;= "update"&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; task &nbsp;&nbsp;= "dnspark-update"&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; operation &nbsp;= "HTTPRequest"&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; startDate &nbsp;= "#dateformat(now(),'mm/dd/yyyy')#"&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; startTime &nbsp;= "#timeformat(&nbsp; DateAdd('n',10,now()) ,'HH:mm')#" <br />&nbsp;&nbsp;&nbsp; url &nbsp;&nbsp;= "#URLhere#?oldup=#url.oldip#"&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; interval &nbsp;= "once"&gt;</cf:code><br />You may want to run this page inside your localhost because if the IP to your domain changed, the cfschedule may lose the access to this page too.</p>]]></description>
<category><![CDATA[ColdFusion]]></category> 
<pubDate>Mon, 14 May 2012 16:07:15</pubDate>
<guid>http://cflove.org/2012/03/dnspark-ddns-update-with-coldfusion.cfm</guid>
</item>

<item>
<title><![CDATA[IIS 7 Generate 404 Error on Large File Upload.]]></title>
<link>http://cflove.org/2011/11/iis-7-generate-44-error-on-large-file-upload.cfm</link>
<description><![CDATA[<p>I was trying to upload/post a large file and received a flat and&nbsp;boring 404 error from IIS 7. <a href="http://support.microsoft.com/kb/942074/">Microsoft Site advices</a>&nbsp;to update the applicationhost.config file in <em>%windir%\system32\inetsrv\config\applicationhost.config</em> and increase the BYTE value of maxAllowedContentLength in the <em>&lt;requestLimits&gt;,</em> so the IIS request filter may allow large post data to come through.</p>
<p>But my applicationhost.config file didn&rsquo;t have &lt;requestLimits&gt; nod and except prisoners with long jail sentence no one else with right mind learn configuration values by heart. But the command <br /><cf:code id="codeblock" title="Code Block" class="codeblock">%windir%\system32\inetsrv\appcmd set config -section:requestFiltering -requestLimits.maxAllowedContentLength:524288000 </cf:code>solve that issue. Add the <em>&lt;requestLimits&gt;</em> nod to my applicationhost.config with 500MB limit. Sweet!</p>
<p>I restart the IIS. Upload the file again. Well. Nothing Changed. @#$! I don&rsquo;t know why. If you know, please let me know. That would be very&nbsp; sweet and very kind.&nbsp;If you don&rsquo;t, that&rsquo;s ok. I&rsquo;m not dying to know anyway.</p>
<p>The other option was update the web.config file, in the root of my web folder.&nbsp;My file looks something like this:<br /><cf:code id="codeblock" title="Code Block" class="codeblock">&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;configuration&gt;<br />&nbsp;&nbsp;&nbsp; &lt;system.webServer&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;defaultDocument&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;files&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;clear /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;add value="index.cfm" /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/files&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/defaultDocument&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/system.webServer&gt;<br />&lt;/configuration&gt;</cf:code>and add the following node :<br /><cf:code id="codeblock" title="Code Block" class="codeblock">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;security&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;requestFiltering&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;requestLimits maxAllowedContentLength="524288000"/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/requestFiltering&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/security&gt;</cf:code>And now it looks like this :</p>
<p><cf:code id="codeblock" title="Code Block" class="codeblock">&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;configuration&gt;<br />&nbsp;&nbsp;&nbsp; &lt;system.webServer&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;defaultDocument&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;files&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;clear /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;add value="index.cfm" /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/files&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/defaultDocument&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;security&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;requestFiltering&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;requestLimits maxAllowedContentLength="524288000"/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/requestFiltering&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/security&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/system.webServer&gt;<br />&lt;/configuration&gt;</cf:code>That&rsquo;s it. My upload form starts to work again. But remember, even if IIS let the file pass through still ColdFusion can enforce a size limit. <a href="http://cflove.org/2010/05/coldfusion-error-5-post-size-exceeds-the-maximum-limit.cfm">Make sure you update the ColdFusion Administrator too</a>.</p>]]></description>
<category><![CDATA[This and That]]></category> 
<pubDate>Mon, 14 May 2012 16:07:15</pubDate>
<guid>http://cflove.org/2011/11/iis-7-generate-44-error-on-large-file-upload.cfm</guid>
</item>

<item>
<title><![CDATA[Talking to External inDesign server with ColdFusion]]></title>
<link>http://cflove.org/2011/11/talking-to-external-indesign-server-with-coldfusion.cfm</link>
<description><![CDATA[<p>In the previous post I wrote about how to connect to inDesign web services using ColdFusion. But if your inDesign server is running on a deferent IP from your ColdFusion server, you might get an error:</p>
<p><strong>Cannot perform web service invocation runScript.</strong></p>
<p>ColdFusion gives you this message not because your network administrator blocked the port 18383, you know its open because you can access <em>http://my-indesign-server-ip-goes-here:18383/service?wsdl</em> from the ColdFusion box. Also nothing wrong with your ColdFusion code, because you just copy and pasted it form my previous post and updated only the InDesign server URL, in CFOBJECT webservice argument. Then Why?</p>
<p>You get this message because inDesign server&rsquo;s web service engine is nothing to tweet home about. It could not accept requests from external IPs. Now hre is the workaround:</p>
<ol>
<li>Install a web server (IIS would do), in your inDesign server box.</li>
<li>Download <a href="http://www.adobe.com/devnet/indesign.html">inDesign server SDK</a> relevant to your inDesign server and unzip it.</li>
<li>Open the file IDSP.wsdl (in the folder : <em>\docs\references</em>) with the text editor and find the line <em>&lt;SOAP:address location="http://localhost:80"/&gt;</em> and replace the <em>localhost</em> with your inDesign server&rsquo;s IP address or domain name and the port. Let&rsquo;s say your inDesign server&rsquo;s IP address is<em> 192.168.1.100</em> and inDesign instance is running on port 18383, then this line should be <em>&lt;SOAP:address location="http://192.168.1.100:18383"/&gt;</em>.</li>
<li>Copy the file into your web server folder. Now your ColdFusion box can access <em>http://my-indesign-server-ip-goes-here/IDSP.wsdl. </em>Use this URL as your webservice.</li>
</ol>
<p><cf:code id="codeblock" title="Code Block" class="codeblock">&lt;cfobject<br />&nbsp;&nbsp;&nbsp; name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = "ind"<br />&nbsp;&nbsp;&nbsp; webservice =&nbsp;"http://my-indesign-server-ip-goes-here/IDSP.wsdl"<br />&nbsp;&nbsp;&nbsp; type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = "webservice"&gt; </cf:code></p>
<p>That&rsquo;s it. Now your ColdFusion box can connect to your InDesign server. Have Fun. Lot of it.</p>]]></description>
<category><![CDATA[inDesign Server]]></category><category><![CDATA[ColdFusion]]></category> 
<pubDate>Mon, 14 May 2012 16:07:15</pubDate>
<guid>http://cflove.org/2011/11/talking-to-external-indesign-server-with-coldfusion.cfm</guid>
</item>

<item>
<title><![CDATA[Create QR Barcode with ColdFusion and Zxing]]></title>
<link>http://cflove.org/2011/11/create-qr-barcode-with-coldfusion-and-zxing.cfm</link>
<description><![CDATA[<p>Too often I write &ldquo;It was too easy with ColdFusion&rdquo;, it&rsquo;s becoming a clich&eacute; now. Making a QR barcode with ColdFusion was extremely easy too, specially when <a href="http://blog.getrailo.com/post.cfm/barcode-generation-with-railo">someone else have already blog about it</a>. I had nothing to dig out, nothing to investigate or haven&rsquo;t had the need for countless cups of coffee. I wish everything works like that.<br /><br />This uses <a href="http://code.google.com/p/zxing/">Google zxing java library</a>. I put necessary classes into a single jar file and you can download the example below. It uses JavaLoader to load to the Java classes. But if you are happily floating on&nbsp;Railo, you know you don&rsquo;t have to use JavaLoader. <a href="http://www.getrailo.org/">Railo is Cool</a>.</p>
<p>Railo Code (Without JavaLoader)<br /><cf:code id="codeblock" title="Code Block" class="codeblock">&lt;cfset corefile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= ExpandPath('core.jar')&gt;<br />&lt;cfset BarcodeFormat &nbsp;&nbsp;&nbsp;= createObject('java','com.google.zxing.BarcodeFormat',corefile)&gt;<br />&lt;cfset QRCodeWriter &nbsp;&nbsp;&nbsp;= createObject('java','com.google.zxing.qrcode.QRCodeWriter',corefile).init() /&gt;<br />&lt;cfset MatrixToImageWriter &nbsp;&nbsp;= createObject('java','com.google.zxing.client.j2se.MatrixToImageWriter',corefile)&gt;<br />&lt;cfset QRcode&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;= QRCodeWriter.encode( 'http://cflove.org', BarcodeFormat.QR_CODE, 100, 100 )&gt;<br />&lt;cfset image &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= ImageNew( MatrixToImageWriter.toBufferedImage( QRcode ) )/&gt;<br />&lt;cfimage action="writeToBrowser" source="#image#" format="png"&gt;</cf:code></p>
<p>With JavaLoader</p>
<p><cf:code id="codeblock" title="Code Block" class="codeblock">&lt;cfset paths &nbsp;&nbsp;&nbsp;= arrayNew(1)&gt;<br />&lt;cfset paths[1] &nbsp;&nbsp;= expandPath("core.jar")&gt;<br />&lt;cfset loader &nbsp;&nbsp;&nbsp;= createObject("component", "javaloader.JavaLoader").init(paths)&gt; <br />&lt;cfset BarcodeFormat &nbsp;&nbsp;&nbsp;= loader.create('com.google.zxing.BarcodeFormat')&gt;<br />&lt;cfset QRCodeWriter &nbsp;&nbsp;&nbsp;= loader.create('com.google.zxing.qrcode.QRCodeWriter').init()&gt;<br />&lt;cfset MatrixToImageWriter &nbsp;&nbsp;= loader.create('com.google.zxing.client.j2se.MatrixToImageWriter')&gt;<br />&lt;cfset QRcode&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;= QRCodeWriter.encode( 'http://cflove.org', BarcodeFormat.QR_CODE, 100, 100 )&gt;<br />&lt;cfset image&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;= ImageNew( MatrixToImageWriter.toBufferedImage( QRcode ) )&gt;<br />&lt;cfimage action="writeToBrowser" source="#image#" format="png"&gt;</cf:code></p>
<p>Download everything bellow</p>]]></description>
<category><![CDATA[Barcode]]></category><category><![CDATA[ColdFusion]]></category> 
<pubDate>Mon, 14 May 2012 16:07:15</pubDate>
<guid>http://cflove.org/2011/11/create-qr-barcode-with-coldfusion-and-zxing.cfm</guid>
</item>

<item>
<title><![CDATA[Simple JQuery Autosuggest Dropdown ColdFusion Custom Tag]]></title>
<link>http://cflove.org/2011/10/simple-jquery-autosuggest-dropdown-coldfusion-custom-tag.cfm</link>
<description><![CDATA[<p>Before I found JQuery or JQuery found me and fall in internal blissful love, I wrote an autosuggest dropdown function which I have been using for years. It took almost a week to write and the code stretch as far as my house to Minnesota. Recently I caught in a habit of simplifying my old pure JavaScript function to JQuery and this function caught me today. After around 20 lines of JavaScript and couple of hours of testing and tweaking this starts to work better than my original function. <br /><br />This is a very simple and lightweight autosuggest dropdown input combo function. All you have to do is wrap the custom tag around your html input tag and point to a data feed. Data feed is delimited (<em>the default delimiter is pipe |</em> ) word list, not a JSON array, so that won&rsquo;t give even a slightest trouble when working with older CF servers. This tag doesn&rsquo;t have &ldquo;key stoke delay&rdquo; or ability to select items using the &ldquo;key down&rdquo;. That&rsquo;s a small sacrifice I made to keep it simple as it is. <a href="http://cflove.org/examples/autosuggest/">Click here for example</a>.<br /><br />Call :<br /><cf:code id="codeblock" title="Code Block" class="codeblock">&lt;cf_asug url="demo.cfc?method=state"&gt;<br />&lt;input type="text" name="myinput" /&gt;<br />&lt;/cf_asug&gt;</cf:code><br />Custom Tag:</p>
<p><cf:code id="codeblock" title="Code Block" class="codeblock">&lt;cfparam name="request.autosuggest"&nbsp;&nbsp;default="0"&gt;<br />&lt;cfparam name="request.url"&nbsp;&nbsp;&nbsp;&nbsp;default=""&gt;<br />&lt;cfparam name="attributes.delimiter"&nbsp;default="|"&gt;<br />&lt;cfparam name="attributes.url"&nbsp;&nbsp;&nbsp;default="#request.url#"&gt;<br />&lt;Cfset request.url&nbsp;= attributes.url&gt;<br />&lt;cfset autosuggest&nbsp;= val(request.autosuggest+1)&gt; <br />&lt;cfswitch expression="#thisTag.ExecutionMode#"&gt;<br />&lt;cfcase value="start"&gt;<br />&nbsp;&lt;cfsavecontent variable="js"&gt;<br />&nbsp;&nbsp;&lt;cfif not val(request.autosuggest)&gt;<br />&nbsp;&nbsp;&lt;style type="text/css"&gt;<br />&nbsp;&nbsp;&nbsp;.autosuggest&nbsp;&nbsp;&nbsp;{position:relative; display:inline-block}<br />&nbsp;&nbsp;&nbsp;.autosuggest ul&nbsp;&nbsp;&nbsp;{position:absolute; font-family:Verdana, Geneva, sans-serif; font-size:11px; max-height:80px; background-color:#F7F7F3; display:none; border-bottom:1px solid #CCC; z-index:10; list-style:none; padding:0px; margin:0px; clear:both; overflow-x:hidden; overflow-y:auto;}<br />&nbsp;&nbsp;&nbsp;.autosuggest li&nbsp;&nbsp;&nbsp;{margin:0px; padding-left:3px; padding-top:4px; padding-bottom:4px; list-style:none; border-top:1px solid #E0E0E0; border-left:1px solid #CCC; border-right:1px solid #CCC;}<br />&nbsp;&nbsp;&nbsp;.autosuggest li:hover&nbsp;{background-color:#D7F2FF}<br />&nbsp;&nbsp;&nbsp;.autosuggest li:first-child&nbsp;{border-top:none;}<br />&nbsp;&nbsp;&lt;/style&gt;<br />&nbsp;&nbsp;&lt;!--- ********************************************************* ---&gt;<br />&nbsp;&nbsp;&lt;!--- Auto Suggest Plugin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ---&gt;<br />&nbsp;&nbsp;&lt;!--- ********************************************************* ---&gt;<br />&nbsp;&nbsp;&nbsp;&lt;script type="text/javascript"&gt;<br />&nbsp;&nbsp;&nbsp;(function($){<br />&nbsp;&nbsp;&nbsp;&nbsp;$.fn.extend({ <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;autosuggest: function(options) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(this).children('input').attr('autocomplete','off').bind('focus keyup', function(){ <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.ajax({url: options.url+"&amp;returnformat=plain&amp;string="+$(this).val(), dataType: "text", cache:false, context: this, success: function(data){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var list&nbsp;= data.split( options.delimiter );<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var li &nbsp;&nbsp;= '';<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( $.trim(list) !== '') {for ( var i=list.length-1; i&gt;=0; --i ){ li = li + '&lt;li&gt;'+$.trim(list[i])+'&lt;/li&gt;'}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(this).next().html(li).slideDown('fast').children('li').click( <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function(){ $(this).parent().slideUp('fast').prev().val( $(this).text() )}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else { $(this).next().css('display','none') }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}})<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}).blur(function() {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( $(this).next().attr('active') == 'f' ) { $(this).next().delay(1000).slideUp('fast') }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}) <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(this).children('ul').width( $(this).children('input').outerWidth() ).hover(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function(){ $(this).attr('active','t') }, function(){ $(this).attr('active','f').prev().trigger('blur') }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;});<br />&nbsp;&nbsp;&nbsp;})(jQuery);<br />&nbsp;&nbsp;&nbsp;&lt;/script&gt;<br />&nbsp;&nbsp;&lt;/cfif&gt;<br />&nbsp;&lt;/cfsavecontent&gt;<br />&nbsp;&lt;cfhtmlhead text="#js#"&gt;<br />&nbsp;&lt;cfoutput&gt;&lt;div class="autosuggest" id="autosuggest#autosuggest#"&gt;&lt;/cfoutput&gt;<br />&lt;/cfcase&gt; <br />&lt;cfdefaultcase&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/div&gt;<br />&lt;cfoutput&gt;<br />&lt;script type="text/javascript"&gt;<br />&lt;!--- ********************************************************* ---&gt;<br />&lt;!--- Call the Auto Suggest&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ---&gt;<br />&lt;!--- ********************************************************* ---&gt;<br />$(document).ready(function(){$('##autosuggest1').autosuggest({ <a href="http://cflove.org/administrator/%22#attributes.url">url:"#attributes.url</a>#", delimiter:"#attributes.delimiter#"})})<br />&lt;/script&gt;<br />&lt;/cfoutput&gt;<br />&lt;/cfdefaultcase&gt;<br />&lt;/cfswitch&gt;</cf:code></p>]]></description>
<category><![CDATA[JavaScript]]></category><category><![CDATA[ColdFusion]]></category> 
<pubDate>Mon, 14 May 2012 16:07:15</pubDate>
<guid>http://cflove.org/2011/10/simple-jquery-autosuggest-dropdown-coldfusion-custom-tag.cfm</guid>
</item>

<item>
<title><![CDATA[Teapot : ColdFusion Blog Application Software]]></title>
<link>http://cflove.org/2011/09/teapot-coldfusion-blog-application.cfm</link>
<description><![CDATA[<p>Teapot is a blog application developed with ColdFusion, mainly&nbsp;for use of ColdFusion Developers. It&rsquo;s simple, fun to use and easy to customize. Do I have to say it&rsquo;s free and open source too? Well, it is free and open source and it runs on Adobe ColdFusion, Railo and MySQL, MSSQL or PostgreSQL.</p>
<p><span class="headline">Teapot is hot. Very Hot.</span></p>
<p class="small"><span class="smallhl">Search Engines Loves a Hot Cup of Tea</span></p>
<p><img src="http://cflove.org/warehouse/UserImages/teapot_blog_url.jpg" alt="" /><br /><br />See the full URL with keywords nicely laid out? Search engines love those. You can customize your post&rsquo;s URL with the Teapot Administrator, giving you greater chance to target higher search ranking. Not only that, Teapot automatically builds the site index XML file&nbsp;and submits to Google, Bing and Ask.</p>
<p><span class="smallhl">Add a Spoon of ColdFusion to Your Page.</span> We are ColdFusion developers, we love ColdFusion and we want it everywhere. With Teapot, adding ColdFusion to your page is simple, easy and fun.&nbsp;Type your CFM in the editor, highlight, click the 'execute' icon.<br /><img src="http://cflove.org/warehouse/UserImages/teapot_execute_code.jpg" alt="" /></p>
<p><span class="smallhl">Show Your Code</span> it&rsquo;s easy to add code blocks in your page. Highlight &lsquo;em, click &lsquo;code&rsquo; and that&rsquo;s it.<br /><br /><img src="http://cflove.org/warehouse/UserImages/teapot_codeblock.jpg" alt="" /></p>
<p>&nbsp;</p>
<p><span class="smallhl">Add Youtube, Viemo,&nbsp;PDF&nbsp;and all that.</span>Click on the &lsquo;media&rsquo; icon or Type in the URL of Youtube, Yahoo Video, Dailymotion, Metacafe or Vimeo. Teapot keeps your editor uncluttered and displays your media once the post is published.<br /><img src="http://cflove.org/warehouse/UserImages/teapot_youtube.jpg" alt="" /></p>
<p><span class="smallhl">Image Gallery</span> It&rsquo;s easy to build an image gallery in your page. Just click and upload. That&rsquo;s it. (<a href="http://demo.cflove.org/teapot/2011/10/american-museum-of-natural-history.cfm">demo</a>)<br /><br /><img src="http://cflove.org/warehouse/UserImages/teapot_image_gallery.jpg" alt="" /></p>
<p><span class="smallhl">And much much more...</span> Simple &amp; inviting blog editor layout, File attachments, Pin to wall, Pages, Snap in Integration with Project Honey Pot spam protection, easy customization and much more. <a href="http://demo.cflove.org/teapot/administrator/login.cfm">Click here for Teapot Blog&nbsp;Administration Demo</a> and here is the <a href="http://demo.cflove.org/teapot/install/">Installation Demo</a>.&nbsp; Oh, the front end of Teapot, well, you are looking at it now.</p>
<p class="small"><strong>Requirements:</strong></p>
<ul>
<li>ColdFusion or Railo (ColdFusion&nbsp;7 testing pending)</li>
<li>Working DSN to mySQL/MSSQL or PostgreSQL database</li>
<li>CFFILE read,write and delete access across the site.</li>
</ul>
<p><strong><span class="small">Installation</span></strong><br />Teapot installation is splendidly simple. <a href="http://cflove.org/index.cfm?action=download&amp;path=72/teapot.zip">Download</a> and unzip the Teapot installation file into your web server, use your browser to walk though the <a href="http://demo.cflove.org/teapot/install/">simple installation</a>. Installation will complete your application settings and erase itself at the end.</p>
<p class="small"><strong>History</strong></p>
<ul>
<li><strong>Current Version Beta 0.1</strong></li>
<li>Sep, 22 2011 Released</li>
</ul>]]></description>
<category><![CDATA[ColdFusion]]></category><category><![CDATA[Teapot Blog]]></category> 
<pubDate>Mon, 14 May 2012 16:07:15</pubDate>
<guid>http://cflove.org/2011/09/teapot-coldfusion-blog-application.cfm</guid>
</item>

<item>
<title><![CDATA[Flash Video (f4v) File not found on IIS]]></title>
<link>http://cflove.org/2011/07/flash-video-f4v-file-not-found-on-iis.cfm</link>
<description><![CDATA[<p>I was adding an <em>f4v</em> video into a web site today and notice IIS has not registered <em>f4v</em> file type by default and IIS return a <strong>404 - File Not Found</strong> error message instead the flash video file. This is a quite easy fix, all we have to do is register f4v MIME type with IIS. <br />Go to <strong>Internet Information Service Manage </strong>&gt; click on your web server and open up &ldquo;<strong>MIME Type</strong>&rdquo;</p>
<p><img src="http://cflove.org/warehouse/UserImages/iis_mime_type.jpg" alt="" /></p>
<p>Click Add and enter File name extension: <strong>FLV </strong><br />MIME type : <strong>video/mp4</strong></p>
<p><strong><img src="http://cflove.org/warehouse/UserImages/add_mime_type.jpg" alt="" /></strong></p>]]></description>
<category><![CDATA[This and That]]></category> 
<pubDate>Mon, 14 May 2012 16:07:15</pubDate>
<guid>http://cflove.org/2011/07/flash-video-f4v-file-not-found-on-iis.cfm</guid>
</item>

<item>
<title><![CDATA[Repeatedly Broken Kindle Screen - Am I a serial Kindle killer?]]></title>
<link>http://cflove.org/2011/01/kindle-screen-broke-two-times-within-6-months.cfm</link>
<description><![CDATA[<p>On Amazon, Kindle has received&nbsp;incredible feedback&nbsp;14,168 reviews&nbsp;averaging&nbsp;4.5 stars. Most of those reviews end with a clich&eacute;: "I love my Kindle". Well, I love my Kindle, too. I also love&nbsp;<a href="http://www.prometheussprings.com/">Prometheus Springs</a>, and ColdFusion. They are all&nbsp;extraordinary products. However,&nbsp;my Kindle screen has&nbsp;broken two times now&nbsp;within just&nbsp;6 months, each time in&nbsp;quite the same way. The top half of the screen freezes, like a mammoth in Siberia, while the bottom half&nbsp;countinues to&nbsp;work fine.</p>
<p>A quick&nbsp;search on Google&nbsp;revealed that&nbsp;this problem&nbsp;is quite common with Kindle. Amazon&nbsp;refers to the problem as&nbsp;"Impact Damage". Well, every day I carry, a notebook, a DSLR camera, three lenses and&nbsp;my Xperia Phone in my backpack. None of them has ever had any &ldquo;impact damages.&rdquo; Did I say I carry three lenses? &nbsp;<br /><br />The first time I had the freezing problem,&nbsp;my Kindle dropped&nbsp;out of my backpack on to the table - a&nbsp;6 inch drop. That was&nbsp;it. The top&nbsp;half of the screen froze. Kindle may have been poorly engineered, but Amazon is&nbsp;defiantly not. When I told them that my Kindle went belly up, and that it was&nbsp;still covered by&nbsp;a&nbsp;one year warranty &ndash; I got a new Kindle in&nbsp;two days. What wonderful service! (Asus could learn a thing or two from Amazon...)</p>
<p>Understanding that&nbsp;Kindle is a fragile pixie, I&nbsp;began treating it with the&nbsp;utmost care like a baby. Not like just&nbsp;any baby though,&nbsp;like a preemie. I never left&nbsp;it on the bed like I do with my laptop. I woulldn't even let my son touch it. But one night I turned on&nbsp;the Kindle&nbsp;and to my utter disappointment, the screen&nbsp;was frozen again. Two times? Really? It was&nbsp;still covered by the warranty, so Amazon sent me&nbsp;yet another brand new Kindle. (Dell could&nbsp;also learn thing or two from Amazon...)</p>
<p>When things like that happen, you start to wonder could&nbsp;it be me? Am I a serial Kindle killer? I don&rsquo;t know. What&nbsp;I do know is that&nbsp;I hope there won&rsquo;t be a third time.</p>
<p><img style="display: block; margin-left: auto; margin-right: auto;" src="http://cflove.org/warehouse/UserImages/IMG.jpg" alt="" /></p>]]></description>
<category><![CDATA[This and That]]></category> 
<pubDate>Mon, 14 May 2012 16:07:15</pubDate>
<guid>http://cflove.org/2011/01/kindle-screen-broke-two-times-within-6-months.cfm</guid>
</item>

<item>
<title><![CDATA[Create USPS PostNet String With ColdFusion]]></title>
<link>http://cflove.org/2011/01/create-postnet-string-with-coldfusion.cfm</link>
<description><![CDATA[<p>I know PostNet is going to expire in a couple of months, but today I&nbsp;needed to create a few shipping labels, So I put to-gether a simple function to assemble a&nbsp;PostNet string. Mind you, this does not create the&nbsp;actual PostNet&nbsp;barcode. Insted,&nbsp;I use a PostNet font to create the barcode. What&nbsp;I put together here creates a valid PostNet string from a ZIP code so that you can print it with a PostNet barcode font. Pass your zip5 or zip9 to the function, and it will return the string to be printed.</p>
<p><cf:code id="codeblock" title="Code Block" class="codeblock">&lt;cffunction name="makepostnet" returntype="string" output="no"&gt;<br />&nbsp;&lt;cfargument name="zipcode" required="no" type="string" default=""&gt;<br />&nbsp;&lt;cfset local.postnet&nbsp;= trim(replace(arguments.zipcode,"-",""))&gt;<br /><br />&nbsp;&lt;cfif len(local.postnet)&gt;<br />&nbsp;&nbsp;&lt;cfset local.sum = 0&gt;<br />&nbsp;&nbsp;&lt;cfloop from="1" to="#len(local.postnet)#" index="local.c"&gt;<br />&nbsp;&nbsp;&nbsp;&lt;cfset local.sum = local.sum + val(mid(local.postnet,local.c,1))&gt;<br />&nbsp;&nbsp;&lt;/cfloop&gt;<br />&nbsp;&nbsp;&lt;cfset local.lastdigit = mid(local.sum,len(local.sum),1)&gt;<br />&nbsp;&nbsp;&lt;cfif val(local.lastdigit)&gt;<br />&nbsp;&nbsp;&nbsp;&lt;cfset local.sumcheck&nbsp;= 10-local.lastdigit&gt;<br />&nbsp;&nbsp;&lt;cfelse&gt;<br />&nbsp;&nbsp;&nbsp;&lt;cfset local.sumcheck = 0&gt;<br />&nbsp;&nbsp;&lt;/cfif&gt;<br />&nbsp;&nbsp;&lt;cfset local.postnet = "#local.postnet##local.sumcheck#"&gt;<br />&nbsp;&lt;/cfif&gt;<br />&nbsp;&lt;cfreturn local.postnet&gt;<br />&lt;/cffunction&gt;</cf:code></p>]]></description>
<category><![CDATA[Shipping API]]></category><category><![CDATA[Barcode]]></category><category><![CDATA[ColdFusion]]></category> 
<pubDate>Mon, 14 May 2012 16:07:15</pubDate>
<guid>http://cflove.org/2011/01/create-postnet-string-with-coldfusion.cfm</guid>
</item>

<item>
<title><![CDATA[Railo/Tomcat & IIS "HTTP Error 404.3 – Not Found. The page you are requesting cannot be served" Error.]]></title>
<link>http://cflove.org/2010/12/railotomcat-and-iis-http-error-443-not-found-the-page-you-are-requesting-cannot-be-served-error.cfm</link>
<description><![CDATA[<p>Railo installation is getting extremely easy thanks to <a href="http://railo.viviotech.net/">Vivio Technologies installer</a>. While trying to implement <a href="http://cflove.org/2010/11/coldfusion-error-handler.cfm">Kakapo</a> for Railo today, I installed Railo on my windows 7, 64-bit laptop. By the time my coffee had finished brewing, Railo installation&nbsp;had completed as well.&nbsp;<a href="http://trac.getrailo.org/installers/wiki/VivioInstallerWinAddingSites">After mapping a virtual host to my working directory</a>, I typed: <br /><br />http://mylocalhost/myfolder/ <br /><br />was hoping to see <em>index.cfm</em> in the folder, but insted it returned the follwing error:</p>
<ul>
<li>HTTP Error 404.3 &ndash; Not Found The page you are requesting cannot be served because of the extension configuration. If the page is a script, add a handler. If the file should be downloaded, add a MIME map</li>
</ul>
<p>However, when I&nbsp;typed: <br /><br />http://mylocalhost/myfolder/index.cfm<br /><br />everything worked fine.&nbsp;it returned the <em>index.cfm</em> file that I had hoped to see. It seems&nbsp;that, handler mapping for CFM has&nbsp;gone missing in IIS. I&rsquo;am not sure why, but it was easy to fix.</p>
<p>1) Open your IIS Admin and select <strong>Handler Mapping</strong><br /><img src="http://cflove.org/warehouse/UserImages/iis_railo_1.png" alt="" /></p>
<p>2) Next, select <strong>Add script Map</strong><br /><img src="http://cflove.org/warehouse/UserImages/iis_railo_2.png" alt="" /></p>
<p><br />3) Then add a new Script Map for CFM <br /><img src="http://cflove.org/warehouse/UserImages/iis_railo_3.png" alt="" /><br />Find the relevant path in your computer for isapi_redirect-1.2.30.dll and add that under [Executable] field. Repeat the same&nbsp;step for CFC's too.&nbsp;One, Two, Three&nbsp;- it's fixed!</p>
<p>&nbsp;</p>]]></description>
<category><![CDATA[Railo]]></category> 
<pubDate>Mon, 14 May 2012 16:07:15</pubDate>
<guid>http://cflove.org/2010/12/railotomcat-and-iis-http-error-443-not-found-the-page-you-are-requesting-cannot-be-served-error.cfm</guid>
</item>

<item>
<title><![CDATA[Creating a UPS Shipping Label with UPS API & ColdFusion]]></title>
<link>http://cflove.org/2010/12/ups-shipping-label-with-coldfusion.cfm</link>
<description><![CDATA[<p>UPS recently updated their API documentation. Compared to their last documentation, this new version is&nbsp;quite good. If you&nbsp; plann to use UPS API, begin by creating&nbsp;a UPS account. Next,&nbsp;get an API access Key, and finally the&nbsp;most important setp&nbsp;- download the API documentation and go through it carefully. UPS has far too many options and scenarios than&nbsp;I&nbsp;could explain in a single post. (follow these links for&nbsp;<a href="http://cflove.org/2010/10/ups-address-verification-with-coldfusion.cfm">UPS Address Verification</a> and <a href="http://cflove.org/2010/10/ups-cityvalidation-with-coldfusion.cfm">City Validation</a> functions)<br /><br />There are three aspects to creating a UPS Shipping label: <em>ShipConfirm</em>, <em>ShipAccept </em>and <em>Void</em>. First, you&nbsp;send in&nbsp;your request for a shipping label, and then&nbsp;UPS confirms your request by sending back a label.&nbsp;At that point, you either accept the label&nbsp;or void it. You need to&nbsp;complete those three steps before you&nbsp;can move in-to <em>Production API</em>. Following CFC constantans ShipConfirm, ShipAccept and Void function.<br /><br />UPS's shipping business is complex, and therefore API is as well. It should be no surprise, then, that following CFC is complex, even though it does not cover every aspect of UPS API. Please read each argument&rsquo;s Hint attribute. I have added as much information as&nbsp;I can for them. Similar to my FedEX CFC, all the access keys and passwords are stored in the Application file. Also, this CFC&nbsp;will write log files&nbsp;in every step of the communication&nbsp;process&nbsp;in the folder called <em>Log</em>, including request XMLs, returned XMLs, actual labels and other files that&nbsp;come with that, like&nbsp;high value reports, etc..<br /><br />I copied and pasted the list of arguments here, if you want to have a quick look at them. <strong>Click on the download button at the end of the post&nbsp;to download the CFC file.</strong></p>
<p><cf:code id="codeblock" title="Code Block" class="codeblock">&nbsp;&lt;!--- To Address&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ---&gt; <br />&nbsp;&lt;cfargument name="Company"&nbsp;&nbsp;&nbsp;type="string" required="Yes" /&gt; <br />&nbsp;&lt;cfargument name="Name"&nbsp;&nbsp;&nbsp;&nbsp;type="string" required="Yes" /&gt;<br />&nbsp;&lt;cfargument name="Address1"&nbsp;&nbsp;&nbsp;type="string" required="Yes" /&gt; <br />&nbsp;&lt;cfargument name="City"&nbsp;&nbsp;&nbsp;&nbsp;type="string" required="Yes" /&gt; <br />&nbsp;&lt;cfargument name="State"&nbsp;&nbsp;&nbsp;type="string" required="Yes" /&gt; <br />&nbsp;&lt;cfargument name="ZIP"&nbsp;&nbsp;&nbsp;&nbsp;type="string" required="Yes" /&gt; <br />&nbsp;&lt;cfargument name="Phone"&nbsp;&nbsp;&nbsp;type="string" required="No" default="" /&gt;<br />&nbsp;&lt;cfargument name="Attention"&nbsp;&nbsp;type="string" required="No" default="" /&gt;<br />&nbsp;&lt;cfargument name="Address2"&nbsp;&nbsp;&nbsp;type="string" required="No" default="" /&gt;<br />&nbsp;&lt;cfargument name="Address3"&nbsp;&nbsp;&nbsp;type="string" required="No" default="" /&gt;<br />&nbsp;&lt;cfargument name="EMailAddress"&nbsp;&nbsp;type="string" required="No" default="" /&gt;<br />&nbsp;&lt;cfargument name="Country"&nbsp;&nbsp;&nbsp;type="string" required="No" default="US" hint="ISO Standard 3166 Country Code" /&gt;<br />&nbsp;&lt;cfargument name="IsResident"&nbsp;&nbsp;type="boolean" required="No" default="false" /&gt;<br />&nbsp;&lt;!--- Service&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ---&gt;<br />&nbsp;&lt;!--- For Complete Code List : Shipping Package XML Developers Guide.pdf - Appendix F - Service Codes ---&gt;<br />&nbsp;&lt;!--- United States Domestic Shipments&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ---&gt;<br />&nbsp;&lt;!--- 1.UPS Next Day Air / 2.UPS Second Day Air / 3.UPS Ground / 12.UPS Three-Day Select&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ---&gt;<br />&nbsp;&lt;!--- 13.UPS Next Day Air Saver / 14.UPS Next Day Air Early A.M. SM / 59.UPS Second Day Air A.M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ---&gt;<br />&nbsp;&lt;!--- 65.UPS Saver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ---&gt;<br />&nbsp;&lt;cfargument name="ServiceCode"&nbsp;&nbsp;type="numeric"&nbsp;required="No" default="03" /&gt;<br />&nbsp;&lt;cfargument name="ServiceDesc"&nbsp;&nbsp;type="string"&nbsp;required="No" default="UPS Second Day Air" /&gt;<br />&nbsp;&lt;!--- package Details&nbsp;&nbsp; ---&gt;<br />&nbsp;&lt;cfargument name="pkgType"&nbsp;&nbsp;&nbsp;type="numeric"&nbsp;required="No" default="02" hint="01:Letter /02:Custom package /03:Tube /04:PAC /21:UPSexpressBox" /&gt;<br />&nbsp;&lt;cfargument name="pkgDescription"&nbsp;type="string"&nbsp;required="No" default="" /&gt;<br />&nbsp;&lt;cfargument name="pkgLength"&nbsp;&nbsp;type="string"&nbsp;required="Yes" hint="Inch in US, CM rest of the world" /&gt;<br />&nbsp;&lt;cfargument name="pkgWidth"&nbsp;&nbsp;&nbsp;type="string"&nbsp;required="Yes" hint="Inch in US, CM rest of the world" /&gt;<br />&nbsp;&lt;cfargument name="pkgHeight"&nbsp;&nbsp;type="string"&nbsp;required="Yes" hint="Inch in US, CM rest of the world" /&gt;<br />&nbsp;&lt;cfargument name="pkgWeight"&nbsp;&nbsp;type="string"&nbsp;required="Yes" hint="Inch in LB, Kg rest of the world" /&gt;<br />&nbsp;&lt;cfargument name="InsuranceValue"&nbsp;type="string"&nbsp;required="No" hint="Inch in LB, Kg rest of the world" /&gt;<br />&nbsp;&lt;!--- Services&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ---&gt;<br />&nbsp;&lt;cfargument name="SaturdayDelivery"&nbsp;type="boolean"&nbsp;required="No" default="false" hint="Saturday Delivery or not" /&gt;<br />&nbsp;&lt;cfargument name="VerbConfirmName"&nbsp;type="string"&nbsp;required="No" default="" hint="To confirm delivery of your shipment, a UPS representative will call the preferred contact telephone number listed on your UPS Next Day Air&reg; Early A.M.&reg; package." /&gt;<br />&nbsp;&lt;cfargument name="VerbConfirmPhone"&nbsp;type="string"&nbsp;required="No" default="" hint="To confirm delivery of your shipment, a UPS representative will call the preferred contact telephone number listed on your UPS Next Day Air&reg; Early A.M.&reg; package." /&gt;<br />&nbsp;&lt;!--- Pickup Details&nbsp;&nbsp;&nbsp; ---&gt;<br />&nbsp;&lt;cfargument name="SaturdayPickup"&nbsp;type="boolean"&nbsp;required="No" default="false" /&gt;<br />&nbsp;&lt;cfargument name="PickupDate"&nbsp;&nbsp;type="string" &nbsp;required="No" default="" /&gt;<br />&nbsp;&lt;cfargument name="PickupTimeEarly"&nbsp;type="string" &nbsp;required="No" default="0800" hint="Earliest Time to Pick Up (HHmm Time Format)" /&gt;<br />&nbsp;&lt;cfargument name="PickupTimeLate"&nbsp;type="string" &nbsp;required="No" default="1600" hint="Late Time to Pick Up (HHmm Time Format)" /&gt;<br />&nbsp;&lt;cfargument name="PickupName"&nbsp;&nbsp;type="string" &nbsp;required="No" default="" hint="Name of the person to contact for pickup" /&gt;<br />&nbsp;&lt;cfargument name="PickupPhone"&nbsp;&nbsp;type="string" &nbsp;required="No" default="" hint="Phone number of the pickup room" /&gt;<br />&nbsp;&lt;cfargument name="PickupRoom"&nbsp;&nbsp;type="string" &nbsp;required="No" default="" /&gt;<br />&nbsp;&lt;cfargument name="PickupFloor"&nbsp;&nbsp;type="string" &nbsp;required="No" default="" /&gt;<br />&nbsp;&lt;cfargument name="PickupLocation"&nbsp;type="string" &nbsp;required="No" default="" /&gt;<br />&nbsp;&lt;!--- Credit Card Billing - Leave Blank if not in use ---&gt; &nbsp;<br />&nbsp;&lt;cfargument name="CCNumber"&nbsp;&nbsp;&nbsp;type="string" required="No" default="" hint="Leave Blank if not in use" /&gt;<br />&nbsp;&lt;cfargument name="CCType"&nbsp;&nbsp;&nbsp;type="string" required="No" default="" hint="Leave Blank if not in use" /&gt;<br />&nbsp;&lt;cfargument name="CCExpirationDate"&nbsp;&nbsp;type="string" required="No" default="" hint="Leave Blank if not in use" /&gt;<br />&nbsp;&lt;cfargument name="CCSecurityCode"&nbsp;&nbsp;type="string" required="No" default="" hint="Leave Blank if not in use" /&gt;<br />&nbsp;&lt;cfargument name="CCAddress1"&nbsp;&nbsp;type="string" required="No" default="" hint="Leave Blank if not in use" /&gt;<br />&nbsp;&lt;cfargument name="CCAddress2"&nbsp;&nbsp;type="string" required="No" default="" hint="Leave Blank if not in use" /&gt;<br />&nbsp;&lt;cfargument name="CCAddress3"&nbsp;&nbsp;type="string" required="No" default="" hint="Leave Blank if not in use" /&gt;<br />&nbsp;&lt;cfargument name="CCCity"&nbsp;&nbsp;&nbsp;type="string" required="No" default="" hint="Leave Blank if not in use" /&gt; <br />&nbsp;&lt;cfargument name="CCState"&nbsp;&nbsp;&nbsp;type="string" required="No" default="" hint="Leave Blank if not in use" /&gt; <br />&nbsp;&lt;cfargument name="CCZIP"&nbsp;&nbsp;&nbsp;type="string" required="No" default="" hint="Leave Blank if not in use" /&gt; <br />&nbsp;&lt;cfargument name="CCCountry"&nbsp;&nbsp;type="string" required="No" default="US" hint="Leave Blank if not in use - ISO Standard 3166 Country Code" /&gt;<br />&nbsp;&lt;!--- Third Party Billing - Leave Blank if not in use ---&gt;<br />&nbsp;&lt;cfargument name="BillAccount"&nbsp;&nbsp;type="string" required="No" default="" &nbsp;&nbsp;hint="Leave Blank if not in use" /&gt;<br />&nbsp;&lt;cfargument name="BillZip"&nbsp;&nbsp;&nbsp;type="string" required="No" default="" &nbsp;&nbsp;hint="Leave Blank if not in use" /&gt;<br />&nbsp;&lt;cfargument name="BillCountry"&nbsp;&nbsp;type="string" required="No" default="US" &nbsp;hint="Leave Blank if not in use - ISO Standard 3166 Country Code" /&gt;<br />&nbsp;&lt;!--- UPS Access Settings ---&gt; <br />&nbsp;&lt;cfargument name="License"&nbsp;&nbsp;&nbsp;type="string" required="No" default="#application.UPSLicense#" &nbsp;&nbsp;hint="UPS License Key" /&gt; <br />&nbsp;&lt;cfargument name="Account"&nbsp;&nbsp;&nbsp;type="string" required="No" default="#application.AccountNumber#" &nbsp;hint="UPS Account ID" /&gt; <br />&nbsp;&lt;cfargument name="UserId"&nbsp;&nbsp;&nbsp;type="string" required="No" default="#application.UPSUserId#" &nbsp;&nbsp;hint="UPS UserName" /&gt;<br />&nbsp;&lt;cfargument name="Password"&nbsp;&nbsp;&nbsp;type="string" required="No" default="#application.UPSPassword#" &nbsp;hint="UPS Password" /&gt; <br />&nbsp;&lt;!--- Shipper Address&nbsp;&nbsp;&nbsp;&nbsp; ---&gt;<br />&nbsp;&lt;cfargument name="MyCompany"&nbsp;&nbsp;type="string" required="No" default="Ups Store" /&gt;<br />&nbsp;&lt;cfargument name="MyName"&nbsp;&nbsp;&nbsp;type="string" required="No" default="John Doe" /&gt;<br />&nbsp;&lt;cfargument name="MyAttention"&nbsp;&nbsp;type="string" required="No" default="" /&gt;<br />&nbsp;&lt;cfargument name="MyAddress1"&nbsp;&nbsp;type="string" required="No" default="518 Old Post Rd Ste 7" /&gt;<br />&nbsp;&lt;cfargument name="MyAddress2"&nbsp;&nbsp;type="string" required="No" default="" /&gt;<br />&nbsp;&lt;cfargument name="MyAddress3"&nbsp;&nbsp;type="string" required="No" default="" /&gt;<br />&nbsp;&lt;cfargument name="MyCity"&nbsp;&nbsp;&nbsp;type="string" required="No" default="Edison" /&gt;<br />&nbsp;&lt;cfargument name="MyState"&nbsp;&nbsp;&nbsp;type="string" required="No" default="NJ" /&gt;<br />&nbsp;&lt;cfargument name="MyZIP"&nbsp;&nbsp;&nbsp;type="string" required="No" default="08817" /&gt;<br />&nbsp;&lt;cfargument name="MyPhone"&nbsp;&nbsp;&nbsp;type="string" required="No" default="" /&gt;<br />&nbsp;&lt;cfargument name="MyEMailAddress"&nbsp;type="string" required="No" default="" /&gt;<br />&nbsp;&lt;cfargument name="MyCountry"&nbsp;&nbsp;type="string" required="No" default="US" hint="ISO Standard 3166 Country Code" /&gt;<br />&nbsp;&lt;!--- From Address&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ---&gt;<br />&nbsp;&lt;cfargument name="FromCompany"&nbsp;&nbsp;type="string" required="No" default="#arguments.MyCompany#" /&gt;<br />&nbsp;&lt;cfargument name="FromName"&nbsp;&nbsp;&nbsp;type="string" required="No" default="#arguments.MyName#" /&gt;<br />&nbsp;&lt;cfargument name="FromAttention"&nbsp;type="string" required="No" default="#arguments.MyAttention#" /&gt;<br />&nbsp;&lt;cfargument name="FromAddress1"&nbsp;&nbsp;type="string" required="No" default="#arguments.MyAddress1#" /&gt;<br />&nbsp;&lt;cfargument name="FromAddress2"&nbsp;&nbsp;type="string" required="No" default="#arguments.MyAddress2#" /&gt;<br />&nbsp;&lt;cfargument name="FromAddress3"&nbsp;&nbsp;type="string" required="No" default="#arguments.MyAddress3#" /&gt;<br />&nbsp;&lt;cfargument name="FromCity"&nbsp;&nbsp;&nbsp;type="string" required="No" default="#arguments.MyCity#" /&gt;<br />&nbsp;&lt;cfargument name="FromState"&nbsp;&nbsp;type="string" required="No" default="#arguments.MyState#" /&gt;<br />&nbsp;&lt;cfargument name="FromZIP"&nbsp;&nbsp;&nbsp;type="string" required="No" default="#arguments.MyZIP#" /&gt;<br />&nbsp;&lt;cfargument name="FromPhone"&nbsp;&nbsp;type="string" required="No" default="#arguments.MyPhone#" /&gt;<br />&nbsp;&lt;cfargument name="FromEMailAddress"&nbsp;type="string" required="No" default="#arguments.MyEMailAddress#" /&gt;<br />&nbsp;&lt;cfargument name="FromCountry"&nbsp;&nbsp;type="string" required="No" default="#arguments.MyCountry#" hint="ISO Standard 3166 Country Code" /&gt;<br />&nbsp;&lt;!--- Notification (From) Settings&nbsp;&nbsp;&nbsp; ---&gt;<br />&nbsp;&lt;cfargument name="NotifyFromEmail"&nbsp;&nbsp;type="string" required="No" default="" hint="From Email Address for Notifications" /&gt;<br />&nbsp;&lt;cfargument name="NotifyFromName"&nbsp;&nbsp;type="string" required="No" default="" hint="From Name for Notifications" /&gt;<br />&nbsp;&lt;cfargument name="UndeliEmail"&nbsp;&nbsp;&nbsp;type="string" required="No" default="" hint="Email Address to notify Undeliverable" /&gt;<br />&nbsp;&lt;!--- Shipment Notification&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ---&gt;<br />&nbsp;&lt;cfargument name="ShipNotifyEmail"&nbsp;&nbsp;type="string" required="No" default="" hint="Shipment Notification to Email" /&gt;<br />&nbsp;&lt;cfargument name="ShipNotifyMemo"&nbsp;&nbsp;type="string" required="No" default="" hint="Shipment Notification to Email Memo" /&gt;<br />&nbsp;&lt;cfargument name="ShipNotifySubject"&nbsp;type="string" required="No" default="" hint="Shipment Notification Email Subject" /&gt;<br />&nbsp;&lt;!--- Delivery Notification&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ---&gt;<br />&nbsp;&lt;cfargument name="DelivNotifyEmail"&nbsp;&nbsp;type="string" required="No" default="" hint="Delivery Notification to Email" /&gt;<br />&nbsp;&lt;cfargument name="DelivNotifyMemo"&nbsp;&nbsp;type="string" required="No" default="" hint="Delivery Notification Email Memo" /&gt;<br />&nbsp;&lt;cfargument name="DelivNotifySubject"&nbsp;type="string" required="No" default="" hint="Delivery Notification Email Subject" /&gt;<br />&nbsp;&lt;!--- Return Notification&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ---&gt;<br />&nbsp;&lt;cfargument name="RetnNotifyEmail"&nbsp;&nbsp;type="string" required="No" default="" hint="Return Notification to Email - Return Notification (valid for shipment with UPS 1-Attempt and UPS 3-Attempt Return Services)" /&gt;<br />&nbsp;&lt;cfargument name="RetnNotifyMemo"&nbsp;&nbsp;type="string" required="No" default="" hint="Return Notification Email Memo" /&gt;<br />&nbsp;&lt;cfargument name="RetnNotifySubject"&nbsp;type="string" required="No" default="" hint="Return Notification Email Subject" /&gt;<br />&nbsp;&lt;!--- Optional/General Settings&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ---&gt; <br />&nbsp;&lt;cfargument name="CurrencyCode"&nbsp;type="string" required="No" default="USD" &nbsp;hint="ISO Standard 4217 Currency Codes" /&gt;<br />&nbsp;&lt;cfargument name="comment"&nbsp;&nbsp;type="string" required="No" default="" /&gt;<br />&nbsp;&lt;cfargument name="validate"&nbsp;&nbsp;type="string" required="No" default="nonvalidate"&nbsp;hint="(nonvalidate/validate) validate shipping address" /&gt;<br />&nbsp;&lt;cfargument name="RefCode"&nbsp;&nbsp;type="string" required="No" default="" &nbsp;&nbsp;hint="Supplied by the customer. Can use for Tracking." /&gt;<br />&nbsp;&lt;cfargument name="RefValue"&nbsp;&nbsp;type="string" required="No" default="" &nbsp;&nbsp;hint="Supplied by the customer. Can use for Tracking." /&gt;<br />&nbsp;&lt;cfargument name="KeepLogs"&nbsp;&nbsp;type="string" required="No" default="Yes" &nbsp;hint="Save Log of XML Communication" /&gt;<br />&nbsp;&lt;cfargument name="OrderID"&nbsp;&nbsp;type="string" required="No" default="#CreateUUID()#" hint="Log files will created under OrderID" /&gt;</cf:code><br />Sample Call</p>
<p><cf:code id="codeblock" title="Code Block" class="codeblock">&lt;cfset ups = createObject('component','ups')&gt; <br />&lt;cfset createLabel = ups.shipping(<br />&nbsp;Company &nbsp;&nbsp;= 'UPS Store',<br />&nbsp;Name &nbsp;&nbsp;&nbsp;= 'Manager',<br />&nbsp;Address1&nbsp;&nbsp;= '5 HANOVER SQUARE',<br />&nbsp;City&nbsp;&nbsp;&nbsp;= 'NEW YORK',<br />&nbsp;State&nbsp;&nbsp;&nbsp;= 'NY',<br />&nbsp;ZIP&nbsp;&nbsp;&nbsp;&nbsp;= '10004',<br />&nbsp;Phone&nbsp;&nbsp;&nbsp;= '7188601338',<br />&nbsp;EMailAddress&nbsp;= <a href="mailto:'email@address.here'">'email@address.here'</a>,<br />&nbsp;<br />&nbsp;pkgType&nbsp;&nbsp;&nbsp;= '02',<br />&nbsp;pkgLength&nbsp;&nbsp;= '22',<br />&nbsp;pkgWidth&nbsp;&nbsp;= '20',<br />&nbsp;pkgHeight&nbsp;&nbsp;= '18',<br />&nbsp;pkgWeight&nbsp;&nbsp;= '6.1',<br />&nbsp;InsuranceValue&nbsp;= '1000',<br />&nbsp;<br />&nbsp;PickupDate&nbsp;&nbsp;= dateadd('d',3,now()),<br />&nbsp;PickupName&nbsp;&nbsp;= 'John Smith',<br />&nbsp;PickupPhone&nbsp;&nbsp;= '2345678920',<br />&nbsp;OrderID&nbsp;&nbsp;&nbsp;= 6<br />&nbsp;)&gt;<br />&lt;cfdump var="#createLabel#"&gt;<br />&lt;cfoutput&gt;&lt;img src="Log/Label/label#createLabel.TrackingNumber#.gif" /&gt;&lt;/cfoutput&gt;</cf:code></p>]]></description>
<category><![CDATA[Shipping API]]></category><category><![CDATA[ColdFusion]]></category> 
<pubDate>Mon, 14 May 2012 16:07:15</pubDate>
<guid>http://cflove.org/2010/12/ups-shipping-label-with-coldfusion.cfm</guid>
</item>

<item>
<title><![CDATA[Building and Running ColdFusion Web Server from Home]]></title>
<link>http://cflove.org/2010/12/how-to-build-and-run-a-webserver-from-home.cfm</link>
<description><![CDATA[<p>For the past couple of years, I have been hosting my personal/experimental/demo Web sites&nbsp;using an entry-level dedicated. A dedicated server, even if it is run on a Pentium D processer with&nbsp;2 GB memory, provides excellent freedom compared to shared-hosting. Freedom&nbsp;is seldom&nbsp;cheap, and this bit of freedom has been costing me between $125 to $175 per month. Even though my sites, including this blog, are not&nbsp;entirely vital and do not demand&nbsp;uninterrupted uptime, but some of the&nbsp;sites do&nbsp;receive significant traffic&nbsp;stream.<br /><br />Recently&nbsp;I&nbsp;began considering&nbsp;the idea of running my server from home, so&nbsp;a few weeks back, I took the initiative and followed through on my idea. Since then, my server has had&nbsp;100% <a href="http://mon.itor.us">up-time</a>, has run faster than the old dedicated server ever did,&nbsp;and&nbsp;sits conveniently right&nbsp;under my TV stand. Best of all, the new setup&nbsp;cost significantly less money. Here is a description of my setup.<br /><br /><strong>Internet Connection:</strong><br />A good internet connection is key to &ldquo;running your web server from home&rdquo;. I have been using <a href="http://www.optimum.com/online/index.jsp">Optimum Online</a> for the past five years or so, and I am extremely happy with their 10 Mbps download and 3Mbps upload speed. Even though, technically, I have a dynamic IP, my&nbsp;IP hasn&rsquo;t changed since day one. For hosting, however,&nbsp;I switched to the&nbsp;<a href="http://www.optimum.com/order/boost/index.jsp">Optimum Boost</a> package, which costs $10 more&nbsp;a month. For the extra cost, I receive 30Mbps for downloads and 5Mbps for&nbsp;uploads, but most importantly, I have&nbsp;port 80 and 25 open. Optimum also offers the option of&nbsp;101Mbps for&nbsp;downloads and 15Mbps uploads.&nbsp;That costs $55 more per month, and I don't need of that sort of speed. <br /><br /><strong>Router:</strong><br />A <a href="http://www.amazon.com/gp/product/B000BTL0OA?ie=UTF8&amp;tag=unprotectedth-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B000BTL0OA">Cisco-Linksys WRT54GL</a> Linux-compatible Router, which I had already&nbsp;been using for&nbsp;more than a year.&nbsp;I has&nbsp;<a href="http://www.dd-wrt.com/site/index">dd-wrt</a> firmware installed, whitch has been&nbsp;perfectly capable of handling my traffic so far. <br /><br /><strong>Hardware:</strong><br />Even though Dell offer&nbsp;fairly decent entry-level servers for less than $400, I decided to build my own server after I finished&nbsp;browsing <a href="http://www.microcenter.com/">MicroCenter </a>and Amazon.<br />- <a href="http://www.amazon.com/gp/product/B0030DL3FU?ie=UTF8&amp;tag=unprotectedth-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B0030DL3FU">Intel i5 650 3.20GHz Processer</a> : $140<br />- <a href="http://www.amazon.com/gp/product/B0031AK5CE?ie=UTF8&amp;tag=unprotectedth-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B0031AK5CE">ASUS P7H55-M Pro mATX Motherboard</a> : $85 <br />- <a href="http://www.amazon.com/gp/product/B00286SIFS?ie=UTF8&amp;tag=unprotectedth-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B00286SIFS">Apex DM-387 slimline - micro ATX Casing and power supply</a> : $50<br />- <a href="http://www.amazon.com/gp/product/B003ZDJ42O?ie=UTF8&amp;tag=unprotectedth-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B003ZDJ42O">Corsair XMS3 4 GB 1333MHz PC3-10666</a> : $52<br />- <a href="http://www.amazon.com/gp/product/B003SX0ORK?ie=UTF8&amp;tag=unprotectedth-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B003SX0ORK">Hitachi Deskstar 500GB 7,200 RPM SATA 3.0Gb/s</a> : $50<br />-- Total $377<br /><br /><strong>Backup:</strong><br />I already had a valid <a href="http://www.carbonite.com/raf/signup.aspx?RAFUSerUID=2287547&amp;utm_campaign=relemail&amp;utm_source=crbemail&amp;utm_medium=email">Carbonite backup</a> subscription (55$ a year), so I transferred it from the old server to the new one. Restoration was extremely easy. <a href="http://www.carbonite.com/raf/signup.aspx?RAFUSerUID=2287547&amp;utm_campaign=relemail&amp;utm_source=crbemail&amp;utm_medium=email">Carbonite</a> is good at backing up MS Sql database files, cfm, html, and so on, as well as PostgreSQL Dump files. However, now that I have physical access to my server, I will add a <a href="http://www.amazon.com/gp/product/B001A4HAFS?ie=UTF8&amp;tag=unprotectedth-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B001A4HAFS">Thermaltake BlacX Docking Station</a> ($40) and a&nbsp;<a href="http://www.amazon.com/gp/product/B002ZCXJZE?ie=UTF8&amp;tag=unprotectedth-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B002ZCXJZE">Western Digital 1.5 TB Caviar</a> ($60) backup drive. I may be able to backup my personal files on there as well.</p>
<p><strong>DDNS:</strong><br />Since I&rsquo;m on a dynamic IP, I need a DDNS service to redirect my domain names to the new server. NO-IP and dynDNS are the most popular ones, but they are also the most expensive. Instead, I found <a href="http://thatip.com/">thatip.com</a>, which costs just $10 per a year for 10 hostnames (practically 3 domain names), and <a href="http://dnspark.com/services/dnsHosting.php">dnspark.com</a> which cost $9 per domain per year. I divided my domains between these two services, and both work pretty well so far. I do like dnspark.com a bit better, because they offer a large DNS query quota per month.<br /><br /><strong>Software:</strong><br />With a two-year-old child and two jobs, I don&rsquo;t have time for Linux. So, for couple of days, I did a thorough search of eBay for an operating system. I finally found a relatively cheap Windows 2008 Standard, 64-bit license with the original disk. Yes, I was bit worried it may be fake, but I was able to install it, validate it, activate it, and update it, all with no problems.</p>
<p>I&rsquo;m still using a CF license from my old server, but as soon as I get some free time&ndash; hopefully during this holiday break &ndash;I will configure <a href="http://www.getrailo.org/">Railo</a>.<br /><br />For e-mail, I played around with&nbsp;<a href="http://www.mailenable.com/">mailEnable</a> and <a href="http://www.hmailserver.com/">hMailServer</a> finally deciding that hMailServer was the most suitable.<br /><br />Running a server from home is not as ideal as running your server in a data center, but datacenters aren&rsquo;t perfect either &ndash;unless the datacenter is <a href="http://www.rackspace.com">rackspace</a>. Well, perfection is expensive ($9240 a year?). If a rainstorm brings down the entire infrastructure of my neighborhood, and my server goes down for a day, I can live with that. How many times did power fail in NY during the last 5 years? Zero! In the meantime, I have the joy of running my own web server form my own living room.</p>
<div id="_mcePaste" class="mcePaste" style="position: absolute; width: 1px; height: 1px; overflow: hidden; top: 0px; left: -10000px;">﻿</div>]]></description>
<category><![CDATA[This and That]]></category> 
<pubDate>Mon, 14 May 2012 16:07:15</pubDate>
<guid>http://cflove.org/2010/12/how-to-build-and-run-a-webserver-from-home.cfm</guid>
</item>

<item>
<title><![CDATA[Kakapo : ColdFusion Exception Manager App]]></title>
<link>http://cflove.org/2010/11/coldfusion-error-handler.cfm</link>
<description><![CDATA[<p>No matter how intensively we test our applications, the majority of errors occur while our applications are live. If you have an exception handler set up in your application, it may tell you when an error is waiting to be fixed, but it also provides you little information about why and how the error occurred. If you don&rsquo;t have an expectation handler, you won&rsquo;t even be aware of the errors occurring in your website until one of the site&rsquo;s users lets you know. Either way, troubleshooting errors in complex applications can be extremely difficult, especially when you have little evidence of their causes. <br /><br /><strong>Kakapo is an enhanced ColdFusion Exception Manager</strong>, built using ColdFusion. When an error occurrs anywhere, and at anytime, in your website, <strong>Kakapo takes a panoramic snapshot of the error and its surroundings,&nbsp;imagine a&nbsp;CCTV camera recording a crime scene</strong> - and then it provides you with the detailed information you need to troubleshoot the easily and successfully.</p>
<p class="small"><strong>Features:</strong></p>
<ul>
<li><span style="color: #ff6600;"><strong>Record Errors</strong></span><br />When an error occurred in your website, Kakapo record it in <strong>familiar Robust ColdFusion Error Message </strong>interface.</li>
<li><span style="color: #ff6600;"><strong>Record Variables</strong></span><br />When an error occurs, not only Kakapo record error details, <strong>Kakapo take a snapshot of all Session, Cookie, Request, CGI, Form, URL and Variables </strong>providing you with every information you need for easy troubleshooting.</li>
<li><span style="color: #ff6600;"><strong>Notifies You</strong></span><br />Kakapo will email you when every time an error occurred in your application.</li>
<li><span style="color: #ff6600;"><strong>Set Custom Error Message</strong></span><br />Enter <strong>custom error message </strong>in to Kakapo and it will display that to users when an error occurs, instead standard ColdFusion error message.</li>
<li><span style="color: #ff6600;"><strong>Robust Error message for Developers</strong></span><br />Provide IP address(s) of development environment, Kakapo will <strong>display robust error messages to developers</strong>; even when robust error messaging is disabled in your shared hosting environment. And your users, they still see the friendly custom error message.</li>
<li><span style="color: #ff6600;"><strong>Organization</strong></span><br />Kakapo <strong>indentifies similar errors </strong>and groups incidence together, providing you with occurrence count, list of similar errors in other templates or other errors in the same template. Also it let you color code errors for better organization.</li>
</ul>
<p class="small"><strong>Requirements:</strong></p>
<ul>
<li>ColdFusion 7/8/9 or Railo&nbsp;(ColdFusion 6.1 testing pending)</li>
<li>Working DSN to mySQL/MSSQL or PostgreSQL database (Kakapo Uses only a single table)</li>
<li>CFFILE read,write and delete access</li>
</ul>
<p><strong class="small">Installation</strong><br />Kakapo is <a href="http://cflove.org/examples/kakapo/install/">extremely easy to setup</a>. <br />Download the zip file at the end of the page. Unzip it into your website root, browse to the folder and then&nbsp;follow the on screen instructions. <strong>Don&rsquo;t forget to add Kakapo to your Application.cfc or cfm file at the end of the setup</strong>.</p>
<p class="small"><strong>History</strong></p>
<ul>
<li><strong>Current Version Beta 0.36</strong></li>
<li>09/27/2011 (Installation)&nbsp; Hot fix in creating log folder (If you keep on getting &ldquo;log file unavailable&rdquo; notice, please use this installation fix)</li>
<li>09/25/2011 Beta 0.36<br />09/25/2011 (kakapo.cfm) Email link error fixed (Thanks Srinivas Tumma)</li>
<li>09/22/2011 Beta 0.35<br />09/22/2011 (Administrator) Interface Update.<br />07/08/2011 (Installation) Bug fix for pre-MX.</li>
<li>07/08/2011 (Administrator) Bug fix on Setting Update Page.<br />07/08/2011 (Installation) Bug fix for PostgreSQL.</li>
<li>10/04/2011 Beta 0.33<br />10/04/2011 (Administrator) Bug fix on Page Navigation.</li>
<li>10/04/2011 Beta 0.32<br />10/04/2011 (Administrator) Minor Bug fix on record Delete.</li>
<li>28/03/2011 Beta 0.31<br />07/03/2011 (Kakapo.cfm) Bug fix on catching multiple expectations in single page.</li>
<li>15/03/2011 Beta 0.30<br />07/03/2011 (Thanks Ed Lamp for this update)<br />(Kakapo.cfm) Now capable of including inside &lt;cfcatch&gt;&lt;/cfcatch&gt; block and record &lt;try&gt;&lt;cfcatch&gt; events.<br />eg: &lt;cfcatch&gt;&lt;cfinclude template="kakapo/kakapo.cfm"&gt;&lt;/cfcatch&gt;<br />SQL 'where clue' recorded and SQL error display improved<br />(errormsg.cfm) SQL error display improved<br />(act_settings.cfm) Extra line space error improvement</li>
<li>24/12/2010 Beta 0.13&nbsp;<br />(Instllation Page_2.cfm) Extra line break bug amended<br />(act_settings.cfm) Extra line break bug amended<br />(Kakapo.cfm) CF7 and earilyer, Bug fixed. cfwddx seems to hang the server on xml data. safety function added.</li>
<li>18/01/2011<br />(Instllation Page_1.cfm) Improvments for Railo<br />(Instllation Page_3.cfm) DSN Validation added</li>
<li>28/12/2010<br />(Instllation Page_1.cfm) Improvments for Linux.<br />(Instllation Page_2.cfm) Bug fixes on Linux.<br />(Instllation Page_5.cfm) Message added and directory delete function disabled for Linux.<br />(qry_markAsRead.cfm) Deferent Version of MySQL handle bit fields deferently. &lt;cfqueryPARAM&gt; to rescue. <br />(kakapo.cfm) folder path format changed to be compatible with linux.</li>
<li>25/12/2010<br /><em>(Instllation Page_1.cfm</em>) CGI variables changed to compatible with Railo.<br />ID attributes to input fields. Railo does not add ID automatically in to cfinput fields.<br /><em>(kakapo.cfm)</em> Railo moved down in to CF7 Level. Railo cfwddx failed to encode XML, just like CF7. <br /><em>(DSP_This.cfm)</em> Jquery code added to mimic coldfusion cfdump for railo cfdump. further updates requireds. <strong></strong></li>
<li>24/12/2010 Beta 0.12&nbsp;<br /><em>(Dsp_This.cfm) </em>Validate WDDX before convert to CFM.&nbsp;&nbsp;<br /><em>(DSP_Settings.cfm)</em> Displays Current IP Address.<br /><em>(kakapo.cfm)</em> Email Notification Moved to none-developer IP set. Developers wont get email notifications on errors generated by them. (<span style="text-decoration: underline;">Reduces repeating error notifications</span>)<br />"IP address list" label updated.</li>
<li>23/12/2010 Beta 0.11<br /><em>(DSP_Settings.cfm)</em> New Version Check Added</li>
<li>22/12/2010 Beta 0.01</li>
<li><strong><a href="http://cflove.org/examples/kakapo/install/">Installation&nbsp;Demo</a></strong> (Demo installation will not be deleted automatically)</li>
<li><strong><a href="http://cflove.org/examples/kakapo/" target="_blank">Administrator Demo</a></strong></li>
</ul>
<div id="_mcePaste" class="mcePaste" style="position: absolute; width: 1px; height: 1px; overflow: hidden; top: 0px; left: -10000px;">&nbsp;</div>
<p>Kakapo is named after a beautiful, critically-endangered, parrot species from New Zeeland &ndash; <a href="http://en.wikipedia.org/wiki/Kakapo">Kakapo</a> , or <em>Strigops habroptila</em>. <a href="http://www.youtube.com/watch?v=WbQgu0ilg8U">Learn More</a>...</p>]]></description>
<category><![CDATA[Railo]]></category><category><![CDATA[ColdFusion]]></category> 
<pubDate>Mon, 14 May 2012 16:07:15</pubDate>
<guid>http://cflove.org/2010/11/coldfusion-error-handler.cfm</guid>
</item>

<item>
<title><![CDATA[An Unofficial ColdFusion Developer Salary Survey]]></title>
<link>http://cflove.org/2010/11/unofficial-coldfusion-developer-salary-survey.cfm</link>
<description><![CDATA[<p>Do you know the present salary rate for ColdFusion developers?</p>
<p>Once there was an <em>Unofficial ColdFusion Developer Salary Survey</em> page somewhere on the net. It was very handy the few times I needed it. I went looking for it today and discovered that the page is dead. I turned to dice.com and monster.com to find current ColdFusion developer salary information, and the pay, according to those sites, varies from minimum wage to more than $125,000 per year. Most of job postings are careful not to mention salary at all, while others posts offer rates for senior developers that are lower than the rates offered for entry level positions. Very confusing. I think it would be immensely useful to all of us if we had a better understanding of the market rate for ColdFusion developers.</p>
<p>I have created a new Unofficial ColdFusion Developer Salary Survey page. All you have to do is enter your current figures, how much you think you are really worth, and then hit the Enter key.</p>
<p></p>
<div id="_mcePaste" class="mcePaste" style="position: absolute; width: 1px; height: 1px; overflow: hidden; top: 0px; left: -10000px;"></div>]]></description>
<category><![CDATA[ColdFusion]]></category> 
<pubDate>Mon, 14 May 2012 16:07:15</pubDate>
<guid>http://cflove.org/2010/11/unofficial-coldfusion-developer-salary-survey.cfm</guid>
</item>

<item>
<title><![CDATA[Railo vs ColdFusion vs We are the CF Developers]]></title>
<link>http://cflove.org/2010/10/can-railo-replace-coldfusion-today.cfm</link>
<description><![CDATA[<p>In my previous post, &ldquo;<a href="http://cflove.org/2010/10/can-coldfusion-survive-under-microsoft.cfm">Can ColdFusion Survive Under Microsoft?</a>&rdquo;, <em>a CF fan </em>made a good point about Railo. He wrote &ldquo;This is the right time to make Railo more popularise...by telling Railo is nothing other than ColdFusion and is FREE&rdquo;.&nbsp;I couldn&rsquo;t agree more! If Railo is strong, we don&rsquo;t have to be concerned about what we, as CF Developers, will be doing in between Olympics.</p>
<p>I can&rsquo;t remember exactly when I started using ColdFusion (or Cold Fusion, as we used to say those days), but I do remember I was listening to <a href="http://www.youtube.com/watch?v=ppf6mPM919I">Third Eye Blind</a> on the radio while coding in CF. It was on my 133Mz Intel Inside with 4 Gig drive, hooked to the net with a 33.6kbps modem. The entire time I was screaming, &ldquo;Holy mackerel! This is Sweet!, So simple! I&rsquo;m in love!&rdquo; I haven&rsquo;t touched Perl since then, and I haven&rsquo;t been out of work a single day. ASP, PHP, and all the others made me run back home to CFM the first chance I got.</p>
<p>Technology got complicated in between Alanis Morissette and Lady Gaga. Web Services, Ajax, Web 2.0&ndash;&ndash;we can&rsquo;t expect ColdFusion to maintain the same level of simplicity, however, it still maintains an extraordinary amount of clarity.</p>
<p>I teach Web Development in my free time, and I introduce ColdFusion to my students. I like to see how fascinated they become with &lt;cfloop&gt; and then compare that with their reaction to JavaScript. But what intrigues me most is that they treat the set up of ColdFusion on their computers as a simple formality&ndash;&ndash;They don&rsquo;t even take notes!</p>
<p>We are humans before we are programmers. We do not fall in love with functions. We fall in love with characters. ColdFusion and Railo are two different characters that happen to do the exact same thing, somewhat like two MTA bus drivers or two pharmacists. When I installed Railo the first time, I didn&rsquo;t exclaim, &ldquo;How simple!&rdquo; Instead, I cried, &ldquo;Help!&rdquo; We buy iPhones because of how they look&ndash;&ndash;we fall in love because of curls, dimples, or lovely smiles.</p>
<p>As seasoned ColdFusion developers, we seem to be fascinated by what&rsquo;s under the hood of Railo. Any HTML developer/designer is a pupa that could turn in to beautiful ColdFusion developer, a common PHP developer, or something else entirely. It&rsquo;s equally important, if not more so, that Railo focus on new developers and be extremely friendly with them. They also need to provide powerful functions to those of us who are seasoned and boring developers. That&rsquo;s a fine characteristic that ColdFusion has had since childhood. Railo needs to be more like that. And soon.</p>]]></description>
<category><![CDATA[This and That]]></category><category><![CDATA[ColdFusion]]></category> 
<pubDate>Mon, 14 May 2012 16:07:15</pubDate>
<guid>http://cflove.org/2010/10/can-railo-replace-coldfusion-today.cfm</guid>
</item>

<item>
<title><![CDATA[Can ColdFusion Survive Under Microsoft?]]></title>
<link>http://cflove.org/2010/10/can-coldfusion-survive-under-microsoft.cfm</link>
<description><![CDATA[<p><a href="http://gigaom.com/2010/10/07/possible-microsoft-adobe-acquisition-talks-set-tongues-wagging/?go_commented=1">Speculation goes, as it usually does, Microsoft is thinking of buying Adobe outright</a>. We know Adobe is in a bad shape. And maybe Adobe likes the idea of being under Microsoft&rsquo;s roof. Personally, I care about neither Microsoft nor Adobe. I do care about ColdFusion. I care about ColdFusion because ColdFusion is my life&ndash;&ndash;I make my living from it, and I wouldn&rsquo;t want any harm to come to that.</p>
<p>Macromedia treated ColdFusion warmly and genuinely&ndash;&ndash;that is, until Shantanu Narayen bullied Macromedia with numerous lawsuits in order to force a merger, as some allege. One can say with confidence that ColdFusion was further developed under Adobe&rsquo;s roof, but I always had a the feeling that ColdFusion was a sort of Cinderella in the house of Adobe. Whenever I looked into Adobe documentation or examples&ndash;&ndash;the inDesign server, for instance&ndash;&ndash;there were no ColdFusion examples. But there were php and .net examples, all right. Humans seek patterns and draw conclusions&ndash;&ndash;that&rsquo;s what I was doing.</p>
<p>I have a picture in my mind: Microsoft sends FoxPro into a broom closet under the stairs, where all the spiders and bugs take daily refuge. It&rsquo;s cold and dark, and Microsoft keeps FoxPro there until cold hands extract its vital organs and implant them into MS Access and MS Exchange. FoxPro died alone. There are no drums, no bagpipes.</p>
<p>If ColdFusion goes under Microsoft&rsquo;s control, it is quite possible ColdFusion will get to have long conversations with FoxPro and the many others who share the same broom closet. Railo may able to keep ColdFusion developers alive for awhile&ndash;&ndash;if Microsoft allows Railo to stay alive. But without enterprise level support and confidence, Railo/ColdFusion will become like PostgreSQL&ndash;&ndash;brilliantly capable, but uneventful and uninteresting. BlueDragon may survive with their current cliental, and it even may able to receive a few Adobe ColdFusion Clients too, but Microsoft will absorb the majority into their own platforms.</p>
<p>Is this the correct time for ColdFusion developers to seriously invest in those horrible Microsoft Exams?</p>]]></description>
<category><![CDATA[This and That]]></category><category><![CDATA[ColdFusion]]></category> 
<pubDate>Mon, 14 May 2012 16:07:15</pubDate>
<guid>http://cflove.org/2010/10/can-coldfusion-survive-under-microsoft.cfm</guid>
</item>

<item>
<title><![CDATA[UPS CityValidation with ColdFusion]]></title>
<link>http://cflove.org/2010/10/ups-cityvalidation-with-coldfusion.cfm</link>
<description><![CDATA[<p>UPS CityValidation is function that differs quite a bit from the <a href="http://cflove.org/2010/10/ups-address-verification-with-coldfusion.cfm">UPS Address Validation function</a>. UPS CityValidation takes two arguments, the City and the State, and provides you with the highest and lowest ZIP Code in that area. It can also identify misspellings or State/City mix-ups and suggest corrections. This function is a simple ColdFusion function that calls the UPS city validation API and fetches the results.<br /><br />Just like the&nbsp;<a href="http://cflove.org/2010/10/ups-address-verification-with-coldfusion.cfm">UPS Address Verification function</a>, you need an UPS API access license to use the UPS CityValidation function. <a href="https://www.ups.com/one-to-one/register?sysid=myups&amp;lang=en&amp;langc=US&amp;loc=en_US&amp;returnto=https%3A%2F%2Fwww.ups.com%2Fupsdeveloperkit%3Floc%3Den_US%26rt1">You can register for that in here</a>. I have set those details in my application file as application.UPSLicense, application.UPSUserId and application.UPSPassword.<br /><br />Here is the function:</p>
<p><cf:code id="codeblock" title="Code Block" class="codeblock">&lt;cffunction name="cityValidation" access="remote" returntype="struct" output="true"&gt;<br />&nbsp;&lt;cfargument name="city" &nbsp;&nbsp;type="string" required="yes"&gt;<br />&nbsp;&lt;cfargument name="state" &nbsp;&nbsp;type="string" required="yes"&gt;<br />&nbsp;&lt;cfargument name="License" &nbsp;&nbsp;type="string" required="No" &nbsp;default="#application.UPSLicense#"&gt;<br />&nbsp;&lt;cfargument name="UserId" &nbsp;&nbsp;type="string" required="No" &nbsp;default="#application.UPSUserId#"&gt;<br />&nbsp;&lt;cfargument name="Password" &nbsp;type="string" required="No" &nbsp;default="#application.UPSPassword#"&gt;<br />&nbsp;<br />&nbsp;&lt;cfset var local&nbsp;= StructNew()&gt;<br />&nbsp;<br />&nbsp;&lt;cfsavecontent variable="local.reqxml"&gt;&lt;cfoutput&gt;<br />&nbsp;&nbsp;&lt;?xml version="1.0"?&gt;<br />&nbsp;&nbsp;&lt;AccessRequest xml:lang="en-US"&gt;<br />&nbsp;&nbsp;&nbsp; &lt;AccessLicenseNumber&gt;#arguments.License#&lt;/AccessLicenseNumber&gt;<br />&nbsp;&nbsp;&nbsp; &lt;UserId&gt;#arguments.UserId#&lt;/UserId&gt;<br />&nbsp;&nbsp;&nbsp; &lt;Password&gt;#arguments.Password#&lt;/Password&gt;<br />&nbsp;&nbsp;&lt;/AccessRequest&gt;<br />&nbsp;&nbsp;&lt;?xml version="1.0"?&gt;<br />&nbsp;&nbsp;&lt;AddressValidationRequest xml:lang="en-US"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;Request&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;TransactionReference&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;CustomerContext&gt;Customer Data&lt;/CustomerContext&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;XpciVersion&gt;1.0001&lt;/XpciVersion&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;/TransactionReference&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;RequestAction&gt;AV&lt;/RequestAction&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Request&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;Address&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;City&gt;#arguments.city#&lt;/City&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;StateProvinceCode&gt;#arguments.state#&lt;/StateProvinceCode&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Address&gt;<br />&nbsp;&nbsp;&lt;/AddressValidationRequest&gt;<br />&nbsp;&lt;/cfoutput&gt;&lt;/cfsavecontent&gt; <br />&nbsp;&lt;cfhttp url="<a href="https://wwwcie.ups.com/ups.app/xml/AV">https://wwwcie.ups.com/ups.app/xml/AV</a>" method="post" result="result"&gt;<br />&nbsp;&nbsp;&lt;cfhttpparam type="xml" name="data" value="#local.reqxml#"&gt;<br />&nbsp;&lt;/cfhttp&gt;<br />&nbsp;<br />&nbsp;&lt;cfset local.results = XMLParse(result.Filecontent)&gt; <br />&nbsp;&lt;cfset local.out&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= StructNew()&gt;<br />&nbsp;&lt;cfset local.out.validation &nbsp;&nbsp;&nbsp;= "True"&gt;<br />&nbsp;&lt;cfset local.out.city&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= ""&gt;<br />&nbsp;&lt;cfset local.out.state&nbsp;&nbsp;&nbsp;&nbsp;= ""&gt;<br />&nbsp;&lt;cfset local.out.PostalCodeLowEnd&nbsp;&nbsp;= ""&gt;<br />&nbsp;&lt;cfset local.out.PostalCodeHighEnd&nbsp;= ""&gt;<br />&nbsp;<br />&nbsp;&lt;cfif not IsDefined('local.results.AddressValidationResponse.AddressValidationResult')&gt;<br />&nbsp;&nbsp;&lt;cfset local.out.validation&nbsp;= "False"&gt;<br />&nbsp;&lt;cfelse&gt;&nbsp;<br />&nbsp;&nbsp;&lt;cfif (not local.results.AddressValidationResponse.AddressValidationResult.Address.City.XmlText eq trim(arguments.city)) or<br />&nbsp;&nbsp;(not local.results.AddressValidationResponse.AddressValidationResult.Address.StateProvinceCode.XmlText eq trim(arguments.state))&gt;<br />&nbsp;&nbsp;&nbsp;&lt;cfset local.out.validation&nbsp;= "Corrected"&gt;<br />&nbsp;&nbsp;&nbsp;&lt;cfset local.out.city&nbsp;&nbsp;&nbsp;= local.results.AddressValidationResponse.AddressValidationResult.Address.City.XmlText&gt;<br />&nbsp;&nbsp;&nbsp;&lt;cfset local.out.state&nbsp;&nbsp;= local.results.AddressValidationResponse.AddressValidationResult.Address.StateProvinceCode.XmlText&gt;<br />&nbsp;&nbsp;&lt;/cfif&gt;<br />&nbsp;&nbsp;&nbsp;&lt;cfset local.out.PostalCodeLowEnd&nbsp;&nbsp;= local.results.AddressValidationResponse.AddressValidationResult.PostalCodeLowEnd.XmlText&gt;<br />&nbsp;&nbsp;&nbsp;&lt;cfset local.out.PostalCodeHighEnd&nbsp;= local.results.AddressValidationResponse.AddressValidationResult.PostalCodeHighEnd.XmlText&gt;<br />&nbsp;&lt;/cfif&gt; <br />&lt;cfreturn local.out&gt;<br />&lt;/cffunction&gt;</cf:code><br />If the City and State you have provided is correct, it will return VALIDATION = TRUE and ZIP Code Values. <br />For example,<br /><em>cityValidation('Bronx', 'NY')</em><br />returns this:<br /><img src="http://cflove.org/warehouse/UserImages/ups_city_good.png" alt="" /><br /><br />If UPS fixed your city or state, the value for the VALIDATION will be "CORRECTED," <br />as I&rsquo;ve show with the wrong State And City combination I provided here:<br /><em>cityValidation('Bronx', 'NJ')</em><br /><br /><img src="http://cflove.org/warehouse/UserImages/ups_city_corrected.png" alt="" /><br /><br />If the validation failed altogether, as with the fake city I provided here:<br /><em>cityValidation('FAKE', 'NJ')</em><br />It will return VALIDATION = False<br /><br /><img src="http://cflove.org/warehouse/UserImages/ups_city_wrong.png" alt="" /></p>]]></description>
<category><![CDATA[Shipping API]]></category><category><![CDATA[ColdFusion]]></category> 
<pubDate>Mon, 14 May 2012 16:07:15</pubDate>
<guid>http://cflove.org/2010/10/ups-cityvalidation-with-coldfusion.cfm</guid>
</item>

<item>
<title><![CDATA[UPS Address Verification with ColdFusion]]></title>
<link>http://cflove.org/2010/10/ups-address-verification-with-coldfusion.cfm</link>
<description><![CDATA[<p>UPS API documentation sucks! I just have to say that out loud before I start this post.</p>
<p>This ColdFusion function will connect with the UPS Address Verification API. To use it, you must first have a UPS license number, a username, and a password for UPS shipping API. <a href="https://www.ups.com/one-to-one/register?sysid=myups&amp;lang=en&amp;langc=US&amp;loc=en_US&amp;returnto=https%3A%2F%2Fwww.ups.com%2Fupsdeveloperkit%3Floc%3Den_US%26rt1">You can&nbsp;get that by registering in here</a>. This is a simple Function that performs a simple task. Just fill in the address, city, state, zip, and country, and the function will tell you whether the address is correct. If it&rsquo;s not, the function may suggest a correct address. UPS API login details are shown in my application file as application.UPSLicense, application.UPSUserId and application.UPSPassword.</p>
<p>Here is the function first:</p>
<p><cf:code id="codeblock" title="Code Block" class="codeblock">&lt;cffunction name="AddressVerification" access="remote" returntype="struct" output="true"&gt;<br />&nbsp;&lt;cfargument name="address" &nbsp;&nbsp;type="string" required="yes"&gt;<br />&nbsp;&lt;cfargument name="city" &nbsp;&nbsp;type="string" required="yes"&gt;<br />&nbsp;&lt;cfargument name="state" &nbsp;&nbsp;type="string" required="yes"&gt;<br />&nbsp;&lt;cfargument name="zip" &nbsp;&nbsp;&nbsp;type="string" required="yes"&gt;<br />&nbsp;&lt;cfargument name="country" &nbsp;&nbsp;type="string" required="No" &nbsp;default="US"&gt;<br />&nbsp;&lt;cfargument name="License" &nbsp;&nbsp;type="string" required="No" &nbsp;default="#application.UPSLicense#"&gt;<br />&nbsp;&lt;cfargument name="UserId" &nbsp;&nbsp;type="string" required="No" &nbsp;default="#application.UPSUserId#"&gt;<br />&nbsp;&lt;cfargument name="Password" &nbsp;type="string" required="No" &nbsp;default="#application.UPSPassword#"&gt;<br />&nbsp;&lt;cfargument name="Request" &nbsp;&nbsp;type="string" required="No" &nbsp;default="3"&gt;<br />&nbsp;<br />&nbsp;&lt;cfset var local&nbsp;= StructNew()&gt;<br />&nbsp;<br />&nbsp;&lt;cfsavecontent variable="local.reqxml"&gt;&lt;cfoutput&gt;<br />&nbsp;&nbsp;&lt;?xml version="1.0"?&gt;<br />&nbsp;&nbsp;&lt;AccessRequest xml:lang="en-US"&gt;<br />&nbsp;&nbsp;&nbsp; &lt;AccessLicenseNumber&gt;#arguments.License#&lt;/AccessLicenseNumber&gt;<br />&nbsp;&nbsp;&nbsp; &lt;UserId&gt;#arguments.UserId#&lt;/UserId&gt;<br />&nbsp;&nbsp;&nbsp; &lt;Password&gt;#arguments.Password#&lt;/Password&gt;<br />&nbsp;&nbsp;&lt;/AccessRequest&gt;<br />&nbsp;&nbsp;&lt;?xml version="1.0"?&gt;<br />&nbsp;&nbsp;&lt;AddressValidationRequest xml:lang="en-US"&gt;<br />&nbsp;&nbsp;&nbsp; &lt;Request&gt;<br />&nbsp;&nbsp;&nbsp;&lt;TransactionReference&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;CustomerContext&gt;Address Varification&lt;/CustomerContext&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;XpciVersion&gt;1.0&lt;/XpciVersion&gt;<br />&nbsp;&nbsp;&nbsp;&lt;/TransactionReference&gt;<br />&nbsp;&nbsp;&nbsp;&lt;RequestAction&gt;XAV&lt;/RequestAction&gt;<br />&nbsp;&nbsp;&nbsp;&lt;RequestOption&gt;#arguments.Request#&lt;/RequestOption&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/Request&gt;<br />&nbsp;&nbsp;&nbsp; &lt;AddressKeyFormat&gt;<br />&nbsp;&nbsp;&nbsp;&lt;AddressLine&gt;#arguments.address#&lt;/AddressLine&gt;&nbsp;<br />&nbsp;&nbsp;&nbsp;&lt;PoliticalDivision2&gt;#arguments.city#&lt;/PoliticalDivision2&gt;<br />&nbsp;&nbsp;&nbsp;&lt;PoliticalDivision1&gt;#arguments.state#&lt;/PoliticalDivision1&gt;<br />&nbsp;&nbsp;&nbsp;&lt;PostcodePrimaryLow&gt;#arguments.zip#&lt;/PostcodePrimaryLow&gt;<br />&nbsp;&nbsp;&nbsp;&lt;CountryCode&gt;#arguments.country#&lt;/CountryCode&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/AddressKeyFormat&gt;<br />&nbsp;&nbsp;&lt;/AddressValidationRequest&gt;<br />&nbsp;&lt;/cfoutput&gt;&lt;/cfsavecontent&gt; <br />&nbsp;&lt;cfset local.out&nbsp;&nbsp;&nbsp;&nbsp;= StructNew()&gt;<br />&nbsp;&lt;cfset local.out.validation &nbsp;= ""&gt;<br />&nbsp;&lt;cfset local.out.address&nbsp;&nbsp;= ""&gt;<br />&nbsp;&lt;cfset local.out.city&nbsp;&nbsp;&nbsp;= ""&gt;<br />&nbsp;&lt;cfset local.out.state&nbsp;&nbsp;&nbsp;= ""&gt;<br />&nbsp;&lt;cfset local.out.zip&nbsp;&nbsp;&nbsp;= ""&gt;<br />&nbsp;&lt;cfset local.out.country&nbsp;&nbsp;= ""&gt;<br />&nbsp;<br />&nbsp;&lt;cftry&gt;<br />&nbsp;&lt;cfhttp url="<a href="https://wwwcie.ups.com/ups.app/xml/XAV">https://wwwcie.ups.com/ups.app/xml/XAV</a>" method="post" result="result"&gt;<br />&nbsp;&nbsp;&lt;cfhttpparam type="xml" name="data" value="#local.reqxml#"&gt;<br />&nbsp;&lt;/cfhttp&gt;<br />&nbsp;&lt;cfset local.results = XMLParse(result.Filecontent)&gt;<br />&nbsp;&nbsp;&lt;cfcatch&gt;<br />&nbsp;&nbsp;&nbsp;&lt;cfset local.out.validation&nbsp;&nbsp;&nbsp;= "False"&gt;<br />&nbsp;&nbsp;&nbsp;&lt;cfset local.out.type&nbsp;&nbsp;&nbsp;&nbsp;= "Failure"&gt;<br />&nbsp;&nbsp;&nbsp;&lt;cfset local.out.ErrorDescription&nbsp;= "Connection Failure"&gt;<br />&nbsp;&nbsp;&lt;/cfcatch&gt;<br />&nbsp;&lt;/cftry&gt;<br />&nbsp;<br />&nbsp;&lt;cfif IsDefined('local.results.AddressValidationResponse.AddressClassification.Description.XmlText')&gt;<br />&nbsp;&nbsp;&lt;cfset local.out.type&nbsp;&nbsp;= local.results.AddressValidationResponse.AddressClassification.Description.XmlText&gt;<br />&nbsp;&nbsp;&lt;cfif not IsDefined('local.results.AddressValidationResponse.AddressKeyFormat')&gt;<br />&nbsp;&nbsp;&nbsp;&lt;cfset local.out.validation&nbsp;= "False"&gt;<br />&nbsp;&nbsp;&lt;cfelse&gt;&nbsp;<br />&nbsp;&nbsp;&nbsp;&lt;cfset local.out.validation = "True"&gt;<br />&nbsp;&nbsp;&nbsp;&lt;cfif not local.results.AddressValidationResponse.AddressKeyFormat.AddressLine.XmlText eq trim(arguments.address) or<br />&nbsp;&nbsp;&nbsp;not local.results.AddressValidationResponse.AddressKeyFormat.PoliticalDivision2.XmlText eq trim(arguments.city) or<br />&nbsp;&nbsp;&nbsp;not local.results.AddressValidationResponse.AddressKeyFormat.PoliticalDivision1.XmlText eq trim(arguments.state) or<br />&nbsp;&nbsp;&nbsp;not local.results.AddressValidationResponse.AddressKeyFormat.PostcodePrimaryLow.XmlText eq trim(listfirst(arguments.zip,'-'))&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfif IsDefined('local.results.AddressValidationResponse.AddressKeyFormat.AddressLine.XmlText')&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset local.out.address&nbsp;= local.results.AddressValidationResponse.AddressKeyFormat.AddressLine.XmlText&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfif&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfif IsDefined('local.results.AddressValidationResponse.AddressKeyFormat.PoliticalDivision2.XmlText')&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset local.out.city&nbsp;&nbsp;= local.results.AddressValidationResponse.AddressKeyFormat.PoliticalDivision2.XmlText&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfif&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfif IsDefined('local.results.AddressValidationResponse.AddressKeyFormat.PoliticalDivision1.XmlText')&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset local.out.state&nbsp;&nbsp;= local.results.AddressValidationResponse.AddressKeyFormat.PoliticalDivision1.XmlText&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfif&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfif IsDefined('local.results.AddressValidationResponse.AddressKeyFormat.PostcodePrimaryLow.XmlText')&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset local.out.zip&nbsp;&nbsp;= local.results.AddressValidationResponse.AddressKeyFormat.PostcodePrimaryLow.XmlText&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfif&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfif IsDefined('local.results.AddressValidationResponse.AddressKeyFormat.PostcodePrimaryLow.XmlText')&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset local.out.zip&nbsp;&nbsp;= local.results.AddressValidationResponse.AddressKeyFormat.PostcodePrimaryLow.XmlText&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfif IsDefined('local.results.AddressValidationResponse.AddressKeyFormat.PostcodeExtendedLow.XmlText')&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset local.out.zip&nbsp;= '#local.results.AddressValidationResponse.AddressKeyFormat.PostcodePrimaryLow.XmlText#-#local.results.AddressValidationResponse.AddressKeyFormat.PostcodeExtendedLow.XmlText#'&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfif&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfif&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfif IsDefined('local.results.AddressValidationResponse.AddressKeyFormat.AddressLine.XmlText')&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset local.out.country&nbsp;= local.results.AddressValidationResponse.AddressKeyFormat.CountryCode.XmlText&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfif&gt;<br />&nbsp;&nbsp;&nbsp;&lt;/cfif&gt;<br />&nbsp;&nbsp;&lt;/cfif&gt; <br />&nbsp;&lt;cfelse&gt;<br />&nbsp;&nbsp;&lt;cfset local.out.validation &nbsp;&nbsp;= "False"&gt;<br />&nbsp;&nbsp;&lt;cfset local.out.type&nbsp;&nbsp;&nbsp;&nbsp;= "Failure"&gt;<br />&nbsp;&nbsp;&lt;cfif IsDefined('local.results.AddressValidationResponse.Response.Error.ErrorDescription.XmlText')&gt;<br />&nbsp;&nbsp;&nbsp;&lt;cfset local.out.ErrorDescription&nbsp;= local.results.AddressValidationResponse.Response.Error.ErrorDescription.XmlText&gt;<br />&nbsp;&nbsp;&lt;cfelse&gt;<br />&nbsp;&nbsp;&nbsp;&lt;cfset local.out.ErrorDescription&nbsp;= ""&gt;<br />&nbsp;&nbsp;&lt;/cfif&gt;<br />&nbsp;&lt;/cfif&gt;<br />&nbsp;<br />&nbsp;&lt;cfreturn local.out&gt;<br />&lt;/cffunction&gt;</cf:code></p>
<p>Here is a bit more information about the result structure.</p>
<p>This is what you get if the address you provided is correct, i.e. it was verified successfully. Here is my correct example: <br /><em>AddressVerification('118A FULTON ST','NEW YORK', 'NY', '10038'), </em><br />It returns the TYPE of address (Commercial or Resident), VALIDATION = TRUE, and the other fields remain empty.<br /><br /><img src="http://cflove.org/warehouse/UserImages/ups_correct.png" alt="" /><br /><br />If the address is wrong, as with my mistyped and ZIP Code missing address here: <br /><em>AddressVerification('118A FaLTON ST','NEW YORK', 'NY', ')</em><br />UPS may return a suggested address.<br /><br /><img src="http://cflove.org/warehouse/UserImages/ups_corrected.png" alt="" /><br /><br />If the address is wrong and UPS does not suggested an address, as with this fake address: <br /><em>AddressVerification('118A Fake ST','NEW YORK', 'NY', '10038'), </em><br />then Validation = False.<br /><br /><img src="http://cflove.org/warehouse/UserImages/ups_faild.png" alt="" /><br /><br />If the address verification fails completely, as happened when I tried to verify the UPS head office address here:<br /><em>AddressVerification('55 Glenlake Parkway NE','Atlanta', 'GA', '30328'),</em><br />it will return Type = Failure and an Error Description message.<br /><br /><img src="http://cflove.org/warehouse/UserImages/ups_error.png" alt="" /></p>
<div id="_mcePaste" class="mcePaste" style="position: absolute; width: 1px; height: 1px; overflow: hidden; top: 0px; left: -10000px;">﻿</div>]]></description>
<category><![CDATA[Shipping API]]></category><category><![CDATA[ColdFusion]]></category> 
<pubDate>Mon, 14 May 2012 16:07:15</pubDate>
<guid>http://cflove.org/2010/10/ups-address-verification-with-coldfusion.cfm</guid>
</item>

<item>
<title><![CDATA[iEdit – ColdFusion Image Manipulation CFC]]></title>
<link>http://cflove.org/2010/10/iedit-coldfusion-image-manipulation-cfc.cfm</link>
<description><![CDATA[<p>This is a very old ColdFusion image manipulation CFC that I developed a long time ago. It went offline after the original domain went down. From time to time, I continue to receive e-mails requesting the file, and I keep forgetting to repost it. So, here it is.</p>
<p>iEdit is an image manipulation tag for pre &lt;cfimage&gt; era. It support basic image manipulation functions, such as resize, crop, and write text.</p>]]></description>
<category><![CDATA[ColdFusion]]></category> 
<pubDate>Mon, 14 May 2012 16:07:15</pubDate>
<guid>http://cflove.org/2010/10/iedit-coldfusion-image-manipulation-cfc.cfm</guid>
</item>

</channel>
</rss>

