<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.deadbeaf.org/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.deadbeaf.org/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss 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" version="2.0">

<channel>
	<title>en.mootoh.log</title>
	
	<link>http://en.deadbeaf.org</link>
	<description>one step closer</description>
	<pubDate>Sat, 31 May 2008 06:18:04 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.deadbeaf.org/deadbeaf/TwdK" type="application/rss+xml" /><item>
		<title>Rubigraph</title>
		<link>http://en.deadbeaf.org/2008/05/25/rubigraph/</link>
		<comments>http://en.deadbeaf.org/2008/05/25/rubigraph/#comments</comments>
		<pubDate>Sun, 25 May 2008 07:37:12 +0000</pubDate>
		<dc:creator>mootoh</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[ruby]]></category>

		<category><![CDATA[visualize]]></category>

		<guid isPermaLink="false">http://en.deadbeaf.org/?p=14</guid>
		<description><![CDATA[				Summary
				
				I wrote a Rubigraph, a Ruby wrapper for   Ubigraph .
				
				What is Ubigraph
				
				I recently found Ubigraph, a nice visualization tool.
				Though I&#8217;m also big fan of Graphviz, which generates static graph visualization, I got falling in love with Ubigraph because it&#8217;s so dynamic.
				Ubigraph can add, remove and change nodes, edges, and their attributes.
				It&#8217;s amazing! See [...]]]></description>
			<content:encoded><![CDATA[				<h3>Summary</h3>
				
				<p>I wrote a <strong>Rubigraph</strong>, a Ruby wrapper for   <a href="http://www.ubietylab.net/ubigraph/">Ubigraph</a> .</p>
				
				<h3>What is Ubigraph</h3>
				
				<p>I recently found <a href="http://www.ubietylab.net/ubigraph/">Ubigraph</a>, a nice visualization tool.
				Though I&#8217;m also big fan of <a href="http://www.graphviz.org/">Graphviz</a>, which generates static graph visualization, I got falling in love with Ubigraph because it&#8217;s so dynamic.
				Ubigraph can add, remove and change nodes, edges, and their attributes.
				It&#8217;s amazing! See <a href="http://www.ubietylab.net/ubigraph/content/Demos/index.html">demonstration movie</a>.</p>
				
				<p>It is based on client/server architecture. Though the server source code is closed, its <a href="http://www.ubietylab.net/ubigraph/content/Docs/index.html">XML-RPC API</a> is open, and we can write our client application easily. It has Mac OS X and Linux binaries.</p>
				
				<h3>What is Rubigraph</h3>
				
				<p>But, I cannot put up with writing XML-RPC by referencing API manual every time !
				So I made a small Ruby wrap for it, and released it as <strong>Rubigraph</strong>.</p>
				
				<h3>Install</h3>
				
				<p>Type <code>gem install rubygraph</code>.
				Its place in Rubyforge is <a href="http://rubyforge.org/projects/rubigraph/">here</a>.</p>
				
				<h3>Source code</h3>
				
				<ul>
				<li><a href="http://github.com/mootoh/rubigraph/tree/master">github</a></li>
				<li><a href="http://coderepos.org/share/browser/lang/ruby/rubigraph/">CodeRepos</a></li>
				</ul>
				
				<h3>How do I write a graph</h3>
				
				
				<div class="wp_syntax"><div class="code"><pre class="ruby"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'rubigraph'</span>
&nbsp;
Rubigraph.<span style="color:#9900CC;">init</span>        <span style="color:#008000; font-style:italic;"># initialize XML-RPC client.</span>
&nbsp;
v1  = Vertex.<span style="color:#9900CC;">new</span>
v2  = Vertex.<span style="color:#9900CC;">new</span>
e12 = Edge.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span>v1, v2<span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
v1.<span style="color:#9900CC;">color</span>  = <span style="color:#996600;">'#003366'</span>
v2.<span style="color:#9900CC;">shape</span>  = <span style="color:#996600;">'sphere'</span>
e12.<span style="color:#9900CC;">label</span> = <span style="color:#996600;">'edge between 1 and 2'</span></pre></div></div>
				
				
				<p>It seems easy, isn&#8217;t it?</p>
				
				<h3>Conclusion</h3>
				
				<p>It&#8217;s a fun to visualize some data dynamically. I&#8217;m using it for tracing function calls, feeling so convinient. Ubigraph++.</p>
]]></content:encoded>
			<wfw:commentRss>http://en.deadbeaf.org/2008/05/25/rubigraph/feed/</wfw:commentRss>
		</item>
		<item>
		<title>IDAvailability</title>
		<link>http://en.deadbeaf.org/2008/04/24/idavailability/</link>
		<comments>http://en.deadbeaf.org/2008/04/24/idavailability/#comments</comments>
		<pubDate>Wed, 23 Apr 2008 23:33:10 +0000</pubDate>
		<dc:creator>mootoh</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[id]]></category>

		<category><![CDATA[idavailability]]></category>

		<category><![CDATA[webapp]]></category>

		<guid isPermaLink="false">http://en.deadbeaf.org/2008/04/24/idavailability/</guid>
		<description><![CDATA[				I made a small web application, IDAvailability
				that checks how available the entered ID is in the world.
				
				Web services
				
				I added only 8 web services at the begenning.
				However, web service information is stored in wedata,
				a wiki-like data store that everyone can edit, everybody can add web services to it (for now, 28 web services has been added).
				Database [...]]]></description>
			<content:encoded><![CDATA[				<p>I made a small web application, <a href="http://deadbeaf.org/idavailability/">IDAvailability</a>
				that checks how available the entered ID is in the world.</p>
				
				<h3>Web services</h3>
				
				<p>I added only 8 web services at the begenning.
				However, web service information is stored in <a href="http://wedata.net/">wedata</a>,
				a wiki-like data store that everyone can edit, everybody can add web services to it (for now, 28 web services has been added).
				Database is <a href="http://wedata.net/databases/idAvailability/items">here</a>.</p>
				
				<p>You can add a web service from <a href="http://wedata.net/databases/idAvailability/items/new">Create New Item</a>,
				and enter following information.</p>
				
				<ul>
				<li>name : name of web service (any)</li>
				<li>urlToCheck : URL embedded #{ID} variable (like <strong>http://nantokakanto.ka/user/</strong>#{ID})</li>
				<li>condition : a XPath expression to check whether the ID is used <em>when</em> the server response is HTTP 200 , not &#8221;404 Not Found&#8221; while accessing urlToCheck. (for example, see flickr)</li>
				</ul>
				
				<h3>Code</h3>
				
				<ul>
				<li><a href="http://coderepos.org/share/browser/websites/idavailability">Coderepos/websites/idavailability</a></li>
				<li>revised BSD</li>
				</ul>
				
				<h3>ToDo</h3>
				
				<ul>
				<li>Move check functions to client-side (retrieving HTML via Ajax, examining XPath&#8230;)</li>
				<li>Better looks</li>
				</ul>
				
				<hr />
				
				<p>Try and enjoy it, also add your favorite web service missing.</p>
]]></content:encoded>
			<wfw:commentRss>http://en.deadbeaf.org/2008/04/24/idavailability/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Gainer++ - use Gainer from C++</title>
		<link>http://en.deadbeaf.org/2008/03/31/gainer-cplusplus/</link>
		<comments>http://en.deadbeaf.org/2008/03/31/gainer-cplusplus/#comments</comments>
		<pubDate>Mon, 31 Mar 2008 07:46:17 +0000</pubDate>
		<dc:creator>mootoh</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA["c++"]]></category>

		<category><![CDATA[gainer]]></category>

		<guid isPermaLink="false">http://en.deadbeaf.org/2008/03/31/gainer-cplusplus/</guid>
		<description><![CDATA[				I wrote a C++ wrapper library for Gainer, based on its Ruby library (gainer-ruby).
				The code is submitted to CodeRepos as Gainer++, here.
				
				So Far
				
				It supports following functions:
				
				
				mode switch by constructor
				analog inputs
				digital inputs
				
				
				It has some examples, like blinking LED on Gainer I/O module (gainer-led.cc).
				
				
				
				Feel free to use, modify, and commit to it.
]]></description>
			<content:encoded><![CDATA[				<p>I wrote a C++ wrapper library for <a href="http://gainer.cc/">Gainer</a>, based on its Ruby library (<a href="http://8-p.info/gainer-ruby/">gainer-ruby</a>).
				The code is submitted to <a href="http://coderepos.org/share">CodeRepos</a> as <a href="http://coderepos.org/share/wiki/Gainer%2B%2B">Gainer++</a>, <a href="http://coderepos.org/share/browser/lang/cplusplus/gainer%2B%2B">here</a>.</p>
				
				<h2>So Far</h2>
				
				<p>It supports following functions:</p>
				
				<ul>
				<li>mode switch by constructor</li>
				<li>analog inputs</li>
				<li>digital inputs</li>
				</ul>
				
				<p>It has some examples, like blinking LED on Gainer I/O module (<a href="http://coderepos.org/share/browser/lang/cplusplus/gainer%2B%2B/gainer-led.cc">gainer-led.cc</a>).</p>
				
				<hr />
				
				<p>Feel free to use, modify, and commit to it.</p>
]]></content:encoded>
			<wfw:commentRss>http://en.deadbeaf.org/2008/03/31/gainer-cplusplus/feed/</wfw:commentRss>
		</item>
		<item>
		<title>infowi.se</title>
		<link>http://en.deadbeaf.org/2008/03/08/infowise/</link>
		<comments>http://en.deadbeaf.org/2008/03/08/infowise/#comments</comments>
		<pubDate>Sat, 08 Mar 2008 04:27:23 +0000</pubDate>
		<dc:creator>mootoh</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[infowise]]></category>

		<guid isPermaLink="false">http://en.deadbeaf.org/2008/03/08/infowise/</guid>
		<description><![CDATA[				I was invited to join a project, named infowi.se, by a person who read this entry about QSTwitter.
				As I saw this, team consists of one European, two Americans, one Japanese (me). Wow, what an exciting opportunity!
				
				So far I don&#8217;t know how it&#8217;s going, I&#8217;m feeling happy to contribute, make something special  
]]></description>
			<content:encoded><![CDATA[				<p>I was invited to join a project, named infowi.se, by a person who read <a href="http://en.deadbeaf.org/2007/12/13/quicksilver-twitter-plugin/">this entry</a> about <a href="http://trac.deadbeaf.org/mootoh/wiki/QSTwitter">QSTwitter</a>.
				As I saw <a href="http://twitter.com/infowise/statuses/767656549">this</a>, team consists of one European, two Americans, one Japanese (me). Wow, what an exciting opportunity!</p>
				
				<p>So far I don&#8217;t know how it&#8217;s going, I&#8217;m feeling happy to contribute, make something special <img src='http://en.deadbeaf.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://en.deadbeaf.org/2008/03/08/infowise/feed/</wfw:commentRss>
		</item>
		<item>
		<title>started en.mootoh.log</title>
		<link>http://en.deadbeaf.org/2008/02/15/started-en-mootoh-log/</link>
		<comments>http://en.deadbeaf.org/2008/02/15/started-en-mootoh-log/#comments</comments>
		<pubDate>Fri, 15 Feb 2008 14:30:19 +0000</pubDate>
		<dc:creator>mootoh</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mootoh.s330.xrea.com/en.deadbeaf.org/?p=3</guid>
		<description><![CDATA[				Today, I decided to write English blog about my recent works (Japanese version is here).
				Hope you will enjoy it.
]]></description>
			<content:encoded><![CDATA[				<p>Today, I decided to write English blog about my recent works (Japanese version is <a href="http://blog.deadbeaf.org/">here</a>).
				Hope you will enjoy it.</p>
]]></content:encoded>
			<wfw:commentRss>http://en.deadbeaf.org/2008/02/15/started-en-mootoh-log/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Write a Quicksilver plugin with RubyCocoa</title>
		<link>http://en.deadbeaf.org/2008/02/03/quicksilver-plugin-with-rubycocoa-en/</link>
		<comments>http://en.deadbeaf.org/2008/02/03/quicksilver-plugin-with-rubycocoa-en/#comments</comments>
		<pubDate>Sat, 02 Feb 2008 16:17:30 +0000</pubDate>
		<dc:creator>mootoh</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[mac]]></category>

		<category><![CDATA[quicksilver]]></category>

		<category><![CDATA[ruby]]></category>

		<category><![CDATA[RubyCocoa]]></category>

		<guid isPermaLink="false">http://mootoh.s330.xrea.com/en.deadbeaf.org/2008/02/03/quicksilver-plugin-with-rubycocoa-en/</guid>
		<description><![CDATA[				I wrote a Quicksilver plugin with RubyCocoa,
				that adds &#8220;hello world&#8221; to the passed string.
				
				
				Xcode project codes : in CodeRepos
				License : revised BSD
				
				
				It should work on Tiger/Leopard if RubyCocoa is installed.
				
				How does it work
				
				As I mentioned in QuartzComposer CustomPatch with RubyCocoa,
				we just call RBBundleInit() function in plugin initializaiton phase to write some plugin with RubyCocoa.
				But wait, [...]]]></description>
			<content:encoded><![CDATA[				<p>I wrote a <a href="http://www.blacktree.com/">Quicksilver</a> plugin with <a href="http://rubycocoa.sourceforge.net/HomePage">RubyCocoa</a>,
				that adds &#8220;hello world&#8221; to the passed string.</p>
				
				<ul>
				<li>Xcode project codes : in <a href="http://coderepos.org/share/browser/platform/quicksilver/RubyCocoaPlugin?rev=6036">CodeRepos</a></li>
				<li>License : revised BSD</li>
				</ul>
				
				<p>It should work on Tiger/Leopard if RubyCocoa is installed.</p>
				
				<h2>How does it work</h2>
				
				<p>As I mentioned in <a href="http://blog.deadbeaf.org/archives/1781">QuartzComposer CustomPatch with RubyCocoa</a>,
				we just call <strong>RBBundleInit()</strong> function in plugin initializaiton phase to write some plugin with RubyCocoa.
				But wait, where should be the initializaiton code in Quicksilver plugin ?</p>
				
				<p>We write actual plugin behavior in the class that inherits <strong>QSActionProvider</strong>,
				so I tried to call RBBundleInit() in the <strong>init()</strong> method in that class&#8230; however, that resulted in crashing Quicksilver <img src='http://en.deadbeaf.org/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
				
				<p>Then I called RBBundleInit() at only first time in <strong>performActionOnObject()</strong> of the actual Action class, and
				made references between Objective-C and Ruby class instances.</p>
				
				<p>After that, I implemented an actual action behavior in Ruby class, and delegates from Objective-C to Ruby method, thats&#8217; all.
				This is ugly, confusing, &#8230; I know, but it does work well <img src='http://en.deadbeaf.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
				
				<h2>Code Snippets</h2>
				
				<h3>ActionProvider in Objective-C:</h3>
				
				
				<div class="wp_syntax"><div class="code"><pre class="objc"> <span style="color: #002200;">&#40;</span>QSObject *<span style="color: #002200;">&#41;</span>performActionOnObject:<span style="color: #002200;">&#40;</span>QSObject *<span style="color: #002200;">&#41;</span>dObject<span style="color: #002200;">&#123;</span>
  <span style="color: #ff0000;">// initialize RubyCocoa</span>
  <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">bool</span> loaded = <span style="color: #0000ff;">false</span>;
  <span style="color: #0000ff;">if</span> <span style="color: #002200;">&#40;</span>!loaded<span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #002200;">&#40;</span>RBBundleInit<span style="color: #002200;">&#40;</span><span style="color: #666666;">&quot;qs_action.rb&quot;</span>, <span style="color: #002200;">&#91;</span>self <span style="color: #0000ff;">class</span><span style="color: #002200;">&#93;</span>, self<span style="color: #002200;">&#41;</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span>
      NSLog<span style="color: #002200;">&#40;</span>@<span style="color: #666666;">&quot;[RubyCocoaPluginAction.performActionOnObject] RBBundleInit failed&quot;</span>
<span style="color: #002200;">&#41;</span>;
      <span style="color: #0000dd;">abort</span><span style="color: #002200;">&#40;</span><span style="color: #002200;">&#41;</span>;
    <span style="color: #002200;">&#125;</span>
    loaded = <span style="color: #0000ff;">true</span>;
  <span style="color: #002200;">&#125;</span>
&nbsp;
  <span style="color: #ff0000;">// delegate actual action to Ruby class</span>
  QSObject *ret = <span style="color: #002200;">&#91;</span>QSObject objectWithString:<span style="color: #002200;">&#91;</span>rb_ act:dObject<span style="color: #002200;">&#93;</span><span style="color: #002200;">&#93;</span>;
  <span style="color: #0000ff;">return</span> ret;
<span style="color: #002200;">&#125;</span></pre></div></div>
				
				
				<h3>RubyCocoa side:</h3>
				
				
				<div class="wp_syntax"><div class="code"><pre class="ruby"><span style="color:#9966CC; font-weight:bold;">class</span> Action
  <span style="color:#9966CC; font-weight:bold;">def</span> initialize<span style="color:#006600; font-weight:bold;">&#40;</span>logger<span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#0066ff; font-weight:bold;">@logger</span> = logger
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  <span style="color:#008000; font-style:italic;"># write something great :)</span>
  <span style="color:#008000; font-style:italic;">#  - arg : QSObject</span>
  <span style="color:#9966CC; font-weight:bold;">def</span> act<span style="color:#006600; font-weight:bold;">&#40;</span>arg<span style="color:#006600; font-weight:bold;">&#41;</span>
    val = arg.<span style="color:#9900CC;">stringValue</span>
    <span style="color:#0066ff; font-weight:bold;">@logger</span>.<span style="color:#9900CC;">info</span><span style="color:#006600; font-weight:bold;">&#40;</span>val<span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#996600;">'Hello world, '</span> + val
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span> <span style="color:#008000; font-style:italic;"># Action</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'osx/cocoa'</span>
OSX.<span style="color:#9900CC;">init_for_bundle</span> <span style="color:#9966CC; font-weight:bold;">do</span> |bdl, owner, log|
  <span style="color:#008000; font-style:italic;"># bdl    - the bundle related with the 2nd argument of RBBundleInit</span>
  <span style="color:#008000; font-style:italic;"># owner  - the 3rd argument of RBBundleInit as optional data</span>
  <span style="color:#008000; font-style:italic;"># log    - logger for this block</span>
&nbsp;
  act = Action.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span>log<span style="color:#006600; font-weight:bold;">&#41;</span>
  owner.<span style="color:#9900CC;">setInstance</span> act
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>
				
				
				<h2>Future works</h2>
				
				<ul>
				<li>Better initializaiton. It should be in constractor of some class)</li>
				<li>Inherits QSActionProvider by Ruby class (more pure Ruby)</li>
				<li>Use <strong>ns_import</strong> ?</li>
				</ul>
				
				<p>It should not be &#8220;<strong>With</strong> RubyCocoa&#8221;, but rather &#8220;<strong>By</strong> RubyCocoa&#8221;.</p>
				
				<h2>Conclusion</h2>
				
				<p>I made a start point to write a Quicksilver plugin by RubyCocoa.
				It is <strong>timing of initialization</strong> that is to be considered about writing some bundle in RubyCocoa.
				I made it in this article somehow.
				This article is for someone who wants to create Quicksilver plugin by Ruby, not learning unfamiliar Objective-C.</p>
				
				<h2>Reference</h2>
				
				<ul>
				<li><a href="http://blog.deadbeaf.org/archives/1781">QuartzComposer CustomPatch by RubyCocoa</a></li>
				<li><a href="http://docs.blacktree.com/quicksilver/development/pyobjc_plugins">PyObjC Plug-ins</a> : Article about writing Quicksilver plugin by PyObjC (a bit obsolete&#8230;)</li>
				</ul>
]]></content:encoded>
			<wfw:commentRss>http://en.deadbeaf.org/2008/02/03/quicksilver-plugin-with-rubycocoa-en/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ticket2RTM</title>
		<link>http://en.deadbeaf.org/2008/01/18/ticket2rtm-01/</link>
		<comments>http://en.deadbeaf.org/2008/01/18/ticket2rtm-01/#comments</comments>
		<pubDate>Thu, 17 Jan 2008 16:19:58 +0000</pubDate>
		<dc:creator>mootoh</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[hack]]></category>

		<category><![CDATA[rtm]]></category>

		<category><![CDATA[trac]]></category>

		<guid isPermaLink="false">http://mootoh.s330.xrea.com/en.deadbeaf.org/2008/03/04/ticket2rtm-01/</guid>
		<description><![CDATA[				A Trac plugin that synchronizes Trac tickets and Remember the Milk tasks.
				
				
				when a ticket is created, a RTM task also will be added.
				when you close a ticket, the associated RTM task will be completed.
				
				
				Screenshot
				
				
				
				
				Screencast
				
				
				
				Download
				
				ticket2rtm-0.1.zip
				
				Benefits
				
				
				unified Task List
				check tickets from mobile
				
				
				Install
				
				build
				
				
				edit Makefile and set PLUGINS_DIR to your Trac plugin dir
				make
				
				
				or:
				
				
				python setup.py &#8211;bdist_egg
				copy dist/TracTicket2RTMPlugin*.egg into your Trac plugin [...]]]></description>
			<content:encoded><![CDATA[				<p>A <a href="http://trac.edgewall.com/">Trac</a> plugin that synchronizes Trac tickets and <a href="www.rememberthemilk.com/">Remember the Milk</a> tasks.</p>
				
				<ul>
				<li>when a ticket is created, a RTM task also will be added.</li>
				<li>when you close a ticket, the associated RTM task will be completed.</li>
				</ul>
				
				<h2>Screenshot</h2>
				
				<p><img src="http://gyazo.com/8e5a1b1f891637402b09dcdb764d69d6.png" width="500px" />
				<img src="http://gyazo.com/cdaffa9d1233b93838cf1e29865e6ed4.png" /></p>
				
				<h2>Screencast</h2>
				
				<p><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/M3FysiH8ykY&#038;rel=1"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/M3FysiH8ykY&#038;rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object></p>
				
				<h2>Download</h2>
				
				<p><a href="http://trac.deadbeaf.org/mootoh/attachment/wiki/ticket2rtm/ticket2rtm-0.1.zip?format=raw">ticket2rtm-0.1.zip</a></p>
				
				<h2>Benefits</h2>
				
				<ul>
				<li>unified Task List</li>
				<li>check tickets from mobile</li>
				</ul>
				
				<h2>Install</h2>
				
				<h3>build</h3>
				
				<ol>
				<li>edit Makefile and set PLUGINS_DIR to your Trac plugin dir</li>
				<li>make</li>
				</ol>
				
				<p>or:</p>
				
				<ol>
				<li>python setup.py &#8211;bdist_egg</li>
				<li>copy dist/TracTicket2RTMPlugin*.egg into your Trac plugin dir</li>
				</ol>
				
				<h3>RTM API key, token</h3>
				
				<p>This plugin requires RTM API key, shared secret, and write-permitted token.
				You can obtain your API key and shared secret from <a href="http://www.rememberthemilk.com/services/api/requestkey.rtm">here</a>.</p>
				
				<p>After acquired key and shared secret, you can get your token by using bundled script.
				Run as follow:</p>
				
				<pre><code>% python get_token.py &lt;API key&gt; &lt;shared secret&gt;
</code></pre>
				
				<h2>Configuration</h2>
				
				<ol>
				<li>copy/paste contents of trac_ini_sample.txt to your trac.ini</li>
				<li>set rtm_api_key, rtm_api_secret, rtm_api_token to ones acquired above</li>
				<li>enjoy !</li>
				</ol>
]]></content:encoded>
			<wfw:commentRss>http://en.deadbeaf.org/2008/01/18/ticket2rtm-01/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Quicksilver Twitter Plugin</title>
		<link>http://en.deadbeaf.org/2007/12/13/quicksilver-twitter-plugin/</link>
		<comments>http://en.deadbeaf.org/2007/12/13/quicksilver-twitter-plugin/#comments</comments>
		<pubDate>Wed, 12 Dec 2007 17:49:13 +0000</pubDate>
		<dc:creator>mootoh</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[english]]></category>

		<category><![CDATA[mac]]></category>

		<category><![CDATA[quicksilver]]></category>

		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://mootoh.s330.xrea.com/en.deadbeaf.org/2007/12/13/quicksilver-twitter-plugin/</guid>
		<description><![CDATA[				I wrote a small Quicksilver plugin to send messages to Twitter directly.
				
				
				
				Advantages
				
				
				Easy to install. No additional software required to be installed
				Configurable via Quicksilver Preference
				You can send messages containing non-ASCII characters
				
				
				Download
				
				QSTwitter.zip (1.2) (2008.01.23)
				
				Environment
				
				Tested under Leopard 10.5.1, Quicksilver B53 3814.
				
				Install
				
				Unzip the downloaded file and double-click it. that&#8217;s all !
				
				Configuration
				
				You will find &#8220;Twitter option&#8221; in the Quicksilver preference [...]]]></description>
			<content:encoded><![CDATA[				<p>I wrote a small Quicksilver plugin to send messages to Twitter directly.</p>
				
				<p><img src="http://blog.deadbeaf.org/wp-content/uploads/2008/01/girl_square_on_qs.png" /></p>
				
				<h2>Advantages</h2>
				
				<ul>
				<li>Easy to install. No additional software required to be installed</li>
				<li>Configurable via Quicksilver Preference</li>
				<li>You can send messages containing non-ASCII characters</li>
				</ul>
				
				<h2>Download</h2>
				
				<p><a href="http://deadbeaf.org/archive/QSTwitter.zip" onclick="pageTracker._trackPageview('http://deadbeaf.org/archive/QSTwitter.zip')">QSTwitter.zip</a> (1.2) (2008.01.23)</p>
				
				<h2>Environment</h2>
				
				<p>Tested under Leopard 10.5.1, Quicksilver B53 3814.</p>
				
				<h2>Install</h2>
				
				<p>Unzip the downloaded file and double-click it. that&#8217;s all !</p>
				
				<h2>Configuration</h2>
				
				<p>You will find &#8220;Twitter option&#8221; in the Quicksilver preference pane.
				Enter your screen name and password there.</p>
				
				<p><a href="http://svn.coderepos.org/share/platform/quicksilver/TwitterPlugin/Screenshot-2.png"><img src="http://svn.coderepos.org/share/platform/quicksilver/TwitterPlugin/Screenshot-2.png" width="80%" /></a></p>
				
				<h2>Usage</h2>
				
				<ol>
				<li>Activate Quicksilver (by Ctrl-SPACE or so)</li>
				<li>type . (period/dot) key to enter text input mode</li>
				<li>type a message</li>
				<li>hit TAB to move into Action</li>
				<li>type &#8220;Twitter&#8221;</li>
				<li>return !</li>
				</ol>
				
				<p>The more familar you are with it, the faster you can send messages than ever.</p>
				
				<h2>Screencast</h2>
				
				<p>Seeing is Believing, as you know <img src='http://en.deadbeaf.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> I don&#8217;t know why the video is collapsing for first 15 seconds. Sorry for inconvinience.</p>
				
				<p><object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/OG0qOyIA48Y"></param><embed src="http://www.youtube.com/v/OG0qOyIA48Y" type="application/x-shockwave-flash" width="425" height="350"></embed></object></p>
				
				<h2>Code</h2>
				
				<p>You can see the code in <a href="http://coderepos.org/share/browser/platform/quicksilver/TwitterPlugin/">CodeRepos</a>.</p>
				
				<h2>License</h2>
				
				<p>Considering&#8230;</p>
				
				<h2>Restriction</h2>
				
				<ul>
				<li>I could not post messages throught HTTP proxy. Let me know if anyone succeeded to make it.</li>
				</ul>
				
				<h2>ChangeLog</h2>
				
				<ul>
				<li>1.2 (2008.01.23) : fixes the bug that &#8216;+&#8217; is not shown in status, uses <a href="http://twitter-development-talk.googlegroups.com/web/girl_square.gif?gda=1h9_7kAAAABSqDAFKCkLYrj-8-p-MIsbT3upFAE1vNS1v0OtVpQZt2G1qiJ7UbTIup-M2XPURDSnjdvvYeUIgBOinLjkdSfG">pretty girl icon</a> .</li>
				<li>1.1 (2007.12.22) : now it shows &#8220;QSTwitter&#8221; in your post on &#8220;from &#8230;&#8221; .</li>
				<li>1.0 (2007.12.13) : initial release.</li>
				</ul>
				
				<hr />
				
				<p>There seems no comprehensive documents to develop Quicksilver plugin as far as I searched.
				In order to share my experience to avoid falling into pitfalls, I will write an tutorial developing a Quicksilver plugin under up-to-date environment later.</p>
]]></content:encoded>
			<wfw:commentRss>http://en.deadbeaf.org/2007/12/13/quicksilver-twitter-plugin/feed/</wfw:commentRss>
		</item>
		<item>
		<title>TwitterBot by Ruby</title>
		<link>http://en.deadbeaf.org/2007/11/29/twitterbot-by-ruby/</link>
		<comments>http://en.deadbeaf.org/2007/11/29/twitterbot-by-ruby/#comments</comments>
		<pubDate>Wed, 28 Nov 2007 16:32:21 +0000</pubDate>
		<dc:creator>mootoh</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mootoh.s330.xrea.com/en.deadbeaf.org/2007/11/29/twitterbot-by-ruby/</guid>
		<description><![CDATA[				This tutorial describes how to write your own Twitter bot by Ruby.
				
				Plan
				
				
				Recieves DirectMessages, parses them and sends back responses.
				Keeps on being connected in Twitter via Jabber protocol.
				Written in Ruby !
				
				
				Preparation
				
				Twitter account
				
				You need a twitter account for your bot.
				
				Jabber ID
				
				You need a Jabber ID for your bot to sit in Twitter.
				I use Jabber.JP service (free!), but [...]]]></description>
			<content:encoded><![CDATA[				<p>This tutorial describes how to write your own Twitter bot by Ruby.</p>
				
				<h2>Plan</h2>
				
				<ul>
				<li>Recieves DirectMessages, parses them and sends back responses.</li>
				<li>Keeps on being connected in Twitter via Jabber protocol.</li>
				<li>Written in Ruby !</li>
				</ul>
				
				<h2>Preparation</h2>
				
				<h3>Twitter account</h3>
				
				<p>You need a twitter account for your bot.</p>
				
				<h3>Jabber ID</h3>
				
				<p>You need a Jabber ID for your bot to sit in Twitter.
				I use <a href="http://jabber.jp">Jabber.JP</a> service (free!), but you can choice whatever Jabber service you like.</p>
				
				<p>If you use a GMail address for your bot, you can skip above step.
				(I could not connect to GTalk by GMail sub account, so took a different way)</p>
				
				<h3>Requirements</h3>
				
				<ul>
				<li><a href="http://home.gna.org/xmpp4r/">XMPP4R</a>
				
				<ul>
				<li>gem install xmppr4r</li>
				</ul></li>
				</ul>
				
				<h2>Code</h2>
				
				
				<div class="wp_syntax"><div class="code"><pre class="ruby"><span style="color:#008000; font-style:italic;">#  Tiny Twitter Bot.</span>
<span style="color:#008000; font-style:italic;">#</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'rubygems'</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'xmpp4r'</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'kconv'</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">class</span> Reciever
  attr_accessor <span style="color:#ff3333; font-weight:bold;">:client</span>
&nbsp;
  <span style="color:#008000; font-style:italic;"># user : Jabber ID</span>
  <span style="color:#008000; font-style:italic;"># pass : Password</span>
  <span style="color:#9966CC; font-weight:bold;">def</span> initialize<span style="color:#006600; font-weight:bold;">&#40;</span>user, pass<span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#0066ff; font-weight:bold;">@end</span> = <span style="color:#0000FF; font-weight:bold;">false</span>
    Jabber::debug = <span style="color:#0000FF; font-weight:bold;">true</span>
&nbsp;
    <span style="color:#008000; font-style:italic;"># connect Jabber client to the Server</span>
    <span style="color:#0066ff; font-weight:bold;">@client</span> = <span style="color:#6666ff; font-weight:bold;">Jabber::Client</span>.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#6666ff; font-weight:bold;">Jabber::JID</span>.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span>user<span style="color:#006600; font-weight:bold;">&#41;</span>, <span style="color:#0000FF; font-weight:bold;">false</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#0066ff; font-weight:bold;">@client</span>.<span style="color:#9900CC;">connect</span>
    <span style="color:#0066ff; font-weight:bold;">@client</span>.<span style="color:#9900CC;">auth</span><span style="color:#006600; font-weight:bold;">&#40;</span>pass<span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#0066ff; font-weight:bold;">@client</span>.<span style="color:#9900CC;">send</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#6666ff; font-weight:bold;">Jabber::Presence</span>::new<span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
    thread = <span style="color:#CC00FF; font-weight:bold;">Thread</span>.<span style="color:#9900CC;">current</span>
&nbsp;
    <span style="color:#008000; font-style:italic;"># a callback to parse recieved messages</span>
    <span style="color:#0066ff; font-weight:bold;">@client</span>.<span style="color:#9900CC;">add_message_callback</span> <span style="color:#9966CC; font-weight:bold;">do</span> |message|
      <span style="color:#9966CC; font-weight:bold;">unless</span> message.<span style="color:#9900CC;">type</span> == <span style="color:#ff3333; font-weight:bold;">:error</span>
        <span style="color:#9966CC; font-weight:bold;">if</span> message.<span style="color:#9900CC;">body</span> =~ /Direct from <span style="color:#006600; font-weight:bold;">&#40;</span>.<span style="color:#9900CC;">*</span><span style="color:#006600; font-weight:bold;">&#41;</span>:/ <span style="color:#008000; font-style:italic;"># who sends DirectMessage ?</span>
          sender = $<span style="color:#006666;">1</span>
          msg = message.<span style="color:#9900CC;">body</span>.<span style="color:#CC0066; font-weight:bold;">split</span><span style="color:#006600; font-weight:bold;">&#40;</span>/\r?\n/<span style="color:#006600; font-weight:bold;">&#41;</span>
          msg.<span style="color:#9900CC;">shift</span> <span style="color:#008000; font-style:italic;"># cut Direct from ...</span>
          msg.<span style="color:#9900CC;">pop</span> <span style="color:#008000; font-style:italic;"># cut last line, too</span>
          body = msg.<span style="color:#9900CC;">join</span>
&nbsp;
          <span style="color:#008000; font-style:italic;"># </span>
          <span style="color:#008000; font-style:italic;"># do whatever you like in following lines :)</span>
          <span style="color:#008000; font-style:italic;">#</span>
          <span style="color:#9966CC; font-weight:bold;">if</span> body =~ /!abort/ <span style="color:#008000; font-style:italic;"># finish if told 'abort'</span>
            <span style="color:#0066ff; font-weight:bold;">@client</span>.<span style="color:#9900CC;">send</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#6666ff; font-weight:bold;">Jabber::Message</span>::new<span style="color:#006600; font-weight:bold;">&#40;</span>message.<span style="color:#9900CC;">from</span>, <span style="color:#996600;">&quot;d #{sender} aborting...&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">set_type</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:chat</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
            thread.<span style="color:#9900CC;">wakeup</span>
          <span style="color:#9966CC; font-weight:bold;">else</span>
            <span style="color:#008000; font-style:italic;"># it just echoes in this example</span>
            xxx = Kconv.<span style="color:#9900CC;">toutf8</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;d #{sender}<span style="color:#000099;">\n</span>#{message.body}&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
            <span style="color:#0066ff; font-weight:bold;">@client</span>.<span style="color:#9900CC;">send</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#6666ff; font-weight:bold;">Jabber::Message</span>::new<span style="color:#006600; font-weight:bold;">&#40;</span>message.<span style="color:#9900CC;">from</span>, xxx<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">set_type</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:chat</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
          <span style="color:#9966CC; font-weight:bold;">end</span> <span style="color:#008000; font-style:italic;"># if body</span>
        <span style="color:#9966CC; font-weight:bold;">end</span> <span style="color:#008000; font-style:italic;"># if direct</span>
      <span style="color:#9966CC; font-weight:bold;">end</span> <span style="color:#008000; font-style:italic;"># unless error</span>
    <span style="color:#9966CC; font-weight:bold;">end</span> <span style="color:#008000; font-style:italic;"># callback</span>
&nbsp;
    <span style="color:#0066ff; font-weight:bold;">@watcher</span> = <span style="color:#CC00FF; font-weight:bold;">Thread</span>.<span style="color:#9900CC;">new</span> <span style="color:#9966CC; font-weight:bold;">do</span>
      <span style="color:#9966CC; font-weight:bold;">while</span> <span style="color:#9966CC; font-weight:bold;">not</span> <span style="color:#0066ff; font-weight:bold;">@end</span>
        <span style="color:#008000; font-style:italic;"># saying &quot;I'm alive!&quot; to the Jabber server</span>
        <span style="color:#0066ff; font-weight:bold;">@client</span>.<span style="color:#9900CC;">send</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#6666ff; font-weight:bold;">Jabber::Presence</span>::new<span style="color:#006600; font-weight:bold;">&#41;</span>
        <span style="color:#CC0066; font-weight:bold;">sleep</span> <span style="color:#006666;">30</span>
      <span style="color:#9966CC; font-weight:bold;">end</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">def</span> close
    <span style="color:#0066ff; font-weight:bold;">@client</span>.<span style="color:#9900CC;">close</span>
    <span style="color:#0066ff; font-weight:bold;">@end</span> = <span style="color:#0000FF; font-weight:bold;">true</span>
    <span style="color:#0066ff; font-weight:bold;">@watcher</span>.<span style="color:#9900CC;">join</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span> <span style="color:#008000; font-style:italic;"># Reciever</span></pre></div></div>
				
				
				<p>After that, the only step remains is to create this Reciever class instance from main routine.
				To kill the bot, send Ctrl-C from the command line.</p>
				
				<p>Let&#8217;s do some neat hacks at the lines parsing body by regexp.</p>
				
				<h2>Auto Follow</h2>
				
				<p>You need to follow your bot.</p>
				
				<p>You may want your bot to counter-follow you automatically.
				I wrote a simple Procmail recipe and a tiny Ruby script.
				(original idea is <a href="http://blog.livedoor.jp/nipotan/archives/50817627.html">にぽたん研究所::Twitter でイチイチ follow するのが面倒くさい</a></p>
				
				<h3>Procmail recipe</h3>
				
				<p>.procmailrc:</p>
				
				<pre><code>:0
* ^To:.your@bot.address
| counter_follow.rb
</code></pre>
				
				<h3>Ruby script to follow</h3>
				
				<p>counter_follow.rb:</p>
				
				
				<div class="wp_syntax"><div class="code"><pre class="ruby"><span style="color:#008000; font-style:italic;">#!/opt/local/bin/ruby</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'open-uri'</span>
&nbsp;
ID = <span style="color:#996600;">'jabber bot ID'</span>
PASSWORD = <span style="color:#996600;">'jabber bot password'</span>
&nbsp;
msg = ARGF.<span style="color:#9900CC;">read</span>
msg =~ /\s+http:\/\/twitter.<span style="color:#9900CC;">com</span>\/<span style="color:#006600; font-weight:bold;">&#40;</span>\w+<span style="color:#006600; font-weight:bold;">&#41;</span>$/
screen_name = $<span style="color:#006666;">1</span>
<span style="color:#CC0066; font-weight:bold;">exit</span> <span style="color:#006666;">1</span> <span style="color:#9966CC; font-weight:bold;">unless</span> screen_name
&nbsp;
auth = <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#996600;">'Authorization'</span> =&gt; <span style="color:#996600;">'Basic '</span>+<span style="color:#006600; font-weight:bold;">&#91;</span>ID+<span style="color:#996600;">':'</span>+PASSWORD<span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">pack</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'m'</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#125;</span>
<span style="color:#CC0066; font-weight:bold;">open</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'http://twitter.com/friendships/create/'</span>+screen_name+<span style="color:#996600;">'.json'</span>, auth<span style="color:#006600; font-weight:bold;">&#41;</span></pre></div></div>
				
				
				<h2>Usage</h2>
				
				<ol>
				<li><p>Follow your bot from you Twitter account.</p>
				
				<p>follow bot_account</p></li>
				<li><p>Send a DirectMessage to your bot.</p>
				
				<p>d bot_account hello bot !</p></li>
				</ol>
				
				<h2>Conclusion</h2>
				
				<p>Wrapped up a recipe how to create a tiny Twitter bot.</p>
				
				<p>There were some pitfalls (it can hang up if you don&#8217;t send messages in &#8216;chat type&#8217;, cannot get any responses if you send something periodically, or &#8230;) in creating Twitter bot.
				I hope this tutorial help someone creating their own Twitter bot.</p>
				
				<hr />
				
				<p>Any feedbacks make me happy <img src='http://en.deadbeaf.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://en.deadbeaf.org/2007/11/29/twitterbot-by-ruby/feed/</wfw:commentRss>
		</item>
		<item>
		<title>WordPress CalendarCloud plugin</title>
		<link>http://en.deadbeaf.org/2007/11/29/wp_calendar_cloud_plugin/</link>
		<comments>http://en.deadbeaf.org/2007/11/29/wp_calendar_cloud_plugin/#comments</comments>
		<pubDate>Wed, 28 Nov 2007 16:28:52 +0000</pubDate>
		<dc:creator>mootoh</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[calendar]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[plugin]]></category>

		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://mootoh.s330.xrea.com/en.deadbeaf.org/2007/11/29/wp_calendar_cloud_plugin/</guid>
		<description><![CDATA[				What ?
				
				A WordPress TemplateTag plugin that displays yearly calendars containing 12 months weighed by their post counts, like Tag Cloud.
				
				Example
				
				
				
				and, live demo is placed in the sidebar of this blog.
				
				Download
				
				calendar_cloud.zip (20KB)
				
				Install
				
				
				Upload and unzip calendar_cloud.zip to the /wp-content/plugins/ directory
				Activate the plugin through the &#8216;Plugins&#8217; menu in WordPress
				
				
				Use css to customize look &#38; feel. See an example [...]]]></description>
			<content:encoded><![CDATA[				<h2>What ?</h2>
				
				<p>A WordPress TemplateTag plugin that displays yearly calendars containing 12 months weighed by their post counts, like Tag Cloud.</p>
				
				<h2>Example</h2>
				
				<p><img src="http://coderepos.org/share/browser/lang/php/wordpress/calendar_cloud/screenshot-1.png?format=raw" /></p>
				
				<p>and, live demo is placed in the sidebar of this blog.</p>
				
				<h2>Download</h2>
				
				<p><a href='http://blog.deadbeaf.org/wp-content/uploads/2007/11/calendar_cloud.zip' title='calendar_cloud.zip'>calendar_cloud.zip</a> (20KB)</p>
				
				<h2>Install</h2>
				
				<ol>
				<li>Upload and unzip <code>calendar_cloud.zip</code> to the <code>/wp-content/plugins/</code> directory</li>
				<li>Activate the plugin through the &#8216;Plugins&#8217; menu in WordPress</li>
				</ol>
				
				<p>Use css to customize look &amp; feel. See an example in style.css.</p>
				
				<h2>Usage</h2>
				
				<p>put following line in your template:</p>
				
				<pre><code>&lt;?php calendar_cloud(); ?&gt;
</code></pre>
				
				<h2>ChangeLog</h2>
				
				<ul>
				<li>0.2 : accordance with WordPress Coding Standard.</li>
				<li>0.1 : initial release.</li>
				</ul>
				
				<hr />
				
				<p>Feel free to send any feedbacks.</p>
]]></content:encoded>
			<wfw:commentRss>http://en.deadbeaf.org/2007/11/29/wp_calendar_cloud_plugin/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
