<?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>Bradley Holt &#187; Subversion</title>
	<atom:link href="http://bradley-holt.com/tag/subversion/feed/" rel="self" type="application/rss+xml" />
	<link>http://bradley-holt.com</link>
	<description></description>
	<lastBuildDate>Mon, 23 Aug 2010 13:23:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Easy Way to Run Web Applications Locally</title>
		<link>http://bradley-holt.com/2008/07/easy-way-to-run-web-applications-locally/</link>
		<comments>http://bradley-holt.com/2008/07/easy-way-to-run-web-applications-locally/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 15:59:00 +0000</pubDate>
		<dc:creator>Bradley Holt</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://bradley-holt.com/2008/07/easy-way-to-run-web-applications-locally/</guid>
		<description><![CDATA[I&#8217;ve been trying out a new way to run web applications on my local machine. Since I work on many different websites I like to be able to run these sites on my local machine. This lets me try out changes locally before committing them to Subversion and rolling them out to a staging or [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been trying out a new way to run web applications on my local machine. Since I work on many different websites I like to be able to run these sites on my local machine. This lets me try out changes locally before committing them to Subversion and rolling them out to a staging or production environment. In the past I&#8217;ve simply created a new virtual host in Apache listening on its own port. The problem with this is that not only do I need to manually setup each new site, I also need to remember which site goes with which port number.</p>
<p>So, I&#8217;ve started using Apache&#8217;s <a href="http://httpd.apache.org/docs/2.0/vhosts/mass.html">dynamically configured mass virtual hosting</a>. This gets me two things. First, I don&#8217;t need to make any changes in Apache&#8217;s configuration file when I want to setup a new local web application. Second, I now have an easy-to-remember naming convention for sites that are running locally. This works really well for me, but your mileage may vary depending on your specific needs. There are also other tools that can help you accomplish similar results, but I like the simplicity of this in that it doesn&#8217;t require anything other than Apache and some DNS settings.</p>
<p>Let me explain the end result first, and then I&#8217;ll explain how I got there. For each website I work on I use the subdomain to indicate the environment it&#8217;s running in. Using the domain <span style="font-family:courier new;">example.org</span> we may have the following environments setup:</p>
<ul>
<li><span style="font-family:courier new;">local.example.org</span> &#8211; the local copy</li>
<li><span style="font-family:courier new;">beta.example.org</span> &#8211; a semi-publicly available beta</li>
<li><span style="font-family:courier new;">www.example.org</span> &#8211; the live site</li>
</ul>
<p>The <span style="font-family:courier new;">beta</span> and <span style="font-family:courier new;">www</span> versions aren&#8217;t anything special, just normal websites. For <span style="font-family:courier new;">local.example.org</span> I need to have a DNS entry that points to the loopback address, 127.0.0.1. This can either be a publicly available DNS entry (which could be a little awkward) or simply set in your hosts file. I&#8217;ve simply made the entry in my hosts file:</p>
<p><span style="font-family:courier new;">127.0.0.1    local.example.org</span></p>
<p>The downside of this is that you would need to update the host file on each machine that you wanted to run the <span style="font-family:courier new;">local.example.org</span> site on. A comprimise would be to run your own recursive DNS service that only your computers used and make the DNS entries there.</p>
<p>This next step only needs to be done once. The <a href="http://httpd.apache.org/docs/2.0/vhosts/mass.html">dynamically configured mass virtual hosting</a> article explains in detail how to set this up. My Apache configuration looks something like this:</p>
<p><span style="font-family:courier new;">VirtualDocumentRoot /path/to/workspace/%2+/public</span><br /><span style="font-family:courier new;"><directory><span style="font-family:courier new;"></span></directory></span><br />Again, your specific configuration may be different. When making a request to <span style="font-family:courier new;">http://local.example.org/</span> the document root would expand to <span style="font-family:courier new;">/path/to/workspace/</span><span style="font-family:courier new;">example.org</span><span style="font-family:courier new;">/public</span>. This assumes that you have placed all of your projects in the same location and they all have a similar directory layout (I&#8217;m using Zend Framework&#8217;s directory layout). I think there&#8217;s a way to do this in a way that&#8217;s more flexible, but I haven&#8217;t had the need. Let me know if you have any questions!</p>
]]></content:encoded>
			<wfw:commentRss>http://bradley-holt.com/2008/07/easy-way-to-run-web-applications-locally/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Burlington, VT PHP Users Group Subversion Presentation</title>
		<link>http://bradley-holt.com/2008/05/burlington-vt-php-users-group-subversion-presentation/</link>
		<comments>http://bradley-holt.com/2008/05/burlington-vt-php-users-group-subversion-presentation/#comments</comments>
		<pubDate>Fri, 23 May 2008 00:48:00 +0000</pubDate>
		<dc:creator>Bradley Holt</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Subversion]]></category>

		<guid isPermaLink="false">http://bradley-holt.com/2008/05/burlington-vt-php-users-group-subversion-presentation/</guid>
		<description><![CDATA[Here is the Subversion presentation I just gave at the Burlington, VT PHP Users Group:

 &#124; View &#124; Upload your own

]]></description>
			<content:encoded><![CDATA[<p>Here is the Subversion presentation I just gave at the Burlington, VT PHP Users Group:
<div style="width: 425px; text-align: left;" id="__ss_422023"><object style="margin: 0px;" width="425" height="355"><param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=subversionpresentation-1211473192853546-8"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=subversionpresentation-1211473192853546-8" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;"><a href="http://www.slideshare.net/?src=embed"><img src="http://static.slideshare.net/swf/logo_embd.png" style="border: 0px none ; margin-bottom: -5px;" alt="SlideShare" /></a> | <a href="http://www.slideshare.net/bradley.holt/burlington-vt-php-users-group-subversion-presentation?src=embed" title="View Burlington, VT PHP Users Group Subversion Presentation on SlideShare">View</a> | <a href="http://www.slideshare.net/upload?src=embed">Upload your own</a></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://bradley-holt.com/2008/05/burlington-vt-php-users-group-subversion-presentation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Subversion Presentation at PHP Users Group</title>
		<link>http://bradley-holt.com/2008/05/subversion-presentation-at-php-users-group/</link>
		<comments>http://bradley-holt.com/2008/05/subversion-presentation-at-php-users-group/#comments</comments>
		<pubDate>Mon, 19 May 2008 20:21:00 +0000</pubDate>
		<dc:creator>Bradley Holt</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Subversion]]></category>

		<guid isPermaLink="false">http://bradley-holt.com/2008/05/subversion-presentation-at-php-users-group/</guid>
		<description><![CDATA[I&#8217;ll be doing a presentation on Subversion, an open-source revision control system, at this month&#8217;s PHP Users Group meeting. The meeting is scheduled for this Thursday, May 22nd from 5:30 pm to 7:30 pm at Brown &#38; Jenkins Coffee Roasters.  I&#8217;ll be talking about reasons to use revision control, the benefits of using Subversion [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ll be doing a presentation on <a href="http://subversion.tigris.org/">Subversion</a>, an open-source revision control system, at this month&#8217;s <a href="http://groups.google.com/group/Burlington-VT-PHP/web/meeting-2008-05-22">PHP Users Group meeting</a>. The meeting is scheduled for this Thursday, May 22nd from 5:30 pm to 7:30 pm at Brown &amp; Jenkins Coffee Roasters.  I&#8217;ll be talking about reasons to use revision control, the benefits of using Subversion specifically, basic revision control concepts, typical workflow,  branching, merging, and tagging. Hope to see you there!</p>
]]></content:encoded>
			<wfw:commentRss>http://bradley-holt.com/2008/05/subversion-presentation-at-php-users-group/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>POSH In Action</title>
		<link>http://bradley-holt.com/2008/04/posh-in-action/</link>
		<comments>http://bradley-holt.com/2008/04/posh-in-action/#comments</comments>
		<pubDate>Wed, 02 Apr 2008 20:11:00 +0000</pubDate>
		<dc:creator>Bradley Holt</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://bradley-holt.com/2008/04/posh-in-action/</guid>
		<description><![CDATA[In a previous post I talked about Plain Old Semantic HTML (POSH). The POSH concept saved us a lot of time and frustration on a recent project. Our task was to create a cold water wash calculator for Seventh Generation&#8217;s Get Out of Hot Water for Earth Day promotion. The calculator takes four inputs: water [...]]]></description>
			<content:encoded><![CDATA[<p>In a previous post I talked about <a href="http://bradley-holt.com/2008/03/plain-old-semantic-html-posh/">Plain Old Semantic HTML (POSH)</a>. The POSH concept saved us a lot of time and frustration on a recent project. Our task was to create a cold water wash calculator for Seventh Generation&#8217;s Get Out of Hot Water for Earth Day promotion. The calculator takes four inputs: water temperature, type of hot water heater, type of clothes washer, and loads per week. It then tells you the savings if you switch to (or are already using) cold water, an Energy Star washer, and/or 2X Concentrate Natural Laundry Detergent.</p>
<p>They wanted  a smooth user experience. This sort of thing would normally be created in Flash but we decided to use XHTML + CSS + jQuery instead. The first step was to create functional and technical specifications. The specifications (and looking through all of the calculations to make sure we understand everything correctly) were actually a big part of the project. After that we moved into production.</p>
<p>We had two people working on this project &#8211; I implemented the functionality in jQuery and Jason implemented the design in CSS. We spent the first two hours working together on getting the semantic XHTML correct. Once we had the semantic XHTML we essentially had an <a href="http://en.wikipedia.org/wiki/Application_programming_interface">API</a> that we both could use to do our work. It was worth the time upfront getting this part right.</p>
<p>Next we went to our respective corners. I created the jQuery functionality selecting and manipulating the <a href="http://en.wikipedia.org/wiki/Document_Object_Model">DOM</a> using CSS selectors. Jason used the XHTML structure we had come up with to add CSS and make it all look pretty. The great part was that, since we had come up with the the XHTML structure as the one touch point, we were each able to do our jobs without hardly bothering the other person to ask questions or make changes.</p>
<p>Of course, there were a few changes needed to the XHTML once we started working on our individual pieces &#8211; we&#8217;re not perfect after all. This is were <a href="http://subversion.tigris.org/">Subversion</a> came in handy. I could change my local copy and when I was sure I wanted to I could commit that change and Jason could update his local copy merging any of his own changes (or vice-versa). The whole process went quite smoothly and we&#8217;re very happy with the <a href="http://www.seventhgeneration.com/get-out-of-hot-water">results</a> (the &#8220;Switch to Cold Water and Save&#8221; calculator on the right).</p>
]]></content:encoded>
			<wfw:commentRss>http://bradley-holt.com/2008/04/posh-in-action/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
