<?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>Steven Harms &#187; python</title>
	<atom:link href="http://www.sharms.org/blog/tag/python/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sharms.org/blog</link>
	<description>Life, Linux and Technology</description>
	<lastBuildDate>Tue, 24 Aug 2010 18:25:04 +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>Python and real time graphical analysis</title>
		<link>http://www.sharms.org/blog/2009/11/python-and-real-time-graphical-analysis/</link>
		<comments>http://www.sharms.org/blog/2009/11/python-and-real-time-graphical-analysis/#comments</comments>
		<pubDate>Tue, 24 Nov 2009 21:44:27 +0000</pubDate>
		<dc:creator>sharms</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[sdl]]></category>

		<guid isPermaLink="false">http://www.sharms.org/blog/?p=650</guid>
		<description><![CDATA[I have a camera which has a motor attached which I can rotate using a serial cable. I figured it would be fun to have this camera analyze the webcam shots and turn in any direction there was motion. I pulled out python and pygame, and created a prototype. Unfortunately, I can&#8217;t make python go [...]


Related posts:<ol><li><a href='http://www.sharms.org/blog/2009/06/python-threads/' rel='bookmark' title='Permanent Link: Python threads'>Python threads</a></li>
<li><a href='http://www.sharms.org/blog/2008/12/why/' rel='bookmark' title='Permanent Link: Why?'>Why?</a></li>
<li><a href='http://www.sharms.org/blog/2009/02/python-commands-module/' rel='bookmark' title='Permanent Link: Python Commands Module'>Python Commands Module</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I have a camera which has a motor attached which I can rotate using a serial cable.  I figured it would be fun to have this camera analyze the webcam shots and turn in any direction there was motion.  I pulled out python and pygame, and created a prototype.  Unfortunately, I can&#8217;t make python go very fast.  I made two test cases, 1 in C and 1 in python, to figure out if it would be worthwhile to rewrite it:</p>
<p>array-speed-test.c</p>
<pre class="brush: c">
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;time.h&gt;
#include &lt;sys/time.h&gt;

void compare_arrays(int **screen1, int **screen2)
{
    int x;
    int y;
    int diff;
    int mult;

    for(x = 0; x &lt; 1920; x++) {
        for(y = 0; y &lt; 1080; y++)
        {
            mult = screen1[x][y] * screen2[x][y];
            diff = abs(screen1[x][y] - screen2[x][y]);
        }
    }
}

int main(int argc, char **argv)
{
    srand(time(NULL));
    printf(&quot;Generating arrays...\n&quot;);
    int **screen1;
    int **screen2;
    int i = 0;
    int j = 0;
    struct timeval now;
    struct timeval end;
    int usecs_passed;

    screen1 = malloc(1920 * sizeof(int *));
    screen2 = malloc(1920 * sizeof(int *));
    for(i = 0; i &lt; 1920; i++)
    {
        screen1[i] = malloc(1080 * sizeof(int));
        screen2[i] = malloc(1080 * sizeof(int));
    }

    for(i = 0; i &lt; 1920; i++)
    {
        for(j = 0; j &lt; 1080; j++)
        {
            screen1[i][j] = rand() % 255;
            screen2[i][j] = rand() % 255;
        }
    }

    printf(&quot;Comparing arrays...\n&quot;);

    gettimeofday(&amp;now, NULL);
    compare_arrays(screen1, screen2);
    gettimeofday(&amp;end, NULL);

    usecs_passed = end.tv_usec - now.tv_usec;

    printf(&quot;Time passed: %dms\n&quot;, (usecs_passed / 1000));
    for(i = 0; i &lt; 1920; i++)
    {
        free(screen1[i]);
        free(screen2[i]);
    }

    return 0;
}
</pre>
<p>And my python code:</p>
<p>array-speed-test.py</p>
<pre class="brush: python">
#!/usr/bin/python
import random
import time
from math import fabs

def generateArray():
    array_to_gen = [None] * 1920
    for i in range(0, 1920):
        array_to_gen[i] = [None] * 1080

    for x in range(0,1920):
        for y in range(0, 1080):
            array_to_gen[x][y] = random.randrange(0,255)

    return array_to_gen

def compareArrays(screen1, screen2):
    for x in range(0, 1920):
        for y in range(0, 1080):
            diff = fabs(screen1[x][y] - screen2[x][y])
            combo = screen1[x][y] * screen2[x][y]

if __name__ == &quot;__main__&quot;:
    print &quot;Generating arrays...&quot;
    screen1 = generateArray()
    screen2 = generateArray()

    print &quot;Created two screens.  Comparing...&quot;
    startTime = time.time()
    compareArrays(screen1, screen2)
    print &quot;Time taken: &quot; + str((time.time() - startTime) * 1000) + &quot;ms&quot;
</pre>
<p>So far, the C program runs in 25ms, while the python program consistently takes 1100ms.  Might have to ditch python for real time analysis, unless someone wants to point out how I am doing this completely wrong (I am assuming the comments will be use Numpy?)</p>


<p>Related posts:<ol><li><a href='http://www.sharms.org/blog/2009/06/python-threads/' rel='bookmark' title='Permanent Link: Python threads'>Python threads</a></li>
<li><a href='http://www.sharms.org/blog/2008/12/why/' rel='bookmark' title='Permanent Link: Why?'>Why?</a></li>
<li><a href='http://www.sharms.org/blog/2009/02/python-commands-module/' rel='bookmark' title='Permanent Link: Python Commands Module'>Python Commands Module</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.sharms.org/blog/2009/11/python-and-real-time-graphical-analysis/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Python threads</title>
		<link>http://www.sharms.org/blog/2009/06/python-threads/</link>
		<comments>http://www.sharms.org/blog/2009/06/python-threads/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 18:27:10 +0000</pubDate>
		<dc:creator>sharms</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.sharms.org/blog/?p=462</guid>
		<description><![CDATA[Frequently I need to launch sub processes from Python. Sometimes these processes don&#8217;t work as expected, and end up blocking the program. If you want to launch a command from python, and cut it off after a certain amount of time, I recommend the threading module. Here is how to limit the command to running [...]


Related posts:<ol><li><a href='http://www.sharms.org/blog/2009/02/python-commands-module/' rel='bookmark' title='Permanent Link: Python Commands Module'>Python Commands Module</a></li>
<li><a href='http://www.sharms.org/blog/2009/11/python-and-real-time-graphical-analysis/' rel='bookmark' title='Permanent Link: Python and real time graphical analysis'>Python and real time graphical analysis</a></li>
<li><a href='http://www.sharms.org/blog/2009/05/cherokee-django-tip-timeout-value/' rel='bookmark' title='Permanent Link: Cherokee / Django tip: Timeout value'>Cherokee / Django tip: Timeout value</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Frequently I need to launch sub processes from Python.  Sometimes these processes don&#8217;t work as expected, and end up blocking the program.  If you want to launch a command from python, and cut it off after a certain amount of time, I recommend the threading module.</p>
<p>Here is how to limit the command to running for roughly 5 seconds:</p>
<pre class="brush: python">
#!/usr/bin/env python
import commands
import datetime
import time
import threading

class runCommand(threading.Thread):
    def run(self):
        status, output = commands.getstatusoutput(&#039;sleep 8&#039;)

if __name__ == &quot;__main__&quot;:
    startTime = datetime.datetime.now()
    maximumRunTime = datetime.timedelta(seconds = 5)
    mythread = runCommand()
    mythread.start()

    while 1:
        if mythread.isAlive():
            print &quot;Thread has not returned yet...&quot;
        else:
            print &quot;Thread is all done.&quot;
            break

        if (datetime.datetime.now() - startTime) &gt; maximumRunTime:
            print &quot;Thread has ran too long, giving up.&quot;
            break

        time.sleep(1)

    print &quot;Program done&quot;
</pre>
<p>So when we enter main, I assign the current time to startTime.  Then I define maximumRunTime as a difference of 5 seconds.  The thread is started, and every second we check to see if it is still running.  If it is, we go ahead and check how much real time has elapsed.</p>


<p>Related posts:<ol><li><a href='http://www.sharms.org/blog/2009/02/python-commands-module/' rel='bookmark' title='Permanent Link: Python Commands Module'>Python Commands Module</a></li>
<li><a href='http://www.sharms.org/blog/2009/11/python-and-real-time-graphical-analysis/' rel='bookmark' title='Permanent Link: Python and real time graphical analysis'>Python and real time graphical analysis</a></li>
<li><a href='http://www.sharms.org/blog/2009/05/cherokee-django-tip-timeout-value/' rel='bookmark' title='Permanent Link: Cherokee / Django tip: Timeout value'>Cherokee / Django tip: Timeout value</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.sharms.org/blog/2009/06/python-threads/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Python-RPM</title>
		<link>http://www.sharms.org/blog/2009/05/python-rpm/</link>
		<comments>http://www.sharms.org/blog/2009/05/python-rpm/#comments</comments>
		<pubDate>Thu, 21 May 2009 20:49:11 +0000</pubDate>
		<dc:creator>sharms</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[rpm]]></category>

		<guid isPermaLink="false">http://www.sharms.org/blog/?p=444</guid>
		<description><![CDATA[If you ever get to use this library, it&#8217;s design is horrible and it&#8217;s documentation is worse. If you want to retrieve the basic RPM data, I have a code snippet you can use: As long as at the top of your file you had import rpm that should work file. That gives a few [...]


Related posts:<ol><li><a href='http://www.sharms.org/blog/2009/05/creating-graphs-in-python/' rel='bookmark' title='Permanent Link: Creating graphs in python'>Creating graphs in python</a></li>
<li><a href='http://www.sharms.org/blog/2009/02/python-commands-module/' rel='bookmark' title='Permanent Link: Python Commands Module'>Python Commands Module</a></li>
<li><a href='http://www.sharms.org/blog/2006/10/for-those-with-edgy-python-problems/' rel='bookmark' title='Permanent Link: For those with edgy python problems'>For those with edgy python problems</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>If you ever get to use this library, it&#8217;s design is horrible and it&#8217;s documentation is worse.  If you want to retrieve the basic RPM data, I have a code snippet you can use:</p>
<p><img src="http://www.sharms.org/blog/wp-content/uploads/python-rpm.jpg" alt="python-rpm" title="python-rpm" width="446" height="390" class="aligncenter size-full wp-image-445" /></p>
<p>As long as at the top of your file you had <strong>import rpm</strong> that should work file.  That gives a few basic fields.  To get a full list of fields, I actually used a reference from a perl module: <a href="http://cpansearch.perl.org/src/RJRAY/Perl-RPM-1.51/RPM/Constants.pm">http://cpansearch.perl.org/src/RJRAY/Perl-RPM-1.51/RPM/Constants.pm</a>.</p>
<p>If you expect more information, it really isn&#8217;t out there.  Every mailing list post tells you to visit slides at people.redhat.com, on a webpage which no longer exists from 2004.  I was able to find it again, so this may help you also: <a href="http://www.ukuug.org/events/linux2004/programme/paper-PNasrat-1/rpm-python-slides/toc.html">http://www.ukuug.org/events/linux2004/programme/paper-PNasrat-1/rpm-python-slides/toc.html</a>.  ActiveState&#8217;s website also has a snippet showing a bit of what is contained in that hdr class, which really helped trying to decipher this: <a href="http://code.activestate.com/recipes/576767/">http://code.activestate.com/recipes/576767/</a>.</p>
<p>And for all future python programmers out there, <strong>THERE IS NO NEED TO ABBREVIATE VARIABLE NAMES</strong>.  We have big computers, lots of memory, and naming things &#8216;hdr&#8217; and &#8216;ts&#8217; help nobody, and make your code horrible for others to use.  Seriously, expand them out.</p>


<p>Related posts:<ol><li><a href='http://www.sharms.org/blog/2009/05/creating-graphs-in-python/' rel='bookmark' title='Permanent Link: Creating graphs in python'>Creating graphs in python</a></li>
<li><a href='http://www.sharms.org/blog/2009/02/python-commands-module/' rel='bookmark' title='Permanent Link: Python Commands Module'>Python Commands Module</a></li>
<li><a href='http://www.sharms.org/blog/2006/10/for-those-with-edgy-python-problems/' rel='bookmark' title='Permanent Link: For those with edgy python problems'>For those with edgy python problems</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.sharms.org/blog/2009/05/python-rpm/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Creating graphs in python</title>
		<link>http://www.sharms.org/blog/2009/05/creating-graphs-in-python/</link>
		<comments>http://www.sharms.org/blog/2009/05/creating-graphs-in-python/#comments</comments>
		<pubDate>Fri, 01 May 2009 15:36:42 +0000</pubDate>
		<dc:creator>sharms</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[graphs]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.sharms.org/blog/?p=433</guid>
		<description><![CDATA[Slow Friday today, so was digging through my $HOME and found some graphs I was generating a few months ago. I wanted to create some graphs showing the number of connections to a server, and stumbled on CairoPlot. Show me pretty pictures Unfortunately, I believe I hacked my CairoPlot.py file to make the dots and [...]


Related posts:<ol><li><a href='http://www.sharms.org/blog/2009/02/python-commands-module/' rel='bookmark' title='Permanent Link: Python Commands Module'>Python Commands Module</a></li>
<li><a href='http://www.sharms.org/blog/2009/05/python-rpm/' rel='bookmark' title='Permanent Link: Python-RPM'>Python-RPM</a></li>
<li><a href='http://www.sharms.org/blog/2009/09/creating-a-virtual-machine-using-ubuntu-kvm-builder/' rel='bookmark' title='Permanent Link: Creating a virtual machine using ubuntu-kvm-builder'>Creating a virtual machine using ubuntu-kvm-builder</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Slow Friday today, so was digging through my $HOME and found some graphs I was generating a few months ago.  I wanted to create some graphs showing the number of connections to a server, and stumbled on <a href="https://launchpad.net/cairoplot">CairoPlot</a>.</p>
<p><strong>Show me pretty pictures</strong><br />
<img src="http://www.sharms.org/blog/wp-content/uploads/blog-graph.jpg" alt="Graph generated by CairoPlot" title="Graph generated by CairoPlot" width="500" height="500" class="aligncenter size-full wp-image-434" /></p>
<p>Unfortunately, I believe I hacked my CairoPlot.py file to make the dots and pulled some stuff from other repositories, so the code might not give the same results.  You may want to try the trunk.  But the general point still exists that it is really easy to use, and the library is really easy to hack.  To make the graph above I just ran:</p>
<p><code><br />
#!/usr/bin/python<br />
colors = [ (0.2, .3, .65), (0.5, 0.7, .1), (.35, .2, .45), ]<br />
graphData = {}<br />
graphData['server1'] = [ 20, 12, 42, 14, 11, 35 ]<br />
graphData['server2'] = [ 18, 23, 10, 17, 23, 25 ]<br />
CairoPlot.dot_line_plot("./graphs/blog", graphData, 500, 500, axis = True, grid = True, dots = True, series_colors = colors)<br />
</code></p>
<p>Obviously this is really easy to script, so you can parse your syslog files, append them to the graphData dictionary corresponding to the server, and bam you have a full report of everything happening etc.  What I did was use the <strong>datetime</strong> module to sort events into time buckets that were then used as graphs, giving a view of 24 hours or whatever the period entered was.</p>
<p><strong>Parsing syslog</strong><br />
I will give you a hand here too.  In python, to parse syslog, I used a module called <strong>pyparsing</strong>.  It uses a parsing language which is pretty easy to understand if you give it 20 minutes or so.  Ie to parse the syslog lines I was looking for, I did the following:</p>
<p><code><br />
month = Word(string.uppercase, string.lowercase, exact=3)<br />
integer = Word( nums )<br />
ipAddress = delimitedList( integer, ".", combine=True )<br />
serverDateTime = Combine( month + " " + integer + " " + integer + ":" + integer + ":" + integer )<br />
hostname = Word( alphas + nums + "_" + "-" )<br />
daemon = Word(alphas) + Suppress("[") + integer + Suppress("]:")<br />
ip = Suppress("remote IP address ") + ipAddress<br />
bnf = serverDateTime + ipAddress + daemon + ip</p>
<p>for line in syslogFile:<br />
    try:<br />
        fields = bnf.parseString(line)<br />
...<br />
</code></p>
<p>Keep in mind I did this very quick, so I am sure it can be refactored a bunch, just an example.</p>


<p>Related posts:<ol><li><a href='http://www.sharms.org/blog/2009/02/python-commands-module/' rel='bookmark' title='Permanent Link: Python Commands Module'>Python Commands Module</a></li>
<li><a href='http://www.sharms.org/blog/2009/05/python-rpm/' rel='bookmark' title='Permanent Link: Python-RPM'>Python-RPM</a></li>
<li><a href='http://www.sharms.org/blog/2009/09/creating-a-virtual-machine-using-ubuntu-kvm-builder/' rel='bookmark' title='Permanent Link: Creating a virtual machine using ubuntu-kvm-builder'>Creating a virtual machine using ubuntu-kvm-builder</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.sharms.org/blog/2009/05/creating-graphs-in-python/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Python Commands Module</title>
		<link>http://www.sharms.org/blog/2009/02/python-commands-module/</link>
		<comments>http://www.sharms.org/blog/2009/02/python-commands-module/#comments</comments>
		<pubDate>Fri, 20 Feb 2009 21:18:45 +0000</pubDate>
		<dc:creator>Steven Harms</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.sharms.org/blog/?p=333</guid>
		<description><![CDATA[Python Commands Module The Python module &#8216;commands&#8217; allows commands to be ran on the system. I frequently use this in combination with Django to launch processes. Get a directory listing: #!/usr/bin/python import commands status, output = commands.getstatusoutput('ls') print "Status: " + str(status) print "Output: " + str(output) This program will print out the directory contents [...]


Related posts:<ol><li><a href='http://www.sharms.org/blog/2009/06/python-threads/' rel='bookmark' title='Permanent Link: Python threads'>Python threads</a></li>
<li><a href='http://www.sharms.org/blog/2009/02/the-cherokee-webserver/' rel='bookmark' title='Permanent Link: The Cherokee Webserver'>The Cherokee Webserver</a></li>
<li><a href='http://www.sharms.org/blog/2009/11/python-and-real-time-graphical-analysis/' rel='bookmark' title='Permanent Link: Python and real time graphical analysis'>Python and real time graphical analysis</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.sharms.org/blog/wp-content/uploads/python_54.png" alt="Python logo" title="Python logo" width="54" height="54" class="alignleft size-full wp-image-339" /><strong>Python Commands Module</strong></p>
<p>The Python module &#8216;commands&#8217; allows commands to be ran on the system.  I frequently use this in combination with Django to launch processes.</p>
<p><strong>Get a directory listing:</strong><br />
<code><br />
#!/usr/bin/python<br />
import commands<br />
status, output = commands.getstatusoutput('ls')<br />
print "Status: " + str(status)<br />
print "Output: " + str(output)<br />
</code></p>
<p>This program will print out the directory contents of where you ran it from.  An important thing to note about programs in Linux in general is that on success they return 0, and anything not 0 is probably an error.  I commonly check the status of the returned code:</p>
<p><strong>Check if status is not 0:</strong><br />
<code><br />
if status != 0:<br />
&nbsp;&nbsp;&nbsp;&nbsp;print "An error occurred!"<br />
</code></p>
<p>This allows us to do some really fancy things with this module.  For instance, I created an application that is a django app that provides the user a menu to launch programs.  This runs on their Firefox browser, but will launch the programs on their system.  Each system runs it&#8217;s own Cherokee webserver locally, which is extremely lightweight and fast.  To install Cherokee to use django I followed this guide: <a href="http://www.cherokee-project.com/doc/cookbook_django.html">http://www.cherokee-project.com/doc/cookbook_django.html</a></p>
<p>The users run as the user &#8216;autologin&#8217;, however the webserver runs under the user &#8216;www&#8217;.  This is probably a bit hackish, but it works.  What I do is copy autologin&#8217;s .Xauthority file to the www user&#8217;s home directory, then launch the program as autologin using sudo.</p>
<p><strong>Launch a local X program from a django program:</strong><br />
<code><br />
def launchAutologinXProgram(commands):<br />
&nbsp;&nbsp;&nbsp;&nbsp;status, output = commands.getstatusoutput('sudo cp /home/autologin/.Xauthority /home/www/')<br />
&nbsp;&nbsp;&nbsp;&nbsp;os.spawnl(os.P_WAIT, "/usr/bin/sudo", "sudo", "-u", "autologin", "-H", "/bin/bash", "-c", 'export DISPLAY=":0.0"; . /etc/profile; nohup ' + str(commands) + ' &#038;')<br />
</code></p>
<p>Obviously you want to check the status variable and make sure it completed.  To do this you need to update your sudoers file to make the www user be able to run commands as autologin.  This is for a kiosk type setup, so www and autologin don&#8217;t have sensitive data, I am sure there is a more secure way to do it.  But it sure is fun.</p>


<p>Related posts:<ol><li><a href='http://www.sharms.org/blog/2009/06/python-threads/' rel='bookmark' title='Permanent Link: Python threads'>Python threads</a></li>
<li><a href='http://www.sharms.org/blog/2009/02/the-cherokee-webserver/' rel='bookmark' title='Permanent Link: The Cherokee Webserver'>The Cherokee Webserver</a></li>
<li><a href='http://www.sharms.org/blog/2009/11/python-and-real-time-graphical-analysis/' rel='bookmark' title='Permanent Link: Python and real time graphical analysis'>Python and real time graphical analysis</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.sharms.org/blog/2009/02/python-commands-module/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.761 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2010-09-10 18:52:18 -->
