<?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>froztbyte.getBlog() &#187; hacks</title>
	<atom:link href="http://blog.froztbyte.net/tag/hacks/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.froztbyte.net</link>
	<description>returns the contents of froztbyte.blog</description>
	<lastBuildDate>Mon, 13 Oct 2014 20:19:25 +0000</lastBuildDate>
	<language>en-US</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.0</generator>
	<item>
		<title>Old tricks, new coins; same problems</title>
		<link>http://blog.froztbyte.net/2012/10/old-tricks-new-coins-same-problems/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=old-tricks-new-coins-same-problems</link>
		<comments>http://blog.froztbyte.net/2012/10/old-tricks-new-coins-same-problems/#comments</comments>
		<pubDate>Tue, 02 Oct 2012 19:34:33 +0000</pubDate>
		<dc:creator><![CDATA[froztbyte]]></dc:creator>
				<category><![CDATA[minipost]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[data transfer]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[streaming]]></category>

		<guid isPermaLink="false">http://blog.froztbyte.net/?p=314</guid>
		<description><![CDATA[In setting up some mirrors recently, I&#8217;ve come to learn that rsync&#8217;s algorithm by default doesn&#8217;t deal well with long-haul TCP going hand in hand with small files. I still need to set aside some time to find a nice &#8230;<p class="read-more"><a href="http://blog.froztbyte.net/2012/10/old-tricks-new-coins-same-problems/">Read more &#187;</a></p>]]></description>
				<content:encoded><![CDATA[<p>In setting <a href="http://debian.mirror.neology.co.za/">up</a> <a href="http://mozilla.mirror.neology.co.za/">some</a> <a href="http://ubuntu.mirror.neology.co.za/">mirrors</a> recently, I&#8217;ve come to learn that rsync&#8217;s algorithm by default doesn&#8217;t deal well with long-haul TCP going hand in hand with small files. I still need to set aside some time to find a nice set of optimization flags to tweak that up a bit more. And when I say &#8220;doesn&#8217;t deal well&#8221;, I mean in the region of &#8220;can tx about 1/3rd a single-session TCP speedtest can do over the same path&#8221;. Later&#8217;s worry, though.</p>
<p>So, the point of this point:</p>
<pre>receiver$ nc -l 1234 | pv | tar xf</pre>
<pre>sender$ tar cf - moz | pv | nc receiver.domain.tld 1234</pre>
<p>And there you have a minimal-CPU-usage streaming file delivery setup. Of course, this doesn&#8217;t deal with retransmits or anything else. This just gets the bulk over. After that you can run an rsync with big block lengths over all of it, and get any files fixed using that.</p>
<p>And the &#8220;old trick&#8221; part of this? As far as I know, this is pretty much how the whole tape drive thing used to work[0]. I&#8217;ve just added some internet in the middle.</p>
<p>[0] &#8211; I wouldn&#8217;t know for certain, before my time</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.froztbyte.net/2012/10/old-tricks-new-coins-same-problems/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HP iLO(2) tapdance</title>
		<link>http://blog.froztbyte.net/2012/07/hp-ilo2-tapdance/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=hp-ilo2-tapdance</link>
		<comments>http://blog.froztbyte.net/2012/07/hp-ilo2-tapdance/#comments</comments>
		<pubDate>Tue, 10 Jul 2012 22:28:40 +0000</pubDate>
		<dc:creator><![CDATA[froztbyte]]></dc:creator>
				<category><![CDATA[minipost]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[hp]]></category>
		<category><![CDATA[httpmount]]></category>
		<category><![CDATA[ilo2]]></category>
		<category><![CDATA[oob]]></category>

		<guid isPermaLink="false">http://blog.froztbyte.net/?p=251</guid>
		<description><![CDATA[Most people who run bigger sorts of servers are probably familiar with OOB management systems, but for those who aren&#8217;t here&#8217;s a short summary: you pay a little bit more when you buy your server, and you get a fantastical &#8230;<p class="read-more"><a href="http://blog.froztbyte.net/2012/07/hp-ilo2-tapdance/">Read more &#187;</a></p>]]></description>
				<content:encoded><![CDATA[<p>Most people who run bigger sorts of servers are probably familiar with <a href="http://en.wikipedia.org/wiki/Out-of-band_management">OOB management systems</a>, but for those who aren&#8217;t here&#8217;s a short summary: you pay a little bit more when you buy your server, and you get a <a href="http://imcol.in/2012/06/things-that-suck-remote-management-consoles/">fantastical tool</a> (vendors, please, get this stuff to fit the modern age. <em>It&#8217;s not like we don&#8217;t want to use them</em>) to use with your server. Power control, hardware status info, (usually) full IP KVM, etc. HP, Dell, Supermicro, Cisco UCS all have this in their own respective flavours.</p>
<p>That&#8217;s just to set the tone for what follows. So let&#8217;s pretend you live in .za, and you have crappy upstream bandwidth from your home. This would make things like firing up the HP SmartStart ISO on your hardware pretty painful, because uploading all that data takes forever. So what do we do?</p>
<p>We download it to another box on the same network and load up the image via a &#8220;hidden&#8221; section of iLO that allows us to mount images from an HTTP source, of course:</p>
<pre>&lt;/&gt;hpiLO-&gt; show
status=0
status_tag=COMMAND COMPLETED

/
  Targets
    system1
    map1
  Properties
  Verbs
    cd version exit show

&lt;/&gt;hpiLO-&gt; cd /map1/oemhp_vm/cddr
status=0
status_tag=COMMAND COMPLETED

/map1/oemhp_vm/cddr

&lt;/map1/oemhp_vm/cddr&gt;hpiLO-&gt; show
status=0
status_tag=COMMAND COMPLETED

/map1/oemhp_vm/cddr
  Targets
  Properties
    oemhp_image=None
    oemhp_connect=No
    oemhp_boot=No_Boot
    oemhp_wp=No
    oemhp_applet_connected=No
  Verbs
    cd version exit show

&lt;/map1/oemhp_vm/cddr&gt;hpiLO-&gt; <strong>set oemhp_image=http://192.0.2.1/helpstuff/&lt;ISO_Name_Here.iso&gt;</strong>
status=0
status_tag=COMMAND COMPLETED

&lt;/map1/oemhp_vm/cddr&gt;hpiLO-&gt; <em><strong>set oemhp_boot=Connect</strong></em>
status=0
status_tag=COMMAND COMPLETED

&lt;/map1/oemhp_vm/cddr&gt;hpiLO-&gt; show
status=0
status_tag=COMMAND COMPLETED

/map1/oemhp_vm/cddr
  Targets
  Properties
    oemhp_image=http://192.0.2.1/helpstuff/&lt;ISO_Name_Here.iso&gt;
    oemhp_connect=Yes
    oemhp_boot=Always
    oemhp_wp=Yes
    oemhp_applet_connected=No
  Verbs
    cd version exit show</pre>
<p>So, in summary:</p>
<p>We <strong><em>cd</em></strong> to the path that contains cddr (which is the virtual disc path). A note on this, the vm path might sometimes be oemhp_vm1. Do a <strong><em>show</em></strong> under <em><strong>/map</strong></em> if you can&#8217;t find the thing.<br />
Then we set <strong><em>oemhp_image</em></strong> and <strong><em>oemhp_boot</em></strong> to values useful for booting.<br />
Now we reboot.</p>
<p>After you&#8217;re done with stuff, just set <em><strong>oemhp_boot</strong></em> to Never, and it&#8217;ll disconnect stuff.</p>
<p>I didn&#8217;t check whether this worked for iLO3 as well, but I&#8217;d guess it&#8217;s relatively similar. Been a few months since I even looked at an iLO3 system. Here&#8217;s the <a href="http://h20000.www2.hp.com/bc/docs/support/SupportManual/c03351064/c03351064.pdf">command ref doc</a> for iLO2 if you want to dig around for some more cool stuff.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.froztbyte.net/2012/07/hp-ilo2-tapdance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zenoss &#8211; Find transforms</title>
		<link>http://blog.froztbyte.net/2011/08/zenoss-find-transforms/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=zenoss-find-transforms</link>
		<comments>http://blog.froztbyte.net/2011/08/zenoss-find-transforms/#comments</comments>
		<pubDate>Thu, 25 Aug 2011 11:10:33 +0000</pubDate>
		<dc:creator><![CDATA[froztbyte]]></dc:creator>
				<category><![CDATA[tech]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[zenoss]]></category>

		<guid isPermaLink="false">http://blog.froztbyte.net/?p=58</guid>
		<description><![CDATA[So I was looking around in one of my zenoss installs some time ago to find what EventClasses I&#8217;d set up transforms in, but didn&#8217;t feel like digging around through the entire tree of EventClasses (a cursory check now reveals &#8230;<p class="read-more"><a href="http://blog.froztbyte.net/2011/08/zenoss-find-transforms/">Read more &#187;</a></p>]]></description>
				<content:encoded><![CDATA[<p>So I was looking around in one of my zenoss installs some time ago to find what EventClasses I&#8217;d set up transforms in, but didn&#8217;t feel like digging around through the entire tree of EventClasses (a cursory check now reveals that there&#8217;s 136 of them in my one installation). At the time, I solved the problem, extracted the data I needed, and then consequently forgot about it.</p>
<p>And then today I needed that info again. \o/ for IRC logs. To do this, connect to the dmd (on my system, which is installed with the debian package, the command for this is <em>su -c &#8220;/usr/local/zenoss/zenoss/bin/zendmd&#8221; zenoss</em>. Adjust it for your own system), and then run the following code</p>
<pre>foo = dmd.Events.getSubEventClasses()
for i in foo:
    if len(i.transform) != 0: print "%s :: \n%s\n\n" % (i.getOrganizerName(), i.transform)</pre>
<p>This will give you human-readable list of all your existing transforms, which makes it easy to find and re-use them.</p>
<p>Edit: this is confirmed working on 3.2.1 (and probably works on the rest of 3.x as well, post in the comments if it doesn&#8217;t). Thanks to jmp242 from #zenoss for testing.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.froztbyte.net/2011/08/zenoss-find-transforms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DNS Platform Migration Fun</title>
		<link>http://blog.froztbyte.net/2011/08/dns-platform-migration-fun/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dns-platform-migration-fun</link>
		<comments>http://blog.froztbyte.net/2011/08/dns-platform-migration-fun/#comments</comments>
		<pubDate>Sat, 06 Aug 2011 00:14:17 +0000</pubDate>
		<dc:creator><![CDATA[froztbyte]]></dc:creator>
				<category><![CDATA[tech]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[rants]]></category>

		<guid isPermaLink="false">http://blog.froztbyte.net/?p=23</guid>
		<description><![CDATA[This post could go by the alternative title &#8220;Screw you, ISC, and thanks for making software that makes me hate DNS even more&#8221;. So let&#8217;s dive right in, shall we? (to those who don&#8217;t care for the intermediate ranting and &#8230;<p class="read-more"><a href="http://blog.froztbyte.net/2011/08/dns-platform-migration-fun/">Read more &#187;</a></p>]]></description>
				<content:encoded><![CDATA[<p>This post could go by the alternative title &#8220;Screw you, ISC, and thanks for making software that makes me hate DNS even more&#8221;. So let&#8217;s dive right in, shall we?</p>
<p><em>(to those who don&#8217;t care for the intermediate ranting and DNS explanations, page down for the tech bits)</em></p>
<p>There are various criticisms of the Domain Name System — the thing which enables anything on the internet to turn &#8220;www.google.com&#8221; or any other such name into something that is meaningful to a computer (see <a href="http://cr.yp.to/djbdns/intro-dns.html">here</a>) — but for the most part it works reasonably well. You set up some DNS software, perhaps battle with the config for a while, and then it works. But as a quote I&#8217;ve seen somewhere (and can&#8217;t find the origin of now with a quick search) says, &#8220;you can&#8217;t truly recommend some software [tool] until you can tell me why it sucks.&#8221; And ISC&#8217;s BIND is arguably a highly irritating piece of software, which has over the years led to a rise in popularity for various other options. Amongst these you&#8217;ll find some general free/opensource implementations, as well as some commercial platforms:</p>
<ul>
<li><a href="http://www.maradns.org/">MaraDNS</a></li>
<li><a href="http://cr.yp.to/djbdns.html">djbdns</a></li>
<li><a href="http://www.powerdns.com/content/home-powerdns.html">PowerDNS</a></li>
<li><a href="http://www.infoblox.com/en/home.html">Infoblox</a></li>
<li><a href="http://www.bluecatnetworks.com/solutions/dns_dhcp">Bluecat Adonis</a></li>
<li><a href="http://aws.amazon.com/route53/">Route53</a></li>
</ul>
<div><span class="Apple-style-span" style="line-height: 18px;">(That&#8217;s the nice thing about diversity and openness — in this regard, an open protocol — you always get some choice and you can pick which one best suits your needs.)</span></div>
<p>&nbsp;</p>
<div>Some years ago, long before my time at my current employer, there was a business requirement for some DNS support in our product suite. And BIND was chosen as the platform, since it&#8217;s a fairly well-known one. As time progresses, so do the things we do, and one day we found BIND was no longer sufficient to do what we needed to. Amongst others, things like a supermaster (a master from which a slave will accept all domain information, regardless of whether that slave knows of such a domain) and dynamic backend functionality were some of those needs.<br />
Now some options like <a href="http://bind-dlz.sourceforge.net/">bind-dlz</a> and friends existed, but none of these really suited us. In the end we decided upon PowerDNS with our own custom software written to handle the dynamic things as business rules would require, and set forth on this path. Some time passes with <a href="http://geekz.za.net/">Rossi</a> writing all the backend code which we&#8217;ve then successfully been running in combination with PowerDNS for some time now.</div>
<p>&nbsp;</p>
<div>Of course, we still have all those old BIND-based installations to get upgraded, and this is that tale. Thankfully, the latest version of our platform was designed with exactly this sort of scenario in mind, since we have to inter-operate with other AXFR-speaking nameservers. So I think &#8220;let&#8217;s just use the config interface to add the migration host as a second slave, massage the data as required on there and then port that data over to the new platform&#8221; even as a tiny voice in my head says &#8220;it&#8217;s never that simple and you know it.&#8221; About 2 hours later I&#8217;m found at my desk swearing violently about all manner of things, which is my out when dealing with frustrating software. This is because I&#8217;d ended up trying to find out why BIND wasn&#8217;t actually slaving anything to my &#8220;new&#8221; nameserver, even though all the configs and zonefiles were right. Not just that, it had also at some point stopped slaving everything it should to the secondary nameserver, which at this point isn&#8217;t a worry since I&#8217;m replacing it anyway.</div>
<p>&nbsp;</p>
<p><span style="text-decoration: underline;">:: TECH ::</span></p>
<div>After figuring out the bits of the migration that matter — such as fixing up the SQL output (from the handy</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">zone2sql</div></td></tr></tbody></table></div>
<p>tool from pdns) that had some oddities due to what looked like multiple $ORIGIN statements in one file — had been figured out, it was pretty painless to move. There were some fun points, like handling multiple $INCLUDE statements in a zonefile, and *hattip* to <a href="http://vhata.net">Jonathan Hitchcock</a> (for the pre- and post-insert idea) and <a href="http://bryndivey.co.za/">Bryn Divey</a> (for googling better than I).</div>
<p>&nbsp;</p>
<div>So, sed trick 1, splitting the file into parts:</div>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">cat foo.zone | sed -n '1,/match/p' &amp;gt; firstbit<br />
cat foo.zone | sed -n '1,/match/!p' &amp;gt; secondbit<br />
cat firstbit secondbit &amp;gt; newfoo</div></td></tr></tbody></table></div>
<div>Sed trick 2, reading in an external file to use it as the replacement text. We have:</div>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"># grep INCLUDE 10_in-addr_arpa.zone<br />
$INCLUDE &quot;/var/cache/bind/10_in-addr_arpa.zone.ns&quot;;<br />
$INCLUDE &quot;/var/cache/bind/10_in-addr_arpa.zone.mx&quot;;</div></td></tr></tbody></table></div>
<div>We do:</div>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">sed -i '/$INCLUDE.*\.ns.*$/ r 10_in-addr_arpa.zone.ns' 10_in-addr_arpa.zone<br />
sed -i '/$INCLUDE.*\.mx.*$/ r 10_in-addr_arpa.zone.mx' 10_in-addr_arpa.zone<br />
&lt;code&gt;</div></td></tr></tbody></table></div>
<p></code></p>
<div>And tada, instant awesome. This reads the 10_in-addr_arpa.zone.mx file for us, and replaces from the appropriate &#8220;$INCLUDE&#8221; start to end with the contents of said file.</div>
<p>&nbsp;</p>
<div>Another issue I ran into was having the generate the appropriate reverse-entry zones for all the public IP netblocks, and with two /21s and a /18 to worry about I wasn&#8217;t planning to do myself if I could help it, so I employed a quick hack with ipcalc and dnspython to transform my /18 into its various component /24s, and then generate reverses:</div>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">ipcalc 11.22.33.0/18 /24 | grep 'Network.*/24' | awk '{print $2}' | cut -d&quot;/&quot; -f 1<br />
11.22.0.0<br />
11.22.1.0<br />
11.22.2.0<br />
...</div></td></tr></tbody></table></div>
<div>We can then easily manipulate these in python or sed or cut, depending on how hacky we feel, but I went with python since I was already using MySQLdb to insert the records after massaging them into the right form.</div>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&amp;gt;&amp;gt;&amp;gt; import dns.reversename<br />
&amp;gt;&amp;gt;&amp;gt; range = &quot;10.22.0.0&quot;<br />
&amp;gt;&amp;gt;&amp;gt; print dns.reversename.from_address(range).to_text().split(&quot;.&quot;,1)[1]<br />
0.22.10.in-addr.arpa.</div></td></tr></tbody></table></div>
<div>And that&#8217;s it for somewhat useful little tricks. There was a bit of a discussion had about delimited formats like this, and Piet Delport (see blogroll) hacked up a neat little delimited datatype which you can find over <a href="http://elegua.za.net/~froztbyte/delimited.py">here</a>. Quick usage instructions:</div>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&amp;gt;&amp;gt;&amp;gt; d = delimited('foo.bar.baz', '.'); d.sort(); print d<br />
bar.baz.foo<br />
d[1:] -&amp;gt; 'bar.baz'<br />
d[1:2] = ['x', 'y', 'z']; d -&amp;gt; 'foo.x.y.z.baz'<br />
&amp;gt;&amp;gt;&amp;gt; d = delimited('0.2.1.10.in-addr.arpa', '.'); del d[0]; print d<br />
2.1.10.in-addr.arpa.</div></td></tr></tbody></table></div>
<div>And now as the sounds of Mogwai, Flunk and Placebo massage my tired noggin, it&#8217;s time for me to go to bed.</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.froztbyte.net/2011/08/dns-platform-migration-fun/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
