<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>TLF Blog</title>
	<atom:link href="http://thelinuxfix.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://thelinuxfix.com/blog</link>
	<description>Hosting, Unix, and everything in between.</description>
	<lastBuildDate>Wed, 06 Feb 2013 18:05:02 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>The Finer Details of OpenSSH</title>
		<link>http://thelinuxfix.com/blog/2013/02/06/the-finer-details-of-openssh/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-finer-details-of-openssh</link>
		<comments>http://thelinuxfix.com/blog/2013/02/06/the-finer-details-of-openssh/#comments</comments>
		<pubDate>Wed, 06 Feb 2013 17:53:23 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[TLF Blog]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[openssh]]></category>
		<category><![CDATA[sysadmin]]></category>

		<guid isPermaLink="false">http://thelinuxfix.com/blog/?p=190</guid>
		<description><![CDATA[In the world of a Unix / Linux administrator, OpenSSH is nearly ubiquitous.   I often to refer to it as the sysadmin&#8217;s network &#8220;swiss-army&#8221; knife because it enables simple automation, file transfers and administration of every day tasks.   Doing it securely all the while! However, though most of us use SSH daily (probably [...]]]></description>
				<content:encoded><![CDATA[<p>In the world of a Unix / Linux administrator, OpenSSH is nearly ubiquitous.   I often to refer to it as the sysadmin&#8217;s network &#8220;swiss-army&#8221; knife because it enables simple automation, file transfers and administration of every day tasks.   Doing it securely all the while!</p>
<p>However, though most of us use SSH daily (probably hundreds of times per day for TLF guys) the SSH client configuration options are curiously underused in most situations.   Normally kept in ~/.ssh/config along with your private and public keys, the myriad of configurable tweaks that can be made to SSH can help improve your efficiency in your day-to-day work.</p>
<p>To get you started, I present a few examples of options and settings I use on my own account.  Of course we encourage you to read the man page for ssh_config (usually &#8216;man 5 ssh_config&#8217; on most Linuxes) and delve into your own customizations too!</p>
<p>&nbsp;</p>
<h3><span style="text-decoration: underline;">ServerAliveInterval 90</span></h3>
<p><em>What It Does:</em>  Tells the SSH client when to consider the connection &#8220;dead&#8221; after not receiving any data from the server.  When a &#8220;dead&#8221; connection is determined, the client will disconnect from the server   The value is in seconds.</p>
<p><em>Why I Use It:</em>  Though there is also a separate configuration for TCPKeepAlive, I&#8217;ve found using this SSH-level server message keepalive in conjunction helps keep connections healthy when things blink.   Example:  I can usually upgrade SSHD and restart the daemon remotely, and still remain connected.   Near magic!</p>
<h3><span style="text-decoration: underline;">StrictHostKeyChecking no</span></h3>
<p><em>What It Does: </em>Sets the behavior of SSH when connecting to a host with new or changed host keys.</p>
<p><em>Why I Use It:</em> Though the setting sounds insecure, it isn&#8217;t.  There is no way to tell SSH to completely disable host keys since that would inherently make it insecure.  Rather, a &#8216;no&#8217; value here tells SSH to <em>automatically</em> add new host keys to ~/.ssh/known_hosts, skipping  the yes or no prompt which you&#8217;re forced to answer.   Existing keys in known_hosts that have changed will continue to prompt, which is the primary reason of maintaining that file in the first place.  Minor time and annoyance saver.</p>
<h3><span style="text-decoration: underline;">ControlMaster no</span></h3>
<p><em>What It Does: </em>Modifies the behavior of connection re-use by the SSH server and client.</p>
<p><em>Why I Use It: </em>By default, SSH will re-use a single control connection for multiple SSH sessions to the same server.   Bet you didn&#8217;t know that!   Try opening multiple terminals and connect to the same server with them.  You should only see one socket used if a &#8216;netstat -an&#8217; is run.    While that&#8217;s a great idea and saves resources, in some cases (for sysadmin purposes), I <em>want</em> it to run in several separate network connections.   This is purely a way for me to eliminate SSH as a problem in some troubleshooting situations.</p>
<h3><span style="text-decoration: underline;">NumberOfPasswordPrompts 5</span></h3>
<p><em>What It Does:</em> Controls how many password attempts are allowed before SSH dumps you back to a shell prompt in failure.  Defaults to 3.</p>
<p><em>Why I Use It: </em>Some days are better typing days than others.  I&#8217;ll be the first to admit that my worse typing days outnumber my good ones.  For years I thought the SSHD daemon controlled the password attempt count, so imagine my chagrin when I found out I could simply set a value and have it ask me a few more times instead!</p>
<p>&nbsp;</p>
<p>There you have it!  A few selections from my own ~/.ssh/config file.    It doesn&#8217;t end here!  There are methods to customize settings for a certain host or subset of hosts, set custom user names for specific servers so you don&#8217;t have to remember them,  customize which local environment variables get replicated to the destination server and more.</p>
<p>Over the years, OpenSSH has proven itself to be an invaluable tool.   Make the most of it!</p>
]]></content:encoded>
			<wfw:commentRss>http://thelinuxfix.com/blog/2013/02/06/the-finer-details-of-openssh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Learning Linux Commands:  tee</title>
		<link>http://thelinuxfix.com/blog/2012/02/16/learning-linux-commands-tee/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=learning-linux-commands-tee</link>
		<comments>http://thelinuxfix.com/blog/2012/02/16/learning-linux-commands-tee/#comments</comments>
		<pubDate>Thu, 16 Feb 2012 23:16:49 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Hosting]]></category>
		<category><![CDATA[Shell Programming]]></category>
		<category><![CDATA[linux commands]]></category>
		<category><![CDATA[tee]]></category>

		<guid isPermaLink="false">http://thelinuxfix.com/blog/?p=174</guid>
		<description><![CDATA[So little input, so much output As any regular Unix user can tell you, there are three primary &#8220;streams&#8221; in which programs are fed and output data.    STDIN, which by default is the keyboard.   STDOUT, which by default is your terminal/screen, and STDERR, which by default is also your terminal/screen.   In addition [...]]]></description>
				<content:encoded><![CDATA[<h2>So little input, so much output</h2>
<p>As any regular Unix user can tell you, there are three primary &#8220;streams&#8221; in which programs are fed and output data.    STDIN, which by default is the keyboard.   STDOUT, which by default is your terminal/screen, and STDERR, which by default is also your terminal/screen.   In addition to their textual reference, these three also have file descriptor numbers assigned (you&#8217;ll find out why in a moment).  Good Unix shell users regularly take full advantage of all of these.   In fact, if you&#8217;ve done any Unix or Linux work you&#8217;ve likely used them without even knowing.   For example.</p>
<pre>cat ~/textfile.txt | more</pre>
<p>You&#8217;ve certainly used the pipe (&#8216;|&#8217;) character before, but do you know what it is actually doing behind-the-scenes?   Effectively, the pipe tells the shell to &#8220;stitch&#8221; the STDOUT from the &#8216;cat&#8217; command to STDIN of the &#8216;more&#8217; command.    In Unix-land this is referred to as creating a pipeline.</p>
<p>&nbsp;</p>
<h2>Master of redirection</h2>
<p>In magician terms, redirection means to draw away the focus of the audience so something sneaky and magical can be occurring elsewhere.   While there&#8217;s very little sneaky going on in the Unix shell, when used correctly STDIN and STDOUT redirection can be pretty magical.   For instance:</p>
<pre>/usr/bin/somepossiblybrokenprogram.sh  1&gt; /var/log/myapp.log  2&gt; /var/log/myapp-error.log</pre>
<p>Stiches the &#8220;regular&#8221; output of your possiblybrokenprogram to STDIN of a log file, while the errors go to STDIN of a log file aptly named myapp-error.log.    Remember I mentioned the file descriptor numbers?   Now you know what they&#8217;re for, and here&#8217;s how they&#8217;re assigned:</p>
<pre>STDIN  - 0
STDOUT - 1
STDERR - 2</pre>
<p>Now you should be able to see how we did that bit of &#8220;magic&#8221; above.   Redirection of output can be darn handy when debugging or extremely useful when running things as scheduled (cron) jobs.   Also note: by default the &#8217;1&#8242; when redirecting STDOUT is unnecessary, since using a bare &#8220;&gt;&#8221; assumes you mean STDOUT.  We specified it above for clarity&#8217;s sake, and you&#8217;re welcome to do it as well.  Either way works.</p>
<p>There is a downside to this however&#8211;you can only redirect any given file descriptor <em>once per command</em>. &#8230;but what if you want to log things to a file <em>and</em> see it on the screen at the same time?  Impossible right?   NAY!</p>
<p>&nbsp;</p>
<h2>Line up to the &#8216;tee&#8217;</h2>
<p>That&#8217;s exactly where the &#8216;tee&#8217; utility comes into play.    Don&#8217;t think of &#8216;tee&#8217; as in a golf tee, but rather like a &#8216;tee&#8217; in plumbing terms.  In other words, it takes the stream and splits it in two, three, or even more:    STDOUT <em>and</em> STDIN simultaneously.  Even STDOUT and STDIN <em>multiple times.</em>   I know you&#8217;re already scratching your head, so how about a few examples.  First the simplest:</p>
<pre>/usr/bin/somepossiblybrokenprogram.sh | tee /var/log/myapp.log</pre>
<p>Hopefully you see what&#8217;s going on here.   Instead of wholly <em>redirecting</em> STDOUT to a single file, we&#8217;ve instead utilized the &#8216;tee&#8217; command to split it to both the screen and a file named /var/log/myapp.log. Pretty handy huh?   But wait, there&#8217;s more!</p>
<pre>/usr/bin/somepossiblybrokenprogram.sh | tee /var/log/myapp.log /var/log/other.log /var/log/joe.sh.log</pre>
<p>You see what it&#8217;s doing?  Not only is it displaying to the screen, but it simultaneously wrote the output to three separate log files!</p>
<p>Finally the &#8216;tee&#8217; command has an option to <em>append</em> to files instead of overwriting them each time it is invoked&#8211;which would be a bummer if you were debugging something.   You do that like so:</p>
<pre>/usr/bin/somepossiblybrokenprogram.sh | tee <span style="color: #ff0000;"><strong>-a</strong></span> /var/log/myapp.log /var/log/other.log /var/log/joe.sh.log</pre>
<p>There you have it!  The very tiny, but immensely useful &#8216;tee&#8217; command.</p>
<p><em>Learning Linux Commands is part of a blog series that highlights useful Linux/Unix commands for our<a title="TLFHosting" href="http://tlfhosting.com/hosting" target="_blank"> web hosting</a> clients.  Keep our blog RSS feed refreshed for new entries&#8211;we&#8217;ll be adding many more soon!  </em></p>
]]></content:encoded>
			<wfw:commentRss>http://thelinuxfix.com/blog/2012/02/16/learning-linux-commands-tee/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting To Know Domain Names</title>
		<link>http://thelinuxfix.com/blog/2012/01/30/getting-to-know-domain-names/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=getting-to-know-domain-names</link>
		<comments>http://thelinuxfix.com/blog/2012/01/30/getting-to-know-domain-names/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 19:28:53 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Hosting]]></category>
		<category><![CDATA[domain names]]></category>
		<category><![CDATA[history]]></category>
		<category><![CDATA[ICANN]]></category>
		<category><![CDATA[InterNIC]]></category>
		<category><![CDATA[registration]]></category>

		<guid isPermaLink="false">http://thelinuxfix.com/blog/?p=145</guid>
		<description><![CDATA[By now nearly  everyone on the planet has heard or used the term &#8220;dot com&#8221;.    Popularized by the so-named bubble of the late 90&#8242;s, &#8220;dot-com&#8221; is now a common moniker describing everything from  new Internet start-up companies to shady guys in Australia! So most people these days have heard of  .com.   You&#8217;ve probably used  .org [...]]]></description>
				<content:encoded><![CDATA[<p>By now nearly  everyone on the planet has heard or used the term &#8220;dot com&#8221;.    Popularized by the so-named bubble of the late 90&#8242;s, &#8220;dot-com&#8221; is now a common moniker describing everything from  new Internet start-up companies to <a href="http://en.wikipedia.org/wiki/Kim_Dotcom">shady guys</a> in Australia!</p>
<p>So most people these days have heard of  .com.   You&#8217;ve probably used  .org and .net as well.   But have you heard of  .info, .mobi or .tv yet?   If not, you will!  All of these are valid &#8220;top-level&#8221; domains (TLD) gaining in popularity and I&#8217;d like to provide a quick history lesson on how these generic codes came to be.</p>
<p>A long time ago when the Internet was barely more than a U.S. Department of Defense research project, only a single TLD called .arpa existed.    ARPA stands for &#8220;<a href="http://en.wikipedia.org/wiki/Advanced_Research_Projects_Agency">Advanced Research Projects Agency</a>&#8220;, or as they&#8217;re more commonly known: &#8220;the group of smart guys that figured out how to build the Internet&#8221;.   This aptly-named .arpa TLD was used to migrate the first domain names off the old non-hierachical <a href="http://en.wikipedia.org/wiki/ARPANET">ARPANET</a> to the shiny new Internet.   Luckily, new TLDs were eventually introduced, because &#8220;ebay.arpa&#8221; and &#8220;google.arpa&#8221; just don&#8217;t have the same ring to them.  Nonetheless .arpa is still in use today by computer network geeks like us even though we changed what it stands for (<strong>a</strong>ddress <strong>r</strong>outing &amp; <strong>p</strong>arameter <strong>a</strong>rea—told you it was geeky!)</p>
<p>Throughout the 1970&#8242;s and 80&#8242;s, the responsibility of managing the new Internet&#8217;s domain names fell loosely to university labs in California, the U.S. Military, and eventually a company called Network Solutions.   During this tumultuous time, the standards for requesting new TLDs and keep track of who was using what was a bit shoddy, as valid TLDs were loosely grouped into three categories:  Countries, Categories, and Multiorganizations.   Not surprisingly things got messy.  For instance, in the early 1980&#8242;s, <a href="http://en.wikipedia.org/wiki/NATO">NATO</a> was upset that there wasn&#8217;t a sufficiently international-themed TLD for their organization, so .nato was created.   In fact during the 1970&#8242;s &#8211; 1980&#8242;s, the various managing organizations were creating TLD&#8217;s that weren&#8217;t so generic.   Can you imagine having a &#8220;.ibm&#8221; and &#8220;.yahoo&#8221; and so on today?   Clearly there needed to be a standard solution as commercial interest in the Internet was growing.</p>
<p>In order to fix the problem the <a href="http://en.wikipedia.org/wiki/National_Science_Foundation">U.S. National Science Foundation</a> decided to hold a bidding competition in the early 1990&#8242;s for three different aspects of  managing domain name data:</p>
<ul>
<li>Registration services, so people could &#8220;sign up&#8221; for domains in a standard way</li>
<li>Information services, so there was an organized method to know who owned what</li>
<li>Directory and Database services, so there was a way to store and look up that data.</li>
</ul>
<p>The contract was awarded to Network Solutions, General Atomics, and AT&amp;T respectively  and the collaberative organization known as <a href="http://en.wikipedia.org/wiki/InterNIC">InterNIC</a> was born.  This was a huge leap for today&#8217;s Internet, as it made it much easier for people and companies to &#8220;get online&#8221; with their own unique domain name since things were more organized under InterNIC.   Many old-timers  (I&#8217;m <em>that </em>old) remember a time when you had no choice in registering a domain.  Everyone had to use <a href="http://www.networksolutions.com/">Network Solutions</a>!</p>
<p>Finally in 1998, a few folks at AT&amp;T forgot to look at the expiration dates on their contracts and AT&amp;T bowed out of managing their piece of the puzzle.   This was a big turning point because the U.S. Government also wasn&#8217;t very interested in managing the Internet any longer.  So instead of the U.S. Government taking on the job on directly,  InterNIC was folded under a new non-profit company called <a href="http://en.wikipedia.org/wiki/ICANN">ICANN</a>.   Contracted by the U.S Commerce Department, ICANN decides things like what new TLDs are deemed worthy.   This is currently how it stands today, and <a href="http://www.internic.net/">InterNIC</a> still provides that service as a subsidiary of ICANN.</p>
<p>Also under the management of ICANN, another big change occurred.   Now any organization with sufficient worthiness (and many papers signed) could register domain names under the existing and established TLDs.    This opened the doors for places like The Linux Fix to <a href="http://tlfhosting.com/">register domain names</a> on behalf of their customers and make the whole process much easier for the average person.   Obviously this has had a sweeping effect on the Internet by putting a globally-accessible domain name within reach of anyone.</p>
<p>And there you have it!   The brief and amazing history of the Internet domain name.   Oh, and perhaps you&#8217;re now wondering what all the valid TLDs are?  <a href="http://en.wikipedia.org/wiki/List_of_Internet_top-level_domains">Here you go</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://thelinuxfix.com/blog/2012/01/30/getting-to-know-domain-names/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Understanding IonCube</title>
		<link>http://thelinuxfix.com/blog/2012/01/10/understanding-ioncube/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=understanding-ioncube</link>
		<comments>http://thelinuxfix.com/blog/2012/01/10/understanding-ioncube/#comments</comments>
		<pubDate>Tue, 10 Jan 2012 20:52:55 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Hosting]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[TLF Blog]]></category>
		<category><![CDATA[Web Hosting]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[ioncube]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://thelinuxfix.com/blog/?p=136</guid>
		<description><![CDATA[PHP has been an Internet mainstay for well over a decade.   Originally created to make boring, static home pages more dynamic and interesting (factoid: PHP originally stood for Personal Home Pages!) it is now nearly ubiquitous in deployment, installed on over one million web servers all over the planet. Much of PHP&#8217;s success can [...]]]></description>
				<content:encoded><![CDATA[<p><a title="PHP Home" href="http://www.php.net/" target="_blank">PHP</a> has been an Internet mainstay for well over a decade.   Originally created to make boring, static home pages more dynamic and interesting (factoid: PHP originally stood for Personal Home Pages!) it is now nearly ubiquitous in deployment, installed on over one million web servers all over the planet.</p>
<p>Much of PHP&#8217;s success can be attributed to it being free and open, able to run on nearly every operating system, and being easy to use and learn.   Yet the same things that have made it so successful in the open source community have historically hindered its commercial success.   But why?</p>
<p>Quite simply PHP is a scripted language.   Unlike C programs which need pre-compilation to run, PHP is compiled and executed on the fly by the PHP engine.  Perl, JavaScript, and Shell script all execute in a similar manner.  This makes PHP very flexible and friendly to open source and hobbyist developers, but it essentially <em>requires</em> you to &#8220;give away&#8221; your source code in order to distribute your program.</p>
<p>Of course commercial developers attempting to make a profit on their work won&#8217;t  want to give away their code, not if they expect to make money! But the PHP market was huge and lucrative, so unsurprisingly a company stepped in to offer a solution.  That solution is IonCube, and here’s how it works.</p>
<p>First, the commercial PHP developer will write their application.   When it&#8217;s finished, the developer will use the IonCube program to encode the raw, human-readable PHP source code in a proprietary binary format.  This protects the underlying source code from prying eyes by turning it into a jumble of unreadable goobleygook.</p>
<p>Next,  the application is purchased by an end user.  After the purchase, the application developer provides the customer with a special key which is used to &#8220;unlock&#8221; the encoded source.</p>
<p>Finally, the customer installs the IonCube Loader on their web server, which acts as a on-the-fly decoder for the coded application.    At no time is the user ever able to view the PHP source code:  all the decoding happens inside the web server via the IonCube loader.   This keeps the application code a secret for the developer, as well as allowing fine control over the licensing of their application via the unlock key.</p>
<p>Though IonCube had a rocky start at its debut in 2002 (thanks somewhat to vocal opposition by strong open source proponents), it has slowly become the de-facto standard for distributing non-free PHP applications.   Though not all web hosts support it, The Linux Fix offers the <a title="TLF Hosting Features" href="http://tlfhosting.com/hosting-features" target="_blank">IonCube Loader</a> with every <a href="http://tlfhosting.com/hosting">web hosting plan</a> we provide.  We hope that it gives you the freedom of using whatever PHP application you choose, without much fuss!</p>
]]></content:encoded>
			<wfw:commentRss>http://thelinuxfix.com/blog/2012/01/10/understanding-ioncube/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Better Living Through Proper Programming</title>
		<link>http://thelinuxfix.com/blog/2011/12/01/better-living-through-proper-programming/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=better-living-through-proper-programming</link>
		<comments>http://thelinuxfix.com/blog/2011/12/01/better-living-through-proper-programming/#comments</comments>
		<pubDate>Thu, 01 Dec 2011 15:56:20 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[error traps]]></category>

		<guid isPermaLink="false">http://thelinuxfix.com/blog/?p=131</guid>
		<description><![CDATA[As I&#8217;m sure is true with many of you reading this, I&#8217;m a busy guy.   My days seem shorter than they used to be, though I&#8217;m pretty sure the Earth is spinning about the same speed it was ten years ago! Nevertheless, when it comes down to scripting and programming, I try to take [...]]]></description>
				<content:encoded><![CDATA[<p>As I&#8217;m sure is true with many of you reading this, I&#8217;m a busy guy.   My days seem shorter than they used to be, though I&#8217;m pretty sure the Earth is spinning about the same speed it was ten years ago!</p>
<p>Nevertheless, when it comes down to scripting and programming, I try to take my time.   When I&#8217;m in the process of writing code, especially when that particular bit of code may involve external processing (say reading from a URI), I like to think out all the possible ways it could go wrong.   Not only is this good programming practice for debugging purposes, but writing it in such a way allows you to present very relevant and accurate error messages to your users.</p>
<p>Now, let me explain why this is important.</p>
<p>Earlier this week I was offering help to my housing overlords with a computer problem they happen to use for their point-of-sale system.   Whenever they tried to print a receipt on their printer, an error message would pop up stating &#8220;Insufficient disk space to print&#8221;.</p>
<p>The computer had 300GB of free disk space.</p>
<p>To make a long story short, the program lied.   The problem was that &#8220;C:\windows\temp&#8221; had the read-only attribute turned on.   The disk wasn&#8217;t full at all, but since the printer driver program couldn&#8217;t write to that path, it <em>assumed</em> the drive was full.  We all know what &#8220;assume&#8221;-ing makes us&#8230;</p>
<p>One silly coding choice by a programmer burned several hours of my life away.   If the programmer had simply chosen to test a few conditions before attempting to write the file, namely:</p>
<ul>
<li>Does the directory exist?</li>
<li>What are the modes on the directory?</li>
<li>Is there a file named the same as I&#8217;m about to write?</li>
<li>&#8230; and so on</li>
</ul>
<div>A more relevant message could have been displayed to me, and I could&#8217;ve solved the problem much more quickly.</div>
<div>So programmers, I beg of you:  When handing operations that lie outside your code (network calls, file access, etc) be sure to remember that ideal conditions may not always exist.   The network could be slow, or intermittent, the directory you&#8217;re writing to may not exist, and so on.   Instead of letting your users guess why your program isn&#8217;t working&#8211;just test these things in your code and tell them!</div>
]]></content:encoded>
			<wfw:commentRss>http://thelinuxfix.com/blog/2011/12/01/better-living-through-proper-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenVZ vs Xen: Some VPS Basics</title>
		<link>http://thelinuxfix.com/blog/2011/10/27/openvz-vs-xen-some-vps-basics/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=openvz-vs-xen-some-vps-basics</link>
		<comments>http://thelinuxfix.com/blog/2011/10/27/openvz-vs-xen-some-vps-basics/#comments</comments>
		<pubDate>Thu, 27 Oct 2011 18:39:12 +0000</pubDate>
		<dc:creator>Steven</dc:creator>
				<category><![CDATA[Virtual Private Servers]]></category>
		<category><![CDATA[OpenVZ]]></category>
		<category><![CDATA[VPS]]></category>
		<category><![CDATA[Xen]]></category>

		<guid isPermaLink="false">http://thelinuxfix.com/blog/?p=85</guid>
		<description><![CDATA[Taking sides in the great virtualization debate: If you&#8217;re looking to virtualize a server of your own or to pick up a VPS, you&#8217;ll probably be picking between these two staples of the virtualized world.  Each technology has its pros and cons, and your decision may change based on your needs as a sysadmin or [...]]]></description>
				<content:encoded><![CDATA[<h2>Taking sides in the great virtualization debate:</h2>
<p>If you&#8217;re looking to virtualize a server of your own or to <a title="Linux VPS by The Linux Fix" href="http://tlfhosting.com/virtual-server">pick up a VPS</a>, you&#8217;ll probably be picking between these two staples of the virtualized world.  Each technology has its pros and cons, and your decision may change based on your needs as a sysadmin or a user (Spoilers: We chose OpenVZ).  Xen and OpenVZ differ in how they virtualize servers, manage memory, and more!  I&#8217;ll try to give a little more in-depth analysis of the differences to help you decide which method is right for you.</p>
<p>The first big difference comes right down to fundamental design goals.  They are different down to the core!  Neither system is full virtualization (virtualized bios, hardware, os, everything). Xen is a hypervisor (or paravirtualization), OpenVZ is container (or OS level) virtualization.  The simple explanation is that a Xen hypervisor runs an OS that knows it&#8217;s being virtualized.  Each user is seperated and running their own OS/system, all on top of the master virtual controller (or Hypervisor).  OpenVZ uses the same underlying OS for each of the users.  The containers are all isolated and separated from each other, but using the same underlying OS.  It creates a kind of OS level &#8216;jail&#8217;.  If you&#8217;re unfamiliar with these concepts, don&#8217;t worry, it&#8217;s not as bad as it sounds!</p>
<p>This intro is getting wordy.  Time to break out some headers!</p>
<p>&nbsp;</p>
<h3><span id="more-85"></span></h3>
<h3>Virtualization (The Underbelly):</h3>
<p>Xen&#8217;s hypervisor basically sits over the hardware, and acts like a hardware virtual manager.  The &#8216;guest systems&#8217; that run on the hypervisor know they&#8217;re on a virtualized system, but are still able to function as wholly separate entities.  This means you can run just about any OS or setup regardless of what the base level system is running.  This lets you do fun stuff like running a Windows VM on a Linux box, or run a different kernel in each guest.</p>
<p>OpenVZ containers don&#8217;t try to virtualize the hardware.  Instead, it uses a special kernel to isolate processes and resources.   Every guest runs on top of the same identical system, but they are fully separated from each other (still have their own filesystems/processes).  Everyone has the same kernel, and you can&#8217;t run different OS types on the same machine (can&#8217;t support both Linux and Windows VMs).</p>
<p>From this limited information, Xen is clearly more versatile.  But wait, I don&#8217;t use Xen.  &#8216;Why not?&#8217;, you ask in a haughty voice.   I&#8217;m getting to it.</p>
<p>&nbsp;</p>
<h3>Overhead (Isolation vs Ease of Use):</h3>
<p>To keep things simple (and relevant), I&#8217;ll just be talking about 64-bit systems.  Xen does some pretty complicated stuff to make sure x86 architecture works just the way they wanted it to, and it&#8217;s impressive enough, but it adds more overhead to the process.  Not wanting to hold that against them, I&#8217;ll keep my discussions relevant to x86_64!  Oh, you only care about 64-bit architecture?  Good on you, mate!</p>
<p>Here personal preference is king.  Xen is much more virtualized, which comes with some nice pros to its cons.   It isolates its resources for you (more on this later).  This also allows custom/different kernels, since each guest is basically a wholly different environment.</p>
<p>But there is a cost in doing all of this.  Xen uses significantly more resources in overhead to create/maintain seperate instances for each VM.  OS level virtualization means many basic components exist once on the machine, and are used by all guests (like the identical kernel).  OpenVZ also uses one filesystem with chrooted environments, instead of fully separated Xen file systems.</p>
<p>If you&#8217;ll need a system with a custom kernel or want to load kernel modules,  stop reading now.  That decision pretty much makes itself, you&#8217;re a Xen fanboy now.  Get your hat on your way out of the lecture.</p>
<p>But with a single kernel, and a more manageable file system making backup/recovery easier, I find OpenVZ more manageable as a sysadmin.</p>
<p>&nbsp;</p>
<h3>Memory Management (The Gamble):</h3>
<p>Here is the real meat and potatoes of this debate.  Xen&#8217;s dedicated memory and swap space, versus OpenVZ&#8217;s density and burstable memory.</p>
<p>It comes down to Xen&#8217;s swap space use versus OpenVZ killing processes.</p>
<p>With Xen&#8217;s isolation, you get your own section of memory.  It is quartered off for you, and nobody else has write privileges to it.  If you max out your memory, it&#8217;ll dump over into swap space so nothing crashes.  The problem on a shared server is that even though disk filesystems and swap spaces are isolated, disk I/O is not.  When people start bursting into swap space, it can cause the exact problem that Xen was intended to isolate around; bad VMs affecting the performance of other VMs.  Sure, your Apache will keep on kicking, but it&#8217;s going to run terribly, and may cause problems for the rest of the machine.</p>
<p>With OpenVZ, you are given a guaranteed amount of memory.  Since it&#8217;s not fully isolated, it&#8217;s a part of shared memory on the server.  Everyone has their guaranteed memory in the same pool.  There&#8217;s also (typically) burstable memory.  If memory isn&#8217;t being utilized, others who need it for a short time can burst up into extra memory.  If guaranteed memory is required somewhere else, this optional burst memory will fail away, and the memory will be allocated to fill a guaranteed quota.  But if you suddenly have no memory where memory once was, things die.  The problem is, they sometimes don&#8217;t die nicely.   No swap space with OpenVZ, so things die, and you don&#8217;t get a lot of control over what dies.</p>
<p>So we have a stability versus performance issue!  Or do we&#8230;.</p>
<p>&nbsp;</p>
<h3>Conclusions (tl;dr):</h3>
<p>I like OpenVZ.  I like the low overhead on containers and the performance is great.  The problem with OpenVZ is over-allocating memory.  You may notice on our VPS plan descriptions that we don&#8217;t talk about burstable memory.  That&#8217;s because we don&#8217;t allocate burstable memory.  We take a stability approach to our VPS.  OpenVZ won&#8217;t allocate memory it doesn&#8217;t have.  It&#8217;ll throw an error and stop new processes from spawning, but you will know about the problem before it accidently kills off Apache or MySQL.  It won&#8217;t bring down the whole house of cards, nor will it put the burden on everyone.</p>
<p>As an admin, I like using OpenVZ for it&#8217;s natural performance benefits, and managing memory with a more Xen approach.  It&#8217;s served me, and our customers, very well.</p>
<p>As a user, I suggest two good options.</p>
<ul>
<li>Use Xen because you need it (custom kernel, different OS, etc)</li>
<li><a title="Virtual Private Severs by The Linux Fix" href="http://tlfhosting.com/virtual-server">Find an OpenVZ vendor who doesn&#8217;t oversell their resources</a> (I suggest The Linux Fix!)</li>
</ul>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://thelinuxfix.com/blog/2011/10/27/openvz-vs-xen-some-vps-basics/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Internet DNS &#8211; Troubleshooting Part 1</title>
		<link>http://thelinuxfix.com/blog/2011/09/23/internet-dns-troubleshooting-primer/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=internet-dns-troubleshooting-primer</link>
		<comments>http://thelinuxfix.com/blog/2011/09/23/internet-dns-troubleshooting-primer/#comments</comments>
		<pubDate>Fri, 23 Sep 2011 15:25:58 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[DNS]]></category>
		<category><![CDATA[Hosting Industry]]></category>
		<category><![CDATA[Web Hosting]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[troubleshooting]]></category>
		<category><![CDATA[web hosting]]></category>

		<guid isPermaLink="false">http://thelinuxfix.com/blog/?p=74</guid>
		<description><![CDATA[DNS is ubiquitous on the Internet, yet it is often misunderstood and remains a mystery to most people. As a hosting provider we administer and troubleshoot DNS issues several times per day, if not several times per hour; so we thought it would be fun and educational to write up a series of posts regarding [...]]]></description>
				<content:encoded><![CDATA[<p><em>DNS is ubiquitous on the Internet, yet it is often misunderstood and remains a mystery to most people. As a hosting provider we administer and troubleshoot DNS issues several times per day, if not several times per hour; so we thought it would be fun and educational to write up a series of posts regarding DNS. </em></p>
<p>&nbsp;</p>
<h2>DNS: Not just for network nerds any more!</h2>
<p>As recently as ten years ago, the inner workings of the Internet remained a mystery for all but the most foolhardy of people.    Fast forward today, and almost everyone has a mobile phone with Internet connectivity, a blog, a Facebook page, and maybe a dedicated website for themselves and family.</p>
<p>Along with any new technology comes the frustration when something doesn&#8217;t work right.  The Internet has become prevalent in nearly everything we do (who watches the Weather Channel now?  Anyone?) and is, in fact, a part of everyday life.   So then, a general understanding of &#8220;how things work&#8221; isn&#8217;t such a bad idea.   After all, you probably know how to check the oil on your car or truck&#8211;certainly fill it up with gas&#8211;even though you may not understand how the rest of the engine works.</p>
<p>&nbsp;</p>
<h2>Getting Started with DiG</h2>
<p>Being that DNS is involved in nearly every bit of communication on the Internet, it&#8217;s a great place to start troubleshooting.   If a web site doesn&#8217;t come up, is it because that server is down?  Or is your DNS acting up&#8230;maybe theirs?   Well read on!  We&#8217;ll show you how to find out.</p>
<p>The primary tool to use in troubleshooting DNS is called DiG, short for the &#8220;DNS Information Groper&#8221; (seriously).  It is part of the BIND DNS Server software package.   Other than the slightly wonky name, its use as an investigative DNS tool is invaluable.   If you are using an Apple Mac or some type of Linux/Unix variant, DiG is likely already installed (on a Mac, open the Terminal to use it).   If you&#8217;re on a Windows host, you can download <a title="DiG For Windows" href="http://members.shaw.ca/nicholas.fong/dig/">DiG for Windows</a>, which is roughly the same tool compiled for the Microsoft platform.</p>
<p>Lets fire up dig and perform a quick query to determine if it&#8217;s working.   Open up your terminal or command line box, and type the following:</p>
<p>dig google.com. NS</p>
<p>After a very short period of time, you should get results which look similar to the following:</p>
<p>[bdowney@tlfmgt1 ~]$ dig google.com NS</p>
<p>; &lt;&lt;&gt;&gt; DiG 9.3.6-P1-RedHat-9.3.6-16.P1.el5 &lt;&lt;&gt;&gt; google.com NS<br />
;; global options:  printcmd<br />
;; Got answer:<br />
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 52302<br />
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0</p>
<p>;; QUESTION SECTION:<br />
;google.com.            IN    NS</p>
<p>;; ANSWER SECTION:<br />
google.com.        172781    IN    NS    ns2.google.com.<br />
google.com.        172781    IN    NS    ns1.google.com.<br />
google.com.        172781    IN    NS    ns3.google.com.<br />
google.com.        172781    IN    NS    ns4.google.com.</p>
<p>;; Query time: 0 msec<br />
;; SERVER: 172.16.65.90#53(172.16.65.90)<br />
;; WHEN: Tue Sep 13 12:48:38 2011<br />
;; MSG SIZE  rcvd: 100</p>
<p>So what exactly is this telling us?   First, the header shows the DiG version, as well as some basic information.   Above, the header  shows that we performed a Query, there was No Error, as well as your query&#8217;s ID.   Furthermore, it shows the flags passed to DiG when it was run (the ones printed are the default),  and finally the enumeration of queries and results returned.   In this case, we sent one query: NS, (&#8220;Give me the DNS servers for google.com&#8221;) and it returned four distinct answers  (ns1, 2, 3, and 4.google.com).  Finally the bottom portion shows how long the query took (pretty fast in our case!) as well as the DNS server that it obtained the information from.</p>
<p>&nbsp;</p>
<p><em>In our next post, we&#8217;ll show you how to use dig to look up different types of DNS &#8220;records&#8221;, some of which will let you even troubleshoot email problems.</em></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://thelinuxfix.com/blog/2011/09/23/internet-dns-troubleshooting-primer/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PHP 5.3 with CentOS 5</title>
		<link>http://thelinuxfix.com/blog/2011/07/25/php-5-3-with-centos-5/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=php-5-3-with-centos-5</link>
		<comments>http://thelinuxfix.com/blog/2011/07/25/php-5-3-with-centos-5/#comments</comments>
		<pubDate>Mon, 25 Jul 2011 10:30:59 +0000</pubDate>
		<dc:creator>Steven</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[VPS]]></category>
		<category><![CDATA[web hosting]]></category>

		<guid isPermaLink="false">http://www.thelinuxfix.com/blog/?p=44</guid>
		<description><![CDATA[Retouching on a classic problem once again.  Installing PHP 5.3 for CentOS 5.   With CentOS 6 on the horizon and growing in use this problem will eventually fade, but until it&#8217;s turn to shine, CentOS 5 will need a little love. CentOS 5 supports PHP 5.1.6, and will not ever officially support the newer versions [...]]]></description>
				<content:encoded><![CDATA[<p style="text-align: left;">Retouching on a classic problem once again.  Installing PHP 5.3 for CentOS 5.   With CentOS 6 on the horizon and growing in use this problem will eventually fade, but until it&#8217;s turn to shine, CentOS 5 will need a little love.</p>
<p style="text-align: left;">CentOS 5 supports PHP 5.1.6, and will not ever officially support the newer versions of PHP.  As stated in the CentOS wiki &#8220;As with each other program in CentOS, the version numbers of released software will <strong>not</strong> change over the life time of a CentOS product.&#8221;  So in short, the yum repos we all know and love have no intention of including the new PHP software.</p>
<p style="text-align: left;">But what can we do?  Well, we&#8217;re Linux users.  We can do whatever we want!</p>
<p style="text-align: left;">Here at <a href="http://thelinuxfix.com">The Linux Fix</a> we have a talented bloke named <a href="http://www.techrockdo.com/">Greg</a> who has worked on this <a href="http://www.techrockdo.com/technology/php-5-3-5-on-red-hatcentos-5">problem in the past</a> when he created a yum repo for PHP 5.3.5 for use with CentOS.  Well, what&#8217;s changed since then?  Not much actually!  In fact, most of the info here will just be the same helpful tips he wrote back in February.  Except now it&#8217;s with an updated repo for 5.3.6, with additional information for TLF clients!  (oh look, <a href="http://www.techrockdo.com/technology/php-5-3-6-packages-for-rhel-and-centos-5">he beat me</a> to this post!)</p>
<p style="text-align: left;">So first things first, you&#8217;ll need to add our TLF branded repo to your yum repository list.  We keep all that tidy PHP goodness over here at <a href="http://yum.thelinuxfix.com">yum.thelinuxfix.com</a> (with appropriate rpms for 32 and 64-bit systems).</p>
<h3 style="text-align: left;">Install Instructions:</h3>
<p style="text-align: left;">As root run:</p>
<pre style="text-align: left;">64-bit:
rpm -Uvh http://yum.thelinuxfix.com/RHEL/5/x86_64/tlf-release-1-2.noarch.rpm</pre>
<pre>32-bit:
rpm -Uvh http://yum.thelinuxfix.com/RHEL/5/i386/tlf-release-1-2.noarch.rpm</pre>
<p>&nbsp;</p>
<p>This will add our rpm repository to your yum list of approved repos!  We&#8217;re all excited about it.<br />
So what&#8217;s left?  Updating(or installing) PHP of course!  You have a few options here.  If you&#8217;ve already got PHP installed (probably 5.1.6) then a simple</p>
<pre> yum update php</pre>
<p>will do. This should nail the basics, like php; php-common; php-cli; (php and it&#8217;s immediate dependancies), as well as any additional php modules you may be using (like php-pdo; php-odbc; php-mysql; etc). This won&#8217;t always catch everything, so be thorough in making sure you update everything you need (case in point: This won&#8217;t catch php-pear, which is available in our repo).</p>
<h3>zVPS™ Users:</h3>
<p>But wait! You&#8217;re a customer using one of our <a href="http://thelinuxfix.com/virtual-server">zVPS™ Virtual Servers</a>? Well, I&#8217;ve got good news!</p>
<p>As you (hopefully) already know, we have pre-designed single button install templates for many useful purposes.  One of these templates (VPS Template Web Server) has all the CentOS 5 latest rpms for php and a number of relevant mods.  And since I like you guys so much (almost as much as I like parenthesis), I wrote you a short little gift.</p>
<p>As root run:</p>
<pre>wget -O - http://www.thelinuxfix.com/script/tlfphp53.sh|bash</pre>
<p>If you&#8217;ve already installed our web server template, this will automatically set up and install the tlf-repo and update php and it&#8217;s friends to 5.3.6!</p>
<p>&#8211;Steven</p>
]]></content:encoded>
			<wfw:commentRss>http://thelinuxfix.com/blog/2011/07/25/php-5-3-with-centos-5/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Finding Focus in Hosting</title>
		<link>http://thelinuxfix.com/blog/2011/07/25/finding-focus-in-hosting/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=finding-focus-in-hosting</link>
		<comments>http://thelinuxfix.com/blog/2011/07/25/finding-focus-in-hosting/#comments</comments>
		<pubDate>Mon, 25 Jul 2011 10:30:50 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Hosting Industry]]></category>
		<category><![CDATA[Web Hosting]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[customer service]]></category>
		<category><![CDATA[web hosting]]></category>

		<guid isPermaLink="false">http://www.thelinuxfix.com/blog/?p=37</guid>
		<description><![CDATA[About a year ago, I was onsite at our colocation getting some work done.    While I was there a fellow that ran a large competing web hosting company had also come in to do the same.   Being a cordial guy I walked over and introduced myself, we exchanged pleasantries and discussed our industry and rival [...]]]></description>
				<content:encoded><![CDATA[<p>About a year ago, I was onsite at our colocation getting some work done.    While I was there a fellow that ran a large competing web hosting company had also come in to do the same.   Being a cordial guy I walked over and introduced myself, we exchanged pleasantries and discussed our industry and rival businesses with a sense of humor dashed in.</p>
<p>As the conversation continued, he had mentioned how the web hosting industry was now a commodity, and they were smashing all kinds of record profits by offering super cheap hosting and doing huge volume.   As he was talking, I kept glancing over his shoulder at their equipment:   Clone PC&#8217;s running hundreds of websites each,  $40 Linksys switches,  OfficeMax power strips, and twist ties.   Lots and lots of twist ties.</p>
<p>We bid farewall to each other and I made mental notes of what I found interesting:</p>
<ul>
<li>He didn&#8217;t mention his customers once.</li>
<li>He took pride in how cheap their infrastructure was.   In fact, he made a joke about a noisy fan that had been failing for six months.</li>
<li>His focus on their profits dominated the discussion</li>
</ul>
<p>Though he seemed like a great guy I wouldn&#8217;t want to be his customer.   He may be offering something for a low price point, but he&#8217;s doing so at the expense of service and quality.    The Linux Fix has always believed that with great customer service comes success.   Our <a href="http://thelinuxfix.com/hosting">web hosting</a> customers can&#8217;t succeed if we don&#8217;t provide quality equipment and service.   We want to be known for our service and support, not for our profit margin.</p>
<p>In fact we believe if we take care of our customers and clients, the business will take care of itself.   So far it has worked pretty well!</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://thelinuxfix.com/blog/2011/07/25/finding-focus-in-hosting/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>New Dedicated Server Names</title>
		<link>http://thelinuxfix.com/blog/2011/05/17/new-dedicated-server-names/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=new-dedicated-server-names</link>
		<comments>http://thelinuxfix.com/blog/2011/05/17/new-dedicated-server-names/#comments</comments>
		<pubDate>Tue, 17 May 2011 23:14:38 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Dedicated Servers]]></category>
		<category><![CDATA[Hosting]]></category>
		<category><![CDATA[dedicated servers]]></category>
		<category><![CDATA[naming]]></category>

		<guid isPermaLink="false">http://dev.thelinuxfix.com/wp/?p=1</guid>
		<description><![CDATA[In order to keep things consistent out there on the webs, we&#8217;ve decided to update our dedicated server naming scheme.   Starting soon, all new dedicated server hosts will be named &#8216;hsdsX.linuxfix.com&#8217;, where &#8216;X&#8217; is the server number. This shouldn&#8217;t effect any of your services, and any personal domain names you may have pointing to your [...]]]></description>
				<content:encoded><![CDATA[<p>In order to keep things consistent out there on the webs, we&#8217;ve decided to update our <a href="http://thelinuxfix.com/dedicated-server">dedicated server</a> naming scheme.   Starting soon, all new dedicated server hosts will be named &#8216;hsdsX.linuxfix.com&#8217;, where &#8216;X&#8217; is the server number.</p>
<p>This shouldn&#8217;t effect any of your services, and any personal domain names you may have pointing to your dedicated server remain unchanged.</p>
]]></content:encoded>
			<wfw:commentRss>http://thelinuxfix.com/blog/2011/05/17/new-dedicated-server-names/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
