<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Jacob Allred</title>
	
	<link>http://www.jacoballred.com</link>
	<description />
	<lastBuildDate>Fri, 30 Jul 2010 02:07:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/JacobAllred" /><feedburner:info uri="jacoballred" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>33.968011</geo:lat><geo:long>-80.938441</geo:long><item>
		<title>Zend Alternatives</title>
		<link>http://feedproxy.google.com/~r/JacobAllred/~3/y5SvlwCKW3A/</link>
		<comments>http://www.jacoballred.com/web-dev/zend-alternatives/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 02:07:55 +0000</pubDate>
		<dc:creator>Jacob Allred</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Web Dev]]></category>

		<guid isPermaLink="false">http://www.jacoballred.com/?p=530</guid>
		<description>When most people think of PHP they think Zend, but did you know that Zend isn’t the only company that makes a PHP engine? There are many competing compilers and interpreters for PHP, each with their own slightly different take on the PHP language. Facebook’s HipHop HipHop takes normal PHP code and transforms it into [...]</description>
			<content:encoded><![CDATA[<p>When most people think of PHP they think Zend, but did you know that Zend isn’t the only company that makes a PHP engine? There are many competing compilers and interpreters for PHP, each with their own slightly different take on the PHP language.</p>
<h1>Facebook’s HipHop</h1>
<p>HipHop takes normal PHP code and transforms it into C++, which is then compiled in machine code. Code compiled by HipHop runs significantly faster than normal PHP run with the Zend Engine.</p>
<p>It has its disadvantages though. HipHop is only capable of transforming a subset of the PHP language. Some important (and some may say evil) features, such as <em>eval</em>, have been removed to make it possible to transform from PHP to C++. It also has a few other limitations, such as only supporting PHP 5.2 and 64-bit operating systems.</p>
<h1>IBM’s WebSphere sMash</h1>
<p>WebSphere sMash is a Java implementation of a PHP runtime environment. The PHP code is compiled into Java bytecode which runs on the Java Virtual Machine. The major benefit of running things in Java is that it is portable to more operating systems and allows you to use things like database connection pooling.</p>
<p>While it does support more PHP functionality than HipHop, it is still missing some features. However, it is capable of running a few major open source packages out of the box, including SugarCRM, Mediawiki, and WordPress.</p>
<h1>Caucho’s Quercus</h1>
<p>Quercus is another Java implementation of a PHP runtime environment.It too allows you to use Java features like connection pooling, and supports major open source packages like MediaWiki and WordPress.</p>
<p>The paid version allows you to pre-compile your PHP scripts, which allows them to run super-fast. Unfortunately, this is cost-prohibitive for users that have more than 1 CPU in their server (like me) or plan on having more than 1 CPU in the future (most anyone with a vaguely popular website).</p>
<h1>Phalanger</h1>
<p>Phalanger is a strange creature. It is sort of like PHP.NET. It takes your normal PHP code and compiles it into MSIL, which can then be run by .NET or Mono. The major advantage to using Phalanger is that it makes it possible to access .NET classes in PHP (for example, VB.NET or C#).</p>
<p>Thanks to Mono, .NET isn’t limited to Windows. This means you can write Gtk applications in PHP. I hope to have something released in the near future that uses Phalanger.</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.jacoballred.com/my-sites/what-is-my-ip/" rel="bookmark" class="crp_title">What is my IP?</a></li><li><a href="http://www.jacoballred.com/web-dev/the-importance-of-bad-code/" rel="bookmark" class="crp_title">The importance of bad code</a></li><li><a href="http://www.jacoballred.com/web-dev/seed-the-clipboard-using-flash-10-and-zero-clipboard/" rel="bookmark" class="crp_title">Seed the clipboard using Flash 10 and Zero Clipboard</a></li><li><a href="http://www.jacoballred.com/goals/zend-certified-engineer/" rel="bookmark" class="crp_title">Zend Certified Engineer</a></li><li><a href="http://www.jacoballred.com/web-dev/chrome-frame/" rel="bookmark" class="crp_title">Chrome Frame</a></li></ul></div><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/JacobAllred?a=y5SvlwCKW3A:uD5ENu05bg0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/JacobAllred?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JacobAllred?a=y5SvlwCKW3A:uD5ENu05bg0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/JacobAllred?i=y5SvlwCKW3A:uD5ENu05bg0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JacobAllred?a=y5SvlwCKW3A:uD5ENu05bg0:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/JacobAllred?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JacobAllred?a=y5SvlwCKW3A:uD5ENu05bg0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/JacobAllred?i=y5SvlwCKW3A:uD5ENu05bg0:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.jacoballred.com/web-dev/zend-alternatives/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.jacoballred.com/web-dev/zend-alternatives/</feedburner:origLink></item>
		<item>
		<title>Fixing Git</title>
		<link>http://feedproxy.google.com/~r/JacobAllred/~3/dphO5CNCrjs/</link>
		<comments>http://www.jacoballred.com/linux/fixing-git/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 16:22:13 +0000</pubDate>
		<dc:creator>Jacob Allred</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.jacoballred.com/?p=527</guid>
		<description>I use git as my version control system for all of my sites. It helps to reduce disk usage by occasionally running git gc. Last night when I went to run git gc on one of my sites, I received a message I had never seen before telling me that my git repo was corrupt. [...]</description>
			<content:encoded><![CDATA[<p>I use git as my version control system for all of my sites. It helps to reduce disk usage by occasionally running <em>git gc</em>. Last night when I went to run <em>git gc</em> on one of my sites, I received a message I had never seen before telling me that my git repo was corrupt. Corrupt? Oh noes!</p>
<p>So I searched the internet and discovered I could run <em>git fsck –full</em> to figure out what the problem was:</p>
<pre>$ git fsck --full
broken link from    tree e79ab5efffca93a784afdb9cef73801eb1fa9db4
              to    tree fb9d707c76dde3f8cb672d1c07ca046615175587
dangling tree 1003e43ee3725b0482193aea9d82ca527c2903cc
dangling blob 361211b552b7910299e63b6627944ff72b0577eb
dangling blob 8e79df8dbe87431fbec8f25a4c6527fabe4d9e6f
dangling blob 9b3a891e5094920f743c36a49d1647d9aad2b2f0
missing tree fb9d707c76dde3f8cb672d1c07ca046615175587</pre>
<p>After digging around the internet, I discovered that my repo was missing a tree, and that I could get it out of a cloned copy of the repo, assuming the cloned copy wasn’t corrupt, too.</p>
<p>I created a new empty repo:</p>
<pre>$ mkdir new-repo
$ cd new-repo
$ git init</pre>
<p>Next, I copied my pack file from the good repo to the new empty repo (there was only one in my pack folder):</p>
<pre>$ cd /www/path/to/good/repo
$ cp .git/objects/pack/pack-c376dc3b9d2ce5f4d9ab9269d29ddc82f6f6a822.pack /path/to/new-repo</pre>
<p>I unpacked the pack file to see if I could find the missing tree:</p>
<pre>$ cd /path/to/new-repo
$ git unpack-objects &lt; pack-c376dc3b9d2ce5f4d9ab9269d29ddc82f6f6a822.pack</pre>
<p>My missing tree is fb9d707c76dde3f8cb672d1c07ca046615175587, so I looked to see if my file was there:</p>
<pre>$ cd .git/objects/fb/
$ ls -l</pre>
<p><em>9d707c76dde3f8cb672d1c07ca046615175587</em> showed up in the list, so yay! My missing tree was there! Now to copy it to the corrupt repo (my corrupt repo was a bare repo, so no <em>.git</em> in the path):</p>
<pre>$ mkdir -p /path/to/corrupt/repo/objects/fb
$ cp /path/to/new-repo/.git/objects/fb/9d707c76dde3f8cb672d1c07ca046615175587 /path/to/corrupt/repo/objects/fb/9d707c76dde3f8cb672d1c07ca046615175587</pre>
<p>That was it for me! I ran <em>git gc</em> and everything worked without a problem.</p>
<p>Hopefully this helps someone, or at least will help me remember what the heck to do next time my repo gets corrupted.</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.jacoballred.com/random/geocaching-adventure/" rel="bookmark" class="crp_title">Geocaching Adventure</a></li><li><a href="http://www.jacoballred.com/money/free-gift-cards/" rel="bookmark" class="crp_title">Free Gift Cards</a></li><li><a href="http://www.jacoballred.com/my-sites/what-is-my-ip/" rel="bookmark" class="crp_title">What is my IP?</a></li><li><a href="http://www.jacoballred.com/rants/swaptree-backs-down/" rel="bookmark" class="crp_title">Swaptree backs down</a></li><li><a href="http://www.jacoballred.com/random/the-world-we-live-in-and-life-in-general/" rel="bookmark" class="crp_title">The world we live in and life in general</a></li></ul></div><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/JacobAllred?a=dphO5CNCrjs:jiF2TWit4rE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/JacobAllred?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JacobAllred?a=dphO5CNCrjs:jiF2TWit4rE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/JacobAllred?i=dphO5CNCrjs:jiF2TWit4rE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JacobAllred?a=dphO5CNCrjs:jiF2TWit4rE:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/JacobAllred?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JacobAllred?a=dphO5CNCrjs:jiF2TWit4rE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/JacobAllred?i=dphO5CNCrjs:jiF2TWit4rE:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.jacoballred.com/linux/fixing-git/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.jacoballred.com/linux/fixing-git/</feedburner:origLink></item>
		<item>
		<title>DoS using a single client</title>
		<link>http://feedproxy.google.com/~r/JacobAllred/~3/sB5HQ23e5Q4/</link>
		<comments>http://www.jacoballred.com/web-dev/dos-using-a-single-client/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 16:30:14 +0000</pubDate>
		<dc:creator>Jacob Allred</dc:creator>
				<category><![CDATA[Web Dev]]></category>

		<guid isPermaLink="false">http://www.jacoballred.com/?p=524</guid>
		<description>Have you ever heard of Slowloris? It has been around for a little over a year, but fortunately I have never had the “pleasure” of dealing with it. This short Perl script (less than 350 lines of actual code) is capable of turning your lowly desktop computer into a server killing monster. Traditional denial of [...]</description>
			<content:encoded><![CDATA[<p>Have you ever heard of <a href="http://en.wikipedia.org/wiki/Slowloris">Slowloris</a>? It has been around for a little over a year, but fortunately I have never had the “pleasure” of dealing with it.</p>
<p>This short Perl script (less than 350 lines of actual code) is capable of turning your lowly desktop computer into a server killing monster. Traditional denial of service attacks use several clients (hundreds, sometimes thousands) to overwhelm the target server. The clients make as many requests as they can from the target server, causing it to use all its resources responding to the requests. Slowloris has a different approach.</p>
<p>Instead of using hundreds of clients, a Slowloris attack can often be successful run from a single client. And instead of overloading the server and utilizing a pile of bandwidth, Slowloris leaves the load on the target server at near zero and uses almost no bandwidth. It still makes a pile of requests, but it makes .…. them .…. nice .…. and .…. slow. Most web servers are only capable of handling a certain number of requests at a time (say, 150) so if you start 150 requests to the target server and leave those requests open for 10, 20, or even 30 minutes, you’ve effectively made it impossible for anyone else to get a valid request through to the web server. The target server isn’t actually doing any work, so the load doesn’t go up. What makes it even more annoying is the requests don’t show up in the log until they fail, if they ever do, which makes it more difficult to figure out what the heck is going on.</p>
<p>There are <a href="http://blogs.n1zyy.com/n1zyy/2009/06/20/slowloris-part-ii/">ways</a> to <a href="http://en.wikipedia.org/wiki/Slowloris#Mitigating_the_Slowloris_attack">mitigate</a> the effectiveness of this type of attack, the most common being the use of a proxy to sit between the client and the web server (like haproxy or <a href="http://www.cloudflare.com">CloudFlare</a>) and/or installing a bunch of Apache modules. Fortunately I’m doing both so hopefully I’ll be fine if someone decides they don’t like me much and wants to take down my server.</p>
<p>As a final note, I wholeheartedly <strong><em>discourage</em></strong> you from trying out the software unless you only do it on your local network. Attacking someone’s server is probably illegal and is likely to get your internet service shutoff. In other words, don’t be stupid.</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.jacoballred.com/my-sites/save-money-and-make-your-site-faster-using-a-cdn/" rel="bookmark" class="crp_title">Save money AND make your site faster using a CDN</a></li><li><a href="http://www.jacoballred.com/free-stuff/cloudflare-rocks/" rel="bookmark" class="crp_title">CloudFlare Rocks!</a></li><li><a href="http://www.jacoballred.com/web-dev/quick-and-easy-php-whois-script/" rel="bookmark" class="crp_title">Quick and Easy PHP WHOIS Script</a></li><li><a href="http://www.jacoballred.com/free-stuff/protecting-your-server-with-denyhosts/" rel="bookmark" class="crp_title">Protecting Your Server with DenyHosts</a></li><li><a href="http://www.jacoballred.com/web-dev/all-the-domains-in-the-world/" rel="bookmark" class="crp_title">All The Domains in the World</a></li></ul></div><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/JacobAllred?a=sB5HQ23e5Q4:No7LLv1QGjc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/JacobAllred?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JacobAllred?a=sB5HQ23e5Q4:No7LLv1QGjc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/JacobAllred?i=sB5HQ23e5Q4:No7LLv1QGjc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JacobAllred?a=sB5HQ23e5Q4:No7LLv1QGjc:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/JacobAllred?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JacobAllred?a=sB5HQ23e5Q4:No7LLv1QGjc:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/JacobAllred?i=sB5HQ23e5Q4:No7LLv1QGjc:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.jacoballred.com/web-dev/dos-using-a-single-client/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.jacoballred.com/web-dev/dos-using-a-single-client/</feedburner:origLink></item>
		<item>
		<title>meld &gt; diff</title>
		<link>http://feedproxy.google.com/~r/JacobAllred/~3/Vue3C3sFDfg/</link>
		<comments>http://www.jacoballred.com/linux/meld-diff/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 23:25:12 +0000</pubDate>
		<dc:creator>Jacob Allred</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.jacoballred.com/?p=517</guid>
		<description>I recently was assigned a task at work that required finding the differences between one directory full of configuration files and another directory full of configuration files. Normally I’d use diff to look at the differences between the files, and figure out what has changed. With a directory of over 100 files, this wasn’t really [...]</description>
			<content:encoded><![CDATA[<p><a href="http://www.jacoballred.com/wp-content/uploads/2010/07/meld_dir4.png"><img class="alignright size-medium wp-image-518" title="Directory diff" src="http://www.jacoballred.com/wp-content/uploads/2010/07/meld_dir4-300x239.png" alt="" width="300" height="239" /></a>I recently was assigned a task at work that required finding the differences between one directory full of configuration files and another directory full of configuration files. Normally I’d use <em>diff</em> to look at the differences between the files, and figure out what has changed. With a directory of over 100 files, this wasn’t really feasible.</p>
<p>Enter <em>meld</em>, an awesomely awesome GUI-fied tool for Linux that not only lets you compare files, it also lets you compare directories full of files <em>and</em> three files at the same time. Very cool. It is also in the Ubunutu repos which is a plus.</p>
<p>In less time than it would take to interpret a <em>diff</em> on a single file, I quickly saw which files only existed in the original directory, which only existed in the new directory, and which were in both but different. The diff for each file was only a double-click away.</p>
<p>Pretty cool app. If you are on an Ubunutu based system check it out by running: <em>sudo apt-get install meld</em></p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.jacoballred.com/free-stuff/cloudflare-rocks/" rel="bookmark" class="crp_title">CloudFlare Rocks!</a></li><li><a href="http://www.jacoballred.com/random/day-6-june-8-2006-um-yeah/" rel="bookmark" class="crp_title">Day #6 — June 8, 2006 — Um. Yeah.</a></li><li><a href="http://www.jacoballred.com/random/steganography/" rel="bookmark" class="crp_title">Steganography</a></li><li><a href="http://www.jacoballred.com/random/im-a-dmoz-editor/" rel="bookmark" class="crp_title">I’m a DMOZ editor</a></li><li><a href="http://www.jacoballred.com/random/day-5-june-7-2006-im-fat/" rel="bookmark" class="crp_title">Day #5 — June 7, 2006 — I’m FAT!</a></li></ul></div><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/JacobAllred?a=Vue3C3sFDfg:zY3C4cBjBWM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/JacobAllred?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JacobAllred?a=Vue3C3sFDfg:zY3C4cBjBWM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/JacobAllred?i=Vue3C3sFDfg:zY3C4cBjBWM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JacobAllred?a=Vue3C3sFDfg:zY3C4cBjBWM:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/JacobAllred?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JacobAllred?a=Vue3C3sFDfg:zY3C4cBjBWM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/JacobAllred?i=Vue3C3sFDfg:zY3C4cBjBWM:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.jacoballred.com/linux/meld-diff/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.jacoballred.com/linux/meld-diff/</feedburner:origLink></item>
		<item>
		<title>All The Domains in the World</title>
		<link>http://feedproxy.google.com/~r/JacobAllred/~3/_JDjm6paglc/</link>
		<comments>http://www.jacoballred.com/web-dev/all-the-domains-in-the-world/#comments</comments>
		<pubDate>Fri, 16 Jul 2010 02:34:38 +0000</pubDate>
		<dc:creator>Jacob Allred</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Web Dev]]></category>

		<guid isPermaLink="false">http://www.jacoballred.com/?p=513</guid>
		<description>After waiting months I’ve finally been given access to the .com TLD zone file! (And the .net, but who cares about .net, right?) So what is a zone file, you ask? Basically this file keeps track of how to access every .com domain name in the entire world. Well, technically not all of them, just [...]</description>
			<content:encoded><![CDATA[<p>After waiting <em>months</em> I’ve <em>finally</em> been given <a href="http://www.verisign.com/domain-name-services/domain-information-center/tld-zone-access/index.html">access</a> to the .com TLD zone file! (And the .net, but who cares about .net, right?)</p>
<p>So what is a zone file, you ask? Basically this file keeps track of how to access every .com domain name in the entire world. Well, technically not all of them, just the ones that have name servers associated with them, but practically all of them. So how many .com’s are there in the zone file? Over 88 million! Holy cow that is a lot of domains!</p>
<p>So the first problem is <em>how</em> to use the zone file. It is a 6.5 GB text file so you can’t just open it up and say “hey is jacoballred.com taken?” and expect a quick reply. On top of that, it isn’t even designed to give you a list of taken domain names, that is just a happy side effect of keeping track of how to access all the .com’s in the world.</p>
<p>My solution was to preprocess the data using a few Linux utilities, then load it into MySQL.</p>
<p>The zone file looks a little like this:</p>
<pre> NS E.GTLD-SERVERS.NET.
 NS M.GTLD-SERVERS.NET.
$TTL 172800
ENERCONTECHNOLOGIES NS NS1.BIZ.RR
ENERCONTECHNOLOGIES NS NS2.BIZ.RR
SELF-DRIVE-CAR-RENTAL NS NS3.IZP</pre>
<p>None of the domains in the file have .com on the end. Each of these lists a nameserver after it. There are also non-TLD domains (nameservers) that I don’t care about, and other random markers in the file ($TTL). All I want are the domain names, so I use Linux to strip out the stuff I don’t want:</p>
<pre>sed -e '/^[^A-Z0-9]/d' -e '/^$/d' -e 's/ .*$//' -e /[^A-Z0-9\-]/d com.zone \
| sort -u \
| awk -F "" '{close(f);f=$1}{print &gt; "com.zone.split."f}'</pre>
<p>Wow doesn’t that look fun? So lets go over it.</p>
<p>That first line uses <em>sed</em> to load in the zone file (com.zone) and remove all lines that don’t start with A-Z or 0–9 (the only valid characters for the first character of a .com domain), then it removes blank lines, then it removes all but the first word on each line (gets rid of the nameserver after the domain name), and finally removes any line that has characters that aren’t allowed in a domain (anything other than A-Z, 0–9, or a dash). This gets a list of JUST the domain names (without the .com), but has duplicates and they aren’t in any particular order.</p>
<p>The next line sorts the list of domains and removes duplicates.</p>
<p>The last line uses <em>awk</em> to split the list of domains into 36 separate files, one for each starting character (A-Z, 0–9). This isn’t technically needed but makes things more convenient.</p>
<p>My server is pretty wussy (1GB of RAM) so I’m preprocessing on my fast 8GB of RAM desktop at home. So I kick off that command and 20 minutes later I have files ready to be loaded into MySQL.</p>
<p>My table structure is pretty basic. I have 1 table for each letter/number (for performance) that has a numeric primary key and a varchar for the domain name. So I run this for each letter and number:</p>
<pre>DROP TABLE IF EXISTS `com_A`;

CREATE TABLE `com_zone`.`com_A` (
    `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `name` VARCHAR( 255 ) NOT NULL
) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci;</pre>
<p>Next I use LOAD DATA INFILE to quickly pull in the data:</p>
<pre>LOAD DATA INFILE '/path/to/file/com.zone.split.A' INTO TABLE `com_A` (name);</pre>
<p>This step took about 5 minutes total for all the processed files. It is super super fast, but we still have one step left. Without an index on the name field, queries are really slow (about 2 seconds for a single domain). So we add an index to each table:</p>
<pre>ALTER TABLE `com_A` ADD UNIQUE `name` ( `name` ( 255 ) );</pre>
<p>This step was painfully slow, about 40 minutes, but once it was done I could do pretty much any query in a fraction of a second.</p>
<p>The final step was to turn off MySQL on my desktop, copy the MyISAM files to my server, then restart MySQL on my server so it could use them. Woot! I know have nearly every .com in the world on my server, ready to tell any web app I want if a domain is available or not with a high degree of confidence. I have a couple really fun webpages in the works that will use this.</p>
<p>Well that was a bit of a ramble but should be enough to get someone else in my position on the road to domain goodness!</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.jacoballred.com/rants/crappy-hosting-company/" rel="bookmark" class="crp_title">Crappy hosting company</a></li><li><a href="http://www.jacoballred.com/random/weighted-randomness-using-php-and-mysql/" rel="bookmark" class="crp_title">Weighted Randomness using PHP and MySQL</a></li><li><a href="http://www.jacoballred.com/my-sites/fix-capitalized-words-in-a-mysql-table/" rel="bookmark" class="crp_title">Fix capitalized words in a MySQL table</a></li><li><a href="http://www.jacoballred.com/my-sites/what-is-my-ip/" rel="bookmark" class="crp_title">What is my IP?</a></li><li><a href="http://www.jacoballred.com/free-stuff/cloudflare-rocks/" rel="bookmark" class="crp_title">CloudFlare Rocks!</a></li></ul></div><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/JacobAllred?a=_JDjm6paglc:gCBjOJBk8FM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/JacobAllred?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JacobAllred?a=_JDjm6paglc:gCBjOJBk8FM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/JacobAllred?i=_JDjm6paglc:gCBjOJBk8FM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JacobAllred?a=_JDjm6paglc:gCBjOJBk8FM:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/JacobAllred?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JacobAllred?a=_JDjm6paglc:gCBjOJBk8FM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/JacobAllred?i=_JDjm6paglc:gCBjOJBk8FM:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.jacoballred.com/web-dev/all-the-domains-in-the-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.jacoballred.com/web-dev/all-the-domains-in-the-world/</feedburner:origLink></item>
		<item>
		<title>CloudFlare Rocks!</title>
		<link>http://feedproxy.google.com/~r/JacobAllred/~3/--fSahOpWjs/</link>
		<comments>http://www.jacoballred.com/free-stuff/cloudflare-rocks/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 16:36:11 +0000</pubDate>
		<dc:creator>Jacob Allred</dc:creator>
				<category><![CDATA[Free Stuff]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[My Sites]]></category>
		<category><![CDATA[Web Dev]]></category>

		<guid isPermaLink="false">http://www.jacoballred.com/?p=500</guid>
		<description>I recently got invited to try out CloudFlare, a new free service in closed beta. I checked out the homepage and was greeted with a “Wouldn’t it be cool if your website were protected by ninjas?” header. Why, yes, that would be cool. So, not really understanding exactly what it was, I signed up and [...]</description>
			<content:encoded><![CDATA[<p><a href="http://www.jacoballred.com/wp-content/uploads/2010/07/cloudflare-logo.png"><img class="size-full wp-image-501 alignright" title="CloudFlare Logo" src="http://www.jacoballred.com/wp-content/uploads/2010/07/cloudflare-logo.png" alt="" width="305" height="50" /></a>I recently got invited to try out <a href="http://www.cloudflare.com">CloudFlare</a>, a new free service in closed beta. I checked out the homepage and was greeted with a “Wouldn’t it be cool if your website were protected by ninjas?” header. Why, yes, that would be cool.</p>
<p>So, not really understanding exactly what it was, I signed up and configured it for the <a href="http://www.fakenamegenerator.com">Fake Name Generator</a>.</p>
<p>After some poking around and letting it do its thing for a few days, this is what I’ve discovered it does for me:</p>
<ul>
<li><strong>Provides a free DNS management.</strong> This is included for free with many registrars, but it just so happened that the domain I’m trying this out on didn’t come with DNS management so I’ve been paying $10 a year for it. This alone makes CloudFlare worth using for me.</li>
<li><strong>Serves my content on a CDN-like intrastructure.</strong> This makes my site faster to some users, which is always a good thing.</li>
<li><strong>Caches my static content (like images and JavaScript).</strong> This dramatically reduces my server load, and makes my site faster. My LAMP server with only 1GB of RAM is currently serving about 100,000 pageviews per day <em>and</em> running millions of queries in offline processes. With CloudFlare, my load average rarely goes above 0.10.</li>
<li><strong>Blocks bad guys.</strong> This is a <em>huge</em> deal for me. Everyone and their mom thinks it is okay to scrape my site for data. Bots love to hit my site to try to find exploits. CloudFlare does a great job at identifying these people and blocking them for me, or providing a way for them to enter a captcha to prove they aren’t a bot.</li>
<li><strong>Provides geolocation data on all visitors.</strong> I haven’t started using this yet, but CloudFlare adds a request header with the visitor’s geographic location. This makes it easier to target content to visitors from certain parts of the world.</li>
<li><strong>Makes me more profitable.</strong> All around, CloudFlare has made my business more profitable. My site requires less server resources, which means I can keep my site running on my relatively cheap tiny server. Fewer bots are loading my ads, which means my click thru rates are higher, which means I get paid more. My pages respond faster, which means I’m ranked higher in the search engines, which means I get more visitors.</li>
</ul>
<p>One problem I ran into, however, is occasionally a screen scraper gets through their blocks and starts hitting my site. In the past I would use iptables to block them, but the way CloudFlare works makes that impossible (at least with my limited knowledge of iptables). CloudFlare provides a way to block a specific IP, but it can take several minutes to go into effect.</p>
<p>The solution I came up with is to use Apache to give visitor’s from the offending IP a 403 error:</p>
<pre>&lt;VirtualHost *&gt;

 SetEnvIf CF-Connecting-IP 98.17.241.185 GoAway=1

 &lt;Directory "/path/to/your/website"&gt;
 Order allow,deny
 Allow from all
 Deny from env=GoAway
 &lt;/Directory&gt;

&lt;/VirtualHost&gt;
</pre>
<p>This snippet, properly placed in the Apache config file, will cause Apache to look at a header set by CloudFlare, and if it matches the offending IP (in this case 98.17.241.185), it denies access to the site. You can add a nearly unlimited number of SetEnvIf statements to block any number of IPs.</p>
<p>Anyways, if you get an invite to CloudFlare, check it out! It is definitely worth it!</p>
<pre></pre>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.jacoballred.com/web-dev/dos-using-a-single-client/" rel="bookmark" class="crp_title">DoS using a single client</a></li><li><a href="http://www.jacoballred.com/my-sites/save-money-and-make-your-site-faster-using-a-cdn/" rel="bookmark" class="crp_title">Save money AND make your site faster using a CDN</a></li><li><a href="http://www.jacoballred.com/free-stuff/protecting-your-server-with-denyhosts/" rel="bookmark" class="crp_title">Protecting Your Server with DenyHosts</a></li><li><a href="http://www.jacoballred.com/my-sites/unexpected-traffic/" rel="bookmark" class="crp_title">Unexpected Traffic</a></li><li><a href="http://www.jacoballred.com/my-sites/php-mysql-or-mysqli/" rel="bookmark" class="crp_title">PHP: mysql or mysqli?</a></li></ul></div><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/JacobAllred?a=--fSahOpWjs:XWvb2i93QsI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/JacobAllred?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JacobAllred?a=--fSahOpWjs:XWvb2i93QsI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/JacobAllred?i=--fSahOpWjs:XWvb2i93QsI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JacobAllred?a=--fSahOpWjs:XWvb2i93QsI:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/JacobAllred?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JacobAllred?a=--fSahOpWjs:XWvb2i93QsI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/JacobAllred?i=--fSahOpWjs:XWvb2i93QsI:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.jacoballred.com/free-stuff/cloudflare-rocks/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.jacoballred.com/free-stuff/cloudflare-rocks/</feedburner:origLink></item>
		<item>
		<title>Protecting Your Server with DenyHosts</title>
		<link>http://feedproxy.google.com/~r/JacobAllred/~3/6pojetNgBL0/</link>
		<comments>http://www.jacoballred.com/free-stuff/protecting-your-server-with-denyhosts/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 16:10:21 +0000</pubDate>
		<dc:creator>Jacob Allred</dc:creator>
				<category><![CDATA[Free Stuff]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.jacoballred.com/?p=497</guid>
		<description>Yesterday I noticed my server’s load average was a bit higher than usual. Normally when this happens it mean someone is screen scraping the Fake Name Generator, so I went and started reviewing the logs trying to figure out who it was so I could block them. Disappointingly, I couldn’t find anybody that was scraping [...]</description>
			<content:encoded><![CDATA[<p>Yesterday I noticed my server’s load average was a bit higher than usual. Normally when this happens it mean someone is screen scraping the <a href="http://www.fakenamegenerator.com">Fake Name Generator</a>, so I went and started reviewing the logs trying to figure out who it was so I could block them.</p>
<p>Disappointingly, I couldn’t find anybody that was scraping my site, which means I had to dig deeper. The next step was to use <em>top</em> to figure out what processes are stealing all my resources. To my surprise (and exceedingly great alarm) I saw that there were about a dozen <em>sshd</em> processes running. For those that are not Linux server savvy, there should not be about a dozen <em>sshd</em> processes running.</p>
<p>SSH is the protocol that Linux server admins use to connect to their servers. When connecting, an <em>sshd</em> process will run. When a dozen are showing up, that means a dozen people are connected or trying to connect, which is very very disturbing for a server like mine where I’m the only one that should ever be on it.</p>
<p>I quickly turned to the logs and found thousands of failed login attempts. Someone was trying to hack my box. Yikes!</p>
<p>I quickly used <em>iptables</em> to block the most flagrantly offending IP, but I knew that wouldn’t hold back a committed attacker. Enter my hero: <a href="http://denyhosts.sourceforge.net/">DenyHosts</a>!</p>
<p>DenyHosts is a free chunk of code written in Python that periodically scans your log files, determines if someone looks like they are trying to break in, and blocks them. If you are really paranoid then you can even have it talk to other servers to find out who is trying to hack them, so you can preemptively block the bad guys.</p>
<p>Installation and configuration literally took about 3 minutes, and is even easier to setup if you are using Ubuntu or Linux Mint because it is in the repos. As soon as I started it all the bad guys were blocked and my load averages started to drop. I highly recommend it for anyone that administers Linux servers.</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.jacoballred.com/free-stuff/cloudflare-rocks/" rel="bookmark" class="crp_title">CloudFlare Rocks!</a></li><li><a href="http://www.jacoballred.com/web-dev/all-the-domains-in-the-world/" rel="bookmark" class="crp_title">All The Domains in the World</a></li><li><a href="http://www.jacoballred.com/web-dev/dos-using-a-single-client/" rel="bookmark" class="crp_title">DoS using a single client</a></li><li><a href="http://www.jacoballred.com/my-sites/save-money-and-make-your-site-faster-using-a-cdn/" rel="bookmark" class="crp_title">Save money AND make your site faster using a CDN</a></li><li><a href="http://www.jacoballred.com/linux/meld-diff/" rel="bookmark" class="crp_title">meld &gt; diff</a></li></ul></div><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/JacobAllred?a=6pojetNgBL0:SrhNVxANl7s:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/JacobAllred?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JacobAllred?a=6pojetNgBL0:SrhNVxANl7s:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/JacobAllred?i=6pojetNgBL0:SrhNVxANl7s:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JacobAllred?a=6pojetNgBL0:SrhNVxANl7s:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/JacobAllred?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JacobAllred?a=6pojetNgBL0:SrhNVxANl7s:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/JacobAllred?i=6pojetNgBL0:SrhNVxANl7s:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.jacoballred.com/free-stuff/protecting-your-server-with-denyhosts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.jacoballred.com/free-stuff/protecting-your-server-with-denyhosts/</feedburner:origLink></item>
		<item>
		<title>My First Firefox Add-on</title>
		<link>http://feedproxy.google.com/~r/JacobAllred/~3/mM3LTOVsOxY/</link>
		<comments>http://www.jacoballred.com/my-sites/my-first-firefox-add-on/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 22:18:24 +0000</pubDate>
		<dc:creator>Jacob Allred</dc:creator>
				<category><![CDATA[My Sites]]></category>
		<category><![CDATA[Web Dev]]></category>

		<guid isPermaLink="false">http://www.jacoballred.com/?p=494</guid>
		<description>Update (7/16/2010): The add-on got reviewed and approved! Yay! I’ve been wanting to make a Firefox add-on FOREVER, but have never found something worth making that hasn’t already been made (or isn’t way beyond my abilities to make). So I decided I’d start simple and make a search provider add-on for ABA Number Lookup. I [...]</description>
			<content:encoded><![CDATA[<p><em><strong>Update (7/16/2010):</strong> The add-on got<a href="https://addons.mozilla.org/en-US/firefox/addon/196149/"> reviewed and approved</a>! Yay!</em></p>
<p>I’ve been wanting to make a Firefox add-on FOREVER, but have never found something worth making that hasn’t already been made (or isn’t way beyond my abilities to make). So I decided I’d start simple and make a search provider add-on for <a href="http://abanumberlookup.com">ABA Number Lookup</a>.</p>
<p>I found <a href="https://developer.mozilla.org/en/Creating_OpenSearch_plugins_for_Firefox">a page</a> in the Mozilla developer wiki that explains how to make an OpenSearch plugin. It is super easy. Basically it is just a snippet of XML that tells the browser where to send queries to, and how to get search suggestions. It also contains basic information like the name of the search engine and who wrote it. Easy stuff.</p>
<p>It took about 30 minutes to modify ABA Number Lookup to be able to return search suggestions and to send the proper MIME header for the OpenSearch XML file. After that was done, I went to the <a href="https://addons.mozilla.org/en-US/developers/addon/submit">“submit an addon” page</a>, followed the instructions, and wham! My search engine add-on is <a href="https://addons.mozilla.org/en-US/firefox/addon/196149/">available to the world</a>!</p>
<p>Mozilla puts all new add-ons in a sandbox to make it a little harder to push malicious code. This is just a search add-on so I think it should pretty quickly get approved and the download page will look a little less scary.</p>
<p>Anyways, it was fun! I might write one for <a href="http://www.rhyta.com">Rhyta Arcade</a> just for fun, though I doubt anyone would actually use that one.</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.jacoballred.com/free-stuff/songbird/" rel="bookmark" class="crp_title">Songbird</a></li><li><a href="http://www.jacoballred.com/my-sites/making-a-popular-game-site/" rel="bookmark" class="crp_title">Making a Popular Game Site</a></li><li><a href="http://www.jacoballred.com/free-stuff/new-aba-number-search-site/" rel="bookmark" class="crp_title">New ABA number search site</a></li><li><a href="http://www.jacoballred.com/my-sites/accessing-the-android-market-in-the-emulator/" rel="bookmark" class="crp_title">Accessing the Android Market in the Emulator</a></li><li><a href="http://www.jacoballred.com/my-sites/pic-code-site/" rel="bookmark" class="crp_title">PIC Code Site</a></li></ul></div><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/JacobAllred?a=mM3LTOVsOxY:kjnekSVP1v8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/JacobAllred?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JacobAllred?a=mM3LTOVsOxY:kjnekSVP1v8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/JacobAllred?i=mM3LTOVsOxY:kjnekSVP1v8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JacobAllred?a=mM3LTOVsOxY:kjnekSVP1v8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/JacobAllred?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JacobAllred?a=mM3LTOVsOxY:kjnekSVP1v8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/JacobAllred?i=mM3LTOVsOxY:kjnekSVP1v8:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.jacoballred.com/my-sites/my-first-firefox-add-on/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.jacoballred.com/my-sites/my-first-firefox-add-on/</feedburner:origLink></item>
		<item>
		<title>Accessing the Android Market in the Emulator</title>
		<link>http://feedproxy.google.com/~r/JacobAllred/~3/mG0nqhzqH_o/</link>
		<comments>http://www.jacoballred.com/my-sites/accessing-the-android-market-in-the-emulator/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 21:06:26 +0000</pubDate>
		<dc:creator>Jacob Allred</dc:creator>
				<category><![CDATA[My Sites]]></category>
		<category><![CDATA[Web Dev]]></category>

		<guid isPermaLink="false">http://www.jacoballred.com/?p=492</guid>
		<description>Update (7/14/2010): The developer of the Fake Name Generator app has gotten in touch with me and we have settled our differences. He didn’t mean any harm, and I’m quite a bit excited about having an Android app that uses my website. Expect awesome app goodness in the next few days! Google has this awesome [...]</description>
			<content:encoded><![CDATA[<p><em><strong>Update (7/14/2010):</strong> The developer of the Fake Name Generator app has gotten in touch with me and we have settled our differences. He didn’t mean any harm, and I’m quite a bit excited about having an Android app that uses my website. Expect awesome app goodness in the next few days!</em></p>
<p>Google has this awesome <a href="http://www.google.com/alerts">alert service</a> that lets you set up search queries and have new search results from them emailed to you automatically. For example, I have “jacob allred” as a query, so anything new with my name in it pops up in my email.</p>
<p>On Saturday night, I got an alert email from Google for “fake name generator”. Turns out somebody made a Fake Name Generator Android application and put it in the Android Market. “Well that is strange,” I thought to myself. “I don’t remember giving anyone permission to steal my content.” The guy stole my product name, logo, look and feel of my site, layout of my site, and my content. And to make it worse, his app has an ad on it so he is making money off my product while I’m stuck paying the bill for the server that powers it.</p>
<p>I decided to try to be a good person first, and try to contact the developer and see if we can work something out. Turns out the Market doesn’t really require developers to provide contact information. Lame. I managed to find an email address but I’m not sure if the developer actually reads it. I sent an email to him letting him know I’m not thrilled about his app and that I’d prefer to work out a way for him to continue using my services (using the API instead of screen scraping) in a way where we can both get paid.</p>
<p>Next step is to try to notify Google of the copyright infringement. Google has <a href="http://www.google.com/android_dmca.html">detailed instructions</a> on how to file a Digital Millennium Copyright Act infringement notification, but it requires either faxing (I don’t have a fax) or mailing (which takes days). Neither is a great option.</p>
<p>My last option is to try to break the app. This requires downloading the app and then viewing my logs to see what it looks like when it scrapes my site. Should be easy, right? Not exactly. I don’t have an Android phone and apparently the Market isn’t available on the emulator. Lame.</p>
<p>Luckily, with much searching, I found <a href="http://tech-droid.blogspot.com/2009/11/android-market-on-emulator.html">this blog post</a> that explains how to get the Market working in the emulator (albeit with an older API version). I ended up having to download the 1.6 image he posted on 4shared.com, but at least it works. Once I got the Market working, I quickly downloaded the app and broke it. That should get the developer’s attention. ;)</p>
<p>Anyways, if you are an Android, iPhone, or Palm app developer and want to make a legitimate fully-sanctioned application, shoot me an email. I’m interested in paying someone to write apps for all of those platforms, or in working out a revenue sharing option.</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.jacoballred.com/money/mobile-money/" rel="bookmark" class="crp_title">Mobile Money</a></li><li><a href="http://www.jacoballred.com/money/ridiculous-ad-networks/" rel="bookmark" class="crp_title">Ridiculous Ad Networks</a></li><li><a href="http://www.jacoballred.com/web-dev/making-a-theater-showtime-listings-website/" rel="bookmark" class="crp_title">Making a Theater Showtime Listings Website</a></li><li><a href="http://www.jacoballred.com/random/yup/" rel="bookmark" class="crp_title">Yup.</a></li><li><a href="http://www.jacoballred.com/my-sites/my-first-firefox-add-on/" rel="bookmark" class="crp_title">My First Firefox Add-on</a></li></ul></div><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/JacobAllred?a=mG0nqhzqH_o:D0AFUEXbGH8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/JacobAllred?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JacobAllred?a=mG0nqhzqH_o:D0AFUEXbGH8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/JacobAllred?i=mG0nqhzqH_o:D0AFUEXbGH8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JacobAllred?a=mG0nqhzqH_o:D0AFUEXbGH8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/JacobAllred?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JacobAllred?a=mG0nqhzqH_o:D0AFUEXbGH8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/JacobAllred?i=mG0nqhzqH_o:D0AFUEXbGH8:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.jacoballred.com/my-sites/accessing-the-android-market-in-the-emulator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.jacoballred.com/my-sites/accessing-the-android-market-in-the-emulator/</feedburner:origLink></item>
		<item>
		<title>Eureka! I got VPN working in Ubuntu!</title>
		<link>http://feedproxy.google.com/~r/JacobAllred/~3/9tb3sHW8mzU/</link>
		<comments>http://www.jacoballred.com/linux/eureka-i-got-vpn-working-in-ubuntu/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 15:02:40 +0000</pubDate>
		<dc:creator>Jacob Allred</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.jacoballred.com/?p=480</guid>
		<description>For months I have been trying to get a Cisco VPN connection working with the NetworkManager applet in Ubuntu with no success. I’ve had to resort to using a Bash script that connects using the vpnc command line utility, and then using sed to manipulate the /etc/resolv.conf file so I can use both my name [...]</description>
			<content:encoded><![CDATA[<div id="attachment_481" class="wp-caption alignleft" style="width: 160px"><a href="http://www.jacoballred.com/wp-content/uploads/2010/07/vpn.png"><img class="size-thumbnail wp-image-481" title="VPN Settings" src="http://www.jacoballred.com/wp-content/uploads/2010/07/vpn-150x150.png" alt="" width="150" height="150" /></a><p class="wp-caption-text">Cisco VPN settings</p></div>
<p>For months I have been trying to get a Cisco VPN connection working with the NetworkManager applet in Ubuntu with no success.</p>
<p>I’ve had to resort to using a Bash script that connects using the <em>vpnc</em> command line utility, and then using <em>sed</em> to manipulate the <em>/etc/resolv.conf</em> file so I can use both my name servers and the VPN name servers. This works okay, but things get wonky several times a day forcing me to disconnect/reconnect.</p>
<p>Well, I <em>finally</em> got it working the right way. How did I do it? Sorry, not really sure. It definitely had something to do with the gnome keyring though.</p>
<p>This may be what made it finally work, but no guarantees:</p>
<ul>
<li>Make sure you have the required software (some of this may not be needed, but it won’t hurt anything to have it installed): <em>sudo apt-get install network-manager-vpnc network-manager-vpnc-gnome vpnc</em></li>
<li>Open your VPN connection settings (right click on NetworkManager icon, click Edit Connections, click VPN tab, click your VPN connection then click Edit). Check the “Available to all users” box at the bottom, then click Apply. Close all the NetworkManager windows. Go back to your VPN connection settings, and uncheck the “Available to all users” box and click Apply. Try connecting to your VPN.</li>
</ul>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.jacoballred.com/my-sites/unexpected-traffic/" rel="bookmark" class="crp_title">Unexpected Traffic</a></li><li><a href="http://www.jacoballred.com/linux/meld-diff/" rel="bookmark" class="crp_title">meld &gt; diff</a></li><li><a href="http://www.jacoballred.com/diy/jumbo-jenga/" rel="bookmark" class="crp_title">Jumbo Jenga</a></li><li><a href="http://www.jacoballred.com/free-stuff/songbird/" rel="bookmark" class="crp_title">Songbird</a></li><li><a href="http://www.jacoballred.com/web-dev/making-eclipse-for-php-useful/" rel="bookmark" class="crp_title">Making Eclipse for PHP Useful</a></li></ul></div><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/JacobAllred?a=9tb3sHW8mzU:ZdYkIN2tIFQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/JacobAllred?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JacobAllred?a=9tb3sHW8mzU:ZdYkIN2tIFQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/JacobAllred?i=9tb3sHW8mzU:ZdYkIN2tIFQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JacobAllred?a=9tb3sHW8mzU:ZdYkIN2tIFQ:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/JacobAllred?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JacobAllred?a=9tb3sHW8mzU:ZdYkIN2tIFQ:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/JacobAllred?i=9tb3sHW8mzU:ZdYkIN2tIFQ:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.jacoballred.com/linux/eureka-i-got-vpn-working-in-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.jacoballred.com/linux/eureka-i-got-vpn-working-in-ubuntu/</feedburner:origLink></item>
	</channel>
</rss>
