<?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/"
	>

<channel>
	<title>ThreeBytesFull</title>
	<atom:link href="http://threebytesfull.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://threebytesfull.com</link>
	<description></description>
	<pubDate>Fri, 27 Mar 2009 14:49:30 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Simple “method got called” debugging</title>
		<link>http://threebytesfull.com/2009/02/simple-%e2%80%9cmethod-got-called%e2%80%9d-debugging/</link>
		<comments>http://threebytesfull.com/2009/02/simple-%e2%80%9cmethod-got-called%e2%80%9d-debugging/#comments</comments>
		<pubDate>Thu, 26 Feb 2009 23:45:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[Objective-C]]></category>

		<guid isPermaLink="false">http://threebytesfull.com/?p=67</guid>
		<description><![CDATA[For quick and dirty project debugging, I often find myself using code like:
- &#40;void&#41;someRandomMethod
&#123;
NSLog&#40;@&#34;-someRandomMethod called&#34;&#41;;
// ...
&#125;
Playing around with precompiled headers in XCode, it occurred to me there’s a much neater way to do this. In the precompiled header (XCode probably created a .pch file for you) add:
#define HELLO NSLog(@&#34;-----TRACE----- %s (%s:%d)&#34;, __PRETTY_FUNTION__, __FILE__, __LINE__);
Then in [...]]]></description>
			<content:encoded><![CDATA[<p>For quick and dirty project debugging, I often find myself using code like:</p>
<div class="codecolorer-container objc " style="overflow:auto;white-space:nowrap;width:450px"><div class="objc codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="sy0">-</span> <span class="br0">&#40;</span><span class="kw4">void</span><span class="br0">&#41;</span>someRandomMethod<br />
<span class="br0">&#123;</span><br />
NSLog<span class="br0">&#40;</span><span class="co3">@</span><span class="st0">&quot;-someRandomMethod called&quot;</span><span class="br0">&#41;</span>;<br />
<span class="co2">// ...</span><br />
<span class="br0">&#125;</span></div></div>
<p>Playing around with precompiled headers in XCode, it occurred to me there’s a much neater way to do this. In the precompiled header (XCode probably created a .pch file for you) add:</p>
<div class="codecolorer-container objc " style="overflow:auto;white-space:nowrap;width:450px"><div class="objc codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="co1">#define HELLO NSLog(@&quot;-----TRACE----- %s (%s:%d)&quot;, __PRETTY_FUNTION__, __FILE__, __LINE__);</span></div></div>
<p>Then in any method in your project you can get easy tracing:</p>
<div class="codecolorer-container objc " style="overflow:auto;white-space:nowrap;width:450px"><div class="objc codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="sy0">-</span> <span class="br0">&#40;</span><span class="kw4">void</span><span class="br0">&#41;</span>someOtherMethod<br />
<span class="br0">&#123;</span><br />
HELLO<br />
<span class="co2">// ...</span><br />
<span class="br0">&#125;</span></div></div>
<p>To prevent trace messages ever showing up in release builds, you could wrap the definition in an #ifdef and make the macro effectively a no-op.</p>
]]></content:encoded>
			<wfw:commentRss>http://threebytesfull.com/2009/02/simple-%e2%80%9cmethod-got-called%e2%80%9d-debugging/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Dangerous Shell Scripts</title>
		<link>http://threebytesfull.com/2009/01/dangerous-shell-scripts/</link>
		<comments>http://threebytesfull.com/2009/01/dangerous-shell-scripts/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 16:46:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[Shell]]></category>

		<guid isPermaLink="false">http://threebytesfull.com/?p=63</guid>
		<description><![CDATA[I’ve seen a few shell scripts recently which use environment variables to determine installation paths etc so that the script Just Works when run.
This is generally desirable but the importance of checking the environment variables before doing anything should not be overlooked. Consider the following (admittedly contrived!) example:
#!/usr/bin/env bash

# uninstall product
PRODUCTROOT=&#34;${INSTALLROOT}/${PRODUCTNAME}&#34;

rm -rf &#34;${PRODUCTROOT}&#34;
The script assumes [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve seen a few shell scripts recently which use environment variables to determine installation paths etc so that the script Just Works when run.</p>
<p>This is generally desirable but the importance of checking the environment variables before doing anything should not be overlooked. Consider the following (admittedly contrived!) example:</p>
<div class="codecolorer-container bash " style="overflow:auto;white-space:nowrap;width:450px"><div class="bash codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="co0">#!/usr/bin/env bash</span><br />
<br />
<span class="co0"># uninstall product</span><br />
<span class="re2">PRODUCTROOT</span>=<span class="st0">&quot;<span class="es3">${INSTALLROOT}</span>/<span class="es3">${PRODUCTNAME}</span>&quot;</span><br />
<br />
<span class="kw2">rm</span> <span class="re5">-rf</span> <span class="st0">&quot;<span class="es3">${PRODUCTROOT}</span>&quot;</span></div></div>
<p>The script assumes INSTALLROOT and PRODUCTNAME are set but it doesn’t verify this. If they’re not, the effective behaviour is:</p>
<div class="codecolorer-container bash " style="overflow:auto;white-space:nowrap;width:450px"><div class="bash codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw2">rm</span> <span class="re5">-rf</span> <span class="st0">&quot;/&quot;</span></div></div>
<p>(Please don’t try that out!)</p>
<p>While it’s not possible for a deletion script to really know whether or not you meant to delete something, it can at least check the preconditions.</p>
<p>To check that the necessary variables are set:</p>
<div class="codecolorer-container bash " style="overflow:auto;white-space:nowrap;width:450px"><div class="bash codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="co0">#!/usr/bin/env bash</span><br />
<br />
<span class="kw1">function</span> check_env_vars<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; <span class="kw3">local</span> <span class="re2">var_list</span>=$<span class="sy0">@</span><br />
&nbsp; <span class="kw1">for</span> var_name <span class="kw1">in</span> <span class="co1">${var_list[@]}</span>; <span class="kw1">do</span><br />
&nbsp; &nbsp; <span class="kw3">eval</span> <span class="re2">var_value</span>=<span class="st0">&quot;<span class="es1">\$</span><span class="es2">$var_name</span>&quot;</span><br />
&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#91;</span> <span class="re5">-z</span> <span class="st0">&quot;<span class="es3">${var_value}</span>&quot;</span> <span class="br0">&#93;</span>; <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;<span class="es3">${var_name}</span> must be set!&quot;</span> <span class="sy0">&gt;&amp;</span><span class="nu0">2</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw3">exit</span> <span class="nu0">1</span><br />
&nbsp; &nbsp; <span class="kw1">fi</span><br />
&nbsp; <span class="kw1">done</span><br />
<span class="br0">&#125;</span><br />
<br />
check_env_vars INSTALLROOT PRODUCTNAME<br />
<br />
<span class="co0"># if we get this far, the variables are set</span><br />
<span class="co0"># you could change the exit to return an error status</span><br />
<span class="co0"># instead and trap it here</span></div></div>
]]></content:encoded>
			<wfw:commentRss>http://threebytesfull.com/2009/01/dangerous-shell-scripts/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Tracing Objective-C method calls</title>
		<link>http://threebytesfull.com/2009/01/tracing-objective-c-method-calls/</link>
		<comments>http://threebytesfull.com/2009/01/tracing-objective-c-method-calls/#comments</comments>
		<pubDate>Fri, 02 Jan 2009 00:04:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[Objective-C]]></category>

		<guid isPermaLink="false">http://threebytesfull.com/?p=56</guid>
		<description><![CDATA[There are probably more clever ways to do this, but as a quick and dirty hack I find this useful for finding out which methods are being, or could potentially be, called on my object:
- &#40;BOOL&#41;respondsToSelector:&#40;SEL&#41;aSelector
&#123;
&#160; NSLog&#40;@&#34;respondsToSelector:'%s'&#34;, sel_getName&#40;aSelector&#41;&#41;;
&#160; return &#91;super respondsToSelector:aSelector&#93;;
&#125;
]]></description>
			<content:encoded><![CDATA[<p>There are probably more clever ways to do this, but as a quick and dirty hack I find this useful for finding out which methods are being, or could potentially be, called on my object:</p>
<div class="codecolorer-container objc " style="overflow:auto;white-space:nowrap;width:450px"><div class="objc codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="sy0">-</span> <span class="br0">&#40;</span><span class="kw4">BOOL</span><span class="br0">&#41;</span>respondsToSelector<span class="sy0">:</span><span class="br0">&#40;</span><span class="kw4">SEL</span><span class="br0">&#41;</span>aSelector<br />
<span class="br0">&#123;</span><br />
&nbsp; NSLog<span class="br0">&#40;</span><span class="co3">@</span><span class="st0">&quot;respondsToSelector:'%s'&quot;</span>, sel_getName<span class="br0">&#40;</span>aSelector<span class="br0">&#41;</span><span class="br0">&#41;</span>;<br />
&nbsp; <span class="kw1">return</span> <span class="br0">&#91;</span>super respondsToSelector<span class="sy0">:</span>aSelector<span class="br0">&#93;</span>;<br />
<span class="br0">&#125;</span></div></div>
]]></content:encoded>
			<wfw:commentRss>http://threebytesfull.com/2009/01/tracing-objective-c-method-calls/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Compiling connect.c on Solaris 10</title>
		<link>http://threebytesfull.com/2008/05/compiling-connectc-on-solaris-10/</link>
		<comments>http://threebytesfull.com/2008/05/compiling-connectc-on-solaris-10/#comments</comments>
		<pubDate>Wed, 07 May 2008 15:38:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://threebytesfull.com/?p=9</guid>
		<description><![CDATA[I mentioned connect.c for SOCKS proxy connections. Compiling it on Solaris 10 is relatively straightforward but you need to define INADDR_NONE as it’s not present in the system headers.
gcc -DINADDR_NONE='((unsigned long)-1)' connect.c -o connect \
-lnsl -lsocket -lresolv
You also need to link it with libnsl, libsocket and libresolv.
]]></description>
			<content:encoded><![CDATA[<p>I mentioned <a title="connect.c" href="http://www.meadowy.org/~gotoh/ssh/connect.c" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.meadowy.org');">connect.c</a> for SOCKS proxy connections. Compiling it on Solaris 10 is relatively straightforward but you need to define INADDR_NONE as it’s not present in the system headers.</p>
<div class="codecolorer-container bash " style="overflow:auto;white-space:nowrap;width:450px"><div class="bash codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw2">gcc</span> -DINADDR_NONE=<span class="st_h">'((unsigned long)-1)'</span> connect.c <span class="re5">-o</span> connect \<br />
<span class="re5">-lnsl</span> <span class="re5">-lsocket</span> <span class="re5">-lresolv</span></div></div>
<p>You also need to link it with libnsl, libsocket and libresolv.</p>
]]></content:encoded>
			<wfw:commentRss>http://threebytesfull.com/2008/05/compiling-connectc-on-solaris-10/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Getting Trang Working</title>
		<link>http://threebytesfull.com/2008/04/getting-trang-working/</link>
		<comments>http://threebytesfull.com/2008/04/getting-trang-working/#comments</comments>
		<pubDate>Sat, 19 Apr 2008 11:52:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://threebytesfull.com/?p=8</guid>
		<description><![CDATA[I’m working with an application which requires Trang to convert RELAX NG schema files. Trang itself is quite old code and this seems to present problems on newer distributions - all sorts of problems getting it to run under GCJ in particular.
While there are probably speed advantages in going the GCJ route, I’m more interested [...]]]></description>
			<content:encoded><![CDATA[<p>I’m working with an application which requires <a title="Trang" href="http://www.thaiopensource.com/relaxng/trang.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.thaiopensource.com');">Trang</a> to convert <a title="RELAX NG" href="http://relaxng.org/" onclick="javascript:pageTracker._trackPageview('/outbound/article/relaxng.org');">RELAX NG</a> schema files. <a title="Trang" href="http://www.thaiopensource.com/relaxng/trang.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.thaiopensource.com');">Trang</a> itself is quite old code and this seems to present problems on newer distributions - all sorts of problems getting it to run under <a title="GCJ" href="http://gcc.gnu.org/java/" onclick="javascript:pageTracker._trackPageview('/outbound/article/gcc.gnu.org');">GCJ</a> in particular.</p>
<p>While there are probably speed advantages in going the <a title="GCJ" href="http://gcc.gnu.org/java/" onclick="javascript:pageTracker._trackPageview('/outbound/article/gcc.gnu.org');">GCJ</a> route, I’m more interested in just getting it working - the schema files only need converting once so speed isn’t really an issue here.</p>
<p>I cheated and just used the <a title="JDK" href="http://java.sun.com/" onclick="javascript:pageTracker._trackPageview('/outbound/article/java.sun.com');">JDK</a> and a shell script wrapper. If you just need it to work too, here’s how I did it.</p>
<p>Install <a title="JDK" href="http://java.sun.com/" onclick="javascript:pageTracker._trackPageview('/outbound/article/java.sun.com');">JDK</a></p>
<p>This is obviously different for every platform, but in this case it’s on <a title="Ubuntu" href="http://www.ubuntu.com/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.ubuntu.com');">Ubuntu</a> and is as simple as:</p>
<p>sudo aptitude install sun-java5-jdk<br />
Fetch <a title="Trang" href="http://www.thaiopensource.com/relaxng/trang.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.thaiopensource.com');">Trang</a></p>
<p>You need the original Java zip file, not the <a title="GCJ" href="http://gcc.gnu.org/java/" onclick="javascript:pageTracker._trackPageview('/outbound/article/gcc.gnu.org');">GCJ</a> version.</p>
<div class="codecolorer-container bash " style="overflow:auto;white-space:nowrap;width:450px"><div class="bash codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw2">wget</span> <span class="br0">&#91;</span>http:<span class="sy0">//</span>www.thaiopensource.com<span class="sy0">/</span>download<span class="sy0">/</span>trang-20030619.zip<span class="br0">&#93;</span></div></div>
<p>From this you need to extract the jar file:</p>
<div class="codecolorer-container bash " style="overflow:auto;white-space:nowrap;width:450px"><div class="bash codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw2">unzip</span> <span class="re5">-j</span> trang-20030619.zip <span class="st_h">'*/trang.jar'</span></div></div>
<p>Install <a title="Trang" href="http://www.thaiopensource.com/relaxng/trang.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.thaiopensource.com');">Trang</a></p>
<p>I placed mine in /usr/local/trang but it doesn’t really matter where it goes.</p>
<div class="codecolorer-container bash " style="overflow:auto;white-space:nowrap;width:450px"><div class="bash codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw2">sudo</span> <span class="kw2">mkdir</span> <span class="sy0">/</span>usr<span class="sy0">/</span><span class="kw3">local</span><span class="sy0">/</span>trang<br />
<span class="kw2">sudo</span> <span class="kw2">cp</span> trang.jar <span class="sy0">/</span>usr<span class="sy0">/</span><span class="kw3">local</span><span class="sy0">/</span>trang</div></div>
<p>Create a wrapper shell script</p>
<p>The shell script just invokes java on the <a title="Trang" href="http://www.thaiopensource.com/relaxng/trang.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.thaiopensource.com');">Trang</a> jar file with the supplied arguments. Create the file /usr/local/bin/trang in your favourite editor:</p>
<div class="codecolorer-container bash " style="overflow:auto;white-space:nowrap;width:450px"><div class="bash codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="co0">#!/bin/sh</span><br />
<span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>jvm<span class="sy0">/</span>java-1.5.0-sun<span class="sy0">/</span>bin<span class="sy0">/</span>java <span class="re5">-jar</span> <span class="sy0">/</span>usr<span class="sy0">/</span><span class="kw3">local</span><span class="sy0">/</span>trang<span class="sy0">/</span>trang.jar $<span class="sy0">@</span></div></div>
<p>And then make the script executable:</p>
<div class="codecolorer-container bash " style="overflow:auto;white-space:nowrap;width:450px"><div class="bash codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw2">sudo</span> <span class="kw2">chmod</span> +x <span class="sy0">/</span>usr<span class="sy0">/</span><span class="kw3">local</span><span class="sy0">/</span>bin<span class="sy0">/</span>trang</div></div>
<p>Test it</p>
<p>Assuming the script is in your PATH, you should now be able to use it as normal (albeit slowly - the startup time hurts a bit!)</p>
<div class="codecolorer-container bash " style="overflow:auto;white-space:nowrap;width:450px"><div class="bash codecolorer" style="font-family:Monaco,Lucida Console,monospace">trang file.rnc file.rng</div></div>
]]></content:encoded>
			<wfw:commentRss>http://threebytesfull.com/2008/04/getting-trang-working/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Git with and without proxy</title>
		<link>http://threebytesfull.com/2008/04/git-with-and-without-proxy/</link>
		<comments>http://threebytesfull.com/2008/04/git-with-and-without-proxy/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 00:37:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[Git]]></category>

		<guid isPermaLink="false">http://threebytesfull.com/?p=6</guid>
		<description><![CDATA[I use Git both at home and at work; at home I’ve got a direct connection but at work I must connect through a SOCKS proxy for external access.
Although Git supports proxy configuration, it’s irritating to have to change this all the time depending on my location. Setting the environment variable GIT_PROXY_COMMAND overrides whatever proxy [...]]]></description>
			<content:encoded><![CDATA[<p>I use <a title="Git" href="http://git.or.cz/" onclick="javascript:pageTracker._trackPageview('/outbound/article/git.or.cz');">Git</a> both at home and at work; at home I’ve got a direct connection but at work I must connect through a SOCKS proxy for external access.</p>
<p>Although <a title="Git" href="http://git.or.cz/" onclick="javascript:pageTracker._trackPageview('/outbound/article/git.or.cz');">Git</a> supports proxy configuration, it’s irritating to have to change this all the time depending on my location. Setting the environment variable GIT_PROXY_COMMAND overrides whatever proxy configuration already exists - this is all we need to get git:// repositories to work. To get Git-over-SSH connections to work, which you probably want for push operations, you’ll also need to set up GIT_SSH.</p>
<p>I’ve created some simple shell scripts to help. The first is a simple wrapper for <a title="connect.c" href="http://www.meadowy.org/~gotoh/ssh/connect.c" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.meadowy.org');">connect.c</a> (which you may need to compile, of course).</p>
<div class="codecolorer-container bash " style="overflow:auto;white-space:nowrap;width:450px"><div class="bash codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="co0">#!/bin/sh</span><br />
<span class="co0"># Filename: ~/bin/socks-gw</span><br />
<span class="co0"># This script connects to a SOCKS proxy using connect.c</span><br />
<span class="sy0">/</span>path<span class="sy0">/</span>to<span class="sy0">/</span>connect <span class="re5">-S</span> my.socks.server:<span class="nu0">1080</span> $<span class="sy0">@</span></div></div>
<p>The second is another simple wrapper for SSH through a SOCKS proxy:</p>
<div class="codecolorer-container bash " style="overflow:auto;white-space:nowrap;width:450px"><div class="bash codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="co0">#!/bin/sh</span><br />
<span class="co0"># Filename: ~/bin/socks-ssh</span><br />
<span class="co0"># This script opens an SSH connection through a SOCKS server</span><br />
<span class="kw2">ssh</span> <span class="re5">-o</span> <span class="re2">ProxyCommand</span>=<span class="st0">&quot;<span class="es3">${HOME}</span>/bin/socks-gw %h %p&quot;</span> $<span class="sy0">@</span></div></div>
<p>Lastly, I have a script I source when at work to set the environment variables for me:</p>
<div class="codecolorer-container bash " style="overflow:auto;white-space:nowrap;width:450px"><div class="bash codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="co0">#!/bin/sh</span><br />
<span class="co0"># Filename: ~/bin/work</span><br />
<span class="co0"># This script sets Git to use the SOCKS proxy</span><br />
<span class="kw3">export</span> <span class="re2">GIT_SSH</span>=<span class="st0">&quot;<span class="es3">${HOME}</span>/bin/socks-ssh&quot;</span><br />
<span class="kw3">export</span> <span class="re2">GIT_PROXY_COMMAND</span>=<span class="st0">&quot;<span class="es3">${HOME}</span>/bin/socks-gw&quot;</span></div></div>
<p>And I’ve put an alias in my .bash_profile to help me remember to source it instead of running it:</p>
<div class="codecolorer-container bash " style="overflow:auto;white-space:nowrap;width:450px"><div class="bash codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw3">alias</span> <span class="re2">work</span>=<span class="st0">&quot;source <span class="es3">${HOME}</span>/bin/work&quot;</span></div></div>
<p>Now when I use <a title="Git" href="http://git.or.cz/" onclick="javascript:pageTracker._trackPageview('/outbound/article/git.or.cz');">Git</a> at home, it just works without having to remove any proxy config, and when I use it at work I just type work in my shell and it works there too…</p>
]]></content:encoded>
			<wfw:commentRss>http://threebytesfull.com/2008/04/git-with-and-without-proxy/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Hello, World!</title>
		<link>http://threebytesfull.com/2008/03/hello-world/</link>
		<comments>http://threebytesfull.com/2008/03/hello-world/#comments</comments>
		<pubDate>Mon, 24 Mar 2008 13:11:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Meta]]></category>

		<guid isPermaLink="false">http://wp.threebytesfull.com/?p=1</guid>
		<description><![CDATA[I’ve been meaning to install blog or CMS software of some description for a while… You won’t find my life story here - it’s more a place to stick odd useful code snippets and such.
]]></description>
			<content:encoded><![CDATA[<p>I’ve been meaning to install blog or CMS software of some description for a while… You won’t find my life story here - it’s more a place to stick odd useful code snippets and such.</p>
]]></content:encoded>
			<wfw:commentRss>http://threebytesfull.com/2008/03/hello-world/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
