<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6510832</id><updated>2011-04-21T19:54:33.625-07:00</updated><title type='text'>emmby</title><subtitle type='html'>Results 1,142,701 - 1,142,710 of about 1,090,000,000 for java</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://emmby.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://emmby.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12578279853506273956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>22</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6510832.post-1882497059961971471</id><published>2008-12-01T14:58:00.000-08:00</published><updated>2008-12-01T18:14:01.435-08:00</updated><title type='text'>Auto mounting an sshfs volume at login on OS X Leopard 10.5.5 using MacFuse</title><content type='html'>If you maintain a remote machine, it can be really useful to mount that machine's filesystem locally to move files around.  MacFuse and sshfs make this really easy, although getting it set up and mounted automatically at login can be a bit tricky.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;First, make sure you can ssh to your remote machine without entering a password.  Do the setup in &lt;a href="http://ormset.no/wordpress/2007/10/28/leopard-finally-supporting-ssh-agent-at-login/"&gt;http://ormset.no/wordpress/2007/10/28/leopard-finally-supporting-ssh-agent-at-login/&lt;/a&gt; and verify that it works:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;ssh USER@HOSTNAME:&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If it logged you in without prompting for a password or passkey, you're ready to proceed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Next, install sshfs and MacFuse as per &lt;a href="http://emmby.blogspot.com/2008/12/installing-sshfs-19-with-macfuse-17-on.html"&gt;http://emmby.blogspot.com/2008/12/installing-sshfs-19-with-macfuse-17-on.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Figure out where you want to mount your remote volume.  I wouldn't recommend using /Volumes since it appears that OS X automatically deletes directories in there when you unmount things.  So instead I used /mnt/HOSTNAME&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;mkdir -p /mnt/HOSTNAME&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;(Obviously, you'll replace HOSTNAME with whatever your remote server's name is)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then make sure you can mount your remote site as a volume without specifying a password using sshfs:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;pre&gt;sshfs USER@HOSTNAME:PATH /mnt/HOSTNAME -oreconnect,allow_other,volname=VOLUME_NAME&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Set VOLUME_NAME to whatever you want your volume to be named in the Finder.  I used HOSTNAME.  PATH is optional, set it to whichever directory you want to mount on the remote host.  If it's not set, it'll use your home directory.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you get no error messages and when you do an "ls /mnt/HOSTNAME" the remote files show up, then you're ready to proceed to the next step.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Unmount the volume you just mounted:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;umount /mnt/HOSTNAME&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now comes the tricky party.  You'll need to create a LaunchAgent item to mount your volume at login.  This in itself is pretty easy.  However, if your system is anything like mine, this item won't have its SSH_AUTH_SOCK set properly so it won't be able to login to the remote host without using a password.  You'll have to manually set the SSH_AUTH_SOCK yourself.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;First, create a wrapper around sshfs that will set the SSH_AUTH_SOCK for you.  Put this in a file wherever you want, I suggest /opt/local/bin/sshfs-authsock&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;#!/bin/bash&lt;br /&gt;export SSH_AUTH_SOCK=$( ls -t /tmp/launch-*/Listeners | head -1)&lt;br /&gt;/opt/local/bin/sshfs $*&lt;br /&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Basically, this file sets SSH_AUTH_SOCK to the most recent socket in your tmp directory.  In most cases, this should be the proper one.  It's unlikely to fail, and there's no security issue if it does.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now you can finally create the launchd plist file.  Put this in ~/Library/LaunchAgents/BACKWARDS_HOST_DNS.PATH.sshfs.plist&lt;br /&gt;&lt;br /&gt;(if your host's path is, say, foo.niskala.org and your PATH was /tmp, then your resulting filename would be org.niskala.foo.tmp.sshfs.plist.  This is just a convention, feel free to name the file whatever you want really, but it does need to end in .plist)&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;br /&gt;&amp;lt;!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt;&lt;br /&gt;&amp;lt;plist version="1.0"&gt;&lt;br /&gt;&amp;lt;dict&gt;&lt;br /&gt;        &amp;lt;key&gt;Label&amp;lt;/key&gt;&lt;br /&gt;        &amp;lt;string&gt;BACKWARDS_HOST_DNS.PATH.sshfs&amp;lt;/string&gt;&lt;br /&gt;        &amp;lt;key&gt;ProgramArguments&amp;lt;/key&gt;&lt;br /&gt;        &amp;lt;array&gt;&lt;br /&gt;                &amp;lt;string&gt;/opt/local/bin/sshfs-authsock&amp;lt;/string&gt;&lt;br /&gt;                &amp;lt;string&gt;USER@HOSTNAME:&amp;lt;/string&gt;&lt;br /&gt;                &amp;lt;string&gt;/mnt/HOSTNAME&amp;lt;/string&gt;&lt;br /&gt;                &amp;lt;string&gt;-oreconnect,allow_other,volname=VOLUME_NAME&amp;lt;/string&gt;&lt;br /&gt;        &amp;lt;/array&gt;&lt;br /&gt;        &amp;lt;key&gt;RunAtLoad&amp;lt;/key&gt;&lt;br /&gt;        &amp;lt;true/&gt;&lt;br /&gt;&amp;lt;/dict&gt;&lt;br /&gt;&amp;lt;/plist&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;Now load the plist file and run it to see if it works.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;launchctl load ~/Library/LaunchAgents/BACKWARDS_HOST_DNS.PATH.sshfs&lt;span style="font-family:Georgia,serif;"&gt;&lt;br /&gt;&lt;/span&gt;launchctl start BACKWARDS_HOST_DNS.PATH.sshfs&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;If you see no error messages, see if the volume was mounted properly:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;ls /mnt/HOSTNAME&lt;/pre&gt;&lt;br /&gt;If your remote files show up, then great!   You're done!&lt;br /&gt;&lt;br /&gt;If not, use "launchctl unload ~/Library/LaunchAgents/BACKWARDS_HOST_DNS.PATH.sshfs" to unload the file before making edits to it, then use "ps auxwww | grep sshfs" and "kill" to find and kill any sshfs processes before trying again.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Hope this helps.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;References&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://discussions.apple.com/thread.jspa?threadID=1674891&amp;amp;tstart=22"&gt;http://discussions.apple.com/thread.jspa?threadID=1674891&amp;amp;tstart=22&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ccraig.org/sshfs-mac.html"&gt;http://ccraig.org/sshfs-mac.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/macfuse/wiki/MACFUSE_FS_SSHFS"&gt;http://code.google.com/p/macfuse/wiki/MACFUSE_FS_SSHFS&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6510832-1882497059961971471?l=emmby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmby.blogspot.com/feeds/1882497059961971471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6510832&amp;postID=1882497059961971471' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/1882497059961971471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/1882497059961971471'/><link rel='alternate' type='text/html' href='http://emmby.blogspot.com/2008/12/auto-mounting-sshfs-volume-at-login-on.html' title='Auto mounting an sshfs volume at login on OS X Leopard 10.5.5 using MacFuse'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12578279853506273956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6510832.post-7576391645461057051</id><published>2008-12-01T14:48:00.001-08:00</published><updated>2008-12-01T14:58:23.886-08:00</updated><title type='text'>Installing sshfs 1.9 with MacFuse 1.7 on OS X Leopard 10.5.5</title><content type='html'>Just a quick post today about getting sshfs up and running with MacFuse on Leopard 10.5.5.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The easiest way I found was to use MacPorts, supplemented by the Google MacFuse package.  In other words, install them both.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;First install sshfs (assuming you have MacPorts):&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;sudo port install sshfs&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This will automatically install the MacFuse dependency.  However, for whatever reason this version of MacFuse does not work out of the box when you try to run sshfs.  To make it work properly, download the MacFuse installer from &lt;a href="http://code.google.com/p/macfuse/"&gt;http://code.google.com/p/macfuse/&lt;/a&gt; and install it over the MacFuse you just installed.  No, really.  It all installs to the same place so you won't end up with two copies.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You may need to reboot, but once you do you'll be able to run sshfs as per &lt;a href="http://code.google.com/p/macfuse/wiki/MACFUSE_FS_SSHFS"&gt;http://code.google.com/p/macfuse/wiki/MACFUSE_FS_SSHFS&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;References&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://trac.macports.org/ticket/16042"&gt;http://trac.macports.org/ticket/16042&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6510832-7576391645461057051?l=emmby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmby.blogspot.com/feeds/7576391645461057051/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6510832&amp;postID=7576391645461057051' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/7576391645461057051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/7576391645461057051'/><link rel='alternate' type='text/html' href='http://emmby.blogspot.com/2008/12/installing-sshfs-19-with-macfuse-17-on.html' title='Installing sshfs 1.9 with MacFuse 1.7 on OS X Leopard 10.5.5'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12578279853506273956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6510832.post-1025277323840274500</id><published>2008-07-17T23:05:00.000-07:00</published><updated>2008-07-18T09:30:41.694-07:00</updated><title type='text'>Tropologs and Rotasmagrams</title><content type='html'>Some friends and I were discussing words today that look the same when rotated 180 degrees, which we've dubbed Rotasmagrams (or Tropologs, depending on whichever tickles your fancy more).&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We successfully came up with "pod" and "suns".  And then we wrote a script to generate the rest:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;pre&gt;Reading in /usr/share/dict/words&lt;br /&gt;Generating stems&lt;br /&gt;Computing valid tropologs&lt;br /&gt;unsun&lt;br /&gt;un&lt;br /&gt;suns&lt;br /&gt;sooloos&lt;br /&gt;pod&lt;br /&gt;nu&lt;br /&gt;dop&lt;br /&gt;dollop&lt;br /&gt;SIS&lt;br /&gt;OHO&lt;br /&gt;NOON&lt;br /&gt;NON&lt;br /&gt;MOW&lt;br /&gt;IHI&lt;br /&gt;I&lt;/pre&gt;&lt;br /&gt;&lt;div&gt;Note that there is some controversy over the use of the lowercase letter 'l', which will tend to droop a bit when rotated.  Also, it's clear that /usr/share/dict/words has some pretty unwordy words in it ("sooloos?").&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;div&gt;&lt;pre&gt;#!/usr/bin/env python&lt;br /&gt;&lt;br /&gt;DICT_FILE='/usr/share/dict/words'&lt;br /&gt;TROPOLOGS = { 'b':'q', 'd':'p', 'n':'u', 'q':'b', 'p':'d', 'u':'n', 'o':'o', 's':'s', 'z':'z', 'l':'l',&lt;br /&gt;          'H':'H', 'I':'I', 'N':'N', 'O':'O', 'S':'S', 'X':'X', 'Z':'Z', 'M':'W' }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def potential_words(word):&lt;br /&gt; words = [];&lt;br /&gt; for i in TROPOLOGS.keys():&lt;br /&gt;     new_word =  i + word + TROPOLOGS[i]&lt;br /&gt;     if new_word.lower() in VALID_STEMS:&lt;br /&gt;         words += [ new_word ] + potential_words(new_word)&lt;br /&gt; return words&lt;br /&gt;&lt;br /&gt;def mysort(l):&lt;br /&gt; l.sort() # I hate that python's builtin sort doesn't return the list&lt;br /&gt; l.reverse()&lt;br /&gt; return l&lt;br /&gt;&lt;br /&gt;print "Reading in " + DICT_FILE   # dict file is mysteriously missing 'suns'&lt;br /&gt;VALID_WORDS = [ word.lower() for word in open(DICT_FILE).read().splitlines() ] + ['suns']&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;print "Generating stems"&lt;br /&gt;VALID_STEMS = {}&lt;br /&gt;for word in VALID_WORDS:&lt;br /&gt; for i in range(0, len(word)+1):&lt;br /&gt;     for j in range(i+1, len(word)+1):&lt;br /&gt;         VALID_STEMS[word[i:j]] = True&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;print "Computing valid tropologs"&lt;br /&gt;potentials = ['I']&lt;br /&gt;for word in [''] + [ x for x in TROPOLOGS.keys() if x==TROPOLOGS[x] ]:&lt;br /&gt; potentials += potential_words(word)&lt;br /&gt;&lt;br /&gt;# Strip out duplicates with different capitalization&lt;br /&gt;tmp={}&lt;br /&gt;for word in mysort([ word for word in potentials if word.lower() in VALID_WORDS and ( word == word.lower() or word == word.upper() ) ]):&lt;br /&gt; if not word.lower() in tmp.keys(): print word&lt;br /&gt; tmp[word.lower()] = word&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6510832-1025277323840274500?l=emmby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmby.blogspot.com/feeds/1025277323840274500/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6510832&amp;postID=1025277323840274500' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/1025277323840274500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/1025277323840274500'/><link rel='alternate' type='text/html' href='http://emmby.blogspot.com/2008/07/tropologs-and-rotasmagrams.html' title='Tropologs and Rotasmagrams'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12578279853506273956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6510832.post-3249004514773196354</id><published>2008-06-06T17:29:00.000-07:00</published><updated>2008-06-11T17:37:23.166-07:00</updated><title type='text'>Configuring Postfix to relay email through your Gmail account on OS X Leopard</title><content type='html'>&lt;a href="http://emmby.blogspot.com/2008/06/configure-postfix-to-launch-at-startup.html"&gt;Configure Postfix to launch at startup on OS X Leopard&lt;/a&gt; describes how to launch postfix at startup.  But many ISPs block the SMTP port 25 for at least some hosts in an effort to prevent spam from originating from their network.  This may prevent your postfix server from successfully delivering mail to some or all email addresses.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;If you have a Google Mail account, you can easily configure postfix to relay your email through Gmail.  Many thanks to Installation Experiences (see the References below) who provided all the instructions how to do this.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;First, "sudo vi /etc/postfix/relay_password" and insert the following content:&lt;/div&gt;&lt;pre&gt;&lt;br /&gt;smtp.googlemail.com youremail@gmail.com:yourpassword&lt;br /&gt;smtp.gmail.com youremail@googlehosteddomain.com:yourpassword&lt;br /&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now use postmap to hash the file:&lt;/div&gt;&lt;pre&gt;sudo postmap /etc/postfix/relay_password&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Since the file and its hash will have your password, make sure they're readable only by the root user:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;pre&gt;sudo chmod 600 /etc/postfix/relay_password&lt;br /&gt;sudo chmod 600 /etc/postfix/relay_password.db&lt;br /&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Next, you will need to grab the Thawte Premium root certificates from &lt;a href="https://www.verisign.com/support/roots.html"&gt;https://www.verisign.com/support/roots.html&lt;/a&gt;.  Don't let your browser unzip these when you download them, you'll unzip them in the next step.&lt;div&gt;&lt;pre&gt;&lt;br /&gt;sudo mkdir /etc/postfix/certs&lt;br /&gt;cd /etc/postfix/certs&lt;br /&gt;sudo unzip -j roots.zip&lt;br /&gt;sudo openssl x509 -inform der -in ThawtePremiumServerCA.cer -out&lt;br /&gt;         ThawtePremiumServerCA.pem&lt;br /&gt;sudo c_rehash /etc/postfix/certs&lt;br /&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now configure postfix by adding the following to the bottom of /etc/postfix/main.cf:&lt;/div&gt;&lt;pre&gt;&lt;br /&gt;relayhost = smtp.googlemail.com:587&lt;br /&gt;# auth&lt;br /&gt;smtp_sasl_auth_enable = yes&lt;br /&gt;smtp_sasl_password_maps = hash:/etc/postfix/relay_password&lt;br /&gt;smtp_sasl_security_options = noanonymous&lt;br /&gt;# tls&lt;br /&gt;smtp_tls_security_level = may&lt;br /&gt;smtp_tls_CApath = /etc/postfix/certs&lt;br /&gt;smtp_tls_session_cache_database = btree:/etc/postfix/smtp_scache&lt;br /&gt;smtp_tls_session_cache_timeout = 3600s&lt;br /&gt;smtp_tls_loglevel = 1&lt;br /&gt;tls_random_source = dev:/dev/urandom&lt;br /&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That should be it, just run a quick test by sending mail to yourself using "/usr/bin/mail &lt;your@email.addr&gt;".  You can watch the maillog from Console.app (in Applications/Utilities)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;References&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.installationexperiences.com/?p=87"&gt;http://www.installationexperiences.com/?p=87&lt;/a&gt; has great instructions on how to do this, although there were a few bugs in the original post which haven't been corrected as of this writing.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6510832-3249004514773196354?l=emmby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmby.blogspot.com/feeds/3249004514773196354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6510832&amp;postID=3249004514773196354' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/3249004514773196354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/3249004514773196354'/><link rel='alternate' type='text/html' href='http://emmby.blogspot.com/2008/06/configuring-postfix-to-relay-email.html' title='Configuring Postfix to relay email through your Gmail account on OS X Leopard'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12578279853506273956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6510832.post-4118072625826013516</id><published>2008-06-06T17:20:00.000-07:00</published><updated>2008-06-06T17:29:16.729-07:00</updated><title type='text'>Configure Postfix to launch at startup on OS X Leopard</title><content type='html'>Mac OS X Leopard comes with the Postfix SMTP server built-in.  You can easily turn it on or off using "sudo postfix start" or "sudo postfix stop".&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you'd like the postfix server to always run at startup, simply do the following:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;pre&gt;sudo launchctl load -w /System/Library/LaunchDaemons/org.postfix.master.plist&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;After you do, verify that it's running by doing a "telnet localhost 25" and checking that you get a response from Postfix.  I verified these instructions on OS X 10.5.3, but it should be the same for all Leopard variants.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;References&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;"man launchctl" from the terminal&lt;/li&gt;&lt;li&gt;&lt;a href="http://diymacserver.com/installing-the-mailserver/the-basic-mailserver-on-leopard/starting-your-basic-mailserver-on-leopard/"&gt;http://diymacserver.com/installing-the-mailserver/the-basic-mailserver-on-leopard/starting-your-basic-mailserver-on-leopard/&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6510832-4118072625826013516?l=emmby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmby.blogspot.com/feeds/4118072625826013516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6510832&amp;postID=4118072625826013516' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/4118072625826013516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/4118072625826013516'/><link rel='alternate' type='text/html' href='http://emmby.blogspot.com/2008/06/configure-postfix-to-launch-at-startup.html' title='Configure Postfix to launch at startup on OS X Leopard'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12578279853506273956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6510832.post-8330028789739940722</id><published>2008-05-13T17:16:00.001-07:00</published><updated>2008-05-13T17:33:32.535-07:00</updated><title type='text'>Installing Python PIL on Mac OS X 10.5.2 Leopard</title><content type='html'>For some reason, the easy_install of python's PIL 1.1.6 imaging library didn't work for me or my coworkers when using Django.&lt;br /&gt;&lt;br /&gt;After much trial-and-error using the various builds out there, the solution I found that works best for me was to use the one that comes with &lt;a href="http://www.macports.org/"&gt;MacPorts&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;After installing MacPorts, do the following:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;sudo /opt/local/bin/port install py25-pil&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Once the installation is complete, you'll need to supplement your PYTHONPATH with the location of the python libraries that macport uses.  In your /etc/profile or ~/.profile, add the following line:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;export PYTHONPATH=/opt/local/lib/python2.5/site-packages&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;That should be it!  Works like a charm for me.  Note that these instructions are for python 2.5.  If you want python 2.4, you can probably install the py-pil package instead (although I haven't tried this myself)&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Resources&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.martin-geber.com/weblog/2007/08/22/problems-installing-easy_install-pil/"&gt;http://www.martin-geber.com/weblog/2007/08/22/problems-installing-easy_install-pil/&lt;/a&gt;: Installation succeeded, but for some reason Django still couldn't find the PIL library.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://effbot.org/zone/pil-index.htm"&gt;http://effbot.org/zone/pil-index.htm&lt;/a&gt;: In addition to installing the PIL dmg, you also have to install their python2.5 dmg, which I wasn't keen to do.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://paul.annesley.cc/articles/2007/11/19/django-and-python-imaging-library-pil-on-leopard"&gt;http://paul.annesley.cc/articles/2007/11/19/django-and-python-imaging-library-pil-on-leopard&lt;/a&gt;: If you like building from source, this solution may work for you.  I prefer using packages since it makes deinstallation easier.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://py25-pil.darwinports.com/"&gt;http://py25-pil.darwinports.com/&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://py-pil.darwinports.com/"&gt;http://py-pil.darwinports.com/&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6510832-8330028789739940722?l=emmby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmby.blogspot.com/feeds/8330028789739940722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6510832&amp;postID=8330028789739940722' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/8330028789739940722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/8330028789739940722'/><link rel='alternate' type='text/html' href='http://emmby.blogspot.com/2008/05/installing-python-pil-on-mac-os-x-1052.html' title='Installing Python PIL on Mac OS X 10.5.2 Leopard'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12578279853506273956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6510832.post-128044060437728932</id><published>2008-05-07T11:56:00.001-07:00</published><updated>2008-05-07T12:39:54.741-07:00</updated><title type='text'>Using Cruise Control with Django</title><content type='html'>I wanted to set up a Continuous Integration server for our project, and after doing a quick tour of the available options I settled on Cruise Control as one of the better options, even though it doesn't have any python-specific features.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We use mercurial as our source control system, so this example uses mercurial, but resources abound for configuring cruise-control with CVS and SVN if you're using one of those SCCS systems.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Download and install Cruise Control as per &lt;a href="http://cruisecontrol.sourceforge.net/gettingstartedsourcedist.html"&gt;http://cruisecontrol.sourceforge.net/gettingstartedsourcedist.html&lt;/a&gt;.  I used the binary distribution, the latest being 2.7.2 as of this writing.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Creating and populate a work directory as per the &lt;a href="http://cruisecontrol.sourceforge.net/gettingstartedsourcedist.html#Running_the_Build_Loop"&gt;Running the Build Loop &lt;/a&gt;instructions.  They make the sensible recommendation to keep your working directory separate from your Cruise Control installation directory.  Mine is called "work":&lt;br /&gt;&lt;pre&gt;mkdir -p work/checkout work/logs work/artifacts&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Check out your project under work/checkout.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;DO NOT bother creating a delegating build script as per the Running the Build Loop instructions.  This is only used if you're using Ant to control your build.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;In your work directory, create config.xml, replacing MY_PROJECT_1 with your django root directory.  The following configuration will run "python manage.py test" whenever there are new changes to pull from your mercurial repository.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;cruisecontrol&gt;&lt;br /&gt;&amp;lt;project name="MY_PROJECT_1" buildafterfailed="true"&gt;&lt;br /&gt;&amp;lt;listeners&gt;&lt;br /&gt;&amp;lt;currentbuildstatuslistener file="logs/MY_PROJECT_1/status.txt"&gt;&lt;br /&gt;&amp;lt;/currentbuildstatuslistener&gt;&lt;br /&gt;&amp;lt;/listeners&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Bootstrappers are run every time the build runs,         *before* the modification checks --&gt;&lt;br /&gt;&amp;lt;bootstrappers&gt;&lt;br /&gt;  &amp;lt;mercurialbootstrapper localworkingcopy="checkout/MY_PROJECT_1"&gt;&lt;br /&gt;  &amp;lt;/mercurialbootstrapper&gt;&lt;br /&gt;&amp;lt;/bootstrappers&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Defines where cruise looks for changes, to decide          whether to run the build --&gt;&lt;br /&gt;&amp;lt;modificationset quietperiod="10"&gt;&lt;br /&gt;&amp;lt;mercurial localworkingcopy="checkout/MY_PROJECT_1"&gt;&lt;br /&gt;&amp;lt;/mercurial&gt;&lt;br /&gt;&amp;lt;/modificationset&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Configures the actual build loop, how often and which          build file/target --&gt;&lt;br /&gt;&amp;lt;schedule interval="60"&gt;&lt;br /&gt;  &amp;lt;exec workingdir="checkout/MY_PROJECT_1" command="python" args="manage.py test"&gt;&lt;br /&gt;  &amp;lt;/exec&gt;&lt;br /&gt;&amp;lt;/schedule&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- directory to write build logs to --&gt;&lt;br /&gt;&amp;lt;log logdir="logs/MY_PROJECT_1"&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Publishers are run *after* a build completes --&gt;&lt;br /&gt;&amp;lt;publishers&gt;&lt;br /&gt;&amp;lt;/publishers&gt;&lt;br /&gt;&amp;lt;/log&gt;&lt;br /&gt;&amp;lt;/project&gt;&lt;br /&gt;&amp;lt;/cruisecontrol&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;If you're using mercurial, mercurialbootstrapper won't allow you to specify a username or password for hg pull, so edit the .hg/hgrc in your checked out directory to add authentication to your url.  Note that this means your password is stored in plain text on your local machine and will be exposed when doing pulls across the network.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[paths]&lt;br /&gt;default = https://username:password@host/path&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Optionally copy dashboard-config.xml from the Cruise Control install directory into your work directory.  This'll allow you to view the dashboard at http://yourhost:yourport/dashboard.  It's pretty nice, I recommend it.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Start up your server FROM YOUR WORK DIRECTORY. &lt;br /&gt;&lt;pre&gt;&lt;br /&gt;cd work&lt;br /&gt;&amp;lt;cruise-control-install-dir&gt;/cruisecontrol.sh&lt;/pre&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If everything went according to plan, you should now be able to view your builds at http://localhost:8080/dashboard.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Currently, Cruise Control doesn't seem to recognize the django test output format, so it won't show individual testcases.  However, if your tests pass the build will succeed, and if your test fail the build will fail.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Resources&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://cruisecontrol.sourceforge.net/"&gt; http://cruisecontrol.sourceforge.net/&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6510832-128044060437728932?l=emmby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmby.blogspot.com/feeds/128044060437728932/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6510832&amp;postID=128044060437728932' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/128044060437728932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/128044060437728932'/><link rel='alternate' type='text/html' href='http://emmby.blogspot.com/2008/05/using-cruise-control-with-django.html' title='Using Cruise Control with Django'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12578279853506273956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6510832.post-8219266592046612000</id><published>2008-04-23T17:17:00.001-07:00</published><updated>2008-04-23T18:20:05.266-07:00</updated><title type='text'>X11 and Spaces on Mac OS X 10.5.2 Leopard</title><content type='html'>If you're having difficulties running X11 applications with Spaces.app, you may want to try upgrading to the &lt;a href="http://trac.macosforge.org/projects/xquartz"&gt;latest X11.app&lt;/a&gt; offered by the XQuartz community.  In particular, I was having a problem where my Wing IDE (an X11 app) would "steal" the focus and jump to the X11 space at random moments while I was working in other applications.  No more!&lt;br /&gt;&lt;br /&gt;Apple basically ships XQuartz's X11 as their own official X11.app, and the one included in 10.5.2 is "somewhere between the 2.1.1 and 2.1.2", whereas the XQuartz version is now up to 2.2.0.1 as of this writing.&lt;br /&gt;&lt;br /&gt;Note that, as per the installation instructions, you may need to logout after upgrading.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6510832-8219266592046612000?l=emmby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmby.blogspot.com/feeds/8219266592046612000/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6510832&amp;postID=8219266592046612000' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/8219266592046612000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/8219266592046612000'/><link rel='alternate' type='text/html' href='http://emmby.blogspot.com/2008/04/x11-and-spaces-on-mac-os-x-1052-leopard.html' title='X11 and Spaces on Mac OS X 10.5.2 Leopard'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12578279853506273956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6510832.post-7762306666626831604</id><published>2008-04-22T19:18:00.001-07:00</published><updated>2008-04-22T19:33:07.437-07:00</updated><title type='text'>How to set up multiple mysql instances on Mac OS X 10.5 Leopard</title><content type='html'>Turns out that it's fairly simple, really.  The basic idea is that you edit your /etc/my.cnf to switch to using the MySQL Instance Manager and then to set up a second instance using a different socket, port, and data directory.&lt;br /&gt;&lt;br /&gt;The following steps assume that you've got a standard MySQL 5.1.x for Mac OS X installation.  In other words, you probably installed the mysql-*.pkg and the MySQLStartupItem.pkg from the dmg available on the MySQL website.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Verify everything is working in your existing instance, however you want to do it.  For me, I do a quick check by doing:&lt;br /&gt;&lt;pre&gt;echo "show databases" | mysql -u root -p&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Stop your mysql server (sudo /Library/StartupItems/MySQLCOM/MySQLCOM stop) then, switch to using MySQL's instance manager by adding the following two lines to the top of your /etc/my.cnf:&lt;br /&gt;&lt;pre&gt;[mysql.server]&lt;br /&gt;use-manager&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Start your mysql server (... MySQLCOM start), then verify everything is working and that you can still connect to your databases.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Stop the server again, then add a second instance to my.cnf, being sure to set socket, port, and datadir.  You can pick whatever you want, as long as it's not the values used by your other instance (which default to 3306, /tmp/mysql.sock, and /usr/local/mysql/data, respectively):&lt;br /&gt;&lt;pre&gt;[mysqld2]&lt;br /&gt;socket=/tmp/mysql.sock2&lt;br /&gt;port=3307&lt;br /&gt;datadir=/usr/local/mysql/data2&lt;pre&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Set up the second data directory.  If you already have one then you can skip this step. Otherwise, make sure you specify the same user that owns your /usr/local/mysql/data dir when creating your second data directory ( _mysql in my case, and probably in yours)&lt;br /&gt;&lt;pre&gt;cd /usr/local/mysql&lt;br /&gt;sudo scripts/mysql_install_db --user=_mysql --datadir=/usr/local/mysql/data2&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Start it up (... MySQLCOM start) and test it out!&lt;br /&gt;&lt;pre&gt;echo "show databases" | mysql -u root -p&lt;br /&gt;echo "show databases" | mysql --sock=/tmp/mysql.sock2&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;If everything went according to plan, you should now have two mysql instances that are each accessible on their own socket or port.&lt;br /&gt;&lt;br /&gt;Here's my complete my.cnf file for my two instances:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;[mysql.server]&lt;br /&gt;use-manager&lt;br /&gt;&lt;br /&gt;[mysqld]&lt;br /&gt;&lt;br /&gt;[mysqld2]&lt;br /&gt;socket=/tmp/mysql.sock2&lt;br /&gt;port=3307&lt;br /&gt;datadir=/usr/local/mysql/data2&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;br /&gt;1. &lt;a href="http://dev.mysql.com/doc/refman/5.0/en/instance-manager-startup-process.html"&gt;http://dev.mysql.com/doc/refman/5.0/en/instance-manager-startup-process.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6510832-7762306666626831604?l=emmby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmby.blogspot.com/feeds/7762306666626831604/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6510832&amp;postID=7762306666626831604' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/7762306666626831604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/7762306666626831604'/><link rel='alternate' type='text/html' href='http://emmby.blogspot.com/2008/04/how-to-set-up-multiple-mysql-instances.html' title='How to set up multiple mysql instances on Mac OS X 10.5 Leopard'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12578279853506273956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6510832.post-7452841349012851740</id><published>2006-12-27T16:18:00.000-08:00</published><updated>2006-12-27T16:35:50.025-08:00</updated><title type='text'>Mac - Sprint RAZR with iSync and DUN</title><content type='html'>The Sprint RAZR v3m is a great phone, but it's not officially supported by Apple's bluetooth software yet.  This means that it won't work with iSync (to sync contacts, calendar entries, etc), nor will it work for Dial-up Networking (DUN) with Sprint.&lt;br /&gt;&lt;br /&gt;After much failed experimentation I was able to get my RAZR to work with both iSync and DUN.  Note that to use DUN you must pay Sprint the appropriate monthly fee.  DUN won't work if you don't have this feature enabled for your Sprint account, but you can still use iSync regardless.&lt;br /&gt;&lt;br /&gt;Before you begin&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Update to the latest version of iSync.  As of this writing it's version iSync 2.3 500.8.&lt;/li&gt;&lt;li&gt;Update your RAZR's firmware.  Go to Settings -&amp;gt; Phone Info -&amp;gt; Update Phone SW.  As of this writing the latest is 24.2_00.37.00R&lt;/li&gt;&lt;/ol&gt;Edit &lt;span style="font-family:monospace;font-size:9pt;"&gt;/Applications/iSync.app/Contents/PlugIns/ApplePhoneConduit.syncdevice/Contents/PlugIns/PhoneModelsSync.phoneplugin/Contents/Resources/MetaClasses.plist&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Add the following block of XML to the file after the first &amp;lt;dict&amp;gt; tag (on line 5 in my file, your mileage may vary)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:monospace;font-size:9pt;"&gt;&lt;br /&gt;&amp;lt;!-- from http://emmby.blogspot.com/ --&amp;gt;&lt;br /&gt;&amp;lt;key&amp;gt;com.motorola.razorV3m&amp;lt;/key&amp;gt;&lt;br /&gt;	&amp;lt;dict&amp;gt;&lt;br /&gt;		&amp;lt;key&amp;gt;Identification&amp;lt;/key&amp;gt;&lt;br /&gt;		&amp;lt;dict&amp;gt;&lt;br /&gt;			&amp;lt;key&amp;gt;com.apple.gmi+gmm&amp;lt;/key&amp;gt;&lt;br /&gt;			&amp;lt;array&amp;gt;&lt;br /&gt;			  &amp;lt;string&amp;gt;Motorola CE, Copyright 2000+Motorola V3m-Sprint Phone&amp;lt;/string&amp;gt;&lt;br /&gt;			&amp;lt;/array&amp;gt;&lt;br /&gt;		&amp;lt;/dict&amp;gt;&lt;br /&gt;		&amp;lt;key&amp;gt;InheritsFrom&amp;lt;/key&amp;gt;&lt;br /&gt;		&amp;lt;array&amp;gt;&lt;br /&gt;			&amp;lt;string&amp;gt;com.motorola.usb-bt.0x22B8/0x4902&amp;lt;/string&amp;gt;&lt;br /&gt;		&amp;lt;/array&amp;gt;&lt;br /&gt;		&amp;lt;key&amp;gt;Services&amp;lt;/key&amp;gt;&lt;br /&gt;		&amp;lt;array&amp;gt;&lt;br /&gt;			&amp;lt;dict&amp;gt;&lt;br /&gt;				&amp;lt;key&amp;gt;ServiceName&amp;lt;/key&amp;gt;&lt;br /&gt;				&amp;lt;string&amp;gt;com.apple.model&amp;lt;/string&amp;gt;&lt;br /&gt;				&amp;lt;key&amp;gt;ServiceProperties&amp;lt;/key&amp;gt;&lt;br /&gt;				&amp;lt;dict&amp;gt;&lt;br /&gt;					&amp;lt;key&amp;gt;ModelIcon&amp;lt;/key&amp;gt;&lt;br /&gt;					&amp;lt;string&amp;gt;MOTV3-black.tiff&amp;lt;/string&amp;gt;&lt;br /&gt;					&amp;lt;key&amp;gt;ModelName&amp;lt;/key&amp;gt;&lt;br /&gt;					&amp;lt;string&amp;gt;NC-V3m&amp;lt;/string&amp;gt;&lt;br /&gt;				&amp;lt;/dict&amp;gt;&lt;br /&gt;			&amp;lt;/dict&amp;gt;&lt;br /&gt;			&amp;lt;dict&amp;gt;&lt;br /&gt;				&amp;lt;key&amp;gt;ServiceName&amp;lt;/key&amp;gt;&lt;br /&gt;				&amp;lt;string&amp;gt;com.apple.synchro&amp;lt;/string&amp;gt;&lt;br /&gt;				&amp;lt;key&amp;gt;ServiceProperties&amp;lt;/key&amp;gt;&lt;br /&gt;				&amp;lt;dict&amp;gt;&lt;br /&gt;					&amp;lt;key&amp;gt;OnlySupportASCIIChar&amp;lt;/key&amp;gt;&lt;br /&gt;					&amp;lt;true/&amp;gt;&lt;br /&gt;					&amp;lt;key&amp;gt;deleteContactBeforeModifying&amp;lt;/key&amp;gt;&lt;br /&gt;					&amp;lt;true/&amp;gt;&lt;br /&gt;					&amp;lt;key&amp;gt;stringEncoding&amp;lt;/key&amp;gt;&lt;br /&gt;					&amp;lt;string&amp;gt;UCS2&amp;lt;/string&amp;gt;&lt;br /&gt;				&amp;lt;/dict&amp;gt;&lt;br /&gt;			&amp;lt;/dict&amp;gt;&lt;br /&gt;		&amp;lt;/array&amp;gt;&lt;br /&gt;	&amp;lt;/dict&amp;gt;&lt;br /&gt;	&amp;lt;key&amp;gt;com.motorola.usb-bt.0x22B8/0x2A64&amp;lt;/key&amp;gt;&lt;br /&gt;	&amp;lt;dict&amp;gt;&lt;br /&gt;		&amp;lt;key&amp;gt;Identification&amp;lt;/key&amp;gt;&lt;br /&gt;		&amp;lt;dict&amp;gt;&lt;br /&gt;			&amp;lt;key&amp;gt;com.apple.usb.vendorid-modelid&amp;lt;/key&amp;gt;&lt;br /&gt;			&amp;lt;string&amp;gt;0x22B8/0x2A64&amp;lt;/string&amp;gt;&lt;br /&gt;		&amp;lt;/dict&amp;gt;&lt;br /&gt;		&amp;lt;key&amp;gt;InheritsFrom&amp;lt;/key&amp;gt;&lt;br /&gt;		&amp;lt;array&amp;gt;&lt;br /&gt;			&amp;lt;string&amp;gt;family.com.motorola.p2k.usb-bt&amp;lt;/string&amp;gt;&lt;br /&gt;		&amp;lt;/array&amp;gt;&lt;br /&gt;		&amp;lt;key&amp;gt;Services&amp;lt;/key&amp;gt;&lt;br /&gt;		&amp;lt;array/&amp;gt;&lt;br /&gt;	&amp;lt;/dict&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;At this point I highly recommend rebooting your computer.&lt;br /&gt;&lt;br /&gt;After the restart you should be able to pair your RAZR to your Mac and both iSync and DUN should show up in the list of available services.  Pairing your bluetooth phone to your Mac is outside of the scope of this doc, but check Google or the references below for instructions.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.niskala.org/images/bt-dun.png" onclick="window.open('http://www.niskala.org/images/bt-dun.png','popup','width=647,height=454,scrollbars=no,resizable=yes,toolbar=no,directories=no,location=no,menubar=no,status=yes,left=0,top=0');return false"&gt;&lt;img src="http://www.niskala.org/images/bt-dun.png" height="100" width="142" border="1" hspace="4" vspace="4" alt="Bt-Dun" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Many thanks to vibesaw at whopack for finding the correct entry to use.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://whopack.com/"&gt;http://whopack.com/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.miguelito.org/mig-archives/000275.html"&gt;http://www.miguelito.org/mig-archives/000275.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6510832-7452841349012851740?l=emmby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmby.blogspot.com/feeds/7452841349012851740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6510832&amp;postID=7452841349012851740' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/7452841349012851740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/7452841349012851740'/><link rel='alternate' type='text/html' href='http://emmby.blogspot.com/2006/12/mac-sprint-razr-with-isync-and-dun.html' title='Mac - Sprint RAZR with iSync and DUN'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12578279853506273956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6510832.post-330357553398416708</id><published>2006-12-27T15:49:00.001-08:00</published><updated>2006-12-27T15:53:54.247-08:00</updated><title type='text'>SSH - Warning: No xauth data; using fake authentication data for X11
forwarding</title><content type='html'>When you ssh to another server do you run into the following warning message?&lt;br /&gt;&lt;p style="text-indent:20pt;"&gt;&lt;span style="font-family:monospace;font-size:9pt;"&gt;Warning: No xauth data; using fake authentication data for X11 forwarding&lt;/span&gt;&lt;/p&gt;It's nothing serious but it can be annoying if you're OCD like I am.  It's simply telling you that you don't have your ~/.Xauthority file set up properly.&lt;br /&gt;&lt;br /&gt;All you need to do to fix it is create a magic cookie using mcookie if you have it.&lt;br /&gt;&lt;p style="text-indent:20pt;"&gt;&lt;span style="font-family:monospace;font-size:9pt;"&gt;mcookie | sed -e 's/^/add :0 . /' | xauth -q&lt;/span&gt;&lt;/p&gt;If you're a mac user like me you won't have mcookie.  Instead, just do the following:&lt;br /&gt;&lt;p style="text-indent:20pt;"&gt;&lt;span style="font-family:monospace;font-size:9pt;"&gt;dd if=/dev/random count=1 | openssl md5 | sed -e 's/^/add :0 . /' | xauth -q&lt;/span&gt;&lt;/p&gt;Then make sure the cookie creation was successful&lt;br /&gt;&lt;p style="text-indent:20pt;"&gt;&lt;span style="font-family:monospace;font-size:9pt;"&gt;&amp;gt; xauth list&lt;br /&gt;mc02136d0.tmodns.net/unix:0  MIT-MAGIC-COOKIE-1 ...&lt;/span&gt;&lt;/p&gt;The next time you ssh to a remote machine you won't see the dreaded warning.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://tldp.org/HOWTO/Remote-X-Apps-6.html"&gt;http://tldp.org/HOWTO/Remote-X-Apps-6.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cygwin.com/ml/cygwin-xfree/2004-10/msg00236.html"&gt;http://www.cygwin.com/ml/cygwin-xfree/2004-10/msg00236.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6510832-330357553398416708?l=emmby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmby.blogspot.com/feeds/330357553398416708/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6510832&amp;postID=330357553398416708' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/330357553398416708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/330357553398416708'/><link rel='alternate' type='text/html' href='http://emmby.blogspot.com/2006/12/ssh-warning-no-xauth-data-using-fake.html' title='SSH - Warning: No xauth data; using fake authentication data for X11&#xA;forwarding'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12578279853506273956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6510832.post-8465021920802904480</id><published>2006-12-27T14:46:00.000-08:00</published><updated>2008-12-01T17:33:22.936-08:00</updated><title type='text'>Mac - SSH Agent Redux</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;[ Since publishing this post, Mac OS X Leopard 10.5 was released with built-in ssh-agent support.  Don't bother with the solution outlined below!  Instead, visit this post for how to set up automatic ssh logins using Leopard: &lt;/span&gt;&lt;a href="http://ormset.no/wordpress/2007/10/28/leopard-finally-supporting-ssh-agent-at-login/"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;http://ormset.no/wordpress/2007/10/28/leopard-finally-supporting-ssh-agent-at-login/&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;In &lt;a href="http://emmby.blogspot.com/2006/06/mac-setting-up-ssh-agent.html"&gt;Mac - Setting up SSH agent authentication&lt;/a&gt; I outlined a few options to set up automatic ssh authentication on a Mac.&lt;br /&gt;&lt;br /&gt;Since then I've discovered an even better solution in the form of a Cocoa application that integrates with the Apple Keychain.  And since it's capable of running either in the Dock or in the Status Bar you can configure it to stay completely out of your way.&lt;br /&gt;&lt;br /&gt;I have mine configured to launch at startup (via the Accounts -&amp;gt; Login Items Preferences Pane in System Preferences) and to run only in the Status Bar.&lt;br /&gt;&lt;br /&gt;Check it out and consider donating.  It's called &lt;a href="http://www.sshkeychain.org/"&gt;SSHKeychain&lt;/a&gt; by Ambrero Software&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6510832-8465021920802904480?l=emmby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmby.blogspot.com/feeds/8465021920802904480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6510832&amp;postID=8465021920802904480' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/8465021920802904480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/8465021920802904480'/><link rel='alternate' type='text/html' href='http://emmby.blogspot.com/2006/12/mac-ssh-agent-redux.html' title='Mac - SSH Agent Redux'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12578279853506273956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6510832.post-115535734577422774</id><published>2006-08-11T21:27:00.000-07:00</published><updated>2006-12-27T14:54:36.168-08:00</updated><title type='text'>xargs: using xargs -0 with arbitrary input</title><content type='html'>Sure, we all know how to use xargs -0 when the input is delimited by \0, but what if our input to xargs contains spaces and is delimited by returns?&lt;br /&gt;eg. here's the contents of files.txt&lt;br /&gt;&lt;blockquote&gt;This Filename Contains Spaces.htm&lt;br /&gt;This one too.txt&lt;br /&gt;stupid fuckers.doc&lt;/blockquote&gt;You can use tr to convert newlines to nulls.  For example,&lt;br /&gt;&lt;blockquote&gt;cat files.txt | tr '\n' '\0' | xargs -0 echo&lt;/blockquote&gt;will give each line in files.txt to echo as a separate argument, whether that line contains spaces or not.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6510832-115535734577422774?l=emmby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmby.blogspot.com/feeds/115535734577422774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6510832&amp;postID=115535734577422774' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/115535734577422774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/115535734577422774'/><link rel='alternate' type='text/html' href='http://emmby.blogspot.com/2006/08/xargs-using-xargs-0-with-arbitrary.html' title='xargs: using xargs -0 with arbitrary input'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12578279853506273956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6510832.post-115432149628425090</id><published>2006-07-30T21:42:00.000-07:00</published><updated>2006-12-27T14:55:48.386-08:00</updated><title type='text'>openssl: "telnet" with SSL</title><content type='html'>If you're accustomed to being able to manually send HTTP commands directly to a server's http port to debug server issues, using SSL (https) can be a pain since it's very difficult for human minds to encrypt text on the fly.&lt;br /&gt;There are SSL-aware versions of telnet out there, but chances are your system doesn't have them installed.&lt;br /&gt;&lt;br /&gt;Luckily, openssl has a way to do this already (and you probably have it installed).  "man s_client" for more info, but the gist of it is that you can type "openssl s_client -connect host:port" and start typing away whatever commands you want.&lt;br /&gt;&lt;br /&gt;eg.&lt;br /&gt;&lt;blockquote&gt;&amp;gt; &lt;span style="color:#3366ff;"&gt;&lt;strong&gt;openssl s_client -quiet -connect www.google.com:443&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;depth=1 /C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA&lt;br /&gt;verify error:num=20:unable to get local issuer certificate&lt;br /&gt;verify return:0&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;&lt;strong&gt;GET /&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;&amp;lt;meta http-equiv="content-type" content="text/html;charset=utf-8"&amp;gt;&lt;br /&gt;&amp;lt;TITLE&amp;gt;302 Moved&amp;lt;/TITLE&amp;gt;&amp;lt;/HEAD&amp;gt;&amp;lt;BODY&amp;gt;&lt;br /&gt;&amp;lt;H1&amp;gt;302 Moved&amp;lt;/H1&amp;gt;&lt;br /&gt;The document has moved&lt;br /&gt;&amp;lt;A HREF="http://www.google.com"&amp;gt;here&amp;lt;/A&amp;gt;.&lt;br /&gt;&amp;lt;/BODY&amp;gt;&amp;lt;/HTML&amp;gt;&lt;br /&gt;read:errno=0&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6510832-115432149628425090?l=emmby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmby.blogspot.com/feeds/115432149628425090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6510832&amp;postID=115432149628425090' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/115432149628425090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/115432149628425090'/><link rel='alternate' type='text/html' href='http://emmby.blogspot.com/2006/07/openssl-telnet-with-ssl.html' title='openssl: &amp;quot;telnet&amp;quot; with SSL'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12578279853506273956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6510832.post-115110887390890695</id><published>2006-06-23T17:23:00.000-07:00</published><updated>2006-06-23T17:33:18.250-07:00</updated><title type='text'>GNU Screen - disable xterm alternate screen</title><content type='html'>By default, if you run gnu screen in an xterm (or any "alternate screen buffer"-capable terminal), any text that scrolls off the top of the screen will not be visible if you try to scroll back in your host terminal.&lt;br/&gt;&lt;br/&gt;You can of course use the gnu screen scroll commands to scroll around in the virtual terminal, but i find that using my mac's scrollbars is much more convenient.&lt;br/&gt;&lt;br/&gt;The easiest way to disable the alternate screen buffer in gnu screen, you can put the following in your ~/.screen.rc file:&lt;br/&gt;&lt;span style="font-family:courier new;"&gt;&lt;br/&gt;# Disable xterm alternate screen buffer&lt;br/&gt;termcapinfo * ti@:te@ &lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;br/&gt;The "termcapinfo" command is used to tweak host and virtual terminal settings.   "ti" and "te" are termcap entries used to enter and exit the alternate buffer (man termcap or terminfo for more details).  The @ symbol tells screen to turn off the specified entries.&lt;br/&gt;&lt;br/&gt;Note that if you do this, your alternate buffer will be disabled in both your host and virtual terminals.  So if previously you used vi to edit a file and the contents of the file disappeared when you quit vi, this will no longer be the case. &lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6510832-115110887390890695?l=emmby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmby.blogspot.com/feeds/115110887390890695/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6510832&amp;postID=115110887390890695' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/115110887390890695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/115110887390890695'/><link rel='alternate' type='text/html' href='http://emmby.blogspot.com/2006/06/gnu-screen-disable-xterm-alternate.html' title='GNU Screen - disable xterm alternate screen'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12578279853506273956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6510832.post-115042095231710694</id><published>2006-06-15T18:21:00.000-07:00</published><updated>2006-12-27T14:57:46.571-08:00</updated><title type='text'>Vim 7.0 - Edit jar files from within vim</title><content type='html'>Cross-posted to: &lt;a href="http://www.vim.org/tips/tip.php?tip_id=1259"&gt;http://www.vim.org/tips/tip.php?tip_id=1259&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Jar files are really just zip files, and you can browse them from within vim simply by treating them the same as vim treats zip files (note to the vim maintainers: can we add these to the default distribution?)&lt;br /&gt;&lt;br /&gt;If you want to figure out how to do this yourself, simply read this section of the help docs:  http://vimdoc.sourceforge.net/htmldoc/filetype.html#new-filetype and read zipPlugin.vim in your runtime/plugins directory.&lt;br /&gt;&lt;br /&gt;For those who are impatient, the skinny version is to place the following text into a file named ~/.vim/ftdetect/jar.vim (if you're on unix):&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;######################## FILE START #####################&lt;br /&gt;au BufReadCmd   *.jar,*.war,*.ear,*.sar,*.rar        call zip#Browse(expand(""))&lt;br /&gt;######################## FILE END #####################&lt;br /&gt;&lt;/pre&gt;That's it!  If you vim a jar file now, you'll be able to browse it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6510832-115042095231710694?l=emmby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmby.blogspot.com/feeds/115042095231710694/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6510832&amp;postID=115042095231710694' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/115042095231710694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/115042095231710694'/><link rel='alternate' type='text/html' href='http://emmby.blogspot.com/2006/06/vim-70-edit-jar-files-from-within-vim.html' title='Vim 7.0 - Edit jar files from within vim'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12578279853506273956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6510832.post-114954151799350757</id><published>2006-06-05T14:03:00.000-07:00</published><updated>2006-12-27T15:01:01.759-08:00</updated><title type='text'>Mac - Setting up SSH agent authentication</title><content type='html'>As far as I can tell, there are three main ways to use ssh-agent with your Mac.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Use the "SSH Agent" cocoa app&lt;/li&gt;&lt;li&gt;Write your own script to run a single ssh-agent on a known socket&lt;/li&gt;&lt;li&gt;Use gentoo linux's "keychain" app (available in darwinports)&lt;/li&gt;&lt;/ol&gt;The first option is to use the Mac SSH Agent from http://www.phil.uu.nl/~xges/ssh/, which works fine but takes up some space on your dock and also consumes a somewhat non-trivial amount of memory.  It actually works pretty well.  My biggest beef with is is that I always end up accidentally clicking on it in the dock and I have to wait while it brings some 600+ megs of itself into memory.  Under normal usage only about 11 megs stay resident.&lt;br /&gt;&lt;br /&gt;Alternately, you can write your own script to start up a single instance of your ssh-agent in your .bashrc, use a known socket, and set up Mac environment variables to for the three SSH_* environment variables.  Mac environment variables can be set up as described here &lt;a href="http://wiki.lyx.org/Mac/Environment"&gt;http://wiki.lyx.org/Mac/Environment&lt;/a&gt;, and you can use the following in your environment.plist (change emmby to your username):&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:monospace;"&gt;&amp;lt;dict&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;key&amp;gt;SSH_AUTH_SOCK&amp;lt;/key&amp;gt;&lt;br /&gt;&amp;lt;string&amp;gt;/tmp/emmby-sshagent/SSHAuthSock&amp;lt;/string&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;/dict&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;Finally, this tip using gentoo keychain seems to work quite well for me: &lt;a href="http://www.macosxhints.com/article.php?story=20011128174701140"&gt;http://www.macosxhints.com/article.php?story=20011128174701140&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The keychain utility is available from darwin ports:  just "&lt;span style="font-family:monospace;"&gt;port install keychain&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;If you "man keychain" you'll get more information about how to use it.  As per the manpage, I did the following in my .profile (adding the -q quiet option):&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:monospace;"&gt;# Set up ssh-agent using keychain&lt;br /&gt;host=`uname -n`&lt;br /&gt;keychain -q ~/.ssh/identity ~/.ssh/id_dsa&lt;br /&gt;[ -f $HOME/.keychain/$host-sh ] &amp;#38;&amp;#38; . $HOME/.keychain/$host-sh&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;Note that the advantage of using the "SSH Agent" cocoa-based app is that it will use your Mac Keychain to authenticate you so you will never need to type your ssh passphrase.  Another advantage is that if you have any non-Terminal applications that can benefit from ssh-agent authentication (I can't think of any right now), they will authenticate you seemlessly using "SSH Agent" but not using gentoo keychain.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6510832-114954151799350757?l=emmby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmby.blogspot.com/feeds/114954151799350757/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6510832&amp;postID=114954151799350757' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/114954151799350757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/114954151799350757'/><link rel='alternate' type='text/html' href='http://emmby.blogspot.com/2006/06/mac-setting-up-ssh-agent.html' title='Mac - Setting up SSH agent authentication'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12578279853506273956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6510832.post-114490626608806746</id><published>2006-04-12T22:31:00.000-07:00</published><updated>2006-04-12T22:34:17.046-07:00</updated><title type='text'>Google Calendar - Now Available</title><content type='html'>&lt;p&gt;&lt;a href="http://calendar.google.com"&gt;http://calendar.google.com&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img height="638" style="margin:5px;" width="725" alt="" src="http://www.niskala.org/images/GoogleCalendar.png" /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6510832-114490626608806746?l=emmby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmby.blogspot.com/feeds/114490626608806746/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6510832&amp;postID=114490626608806746' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/114490626608806746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/114490626608806746'/><link rel='alternate' type='text/html' href='http://emmby.blogspot.com/2006/04/google-calendar-now-available.html' title='Google Calendar - Now Available'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12578279853506273956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6510832.post-114127768327078297</id><published>2006-03-01T17:21:00.000-08:00</published><updated>2006-12-27T15:07:25.305-08:00</updated><title type='text'>Maven UpToDate and dots in property names</title><content type='html'>If you're having trouble using UpToDate in Maven, it turns out that maven 1.0.2 and/or Jexl/Jelly don't like periods in property names when using the UpToDate ant task.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;WRONG&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;pre&gt;&amp;lt;uptodate property="&lt;span style="color:#ff0006;text-decoration:line-through;"&gt;build.uptodate&lt;/span&gt;" targetfile="${maven.build.dir}/last.build"&amp;gt;&lt;br /&gt;&amp;lt;srcfiles dir="${maven.src.dir}" includes="**/*"/&amp;gt;&lt;br /&gt;&amp;lt;/uptodate&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;strong&gt;RIGHT&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;pre&gt;&amp;lt;uptodate property="build_uptodate" targetfile="${maven.build.dir}/last.build"&amp;gt;&lt;br /&gt;&amp;lt;srcfiles dir="${maven.src.dir}" includes="**/*"/&amp;gt;&lt;br /&gt;&amp;lt;/uptodate&amp;gt;&lt;br /&gt;&lt;/pre&gt;Just something to be aware of if your UpToDate targets don't seem to be working correctly.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6510832-114127768327078297?l=emmby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmby.blogspot.com/feeds/114127768327078297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6510832&amp;postID=114127768327078297' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/114127768327078297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/114127768327078297'/><link rel='alternate' type='text/html' href='http://emmby.blogspot.com/2006/03/maven-uptodate-and-dots-in-property.html' title='Maven UpToDate and dots in property names'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12578279853506273956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6510832.post-114107071305656072</id><published>2006-02-27T12:02:00.000-08:00</published><updated>2006-12-27T15:08:14.379-08:00</updated><title type='text'>SQL - Compute duration between two TIMESTAMPs</title><content type='html'>Do you want to compute the time between two SQL TIMESTAMP objects?  Try the following, replacing TS1 and TS2 with column containing the TIMESTAMP value.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:monospace;color:#000000;"&gt;(&lt;br /&gt;EXTRACT (DAY FROM TS2-TS1) * 24 * 60 * 60&lt;br /&gt;+ EXTRACT (HOUR FROM TS2-TS1) * 60 * 60&lt;br /&gt;+ EXTRACT (MINUTE FROM TS2-TS1) * 60&lt;br /&gt;+ EXTRACT (SECOND FROM TS2-TS1)&lt;br /&gt;) AS SEC_DURATION&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;I'm not 100% sure that it's not specific to Oracle, but I think it should work with most databases.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6510832-114107071305656072?l=emmby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmby.blogspot.com/feeds/114107071305656072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6510832&amp;postID=114107071305656072' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/114107071305656072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/114107071305656072'/><link rel='alternate' type='text/html' href='http://emmby.blogspot.com/2006/02/blog-post.html' title='SQL - Compute duration between two TIMESTAMPs'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12578279853506273956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6510832.post-114106232425271455</id><published>2006-02-27T09:44:00.000-08:00</published><updated>2006-12-27T15:08:52.108-08:00</updated><title type='text'>JUnit and Maven - LinkageError: loader constraints violated when linking</title><content type='html'>Today I ran into an error trying to run my JUnit (3.8.1) test for my spring (1.2.6) application from within Maven (1.0.2).  It looked like the following:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;Testsuite: com.carrieriq.sqp.collector.AppTest&lt;br /&gt;Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0.762 sec&lt;br /&gt;&lt;br /&gt;Testcase: testApp(com.carrieriq.sqp.collector.AppTest):      Caused an ERROR&lt;br /&gt;loader constraints violated when linking org/w3c/dom/Node class&lt;br /&gt;java.lang.LinkageError: loader constraints violated when linking org/w3c/dom/Node class&lt;br /&gt;        at org.springframework.beans.factory.xml.DefaultXmlBeanDefinitionParser.parseBeanDefinitions(DefaultXmlBeanDefinitionParser.java :294)&lt;br /&gt;        at org.springframework.beans.factory.xml.DefaultXmlBeanDefinitionParser.registerBeanDefinitions(DefaultXmlBeanDefinitionParser.java:191)&lt;br /&gt;        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:295)&lt;br /&gt;        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:223)&lt;br /&gt;        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:173)&lt;br /&gt;        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions (XmlBeanDefinitionReader.java:148)&lt;br /&gt;        at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java :126)&lt;br /&gt;        at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:142)&lt;br /&gt;        at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:113)&lt;br /&gt;&lt;/pre&gt;This error can happen when using earlier versions of JUnit (I believe anything before 3.8 or so) or when using later version of JUnit within maven.  A google search on the subject found a dated answer in the JUnit FAQ:&lt;br /&gt;&lt;br /&gt;The JUnit FAQ says:&lt;br /&gt;&lt;br /&gt;&lt;p style="text-indent:20pt;"&gt;&lt;em&gt;&lt;/p&gt;&lt;p style="text-indent:20pt;"&gt;&lt;/em&gt;&lt;/p&gt;&lt;pre&gt;Why do I get a LinkageError when using XML interfaces in my test?&lt;br /&gt;&lt;br /&gt;(Submitted by: Scott Stirling)&lt;br /&gt;&lt;br /&gt;The workaround as of JUnit 3.7 is to add org.w3c.dom.* and org.xml.sax.* to your excluded.properties.&lt;br /&gt;&lt;br /&gt;It's just a matter of time before this fix becomes incorporated into the released version of JUnit's excluded.properties, since JAXP is a standard part of JDK 1.4. It will be just like excluding org.omg.*. By the way, if you download the JUnit source from its Sourceforge CVS, you will find that these patterns have already been added to the default excluded.properties and so has a pattern for JINI. In fact, here is the current version in CVS, which demonstrates how to add exclusions to the list too:&lt;br /&gt;&lt;br /&gt;    #&lt;br /&gt;    # The list of excluded package paths for the TestCaseClassLoader&lt;br /&gt;    #&lt;br /&gt;    excluded.0=sun.*&lt;br /&gt;    excluded.1=com.sun.*&lt;br /&gt;    excluded.2=org.omg.*&lt;br /&gt;    excluded.3=javax.*&lt;br /&gt;    excluded.4=sunw.*&lt;br /&gt;    excluded.5=java.*&lt;br /&gt;    excluded.6=org.w3c.dom.*&lt;br /&gt;    excluded.7=org.xml.sax.*&lt;br /&gt;    excluded.8=net.jini.*&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;What isn't clear from the FAQ is that this problem was fixed by JUnit 3.8, and yet it can still happen when using JUnit from within Maven.&lt;br /&gt;&lt;br /&gt;To solve the problem within maven, make sure you fork a new JVM to run your junit tests:&lt;br /&gt;&lt;br /&gt;&lt;p style="text-indent:20pt;"&gt;&lt;em&gt;&lt;/p&gt;&lt;p style="text-indent:20pt;"&gt;&lt;/em&gt;&lt;/p&gt;&lt;pre&gt;in project.properties, add :&lt;br /&gt;------------------------------&lt;br /&gt;maven.junit.fork=true&lt;br /&gt;maven.compile.fork=true&lt;br /&gt;------------------------------&lt;br /&gt;to fork to distinct JVM.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Reference&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://mail-archives.apache.org/mod_mbox/jakarta-commons-user/200501.mbox/%3C000b01c5058b$ac6b8dd0$1f0ee352@marcr0onmovhxv%3E"&gt;http://mail-archives.apache.org/mod_mbox/jakarta-commons-user/200501.mbox/%3C000b01c5058b$ac6b8dd0$1f0ee352@marcr0onmovhxv%3E&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://junit.sourceforge.net/doc/faq/faq.htm#running_9"&gt;http://junit.sourceforge.net/doc/faq/faq.htm#running_9&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6510832-114106232425271455?l=emmby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmby.blogspot.com/feeds/114106232425271455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6510832&amp;postID=114106232425271455' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/114106232425271455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/114106232425271455'/><link rel='alternate' type='text/html' href='http://emmby.blogspot.com/2006/02/junit-and-maven-linkageerror-loader.html' title='JUnit and Maven - LinkageError: loader constraints violated when linking'/><author><name>Mike</name><uri>http://www.blogger.com/profile/12578279853506273956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6510832.post-112123148803519369</id><published>2005-07-12T22:08:00.000-07:00</published><updated>2005-07-12T22:12:43.086-07:00</updated><title type='text'></title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.niskala.org/photo/photo.php?img=Sonoma+July+2005%2FDSC00614.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px;" src="http://www.niskala.org/photo/view.php?img=Sonoma+July+2005%2FDSC00614.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6510832-112123148803519369?l=emmby.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmby.blogspot.com/feeds/112123148803519369/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6510832&amp;postID=112123148803519369' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/112123148803519369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6510832/posts/default/112123148803519369'/><link rel='alternate' type='text/html' href='http://emmby.blogspot.com/2005/07/blog-post.html' title=''/><author><name>Mike</name><uri>http://www.blogger.com/profile/12578279853506273956</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
