<?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>For the Developer &#187; programming</title>
	<atom:link href="http://forthedeveloper.com/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://forthedeveloper.com</link>
	<description>By Developers, For Developers</description>
	<lastBuildDate>Tue, 20 Jul 2010 23:54:14 +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>GIT SSH keys with Hudson on Ubuntu’s Tomcat</title>
		<link>http://forthedeveloper.com/2010/git-ssh-keys-with-hudson-on-ubuntu%e2%80%99s-tomcat/</link>
		<comments>http://forthedeveloper.com/2010/git-ssh-keys-with-hudson-on-ubuntu%e2%80%99s-tomcat/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 23:54:14 +0000</pubDate>
		<dc:creator>Randy Merrill</dc:creator>
				<category><![CDATA[bash]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[hudson]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[private]]></category>
		<category><![CDATA[tomcat6]]></category>

		<guid isPermaLink="false">http://forthedeveloper.com/?p=220</guid>
		<description><![CDATA[I&#8217;ve recently covered how to configure git with Hudson on Ubuntu&#8217;s Tomcat and it has worked quite well. After taking the plunge and subscribing to have private repositories on github I ran into an issue of not being able to clone the private repository since it was&#8230; well, private. Here is the message I was [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently covered how to <a href="/2010/git-config-with-hudson-on-ubuntus-tomcat/">configure git with Hudson on Ubuntu&#8217;s Tomcat</a> and it has worked quite well. After taking the plunge and subscribing to have private repositories on <a href="http://github.com">github</a> I ran into an issue of not being able to clone the private repository since it was&#8230; well, private.</p>
<p>Here is the message I was seeing:</p>
<blockquote><p><code>ERROR: Error cloning remote repo 'origin' : Could not clone https://username@github.com/username/repository.git<br />
ERROR: Cause: Error performing git clone -o origin https://username@github.com/username/repository.git /srv/hudson/jobs/repository/workspace<br />
Trying next repository<br />
ERROR: Could not clone from a repository<br />
FATAL: Could not clone<br />
hudson.plugins.git.GitException: Could not clone<br />
	at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:587)<br />
	at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:535)<br />
	at hudson.FilePath.act(FilePath.java:753)<br />
	at hudson.FilePath.act(FilePath.java:735)<br />
	at hudson.plugins.git.GitSCM.checkout(GitSCM.java:535)<br />
	at hudson.model.AbstractProject.checkout(AbstractProject.java:1038)<br />
	at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.java:479)<br />
	at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:411)<br />
	at hudson.model.Run.run(Run.java:1257)<br />
	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)<br />
	at hudson.model.ResourceController.execute(ResourceController.java:88)<br />
	at hudson.model.Executor.run(Executor.java:129)</code></p></blockquote>
