<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:georss="http://www.georss.org/georss" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0"><id>tag:blogger.com,1999:blog-23855943</id><updated>2009-11-13T06:08:51.017+08:00</updated><title type="text">Fayland and Perl Programming</title><subtitle type="html">Perl is not the whole part of life. I know!</subtitle><link rel="alternate" type="text/html" href="http://www.fayland.org/blog/" /><link rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default?start-index=26&amp;max-results=25" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.fayland.org/atom.xml" /><author><name>Fayland</name><uri>http://www.blogger.com/profile/07225127136123374560</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>232</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><link rel="self" href="http://www.fayland.org/atom.xml" type="application/atom+xml" /><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry><id>tag:blogger.com,1999:blog-23855943.post-6180430452408594440</id><published>2009-10-23T22:24:00.002+08:00</published><updated>2009-10-24T18:38:10.255+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Plack" /><title type="text">PSGI and Plack</title><content type="html">The most exciting thing in Perl world today is &lt;a href="http://search.cpan.org/perldoc?PSGI::FAQ"&gt;PSGI&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The homepage is &lt;a href='http://plackperl.org/'&gt;http://plackperl.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I tried that today. there are some tips for Win32 user.&lt;br /&gt;* Don't try to run under Standalone server, the alarm is not supported in Win32&lt;br /&gt;* after install &lt;a href="http://search.cpan.org/dist/Plack/"&gt;Plack&lt;/a&gt; (maybe notest install Plack), try install &lt;a href="http://search.cpan.org/perldoc?Plack::Server::AnyEvent"&gt;Plack::Server::AnyEvent&lt;/a&gt; or &lt;a href="http://search.cpan.org/perldoc?Plack::Server::ServerSimple"&gt;Plack::Server::ServerSimple&lt;/a&gt;&lt;br /&gt;* at last, to know a bit of the Plack, cd the cpan build dir or download the tar.gz&lt;br /&gt;&lt;pre&gt;&lt;code&gt;C:\strawberry\cpan\build\Plack-0.9006-ZEaDbK\eg\dot-psgi&gt;plackup -a Hello.psgi -s AnyEvent&lt;br /&gt;Accepting requests at http://0.0.0.0:5000/&lt;/code&gt;&lt;/pre&gt;OR&lt;pre&gt;&lt;code&gt;C:\strawberry\cpan\build\Plack-0.9006-ZEaDbK\eg\dot-psgi&gt;plackup -a Hello.psgi -s ServerSimple&lt;br /&gt;Plack::Server::ServerSimple: You can connect to your server at http://localhost:5000/&lt;br /&gt;127.0.0.1 - - [23/十月/2009 22:19:15] "GET / HTTP/1.1" 200 11 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 GTB5"&lt;br /&gt;127.0.0.1 - - [23/十月/2009 22:19:15] "GET /favicon.ico HTTP/1.1" 200 11 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 GTB5"&lt;/code&gt;&lt;/pre&gt;try visit http://127.0.0.1:5000/ then you'll get the access_log like above.&lt;br /&gt;&lt;br /&gt;well, I think the &lt;a href="http://search.cpan.org/perldoc?Plack::Middleware::AccessLog"&gt;Plack::Middleware::AccessLog&lt;/a&gt; should use &amp;POSIX::setlocale(&amp;POSIX::LC_ALL); on qw( .ISO8859-1 .ISO_8859-15 .US-ASCII .UTF-8 ) to avoid 十月 the Chinese.&lt;br /&gt;&lt;br /&gt;you can try more with the all the .psgi files under eg/dot-psgi, and you might have some ideas to write a Middleware. :)&lt;br /&gt;&lt;br /&gt;Thanks&lt;br /&gt;&lt;br /&gt;(Updates on Oct 24th)&lt;br /&gt;&lt;a href='http://search.cpan.org/~miyagawa/'&gt;miyagawa&lt;/a&gt; applied the &lt;a href='http://github.com/miyagawa/Plack/commit/202aba6c850f802e834ac18ab3927285e745e667'&gt;patch&lt;/a&gt; with &lt;a href='http://github.com/miyagawa/Plack/commit/9b64c5b52766706b48f09d2c268fc9315535f7b0'&gt;some changes&lt;/a&gt; and it works pretty well now. &lt;br /&gt;Thanks very much. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23855943-6180430452408594440?l=www.fayland.org%2Fblog'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/6180430452408594440/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=23855943&amp;postID=6180430452408594440" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/6180430452408594440" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/6180430452408594440" /><link rel="alternate" type="text/html" href="http://www.fayland.org/blog/2009/10/psgi-and-plack.html" title="PSGI and Plack" /><author><name>Fayland</name><uri>http://www.blogger.com/profile/07225127136123374560</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10225839595956653482" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23855943.post-3180769121959423368</id><published>2009-10-23T09:49:00.000+08:00</published><updated>2009-10-23T09:49:31.921+08:00</updated><title type="text">《Perl 语言入门（第五版）》</title><content type="html">&lt;a href="http://www.china-pub.com/48392"&gt;《Perl 语言入门（第五版）》&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Translated by &lt;a href="http://chunzi.me/post/759"&gt;chunzi&lt;/a&gt;, joe.jiang and cnhackTNT&lt;br /&gt;&lt;br /&gt;:)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23855943-3180769121959423368?l=www.fayland.org%2Fblog'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/3180769121959423368/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=23855943&amp;postID=3180769121959423368" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/3180769121959423368" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/3180769121959423368" /><link rel="alternate" type="text/html" href="http://www.fayland.org/blog/2009/10/perl.html" title="《Perl 语言入门（第五版）》" /><author><name>Fayland</name><uri>http://www.blogger.com/profile/07225127136123374560</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10225839595956653482" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23855943.post-1080336693214665409</id><published>2009-09-26T14:47:00.000+08:00</published><updated>2009-09-26T14:47:32.345+08:00</updated><title type="text">Canon IXUS 95 IS</title><content type="html">I bought a digit camera today: &lt;a href="http://www.newegg.com.cn/Product/90-c01-980.htm"&gt;Canon IXUS 95 IS&lt;/a&gt; (Chinese).&lt;br /&gt;&lt;br /&gt;not so bad. :)&lt;br /&gt;&lt;br /&gt;&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/jD10Y7tb2Wl_maQVIOwEXw?feat=embedwebsite"&gt;&lt;img src="http://lh6.ggpht.com/_HcKjmb1GDks/Sr24MOoc0wI/AAAAAAAAAkM/JTTYJg8Z0iM/s144/IMG_0026.JPG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23855943-1080336693214665409?l=www.fayland.org%2Fblog'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/1080336693214665409/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=23855943&amp;postID=1080336693214665409" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/1080336693214665409" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/1080336693214665409" /><link rel="alternate" type="text/html" href="http://www.fayland.org/blog/2009/09/canon-ixus-95-is.html" title="Canon IXUS 95 IS" /><author><name>Fayland</name><uri>http://www.blogger.com/profile/07225127136123374560</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10225839595956653482" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/_HcKjmb1GDks/Sr24MOoc0wI/AAAAAAAAAkM/JTTYJg8Z0iM/s72-c/IMG_0026.JPG" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23855943.post-1763065965876657676</id><published>2009-09-17T16:51:00.000+08:00</published><updated>2009-09-17T16:51:53.946+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Shindig" /><category scheme="http://www.blogger.com/atom/ns#" term="CPAN" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenSocial" /><title type="text">OpenSocialX::Shindig::Crypter long story</title><content type="html">The long story is&lt;br /&gt;&lt;br /&gt;we (&lt;a href='http://www.zorpia.cn'&gt;Zorpia&lt;/a&gt;) were developing &lt;a href="http://wiki.opensocial.org/"&gt;OpenSocial&lt;/a&gt; in last days. The first choice to build a opensocial container is &lt;a href="http://incubator.apache.org/shindig/"&gt;Shindig&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;unlucky, it ONLY has PHP and Java version. yeah, I do all my code in Perl, I know nothing about PHP or Java. (well, I know a little PHP now because I was writing Service package with PHP in last days, and I must say, PHP sucks.)&lt;br /&gt;&lt;br /&gt;lucky, the Shindig author points me to an URL: &lt;a href="http://www.chabotc.com/generic/using-shindig-in-a-non-php-or-java-envirionment/"&gt;Using Shindig in a non PHP or Java environment&lt;/a&gt;&lt;br /&gt;that I can write the 'Application' section in Perl. It IS great, really very great.&lt;br /&gt;&lt;br /&gt;so at last, I google around and wrote my last solution: &lt;a href="http://search.cpan.org/dist/OpenSocialX-Shindig-Crypter/lib/OpenSocialX/Shindig/Crypter.pm"&gt;OpenSocialX::Shindig::Crypter&lt;/a&gt; and the php lib &lt;a href="http://github.com/fayland/opensocialx-shindig-crypter/raw/master/php/BasicBlobCrypter.php"&gt;BasicBlobCrypter.php&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;and now I'm happy to share it with your guys. if you have the same situation with me, you can try that module and tell me your feeling. :)&lt;br /&gt;&lt;br /&gt;Thanks. (OK, it's not so long.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23855943-1763065965876657676?l=www.fayland.org%2Fblog'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/1763065965876657676/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=23855943&amp;postID=1763065965876657676" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/1763065965876657676" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/1763065965876657676" /><link rel="alternate" type="text/html" href="http://www.fayland.org/blog/2009/09/opensocialxshindigcrypter-long-story.html" title="OpenSocialX::Shindig::Crypter long story" /><author><name>Fayland</name><uri>http://www.blogger.com/profile/07225127136123374560</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10225839595956653482" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23855943.post-5549909248115848615</id><published>2009-09-17T10:07:00.001+08:00</published><updated>2009-09-17T16:53:13.447+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Shindig" /><category scheme="http://www.blogger.com/atom/ns#" term="CPAN" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenSocial" /><title type="text">OpenSocialX::Shindig::Crypter short story</title><content type="html">the short story is that I released the &lt;a href="http://search.cpan.org/dist/OpenSocialX-Shindig-Crypter/"&gt;OpenSocialX::Shindig::Crypter&lt;/a&gt; yesterday.&lt;br /&gt;&lt;br /&gt;the short story is if you want to find a way that encrypt data by Perl and decrypt the encrypted data by PHP, you come to the right place.&lt;br /&gt;&lt;br /&gt;Perl: &lt;a href="http://github.com/fayland/opensocialx-shindig-crypter/raw/master/sample/crypt.pl"&gt;crypt.pl&lt;/a&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;my $str = 'o=1&amp;v=3&amp;p=5';&lt;br /&gt;my $cipher = Crypt::CBC-&gt;new( {&lt;br /&gt;    'key' =&gt; 'length16length16',&lt;br /&gt;    'cipher'=&gt; 'Rijndael',&lt;br /&gt;    'iv' =&gt; '1234567890abcdef',&lt;br /&gt;    'literal_key' =&gt; 1,&lt;br /&gt;    'padding' =&gt; 'null',&lt;br /&gt;    'header' =&gt; 'none',&lt;br /&gt;    keysize =&gt; 128/8&lt;br /&gt;} );&lt;br /&gt;my $encrypted = $cipher-&gt;encrypt($str);&lt;br /&gt;print "encrypted: ".encode_base64($encrypted)."\n";&lt;br /&gt;print "decrypted: ".$cipher-&gt;decrypt($encrypted)."\n";&lt;br /&gt;&lt;br /&gt;my $hmac = Digest::SHA::hmac_sha1($encrypted, 'hmackey');&lt;br /&gt;print "hmac: " . encode_base64($hmac) . "\n";&lt;br /&gt;print "total: " . encode_base64($encrypted . $hmac) . "\n";&lt;/code&gt;&lt;/pre&gt;PHP: &lt;a href="http://github.com/fayland/opensocialx-shindig-crypter/raw/master/sample/crypt.php"&gt;crypt.php&lt;/a&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;$str = 'o=1&amp;v=3&amp;p=5';&lt;br /&gt;$encrypted = mcrypt_cbc(MCRYPT_RIJNDAEL_128, 'length16length16', $str, MCRYPT_ENCRYPT, '1234567890abcdef');&lt;br /&gt;$decrypted = mcrypt_cbc(MCRYPT_RIJNDAEL_128, 'length16length16', $encrypted, MCRYPT_DECRYPT, '1234567890abcdef');&lt;br /&gt;echo "encrypted: ".base64_encode($encrypted)."\n"; &lt;br /&gt;echo "decrypted: ".$decrypted."\n"; &lt;br /&gt;&lt;br /&gt;$blabla = hash_hmac('sha1', $encrypted, 'hmackey', 1);&lt;br /&gt;echo "hmac: " . base64_encode($blabla) . "\n";&lt;br /&gt;echo "total: " . base64_encode($encrypted . $blabla) . "\n";&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;both of them show the same output:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;# perl crypt.pl&lt;br /&gt;encrypted: rgPZe6swWb3t3yIoIZFQaQ==&lt;br /&gt;decrypted: o=1&amp;v=3&amp;p=5&lt;br /&gt;hmac: WLTGeyesYTUhwg6fjVqDudrKRz0=&lt;br /&gt;total: rgPZe6swWb3t3yIoIZFQaVi0xnsnrGE1IcIOn41ag7naykc9&lt;br /&gt;# php crypt.php&lt;br /&gt;encrypted: rgPZe6swWb3t3yIoIZFQaQ==&lt;br /&gt;decrypted: o=1&amp;v=3&amp;p=5&lt;br /&gt;hmac: WLTGeyesYTUhwg6fjVqDudrKRz0=&lt;br /&gt;total: rgPZe6swWb3t3yIoIZFQaVi0xnsnrGE1IcIOn41ag7naykc9&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;I'll post a &lt;a href="http://www.fayland.org/blog/2009/09/opensocialxshindigcrypter-long-story.html"&gt;long story&lt;/a&gt; later today.&lt;br /&gt;&lt;br /&gt;Thanks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23855943-5549909248115848615?l=www.fayland.org%2Fblog'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/5549909248115848615/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=23855943&amp;postID=5549909248115848615" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/5549909248115848615" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/5549909248115848615" /><link rel="alternate" type="text/html" href="http://www.fayland.org/blog/2009/09/opensocialxshindigcrypter-short-story.html" title="OpenSocialX::Shindig::Crypter short story" /><author><name>Fayland</name><uri>http://www.blogger.com/profile/07225127136123374560</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10225839595956653482" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23855943.post-7085298536032723412</id><published>2009-09-03T17:38:00.005+08:00</published><updated>2009-09-03T18:03:11.907+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Moose" /><title type="text">use Moose; or no Moose;</title><content type="html">recently "Moose or no Moose" is spreading to the Perl world.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://perlhacks.com/2009/09/moose-or-no-moose.php"&gt;Moose or No Moose&lt;/a&gt;&lt;br /&gt;&lt;a href="http://chris.prather.org/perl/command-line-moose-or-knowing-what-you-dont-know/"&gt;Command Line Moose or Knowing what You Don't know.&lt;/a&gt;&lt;br /&gt;&lt;a href="http://stevan-little.blogspot.com/2009/09/re-moose-or-no-moose.html"&gt;Re: Moose Or No Moose&lt;/a&gt;&lt;br /&gt;&lt;a href="http://chris.prather.org/perl/take-arms-against-a-sea-of-troubles/"&gt;Take arms against a sea of troubles&lt;/a&gt;&lt;br /&gt;&lt;a href="http://stevan-little.blogspot.com/2009/09/re-re-moose-or-no-moose.html"&gt;Re: Re: Moose Or No Moose&lt;/a&gt;&lt;br /&gt;&lt;a href="http://stevan-little.blogspot.com/2009/09/moose-startup-time-over-time_02.html"&gt;Moose Startup Time over Time&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;basically I agree with &lt;a href="http://rt.cpan.org/Public/Bug/Display.html?id=49270"&gt;Adam Kennedy&lt;/a&gt; that Array::Compare shouldn't based on Moose. Test::Warn is a popular module and Array::Compare without Moose can totally ease the install of the Test::Warn.&lt;br /&gt;&lt;br /&gt;in the meantime, I would agree with Stevan Little that we shouldn't hold the usage of the Moose. it's a great module with great idea and great contributors. I use it in my daily life and it works great. once more and more people/module use Moose, the problem wouldn't become a problem.&lt;br /&gt;&lt;br /&gt;I think Padre should use Moose, I know &lt;A href="http://use.perl.org/~alias/journal"&gt;Adam&lt;/a&gt; would reject that, but I insist on that Padre will benefit from Moose even Class::XSAccessor is the fastest accessor module now. Padre will be in a better structure and much more easy to read if it's coded with Moose. Plugin/Document/Highlighter would be easily written and plugged.&lt;br /&gt;&lt;br /&gt;another thing is that I met the problem before. Long time ago &lt;a href="http://cpanratings.perl.org/dist/WWW-Contact"&gt;people rate down&lt;/a&gt; WWW::Contact because it uses Moose. but I think it's not true. Moose helps me to build the module.&lt;br /&gt;&lt;br /&gt;at last and in short, I think simple module (like only use the accessor of Moose) shouldn't use Moose but large software/module like Padre should use Moose.&lt;br /&gt;&lt;br /&gt;Thanks. just personal thoughts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23855943-7085298536032723412?l=www.fayland.org%2Fblog'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/7085298536032723412/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=23855943&amp;postID=7085298536032723412" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/7085298536032723412" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/7085298536032723412" /><link rel="alternate" type="text/html" href="http://www.fayland.org/blog/2009/09/use-moose-or-no-moose.html" title="use Moose; or no Moose;" /><author><name>Fayland</name><uri>http://www.blogger.com/profile/07225127136123374560</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10225839595956653482" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23855943.post-5953119454967460932</id><published>2009-08-24T19:06:00.002+08:00</published><updated>2009-08-24T19:12:17.798+08:00</updated><title type="text">life updates</title><content type="html">I'm sick these days. 1 day fever, 4 days cough, 3 injections. very bad.&lt;br /&gt;&lt;br /&gt;my modem got broken yesterday. it's not bad. I updated my book a little when there is no internet access. have a check if you haven't. :)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://search.cpan.org/dist/Book-Chinese-MasterPerlToday/"&gt;http://search.cpan.org/dist/Book-Chinese-MasterPerlToday/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I hope everything is fine tomorrow. God bless.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23855943-5953119454967460932?l=www.fayland.org%2Fblog'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/5953119454967460932/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=23855943&amp;postID=5953119454967460932" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/5953119454967460932" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/5953119454967460932" /><link rel="alternate" type="text/html" href="http://www.fayland.org/blog/2009/08/life-updates.html" title="life updates" /><author><name>Fayland</name><uri>http://www.blogger.com/profile/07225127136123374560</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10225839595956653482" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23855943.post-6580240592185879650</id><published>2009-08-07T10:24:00.003+08:00</published><updated>2009-08-07T10:27:34.939+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="MasterPerlToday" /><category scheme="http://www.blogger.com/atom/ns#" term="book" /><title type="text">Book::Chinese::MasterPerlToday</title><content type="html">&lt;a href="http://chunzi.me/archives/612"&gt;some of you&lt;/a&gt; may be &lt;a href="http://www.newsmth.net/bbstcon.php?board=Perl&amp;gid=51263"&gt;noticed&lt;/a&gt; that I'm writing a &lt;a href="http://github.com/fayland/chinese-perl-book/tree/master"&gt;free perl book&lt;/a&gt; in Chinese.&lt;br /&gt;&lt;br /&gt;yeah, I released it as a CPAN module yesterday: &lt;a href='http://search.cpan.org/~fayland/Book-Chinese-MasterPerlToday/'&gt;Book::Chinese::MasterPerlToday&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;it's not finished yet but I promise I will. so have fun and stay tuned.&lt;br /&gt;&lt;br /&gt;patches or suggestions are welcome. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23855943-6580240592185879650?l=www.fayland.org%2Fblog'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/6580240592185879650/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=23855943&amp;postID=6580240592185879650" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/6580240592185879650" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/6580240592185879650" /><link rel="alternate" type="text/html" href="http://www.fayland.org/blog/2009/08/bookchinesemasterperltoday.html" title="Book::Chinese::MasterPerlToday" /><author><name>Fayland</name><uri>http://www.blogger.com/profile/07225127136123374560</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10225839595956653482" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23855943.post-4054177884049335445</id><published>2009-07-26T23:21:00.002+08:00</published><updated>2009-07-26T23:26:14.482+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Catalyst" /><category scheme="http://www.blogger.com/atom/ns#" term="book" /><title type="text">The Definitive Guide to Catalyst</title><content type="html">&lt;a href="http://www.amazon.com/Definitive-Guide-Catalyst-Maintainable-Applications/dp/1430223650/ref=sr_1_2?ie=UTF8&amp;s=books&amp;qid=1247118476&amp;sr=8-2"&gt;The Definitive Guide to Catalyst: Writing Extensible, Scalable and Maintainable Perl–Based Web Applications&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;My boss (Jeffrey Ng) just brought this book for me (thanks to my college Calvin getting it for me from USA).&lt;br /&gt;&lt;br /&gt;I haven't read it yet, but I will. it's a good book. I'll post a review once I read it through.&lt;br /&gt;&lt;br /&gt;:)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23855943-4054177884049335445?l=www.fayland.org%2Fblog'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/4054177884049335445/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=23855943&amp;postID=4054177884049335445" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/4054177884049335445" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/4054177884049335445" /><link rel="alternate" type="text/html" href="http://www.fayland.org/blog/2009/07/definitive-guide-to-catalyst.html" title="The Definitive Guide to Catalyst" /><author><name>Fayland</name><uri>http://www.blogger.com/profile/07225127136123374560</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10225839595956653482" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23855943.post-2336523193459213120</id><published>2009-07-22T12:08:00.001+08:00</published><updated>2009-07-22T12:10:12.676+08:00</updated><title type="text">Beijing Perl Workshop - Sep 19, 2009</title><content type="html">&lt;a href="http://conference.perlchina.org/bjpw2009/"&gt;http://conference.perlchina.org/bjpw2009/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I'm afraid I will not go there, but it's still recommended to attend. :)&lt;br /&gt;&lt;br /&gt;Thanks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23855943-2336523193459213120?l=www.fayland.org%2Fblog'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/2336523193459213120/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=23855943&amp;postID=2336523193459213120" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/2336523193459213120" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/2336523193459213120" /><link rel="alternate" type="text/html" href="http://www.fayland.org/blog/2009/07/beijing-perl-workshop-sep-19-2009.html" title="Beijing Perl Workshop - Sep 19, 2009" /><author><name>Fayland</name><uri>http://www.blogger.com/profile/07225127136123374560</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10225839595956653482" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23855943.post-6243287755627034946</id><published>2009-07-11T14:21:00.002+08:00</published><updated>2009-07-11T14:24:58.951+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CPAN" /><title type="text">a module started with O</title><content type="html">&lt;a href="http://search.cpan.org/dist/ORDB-Unihan/"&gt;ORDB::Unihan&lt;/a&gt; - An ORM for the published Unihan database&lt;br /&gt;&lt;br /&gt;a mixin of ORLite and Unihan database. the original unihan database is txt based, and this one is sqlite.&lt;br /&gt;even if you don't want to use ORLite, you still can use the Unihan.sqlite by ORDB::Unihan-&gt;sqlite_path();&lt;br /&gt;&lt;br /&gt;bla bla, not sure how useful it is. just for fun.&lt;br /&gt;&lt;br /&gt;Enjoy&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23855943-6243287755627034946?l=www.fayland.org%2Fblog'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/6243287755627034946/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=23855943&amp;postID=6243287755627034946" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/6243287755627034946" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/6243287755627034946" /><link rel="alternate" type="text/html" href="http://www.fayland.org/blog/2009/07/module-started-with-o.html" title="a module started with O" /><author><name>Fayland</name><uri>http://www.blogger.com/profile/07225127136123374560</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10225839595956653482" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23855943.post-2857239919257342557</id><published>2009-06-17T13:12:00.002+08:00</published><updated>2009-06-17T13:17:14.868+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Catalyst" /><category scheme="http://www.blogger.com/atom/ns#" term="DBIx-Class" /><category scheme="http://www.blogger.com/atom/ns#" term="CPAN" /><title type="text">QueryLog support for Catalyst::Model::DBIC::Schema</title><content type="html">well, I wrote &lt;a href="http://search.cpan.org/perldoc?Catalyst::Model::DBIC::Schema::QueryLog"&gt;Catalyst::Model::DBIC::Schema::QueryLog &lt;/a&gt; before. it's fine. it works.&lt;br /&gt;&lt;br /&gt;&lt;a href='http://search.cpan.org/~mstrout/'&gt;mst&lt;/a&gt; released the new &lt;a href="http://search.cpan.org/~mstrout/Catalyst-Model-DBIC-Schema-0.24/"&gt;Catalyst::Model::DBIC::Schema&lt;/a&gt; today. built on top of Moose, with two traits: Caching and Replicated.&lt;br /&gt;It reminds me to write &lt;a href="http://search.cpan.org/perldoc?Catalyst::TraitFor::Model::DBIC::Schema::QueryLog"&gt;Catalyst::TraitFor::Model::DBIC::Schema::QueryLog&lt;/a&gt;&lt;br /&gt;trait is great. easy to read, configurable and sane.&lt;br /&gt;&lt;br /&gt;Enjoy. Thanks&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23855943-2857239919257342557?l=www.fayland.org%2Fblog'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/2857239919257342557/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=23855943&amp;postID=2857239919257342557" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/2857239919257342557" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/2857239919257342557" /><link rel="alternate" type="text/html" href="http://www.fayland.org/blog/2009/06/querylog-support-for.html" title="QueryLog support for Catalyst::Model::DBIC::Schema" /><author><name>Fayland</name><uri>http://www.blogger.com/profile/07225127136123374560</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10225839595956653482" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23855943.post-4043743372925876399</id><published>2009-05-27T11:08:00.001+08:00</published><updated>2009-05-27T11:11:07.663+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Zorpia" /><category scheme="http://www.blogger.com/atom/ns#" term="talk" /><title type="text">DBIx-Class talk</title><content type="html">I just gave a DBIx-Class talk on the annual meeting of &lt;a href="http://www.zorpia.com/"&gt;Zorpia&lt;/a&gt; 1 hour ago. it's not a success one, but I still want to share with you. check:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.fayland.org/talks/2009_Zorpia_DBIx_Class/dbix-class.xul"&gt;http://www.fayland.org/talks/2009_Zorpia_DBIx_Class/dbix-class.xul&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Enjoy, Thanks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23855943-4043743372925876399?l=www.fayland.org%2Fblog'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/4043743372925876399/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=23855943&amp;postID=4043743372925876399" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/4043743372925876399" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/4043743372925876399" /><link rel="alternate" type="text/html" href="http://www.fayland.org/blog/2009/05/dbix-class-talk.html" title="DBIx-Class talk" /><author><name>Fayland</name><uri>http://www.blogger.com/profile/07225127136123374560</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10225839595956653482" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23855943.post-1506373796620222825</id><published>2009-05-24T07:48:00.004+08:00</published><updated>2009-05-24T07:57:13.743+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Padre" /><title type="text">manage Task::Padre::Plugins with ORDB::CPANTS</title><content type="html">To update a Task:: module is not so hard but trivial. you need find out the new version of existing modules, and those haven't added yet.&lt;br /&gt;well, do it manually is not so Perl-ish. we have Perl, we should do it automatically by running a script.&lt;br /&gt;&lt;br /&gt;it's pretty good we have &lt;a href="http://search.cpan.org/perldoc?ORDB::CPANTS"&gt;ORDB::CPANTS&lt;/a&gt; from &lt;a href="http://ali.as/"&gt;Alias&lt;/a&gt;.&lt;br /&gt;1, we get all plugins by ORDB::CPANTS through used_by&lt;br /&gt;2, split them into requires and feature.&lt;br /&gt;3, get the META info through YAML::LoadURI&lt;br /&gt;4, generate the main part of Makefile.PL and Plugins.pm&lt;br /&gt;&lt;br /&gt;you can find the code here: &lt;a href="http://svn.perlide.org/padre/trunk/Task-Padre-Plugins/auto_generate.pl"&gt;http://svn.perlide.org/padre/trunk/Task-Padre-Plugins/auto_generate.pl&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I know I can generate Makefile.PL and Plugins.pm directly, but it's good enough for now.&lt;br /&gt;&lt;br /&gt;Enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23855943-1506373796620222825?l=www.fayland.org%2Fblog'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/1506373796620222825/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=23855943&amp;postID=1506373796620222825" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/1506373796620222825" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/1506373796620222825" /><link rel="alternate" type="text/html" href="http://www.fayland.org/blog/2009/05/manage-taskpadreplugins-with-ordbcpants.html" title="manage Task::Padre::Plugins with ORDB::CPANTS" /><author><name>Fayland</name><uri>http://www.blogger.com/profile/07225127136123374560</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10225839595956653482" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23855943.post-7726197058749325084</id><published>2009-05-22T18:07:00.002+08:00</published><updated>2009-05-22T18:10:34.270+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="trip" /><title type="text">Xi'an trip next week</title><content type="html">We (&lt;a href="http://www.zorpia.cn/"&gt;Zorpia&lt;/a&gt; people) will hold an annual meeting next week in Xi'an.&lt;br /&gt;It would be a lot of fan that I'll play basketball during the trip. 24 people from 4 different countries/regions.&lt;br /&gt;&lt;br /&gt;if you're nearby, please drop by if you like it.&lt;br /&gt;&lt;br /&gt;Thanks&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23855943-7726197058749325084?l=www.fayland.org%2Fblog'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/7726197058749325084/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=23855943&amp;postID=7726197058749325084" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/7726197058749325084" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/7726197058749325084" /><link rel="alternate" type="text/html" href="http://www.fayland.org/blog/2009/05/xian-trip-next-week.html" title="Xi'an trip next week" /><author><name>Fayland</name><uri>http://www.blogger.com/profile/07225127136123374560</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10225839595956653482" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23855943.post-1618587962221084600</id><published>2009-05-19T11:42:00.002+08:00</published><updated>2009-05-19T11:52:47.314+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="github" /><title type="text">github instead of google code</title><content type="html">yes. I do love &lt;a href="http://github.com/fayland"&gt;github&lt;/a&gt; more than &lt;a href="http://code.google.com/u/fayland/"&gt;google code&lt;/a&gt;. it's not the problem of git or svn. svn is fine.&lt;br /&gt;&lt;br /&gt;the point is participation.&lt;br /&gt;In google code, it's very hard to contribute some code to one project if you're not the author. it disappoints me a lot.&lt;br /&gt;The "fork" button in github is very helpful. people forked my repos then pull requests to ask me to merge (like perl-net-github, dist-zilla-plugin-repository). I forked someone's repos then pull back (like theschwartz-moosified, dist-zilla, git-pureperl etc).&lt;br /&gt;&lt;br /&gt;it's awesome. go start using github right now. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23855943-1618587962221084600?l=www.fayland.org%2Fblog'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/1618587962221084600/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=23855943&amp;postID=1618587962221084600" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/1618587962221084600" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/1618587962221084600" /><link rel="alternate" type="text/html" href="http://www.fayland.org/blog/2009/05/github-instead-of-google-code.html" title="github instead of google code" /><author><name>Fayland</name><uri>http://www.blogger.com/profile/07225127136123374560</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10225839595956653482" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23855943.post-2287501186145763045</id><published>2009-05-19T09:53:00.001+08:00</published><updated>2009-05-19T09:54:43.840+08:00</updated><title type="text">SuperCollider Programming</title><content type="html">what the hell is &lt;a href="http://use.perl.org/~Alias/journal/38991"&gt;SuperCollider Programming&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;I'm glad that my blog is "Fayland and Perl Programming".&lt;br /&gt;&lt;br /&gt;also I hate that blogger.com is blocked in China again. STUPID.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23855943-2287501186145763045?l=www.fayland.org%2Fblog'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/2287501186145763045/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=23855943&amp;postID=2287501186145763045" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/2287501186145763045" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/2287501186145763045" /><link rel="alternate" type="text/html" href="http://www.fayland.org/blog/2009/05/supercollider-programming.html" title="SuperCollider Programming" /><author><name>Fayland</name><uri>http://www.blogger.com/profile/07225127136123374560</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10225839595956653482" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23855943.post-3046972906993221885</id><published>2009-05-12T06:28:00.002+08:00</published><updated>2009-05-12T06:35:11.565+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="DBIx-Class" /><category scheme="http://www.blogger.com/atom/ns#" term="CPAN" /><category scheme="http://www.blogger.com/atom/ns#" term="TheSchwartz" /><title type="text">DBIx::Class::ResultSet::Void and TheSchwartz::Moosified</title><content type="html">Big thanks to &lt;a href="http://search.cpan.org/~ribasushi/"&gt;ribasushi&lt;/a&gt;, the new &lt;a href="http://search.cpan.org/perldoc?DBIx::Class::ResultSet::Void"&gt;DBIx::Class::ResultSet::Void 0.04&lt;/a&gt; is using&lt;br /&gt;    # SELECT 1 FROM item me WHERE ( me.id = ? ) LIMIT 1: '1'&lt;br /&gt;    # INSERT INTO item ( id, name) VALUES ( ?, ? ): '1', 'A'&lt;br /&gt;instead of COUNT(*). it's much faster now.&lt;br /&gt;&lt;br /&gt;Another big thanks to &lt;a href="http://search.cpan.org/~stash/"&gt;stash&lt;/a&gt; from &lt;a href="http://www.socialtext.com/"&gt;socialtext&lt;/a&gt;, &lt;a href="http://search.cpan.org/~stash/TheSchwartz-Moosified-0.04/"&gt;TheSchwartz::Moosified&lt;/a&gt; 0.04 with PostgreSQL support and bug fixes.&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23855943-3046972906993221885?l=www.fayland.org%2Fblog'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/3046972906993221885/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=23855943&amp;postID=3046972906993221885" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/3046972906993221885" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/3046972906993221885" /><link rel="alternate" type="text/html" href="http://www.fayland.org/blog/2009/05/dbixclassresultsetvoid-and.html" title="DBIx::Class::ResultSet::Void and TheSchwartz::Moosified" /><author><name>Fayland</name><uri>http://www.blogger.com/profile/07225127136123374560</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10225839595956653482" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23855943.post-3900129859369442839</id><published>2009-05-10T20:13:00.003+08:00</published><updated>2009-05-10T20:18:02.428+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="DBIx-Class" /><category scheme="http://www.blogger.com/atom/ns#" term="CPAN" /><title type="text">DBIx::Class::ResultSet::Void</title><content type="html">some time I'm really feeling sick when I use update_or_create or find_or_create, the default DBIx::Class::ResultSet return DBIx::Class::Row object by using &lt;b&gt;find&lt;/b&gt;.&lt;br /&gt;it's useful when I need the $row object, but it's dummy if I don't care.&lt;br /&gt;&lt;br /&gt;I wrote &lt;a href="http://search.cpan.org/perldoc?DBIx::Class::ResultSet::Void"&gt;DBIx::Class::ResultSet::Void&lt;/a&gt; today. It would use &lt;b&gt;count&lt;/b&gt; instead of find if not defined wantarray. it means when I call&lt;br /&gt;    $rs-&gt;find_or_create( { id =&gt; 1, name =&gt; 'A' } );&lt;br /&gt;instead of&lt;br /&gt;    my $row = $rs-&gt;find_or_create( { id =&gt; 1, name =&gt; 'A' } );&lt;br /&gt;it would generate SQLs like:&lt;br /&gt;    # SELECT COUNT( * ) FROM item me WHERE ( me.id = ? ): '1'&lt;br /&gt;    # INSERT INTO item ( id, name) VALUES ( ?, ? ): '1', 'A'&lt;br /&gt;it's a little better I think.&lt;br /&gt;&lt;br /&gt;read more on the &lt;a href="http://search.cpan.org/perldoc?DBIx::Class::ResultSet::Void"&gt;POD&lt;/a&gt; and Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23855943-3900129859369442839?l=www.fayland.org%2Fblog'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/3900129859369442839/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=23855943&amp;postID=3900129859369442839" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/3900129859369442839" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/3900129859369442839" /><link rel="alternate" type="text/html" href="http://www.fayland.org/blog/2009/05/dbixclassresultsetvoid.html" title="DBIx::Class::ResultSet::Void" /><author><name>Fayland</name><uri>http://www.blogger.com/profile/07225127136123374560</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10225839595956653482" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23855943.post-4769297606020138147</id><published>2009-05-07T19:45:00.002+08:00</published><updated>2009-05-07T19:50:29.033+08:00</updated><title type="text">what am I looking forward today</title><content type="html">&lt;a href="http://www.apress.com/book/view/1430223650"&gt;The Definitive Guide to Catalyst: Writing Extendable, Scalable and Maintainable Perl–Based Web Applications&lt;/a&gt; by Kieren Diment and Matt Trout.&lt;br /&gt;&lt;br /&gt;I don't know which month will it be released, but I'm really looking forward to it. :)&lt;br /&gt;&lt;br /&gt;Thanks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23855943-4769297606020138147?l=www.fayland.org%2Fblog'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/4769297606020138147/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=23855943&amp;postID=4769297606020138147" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/4769297606020138147" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/4769297606020138147" /><link rel="alternate" type="text/html" href="http://www.fayland.org/blog/2009/05/whats-looking-forward-today.html" title="what am I looking forward today" /><author><name>Fayland</name><uri>http://www.blogger.com/profile/07225127136123374560</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10225839595956653482" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23855943.post-198792509844545070</id><published>2009-05-05T19:48:00.002+08:00</published><updated>2009-05-05T19:53:09.182+08:00</updated><title type="text">irc log</title><content type="html">I didn't know that keep a public irc log is wrong until mst pointed it to me today.&lt;br /&gt;Sorry for any trouble caused and it's private now.&lt;br /&gt;&lt;br /&gt;Thanks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23855943-198792509844545070?l=www.fayland.org%2Fblog'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/198792509844545070/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=23855943&amp;postID=198792509844545070" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/198792509844545070" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/198792509844545070" /><link rel="alternate" type="text/html" href="http://www.fayland.org/blog/2009/05/irc-log.html" title="irc log" /><author><name>Fayland</name><uri>http://www.blogger.com/profile/07225127136123374560</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10225839595956653482" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23855943.post-6761233685586695064</id><published>2009-04-29T06:34:00.002+08:00</published><updated>2009-04-29T06:39:42.673+08:00</updated><title type="text">new DayDayUp</title><content type="html">inspired by jrock's &lt;a href="http://blog.jrock.us/articles/Multimethods.pod"&gt;Multimethods&lt;/a&gt; and &lt;a href="http://blog.jrock.us/articles/Unshortening%20URLs%20with%20Modern%20Perl.pod"&gt;Unshortening URLs with Modern Perl&lt;/a&gt;, I decided to rewrite my &lt;a href="http://search.cpan.org/dist/DayDayUp/"&gt;DayDayUp&lt;/a&gt; CPAN module.&lt;br /&gt;&lt;br /&gt;it's really very cool to write code with &lt;a href="http://search.cpan.org/dist/KiokuDB/"&gt;KiokuDB&lt;/a&gt; and &lt;a href="http://search.cpan.org/dist/MooseX-Declare/"&gt;MooseX::Declare&lt;/a&gt;. less code. more focus on real.&lt;br /&gt;I'm planing to write more, but it's for now.&lt;br /&gt;&lt;br /&gt;even it fails on Win32, it's still worth to try. :)&lt;br /&gt;Enjoy&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23855943-6761233685586695064?l=www.fayland.org%2Fblog'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/6761233685586695064/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=23855943&amp;postID=6761233685586695064" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/6761233685586695064" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/6761233685586695064" /><link rel="alternate" type="text/html" href="http://www.fayland.org/blog/2009/04/new-daydayup.html" title="new DayDayUp" /><author><name>Fayland</name><uri>http://www.blogger.com/profile/07225127136123374560</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10225839595956653482" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23855943.post-4388035624250026600</id><published>2009-04-28T08:03:00.001+08:00</published><updated>2009-04-28T08:03:33.430+08:00</updated><title type="text">planet you can't miss today</title><content type="html">&lt;a href="http://ironman.enlightenedperl.org/"&gt;http://ironman.enlightenedperl.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Enjoy&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23855943-4388035624250026600?l=www.fayland.org%2Fblog'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/4388035624250026600/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=23855943&amp;postID=4388035624250026600" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/4388035624250026600" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/4388035624250026600" /><link rel="alternate" type="text/html" href="http://www.fayland.org/blog/2009/04/planet-you-cant-miss-today.html" title="planet you can't miss today" /><author><name>Fayland</name><uri>http://www.blogger.com/profile/07225127136123374560</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10225839595956653482" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23855943.post-4156531088715580696</id><published>2009-04-21T15:50:00.002+08:00</published><updated>2009-04-21T15:54:55.342+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CPAN" /><title type="text">CPAN updates</title><content type="html">I spent lots of time to write CPAN module in past two days. it's not so fun but enjoyable.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://search.cpan.org/dist/App-GitHub/"&gt;App::GitHub&lt;/a&gt; - 8 dists 3 days.&lt;br /&gt;&lt;a href="http://search.cpan.org/dist/Dist-Zilla-Plugin-MetaResources/"&gt;Dist::Zilla::Plugin::MetaResources&lt;/a&gt; - DEPERCATED, it will be supported in Dist::Zilla core.&lt;br /&gt;&lt;a href="http://search.cpan.org/dist/Dist-Zilla-Plugin-Repository/"&gt;Dist::Zilla::Plugin::Repository&lt;/a&gt;&lt;br /&gt;&lt;a href="http://search.cpan.org/dist/Net-GitHub/"&gt;Net::GitHub&lt;/a&gt; - also 8 dists 3 days.&lt;br /&gt;&lt;br /&gt;To write a CPAN module is really not so hard. please go on and enjoy it.&lt;br /&gt;&lt;br /&gt;Thanks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23855943-4156531088715580696?l=www.fayland.org%2Fblog'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/4156531088715580696/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=23855943&amp;postID=4156531088715580696" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/4156531088715580696" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/4156531088715580696" /><link rel="alternate" type="text/html" href="http://www.fayland.org/blog/2009/04/cpan-updates.html" title="CPAN updates" /><author><name>Fayland</name><uri>http://www.blogger.com/profile/07225127136123374560</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10225839595956653482" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23855943.post-5334624082417403442</id><published>2009-04-20T20:25:00.002+08:00</published><updated>2009-04-20T20:29:42.795+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="github" /><title type="text">App::GitHub</title><content type="html">well, &lt;a href="http://search.cpan.org/dist/App-GitHub/"&gt;App::GitHub&lt;/a&gt; is a command line tool wrapped by &lt;a href="http://search.cpan.org/dist/Net-GitHub/"&gt;Net::GitHub&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;for a brief view:&lt;br /&gt;$&gt; github.pl&lt;br /&gt;&lt;br /&gt;Welcome to GitHub Command Tools! (Ver: 0.04)&lt;br /&gt;Type '?' or 'h' for help.&lt;br /&gt;&lt;br /&gt;github&gt; ?&lt;br /&gt; command  argument          description&lt;br /&gt; repo     :user :repo       set owner/repo, eg: 'fayland perl-app-github'&lt;br /&gt; login    :login :token     authenticated as :login&lt;br /&gt; loadcfg                    authed by git config --global github.user|token&lt;br /&gt; ?,h                        help&lt;br /&gt; q,exit,quit                exit&lt;br /&gt;&lt;br /&gt;Repos&lt;br /&gt; rshow                      more in-depth information for the :repo in repo&lt;br /&gt; rlist                      list out all the repositories for the :user in repo&lt;br /&gt; rsearch  WORD              Search Repositories&lt;br /&gt; watch                      watch repositories (authentication required)&lt;br /&gt; unwatch                    unwatch repositories (authentication required)&lt;br /&gt; fork                       fork a repository (authentication required)&lt;br /&gt; create                     create a new repository (authentication required)&lt;br /&gt; delete                     delete a repository (authentication required)&lt;br /&gt; set_private                set a public repo private (authentication required)&lt;br /&gt; set_public                 set a private repo public (authentication required)&lt;br /&gt; network                    see all the forks of the repo&lt;br /&gt; tags                       tags on the repo&lt;br /&gt; branches                   list of remote branches&lt;br /&gt;&lt;br /&gt;Issues&lt;br /&gt; ilist    open|closed       see a list of issues for a project&lt;br /&gt; iview    :number           get data on an individual issue by number&lt;br /&gt; iopen                      open a new issue (authentication required)&lt;br /&gt; iclose   :number           close an issue (authentication required)&lt;br /&gt; ireopen  :number           reopen an issue (authentication required)&lt;br /&gt; iedit    :number           edit an issue (authentication required)&lt;br /&gt; ilabel   add|remove :num :label&lt;br /&gt;                            add/remove a label (authentication required)&lt;br /&gt;&lt;br /&gt;File/Path related&lt;br /&gt; cd       PATH              chdir to PATH&lt;br /&gt;&lt;br /&gt;Others&lt;br /&gt; rshow    :user :repo       more in-depth information for a repository&lt;br /&gt; rlist    :user             list out all the repositories for a user&lt;br /&gt;&lt;br /&gt;github&gt; loadcfg&lt;br /&gt;&lt;br /&gt;github&gt; repo fayland perl-app-github&lt;br /&gt;&lt;br /&gt;fayland/perl-app-github&gt; rshow&lt;br /&gt;{&lt;br /&gt;   "owner" : "fayland",&lt;br /&gt;   "private" : false,&lt;br /&gt;   "name" : "perl-app-github",&lt;br /&gt;   "description" : "App::GitHub CPAN module",&lt;br /&gt;   "homepage" : "",&lt;br /&gt;   "watchers" : 2,&lt;br /&gt;   "forks" : 0,&lt;br /&gt;   "fork" : false,&lt;br /&gt;   "url" : "http://github.com/fayland/perl-app-github"&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;fayland/perl-app-github&gt; repo fayland sandbox2&lt;br /&gt;&lt;br /&gt;fayland/sandbox2&gt; ilist&lt;br /&gt;[&lt;br /&gt;   {&lt;br /&gt;      "number" : 1,&lt;br /&gt;      "position" : 1,&lt;br /&gt;      "state" : "open",&lt;br /&gt;      "body" : "Test Issue body.",&lt;br /&gt;      "created_at" : "2009/04/19 06:08:30 -0700",&lt;br /&gt;      "updated_at" : "2009/04/19 06:09:17 -0700",&lt;br /&gt;      "user" : "fayland",&lt;br /&gt;      "title" : "Test Issue",&lt;br /&gt;      "votes" : 0&lt;br /&gt;   },&lt;br /&gt;   {&lt;br /&gt;      "number" : 2,&lt;br /&gt;      "position" : 2,&lt;br /&gt;      "state" : "open",&lt;br /&gt;      "body" : "new test 3\nnew test 2",&lt;br /&gt;      "created_at" : "2009/04/19 18:44:49 -0700",&lt;br /&gt;      "updated_at" : "2009/04/19 18:50:44 -0700",&lt;br /&gt;      "user" : "fayland",&lt;br /&gt;      "title" : "new test 2",&lt;br /&gt;      "votes" : 0&lt;br /&gt;   },&lt;br /&gt;   {&lt;br /&gt;      "number" : 3,&lt;br /&gt;      "position" : 3,&lt;br /&gt;      "state" : "open",&lt;br /&gt;      "body" : "s",&lt;br /&gt;      "created_at" : "2009/04/19 18:51:17 -0700",&lt;br /&gt;      "updated_at" : "2009/04/19 18:51:31 -0700",&lt;br /&gt;      "user" : "fayland",&lt;br /&gt;      "title" : "sssssssss",&lt;br /&gt;      "votes" : 0&lt;br /&gt;   }&lt;br /&gt;]&lt;br /&gt;&lt;br /&gt;fayland/sandbox2&gt; q&lt;br /&gt;&lt;br /&gt;for now, there are ONLY repos and issue related command. but I would add more in next few days.&lt;br /&gt;&lt;br /&gt;Thanks and Enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23855943-5334624082417403442?l=www.fayland.org%2Fblog'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/5334624082417403442/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=23855943&amp;postID=5334624082417403442" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/5334624082417403442" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/23855943/posts/default/5334624082417403442" /><link rel="alternate" type="text/html" href="http://www.fayland.org/blog/2009/04/appgithub.html" title="App::GitHub" /><author><name>Fayland</name><uri>http://www.blogger.com/profile/07225127136123374560</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10225839595956653482" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry></feed>
