<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog in Black &#187; Agent M on CF</title>
	<atom:link href="http://bloginblack.de/topics/agent-m-on-cf/feed/" rel="self" type="application/rss+xml" />
	<link>http://bloginblack.de</link>
	<description>Protecting the web from bad ColdFusion code (since 2003)</description>
	<lastBuildDate>Fri, 10 Feb 2012 11:04:54 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>ParameterExists =&gt; isDefined</title>
		<link>http://bloginblack.de/2010/02/parameterexists-isdefined/</link>
		<comments>http://bloginblack.de/2010/02/parameterexists-isdefined/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 14:15:47 +0000</pubDate>
		<dc:creator>marcus</dc:creator>
				<category><![CDATA[Agent M on CF]]></category>
		<category><![CDATA[CFML]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[RegExp]]></category>

		<guid isPermaLink="false">http://bloginblack.de/?p=1111</guid>
		<description><![CDATA[Another quick regex: to perform a sitewide search/replace that replaces every "parameterExists" by "isDefined"...<p><a href="http://bloginblack.de/2010/02/parameterexists-isdefined/">ParameterExists => isDefined</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Another quick regex: to perform a sitewide search/replace that replaces every &#8220;parameterExists&#8221; by &#8220;isDefined&#8221;, simply do a:</p>
<p>Search: parameterExists\(([^)]*)\)<br />
Replace: isDefined(&#8220;\1&#8243;)</p>
<p>That saved me at least 2 hours <img src='http://bloginblack.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><a href="http://bloginblack.de/2010/02/parameterexists-isdefined/">ParameterExists => isDefined</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=ParameterExists+%3D%3E+isDefined+http://bloginblack.de/?p=1111" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2010/02/parameterexists-isdefined/&amp;title=ParameterExists+%3D%3E+isDefined" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2010/02/parameterexists-isdefined/&amp;t=ParameterExists+%3D%3E+isDefined" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2010/02/parameterexists-isdefined/&amp;title=ParameterExists+%3D%3E+isDefined" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2010/02/parameterexists-isdefined/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>cfqueryparam / regular expression</title>
		<link>http://bloginblack.de/2010/02/cfqueryparam-regular-expression/</link>
		<comments>http://bloginblack.de/2010/02/cfqueryparam-regular-expression/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 14:03:50 +0000</pubDate>
		<dc:creator>marcus</dc:creator>
				<category><![CDATA[Agent M on CF]]></category>
		<category><![CDATA[CFML]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[RegExp]]></category>
		<category><![CDATA[SQL Injection]]></category>

		<guid isPermaLink="false">http://bloginblack.de/?p=1108</guid>
		<description><![CDATA[Currently, I'm migrating a CF5/Win project to CFMX9/Linux. Apart from the usual path issues, the one who programmed this app yeeears ago did not protect *any single* form- or url-variable inside CFQUERY against misuse or even SQL-Injection. Not one syntax check, no CFQUERYPARAM... *sigh*
<p><a href="http://bloginblack.de/2010/02/cfqueryparam-regular-expression/">cfqueryparam / regular expression</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Currently, I&#8217;m migrating a CF5/Win project to CFMX9/Linux. Apart from the usual path issues, the one who programmed this app yeeears ago did not protect *any single* form- or url-variable inside CFQUERY against misuse or even SQL-Injection. Not one syntax check, no CFQUERYPARAM&#8230; *sigh*</p>
<p>Unfortunately, it&#8217;s impossible to perform a sitewide search/replace, so I have to open every single file containing CFQUERY tags. To get a list of all the files containing &#8220;&lt;cfquery&#8230;&#8221;, I did a quick</p>
<p>grep -rli &#8220;\&lt;cfquery &#8221; &gt; cfqueryfiles.txt</p>
<p>Then, I wrote two tiny regular expressions that make the manual replacing a lot faster:</p>
<p>Step 1: Strings =&gt; Varchar<br />
Replace &#8216;#([^#]*)#&#8217; by &lt;cfqueryparam cfsqltype=&#8221;CF_SQL_VARCHAR&#8221; maxlength=&#8221;50&#8243; value=&#8221;#\1#&#8221;&gt;</p>
<p>Step 2: Numbers =&gt; Big<br />
Replace #([^#]*)# by &lt;cfqueryparam cfsqltype=&#8221;CF_SQL_BIGINT&#8221; value=&#8221;#\1#&#8221;&gt;<br />
(Careful! This replaces ANY variable, but does its job inside CFQUERY. Do NOT &#8220;replace all&#8221;.)</p>
<p>After that, you only have to set the correct sqltypes and/or maxlengths.</p>
<p><a href="http://bloginblack.de/2010/02/cfqueryparam-regular-expression/">cfqueryparam / regular expression</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=cfqueryparam+%2F+regular+expression+http://bloginblack.de/?p=1108" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2010/02/cfqueryparam-regular-expression/&amp;title=cfqueryparam+%2F+regular+expression" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2010/02/cfqueryparam-regular-expression/&amp;t=cfqueryparam+%2F+regular+expression" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2010/02/cfqueryparam-regular-expression/&amp;title=cfqueryparam+%2F+regular+expression" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2010/02/cfqueryparam-regular-expression/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>The monitoring service is not available</title>
		<link>http://bloginblack.de/2008/09/the-monitoring-service-is-not-available/</link>
		<comments>http://bloginblack.de/2008/09/the-monitoring-service-is-not-available/#comments</comments>
		<pubDate>Thu, 18 Sep 2008 12:00:00 +0000</pubDate>
		<dc:creator>marcus</dc:creator>
				<category><![CDATA[Agent M on CF]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[Monitoring]]></category>

		<guid isPermaLink="false">http://www.bloginblack.de/?p=938</guid>
		<description><![CDATA[If your CF8 installation starts without error, but returns an error 500 stating something like&#8230;
&#8220;500 the monitoring service is not available&#8221;
&#8230;on each request, then probably your neo-monitoring.xml is corrupt. This solution did the trick for me:
-Rename or delete the corrupt {cf_dir}/lib/neo-monitoring.xml
-Restart CF
CF then creates a new neo-monitoring.xml, but totally refuses to work if this file [...]<p><a href="http://bloginblack.de/2008/09/the-monitoring-service-is-not-available/">The monitoring service is not available</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>If your CF8 installation starts without error, but returns an error 500 stating something like&#8230;</p>
<p>&#8220;500 the monitoring service is not available&#8221;</p>
<p>&#8230;on each request, then probably your neo-monitoring.xml is corrupt. This solution did the trick for me:</p>
<p>-Rename or delete the corrupt {cf_dir}/lib/neo-monitoring.xml<br />
-Restart CF</p>
<p>CF then creates a new neo-monitoring.xml, but totally refuses to work if this file has 0 bytes. </p>
<p><a href="http://bloginblack.de/2008/09/the-monitoring-service-is-not-available/">The monitoring service is not available</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=The+monitoring+service+is+not+available+http://bloginblack.de/?p=938" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2008/09/the-monitoring-service-is-not-available/&amp;title=The+monitoring+service+is+not+available" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2008/09/the-monitoring-service-is-not-available/&amp;t=The+monitoring+service+is+not+available" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2008/09/the-monitoring-service-is-not-available/&amp;title=The+monitoring+service+is+not+available" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2008/09/the-monitoring-service-is-not-available/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Installing CF8 on Debian Etch</title>
		<link>http://bloginblack.de/2007/11/installing-cf8-on-debian-etch/</link>
		<comments>http://bloginblack.de/2007/11/installing-cf8-on-debian-etch/#comments</comments>
		<pubDate>Fri, 02 Nov 2007 00:00:00 +0000</pubDate>
		<dc:creator>marcus</dc:creator>
				<category><![CDATA[Agent M on CF]]></category>

		<guid isPermaLink="false">http://www.bloginblack.de/?p=887</guid>
		<description><![CDATA[Yesterday evening, I needed to set up a CF8 development environment in VMWare. Honestly &#8211; this was the first install (and believe me, I installed a LOT of CF servers in my career) that really worked like a charm &#8211; good work, Adobe!
If you ever set up a CF 5/6/7 server, you know about the [...]<p><a href="http://bloginblack.de/2007/11/installing-cf8-on-debian-etch/">Installing CF8 on Debian Etch</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Yesterday evening, I needed to set up a CF8 development environment in VMWare. Honestly &#8211; this was the first install (and believe me, I installed a LOT of CF servers in my career) that really worked like a charm &#8211; good work, Adobe!</p>
<p>If you ever set up a CF 5/6/7 server, you know about the common problems such as non-working apache connectors, Installers that refuse to execute and so on &#8211; all that just did not happen. Have a look at my bash_history&#8230;</p>
<p>System: Debian Etch netinstall, Installation type: Base system only</p>
<p>apt-get install ssh<br />
apt-get install apache2<br />
useradd coldfusion<br />
cd<br />
ls -la<br />
chmod +x Coldfusion-8-lin.bin<br />
./Coldfusion-8-lin.bin<br />
cp /opt/coldfusion8/bin/coldfusion /etc/init.d/<br />
update-rc.d coldfusion defaults<br />
/etc/init.d/coldfusion start<br />
exit</p>
<p>&#8230;and bingo, you end up with a working CF development environment.<br />
The CF installer even managed to install the Apache connector automatically (that NEVER worked for me before).<br />
If that isn&#8217;t easy&#8230; took me about 30 minutes, btw.</p>
<p><a href="http://bloginblack.de/2007/11/installing-cf8-on-debian-etch/">Installing CF8 on Debian Etch</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=Installing+CF8+on+Debian+Etch+http://bloginblack.de/?p=887" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2007/11/installing-cf8-on-debian-etch/&amp;title=Installing+CF8+on+Debian+Etch" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2007/11/installing-cf8-on-debian-etch/&amp;t=Installing+CF8+on+Debian+Etch" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2007/11/installing-cf8-on-debian-etch/&amp;title=Installing+CF8+on+Debian+Etch" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2007/11/installing-cf8-on-debian-etch/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>ColdFusion 5 on openSuSe 10.2</title>
		<link>http://bloginblack.de/2007/03/coldfusion-5-on-opensuse-10-2/</link>
		<comments>http://bloginblack.de/2007/03/coldfusion-5-on-opensuse-10-2/#comments</comments>
		<pubDate>Fri, 23 Mar 2007 00:00:00 +0000</pubDate>
		<dc:creator>marcus</dc:creator>
				<category><![CDATA[Agent M on CF]]></category>

		<guid isPermaLink="false">http://www.bloginblack.de/?p=788</guid>
		<description><![CDATA[Yesterday evening, a friend of mine asked me if I know how to install ColdFusion 5.0 on a up-to-date openSuse system. After some fiddling around, I indeed found a way to get it running, but let&#8217;s start from the beginning:The main problem is: it simply won&#8217;t run out of the box because of the following [...]<p><a href="http://bloginblack.de/2007/03/coldfusion-5-on-opensuse-10-2/">ColdFusion 5 on openSuSe 10.2</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Yesterday evening, a friend of mine asked me if I know how to install ColdFusion 5.0 on a up-to-date openSuse system. After some fiddling around, I indeed found a way to get it running, but let&#8217;s start from the beginning:The main problem is: it simply won&#8217;t run out of the box because of the following facts:</p>
<p>-openSuse comes with a 2.2.x Apache<br />
-The apache module shipped with CF is for Apache 1.3.x only<br />
-Adobe offers a 2.0.x module, but no 2.2.x one<br />
-Nextron.ch has a custom built 2.0.4x module that also won&#8217;t run on 2.2.x Apaches</p>
<p>So finally, I decided to manually compile the latest 1.3 Apache (1.3.37, wohoo! 1337!), which at least swallowed the standard module shipped with CF. So far, so good, next problem: </p>
<p>-CF refused to start</p>
<p>Well, it wasn&#8217;t exactly /bin/cfserver that didn&#8217;t start, it was the &#8220;start&#8221; shell script that fires /bin/cfexec returning &#8220;/opt/coldfusion/bin/cfexec: error while loading shared libraries: libdl.so.2: cannot open shared object file: No such file or directory&#8221;.</p>
<p>Guess what, assuming that you can trust ldd, the libraries were all there:</p>
<p>ldd cfexec<br />
        linux-gate.so.1 =>  (0xffffe000)<br />
        libcfdataaccess.so => /usr/lib/coldfusion/libcfdataaccess.so (0xb7f2b000)<br />
        libporting.so => /usr/lib/coldfusion/libporting.so (0xb7ea2000)<br />
        libdl.so.2 => /usr/lib/coldfusion/libdl.so.2 (0xb7e9e000)<br />
        libpthread.so.0 => /lib/libpthread.so.0 (0xb7e7c000)<br />
        libstdc++-libc6.1-1.so.2 => /usr/lib/libstdc++-libc6.1-1.so.2 (0xb7e33000)<br />
        libm.so.6 => /lib/libm.so.6 (0xb7e0d000)<br />
        libc.so.6 => /lib/libc.so.6 (0xb7cdf000)<br />
        /lib/ld-linux.so.2 (0xb7fba000)</p>
<p>So after some pointless trying and debugging (the error message led me into a totally wrong direction), I noticed that the start script does this&#8230;</p>
<p>ENV_LIST=&#8221;$ENV_LIST LD_ASSUME_KERNEL=2.2.5&#8243;</p>
<p>&#8230;which reminded me of a SLES10/CFMX7 install I had to do lately. Those of you who ever had to install CFMX7 on a SLES10 machine know that you need to &#8220;patch&#8221; the installer file by commenting out the &#8220;export LD_ASSUME_KERNEL&#8221; line inside, so I gave it a try:</p>
<p>ENV_LIST=&#8221;$ENV_LIST&#8221; #LD_ASSUME_KERNEL=2.2.5&#8243;</p>
<p>&#8230;and bingo, CF starts.</p>
<p>To sum it up:</p>
<p>-Preferably use a 1.3 or 2.0 Apache<br />
-Install CF as usual<br />
-Change {cfhome}/bin/start as stated above</p>
<p>Easy if you know it, but a pain to figure out <img src='http://bloginblack.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><a href="http://bloginblack.de/2007/03/coldfusion-5-on-opensuse-10-2/">ColdFusion 5 on openSuSe 10.2</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=ColdFusion+5+on+openSuSe+10.2+http://bloginblack.de/?p=788" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2007/03/coldfusion-5-on-opensuse-10-2/&amp;title=ColdFusion+5+on+openSuSe+10.2" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2007/03/coldfusion-5-on-opensuse-10-2/&amp;t=ColdFusion+5+on+openSuSe+10.2" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2007/03/coldfusion-5-on-opensuse-10-2/&amp;title=ColdFusion+5+on+openSuSe+10.2" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2007/03/coldfusion-5-on-opensuse-10-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>IgniteFusion 2.9b available</title>
		<link>http://bloginblack.de/2006/06/ignitefusion-2-9b-available/</link>
		<comments>http://bloginblack.de/2006/06/ignitefusion-2-9b-available/#comments</comments>
		<pubDate>Wed, 21 Jun 2006 00:00:00 +0000</pubDate>
		<dc:creator>marcus</dc:creator>
				<category><![CDATA[Agent M on CF]]></category>

		<guid isPermaLink="false">http://www.bloginblack.de/?p=725</guid>
		<description><![CDATA[As of June, 19th, a new release (2.9b) of IgniteFusion, a free CF engine I talked about a while ago, is available for download.
It now fully supports UTF8, has a MS-independent codebase and several bug fixed. 
Give it a try, you won&#8217;t regret!  
Ignite Fusion Website
IgniteFusion 2.9b available is a post from: Blog in [...]<p><a href="http://bloginblack.de/2006/06/ignitefusion-2-9b-available/">IgniteFusion 2.9b available</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>As of June, 19th, a new release (2.9b) of IgniteFusion, a free CF engine I talked about a while ago, is available for download.</p>
<p>It now fully supports UTF8, has a MS-independent codebase and several bug fixed. </p>
<p>Give it a try, you won&#8217;t regret! <img src='http://bloginblack.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><a href="http://www.ignitefusion.com/" targer="_blank">Ignite Fusion Website</a></p>
<p><a href="http://bloginblack.de/2006/06/ignitefusion-2-9b-available/">IgniteFusion 2.9b available</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=IgniteFusion+2.9b+available+http://bloginblack.de/?p=725" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2006/06/ignitefusion-2-9b-available/&amp;title=IgniteFusion+2.9b+available" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2006/06/ignitefusion-2-9b-available/&amp;t=IgniteFusion+2.9b+available" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2006/06/ignitefusion-2-9b-available/&amp;title=IgniteFusion+2.9b+available" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2006/06/ignitefusion-2-9b-available/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ignite Fusion in the house</title>
		<link>http://bloginblack.de/2006/01/ignite-fusion-in-the-house/</link>
		<comments>http://bloginblack.de/2006/01/ignite-fusion-in-the-house/#comments</comments>
		<pubDate>Sat, 07 Jan 2006 00:00:00 +0000</pubDate>
		<dc:creator>marcus</dc:creator>
				<category><![CDATA[Agent M on CF]]></category>

		<guid isPermaLink="false">http://www.bloginblack.de/?p=673</guid>
		<description><![CDATA[Last monday, I met Ilyas Hamidzai, one of the core developers of Ignite Fusion, in Mönchengladbach. We had a really fun and interesting talk about&#8230; err.. everything?  

To let you know the backgrounds of this meeting:
I first got in touch with Ignite Fusion about a year ago due to a mailing list post, so [...]<p><a href="http://bloginblack.de/2006/01/ignite-fusion-in-the-house/">Ignite Fusion in the house</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Last monday, I met Ilyas Hamidzai, one of the core developers of Ignite Fusion, in <a href="http://en.wikipedia.org/wiki/M%C3%B6nchengladbach" target="_blank">Mönchengladbach</a>. We had a really fun and interesting talk about&#8230; err.. everything? <img src='http://bloginblack.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><img src="http://www.bloginblack.de/archives/images/bib_meets_if.jpg" alt="Agent M meets Ilyas Hamidzai" width="400" height="266"><br />
To let you know the backgrounds of this meeting:</p>
<p>I first got in touch with Ignite Fusion about a year ago due to a mailing list post, so I downloaded it and gave it a try. Without wishing to boast, but I&#8217;m sure I&#8217;m at least one of the Top5-Bug-/Featurefinders, so the IF team and I are in something that we may call &#8220;close contact&#8221;. <img src='http://bloginblack.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Ilyas spent his winter holidays in germany, so I did not want to miss the chance to see him. After showing an excellent example of my navigation skills (I really drove a weiiird criss-cross-route in Mönchengladbach), Ilyas, his wife and I met in a cafe in MG-City, had some coffees, talked about indeed almost everything. It started with technical stuff like CF and Ignite, the disadvantages of the german keyboard layout <img src='http://bloginblack.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  etc. and ended up in talking about the currently unbelievably high petrol prices in germany. <img src='http://bloginblack.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>I showed him a small app I coded using IgniteFusion, he let me know some details about Ignite&#8217;s history (why/when it was coded) and even unveiled some secrets about what Ignite is able to do, and what is currently planned for the future.</p>
<p>For example, one thing I did not know about Ignite is that it can perform as a standalone socket listener, much like the event gateways in ColdFusion. In a CF template, you say something like</p>
<p>&lt;CFSOCKET name=&#8221;blah&#8221; port=&#8221;999&#8243;&#8230;&gt;</p>
<p>&lt;CFWHILE TRUE&gt;</p>
<p>(cf code here) </p>
<p>&lt;/CFWHILE&gt;</p>
<p>&lt;/CFSOCKET&gt;<br />
(don&#8217;t know if I got that code exactly right)</p>
<p>Store that in a cfm template, call the ignitedb.exe c:\path_to_template.cfm and ignite will listen on the specified port, executing the cf code inside cfwhile on request to the socket. If THAT isn&#8217;t cool!<br />
Unfortunately, this feature is not in the current version (only in V2.3), but will probably be re-implemented in the next release.</p>
<p>Finally, they even gave me a present for Agent R &#8211; I was kind of overwhelmed by this. Thanks again for that! <img src='http://bloginblack.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>To sum it up: download Ignite Fusion and give it a try! It does a suprisingly good job in interpreting CFML and is simply perfect for small to medium-sized (and maybe large?) CF projects. It&#8217;s not 100% CF-Compatible, but somehow &#8220;feels&#8221; like the real thing, and hey, it&#8217;s FREE!</p>
<p>Besides, I&#8217;m currently planning an article on comparing Ignite to ColdFusion.<br />
The points I will check are:</p>
<p>-IF&#8217;s CFML compatibility<br />
-Bugs I found<br />
-Performance Tests</p>
<p>I&#8217;ll post it here as soon as it&#8217;s finished.</p>
<p><a href="http://bloginblack.de/2006/01/ignite-fusion-in-the-house/">Ignite Fusion in the house</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=Ignite+Fusion+in+the+house+http://bloginblack.de/?p=673" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2006/01/ignite-fusion-in-the-house/&amp;title=Ignite+Fusion+in+the+house" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2006/01/ignite-fusion-in-the-house/&amp;t=Ignite+Fusion+in+the+house" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2006/01/ignite-fusion-in-the-house/&amp;title=Ignite+Fusion+in+the+house" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2006/01/ignite-fusion-in-the-house/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CFMX 7 Developer Certification, Part II</title>
		<link>http://bloginblack.de/2005/07/cfmx-7-developer-certification-part-ii/</link>
		<comments>http://bloginblack.de/2005/07/cfmx-7-developer-certification-part-ii/#comments</comments>
		<pubDate>Thu, 28 Jul 2005 00:00:00 +0000</pubDate>
		<dc:creator>marcus</dc:creator>
				<category><![CDATA[Agent M on CF]]></category>

		<guid isPermaLink="false">http://www.bloginblack.de/?p=639</guid>
		<description><![CDATA[The operator &#8220;AND&#8221; returns true if both expressions are true.
So, to prove that our BIB-Headline, which says that kk AND mr are two advanced certified CF developers, is true, I also needed to take the CFMX Developer Test again (and besides, I had to pass it to keep my CF-Instructor title). 
Well, I reached 88% [...]<p><a href="http://bloginblack.de/2005/07/cfmx-7-developer-certification-part-ii/">CFMX 7 Developer Certification, Part II</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>The operator &#8220;AND&#8221; returns true if both expressions are true.<br />
So, to prove that our BIB-Headline, which says that kk AND mr are two advanced certified CF developers, is true, I also needed to take the CFMX Developer Test again (and besides, I had to pass it to keep my CF-Instructor title). </p>
<p>Well, I reached 88% (advanced), mainly because I simply did not remember the syntax of&#8230; err&#8230; no, I&#8217;m not allowed to tell you. <img src='http://bloginblack.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><a href="http://bloginblack.de/2005/07/cfmx-7-developer-certification-part-ii/">CFMX 7 Developer Certification, Part II</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=CFMX+7+Developer+Certification%2C+Part+II+http://bloginblack.de/?p=639" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2005/07/cfmx-7-developer-certification-part-ii/&amp;title=CFMX+7+Developer+Certification%2C+Part+II" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2005/07/cfmx-7-developer-certification-part-ii/&amp;t=CFMX+7+Developer+Certification%2C+Part+II" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2005/07/cfmx-7-developer-certification-part-ii/&amp;title=CFMX+7+Developer+Certification%2C+Part+II" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2005/07/cfmx-7-developer-certification-part-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AgentM on ColdFusion performance guidelines: URL</title>
		<link>http://bloginblack.de/2005/07/agentm-on-coldfusion-performance-guidelines-url/</link>
		<comments>http://bloginblack.de/2005/07/agentm-on-coldfusion-performance-guidelines-url/#comments</comments>
		<pubDate>Tue, 05 Jul 2005 00:00:00 +0000</pubDate>
		<dc:creator>marcus</dc:creator>
				<category><![CDATA[Agent M on CF]]></category>

		<guid isPermaLink="false">http://www.bloginblack.de/?p=635</guid>
		<description><![CDATA[Here&#8217;s the URL for today&#8217;s Breezo:
http://www.msg-webkonferenz.de/r78162109
If you attended my last presentation on CF performance, you&#8217;ll notice that I have some new topics &#8211; well, not too many, because hints that were good yesterday are mostly still correct today. 
Hopefully, there will be no server crash like last time  
See you at 4 o&#8217;clock&#8230;
UPDATE:
If you [...]<p><a href="http://bloginblack.de/2005/07/agentm-on-coldfusion-performance-guidelines-url/">AgentM on ColdFusion performance guidelines: URL</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s the URL for today&#8217;s Breezo:<br />
<a href="http://www.msg-webkonferenz.de/r78162109/" target="_blank">http://www.msg-webkonferenz.de/r78162109</a></p>
<p>If you attended my last presentation on CF performance, you&#8217;ll notice that I have some new topics &#8211; well, not too many, because hints that were good yesterday are mostly still correct today. </p>
<p>Hopefully, there will be no server crash like last time <img src='http://bloginblack.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>See you at 4 o&#8217;clock&#8230;</p>
<p>UPDATE:<br />
If you missed the talk, here&#8217;s the URL of the recorded version:</p>
<p><a href="http://www.msg-webkonferenz.de/p58004826" target="_blank">http://www.msg-webkonferenz.de/p58004826</a></p>
<p><a href="http://bloginblack.de/2005/07/agentm-on-coldfusion-performance-guidelines-url/">AgentM on ColdFusion performance guidelines: URL</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=AgentM+on+ColdFusion+performance+guidelines%3A+URL+http://bloginblack.de/?p=635" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2005/07/agentm-on-coldfusion-performance-guidelines-url/&amp;title=AgentM+on+ColdFusion+performance+guidelines%3A+URL" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2005/07/agentm-on-coldfusion-performance-guidelines-url/&amp;t=AgentM+on+ColdFusion+performance+guidelines%3A+URL" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2005/07/agentm-on-coldfusion-performance-guidelines-url/&amp;title=AgentM+on+ColdFusion+performance+guidelines%3A+URL" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2005/07/agentm-on-coldfusion-performance-guidelines-url/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reserved words in QoQ</title>
		<link>http://bloginblack.de/2005/05/reserved-words-in-qoq/</link>
		<comments>http://bloginblack.de/2005/05/reserved-words-in-qoq/#comments</comments>
		<pubDate>Wed, 04 May 2005 00:00:00 +0000</pubDate>
		<dc:creator>marcus</dc:creator>
				<category><![CDATA[Agent M on CF]]></category>

		<guid isPermaLink="false">http://www.bloginblack.de/?p=607</guid>
		<description><![CDATA[Today, a user of the Henkel CMS reported a bug in a handler that I wrote. Funny thing &#8211; it worked and still works on all CF5 servers we&#8217;re running, besides one CFMX that hosts sections needing the UTF-8 charset.
So, what happened?The error occured in the edit handler for the random image object on the [...]<p><a href="http://bloginblack.de/2005/05/reserved-words-in-qoq/">Reserved words in QoQ</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Today, a user of the Henkel CMS reported a bug in a handler that I wrote. Funny thing &#8211; it worked and still works on all CF5 servers we&#8217;re running, besides one CFMX that hosts sections needing the UTF-8 charset.</p>
<p>So, what happened?The error occured in the edit handler for the random image object on the Henkel Gateway pages (have a look at henkel.com &#8211; the changing image in the upper left corner). To prevent the users from adding too large images, I perform a filesize check using CFDIRECTORY.<br />
I personally like the method of getting the needed information via QoQ, so here&#8217;s the code I used:</p>
<p>	&lt;cfset theArrayLen = arrayLen(attributes.images)&gt;<br />
	&lt;cfset caller.filesizes = arrayNew(1)&gt;</p>
<p>	&lt;cfif theArrayLen&gt;<br />
		&lt;cfdirectory action=&#8221;LIST&#8221; directory=&#8221;#blahblah#/images&#8221; name=&#8221;imagedir&#8221;&gt;</p>
<p>		&lt;!&#8212; get the images&#8217; filesizes &#8212;&gt;<br />
		&lt;cfloop from=&#8221;1&#8243; to=&#8221;#theArrayLen#&#8221; index=&#8221;img&#8221;&gt;<br />
			&lt;cfquery dbtype=&#8221;query&#8221; name=&#8221;getfilesize&#8221;&gt;<br />
				select size from imagedir<br />
				where upper(name) = &#8216;#ucase(attributes.images[img])#&#8217;<br />
			&lt;/cfquery&gt;<br />
			&lt;cfset caller.filesizes[img] = getfilesize.thesize&gt;<br />
		&lt;/cfloop&gt;</p>
<p>		&lt;!&#8212; now that we have the directory contents, pass them to the caller for further usage&#8212;&gt;<br />
		&lt;cfset caller.imageDirContent  = imagedir&gt;<br />
	&lt;/cfif&gt;</p>
<p>CFMX complained about the select &#8220;SIZE&#8221;, as &#8220;SIZE&#8221; is a reserved word in SQL. Unfortunately, CFDIRECTORY names its size column like that &#8211; there&#8217;s no chance to change the name. So I tried the following&#8230;</p>
<p>-Using a SQL alias<br />
select size as theSize from imagedir        &#8230; didn&#8217;t work</p>
<p>-Using quotes and / or brackets around &#8220;size&#8221;<br />
select &#8220;size&#8221; as theSize from imagedir     &#8230;didn&#8217;t work<br />
select [size]&#8230;               &#8230;guess what &#8211; didn&#8217;t work</p>
<p>The solution is simply to access the column by its number, as you would do it in an &#8220;order by&#8221; clause, e.g.</p>
<p>select blah as myBlah, blah2 as megaBlah<br />
from theTable<br />
order by 2</p>
<p>To sum it up:</p>
<p>&lt;cfquery dbtype=&#8221;query&#8221; name=&#8221;getfilesize&#8221;&gt;<br />
	select 5 as theSize from imagedir<br />
	where upper(name) = &#8216;#ucase(attributes.images[img])#&#8217;<br />
&lt;/cfquery&gt;</p>
<p>That actually works.<br />
According to the SQL standards, CFMX does everthing right &#8211; it&#8217;s some kind of careless behaviour of CF5&#8217;s QoQ implementation. </p>
<p>Finally, here&#8217;s a list of reserverd words in QoQ:<br />
&lt;a href=&#8221;http://livedocs.macromedia.com/coldfusion/6.1/htmldocs/express4.htm&#8221; target=&#8221;_blank&#8221;&gt;Reserverd words in QoQ&lt;/a&gt;</p>
<p><a href="http://bloginblack.de/2005/05/reserved-words-in-qoq/">Reserved words in QoQ</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=Reserved+words+in+QoQ+http://bloginblack.de/?p=607" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2005/05/reserved-words-in-qoq/&amp;title=Reserved+words+in+QoQ" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2005/05/reserved-words-in-qoq/&amp;t=Reserved+words+in+QoQ" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2005/05/reserved-words-in-qoq/&amp;title=Reserved+words+in+QoQ" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2005/05/reserved-words-in-qoq/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>\cfusion\mail\undelivr</title>
		<link>http://bloginblack.de/2004/12/cfusionmailundelivr/</link>
		<comments>http://bloginblack.de/2004/12/cfusionmailundelivr/#comments</comments>
		<pubDate>Tue, 14 Dec 2004 00:00:00 +0000</pubDate>
		<dc:creator>marcus</dc:creator>
				<category><![CDATA[Agent M on CF]]></category>

		<guid isPermaLink="false">http://www.bloginblack.de/?p=547</guid>
		<description><![CDATA[You know that directory? Ever seen it? Well, if so, when was the last time you had a look at it&#8230; last week? Last month? Last century? Welcome to the club  We all know that problem: if a cfmail tag is called to send out an e-mail, CF puts the generated cfmail-file into the [...]<p><a href="http://bloginblack.de/2004/12/cfusionmailundelivr/">\cfusion\mail\undelivr</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>You know that directory? Ever seen it? Well, if so, when was the last time you had a look at it&#8230; last week? Last month? Last century? Welcome to the club <img src='http://bloginblack.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> We all know that problem: if a cfmail tag is called to send out an e-mail, CF puts the generated cfmail-file into the spooler. If, for whatever reason, the mail cannot be sent, the file is moved to the undelivr-folder. Period. </p>
<p>If you also administer your server(s), you&#8217;ll probably check that folder once in a while, move the undelivered files back to the spooler and check back next time&#8230; or week/month/year/life. That generally results in sales persons asking &#8220;why the hell did that email need four month to be delivered???&#8221;. And hey, they&#8217;re even right!</p>
<p>At Henkel, we&#8217;re currently running a bunch of CF 5 and CFMX servers in several  clustered environments. From time to time, the smtp gateways may be unreachable, and even though we&#8217;re checking email address entries before doing a cfmail, some very eager persons manage to misspell them&#8230; </p>
<p>To sum it up: I decided to write a template that does the dirty work for me: </p>
<ul>
<li>Move all files from the undelivr-folder back to the spooler</li>
<li>Keep track of them in a database</li>
<li>Log that action</li>
<li>Count how many times each mail file has been moved back</li>
<li>If not sent out for 10 times, move it to a &#8220;junkyard&#8221; folder</li>
</ul>
<p>If a mail failed to be sent out for 10 times, there&#8217;s probably something wrong with the mail address. Assuming I call the template every 12 hours, a 5-day-timespan is covered, and most likely (or hopefully) the smtp gateway is NOT the reason after five days of sending in vain <img src='http://bloginblack.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>So give it a try &#8211; originally designed to work on the Henkel systems, I did a quick rewrite of the code to make it work on standard CF machines.</p>
<p>Let me know if it works for you!</p>
<p><a href="http://www.bloginblack.de/archives/files/mailmanager_free_1_10a.zip">Download file</a></p>
<p>Update: V1.10: Fixes for CFMX7</p>
<p><a href="http://bloginblack.de/2004/12/cfusionmailundelivr/">\cfusion\mail\undelivr</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=%5Ccfusion%5Cmail%5Cundelivr+http://bloginblack.de/?p=547" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2004/12/cfusionmailundelivr/&amp;title=%5Ccfusion%5Cmail%5Cundelivr" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2004/12/cfusionmailundelivr/&amp;t=%5Ccfusion%5Cmail%5Cundelivr" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2004/12/cfusionmailundelivr/&amp;title=%5Ccfusion%5Cmail%5Cundelivr" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2004/12/cfusionmailundelivr/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Agent M on CF performance tuning</title>
		<link>http://bloginblack.de/2004/10/agent-m-on-cf-performance-tuning/</link>
		<comments>http://bloginblack.de/2004/10/agent-m-on-cf-performance-tuning/#comments</comments>
		<pubDate>Tue, 05 Oct 2004 00:00:00 +0000</pubDate>
		<dc:creator>kai</dc:creator>
				<category><![CDATA[Agent K on CF]]></category>
		<category><![CDATA[Agent M on CF]]></category>
		<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://www.bloginblack.de/?p=487</guid>
		<description><![CDATA[Yesterday Marcus gave a session on CF performance tuning. If you missed it &#8211; or got dropped out near the end due some technical issues, here&#8217;s the preso as a Flashpaper:

A PDF file is available here
Agent M on CF performance tuning is a post from: Blog in Black
   <p><a href="http://bloginblack.de/2004/10/agent-m-on-cf-performance-tuning/">Agent M on CF performance tuning</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Yesterday Marcus gave a session on CF performance tuning. If you missed it &#8211; or got dropped out near the end due some technical issues, here&#8217;s the preso as a Flashpaper:</p>
<p><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="500" height="380"><param name="movie" value="http://www.bloginblack.de/files/mraphelt_performancetuning.swf"><param name="quality" value="high"><embed src="http://www.bloginblack.de/files/mraphelt_performancetuning.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="500" height="380"></embed></object></p>
<p>A PDF file is available <a href="http://www.bloginblack.de/files/mraphelt_performancetuning.pdf">here</a></p>
<p><a href="http://bloginblack.de/2004/10/agent-m-on-cf-performance-tuning/">Agent M on CF performance tuning</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=Agent+M+on+CF+performance+tuning+http://bloginblack.de/?p=487" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2004/10/agent-m-on-cf-performance-tuning/&amp;title=Agent+M+on+CF+performance+tuning" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2004/10/agent-m-on-cf-performance-tuning/&amp;t=Agent+M+on+CF+performance+tuning" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2004/10/agent-m-on-cf-performance-tuning/&amp;title=Agent+M+on+CF+performance+tuning" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2004/10/agent-m-on-cf-performance-tuning/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ben on Blackstone: M&#8217;s summary</title>
		<link>http://bloginblack.de/2004/09/ben-on-blackstone-ms-summary/</link>
		<comments>http://bloginblack.de/2004/09/ben-on-blackstone-ms-summary/#comments</comments>
		<pubDate>Wed, 08 Sep 2004 00:00:00 +0000</pubDate>
		<dc:creator>marcus</dc:creator>
				<category><![CDATA[Agent M on CF]]></category>

		<guid isPermaLink="false">http://www.bloginblack.de/?p=463</guid>
		<description><![CDATA[To sum it up: you really need that blackstone thingie.  
Another important fact Ben mentioned was that basically, because of its modularity, CF Blackstone is &#8220;CF 6.1 with new features added&#8221;.
That might be important to all you guys who are currently planning to migrate to MX: if your app runs on 6.1, it will [...]<p><a href="http://bloginblack.de/2004/09/ben-on-blackstone-ms-summary/">Ben on Blackstone: M&#8217;s summary</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>To sum it up: you really need that blackstone thingie. <img src='http://bloginblack.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Another important fact Ben mentioned was that basically, because of its modularity, CF Blackstone is &#8220;CF 6.1 with new features added&#8221;.</p>
<p>That might be important to all you guys who are currently planning to migrate to MX: if your app runs on 6.1, it will run on blackstone, because, as Ben said,  the core tag&#8217;s code stayed the same.</p>
<p>This leads to some interesting migration scenarios:</p>
<p>- If you&#8217;re planning to move from CF pre-MX to MX, you might consider trying the blackstone beta simultaneously (or even jump directly to that one <img src='http://bloginblack.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Ben said that 6.1 and blackstone can coexist on one machine without getting each other into trouble.</p>
<p>- The update from 6.1 to blackstone will probably be hassle-free, at least as far as your code it concerned <img src='http://bloginblack.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Ben also told us that he&#8217;s running blackstone on some (or all? I forgot that) of his productive servers since the eary alpha days without even one error in the logfiles and no visitor complaining about anything. To speak with him: &#8220;blackstone is rock solid&#8221;.</p>
<p>Can&#8217;t wait until the beta will be announced! <img src='http://bloginblack.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://bloginblack.de/2004/09/ben-on-blackstone-ms-summary/">Ben on Blackstone: M&#8217;s summary</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=Ben+on+Blackstone%3A+M%E2%80%99s+summary+http://bloginblack.de/?p=463" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2004/09/ben-on-blackstone-ms-summary/&amp;title=Ben+on+Blackstone%3A+M%E2%80%99s+summary" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2004/09/ben-on-blackstone-ms-summary/&amp;t=Ben+on+Blackstone%3A+M%E2%80%99s+summary" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2004/09/ben-on-blackstone-ms-summary/&amp;title=Ben+on+Blackstone%3A+M%E2%80%99s+summary" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2004/09/ben-on-blackstone-ms-summary/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Benchmark: CFMX 6.1 auf AMD / Intel</title>
		<link>http://bloginblack.de/2004/01/benchmark-cfmx-6-1-auf-amd-intel/</link>
		<comments>http://bloginblack.de/2004/01/benchmark-cfmx-6-1-auf-amd-intel/#comments</comments>
		<pubDate>Mon, 12 Jan 2004 00:00:00 +0000</pubDate>
		<dc:creator>marcus</dc:creator>
				<category><![CDATA[Agent M on CF]]></category>

		<guid isPermaLink="false">http://www.bloginblack.de/?p=302</guid>
		<description><![CDATA[Moin moin,
kommentarlos hier mal ein Performance-Vergleich: CFMX auf AMD Opteron bzw. Intel Xeon&#8230;
AMD Opteron 248 vs. Intel Xeon 2.8: 2-way Web Servers go Head to Head
Benchmark: CFMX 6.1 auf AMD / Intel is a post from: Blog in Black
   <p><a href="http://bloginblack.de/2004/01/benchmark-cfmx-6-1-auf-amd-intel/">Benchmark: CFMX 6.1 auf AMD / Intel</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Moin moin,</p>
<p>kommentarlos hier mal ein Performance-Vergleich: CFMX auf AMD Opteron bzw. Intel Xeon&#8230;</p>
<p><a href="http://www.anandtech.com/IT/showdoc.html?i=1935&#038;p=9" target="_blank">AMD Opteron 248 vs. Intel Xeon 2.8: 2-way Web Servers go Head to Head</a></p>
<p><a href="http://bloginblack.de/2004/01/benchmark-cfmx-6-1-auf-amd-intel/">Benchmark: CFMX 6.1 auf AMD / Intel</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=Benchmark%3A+CFMX+6.1+auf+AMD+%2F+Intel+http://bloginblack.de/?p=302" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2004/01/benchmark-cfmx-6-1-auf-amd-intel/&amp;title=Benchmark%3A+CFMX+6.1+auf+AMD+%2F+Intel" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2004/01/benchmark-cfmx-6-1-auf-amd-intel/&amp;t=Benchmark%3A+CFMX+6.1+auf+AMD+%2F+Intel" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2004/01/benchmark-cfmx-6-1-auf-amd-intel/&amp;title=Benchmark%3A+CFMX+6.1+auf+AMD+%2F+Intel" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2004/01/benchmark-cfmx-6-1-auf-amd-intel/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Spectra Open Source: Ja was denn nu&#8217;?</title>
		<link>http://bloginblack.de/2003/11/spectra-open-source-ja-was-denn-nu/</link>
		<comments>http://bloginblack.de/2003/11/spectra-open-source-ja-was-denn-nu/#comments</comments>
		<pubDate>Mon, 03 Nov 2003 00:00:00 +0000</pubDate>
		<dc:creator>marcus</dc:creator>
				<category><![CDATA[Agent M on CF]]></category>

		<guid isPermaLink="false">http://www.bloginblack.de/?p=216</guid>
		<description><![CDATA[Hallo zusammen,
Macromedia scheint sich nicht ganz schlüssig zu sein, ob Spectra Open Source (V1.5.3) nun zum Download freigegeben ist oder nicht  
Bis gestern war noch folgende, noch im Google-Cache zu findende Seite unter spectrasource.macromedia.com zu sehen:
Spectra 1.5.3 im Google-Cache
Heute ist wieder die alte 1.5.2er Downloadpage zu sehen:
http://spectrasource.macromedia.com
War der Release evtl. verfrüht? Ein Kollege hat [...]<p><a href="http://bloginblack.de/2003/11/spectra-open-source-ja-was-denn-nu/">Spectra Open Source: Ja was denn nu&#8217;?</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Hallo zusammen,</p>
<p>Macromedia scheint sich nicht ganz schlüssig zu sein, ob Spectra Open Source (V1.5.3) nun zum Download freigegeben ist oder nicht <img src='http://bloginblack.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Bis gestern war noch folgende, noch im Google-Cache zu findende Seite unter spectrasource.macromedia.com zu sehen:</p>
<p><a  target="_blank" href="http://www.google.de/search?q=cache:FIOCLW0Q2zUJ:spectrasource.macromedia.com/+download+spectra+open+source&#038;hl=de&#038;ie=UTF-8">Spectra 1.5.3 im Google-Cache</a></p>
<p>Heute ist wieder die alte 1.5.2er Downloadpage zu sehen:</p>
<p><a  target="_blank"  href="http://spectrasource.macromedia.com">http://spectrasource.macromedia.com</a></p>
<p>War der Release evtl. verfrüht? Ein Kollege hat die 1.5.3 lokal installiert und war angesichts der Tatsache, dass Spectra ohne weiteres Zutun unter CF6.1 lief (was ja so mancher als &#8220;unheimlich&#8221; bezeichnen würde <img src='http://bloginblack.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , schon ein wenig begeistert. </p>
<p>Warten wir ab&#8230;</p>
<p><a href="http://bloginblack.de/2003/11/spectra-open-source-ja-was-denn-nu/">Spectra Open Source: Ja was denn nu&#8217;?</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=Spectra+Open+Source%3A+Ja+was+denn+nu%E2%80%99%3F+http://bloginblack.de/?p=216" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2003/11/spectra-open-source-ja-was-denn-nu/&amp;title=Spectra+Open+Source%3A+Ja+was+denn+nu%E2%80%99%3F" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2003/11/spectra-open-source-ja-was-denn-nu/&amp;t=Spectra+Open+Source%3A+Ja+was+denn+nu%E2%80%99%3F" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2003/11/spectra-open-source-ja-was-denn-nu/&amp;title=Spectra+Open+Source%3A+Ja+was+denn+nu%E2%80%99%3F" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2003/11/spectra-open-source-ja-was-denn-nu/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Verschlüsselung von URL-Variablen</title>
		<link>http://bloginblack.de/2003/10/verschluesselung-von-url-variablen/</link>
		<comments>http://bloginblack.de/2003/10/verschluesselung-von-url-variablen/#comments</comments>
		<pubDate>Wed, 08 Oct 2003 00:00:00 +0000</pubDate>
		<dc:creator>marcus</dc:creator>
				<category><![CDATA[Agent M on CF]]></category>

		<guid isPermaLink="false">http://www.bloginblack.de/?p=198</guid>
		<description><![CDATA[Eines der grundlegendsten Probleme, welches alle serverseitigen Programmiersprachen
		gemeinsam haben, ist die &#34;ab Werk&#34; eingebaute Anf&#228;lligkeit gegen&#252;ber
		URL-Hacking.
Das klassische Beispiel ist wohl das folgende:
&#60;cfquery name="getData" datasource="#request.dsn#"&#62;
	select something
	from theTable
	where ID = #url.ID#
&#60;/cfquery&#62; 
Was nun geschieht, wenn man die Seite mit page.cfm?id=5;drop%20database aufruft,
kann sich jeder ausmalen (Voraussetzung ist nat&#252;rlich eine schlecht aufgesetzte
		Datenbank)&#8230;
Man kann (und sollte!) hier nat&#252;rlich zu CFQUERYPARAM [...]<p><a href="http://bloginblack.de/2003/10/verschluesselung-von-url-variablen/">Verschlüsselung von URL-Variablen</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Eines der grundlegendsten Probleme, welches alle serverseitigen Programmiersprachen<br />
		gemeinsam haben, ist die &quot;ab Werk&quot; eingebaute Anf&auml;lligkeit gegen&uuml;ber<br />
		URL-Hacking.</p>
<p>Das klassische Beispiel ist wohl das folgende:</p>
<pre>&lt;cfquery name="getData" datasource="#request.dsn#"&gt;
	select something
	from theTable
	where ID = #url.ID#
&lt;/cfquery&gt; </pre>
<p>Was nun geschieht, wenn man die Seite mit <font size="2" face="Courier New, Courier, mono">page.cfm?id=5;drop%20database</font> aufruft,<br />
kann sich jeder ausmalen (Voraussetzung ist nat&uuml;rlich eine schlecht aufgesetzte<br />
		Datenbank)&#8230;</p>
<p>Man kann (und sollte!) hier nat&uuml;rlich zu CFQUERYPARAM und generellen<br />
		Plausibilit&auml;tsabfragen<br />
		mit CFIF greifen,	allerdings ist dies meiner Meinung nach nur die halbe<br />
		Miete.	Deutlich	sicherer	f&auml;hrt<br />
		man, wenn die zu &uuml;bergebenden URL-Variablen verschl&uuml;sselt und somit<br />
		weitm&ouml;glichst<br />
		gegen	Manipulation gesch&uuml;tzt werden. 100%ige Sicherheit gibt&#8217;s nat&uuml;rlich<br />
		nie, aber man sollte es den b&ouml;sen Buben so schwer wie m&ouml;glich machen.<br />
	 <img src='http://bloginblack.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><strong>Das Prinzip</strong></p>
<p>Grundlage des Systems, welches ich mir ausgedacht habe, ist der Custom Tag<br />
		cf_cryp von Jackson Moore. Prinzipiell wollte ich erreichen, dass man<br />
		sowohl verschl&uuml;sselte, als auch normale URL-Variablen &uuml;bergeben kann,<br />
		ohne sich darum k&uuml;mmern zu m&uuml;ssen, ob nun eine Entschl&uuml;sselung n&ouml;tig<br />
		ist oder nicht. Zudem wollte ich erreichen, dass man als Programmierer<br />
		keine gro&szlig;en Umstellungen einplanen muss, also ganz normal mit URL-Variablen<br />
		weiterarbeiten kann.</p>
<p><strong>Coding</strong></p>
<p>Die Ideale Stelle f&uuml;r eine automatische Entschl&uuml;sselung eines verschl&uuml;sselten<br />
		Querystrings ist nat&uuml;rlich die Application.cfm. Ich nutze hierzu folgenden<br />
		Code:</p>
<pre>&lt;!--- encryptkey setzen ---&gt;
&lt;cfset request.encryptkey="Blog_in_Black"&gt;

&lt;!--- wenn ein querystring oder form.values vorhanden ist, string entschlüsseln ---&gt;
&lt;cfif (len(cgi.query_string) and not find('=', cgi.query_string)) or isdefined("form.values")&gt;

	&lt;cfscript&gt;
		//je nach situation string und scope setzen
		if(len(cgi.query_string)) {
			decodeme=cgi.query_string;
			scope="url";
		}
		else {
			decodeme=form.values;
			scope="form";
		}
	&lt;/cfscript&gt;

	&lt;!--- string entschlüsseln ---&gt;
	&lt;cf_cryp type="de" string="#decodeme#" key="#request.encryptkey#"&gt;

	&lt;!--- aus dem entschlüsselten string wieder variablen bilden ---&gt;
	&lt;cfloop list="#cryp.value#" delimiters="&#038;" index="idx"&gt;
		 &lt;cfset name=left(idx,FindNoCase("=",idx)-1)&gt;
		 &lt;cfset wert=right(idx,len(idx)-FindNoCase("=",idx))&gt;

		&lt;cfset "#scope#.#name#" = wert&gt;
	&lt;!--- f&uuml;r's debugging &lt;cfoutput&gt;#scope#.#name# = #wert#&lt;br&gt;&lt;/cfoutput&gt;  ---&gt;
	&lt;/cfloop&gt;

&lt;/cfif&gt;</pre>
<p>Wie man sieht, geht der Code noch einen Schritt weiter und entschl&uuml;sselt<br />
		bei	Bedarf auch den Inhalt von form.values, also ist auch eine verschl&uuml;sselte<br />
		&Uuml;bergabe von Formularwerten m&ouml;glich.<br />
		Damit das System in dieser Form funktioniert, musste ich an cf_cryp eine<br />
		kleine Anpassung in Zeile ~89 vornehmen:</p>
<pre>&lt;cfif findnocase("J",string,1) is 0&gt;
	&lt;!--- &lt;cfthrow type="cryp" message="nochecksum"&gt; ---&gt;
	&lt;!---marcus raphelt &lt;cfm&#108;&#64;&#114;a&#112;&#104;&#101;&#108;&#116;.&#100;e&gt;: added cfexit to suppress exceptions in cfmx---&gt;
	&lt;cfexit method="EXITTAG"&gt;
&lt;cfelse&gt;</pre>
<p>Der Kommentar sagt&#8217;s bereits: unter CFMX gibt cf_cryp eine Exception aus,<br />
		wenn der &uuml;bergebene String nicht dekodierbar ist. Dies wird zwar mit<br />
		dem <font size="2" face="Courier New, Courier, mono">not find(&#8216;=&#8217;, cgi.query_string)</font>weitestgehend<br />
		abgefangen, aber ich will&#8217;s nicht darauf anlegen, denn es k&ouml;nnte auch<br />
		z.B. ein Aufruf wie <font size="2" face="Courier New, Courier, mono">page.cfm?myVar</font><br />
		stattfinden.</p>
<p><strong>Was geschieht nun in der Application.cfm? </strong></p>
<p>		Ich gehe hier nur auf die URL-Variablen ein &#8211; beim Form-Scope ist es<br />
				das gleiche, nur dass eben ein anderer Wert f&uuml;r <font size="2" face="Courier New, Courier, mono">scope</font> gesetzt<br />
				wird. Es wird nachgesehen, ob ein Query-String &uuml;bergeben wurde,<br />
				und ob er kein Gleichheitszeichen enth&auml;lt (das ist bei mit cf_cryp<br />
				kodierten Strings nicht m&ouml;glich). Ist dies der Fall, so wird<br />
				der Query-String an cf_cryp zur Entschl&uuml;sselung &uuml;bergeben. <br />
				Zur&uuml;ckgegeben wird dann der &quot;echte&quot; Querystring, z.B. <font size="2" face="Courier New, Courier, mono">itemID=300&amp;viewmode=full&amp;bgcolor=white</font>,<br />
				welcher dann &uuml;ber eine Schleife in Variablen des gew&uuml;nschten<br />
				Scopes, in diesem Fall URL, umgewandelt wird. Das bedeutet gleichzeitig,<br />
				dass man im Zieltemplate wieder  URL-Variablen zur<br />
				Verf&uuml;gung hat und quasi normal weiterprogrammieren kann.</p>
<p><strong>&Uuml;bergabe</strong></p>
<p>Den zu &uuml;bergebenen Wert muss man vorher zusammenbauen und verschl&uuml;sselt &uuml;bergeben.<br />
		Hier ein kleines Beispiel:</p>
<pre>&lt;!--- zu übergebenden querystring zusammenstellen ---&gt;
&lt;cfset theQueryString = "itemID=300&#038;viewmode=full&#038;bgcolor=white"&gt;

&lt;!--- querystring verschlüsseln ---&gt;
&lt;cfmodule
	template="cryp.cfm"
	type="en"
	string="#theQueryString#"
	key="#request.encryptKey#"
&gt;

&lt;cfoutput&gt;
&lt;a href="index2.cfm?#theQueryString#"&gt;Normale Übergabe...&lt;/a&gt;&lt;br&gt;
&lt;a href="index2.cfm?#cryp.value#"&gt;Verschlüsselte Übergabe...&lt;/a&gt;&lt;/cfoutput&gt;</pre>
<p><strong>Ergebnisseite</strong></p>
<p>Auf der Ergebnisseite reicht ein Dump des URL-Scopes. Sorry an alle 4.x-User,<br />
		aber ich war zu faul, eine Loop zu nutzen. <img src='http://bloginblack.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<pre>&lt;cfdump var="#url#"&gt;</pre>
<p><strong>Erweiterbarkeit</strong></p>
<p>Das System l&auml;sst sich nat&uuml;rlich in alle Richtungen erweitern. So k&ouml;nnte man<br />
		z.B. verschl&uuml;sselte Werte in Cookies schreiben oder Variablen, die im<br />
		Server-Scope liegen, vor unbefugten Blicken sch&uuml;tzen (praktisch bei Virtuellen<br />
		Servern).</p>
<p><strong>Nachteile</strong></p>
<p>Ganz klar, durch die Ver-/Entschl&uuml;sselung hat man deutliche Performance-Einbu&szlig;en.<br />
		Diese sind aber, wie ich finde, wegen der gewonnenen Sicherheit zu vernachl&auml;ssigen.</p>
<p><strong>Download</strong></p>
<p>Nat&uuml;&uuml;&uuml;rlich &#8211; Abtippen w&auml;re unn&ouml;tiger Sport. Daher habe ich ein kleines <a href="http://www.bloginblack.de/archives/files/encode_url_vars.zip">ZIP-Archiv (5521 Bytes)</a><br />
		erstellt, in dem alle n&ouml;tigen Dateien enthalten sind. Viel Spa&szlig; beim<br />
		Testen!</p>
<p>		Feedback ist erw&uuml;nscht! <img src='http://bloginblack.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> <br />
		agent m, 07.10.2003</p>
<p>&nbsp;</p>
<p><a href="http://bloginblack.de/2003/10/verschluesselung-von-url-variablen/">Verschlüsselung von URL-Variablen</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=Verschl%C3%BCsselung+von+URL-Variablen+http://bloginblack.de/?p=198" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2003/10/verschluesselung-von-url-variablen/&amp;title=Verschl%C3%BCsselung+von+URL-Variablen" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2003/10/verschluesselung-von-url-variablen/&amp;t=Verschl%C3%BCsselung+von+URL-Variablen" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2003/10/verschluesselung-von-url-variablen/&amp;title=Verschl%C3%BCsselung+von+URL-Variablen" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2003/10/verschluesselung-von-url-variablen/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Gute Zeilen, schlechte Zeilen &#8211; Folge 5 &#8211; Query of Queries</title>
		<link>http://bloginblack.de/2003/09/gute-zeilen-schlechte-zeilen-folge-5-query-of-queries/</link>
		<comments>http://bloginblack.de/2003/09/gute-zeilen-schlechte-zeilen-folge-5-query-of-queries/#comments</comments>
		<pubDate>Fri, 26 Sep 2003 00:00:00 +0000</pubDate>
		<dc:creator>marcus</dc:creator>
				<category><![CDATA[Agent M on CF]]></category>

		<guid isPermaLink="false">http://www.bloginblack.de/?p=186</guid>
		<description><![CDATA[Back in Blog!
Nach einiger Zeit der Blog-Abstinenz melde ich mich nun wieder zu Wort&#8230;

 Einige werden sich sicherlich Fragen, warum ich eine mehrw&#246;chige Schreibpause
		eingelegt habe &#8211; nun &#8211; ich war nach einer Gehirnw&#228;sche eine Zeit lang
		Oberpostvorsteher
in einem kleinen Dorf und&#8230; ach nein, lassen wir das&#8230; zum Thema!:-)
Ich hatte sehr oft Auftr&#228;ge &#224; la &#34;kannst Du [...]<p><a href="http://bloginblack.de/2003/09/gute-zeilen-schlechte-zeilen-folge-5-query-of-queries/">Gute Zeilen, schlechte Zeilen &#8211; Folge 5 &#8211; Query of Queries</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Back in Blog!<br />
Nach einiger Zeit der Blog-Abstinenz melde ich mich nun wieder zu Wort&#8230;
</p>
<p> Einige werden sich sicherlich Fragen, warum ich eine mehrw&ouml;chige Schreibpause<br />
		eingelegt habe &#8211; nun &#8211; ich war nach einer Gehirnw&auml;sche eine Zeit lang<br />
		Oberpostvorsteher<br />
in einem kleinen Dorf und&#8230; ach nein, lassen wir das&#8230; zum Thema!:-)</p>
<p>Ich hatte sehr oft Auftr&auml;ge &agrave; la &quot;kannst Du das mal eben<br />
		schneller machen?&quot;<br />
		und bin dabei h&auml;ufig auf eine Programmiermethode gesto&szlig;en, die gerne<br />
		z.B. zum Darstellen von Artikel&uuml;bersichten in Shops genutzt wird:</p>
<pre>
&lt;cfquery name="getItems" datasource="shopDB"&gt;
	select itemID, itemName
	from items
	where group = #url.group#
&lt;/cfquery&gt;

&lt;cfoutput query="getItems"&gt;
	&lt;cfquery name="getDetails" datasource="shopDB"&gt;
		select onStock, whatEver
		from items
		where condition = true
		and itemID = #getitems.itemID#
	&lt;/cfquery&gt;
	We currently have #getDetails.onStock# x #getItems.itemName# on stock.&lt;br&gt;
&lt;/cfoutput&gt;
</pre>
<p>Das Prinzip ist hierbei, dass eine Hauptquery die Loop-Basis bildet und in<br />
		der Loop dann weitere Details geholt werden. Sicherlich werden viele<br />
		das Prinzip wiedererkennen. Okay, der Code ist relativ sinnfrei, es geht<br />
		mir hier aber lediglich um&#8217;s Prinzip. <img src='http://bloginblack.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Um hier mit relativ wenig Aufwand eine deutliche Steigerung der Performance<br />
		zu erreichen, kann man die erste Abfrage sozusagen als BaseQuery definieren<br />
		und weitere Abfragen mittels QoQ gegen dieses Queryset laufen lassen.<br />
		Somit ist die Datenbank entlastet:</p>
<pre>
&lt;cfquery name="<strong>itemBase</strong>" datasource="shopDB"&gt;
	select itemID, itemName, [...]
	from items
	where group = #url.group#
&lt;/cfquery&gt;

&lt;cfoutput query="getItems"&gt;
	&lt;cfquery name="getDetails" <strong>dbtype="query"</strong>&gt;
		select onStock, whatEver
		from <strong>itemBase</strong>
		where condition = true
		and itemID = #getitems.itemID#
	&lt;/cfquery&gt;
	We currently have #getDetails.onStock# x #getItems.itemName# on stock.&lt;br&gt;
&lt;/cfoutput&gt;</pre>
<p>Alle Queries innerhalb der Schleife holen sich ihre Daten nun aus dem RAM.<br />
		Dieser Tip ist z.B. f&uuml;r diejenigen interessant, die mit CF und Access<br />
				arbeiten	(m&uuml;ssen). Access ist irgendwann am Ende seiner Kr&auml;fte,<br />
				daher sollte man&#8217;s entlasten, wo nur eben m&ouml;glich.</p>
<p><a href="http://bloginblack.de/2003/09/gute-zeilen-schlechte-zeilen-folge-5-query-of-queries/">Gute Zeilen, schlechte Zeilen &#8211; Folge 5 &#8211; Query of Queries</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=Gute+Zeilen%2C+schlechte+Zeilen+%E2%80%93+Folge+5+%E2%80%93+Query+of+Queries+http://bloginblack.de/?p=186" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2003/09/gute-zeilen-schlechte-zeilen-folge-5-query-of-queries/&amp;title=Gute+Zeilen%2C+schlechte+Zeilen+%E2%80%93+Folge+5+%E2%80%93+Query+of+Queries" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2003/09/gute-zeilen-schlechte-zeilen-folge-5-query-of-queries/&amp;t=Gute+Zeilen%2C+schlechte+Zeilen+%E2%80%93+Folge+5+%E2%80%93+Query+of+Queries" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2003/09/gute-zeilen-schlechte-zeilen-folge-5-query-of-queries/&amp;title=Gute+Zeilen%2C+schlechte+Zeilen+%E2%80%93+Folge+5+%E2%80%93+Query+of+Queries" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2003/09/gute-zeilen-schlechte-zeilen-folge-5-query-of-queries/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google fatal</title>
		<link>http://bloginblack.de/2003/07/google-fatal/</link>
		<comments>http://bloginblack.de/2003/07/google-fatal/#comments</comments>
		<pubDate>Wed, 23 Jul 2003 00:00:00 +0000</pubDate>
		<dc:creator>marcus</dc:creator>
				<category><![CDATA[Agent M on CF]]></category>

		<guid isPermaLink="false">http://www.bloginblack.de/?p=90</guid>
		<description><![CDATA[Habt ihr eigentlich schon einmal
Error Occurred while processing request
als Suchbegriff bei Google eingegeben? 
Google kennt derzeit ca. 601000 Einträge von CF-Templates, bei deren Indizierung eine CF-Fehlermeldung ausgegeben wurde. Das ist Google natürlich herzlich egal, die Seite wird trotzdem in den Index aufgenommen.Das ist eine ziemlich fatale Sache, denn so bekommt man wunderbar und brühwarm die [...]<p><a href="http://bloginblack.de/2003/07/google-fatal/">Google fatal</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Habt ihr eigentlich schon einmal<br />
<b>Error Occurred while processing request</b></p>
<p>als Suchbegriff bei Google eingegeben? </p>
<p>Google kennt derzeit ca. 601000 Einträge von CF-Templates, bei deren Indizierung eine CF-Fehlermeldung ausgegeben wurde. Das ist Google natürlich herzlich egal, die Seite wird trotzdem in den Index aufgenommen.Das ist eine ziemlich fatale Sache, denn so bekommt man wunderbar und brühwarm die möglichen Angriffspunkte für fehler-/mangelhaft programmierte Webseiten aufgelistet. Ich habe auf die Schnelle mindestens zwei Sites gefunden, denen ich mit URL-Hacking das Leben hätte schwer machen können&#8230;</p>
<p>Ein Gegenmittel gibt&#8217;s leider nicht, außer man programmiert die Seiten entsprechend fehlerresistent.</p>
<p>Link hierzu:<br />
<a href="http://www.google.de/search?q=Error+occurred+while+processing+request&#038;ie=UTF-8&#038;oe=UTF-8&#038;hl=de&#038;meta=" target="_blank">Google mit o.g. Suchbegriff</a></p>
<p><a href="http://bloginblack.de/2003/07/google-fatal/">Google fatal</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=Google+fatal+http://bloginblack.de/?p=90" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2003/07/google-fatal/&amp;title=Google+fatal" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2003/07/google-fatal/&amp;t=Google+fatal" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2003/07/google-fatal/&amp;title=Google+fatal" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2003/07/google-fatal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gute Zeilen, schlechte Zeilen &#8211; Folge 4</title>
		<link>http://bloginblack.de/2003/07/gute-zeilen-schlechte-zeilen-folge-4/</link>
		<comments>http://bloginblack.de/2003/07/gute-zeilen-schlechte-zeilen-folge-4/#comments</comments>
		<pubDate>Thu, 10 Jul 2003 00:00:00 +0000</pubDate>
		<dc:creator>marcus</dc:creator>
				<category><![CDATA[Agent M on CF]]></category>

		<guid isPermaLink="false">http://www.bloginblack.de/?p=80</guid>
		<description><![CDATA[CFLOOP  &#8211; CFOUTPUT 1:1 (1:0)
In der CF-Mailingliste kam k&#252;rzlich die Frage auf, welche Art von Schleifendurchl&#228;ufen
  bei der Verarbeitung von Querysets performanter ist &#8211; CFLOOP oder CFOUTPUT.
  H&#228;tte ich in CF 4.x / 5.x noch blind auf CFLOOP getippt (daher stand es nach der ersten Halbzeit auch 1:0  , so ist [...]<p><a href="http://bloginblack.de/2003/07/gute-zeilen-schlechte-zeilen-folge-4/">Gute Zeilen, schlechte Zeilen &#8211; Folge 4</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>CFLOOP  &#8211; CFOUTPUT 1:1 (1:0)</p>
<p>In der CF-Mailingliste kam k&uuml;rzlich die Frage auf, welche Art von Schleifendurchl&auml;ufen<br />
  bei der Verarbeitung von Querysets performanter ist &#8211; CFLOOP oder CFOUTPUT.<br />
  H&auml;tte ich in CF 4.x / 5.x noch blind auf CFLOOP getippt (daher stand es nach der ersten Halbzeit auch 1:0 <img src='http://bloginblack.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> , so ist das ganze in<br />
  CFMX etwas anders&#8230;</p>
<p>Summa summarum: es gibt keine nennenswerten Unterschiede mehr, zumindest keine,<br />
  die die eine oder andere Vorgehensweise rechtfertigen. Mal ist CFLOOP schneller,<br />
  mal CFOUTPUT, aber in keinem Fall war der Unterschied so nennenswert gro&szlig;,<br />
  dass man wegen der Performance umschwenken sollte, selbst eine mit CFSCRIPT<br />
  angelegte Schleife war gleich schnell.<br />
  Um aber eine gewisse Konsistenz in den<br />
  Quellcode zu bringen, w&uuml;rde ich immer noch<br />
  folgende Richtlinien empfehlen:</p>
<ul>
<li>Bei Schleifendurchl&auml;ufen, in denen eine Ausgabe erfolgt, also HTML zum<br />
    Browser gelangt, sollte CFOUTPUT genutzt werden</li>
<li>Ist dies nicht der Fall, also z.B. bei reinen Berechnungen, w&uuml;rde ich CFLOOP<br />
    vorziehen.</li>
</ul>
<p>Damit es auch dieses Mal wieder etwas zum &quot;Anfassen&quot; gibt, hier noch der Quellcode,<br />
  mit dem ich die Messungen durchgef&uuml;hrt habe:</p>
<pre>&lt;!---queryset erstellen---&gt;
&lt;cfscript&gt;
   numberOfRecords = 1000; //anzahl der zu erstellenden demo-datens&auml;tze
   theQuery = QueryNew(&quot;name, strasse, telefon, email&quot;);
   QueryAddRow(theQuery, numberOfRecords);
&lt;/cfscript&gt;</pre>
<pre>&lt;!--- 1000 demo-datens&auml;tze f&uuml;llen---&gt;
&lt;cfloop from=&quot;1&quot; to=&quot;#numberOfRecords#&quot; index=&quot;x&quot;&gt;
 &lt;cfscript&gt;
   QuerySetCell(theQuery, &quot;name&quot;, &quot;name_#x#&quot;, x);
   QuerySetCell(theQuery, &quot;strasse&quot;, &quot;strasse_#x#&quot;, x);
   QuerySetCell(theQuery, &quot;telefon&quot;, &quot;telefon_#x#&quot;, x);
   QuerySetCell(theQuery, &quot;email&quot;, &quot;strasse_#x#&quot;, x);
 &lt;/cfscript&gt;
&lt;/cfloop&gt;</pre>
<pre>&lt;cfloop from=&quot;1&quot; to=&quot;10&quot; index=&quot;y&quot;&gt;
&lt;!--- &lt;cfoutput query=&quot;theQuery&quot;&gt; ---&gt;
&lt;!--- &lt;cfloop query=&quot;theQuery&quot;&gt; ---&gt;
&lt;!--- &lt;cfscript&gt;
   currentName = theQuery.name;
   currentStreet = theQuery.strasse;
   currentPhone = theQuery.telefon;
   currentEmail = theQuery.email;
 &lt;/cfscript&gt; ---&gt;
 &lt;!--- &lt;cfscript&gt;
   for(x = 1; x lte numberofrecords; x=x+1) {
   writeOutput(theQuery.name[x] &amp; ' ');
   }
 &lt;/cfscript&gt; ---&gt;
&lt;!--- &lt;cfoutput&gt; #theQuery.Name# &lt;/cfoutput&gt; ---&gt;
&lt;!--- &lt;/cfloop&gt; ---&gt;
 &lt;!--- &lt;/cfoutput&gt; ---&gt;
&lt;/cfloop&gt;</pre>
<p>
Ich habe hierbei jeweils bei den passenden Codest&uuml;cken die Kommentare wieder<br />
entfernt, so dass ein einfaches Hin- und Herbewegen zwischen den verschiedenen Befehlen<br />
relativ schnell m&ouml;glich war. </p>
<p>Mich w&uuml;rden nat&uuml;rlich auch die Messwerte anderer interessieren, also wenn jemand<br />
Zeit hat &#8211; immer her damit.</p>
<p><a href="http://bloginblack.de/2003/07/gute-zeilen-schlechte-zeilen-folge-4/">Gute Zeilen, schlechte Zeilen &#8211; Folge 4</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=Gute+Zeilen%2C+schlechte+Zeilen+%E2%80%93+Folge+4+http://bloginblack.de/?p=80" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2003/07/gute-zeilen-schlechte-zeilen-folge-4/&amp;title=Gute+Zeilen%2C+schlechte+Zeilen+%E2%80%93+Folge+4" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2003/07/gute-zeilen-schlechte-zeilen-folge-4/&amp;t=Gute+Zeilen%2C+schlechte+Zeilen+%E2%80%93+Folge+4" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2003/07/gute-zeilen-schlechte-zeilen-folge-4/&amp;title=Gute+Zeilen%2C+schlechte+Zeilen+%E2%80%93+Folge+4" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2003/07/gute-zeilen-schlechte-zeilen-folge-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gute Zeilen, schlechte Zeilen &#8211; Folge 3</title>
		<link>http://bloginblack.de/2003/05/gute-zeilen-schlechte-zeilen-folge-3/</link>
		<comments>http://bloginblack.de/2003/05/gute-zeilen-schlechte-zeilen-folge-3/#comments</comments>
		<pubDate>Thu, 22 May 2003 00:00:00 +0000</pubDate>
		<dc:creator>marcus</dc:creator>
				<category><![CDATA[Agent M on CF]]></category>

		<guid isPermaLink="false">http://www.bloginblack.de/?p=49</guid>
		<description><![CDATA[Folge 3 &#8211; Ja oder Nein?
Genau dies ist die h&#228;ufigste Frage, die man CF stellen sollte, denn mit boolschen
  Abfragen kommt es mit Abstand am schnellsten zurecht. Wann immer m&#246;glich, sollte
  man daher versuchen, IF-Abfragen nur nach true oder false auszuwerten.
Ein paar Beispiele hierzu:


Gut


&#60;cfif isDefined(&#34;variables.blah&#34;)
        eq [...]<p><a href="http://bloginblack.de/2003/05/gute-zeilen-schlechte-zeilen-folge-3/">Gute Zeilen, schlechte Zeilen &#8211; Folge 3</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Folge 3 &#8211; Ja oder Nein?</p>
<p>Genau dies ist die h&auml;ufigste Frage, die man CF stellen sollte, denn mit boolschen<br />
  Abfragen kommt es mit Abstand am schnellsten zurecht. Wann immer m&ouml;glich, sollte<br />
  man daher versuchen, IF-Abfragen nur nach <font face="Courier New, Courier, mono">true</font> oder <font face="Courier New, Courier, mono">false</font> auszuwerten.</p>
<p>Ein paar Beispiele hierzu:</p>
<table border="0">
<tr>
<td><strong>Gut</strong></td>
</tr>
<tr valign="top">
<td height="51"><font size="2" face="Courier New, Courier, mono">&lt;cfif isDefined(&quot;variables.blah&quot;)<br />
        eq &quot;true&quot;&gt;<br />
&#8230;<br />
&lt;/cfif&gt; </font></td>
</tr>
<tr valign="top">
<td><strong>Besser</strong></td>
</tr>
<tr valign="top">
<td>
<p><font size="2" face="Courier New, Courier, mono">&lt;cfif isDefined(&quot;variables.blah&quot;)&gt;<br />
&#8230;<br />
&lt;/cfif&gt; </font></p>
</td>
</tr>
</table>
<p>
Wenn ein Wert sowieso schon im boolschen Format vorliegt, verschenkt man mit<br />
der linken Variante Zeit, denn in dieser Form wird <font size="2" face="Courier New, Courier, mono">&quot;true&quot;</font> von CF als String verglichen,<br />
und Stringvergleiche sind de facto langsamer.</p>
<p></p>
<table border="0">
<tr>
<td><strong>Gut</strong></td>
</tr>
<tr valign="top">
<td><font size="2" face="Courier New, Courier, mono">&lt;cfif len(variables.blah)<br />
        GT 0&gt;<br />
&#8230;<br />
&lt;/cfif&gt;</font></td>
</tr>
<tr valign="top">
<td><strong>Besser</strong></td>
</tr>
<tr valign="top">
<td><font size="2" face="Courier New, Courier, mono">&lt;cfif len(variables.blah)&gt;<br />
  &#8230;<br />
&lt;/cfif&gt;</font></td>
</tr>
<tr valign="top">
<td>&nbsp;</td>
</tr>
<tr valign="top">
<td><strong>Gut</strong></td>
</tr>
<tr valign="top">
<td><font size="2" face="Courier New, Courier, mono">&lt;cfif variables.blah<br />
        neq &quot;&quot;&gt;<br />
    &#8230;<br />
&lt;/cfif&gt;</font></td>
</tr>
<tr valign="top">
<td><strong>Besser</strong></td>
</tr>
<tr valign="top">
<td><font size="2" face="Courier New, Courier, mono">&lt;cfif len(variables.blah)&gt;<br />
&#8230;<br />
&lt;/cfif&gt;</font> </td>
</tr>
<tr valign="top">
<td>&nbsp;</td>
</tr>
<tr valign="top">
<td><strong>Gut</strong></td>
</tr>
<tr valign="top">
<td><font size="2" face="Courier New, Courier, mono">&lt;cfif variables.blah<br />
        eq &quot;&quot;&gt;<br />
    &#8230;<br />
&lt;/cfif&gt;</font></td>
</tr>
<tr valign="top">
<td><strong>Besser</strong></td>
</tr>
<tr valign="top">
<td><font size="2" face="Courier New, Courier, mono">&lt;cfif not len(variables.blah)&gt;<br />
&#8230;<br />
&lt;/cfif&gt;</font> </td>
</tr>
<tr valign="top">
<td>&nbsp;</td>
</tr>
<tr valign="top">
<td><strong>Gut</strong></td>
</tr>
<tr valign="top">
<td><font size="2" face="Courier New, Courier, mono">&lt;cfif variables.blah<br />
        eq &quot;test&quot;&gt;<br />
&#8230;<br />
&lt;/cfif&gt;</font></td>
</tr>
<tr valign="top">
<td><strong>Besser</strong></td>
</tr>
<tr valign="top">
<td><font size="2" face="Courier New, Courier, mono">&lt;cfif not compareNoCase(variables.blah, &quot;test&quot;&gt;<br />
&#8230;<br />
&lt;/cfif&gt;</font></td>
</tr>
</table>
<p>Das sind einige Standardkandidaten, die ich in &quot;zu tunenden&quot; Applikationen<br />
  immer wieder finde.<br />
  Im ersten Fall ist <font size="2" face="Courier New, Courier, mono">blah</font> eine Zahl, man kann sich das <font size="2" face="Courier New, Courier, mono">gt<br />
  0</font> also komplett sparen,<br />
  da Zahlen &gt; 0 von CF als <font size="2" face="Courier New, Courier, mono">true</font> angesehen werden.<br />
  Der zweite Fall fragt ab, ob blah kein Leerstring ist, aber &#8211; wie der Name<br />
  schon sagt, es ist eben ein Stringvergleich. <font size="2" face="Courier New, Courier, mono">len()</font> liefert die L&auml;nge des Strings,<br />
  also eine Zahl zur&uuml;ck, und diese wird, wie bei Fall 1, als <font size="2" face="Courier New, Courier, mono">true</font> angesehen,<br />
  sofern sie &gt; 0 ist. <br />
  Fall 3 zeigt das umgekehrte Beispiel mit <font size="2" face="Courier New, Courier, mono">not<br />
  len()</font>, also wenn 0 als L&auml;nge zur&uuml;ckgegeben<br />
  wird.<br />
  Fall 4 macht sich die Funktionsweise von compareNoCase() zu nutze: bei Gleichheit<br />
  zweier Strings wird 0 zur&uuml;ckgegeben, und die ist &#8211; jepp, false. 
</p>
<table border="0">
<tr>
<td><strong>Schlecht</strong></td>
</tr>
<tr valign="top">
<td>
<p><font size="2" face="Courier New, Courier, mono">&lt;cfif FileExists(&quot;#path##FileName#&quot;)<br />
          EQ &quot;YES&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;cfset theFileExists=&quot;YES&quot;&gt;<br />
&lt;cfelseif FileExists(&quot;#path##FileName#&quot;) EQ &quot;NO&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;cfset theFileExists=&quot;NO&quot;&gt;<br />
&lt;/cfif&gt; </p>
<p>&lt;cfif theFileExists EQ &quot;YES&quot;&gt;<br />
    &#8230;<br />
&lt;/cfif&gt;</font>
      </p>
</td>
</tr>
<tr valign="top">
<td><strong>Besser</strong></td>
</tr>
<tr valign="top">
<td>
<p><font size="2" face="Courier New, Courier, mono">&lt;cfif fileExists(&quot;#path##FileName#&quot;)&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;cfset theFileExists=&quot;YES&quot;&gt;<br />
&lt;cfelse&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;cfset theFileExists=&quot;NO&quot;&gt;<br />
&lt;/cfif&gt; </p>
<p>&lt;cfif theFileExists&gt;<br />
&#8230;<br />
&lt;/cfif&gt;</font>
    </p>
</td>
</tr>
</table>
<p>Wirklich, das habe ich *echt so* vorgefunden. Die Stringabfrage nach <font size="2" face="Courier New, Courier, mono">&quot;yes/no&quot;</font>  muss nat&uuml;rlich weg, das zweite <font size="2" face="Courier New, Courier, mono">fileExists()</font> macht noch weniger Sinn,<br />
  denn wenn die erste<br />
  Abfrage<br />
  false zur&uuml;ckgibt, muss man nicht noch einmal abfragen, ob die Datei nicht vorhanden<br />
  ist. <img src='http://bloginblack.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>  Wenn man sich sich an diese Art des Abfragens gew&ouml;hnt hat, spart man deutlich<br />
   an ExecutionTime. Dies alles sind zwar nur kleine Effekte, aber wenn<br />
  man nur 10ms Prozessorzeit pro Aufruf spart, spart man bei 5.000 Aufrufen 50s.<br />
  Wie sehr sich dies bei HighTraffic-Sites summiert, kann man sich ausrechnen&#8230;</p>
<p><a href="http://bloginblack.de/2003/05/gute-zeilen-schlechte-zeilen-folge-3/">Gute Zeilen, schlechte Zeilen &#8211; Folge 3</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=Gute+Zeilen%2C+schlechte+Zeilen+%E2%80%93+Folge+3+http://bloginblack.de/?p=49" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2003/05/gute-zeilen-schlechte-zeilen-folge-3/&amp;title=Gute+Zeilen%2C+schlechte+Zeilen+%E2%80%93+Folge+3" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2003/05/gute-zeilen-schlechte-zeilen-folge-3/&amp;t=Gute+Zeilen%2C+schlechte+Zeilen+%E2%80%93+Folge+3" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2003/05/gute-zeilen-schlechte-zeilen-folge-3/&amp;title=Gute+Zeilen%2C+schlechte+Zeilen+%E2%80%93+Folge+3" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2003/05/gute-zeilen-schlechte-zeilen-folge-3/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

