<?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>low level life</title>
	<atom:link href="http://lowlevellife.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://lowlevellife.com</link>
	<description></description>
	<lastBuildDate>Mon, 13 Feb 2012 20:06:59 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>RubyKaigi2011のLT &#8220;ASP.NET MVC 3 vs. Ruby on Rails 3&#8243;について &#8211; Togetter</title>
		<link>http://lowlevellife.com/2012/02/rubykaigi2011%e3%81%aelt-asp-net-mvc-3-vs-ruby-on-rails-3%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6-togetter/</link>
		<comments>http://lowlevellife.com/2012/02/rubykaigi2011%e3%81%aelt-asp-net-mvc-3-vs-ruby-on-rails-3%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6-togetter/#comments</comments>
		<pubDate>Mon, 13 Feb 2012 20:06:59 +0000</pubDate>
		<dc:creator>planset</dc:creator>
				<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://lowlevellife.com/?p=1654</guid>
		<description><![CDATA[自分は仕事はMicrosoft系で主に.NETで開発。おうちではlinuxとかpythonとか今回の話のRailsなんかで遊んでるのでとっても面白い話と資料（PDF）でした。 RubyKaigi2011のLT &#822 &#8230;<p class="read-more"><a href="http://lowlevellife.com/2012/02/rubykaigi2011%e3%81%aelt-asp-net-mvc-3-vs-ruby-on-rails-3%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6-togetter/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[
<p>自分は仕事はMicrosoft系で主に.NETで開発。おうちではlinuxとかpythonとか今回の話のRailsなんかで遊んでるのでとっても面白い話と資料（PDF）でした。</p>
<p><a href="http://togetter.com/li/162521">RubyKaigi2011のLT &#8220;ASP.NET MVC 3 vs. Ruby on Rails 3&#8243;について &#8211; Togetter</a>.</p>
<p>しかも丁度調べ中のMVC3の話でナイス。<br />
テンプレートエンジンも普通そうだし、モデルもEntityFramework 4.1以降?からコードファーストでくめるっぽい。まぁ、そこはモデルというか・・・なんだ？でーびー？だけど。<br />
それに<br />
rails3とこんなにふがふがするんだから、MVC3も使って大丈夫そうね。</p>

]]></content:encoded>
			<wfw:commentRss>http://lowlevellife.com/2012/02/rubykaigi2011%e3%81%aelt-asp-net-mvc-3-vs-ruby-on-rails-3%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6-togetter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>reStructuredTextでwordpress投稿</title>
		<link>http://lowlevellife.com/2012/02/restructuredtext%e3%81%a7wordpress%e6%8a%95%e7%a8%bf/</link>
		<comments>http://lowlevellife.com/2012/02/restructuredtext%e3%81%a7wordpress%e6%8a%95%e7%a8%bf/#comments</comments>
		<pubDate>Sun, 12 Feb 2012 21:26:51 +0000</pubDate>
		<dc:creator>planset</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://lowlevellife.com/?p=1603</guid>
		<description><![CDATA[wordpressでreStructuredText wordpressはとっても最高なCMSだけども、reStructuredTextで書けないために使用を断念することも多いかと思います。 そこで、ちょっと探してみたと &#8230;<p class="read-more"><a href="http://lowlevellife.com/2012/02/restructuredtext%e3%81%a7wordpress%e6%8a%95%e7%a8%bf/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[
<div class="document">
<div class="section" id="wordpressrestructuredtext">
<h2>wordpressでreStructuredText</h2>
<p>wordpressはとっても最高なCMSだけども、reStructuredTextで書けないために使用を断念することも多いかと思います。</p>
<p>そこで、ちょっと探してみたところ <a class="reference external" href="http://xdissent.com/projects/wordprest/">WordPreSt reStructuredText Plugin For WordPress ↯ xdissent.com</a> というプラグインがありました。<br />
しかし、残念なことに新しめのwordpressではうまく動かないようです。</p>
<p>そこでちょっといじってみて、とりあえず投稿できるようにはなりました。これもそのプラグインを使って投稿してみました。</p>
<p>しかし山ほど問題が。。。</p>
<p><span id="more-1603"></span>
</div>
<div class="section" id="id1">
<h2>エディタボタン周りの処理</h2>
<p>問題というか、単にwordpressの仕組みをわかってないだけなんですが、元々のwordprestだと:</p>
<pre class="literal-block">
add_action(\'edit_form_advanced\', array(__CLASS__, \'addRestEditor\'));
</pre>
<p>という処理で、エディタの選択ボタンにRestを追加する処理があって、そこでは、ob_get_cleanでバッファを取ってきてエディタのコードを置換する。</p>
<p>しかし、現在のwordpressではその時点のバッファにはエディタのコードが含まれていないみたい。なので別のタイミング（action）か別の方法でやらないとだめなんだろうけど、さぱーりわからない。</p>
<p>きっと同じような仕組みで、markdownあたりのプラグインはありそうなので、そこらへんを漁ってみたら参考になるかも。</p>
<p>というところでおしまい。今はwordpressのclass-wp-editor.phpをいじって動かしてます。</p>
<p>他にもうまく保存できなかったりとか大問題が色々あるけど、そのうち・・・</p>
<p>code</p>
<pre class="literal-block">
diff --git a/wp-includes/class-wp-editor.php b/wp-includes/class-wp-editor.php
index f057f5f..738b15e 100644
--- a/wp-includes/class-wp-editor.php
+++ b/wp-includes/class-wp-editor.php
&#64;&#64; -78,6 +78,9 &#64;&#64; final class _WP_Editors {

                        if ( \'html\' == wp_default_editor() ) {
                                add_filter(\'the_editor_content\', \'wp_htmledit_pre\');
+                       } elseif ( \'rest\' == wp_default_editor() ) {
+                               add_filter(\'the_editor_content\', \'wp_htmledit_pre\');
+                               $switch_class = \'rest-active\';
                        } else {
                                add_filter(\'the_editor_content\', \'wp_richedit_pre\');
                                $switch_class = \'tmce-active\';
&#64;&#64; -85,6 +88,7 &#64;&#64; final class _WP_Editors {

                        $buttons .= \'&lt;a id=\&quot;\' . $editor_id . \'-html\&quot; class=\&quot;hide-if-no-js wp-switch-editor switch-html\&quot; onclick=\&quot;switchEditors.switchto(this);\&quot;&gt;\' . __(\'HTML\') . \&quot;&lt;/a&gt;\\n\&quot;;
                        $buttons .= \'&lt;a id=\&quot;\' . $editor_id . \'-tmce\&quot; class=\&quot;hide-if-no-js wp-switch-editor switch-tmce\&quot; onclick=\&quot;switchEditors.switchto(this);\&quot;&gt;\' . __(\'Visual\') . \&quot;&lt;/a&gt;\\n\&quot;;
+                       $buttons .= \'&lt;a id=\&quot;\' . $editor_id . \'-rest\&quot; class=\&quot;hide-if-no-js wp-switch-editor switch-rest\&quot; onclick=\&quot;switchEditors.switchto(this);\&quot;&gt;\' . __(\'Rest\') . \&quot;&lt;/a&gt;\\n\&quot;;
                }

                echo \'&lt;div id=\&quot;wp-\' . $editor_id . \'-wrap\&quot; class=\&quot;wp-editor-wrap \' . $switch_class . \'\&quot;&gt;\';
</pre>
<p>もっと勉強しないとダメですね・・・。</p>
</div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://lowlevellife.com/2012/02/restructuredtext%e3%81%a7wordpress%e6%8a%95%e7%a8%bf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ターミナルマルチプレクサ Advent Calendar 2011 : ATND</title>
		<link>http://lowlevellife.com/2012/02/%e3%82%bf%e3%83%bc%e3%83%9f%e3%83%8a%e3%83%ab%e3%83%9e%e3%83%ab%e3%83%81%e3%83%97%e3%83%ac%e3%82%af%e3%82%b5-advent-calendar-2011-atnd/</link>
		<comments>http://lowlevellife.com/2012/02/%e3%82%bf%e3%83%bc%e3%83%9f%e3%83%8a%e3%83%ab%e3%83%9e%e3%83%ab%e3%83%81%e3%83%97%e3%83%ac%e3%82%af%e3%82%b5-advent-calendar-2011-atnd/#comments</comments>
		<pubDate>Thu, 09 Feb 2012 22:40:48 +0000</pubDate>
		<dc:creator>planset</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[screen]]></category>

		<guid isPermaLink="false">http://lowlevellife.com/?p=1532</guid>
		<description><![CDATA[ターミナルマルチプレクサ Advent Calendar 2011 : ATND. screenは単にウィンドウを必要な分だけ作って、sshしたりログみたりしてましたが、もっともっと便利に使えるんですね。 とりあえずコピ &#8230;<p class="read-more"><a href="http://lowlevellife.com/2012/02/%e3%82%bf%e3%83%bc%e3%83%9f%e3%83%8a%e3%83%ab%e3%83%9e%e3%83%ab%e3%83%81%e3%83%97%e3%83%ac%e3%82%af%e3%82%b5-advent-calendar-2011-atnd/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[
<p><a href='http://atnd.org/events/22320'>ターミナルマルチプレクサ Advent Calendar 2011 : ATND</a>.</p>
<p>screenは単にウィンドウを必要な分だけ作って、sshしたりログみたりしてましたが、もっともっと便利に使えるんですね。<br />
とりあえずコピってやってみます。</p>
<p><a href="http://yskwkzhr.blogspot.com/2011/12/lets-use-development-version-gnu-screen.html">開発版GNU Screenを使ってみよう &#8211; Keep It Simple, Stupid</a><br />
<a href="http://yskwkzhr.blogspot.com/2011/12/guide-to-using-gnu-screen-layouts.html">開発版GNU Screenのlayoutを使ってみよう &#8211; Keep It Simple, Stupid</a><br />
<a href="http://yskwkzhr.blogspot.com/2011/12/ease-window-management-of-gun-screen.html">開発版GNU Screenで楽々ウィンドウ管理 &#8211; Keep It Simple, Stupid</a><br />
<a href="http://yskwkzhr.blogspot.com/2011/12/master-copy-and-paste-of-gnu-screen.html">開発版GNU Screenでコピペを極める &#8211; Keep It Simple, Stupid</a></p>
<p><a href="http://yskwkzhr.blogspot.com/2010/11/screenrc.html#more">そんな.screenrcで大丈夫か？ &#8211; Keep It Simple, Stupid</a></p>
<p>などなどいろいろ</p>
<p><a href="http://linuxjm.sourceforge.jp/html/GNU_screen/man1/screen.1.html">Man page of SCREEN</a></p>

]]></content:encoded>
			<wfw:commentRss>http://lowlevellife.com/2012/02/%e3%82%bf%e3%83%bc%e3%83%9f%e3%83%8a%e3%83%ab%e3%83%9e%e3%83%ab%e3%83%81%e3%83%97%e3%83%ac%e3%82%af%e3%82%b5-advent-calendar-2011-atnd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>プロセス間のやり取りを簡単に。centos5.7 + RabbitMQ + python + pika/kombu</title>
		<link>http://lowlevellife.com/2012/02/%e3%83%97%e3%83%ad%e3%82%bb%e3%82%b9%e9%96%93%e3%81%ae%e3%82%84%e3%82%8a%e5%8f%96%e3%82%8a%e3%82%92%e7%b0%a1%e5%8d%98%e3%81%ab%e3%80%82centos5-7-rabbitmq-python-pikakombu/</link>
		<comments>http://lowlevellife.com/2012/02/%e3%83%97%e3%83%ad%e3%82%bb%e3%82%b9%e9%96%93%e3%81%ae%e3%82%84%e3%82%8a%e5%8f%96%e3%82%8a%e3%82%92%e7%b0%a1%e5%8d%98%e3%81%ab%e3%80%82centos5-7-rabbitmq-python-pikakombu/#comments</comments>
		<pubDate>Wed, 08 Feb 2012 21:10:57 +0000</pubDate>
		<dc:creator>planset</dc:creator>
				<category><![CDATA[python]]></category>
		<category><![CDATA[kombu]]></category>
		<category><![CDATA[openstack]]></category>
		<category><![CDATA[pika]]></category>
		<category><![CDATA[rabbitmq]]></category>

		<guid isPermaLink="false">http://lowlevellife.com/?p=1510</guid>
		<description><![CDATA[OpenStackに触れる中で今まで触ったことあるけどあやふやだった技術を再確認したり、今まで聞いたことのかなかった技術を知ることができています。 その中の１つでメッセージキューイングサーバーのRabbitMQというもの &#8230;<p class="read-more"><a href="http://lowlevellife.com/2012/02/%e3%83%97%e3%83%ad%e3%82%bb%e3%82%b9%e9%96%93%e3%81%ae%e3%82%84%e3%82%8a%e5%8f%96%e3%82%8a%e3%82%92%e7%b0%a1%e5%8d%98%e3%81%ab%e3%80%82centos5-7-rabbitmq-python-pikakombu/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[
<p>OpenStackに触れる中で今まで触ったことあるけどあやふやだった技術を再確認したり、今まで聞いたことのかなかった技術を知ることができています。</p>
<p>その中の１つでメッセージキューイングサーバーの<a href="http://www.rabbitmq.com/">RabbitMQ</a>というものを知ったので軽くまとめときます。</p>
<p><span id="more-1510"></span></p>
<h2>RabbitMQとは</h2>
<p>RabbitMQはAMQP(Advanced Message Queuing Protocol)(<a href="http://ja.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol">Advanced Message Queuing Protocol &#8211; Wikipedia</a>)を使用したメッセージキューイングサーバーです。Erlangで実装されています。</p>
<p>メッセージキューイングとはその名前のまま、何らかの「メッセージ」を「キュー」に入れておいてくれるサーバーです。<br />
通常アプリケーションでの通信は、</p>
<ol>
<li>相手方に接続して</li>
<li>何か処理して（処理が終わるのを待って）</li>
<li>切断する</li>
</ol>
<p>という流れになりますが、メッセージキューイングサーバーを使うことで、</p>
<ol>
<li>メッセージキューイングサーバーに接続して</li>
<li>処理したいことを書いたメッセージをキューを投げて</li>
<li>切断する</li>
</ol>
<div><span style="line-height: 18px;"><br />
</span></div>
<ol>
<li>処理する側がメッセージキューイングサーバーに接続して</li>
<li>メッセージが届いていないか確認して</li>
<li>メッセージがあれば処理</li>
</ol>
<div><span style="line-height: 18px;"> </span></div>
<p>という手順にすることができ、処理を依頼する側は処理の完了を待つ必要がありません。<br />
ユーザーインタフェースとしてはすぐに反応が返ってくるので気持ちよいですよね（時間のかかる処理の場合、経過がわかるような処理を作る必要はありますが）。</p>
<p>&nbsp;</p>
<h2>AMQPとは</h2>
<p>メッセージキューイングについて標準化をがんばってる的な規格です。<br />
amqpについては以下がわかりやすいです。<br />
<a href="http://labs.gree.jp/blog/2010/06/262/">AMQPによるメッセージング | GREE Engineers&#8217; Blog</a></p>
<p>&nbsp;</p>
<h2>OpenStackではどう使われているか</h2>
<p>OpenStackでは、各コンポーネント間の通信をRabbitMQを通して行なっているようです。<br />
OpenStackではkombuというpythonライブラリを使っているようです。</p>
<p><a href="https://github.com/openstack/nova/tree/master/nova/rpc">nova/rpc at master from openstack/nova &#8211; GitHub</a></p>
<p>&nbsp;</p>
<h2>RabbitMQをcentos 5.7にインストール</h2>
<p>手元で動いてたcentos5.7にインストールしてみました。</p>
<p>参考：<a href="http://www.rabbitmq.com/install-rpm.html">RabbitMQ &#8211; Installing on RPM-based Linux (CentOS, Fedora, OpenSuse, RedHat)</a></p>
<p>参考URLと最後のインストールするパッケージが違いますが、こっちが正しいはず。</p>
<h3>インストール</h3>
<p>以下rootで。</p>
<pre class="brush: bash; title: ; notranslate">
rpm -ivh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
wget -O /etc/yum.repos.d/epel-erlang.repo http://repos.fedorapeople.org/repos/peter/erlang/epel-erlang.repo
yum install -y erlang
rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc
yum install -y rabbitmq-server
</pre>
<p>&nbsp;</p>
<h2>RabbitMQを操作する</h2>
<p>rabbitmqctlというコマンドで、色々と操作できるみたいです。</p>
<pre class="brush: bash; title: ; notranslate">
$ sudo rabbitmqctl list_queues
Listing queues ...
hello 1
...done.
</pre>
<pre class="brush: bash; title: ; notranslate">
$ sudo rabbitmqctl --help

Error: invalid command '--help'

Usage:
rabbitmqctl [-n &lt;node&gt;] [-q] &lt;command&gt; [&lt;command options&gt;]
Options:
 -n node
 -q
Default node is &quot;rabbit@server&quot;, where server is the local host. On a host
named &quot;server.example.com&quot;, the node name of the RabbitMQ Erlang node will
usually be rabbit@server (unless RABBITMQ_NODENAME has been set to some
non-default value at broker startup time). The output of hostname -s is usually
the correct suffix to use after the &quot;@&quot; sign. See rabbitmq-server(1) for
details of configuring the RabbitMQ broker.
Quiet output mode is selected with the &quot;-q&quot; flag. Informational messages are
suppressed when quiet mode is in effect.
Commands:
 stop
 stop_app
 start_app
 status
 reset
 force_reset
 rotate_logs &lt;suffix&gt;
 cluster &lt;clusternode&gt; ...
 force_cluster &lt;clusternode&gt; ...
 close_connection &lt;connectionpid&gt; &lt;explanation&gt;
 add_user &lt;username&gt; &lt;password&gt;
 delete_user &lt;username&gt;
 change_password &lt;username&gt; &lt;newpassword&gt;
 set_admin &lt;username&gt;
 clear_admin &lt;username&gt;
 list_users
 add_vhost &lt;vhostpath&gt;
 delete_vhost &lt;vhostpath&gt;
 list_vhosts
 set_permissions [-p &lt;vhostpath&gt;] &lt;user&gt; &lt;conf&gt; &lt;write&gt; &lt;read&gt;
 clear_permissions [-p &lt;vhostpath&gt;] &lt;username&gt;
 list_permissions [-p &lt;vhostpath&gt;]
 list_user_permissions [-p &lt;vhostpath&gt;] &lt;username&gt;
 list_queues [-p &lt;vhostpath&gt;] [&lt;queueinfoitem&gt; ...]
 list_exchanges [-p &lt;vhostpath&gt;] [&lt;exchangeinfoitem&gt; ...]
 list_bindings [-p &lt;vhostpath&gt;] [&lt;bindinginfoitem&gt; ...]
 list_connections [&lt;connectioninfoitem&gt; ...]
 list_channels [&lt;channelinfoitem&gt; ...]
 list_consumers
The list_queues, list_exchanges and list_bindings commands accept an optional
virtual host parameter for which to display results. The default value is &quot;/&quot;.
&lt;queueinfoitem&gt; must be a member of the list [name, durable, auto_delete,
arguments, pid, owner_pid, exclusive_consumer_pid, exclusive_consumer_tag,
messages_ready, messages_unacknowledged, messages, consumers, memory].
&lt;exchangeinfoitem&gt; must be a member of the list [name, type, durable,
auto_delete, arguments].
&lt;bindinginfoitem&gt; must be a member of the list [source_name, source_kind,
destination_name, destination_kind, routing_key, arguments].
&lt;connectioninfoitem&gt; must be a member of the list [pid, address, port,
peer_address, peer_port, ssl, peer_cert_subject, peer_cert_issuer,
peer_cert_validity, state, channels, protocol, user, vhost, timeout, frame_max,
client_properties, recv_oct, recv_cnt, send_oct, send_cnt, send_pend].
&lt;channelinfoitem&gt; must be a member of the list [pid, connection, number, user,
vhost, transactional, consumer_count, messages_unacknowledged,
acks_uncommitted, prefetch_count, client_flow_blocked].
The output format for &quot;list_consumers&quot; is a list of rows containing, in
order, the queue name, channel process id, consumer tag, and a boolean
indicating whether acknowledgements are expected from the consumer.
</pre>
<p>&nbsp;</p>
<h2>pythonのライブラリ</h2>
<p>pythonのライブラリは山ほどあってどれ使っていいんだかわかりませんが、公式ページで紹介しているpikaとOpenStackで使用していると思われるkombuを使ってみます。</p>
<h3>pika</h3>
<ul>
<li><a href="http://pypi.python.org/pypi/pika">pika 0.9.5 : Python Package Index</a></li>
<li><a href="https://github.com/pika/pika">pika/pika &#8211; GitHub</a></li>
<li><a href="http://pika.github.com/">Introduction to Pika — Pika 0.9.5 documentation</a></li>
</ul>
<h4>インストール</h4>
<pre class="brush: bash; title: ; notranslate">
pip install pika
</pre>
<h4>サンプル</h4>
<p>send.py</p>
<pre class="brush: python; title: ; notranslate">
#!/usr/bin/env python
import pika

connection = pika.BlockingConnection(pika.ConnectionParameters(
        host='localhost'))
channel = connection.channel()

channel.queue_declare(queue='hello')

channel.basic_publish(exchange='',
                      routing_key='hello',
                      body='Hello World!')
print &quot; [x] Sent 'Hello World!'&quot;
connection.close()
</pre>
<p>recieve.py</p>
<pre class="brush: python; title: ; notranslate">
#!/usr/bin/env python
import pika

connection = pika.BlockingConnection(pika.ConnectionParameters(
        host='localhost'))
channel = connection.channel()

channel.queue_declare(queue='hello')

print ' [*] Waiting for messages. To exit press CTRL+C'

def callback(ch, method, properties, body):
    print &quot; [x] Received %r&quot; % (body,)

channel.basic_consume(callback,
                      queue='hello',
                      no_ack=True)

channel.start_consuming()
</pre>
<p>それぞれ別々のプロセスで動かしてみると、sendで送ったメッセージを、recieveが受信してくるのがわかります。</p>
<h3>kombu</h3>
<ul>
<li><a href="http://pypi.python.org/pypi/kombu">kombu 2.1.0 : Python Package Index</a></li>
<li><a href="https://github.com/ask/kombu">ask/kombu &#8211; GitHub</a></li>
<li><a href="http://ask.github.com/kombu/">Kombu Documentation — Kombu 2.1.0 documentation</a></li>
</ul>
<h4>インストール</h4>
<p>pip install kombu</p>
<h4>サンプル</h4>
<p><a href="http://ask.github.com/kombu/userguide/examples.html">Examples — Kombu 2.1.0 documentation</a></p>
<p>queues.py</p>
<pre class="brush: python; title: ; notranslate">
from kombu import Exchange, Queue
task_exchange = Exchange(&quot;tasks&quot;, type=&quot;direct&quot;)
task_queues = [Queue(&quot;hipri&quot;, task_exchange, routing_key=&quot;hipri&quot;),
               Queue(&quot;midpri&quot;, task_exchange, routing_key=&quot;midpri&quot;),
               Queue(&quot;lopri&quot;, task_exchange, routing_key=&quot;lopri&quot;)]
</pre>
<p>worker.py</p>
<pre class="brush: python; title: ; notranslate">
from __future__ import with_statement
from kombu.mixins import ConsumerMixin
from kombu.utils import kwdict, reprcall
from queues import task_queues
class Worker(ConsumerMixin):
    def __init__(self, connection):
        self.connection = connection
    def get_consumers(self, Consumer, channel):
        return [Consumer(queues=task_queues,
                         callbacks=[self.process_task])]
    def process_task(self, body, message):
        fun = body[&quot;fun&quot;]
        args = body[&quot;args&quot;]
        kwargs = body[&quot;kwargs&quot;]
        self.info(&quot;Got task: %s&quot;, reprcall(fun.__name__, args, kwargs))
        try:
            fun(*args, **kwdict(kwargs))
        except Exception, exc:
            self.error(&quot;task raised exception: %r&quot;, exc)
        message.ack()
if __name__ == &quot;__main__&quot;:
    from kombu import BrokerConnection
    from kombu.utils.debug import setup_logging
    setup_logging(loglevel=&quot;INFO&quot;)
    with BrokerConnection(&quot;amqp://guest:guest@localhost:5672//&quot;) as conn:
        try:
            Worker(conn).run()
        except KeyboardInterrupt:
            print(&quot;bye bye&quot;)
</pre>
<p>tasks.py</p>
<pre class="brush: python; title: ; notranslate">
def hello_task(who=&quot;world&quot;):
    print(&quot;Hello %s&quot; % (who, ))
</pre>
<p>client.py</p>
<pre class="brush: python; title: ; notranslate">
from __future__ import with_statement
from kombu.common import maybe_declare
from kombu.pools import producers
from queues import task_exchange
priority_to_routing_key = {&quot;high&quot;: &quot;hipri&quot;,
                           &quot;mid&quot;: &quot;midpri&quot;,
                           &quot;low&quot;: &quot;lopri&quot;}
def send_as_task(connection, fun, args=(), kwargs={}, priority=&quot;mid&quot;):
    payload = {&quot;fun&quot;: fun, &quot;args&quot;: args, &quot;kwargs&quot;: kwargs}
    routing_key = priority_to_routing_key[priority]
    with producers[connection].acquire(block=True) as producer:
        maybe_declare(task_exchange, producer.channel)
        producer.publish(payload, serializer=&quot;pickle&quot;,
                                  compression=&quot;bzip2&quot;,
                                  routing_key=routing_key)
if __name__ == &quot;__main__&quot;:
    from kombu import BrokerConnection
    from tasks import hello_task
    connection = BrokerConnection(&quot;amqp://guest:guest@localhost:5672//&quot;)
    send_as_task(connection, fun=hello_task, args=(&quot;Kombu&quot;, ), kwargs={},
                 priority=&quot;high&quot;)
</pre>
<p>worker.pyを動かして、別プロセスでclient.pyを動かしてみると動きが確認できます。<br />
kombuを使った実装はnovaの実装も参考になりそうです。<br />
<a href="https://github.com/openstack/nova/blob/master/nova/rpc/impl_kombu.py">nova/rpc/impl_kombu.py at master from openstack/nova &#8211; GitHub</a></p>

]]></content:encoded>
			<wfw:commentRss>http://lowlevellife.com/2012/02/%e3%83%97%e3%83%ad%e3%82%bb%e3%82%b9%e9%96%93%e3%81%ae%e3%82%84%e3%82%8a%e5%8f%96%e3%82%8a%e3%82%92%e7%b0%a1%e5%8d%98%e3%81%ab%e3%80%82centos5-7-rabbitmq-python-pikakombu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>国内ソフトウェア開発者が最もよく使う言語、必要な言語は? &#8211; IDC &#124; 経営 &#124; マイナビニュース</title>
		<link>http://lowlevellife.com/2012/02/%e5%9b%bd%e5%86%85%e3%82%bd%e3%83%95%e3%83%88%e3%82%a6%e3%82%a7%e3%82%a2%e9%96%8b%e7%99%ba%e8%80%85%e3%81%8c%e6%9c%80%e3%82%82%e3%82%88%e3%81%8f%e4%bd%bf%e3%81%86%e8%a8%80%e8%aa%9e%e3%80%81%e5%bf%85/</link>
		<comments>http://lowlevellife.com/2012/02/%e5%9b%bd%e5%86%85%e3%82%bd%e3%83%95%e3%83%88%e3%82%a6%e3%82%a7%e3%82%a2%e9%96%8b%e7%99%ba%e8%80%85%e3%81%8c%e6%9c%80%e3%82%82%e3%82%88%e3%81%8f%e4%bd%bf%e3%81%86%e8%a8%80%e8%aa%9e%e3%80%81%e5%bf%85/#comments</comments>
		<pubDate>Tue, 07 Feb 2012 23:49:49 +0000</pubDate>
		<dc:creator>planset</dc:creator>
				<category><![CDATA[どうでもいい]]></category>

		<guid isPermaLink="false">http://lowlevellife.com/?p=1507</guid>
		<description><![CDATA[自分の会社は受託ソフトウェア開発＋VB.NETメインです。 受注ソフトウェア開発＋Visual Basicといえば、Windows的なアプリを想像してしまうけど、今後はここらにTitaniumDesktop（最近見てない &#8230;<p class="read-more"><a href="http://lowlevellife.com/2012/02/%e5%9b%bd%e5%86%85%e3%82%bd%e3%83%95%e3%83%88%e3%82%a6%e3%82%a7%e3%82%a2%e9%96%8b%e7%99%ba%e8%80%85%e3%81%8c%e6%9c%80%e3%82%82%e3%82%88%e3%81%8f%e4%bd%bf%e3%81%86%e8%a8%80%e8%aa%9e%e3%80%81%e5%bf%85/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[
<p>自分の会社は受託ソフトウェア開発＋VB.NETメインです。</p>
<p>受注ソフトウェア開発＋Visual Basicといえば、Windows的なアプリを想像してしまうけど、今後はここらにTitaniumDesktop（最近見てないけど開発されてるのかなぁ）みたいなhtml、javascript、php/ruby/pythonあたりのアプリも食い込んでくるんでしょうか。</p>
<p>こないだろうなぁ。。。</p>
<p>とりあえず、グラフを見るとpythonがかなしいなぁ。<br />
rubyもウハウハしてそうに感じられるのにグラフにすると寂しい。<br />
.NetもC#も案外少ないのね。VB.NETよりサンプルは多い気がするんだけどなぁ。</p>
<p><a href='http://news.mynavi.jp/news/2012/02/07/018/'>国内ソフトウェア開発者が最もよく使う言語、必要な言語は? &#8211; IDC | 経営 | マイナビニュース</a>.</p>

]]></content:encoded>
			<wfw:commentRss>http://lowlevellife.com/2012/02/%e5%9b%bd%e5%86%85%e3%82%bd%e3%83%95%e3%83%88%e3%82%a6%e3%82%a7%e3%82%a2%e9%96%8b%e7%99%ba%e8%80%85%e3%81%8c%e6%9c%80%e3%82%82%e3%82%88%e3%81%8f%e4%bd%bf%e3%81%86%e8%a8%80%e8%aa%9e%e3%80%81%e5%bf%85/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>今年やりたいこと</title>
		<link>http://lowlevellife.com/2012/01/%e4%bb%8a%e5%b9%b4%e3%82%84%e3%82%8a%e3%81%9f%e3%81%84%e3%81%93%e3%81%a8/</link>
		<comments>http://lowlevellife.com/2012/01/%e4%bb%8a%e5%b9%b4%e3%82%84%e3%82%8a%e3%81%9f%e3%81%84%e3%81%93%e3%81%a8/#comments</comments>
		<pubDate>Mon, 16 Jan 2012 08:40:28 +0000</pubDate>
		<dc:creator>planset</dc:creator>
				<category><![CDATA[どうでもいい]]></category>

		<guid isPermaLink="false">http://lowlevellife.com/?p=1504</guid>
		<description><![CDATA[１．OpenStack 　今年の前半はOpenStackについて勉強していこうと思っています。 　ubuntu12.04がでたら触ろうと思ってたんですが、その前に別件で勉強しようという話があって色々触っているところです。 &#8230;<p class="read-more"><a href="http://lowlevellife.com/2012/01/%e4%bb%8a%e5%b9%b4%e3%82%84%e3%82%8a%e3%81%9f%e3%81%84%e3%81%93%e3%81%a8/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[
<p>１．OpenStack<br />
　今年の前半はOpenStackについて勉強していこうと思っています。<br />
　ubuntu12.04がでたら触ろうと思ってたんですが、その前に別件で勉強しようという話があって色々触っているところです。</p>
<p>２．関数型言語<br />
　触ったことないので、haskellとかerlangとかそういうの。</p>

]]></content:encoded>
			<wfw:commentRss>http://lowlevellife.com/2012/01/%e4%bb%8a%e5%b9%b4%e3%82%84%e3%82%8a%e3%81%9f%e3%81%84%e3%81%93%e3%81%a8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flaskはいつ使えばいいのか</title>
		<link>http://lowlevellife.com/2012/01/flask%e3%81%af%e3%81%84%e3%81%a4%e4%bd%bf%e3%81%88%e3%81%b0%e3%81%84%e3%81%84%e3%81%ae%e3%81%8b/</link>
		<comments>http://lowlevellife.com/2012/01/flask%e3%81%af%e3%81%84%e3%81%a4%e4%bd%bf%e3%81%88%e3%81%b0%e3%81%84%e3%81%84%e3%81%ae%e3%81%8b/#comments</comments>
		<pubDate>Mon, 16 Jan 2012 03:37:44 +0000</pubDate>
		<dc:creator>planset</dc:creator>
				<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://lowlevellife.com/?p=1497</guid>
		<description><![CDATA[「Flask の使いどころ &#8211; Twisted Mind」や「Flaskを１年仕事で使った感想 &#8211; kawaken’s blog」で書かれていたのですが、自分もFlaskをさわっていた感じからは同 &#8230;<p class="read-more"><a href="http://lowlevellife.com/2012/01/flask%e3%81%af%e3%81%84%e3%81%a4%e4%bd%bf%e3%81%88%e3%81%b0%e3%81%84%e3%81%84%e3%81%ae%e3%81%8b/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[
<p>「<a href='http://d.hatena.ne.jp/Voluntas/20120114/1326519732'>Flask の使いどころ &#8211; Twisted Mind</a>」や「<a href="http://d.hatena.ne.jp/kentaro_kawano/20120115/1326612808">Flaskを１年仕事で使った感想 &#8211; kawaken’s blog</a>」で書かれていたのですが、自分もFlaskをさわっていた感じからは同じような認識です。（といっても、これらの方々と違い、自分は仕事でpythonを使っていないし、ウェブに関わる仕事もしていないし、昨年１年ちまちまとpythonの勉強をしていただけですが・・・。）</p>
<p>とりあえず、自分がFlaskを使うかどうかの大きいポイントは以下です。</p>
<p>・プロトタイプはFlaskで。<br />
・データベースをしっかり使うならFlaskはやめる。<br />
・ファイルが沢山になるならやめる。</p>
<p>Flaskを採用する基準は<a href="https://github.com/mitsuhiko/flask-pastebin">mitsuhiko/flask-pastebin &#8211; GitHub</a>くらいじゃないのかなーと思っています。<br />
これ以上になったら、お仕事としてはしっかりしたフレームワーク（DjangoやPyramid）を使う方がいいと思ってます。</p>
<p>昨年はpythonの勉強と言うことで、Flaskをベースに、認証とか、SQLAlchemyとか、ディレクトリ構成を考えたり、デバッグやらライブラリの動きとか、いろんなのを触ることができて丁度よかったのは間違いないです。<br />
今までにrailsとかdjangoなども触ってきましたが、どう動いてるのかわからないことが多かったですが、flaskを触ってからは「ああ、ここの処理を良きに計らってくれているのね」ということがわかるようになった気がします。</p>

]]></content:encoded>
			<wfw:commentRss>http://lowlevellife.com/2012/01/flask%e3%81%af%e3%81%84%e3%81%a4%e4%bd%bf%e3%81%88%e3%81%b0%e3%81%84%e3%81%84%e3%81%ae%e3%81%8b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTMLテンプレート管理ツール</title>
		<link>http://lowlevellife.com/2011/12/html%e3%83%86%e3%83%b3%e3%83%97%e3%83%ac%e3%83%bc%e3%83%88%e7%ae%a1%e7%90%86%e3%83%84%e3%83%bc%e3%83%ab/</link>
		<comments>http://lowlevellife.com/2011/12/html%e3%83%86%e3%83%b3%e3%83%97%e3%83%ac%e3%83%bc%e3%83%88%e7%ae%a1%e7%90%86%e3%83%84%e3%83%bc%e3%83%ab/#comments</comments>
		<pubDate>Fri, 30 Dec 2011 07:45:54 +0000</pubDate>
		<dc:creator>planset</dc:creator>
				<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://lowlevellife.com/?p=1480</guid>
		<description><![CDATA[さて。今年最後の投稿になります。 今年はpythonで遊んだ１年になりましたが、非常に面白い年でした。 というわけで、今年の最後はpythonで作ったものをひとつ。 ワンクリックでインストールできて動作できればいいんです &#8230;<p class="read-more"><a href="http://lowlevellife.com/2011/12/html%e3%83%86%e3%83%b3%e3%83%97%e3%83%ac%e3%83%bc%e3%83%88%e7%ae%a1%e7%90%86%e3%83%84%e3%83%bc%e3%83%ab/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[
<p>さて。今年最後の投稿になります。<br />
今年はpythonで遊んだ１年になりましたが、非常に面白い年でした。</p>
<p>というわけで、今年の最後はpythonで作ったものをひとつ。<br />
ワンクリックでインストールできて動作できればいいんですが、全然そうはいかないのが残念。<br />
しかし、python、virtualenv、Flask、SQLite3、twitter-bootstrap、jquery、とかそこらへんを絡めてますので、これからpython+Flaskで何かを作りたいなーと思っている方の参考になればいいかなーと思います。<br />
まー。@mitsuhikoさまのgithubを覗くのが一番参考になるけどね。<br />
ではよいおとしを！</p>
<p><span id="more-1480"></span></p>
<h3>HTMLテンプレート管理ツール</h3>
<p>　色々なところで見かけた使えそうなHTMLテンプレートをダウンロードするも、すぐにどこに保存したか忘れたり、そもそもダウンロードしたことすら忘れる。<br />
　そんな私のためのHTMLテンプレート管理ツールです。</p>
<h4>特徴</h4>
<ul>
<li>ちょーシンプル</li>
<li>テンプレートファイル（zip圧縮)を展開してデモページを作成。</li>
<li>デモページからスクリーンショットを撮ってサムネイルを作成。</li>
<li>最低限の手間で、なんとなく良い感じ</li>
<li>タグ入力で分類も可能（でも、これは雑な作り）</li>
</ul>
<h4>スクリーンショット</h4>
<p>最初はなんにもないよ。<br />
<a href="http://lh6.ggpht.com/-PR-bZ5BK6mI/Tv0pEK_M1tI/AAAAAAAAEcU/tloPbNIeKWs/Screen%252520Shot%2525202011-12-30%252520at%25252010.15.15%252520AM.jpg" title="Screen Shot 2011-12-30 at 10.15.15 AM.jpg" rel="lightbox" ><img src="http://lh6.ggpht.com/-PR-bZ5BK6mI/Tv0pEK_M1tI/AAAAAAAAEcU/tloPbNIeKWs/w480/Screen%252520Shot%2525202011-12-30%252520at%25252010.15.15%252520AM.jpg" alt="Screen Shot 2011-12-30 at 10.15.15 AM.jpg" title="Screen Shot 2011-12-30 at 10.15.15 AM.jpg" class="alignnone" width="480" /></a> </p>
<p>adminでログインすると「add」できるようになるから、テンプレートを追加してみるよ。<br />
<a href="http://lh3.ggpht.com/-Zbh6Kb8cgnc/Tv0pE0wqyhI/AAAAAAAAEcY/3BjgZhgqjho/Screen%252520Shot%2525202011-12-30%252520at%25252010.37.05%252520AM.jpg" title="Screen Shot 2011-12-30 at 10.37.05 AM.jpg" rel="lightbox" ><img src="http://lh3.ggpht.com/-Zbh6Kb8cgnc/Tv0pE0wqyhI/AAAAAAAAEcY/3BjgZhgqjho/w480/Screen%252520Shot%2525202011-12-30%252520at%25252010.37.05%252520AM.jpg" alt="Screen Shot 2011-12-30 at 10.37.05 AM.jpg" title="Screen Shot 2011-12-30 at 10.37.05 AM.jpg" class="alignnone" width="480" /></a> </p>
<p>テンプレートが追加されたよ。<br />
<a href="http://lh3.ggpht.com/-V-dawzsixZ4/Tv0poTrAbxI/AAAAAAAAEck/dEyfjNLt7dc/Screen%252520Shot%2525202011-12-30%252520at%25252012.01.40%252520PM.jpg" title="Screen Shot 2011-12-30 at 12.01.40 PM.jpg" rel="lightbox" ><img src="http://lh3.ggpht.com/-V-dawzsixZ4/Tv0poTrAbxI/AAAAAAAAEck/dEyfjNLt7dc/w480/Screen%252520Shot%2525202011-12-30%252520at%25252012.01.40%252520PM.jpg" alt="Screen Shot 2011-12-30 at 12.01.40 PM.jpg" title="Screen Shot 2011-12-30 at 12.01.40 PM.jpg" class="alignnone" width="480" /></a> </p>
<p>テンプレートファイルのスクリーンショットとデモページができるよ。<br />
<a href="http://lh4.ggpht.com/-tnU-BoJVfHk/Tv0pGpEci4I/AAAAAAAAEcg/t5eEX-xm2HE/Screen%252520Shot%2525202011-12-30%252520at%25252011.14.32%252520AM.jpg" title="Screen Shot 2011-12-30 at 11.14.32 AM.jpg" rel="lightbox" ><img src="http://lh4.ggpht.com/-tnU-BoJVfHk/Tv0pGpEci4I/AAAAAAAAEcg/t5eEX-xm2HE/w480/Screen%252520Shot%2525202011-12-30%252520at%25252011.14.32%252520AM.jpg" alt="Screen Shot 2011-12-30 at 11.14.32 AM.jpg" title="Screen Shot 2011-12-30 at 11.14.32 AM.jpg" class="alignnone" width="480" /></a> </p>
<h3>ソース、動かし方</h3>
<p>　ソースと動かし方はgithubのreadmeを見てくださいませ。</p>
<p><a href="https://github.com/planset/templa">planset/templa &#8211; GitHub</a></p>

]]></content:encoded>
			<wfw:commentRss>http://lowlevellife.com/2011/12/html%e3%83%86%e3%83%b3%e3%83%97%e3%83%ac%e3%83%bc%e3%83%88%e7%ae%a1%e7%90%86%e3%83%84%e3%83%bc%e3%83%ab/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jenkinsをpythonから動かす</title>
		<link>http://lowlevellife.com/2011/12/jenkins%e3%82%92python%e3%81%8b%e3%82%89%e5%8b%95%e3%81%8b%e3%81%99/</link>
		<comments>http://lowlevellife.com/2011/12/jenkins%e3%82%92python%e3%81%8b%e3%82%89%e5%8b%95%e3%81%8b%e3%81%99/#comments</comments>
		<pubDate>Sat, 10 Dec 2011 04:15:55 +0000</pubDate>
		<dc:creator>planset</dc:creator>
				<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://lowlevellife.com/?p=1466</guid>
		<description><![CDATA[Welcome to Python Jenkins’s documentation! — Python Jenkins v0.2 documentation Welcome to AutoJenkins’s docume &#8230;<p class="read-more"><a href="http://lowlevellife.com/2011/12/jenkins%e3%82%92python%e3%81%8b%e3%82%89%e5%8b%95%e3%81%8b%e3%81%99/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[
<pre class="brush: bash; title: ; notranslate">
pip install python-jenkins
</pre>
<pre class="brush: python; title: ; notranslate">
import jenkins
j = jenkins.Jenkins('http://host/jenkins')
print j.get_jobs()
print j.build_job(jobname)
</pre>
<p><a href="http://packages.python.org/python-jenkins/">Welcome to Python Jenkins’s documentation! — Python Jenkins v0.2 documentation</a></p>
<p><a href="http://packages.python.org/autojenkins/">Welcome to AutoJenkins’s documentation! — AutoJenkins 0.4.3 documentation</a></p>

]]></content:encoded>
			<wfw:commentRss>http://lowlevellife.com/2011/12/jenkins%e3%82%92python%e3%81%8b%e3%82%89%e5%8b%95%e3%81%8b%e3%81%99/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>pythonのクラス</title>
		<link>http://lowlevellife.com/2011/12/python%e3%81%ae%e3%82%af%e3%83%a9%e3%82%b9/</link>
		<comments>http://lowlevellife.com/2011/12/python%e3%81%ae%e3%82%af%e3%83%a9%e3%82%b9/#comments</comments>
		<pubDate>Thu, 08 Dec 2011 20:18:26 +0000</pubDate>
		<dc:creator>planset</dc:creator>
				<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://lowlevellife.com/?p=1463</guid>
		<description><![CDATA[クラスの型からクラスインスタンスを生成したかったのだけど、mac上のpythonから同じことしたら同じインスタンスを指してたんだよなー。 と、思ってこれ書いてたら普通に動いてた・・・？？　あれれ？？　まぁいいか・・・ [ &#8230;<p class="read-more"><a href="http://lowlevellife.com/2011/12/python%e3%81%ae%e3%82%af%e3%83%a9%e3%82%b9/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[
<p>クラスの型からクラスインスタンスを生成したかったのだけど、mac上のpythonから同じことしたら同じインスタンスを指してたんだよなー。<br />
と、思ってこれ書いてたら普通に動いてた・・・？？　あれれ？？　まぁいいか・・・</p>
<pre class="brush: python; title: ; notranslate">
class TestClass(object):
  def __init__(self, msg):
    self.msg = msg

klass = TestClass

a = klass('a')
b = klass('b')

assert(a.msg == 'a')
assert(b.msg == 'b')
</pre>
<p><a href="http://d.hatena.ne.jp/hope-echoes/20080409/1207732499">[Python] クラスの挙動まとめ #1 &#8211; 大カフェイン</a><br />
<a href="http://d.hatena.ne.jp/hope-echoes/20080410/1207826778">クラスの挙動まとめ #2 &#8211; 大カフェイン</a><br />
<a href="http://d.hatena.ne.jp/atsuoishimoto/20110213/1297560371">Pythonの型と二つのクラス、そしてインスタンス &#8211; atsuoishimotoの日記</a></p>

]]></content:encoded>
			<wfw:commentRss>http://lowlevellife.com/2011/12/python%e3%81%ae%e3%82%af%e3%83%a9%e3%82%b9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced

Served from: _www.lowlevellife.com @ 2012-02-23 11:35:36 -->
