<?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>Simon Whatley &#187; version 8</title>
	<atom:link href="http://www.simonwhatley.co.uk/tag/version-8/feed" rel="self" type="application/rss+xml" />
	<link>http://www.simonwhatley.co.uk</link>
	<description>The opposite of every great idea is another great idea</description>
	<lastBuildDate>Wed, 11 Aug 2010 09:49:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>A Minor Rant About The ColdFusion 8 Developer Exam</title>
		<link>http://www.simonwhatley.co.uk/a-minor-rant-about-the-coldfusion-8-developer-exam</link>
		<comments>http://www.simonwhatley.co.uk/a-minor-rant-about-the-coldfusion-8-developer-exam#comments</comments>
		<pubDate>Tue, 24 Jun 2008 14:19:06 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Adobe ColdFusion]]></category>
		<category><![CDATA[Adobe Press]]></category>
		<category><![CDATA[Adobe Publishing]]></category>
		<category><![CDATA[Ben Forta]]></category>
		<category><![CDATA[Ben Nadel]]></category>
		<category><![CDATA[Brian Simmons]]></category>
		<category><![CDATA[CentraSoft]]></category>
		<category><![CDATA[CF8]]></category>
		<category><![CDATA[CFMX7]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[exam]]></category>
		<category><![CDATA[Exam Buster]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[macromedia]]></category>
		<category><![CDATA[Macromedia Press]]></category>
		<category><![CDATA[prep]]></category>
		<category><![CDATA[preparation]]></category>
		<category><![CDATA[study]]></category>
		<category><![CDATA[version 7]]></category>
		<category><![CDATA[version 8]]></category>
		<category><![CDATA[Web Application Construction Kit]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=586</guid>
		<description><![CDATA[The Adobe ColdFusion 8 Developer Exam arrived earlier this year and it is about time I took it. But like Ben Nadel, the exam scares me! Why? Because there is so much more to know. With the introduction of new AJAX tags, native JSON support, .NET integration, image manipulation, threading, interfaces, not to mention full PDF integration, the presentation builder and across the board enhancements, there are a lot of new things to know.]]></description>
			<content:encoded><![CDATA[<p>The Adobe <a href="http://partners.adobe.com/public/en/ace/ACE_Exam_Guide_ColdFusion8.pdf" title="ColdFusion 8 Exam Guidelines" rel="nofollow">ColdFusion 8 Developer Exam</a> arrived earlier this year and it is about time I took it. But like Ben Nadel, the exam <a href="http://www.bennadel.com/blog/931-Getting-Certified-In-ColdFusion-8-Scares-Me.htm" title="Getting Certified In ColdFusion 8 Scares Me" rel="nofollow">scares me</a>! Why? Because there is so much more to know. With the introduction of new <acronym title="Asynchronous JavaScript and XML">AJAX</acronym> tags, native <abbr title="JavaScript Object Notation">JSON</abbr> support, .NET integration, image manipulation, threading, interfaces, not to mention full <abbr title="Portable Document Format">PDF</abbr> integration, the presentation builder and across the board enhancements, there are a lot of new things to know.</p>
<p>If it wasn&#8217;t for the fact that I am also an Adobe Certified Trainer, I would probably shy away from taking the exam, since, apart from showing that I have gained an Advanced level of knowledge of what&#8217;s available in the language/application, is it really relevant?</p>
<p><strong>Now for the moan&#8230;</strong></p>
<p>I like to prepare for exams properly. I studied hard for the CFMX6.1 and CFMX7 exams because I wanted to achieve the best result I possibly could. I don&#8217;t much like the stigma of mediocrity, so I try hard. But with the advent of the ColdFusion 8 exam, Adobe aren&#8217;t making life any easier and this isn&#8217;t because of the increased number of features. It&#8217;s because they are not supporting their exam with the appropriate study material.</p>
<p>In the past, Ben Forta had been commissioned to create the <a href="http://www.amazon.com/Macromedia-ColdFusion-Certified-Developer-Study/dp/0321330110" title="ColdFusion MX7 Developer Study Guide" rel="nofollow">official developer study guide</a>. However, according to Ben, this appears no longer to be the case (at least for now).</p>
<p>It beggars belief that Adobe release a product, then release a related exam, but do not have the will to produce a study guide. Yes we have the <a href="http://www.amazon.com/Adobe-ColdFusion-Web-Application-Construction/dp/032151548X" title="Amazon: Web Application Construction Kit" rel="nofollow">Web Application Construction Kit</a> and <a href="http://livedocs.adobe.com/coldfusion/8/" title="ColdFusion 8 Livedocs" rel="nofollow">Livedocs</a>, but for me, they are either not succinct enough or not available in print. It makes it tough to study.</p>
<p>Clearly there is a cost issue, but Adobe Publishing can be smarter these days with their print-runs. Indeed they could even allow developers to choose between a print and <abbr title="Portable Document Format">PDF</abbr> versions, much like Manning and many other publishers.</p>
<p>Perhaps Ben is busy. Surely not! But if it is the case, I&#8217;m sure there are a number of his peers that could take up the mantle. Cue&#8230;</p>
<p><strong>A ray of hope&#8230;</strong></p>
<p>There is a small ray of hope. There is likely to be an updated version of the popular <a href="http://www.centrasoft.com/products.cfm#cfmx_exam_buster" title="CFMX Exam Buster" rel="nofollow">CFMX Exam Buster</a> by CentraSoft. Brian Simmons is working hard on the latest version.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/a-minor-rant-about-the-coldfusion-8-developer-exam/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Implicit Structures in ColdFusion 8</title>
		<link>http://www.simonwhatley.co.uk/implicit-structures-in-coldfusion-8</link>
		<comments>http://www.simonwhatley.co.uk/implicit-structures-in-coldfusion-8#comments</comments>
		<pubDate>Fri, 07 Mar 2008 08:23:22 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[associative array]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[Dupont]]></category>
		<category><![CDATA[France]]></category>
		<category><![CDATA[Germany]]></category>
		<category><![CDATA[implicit]]></category>
		<category><![CDATA[John Doe]]></category>
		<category><![CDATA[key]]></category>
		<category><![CDATA[key-value]]></category>
		<category><![CDATA[London]]></category>
		<category><![CDATA[One]]></category>
		<category><![CDATA[pairs]]></category>
		<category><![CDATA[Simon Whatley]]></category>
		<category><![CDATA[Spain]]></category>
		<category><![CDATA[struct]]></category>
		<category><![CDATA[structNew]]></category>
		<category><![CDATA[structures]]></category>
		<category><![CDATA[Three]]></category>
		<category><![CDATA[Two]]></category>
		<category><![CDATA[value]]></category>
		<category><![CDATA[version 8]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=435</guid>
		<description><![CDATA[In an earlier post I eluded to the <a href="/implicit-arrays-in-coldfusion-8" title="Implicit Arrays in ColdFusion 8">implicit creation of arrays</a> in ColdFusion 8. Well, the same can be said of structures.

A structure, also known as an associative array, is a complex data type composed of a collection of keys and a collection of values, where each key is associated with one value (a key-value pair). The operation of finding the value associated with a key is called a lookup or indexing, and this is the most important operation supported by a structure. The relationship between a key and its value is sometimes called a mapping or binding. For example, if the value associated with the key "Age" is 29 and "City" is "London", we say that our structure maps "Age" to 29 and "City" to "London".]]></description>
			<content:encoded><![CDATA[<p>In an earlier post I eluded to the <a href="/implicit-arrays-in-coldfusion-8" title="Implicit Arrays in ColdFusion 8">implicit creation of arrays</a> in ColdFusion 8. Well, the same can be said of structures.</p>
<p>A structure, also known as an associative array, is a complex data type composed of a collection of keys and a collection of values, where each key is associated with one value (a key-value pair). The operation of finding the value associated with a key is called a lookup or indexing, and this is the most important operation supported by a structure. The relationship between a key and its value is sometimes called a mapping or binding. For example, if the value associated with the key &#8220;Age&#8221; is 29 and &#8220;City&#8221; is &#8220;London&#8221;, we say that our structure maps &#8220;Age&#8221; to 29 and &#8220;City&#8221; to &#8220;London&#8221;.</p>
<p>Using structures, you can call the array element you need using a string rather than a number, which is often easier to remember. The downside is that these aren&#8217;t as useful in a loop because they do not use numbers as the index value.</p>
<p>We can think of an address book as a good example of a structure. The classic way of creating and assigning key-values pairs to a structure, in earlier versions of ColdFusion, would be as follows:</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #000099;"><span style="color: #800000;">&lt;cfscript&gt;</span></span>
<span style="color: #000099;">strPerson <span style="color: #0000ff">=</span> <span style="color: #800080;">structNew</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;</span>
<span style="color: #000099;">strPerson.firstName <span style="color: #0000ff">=</span> <span style="color: #009900;">&quot;Jean&quot;</span>;</span>
<span style="color: #000099;">strPerson.lastName <span style="color: #0000ff">=</span> <span style="color: #009900;">&quot;Dupont&quot;</span>;</span>
<span style="color: #000099;">strPerson.city <span style="color: #0000ff">=</span> <span style="color: #009900;">&quot;Paris&quot;</span>;</span>
<span style="color: #000099;"><span style="color: #800000;">&lt;/cfscript&gt;</span></span></pre></div></div>

<p>Or an alternative method uses array-notation to create the necessary key-value pairs:</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #000099;"><span style="color: #800000;">&lt;cfscript&gt;</span></span>
<span style="color: #000099;">strPerson <span style="color: #0000ff">=</span> <span style="color: #800080;">structNew</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;</span>
<span style="color: #000099;">strPerson<span style="color: #000000;">&#91;</span><span style="color: #009900;">&quot;Firstname&quot;</span><span style="color: #000000;">&#93;</span> <span style="color: #0000ff">=</span> <span style="color: #009900;">&quot;Hans&quot;</span>;</span>
<span style="color: #000099;">strPerson<span style="color: #000000;">&#91;</span><span style="color: #009900;">&quot;Lastname&quot;</span><span style="color: #000000;">&#93;</span> <span style="color: #0000ff">=</span> <span style="color: #009900;">&quot;Mustermann&quot;</span>;</span>
<span style="color: #000099;">strPerson<span style="color: #000000;">&#91;</span><span style="color: #009900;">&quot;Country&quot;</span><span style="color: #000000;">&#93;</span> <span style="color: #0000ff">=</span> <span style="color: #009900;">&quot;Germany&quot;</span>;</span>
<span style="color: #000099;"><span style="color: #800000;">&lt;/cfscript&gt;</span></span></pre></div></div>

<p>NB. When using the array-notation, the key names keep their case. However, running the following code results in the value &#8220;France&#8221; being overwritten with &#8220;Germany&#8221;, even though the key name is a different case. This serves to highlight that ColdFusion is not case-sensitive.</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #000099;"><span style="color: #800000;">&lt;cfscript&gt;</span></span>
<span style="color: #000099;">strPerson <span style="color: #0000ff">=</span> <span style="color: #800080;">structNew</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;</span>
<span style="color: #000099;">strPerson<span style="color: #000000;">&#91;</span><span style="color: #009900;">&quot;Country&quot;</span><span style="color: #000000;">&#93;</span> <span style="color: #0000ff">=</span> <span style="color: #009900;">&quot;France&quot;</span>;</span>
<span style="color: #000099;">strPerson<span style="color: #000000;">&#91;</span><span style="color: #009900;">&quot;COUNTRY&quot;</span><span style="color: #000000;">&#93;</span> <span style="color: #0000ff">=</span> <span style="color: #009900;">&quot;Germany&quot;</span>;</span>
<span style="color: #000099;"><span style="color: #800000;">&lt;/cfscript&gt;</span></span></pre></div></div>

<p><strong>Implicit Structures</strong></p>
<p>With the introduction of implicit structures in ColdFusion 8, the creation of structures is greatly simplified. For example, rather than having to use the <code>structNew()</code> function, we can now simply do the following:</p>
<p>Using strings for values:</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #000099;"><span style="color: #800000;">&lt;cfscript&gt;</span></span>
<span style="color: #000099;">myStruct <span style="color: #0000ff">=</span> <span style="color: #000000;">&#123;</span>firstname<span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;Simon&quot;</span>, lastname<span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;Whatley&quot;</span>, city<span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;London&quot;</span><span style="color: #000000;">&#125;</span>;</span>
<span style="color: #000099;"><span style="color: #800000;">&lt;/cfscript&gt;</span></span></pre></div></div>

<p><img src='http://www.simonwhatley.co.uk/blog/wp-content/uploads/2008/02/implicit-structure-string-key-value.png' alt='Implicit Structures - Strings as Keys and Values' /></p>
<p>Using integers for values:</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #000099;"><span style="color: #800000;">&lt;cfscript&gt;</span></span>
<span style="color: #000099;">myStruct <span style="color: #0000ff">=</span> <span style="color: #000000;">&#123;</span>account_no<span style="color: #0000ff;">=</span><span style="color: #ff0000;">12345678</span>, s<span style="color: #0000ff;">or</span>t_code<span style="color: #0000ff;">=</span><span style="color: #ff0000;">123456</span><span style="color: #000000;">&#125;</span>;</span>
<span style="color: #000099;"><span style="color: #800000;">&lt;/cfscript&gt;</span></span></pre></div></div>

<p><img src='http://www.simonwhatley.co.uk/blog/wp-content/uploads/2008/02/implicit-structure-integer-value.png' alt='Implicit Structures - Integers as Values' /></p>
<p>Using integers as keys:</p>
<p>This example most closely represents an array since arrays have numeric keys.</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #000099;"><span style="color: #800000;">&lt;cfscript&gt;</span></span>
<span style="color: #000099;">myStruct <span style="color: #0000ff">=</span> <span style="color: #000000;">&#123;</span><span style="color: #ff0000;">10001</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;John&quot;</span>, <span style="color: #ff0000;">10002</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;Doe&quot;</span>, <span style="color: #ff0000;">10003</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;New York&quot;</span><span style="color: #000000;">&#125;</span>;</span>
<span style="color: #000099;"><span style="color: #800000;">&lt;/cfscript&gt;</span></span></pre></div></div>

<p><img src='http://www.simonwhatley.co.uk/blog/wp-content/uploads/2008/02/implicit-structure-integer-key.png' alt='Implicit Structures - Integers as Keys' /></p>
<p>The integer could represent the unique identifier of an object, for example, user ID or order ID. Therefore, if we had nested structures like below, 10001 would be the ID of Simon Whatley, whilst 10002 would be the ID of John Doe.</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #000099;"><span style="color: #800000;">&lt;cfscript&gt;</span></span>
<span style="color: #000099;">myStruct1 <span style="color: #0000ff">=</span> <span style="color: #000000;">&#123;</span>firstname<span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;Simon&quot;</span>, lastname<span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;Whatley&quot;</span>, city<span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;London&quot;</span><span style="color: #000000;">&#125;</span>;</span>
<span style="color: #000099;">myStruct2 <span style="color: #0000ff">=</span> <span style="color: #000000;">&#123;</span>firstname<span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;John&quot;</span>, lastname<span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;Doe&quot;</span>, city<span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;New York&quot;</span><span style="color: #000000;">&#125;</span>;</span>
<span style="color: #000099;">myStruct3 <span style="color: #0000ff">=</span> <span style="color: #000000;">&#123;</span><span style="color: #ff0000;">10001</span><span style="color: #0000ff;">=</span>myStruct1, <span style="color: #ff0000;">10002</span><span style="color: #0000ff;">=</span>myStruct2<span style="color: #000000;">&#125;</span>;</span>
<span style="color: #000099;"><span style="color: #800000;">&lt;/cfscript&gt;</span></span></pre></div></div>

<p><img src='http://www.simonwhatley.co.uk/blog/wp-content/uploads/2008/02/implicit-structure-nested-struct.png' alt='Implicit Structures - Nested Structures' /></p>
<p>Mixed data types:</p>
<p>It is possible to mix the data types in an structure. For example, we can use an Integer, String and Array as elements within an array, with no problems. Since we need to know the key name before accessing the value, it is also likely we will know the type of the value and will be able to handle it accordingly. However, never assume this is always the case, so type checking is necessary when retrieving the data.</p>
<p>The example below demonstrates the ability to add arrays to structures.</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #000099;"><span style="color: #800000;">&lt;cfscript&gt;</span></span>
<span style="color: #000099;">myArray1 <span style="color: #0000ff">=</span> <span style="color: #000000;">&#91;</span><span style="color: #ff0000;">1</span>,<span style="color: #ff0000;">2</span>,<span style="color: #ff0000;">3</span><span style="color: #000000;">&#93;</span>;</span>
<span style="color: #000099;">myArray2 <span style="color: #0000ff">=</span> <span style="color: #000000;">&#91;</span><span style="color: #009900;">&quot;One&quot;</span>,<span style="color: #009900;">&quot;Two&quot;</span>,<span style="color: #009900;">&quot;Three&quot;</span><span style="color: #000000;">&#93;</span>;</span>
<span style="color: #000099;">myStruct <span style="color: #0000ff">=</span> <span style="color: #000000;">&#123;</span>array1<span style="color: #0000ff;">=</span>myArray1, array2<span style="color: #0000ff;">=</span>myArray2<span style="color: #000000;">&#125;</span>;</span>
<span style="color: #000099;"><span style="color: #800000;">&lt;/cfscript&gt;</span></span></pre></div></div>

<p><img src='http://www.simonwhatley.co.uk/blog/wp-content/uploads/2008/02/implicit-structure-array-values.png' alt='Implicit Structures - Nested Arrays' /></p>
<p>Structures, by their nature, cannot be sorted by value, only by the key name. They are best for related data, where order is not important and direct access to an individual element is important. Many of ColdFusion&#8217;s variable scopes can be accessed as structures, for example, Server, Application, Session and Variables etc.</p>
<p><strong>Words of Caution</strong></p>
<p>Implicit structures do have their limitations. For example, you cannot nest implicit struct, or indeed array, creation.</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #000099;"><span style="color: #800000;">&lt;cfscript&gt;</span></span>
<span style="color: #000099;">myStruct1 <span style="color: #0000ff">=</span> <span style="color: #000000;">&#123;</span></span>
<span style="color: #000099;">	myStruct2 <span style="color: #0000ff">=</span> <span style="color: #000000;">&#123;</span></span>
<span style="color: #000099;">		firstName <span style="color: #0000ff">=</span> <span style="color: #009900;">&quot;Jean&quot;</span>,</span>
<span style="color: #000099;">		lastName <span style="color: #0000ff">=</span> <span style="color: #009900;">&quot;Dupont&quot;</span>,</span>
<span style="color: #000099;">		country <span style="color: #0000ff">=</span> <span style="color: #009900;">&quot;France&quot;</span></span>
<span style="color: #000099;">	<span style="color: #000000;">&#125;</span>,</span>
<span style="color: #000099;">	myStruct3 <span style="color: #0000ff">=</span> <span style="color: #000000;">&#123;</span></span>
<span style="color: #000099;">		firstName <span style="color: #0000ff">=</span> <span style="color: #009900;">&quot;Juan&quot;</span>,</span>
<span style="color: #000099;">		lastName <span style="color: #0000ff">=</span> <span style="color: #009900;">&quot;Pablo&quot;</span>,</span>
<span style="color: #000099;">		country <span style="color: #0000ff">=</span> <span style="color: #009900;">&quot;Spain&quot;</span></span>
<span style="color: #000099;">	<span style="color: #000000;">&#125;</span></span>
<span style="color: #000099;"><span style="color: #000000;">&#125;</span></span>
<span style="color: #000099;"><span style="color: #800000;">&lt;/cfscript&gt;</span></span></pre></div></div>

<p>The above will throw the following parsing error:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">coldfusion.compiler.ParseException:
Invalid CFML construct found on line 3 at column 10.</pre></div></div>

<p><strong>UPDATE:</strong> The recent <a href="http://www.adobe.com/support/coldfusion/downloads_updates.html#cf8" title="ColdFusion Update" target="_blank" rel="nofollow">ColdFusion Update</a> now includes the ability to nest implicit structures.</p>
<p>To get around this problem, you can create each structure individually and then use the structure as the value in a key-value pair (as seen in the nested structure example above).</p>
<p>A (possible) strength of ColdFusion is that you can add key-value pairs as many times as is necessary. This is the same for explicit and implicit structure creation. However, the following code and screenshot serves to demonstrate that whether you explicitly or implicitly create a structure, if you duplicate a key, the last key-value pair in the sequence is the one that is represented in the structure:</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #000099;"><span style="color: #800000;">&lt;cfscript&gt;</span></span>
<span style="color: #000099;">myStruct <span style="color: #0000ff">=</span> <span style="color: #000000;">&#123;</span></span>
<span style="color: #000099;">	firstName <span style="color: #0000ff">=</span> <span style="color: #009900;">&quot;Jean&quot;</span>,</span>
<span style="color: #000099;">	lastName <span style="color: #0000ff">=</span> <span style="color: #009900;">&quot;Dupont&quot;</span>,</span>
<span style="color: #000099;">	country <span style="color: #0000ff">=</span> <span style="color: #009900;">&quot;France&quot;</span>,</span>
<span style="color: #000099;">	country <span style="color: #0000ff">=</span> <span style="color: #009900;">&quot;Germany&quot;</span></span>
<span style="color: #000099;"><span style="color: #000000;">&#125;</span>;</span>
<span style="color: #000099;"><span style="color: #800000;">&lt;/cfscript&gt;</span></span></pre></div></div>

<p><img src='http://www.simonwhatley.co.uk/blog/wp-content/uploads/2008/03/implicit-structure-duplicate-key.png' alt='Implicit Structures - Duplicate Keys' /></p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/implicit-structures-in-coldfusion-8/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Implicit Arrays in ColdFusion 8</title>
		<link>http://www.simonwhatley.co.uk/implicit-arrays-in-coldfusion-8</link>
		<comments>http://www.simonwhatley.co.uk/implicit-arrays-in-coldfusion-8#comments</comments>
		<pubDate>Thu, 06 Mar 2008 08:15:05 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[arrayNew]]></category>
		<category><![CDATA[arrays]]></category>
		<category><![CDATA[cfscript]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[examples]]></category>
		<category><![CDATA[implicit]]></category>
		<category><![CDATA[One]]></category>
		<category><![CDATA[Three]]></category>
		<category><![CDATA[Two]]></category>
		<category><![CDATA[version 8]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=446</guid>
		<description><![CDATA[A great new feature of ColdFusion 8 is its new implicit creation of Arrays and Structures. In addition to the updates to operators in ColdFusion, those of you familiar with JavaScript will recognise and welcome these changes.

An array is a data structure consisting of a group of elements that are accessed by indexing. In most programming languages each element has the same data type. However, ColdFusion, as we will see, is not strictly typed and therefore allows any data type to be stored in combination. This allows strings, integers, booleans and other complex data types all to be stored in the same array. However, doing this certainly isn't a good practice as it causes signification complication when accessing the stored data.

Variables of a simple data type commonly only store a single value but, in some situations, it is useful to have a variable that can store a series of related values - using an array. Arrays are described as complex data types because they can hold data in a structured, complex way.]]></description>
			<content:encoded><![CDATA[<p>A great new feature of ColdFusion 8 is its new implicit creation of Arrays and Structures. In addition to the updates to operators in ColdFusion, those of you familiar with JavaScript will recognise and welcome these changes.</p>
<p>An array is a data structure consisting of a group of elements that are accessed by indexing. In most programming languages each element has the same data type. However, ColdFusion, as we will see, is not strictly typed and therefore allows any data type to be stored in combination. This allows strings, integers, booleans and other complex data types all to be stored in the same array. However, doing this certainly isn&#8217;t a good practice as it causes signification complication when accessing the stored data.</p>
<p>Variables of a simple data type commonly only store a single value but, in some situations, it is useful to have a variable that can store a series of related values &#8211; using an array. Arrays are described as complex data types because they can hold data in a structured, complex way.</p>
<p>For example, suppose a routine is required that will calculate the average age among a group of six students. The ages of the students could be stored in six integer variables, added together and then divided by 6:</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #000099;"><span style="color: #800000;">&lt;cfscript&gt;</span></span>
<span style="color: #000099;">a<span style="color: #0000ff;">ge</span>1 <span style="color: #0000ff">=</span> <span style="color: #ff0000;">19</span>;</span>
<span style="color: #000099;">a<span style="color: #0000ff;">ge</span>2 <span style="color: #0000ff">=</span> <span style="color: #ff0000;">20</span>;</span>
<span style="color: #000099;">a<span style="color: #0000ff;">ge</span>3 <span style="color: #0000ff">=</span> <span style="color: #ff0000;">21</span>;</span>
<span style="color: #000099;">a<span style="color: #0000ff;">ge</span>4 <span style="color: #0000ff">=</span> <span style="color: #ff0000;">22</span>;</span>
<span style="color: #000099;">a<span style="color: #0000ff;">ge</span>5 <span style="color: #0000ff">=</span> <span style="color: #ff0000;">23</span>;</span>
<span style="color: #000099;">a<span style="color: #0000ff;">ge</span>6 <span style="color: #0000ff">=</span> <span style="color: #ff0000;">18</span>;</span>
&nbsp;
<span style="color: #000099;">avera<span style="color: #0000ff;">ge</span>_a<span style="color: #0000ff;">ge</span> <span style="color: #0000ff">=</span> <span style="color: #000000;">&#40;</span>a<span style="color: #0000ff;">ge</span>1 <span style="color: #0000ff;">+</span> a<span style="color: #0000ff;">ge</span>2 <span style="color: #0000ff;">+</span> a<span style="color: #0000ff;">ge</span>3 <span style="color: #0000ff;">+</span> a<span style="color: #0000ff;">ge</span>4 <span style="color: #0000ff;">+</span> a<span style="color: #0000ff;">ge</span>5 <span style="color: #0000ff;">+</span> a<span style="color: #0000ff;">ge</span>6<span style="color: #000000;">&#41;</span> <span style="color: #0000ff;">/</span> <span style="color: #ff0000;">6</span>;</span>
&nbsp;
<span style="color: #000099;"><span style="color: #800080;">writeOutput</span><span style="color: #000000;">&#40;</span>avera<span style="color: #0000ff;">ge</span>_a<span style="color: #0000ff;">ge</span><span style="color: #000000;">&#41;</span>; <span style="color: #808080;">// returns 20.5</span></span>
<span style="color: #000099;"><span style="color: #800000;">&lt;/cfscript&gt;</span></span></pre></div></div>

<p>However, a better solution would be to store the data in a six-element array and calculate the average age based upon the sum or the ages and the array length:</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #000099;"><span style="color: #800000;">&lt;cfscript&gt;</span></span>
<span style="color: #000099;">a<span style="color: #0000ff;">ge</span> <span style="color: #0000ff">=</span> <span style="color: #800080;">arrayNew</span><span style="color: #000000;">&#40;</span><span style="color: #ff0000;">1</span><span style="color: #000000;">&#41;</span>;</span>
<span style="color: #000099;">a<span style="color: #0000ff;">ge</span><span style="color: #000000;">&#91;</span><span style="color: #ff0000;">1</span><span style="color: #000000;">&#93;</span> <span style="color: #0000ff">=</span> <span style="color: #ff0000;">19</span>;</span>
<span style="color: #000099;">a<span style="color: #0000ff;">ge</span><span style="color: #000000;">&#91;</span><span style="color: #ff0000;">2</span><span style="color: #000000;">&#93;</span> <span style="color: #0000ff">=</span> <span style="color: #ff0000;">20</span>;</span>
<span style="color: #000099;">a<span style="color: #0000ff;">ge</span><span style="color: #000000;">&#91;</span><span style="color: #ff0000;">3</span><span style="color: #000000;">&#93;</span> <span style="color: #0000ff">=</span> <span style="color: #ff0000;">21</span>;</span>
<span style="color: #000099;">a<span style="color: #0000ff;">ge</span><span style="color: #000000;">&#91;</span><span style="color: #ff0000;">4</span><span style="color: #000000;">&#93;</span> <span style="color: #0000ff">=</span> <span style="color: #ff0000;">22</span>;</span>
<span style="color: #000099;">a<span style="color: #0000ff;">ge</span><span style="color: #000000;">&#91;</span><span style="color: #ff0000;">5</span><span style="color: #000000;">&#93;</span> <span style="color: #0000ff">=</span> <span style="color: #ff0000;">23</span>;</span>
<span style="color: #000099;">a<span style="color: #0000ff;">ge</span><span style="color: #000000;">&#91;</span><span style="color: #ff0000;">6</span><span style="color: #000000;">&#93;</span> <span style="color: #0000ff">=</span> <span style="color: #ff0000;">18</span>;</span>
&nbsp;
<span style="color: #000099;">sum_a<span style="color: #0000ff;">ge</span> <span style="color: #0000ff">=</span> <span style="color: #ff0000;">0</span>;</span>
&nbsp;
<span style="color: #000099;"><span style="color: #808080;">//loop over the age array adding age together all ages</span></span>
<span style="color: #000099;"><span style="color: #0000ff;">for</span> <span style="color: #000000;">&#40;</span>i <span style="color: #0000ff">=</span> <span style="color: #ff0000;">1</span>; i <span style="color: #800000;">&lt;</span><span style="color: #0000ff;">=</span> <span style="color: #800080;">arrayLen</span><span style="color: #000000;">&#40;</span>a<span style="color: #0000ff;">ge</span><span style="color: #000000;">&#41;</span>; i<span style="color: #0000ff;">++</span><span style="color: #000000;">&#41;</span></span>
<span style="color: #000099;"><span style="color: #000000;">&#123;</span></span>
<span style="color: #000099;">    sum_a<span style="color: #0000ff;">ge</span> <span style="color: #0000ff;">+</span><span style="color: #0000ff">=</span> a<span style="color: #0000ff;">ge</span><span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span>;</span>
<span style="color: #000099;"><span style="color: #000000;">&#125;</span></span>
&nbsp;
<span style="color: #000099;"><span style="color: #808080;">//calculate the average age</span></span>
<span style="color: #000099;">avera<span style="color: #0000ff;">ge</span>_a<span style="color: #0000ff;">ge</span> <span style="color: #0000ff">=</span> sum_a<span style="color: #0000ff;">ge</span> <span style="color: #0000ff;">/</span> <span style="color: #800080;">arrayLen</span><span style="color: #000000;">&#40;</span>a<span style="color: #0000ff;">ge</span><span style="color: #000000;">&#41;</span>;</span>
&nbsp;
<span style="color: #000099;"><span style="color: #800080;">writeOutput</span><span style="color: #000000;">&#40;</span>avera<span style="color: #0000ff;">ge</span>_a<span style="color: #0000ff;">ge</span><span style="color: #000000;">&#41;</span>; <span style="color: #808080;">// returns 20.5</span></span>
<span style="color: #000099;"><span style="color: #800000;">&lt;/cfscript&gt;</span></span></pre></div></div>

<p>This is a few more lines of code, but allows for the flexibility of increasing or decreasing the number of elements (in this case ages)  in the array, with no impact upon the core calculation.</p>
<p>NB: Unlike other programming languages, ColdFusion array indexes start from 1 not 0 (zero).</p>
<p><strong>Implicit Arrays</strong></p>
<p>With the introduction of implicit arrays in ColdFusion 8, the creation of arrays is greatly simplified. For example, rather than having to use the <code>arrayNew(1)</code> function, we can now simply do the following:</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #000099;"><span style="color: #800000;">&lt;cfscript&gt;</span></span>
<span style="color: #000099;">myArray1 <span style="color: #0000ff">=</span> <span style="color: #000000;">&#91;</span><span style="color: #ff0000;">1</span>,<span style="color: #ff0000;">2</span>,<span style="color: #ff0000;">3</span><span style="color: #000000;">&#93;</span>; <span style="color: #808080;">//integers</span></span>
<span style="color: #000099;"><span style="color: #800000;">&lt;/cfscript&gt;</span></span></pre></div></div>

<p><img src='http://www.simonwhatley.co.uk/blog/wp-content/uploads/2008/02/implicit-array-example-integers.png' alt='Implicit Arrays - Integer Example' /></p>
<p>This means that we can take the age calculation from ealier, and make the code even simpler to write:</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #000099;"><span style="color: #800000;">&lt;cfscript&gt;</span></span>
<span style="color: #000099;"><span style="color: #808080;">//implicity create the age array</span></span>
<span style="color: #000099;">a<span style="color: #0000ff;">ge</span> <span style="color: #0000ff">=</span> <span style="color: #000000;">&#91;</span><span style="color: #ff0000;">19</span>,<span style="color: #ff0000;">20</span>,<span style="color: #ff0000;">21</span>,<span style="color: #ff0000;">22</span>,<span style="color: #ff0000;">23</span>,<span style="color: #ff0000;">18</span><span style="color: #000000;">&#93;</span>;</span>
&nbsp;
<span style="color: #000099;">sum_a<span style="color: #0000ff;">ge</span> <span style="color: #0000ff">=</span> <span style="color: #ff0000;">0</span>;</span>
&nbsp;
<span style="color: #000099;"><span style="color: #808080;">//loop over the age array adding age together all ages</span></span>
<span style="color: #000099;"><span style="color: #0000ff;">for</span> <span style="color: #000000;">&#40;</span>i <span style="color: #0000ff">=</span> <span style="color: #ff0000;">1</span>; i <span style="color: #800000;">&lt;</span><span style="color: #0000ff;">=</span> <span style="color: #800080;">arrayLen</span><span style="color: #000000;">&#40;</span>a<span style="color: #0000ff;">ge</span><span style="color: #000000;">&#41;</span>; i<span style="color: #0000ff;">++</span><span style="color: #000000;">&#41;</span></span>
<span style="color: #000099;"><span style="color: #000000;">&#123;</span></span>
<span style="color: #000099;">    sum_a<span style="color: #0000ff;">ge</span> <span style="color: #0000ff;">+</span><span style="color: #0000ff">=</span> a<span style="color: #0000ff;">ge</span><span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span>;</span>
<span style="color: #000099;"><span style="color: #000000;">&#125;</span></span>
&nbsp;
<span style="color: #000099;"><span style="color: #808080;">//calculate the average age</span></span>
<span style="color: #000099;">avera<span style="color: #0000ff;">ge</span>_a<span style="color: #0000ff;">ge</span> <span style="color: #0000ff">=</span> sum_a<span style="color: #0000ff;">ge</span> <span style="color: #0000ff;">/</span> <span style="color: #800080;">arrayLen</span><span style="color: #000000;">&#40;</span>a<span style="color: #0000ff;">ge</span><span style="color: #000000;">&#41;</span>;</span>
&nbsp;
<span style="color: #000099;"><span style="color: #800080;">writeOutput</span><span style="color: #000000;">&#40;</span>avera<span style="color: #0000ff;">ge</span>_a<span style="color: #0000ff;">ge</span><span style="color: #000000;">&#41;</span>; <span style="color: #808080;">// returns 20.5</span></span>
<span style="color: #000099;"><span style="color: #800000;">&lt;/cfscript&gt;</span></span></pre></div></div>

<p><strong>Further examples</strong></p>
<p>The following code snippets serve to exemplify my earlier comment that arrays can store any data type and indeed, any data type in combination.</p>
<p>Using strings:</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #000099;"><span style="color: #800000;">&lt;cfscript&gt;</span></span>
<span style="color: #000099;">myArray2 <span style="color: #0000ff">=</span> <span style="color: #000000;">&#91;</span><span style="color: #009900;">&quot;One&quot;</span>,<span style="color: #009900;">&quot;Two&quot;</span>,<span style="color: #009900;">&quot;Three&quot;</span><span style="color: #000000;">&#93;</span>; <span style="color: #808080;">//strings</span></span>
<span style="color: #000099;"><span style="color: #800000;">&lt;/cfscript&gt;</span></span></pre></div></div>

<p><img src='http://www.simonwhatley.co.uk/blog/wp-content/uploads/2008/02/implicit-array-example-strings.png' alt='Implicit Arrays - String Example' /></p>
<p>Using complex data types:</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #000099;"><span style="color: #800000;">&lt;cfscript&gt;</span></span>
<span style="color: #000099;">myArray3 <span style="color: #0000ff">=</span> <span style="color: #000000;">&#91;</span>myArray1,myArray2<span style="color: #000000;">&#93;</span>; <span style="color: #808080;">//complex types (arrays)</span></span>
<span style="color: #000099;"><span style="color: #800000;">&lt;/cfscript&gt;</span></span></pre></div></div>

<p><img src='http://www.simonwhatley.co.uk/blog/wp-content/uploads/2008/02/implicit-array-example-variables.png' alt='Implicit Arrays - Variables Example' /></p>
<p>Using implicit structures:</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #000099;"><span style="color: #800000;">&lt;cfscript&gt;</span></span>
<span style="color: #000099;">myStruct1 <span style="color: #0000ff">=</span> <span style="color: #000000;">&#123;</span>firstname<span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;Simon&quot;</span>, lastname<span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;Whatley&quot;</span>, city<span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;London&quot;</span><span style="color: #000000;">&#125;</span>;</span>
<span style="color: #000099;">myStruct2 <span style="color: #0000ff">=</span> <span style="color: #000000;">&#123;</span>firstname<span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;John&quot;</span>, lastname<span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;Doe&quot;</span>, city<span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;New York&quot;</span><span style="color: #000000;">&#125;</span>;</span>
<span style="color: #000099;">myArray <span style="color: #0000ff">=</span> <span style="color: #000000;">&#91;</span>myStruct1, myStruct2<span style="color: #000000;">&#93;</span>;</span>
<span style="color: #000099;"><span style="color: #800000;">&lt;/cfscript&gt;</span></span></pre></div></div>

<p><img src='http://www.simonwhatley.co.uk/blog/wp-content/uploads/2008/02/implicit-array-example-complex.png' alt='Implicit Arrays - Complex Example' /></p>
<p>The last two examples above serve to demonstrate that any complex data type can be used in conjuction with an array. This has not changed between ColdFusion version 7 and 8.</p>
<p>Mixing data types:</p>
<p>Although certainly not good practice, it is possible to mix the data types in an array. For example, we can use an Integer, String and Array as elements within an array, with no problem. However, it is when accessing this data that problems will arise.</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #000099;"><span style="color: #800000;">&lt;cfscript&gt;</span></span>
<span style="color: #000099;">myArray4 <span style="color: #0000ff">=</span> <span style="color: #000000;">&#91;</span><span style="color: #ff0000;">1</span>,<span style="color: #009900;">&quot;Two&quot;</span>,myArray2<span style="color: #000000;">&#93;</span>;</span>
<span style="color: #000099;"><span style="color: #800000;">&lt;/cfscript&gt;</span></span></pre></div></div>

<p><img src='http://www.simonwhatley.co.uk/blog/wp-content/uploads/2008/02/implicit-array-example-combination.png' alt='Implicit Arrays - Combined Example' /></p>
<p>Although the ColdFusion engine is not strict with regard to what data types are used within an array, always stick to the same type for each element.</p>
<p><strong>Words of Caution</strong></p>
<p>Implicit arrays do have their limitations. For example, you cannot nest implicit array, or indeed struct, creation.</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #000099;"><span style="color: #800000;">&lt;cfscript&gt;</span></span>
<span style="color: #000099;">arrayOne <span style="color: #0000ff">=</span> <span style="color: #000000;">&#91;</span></span>
<span style="color: #000099;">	arrayTwo <span style="color: #0000ff">=</span> <span style="color: #000000;">&#91;</span><span style="color: #ff0000;">1</span>,<span style="color: #ff0000;">2</span>,<span style="color: #ff0000;">3</span><span style="color: #000000;">&#93;</span>,</span>
<span style="color: #000099;">	arrayThree <span style="color: #0000ff">=</span> <span style="color: #000000;">&#91;</span><span style="color: #ff0000;">4</span>,<span style="color: #ff0000;">5</span>,<span style="color: #ff0000;">6</span><span style="color: #000000;">&#93;</span></span>
<span style="color: #000099;"><span style="color: #000000;">&#93;</span></span>
<span style="color: #000099;"><span style="color: #800000;">&lt;/cfscript&gt;</span></span></pre></div></div>

<p>The above will throw the following parsing error:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">coldfusion.compiler.ParseException:
Invalid CFML construct found on line 3 at column 13.</pre></div></div>

<p><strong>UPDATE:</strong> The recent <a href="http://www.adobe.com/support/coldfusion/downloads_updates.html#cf8" title="ColdFusion Update" target="_blank" rel="nofollow">ColdFusion Update</a> now includes the ability to nest implicit arrays.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/implicit-arrays-in-coldfusion-8/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Installing ColdFusion 8 on Vista</title>
		<link>http://www.simonwhatley.co.uk/installing-coldfusion-8-on-vista</link>
		<comments>http://www.simonwhatley.co.uk/installing-coldfusion-8-on-vista#comments</comments>
		<pubDate>Mon, 12 Nov 2007 09:22:52 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[101]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Application Servers]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[help]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[non trivial]]></category>
		<category><![CDATA[version 8]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[Web Servers]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=333</guid>
		<description><![CDATA[A few months ago I posted an article on Installing Apache on Vista, and it proved to be extremely popular. It appears that I was not the only one who found it a non trivial matter.

Now it is the turn of ColdFusion 8. ColdFusion 8 as we well know is the latest and greatest incarnation of the ColdFusion platform from Adobe. It has a lot of great new features such as cfimage, cfzip, cfexchange, some contentious features such as cfthread and cfinterface, and some not-so-necessarily-cool new â€œWeb 2.0â€³ features such as cffeed and cfajax.]]></description>
			<content:encoded><![CDATA[<p>A few months ago I posted an article on <a href="http://www.simonwhatley.co.uk/installing-apache-on-vista" title="Installing Apache on Vista">Installing Apache on Vista</a>, and it proved to be extremely popular. It appears that I was not the only one who found it a non trivial matter.</p>
<p>Now it is the turn of ColdFusion 8. ColdFusion 8 as we well know is the latest and greatest incarnation of the ColdFusion platform from Adobe. It has a lot of great new features such as cfimage, cfzip, cfexchange, some contentious features such as cfthread and cfinterface, and some not-so-necessarily-cool new &#8220;Web 2.0&#8243; features such as cffeed and cfajax. But since this article isn&#8217;t about any of these, I better stick to the topic.</p>
<p>Like my article on installing Apache, installing ColdFusion on Vista is again not a trivial matter and involves only what can colloquially described as a &#8220;shed load of steps&#8221;. I&#8217;m probably being a little harsh towards ColdFusion as many of the problems I encountered were more closely related to Apache than ColdFusion.</p>
<p>NB: This article will assume that you have pre-installed Apache (although you could use <acronym title="Internet Information Service">IIS</acronym> if so compelled), turned off Vista&#8217;s User Account Control (<acronym title="User Account Control">UAC</acronym>), disabled any firewalls you have installed and finally, but most importantly, <a href="http://www.adobe.com/products/coldfusion/" title="Adobe ColdFusion Product Page" target="_blank" rel="nofollow">you have downloaded ColdFusion from the Adobe website</a>.</p>
<p>Let us begin.</p>
<ol>
<li>
Find where you downloaded your copy of the <strong>ColdFusion Installer</strong>. Right-click on the executable file and specify to &#8220;Run as Administrator&#8221;. The installer should start and you should see the screenshot below. Select &#8220;English&#8221;, or which ever your language preference is, and Click &#8220;OK&#8221;.</p>
<p><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2007/11/cf8-install-step-01.png" alt="1. ColdFusion Installer" /></p>
</li>
<li>
The <strong>ColdFusion Installation</strong> progress screen may or may not be briefly displayed.</p>
<p><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2007/11/cf8-install-step-02.png" alt="2. ColdFusion Installation Progress" /></p>
</li>
<li>
The <strong>Introduction</strong> screen will be displayed. Click &#8220;Next&#8221;.</p>
<p><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2007/11/cf8-install-step-03.png" alt="3. Introduction Screen" /></p>
</li>
<li>
The <strong>License Agreement</strong> screen will then be displayed. Agree to the &#8220;I accept the terms of the License Agreement&#8221; and Click &#8220;Next&#8221;.</p>
<p><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2007/11/cf8-install-step-04.png" alt="4. License Agreement" /></p>
</li>
<li>
The <strong>Install Type</strong> screen is then displayed. You don&#8217;t need to enter a serial number unless you are installing this into a production environment. Check &#8220;Developer Edition&#8221; and Click &#8220;Next&#8221;.</p>
<p><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2007/11/cf8-install-step-05.png" alt="5. Install Type" /></p>
</li>
<li>
The <strong>Installer Configuration</strong> screen should be displayed. Since we already have Apache 2.x installed as our web server (if you want to use <acronym title="Internet Information Service">IIS</acronym>, you will need to skip steps 11.1 and 11.2), check &#8220;Server configuration&#8221; and Click &#8220;Next&#8221;.</p>
<p><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2007/11/cf8-install-step-06.png" alt="6. Installer Configuration" /></p>
</li>
<li>
The <strong>Sub-component Installation</strong> screen should be displayed. This is one of the noticeable changes from version 7 to version 8 of ColdFusion. Hovering your mouse over each sub-component will describe in more detail what each sub-component does. If you plan to integrate .NET (especially with WebServices) or carry out Flex development then make sure that the &#8220;.NET Integration Services&#8221; and &#8220;LiveCycle Data Services&#8221; items are checked. For simplicities sake, check everything and Click &#8220;Next&#8221;.</p>
<p><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2007/11/cf8-install-step-07.png" alt="7. Sub-component Installation" /></p>
</li>
<li>
The <strong>Select Installation Directory</strong> screen should be displayed. The default directory for a Serverconfiguration will be &#8220;C:\ColdFusion8&#8243; on a Windows machine. Click &#8220;Next&#8221; to continue.</p>
<p><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2007/11/cf8-install-step-08.png" alt="8. Select Installation Directory" /></p>
</li>
<li>
As you have chosen to install LiveCycle Data Services, you will need to agree to a further <strong>Licence Agreement</strong> screen. Click &#8220;Next&#8221;.</p>
<p><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2007/11/cf8-install-step-09.png" alt="9. Licence Agreement (LiveCycle Data Services)" /></p>
</li>
<li>
The <strong>Adobe Livecycle Data Services ES Installation</strong> screen is displayed. You will need to enter a serial number into this screen for production environments. Since I am going to assume a development environment, simply click &#8220;Next&#8221;.</p>
<p><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2007/11/cf8-install-step-10.png" alt="10. Adobe Livecycle Data Services ES Installation" /></p>
</li>
<li>
The <strong>Configure Web Servers / Websites</strong> screen should be displayed. This is the point where we want to connect ColdFusion with Apache. By default &#8220;Configure web server connector for ColdFusion&#8221; is checked. We need to add Apache so Click &#8220;Add&#8221;.</p>
<p><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2007/11/cf8-install-step-11.png" alt="11. Configure Web Servers / Websites" /></p>
<ol>
<li>The <strong>Add Web Server Configuration</strong> screen is displayed, choose Apache from the drop-down.</li>
<li>
Add the relevant Apache directory paths, e.g.:</p>
<p><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2007/11/cf8-install-step-11-2.png" alt="11-2. Add Web Server Configuration (Directory Paths)" /></p>
<ol>
<li>The <strong>Configuration Directory</strong> C:\Program Files\Apache Software Foundation\Apache2.2\conf</li>
<li>The <strong>Server Binary Directory</strong> C:\Program Files\Apache Software Foundation\Apache2.2\bin\httpd.exe</li>
</ol>
</li>
</ol>
</li>
<li>
The <strong>Review Configured Web Server</strong> screen is then displayed. If all the settings are correct, click &#8220;Next&#8221;.</p>
<p><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2007/11/cf8-install-step-12.png" alt="12. Review Configured Web Server" /></p>
</li>
<li>
The <strong>Choose Adobe ColdFusion 8 Administrator Location</strong> screen should be displayed. Since we are using Apache for our web server then the default Directory should be pointing to C:\Program Files\Apache Software Foundation\Apache2.2\htdocs. You can alternatively point this to C:\WebRoot or wherever you have set up your web project files. Select &#8220;Next&#8221;.</p>
<p><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2007/11/cf8-install-step-13.png" alt="13. Choose Adobe ColdFusion 8 Administrator Location" /></p>
</li>
<li>
The <strong>Adminstrator Password</strong> screen is then displayed, prompting for a password. Enter one, remember it (!!) and click &#8220;Next&#8221;.</p>
<p><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2007/11/cf8-install-step-14.png" alt="14. Adminstrator Password" /></p>
</li>
<li>
The <strong>Enable <acronym title="Remote Development Service">RDS</acronym> &amp; Password</strong> screen is then displayed. If you want to use this, check the box and provide an additional password. Don&#8217;t use <acronym title="Remote Development Service">RDS</acronym> in a production environment. Click &#8220;Next&#8221;.</p>
<p><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2007/11/cf8-install-step-15.png" alt="15. Enable RDS &amp; Password" /></p>
</li>
<li>
The <strong>Pre-Installation Summary</strong> screen is then displayed, detailing your configuration. This is your last chance to go back and make changes. If everything is OK, click &#8220;Install&#8221;.</p>
<p><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2007/11/cf8-install-step-16.png" alt="16. Pre-Installation Summary" /></p>
</li>
<li>
The <strong>Installing Adobe ColdFusion 8</strong> screen is then displayed, showing a host of marketing messages.</p>
<p><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2007/11/cf8-install-step-17.png" alt="17. Installing Adobe ColdFusion 8" /></p>
</li>
<li>
The <strong>Please Wait</strong> screen is displayed, and be prepared to wait!</p>
<p><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2007/11/cf8-install-step-18.png" alt="18. Please Wait" /></p>
</li>
<li>
The <strong>Installation Complete</strong> screen is finally displayed and indeed the installation is complete. Now for the configuration! Click &#8220;Done&#8221;.</p>
<p><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2007/11/cf8-install-step-19.png" alt="19. Installation Complete" /></p>
</li>
<li>
Configuration and Settings Migration Wizard. Open up a browser and enter the url http://localhost/CFIDE/administrator/index.cfm to begin the <strong>ColdFusion 8 Configuration and Settings Migration Wizard</strong>. Enter your password and Click &#8220;Login&#8221;.</p>
<p><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2007/11/cf8-install-step-20.png" alt="20. Configuration and Settings Migration Wizard" /></p>
</li>
<li>
ColdFusion will now begin <strong>Configuring Server</strong>, which could take any number of minutes to complete.</p>
<p><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2007/11/cf8-install-step-21.png" alt="21. Configuring Server" /></p>
</li>
<li>
Once the <strong>Configuration Complete</strong> is displayed, you can login to the ColdFusion Administrator and start working, or playing, with the new interface, settings and Server Monitor.</p>
<p><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2007/11/cf8-install-step-22.png" alt="22. Configuration Complete" /></p>
</li>
</ol>
<p>So, that only 22 steps! That may be the longest installation process you may go through, but the power now at your finger tips to produce hugely interactive websites is a compelling reason why to choose this version of ColdFusion, or indeed ColdFusion over other products.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/installing-coldfusion-8-on-vista/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
