<?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>*drawcode &#187; syndication</title>
	<atom:link href="http://blog.drawcode.com/index.php/category/syndication/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.drawcode.com</link>
	<description>creative engineering, design and development</description>
	<lastBuildDate>Sat, 23 May 2009 19:51:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>amfast Python Remoting and Services Library for Flash, Flex and other AMF</title>
		<link>http://blog.drawcode.com/2009/05/18/amfast-python-remoting-and-services-library-for-flash-flex-and-other-amf/</link>
		<comments>http://blog.drawcode.com/2009/05/18/amfast-python-remoting-and-services-library-for-flash-flex-and-other-amf/#comments</comments>
		<pubDate>Mon, 18 May 2009 07:21:44 +0000</pubDate>
		<dc:creator>drawk</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[engineering]]></category>
		<category><![CDATA[syndication]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[amf]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[gamedev]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://blog.drawcode.com/?p=19</guid>
		<description><![CDATA[pyamf is pretty sweet for Flash remoting with Pythonic server side, but now we have two nicely done and integrated remoting kits for python on the server side. amfast is a new remoting library  that looks to be as sweet as pyamf (where sweet == fast and useful).  I am checking out amfast now but [...]]]></description>
			<content:encoded><![CDATA[<p><strong><a href="http://pyamf.org/" target="_blank">pyamf </a></strong>is pretty sweet for Flash remoting with Pythonic server side, but now we have two nicely done and integrated remoting kits for python on the server side.</p>
<p><strong><a href="http://code.google.com/p/amfast/" target="_blank">amfast </a></strong>is a new remoting library  that looks to be as sweet as pyamf (where sweet == fast and useful).  I am checking out <a href="http://code.google.com/p/amfast/" target="_blank">amfast </a>now but the speed boost alone might be worth it.  For instance, working with real-time games, when you need static content you need to grab that quickly sometimes via a content service.  The faster that link the better. It also has <a href="http://twistedmatrix.com/trac/" target="_blank">Twisted</a> integration which is great for networking and <a href="http://www.sqlalchemy.org/" target="_blank">SQLAlchemy </a>integration which is in my opinion the best ORM for python (pyamf has twisted, django, pylons, sqlalchemy as well)</p>
<p><a href="http://code.google.com/p/amfast/" target="_blank">amfast </a>is well documented and has some great examples.  If you have the Python addiction, check it.</p>
<blockquote>
<h3><a name="Description">Description</a></h3>
<ul>
<li><a name="Description">AmFast is a Flash remoting framework for Python. </a></li>
<li><a name="Description">AmFast can use AMF to communicate between Python and Flash, Flex, and any other system that supports AMF. </a></li>
<li><a name="Description">AMF is a binary object serialization protocol used by Actionscript based applications. </a></li>
</ul>
<h3><a name="Server_Features">Server Features</a></h3>
<ul>
<li><a name="Server_Features">Support for NetConnection and RemoteObject RPC. </a></li>
<li><a name="Server_Features">Support for Producer/Consumer ‘push’ messaging with HTTP polling, HTTP long-polling, and real-time HTTP streaming channels. </a></li>
<li><a name="Server_Features">Support for authentication with NetConnection and RemoteObject. </a></li>
<li><a name="Server_Features">Flexible Target mapping system to map message destinations to invokable Target objects. </a></li>
<li><a name="Server_Features">Support for ChannelSets with multiple Channels to expose resources in different ways. </a></li>
<li><a name="Server_Features">Built in Channels for </a><a rel="nofollow" href="http://cherrypy.org/">CherryPy</a>, <a rel="nofollow" href="http://twistedmatrix.com/trac/">Twisted Web</a>, and plain WSGI.</li>
<li>Support for configurable Endpoints. Use AmFast’s built-in AMF encoder/decoder C-extension, or use an external AMF encoder/decoder, such as <a rel="nofollow" href="http://pyamf.org/">PyAmf</a> for a pure-Python implementation.</li>
</ul>
<h3><a name="AMF_Encoder/Decoder_Features">AMF Encoder/Decoder Features</a></h3>
<ul>
<li><a name="AMF_Encoder/Decoder_Features">AMF0/AMF3 encoder/decoder written in C as a Python extension for speed. </a></li>
<li><a name="AMF_Encoder/Decoder_Features">More than 10x faster than the </a><a rel="nofollow" href="http://pyamf.org/">PyAmf</a> encoder/decoder (even when using <a rel="nofollow" href="http://pyamf.org/">PyAmf’s</a> optional C-extension).</li>
<li>Map custom classes with ClassDef objects for complete control over serialization/de-serialization.</li>
<li>Full support for IExternalizable objects.</li>
<li>Data persistence with <a rel="nofollow" href="http://www.sqlalchemy.org/">SqlAlchemy</a> including remotely-loadable lazy-loaded attributes.</li>
<li>Actionscript code generation from ClassDef objects.</li>
</ul>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.drawcode.com/2009/05/18/amfast-python-remoting-and-services-library-for-flash-flex-and-other-amf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Python Script to Backup MySql Databases (WordPress or other databases)</title>
		<link>http://blog.drawcode.com/2009/02/10/python-script-to-backup-mysql-databases-wordpress-or-other-databases/</link>
		<comments>http://blog.drawcode.com/2009/02/10/python-script-to-backup-mysql-databases-wordpress-or-other-databases/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 06:38:51 +0000</pubDate>
		<dc:creator>drawk</dc:creator>
				<category><![CDATA[syndication]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[administration]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.drawcode.com/?p=11</guid>
		<description><![CDATA[We have lots of blogs to manage and keep backed up so we employ Python scripts that are scheduled to run every day and backup the full database sets. Python is a great language because you can use it for web development (WSGI/Django/etc), game development, automation, systems administration, desktop apps and many other things.  We [...]]]></description>
			<content:encoded><![CDATA[<p>We have lots of blogs to manage and keep backed up so we employ Python scripts that are scheduled to run every day and backup the full database sets. Python is a great language because you can use it for web development (WSGI/Django/etc), game development, automation, systems administration, desktop apps and many other things.  We will have more python scripts here on how we use it to run things.  Keep in mind these are cross platform because we manage applications on all types of environments from Windows, to UNIX/Linux to OSX (same as *nix really).</p>
<h2>How to Use</h2>
<p>Use this script by scheduling it to run nightly or when you choose.  Then make a folder under it called target or change the location in the script.</p>
<p>The file that will export will be a complete sql dump and stamped like the following filename, it contains the zipped up database.sql file that is your backup:<br />
export-2009-02-03-Tuesday.zip</p>
<p>If you need to change settings to get flat files or other read on mysqldump utility to pass the options you need, currently it backs up in SQL format.</p>
<h2>The Script</h2>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">os</span>, <span style="color: #dc143c;">time</span>, <span style="color: #dc143c;">sys</span>, <span style="color: #dc143c;">zipfile</span>, <span style="color: #dc143c;">datetime</span>,<span style="color: #dc143c;">calendar</span>
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">os</span> <span style="color: #ff7700;font-weight:bold;">import</span> sep
&nbsp;
<span style="color: #808080; font-style: italic;"># Script Parameters</span>
<span style="color: #808080; font-style: italic;"># Target Directory for final Zip files</span>
target_dir = r<span style="color: #483d8b;">'target'</span>
copy_dir = r<span style="color: #483d8b;">'copy'</span>
<span style="color: #808080; font-style: italic;"># The name of the sql file (this will be the same for all backups)</span>
file_name = <span style="color: #483d8b;">'databases.sql'</span>
<span style="color: #808080; font-style: italic;"># Authentication</span>
<span style="color: #dc143c;">user</span> = <span style="color: #483d8b;">'[YOUR USER]'</span>
password = <span style="color: #483d8b;">'[YOUR PASSWORD]'</span>
<span style="color: #808080; font-style: italic;"># The command for the mysql dump. This could include the entire path to the executable if mysqldump is not on the path environment variable</span>
dumpcmd = r<span style="color: #483d8b;">'mysqldump'</span>
<span style="color: #808080; font-style: italic;"># The host you want to connect to</span>
host = <span style="color: #483d8b;">'localhost'</span> 
&nbsp;
args = <span style="color: black;">&#91;</span>dumpcmd, <span style="color: #483d8b;">'-C'</span>, <span style="color: #483d8b;">'-f'</span>, <span style="color: #483d8b;">'--host=%s'</span> <span style="color: #66cc66;">%</span>host, <span style="color: #483d8b;">'--user=%s'</span> <span style="color: #66cc66;">%</span><span style="color: #dc143c;">user</span>, <span style="color: #483d8b;">'--password=%s'</span> <span style="color: #66cc66;">%</span>password, <span style="color: #483d8b;">'--result-file=%s'</span> <span style="color: #66cc66;">%</span>file_name, <span style="color: #483d8b;">'--all-databases'</span><span style="color: black;">&#93;</span>
&nbsp;
<span style="color: #dc143c;">os</span>.<span style="color: black;">chdir</span><span style="color: black;">&#40;</span>target_dir<span style="color: black;">&#41;</span>
<span style="color: #dc143c;">cmd</span> = <span style="color: #483d8b;">' '</span>.<span style="color: black;">join</span><span style="color: black;">&#40;</span>args<span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">'Running Command: %s'</span> <span style="color: #66cc66;">%</span><span style="color: #dc143c;">cmd</span>.<span style="color: black;">replace</span><span style="color: black;">&#40;</span>password, <span style="color: #483d8b;">'*'</span><span style="color: #66cc66;">*</span><span style="color: #008000;">len</span><span style="color: black;">&#40;</span>password<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
<span style="color: #dc143c;">os</span>.<span style="color: black;">system</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">cmd</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># Below is for zipping the files and creating a redundant  backup</span>
<span style="color: #ff7700;font-weight:bold;">def</span> getZipFileName<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
	<span style="color: #808080; font-style: italic;"># Set time variables (</span>
	<span style="color: #808080; font-style: italic;"># Note: you don't have to use some of them,</span>
	<span style="color: #808080; font-style: italic;"># but they make the script easier to understand</span>
	t = <span style="color: #dc143c;">time</span>.<span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">;</span> g = <span style="color: #dc143c;">time</span>.<span style="color: black;">gmtime</span><span style="color: black;">&#40;</span>t<span style="color: black;">&#41;</span>
	year = g<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: #66cc66;">;</span> month = g<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: #66cc66;">;</span> day = g<span style="color: black;">&#91;</span><span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span>
&nbsp;
	<span style="color: #ff7700;font-weight:bold;">try</span>:
		<span style="color: #dc143c;">datetime</span>.<span style="color: black;">date</span><span style="color: black;">&#40;</span>year, month, day+<span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>
	<span style="color: #ff7700;font-weight:bold;">except</span>:
		<span style="color: #808080; font-style: italic;"># Last day of the month, return month name</span>
		root = <span style="color: #dc143c;">time</span>.<span style="color: black;">strftime</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'%Y'</span>, g<span style="color: black;">&#41;</span>
		<span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #ff7700;font-weight:bold;">not</span> <span style="color: #dc143c;">os</span>.<span style="color: black;">access</span><span style="color: black;">&#40;</span>root, <span style="color: #dc143c;">os</span>.<span style="color: black;">F_OK</span><span style="color: black;">&#41;</span>:
			<span style="color: #dc143c;">os</span>.<span style="color: black;">mkdir</span><span style="color: black;">&#40;</span>root<span style="color: black;">&#41;</span>
		<span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #dc143c;">os</span>.<span style="color: black;">path</span>.<span style="color: black;">join</span><span style="color: black;">&#40;</span>root, <span style="color: #483d8b;">'%s.zip'</span> <span style="color: #66cc66;">%</span><span style="color: #dc143c;">time</span>.<span style="color: black;">strftime</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'%b'</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
	<span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">int</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">time</span>.<span style="color: black;">strftime</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'%w'</span>, g<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span> == <span style="color: #ff4500;">0</span>:
		<span style="color: #808080; font-style: italic;"># Last day of week, return week number</span>
		cal_month = <span style="color: #dc143c;">calendar</span>.<span style="color: black;">monthcalendar</span><span style="color: black;">&#40;</span>year, month<span style="color: black;">&#41;</span>
		<span style="color: #ff7700;font-weight:bold;">for</span> week <span style="color: #ff7700;font-weight:bold;">in</span> cal_month:
			<span style="color: #ff7700;font-weight:bold;">if</span> day <span style="color: #ff7700;font-weight:bold;">in</span> week:
				<span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #483d8b;">'Week%i.zip'</span> <span style="color: #66cc66;">%</span>month.<span style="color: black;">index</span><span style="color: black;">&#40;</span>week<span style="color: black;">&#41;</span>
	<span style="color: #808080; font-style: italic;"># Just a regular weekday...</span>
	<span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #483d8b;">'%s.zip'</span> <span style="color: #66cc66;">%</span><span style="color: #dc143c;">time</span>.<span style="color: black;">strftime</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'%A'</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># Write the zip file</span>
zip_name = <span style="color: #483d8b;">'export-'</span> + <span style="color: #008000;">str</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">datetime</span>.<span style="color: black;">date</span>.<span style="color: black;">today</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span> + <span style="color: #483d8b;">'-'</span> + getZipFileName<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
zip_file = <span style="color: #dc143c;">os</span>.<span style="color: black;">path</span>.<span style="color: black;">abspath</span><span style="color: black;">&#40;</span>zip_name<span style="color: black;">&#41;</span>
<span style="color: #008000;">zip</span> = <span style="color: #dc143c;">zipfile</span>.<span style="color: black;">ZipFile</span><span style="color: black;">&#40;</span>zip_file, <span style="color: #483d8b;">'w'</span>, <span style="color: #dc143c;">zipfile</span>.<span style="color: black;">ZIP_DEFLATED</span><span style="color: black;">&#41;</span>
<span style="color: #008000;">zip</span>.<span style="color: black;">write</span><span style="color: black;">&#40;</span>file_name<span style="color: black;">&#41;</span>
<span style="color: #008000;">zip</span>.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># Remove uncompressed sql file</span>
<span style="color: #dc143c;">os</span>.<span style="color: black;">remove</span><span style="color: black;">&#40;</span>file_name<span style="color: black;">&#41;</span>
to_path = <span style="color: #dc143c;">os</span>.<span style="color: black;">path</span>.<span style="color: black;">join</span><span style="color: black;">&#40;</span>copy_dir, zip_name<span style="color: black;">&#41;</span>
to_dir = sep.<span style="color: black;">join</span><span style="color: black;">&#40;</span>to_path.<span style="color: black;">split</span><span style="color: black;">&#40;</span>sep<span style="color: black;">&#41;</span><span style="color: black;">&#91;</span>:-<span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #ff7700;font-weight:bold;">not</span> <span style="color: #dc143c;">os</span>.<span style="color: black;">access</span><span style="color: black;">&#40;</span>to_dir, <span style="color: #dc143c;">os</span>.<span style="color: black;">F_OK</span><span style="color: black;">&#41;</span>:
	<span style="color: #dc143c;">os</span>.<span style="color: black;">makedirs</span><span style="color: black;">&#40;</span>to_dir<span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #dc143c;">os</span>.<span style="color: black;">access</span><span style="color: black;">&#40;</span>to_path, <span style="color: #dc143c;">os</span>.<span style="color: black;">F_OK</span><span style="color: black;">&#41;</span>:
	<span style="color: #dc143c;">os</span>.<span style="color: black;">remove</span><span style="color: black;">&#40;</span>to_path<span style="color: black;">&#41;</span>
<span style="color: #dc143c;">shutil</span>.<span style="color: #dc143c;">copy</span><span style="color: black;">&#40;</span>zip_file, to_path<span style="color: black;">&#41;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://blog.drawcode.com/2009/02/10/python-script-to-backup-mysql-databases-wordpress-or-other-databases/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tips for Parsing RSS and ATOM Feeds</title>
		<link>http://blog.drawcode.com/2008/06/22/tips-for-parsing-rss-and-atom-feeds/</link>
		<comments>http://blog.drawcode.com/2008/06/22/tips-for-parsing-rss-and-atom-feeds/#comments</comments>
		<pubDate>Mon, 23 Jun 2008 02:28:31 +0000</pubDate>
		<dc:creator>drawk</dc:creator>
				<category><![CDATA[marketing]]></category>
		<category><![CDATA[syndication]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[atom]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[content]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[service]]></category>

		<guid isPermaLink="false">http://blog.drawcode.com/?p=5</guid>
		<description><![CDATA[Syndication has many layers built in it these days, but really when you get down to the formats making your own parsers and writers for your syndication formats is quite easy. Good knowledge of the formats and some basic tricks can make your feeds highly customized and tailored by your own work. Tips for Generating [...]]]></description>
			<content:encoded><![CDATA[<p>Syndication has many layers built in it these days, but really when you get down to the formats making your own parsers and writers for your syndication formats is quite easy.  Good knowledge of the formats and some basic tricks can make your feeds highly customized and tailored by your own work.</p>
<h2 id="Tips" style="padding-left: 30px;">Tips for Generating Good Feeds</h2>
<p style="padding-left: 30px;">RSS and Atom are easy to work with, but like any new format, you may encounter some problems in using them. This section attempts to address the most common issues that arise when generating a feed.</p>
<ul style="padding-left: 30px;">
<li><strong>Distinct Entries</strong> — Make sure that aggregators can tell   your entries apart, by using different identifiers in <code>rdf:about</code> (RSS 1.0),    <code>guid</code> (RSS 2.0) and <code>id</code> (Atom). This will save a lot of    headaches down the road.</li>
<li><strong>Meaningful Metadata</strong> — Try to make the metadata useful     on its own; for example, if you only include a short     <code>&lt;title&gt;</code>, people may not know what the link is about.     By the same token, if you shove an entire article into     <code>&lt;description&gt;</code>, it’ll crowd people’s view of the feed,     and they’re less likely to stay interested in what you have to say.     Generally, you want to put enough into the feed to help someone decide     whether they should follow the link.</li>
<li><strong>Encoding HTML</strong> — Although it’s tempting, refrain from     including HTML markup (like <code>&lt;a href="..."&gt;</code>,     <code>&lt;b&gt;</code> or <code>&lt;p&gt;</code>) in your RSS feed;     because you don’t know how it will be presented, doing so can prevent     your feed from being displayed correctly. If you need to include a a tag     in the text of the feed (e.g., the title of an entry is “Ode to     &lt;title&gt;”), make sure you escape ampersands and angle brackets (so     that it would be “Ode to &amp;lt;title&amp;gt;”).</li>
<li><strong>XML Entities</strong> — Remember that XML doesn’t predefine     entities like HTML does; therefore, you won’t have     <code>&amp;nbsp;</code> <code>&amp;copy;</code> and other common entities     available. You can define them in the XML, or alternatively just use an     character encoding that makes what you need available.</li>
<li><strong>Character Encoding</strong> — Some software generates feeds     using Windows character sets, and sometimes mislabels them. The safest     thing to do is to encode your feed as UTF-8 and check it by parsing it     with an XML parser.</li>
<li><strong>Communicating with Viewers</strong> — Don’t use entries in your     feed to communicate to your users; for example, some feeds have been     known to use the <code>&lt;description&gt;</code> to dictate copyright     terms. Use the appropriate element or module.</li>
<li><strong>Communicating with Machines</strong> — Likewise, use the     appropriate HTTP status codes if your feed has relocated (usually,     <code>301 Moved Permanently</code>) or is no longer available (<code>410     Gone</code> or <code>404 Not Found</code>).</li>
<li><strong>Making your Feed Cache-Friendly</strong> — Successful feeds     see a fair amount of traffic because clients poll them often to see if     they’ve changed. To support the load, Web Caching can help; see the <a href="http://www.mnot.net/cache_docs/">caching tutorial</a>.</li>
<li><strong>Validate</strong> — use the <a class="offsite" href="http://www.feedvalidator.org/">Feed Validator</a> to catch any problems in your feed; it works     with RSS and Atom. Also, don’t just run it once; make sure you regularly check     your feed, so that you can catch transient errors.</li>
</ul>
<h2 id="Tools" style="padding-left: 30px;">Feed Tools</h2>
<p style="padding-left: 30px;">This is an incomplete list of tools for creating feeds and checking them to make sure that you’ve done so correctly. Note that there are many more libraries that help parsing feeds; these haven’t been included here because this tutorial focuses on the Webmaster, not consumers of feeds.</p>
<ul style="padding-left: 30px;">
<li><a href="http://www.mnot.net/xpath2rss/"><strong>xpath2rss</strong></a> — Tool for scraping Web sites using XPath expressions (a method of     selecting parts of HTML and XML documents).</li>
<li><strong><a class="offsite" href="http://www.w3.org/2000/08/w3c-synd/#">Site Summaries     in XHTML</a></strong> — Online service (also available as an XSLT     stylesheet) that uses hints in your HTML to generate a feed.</li>
<li><a class="offsite" href="http://myrss.com/"><strong>myRSS</strong></a> — An online,     third-party automated scraping service. Doesn’t require any special     markup.</li>
<li><a href="http://www.mnot.net/python/RSS.py"><strong>RSS.py</strong></a> — Python library for generating and parsing RSS.</li>
<li><strong><a class="offsite" href="https://rome.dev.java.net/">ROME</a></strong> —    Java library for parsing and generating RSS and Atom feeds, as well as translating between formats.</li>
<li><strong><a class="offsite" href="http://search.cpan.org/author/EISEN/XML-RSS/">XML::RSS</a></strong> — Perl module for generating and parsing RSS.</li>
<li style="padding-left: 30px;"><strong><a class="offsite" href="http://www.feedvalidator.org/">Online Validator</a></strong> &#8211;    Check your RSS 1.0, 2.0 and Atom feeds.</li>
</ul>
<p>[<a href="http://www.mnot.net/rss/tutorial/" target="_blank">source</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.drawcode.com/2008/06/22/tips-for-parsing-rss-and-atom-feeds/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
