<?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>dragffy.com &#187; MySQL</title>
	<atom:link href="http://dragffy.com/blog/posts/category/programming/mysql/feed" rel="self" type="application/rss+xml" />
	<link>http://dragffy.com/blog</link>
	<description>The development, documentation, and blogging domain of Gabriel Dragffy.</description>
	<lastBuildDate>Sun, 29 Apr 2012 11:55:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>selecting in to a same table in mysql</title>
		<link>http://dragffy.com/blog/posts/selecting-in-to-a-same-table-in-mysql</link>
		<comments>http://dragffy.com/blog/posts/selecting-in-to-a-same-table-in-mysql#comments</comments>
		<pubDate>Fri, 19 Nov 2010 15:42:02 +0000</pubDate>
		<dc:creator>Gabe</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://dragffy.com/blog/?p=150</guid>
		<description><![CDATA[create temporary table XYZ select * from category_to_store where store_id = 0 ; insert into category_to_store select category_id, 1 from XYZ ;]]></description>
			<content:encoded><![CDATA[<p>create temporary table XYZ<br />
select * from category_to_store where store_id = 0<br />
;<br />
insert into category_to_store<br />
select category_id, 1 from XYZ<br />
;</p>
]]></content:encoded>
			<wfw:commentRss>http://dragffy.com/blog/posts/selecting-in-to-a-same-table-in-mysql/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Effectively repair MySQL Tables</title>
		<link>http://dragffy.com/blog/posts/effectively-repair-mysql-tables</link>
		<comments>http://dragffy.com/blog/posts/effectively-repair-mysql-tables#comments</comments>
		<pubDate>Wed, 27 Jan 2010 14:23:44 +0000</pubDate>
		<dc:creator>Gabe</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Information]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Operating System]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://dragffy.com/blog/?p=148</guid>
		<description><![CDATA[$ cd /var/lib/mysql find -type f -name '*.MYI' -exec myisamchk --silent --force --fast --update-state --key_buffer_size=64M --sort_buffer_size=64M --read_buffer_size=1M --write_buffer_size=1M {} \;]]></description>
			<content:encoded><![CDATA[<p><code>$ cd /var/lib/mysql</code></p>
<p><code>find -type f -name '*.MYI' -exec myisamchk --silent --force --fast --update-state --key_buffer_size=64M --sort_buffer_size=64M --read_buffer_size=1M --write_buffer_size=1M {} \;</code></p>
]]></content:encoded>
			<wfw:commentRss>http://dragffy.com/blog/posts/effectively-repair-mysql-tables/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Access denied for user &#8216;debian-sys-maint&#8217;@&#039;localhost&#8217; (using password: YES)</title>
		<link>http://dragffy.com/blog/posts/access-denied-for-user-debian-sys-maintlocalhost-using-password-yes</link>
		<comments>http://dragffy.com/blog/posts/access-denied-for-user-debian-sys-maintlocalhost-using-password-yes#comments</comments>
		<pubDate>Tue, 26 Jan 2010 09:26:59 +0000</pubDate>
		<dc:creator>Gabe</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Operating System]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://dragffy.com/blog/?p=146</guid>
		<description><![CDATA[Find your debian-sys-maint password in /etc/mysql/debian.cnf. GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY ' ' WITH GRANT OPTION; Replace with your debian-sys-maint password.]]></description>
			<content:encoded><![CDATA[<p>Find your debian-sys-maint password in <code>/etc/mysql/debian.cnf.</p>
<p></code><code>GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '
<password>' WITH GRANT OPTION;</password></code></p>
<p>Replace <code>
<password></password></code> with your debian-sys-maint password.</p>
]]></content:encoded>
			<wfw:commentRss>http://dragffy.com/blog/posts/access-denied-for-user-debian-sys-maintlocalhost-using-password-yes/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Get PHP MySQL  working on Leopard OS X</title>
		<link>http://dragffy.com/blog/posts/get-php-mysql-working-on-leopard-os-x</link>
		<comments>http://dragffy.com/blog/posts/get-php-mysql-working-on-leopard-os-x#comments</comments>
		<pubDate>Sun, 31 May 2009 12:45:06 +0000</pubDate>
		<dc:creator>Gabe</dc:creator>
				<category><![CDATA[Information]]></category>
		<category><![CDATA[Leopard]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Operating System]]></category>
		<category><![CDATA[OS X]]></category>

		<guid isPermaLink="false">http://dragffy.com/blog/?p=122</guid>
		<description><![CDATA[Installing MySQL on OS X has become infinately easier since you can now download an Apple DMG from the MySQL website which takes care of the fine detail. However, one thing that changed with Leopard is the socket for Mysql. It moved to /private/tmp, so you may need to configure your php.ini file to point [...]]]></description>
			<content:encoded><![CDATA[<p>Installing MySQL on OS X has become infinately easier since you can now download an Apple DMG from the MySQL website which takes care of the fine detail.</p>
<p>However, one thing that changed with Leopard is the socket for Mysql. It moved to <code>/private/tmp</code>, so you may need to configure your <code>php.ini</code> file to point it to the new location.</p>
<p>To do so, open the file <code>/private/etc/php.ini</code>, (if no such file exists, then make a copy of <code>/private/etc/php.ini.default</code> and  rename it to <code>php.ini</code>) and edit that.</p>
<p>You have two lines to modify:</p>
<p><code>mysql.default_socket =</code></p>
<p>becomes:</p>
<p><code>mysql.default_socket = /private/tmp/mysql.sock</code></p>
<p>and <code>mysqli.default_socket =</code></p>
<p>becomes:</p>
<p><code>mysqli.default_socket = /private/tmp/mysql.sock</code></p>
]]></content:encoded>
			<wfw:commentRss>http://dragffy.com/blog/posts/get-php-mysql-working-on-leopard-os-x/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Change MySQL Root Password</title>
		<link>http://dragffy.com/blog/posts/change-mysql-root-password</link>
		<comments>http://dragffy.com/blog/posts/change-mysql-root-password#comments</comments>
		<pubDate>Sun, 31 May 2009 12:34:25 +0000</pubDate>
		<dc:creator>Gabe</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://dragffy.com/blog/?p=117</guid>
		<description><![CDATA[Change default password: $ mysqladmin -u root password NEWPASSWORD Change existing password: $ mysqladmin -u root -p'oldpassword' password newpass]]></description>
			<content:encoded><![CDATA[<p>Change default password:<br />
<code>$ mysqladmin -u root password NEWPASSWORD</code></p>
<p>Change existing password:<br />
<code>$ mysqladmin -u root -p'oldpassword' password newpass</code></p>
]]></content:encoded>
			<wfw:commentRss>http://dragffy.com/blog/posts/change-mysql-root-password/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL Column Types and Storage Capabilities</title>
		<link>http://dragffy.com/blog/posts/mysql-column-types-and-storage-capabilities</link>
		<comments>http://dragffy.com/blog/posts/mysql-column-types-and-storage-capabilities#comments</comments>
		<pubDate>Sun, 24 May 2009 15:19:52 +0000</pubDate>
		<dc:creator>Gabe</dc:creator>
				<category><![CDATA[Information]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://dragffy.com/blog/?p=110</guid>
		<description><![CDATA[I am making a note of this for ease of future reference. I can never quite remember whether a medium blob is 16MB or whatever it is, the capabilities are on the MySQL site but I am going to write it in plain english here so I don&#8217;t have to keep getting my calculator out [...]]]></description>
			<content:encoded><![CDATA[<p>I am making a note of this for ease of future reference. I can never quite remember whether a medium blob is 16MB or whatever it is, the capabilities are on the MySQL site but I am going to write it in plain english here so I don&#8217;t have to keep getting my calculator out to remind me what 2^24 is in terms I am more familiar with&#8230;</p>
<p><strong>TinyInt</strong>: -128 to 127 (0 to 255 if unsigned).<br />
<strong>SmallInt</strong>: -32768 to 32767 (0 to 65535 if unsigned).<br />
<strong>MediumInt</strong>: -8588608 to 8388607 (0 to 16777215 if unsigned).<br />
<strong>Int</strong>:  -2147483648 to 2147483647 (0 to 4294967295 if unsigned).<br />
<strong>BigInt</strong>:  -9223372936854775808 to 9223372036854775807 (0 to18446744073709551615).</p>
<p><strong>Float</strong>:  0 and +-1.175494351E-38 to +-3.402823466E+38.<br />
<strong>Double</strong>:  0 and +-2.2250738585072014-308 to +-1.7976931348623157E+38.<br />
<strong>Decimal[(M,D)]</strong>:  As for DOUBLE but constrained by M and D.</p>
<p><strong>Char(M)</strong>: M may take any integer value from 0 to 255, with a CHAR(0) column able to store only two values: NULL and &#8221; (empty string), which occupy a single bit.<br />
<strong>VarChar(M)</strong>:  1 to 255 (number of characters to store). Trailing spaces are stripped before storage.</p>
<p>Text type columns do case insensitive comparisons and sorts, whereas blobs are case sensitive.<br />
<strong>TinyBlob/TinyText</strong>:  Max. length 255 characters. Very similar to VarChar but trailing spaces are not stripped before storage.<br />
<strong>Text/Blob</strong>: Max. length 65535 characters (65KB).<br />
<strong>MediumBlob/MediumText</strong>: Max. length 6777215 characters (16.8MB).<br />
<strong>LongBlob/LongText</strong>: Max. length 4294967295 characters (4.3GB).</p>
<p><strong>Enum</strong>: One value chosen from up to 65535 possibilities.<br />
<strong>Set</strong>: Up to 64 values in a given set column.</p>
<p><strong>Date</strong>: &#8217;1000-01-01&#8242; to &#8217;9999-12-31&#8242;, and &#8217;0000-00-00&#8242;.<br />
<strong>Time</strong>: &#8216;-838:59:59&#8242; to &#8217;838:59:59&#8242;.<br />
<strong>DateTime</strong>: &#8217;1000-01-01 00:00:00&#8242; to &#8217;9999-12-31 23:59:59&#8242;.<br />
<strong>Year</strong>: 1901 to 2155, and 0000.<br />
<strong>TimeStamp</strong>: 19700101000000 to sometime in 2037 on current systems.</p>
]]></content:encoded>
			<wfw:commentRss>http://dragffy.com/blog/posts/mysql-column-types-and-storage-capabilities/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Inserting large blobs in MySQL</title>
		<link>http://dragffy.com/blog/posts/inserting-large-blobs-in-mysql</link>
		<comments>http://dragffy.com/blog/posts/inserting-large-blobs-in-mysql#comments</comments>
		<pubDate>Mon, 12 Jan 2009 14:05:00 +0000</pubDate>
		<dc:creator>Gabe</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Information]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Server]]></category>

		<guid isPermaLink="false">http://dragffy.com/blog/?p=77</guid>
		<description><![CDATA[Last week I setup MySQL replication for a database with two slaves. I wanted to see how resilient it was, and one of the tests I wanted to perform was to create a record on the master and then interrupt the replication of the same record on the slave. This would allow me to see [...]]]></description>
			<content:encoded><![CDATA[<p>Last week I setup MySQL replication for a database with two slaves. I wanted to see how resilient it was, and one of the tests I wanted to perform was to create a record on the master and then interrupt the replication of the same record on the slave. This would allow me to see whether MySQL could recover from such an error.</p>
<p>So I thought the easiest way of doing this would be to to insert a large 700mb<br />
file in to MySQL &#8211; to give me enough time to interrupt a slave before<br />
replication had completed. Thus being able to test MySQL&#8217;s resilience to<br />
loss of connectivity during UPDATE/INSERT queries.</p>
<p>I have never used BLOB columns before so my quest took my on a journey during which I learned a lot about these blobs. Now, even though a MySQL long blob can hold 4GB of data I have encountered<br />
problem after problem dealing with it:</p>
<p>PHP scripts are limited to 32MB memory maximum, this can be upped, but<br />
is not scalable and not a good solution. It means that you cannot simply<br />
read the data of file and perform an INSERT since the file data is<br />
stored in PHP&#8217;s memory first. This meant the development of a PHP script<br />
that could read chunks (just a meg or so) from a file and perform UPDATE<br />
queries along with MySQL CONCAT function to effectively append each<br />
chunk.</p>
<p>CONCAT, as I eventually found out, returns NULL if any of it&#8217;s arguments<br />
are NULL. In my case when attempting to UPDATE a row with additional<br />
chunks the resulting blob size was always zero. This was because the<br />
very first time CONCAT is used the blob field is empty (NULL), therefore<br />
CONCAT always returned NULL &#8211; and so, the data in the blob column never<br />
grew. The query looked like this:<br />
<code>UPDATE `$table` SET `data` = CONCAT(data, '{mysqli_real_escape_string($buffer)}') WHERE `id`=$id";</code></p>
<p>I then combined CONCAT with COALESCE which will return an alternative<br />
value that you specify in the eventuality the first argument is NULL. By<br />
combining these two I could overcome the above problem.<br />
Resulting query structure:<br />
<code>UPDATE `$table` SET `data` = COALESCE(CONCAT(data, '{mysqli_real_escape_string($buffer)}'), '') WHERE `id`=$id";</code></p>
<p>Great, now we&#8217;re finally adding our chunks on. Then my computer ran out<br />
of disc space &#8211; the reason: 7 gigs of MySQL replication logs. Took a<br />
while to find that out. Fixed.</p>
<p>Next problem, although I was certain (via in-depth PHP debugging) that<br />
PHP was correctly reading chunks from the file in a consecutive order,<br />
of the correct size, and the SQL query was being properly executed<br />
without any sly errors the blob column would never end up growing above<br />
12MB (according the PHP MyAdmin). Through even more intensive debugging<br />
I found that after concatenating each chunk the blob would grow by the<br />
correct amount up to 16MB, then it would zero and start again. The<br />
result of pushing a 700MB ISO in to it would always be less 16MB.</p>
<p>Working from a hunch I upped the max_packet_size in my.conf from 16MB to<br />
36MB, the result was as above but this time the blob would grow to 32MB<br />
before zeroing itself.</p>
<p>I then found this MySQL bug report:<br />
<a href="http://bugs.mysql.com/bug.php?id=22853">http://bugs.mysql.com/bug.php?id=22853</a></p>
<p>It is considered a bug simply because by upping max_packet_size to<br />
something like 4GB or anything substantial leaves the MySQL server open<br />
to network DoS attacks. There is no work around. A fix is scheduled for<br />
version 6.</p>
<p>Anyway, since we don&#8217;t care about security I maxed out the packet_size,<br />
and my chunking script worked, but very quickly I noticed a huge amount of<br />
slowdown once the blob had grown to just a few tens of megs. In fact it<br />
took about 20 minutes to get to 200MB. Without supporting my theory with<br />
any evidence I reckon the CONCAT function reads all the data out of the<br />
database in to memory, does it&#8217;s stuff and then stuffs it back in to the<br />
database. The result is an increasingly slow query.</p>
<p>It would seem that although MySQL supports blobs of about 4GB that you<br />
can never get that size unless you:</p>
<p>1. Change the max_packet_size to a stupidly high number, leaving your<br />
server open to DoS attacks so then you can just do a single INSERT. Using CONCAT<br />
is out since it would take forever.</p>
<p>2. Change the memory limit of PHP scripts to be greater than 4GB.</p>
<p>3. Have absolutely bags of RAM since three copies of the file are stored<br />
in RAM (certainly two copies). Since you cannot chunk the file and<br />
perform CONCATS PHP will read the entire file in to it&#8217;s memory. This<br />
will all then be buffered by the MySQL driver. Then this is passed to<br />
the database. Therefore if you wish to insert a 4 GB file you will<br />
require >12GB of RAM.</p>
<p>One work around is to chunk the file as before but each chunk is<br />
represented by a single row. These can then be linked together by giving<br />
each row a master file ID, so that all necessary rows can be retrieved. </p>
<p>For my purposes this doesn&#8217;t help, I needed queries that took a while,<br />
inserting rows like this will take but a fraction of a second each.</p>
]]></content:encoded>
			<wfw:commentRss>http://dragffy.com/blog/posts/inserting-large-blobs-in-mysql/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Andrew Norman: The Book Collection</title>
		<link>http://dragffy.com/blog/posts/andrew-norman-the-book-collection</link>
		<comments>http://dragffy.com/blog/posts/andrew-norman-the-book-collection#comments</comments>
		<pubDate>Thu, 05 Jul 2007 16:50:30 +0000</pubDate>
		<dc:creator>Gabe</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[lamp]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://dragffy.com/blog/posts/andrew-norman-the-book-collection</guid>
		<description><![CDATA[Andrew commissioned me to give his books an on-line presence. He wanted only to list his books and nothing else such as shopping or contact details.This post summarises, and then specifies the project. Designs are presented, and a project plan is demonstrated. Finally, the project is completed and I can make the source code available [...]]]></description>
			<content:encoded><![CDATA[<p>Andrew commissioned me to give his books an on-line presence. He wanted only to list his books and nothing else such as shopping or contact details.This post summarises, and then specifies the project. Designs are presented, and a project plan is demonstrated. Finally, the project is completed and I can make the source code available on request.<span id="more-13"></span></p>
<h4>Summary</h4>
<p>Dr Andrew Norman is an author. He has written in three categories and now has a total of 11 books authored (soon to be 14 or so). Currently he relies on his publishers and media reviews to gain publicity. Since some, but not all, his books are available on amazon.com; and on the various publishers&#8217; websites, he would like to consolidate his collection in one place. Of course, the wider the audience, the better. The World Wide Web lends itself perfectly to this need.</p>
<p>Now we have identified a need, and a way to satisfy that need, let&#8217;s move on to put into words exactly what Andrew Norman requires from his website.</p>
<h4>Specification</h4>
<p>Andrew wanted his website to perform only one task: to allow access to his entire book collection to all who wanted to visit his website. He was not interested in having people contact him, or in directly selling his books.</p>
<p>The requirements could be summarised thusly:</p>
<ul>
<li>Allow easy access to all.</li>
<li>Have a clean, &#8220;serious&#8221; design (since his target audience are not likely to be very computer-savvy.</li>
<li>Allow searching by three categories:
<ol>
<li>Biography</li>
<li>General History</li>
<li>Military History</li>
</ol>
</li>
<li>Display full details of an individual book, if chosen by the user. Including such things as:
<ol>
<li>Synopsis (unique to this website).</li>
<li>Pages.</li>
<li>Publisher.</li>
<li>A link to the book on Amazon, if available.</li>
<li>A link to the book on the publisher&#8217;s website, if available.</li>
<li>Category.</li>
<li>Several other criteria, such as, Paper/Hard back, RRP, etc.</li>
</ol>
</li>
<li>Information about Andrew Norman not found anywhere else</li>
<li>A design that would allow the website to easily expand and accommodate new books.</li>
<li>Ideally a way for Andrew to make changes to the content himself, without exposing him to any kind of programming or mark-up language.</li>
</ul>
<p>With all this said we can now turn to solving the design problems presented.</p>
<h4>Design</h4>
<p>As a web developer I favour sites that are simple and effective. Cliche yes, but it brings two important advantages: increase in speed and responsiveness of the website; and a site that is normally easier to navigate. I do feel that many sites in the Web 2.0 revolution have too many colours, too many &#8216;flashy&#8217; things, and this overwhelms the content. Andrew&#8217;s website is no exception: it is all about books and content, thus the website will eschew such things as AJAX, Flash, Java, and instead rely on the tried and true foundations of HTML and CSS.</p>
<p>Using these (limited) formatting systems will emphasise good fundamental design to ensure the site looks pleasing to the eye, while remaining standards-compliant and very fast.</p>
<p>A website containing a list and details of books, that will need to be updated, lends itself to being housed in a database. A database is well suited because (using server-side-scripting) the data stored in it can be easily accessed, changed, or deleted. It also drastically reduces the number of HTML files on the server; and should changes need to be made, only the content needs to be edited, rather than potentially hundreds of individual files.</p>
<p>Several designs were considered before settling on a final one.</p>
<p><a href="http://dragffy.com/blog/posts/andrew-norman-the-book-collection/screenshot-of-dr-andrew-normans-website/" target="_blank" rel="attachment wp-att-14" title="Screenshot of Dr Andrew Norman’s website"><img src="http://dragffy.com/blog/wp-content/uploads/2008/02/screenshot-drandrewnormansbooks.png" alt="Screenshot of Dr Andrew Norman’s website" /></a></p>
<p>This angles Andrew&#8217;s website to being content-driven, and as is well known throughout the industry: separating content from layout is a must. For various reasons MySQL was chosen for the RDMS (not least because it is popular and readily available on shared hosting). Naturally, the perfect compliment to MySQL is PHP. PHP is supported on pretty much all shared hosting.</p>
<p>The final angle to consider is how to allow Andrew to add/edit/delete books himself. What we are looking at here is building a custom content management system, or CMS for short. Only a logged in user will be able to access this, and the only person that should be allowed it Andrew himself. Once logged in the CMS will display all the books currently stored, and provide option for editing them, or deleting them. Logging out will also need to be implemented, along with adding a new book. This CMS will provide a simple frontend (probably using HTML forms) to performing SQL queries, with PHP doing the donkey work.</p>
<p>In the end the web site was completed. Andrew is very happy about it, and his Google rankings are improving. The website is now first in Google depending on what terms are entered and can be found at <a href="http://andrew-norman.com" target="_blank">http://andrew-norman.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://dragffy.com/blog/posts/andrew-norman-the-book-collection/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

