<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4047485373075326079</id><updated>2012-01-16T16:05:26.061+01:00</updated><category term='cfimage'/><category term='setup'/><category term='coldfusion apache'/><category term='jdbc'/><category term='javascript'/><category term='coldfusion'/><category term='ec2'/><category term='h2'/><category term='railo'/><category term='primer'/><category term='cffile'/><category term='jrun'/><category term='wddx'/><category term='amazon'/><category term='cfhttp'/><category term='rss'/><category term='apache security'/><category term='casting'/><category term='cf8'/><category term='update'/><category term='database'/><category term='apache'/><category term='linux'/><category term='facebook'/><category term='xml'/><category term='ant'/><category term='mysql'/><category term='java'/><category term='sqlite'/><category term='tutorial'/><category term='mac os'/><category term='memory'/><category term='jvm'/><category term='hints'/><category term='cfquery'/><category term='ie'/><category term='webservice'/><category term='jquery'/><category term='orm coldfusion transfer'/><category term='transfer'/><category term='webdeveloper'/><category term='android'/><category term='scopes'/><category term='compatibility'/><category term='cgi'/><category term='feature'/><category term='tipps'/><category term='fun'/><category term='machii'/><category term='json'/><category term='subversion'/><title type='text'>CFStuff</title><subtitle type='html'>WebDevelopment, ColdFusion, Railo, JS, Database and Tech-related by the Co-Founder and CEO of &lt;a href="http://tunesBag.com"&gt;tunesBag.com&lt;/a&gt;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>51</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-502526204650804646</id><published>2011-02-15T09:12:00.004+01:00</published><updated>2011-02-15T09:31:09.956+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><title type='text'>Subversion access without Apache: svn+ssh</title><content type='html'>I was always used to access subversion repositories through https, may it have been my own repositories or projects hosted on e.g. sourceforge.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://myowntechdiary.blogspot.com/2009/05/eclipse-subclipse-svn-ssh.html"&gt;By chance&lt;/a&gt; I realized that there is a much better, easier and more secure way to do that: &lt;span style="font-weight: bold;"&gt;svn+ssh&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Just enter e.g. &lt;span style="font-weight: bold;"&gt;svn+ssh://username@subversionhost/repository&lt;/span&gt; as remote location and eclipse will automatically create a tunnel for you to this location and you don't have to run an apache on that host any more!&lt;br /&gt;&lt;br /&gt;ANT is working fine with this type of location as well (although you might need to update some libraries) and I think ssh-compression is enabled because files will be transferred faster than with the default http(s) transport.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-502526204650804646?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/502526204650804646/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=502526204650804646' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/502526204650804646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/502526204650804646'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2011/02/subversion-access-without-apache-svnssh.html' title='Subversion access without Apache: svn+ssh'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-488937877529012230</id><published>2011-02-13T14:52:00.004+01:00</published><updated>2011-02-13T17:40:18.060+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Root + Update HTC Desire to 2.2 the simple way</title><content type='html'>I've switched to a HTC Desire as my main phone some time ago and despite the fact that Froyo (Android 2.2) is around now for quite some time I have not received an update (Software update always told me that there is no new version available for my phone although I own an unbranded and unlocked model). The big deal with 2.2 is the WiFi hotspot mode for me, a feature I was using on a regular basis on my iPhone (Tethering) when I'm on the road.&lt;br /&gt;&lt;br /&gt;There are several discussions (fire up Google) on this topic and the advice is to root the device and update the system with a custom ROM. While I'm a fan of playing around with devices and programs most of the time I'm not really happy with doing that with my phone. Why? I just want to use it for phone calls, check my emails, use some apps and browse the internet. No need to apply some specials hacks to my device.&lt;br /&gt;&lt;br /&gt;Guess what - it's not that easy to find a firmware that's just doing that, finally I came accross this &lt;a href="http://forum.xda-developers.com/showthread.php?t=773997"&gt;Pre-rooted Stock Froyo ROM&lt;/a&gt;, it's pretty much the default HTC firmware and updating to this version is really simple (You can download the &lt;a href="http://forum.xda-developers.com/forumdisplay.php?f=628"&gt;original HTC firmware&lt;/a&gt; as well as it seems).&lt;br /&gt;&lt;br /&gt;Just follow these three steps:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Root your phone&lt;/span&gt; using &lt;a href="http://www.unrevoked.com/recovery/"&gt;unrevoked3&lt;/a&gt;&lt;br /&gt;No mess with gold cards (at least for me), just download the app and run it (&lt;a href="http://forum.xda-developers.com/showthread.php?t=788044"&gt;Further Instructions&lt;/a&gt;)!&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Download the ROM&lt;/span&gt; from the &lt;a href="http://forum.xda-developers.com/showthread.php?t=773997"&gt;source&lt;/a&gt; above and place it on the SD card&lt;br /&gt;Connect your phone using the USB cable and mount your SD card as drive&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Get ROM Manager&lt;/span&gt; from the Google Market (it's free)&lt;br /&gt;Click on "Update ROM" in the program and select the ZIP file which you've just copied to the SD card - the program will reboot your phone several times and perform the update.&lt;/li&gt;&lt;/ul&gt;The update procedure took me 20 minutes, the research 2 hours I guess ;-)&lt;br /&gt;&lt;br /&gt;Most important, now I'm able to enjoy Froyo and the mobile hotspot feature.&lt;br /&gt;&lt;br /&gt;A message towards Google - Please offer pre-build default Android versions which can be applied to any phone without any hassles using a simple "update" button like in iTunes, I'm sure most of the people are interested in a genuine platform and not a provider/vendor branded one with "special features".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-488937877529012230?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/488937877529012230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=488937877529012230' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/488937877529012230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/488937877529012230'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2011/02/root-update-htc-desire-to-22-simple-way.html' title='Root + Update HTC Desire to 2.2 the simple way'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-4309903192851948957</id><published>2010-09-03T13:00:00.004+02:00</published><updated>2010-09-03T13:09:20.269+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><title type='text'>Native hashchange event - Good bye polling</title><content type='html'>&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;I&lt;/span&gt; just discovered that there is a native HashChange event in the latest version of several browsers (FF, Webkit, IE) - this way navigation solutions working with the hash at the end of a URL work without nasty timers.&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;To add the event, simply use:&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;span style="color:#1700cc;"&gt;&lt;i&gt;if&lt;/i&gt;&lt;/span&gt;&lt;i&gt; &lt;/i&gt;&lt;span style="color:#6f6f6f;"&gt;&lt;i&gt;(&lt;/i&gt;&lt;/span&gt;&lt;i&gt; window&lt;/i&gt;&lt;span style="color:#6f6f6f;"&gt;&lt;i&gt;.&lt;/i&gt;&lt;/span&gt;&lt;i&gt;addEventListener &lt;/i&gt;&lt;span style="color:#6f6f6f;"&gt;&lt;i&gt;)&lt;/i&gt;&lt;/span&gt;&lt;i&gt; &lt;/i&gt;&lt;span style="color:#6f6f6f;"&gt;&lt;i&gt;{&lt;/i&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;i&gt;  window&lt;/i&gt;&lt;span style="color:#6f6f6f;"&gt;&lt;i&gt;.&lt;/i&gt;&lt;/span&gt;&lt;i&gt;addEventListener&lt;/i&gt;&lt;span style="color:#6f6f6f;"&gt;&lt;i&gt;(&lt;/i&gt;&lt;/span&gt;&lt;i&gt; &lt;/i&gt;&lt;span style="color:#116f00;"&gt;&lt;i&gt;'hashchange'&lt;/i&gt;&lt;/span&gt;&lt;span style="color:#6f6f6f;"&gt;&lt;i&gt;,&lt;/i&gt;&lt;/span&gt;&lt;i&gt; &lt;/i&gt;&lt;span style="color:#1700cc;"&gt;&lt;i&gt;function&lt;/i&gt;&lt;/span&gt;&lt;i&gt; &lt;/i&gt;&lt;span style="color:#6f6f6f;"&gt;&lt;i&gt;()&lt;/i&gt;&lt;/span&gt;&lt;i&gt; &lt;/i&gt;&lt;span style="color:#6f6f6f;"&gt;&lt;i&gt;{&lt;/i&gt;&lt;/span&gt;&lt;i&gt; checkHashChange&lt;/i&gt;&lt;span style="color:#6f6f6f;"&gt;&lt;i&gt;(&lt;/i&gt;&lt;/span&gt;&lt;i&gt;location&lt;/i&gt;&lt;span style="color:#6f6f6f;"&gt;&lt;i&gt;.&lt;/i&gt;&lt;/span&gt;&lt;i&gt;hash&lt;/i&gt;&lt;span style="color:#6f6f6f;"&gt;&lt;i&gt;)&lt;/i&gt;&lt;/span&gt;&lt;i&gt; &lt;/i&gt;&lt;span style="color:#6f6f6f;"&gt;&lt;i&gt;},&lt;/i&gt;&lt;/span&gt;&lt;i&gt; &lt;/i&gt;&lt;span style="color:#8f0f52;"&gt;&lt;i&gt;false&lt;/i&gt;&lt;/span&gt;&lt;i&gt; &lt;/i&gt;&lt;span style="color:#6f6f6f;"&gt;&lt;i&gt;);&lt;/i&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;span style="color:#6f6f6f;"&gt;&lt;i&gt;}&lt;/i&gt;&lt;/span&gt;&lt;i&gt; &lt;/i&gt;&lt;span style="color:#1700cc;"&gt;&lt;i&gt;else&lt;/i&gt;&lt;/span&gt;&lt;i&gt; &lt;/i&gt;&lt;span style="color:#1700cc;"&gt;&lt;i&gt;if&lt;/i&gt;&lt;/span&gt;&lt;i&gt; &lt;/i&gt;&lt;span style="color:#6f6f6f;"&gt;&lt;i&gt;(&lt;/i&gt;&lt;/span&gt;&lt;i&gt; window&lt;/i&gt;&lt;span style="color:#6f6f6f;"&gt;&lt;i&gt;.&lt;/i&gt;&lt;/span&gt;&lt;i&gt;attachEvent &lt;/i&gt;&lt;span style="color:#6f6f6f;"&gt;&lt;i&gt;)&lt;/i&gt;&lt;/span&gt;&lt;i&gt; &lt;/i&gt;&lt;span style="color:#6f6f6f;"&gt;&lt;i&gt;{&lt;/i&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;i&gt;  window&lt;/i&gt;&lt;span style="color:#6f6f6f;"&gt;&lt;i&gt;.&lt;/i&gt;&lt;/span&gt;&lt;i&gt;attachEvent&lt;/i&gt;&lt;span style="color:#6f6f6f;"&gt;&lt;i&gt;(&lt;/i&gt;&lt;/span&gt;&lt;i&gt; &lt;/i&gt;&lt;span style="color:#116f00;"&gt;&lt;i&gt;'onhashchange'&lt;/i&gt;&lt;/span&gt;&lt;i&gt; &lt;/i&gt;&lt;span style="color:#6f6f6f;"&gt;&lt;i&gt;,&lt;/i&gt;&lt;/span&gt;&lt;i&gt; &lt;/i&gt;&lt;span style="color:#1700cc;"&gt;&lt;i&gt;function&lt;/i&gt;&lt;/span&gt;&lt;i&gt; &lt;/i&gt;&lt;span style="color:#6f6f6f;"&gt;&lt;i&gt;()&lt;/i&gt;&lt;/span&gt;&lt;i&gt; &lt;/i&gt;&lt;span style="color:#6f6f6f;"&gt;&lt;i&gt;{&lt;/i&gt;&lt;/span&gt;&lt;i&gt; checkHashChange&lt;/i&gt;&lt;span style="color:#6f6f6f;"&gt;&lt;i&gt;(&lt;/i&gt;&lt;/span&gt;&lt;i&gt;location&lt;/i&gt;&lt;span style="color:#6f6f6f;"&gt;&lt;i&gt;.&lt;/i&gt;&lt;/span&gt;&lt;i&gt;hash&lt;/i&gt;&lt;span style="color:#6f6f6f;"&gt;&lt;i&gt;)&lt;/i&gt;&lt;/span&gt;&lt;i&gt; &lt;/i&gt;&lt;span style="color:#6f6f6f;"&gt;&lt;i&gt;}&lt;/i&gt;&lt;/span&gt;&lt;i&gt; &lt;/i&gt;&lt;span style="color:#6f6f6f;"&gt;&lt;i&gt;);&lt;/i&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;i&gt;  &lt;/i&gt;&lt;/span&gt;&lt;span style="color:#6f6f6f;"&gt;&lt;i&gt;}&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;&lt;span style="color:#6f6f6f;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;Take a look at &lt;a href="http://jsbin.com/onayu3/11/"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;these samples&lt;/span&gt;&lt;/a&gt; as well. In real world applications you still will need to use a combination of both methods (polling + events).&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"&gt;Concerning the support of the feature in various browsers, please &lt;a href="http://en.wikipedia.org/wiki/Comparison_of_layout_engines_(HTML5)"&gt;click here for a comparison chart&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-4309903192851948957?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/4309903192851948957/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=4309903192851948957' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/4309903192851948957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/4309903192851948957'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2010/09/native-hashchange-event-good-bye.html' title='Native hashchange event - Good bye polling'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-643808679674254220</id><published>2010-07-13T10:10:00.003+02:00</published><updated>2010-07-13T10:13:58.266+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tipps'/><category scheme='http://www.blogger.com/atom/ns#' term='casting'/><title type='text'>Int( boolean) will return 0 or 1</title><content type='html'>Nothing special, but that's cute ... Int( boolean ) will return 0 or 1.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This comes in very handy especially for arguments with the type boolean where the corresponding field in the database is a tinyint.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;cfargument name="bWillCollectAvailable" type="boolean"&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;cfset&gt;&lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-643808679674254220?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/643808679674254220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=643808679674254220' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/643808679674254220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/643808679674254220'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2010/07/int-boolean-will-return-0-or-1.html' title='Int( boolean) will return 0 or 1'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-632907313715279364</id><published>2010-05-25T23:31:00.003+02:00</published><updated>2010-05-25T23:39:16.574+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cfimage'/><title type='text'>CFIMAGE: Compile great looking artist images</title><content type='html'>I am really excited about the features &lt;a href="http://livedocs.adobe.com/coldfusion/8/Tags_i_02.html"&gt;CFIMAGE&lt;/a&gt; provides in railo/ColdFusion. In recent times, I've started doing advanced stuff (read: more than resizing images) and one of the thing I've really enjoyed was compiling acool artist background images from several images - below you can find three samples (&lt;a href="http://www.tunesbag.com/playlist-Kanye-West-a127482"&gt;Kayne Wes&lt;/a&gt;t, &lt;a href="http://www.tunesbag.com/playlist-Evanescence-a64482"&gt;Evanescence&lt;/a&gt; and &lt;a href="http://www.tunesbag.com/playlist-Goldfrapp-a21786"&gt;Goldfrapp&lt;/a&gt;). Basically, it's just a simple combination of &lt;a href="http://livedocs.adobe.com/coldfusion/8/functions_h-im_40.html"&gt;ImageRotate&lt;/a&gt;, ImagePaste and ImageRead ;-)&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_v3xQzpUtwzQ/S_xBxKs-20I/AAAAAAAACYA/Cjyjn0N_Ppg/s1600/cfimage.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://1.bp.blogspot.com/_v3xQzpUtwzQ/S_xBxKs-20I/AAAAAAAACYA/Cjyjn0N_Ppg/s400/cfimage.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5475323559918099266" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://cdn.tunesbag.com/images/cc/120-88x31.png"&gt;&lt;img style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; cursor: pointer; width: 88px; height: 31px; text-align: center; " src="http://cdn.tunesbag.com/images/cc/120-88x31.png" border="0" alt="" /&gt;&lt;/a&gt;Sources: &lt;a href="http://www.flickr.com/photos/96679304@N00/176295962"&gt;http://www.flickr.com/photos/96679304@N00/176295962&lt;/a&gt;, &lt;a href="http://www.flickr.com/photos/11671827@N00/522201514"&gt;http://www.flickr.com/photos/11671827@N00/522201514&lt;/a&gt;, &lt;a href="http://www.flickr.com/photos/87258901@N00/2951288353,"&gt;http://www.flickr.com/photos/87258901@N00/2951288353, &lt;/a&gt;&lt;a href="http://www.flickr.com/photos/44124348109@N01/2834953166"&gt;http://www.flickr.com/photos/44124348109@N01/2834953166&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-632907313715279364?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/632907313715279364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=632907313715279364' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/632907313715279364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/632907313715279364'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2010/05/cfimage-compile-great-looking-artist.html' title='CFIMAGE: Compile great looking artist images'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_v3xQzpUtwzQ/S_xBxKs-20I/AAAAAAAACYA/Cjyjn0N_Ppg/s72-c/cfimage.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-7429573373832090385</id><published>2010-05-13T17:09:00.003+02:00</published><updated>2010-05-13T17:18:37.190+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='facebook'/><title type='text'>Facebook Like Button will double your page hits</title><content type='html'>Nothing to be afraid of - while implementing the &lt;a href="http://developers.facebook.com/docs/reference/plugins/like"&gt;Facebook Like Button&lt;/a&gt; for &lt;a href="http://www.tunesBag.com/"&gt;tunesBag&lt;/a&gt;, I found out that every hit to a page with the "Like" - Button will be responsible for a second hit by the Facebook bot (facebookexternalhit/1.0)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-7429573373832090385?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/7429573373832090385/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=7429573373832090385' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/7429573373832090385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/7429573373832090385'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2010/05/facebook-like-button-will-double-your.html' title='Facebook Like Button will double your page hits'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-5955246993164393294</id><published>2010-05-04T13:40:00.003+02:00</published><updated>2010-05-04T13:47:58.539+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='railo'/><title type='text'>UrlEncodedFormat: Encoding space characters - plus (+) vs %20</title><content type='html'>I came across an issue with UrlEncodedFormat() today - signatures calculated by an CF9-based system always appeared to be invalid and as it seems ColdFusion is ignoring the standards when it comes to encoding of form posts (application/x-www-form-urlencoded).&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The &lt;a href="http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.1"&gt;document&lt;/a&gt; describing the standard on W3 clearly states:&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;h4&gt;&lt;span class="index-def" title="application/x-www-form-urlencoded|content  type::application/x-www-form-urlencoded"&gt;&lt;a name="didx-applicationx-www-form-urlencoded"&gt;&lt;/a&gt;&lt;a name="didx-applicationx-www-form-urlencoded"&gt;application/&lt;/a&gt;x-www-form-urlencoded&lt;/span&gt; &lt;a name="h-17.13.4.1"&gt;  &lt;/a&gt;&lt;/h4&gt;  &lt;p&gt;This is the default content type. Forms submitted with this content  type must be encoded as follows:&lt;/p&gt;  &lt;ol&gt; &lt;li&gt;Control names and values are escaped. &lt;b&gt;Space characters are replaced  by &lt;/b&gt;&lt;samp&gt;&lt;b&gt;`+'&lt;/b&gt;&lt;/samp&gt;&lt;b&gt;,&lt;/b&gt; and then reserved characters are escaped as described  in &lt;a rel="biblioentry" href="http://www.w3.org/TR/html4/references.html#ref-RFC1738" class="normref"&gt; [RFC1738]&lt;/a&gt;, section 2.2: Non-alphanumeric characters are replaced by &lt;samp&gt; `%HH'&lt;/samp&gt;, a percent sign and two hexadecimal digits representing the  ASCII code of the character. Line breaks are represented as "CR LF" pairs  (i.e., &lt;samp&gt;`%0D%0A'&lt;/samp&gt;).&lt;/li&gt;  &lt;li&gt;The control names/values are listed in the order they appear in the document. The name is separated from the value by &lt;samp&gt;`='&lt;/samp&gt; and name/value pairs are separated from each other by &lt;samp&gt;`&amp;amp;'&lt;/samp&gt;.&lt;/li&gt;&lt;/ol&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When you perform an UrlEncodedFormat( ' ' ) on CF, it will return %20, the same call on railo will return "+" as described in the article above.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I solved the issue by simply replacing %20 with +.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-5955246993164393294?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/5955246993164393294/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=5955246993164393294' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/5955246993164393294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/5955246993164393294'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2010/05/urlencodedformat-encoding-space.html' title='UrlEncodedFormat: Encoding space characters - plus (+) vs %20'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-2377311026202113263</id><published>2010-02-28T17:01:00.002+01:00</published><updated>2010-02-28T17:06:58.887+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='wddx'/><title type='text'>Fixing "An invalid XML character (Unicode: 0x0) was found in the element content of the document."</title><content type='html'>I had some issues recently with storing data in a database as WDDX package and later reading from database again ... as you know WDDX is XML based so CF/railo are using the built-in XML parser to read the data.&lt;div&gt;In this case special characters in the original content can lead to an error message like "&lt;i&gt;An invalid XML character (Unicode: 0x0) was found in the element content of the document.&lt;/i&gt;" - the solution is to escape the control chars in the string before calling CFWDDX, e.g. by calling&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;"&lt;i&gt;REReplace(thisXML,'[\x0]','','ALL')&lt;/i&gt;"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I found this tip in the &lt;a href="http://forums.adobe.com/thread/53705"&gt;Adobe Forums&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-2377311026202113263?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/2377311026202113263/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=2377311026202113263' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/2377311026202113263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/2377311026202113263'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2010/02/fixing-invalid-xml-character-unicode.html' title='Fixing &quot;An invalid XML character (Unicode: 0x0) was found in the element content of the document.&quot;'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-594683735136226305</id><published>2010-01-26T13:06:00.003+01:00</published><updated>2010-01-26T13:08:46.831+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='setup'/><title type='text'>Silent Setup of Sun JDK (Linux, Debian)</title><content type='html'>I was looking for a way to install the latest Java Runtime Environment without any user interaction and came across this &lt;a href="http://www.unix.com/shell-programming-scripting/64497-script-install-jdk.html"&gt;posting&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;i&gt;Here's a tips I found trying to do the same as you :&lt;br /&gt;1. Create an answers.txt file with the word yes inside&lt;br /&gt;2. Launch fhe following command (assuming you want to install  jdk-xx.bin)&lt;br /&gt;./jdk-xx.bin &lt;&gt;/dev/null&lt;/i&gt;&lt;/blockquote&gt;Works like a charm!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-594683735136226305?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/594683735136226305/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=594683735136226305' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/594683735136226305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/594683735136226305'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2010/01/silent-setup-of-sun-jdk-linux-debian.html' title='Silent Setup of Sun JDK (Linux, Debian)'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-4673117851508429370</id><published>2010-01-20T13:34:00.003+01:00</published><updated>2010-01-20T13:48:51.598+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ant'/><title type='text'>Ant &amp; SCP on Mac</title><content type='html'>Just spend a few minutes involuntarily on fixing the SCP support for ANT on Mac ... a library is missing ("Cause: the class org.apache.tools.ant.taskdefs.optional.ssh.Scp was not found.") and you have to copy a second file from the binary distribution, check out the &lt;a href="http://myvirtual-lab.blogspot.com/2009/07/ant-scp-and-ec2.html"&gt;howto&lt;/a&gt; I found on the web!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Important hint: Don't download the latest binary distribution, check which one you're running (ant -version) before doing that! Otherwise you'll likely receive error messages again.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-4673117851508429370?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/4673117851508429370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=4673117851508429370' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/4673117851508429370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/4673117851508429370'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2010/01/ant-scp-on-mac.html' title='Ant &amp; SCP on Mac'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-8182057274405975799</id><published>2009-12-22T11:29:00.002+01:00</published><updated>2009-12-22T12:00:18.065+01:00</updated><title type='text'>NYCFUG - I was there ;-)</title><content type='html'>Some nice memories of my &lt;a href="http://www.masterThe.US"&gt;stay in NYC&lt;/a&gt; this summer - a picture with the famous CF blogger &lt;a href="http://www.bennadel.com/"&gt;Ben Nadel&lt;/a&gt; at the &lt;a href="http://www.nycfug.com/"&gt;NY CFUG&lt;/a&gt;! Two thumbs up!&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_v3xQzpUtwzQ/SzCfnBFNVUI/AAAAAAAACXk/QNCRd7DVDc4/s1600-h/Bildschirmfoto+2009-12-22+um+11.03.23.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 218px;" src="http://4.bp.blogspot.com/_v3xQzpUtwzQ/SzCfnBFNVUI/AAAAAAAACXk/QNCRd7DVDc4/s400/Bildschirmfoto+2009-12-22+um+11.03.23.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5418005844380702018" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-8182057274405975799?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/8182057274405975799/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=8182057274405975799' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/8182057274405975799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/8182057274405975799'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2009/12/nycfug-i-was-there.html' title='NYCFUG - I was there ;-)'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_v3xQzpUtwzQ/SzCfnBFNVUI/AAAAAAAACXk/QNCRd7DVDc4/s72-c/Bildschirmfoto+2009-12-22+um+11.03.23.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-2697636155591168198</id><published>2009-12-14T09:47:00.003+01:00</published><updated>2009-12-14T09:56:11.459+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><category scheme='http://www.blogger.com/atom/ns#' term='amazon'/><category scheme='http://www.blogger.com/atom/ns#' term='ec2'/><title type='text'>Amazon EC2 goes Lorem ipsum</title><content type='html'>"&lt;a href="http://en.wikipedia.org/wiki/Lorem_ipsum"&gt;Lorem ipsum&lt;/a&gt;" is the typical dummy text so I was quite surprised to read it on the Amazon EC2 Console (Setup wizard for a new instance) just a few seconds ago (see screenshot below). I guess I was just using the interface during an upgrade ... at least it reminds me a little bit of the pain during my Latin lessons in school ...  ;-)&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_v3xQzpUtwzQ/SyX9fOTQ7hI/AAAAAAAACXc/rlT5At6dndM/s1600-h/loremipsum.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 114px;" src="http://4.bp.blogspot.com/_v3xQzpUtwzQ/SyX9fOTQ7hI/AAAAAAAACXc/rlT5At6dndM/s400/loremipsum.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5415012839839559186" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-2697636155591168198?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/2697636155591168198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=2697636155591168198' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/2697636155591168198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/2697636155591168198'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2009/12/amazon-ec2-goes-lorem-ipsum.html' title='Amazon EC2 goes Lorem ipsum'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_v3xQzpUtwzQ/SyX9fOTQ7hI/AAAAAAAACXc/rlT5At6dndM/s72-c/loremipsum.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-9211229430983476077</id><published>2009-12-02T12:43:00.002+01:00</published><updated>2009-12-02T12:48:25.708+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='ie'/><category scheme='http://www.blogger.com/atom/ns#' term='json'/><title type='text'>Add missing Array.indexOf to Internet Explorer</title><content type='html'>When dealing with JSON it comes in handy to get the position of a certain string in an array, image an array with column names returned by a SerializeJSON'ed CFQUERY.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Internet Explorer does not support this function, but just add the following snippet and you can use Array.indexOf( 'TITLE' ) in any browser without built-in support as well (We add a new function to the Array prototype!)&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;// make sure indexOf is supported&lt;br /&gt;if(!Array.indexOf){&lt;br /&gt;   Array.prototype.indexOf = function(obj, start){&lt;br /&gt;       for(var i=(start||0); i&amp;lt;this.length; i++){&lt;br /&gt;           if(this[i]==obj){&lt;br /&gt;               return i;&lt;br /&gt;           }&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-9211229430983476077?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/9211229430983476077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=9211229430983476077' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/9211229430983476077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/9211229430983476077'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2009/12/add-missing-arrayindexof-to-internet.html' title='Add missing Array.indexOf to Internet Explorer'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-7723367681752588747</id><published>2009-11-01T23:53:00.007+01:00</published><updated>2009-11-02T16:03:08.721+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>Apache, Railo &amp; mySQL Troubles after Upgrading to Snow Leopard</title><content type='html'>Odd. The upgrade to snow leopard just killed by Apache Resin Connector and the vhost config - that should not happen (read &lt;a href="http://www.justanaverageyo.com/index.cfm/2009/9/2/snow-leopard-ate-my-apache-config-files"&gt;other reports here&lt;/a&gt;). So make sure you backup your vhost configs before upgrading. For the connector, I had to re-download XCode in order to &lt;a href="http://www.luismajano.com/blog/index.cfm/2008/12/5/Railo-Resin-Apache-and-Mac-OS-X--A-FAST-Combination"&gt;build the connector &lt;/a&gt;... (700 MB in total, take care!).&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The mySQL server wasn't starting as well, a symbolic link seems to be broken after the update, see &lt;a href="http://planet-geek.com/archives/2009/09/osx-snow-leopar.html"&gt;here&lt;/a&gt;. Furthermore, some programs like Cyberduck (SSH) and Nambu (twitter) aren't working any more. To be honest, a quite disapointing update so far.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-7723367681752588747?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/7723367681752588747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=7723367681752588747' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/7723367681752588747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/7723367681752588747'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2009/11/apache-railo-troubles-after-upgrading.html' title='Apache, Railo &amp; mySQL Troubles after Upgrading to Snow Leopard'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-2522020399398905724</id><published>2009-08-20T09:58:00.005+02:00</published><updated>2009-08-20T12:45:23.432+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac os'/><category scheme='http://www.blogger.com/atom/ns#' term='railo'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>Setup Mac OS X + Apache + Railo</title><content type='html'>A fews days ago I upgraded to a Macbook Pro and I already spent almost two days on reinstalling software, copying documents etc etc (An upgrade is an opportunity for me to get rid of old software and ballast).&lt;br /&gt;&lt;br /&gt;Today I started with the Apache / railo setup using &lt;a href="http://www.luismajano.com/blog/index.cfm/2008/12/5/Railo-Resin-Apache-and-Mac-OS-X--A-FAST-Combination"&gt;a guide by Luid Majano&lt;/a&gt; (I had to download the &lt;a href="http://www.apple.com/developer"&gt;Apple XCode&lt;/a&gt; Setup file (almost 1 GB) in order to compile the connector for Apache and reset the httpd to 32 bit instead of 64 bit).&lt;br /&gt;&lt;br /&gt;Further problems I had to solve:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Read how to fix the "&lt;a href="http://damonparker.org/blog/2007/01/06/apache-error-client-denied-by-server-configuration/"&gt;Apache Error: Client denied by server configuration&lt;/a&gt;" error (very restrictive configuration makes sense on real life systems but on dev systems ...?)&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;I wasn't able to access my files until I executed a chmod a+x on every directory in the path to the webroot (apache log &lt;span style="font-style: italic;"&gt;[error] [client ::1] (13)Permission denied:&lt;/span&gt;)&lt;/li&gt;&lt;/ul&gt;Now it's working like a charm.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-2522020399398905724?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/2522020399398905724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=2522020399398905724' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/2522020399398905724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/2522020399398905724'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2009/08/setup-mac-os-x-apache-railo.html' title='Setup Mac OS X + Apache + Railo'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-58979263566738147</id><published>2009-06-11T15:02:00.003+02:00</published><updated>2009-06-11T15:11:46.658+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='h2'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='railo'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>Using the H2 database in ColdFusion</title><content type='html'>&lt;a href="http://getrailo.org"&gt;Railo&lt;/a&gt; is delivered with an embedded database called &lt;a href="http://www.h2database.com/"&gt;H2&lt;/a&gt;. The description on the homepage says:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;i&gt; Welcome to H2, the Java SQL database. The main feature of H2 are:&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;    * Very fast, open source, JDBC API&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;    * Embedded and server modes; in-memory databases&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;    * Browser based Console application&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;    * Small footprint: around 1 MB jar file size &lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Such a database fit's perfectly for a current task at &lt;a href="http://en.tunesBag.com/"&gt;tunesBag&lt;/a&gt; - the streaming servers should store some data on their own machines and mysql or postgresql just would be overkill for this task. So I decided to give H2 a look and it looks pretty nice.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;On my local machine I'm working with ColdFusion 8 as well - the configuration to add H2 support for CF is very easy, just follow the following steps:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.h2database.com/html/main.html"&gt;Download&lt;/a&gt; the latest version of H2&lt;/li&gt;&lt;li&gt;Drop the h2*.jar file in the &lt;i&gt;WEB-INF/lib directory&lt;/i&gt; of your ColdFusion server (directory depends on your type of setup)&lt;/li&gt;&lt;li&gt;Restart CF&lt;/li&gt;&lt;li&gt;Add a new datasource&lt;/li&gt;&lt;li&gt;JDBC URL = &lt;i&gt;jdbc:h2:file:%Path to Database file on your disk%&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Driver Class = &lt;i&gt;org.h2.Driver&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Driver name = &lt;i&gt;default&lt;/i&gt;&lt;/li&gt;&lt;li&gt;User name = &lt;i&gt;sa&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That's it - the files holding the data will be created automatically for you. Take a look at the &lt;a href="http://www.h2database.com/html/tutorial.html"&gt;H2 tutorial&lt;/a&gt; in order to find out more (e.g. server mode etc).&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-58979263566738147?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/58979263566738147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=58979263566738147' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/58979263566738147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/58979263566738147'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2009/06/using-h2-database-in-coldfusion.html' title='Using the H2 database in ColdFusion'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-755282166870088025</id><published>2009-04-29T21:45:00.004+02:00</published><updated>2009-04-29T21:53:14.738+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='compatibility'/><category scheme='http://www.blogger.com/atom/ns#' term='railo'/><title type='text'>Railo - Compatibility issues with scopes (URL etc)</title><content type='html'>I'm migrating my development environment to railo and found some issues that affected my code.&lt;br /&gt;&lt;br /&gt;One of the most important ones is that railo always references the scope name when you use URL, FORM etc no matter if a local variable with this name exists or not. To give you an example, run this code in CF and in railo:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&amp;lt;cfparam name="url.step" type="string" default="1" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;cfset a_call = PrintURL( 'http://tunesBag.com/' ) /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;cfdump var="#a_call#"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;cfscript&amp;gt;&lt;br /&gt;function PrintURL( url ) {&lt;br /&gt;return url;&lt;br /&gt;}&lt;br /&gt;&amp;lt;/cfscript&amp;gt;&lt;/blockquote&gt;To make railo behave the same way, you've to add a full reference to the function -&lt;br /&gt;&lt;blockquote&gt;return arguments.url&lt;/blockquote&gt;&lt;br /&gt;In ColdFusion you'll see http://tunesBag.com as output, in railo the URL structure. Some further explanations concerning the scopes and this "bug" can be found &lt;a href="http://livedocs.adobe.com/coldfusion/6/Developing_ColdFusion_MX_Applications_with_CFML/Variables7.htm"&gt;here&lt;/a&gt; (Adobe Livedocs) and &lt;a href="https://jira.jboss.org/jira/browse/RAILO-50"&gt;here&lt;/a&gt; (Railo Bugtracker)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-755282166870088025?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/755282166870088025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=755282166870088025' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/755282166870088025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/755282166870088025'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2009/04/railo-compatibility-issues-with-scopes.html' title='Railo - Compatibility issues with scopes (URL etc)'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-6574184623574633754</id><published>2009-04-29T12:06:00.005+02:00</published><updated>2009-04-29T12:14:33.567+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='railo'/><title type='text'>Having fun with railo: CFQUERY supporting complex objects</title><content type='html'>I just came across a cool feature of &lt;a href="http://getrailo.com/"&gt;railo&lt;/a&gt; - it's possible to set query columns to complex objects, e.g. a java object or a structure.&lt;br /&gt;&lt;br /&gt;An example:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;cfset q = QueryNew('data');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;querySetCell( q, 'data', { firstname = 'John', surname = 'Doe' }, 1);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;cfdump var="#q#"&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;You can access the structure by using &lt;span style="font-weight: bold;"&gt;q['data'][1]&lt;/span&gt;!&lt;br /&gt;&lt;br /&gt;cool!&lt;br /&gt;&lt;br /&gt;Important: This complex data won't survive a query of queries operation, in this case the simple classname will be shown in the column.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-6574184623574633754?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/6574184623574633754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=6574184623574633754' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/6574184623574633754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/6574184623574633754'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2009/04/having-fun-with-railo-cfquery.html' title='Having fun with railo: CFQUERY supporting complex objects'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-1391052355866738563</id><published>2009-02-23T17:48:00.002+01:00</published><updated>2009-02-23T17:52:06.445+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='feature'/><category scheme='http://www.blogger.com/atom/ns#' term='rss'/><title type='text'>CFFEED not usable due to missing timeout property</title><content type='html'>I've always used CFFEED in order to read newsfeeds (e.g. display recent blog postings on the homepage); now we had serious problems with non-responding feeds - and as it seems there is no workaround (see posting by &lt;a href="http://www.bennadel.com/index.cfm?dax=blog:618.view"&gt;Ben Nadel&lt;/a&gt; as well). As solution I decided to go back to cfhttp and simple parsing of the XML document.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-1391052355866738563?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/1391052355866738563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=1391052355866738563' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/1391052355866738563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/1391052355866738563'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2009/02/cffeed-not-usable-due-to-missing.html' title='CFFEED not usable due to missing timeout property'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-3822013848980575465</id><published>2009-02-15T11:58:00.002+01:00</published><updated>2009-02-15T12:13:53.501+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><category scheme='http://www.blogger.com/atom/ns#' term='jdbc'/><title type='text'>"Corrupt table" errors (ColdFusion 8, mysql)</title><content type='html'>We have to do a lot of caching in order to keep the performance of tunesBag.com, so cached queries are very important for our website. During the last two days a lot of "corrupt tables" errors showed up in the log and first I thought about a mysql database issue of course. It's a bug in ColdFusion, however, so in case you run into the same error use this hotfix: &lt;a href="http://kb.adobe.com/selfservice/viewContent.do?externalId=kb402583"&gt;http://kb.adobe.com/selfservice/viewContent.do?externalId=kb402583&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I've updated our live servers and I hope we won't see this error again.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-3822013848980575465?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/3822013848980575465/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=3822013848980575465' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/3822013848980575465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/3822013848980575465'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2009/02/corrupt-table-errors-coldfusion-8-mysql.html' title='&quot;Corrupt table&quot; errors (ColdFusion 8, mysql)'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-6863739878953764533</id><published>2009-01-25T14:24:00.003+01:00</published><updated>2009-01-28T17:11:58.582+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>Enhance performance of Joins / Queries: Make sure all columns share the same collation</title><content type='html'>At tunesBag.com, we're storing most of the data in UTF-8 / Unicode because we've customers from all over the world. Some internal data like userkeys, entrykeys etc are stored in latin1 because it needs less space. I recently came accross a query which was very slow without any obvious reason and after some research I found out that in a left join, the column A from table A has a different collation than column B from table A.&lt;br /&gt;I changed the collation for column B to the same as column A - and the query executive time dropped from about 1300 msec to 100 msec!&lt;br /&gt;&lt;br /&gt;So always make sure you're using the same collation if possible when performing joins!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-6863739878953764533?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/6863739878953764533/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=6863739878953764533' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/6863739878953764533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/6863739878953764533'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2009/01/enhance-performance-of-joins-queries.html' title='Enhance performance of Joins / Queries: Make sure all columns share the same collation'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-244150346004845090</id><published>2009-01-16T09:57:00.003+01:00</published><updated>2009-01-16T10:00:40.294+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><title type='text'>JavaScript variables set in onclick - different behaviour in IE / FF</title><content type='html'>I recently discovered that the behaviour of internet explorer and Firefox is quite different when it comes to settings variables in an onClick event - in Firefox these variables will become global variables, in IE they are just "local" and will nur be available for other functions.&lt;br /&gt;&lt;br /&gt;An example:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;a onClick="variableA = 'peter';CallFunction();return false;" ...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;function CallFunction() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;alert(variableA);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In FF, an alert box will show "Peter", in IE you'll receive an exception.&lt;br /&gt;&lt;br /&gt;How to solve that? Simply declare variableA on top of your JavaScript file, this way IE will modify the global variable.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;var variableA = '';&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-244150346004845090?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/244150346004845090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=244150346004845090' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/244150346004845090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/244150346004845090'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2009/01/javascript-variables-set-in-onclick.html' title='JavaScript variables set in onclick - different behaviour in IE / FF'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-4341946186424814307</id><published>2009-01-06T13:21:00.002+01:00</published><updated>2009-01-06T13:24:54.889+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='railo'/><title type='text'>Railo - important path placeholders</title><content type='html'>I'm playing around with &lt;a href="http://www.railo.ch"&gt;railo&lt;/a&gt;, a full featured alternative CFML engine and so far, I'm very impressed. During testing my existing applications with this new environment I had to add some custom mappings in the administration (by the way, there are two admin engines, the first one is server-wide, the second one just for the current webroot).&lt;br /&gt;&lt;br /&gt;When creating these custom mappings, there are some very interesting path placeholders you can use:&lt;br /&gt;    &lt;span style="font-weight: bold;"&gt;{railo-web}&lt;/span&gt;: path to the railo web directory typical "{web-root}/WEB-INF/railo"&lt;br /&gt;    {railo-server}: path to the railo server directory typical where the railo.jar is located&lt;br /&gt;    {temp-directory}: path to the temp directory of the current user of the system&lt;br /&gt;    {home-directory}: path to the home directory of the current user of the system&lt;br /&gt;    &lt;span style="font-weight: bold;"&gt;{web-root-directory}&lt;/span&gt;: path to the web root&lt;br /&gt;    {system-directory}: path to thesystem directory&lt;br /&gt;&lt;br /&gt;This way you can create mappings without using the full path to the directory - very cool!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-4341946186424814307?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/4341946186424814307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=4341946186424814307' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/4341946186424814307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/4341946186424814307'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2009/01/railo-important-path-placeholders.html' title='Railo - important path placeholders'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-2452189481244652918</id><published>2008-10-29T11:50:00.009+01:00</published><updated>2008-10-29T12:10:58.382+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sqlite'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>Create &amp; Connect to databases (mysql, SQLite etc) on the fly with ColdFusion</title><content type='html'>Working with databases in ColdFusion is very easy - you have to set up your datasources in the CFAdmin (or by &lt;a href="http://www.creative-restraint.co.uk/blog/index.cfm?mode=entry&amp;amp;entry=7B83C13D-EEF8-5BAE-8195007923F93910"&gt;code using the CFAdmin API&lt;/a&gt;) and you can start writing SQL using CFQUERY. But what if you want to connect to a database on the fly without creating a datasource?&lt;br /&gt;In this case it comes in handy that ColdFusion is a Java-based product, so you can use all the power JDBC is offering. At the &lt;a href="http://www.tunesbag.com/"&gt;online music hub tunesBag&lt;/a&gt; I recently had to create &lt;a href="http://www.sqlite.org/"&gt;SQLite&lt;/a&gt; databases on the fly - it's quite easy in fact as you can see below:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1) Add the JDBC Driver (or use an existing one)&lt;br /&gt;&lt;/span&gt;You can use any JDBC driver, e.g. mysql, MS-SQL etc&lt;br /&gt;In my case: Download the SQLite JDBC Driver from &lt;a href="http://www.zentus.com/sqlitejdbc/"&gt;zentus.com&lt;/a&gt; and place it in wwwroot/WEB-INF/lib (sqlitejdbc-v053.jar)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;a_sqlite = createObject( 'java', 'org.sqlite.JDBC' )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;a_prop = createObject( 'java', 'java.util.Properties' )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;db_filename = '/tmp/sqlite_' &amp;amp; CreateUUID() &amp;amp; '.db'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2) Write the code&lt;/span&gt; (this is an example for sqlite)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;a_conn = a_sqlite.connect( 'jdbc:sqlite:' &amp;amp; a_db_filename, a_prop.init() )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;a_statement = a_conn.createStatement() &lt;/span&gt;&lt;cfset a_sqlite=" createObject("&gt;&lt;cfset a_prop=" createObject("&gt;&lt;cfset a_db_filename=" '/tmp/sqlite_'"&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;a_res = a_statement.execute( 'BEGIN;')&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Create the table&lt;br /&gt;&lt;span style="font-style: italic;"&gt;a_res = a_statement.execute( 'CREATE TABLE test (id INTEGER PRIMARY KEY, firstname TEXT, surname TEXT);');&lt;/span&gt;&lt;br /&gt;&lt;cfset a_conn=" a_sqlite.connect("&gt;&lt;br /&gt;Insert data&lt;br /&gt;&lt;span style="font-style: italic;"&gt;prep = a_conn.prepareStatement( 'INSERT INTO &lt;/span&gt;&lt;/cfset&gt;&lt;/cfset&gt;&lt;/cfset&gt;&lt;/cfset&gt;&lt;span style="font-style: italic;"&gt;test&lt;/span&gt;&lt;cfset a_sqlite=" createObject("&gt;&lt;cfset a_prop=" createObject("&gt;&lt;cfset a_db_filename=" '/tmp/sqlite_'"&gt;&lt;cfset a_conn=" a_sqlite.connect("&gt;&lt;span style="font-style: italic;"&gt; (firstname,surname) VALUES (?, ?);' );&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;prep.setString( 1, 'John' );&lt;/span&gt;&lt;br /&gt;&lt;/cfset&gt;&lt;/cfset&gt;&lt;/cfset&gt;&lt;/cfset&gt;&lt;span style="font-style: italic;"&gt;prep.setString( 2,  'Doe' );&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;// you can add multiple inserts ...&lt;br /&gt;&lt;span style="font-style: italic;"&gt;prep.addBatch();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;prep.setString( 1, 'Max' );&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;prep.setString( 2,  'Mustermann' );&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;prep.addBatch();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;// insert!&lt;br /&gt;&lt;span style="font-style: italic;"&gt;prep.executeBatch();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;// save the changes&lt;br /&gt;&lt;span style="font-style: italic;"&gt;a_res = a_statement.executeUpdate( 'END;');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;// quit&lt;br /&gt;&lt;span style="font-style: italic;"&gt;a_conn.close();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;a_conn = 0;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Where to go from here&lt;/span&gt;&lt;br /&gt;For more details, check out the&lt;a href="http://java.sun.com/docs/books/tutorial/jdbc/basics/connecting.html"&gt; official JDBC documentation&lt;/a&gt; provided by SUN!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-2452189481244652918?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/2452189481244652918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=2452189481244652918' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/2452189481244652918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/2452189481244652918'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2008/10/create-connect-to-databases-mysql_29.html' title='Create &amp; Connect to databases (mysql, SQLite etc) on the fly with ColdFusion'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-2483490527818953085</id><published>2008-10-19T13:38:00.002+02:00</published><updated>2008-10-19T13:42:02.598+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cfquery'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><title type='text'>mySQL - cfqueryparam - Comments - "No value specified for parameter"</title><content type='html'>I always try to add comments to complex queries against our mysql server and in order to see the comments in the debug output as well, I'm always using the /* comment syntax */ offered by SQL. The other day I added some comments to a rather complex query again and suddenly I received a strange error message all the time telling me  "No value specified for parameter 4 / SQL State 07001".&lt;br /&gt;After some playing around I found out that you should now use question marks in the SQL comments - it seems as CF or mysql is interpreting this char and assuming a parameter, even if it's contained in a comment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-2483490527818953085?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/2483490527818953085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=2483490527818953085' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/2483490527818953085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/2483490527818953085'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2008/10/mysql-cfqueryparam-comments-no-value.html' title='mySQL - cfqueryparam - Comments - &quot;No value specified for parameter&quot;'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-6045290323493857357</id><published>2008-08-11T16:47:00.003+02:00</published><updated>2010-05-04T13:48:45.227+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='primer'/><title type='text'>New ColdFusion primer / tutorial</title><content type='html'>I've just finished a brand new tutorial for Adobe ColdFusion / CFML - in this primer I cover the basic server environment, database access, SQL, flow control, error handling and much more. &lt;a href="http://www.slideshare.net/funkymusic/cold-fusion-a-primer-by-hansjoerg-poschppt"&gt;Check it out here.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-6045290323493857357?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/6045290323493857357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=6045290323493857357' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/6045290323493857357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/6045290323493857357'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2008/08/new-coldfusion-primer-tutorial.html' title='New ColdFusion primer / tutorial'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-9151807578221550495</id><published>2008-06-29T20:27:00.002+02:00</published><updated>2008-06-29T20:30:03.447+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='cgi'/><title type='text'>Not all CGI variables show up using CFDUMP</title><content type='html'>CGI variables must be something special - it is not possible to show all cgi variables when doing a cfdump. I just came across this bug when trying to use a custom #404 page where apache provides the original page URL in the CGI variable REDIRECT_URL.&lt;br /&gt;I am just using CGI.REDIRECT_URL now and it works.&lt;br /&gt;The interesting thing is that StructKeyExists(CGI, blabla) does not work at all - the check will always return true.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-9151807578221550495?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/9151807578221550495/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=9151807578221550495' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/9151807578221550495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/9151807578221550495'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2008/06/not-all-cgi-variables-show-up-using.html' title='Not all CGI variables show up using CFDUMP'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-439516814925178225</id><published>2008-06-11T11:42:00.002+02:00</published><updated>2008-06-11T11:44:49.940+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scopes'/><category scheme='http://www.blogger.com/atom/ns#' term='cffile'/><title type='text'>VARing cffile and the result variable</title><content type='html'>I am using cffile to upload incoming files and of course in my component I "var" the cffile variable at the top of the function (like one should do with cfhttp etc):&lt;br /&gt;&lt;cfset cffile =" 0"&gt;&lt;br /&gt;The problem is that somehow the cffile scope will stay zero - until I added the property "result" to the cffile tag saying the result should be stored as "cffile" - so the whole call is:&lt;br /&gt;&lt;br /&gt;&lt;cffile action="upload" result="cffile"&gt;&lt;br /&gt;&lt;br /&gt;Now it works again!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-439516814925178225?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/439516814925178225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=439516814925178225' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/439516814925178225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/439516814925178225'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2008/06/varing-cffile-and-result-variable.html' title='VARing cffile and the result variable'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-3927463280829954604</id><published>2008-05-03T14:59:00.000+02:00</published><updated>2008-05-03T15:00:29.247+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='webdeveloper'/><title type='text'>Web Developer's Handbook</title><content type='html'>This endless list is like a &lt;a href="http://alvit.de/handbook/"&gt;Web Developers's Handbook&lt;/a&gt; at it's best ... a lot a page with stuff you already know but some interesting news as well&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-3927463280829954604?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/3927463280829954604/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=3927463280829954604' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/3927463280829954604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/3927463280829954604'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2008/05/web-developers-handbook.html' title='Web Developer&apos;s Handbook'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-3257026905132085190</id><published>2008-04-20T12:23:00.003+02:00</published><updated>2008-04-20T12:47:12.360+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>Apache: Disable HostNameLookups</title><content type='html'>After an upgrade to our infrastructure (&lt;a href="http://tunesbag.blogspot.com/2008/04/say-hello-to-our-new-servers.html"&gt;see a picture here&lt;/a&gt;), the delivery of content through apache was incredible slowly - the reason was that we moved our DNS servers to an external location and had no internal server for this task any more.&lt;br /&gt;After some research we found out that disabling the host name lookup (HostNameLookups = Off) helped to speed up the pages delivery. Now our analyzer will perform the lookup task and we're happy again ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-3257026905132085190?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/3257026905132085190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=3257026905132085190' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/3257026905132085190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/3257026905132085190'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2008/04/apache-disable-hostnamelookups.html' title='Apache: Disable HostNameLookups'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-3115235028094971811</id><published>2008-04-16T00:26:00.002+02:00</published><updated>2008-04-16T00:29:02.829+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jrun'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>JRUN crashes after changing the hostname of a machine</title><content type='html'>Yeasterday we updated our system and renamed a server from www-4 to www04 in our internal DNS system. After that, this server started to deliver pages very slowly (with a very low load, however) and after some reasearch we found out that chaning the hostname was responsible.&lt;br /&gt;So make sure your internal hostname and the hostname set in /etc/hostname is the very same!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-3115235028094971811?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/3115235028094971811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=3115235028094971811' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/3115235028094971811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/3115235028094971811'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2008/04/jrun-crashes-after-changing-hostname-of.html' title='JRUN crashes after changing the hostname of a machine'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-7381664046345221290</id><published>2008-03-20T10:30:00.002+01:00</published><updated>2008-03-20T10:42:16.019+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='webservice'/><category scheme='http://www.blogger.com/atom/ns#' term='hints'/><title type='text'>MD5 Hash values: Be aware of uppercase/lowercase</title><content type='html'>These days I had to deal with a web service which needs a parameter as &lt;a href="http://livedocs.adobe.com/coldfusion/8/functions_h-im_01.html&amp;amp;sig2=YLZuSskJy0NRs5txBW6SFw"&gt;MD5 hash&lt;/a&gt;. I played around with for some time but authentification always failed, I did everything according to the documentation, however. Then I found out that the other service is checking the hash value case-sensitive, so I had to add a lcase to the string.&lt;br /&gt;Some further research shows that almost every other service I know produces lowercase only hash values, ColdFusion produces uppercase values. Be aware of that! ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-7381664046345221290?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/7381664046345221290/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=7381664046345221290' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/7381664046345221290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/7381664046345221290'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2008/03/md5-hash-values-be-aware-of.html' title='MD5 Hash values: Be aware of uppercase/lowercase'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-7190156206502720522</id><published>2008-02-25T08:54:00.002+01:00</published><updated>2008-02-25T09:03:39.746+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cfhttp'/><category scheme='http://www.blogger.com/atom/ns#' term='cffile'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><category scheme='http://www.blogger.com/atom/ns#' term='jvm'/><title type='text'>JVM heap errors: Check every cffile / cfhttp request</title><content type='html'>This weekend I ran into trouble because the JVM (too small heap size) was crashing several times and after some research and debugging I found out that reading a 80 megabyte file with cffile was the reason for all the pain.&lt;br /&gt;So be aware of this and do the following:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Check the size of uploaded files (by performing checks with the size given in cffile or using a routine like &lt;a href="http://www.cflib.org/udf.cfm?ID=787"&gt;that&lt;/a&gt;).&lt;/li&gt;&lt;li&gt;Before you request any unknown website using cfhttp, do a HEADER operation and check out for the size (cfhttp.responseHeader, Content-Length) or add Content-Range headers to the request in order to allow only a certain content size&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-7190156206502720522?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/7190156206502720522/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=7190156206502720522' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/7190156206502720522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/7190156206502720522'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2008/02/jvm-heap-errors-check-every-cffile.html' title='JVM heap errors: Check every cffile / cfhttp request'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-9161499965504678997</id><published>2008-02-24T20:34:00.002+01:00</published><updated>2008-02-24T20:41:15.614+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac os'/><category scheme='http://www.blogger.com/atom/ns#' term='update'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>ColdFusion / MacOS 10.5 / WebConnector: Not again!!</title><content type='html'>Every update of apache is a real pain for me and maybe most of the ColdFusion community. Each time the server engine is updated, the WebConnector has to be updated as well. In the current case, I decided to update my Mac OS finally to Leopard (10.5) and - bingo - with the apache update from 1.3 to 2.2 the whole connector stuff isn't working any more.&lt;br /&gt;One solution might have been again to download the whole connector sources (XCode) and compile the connector myself - some hours work plus about 1-2 GB downloads for an about 90kb file.&lt;br /&gt;The other solution: &lt;a href="http://www.scottpinkston.org/blog/index.cfm/2007/10/29/ColdFusion-8-on-Leopard-with-Apache--an-answer-for-the-rest-of-us"&gt;Follow these instructions&lt;/a&gt; and download the file offered for download.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-9161499965504678997?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/9161499965504678997/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=9161499965504678997' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/9161499965504678997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/9161499965504678997'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2008/02/coldfusion-macos-105-webconnector-not.html' title='ColdFusion / MacOS 10.5 / WebConnector: Not again!!'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-3420476727530041562</id><published>2008-02-12T10:12:00.001+01:00</published><updated>2008-02-12T10:14:30.277+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='orm coldfusion transfer'/><title type='text'>Attention: INNER JOIN is now the default in transfer</title><content type='html'>With the update to the latest release of the CF - based ORM system &lt;a href="http://www.transfer-orm.com"&gt;Transfer&lt;/a&gt; 0.6.3. , the default JOIN behaviour has been changed to INNER JOIN - I was wondering why some of my queries started to return a much smaller number of records at once ;-)&lt;br /&gt;The solution was to write the full LEFT OUTER JOIN statement instead.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-3420476727530041562?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/3420476727530041562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=3420476727530041562' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/3420476727530041562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/3420476727530041562'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2008/02/attention-inner-join-is-now-default-in.html' title='Attention: INNER JOIN is now the default in transfer'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-6033138091184305543</id><published>2008-01-23T13:19:00.000+01:00</published><updated>2008-01-23T13:23:25.470+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cf8'/><title type='text'>Very uncool - no implicit structure creation within function calls</title><content type='html'>I am using more and more features provided by CF8 as we migrate our servers to this new system. One feature I love is the implicit creation of structures without the need of calling StructNew() all the time.&lt;br /&gt;So - a major downside is that you cannot create structures using this way within functions calls ... very bad. An example:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;a_component.StoreInformation( key = arguments.key, data = { firstname= a_str_firstname } )&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;Very uncool, same thing &lt;a href="http://www.bennadel.com/blog/740-Learning-ColdFusion-8-Implicit-Struct-And-Array-Creation.htm"&gt;noticed by Ben&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-6033138091184305543?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/6033138091184305543/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=6033138091184305543' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/6033138091184305543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/6033138091184305543'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2008/01/very-uncool-no-implicit-structure.html' title='Very uncool - no implicit structure creation within function calls'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-566404058308680769</id><published>2007-11-27T18:39:00.001+01:00</published><updated>2008-02-25T15:03:03.426+01:00</updated><title type='text'>Reset ColdFusion Administrator password</title><content type='html'>Today I wanted to edit a datasource name in the ColdFusion Administrator but I did not remember the password on this development server (hell, where are the nice little yellow post-its ;-)).&lt;br /&gt;&lt;a href="http://www.creative-restraint.co.uk/blog/index.cfm?mode=entry&amp;amp;entry=EB2332D5-A57E-D884-9AD715E4EEFE8200"&gt;Here you can find a nice solution how to achive a password - reset.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-566404058308680769?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/566404058308680769/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=566404058308680769' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/566404058308680769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/566404058308680769'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2007/11/reset-coldfusion-administrator-password.html' title='Reset ColdFusion Administrator password'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-2032204572873231311</id><published>2007-11-14T22:08:00.000+01:00</published><updated>2007-11-14T22:31:13.113+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='json'/><title type='text'>XML vs JSON: Incredible performance differences</title><content type='html'>I admit - I am a real fan of XML and try to use this format whenever it is possible. The reason is simple: It's a clear format and very easy to exchange data with other applications (also with applications &lt;span style="font-style: italic;"&gt;not&lt;/span&gt; running in a browser).&lt;br /&gt;During the finalization of a &lt;a href="http://www.tunesbag.com/"&gt;project&lt;/a&gt; we came across several performance problems with a huge dataset and I tried to move the data interaction to &lt;a href="http://borkweb.com/story/the-case-for-json-what-is-it-and-why-use-it"&gt;JSON&lt;/a&gt;.&lt;br /&gt;The result: The time of parsing a XML with &lt;a href="http://www.jquery.com/"&gt;jQuery&lt;/a&gt; (loop over the element using each) was up to &lt;span style="font-style: italic;"&gt;100 times higher &lt;/span&gt;than doing a simple JSON request (According to the results of the &lt;a href="http://www.getfirebug.com/console.html"&gt;firebug console.timer&lt;/a&gt; output). No special treatment, just looping over the records and building an array in javaScript using the default jQuery way.&lt;br /&gt;&lt;br /&gt;So, I hope in future times XML  parsing will speed up with faster computers (although I think there will be not much gain in the near future because  browser XML parsers just use  MSXML or Xerces right now).&lt;span style="display: block;" id="formatbar_Buttons"&gt;&lt;span class="" style="display: block;" id="formatbar_CreateLink" title="" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;br /&gt;If you do not have ColdFusion 8 (which offers built-in JSON support), you might take a look at &lt;a href="http://www.epiphantastic.com/cfjson/"&gt;this library&lt;/a&gt;.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-2032204572873231311?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/2032204572873231311/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=2032204572873231311' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/2032204572873231311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/2032204572873231311'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2007/11/xml-vs-json-incredible-performance.html' title='XML vs JSON: Incredible performance differences'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-2754205226397335570</id><published>2007-11-08T14:39:00.000+01:00</published><updated>2007-11-08T14:40:23.417+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='apache security'/><title type='text'>20 ways to secure your apache server</title><content type='html'>I can only recommend to &lt;a href="http://www.petefreitag.com/item/505.cfm"&gt;go through the points of this posting&lt;/a&gt; if you want to secure your apache webserver.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-2754205226397335570?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/2754205226397335570/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=2754205226397335570' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/2754205226397335570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/2754205226397335570'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2007/11/20-ways-to-secure-your-apache-server.html' title='20 ways to secure your apache server'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-8175822067766110823</id><published>2007-11-08T14:18:00.000+01:00</published><updated>2007-11-08T14:30:50.704+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion apache'/><title type='text'>Easy way to run several ColdFusion instances using one apache server</title><content type='html'>As you might know, in the server configuration JRun is the J2EE server in the background of CF and so in the apache configuration you will notice that the whole connector stuff is done using &lt;span style="font-style: italic;"&gt;JRunConfig&lt;/span&gt;* directives.&lt;br /&gt;As long as only one version of CF is running using apache as webserver everything is fine, it starts getting complicated when you decide to run e.g. 7 and 8 on one machine using one apache instance. &lt;a href="http://www.tomdeman.com/machblog/index.cfm?event=showEntry&amp;amp;entryId=FAA22A68-C29D-0239-77C89FE2F6C8CBCD"&gt;Here&lt;/a&gt; you can find a solution how to set it up with different JRun ports which I did once as well (took me hours to find out all these stuff ;-)).&lt;br /&gt;A very nice, quick and dirty solution I came accross some time ago is to use the power of mod_proxy - in this case you tell apache to forward all requests to a different port / URL whatever.&lt;br /&gt;So I did the following:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Set up CF 7&lt;/li&gt;&lt;li&gt;Connect CF 7 to apache using the default way&lt;/li&gt;&lt;li&gt;Set up CF 8 using the internal web server&lt;/li&gt;&lt;li&gt;Enabled mod_proxy in apache (AddModule / LoadModule)&lt;/li&gt;&lt;li&gt;Added the following lines in my virtual host configuration for a CF8 host:&lt;br /&gt;ProxyRequests on&lt;br /&gt;ProxyPass / http://127.0.0.1:8500/&lt;/li&gt;&lt;li&gt;Worked!&lt;/li&gt;&lt;/ul&gt;Of course this is not a proper solution for deployment but for development purporses it's great. Using this way all apache modules and configuration possibilites (e.g. mod_rewrite, mod_deflate, access control) can be used and the internal webserver of CF is just the dummy backend.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-8175822067766110823?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/8175822067766110823/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=8175822067766110823' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/8175822067766110823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/8175822067766110823'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2007/11/easy-way-to-run-several-coldfusion.html' title='Easy way to run several ColdFusion instances using one apache server'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-989830387245562549</id><published>2007-11-07T17:56:00.001+01:00</published><updated>2007-11-07T18:01:54.178+01:00</updated><title type='text'>No ugly JRUN error message on ColdFusion startup any more</title><content type='html'>Wouldn't it be nice to get rid of the ugly JRUN startup error message? &lt;a href="http://www.bloginblack.de/archives/000944.cfm"&gt;Here&lt;/a&gt; (bloginblack) I have found a way to accomplish this - you just need to add a new line in the connector configuration in the apache configuration. I will give it a try in the next few days.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-989830387245562549?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/989830387245562549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=989830387245562549' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/989830387245562549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/989830387245562549'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2007/11/no-ugly-jrun-error-message-on.html' title='No ugly JRUN error message on ColdFusion startup any more'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-7034171270889454253</id><published>2007-11-07T00:54:00.000+01:00</published><updated>2007-11-07T01:09:55.536+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='setup'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>ColdFusion 8 / Apache 2.2.3</title><content type='html'>I recently set up a new testing server using the latest &lt;a href="http://www.debian.org/"&gt;debian etch&lt;/a&gt; release. During the setup, apache 2.2.3 has been installed as default webserver and to make ColdFusion 8 (and maybe 7) running with this release, the following steps are necessary:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Install CF8 using the built-in webserver&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Open /etc/init.d/apache2 with vi&lt;/li&gt;&lt;li&gt;Note the paths set by APACHE2 / APACHE2CTL&lt;/li&gt;&lt;li&gt;Now execute the following command:&lt;/li&gt;&lt;li&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;/opt/coldfusion8/runtime/bin/wsconfig -server coldfusion -ws Apache -bin /usr/sbin/apache2 -script /usr/sbin/apache2ctl -dir /etc/apache2/ -v&lt;/span&gt;&lt;/li&gt;&lt;li&gt;bin = APACHE2 variable&lt;/li&gt;&lt;li&gt;script = APACHE2CTL variable&lt;/li&gt;&lt;li&gt;Open the httpd.conf and add AddHandler jrun-handler .cfm .cfc .cfswf.jsp .jws to the last line (.cfm / .cfc might be missing). &lt;a href="http://www.tomdeman.com/machblog/index.cfm?event=showEntry&amp;amp;entryId=1E10960E-C29D-0239-73CF063FE3E519D4"&gt;Found this solution here&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;Done!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-7034171270889454253?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/7034171270889454253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=7034171270889454253' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/7034171270889454253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/7034171270889454253'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2007/11/coldfusion-8-apache-223.html' title='ColdFusion 8 / Apache 2.2.3'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-5396933108504091389</id><published>2007-11-01T17:14:00.000+01:00</published><updated>2007-11-01T17:16:56.973+01:00</updated><title type='text'>Access other application scopes</title><content type='html'>In one of our projects, it was necessary to access application scope variables stored in a different application than the current one for security reasons. After some research I came accross this posting, which covers the technique to do exactly this: &lt;a href="http://www.lynchconsulting.com.au/blog/index.cfm/2006/10/23/Hacking-the-application-scope-in-CFMX"&gt;http://www.lynchconsulting.com.au/blog/index.cfm/2006/10/23/Hacking-the-application-scope-in-CFMX&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;        var oApp = createObject(&lt;span style="color: rgb(0, 0, 255);"&gt;"java"&lt;/span&gt;,&lt;span style="color: rgb(0, 0, 255);"&gt;"coldfusion.runtim&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;e.ApplicationScopeTracker"&lt;/span&gt;);&lt;br /&gt;        var applications = oApp.getApplicationKeys();  &lt;br /&gt;Of course, this is an undocumented feature and who knows if it will still work in the next CF version, but it's good to know that it is possible ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-5396933108504091389?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/5396933108504091389/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=5396933108504091389' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/5396933108504091389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/5396933108504091389'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2007/11/access-other-application-scopes.html' title='Access other application scopes'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-3419222439679511784</id><published>2007-10-24T11:29:00.000+02:00</published><updated>2007-10-24T13:12:55.924+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='orm coldfusion transfer'/><title type='text'>ORM - or why did I spend so much time with writing SQL by hand?</title><content type='html'>Some months ago I started playing around with &lt;a href="http://en.wikipedia.org/wiki/Object-relational_mapping"&gt;ORM tools&lt;/a&gt; for ColdFusion - the two well known solutions in this area are &lt;a href="http://www.reactorframework.com/reactor"&gt;Reactor&lt;/a&gt; and &lt;a href="http://www.transfer-orm.com/"&gt;Transfer&lt;/a&gt;.&lt;br /&gt;Until now most SQL code in our CFMX applications is written by hand or by a small component called "autoSQL", which is more or less a very stripped down version of an ORM tool. But as time goes by, it become more and more necessary to bring some standards in here and I am glad that I have found now a very good solution with Transfer.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;If you need some arguments for using ORM, try these:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Reduce time to write SQL&lt;/li&gt;&lt;li&gt;Ability to switch to a new RDMS without touching the code&lt;/li&gt;&lt;li&gt;More readable DB code&lt;/li&gt;&lt;li&gt;Focus on the real important issues in your application (workflow, security)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How does the whole thing work?&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;First of all, you have to create some XML files which document your database and table structures. Transfer follows an package/object approach so that all the tables can be managed in an even more readable way.&lt;br /&gt;&lt;br /&gt;The second step already happens in CFML - you play around with your data! Depending on the task you want to fullfill, several methods are available (Update, Save, Delete).&lt;br /&gt;&lt;br /&gt;An example:&lt;br /&gt;&lt;blockquote&gt;cfset var a_transfer = application.beanFactory.getBean( 'ContentTransfer' ).getTransfer()&lt;br /&gt;cfset a_new_item = a_transfer.new( 'contacts.contact' )&lt;br /&gt;cfset a_new_item.setentrykey( CreateUUID() )&lt;br /&gt;cfset a_new_item.setname( arguments.name)&lt;br /&gt;cfset a_new_item.setdescription( arguments.description )&lt;br /&gt;cfset a_new_item.setdt_created( Now() )&lt;br /&gt;cfset a_transfer.save(a_new_item)&lt;/blockquote&gt;&lt;br /&gt;The best way is to start with the included &lt;a href="http://www.transfer-orm.com/download/transfer/tBlog-v0.6.3.zip"&gt;Blog demo application&lt;/a&gt; - there the whole concept is shown in a very good way. Take a look at the available &lt;a href="http://www.transfer-orm.com/?action=transfer.presentation"&gt;presentations&lt;/a&gt; as well to gain a better understanding of the basic concepts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-3419222439679511784?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/3419222439679511784/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=3419222439679511784' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/3419222439679511784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/3419222439679511784'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2007/09/orm-or-why-did-i-spent-so-much-time.html' title='ORM - or why did I spend so much time with writing SQL by hand?'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-2617298930389203747</id><published>2007-10-22T12:39:00.000+02:00</published><updated>2007-10-22T12:43:27.768+02:00</updated><title type='text'>Protect XML configuration files using .htaccess</title><content type='html'>In most of my projects, I create a mapping called /configurationxy to point to the configuration files (e.g. transfer XML files, mach-ii configuration and so on). This directory is not located under the webroot so no direct access is possible at all.&lt;br /&gt;If this is not possible (e.g. due to shared hosting), never forget to protect your .XML files from being viewed and downloaded using e.g. the .htaccess feature of apache. In this case the file will be readable by the system itself but no user will be able to download the file. See an example configuration &lt;a href="http://www.ssi-developer.net/htaccess/htaccess_protection_file.shtml"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-2617298930389203747?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/2617298930389203747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=2617298930389203747' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/2617298930389203747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/2617298930389203747'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2007/10/protect-xml-configuration-files-using.html' title='Protect XML configuration files using .htaccess'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-26765085396647274</id><published>2007-10-22T12:28:00.001+02:00</published><updated>2010-05-04T13:48:28.700+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='machii'/><category scheme='http://www.blogger.com/atom/ns#' term='transfer'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><title type='text'>Mach-II Framework 1.5 has been released</title><content type='html'>A new version (1.5) of the great open source MVC framework Mach-II has been released for production use. The most important change for me in this release is the introduction of XML includes, so that the main configuration - XML will stay clean.&lt;br /&gt;To be honest, the learing curve of this framework was quite high for me in the beginning but now I don't want to miss the system any more.&lt;br /&gt;One important note: &lt;span style="font-weight: bold;"&gt;Never put the business logic in the model components.&lt;/span&gt; I made this mistake in the beginning because it looked so damn easy but now I have created a sub directory named "cfc" and in this directory all the business logic is done.&lt;br /&gt;So the perfect combination for me at the moment for a new project is:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.mach-ii.com/"&gt;Mach-II&lt;/a&gt; framework&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.coldspringframework.org/"&gt;ColdSpring&lt;/a&gt; for wiring CFC together&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.transfer-orm.com/"&gt;TransferORM&lt;/a&gt; for DB access&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.jquery.com/"&gt;jQuery&lt;/a&gt; for interface operations&lt;/li&gt;&lt;/ul&gt;The perfect team for the next cool Web 2.0 application ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-26765085396647274?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/26765085396647274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=26765085396647274' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/26765085396647274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/26765085396647274'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2007/10/mach-ii-framework-15-has-been-released.html' title='Mach-II Framework 1.5 has been released'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-40145201151215346</id><published>2007-10-04T18:08:00.000+02:00</published><updated>2007-10-04T18:20:49.699+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><title type='text'>escape vs encodeURIComponent</title><content type='html'>As long as you pass on only A-Z, 0-9 and so on to javaScript functions, encoding with &lt;span style="font-weight: bold;"&gt;escape&lt;/span&gt; is the proper method. As an Austrian company we have to deal with umlaute (special characters) a lot, however. Therefore in this situation &lt;span style="font-weight: bold;"&gt;encodeURIComponent&lt;/span&gt; is the best choice. &lt;a href="http://xkr.us/articles/javascript/encode-compare/"&gt;Here&lt;/a&gt; you can find a good explanation and some examples concerning the differences.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-40145201151215346?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/40145201151215346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=40145201151215346' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/40145201151215346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/40145201151215346'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2007/10/escape-vs-encodeuricomponent.html' title='escape vs encodeURIComponent'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-2147811887638175427</id><published>2007-09-24T09:17:00.001+02:00</published><updated>2007-09-24T09:26:01.860+02:00</updated><title type='text'>Upload files to Webserver using WebDAV</title><content type='html'>WebDAV is a cool alternative to FTP and due to it's HTTP-basis, the typical port / passive problems of FTP can be ignored. Since version 7, ColdFusion support a huge range of the WebDAV commands, including TRACE, OPTIONS and so on.&lt;div&gt;To put a file to an enabled server, you simply have to use the following code:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;cfhttp method="PUT" url="http://Server/Directory/Filename" username="username" password="password" throwonerror="true"        cfhttpparam type="header" name="Content-Type" value="content/type"&lt;br /&gt;     cfhttpparam type="file" name="file" file="#a_str_full_path_of_filename#"&lt;br /&gt;  /cfhttp&lt;/blockquote&gt;Don't forget to check the cfhttp response for possible errors!&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-2147811887638175427?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/2147811887638175427/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=2147811887638175427' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/2147811887638175427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/2147811887638175427'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2007/09/upload-files-to-webserver-using-webdav.html' title='Upload files to Webserver using WebDAV'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-3295912328402750941</id><published>2007-09-13T22:37:00.000+02:00</published><updated>2007-10-24T13:01:31.138+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><title type='text'>Avoid locking of session variables</title><content type='html'>In most of our applications, session variables are just used for holding a structure with security information (aka securitycontext). As locking is essential (and not locking can lead to some terrible headache) all readings and writes must be protected (especially if race conditions could occur).&lt;br /&gt;So our approach is to copy the securitycontext on each request into the request scope using the following code:&lt;br /&gt;Application.cfc / onRequest&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;cflock scope="session" timeout="30" type="readonly"&lt;br /&gt;cfset a_struct_securitycontext=" Duplicate(session.a_struct_securitycontext)"&lt;br /&gt;/cflock&lt;cflock scope="session" timeout="30" type="readonly"&gt;&lt;br /&gt;&lt;cfset a_struct_securitycontext=" Duplicate(session.a_struct_securitycontext)"&gt;&lt;br /&gt;&lt;/cfset&gt;&lt;/cflock&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;(Of course a check is needed if the securitycontext exists at all ;-)).&lt;br /&gt;Explanation:&lt;br /&gt;Using this way the structure can be accessed without any locking - very important to mention is the Duplicate function because we want a deep copy and not just a reference to the original structure. Be aware of this fact, because the request structure will not change until the next request is executed!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-3295912328402750941?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/3295912328402750941/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=3295912328402750941' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/3295912328402750941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/3295912328402750941'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2007/09/avoid-locking-of-session-variables.html' title='Avoid locking of session variables'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-2444084439378691609</id><published>2007-09-13T19:06:00.000+02:00</published><updated>2007-10-24T13:04:26.111+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><title type='text'>jQuery 1.2 released</title><content type='html'>&lt;span style="font-family:georgia;"&gt;Yeasterday a new version of &lt;/span&gt;&lt;a style="font-family: georgia;" href="http://www.jquery.com/"&gt;jQuery&lt;/a&gt;&lt;span style="font-family:georgia;"&gt; has been released (1.2). If you ever have to deal with JavaScript in your application in a professional way, give this library a try. It's sooo smooth and I prefer this one very very much over &lt;a href="http://prototypejs.org/"&gt;prototype&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:georgia;" &gt;So, what's the big deal of this tiny (22kb) little .js file?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;The design of the library is just gorgeous. The basic principle is very simple:&lt;/span&gt;&lt;br /&gt;&lt;ol  style="font-family:georgia;"&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Select &lt;/span&gt;the desired objects&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Perform &lt;/span&gt;some action on them&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-family:georgia;"&gt;Sounds simple, hmm? The power of the system can be shown in some short example:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:georgia;" &gt;$('#this_is_the_id').hide();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;In this case an object with the ID this_is_the_id is selected and hidden.&lt;/span&gt;&lt;br /&gt;&lt;p  style="font-family:georgia;"&gt;&lt;span style="font-style: italic;"&gt;$("#orderedlist &gt; li").addClass("blue");&lt;/span&gt;&lt;br /&gt;I this example,  the CSS class "blue" is added to all child elements of an ordered list.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;$(document).ready(function() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here some code can be placed which is executed as soon as the DOM structure of the document has finished loading - so no more onLoad events which can have a huge delay because of e.g. external images or advertising stuff.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.jquery.com/Tutorials:Getting_Started_with_jQuery"&gt;Here you can find some more tutorials on this.&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;a style="font-family: georgia;" href="http://www.bennadel.com/blog/949-jQuery-1-2-An-Unexpected-Surprise.htm"&gt;Thanks to Ben&lt;/a&gt;&lt;span style="font-family:georgia;"&gt; for his posting about the new release. He also mentions his fear about getting lazy in writing real hardcore JS stuff, but my opinion is goes ahead with the the jQuery credo in this case: Write less, do more!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-2444084439378691609?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/2444084439378691609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=2444084439378691609' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/2444084439378691609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/2444084439378691609'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2007/09/jquery-12-released.html' title='jQuery 1.2 released'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047485373075326079.post-6159888715074073990</id><published>2007-09-12T11:29:00.000+02:00</published><updated>2007-09-12T11:34:03.721+02:00</updated><title type='text'>Welcome to my new ColdFusion Blog</title><content type='html'>My nams is Hansjoerg Posch and I am developing Web Applications in ColdFusion for more than four years now. In this blog I will post about interesting stuff, new technologies and give you some tipps and insights on my current work at &lt;a href="http://www.InBox.cc/"&gt;InBox.cc&lt;/a&gt;.&lt;br /&gt;Feel free to comment any articles!&lt;br /&gt;&lt;br /&gt;&lt;a href="https://www.xing.com/profile/Hansjoerg_Posch"&gt;View my XING profile&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4047485373075326079-6159888715074073990?l=cfstuff.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfstuff.blogspot.com/feeds/6159888715074073990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4047485373075326079&amp;postID=6159888715074073990' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/6159888715074073990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047485373075326079/posts/default/6159888715074073990'/><link rel='alternate' type='text/html' href='http://cfstuff.blogspot.com/2007/09/welcome-to-my-new-coldfusion-blog.html' title='Welcome to my new ColdFusion Blog'/><author><name>Hansjoerg</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