<p><!-- more --></p>
<p>To solve the problem we need to create an ssh key for the tomcat user so that it can access the repository.</p>
<blockquote><p><code>cd /usr/share/tomcat6<br />
sudo mkdir .ssh<br />
cd .ssh/<br />
sudo touch known_hosts<br />
sudo ssh-keygen -t rsa -C "tomcat@forthedeveloper.com"</code></p></blockquote>
<p>When creating the key pair save the key to <code>/usr/share/tomcat6/.ssh/id_rsa</code>.</p>
<p>I don&#8217;t know how to tell tomcat the passphrase for a ssh key, so I just left the passphrase blank.</p>
<p>Once the key has been created we need to add the github site to the known_hosts file. If you have already setup your normal account for working with github and have xclip installed you can run the following to copy the github ssh host information:</p>
<blockquote><p><code>ssh-keygen -F github.com | xclip -sel clip</code></p></blockquote>
<p>Edit the <code>/usr/share/tomcat6/.ssh/known_hosts</code> file and paste in the copied host information.</p>
<p>To finish things up:</p>
<blockquote><p><code>sudo chown -R tomcat6:tomcat6 /usr/share/tomcat6/.ssh/<br />
sudo /etc/init.d/tomcat6 restart</code></p></blockquote>
<p>You can copy the new ssh key for tomcat to your clipboard if you have xclip installed with:</p>
<blockquote><p><code>cat /usr/share/tomcat6/.ssh/id_rsa.pub | xclip -sel clip</code></p></blockquote>
<p>If you are only using hudson for one repository you can just add the public key to the one repository in the repository admin (ex: https://github.com/username/repository/edit) under the &#8216;Deploy Keys&#8217; area. Otherwise you can <a href="https://github.com/account">add it to your account&#8217;s &#8216;SSH Public Keys&#8217;</a> to allow the tomcat server access to all of your repositories.</p>
<p>Now when you run hudson against your private github repository it should have the proper access.</p>
]]></content:encoded>
			<wfw:commentRss>http://forthedeveloper.com/2010/git-ssh-keys-with-hudson-on-ubuntu%e2%80%99s-tomcat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google AJAX Library CDN Versioning</title>
		<link>http://forthedeveloper.com/2010/google-ajax-library-cdn-versioning/</link>
		<comments>http://forthedeveloper.com/2010/google-ajax-library-cdn-versioning/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 01:34:51 +0000</pubDate>
		<dc:creator>Randy Merrill</dc:creator>
				<category><![CDATA[google]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[cdn]]></category>
		<category><![CDATA[Ext Core]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[jQuery UI]]></category>
		<category><![CDATA[MooTools Dojo]]></category>
		<category><![CDATA[Prototype]]></category>
		<category><![CDATA[script_aculo_us]]></category>
		<category><![CDATA[SWFObject]]></category>
		<category><![CDATA[Yahoo! UI]]></category>

		<guid isPermaLink="false">http://forthedeveloper.com/?p=168</guid>
		<description><![CDATA[It&#8217;s amazing what you find when you read the documentation. Since I always forget the address for Google&#8217;s CDN hosting of jQuery I have to search for it each time. This time when I found the address I was looking around a bit and found out this interesting tidbit that I didn&#8217;t know before about [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s amazing what you find when you read the documentation. Since I always forget the address for Google&#8217;s CDN hosting of jQuery I have to search for it each time. This time when I found the address I was looking around a bit and found out this interesting tidbit that I didn&#8217;t know before about Google&#8217;s CDN for their AJAX libraries.</p>
<blockquote><p>Specifying a version of &#8220;1.8.2&#8243; will select the obvious version. This is because a fully specified version was used. Specifying a version of &#8220;1.8&#8243; would select version 1.8.4 since this is the highest versioned release in the 1.8 branch. For much the same reason, a request for &#8220;1&#8243; will end up loading version 1.9.1.</p>
<p><cite><a href="http://code.google.com/apis/ajaxlibs/documentation/" title="Google AJAX Libraries API Developer's Guide">Google AJAX Libraries API Developer&#8217;s Guide</a></cite>
</p></blockquote>
<p><span id="more-168"></span></p>
<p>For example, if I were linking to jQuery I would normally have used the following and updated semi-regularly:</p>
<blockquote><p><code>http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js</code></p></blockquote>
<p>But if I just want the latest for the &#8220;1.3&#8243; version I could reference:</p>
<blockquote><p><code>http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js</code></p></blockquote>
<p>Or if I was feeling really risky and trust jQuery not to break between versions:</p>
<blockquote><p><code>http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js</code></p></blockquote>
<p>Hope its as useful to others as I found it!</p>
]]></content:encoded>
			<wfw:commentRss>http://forthedeveloper.com/2010/google-ajax-library-cdn-versioning/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ColdFusion 9 Ternary Operator Fail</title>
		<link>http://forthedeveloper.com/2009/coldfusion-9-ternary-operator-fail/</link>
		<comments>http://forthedeveloper.com/2009/coldfusion-9-ternary-operator-fail/#comments</comments>
		<pubDate>Sun, 08 Nov 2009 23:27:17 +0000</pubDate>
		<dc:creator>Randy Merrill</dc:creator>
				<category><![CDATA[adobe]]></category>
		<category><![CDATA[coldfusion]]></category>
		<category><![CDATA[cfml]]></category>
		<category><![CDATA[fail]]></category>
		<category><![CDATA[operator]]></category>
		<category><![CDATA[ternary]]></category>

		<guid isPermaLink="false">http://forthedeveloper.com/?p=140</guid>
		<description><![CDATA[One of the things that I was really excited for in ColdFusion 9 was the support for the ternary operator. As Ben said: To me, the ternary operator is what the IIF() method call always wanted to be. Unfortuately I was testing some CFML code, written and working on Railo, on a ColdFusion 9 server [...]]]></description>
			<content:encoded><![CDATA[<p>One of the things that I was really excited for in ColdFusion 9 was the support for the ternary operator. As <a href="http://www.bennadel.com/blog/1643-Learning-ColdFusion-9-The-Ternary-Operator.htm">Ben said</a>:</p>
<blockquote><p>To me, the ternary operator is what the IIF() method call always wanted to be.</p></blockquote>
<p>Unfortuately I was testing some CFML code, written and working on Railo, on a ColdFusion 9 server and had this error pop up:</p>
<blockquote><p><code>Unable to find an operator implementation for coldfusion.compiler.ASToperator</code></p></blockquote>
<p>Turns out the the ternary operator works great&#8230; unless you are using it in a default value for an argument. Fail.</p>
<p><span id="more-140"></span></p>
<p>Here is an example, that should run fine if the ternary operator was doing what it is supposed to:</p>
<pre style="padding-left: 30px;">&lt;cffunction name="testing" access="public" returntype="void" output="false"&gt;
	&lt;cfargument name="test" type="string" default="#(1 EQ 1 ? 'Hi' : 'Bye')#" /&gt;

	&lt;!--- Anything ---&gt;
&lt;/cffunction&gt;</pre>
<p>I have filed it as a bug if you would like to <a href="http://cfbugs.adobe.com/cfbugreport/flexbugui/cfbugtracker/main.html#bugId=80610">vote on the issue</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://forthedeveloper.com/2009/coldfusion-9-ternary-operator-fail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ColdFusion Development using VirtualBox and Ubuntu 9.10</title>
		<link>http://forthedeveloper.com/2009/coldfusion-virtualbox-and-ubuntu/</link>
		<comments>http://forthedeveloper.com/2009/coldfusion-virtualbox-and-ubuntu/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 19:29:41 +0000</pubDate>
		<dc:creator>Randy Merrill</dc:creator>
				<category><![CDATA[coldfusion]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[sun]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[virtualbox]]></category>

		<guid isPermaLink="false">http://forthedeveloper.com/?p=123</guid>
		<description><![CDATA[Here is how I setup a VirtualBox Virtual Machine (VM) running Ubuntu 9.10 Server edition for ColdFusion development on my MacBook Pro. Step 1: Download Needed Files The first step is to download all the files you will need. Since the downloads usually take some time we&#8217;ll get them out of the way first. For [...]]]></description>
			<content:encoded><![CDATA[<p>Here is how I setup a <a title="VirtualBox" href="http://www.virtualbox.org/">VirtualBox</a> Virtual Machine (VM) running <a title="Ubuntu" href="http://www.ubuntu.com/">Ubuntu 9.10</a> Server edition for <a title="Adobe ColdFusion" href="http://www.adobe.com/products/coldfusion/">ColdFusion</a> development on my MacBook Pro.</p>
<p><span id="more-123"></span></p>
<h3>Step 1: Download Needed Files</h3>
<p>The first step is to download all the files you will need. Since the downloads usually take some time we&#8217;ll get them out of the way first.</p>
<p>For my installation I wanted to get more familiar with the Server edition of Ubuntu and to require fewer resources. You should be able to do a similar installation with the Desktop edition.</p>
<ul>
<li><strong>Download VirtualBox</strong> &#8211; The <a title="VirtualBox Downloads" href="http://www.virtualbox.org/wiki/Downloads">official VirtualBox download page</a>.</li>
<li><strong>Download Ubuntu</strong> &#8211; To download the Server edition you will need to <a title="Ubuntu Download Mirrors" href="http://www.ubuntu.com/getubuntu/downloadmirrors#mirrors">find a mirror</a> that hosts the installer images. Once you find a mirror navigate to the 9.10 directory and find the download link for the <code>ubuntu-9.10-server-i386.iso</code> file.</li>
<li><strong>Download ColdFusion</strong> &#8211; The <a title="ColdFusion Edition Downloads" href="http://www.adobe.com/products/coldfusion/editions/">official Developer Edition Download</a> is available on the <a title="Adobe ColdFusion" href="http://www.adobe.com/products/coldfusion/">Adobe ColdFusion</a> page. Download the Linux 32 bit installer.</li>
</ul>
<h3>Step 2: Install VirtualBox</h3>
<p>Once you have downloaded all the files, run the VirtualBox installer.</p>
<p>If you would like to learn more about VirtualBox the installation comes with a user manual or you can download a pdf copy from their <a title="VirtualBox Downloads" href="http://www.virtualbox.org/wiki/Downloads">download page</a>.</p>
<h3>Step 3: Create an Ubuntu Virtual Machine</h3>
<p>Click the <code>New</code> icon in VirtualBox to start the wizard for adding a new VM.</p>
<ol>
<li>Click <code>Next</code> to start the wizard.</li>
<li>Enter <code>Ubuntu CF</code> for the <code>Name</code> of the VM.</li>
<li>Select <code>Linux</code> and <code>Ubuntu</code> in the <code>OS Type</code> drop downs.</li>
<li>Click <code>Next</code>.</li>
<li>Click <code>Next</code> to accept the default amount of RAM. (You can adjust if you want to&#8230;)</li>
<li>Click <code>Next</code> to create a new hard disk image to use for the VM.
<ol>
<li>Click <code>Next</code> to start the wizard .</li>
<li>Click <code>Next</code> to create a dynamically expanding storage.</li>
<li>Click <code>Next</code> to accept the default name and size.</li>
<li>Click <code>Finish</code> to accept the choices for the disk image.</li>
</ol>
</li>
<li>Click <code>Finish</code> to end the wizard.</li>
</ol>
<h3>Step 4: Install Ubuntu</h3>
<p>Now that there is a VM setup to hold the guest Ubuntu system we need to install Ubuntu on it.</p>
<p>In VirtualBox Double Click on the <code>Ubuntu CF</code> listed in the left column to start up the VM. Since this is the first time you are starting the VM it will bring a up a First Run Wizard to guide you in setting up the new VM.</p>
<ol>
<li>Click <code>Next</code> to start the wizard.</li>
<li>Change the <code>Media Source</code> to <code>Image File</code> and click the <code>Other...</code> icon.
<ol>
<li>Click the <code>Add</code> icon along the top.</li>
<li>Select the <code>ubuntu-9.10-server-i386.iso</code> file we downloaded earlier.</li>
<li>Click <code>Select</code> with the <code>ubuntu-9.10-server-i386.iso</code> item selected.</li>
</ol>
</li>
<li>Click <code>Next</code> to continue.</li>
<li>Click <code>Finish</code> to end the wizard.</li>
</ol>
<p>The VM should now startup and bring up the installation the Ubuntu. I&#8217;m not going to go into the details of installing Ubuntu here, so just continue with the next step once Ubuntu installation is complete. Also, since we are going to be using apache you may wish to have the setup create a LAMP server configuration when choosing features or you can install it manually afterwards.</p>
<h3>Step 5: Setup Guest Additions</h3>
<p>In order to have the Shared Folders work we will need to install the Guest Additions.</p>
<p>Before we install the Guest Additions we will need to install dkms:</p>
<pre style="padding-left: 30px; ">sudo apt-get install dkms</pre>
<p>To mount the Guest Additions disc image to the VM press <code>Command + D</code> or select <code>Devices &gt; Install Guest Additions...</code> from the VM menu. Then install the Guest Additions by running:</p>
<pre style="padding-left: 30px; ">cd /cdrom</pre>
<pre style="padding-left: 30px; ">sudo sh ./VBoxLinuxAdditions-x86.run</pre>
<h3>Step 6: Setup Shared Folders</h3>
<p>One of the goals when creating the virtual machine was to be able to edit the files natively but run them on the guest operating system that reflects the production environment.</p>
<p>With shared folders we are able to use a local directory as a share on the guest VM.</p>
<p>Before we add the shared folder we need to have a folder to share. For this example I&#8217;m using the directory I created at <code>/Users/randy/Documents/cf9/</code>.</p>
<p>With the VM powered off edit the <code>Settings</code> and select the <code>Shared Folder</code> icon.</p>
<ol>
<li>Click the <code>Add a new shared folder definition</code> icon on the right side.</li>
<li>Enter the <code>Folder Path</code> (<code>/Users/randy/Documents/cf9/</code>) or select <code>Other...</code> from the drop down and locate the directory.</li>
<li>Enter the name you would like the share to be referenced as in the <code>Folder Name</code> field. In this case I am going to call it <code>cf9</code>.</li>
</ol>
<p>Now that we have the shared folder available to the VM we want it to mount the share each time the VM starts. To do this we startup the Ubuntu VM and edit the <code>/etc/fstab</code> file and add the following line at the end of the file (note that you will need to change the username to match your user):</p>
<pre style="padding-left: 30px;"><code>cf9	/home/randy/Documents/cf9	vboxsf	uid=randy,gid=users	0	0</code></pre>
<p>You will also need to create a blank directory at <code>/home/randy/Documents/cf9</code> that the share will mount to.</p>
<p>The next time your VM is started it should have access to <code>/Users/randy/Documents/cf9</code> on the host machine at <code>/home/randy/Documents/cf9</code> on the guest machine.</p>
<h3>Step 7: Enable Port Forwarding</h3>
<p>To setup the port forwarding you will need to stop the VM. In the terminal run the following commands to setup the port forwarding. (Note that <code>"Ubuntu CF"</code> needs to match the name of the VM created above.)</p>
<pre style="padding-left: 30px;"><code>VBoxManage setextradata "Ubuntu CF" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guesthttp/Protocol" TCP
VBoxManage setextradata "Ubuntu CF" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guesthttp/GuestPort" 80
VBoxManage setextradata "Ubuntu CF" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guesthttp/HostPort" 8580</code></pre>
<p>This will change the VM settings to have the guest port of <code>80</code> (which is the default apache port) of the guest forwarded to port <code>8580</code> on the host. Without this you would not be able to talk to the guest operating system.</p>
<h3>Step 8: Install ColdFusion</h3>
<p>Since we already downloaded the installer for ColdFusion we just need to get that file to the VM. Luckily we already setup a shared folder so if you move the installer to the <code>/Users/randy/Documents/cf9/</code> directory it will be available in the VM.</p>
<p>To run the ColdFusion installer:</p>
<pre style="padding-left: 30px; "><code>cd /home/randy/Documents/cf9/</code></pre>
<pre style="padding-left: 30px; "><code>chmod +x ColdFusion_9_WWE_linux.bin</code></pre>
<pre style="padding-left: 30px; "><code>sudo ./ColdFusion_9_WWE_linux.bin</code></pre>
<p>This should start the installer. During the installation, apache should be configured to run with ColdFusion.</p>
<h3>Step 9: Test Environment</h3>
<p>To test that the development environment is working correctly you should be able to place an <code>index.cfm</code> file in your <code>/Users/randy/Documents/cf9/</code> directory. Make sure that you place some CFML in the file to test that ColdFusion is doing it&#8217;s thing. Then visit <a href="http://localhost:8580/">http://localhost:8580/</a> in a browser on your host to test out the new development environment!</p>
]]></content:encoded>
			<wfw:commentRss>http://forthedeveloper.com/2009/coldfusion-virtualbox-and-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automate WordPress Upgrade on Grid Server</title>
		<link>http://forthedeveloper.com/2009/automate-wordpress-upgrade-on-grid-server/</link>
		<comments>http://forthedeveloper.com/2009/automate-wordpress-upgrade-on-grid-server/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 22:02:05 +0000</pubDate>
		<dc:creator>Randy Merrill</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[media temple]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[grid service]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[upgrade]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://forthedeveloper.com/?p=104</guid>
		<description><![CDATA[Many of the domains and sub-domains on my Media Temple Grid Service contain installations of WordPress. Since I don&#8217;t want to be bothered by a normal upgrades here is how I install WordPress in a way that allows for simple upgrades. This is not a completely automated solution, there is more that you could do [...]]]></description>
			<content:encoded><![CDATA[<p>Many of the domains and sub-domains on my Media Temple Grid Service contain installations of WordPress. Since I don&#8217;t want to be bothered by a normal upgrades here is how I install WordPress in a way that allows for simple upgrades.</p>
<p>This is not a completely automated solution, there is more that you could do to improve the process, but it should save a lot of the time normally spent updating WordPress.</p>
<p><span id="more-104"></span></p>
<p><em><strong>Note:</strong> the <a href="http://forthedeveloper.com/wp-content/uploads/2009/09/updateWP.zip">provided script</a> will only work if you do the WordPress install using subversion and in the domain/sub-domain&#8217;s <code>html/</code> directory.</em></p>
<h3>Installing WordPress</h3>
<p>Yes, there is a 1-click install for installing WordPress on the (gs), but I don&#8217;t use it. Here is how I install WordPress on a domain or sub-domain (ex: <code>blog.site.org</code>):</p>
<ol>
<li><span style="background-color: #ffffff;">Ensure that you have an <a href="http://kb.mediatemple.net/questions/906/Creating+an+alternate+domain" target="_blank">alternate domain</a> or <a href="http://kb.mediatemple.net/questions/99/Creating+a+subdomain" target="_blank">sub-domain</a> created that has an empty <code>html/</code> directory.</span></li>
<li><span style="background-color: #ffffff;">Find the latest tag listed in the <a href="http://svn.automattic.com/wordpress/tags/" target="_blank">WordPress repositor</a>y. (ex: 2.8.3)</span></li>
<li><span style="background-color: #ffffff;"><a href="http://kb.mediatemple.net/questions/16/Connecting+via+SSH+to+your+(gs)+Grid-Service" target="_blank">SSH into the (gs)</a> as the serveradmin.</span></li>
<li><span style="background-color: #ffffff;"><code>cd domains/blog.site.org/html</code></span></li>
<li><span style="background-color: #ffffff;"><code>svn checkout http://svn.automattic.com/wordpress/tags/2.8.3/ ./ --force</code></span></li>
</ol>
<p>Once the svn checkout is complete you should be able to visit the install page (ex: <code>blog.site.org/wp-admin/install.php</code>) and finish the installation of WordPress like normal.</p>
<p>I also suggest you take steps to <a href="http://codex.wordpress.org/Hardening_WordPress" target="_blank">harden your WordPress install</a>.</p>
<h3>Upgrading Many WordPress Installs at Once</h3>
<p>When you <a href="http://wordpress.org/development/" target="_blank">learn of a new version</a> of WordPress you can do the following to easily upgrade all of your installations at once.</p>
<ol>
<li><a href="http://kb.mediatemple.net/questions/16/Connecting+via+SSH+to+your+(gs)+Grid-Service" target="_blank">SSH into the (gs)</a> as the serveradmin.</li>
<li>You will need to upload the <a href="http://forthedeveloper.com/wp-content/uploads/2009/09/updateWP.zip">updateWP</a> bash script to your serveradmin home directory (<code>~/</code>) if it does not already exist.</li>
<li>Run the bash script with the new version number: <code>./updateWP.sh 2.8.4</code></li>
<li>The script will look at each of your domains to see if you have WordPress installed. If it finds WordPress it will switch to the new tag.</li>
<li>After all the installs are updated you can view the <code>updateWP.log</code> to see all of the installations that were completed. On some tags you may need to go to each of the <code>/wp-admin/</code> page and manually tell it to update the database. You can check if this is necessary by visiting one of your WordPress install&#8217;s <code>/wp-admin/</code> directory.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://forthedeveloper.com/2009/automate-wordpress-upgrade-on-grid-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AIR Update Checking Using Mate</title>
		<link>http://forthedeveloper.com/2009/air-update-using-mate/</link>
		<comments>http://forthedeveloper.com/2009/air-update-using-mate/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 03:55:58 +0000</pubDate>
		<dc:creator>Randy Merrill</dc:creator>
				<category><![CDATA[flex / air]]></category>
		<category><![CDATA[mate]]></category>
		<category><![CDATA[air]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[google code]]></category>
		<category><![CDATA[maintenance]]></category>
		<category><![CDATA[update]]></category>

		<guid isPermaLink="false">http://forthedeveloper.com/?p=80</guid>
		<description><![CDATA[While working on an AIR project hosted on Google Code I wanted to setup automatic updates. I wanted the entire project to be self contained and not require any supporting websites. After a little coding I can now use Mate and dispatch an event to check for updates. Preparing for Updating In the main mxml [...]]]></description>
			<content:encoded><![CDATA[<p>While working on an AIR project hosted on Google Code I wanted to setup automatic updates. I wanted the entire project to be self contained and not require any supporting websites. After a little coding I can now use Mate and dispatch an event to check for updates.</p>
<p><span id="more-80"></span></p>
<h3>Preparing for Updating</h3>
<p>In the main mxml document I add a namespace for my ef-flex event maps (<code>xmlns:efmaps="com.ef.air.maps.*"</code>) and the following line:</p>
<blockquote><p><code>&lt;!-- Automatic update event map --&gt;<br />
&lt;efmaps:UpdateEventMap /&gt;</code></p></blockquote>
<p>Once included, the Mate knows how to handle the update event and is listening for it. See the <a href="http://code.google.com/p/prosperonair/source/browse/trunk/src/prosperonair.mxml?r=47">prosperonair main mxml</a> for an example.</p>
<h3>Automatic Update Checking</h3>
<p>Using the event driven nature of Mate to check for an update–automatically or manually–is now as easy as dispatching an event. See the <a href="http://code.google.com/p/prosperonair/source/browse/trunk/src/com/poa/maps/MainEventMap.mxml?r=47" target="_blank">prosperonair event map</a> for an example.</p>
<p>To automatically check for an update edit the application&#8217;s event map, add the import for the <code>UpdateEvent</code>, add an event handler for the <code>AIREvent.WINDOW_COMPLETE</code> event, and add the following (changed for your project):</p>
<blockquote>
<pre><code>&lt;!-- Automatically check for newer version --&gt;
&lt;mate:EventAnnouncer generator="{UpdateEvent}" type="{UpdateEvent.CHECK}"&gt;
	&lt;mate:Properties isAutomatic="true" versionURL="http://project.googlecode.com/svn/trunk/version.xml" /&gt;
&lt;/mate:EventAnnouncer&gt;
</code></pre>
</blockquote>
<h3>Manual Update Checking</h3>
<p>The process for checking for an update manually is almost identical to the automatic update check save for changing the isAutomatic property to false. This lets the updater know that the user should be notified when there is no update.</p>
<h3>Version XML File</h3>
<p>For the updater to work correctly you will need to have a XML file in your repository that the application will use to check if it has the latest version. You can read more about the format the xml file needs to use in the <a href="http://livedocs.adobe.com/labs/textlayout/air/update/ApplicationUpdaterUI.html#configurationFile" target="_blank">official documentation for the ApplicationUpdaterUI</a>. Be sure that you pass the correct url of the XML file when doing an update check.</p>
<h3>The Code</h3>
<p>The code used in this post is available in the <a title="Prosper on AIR" href="http://code.google.com/p/prosperonair/" target="_blank">prosperonair</a> and <a title="ef-flex" href="http://code.google.com/p/ef-flex/" target="_blank">ef-flex</a> projects. The main code of interest that performs the update can be seen in the <a href="http://code.google.com/p/ef-flex/source/browse/trunk/com/ef/air/business/UpdateManager.as?r=6">UpdateManager.as file</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://forthedeveloper.com/2009/air-update-using-mate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Search For Sitemap Ping URLs</title>
		<link>http://forthedeveloper.com/2008/the-search-for-sitemap-ping-urls/</link>
		<comments>http://forthedeveloper.com/2008/the-search-for-sitemap-ping-urls/#comments</comments>
		<pubDate>Thu, 21 Aug 2008 03:11:13 +0000</pubDate>
		<dc:creator>Randy Merrill</dc:creator>
				<category><![CDATA[ask]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[yahoo]]></category>
		<category><![CDATA[msn]]></category>
		<category><![CDATA[ping]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[sitemap]]></category>

		<guid isPermaLink="false">http://forthedeveloper.com/?p=47</guid>
		<description><![CDATA[Sitemaps just make sense. You create a Sitemap file, or a set of files and a Sitemap Index, that has all the your site links crafted purely for search engine consumption. It&#8217;s like candy for the search giants since they get spoon-fed your site structure by you. Not only can it tell them where your [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://sitemaps.org/" target="_blank">Sitemaps</a> just make sense. You create a <a href="http://sitemaps.org/protocol.php#xmlTagDefinitions" target="_blank">Sitemap file</a>, or a set of files and a <a href="http://sitemaps.org/protocol.php#index" target="_blank">Sitemap Index</a>, that has all the your site links crafted purely for search engine consumption. It&#8217;s like candy for the search giants since they get spoon-fed your site structure by you. Not only can it tell them where your content is, but it can tell them how often it changes, when it was last changed, and what priority it is to your site. Pure confection!</p>
<p>But the problem, for me at least, was finding the urls to ping so that you are not waiting for the giants to get a sweet tooth and come looking for you. The page on <a href="http://sitemaps.org/protocol.php#informing" target="_blank">informing giants</a> talks about a magical <em>searchengine_URL</em> that can be replace by your supporting giant. The problem: the site never tells what <em>searchengine_URL</em>s exist for your giant companions.</p>
<p><span id="more-47"></span></p>
<p>After some searching I finally found the urls that I was looking for. Where did I find the mystical urls you ask? Well it wasn&#8217;t from a google search (returned a lot of non-helpful links), it was from a <a href="http://www.arnebrachhold.de/projects/wordpress-plugins/google-xml-sitemaps-generator/" target="_blank">wordpress plugin</a>. In my opinion it is not a very good way to promote a service that is supposed to make it easier for you to get your content into the giants&#8217; mouths.</p>
<p>Without further ado here are the urls that <strong>should</strong> work for sending your updated Sitemap to the search giants:</p>
<ul>
<li>http://www.google.com/webmasters/sitemaps/ping?sitemap=&lt;url&gt;</li>
<li>http://submissions.ask.com/ping?sitemap=&lt;url&gt;</li>
<li>http://webmaster.live.com/ping.aspx?siteMap=&lt;url&gt;</li>
<li>http://search.yahooapis.com/SiteExplorerService/V1/updateNotification?appid=&lt;<a href="http://developer.yahoo.com/" target="_blank">Yahoo! Developer Key</a>&gt;&amp;url=&lt;url&gt;</li>
</ul>
<p>I would also suggest reading the other options for informing the search engines, such as adding &#8216;Sitemap: &lt;url&gt;&#8217; to your robots.txt file and actually visiting to the giants&#8217; playground.</p>
]]></content:encoded>
			<wfw:commentRss>http://forthedeveloper.com/2008/the-search-for-sitemap-ping-urls/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Impressions of Railo</title>
		<link>http://forthedeveloper.com/2008/impressions-of-railo/</link>
		<comments>http://forthedeveloper.com/2008/impressions-of-railo/#comments</comments>
		<pubDate>Fri, 08 Aug 2008 22:41:45 +0000</pubDate>
		<dc:creator>Randy Merrill</dc:creator>
				<category><![CDATA[coldfusion]]></category>
		<category><![CDATA[railo]]></category>
		<category><![CDATA[cfml]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://forthedeveloper.com/?p=23</guid>
		<description><![CDATA[As part of their tour of North America, Railo stopped by Salt Lake City with their CEO Gert Franz and CTO Michael Streit to present their CFML engine to the combined audiences of SLCFUG and NUCFUG groups. Along with the meeting we were able to have dinner with the Railo duo. The content of this [...]]]></description>
			<content:encoded><![CDATA[<p>As part of their tour of North America, <a href="http://www.railo-technologies.com/" target="_blank">Railo</a> stopped by Salt Lake City with their CEO Gert Franz and CTO Michael Streit to present their CFML engine to the combined audiences of <a href="http://slcfug.org/" target="_blank">SLCFUG</a> and <a href="http://nucfug.org/" target="_blank">NUCFUG</a> groups. Along with the meeting we were able to have dinner with the Railo duo. The content of this post is being pulled from memory and conversations with others so I don&#8217;t vouch for 100% accuracy.</p>
<p><span id="more-23"></span></p>
<h2>General Impressions</h2>
<p>Overall, I was greatly impressed by what the Railo team has done to make their product a viable CFML solution. The presentation was great with a wealth of examples and content to go over. The end effect of the presentation and subsequent discussion left me with a very positive take-away.</p>
<h2>It&#8217;s in the Name</h2>
<p>This is something that was brought up during dinner that I didn&#8217;t know before about the origin of the name Railo. From their <a href="http://www.railo-technologies.com/en/index.cfm?treeID=274" target="_blank">FAQ page</a>:</p>
<p style="padding-left: 30px;">Yes. Railo is the name of an alien dog, first appearing in the first season, episode 25 of the TV-series &#8220;Enterprise&#8221;.</p>
<h2>Standardization</h2>
<p>During the meeting Gert talked a little about his involvement with the advisory committee that was created to help direct the CFML language as it continues to evolve. With multiple companies producting CFML engines it is a temptation to start developing extra tags that make the company stand out. The downside is the harm it causes to the CFML language by confusing developers and/or locking them into one engine since the code becomes specialized.</p>
<p>Railo is not without it&#8217;s features (which I will talk about below) that are not standard, but they have been making an awesome effort to share what they have been working on and the ideas for the future with the advisory committee in an effort to help things become more of a standard. Railo distinguishes themselves by making it out-perform the competitors, which is the right way to do it.</p>
<p>One of the comments made by Gert that I really enjoyed was to this effect:</p>
<p style="padding-left: 30px;">While presenting at Adobe an Adobe engineer commented that they hoped Railo wasn&#8217;t mad that they used some of their ideas for features in ColdFusion 8. Gert replied that Railo stole 95% of Adobe&#8217;s ideas, Adobe stole 5% of Railo&#8217;s features so they were about even.</p>
<h2>Two Administrators</h2>
<p>When dealing with applications running on Adobe&#8217;s ColdFusion you have one Administrator that runs everything on that installation. If you want to break up the server to use a different configuration you have to use the enterprise version which allows you to create separate instances but cost a lot of money to do so. With Railo there are two types of administrators that you can use to run your application: the global administrator and the context administrator.</p>
<p>The global administrator allows you to configure options that will be available on all the web contexts running on the server (or instance of the JVM, I think). Basically anything you define there will take effect across all web contexts, unless overridden by the context administrator.</p>
<p>With the context administrator you are able to define settings that affect only the web context itself. This includes settings such as mappings and datasources. Traditionally you would have to do something in the Application.cfc to get mappings dynamically that were not defined in the administrator.</p>
<h2>Resources</h2>
<p>There are a lot of different ways to access files. You have local filesystem files, files on network shares, files on ftp servers, files on <a href="http://en.wikipedia.org/wiki/Amazon_S3" target="_blank">Amazon&#8217;s S3 services</a>, flicker, google docs, etc. Thanks to the folks at Railo we are able to access the files from different services through an abstracted layer in Railo. I don&#8217;t know if they do flicker and google docs but they showed examples of using ftp and the S3 service.  Essentially, you could reference anything with a file path. Of course, getting files from ftp is considerably slower than the local file system. What this abstraction allows is for the programmer to reference files from varied locations without having to worry about where it is coming from.</p>
<p>Even if they don&#8217;t have a flicker:// path it sounded like it would be up to developers to program additional resources if they chose so you can have a flicker resource. You have to love abstraction, it&#8217;s just cool.</p>
<h2>Portability</h2>
<p>With the ability to change settings the portability of the Railo engine is impressive. All of the information to run your Railo application resides within one directory so if you want to distribute or move your application, datasources, mapping, et al., you just move the directory. It also is nice that it doesn&#8217;t break encapsulation, you just move it and it all comes.</p>
<h2>Clustering</h2>
<p>I&#8217;ll admit right now that I am no server administrator, but I was impressed by the quickness and seeming ease it was for Gert to startup a cluster and show us how it runs. Granted we didn&#8217;t watch him create the cluster he showed that it was done using the underlying Java server and you just need to tell the servers where each other are and give them some private key goodness. That alone looked pretty neat, but when you couple it with the cluster scope it was amazing.</p>
<h2>Cluster Scope</h2>
<p>This is something which just makes sense. You have session scopes and applications scopes when working on a single box, why not expand that out to the next level and have a cluster scope? Well Railo has a cluster scope. How cool is that? You can have variables that are created on one node in the cluster which then get shared to all other nodes in the cluster. Even if a node of the cluster is unavailable it will be updated once it comes back online and automatically synced with the rest of the cluster. I believe that Gert said Railo was using the cfthread task to accomplish the syncing of the cluster scope.</p>
<h2>cfthread Task</h2>
<p>Not many developers are used to using threading in their applications, at least the programmers that I know don&#8217;t. But if you do use cfthread, and even if you don&#8217;t, the type=&#8221;task&#8221; was a very cool addition to the cfthread tag. The task type allows you to define a task that is run as a separate thread. If that thread fails for some reason you are able to define how often and how many times to retry it. I believe that this is how the cluster scope is managed &#8211; by way of a threaded task.</p>
<h2>TDD</h2>
<p>Test Driven Development (TDD) has been something that has interested me for quite some time but never actually implemented it. Railo is a very fine example of why you do implement TDD and the benefits it reaps. As we were talking I asked the Railo duo about their using TDD.  I had read something about them using it and it turns out they have about 60,000 tests currently. Each time they start working on a bug or a feature they create their test for it beforehand. Once they have written the fix or feature the test is run to make sure it is correct. They also noted that it takes about an hour to run the tests each time they do a build for release. Awesome work Railo!</p>
<h2>Debugging</h2>
<p>Not much to say on this one other than the duo report that turning on debugging in Railo doesn&#8217;t really affect the system. They have such a hard time measuring how much it slows it down that they just say 1% to be safe.</p>
<h2>Multimedia Tags</h2>
<p>Prevalent among web sites these days is a lot of rich and streaming videos. With the 3.0 release of Railo they have created cfvideo and cfvideoplayer tags that do video conversion, clipping, screengrabs, and playback. I haven&#8217;t done much with video content but it was quite cool to hear and see the examples of the tag and how simple it is.</p>
<p>To me it was more impressive to see the way they used Amazon&#8217;s EC2 along with Amazon&#8217;s S3 to convert and stream their videos. Along with the EC2 Railo is planning on having some public Railo templates(?) that can be copied and made private for those who want to use Railo on the cloud once it is open source.</p>
<h2>Extensions</h2>
<p>This was one of the things that has some of the greatest potential and would be awesome for developers. The idea of an extension is basically having a packaged version of an application, training module, network thingy, etc., available for people to download and install/upgrade from within their administrator. I kind of picture this like the Apple app store, only for ColdFusion applications and add-ons.</p>
<p>This extension feature is how they are planning to off the video tags and other Railo extensions that they can&#8217;t distribute freely because of licensing. In addition developers would be able to have their applications and extensions sold through the same manner. Or you could define your own server to distribute solely your applications.</p>
<p>This was an idea they had at the beginning of the year and are still exploring the options and functionality. They are also in talks with Adobe to have this be something that is not unique to Railo but used in CF 9 or CF 10 as well.</p>
<h2>Shared Hosting</h2>
<p>One area of the ColdFusion community that is lacking is the ability to have very powerful shared hosting solutions for ColdFusion. You can get dedicated hosting that works awesome, but it costs you a lot to do it. With the current availability for shared hosting I&#8217;ve only heard not-so-good things. Especially with respect to shared hosting and mappings. With the features that Railo brings to the table it clears away a lot of the problems that seem to run rampant among CF shared hosts.</p>
<p>Given the structure of Railo you could set it up so that each account has their own web context(s) that they control while the host controls the global administrator. Or, depending on the hosting solution (such as <a href="http://www.mediatemple.net/go/order/?refdom=zdsystems.com" target="_blank">media temple&#8217;s grid server</a> where this blog is hosted), they could give you a fully working set of the Railo Administrator where you can have your own global administrator along with web context administrators.</p>
<h2>Cascading Scope</h2>
<p>One of my pet peves is code that doesn&#8217;t use explicit scoping. To me it is very inefficient and confusing not to know where the variables are coming from. I was very happy to hear that there is a setting to turn off the cascading scope functionality in Railo. If your code doesn&#8217;t know what to do it dies and tells you it can&#8217;t find the variable. Go encapsulation!</p>
<h2>In Review</h2>
<p>To sum it all up, I am excited to try out and hopefully contribute to the Railo project when it is released into the open source world.  It&#8217;s definately something that has an awesome potential to help expand the ColdFusion community, along with <a href="http://www.openbluedragon.org/">Open Blue Dragon</a>, to those who complain about ColdFusion not being free. I look forward to great things from Railo.</p>
]]></content:encoded>
			<wfw:commentRss>http://forthedeveloper.com/2008/impressions-of-railo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Subversion Cheatsheet</title>
		<link>http://forthedeveloper.com/2008/new-subversion-cheatsheet/</link>
		<comments>http://forthedeveloper.com/2008/new-subversion-cheatsheet/#comments</comments>
		<pubDate>Thu, 07 Aug 2008 13:42:54 +0000</pubDate>
		<dc:creator>Randy Merrill</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[added bytes]]></category>
		<category><![CDATA[cheatsheet]]></category>
		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://forthedeveloper.com/?p=21</guid>
		<description><![CDATA[For those of you who use and love subversion (svn) as much as I do you will be happy to know that David Child from Added Bytes (formally know as I Love Jack Daniels until certain legal misgivings) has released a Subversion specific cheetsheat, his first new one is almost a year. Subversion Cheatsheet I&#8217;d [...]]]></description>
			<content:encoded><![CDATA[<p>For those of you who use and love subversion (svn) as much as I do you will be happy to know that David Child from Added Bytes (formally know as I Love Jack Daniels until certain legal misgivings) has released a Subversion specific cheetsheat, his first new one is almost a year.</p>
<p><a title="Subversion Cheatsheet" href="http://www.addedbytes.com/cheat-sheets/subversion-cheat-sheet/" target="_blank">Subversion Cheatsheet</a></p>
<p><span id="more-21"></span></p>
<p>I&#8217;d definately check out his other cheatsheets while you are on the site, they are an excellent resource for many different languages and common tasks.</p>
<p><a title="Added Bytes cheatsheets" href="http://www.addedbytes.com/cheat-sheets/" target="_blank">Added Bytes Cheatsheets</a></p>
<p>Also for any developers interested in the discussion going on about the cheatsheets Dave has created a google group specifically for cheatsheets. Awesome.</p>
<p><a title="Google Cheatsheet Group" href="http://groups.google.co.uk/group/added-bytes-cheat-sheets" target="_blank">Cheatsheet Google Group</a></p>
]]></content:encoded>
			<wfw:commentRss>http://forthedeveloper.com/2008/new-subversion-cheatsheet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ColdFusion 8.01 on Ubuntu 8.04</title>
		<link>http://forthedeveloper.com/2008/coldfusion-801-on-ubuntu-804/</link>
		<comments>http://forthedeveloper.com/2008/coldfusion-801-on-ubuntu-804/#comments</comments>
		<pubDate>Wed, 09 Jul 2008 01:22:37 +0000</pubDate>
		<dc:creator>Randy Merrill</dc:creator>
				<category><![CDATA[coldfusion]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[install]]></category>

		<guid isPermaLink="false">http://blog.zdsystems.com/?p=14</guid>
		<description><![CDATA[Wow, i hadn&#8217;t realized how close in version numbers the two things are&#8230; I was thinking today of how many crazy things that I try to do, how many of them don&#8217;t work, and how many of them I don&#8217;t share when they do. So today I attempt to share a successful install of ColdFusion [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://forthedeveloper.com/wp-content/uploads/2008/07/cf8.jpg"><img class="size-medium wp-image-15" title="ColdFusion 8" src="http://forthedeveloper.com/wp-content/uploads/2008/07/cf8.jpg" alt="ColdFusion 8... can\'t you just download it?!? A case?!?" width="280" height="280" align="right" /></a>Wow, i hadn&#8217;t realized how close in version numbers the two things are&#8230;</p>
<p>I was thinking today of how many crazy things that I try to do, how many of them don&#8217;t work, and how many of them I don&#8217;t share when they do. So today I attempt to share a successful install of ColdFusion 8 (developer version) on my Ubuntu 8.04 64-bit box.</p>
<p><span id="more-18"></span></p>
<p>For this installation I am going to connect it to my apache 2 installation. So if you do not have apache or do not want to connect it to apache then just skip that part.</p>
<p>To start off I downloaded the coldfusion-801-lin64.bin file from <a title="Adobe ColdFusion" href="http://www.adobe.com/products/coldfusion/" target="_blank">Adobe</a>.</p>
<p>Once I had the file I made it executable:</p>
<blockquote><p><code>$ sudo chmod +x coldfusion-801-lin64.bin</code></p></blockquote>
<p>Now it is time to run the installer:</p>
<blockquote><p><code>$ sudo ./coldfusion-801-lin64.bin</code></p></blockquote>
<p>At first the installer extracts the files for installation then brings up the menu to select the locale. I speak only english so luckily there was the option for english.</p>
<p>Next they give you a nice introduction telling you that you are installing ColdFusion and you can go back in the installer by typing &#8216;back&#8217; and you can exit the installer by typing &#8216;quit&#8217;. ( I pressed &#8216;enter&#8217;. )</p>
<p>Next we go through the wonderful License Agreement for using ColdFusion. You should probably read it, but since I am only installing the developer version I didn&#8217;t pay much attention and pressed enter a lot until I got to the question of if I accept. Then I pressed &#8216;Y&#8217; and &#8216;enter&#8217;.</p>
<p>Next the installer goes through a pre-installation check to see if your computer has everything that is needed by ColdFusion. My box unfortunately pulled up a warning telling me:</p>
<blockquote><p><code>The installer was unable to determine if libstdc++.so.5 is available. The library is necessary for C++ custom tags, webservices and some cfimage functionality to work properly.</code></p></blockquote>
<p>When I checked my packages I have libstdc++6 installed. I&#8217;m no linux guru, just trying to learn more about it, but I continued the installation in spite of the warning. I&#8217;ll write a new post later if this comes back to bite me. So I pressed &#8216;enter&#8217; and ignored the warning.</p>
<p>For my wonderful installation attempt I chose to select the Developer Edition since I am not rich and this is only for local development anyways. If you are rich, or want to install any of the other options, go ahead, I just may not have the same options that you do.</p>
<p>Next it asks for the installer configuration that I would like to use. At first I thought that I would like to go with the multi-server install, but I have tried playing around with it in the past and it just seemed overkill for what I wanted to do for my development so I chose to do just a regular &#8216;server configuration&#8217;. I also found it interesting they decided to include a second semi-colon on this menu, adds a nice touch.</p>
<p>Ofttimes it doesn&#8217;t do well to have ColdFusion already installed and install it again. So the next step asks to make sure you don&#8217;t already have ColdFusion installed. I do not so i answer no.</p>
<p>The next part is where you get to do whatever set of addons you want. For my install I did not want the documentation since I use livedocs, and I didn&#8217;t want LiveCycle and Search Services since they would be overkill and overhead. I also removed the option to start ColdFusion on system init since I am not always developing on it and plan on having a bash script to start it up and shut it down when needed.</p>
<p>I went with the default for the install directory ( /opt/coldfusion8 ). I have no reason to change it and don&#8217;t know enough about linux to slap myself for doing it.</p>
<p>No previous version of ColdFusion installed so the next option was a no.</p>
<p>Configuring webservers is what I have had the most trouble with while trying to install ColdFusion before so I&#8217;ll see if I can get it right. I selected  the &#8216;Add Web Server Configuration&#8217; option to try and attach it to apache.</p>
<p>I am running apache so I selected the &#8216;Apache&#8217; option.</p>
<p>If you would like a handy reference for where your files are for apache check out this <a href="http://www.thecrumb.com/2007/09/07/coldfusion-8-install-on-ubuntu/" target="_blank">post from the crumb</a>.</p>
<p>Next it asks for the directory that contains the httpd.conf file. On this box that the path is:</p>
<blockquote><p><code>/etc/apache2</code></p></blockquote>
<p>Next is asked for the binary file for apache:</p>
<blockquote><p><code>/usr/sbin/apache2</code></p></blockquote>
<p>And for the control file used to start and stop apache:</p>
<blockquote><p><code>/usr/sbin/apache2ctl</code></p></blockquote>
<p>Next it shows the menu about web server configuration. But since I have done my damage I just tell it to &#8216;Continue with Installation&#8217;.</p>
<p>For the administrator location I chose &#8216;/var/www&#8217; so that it is out there where I can get to it without a lot of changes.</p>
<p>The runtime user is something that I wasn&#8217;t sure of, but one of my sys-admin friends told me to use the www-data user for it so that is what i used.</p>
<p>My password for my home dev server I put as &#8217;1d10t&#8217;. And if you want to buy some nice insurance I know a guy&#8230;.</p>
<p>RDS is one of those things that you hear about&#8230; but just never used. At least it is for me. So this time I am going to try out the RDS option this time and see what it can do for me. For that password I chose &#8216;t01d1&#8242;.</p>
<p>Now it shows the installation summary of what it is about to do.</p>
<blockquote><p><code>Installation Type:<br />
Server configuration</code></p>
<p><code>Licensing:<br />
Developer Edition</code></p>
<p><code>Installation Directories:<br />
Product: /opt/coldfusion8<br />
Web root: /var/www</code></p>
<p><code>Server Information:<br />
Web Server: Apache (/etc/apache2)<br />
Port:<br />
Search Services: not installed<br />
Adobe LiveCycle Data Services ES: not installed<br />
Documentation: not installed<br />
RDS: enabled</code></p>
<p><code>Disk Space Information (for Installation Target):<br />
Required: 432,138,779 bytes<br />
Available: 198,957,346,816 bytes</code></p></blockquote>
<p>Press enter and it whirls away in ASCII to install your ColdFusion 8 server.</p>
<p>Yeah:</p>
<blockquote><p><code>You have successfully completed the first step in installing Adobe ColdFusion 8.</code></p>
<p><code>To continue with your installation, go to /opt/coldfusion8/bin and type "./coldfusion start" to start your server.</code></p>
<p><code>Once the server, is started log in to the Configuration Wizard at http://[machinename]/CFIDE/administrator/index.cfm</code></p></blockquote>
<p>Next to see if the ColdFusion server will startup.</p>
<blockquote><p><code>$ cd /opt/coldfusion8/bin<br />
$ sudo ./coldfusion start</code></p></blockquote>
<p>From past experience if I don&#8217;t start the Coldfusion service as root it gives me some strange errors and things do not work right. So here i just told it to startup as root from the beginning.</p>
<blockquote><p><code>Starting ColdFusion 8...<br />
The ColdFusion 8 server is starting up and will be available shortly.<br />
======================================================================<br />
Running the ColdFusion 8 connector wizard<br />
======================================================================<br />
Configuring the web server connector (Launched on the first run of the ColdFusion 8 start script)<br />
Running apache connector wizard...<br />
Connector installation succeeded for apache<br />
======================================================================<br />
ColdFusion 8 has been started.<br />
ColdFusion 8 will write logs to /opt/coldfusion8/logs/cfserver.log<br />
======================================================================</code></p></blockquote>
<p>Now to test it out. I loaded up my localhost/CFIDE/administrator/ and it pulls up the coldfusion administrator. Looks good to me. Went through the administrator and setup a couple of things, tested out a cfm page in the root. All seems to be working well&#8230; good job Adobe.</p>
]]></content:encoded>
			<wfw:commentRss>http://forthedeveloper.com/2008/coldfusion-801-on-ubuntu-804/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google IO T-Shirt</title>
		<link>http://forthedeveloper.com/2008/google-io-t-shirt/</link>
		<comments>http://forthedeveloper.com/2008/google-io-t-shirt/#comments</comments>
		<pubDate>Wed, 28 May 2008 23:57:43 +0000</pubDate>
		<dc:creator>Randy Merrill</dc:creator>
				<category><![CDATA[google]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rambling]]></category>
		<category><![CDATA[binary]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[io2008]]></category>

		<guid isPermaLink="false">http://blog.zdsystems.com/?p=12</guid>
		<description><![CDATA[Just looking at the Google IO T-Shirt for this year&#8217;s attendees and it appears they spelled GOOGLEIO wrong. I was curious as I was sitting in a session and typed in the binary that is on the shirt and it came out GOOGLEKO. Here is my translation of the shirt to binary: 0100011101001111010011110100011101001100010001010100101101001111 Here is [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://forthedeveloper.com/wp-content/uploads/2008/05/dscf7460.jpg"><img class="alignright size-thumbnail wp-image-13" style="float: right;" title="Google IO Shirt" src="http://blog.zdsystems.com/wp-content/uploads/2008/05/dscf7460-150x150.jpg" alt="" width="150" height="150" /></a>Just looking at the Google IO T-Shirt for this year&#8217;s attendees and it appears they spelled GOOGLEIO wrong. I was curious as I was sitting in a session and typed in the binary that is on the shirt and it came out GOOGLEKO.</p>
<p>Here is my translation of the shirt to binary:</p>
<p><code>0100011101001111010011110100011101001100010001010100101101001111</code></p>
<p>Here is what that is translated:</p>
<p><code>GOOGLEKO</code></p>
<p>Just something interesting, we&#8217;ll see if it is true.</p>
<p>UPDATE: Thanks <a title="TechCrunch Coverage" href="http://www.techcrunch.com/2008/05/28/google-gets-fancy-with-google-io-tshirts-too-fancy/">TechCrunch for verifying the shirt</a> for me!</p>
]]></content:encoded>
			<wfw:commentRss>http://forthedeveloper.com/2008/google-io-t-shirt/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
