<?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>Chris Tate-Davies</title>
	<atom:link href="http://blog.tatedavies.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.tatedavies.com</link>
	<description>An archive of helpful tit bits of information for development, and probably some stuff that is incomplete, wrong or boring...</description>
	<lastBuildDate>Tue, 17 Apr 2012 15:30:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Absolute positioning within another container</title>
		<link>http://blog.tatedavies.com/2012/04/17/absolute-positioning-within-another-container/</link>
		<comments>http://blog.tatedavies.com/2012/04/17/absolute-positioning-within-another-container/#comments</comments>
		<pubDate>Tue, 17 Apr 2012 15:30:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://blog.tatedavies.com/?p=364</guid>
		<description><![CDATA[Say you want to position something within its container, then the element you are trying to position needs to have: position: absolute; But the parent container can simply have: position: relative; So in full: &#60;div class="container"&#62; &#60;div class="abs-position"&#62; Hello world! &#60;/div&#62; &#60;/div&#62; And then simple CSS: .container { position: relative; } .abs-position { position: absolute; [...]]]></description>
			<content:encoded><![CDATA[<p>Say you want to position something within its container, then the element you are trying to position needs to have:</p>
<pre>position: absolute;</pre>
<p>But the parent container can simply have:</p>
<pre>position: relative;</pre>
<p>So in full:</p>
<pre>&lt;div class="container"&gt;
    &lt;div class="abs-position"&gt;
        Hello world!
    &lt;/div&gt;
&lt;/div&gt;</pre>
<p>And then simple CSS:</p>
<pre>
.container {
    position: relative;
}

.abs-position {
    position: absolute;
    left: 100px;
    height: 200px;
}
</pre>
<p>Easy solution to an age old problem.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tatedavies.com/2012/04/17/absolute-positioning-within-another-container/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Custom Zend Validator error messages</title>
		<link>http://blog.tatedavies.com/2012/04/17/custom-zend-validator-error-messages/</link>
		<comments>http://blog.tatedavies.com/2012/04/17/custom-zend-validator-error-messages/#comments</comments>
		<pubDate>Tue, 17 Apr 2012 14:05:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[elements]]></category>
		<category><![CDATA[input]]></category>
		<category><![CDATA[validation]]></category>
		<category><![CDATA[Zend]]></category>
		<category><![CDATA[zend framework]]></category>
		<category><![CDATA[Zend_Form]]></category>
		<category><![CDATA[Zend_Validator]]></category>

		<guid isPermaLink="false">http://blog.tatedavies.com/?p=353</guid>
		<description><![CDATA[The Zend Validator error messages are not the most helpful. Considor the below code for creating a file input: $this-&#62;addElement('file', 'signature', array( 'validators' =&#62; array( array('Size', false, 20480), //20k array('Extension', false, 'png'), ), 'required' =&#62; false, 'label' =&#62; 'Signature', 'destination' =&#62; SIG_PATH, )); For instance, on the above file input, if you attempt to upload [...]]]></description>
			<content:encoded><![CDATA[<p>The Zend Validator error messages are not the most helpful. Considor the below code for creating a file input:</p>
<pre>$this-&gt;addElement('file', 'signature', array(
    'validators' =&gt; array(
        array('Size', false, 20480), //20k
        array('Extension', false, 'png'),
    ),
    'required' =&gt; false,
    'label' =&gt; 'Signature',
    'destination' =&gt; SIG_PATH,
));</pre>
<p>For instance, on the above file input, if you attempt to upload something that is not a PNG file (i.e. photo.JPG, the message will be:</p>
<pre>File 'photo.JPG' has a false extension</pre>
<p>That&#8217;s not very user friendly as it doesn&#8217;t give the user any indication of what is an &#8220;allowed&#8221; file type.</p>
<p><span id="more-353"></span>So, to combat this, create separate Zend Validators and attach them to the Form Elements separately:</p>
<pre>$this-&gt;addElement('file', 'signature', array(
    'required' =&gt; false,
    'label' =&gt; 'Signature',
    'destination' =&gt; SIG_PATH,
    'maxfilesize' =&gt; 20480,
));

$fileSize = new Zend_Validate_File_Size(20480);
$fileSize-&gt;setMessage('Please only upload a picture with a maximum 20kb file size');

$fileType = new Zend_Validate_File_Extension('png');
$fileType-&gt;setMessage('Only .png files are acceptable for signatures.');

$sig = $this-&gt;getElement('signature');
$sig-&gt;addValidators(array($fileSize, $fileType));</pre>
<p>This way you have total control over the messages sent to the user. And after all, user experience is key these days.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tatedavies.com/2012/04/17/custom-zend-validator-error-messages/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>PHP Create a ZIP file</title>
		<link>http://blog.tatedavies.com/2012/03/19/php-create-a-zip-file/</link>
		<comments>http://blog.tatedavies.com/2012/03/19/php-create-a-zip-file/#comments</comments>
		<pubDate>Mon, 19 Mar 2012 17:17:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[compression]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[zip]]></category>

		<guid isPermaLink="false">http://www.christatedavies.co.uk/?p=349</guid>
		<description><![CDATA[I was just playing around with PHP&#8217;s ability to create compressed files, and I had a problem. My ZIP file was not getting created but I wasn&#8217;t getting any errors. $zip = new ZipArchive(); $zipFile = '/tmp/' . uniqid() . '.zip'; if (file_exists($zipFile)) {     unlink($zipFile); } $zip-&#62;open($zipFile, ZIPARCHIVE::CREATE); foreach ($files as $type =&#62; $file) [...]]]></description>
			<content:encoded><![CDATA[<p>I was just playing around with PHP&#8217;s ability to create compressed files, and I had a problem. My ZIP file was not getting created but I wasn&#8217;t getting any errors.</p>
<pre>$zip = new ZipArchive();
$zipFile = '/tmp/' . uniqid() . '.zip';

if (file_exists($zipFile)) {
    unlink($zipFile);
}

$zip-&gt;open($zipFile, ZIPARCHIVE::CREATE);

foreach ($files as $type =&gt; $file) {
    $zip-&gt;addFile($file);
}

$zip-&gt;close();</pre>
<p>Now, pay particular attention to the files you are adding using addFile() as if you have entered them wrong, you won&#8217;t get an error message, and infact, if you use $zip-&gt;getStatusString() you will receieve a &#8220;No error&#8221; message &#8211; completely throwing you off the scent.</p>
<p>More information about ZipArchive can be found at <a href="http://www.php.net/manual/en/class.ziparchive.php" target="_blank">http://www.php.net/manual/en/class.ziparchive.php</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tatedavies.com/2012/03/19/php-create-a-zip-file/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Netbeans &#8211; Goto matching brace/bracket</title>
		<link>http://blog.tatedavies.com/2012/03/15/netbeans-goto-matching-bracebracket/</link>
		<comments>http://blog.tatedavies.com/2012/03/15/netbeans-goto-matching-bracebracket/#comments</comments>
		<pubDate>Thu, 15 Mar 2012 11:26:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Doctrine]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[brackets]]></category>
		<category><![CDATA[keyboard]]></category>
		<category><![CDATA[netbeans]]></category>
		<category><![CDATA[shortcut]]></category>
		<category><![CDATA[{}]]></category>

		<guid isPermaLink="false">http://www.christatedavies.co.uk/?p=345</guid>
		<description><![CDATA[If using Netbeans for your development and you have a horrendous spagetti coded &#8220;if&#8221; statement, you can use a keyboard shortcut to go to the matching opening or closing bracket. Simply click on the first (or last) bracket, and then press CTRL + [ and Netbeans will move the cursor to the matching bracket. Its [...]]]></description>
			<content:encoded><![CDATA[<p>If using Netbeans for your development and you have a horrendous spagetti coded &#8220;if&#8221; statement, you can use a keyboard shortcut to go to the matching opening or closing bracket.</p>
<p>Simply click on the first (or last) bracket, and then press CTRL + [ and Netbeans will move the cursor to the matching bracket. Its not CTRL + ] for the reverse, its CTRL + [ for both.</p>
<p>I can confirm that this works in Netbeans 7.0.1 on Linux and Mac (seeing as its a Java app, it should be the same on Windows too)</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tatedavies.com/2012/03/15/netbeans-goto-matching-bracebracket/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript &#8211; Use a variable for a function call</title>
		<link>http://blog.tatedavies.com/2012/02/28/javascript-use-a-variable-for-a-function-call/</link>
		<comments>http://blog.tatedavies.com/2012/02/28/javascript-use-a-variable-for-a-function-call/#comments</comments>
		<pubDate>Tue, 28 Feb 2012 16:28:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[callback]]></category>
		<category><![CDATA[calls]]></category>
		<category><![CDATA[functions]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[window]]></category>

		<guid isPermaLink="false">http://www.christatedavies.co.uk/?p=341</guid>
		<description><![CDATA[Sometimes you want to pass a function around from script to script as a string containing the function name (well maybe not, but I have some legacy code that does require this) So if you have a function called doSomething() and you want to call it from another page, but you&#8217;ve passed it like so: [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes you want to pass a function around from script to script as a string containing the function name (well maybe not, but I have some legacy code that does require this)</p>
<p>So if you have a function called doSomething() and you want to call it from another page, but you&#8217;ve passed it like so:</p>
<pre>&lt;script type="text/javascript"&gt;
function startSequence()
    {
    var nextFunction = 'doSomething';
    return nextFunction;
    }
window[startSequence()]();
&lt;/script&gt;</pre>
<p>So what I&#8217;m saying is the function will be placed into the Window object, so you can call it :</p>
<pre>window[variable]();</pre>
<p>And it obviously extends to the window.opener object.</p>
<p>I&#8217;m sure there are better ways, but this is handy to know I think.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tatedavies.com/2012/02/28/javascript-use-a-variable-for-a-function-call/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is database sharding?</title>
		<link>http://blog.tatedavies.com/2012/02/14/what-is-database-sharding/</link>
		<comments>http://blog.tatedavies.com/2012/02/14/what-is-database-sharding/#comments</comments>
		<pubDate>Tue, 14 Feb 2012 10:39:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[efficient]]></category>
		<category><![CDATA[normalisation]]></category>
		<category><![CDATA[partitioning]]></category>
		<category><![CDATA[sharding]]></category>
		<category><![CDATA[tables]]></category>

		<guid isPermaLink="false">http://www.christatedavies.co.uk/?p=334</guid>
		<description><![CDATA[Databases, by their own nature, become large beasts. This is a fact of life and whilst a lot of databases don&#8217;t encroach on &#8220;unusable&#8221; sizes, some do. There is a practise called sharding that allows the database content to be split across servers. If you were to take a very simple example, take a customer database and [...]]]></description>
			<content:encoded><![CDATA[<p>Databases, by their own nature, become large beasts. This is a fact of life and whilst a lot of databases don&#8217;t encroach on &#8220;unusable&#8221; sizes, some do.</p>
<p>There is a practise called <strong>sharding</strong> that allows the database content to be split across servers.</p>
<p>If you were to take a very simple example, take a customer database and look at the main table, &#8220;customers&#8221; &#8211; this is going to be an ever growing table of customers details. If the business in question is very successful, the database may grow very quickly indeed. Historicaly you would have all the details in one table. Customer names, addresses, phone numbers, etc. This isn&#8217;t the most efficient way of storing a lot of data.</p>
<p>We have two methods of making it more efficient. Horizontal and Vertical partitioning. You may have heard of partitioning before in relation to disk drives, and its loosely based on the same principle. Putting data in different places to keep things tidy and more efficient.</p>
<ol>
<li><span style="text-decoration: underline;">Horizontal Partitioning</span> is known as sharding. This involves splitting the data and tables and putting some data in one and some in others. In our example, we could have all customers starting with the letters A-M in one table, and the N-Z customers in another. Now potentially the tables are halved in size. And then you just have to change your lookup service to distinguish which table to get the data from. You could split it even further, down to Country, or Post Code, etc.</li>
<li><span style="text-decoration: underline;">Vertical Partitioning</span> is where you take the customers table, and split the fields out into separate tables. So you might have all the static details for the customer (stuff that doesn&#8217;t change very often, like name, address, email, etc) in one table, and data that changes often in another table. The static tables get cached and therefore become quicker, and the table size shrinks as it hasn&#8217;t got <strong>all</strong> the data in it. This is also sometimes called <a href="http://en.wikipedia.org/wiki/Database_normalization" target="_blank">database normalisation</a>.</li>
</ol>
<p>That was just a small explanation about Database Sharding for you.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tatedavies.com/2012/02/14/what-is-database-sharding/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Using mod_rewrite for clean URLs</title>
		<link>http://blog.tatedavies.com/2012/01/31/using-mod_rewrite-for-clean-urls/</link>
		<comments>http://blog.tatedavies.com/2012/01/31/using-mod_rewrite-for-clean-urls/#comments</comments>
		<pubDate>Tue, 31 Jan 2012 11:18:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[IT]]></category>

		<guid isPermaLink="false">http://www.christatedavies.co.uk/?p=323</guid>
		<description><![CDATA[Say your message board on your blog uses the following request URL to find and display the correct data: http://www.mysite.com/blog/index.php?category=news&#38;year=2012&#38;month=1 This is a rather simple request, but it is not very nice looking or easy on the eye, and it can be improved, for the user end experience. Take this for instance: http://www.mysite.com/blog/news/2012/1 That&#8217;s much [...]]]></description>
			<content:encoded><![CDATA[<p>Say your message board on your blog uses the following request URL to find and display the correct data:</p>
<pre>http://www.mysite.com/blog/index.php?category=news&amp;year=2012&amp;month=1</pre>
<p>This is a rather simple request, but it is not very nice looking or easy on the eye, and it can be improved, for the user end experience.</p>
<p>Take this for instance:</p>
<pre>http://www.mysite.com/blog/news/2012/1</pre>
<p>That&#8217;s much nicer, and easier to read and understand even for a non technical person. They may understand the category, year and month without any input from you,</p>
<p>How do you convert your site? Well you don&#8217;t need to, but you can use a .htaccess mod_rewrite to change the url in the background.</p>
<pre>RewriteRule blog/([a-z0-9]+)/([0-9]{4})/([0-9]) /blog/index.php?category=$1&amp;year=$2&amp;month=$3 [L]</pre>
<p>This takes the first quantifier after blog (a-z0-9) and says any characters, put into $1. The second is a 4 digit number, and the third, any number.</p>
<p>The [L] tells the re-write engine that if this rule matches, don&#8217;t do any more rule processing (last one)</p>
<p>If you implement this way of displaying your links, then your site should be better off in the big wide world of search engines. A lot of search engine spiders ignore URL&#8217;s with &amp; in them as it can cause recursive looping and its easier to just ignore them.</p>
<p>Also, if you come to rewrite your blog in a new language, ASP for instance (shudder at the thought) then you can change the rule simply:</p>
<pre>RewriteRule blog/([a-z0-9]+)/([0-9]{4})/([0-9]) /blog/index.asp?category=$1&amp;year=$2&amp;month=$3 [L]</pre>
<p>Thinking about your user experience, even if you are considering the search engines, is important.</p>
<p>If you want to read more about the Apache re-write module, you can go <a href="http://httpd.apache.org/docs/current/rewrite/" target="_blank">here</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tatedavies.com/2012/01/31/using-mod_rewrite-for-clean-urls/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Message: [Syntax Error] Expected PlainValue, got &#8221;&#8217; at position x in property {model}</title>
		<link>http://blog.tatedavies.com/2011/12/14/message-syntax-error-expected-plainvalue-got-at-position-x-in-property-model/</link>
		<comments>http://blog.tatedavies.com/2011/12/14/message-syntax-error-expected-plainvalue-got-at-position-x-in-property-model/#comments</comments>
		<pubDate>Wed, 14 Dec 2011 10:36:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Doctrine]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[annotation]]></category>
		<category><![CDATA[doctrine]]></category>
		<category><![CDATA[ORM]]></category>
		<category><![CDATA[PlainValue]]></category>
		<category><![CDATA[quotes]]></category>

		<guid isPermaLink="false">http://www.christatedavies.co.uk/?p=316</guid>
		<description><![CDATA[Was getting the above error in my Doctrine project, turned out I had used a single quote in the ORM Annotations:     /**      * @ORM\Column(type='integer', name='row_number')      * @var int      */     protected $rowNumber; Your ORM Annotations must be double quotes &#8221; to allow the read ahead to read ahead&#8230; Should be like: [...]]]></description>
			<content:encoded><![CDATA[<p>Was getting the above error in my Doctrine project, turned out I had used a single quote in the ORM Annotations:</p>
<pre>    /**
     * @ORM\Column(type='integer', name='row_number')
     * @var int
     */
    protected $rowNumber;</pre>
<p>Your ORM Annotations <strong>must</strong> be double quotes &#8221; to allow the read ahead to read ahead&#8230;</p>
<p>Should be like:</p>
<pre>    /**
     * @ORM\Column(type="integer", name="row_number")
     * @var int
     */
    protected $rowNumber;</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.tatedavies.com/2011/12/14/message-syntax-error-expected-plainvalue-got-at-position-x-in-property-model/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>VPNetMon &#8211; close programs when VPN drops</title>
		<link>http://blog.tatedavies.com/2011/12/10/vpnetmon-close-programs-when-vpn-drops/</link>
		<comments>http://blog.tatedavies.com/2011/12/10/vpnetmon-close-programs-when-vpn-drops/#comments</comments>
		<pubDate>Sat, 10 Dec 2011 20:42:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[anonymous]]></category>
		<category><![CDATA[connection]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[torrent]]></category>
		<category><![CDATA[vpn]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.christatedavies.co.uk/?p=312</guid>
		<description><![CDATA[If you are using a VPN to securely download files, whether it be for anomynous reasons or anything else, if the VPN connection gets dropped, your PC may revert to an unsecured connection to continue the operation. VPNetMon is an application that montors your VPN connection and if it drops, the application can be configured [...]]]></description>
			<content:encoded><![CDATA[<p>If you are using a VPN to securely download files, whether it be for anomynous reasons or anything else, if the VPN connection gets dropped, your PC may revert to an unsecured connection to continue the operation.</p>
<p>VPNetMon is an application that montors your VPN connection and if it drops, the application can be configured to close certain apps.</p>
<p>So if you are using a BitTorrent client and using an anonymous VPN connection to download content this will make you feel much more secure indeed.</p>
<p>You can get it at <a href="http://vpnetmon.webs.com/" target="_blank">http://vpnetmon.webs.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tatedavies.com/2011/12/10/vpnetmon-close-programs-when-vpn-drops/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>God, Windows is sloooooow</title>
		<link>http://blog.tatedavies.com/2011/11/30/god-windows-is-sloooooow/</link>
		<comments>http://blog.tatedavies.com/2011/11/30/god-windows-is-sloooooow/#comments</comments>
		<pubDate>Wed, 30 Nov 2011 12:17:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Humour]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[terminal]]></category>
		<category><![CDATA[tortoise]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.christatedavies.co.uk/?p=292</guid>
		<description><![CDATA[I am assisting a colleague today check out a rather large feature branch. I showed him the branch address and he started checking it out using Tortoise SVN on Windows 7. Upon returning to my desk (Ubuntu 11.10), I decided to merge the branch with the major trunk. I checked out a brand new copy [...]]]></description>
			<content:encoded><![CDATA[<p>I am assisting a colleague today check out a rather large feature branch. I showed him the branch address and he started checking it out using Tortoise SVN on Windows 7.</p>
<p>Upon returning to my desk (Ubuntu 11.10), I decided to merge the branch with the major trunk. I checked out a brand new copy of the branch, merged it (for the first time in several months) and then re-committed the pages.</p>
<p>Guess what, he&#8217;s still checking out the original!!!</p>
<p>Do yourselves a favour guys, make it Linux this Christmas&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tatedavies.com/2011/11/30/god-windows-is-sloooooow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

