<?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>Martian Thoughts on Design</title>
	<atom:link href="http://blogs.martiangraphix.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.martiangraphix.com</link>
	<description>Design, Web Development, and Interesting Technology</description>
	<lastBuildDate>Wed, 11 May 2011 03:32:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Backup / Restore a user on OS X</title>
		<link>http://blogs.martiangraphix.com/2011/03/backup-restore-user-on-os-x/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=backup-restore-user-on-os-x</link>
		<comments>http://blogs.martiangraphix.com/2011/03/backup-restore-user-on-os-x/#comments</comments>
		<pubDate>Sat, 12 Mar 2011 00:33:29 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[restore]]></category>
		<category><![CDATA[system maintenance]]></category>

		<guid isPermaLink="false">http://blogs.martiangraphix.com/?p=363</guid>
		<description><![CDATA[Continuing with the basic system maintenance/setup tutorials for OS X, we cover how to backup and restore user accounts, when Time Machine restoration is not an option or it is not desired.]]></description>
			<content:encoded><![CDATA[<p>I can&#8217;t say enough about how important it is to occasionally backup your data.  I&#8217;ve had several instances where doing this really saved me, and I&#8217;ve had friends who didn&#8217;t do it, and it has really cost them.  I&#8217;m a <strong>firm</strong> believer in the <strong>awesomeness</strong> of <strong>Time Machine</strong> on the Mac.  I&#8217;ve used it a few times to restore my system to a previous state, after I thought my system had been compromised, and it&#8217;s just a thing of beauty&#8230;for the most part.  </p>
<p><span id="more-363"></span>The one caveat that I have about this is that there seems to be a minor flaw in doing the restorations, at least when using the <strong>OS X</strong> DVD that came with my <strong>MacBook Pro</strong>, which I believe was <strong>10.6.3</strong>.  It seems that if you don&#8217;t use the latest snapshot, then you can&#8217;t really guarantee which snapshot you&#8217;ll actually get.  In my case, I&#8217;ve twice tried to restore my drive using a snapshot from an hour before the last one.  This resulted in my system reverting anywhere from 2-5 days before my latest snapshot.  I don&#8217;t know for sure how far back the revision was, I&#8217;m just basing this on changes in my user&#8217;s home folder, and CDs I&#8217;d ripped to <strong>iTunes</strong>.  In both cases, it wasn&#8217;t a huge deal, because my files hadn&#8217;t changed that much in that amount of time.  But if I&#8217;d been developing a new website at the time, I would have been pretty annoyed!  </p>
<p>Now I know, most people would simply choose the latest snapshot, and I&#8217;ve done that too, and the restoration process worked perfectly.  So this is definitely a rare bug, but I&#8217;m not most people.  I tend to do things differently.</p>
<p>Anyway, this article discusses another way to make sure that you protect your data.  In fact, I&#8217;ve recently had to repeat this little task, due to some configuration error that I was having with <strong>OS X</strong>.  The only fix that the <strong>Apple Genius Bar</strong> could come up with, was to completely nuke my HD and start over.  And I didn&#8217;t want to use the <strong>Time Machine</strong> image, since those snapshots would have been corrupted as well.  So I&#8217;m glad that I took a snapshot of my main user&#8217;s folder before taking the laptop over there.</p>
<p>So here&#8217;s the process to make sure that all your pictures, <strong>iTunes</strong> downloads, and what-not are still safe.</p>
<p><strong>Note:</strong> It is important to point out that this process isn&#8217;t to be used to restore your primary administrative account.  You&#8217;re going to have to create at least one administrator before restoring the users in <a href="#restore">Step 4</a>.  If you need to restore your primary administrator account, create another administrator when installing your system, and use it to restore your old account.  Then <strong>stop using administrator accounts for daily use</strong>!</p>
<h3><a name="Step1">Step 1: Backup your user&#8217;s folder</a></h3>
<p>The optimal way to do this, is to boot from the <strong>OS X</strong> DVD that came with your system, but instead of letting the install utility progress, find the <strong>Utilities</strong> menu item at the top of the screen, and select <strong>Disk Utility</strong>.  If your system is stable and active, you can also do this from the local <strong>Disk Utility</strong>, which is located under <strong>Applications</strong> > <strong>Utilities</strong>, if necessary.  You&#8217;ll need to have a external drive connected directly to your system, as <strong>Disk Utility</strong> won&#8217;t recognize network drives (unfortunately).</p>
<p>Either way, with the <strong>Disk Utility</strong> application open, create an image from the <em>/Users/</em> home folder, by selecting <strong>File</strong> > <strong>New Image from Directory</strong>.  </p>
<p>In the <strong>Select Folder to Image</strong> window, select your primary drive, <strong>MacIntosh HD</strong> by default.  If you need to backup more than one user folder, navigate to the user&#8217;s folder <em>/Users/</em>.  In the case of just backing up a single user, navigate to <em>/Users/youruserfolder/</em>.</p>
<p>Click the <strong>Image</strong> button.</p>
<p>In the <strong>New Image from Folder</strong> window, select your external drive as the storage location.  Give the file another name if you like.  I tend to add the date of the backup to the filename.  </p>
<p>Click the <strong>Save</strong> button.</p>
<h3><a name='verifyImg'>Step 2: Verify the image</a></h3>
<p>Before you proceed, it&#8217;s a good idea to verify the image, to make sure it was copied correctly.  The image you just created should appear in the list on the left in the <strong>Disk Utility</strong> window.</p>
<p>Click on the image, and click the <strong>Verify</strong> button at the top of the window.  This process could take a bit of time depending on the size of your image.</p>
<p>When that process is complete, you&#8217;ll want to also scan the image to make sure you can use it to restore from.  From the menu, select <strong>Images</strong> > <strong>Scan Image for Restore</strong>.</p>
<p><strong>Note:</strong> You can also use this basic process to image the whole drive, and then use the image for restoration using the <strong>Disk Utility</strong> application.</p>
<p><strong>Tip:</strong> Store the image file in more than one place if possible.  I have had these files get corrupted on occasion.  It can ruin your day if you wipe your system, only to find your image file is corrupt.</p>
<p>Once you&#8217;ve verified the image, you can close the <strong>Disk Utility</strong> application and proceed with reinstalling your system.  </p>
<h3><a name='systemInstall'>Step 3: Reinstall your system</a></h3>
<p>Make sure to <a href="#verifyImg">verify the restoration image</a> before you wipe your drive!!!  I can&#8217;t emphasize that enough.</p>
<p>Reinstall your system from the <strong>OS X</strong> DVD as normal.  During this process you&#8217;ll need to create an administrative account other than one of the ones you&#8217;re attempting to restore, as noted above.  <strong>Do not</strong> create the user accounts you&#8217;ll be restoring.  We&#8217;ll cover that in <a href="#createUser">Step 5</a>.</p>
<p>Install any software you need, and then proceed to <a href="#restore">Step 4</a>.</p>
<h3><a name='restore'>Step 4: Restoring the user folders</a></h3>
<p>At this point, you&#8217;ll need to be logged in as the primary administrator.  Once you have your system to the point where you&#8217;re ready to restore your user accounts, open the disk image by double clicking on it.  It&#8217;s a good idea to re-verify the image using the <strong>Disk Utility</strong>, if it&#8217;s been a while since you created it (see <a href="#verifyImg">Step 2</a>).</p>
<p>Now we&#8217;ll copy the user folders back to <em>/Users/</em> individually.  Open up the <strong>Terminal</strong> application for this process.  It&#8217;s located under <strong>Applications</strong> > <strong>Utilities</strong>.</p>
<p>If you imaged the entire <em>/Users/</em> folder, run the following command for each user folder:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #660033;">-Rp</span> <span style="color: #000000; font-weight: bold;">/</span>Volumes<span style="color: #000000; font-weight: bold;">/</span>imageName<span style="color: #000000; font-weight: bold;">/</span>userfolder <span style="color: #000000; font-weight: bold;">/</span>Users</pre></div></div>

<p>Otherwise, for a single user folder image:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #660033;">-Rp</span> <span style="color: #000000; font-weight: bold;">/</span>Volumes<span style="color: #000000; font-weight: bold;">/</span>imageName <span style="color: #000000; font-weight: bold;">/</span>Users<span style="color: #000000; font-weight: bold;">/</span>userfolder</pre></div></div>

<p><strong>Note:</strong> You need to be careful to leave off a trailing / on the folder names for these commands to work properly.  If you add say, <em>userfolder/</em>, then you&#8217;ll copy the contents of the folder, instead of the entire folder.  Also we&#8217;re assuming the the <em>userfolder/</em> doesn&#8217;t already exist in <em>/Users/</em>.</p>
<p>You use the -p option in these commands to make sure that the file creation times are preserved.  You probably don&#8217;t want today&#8217;s date to be the creation time on all your files after all.</p>
<p>Make sure all the folders in <em>/Users/</em> are named the way you want them before proceeding.  The way <strong>OS X</strong> sets these up by default is all lowercase and no spaces.</p>
<p>Please take a moment to read the <a href="#caches">(Optional) Step 6</a>, and decide if you want to do this step.  If so, now may be a good time to do that.  Otherwise you can do it later.</p>
<h3><a name='createUser'>Step 5: Create the user accounts</a></h3>
<p>Open the <strong>System Preferences</strong> window from either the <strong>Dock</strong>, or from under the <strong>Apple</strong> symbol in the menu bar.</p>
<p>Under <strong>System</strong>, select <strong>Accounts</strong>.  The list of users on the system appears on the left.  There is a <strong>+</strong> and <strong>-</strong> button under this list.  You&#8217;re going to click the <strong>+</strong> button to create new users.</p>
<p>Create a new user with the same <strong>Account name</strong> as the folders you created in <a href="#restore">Step 4</a>.  The <strong>Account name</strong> (short name) must be exactly the same as the folder name.  The <strong>Account name</strong> field should be all lower case and cannot have any spaces, so neither can the folder names.  The <strong>Full name</strong> can be whatever you prefer.  I believe you can use either name to log in with, but the <strong>Full name</strong> appears in <strong>Login</strong> window, unless you&#8217;ve changed your <strong>Login Options</strong>.  </p>
<p>You&#8217;ll get a dialog asking if you want to use the existing folder in <em>/Users</em>.  Select the <strong>OK</strong> button.</p>
<p>This will create the user, using the old folder, and it will automatically go through the folder and update the ownership/permissions of each file to make them appropriate for the user.</p>
<p>Repeat this step for each user you need to restore.</p>
<h3><a name='caches'>(Optional) Step 6: Delete the user caches</a></h3>
<p>The most recent time that I used this method, my user account was acting a little bit quirky.  The solution for this, after several calls to <strong>Apple</strong> was to delete the caches for the user.  You can either delete them after you&#8217;ve logged in as the user, or while setting up the user accounts as administrator.  When you delete these files, they will be created again when the user logs in the next time, so it&#8217;s apparently safe.  </p>
<p><strong>Disclaimer:</strong> It&#8217;s a good idea to keep these files until you make sure the user account works properly, so rename the <em>Caches/</em> directory or move it to the trash, until you&#8217;re sure it works.  If you rename it, just delete this folder later, once you&#8217;re happy with the functioning of the user account.</p>
<p>To remove the <em>Caches/</em> folder for each user, locate the following folder in each user&#8217;s folder and move it to the trash, or rename them.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>Users<span style="color: #000000; font-weight: bold;">/</span>userfolder<span style="color: #000000; font-weight: bold;">/</span>Library<span style="color: #000000; font-weight: bold;">/</span>Caches</pre></div></div>

<p>You can either do this in <strong>Finder</strong>, or in the <strong>Terminal</strong> window.</p>
<p>If you skipped <a href="#createUser">Step 5, you can click here to go back</a>.</p>
<p>If all went well you should be able to log into each user, and have the exact same setup as when you created the backup image.  The same background, window locations, email settings, etc.  I hope this has been helpful.  If so, please leave me a comment.  If you&#8217;ve run into problems, I won&#8217;t guarantee to provide assistance, but you never know.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.martiangraphix.com/2011/03/backup-restore-user-on-os-x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing PHP on OS X</title>
		<link>http://blogs.martiangraphix.com/2011/01/installing-php/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=installing-php</link>
		<comments>http://blogs.martiangraphix.com/2011/01/installing-php/#comments</comments>
		<pubDate>Sat, 01 Jan 2011 07:30:15 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[OS X]]></category>

		<guid isPermaLink="false">http://blogs.martiangraphix.com/?p=294</guid>
		<description><![CDATA[As many of you may have noticed, one of the purposes of this blog is to act as my own personal notebook on how to configure things, but I&#8217;m glad to see it has provided benefit to others as well. That being said, it has been far too long since I&#8217;ve posted any information on [...]]]></description>
			<content:encoded><![CDATA[<p>As many of you may have noticed, one of the purposes of this blog is to act as my own personal notebook on how to configure things, but I&#8217;m glad to see it has provided benefit to others as well.  That being said, it has been <em>far</em> too long since I&#8217;ve posted any information on this blog.  Setting up my new laptop really through my routine out of whack.  So as part of my New Year&#8217;s resolution, I resolve to do better, and post articles on a more frequent basis.</p>
<p>Speaking of my new laptop, I am now able to run OS X 10.6 or better, so all of my posts from now on will be discussing the newer OS.</p>
<p>But this post is about how to get <strong>PHP</strong> up and running on OS X, so let&#8217;s dig in. </p>
<p><span id="more-294"></span></p>
<p>In the past, everyone from <strong>Apple</strong> to the <strong>PHP</strong> website itself recommended that OS X users download and install the <strong>PHP</strong> package supplied by <a href="http://www.entropy.ch/about/welcome.html">Marc Liyanage</a> over at <a href="http://www.entropy.ch/home/">Entropy.ch</a>.  Marc did a really excellent job with his package, and the installer was just excellent.   However, it&#8217;s been a long time since his <strong>PHP</strong> package has received an update.  It took me a while to realize why that is.  </p>
<p><strong>Apple</strong> has actually been <strong>very</strong> good about keeping the <strong>PHP</strong> that is included in OS X up to date lately.  Currently the version on OS X is <strong>PHP</strong> 5.3.3, which considering that 5.3.4 just came out on Dec 10, 2010 isn&#8217;t that bad.  And I would expect this to be updated with the next security patch for OS X.</p>
<p>In recent months, <a href="http://www.macrumors.com/2010/10/22/steve-jobs-comments-on-apples-java-discontinuation/"><strong>Apple</strong> has decided</a> to leave it up to the <strong>Adobe</strong> and <strong>Oracle</strong> to keep <strong>Flash</strong> and <strong>Java</strong> up to date on OS X, instead of handling it themselves.  If this happens with <strong>PHP</strong>, then hopefully Marc will again start doing his custom builds.  If not, then we&#8217;ll have to find some place else to turn, or start rolling our own.</p>
<p>So let&#8217;s get started with actually getting the <strong>Apple</strong> installed <strong>PHP</strong> turned on.  As usual, you&#8217;ll need to perform these steps using an account with administrative rights.</p>
<h3><a name="apache_config">Step 1: Editing the Apache configuration</a></h3>
<p>We&#8217;ll begin by editing the main <strong>Apache</strong> configuration file to enable <strong>PHP</strong>.  Open a <strong>Terminal</strong> window, and type the following:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>apache2
$ <span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #660033;">-l</span></pre></div></div>

<p>You should see a list of files in this directory.  The file we need to edit is <em>httpd.conf</em>.  It&#8217;s a good idea to make a copy of this file before editing it, so we&#8217;ll start by doing that.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">cp</span> httpd.conf httpd_original.conf
$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">nano</span> httpd.conf</pre></div></div>

<p>The line we need to modify is near the beginning of this file, toward the end of the DSO Support section.  We&#8217;re looking for the line with <em>php5_module</em>.  We&#8217;ll enable this line by removing the # in front of it, to look like:</p>

<div class="wp_syntax"><div class="code"><pre class="ini" style="font-family:monospace;">LoadModule php5_module         libexec/apache2/libphp5.so</pre></div></div>

<p>Save and close the <em>httpd.conf</em> file.</p>
<h3><a name='php_ini'>Step 2: Enabling the php.ini file</a></h3>
<p>Next, we need to enable the main <strong>PHP</strong> configuration file.  Using the <strong>Terminal</strong> window we already have open, type the following:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>etc
$ <span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #660033;">-l</span> php<span style="color: #000000; font-weight: bold;">*</span></pre></div></div>

<p>You should see one file listed, <em>php.ini.default</em>.  The web server won&#8217;t read this file until we rename it to <em>php.ini</em>.  You can do so by typing:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">cp</span> php.ini.default php.ini</pre></div></div>

<p>Now we need to edit the php.ini file so that it accepts the default database sockets.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">chmod</span> u+<span style="color: #c20cb9; font-weight: bold;">w</span> php.ini
$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">nano</span> php.ini</pre></div></div>

<p>You need to find the lines which list the default sockets, and remove the text from three lines that say <strong>/var/mysql/mysql.sock</strong>.  So the lines should look as follows:</p>

<div class="wp_syntax"><div class="code"><pre class="ini" style="font-family:monospace;">pdo_mysql.default_socket <span style="color: #000066; font-weight:bold;">=</span>
mysql.default_socket <span style="color: #000066; font-weight:bold;">=</span> 
mysqli.default_socket <span style="color: #000066; font-weight:bold;">=</span></pre></div></div>

<p>Close and save the file.  Now, we&#8217;re ready to continue.</p>
<h3><a name='restart'>Step 3: Restart the web server</a></h3>
<p>Open <strong>System Preferences</strong>, select <strong>Sharing</strong>, and cycle <strong>Web Sharing</strong> from On, to Off, to On, as necessary.</p>
<h3><a name='test'>Step 4: Test the installation</a></h3>
<p>To verify that PHP is working and enabled, we&#8217;ll create a test <strong>PHP</strong> file in our user&#8217;s Sites folder.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #7a0874; font-weight: bold;">cd</span> ~<span style="color: #000000; font-weight: bold;">/</span>Sites
$ <span style="color: #c20cb9; font-weight: bold;">nano</span> test.php</pre></div></div>

<p>Enter the following code into this file, then save and close the file.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> 
    <span style="color: #b1b100;">echo</span> <span style="color: #990000;">phpinfo</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>To test this file by open your web browser, and enter to the following in the address bar:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;">http://localhost/~yourusername/test.php</pre></div></div>

<p>If all went well you should see a page with a purple banner, which displays a whole lot of information about your <strong>PHP</strong> installation.  You need to look at the output on this screen, to make sure the the <em>php.ini</em> file is being read correctly.  Under the <strong>Core</strong> section, look for the line that has <strong>display_errors</strong>, and make sure the setting reads <strong>Off</strong>.  If so, the server is reading the <em>php.ini</em> file correctly.</p>
<p>If everything looks ok, you can now start building and testing <strong>PHP</strong> based pages.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.martiangraphix.com/2011/01/installing-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dreamweaver CS5 adds support HTML5</title>
		<link>http://blogs.martiangraphix.com/2010/05/dreamweaver-cs5-adds-support-html5/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dreamweaver-cs5-adds-support-html5</link>
		<comments>http://blogs.martiangraphix.com/2010/05/dreamweaver-cs5-adds-support-html5/#comments</comments>
		<pubDate>Thu, 20 May 2010 21:44:00 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[Dreamweaver]]></category>
		<category><![CDATA[HTML5]]></category>

		<guid isPermaLink="false">http://blogs.martiangraphix.com/?p=279</guid>
		<description><![CDATA[Just saw that Adobe has added support for HTML5 and CSS3 to Dreamweaver CS5. You can find the extension at Adobe Labs. The extension adds support for CSS3 and some HTML5 tags in Live View, HTML5 and CSS3 code hinting, HTML5 starter documents, plus some other things. I&#8217;m expecting the features in this extension to [...]]]></description>
			<content:encoded><![CDATA[<p>Just saw that <strong>Adobe</strong> has added support for <strong>HTML5</strong> and <strong>CSS3</strong> to <strong>Dreamweaver CS5</strong>.  You can find the extension at <a href="http://labs.adobe.com/technologies/html5pack/"><strong>Adobe Labs</strong></a>. </p>
<p>The extension adds support for <strong>CSS3</strong> and some <strong>HTML5</strong> tags in <strong>Live View</strong>, <strong>HTML5</strong> and <strong>CSS3</strong> code hinting, <strong>HTML5</strong> starter documents, plus some other things.  I&#8217;m expecting the features in this extension to improve in the future as more <strong>HTML5</strong> features get rolled into browsers. </p>
<p>I&#8217;m really looking forward to getting a chance to play with this.  With that, and the additions of <strong>Drupal</strong> and <strong>WordPress</strong> support, <strong>Dreamweaver CS5</strong> looks to become quite a useful tool for doing web development.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.martiangraphix.com/2010/05/dreamweaver-cs5-adds-support-html5/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Christmas in April, Part II</title>
		<link>http://blogs.martiangraphix.com/2010/04/christmas-in-april-part-ii/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=christmas-in-april-part-ii</link>
		<comments>http://blogs.martiangraphix.com/2010/04/christmas-in-april-part-ii/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 22:30:50 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[MacBook Pro]]></category>

		<guid isPermaLink="false">http://blogs.martiangraphix.com/?p=255</guid>
		<description><![CDATA[We began discussing what an interesting month April has been in Christmas in April, Part I. Now we&#8217;ll get into what&#8217;s happening with Apple. Apple kicked off the month with the official release of the iPad. I personally think the device is a huge deal. I can definitely see where it would fit in with [...]]]></description>
			<content:encoded><![CDATA[<p>We began discussing what an interesting month April has been in <a href="http://blogs.martiangraphix.com/2010/04/christmas-in-april-part-i/">Christmas in April, Part I</a>.  Now we&#8217;ll get into what&#8217;s happening with <strong>Apple</strong>.</p>
<p><strong>Apple</strong> kicked off the month with the official release of the <strong>iPad</strong>.  I personally think the device is a huge deal.  I can definitely see where it would fit in with my day to day activities.</p>
<p>Then this week, the released the long awaited <strong>MacBook Pro</strong>.  As I said in the previous article, I&#8217;ve been holding out for this machine for a long time, and I&#8217;m super excited to get one.  <span id="more-255"></span>The changes don&#8217;t seem huge from the previous version, but the GPU switching and the use of the <strong>Core i5 &#038; i7</strong> technology are really going to have an impact.  I&#8217;m expecting a 100x-200x improvement in processing from my current <strong>PowerBook Pro G4</strong>.  That sucker has performed like a champ, but at last it&#8217;s time has come.  There are just too many tools that I need to run which no longer support the old PPC processors.  </p>
<p>On April 8th, <strong>Apple</strong> announced the changes for <strong>iPhone OS 4.0</strong>.  I read those with interest.   I&#8217;m sure I&#8217;ll be happy to have those, but the multi-tasking that everyone has been clamoring for won&#8217;t impact my <strong>iPhone 3G</strong>.</p>
<p>I can&#8217;t say I&#8217;m thrilled with the <strong>iAd</strong> business.  The last thing I want is more advertising in my apps, but I suppose if it keeps a few developers afloat and offering their products for free, it&#8217;s something I&#8217;ll have to live with&#8230;..as long as I can ignore the ads.  If some developer puts them in there where I can&#8217;t avoid them, then I&#8217;ll delete the app!  </p>
<p>The changes to the <strong>Terms of Service</strong> agreement that comes with the new SDK have been widely <a href="http://arstechnica.com/apple/news/2010/04/apple-takes-aim-at-adobe-or-android.ars">talked about</a>.  This impacts not only <strong>Flash</strong> and <strong>Android</strong>, but also <a href="http://monotouch.net/"><strong>MonoTouch</strong></a> and <a href="http://unity3d.com/"><strong>Unity</strong></a>.</p>
<p>On the one hand, I understand why <strong>Apple</strong> wants to maintain tight control of their platforms.  When you get a buggy app, that can reflect badly on the device.  But it should be clear to most people by now that <strong>Apple</strong> produces great products.  </p>
<p>On the other hand, I must say I&#8217;m becoming increasingly frustrated with <strong>Apple&#8217;s</strong> attitude toward would be developers.  Sure they have great products, but their development tools are nothing special, at least not when you compare them to <strong>Visual Studio</strong>.  In fact in some ways they&#8217;re downright clunky.  Say what you like about <strong>Microsoft</strong>, they make <em>outstanding</em> developer tools, and they go out of their way to help developers make applications that run on their systems.</p>
<p>Personally I&#8217;m not all that thrilled about learning a language that can only be used on <strong>Apple&#8217;s</strong> products.  <strong>Objective C</strong>, at least from talking with friends about it, is not really a great language to program in.  And the fact that it is in no way cross platform just makes it less interesting.</p>
<p>Luckily, most of my developing is web related.  So you&#8217;d think having <strong>Apple</strong> push open standards like <strong>HTML5</strong> is a good thing.  The only problem with that is that it isn&#8217;t really quite as &#8220;standard&#8221; as it would appear.  <a href="http://www.webmonkey.com/2010/04/flash-faces-down-threats-on-adobes-big-day/"><strong>WebMonkey</strong> does a good job</a> of discussing why having <strong>HTML</strong> based video is going to be a mess for a long time to come.  Basically, each browser maker has decided to support differing encoding standards.</p>
<p>This frustration is getting deep enough now, that I&#8217;m even considering purchasing a device other than the <strong>iPad</strong> next year, when I get ready for that type of device.  At the very least, it&#8217;s given <strong>Google</strong> and <strong>Microsoft</strong> an opening in my mind, which considering how much I love my <strong>PowerBook Pro</strong> and <strong>iPhone</strong>, is <em>truly sad</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.martiangraphix.com/2010/04/christmas-in-april-part-ii/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Christmas in April, Part I</title>
		<link>http://blogs.martiangraphix.com/2010/04/christmas-in-april-part-i/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=christmas-in-april-part-i</link>
		<comments>http://blogs.martiangraphix.com/2010/04/christmas-in-april-part-i/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 11:17:48 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[CS5]]></category>
		<category><![CDATA[Dreamweaver]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Illustrator]]></category>
		<category><![CDATA[InDesign]]></category>
		<category><![CDATA[Photoshop]]></category>

		<guid isPermaLink="false">http://blogs.martiangraphix.com/?p=249</guid>
		<description><![CDATA[This is a pretty exciting month for the tools we use in our business, and technology in general. Monday, Adobe annouced CS5 and Microsoft finalized Visual Studio 2010. Last week Apple released the iPad, and this week it released the new Core i5 &#038; Core i7 MacBook Pros. For me, it is beyond time to [...]]]></description>
			<content:encoded><![CDATA[<p>This is a pretty exciting month for the tools we use in our business, and technology in general.  Monday, <a href="http://www.adobe.com/products/creativesuite/"><strong>Adobe</strong> annouced <strong>CS5</strong></a> and <a href="http://msdn.microsoft.com/en-us/default.aspx"><strong>Microsoft</strong> finalized <strong>Visual Studio 2010</strong></a>.  Last week <strong>Apple</strong> released the <strong>iPad</strong>, and this week it released the new <strong>Core i5 &#038; Core i7 MacBook Pros</strong>. </p>
<p>For me, it is <em>beyond</em> time to upgrade my systems, so this is about to be a very expensive month.  I&#8217;ve <em>literally</em> been waiting on these new <strong>MacBook Pros</strong> for two years, ever since I read about these new processors from <strong>Intel</strong>.  And with this new computer, it is also time to upgrade the <strong>Adobe</strong> software, so this year&#8217;s tech budget is pretty much gone. </p>
<p><span id="more-249"></span><br />
<h3>Adobe CS5</h3>
<p>First let&#8217;s talk about the new release from <strong>Adobe</strong>.  I was pretty interested to see what was going to change with <strong>CS5</strong>.  I was a bit surprised at the lack of whoopla at many of the Tech News sites I read.  The mostly gave it a shout, but it lacked much of the marketing hype that I remember from <strong>CS4</strong>.  In the next few days, I expect to see a bit more from the guys at <a href="http://www.layersmagazine.com/"><strong>Layers Magazine</strong></a>, <a href="http://www.planetphotoshop.com/"><strong>PlanetPhotoshop.com</strong></a>, and the others whose jobs revolve around making the Adobe products seem fantastic.  Don&#8217;t get me wrong, I really appreciate the services that those guys at <strong>Kelby Training</strong> provide, I could have just done without the sugar coating that they gave <strong>CS4</strong>, especially since it turned out to be mostly a dud, at least in sales terms. </p>
<p>So what&#8217;s in new and compelling in <strong>CS5</strong>?  Looking through <a href="http://www.adobe.com/"><strong>Adobe&#8217;s</strong></a> website, most of the products seem to have only gotten minor updates.  Edge detection and new brush effects in <a href="http://www.adobe.com/products/photoshop/photoshopextended/whatsnew/index.html?segment=design"><strong>Photoshop</strong></a>? (yawn)  For <a href="http://www.adobe.com/products/illustrator/whatsnew/"><strong>Illustrator</strong></a>, perspective drawing could be cool, but most of the rest of it should have been in there a long time ago. <a href="http://www.adobe.com/products/flash/whatsnew/"><strong>Flash</strong></a>? XML swf file, and <a href="http://www.adobe.com/products/flashbuilder/"><strong>Flash Builder</strong></a> integration. Seriously?  That needs to be pointed out? (zzzzz)</p>
<p>But all is not doomed&#8230;..<a href="http://www.adobe.com/products/indesign/whatsnew/"><strong>InDesign</strong></a> seems to have gotten a reasonable number of &#8220;new&#8221; features.  eBook publishing and multiple pages sizes look interesting and useful.  </p>
<p>And then we get to <a href="http://www.adobe.com/products/dreamweaver/whatsnew/"><strong>Dreamweaver</strong></a>.  <strong>Dreamweaver</strong> is a big part of what we do here at <strong>Martian Graphix</strong> (so are the other tools, but those updates just aren&#8217;t really showing huge impacts to our daily workflow).  <a href="http://drupal.org/"><strong>Drupal</strong></a> and <a href="http://www.wordpress.org/"><strong>WordPress</strong></a> are also big for us, so finding good support for those systems in <strong>Dreamweaver</strong> is a major plus for our business.  <strong>Dreamweaver CS5</strong> also includes CSS inspection tools, which will cut down on needing to use <a href="https://addons.mozilla.org/en-US/firefox/addon/60"><strong>Firefox&#8217;s Web Developer Toolbar</strong></a>.  Rendering dynamic pages without having to jump over to a browser is going to be a huge win.  Also using the code hinting features with the <strong>Drupal</strong>, <strong>WordPress</strong>, or just PHP methods is going to be a <em>big</em> plus.  It&#8217;s very nice to finally see an update to <strong>Dreamweaver</strong> that focuses on the Developer side of the tool, more than the Designer oriented side, because both sides of web development must be supported equally.  I&#8217;m not going stop using <a href="http://netbeans.org/"><strong>NetBeans</strong></a> or <a href="http://eclipse.org/"><strong>Eclipse</strong></a> anytime soon, but this is definitely a nice direction to see <strong>Dreamweaver</strong> heading. </p>
<p>So, what&#8217;s the verdict?  For us, the updates to <strong>Dreamweaver</strong> provide a very compelling reason to upgrade from <strong>CS3</strong>.  Add to that the incremental changes made to the other tools with <strong>CS4</strong> and <strong>CS5</strong>, plus the fact that all this is optimized to run on the Intel processor of the <strong>MacBook Pro</strong>, as opposed to <strong>CS3</strong>, and the conclusion is: yes it&#8217;s time to bite the bullet and upgrade. </p>
<p>Now, which version?  The <strong>Web Premium</strong> would seem like the obvious choice, but since it only seems to include the Standard edition of <strong>Flash Builder</strong>, I think we&#8217;ll go with <strong>Design Premium</strong> instead, and buy <strong>Flash Builder</strong> seperately, when the time comes. </p>
<p>Now, what about all this stuff from <strong>Apple</strong>?  Stay tuned for the next article, <a href="http://blogs.martiangraphix.com/2010/04/christmas-in-april-part-ii/">Christmas in April, Part II</a>. </p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.martiangraphix.com/2010/04/christmas-in-april-part-i/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Updating Drupal Multi-Site on OS X</title>
		<link>http://blogs.martiangraphix.com/2010/03/updating-drupal-multisite-on-os-x/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=updating-drupal-multisite-on-os-x</link>
		<comments>http://blogs.martiangraphix.com/2010/03/updating-drupal-multisite-on-os-x/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 21:06:21 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Multi-Site]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[Planet Drupal]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Update]]></category>

		<guid isPermaLink="false">http://blogs.martiangraphix.com/?p=189</guid>
		<description><![CDATA[We&#8217;re continuing on with the tutorials for the Drupal Multi-Site configuration that I set up on my Mac. All the domain and directory structure is based on that tutorial, so if you&#8217;ve done something slightly different, you&#8217;ll need to adjust as appropriate. Were following the basic procedure laid out in the UPGRADE.txt in your Drupal [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re continuing on with the tutorials for the <a href="http://blogs.martiangraphix.com/2009/09/building-a-drupal-development-environment-for-mac/">Drupal Multi-Site configuration</a> that I set up on my Mac.  All the domain and directory structure is based on that tutorial, so if you&#8217;ve done something slightly different, you&#8217;ll need to adjust as appropriate.</p>
<p><span id="more-189"></span>Were following the basic procedure laid out in the UPGRADE.txt in your Drupal core installation, so if you run into any problems you can get some additional tips there. </p>
<p>I&#8217;m writing a special tutorial on this because, when we set up our installation in the <a href="http://blogs.martiangraphix.com/2009/09/building-a-drupal-development-environment-for-mac/">Building A Drupal Development Environment page</a>, I set up some permissions on the <em>sites/</em> directory.  These permissions made it easier for us to access the files, but we&#8217;ll need to tweak a few things in the upgrade procedure to preserve these permissions.</p>
<p>So, in this tutorial, I&#8217;m going to show you step by step how to easily accomplish the upgrade.  </p>
<h2>Step 1: Log into your Drupal site as the administrative user</h2>
<p>Hopefully this is pretty self explanatory.</p>
<h2>Step 2: Set the site into maintenance mode</h2>
<p>Now, you&#8217;ll navigate to the <strong>Site maintenance</strong> page for the site, using the navigation links: <strong>Administer > Site configuration > Site maintenance</strong></p>
<h2>Step 3: Switch to one of the default themes</h2>
<p>If you&#8217;ve installed a custom theme, you&#8217;ll need to switch out to one of the ones that came with Drupal.  I&#8217;ll use Garland.</p>
<p>You get there by navigating to: <strong>Administer > Site building > Themes</strong>.</p>
<p>Make sure that Garland is <strong>Enabled</strong>, and that it is selected as the <strong>Default</strong>.  Save the configuration.</p>
<h2>Step 4: Disable any added modules</h2>
<p>We need to disable any modules that we&#8217;ve installed, which were not part of the Drupal Core.  Navigate to the modules page: <strong>Administer > Site building > Modules</strong></p>
<p>You do NOT need to disable anything in <strong>Core &#8211; required</strong> or <strong>Core &#8211; optional</strong>, but disable anything you see in the other section.  You can do this by unchecking the box in front of the module.  As you go through this, you&#8217;ll want to make a list of which modules you&#8217;re disabling, so you can turn these back on when we&#8217;re done.</p>
<p>When you&#8217;ve unchecked the modules, select <strong>Save configuration</strong> at the bottom of the list when done.</p>
<p>You may need to go through this several times to make sure all the modules are turned off, because some modules are required by others, and can&#8217;t be unchecked the first time through.  </p>
<h2>Step 5: Repeat Steps 1-4</h2>
<p>You&#8217;ll need to perform <strong>Steps 1-4</strong> for each site that you&#8217;ve installed.  You should be able to see all the sites you have by looking in your <em>~/Sites/drupal/6/sites/</em> folder.</p>
<p>Once you&#8217;ve gotten all your sites ready for upgrade, return here.</p>
<h2>Step 6: Backup the databases</h2>
<p>Now we need to make a backup of our databases.  We&#8217;ll start by opening the Terminal, and navigating to the our ~/Sites/drupal/ folder.  Once there, we&#8217;ll double check the name of our database.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #7a0874; font-weight: bold;">cd</span> ~<span style="color: #000000; font-weight: bold;">/</span>Sites<span style="color: #000000; font-weight: bold;">/</span>drupal<span style="color: #000000; font-weight: bold;">/</span>
$ mysql <span style="color: #660033;">-u</span> yourrootaccount <span style="color: #660033;">-p</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">&quot;SHOW SCHEMAS&quot;</span></pre></div></div>

<p>Again, we&#8217;re using <em>yourrootaccount</em>, because I change the name of the root user on my databases as a simple security precaution.</p>
<p>Identify the database for the website, and we&#8217;ll back it up.  Following my previous examples, I&#8217;d need to backup &#8220;drupal_sandbox&#8221; and &#8220;drupal_essentials&#8221;, plus the other databases I&#8217;ve added.  To do this, do the following:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>mysql<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>mysqldump <span style="color: #660033;">-u</span> yourrootuser <span style="color: #660033;">-p</span> <span style="color: #660033;">--databases</span> drupal_sandbox drupal_essentials <span style="color: #000000; font-weight: bold;">&gt;</span> drupal_20100301.sql</pre></div></div>

<p>Verify that the file looks correct:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">ls</span>
$ <span style="color: #c20cb9; font-weight: bold;">head</span> <span style="color: #660033;">-n</span> <span style="color: #000000;">100</span> drupal_20100301.sql</pre></div></div>

<h2>Step 7: Download the latest version of Drupal</h2>
<p>You can get this from the <a href="http://drupal.org/project/drupal">Drupal Project Download</a> page.  At the time of this writing, Drupal 6.15 is the latest production build, so that&#8217;s what we&#8217;re using.</p>
<p>Download the file and move it into your <em>~Sites/drupal/</em> directory.  If your browser is set up to use your user&#8217;s <em>Downloads/</em> folder, switch back to the Terminal and perform the following:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #7a0874; font-weight: bold;">cd</span> ~<span style="color: #000000; font-weight: bold;">/</span>Downloads<span style="color: #000000; font-weight: bold;">/</span>
$ <span style="color: #c20cb9; font-weight: bold;">mv</span> drupal-<span style="color: #000000;">6.15</span>.tar.gz ~<span style="color: #000000; font-weight: bold;">/</span>Sites<span style="color: #000000; font-weight: bold;">/</span>drupal<span style="color: #000000; font-weight: bold;">/</span></pre></div></div>

<p>Verify that the file is in your <em>~/Sites/drupal/</em> folder.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #7a0874; font-weight: bold;">cd</span> ~<span style="color: #000000; font-weight: bold;">/</span>Sites<span style="color: #000000; font-weight: bold;">/</span>drupal<span style="color: #000000; font-weight: bold;">/</span>
$ <span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #660033;">-l</span></pre></div></div>

<h2>Step 8: Rename the core directory</h2>
<p>We&#8217;re going to move our Drupal files directory to a new location as a backup.  We&#8217;re going to need our <em>sites/</em> folder later on.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #7a0874; font-weight: bold;">cd</span> ~<span style="color: #000000; font-weight: bold;">/</span>Sites<span style="color: #000000; font-weight: bold;">/</span>drupal<span style="color: #000000; font-weight: bold;">/</span>
$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">mv</span> <span style="color: #000000;">6</span> <span style="color: #000000;">6</span>_backup</pre></div></div>

<h2>Step 9: Install the new version of Drupal</h2>
<p>Now we&#8217;ll unpack the new version of Drupal that we downloaded in <strong>Step 7</strong>.  We&#8217;re also going to rename it to <em>6/</em>, as we had in our original installation.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-xzf</span> drupal-<span style="color: #000000;">6.15</span>.tar.gz
$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">mv</span> drupal-<span style="color: #000000;">6.15</span> <span style="color: #000000;">6</span></pre></div></div>

<h2>Step 10: Copy the old files back to the new installation</h2>
<p>Now we need to move all of our custom files back into the new directory. </p>
<p>To start with, we need to make sure we grab the cronall script we created in<a href="http://blogs.martiangraphix.com/2009/09/building-a-drupal-development-environment-for-mac/"> Building a Drupal development environment on Mac OS X</a>.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #000000;">6</span>_backup<span style="color: #000000; font-weight: bold;">/</span>cronall.php <span style="color: #000000;">6</span><span style="color: #000000; font-weight: bold;">/</span></pre></div></div>

<p>If you&#8217;ve modified any other files, in Drupal&#8217;s core (e.g. .htaccess, robots.txt, or something in <em>themes/</em>), copy those into the <em>6/</em> folder now.</p>
<p>Now we&#8217;re at the step where we need to make sure to preserve the permissions for the webserver. In order to do this we&#8217;ll use the <strong>cp -Rp</strong> command.  You&#8217;ll need to make sure to include the <strong>sudo</strong> command in front of the copy command, or you&#8217;ll loose the permissions in the <em>sites/</em> folder.  So run the following in the Terminal:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #660033;">-Rp</span> <span style="color: #000000;">6</span>_backup<span style="color: #000000; font-weight: bold;">/</span>sites <span style="color: #000000;">6</span><span style="color: #000000; font-weight: bold;">/</span></pre></div></div>

<p>Verify that the folders in sites still have the www group.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #660033;">-l</span> <span style="color: #000000;">6</span><span style="color: #000000; font-weight: bold;">/</span>sites<span style="color: #000000; font-weight: bold;">/</span></pre></div></div>

<h2>Step 11: Run the update</h2>
<p>Go back to your browser and run the update script:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;">http://drupal6.local/update.php</pre></div></div>

<p>Follow the screen prompts, using the defaults.  You should select <strong>Continue</strong> and then <strong>Update</strong>, and the process will run automatically.  Select the <strong>Administration pages</strong> link at the end of the process.</p>
<h2>Step 12: Check the Status Report</h2>
<p>You&#8217;ll want to verify that the update process ran correctly by checking the status report.  Navigate to <strong>Administer > Reports > Status report</strong> and click <strong>run cron manually</strong>. </p>
<p>You should see the new version at the top of the table, and everything else should be green.</p>
<h2>Step 13: Restore your Modules</h2>
<p>Go back into the Modules page and restore your modules.  Navigate to the page by going to: <strong>Administer > Site building > Modules</strong></p>
<p>Using the list of modules you made in <strong>Step 4</strong>, select the check box in front of each module to turn it back on.  You should be able to select all the modules the first time through the screen.  When you&#8217;re done, select <strong>Save configuration</strong> at the bottom of the screen.</p>
<p>Once the configuration has been saved, you should get a yellow box at the top asking about new releases.  Select the <strong>check manually</strong> link in this box, to see if you need to update any of your modules.</p>
<p>If you get a message that says you need to update your modules, select the <strong>available updates</strong> link to see which modules need to be updated.  If all your modules are current, skip to <strong>Step 15</strong>.</p>
<h2>Step 14: Update your Modules</h2>
<p>From the <strong>Available updates</strong> page, select the <strong>Download</strong> link for each module that needs to be updated.  Copy the tar file into the <em>modules/</em> folder for this particular site.  For example, if it was the CCK module, you would do the following:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #7a0874; font-weight: bold;">cd</span> ~<span style="color: #000000; font-weight: bold;">/</span>Sites<span style="color: #000000; font-weight: bold;">/</span>drupal<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">6</span>
$ <span style="color: #c20cb9; font-weight: bold;">cp</span> ~<span style="color: #000000; font-weight: bold;">/</span>Downloads<span style="color: #000000; font-weight: bold;">/</span>CCK-<span style="color: #000000;">6</span>.x-<span style="color: #000000;">2.1</span>.tar.gz sites<span style="color: #000000; font-weight: bold;">/</span>drupal6.local<span style="color: #000000; font-weight: bold;">/</span>modules<span style="color: #000000; font-weight: bold;">/</span></pre></div></div>

<p>Now copy the existing module folder someplace else temporarily, and then unpack the new module.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #7a0874; font-weight: bold;">cd</span> sites<span style="color: #000000; font-weight: bold;">/</span>drupal6.local<span style="color: #000000; font-weight: bold;">/</span>modules
$ <span style="color: #c20cb9; font-weight: bold;">mv</span> cck ~<span style="color: #000000; font-weight: bold;">/</span>Desktop<span style="color: #000000; font-weight: bold;">/</span>cck_backup
$ <span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-xzf</span> CCK-<span style="color: #000000;">6</span>.x-<span style="color: #000000;">2.1</span>.tar.gz</pre></div></div>

<p>Back in the browser, check that your updates are all correct, by refreshing the <strong>Available updates</strong> page.  Once you have all the correct versions of your modules, proceed to <strong>Step 15</strong>.</p>
<h2>Step 15: Restore your theme</h2>
<p>Return to the <strong>Themes</strong> page, by navigating to <strong>Administer > Site building > Themes</strong></p>
<p>Make sure your theme is <strong>Enabled</strong> and selected as the <strong>Default</strong>, and then select <strong>Save configuration</strong>. </p>
<h2>Step 16: Bring the site back online</h2>
<p>Now we need to reactivate the site.  Navigate to <strong>Administer > Site configuration > Site maintenance</strong> and set your site&#8217;s status to <strong>Online</strong>.</p>
<p>Then select <strong>Save configuration</strong> to reactivate the site.  Log out and go back to the <strong>Home</strong> page, to verify that your site is functioning correctly.  Navigate through some of your pages, to make sure everything looks OK.</p>
<h2>Step 17: Repeat Steps 12-16</h2>
<p>You&#8217;ll need to repeat <strong>Steps 12-16</strong> for each site that you&#8217;re maintaining.</p>
<p>Note: Sometimes an update will change some of the underlying database tables.  These changes can affect your modules, so you&#8217;ll need to make sure to run the status report on each site you have installed.  You may need to run the database update script on each site, before you can reactivate the modules.</p>
<p>That should be all you need to do.  Once you have checked through your sites, and everything looks to be running correctly, you can delete your backup folders.</p>
<p>Hopefuly you&#8217;ve found this tutorial useful.  Let me know if you run into any issues when running through this tutorial.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.martiangraphix.com/2010/03/updating-drupal-multisite-on-os-x/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>A few thoughts on Apple&#8217;s iPad announcement</title>
		<link>http://blogs.martiangraphix.com/2010/01/apples-ipad-announcement/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=apples-ipad-announcement</link>
		<comments>http://blogs.martiangraphix.com/2010/01/apples-ipad-announcement/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 00:44:58 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Amazon]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Barnes & Noble]]></category>
		<category><![CDATA[eBook]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[Kindle]]></category>
		<category><![CDATA[Tablet]]></category>

		<guid isPermaLink="false">http://blogs.martiangraphix.com/?p=212</guid>
		<description><![CDATA[Today, like many Tech aficionados, I was eagerly following the posts about Apple&#8217;s new iPad. And I must say that I&#8217;m quite interested in the device. First let me say that I was a little taken aback when I looked over at Yahoo&#8217;s Tech Blog, and those guys panned it. They pointed out all the [...]]]></description>
			<content:encoded><![CDATA[<p>Today, like many Tech aficionados, I was eagerly following the posts about Apple&#8217;s new <a href="http://www.apple.com/ipad/">iPad</a>.  And I must say that I&#8217;m quite interested in the device.</p>
<p>First let me say that I was a little taken aback when I looked over at <a href="http://tech.yahoo.com/blogs;_ylt=Ao_hdqKYmkuHI.TYnQAVIKQFLZA5">Yahoo&#8217;s Tech Blog</a>, and those guys panned it.  They pointed out all the things that the rumor mill said it would do that it didn&#8217;t.  Sorry dudes, there is only so much tech you can cram into a device this size without blowing a massive whole in your unit cost.  </p>
<p><span id="more-212"></span>Would a <a href="http://www.adobe.com/products/flashplayer/">Flash plug-in</a> be nice to have?  How about a camera?  Multiple processes running?  Sure, all of these would be nice, but they aren&#8217;t really make or break, are they?  Besides, the software stuff can be added later on, if necessary.  No one else is producing anything like this.  Although I&#8217;m sure they&#8217;ll be trying to copy it soon.</p>
<p><a href="http://tech.yahoo.com/blogs/patterson/64364;_ylt=Ag4AaJq3LM2b8jOdFPgP2XYWLpA5">Ben Patterson</a> seemed to be missing the point the most.  This is NOT an oversized iPhone, without the phone.  But if you start thinking of this as an eBook reader, or as a media pad, it&#8217;s easy to see why this device is so interesting.</p>
<p>You might say that this is an oversized iPod Touch. I personally have never understood the point of the Touch, when you could just get the iPhone, but apparently millions of people disagree with me. </p>
<p>But the iPad, I GET!!!</p>
<p><a href="http://blogs.martiangraphix.com/2010/01/tablet-mania-at-ces/">As I talked about a couple of weeks ago</a>, I&#8217;m really quite interested in getting an eBook reader. Apple&#8217;s new iPad just buried that market.  Why on earth would anyone be interested in a <a href="http://ces.cnet.com/8301-31045_1-10428337-269.html?tag=mncol;title">Que</a> or a <a href="http://www.amazon.com/gp/product/B0015TG12Q/ref=sa_menu_kdxi3?pf_rd_p=328655101&#038;pf_rd_s=left-nav-1&#038;pf_rd_t=101&#038;pf_rd_i=507846&#038;pf_rd_m=ATVPDKIKX0DER&#038;pf_rd_r=1XP1HPPBFMNDB18XYVBP">Kindle DX</a>, when they could get this device for the same price, with so much more capability?  Sure it may not look great on the beach in the sun, but it plays videos and games, does email, and has a real web browser.  </p>
<p>I completely don&#8217;t get people who try to read books on the little screen that is on the Touch or the iPhone.  I never understood it on my old Compaq iPaq, and I certainly don&#8217;t understand it now.   Nor do I really want to have to peer past a keyboard when I&#8217;m trying to read a book, so Netbooks are out.  But give me this nice 9.7&#8243; screen, and I&#8217;ll be buying most of my books either through iTunes or through <a href="http://www.barnesandnoble.com/ebooks/index.asp">Barnes &#038; Noble&#8217;s eBookstore</a>.  With any luck we&#8217;ll be able to buy an eBook through the BN eBookstore and drag it onto our iTunes library, since they both use the <a href="http://en.wikipedia.org/wiki/EPUB">ePub format</a>.  If not, Barnes &#038; Noble&#8217;s eReader app will certainly be on the iPad. </p>
<p>Also this device seems like a total win for college students.  You&#8217;ll be able to take all your books to class on one device, plus jam out a few notes if you like. </p>
<p>My second major use case for this device is when you&#8217;re in your living room watching TV. There are many times, when I&#8217;m watching <a href="http://www.history.com/">The History Channel</a> or <a href="http://dsc.discovery.com/">The Discovery Channel</a>, in which I want to go look up something on the web.  Right now I do that on my iPhone, but I can&#8217;t say that&#8217;s an optimal experience.  With the iPad, this would be a lot more convenient.  Same thing goes if I want to play one of my games.  Whipping out my phone works, but this will be a much better experience on the iPad. </p>
<p>Now a few words about what the iPad is not. It&#8217;s not a full-blown computer. I will not create websites or write up blog posts on this thing.  Nor would I want to compose long emails on it, any more than I&#8217;d do that on my iPhone.  Those things are what a laptop is for. </p>
<p>But if you take the iPad for what it is, it&#8217;s a damn interesting device, and pretty reasonably priced.  I think Apple will sell quite a few of these.  </p>
<p>Will I be one of them this year?  No.  I tend to prefer to wait until hardware version 2, before I jump into this.  Better to let them work out some of the kinks.  But still&#8230;.I&#8217;m very interested in heading down to the Apple store and playing with one of these in the coming months.</p>
<p>Just my two cents.</p>
<p>[Update] For a list of things missing, but with a good analysis of why they&#8217;re not there, check out <a href="http://www.wired.com/gadgetlab/2010/01/ten-things-missing-from-the-ipad/">Charlie Sorrel&#8217;s post over at Wired.com</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.martiangraphix.com/2010/01/apples-ipad-announcement/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Tablet Mania at CES</title>
		<link>http://blogs.martiangraphix.com/2010/01/tablet-mania-at-ces/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=tablet-mania-at-ces</link>
		<comments>http://blogs.martiangraphix.com/2010/01/tablet-mania-at-ces/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 16:13:40 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Amazon]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Barnes & Noble]]></category>
		<category><![CDATA[Dell]]></category>
		<category><![CDATA[eBook]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Kindle]]></category>
		<category><![CDATA[Nook]]></category>
		<category><![CDATA[Plastic Logic]]></category>
		<category><![CDATA[Que]]></category>
		<category><![CDATA[Skiff]]></category>
		<category><![CDATA[Tablet]]></category>

		<guid isPermaLink="false">http://blogs.martiangraphix.com/?p=194</guid>
		<description><![CDATA[Today I&#8217;m going to talk briefly about technology.  All this business about tablets, netbooks and e-readers is really generating lots of hype in the press.  Personally I&#8217;d love to have an e-reader or tablet, so I can stop filling up my bookshelf.  I&#8217;ve been preparing myself for a black and white screen, until the technology [...]]]></description>
			<content:encoded><![CDATA[<p>Today I&#8217;m going to talk briefly about technology.  All this business about tablets, netbooks and e-readers is really generating lots of hype in the press.  Personally I&#8217;d love to have an e-reader or tablet, so I can stop filling up my bookshelf.  I&#8217;ve been preparing myself for a black and white screen, until the technology improves.  But then I saw <a href="http://www.mirasoldisplays.com/index-mirasol-display-technology.php">Qualcomm&#8217;s Mirasol color screen</a>, so now I&#8217;m hoping for good color offerings in e-readers/tablet soon.</p>
<p><span id="more-194"></span>I was really looking forward to seeing what <a href="http://ces.cnet.com/8301-31045_1-10428337-269.html?tag=mncol;title">Plastic Logic did with their Que</a>.  Unfortunately it looks like they missed the mark&#8230;.at least for me.</p>
<p>They seem to have fallen into the classic mistake made by hardware manufacturers&#8230;..getting caught up in the device specs, then convincing themselves that some screwy use case is what consumers want.  I&#8217;m trying to figure out what the point of having AT&amp;T 3G connectivity is, if you can&#8217;t upload documents that way, and there is no web browser.  E-mail? ZZZZZZZzzzzzzzzzzzzzzz.</p>
<p>Am I still interested in the Que as an e-reader?  Maybe.  At those prices?  Definitely not!  If it had at least the same capability, preferably more capability, than the <a href="http://www.amazon.com/Kindle-Wireless-Reading-Display-Generation/dp/B0015TG12Q/ref=amb_link_17949962_3?pf_rd_m=ATVPDKIKX0DER&amp;pf_rd_s=center-1&amp;pf_rd_r=05CGTJ763RGBY3S61VDT&amp;pf_rd_t=101&amp;pf_rd_p=51296782&amp;pf_rd_i=507846">Kindle DX</a>, and was similarly priced, then I&#8217;d probably be all over it.  For that price, it&#8217;d need to have a LOT MORE capability, not LESS. </p>
<p>Why not just get a Kindle DX?  I don&#8217;t want to be locked into their weird format. The <a href="http://www.barnesandnoble.com/nook/index.asp">Nook</a> is quite interesting, but a bit too small for the type of books I mostly buy. I need something that is good for Textbook size reading, with graphics, charts, figures, etc. That&#8217;s why I had such hope for the Que.  </p>
<p>Is the <a href="http://www.skiff.com/skiff-reader.html">Skiff</a> the right product?  The device looks interesting. Unfortunately, there are still too many things up in the air at this point, like pricing, store access and format considerations.  As for the Service/Store, I can&#8217;t find a lot of detail about it yet, but the website says their service is &#8220;Publisher-friendly&#8221;.  If we use the music or video industry as a guide, that means it will be a bad deal for consumers.  I&#8217;d also feel a little more comfortable about the store offered by Barnes &amp; Noble or Borders than some company I&#8217;ve never heard of.  But I&#8217;ll wait for further details.</p>
<p>It seems to me that there are a ton of companies pursuing this, and your dollar.  Dell, HP and many others are hyping their offerings. So far, no one has hit a home run in my book.  Most of them are completely blowing it, due to some poor choices like Plastic Logic&#8217;s or <a href="http://ces.cnet.com/8301-31045_1-10428571-269.html">Dell&#8217;s ridiculously small screen</a>.</p>
<p>Later this month, we&#8217;ll presumably see what Apple has to offer.  So far they&#8217;re the only company who&#8217;s really figured out a nice UI with their iPhone interface.  I don&#8217;t think this interface is completely appropriate for a tablet, so I hope they throw something even more impressive at us later this month.  Will I rush right out and be an early adopter? One word&#8230;..No!  I think we&#8217;ll need to wait at least one generation for them to get some of the kinks worked out.</p>
<p>So here I am, waiting for a really interesting device to replace my bookshelf.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.martiangraphix.com/2010/01/tablet-mania-at-ces/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Drupal used for new WhiteHouse.gov website</title>
		<link>http://blogs.martiangraphix.com/2009/10/drupal-used-for-new-whitehouse-gov-website/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=drupal-used-for-new-whitehouse-gov-website</link>
		<comments>http://blogs.martiangraphix.com/2009/10/drupal-used-for-new-whitehouse-gov-website/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 16:20:22 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Drupal]]></category>

		<guid isPermaLink="false">http://blogs.martiangraphix.com/?p=178</guid>
		<description><![CDATA[Hey, just saw this posting at MSNBC. It seems that the website for the White House is moving to Drupal. At the end of the article, it makes reference to the background technology being Drupal. AWESOME!]]></description>
			<content:encoded><![CDATA[<p>Hey, just saw <a href="http://www.msnbc.msn.com/id/33463174/ns/technology_and_science-internet/">this posting</a> at MSNBC.  It seems that the website for the <a href="http://www.whitehouse.gov/">White House</a> is moving to <a href="http://drupal.org/">Drupal</a>.  At the end of the article, it makes reference to the background technology being Drupal.</p>
<p>AWESOME!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.martiangraphix.com/2009/10/drupal-used-for-new-whitehouse-gov-website/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Automating Drupal cron with OS X’s launchd</title>
		<link>http://blogs.martiangraphix.com/2009/10/automating-drupal-cron-with-os-xs-launchd/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=automating-drupal-cron-with-os-xs-launchd</link>
		<comments>http://blogs.martiangraphix.com/2009/10/automating-drupal-cron-with-os-xs-launchd/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 01:04:47 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[cron]]></category>
		<category><![CDATA[launchd]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Multi-Site]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[Planet Drupal]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://blogs.martiangraphix.com/?p=147</guid>
		<description><![CDATA[Found this great post on Configuring cron on Mac OS X Server 10.5.x in the Drupal documentation. I&#8217;d been wanting to do that with my original post on Building a Drupal Multi-Site development environment, but I hadn&#8217;t had time to figure it out. The title of the page at Drupal says &#8220;Mac OS X Server&#8220;, [...]]]></description>
			<content:encoded><![CDATA[<p>Found this great post on <a href="http://drupal.org/node/562904">Configuring cron on Mac OS X Server 10.5.x</a> in the Drupal documentation.  I&#8217;d been wanting to do that with my original post on <a href="http://blogs.martiangraphix.com/2009/09/building-a-drupal-development-environment-for-mac/">Building a Drupal Multi-Site development environment</a>, but I hadn&#8217;t had time to figure it out.</p>
<p>The title of the page at Drupal says &#8220;<strong>Mac OS X Server</strong>&#8220;, but there&#8217;s nothing that says you can&#8217;t use this technique on <strong>OS X Client</strong>, and I believe it will work on everything 10.4.x and up.</p>
<p>So I&#8217;m going to show you how to tie it into the Multi-Site setup I created on my local machine for the previous blog post.  <span id="more-147"></span>If you haven&#8217;t read that post, you might want to do so, because some of what we&#8217;re going to do here is specific to that installation.</p>
<p>Again, we&#8217;ll be using the <strong>Terminal</strong> a lot for this to make sure that everyone can play, with no special software necessary.</p>
<h3>Step 1: Remove the crontab Installation</h3>
<p>The first thing I&#8217;m going to do is remove the information that I put into the crontab previously.  Obviously, if you did not follow the procedure for creating a crontab file described in <strong>Step 10</strong> for building a Drupal Multi-Site development environment, then this step is not necessary.</p>
<p>The user crontab files are located in <em>/var/cron/tabs/</em>.  The first thing you need to do is make sure that the cronall statement that we put in earlier is the only thing in the file.  In your <strong>Terminal</strong> application do the following:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>cron<span style="color: #000000; font-weight: bold;">/</span>tabs<span style="color: #000000; font-weight: bold;">/</span>www</pre></div></div>

<p>If the only thing you see is the statement to execute http://drupal6.local/cronall.php, then it is safe to just delete this file.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>cron<span style="color: #000000; font-weight: bold;">/</span>tabs<span style="color: #000000; font-weight: bold;">/</span>www</pre></div></div>

<p>We&#8217;ll need to stop and start the cron process in order for our changes to take effect.  You can either restart your computer, or a better way is to just use Activity Monitor to quit the cron process.</p>
<ul>
<li>Open <strong>Finder</strong> and navigate into your <strong>Applications &gt; Utilities</strong> folder</li>
<li>Launch the <strong>Activity Monitor</strong></li>
<li>Select <strong>Administrator Processes</strong> in the pulldown at the top</li>
<li>In the <strong>Filter</strong> box at the top, type &#8220;<strong>cron</strong>&#8220;</li>
<li>Highlight the process and select <strong>Quit Process</strong> at the top</li>
<li>You should see the process go away, and come right back again with a new <strong>Process ID</strong></li>
</ul>
<p>If you saw additional commands in the file when you executed the cat command, then it&#8217;s probably best just to edit the crontab file and remove the lines related to Drupal.  If you need to do that then do the following:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">EDITOR</span>=<span style="color: #c20cb9; font-weight: bold;">nano</span>
$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> crontab <span style="color: #660033;">-u</span> www <span style="color: #660033;">-e</span></pre></div></div>

<p>Remove the line containing <strong>http://drupal6.local/cronall.php</strong>.</p>
<h3>Step 2: Create a plist file</h3>
<p>Again, we&#8217;re basically following the recommendations found in <a href="http://drupal.org/node/562904">Configuring cron on Mac OS X Server 10.5.x</a>, so if you want to tweek this installation, please read that article.  Now we need to create a launchd daemon .plist file.  We&#8217;ll call this file <em>drupal6.local-cronall.plist</em>, and place it in <em>/Library/LaunchDaemons/</em>.  Open your <strong>Terminal</strong> application and do the following:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>Library<span style="color: #000000; font-weight: bold;">/</span>LaunchDaemons
$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">nano</span> drupal6.local-cronall.plist</pre></div></div>

<p>Enter the following into the file:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span> 
<span style="color: #00bbdd;">&lt;!DOCTYPE plist PUBLIC &quot;-//Apple//DTD PLIST 1.0//EN&quot;</span>
<span style="color: #00bbdd;">         &quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&quot;&gt;</span> 
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;plist</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span> 
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dict<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Label<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>drupal6.local-cronall<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>UserName<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>nobody<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>GroupName<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>www<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>ProgramArguments<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;array<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>/usr/bin/curl<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>-s<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>http://drupal6.local/cronall.php<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/array<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>RunAtLoad<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;true</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span> 
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>StartInterval<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;integer<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>3600<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/integer<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dict<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/plist<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Save the file.</p>
<p><strong><em>Important!!!</em></strong> Note that we changed the <strong>GroupName</strong> from _www as described in the documentation to simply <strong>www</strong>.  Not sure if this is a variation between the OS X Server and the Client version, or it could be a difference between 10.4 and 10.5+.  In any case, for me on 10.4.x Client, it wouldn&#8217;t work until I got this value correct.</p>
<p>As you can see, we&#8217;ve used the <strong>StartInterval</strong> approach described in the article.  I think this approach is more appropriate for our development environment, because it won&#8217;t care if you laptop or desktop is asleep at a specific time.</p>
<h3>Step 3: Start the process</h3>
<p>Ok, so now let&#8217;s load the agent into <strong>launchd</strong>.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> launchtl load <span style="color: #000000; font-weight: bold;">/</span>Library<span style="color: #000000; font-weight: bold;">/</span>LaunchDaemons<span style="color: #000000; font-weight: bold;">/</span>drupal6.local-cronall.plist</pre></div></div>

<p>When I ran this, I got an error about &#8220;<strong>Workaround Bonjour: &#8230;.</strong>&#8220;, but the script seems to be executing ok, so I think you can ignore it.</p>
<p>Now let&#8217;s do a little testing.</p>
<h3>Step 4: Testing</h3>
<p>There are a couple of ways to test out what we&#8217;ve just done.  The main thing is to open the Drupal status report (<a href="http://drupal6.local/admin/reports/status">http://drupal6.local/admin/reports/status</a>), and check how long it&#8217;s been since your cronall process ran.  If you want to alter the interval while testing, change StartInterval.  I used <strong>120</strong> to make the process run every 2 minutes.  To get your changes to take effect, do the following:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> launchtl unload <span style="color: #000000; font-weight: bold;">/</span>Library<span style="color: #000000; font-weight: bold;">/</span>LaunchDaemons<span style="color: #000000; font-weight: bold;">/</span>drupal6.local-cronall.plist</pre></div></div>

<p>This is important, you don&#8217;t want to alter things in the .plist file until you unload it, or you&#8217;ll lose access to the service.  Now change the value of <strong>StartInterval</strong>:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">nano</span> <span style="color: #000000; font-weight: bold;">/</span>Library<span style="color: #000000; font-weight: bold;">/</span>LaunchDaemons<span style="color: #000000; font-weight: bold;">/</span>drupal6.local-cronall.plist</pre></div></div>

<p>And then restart the service:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> launchtl load <span style="color: #000000; font-weight: bold;">/</span>Library<span style="color: #000000; font-weight: bold;">/</span>LaunchDaemons<span style="color: #000000; font-weight: bold;">/</span>drupal6.local-cronall.plist</pre></div></div>

<p>Just make sure that you reset the <strong>StartInterval</strong> to something like <strong>3600</strong> (1 hr), so that your computer isn&#8217;t constantly banging on your network connection.</p>
<p>That&#8217;s it for this article.  I hope you&#8217;ve found it useful.  If you got into this article from <strong>Step 10</strong> of <a href="http://blogs.martiangraphix.com/2009/09/building-a-drupal-development-environment-for-mac/">Building a Drupal development environment for Mac</a>, then continue back to that article at <strong>Step 11</strong>.  </p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.martiangraphix.com/2009/10/automating-drupal-cron-with-os-xs-launchd/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

