<?xml version="1.0" encoding="utf-8"?>

<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  xmlns:admin="http://webns.net/mvcb/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:cc="http://web.resource.org/cc/"
  xmlns="http://purl.org/rss/1.0/">

  <channel rdf:about="http://unknownplace.org/memo/">
    <title>unknownplace.org - Tags: perl</title>
    <description>powered by CLON 0.2</description>
    <link>http://unknownplace.org/memo/</link>
    <dc:language>ja</dc:language>
    <dc:creator>typester</dc:creator>    <dc:date>2008-08-19T03:00:00+09:00</dc:date>
    <admin:generatorAgent rdf:resource="http://unknownplace.org/apps/clon?v=0.2" />

    <items>
      <rdf:Seq>
	<rdf:li rdf:resource="http://unknownplace.org/memo/2008/08/19#e001" />
 	<rdf:li rdf:resource="http://unknownplace.org/memo/2008/07/25#e002" />
 	<rdf:li rdf:resource="http://unknownplace.org/memo/2008/07/25#e001" />
 	<rdf:li rdf:resource="http://unknownplace.org/memo/2008/07/23#e002" />
 	<rdf:li rdf:resource="http://unknownplace.org/memo/2008/07/23#e001" />
 	<rdf:li rdf:resource="http://unknownplace.org/memo/2008/06/05#e002" />
 	<rdf:li rdf:resource="http://unknownplace.org/memo/2008/06/05#e001" />
 	<rdf:li rdf:resource="http://unknownplace.org/memo/2008/06/04#e001" />
 	<rdf:li rdf:resource="http://unknownplace.org/memo/2008/05/29#e003" />
 	<rdf:li rdf:resource="http://unknownplace.org/memo/2008/05/22#e001" />
 	<rdf:li rdf:resource="http://unknownplace.org/memo/2008/05/12#e001" />
 	<rdf:li rdf:resource="http://unknownplace.org/memo/2008/03/12#e001" />
 	<rdf:li rdf:resource="http://unknownplace.org/memo/2008/02/29#e002" />
 	<rdf:li rdf:resource="http://unknownplace.org/memo/2008/02/29#e001" />
 	<rdf:li rdf:resource="http://unknownplace.org/memo/2008/02/17#e001" />
       </rdf:Seq>
    </items>
  </channel>

  <item rdf:about="http://unknownplace.org/memo/2008/08/19#e001">
    <title>03:00  Data::AMFの速度</title>
    <description />
    <link>http://unknownplace.org/memo/2008/08/19#e001</link>
    <content:encoded><![CDATA[<blockquote>
  <p><a href="http://blog.s2factory.co.jp/yoshizu/2008/08/amf-perl.html">AMF と Perl について - yoshizu@S2F</a></p>
</blockquote>

<p>XS版を作ったとしてもMooseつかっているかぎりCGIでのパフォーマンスは望めないかなぁ。逆にmod_perlとかFastCGIであれば今のでもそんなに遅くはないはず。</p>

<p>ただ、Remoting(RPC) 目的でAMFを使うのはそんなにメリットないんじゃないかなーとは思う。</p>
]]></content:encoded>
    <dc:subject>perl</dc:subject>
    <dc:creator>typester</dc:creator>
    <dc:date>2008-08-19T03:00:00+09:00</dc:date>
  </item>
  <item rdf:about="http://unknownplace.org/memo/2008/07/25#e002">
    <title>17:55  Moose版Twircつくた。</title>
    <description />
    <link>http://unknownplace.org/memo/2008/07/25#e002</link>
    <content:encoded><![CDATA[<p>lopnorさんにwassrにいないから不便だよハゲ、などということを言われたのでwassrアカウント作った。</p>

<p>でwassrはIMに対応してるっぽいので、<a href="http://unknownplace.org/memo/2007/04/15#e001">この辺</a>でつくったTwircというtwitter用のIM-Jabberゲートウェイアプリを改造してtwitter以外のサービスでも汎用的に使えるようにした。</p>

<pre><code>channels:
  - name:   '#twitter'
    target: 'twitter@twitter.com'
  - name:   '#wassr'
    target: 'wassr-bot@wassr.jp'
</code></pre>

<p>こんな感じでいろいろサービス増やせるようになった。まぁtwitterはいまIM死んでるから使えないけど。</p>

<p>ついでにMoose化。ついでにgithubにうつした。</p>

<blockquote>
  <p>http://github.com/typester/twirc/tree/master</p>
</blockquote>
]]></content:encoded>
    <dc:subject>perl</dc:subject>
    <dc:creator>typester</dc:creator>
    <dc:date>2008-07-25T17:55:00+09:00</dc:date>
  </item>
  <item rdf:about="http://unknownplace.org/memo/2008/07/25#e001">
    <title>14:08  MooseX::POE</title>
    <description />
    <link>http://unknownplace.org/memo/2008/07/25#e001</link>
    <content:encoded><![CDATA[<p>ほめてる人が多いけど、僕はなんか微妙だなぁ。</p>

<p>自分が POE になれてるからだと思うのけど、素で書いたほうがわかりやすい。</p>

<p>Moose はつかうけど MooseX::POE はつかわない方向。</p>
]]></content:encoded>
    <dc:subject>perl</dc:subject>
    <dc:creator>typester</dc:creator>
    <dc:date>2008-07-25T14:08:00+09:00</dc:date>
  </item>
  <item rdf:about="http://unknownplace.org/memo/2008/07/23#e002">
    <title>15:38 </title>
    <description />
    <link>http://unknownplace.org/memo/2008/07/23#e002</link>
    <content:encoded><![CDATA[<p>とりあえず <code>Test::WWW::Mechanize::Catalyst</code> は使わずに <code>Catalyst::Test</code> だけでがんばることにした。</p>
]]></content:encoded>
    <dc:subject>perl, catalyst</dc:subject>
    <dc:creator>typester</dc:creator>
    <dc:date>2008-07-23T15:38:00+09:00</dc:date>
  </item>
  <item rdf:about="http://unknownplace.org/memo/2008/07/23#e001">
    <title>11:32  Perl 5.10 + Test::WWW::Mechanize::Catalyst</title>
    <description />
    <link>http://unknownplace.org/memo/2008/07/23#e001</link>
    <content:encoded><![CDATA[<p>うごかんわけだが、みんなどうしてんの？</p>

<p>5.10 の問題ではなくて、最新版の libwww-perl (5.10に付属)の問題という話だけど、5.8.x でも LWP あげたらおなじことになるのかなー。</p>
]]></content:encoded>
    <dc:subject>perl, catalyst</dc:subject>
    <dc:creator>typester</dc:creator>
    <dc:date>2008-07-23T11:32:00+09:00</dc:date>
  </item>
  <item rdf:about="http://unknownplace.org/memo/2008/06/05#e002">
    <title>14:11  ところで MooseX::Getopt で Pod::Usage 的なことをする方法がわからない</title>
    <description />
    <link>http://unknownplace.org/memo/2008/06/05#e002</link>
    <content:encoded><![CDATA[<p>のだがどうすればいいんだろうか。</p>
]]></content:encoded>
    <dc:subject>perl, moose</dc:subject>
    <dc:creator>typester</dc:creator>
    <dc:date>2008-06-05T14:11:00+09:00</dc:date>
  </item>
  <item rdf:about="http://unknownplace.org/memo/2008/06/05#e001">
    <title>14:09  App::Flight</title>
    <description />
    <link>http://unknownplace.org/memo/2008/06/05#e001</link>
    <content:encoded><![CDATA[<p>昨日のは <code>App::Flight</code> にしますかね。</p>

<p>FCGIネームスペースを騙るにはあまりにも僕の使い方にかたよりすぎているしな。</p>
]]></content:encoded>
    <dc:subject>perl</dc:subject>
    <dc:creator>typester</dc:creator>
    <dc:date>2008-06-05T14:09:00+09:00</dc:date>
  </item>
  <item rdf:about="http://unknownplace.org/memo/2008/06/04#e001">
    <title>13:51  flightというアプリを作ってみたのだがどうか</title>
    <description />
    <link>http://unknownplace.org/memo/2008/06/04#e001</link>
    <content:encoded><![CDATA[<blockquote>
  <p><a href="http://github.com/typester/flight/tree/master">http://github.com/typester/flight/tree/master</a></p>
</blockquote>

<p>lighttpdを使用してFastCGIスクリプトのテスト(開発)サーバーを簡単に立てられるアプリです。</p>

<pre><code>$ flight -p 3000 yourscript.fcgi
</code></pre>

<p>とかすると <code>localhost:3000</code> でそのfcgiスクリプトが動くという感じ。</p>

<p>catalystだったら</p>

<pre><code>$ flight -p 3000 ./script/myapp_fastcgi.pl
</code></pre>

<p>でOK。</p>

<p>Catalyst用にはすでに専用のヘルパーを書いていて、lighttpdでテスト(開発)サーバーを立てられるようにしていたのだけどそれをもっと汎用的にした感じ。</p>

<p>ネームスペースは <code>FCGI::Server::Lighttpd</code> とかしちゃってるのだけどどうだろう？ <code>App::Flight</code> とかのがいいのかなー。</p>

<p>意見求む。</p>
]]></content:encoded>
    <dc:subject>perl</dc:subject>
    <dc:creator>typester</dc:creator>
    <dc:date>2008-06-04T13:51:00+09:00</dc:date>
  </item>
  <item rdf:about="http://unknownplace.org/memo/2008/05/29#e003">
    <title>17:28  PDF::FromImage</title>
    <description />
    <link>http://unknownplace.org/memo/2008/05/29#e003</link>
    <content:encoded><![CDATA[<p>とか言うのを作った。exampleディレクトリにimages2pdf.plというのがあって、これつかうと</p>

<pre><code>image2pdf.pl -o output.pdf *.png
</code></pre>

<p>とかやることによりコマンドラインで渡した画像から一気にPDFのスライドが作れる。</p>

<p>install_script するかまよったけどとりあえずしなかった。うかつにやるとおこられそうだしな。。</p>
]]></content:encoded>
    <dc:subject>perl</dc:subject>
    <dc:creator>typester</dc:creator>
    <dc:date>2008-05-29T17:28:00+09:00</dc:date>
  </item>
  <item rdf:about="http://unknownplace.org/memo/2008/05/22#e001">
    <title>15:17  YAPC::Asia 2008 Tokyo</title>
    <description />
    <link>http://unknownplace.org/memo/2008/05/22#e001</link>
    <content:encoded><![CDATA[<p>去年は参加できなかったため、2年ぶりのYAPCでした。</p>

<p>僕のセッションの資料もアップしておきました。</p>

<ul>
<li><a href="http://svn.coderepos.org/share/docs/typester/formvalidator-assets/start.html">FormValidator::Assets</a></li>
<li><a href="http://svn.coderepos.org/share/docs/typester/openfastladder-with-plagger/start.html">Open Fastladder with Plagger</a></li>
</ul>

<p>やっぱり参加するとグッとモチベーションがあがりますね。</p>

<p>2年前うけた衝撃も大きかったですが、今年もいろいろな人からアイデアややる気をもらいました。</p>

<p>ところでこの2年間でひとつ大きく変わったなぁと思うのは、perlハッカーの使っているPCの種類が変わったことです。</p>

<p>2006年時には</p>

<p><a href="http://www.flickr.com/photos/nagayama/121922373/" title="Thinkpad大杉 by nagayama, on Flickr"><img src="http://farm1.static.flickr.com/41/121922373_f28de88572.jpg" width="500" height="333" alt="Thinkpad大杉" /></a></p>

<p>こんな感じで Thinkpad が幅をきかせまくっていたと思うのですが、今回の hachathon で Thinkpad を使っていたのは僕と mizzy さんだけ！</p>

<p>今年はみんな Macbook。</p>

<p><a href="http://www.flickr.com/photos/typester/2508074878/" title="R0010880.JPG by typester, on Flickr"><img src="http://farm4.static.flickr.com/3198/2508074878_e0ab3cf8ce.jpg" width="500" height="375" alt="R0010880.JPG" /></a></p>

<p>Hackathon きてた人の9割くらいは macbook だったんじゃなかろうか。。</p>
]]></content:encoded>
    <dc:subject>perl, yapc</dc:subject>
    <dc:creator>typester</dc:creator>
    <dc:date>2008-05-22T15:17:00+09:00</dc:date>
  </item>
  <item rdf:about="http://unknownplace.org/memo/2008/05/12#e001">
    <title>12:51  Google Docs にファイルアップロードするスクリプト</title>
    <description />
    <link>http://unknownplace.org/memo/2008/05/12#e001</link>
    <content:encoded><![CDATA[<p>を書いてみた。</p>

<p><a href="http://github.com/typester/www-google-docs-upload/tree/master/example/gdoc-upload.pl">http://github.com/typester/www-google-docs-upload/tree/master/example/gdoc-upload.pl</a></p>

<p>muttとかサーバーサイドのメーラーを使っているとコンソールで開けない添付ファイルが来たときちょっと困るなーと思っていて、いままではsshfsとかでマウントしてあるところに一時的にファイルを保存してそこをローカルのPCから開いていたけど面倒。</p>

<p>いちおうimapも使えるようにしてあるので添付ファイルだけほかのメーラーで読むというのもありかなと思ったけどBeckyもThunderbirdも(imap経由だからか)重くてよけいめんどい。</p>

<p>で、mutt からパイプでわたすだけで google docs にアップロードされたら便利だなーと思って作ってみたというところ。</p>

<p>ただパイプで渡したのを File::Temp で保存してそれをアップしてるのだけど、Google Docs側が拡張子でファイルの種類を判別してるようで、<code>File::Temp-&gt;new</code> しただけだと拡張子がつかなくてアップされない＞＜</p>

<p>ので現状は</p>

<pre><code>| gdoc-upload.pl -n ppt
</code></pre>

<p>とか拡張子を指定する必要がある。</p>
]]></content:encoded>
    <dc:subject>perl</dc:subject>
    <dc:creator>typester</dc:creator>
    <dc:date>2008-05-12T12:51:00+09:00</dc:date>
  </item>
  <item rdf:about="http://unknownplace.org/memo/2008/03/12#e001">
    <title>12:24  convertコマンド</title>
    <description />
    <link>http://unknownplace.org/memo/2008/03/12#e001</link>
    <content:encoded><![CDATA[<p>ImageMagickのconvertコマンドをsystem関数でたたいてた古いプログラムを動かす必要があったのだが、そのためだけにImageMagickインストールするとか面倒すぎたので、perlでconvertコマンド的なものを書いてお茶を濁した。</p>

<p>ファイル形式の変換とリサイズしかできない。</p>

<pre><code>#!/usr/bin/env perl

use strict;
use warnings;

use Getopt::Long;

use Imager;
use Path::Class qw/file/;

GetOptions(
    \my %options,
    qw/geometry=s/,
);

my $in  = file($ARGV[0]);
my $out = file($ARGV[1]);

my ($width, $height) = ($options{geometry} || '') =~ /(\d+)x(\d+)/;

# read
my $img = Imager-&gt;new;
$img-&gt;read( file =&gt; "$in" ) or die 'Cannot read: ', $img-&gt;errstr;

# scale if exists geometry option
if ($width and $height) {
    $img = $img-&gt;scale( xpixels =&gt; $width, ypixels =&gt; $height, type =&gt; 'nonprop' );
}

# write
$img-&gt;write( file =&gt; $out ) or die 'Cannot write: ', $img-&gt;errstr;
</code></pre>
]]></content:encoded>
    <dc:subject>perl</dc:subject>
    <dc:creator>typester</dc:creator>
    <dc:date>2008-03-12T12:24:00+09:00</dc:date>
  </item>
  <item rdf:about="http://unknownplace.org/memo/2008/02/29#e002">
    <title>12:17  Catalystアプリオレオレポリシー</title>
    <description />
    <link>http://unknownplace.org/memo/2008/02/29#e002</link>
    <content:encoded><![CDATA[<p>下記camr作った時点での僕のポリシーは</p>

<ol>
<li>アプリ名にかかわらず設定ファイルはconfig.yamlとconfig_local.yaml</li>
<li>でも変更することがないほとんどの設定はyamlには書かない。yamlがごちゃっとするときもい</li>
<li>ForceUTF8系モジュールは使用しない。内部がきちんとutf8で統一されていれば必要ない。</li>
<li>MyApp::UtilsとかいうのでいろいろBKなことをまとめてする。uri_forを気に入るように直したり、FillInFormの挙動変えたり</li>
</ol>

<p>なんか抜けてる気がするけどこんな感じ。</p>
]]></content:encoded>
    <dc:subject>perl, catalyst</dc:subject>
    <dc:creator>typester</dc:creator>
    <dc:date>2008-02-29T12:17:00+09:00</dc:date>
  </item>
  <item rdf:about="http://unknownplace.org/memo/2008/02/29#e001">
    <title>02:54  Webカメラから直接写真をFlickrにあげる</title>
    <description />
    <link>http://unknownplace.org/memo/2008/02/29#e001</link>
    <content:encoded><![CDATA[<blockquote>
  <p><a href="http://hatena.g.hatena.ne.jp/hatenafotolife/20080228/1204189811">はてなフォトライフでWebカメラから直接写真を撮影してアップロードできるようになりました - はてなフォトライフ日記 - 機能変更、お知らせなど</a></p>
</blockquote>

<p>をみて、おもろいなーとおもったので僕も作ってみた。Flickrバージョン。</p>

<blockquote>
  <p><a href="http://coderepos.org/share/browser/websites/camr/trunk">http://coderepos.org/share/browser/websites/camr/trunk</a></p>
</blockquote>

<p>本家に比べると大分しょぼいけど、動いたので満足した。なんかこれだけで3時間くらいかかった。。</p>

<p>ローカル git レポジトリからあげる方法がわからなんだので、普通に svn import した＞＜</p>
]]></content:encoded>
    <dc:subject>perl</dc:subject>
    <dc:creator>typester</dc:creator>
    <dc:date>2008-02-29T02:54:00+09:00</dc:date>
  </item>
  <item rdf:about="http://unknownplace.org/memo/2008/02/17#e001">
    <title>23:07  utf8::is_utf8</title>
    <description />
    <link>http://unknownplace.org/memo/2008/02/17#e001</link>
    <content:encoded><![CDATA[<p>miyagawaさんが#catalystでいってたことやっと理解できた、きがする。</p>

<pre><code>use Data::Dumper;

my $s = "H\x{c3}\x{ab}llo";

utf8::decode($s);

warn Dumper $s;        # =&gt; "H\x{eb}llo"
warn utf8::is_utf8($s) # =&gt; 1
</code></pre>

<p>だけれども</p>

<pre><code>my $s = "H\x{eb}llo";

warn utf8::is_utf8($s) # =&gt; Warning: something's wrong
</code></pre>

<p>ということで、<code>"\x{6751}\x{702c}\x{5927}\x{8f14}"</code> などというData::Dumper表記でかならずしも utf-8フラグがたつわけじゃない。ということがいいたかったんだと思うのだけれど、</p>

<p>そもそも &euml; が latin-1 では <code>"\x{eb}"</code> だけど utf-8 では <code>"\x{c4}\x{ab}"</code> であるということを僕が認識してなかったせいでおかしなことになった。すみません。</p>
]]></content:encoded>
    <dc:subject>perl</dc:subject>
    <dc:creator>typester</dc:creator>
    <dc:date>2008-02-17T23:07:00+09:00</dc:date>
  </item>
</rdf:RDF>
