<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
    <channel>
        <title>blog.woremacx.com</title>
        <link>http://blog.woremacx.com/</link>
        <description>Save the woremacx, save the world.</description>
        <language>en</language>
        <copyright>Copyright 2009</copyright>
        <lastBuildDate>Wed, 06 May 2009 23:06:51 +0900</lastBuildDate>
        <generator>http://www.sixapart.com/movabletype/</generator>
        <docs>http://www.rssboard.org/rss-specification</docs>
        
        <item>
            <title>Angelos の中の人に会ってきた！</title>
            <description><![CDATA[<p>Angelos の偉大なる開発者である dann さんが、GW を利用した休暇で沖縄に遊びに来るというので、<a href="http://manko.perl-mongers.org/2009/05/manko-pm-001-vu.html">manko.pm #001 ヴ</a> を開催させていただきました。</p>
<h4> ヴ</h4>
<p>dann さんとお会いするにあたり、何かサプライズ的なものを用意したいと思っていました。前日くらいに IRC のとあるチャンネルで何かないかと聞いたところ、lyokato さんより、画用紙に「ヴ」を書いて掲げるというアイディアをいただきました。当日、近くのダイソーで画用紙とマジックを買って、実際に「ヴ」を掲げてみました。「ヴ」のおかげで、はぐれることなく無事お会いすることが出来たのでよかったです。</p>
<h4> 感想</h4>
<p><a href="http://dann.g.hatena.ne.jp/dann/20090506/p1">dann さんもエントリで書かれている</a>ように、普段から IRC で会話をしているので、物理的には初対面なのに、感覚としては初対面ではないという不思議な感覚でした。</p>
<p>一つだけ心残りなのは、「Angelooooooooooooos!」と一緒に連呼してもらうのをすっかり忘れていたことです。今後の manko.pm でぜひオ願いします。</p>
<p>短い時間でしたが、dann さんのアツいお話を色々聞かせていただくことができました。今すぐではないけれど、3 年後、5 年後も視野に入れて何か面白いコラボレーションをできたらいいなぁと強く思いました。</p>
<p>dann さん、今回は声をかけていただいて、ありがとうございました！</p>
<h4> see also</h4>
<ul>
<li> <a href="http://manko.perl-mongers.org/2009/05/manko-pm-001-vu.html">manko.pm #001 ヴ が開催されました - manko.perl-mongers.org</a></li>
<li> <a href="http://dann.g.hatena.ne.jp/dann/20090506/p1">ヴの中に人に会ってきた！ - dann@webdev - dann's portal</a></li>
</ul>

]]></description>
            <link>http://blog.woremacx.com/2009/05/vu-meets-dann.html</link>
            <guid>http://blog.woremacx.com/2009/05/vu-meets-dann.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">manko.pm</category>
            
            <pubDate>Wed, 06 May 2009 23:06:51 +0900</pubDate>
        </item>
        
        <item>
            <title>NBC でやってるドラマ Chuck が awesome すぎて目が離せない！</title>
            <description><![CDATA[<img src="http://12.media.tumblr.com/2uIDsGkn2jqplgesmtKQqkN2o1_400.png" height=176 width=400>
<p>NBC でやってるドラマ Chuck が、ひじょーに awesome です。</p>
<p>ドラマのスタートは、</p>
<blockquote class="entry" title="http://mamono.2ch.net/test/read.cgi/tv2/1195257823/" cite="http://mamono.2ch.net/test/read.cgi/tv2/1195257823/">
<p>チャックは家電量販店BUYMOREの情報家電部門NERDHERDで働くオタク青年。</p>
<p>過去に彼はスタンフォード大学で学んでいたがルームメイトで親友でもあったブライス・ラークリンの裏切り行為により大学を退学させられてしまう。</p>
<p>現在のチャックは親友に裏切られた心の傷を抱きながらも同じ店で販売員として働くモーガン、同居している姉のエリーエリーのボーイフレンドのキャプテンと共にまったりとした日常を過ごしていた。</p>
<p>チャックの誕生日パーティーの夜、ブライスから久々にメールが届く。ブライスは政府情報機関の極秘情報を全て盗み政府機関に処刑される寸前にチャックに暗号化されたデータを送ったのだ。知らずにメールを開いたチャックは膨大な情報量のサブリミナル画像を強制的に見せられ気絶してしまう。</p>
<cite><a href="http://mamono.2ch.net/test/read.cgi/tv2/1195257823/">http://mamono.2ch.net/test/read.cgi/tv2/1195257823/</a></cite>
</blockquote>
<p>という感じで、スパイアクションモノです。</p>
<p>チャック・バトアスキー(Zachary Levi)の頭の中に全機密情報がインプットされてしまったので、サラ・ウォーカー(Yvonne Strahovski)とジョン・ケイシー(Adam Baldwin)がチャックを保護する任務につきます。この保護で、チャックはスパイとして活動しながら、今まで通りの生活を送り始めます。この 3 人の関わり合いがぼくは面白いです。チャックが作戦現場で起こすドタバタであったり、チャックとサラの感情の揺れ動きあったり、その他チャックの勤務先での不思議な人間関係があったりと、コミカルなスパイアクションという感じで一度見始めると止まらなくなるドラマです。</p>
<p>そんな awesome なドラマなんですが、日本語字幕付きで流通してるのは、<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001F4C6PC/blogworemacx-22/ref=nosim/">ターミネーター:サラ・コナー クロニクルズ</a> レンタル DVD の 5 枚目に入っている第1話のみで、日本の amazon にある <a href="http://www.amazon.co.jp/exec/obidos/ASIN/B000VWC9YW/blogworemacx-22/ref=nosim/">Chuck - Complete First Season (4pc) (Ws Sub Ac3)</a> には残念ながら日本語字幕が付いてないです。</p>
<h4> リンク</h4>
<p>US からの接続であれば、The WB で Season 1 が、NBC.com で Season 2 が見れます。</p>
<p>なんとかすれば日本からも見れるので、そこらのあらすじサイトを参考に、ぜひわくわくしてください！</p>
<ul>
<li> <a href="http://www.nbc.com/Chuck/">Chuck | Watch Episodes Online for Free - Chuck TV Show, Series - Video Clips, Episode Recaps, Photos, Bios, Downloads &amp; Games NBC Official Site</a></li>
<li> <a href="http://www.thewb.com/shows/chuck/">The WB - Chuck - Full episodes of Veronica Mars, One Tree Hill, The O.C., Sorority Forever, Childrens' Hospital, Friends, Gilmore Girls, Smallville on TheWB.com, It's TV Online.</a></li>
<li> <a href="http://chuck-nbc.wikia.com/wiki/Chuck_-_Mondays_on_NBC">Chuck Wiki</a> (<a href="http://chuck-nbc.wikia.com/wiki/Category:Season_1_Television_Series_Episodes">エピソードガイド season1</a>、<a href="http://chuck-nbc.wikia.com/wiki/Category:Season_2_Television_Series_Episodes">エピソードガイド season2</a>)</li>
</ul>

]]></description>
            <link>http://blog.woremacx.com/2009/02/nbc-chuck-is-awesome-drama.html</link>
            <guid>http://blog.woremacx.com/2009/02/nbc-chuck-is-awesome-drama.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">chuck</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">drama</category>
            
            <pubDate>Mon, 09 Feb 2009 22:19:58 +0900</pubDate>
        </item>
        
        <item>
            <title>携帯向け将棋棋譜サイトを作った</title>
            <description><![CDATA[<p>最近なんとなく将棋を始めたいなぁと思って、いろんなサイトを見ていました。</p>
<p>PC 向けだと、&quot;Kifu for Windows&quot; があり、それの flash 版、Java applet 版が主催団体などにも貼られています。</p>
<p>ケータイ向けの便利ソフトとしては kif2swf があるのみで、いろいろまとまったデータを閲覧するのは手間がかかる印象を受けました。</p>
<p>そこで、自動更新型のサイト <a href="http://kifu.woremacx.com/">携帯向け将棋棋譜サイト - kifu::woremacx</a> を作りました。</p>
<p>やっていることは、適当な間隔で Web をスクレイピングして棋譜データを取得し、解釈し、盤に並べ、kif2swf にデータを埋め込んで、swf を作り直して公開するという簡単なお仕事です。</p>
<p>今のところ UTF-8 のみの出力で、スクレイピング先が 2ch 限定とあまりやる気がない状態だったりしますが、ぼちぼち広げていきたいと思います。</p>
<p>どうぞご利用ください。</p>

<h3> kifu::woremacx</h3>
<ul>
<li> <a href="http://kifu.woremacx.com/">携帯向け将棋棋譜サイト - kifu::woremacx</a></li>
</ul>

<h3> 関連サイト一覧</h3>
<ul>
<li> <a href="http://libpanda.s18.xrea.com/index.html">王子南交差点</a> / <a href="http://libpanda.s18.xrea.com/kif/kif.cgi">kif2swf</a></li>
<li> <a href="http://wiki.optus.nu/shogi/">将棋の棋譜でーたべーす</a></li>
<li> <a href="http://do.rojo.jp/shogi/">道路上将棋! 携帯向け無料ｵﾝﾗｲﾝ対戦将棋</a></li>
<li> <a href="http://homepage2.nifty.com/kakinoki_y/">柿木の将棋ソフトウェア</a></li>
<li> <a href="http://shougikakolog.hp.infoseek.co.jp/">将棋の棋譜貼り専門スレッド 過去ログ</a></li>
<li> <a href="http://www.geocities.jp/shogikifu/">将棋棋譜集</a></li>
</ul>

]]></description>
            <link>http://blog.woremacx.com/2009/02/kifu-woremacx.html</link>
            <guid>http://blog.woremacx.com/2009/02/kifu-woremacx.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">kifu</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">shogi</category>
            
            <pubDate>Mon, 02 Feb 2009 22:58:52 +0900</pubDate>
        </item>
        
        <item>
            <title>あけましておめでとうございます</title>
            <description><![CDATA[<p>あまけしておでめとうございます。</p>
<p>さて、はてなブックマークをチェックしていると、未だにこのブログの古い記事を参考にしていただいていることがあるようです。参考にしていただいたりブックマークしていただけるのは非常にうれしいですが、どんな分野においても進歩が速く、情報はすぐに陳腐化していきます。</p>
<p>そこで、うちのブログの古い記事に到達した場合には、情報が古いことを表示することにしました。どのくらいの基準でやろうかと迷いましたが、1ヶ月経過したら古い情報であることにしました。</p>
<p>しくみとしては、たぶん MT 4 から導入されたと思われる relative=js をまねして拡張することで対応しました。個別エントリのテンプレートに &lt;$MTEntryDate format=&quot;%x %X&quot; relative=&quot;js&quot;$&gt; と書かれているあれです。</p>
<p>ということで、今年も <a href="http://woremacx.com/">woremacx</a> をよろしくお願いいたします。</p>

]]></description>
            <link>http://blog.woremacx.com/2009/01/happy-new-year-2009.html</link>
            <guid>http://blog.woremacx.com/2009/01/happy-new-year-2009.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">info</category>
            
            <pubDate>Thu, 01 Jan 2009 09:00:00 +0900</pubDate>
        </item>
        
        <item>
            <title>XMind が使いやすくて良い</title>
            <description><![CDATA[<img src="http://data.tumblr.com/2uIDsGkn2h1sp3wqExSLtTnwo1_500.png" height="375" width="500">
<p>主に文章をデジタルデータとして管理する場合、多種多様な方法があり、個々人で慣れた親しんだ環境があるかと思います。</p>
<p>今日は、依存関係のある大量の文章を扱う場面で、全体の構造を把握しながら長文ノートを残しておきたくなり、ちょっと困ってしまいました。</p>
<p>ぼくの場合、扱う対象の全体の構造を、頭の中で明確に再現できるほど理解が深まっている場合だと、テキストファイル系でも平気です。ベタテキストや yaml 的なテキストで書き散らかして、あとで grep するかんじですね。しかし、理解度が乏しい場合、テキストファイルに全部突っ込んでると何が何やらわからなくなります。</p>
<p>今回は、何が何やらわからなくなっている状況なので、自分が取り組んでいることを整理するためツールが欲しくなりました。紙と鉛筆最強なんですが、それは見づらさと消しゴムの大量消費の観点から好きではありません。現代的なマインドマップ、そして、ツリー的に全体像を把握できつつ、各エレメントに長文ノートを残しておける環境が望む環境です。#vagina の皆さんに聞いたり、色々ぐぐったりして、ようやく XMind というマインドマップツールにたどりつきました。</p>
<p>データファイルは、zip でつつまれた xml です。xml なので、大量に入力することがあれば、ちょっとしたコンバータを書いてやればカンタンに取り込めそうです。</p>
<p>今日はほんと良いツールにたどり着きました。開発者の皆さんありがとう。</p>
<ul>
<li> <a href="http://www.xmind.net/">XMind - Social Brainstorming and Mind Mapping</a></li>
</ul>

]]></description>
            <link>http://blog.woremacx.com/2008/12/xmind.html</link>
            <guid>http://blog.woremacx.com/2008/12/xmind.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">mindmap</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">XMind</category>
            
            <pubDate>Thu, 04 Dec 2008 02:19:04 +0900</pubDate>
        </item>
        
        <item>
            <title>「テープ起こし」に関するブックマークコメントより</title>
            <description><![CDATA[<p><a href="http://b.hatena.ne.jp/entry/http://blog.woremacx.com/2008/11/repeat-audio-player-in-perl.html">はてなブックマーク - 「テープ起こし」を手助けするスクリプトを perl で作ってみる - blog.woremacx.com</a> より</p>
<blockquote cite="http://b.hatena.ne.jp/imo758/20081116#bookmark-10849858">
<p>imo758 さん: キー判定は抽象化してカスタマイズが楽になってるとなお良かったかも</p>
<cite><a href="http://b.hatena.ne.jp/imo758/20081116#bookmark-10849858" target="_blank">http://b.hatena.ne.jp/imo758/20081116#bookmark-10849858</a></cite></blockquote>
<blockquote cite="http://b.hatena.ne.jp/asakura-t/20081117#bookmark-10849858">
<p>asakura-t さん:「Okoshiyasu2」あたりを使ったほうがいいと思うんだ。 <a href="http://www12.plala.or.jp/mojo/Oko1.html">http://www12.plala.or.jp/mojo/Oko1.html</a></p>
<cite><a href="http://b.hatena.ne.jp/asakura-t/20081117#bookmark-10849858" target="_blank">http://b.hatena.ne.jp/asakura-t/20081117#bookmark-10849858</a></cite></blockquote>
<p>とのコメントを頂きました。ありがとうございます。</p>
<p>今回このスクリプトを作るまでに至ったぼくの行動を書いておきたいと思います。</p>

<h4> foobar2000 期</h4>
<p>出先でネットに繋がってないときに、テープ起こしする必要がありました。</p>
<p>ぼくのノートパソコンには Windows Media Player と foobar2000 しか使えるソフトが入ってませんでした。</p>
<p>foobar2000 で、C-a/s/d/f に逆方向シーク、 C-j/k/l/; に順方向シークをそれぞれ移動量を変えて割り当てて使ってみました。そうすることにより、キーボードから手を放すことなく自由に移動でき、良い感じだと思いました。</p>
<p>その場はなんとか無事に終わりました。</p>

<h4> ソフト開拓期</h4>
<p>今回またテープ起こしするときに、なんかいいソフトが一応調べてみることにしました。</p>
<p>ぐぐって出てきた記事(<a href="http://www.itmedia.co.jp/bizid/articles/0608/07/news082.html">ITmedia Biz.ID：「テープ起こし」に特化した再生ソフト</a>)を見て、Okoshiyasu2 は試してみました。</p>
<ul>
<li> Okoshiyasu2 の良い点
<ul>
<li> グローバルにキーボードを乗っ取ってくれるのは、Alt-Tab しなくていいので非常に良い。</li>
</ul>
</li>
<li> 変な環境に慣れてしまったので物足りない点
<ul>
<li> 移動量の違うシーク 4 種類で慣れてしまっているので物足りない。</li>
</ul>
</li>
</ul>

<h4> 作ったらいいんじゃね期</h4>
<ul>
<li> 今回使った古い系の foobar2000 は、Ctrl なしでホットキーを割り当てれることが判明しました。(現行系でも設定すれば出来るのかもしれないけど、やり方がわかりません＞＿＜)</li>
<li> perl のコンソールアプリとして作ってしまってもいいかもわからんね、と思いました。</li>
<li> どうせならシークしたポイントから常時 A-B リピートするモードがあっても良いね、とひらめきました。</li>
</ul>

<p>常時 A-B リピートは、非常にお気に入りです。</p>
<h4> だめなところ</h4>
<ul>
<li> 今のところ、Athlon64 X2 3800+ なマシンで常時 20% くらい CPU 食ってる出来の悪い子です。ループの構成が悪いと思います。バッテリー駆動してるマシンだと酷いことになると思いますｗ</li>
<li> ご指摘があったとおり、設定周りをベタ書きしているので、カスタマイズが容易ではないです。</li>
<li> ボリュームコントロール/ミュートがありません。</li>
<li> 一時停止すら実装してません。</li>
</ul>

<p>だめなところは、そのうち気が向いたら直していけたらいいなと思います。</p>

]]></description>
            <link>http://blog.woremacx.com/2008/11/from-bookmark-comment-about-audiotype.html</link>
            <guid>http://blog.woremacx.com/2008/11/from-bookmark-comment-about-audiotype.html</guid>
            
            
            <pubDate>Mon, 17 Nov 2008 19:40:21 +0900</pubDate>
        </item>
        
        <item>
            <title>「テープ起こし」を手助けするスクリプトを perl で作ってみる</title>
            <description><![CDATA[<p>ボイスレコーダーで 2 時間とか録音したのはいいけど、これどうやってテキストデータにするの？という事態が勃発しました。キーボードにシーク動作とか割り当てて、自動リピートとかあれば便利だなぁと思い、perl で書いてみました。</p>
<p>Alt + Tab で他のウィンドと行き来したあとで、全くキーを受け取らなくなる現象があってハマリました。GetEvents で入力があるか確認してから Input で入力内容を得るとハマらずに済みます。シーク時に Win32::MediaPlayer まわりに与える時間は ms に直して渡しました。</p>

<ins datetime="2008-11-17T20:07:28+09:00">
<p><a href="http://blog.woremacx.com/2008/11/from-bookmark-comment-about-audiotype.html">「テープ起こし」に関するブックマークコメントより - blog.woremacx.com</a> について関連エントリを書きました</p>

<h3> 今回のスクリプトのコンセプト</h3>
<ul>
<li> 自動的に A-B リピートになる</li>
<li> 4 種類の移動量でシークできる</li>
<li> perl で書いてあるため、perl の環境さえ入っていれば容易に改造できる</li>
</ul>
</ins>

<h3> 使い方</h3>
<p>開くファイルをスクリプトの引数として起動します。起動したら、勝手に 10 秒リピートになっています。</p>
<ul>
<li> q: 終了</li>
</ul>

<ul>
<li> j: 5 秒後</li>
<li> k: 10 秒後</li>
<li> l: 30 秒後</li>
<li> ;: 5 分後</li>
</ul>

<ul>
<li> f: 5 秒前</li>
<li> d: 10 秒前</li>
<li> s: 30 秒前</li>
<li> a: 5 分前</li>
</ul>

<ul>
<li> t: リピートするかのトグル</li>
<li> u: リピート秒数--</li>
<li> i: リピート秒数++</li>
</ul>

<h3> コード</h3>
<p>coderepos にもうｐしました <a href="http://svn.coderepos.org/share/lang/perl/misc/repeat-audio-player.pl">repeat-audio-player.pl</a></p>
<pre>
<span class="synPreProc">#!/usr/bin/perl</span>

<span class="synStatement">use strict</span>;
<span class="synStatement">use warnings</span>;

<span class="synStatement">use </span>threads;
<span class="synStatement">use </span>Thread::Queue;
<span class="synStatement">use </span>Win32::Console;
<span class="synStatement">use </span>Win32::MediaPlayer;
<span class="synStatement">use </span>Time::HiRes ();

<span class="synStatement">sub</span><span class="synIdentifier"> keywatcher </span>{
    <span class="synStatement">my</span> (<span class="synIdentifier">$queue</span>) = <span class="synStatement">shift</span>;

    <span class="synStatement">my</span> <span class="synIdentifier">$console</span> = <span class="synStatement">new</span> Win32::Console(STD_INPUT_HANDLE);
    <span class="synIdentifier">$console</span>-&gt;Mode(ENABLE_PROCESSED_INPUT);

    <span class="synComment">#     my $mode = $console-&gt;Mode();</span>
    <span class="synComment">#     print &quot;ENABLE_LINE_INPUT\n&quot; if $mode &amp; ENABLE_LINE_INPUT;</span>
    <span class="synComment">#     print &quot;ENABLE_ECHO_INPUT\n&quot; if $mode &amp; ENABLE_ECHO_INPUT;</span>
    <span class="synComment">#     print &quot;ENABLE_PROCESSED_INPUT\n&quot; if $mode &amp; ENABLE_PROCESSED_INPUT;</span>
    <span class="synComment">#     print &quot;ENABLE_WINDOW_INPUT\n&quot; if $mode &amp; ENABLE_WINDOW_INPUT;</span>

    <span class="synStatement">while</span> (<span class="synConstant">1</span>) {
        <span class="synStatement">while</span> (<span class="synIdentifier">$console</span>-&gt;GetEvents) {
            <span class="synStatement">my</span> <span class="synIdentifier">@event</span> = <span class="synIdentifier">$console</span>-&gt;Input;
            <span class="synComment"># 0: event type: 1 for keyboard</span>
            <span class="synComment"># 1: key down: TRUE if the key is being pressed, FALSE if the key is being released</span>
            <span class="synComment"># 2: repeat count: the number of times the key is being held down</span>
            <span class="synComment"># 3: virtual keycode: the virtual key code of the key</span>
            <span class="synComment"># 4: virtual scancode: the virtual scan code of the key</span>
            <span class="synComment"># 5: char: the ASCII code of the character (if the key is a character key, 0 otherwise)</span>
            <span class="synComment"># 6: control key state: the state of the control keys (SHIFTs, CTRLs, ALTs, etc.)</span>

            <span class="synStatement">next</span> <span class="synStatement">unless</span> <span class="synIdentifier">$event</span>[<span class="synConstant">1</span>];

            <span class="synStatement">my</span> <span class="synIdentifier">$c</span> = <span class="synStatement">lc</span>(<span class="synStatement">chr</span>(<span class="synIdentifier">$event</span>[<span class="synConstant">5</span>]));
            <span class="synIdentifier">$queue</span>-&gt;enqueue(<span class="synIdentifier">$c</span>);
            <span class="synStatement">return</span> <span class="synConstant">0</span> <span class="synStatement">if</span> <span class="synIdentifier">$c</span> <span class="synStatement">eq</span> <span class="synConstant">'q'</span>;
        }
    }

    <span class="synStatement">return</span> <span class="synConstant">0</span>;
}

<span class="synStatement">sub</span><span class="synIdentifier"> worker </span>{
    <span class="synStatement">my</span> (<span class="synIdentifier">$queue</span>, <span class="synIdentifier">$file</span>) = <span class="synIdentifier">@_</span>;

    <span class="synStatement">my</span> <span class="synIdentifier">$wp</span> = Win32::MediaPlayer-&gt;<span class="synStatement">new</span>;
    <span class="synIdentifier">$wp</span>-&gt;load(<span class="synIdentifier">$file</span>) <span class="synStatement">or</span> <span class="synStatement">die</span>;
    <span class="synIdentifier">$wp</span>-&gt;play;

    <span class="synStatement">my</span> <span class="synIdentifier">$state</span> = {
        <span class="synConstant">mute </span>=&gt; <span class="synConstant">0</span>,
        <span class="synConstant">playing </span>=&gt; <span class="synConstant">1</span>,
        <span class="synStatement">pos</span> =&gt; <span class="synConstant">0</span>,
        <span class="synConstant">len </span>=&gt; res_to_sec(<span class="synIdentifier">$wp</span>-&gt;<span class="synStatement">length</span>(<span class="synConstant">0</span>)),
        <span class="synConstant">base </span>=&gt; <span class="synConstant">0</span>,
        <span class="synConstant">repeat </span>=&gt; <span class="synConstant">1</span>,
        <span class="synConstant">repeat_dur </span>=&gt; <span class="synConstant">10</span>,
    };

    <span class="synStatement">my</span> <span class="synIdentifier">%keymap</span> = (
        <span class="synConstant">j </span>=&gt; <span class="synConstant">5</span>,
        <span class="synConstant">k </span>=&gt; <span class="synConstant">10</span>,
        <span class="synConstant">l </span>=&gt; <span class="synConstant">30</span>,
        <span class="synConstant">';'</span> =&gt; <span class="synConstant">300</span>,
        <span class="synConstant">f </span>=&gt; <span class="synConstant">-5</span>,
        <span class="synConstant">d </span>=&gt; <span class="synConstant">-10</span>,
        <span class="synConstant">s </span>=&gt; <span class="synConstant">-30</span>,
        <span class="synConstant">a </span>=&gt; <span class="synConstant">-300</span>,
    );

    <span class="synStatement">printf</span> <span class="synConstant">&quot;repeats each %d secs</span><span class="synSpecial">\n</span><span class="synConstant">&quot;</span>, <span class="synIdentifier">$state</span>-&gt;{repeat_dur};
    <span class="synStatement">my</span> <span class="synIdentifier">$console</span> = <span class="synStatement">new</span> Win32::Console(STD_OUTPUT_HANDLE);
    <span class="synStatement">my</span> <span class="synIdentifier">$seek</span> = <span class="synConstant">0</span>;
    <span class="synStatement">while</span> (<span class="synConstant">1</span>) {
        <span class="synIdentifier">$state</span>-&gt;{len} = res_to_sec(<span class="synIdentifier">$wp</span>-&gt;<span class="synStatement">length</span>(<span class="synConstant">0</span>));
        <span class="synIdentifier">$state</span>-&gt;{<span class="synStatement">pos</span>} = res_to_sec(<span class="synIdentifier">$wp</span>-&gt;<span class="synStatement">pos</span>(<span class="synConstant">0</span>));

        <span class="synStatement">if</span> (<span class="synIdentifier">$seek</span>) {
            <span class="synIdentifier">$wp</span>-&gt;pause;
            <span class="synIdentifier">$wp</span>-&gt;<span class="synStatement">seek</span>(<span class="synIdentifier">$state</span>-&gt;{base} * <span class="synConstant">1000</span>);
            <span class="synIdentifier">$wp</span>-&gt;resume;
            <span class="synIdentifier">$seek</span> = <span class="synConstant">0</span>;
            <span class="synStatement">next</span>;
        }

        <span class="synStatement">my</span> <span class="synIdentifier">$buf</span> = <span class="synStatement">sprintf</span> <span class="synConstant">&quot;%s / %s</span><span class="synSpecial">\r</span><span class="synConstant">&quot;</span>, sec_to_hms(<span class="synIdentifier">$state</span>-&gt;{<span class="synStatement">pos</span>}), sec_to_hms(<span class="synIdentifier">$state</span>-&gt;{len});
        <span class="synIdentifier">$console</span>-&gt;Write(<span class="synIdentifier">$buf</span>);
        Time::HiRes::<span class="synStatement">sleep</span>(<span class="synConstant">0.5</span>);

        <span class="synStatement">my</span> <span class="synIdentifier">$repeat_state</span> =<span class="synIdentifier"> </span><span class="synStatement">sub</span><span class="synIdentifier"> </span>{
            <span class="synStatement">printf</span> <span class="synConstant">&quot;</span><span class="synSpecial">\n</span><span class="synConstant">&quot;</span>;
            <span class="synStatement">printf</span> <span class="synConstant">&quot;repeat %s</span><span class="synSpecial">\n</span><span class="synConstant">&quot;</span>, <span class="synIdentifier">$state</span>-&gt;{repeat} ? <span class="synConstant">&quot;on&quot;</span> : <span class="synConstant">&quot;off&quot;</span>;
            <span class="synStatement">printf</span> <span class="synConstant">&quot;repeats each %d secs</span><span class="synSpecial">\n</span><span class="synConstant">&quot;</span>, <span class="synIdentifier">$state</span>-&gt;{repeat_dur} <span class="synStatement">if</span> <span class="synIdentifier">$state</span>-&gt;{repeat};
        };

        <span class="synStatement">if</span> (<span class="synIdentifier">$state</span>-&gt;{repeat} &amp;&amp;
            <span class="synIdentifier">$state</span>-&gt;{<span class="synStatement">pos</span>} &gt;= (<span class="synIdentifier">$state</span>-&gt;{base} + <span class="synIdentifier">$state</span>-&gt;{repeat_dur})) {
            <span class="synIdentifier">$seek</span>++;
        }

        <span class="synStatement">while</span> (<span class="synIdentifier">$queue</span>-&gt;pending) {
            <span class="synStatement">my</span> <span class="synIdentifier">$c</span> = <span class="synIdentifier">$queue</span>-&gt;dequeue;

            <span class="synStatement">if</span> (<span class="synStatement">defined</span>(<span class="synIdentifier">$keymap</span>{<span class="synIdentifier">$c</span>})) {
                <span class="synStatement">unless</span> (<span class="synIdentifier">$state</span>-&gt;{repeat}) {
                    <span class="synIdentifier">$state</span>-&gt;{base} = <span class="synIdentifier">$state</span>-&gt;{<span class="synStatement">pos</span>};
                }
                <span class="synIdentifier">$state</span>-&gt;{base} += <span class="synIdentifier">$keymap</span>{<span class="synIdentifier">$c</span>};
                <span class="synIdentifier">$seek</span>++;
            } <span class="synStatement">elsif</span> (<span class="synIdentifier">$c</span> <span class="synStatement">eq</span> <span class="synConstant">'t'</span>) {
                <span class="synIdentifier">$state</span>-&gt;{repeat} = <span class="synIdentifier">$state</span>-&gt;{repeat} ? <span class="synConstant">0</span> : <span class="synConstant">1</span>;
                <span class="synIdentifier">$repeat_state</span>-&gt;();
            } <span class="synStatement">elsif</span> (<span class="synIdentifier">$c</span> <span class="synStatement">eq</span> <span class="synConstant">'r'</span>) {
                <span class="synIdentifier">$repeat_state</span>-&gt;();
            } <span class="synStatement">elsif</span> (<span class="synIdentifier">$c</span> <span class="synStatement">eq</span> <span class="synConstant">'u'</span>) {
                <span class="synIdentifier">$state</span>-&gt;{repeat_dur}--;
                <span class="synIdentifier">$state</span>-&gt;{repeat_dur} = <span class="synConstant">1</span> <span class="synStatement">if</span> <span class="synIdentifier">$state</span>-&gt;{repeat_dur} &lt; <span class="synConstant">1</span>;
                <span class="synIdentifier">$repeat_state</span>-&gt;();
            } <span class="synStatement">elsif</span> (<span class="synIdentifier">$c</span> <span class="synStatement">eq</span> <span class="synConstant">'i'</span>) {
                <span class="synIdentifier">$state</span>-&gt;{repeat_dur}++;
                <span class="synIdentifier">$repeat_state</span>-&gt;();
            } <span class="synStatement">elsif</span> (<span class="synIdentifier">$c</span> <span class="synStatement">eq</span> <span class="synConstant">'p'</span>) {
                <span class="synIdentifier">$seek</span>++;
            }

            <span class="synStatement">return</span> <span class="synConstant">0</span> <span class="synStatement">if</span> <span class="synIdentifier">$c</span> <span class="synStatement">eq</span> <span class="synConstant">'q'</span>;
        }
    }

    <span class="synStatement">return</span> <span class="synConstant">0</span>;
}

<span class="synStatement">sub</span><span class="synIdentifier"> main </span>{
    <span class="synStatement">my</span> <span class="synIdentifier">$file</span> = <span class="synStatement">shift</span>(<span class="synIdentifier">@ARGV</span>);
    <span class="synStatement">die</span> <span class="synStatement">unless</span> <span class="synIdentifier">$file</span>;

    <span class="synStatement">my</span> <span class="synIdentifier">$queue</span> = <span class="synStatement">new</span> Thread::Queue;
    <span class="synStatement">my</span> <span class="synIdentifier">$t1</span> = threads-&gt;<span class="synStatement">new</span>(<span class="synIdentifier">\&amp;keywatcher</span>, <span class="synIdentifier">$queue</span>);
    <span class="synStatement">my</span> <span class="synIdentifier">$t2</span> = threads-&gt;<span class="synStatement">new</span>(<span class="synIdentifier">\&amp;worker</span>, <span class="synIdentifier">$queue</span>, <span class="synIdentifier">$file</span>);
    <span class="synIdentifier">$t1</span>-&gt;<span class="synStatement">join</span>;
    <span class="synIdentifier">$t2</span>-&gt;<span class="synStatement">join</span>;

    <span class="synStatement">print</span> <span class="synConstant">&quot;done.</span><span class="synSpecial">\n</span><span class="synConstant">&quot;</span>;
}

main;

<span class="synStatement">sub</span><span class="synIdentifier"> res_to_sec </span>{
    <span class="synStatement">my</span> <span class="synIdentifier">$param</span> = <span class="synStatement">shift</span>;
    <span class="synStatement">return</span> <span class="synStatement">int</span>(<span class="synIdentifier">$param</span>/<span class="synConstant">1000</span>);
}

<span class="synStatement">sub</span><span class="synIdentifier"> res_to_hms </span>{
    <span class="synStatement">my</span> <span class="synIdentifier">$param</span> = <span class="synStatement">shift</span>;
    <span class="synStatement">return</span> sec_to_hms(res_to_sec(<span class="synIdentifier">$param</span>));
}

<span class="synStatement">sub</span><span class="synIdentifier"> sec_to_hms </span>{
    <span class="synStatement">my</span> <span class="synIdentifier">$total</span> = <span class="synStatement">shift</span>;

    <span class="synStatement">my</span> <span class="synIdentifier">$sec</span> = <span class="synIdentifier">$total</span> % <span class="synConstant">60</span>;
    <span class="synStatement">my</span> <span class="synIdentifier">$min</span> = (<span class="synIdentifier">$total</span> - <span class="synIdentifier">$sec</span>) / <span class="synConstant">60</span>;
    <span class="synStatement">my</span> <span class="synIdentifier">$hour</span> = <span class="synStatement">int</span>(<span class="synIdentifier">$min</span> / <span class="synConstant">60</span>);
    <span class="synIdentifier">$min</span> = <span class="synIdentifier">$min</span> % <span class="synConstant">60</span>;

    <span class="synStatement">return</span> <span class="synStatement">sprintf</span> <span class="synConstant">&quot;%02d:%02d:%02d&quot;</span>, <span class="synIdentifier">$hour</span>, <span class="synIdentifier">$min</span>, <span class="synIdentifier">$sec</span>;
}

<span class="synStatement">sub</span><span class="synIdentifier"> sec_to_ms </span>{
    <span class="synStatement">my</span> <span class="synIdentifier">$total</span> = <span class="synStatement">shift</span>;

    <span class="synStatement">my</span> <span class="synIdentifier">$sec</span> = <span class="synIdentifier">$total</span> % <span class="synConstant">60</span>;
    <span class="synStatement">my</span> <span class="synIdentifier">$min</span> = (<span class="synIdentifier">$total</span> - <span class="synIdentifier">$sec</span>) / <span class="synConstant">60</span>;

    <span class="synStatement">return</span> <span class="synStatement">sprintf</span> <span class="synConstant">&quot;%02d:%02d&quot;</span>, <span class="synIdentifier">$min</span>, <span class="synIdentifier">$sec</span>;
}
</pre>
<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="width:150px;float:left;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B000OCUHRU/blogworemacx-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/41DSLdzTAYL._SL160_.jpg" alt="OLYMPUS Voice-Trek V-61" style="border: none;" /></a></div><div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B000OCUHRU/blogworemacx-22/ref=nosim/" name="amazletlink" target="_blank">OLYMPUS Voice-Trek V-61</a><div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/B000OCUHRU/blogworemacx-22/ref=nosim/" title="OLYMPUS Voice-Trek V-61" target="_blank">amazlet</a> at 08.11.16</div></div><div class="amazlet-detail">オリンパス (2007-03-23)<br />売り上げランキング: 283<br /></div><div class="amazlet-review" style="margin-top:10px; margin-bottom:10px"><div class="amazlet-review-average" style="margin-bottom:5px">おすすめ度の平均: <img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-4-5.gif" alt="4.5" /></div><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-4-0.gif" alt="4" /> いろいろ使えます。<br /><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-5-0.gif" alt="5" /> ライブの録音･再生に大活躍<br /></div><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B000OCUHRU/blogworemacx-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div><div class="amazlet-footer" style="clear: left"></div></div>
<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="width:150px;float:left;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B000VJ2D8M/blogworemacx-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/41KSNYi%2BZ1L._SL160_.jpg" alt="OLYMPUS ICレコーダー Voice-Trek DS-60" style="border: none;" /></a></div><div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B000VJ2D8M/blogworemacx-22/ref=nosim/" name="amazletlink" target="_blank">OLYMPUS ICレコーダー Voice-Trek DS-60</a><div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/B000VJ2D8M/blogworemacx-22/ref=nosim/" title="OLYMPUS ICレコーダー Voice-Trek DS-60" target="_blank">amazlet</a> at 08.11.16</div></div><div class="amazlet-detail">オリンパス (2007-09-14)<br />売り上げランキング: 1822<br /></div><div class="amazlet-review" style="margin-top:10px; margin-bottom:10px"><div class="amazlet-review-average" style="margin-bottom:5px">おすすめ度の平均: <img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-5-0.gif" alt="5.0" /></div><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-5-0.gif" alt="5" /> 音楽用にも<br /><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-5-0.gif" alt="5" /> 買うならコレ<br /><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-5-0.gif" alt="5" /> 値段にはわけがある<br /><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-5-0.gif" alt="5" /> クリアーな音質です<br /></div><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B000VJ2D8M/blogworemacx-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div><div class="amazlet-footer" style="clear: left"></div></div>

]]></description>
            <link>http://blog.woremacx.com/2008/11/repeat-audio-player-in-perl.html</link>
            <guid>http://blog.woremacx.com/2008/11/repeat-audio-player-in-perl.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">perl</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Win32::Console　Win32::MediaPlayer</category>
            
            <pubDate>Sun, 16 Nov 2008 01:59:33 +0900</pubDate>
        </item>
        
        <item>
            <title>perl で Text::PukiWiki を書いてます</title>
            <description><![CDATA[<p>PukiWiki の convert_html.php を perl のモジュールとして使えるよう移植しはじめました。</p>
<p>まだちゃんと動くわけではなくて、なんとか perl で動くようにしただけの状態です。</p>
<p><a href="http://vaginarepos.org/">VaginaRepos</a> でひっそりやってましたが、飽きてフェードアウトする可能性が高くなったので晒しました。</p>
<p>当面やることといえば</p>
<ul>
<li> 各モジュール間のパラメータの渡し方を直す</li>
<li> 基本テスト</li>
<li> 基本プラグイン</li>
</ul>

<p>という感じです。</p>
<p>PukiWiki にない機能の追加などを考えている方がいらっしゃれば、ブランチを切ってからやってもらえるとうれしいです。</p>

<ul>
<li> <a href="http://svn.coderepos.org/share/lang/perl/Text-PukiWiki/trunk/">Text::PukiWiki</a></li>
</ul>

]]></description>
            <link>http://blog.woremacx.com/2008/11/text-pukiwiki-in-perl.html</link>
            <guid>http://blog.woremacx.com/2008/11/text-pukiwiki-in-perl.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">perl</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">PukiWiki</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Text::PukiWiki</category>
            
            <pubDate>Sat, 15 Nov 2008 14:20:25 +0900</pubDate>
        </item>
        
        <item>
            <title>RTM の Firefox アドオンと Gmail ガジェットを試す</title>
            <description><![CDATA[<p>家でヒマしてるときにやることを管理する用の TODO リストが欲しくなったので、久しぶりに RTM 自体を使い始めた。</p>
<p><a href="http://www.itmedia.co.jp/bizid/articles/0811/04/news078.html">GmailにGadget機能――Remember The Milkも組み込み可能に</a> という記事を見つけたので、こちらを試してみることにした。</p>
<p>結論としては、au の携帯からの入力と Firefox アドオンを併用しようと思う。</p>
<h4> Firefox アドオン</h4>
<p><a href="http://data.tumblr.com/2uIDsGkn2g6380euzTx1b3iTo1_500.png"><img src="http://data.tumblr.com/2uIDsGkn2g6380euzTx1b3iTo1_500.png" alt="http://data.tumblr.com/2uIDsGkn2g6380euzTx1b3iTo1_500.png" /></a></p>
<p>Set task view here から、label とか選べる。</p>
<p>個人的に RTM の画面は好きではないのが、このアドオンは使いやすい。</p>
<p>Google apps for domain でも表示されるので良い。</p>
<h4> ガジェット</h4>
<p><a href="http://data.tumblr.com/2uIDsGkn2g636w9puOKvQAmGo1_500.png"><img src="http://data.tumblr.com/2uIDsGkn2g636w9puOKvQAmGo1_500.png" alt="http://data.tumblr.com/2uIDsGkn2g636w9puOKvQAmGo1_500.png" /></a></p>
<p>ラベルを選ぶには、設定からやらないといけない。</p>
<p>ケータイ向けの画面からすると、ひどく制限されている印象。</p>
<p>ケータイ向けの画面をガジェットにしてくれてもよかったかもしれないと思った。</p>
<p>ぼくのドメインの Google apps for domain では labs が使えないので残念。</p>

]]></description>
            <link>http://blog.woremacx.com/2008/11/try-rtm-fx-addon-and-gmail-gadget.html</link>
            <guid>http://blog.woremacx.com/2008/11/try-rtm-fx-addon-and-gmail-gadget.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">gmail</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">RTM</category>
            
            <pubDate>Tue, 11 Nov 2008 21:58:22 +0900</pubDate>
        </item>
        
        <item>
            <title>昔の広末涼子はすごかった</title>
            <description><![CDATA[<p><a href="http://alfalfa.livedoor.biz/archives/51389758.html">昔の広末涼子はすごかった:アルファルファモザイク</a></p>
<p>うん。ほんと昔の広末涼子はすごかった。ビーチボーイズとかちゃんとビデオに撮ってみてた。</p>
<p>そんな昔の広末涼子が懐かしくなってライブビデオ買ったよ！</p>
<p>150 円とかなのでお買い得だよ！VHS なので、買うときはレンタル上がりは避けてね！</p>
<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00005HIGY/blogworemacx-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51YXHA6F4QL._SL160_.jpg" alt="広末涼子ファーストライヴ～RH DEBUT TOUR 1999" style="border: none;" /></a></div><div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00005HIGY/blogworemacx-22/ref=nosim/" name="amazletlink" target="_blank">広末涼子ファーストライヴ～RH DEBUT TOUR 1999</a><div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/B00005HIGY/blogworemacx-22/ref=nosim/" title="広末涼子ファーストライヴ～RH DEBUT TOUR 1999" target="_blank">amazlet</a> at 08.11.11</div></div><div class="amazlet-detail">広末涼子 <br />ダブリューイーエー・ジャパン (1999-05-26)<br />売り上げランキング: 59110<br /></div><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00005HIGY/blogworemacx-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div><div class="amazlet-footer" style="clear: left"></div></div>


]]></description>
            <link>http://blog.woremacx.com/2008/11/hirosue-ryoko-was-awesome.html</link>
            <guid>http://blog.woremacx.com/2008/11/hirosue-ryoko-was-awesome.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">広末涼子</category>
            
            <pubDate>Tue, 11 Nov 2008 12:00:00 +0900</pubDate>
        </item>
        
        <item>
            <title>Mojolicious アプリで Template::Toolkit をデフォルトのレンダラとして使う (解決編)</title>
            <description><![CDATA[<p>先ほど、<a href="http://blog.woremacx.com/2008/11/template-toolkit-as-renderer-of-mojolicious-app.html">Mojolicious アプリで Template::Toolkit つかいたいなー - blog.woremacx.com</a> という記事を書きました。</p>
<p><a href="http://d.hatena.ne.jp/charsbar/">charsbar</a> さんに、<a href="http://b.hatena.ne.jp/charsbar/20081110#bookmark-10766507">はてなブックマークのコメントで良い方法を教えていただきました</a>。</p>
<p><a href="http://github.com/abh/mojox-renderer-tt/tree/master">MojoX::Renderer::TT</a> を使えばよいとのことで、さっそく試したところうまくいきました。</p>
<p>どうもありがとうございました！！</p>

<pre>
<span class="synStatement">package</span><span class="synType"> Vagina;</span>

<span class="synStatement">use strict</span>;
<span class="synStatement">use warnings</span>;

<span class="synStatement">use base</span> <span class="synConstant">'Mojolicious'</span>;

<span class="synStatement">use </span>MojoX::Renderer::TT;

<span class="synStatement">sub</span><span class="synIdentifier"> dispatch </span>{
    (ry
}

<span class="synStatement">sub</span><span class="synIdentifier"> startup </span>{
    <span class="synStatement">my</span> <span class="synIdentifier">$self</span> = <span class="synStatement">shift</span>;

    <span class="synComment"># Use our own context class</span>
    <span class="synIdentifier">$self</span>-&gt;ctx_class(<span class="synConstant">'Vagina::Context'</span>);

    <span class="synIdentifier">$self</span>-&gt;renderer-&gt;add_handler( <span class="synConstant">tt </span>=&gt; MojoX::Renderer::TT-&gt;<span class="synStatement">new</span>( <span class="synConstant">mojo </span>=&gt; <span class="synIdentifier">$self</span> ) );
    <span class="synIdentifier">$self</span>-&gt;renderer-&gt;default_ext(<span class="synConstant">'tt'</span>);
    <span class="synIdentifier">$self</span>-&gt;renderer-&gt;types-&gt;type(<span class="synConstant">tt </span>=&gt; <span class="synConstant">'text/html'</span>);

    <span class="synComment"># Routes</span>
    <span class="synStatement">my</span> <span class="synIdentifier">$r</span> = <span class="synIdentifier">$self</span>-&gt;routes;

    <span class="synComment"># Default route</span>
    <span class="synIdentifier">$r</span>-&gt;route(<span class="synConstant">'/:controller/:action/:id'</span>)
      -&gt;to(<span class="synConstant">controller </span>=&gt; <span class="synConstant">'example'</span>, <span class="synConstant">action </span>=&gt; <span class="synConstant">'welcome'</span>, <span class="synConstant">id </span>=&gt; <span class="synConstant">1</span>);
}
</pre>

]]></description>
            <link>http://blog.woremacx.com/2008/11/mojox-renderer-tt.html</link>
            <guid>http://blog.woremacx.com/2008/11/mojox-renderer-tt.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">Mojolicious</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">perl</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Template::Toolkit</category>
            
            <pubDate>Mon, 10 Nov 2008 13:23:43 +0900</pubDate>
        </item>
        
        <item>
            <title>Mojolicious アプリで Template::Toolkit つかいたいなー</title>
            <description><![CDATA[<p>Mojolicious アプリで Template::Toolkit つかいたいので、適当に実験してみた。</p>
<p>[% c.uri_for %] が適切に処理されるところまでは出来た。</p>
<p>どうするのがいいんでしょうか。良い方法あれば動くコードで教えてください！</p>

<ins datetime="2008-11-10T13:31:35+09:00">
<p>charsbar さんに、<a href="http://github.com/abh/mojox-renderer-tt/tree/master">MojoX::Renderer::TT</a> を教えていただきました。<a href="http://blog.woremacx.com/2008/11/mojox-renderer-tt.html">Mojolicious アプリで Template::Toolkit をデフォルトのレンダラとして使う (解決編) - blog.woremacx.com</a> をご覧ください。</p>
</ins>
<pre>
<span class="synStatement">package</span><span class="synType"> Vagina;</span>

<span class="synStatement">use strict</span>;
<span class="synStatement">use warnings</span>;

<span class="synStatement">use base</span> <span class="synConstant">'Vagina::Base'</span>;

<span class="synComment"># This method will run for each request</span>
<span class="synStatement">sub</span><span class="synIdentifier"> dispatch </span>{
    (ry
}

<span class="synComment"># This method will run once at server start</span>
<span class="synStatement">sub</span><span class="synIdentifier"> startup </span>{
    (ry
}
<span class="synConstant">1</span>;
</pre>

<pre>
<span class="synStatement">package</span><span class="synType"> Vagina::Base;</span>

<span class="synStatement">use strict</span>;
<span class="synStatement">use warnings</span>;

<span class="synStatement">use base</span> <span class="synConstant">'Mojolicious'</span>;

<span class="synStatement">use </span>Vagina::Renderer;
<span class="synStatement">use </span>Vagina::Types;

__PACKAGE__-&gt;attr(<span class="synConstant">'renderer'</span>,
    <span class="synConstant">chained </span>=&gt; <span class="synConstant">1</span>,
    <span class="synConstant">default </span>=&gt;<span class="synIdentifier"> </span><span class="synStatement">sub</span><span class="synIdentifier"> </span>{ Vagina::Renderer-&gt;<span class="synStatement">new</span> }
);

__PACKAGE__-&gt;attr(<span class="synConstant">'types'</span>,
    <span class="synConstant">chained </span>=&gt; <span class="synConstant">1</span>,
    <span class="synConstant">default </span>=&gt;<span class="synIdentifier"> </span><span class="synStatement">sub</span><span class="synIdentifier"> </span>{ Vagina::Types-&gt;<span class="synStatement">new</span> }
);

<span class="synConstant">1</span>;
</pre>

<pre>
<span class="synStatement">package</span><span class="synType"> Vagina::Renderer;</span>

<span class="synStatement">use strict</span>;
<span class="synStatement">use warnings</span>;

<span class="synStatement">use base</span> <span class="synConstant">'MojoX::Renderer'</span>;

<span class="synStatement">use </span>Template;

<span class="synStatement">sub</span><span class="synIdentifier"> new </span>{
    <span class="synStatement">my</span> <span class="synIdentifier">$self</span> = <span class="synStatement">shift</span>-&gt;SUPER::<span class="synStatement">new</span>(<span class="synIdentifier">@_</span>);
    <span class="synIdentifier">$self</span>-&gt;default_ext(<span class="synConstant">'tt'</span>);
    <span class="synIdentifier">$self</span>-&gt;add_handler(<span class="synConstant">tt </span>=&gt;<span class="synIdentifier"> </span><span class="synStatement">sub</span><span class="synIdentifier"> </span>{
        <span class="synStatement">my</span> (<span class="synIdentifier">$self</span>, <span class="synIdentifier">$c</span>, <span class="synIdentifier">$path</span>) = <span class="synIdentifier">@_</span>;
        <span class="synStatement">my</span> <span class="synIdentifier">$tt</span> = Template-&gt;<span class="synStatement">new</span>({<span class="synConstant">ABSOLUTE </span>=&gt; <span class="synConstant">1</span>}) <span class="synStatement">or</span> <span class="synStatement">die</span> <span class="synIdentifier">$Template::ERROR</span>;
        <span class="synStatement">my</span> <span class="synIdentifier">$output</span>;
        <span class="synIdentifier">$path</span> = <span class="synIdentifier">$path</span>;
        <span class="synIdentifier">$tt</span>-&gt;process(<span class="synIdentifier">$path</span>, <span class="synIdentifier">$c</span>, <span class="synIdentifier">\$output</span>) <span class="synStatement">or</span> <span class="synStatement">die</span> <span class="synIdentifier">$tt</span>-&gt;error;
        <span class="synStatement">return</span> <span class="synIdentifier">$output</span>;
    });
    <span class="synStatement">return</span> <span class="synIdentifier">$self</span>;
}

<span class="synConstant">1</span>;
</pre>

<pre>
<span class="synStatement">package</span><span class="synType"> Vagina::Types;</span>

<span class="synStatement">use strict</span>;
<span class="synStatement">use warnings</span>;

<span class="synStatement">use base</span> <span class="synConstant">'MojoX::Types'</span>;

<span class="synStatement">sub</span><span class="synIdentifier"> new </span>{
    <span class="synStatement">my</span> <span class="synIdentifier">$self</span> = <span class="synStatement">shift</span>-&gt;SUPER::<span class="synStatement">new</span>(<span class="synIdentifier">@_</span>);
    <span class="synIdentifier">$self</span>-&gt;types({<span class="synConstant">tt </span>=&gt; <span class="synConstant">'text/html'</span>});
    <span class="synIdentifier">$self</span>;
}

<span class="synConstant">1</span>;
</pre>


]]></description>
            <link>http://blog.woremacx.com/2008/11/template-toolkit-as-renderer-of-mojolicious-app.html</link>
            <guid>http://blog.woremacx.com/2008/11/template-toolkit-as-renderer-of-mojolicious-app.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">Mojolicious</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">perl</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Template::Toolkit</category>
            
            <pubDate>Mon, 10 Nov 2008 12:30:00 +0900</pubDate>
        </item>
        
        <item>
            <title>perl 5.8 から 5.10 に移行したらいろいろｇｄｇｄになった</title>
            <description><![CDATA[<p>perl 5.8 から 5.10 に移行したらいろいろｇｄｇｄになったらしく、MTOS が perl の panic を引き起こすようになりました。とりあえず MTOS 専用に perl 5.8 を入れたヴァーチャルマシーンを作ってしのぐことにしました。</p>

<h3> VMware Server 2 101586 を 122956 に更新</h3>
<p>perl をアップグレードした影響は VMware にまで及んでおり、ヴァーチャルマシーンが起動してくれません！</p>
<p>なので、VMware Server もアップグレードしました。</p>

<h3> ubuntu 8 server を入れる</h3>
<p>VMware Server の Web UI から、事前割当・2G 分割を指示しても sparse file を作りやがります。ここら辺は前からおかしいですね。</p>
<p>vmware-vdiskmanager が使うライブラリが変な場所を参照してたので、変な symlink を貼ってその場しのぎしました。</p>
<ul>
<li> ln -s /usr/local/lib/vmware /usr/local/bin/libdir</li>
</ul>

<p>sparse file でなく、実容量を確保するようにしてディスクイメージを作り直します。</p>
<ul>
<li> vmware-vdiskmanager -c -s 8GB -a lsilogic -t 3 mtdisk.vmdk</li>
</ul>

<p>あとは適当にインスコります。</p>
<p>インスコ後にやったことは、</p>
<ul>
<li> apt-get install emacs22-nox lv build-essential subversion ncurses-term nfs-common</li>
<li> /etc/default/rcS を UTC=no</li>
<li> /etc/network/interfaces, /etc/networks</li>
<li> apt-get install apache2 apache2-mpm-prefork libapache2-mod-fcgid</li>
</ul>

<p>という感じで作業しました。</p>

<h3> MTOS を設定し直す</h3>
<p>方針としては、</p>
<ul>
<li> 動かないと困る cgi に関してのみバック(ヴァーチャルマシーン)へ移行</li>
<li> フロントとバックの両方から同じディレクトリに見えるように nfs mount</li>
</ul>
<p>と、いじる範囲を最小限にするようにしました。</p>
<p>blog.woremacx.com/MT/mt*.cgi へのアクセスをリバースプロクシでヴァーチャルマシーンに飛ばすようにしました。が、mt.cgi にアクセスしても cgi が動いてくれないので mt-check.cgi で確認することにしました。なんと、mt-check.cgi までうまく動いてくれません。</p>
<pre>
Got an error: Can't locate object method &quot;configure&quot; via package &quot;MT::ObjectDriverFactory&quot; at lib/MT.pm line 1013.
</pre>
<p>MT::ObjectDriverFactory 周りが足りなくて中途半端な表示になっていました。DBI 関連だろうということで、</p>
<ul>
<li> apt-get install libdbd-mysql-perl</li>
</ul>

<p>するとうまく進めました。それから、mt-config.cgi に足りないと言われたものをインスコしました。(Crypt::DSA に関しては、テストが止まってしまうので除外)</p>
<ul>
<li> apt-get install libarchive-zip-perl libgd-gd2-perl libarchive-tar-perl libdigest-sha1-perl perlmagick libmail-sendmail-perl</li>
</ul>

<p>fastcgi でぶら下げておきたいので、libcgi-fast-perl をいれます。(このモジュールを入れ忘れていて、うまく動かせませんでしたｗ)</p>
<ul>
<li> apt-get install libcgi-fast-perl</li>
</ul>

<p>あとは、CGIPath, AdminCGIPath, StaticWebPath, DBHost 等を適切な値にしていちおう動くようになりました。</p>

<h3> TextHatena プラグインのためのモジュール</h3>
<ul>
<li> apt-get install libdatetime-perl libdatetime-format-w3cdtf-perl libcache-memcached-perl libparse-recdescent-perl libcgi-simple-perl libgearman-client-perl</li>
<li> deb 作ってインストール: libregexp-assemble-perl libcache-memcached-perl libcache-memcached-getparserxs-perl</li>
</ul>

<h3> シリアライザ関連でハマった</h3>
<p>ぼくのところでは、LIMILIC 由来の Text::Hatena ではてな記法を処理しています。super pre のVimColor は gearman 経由で呼ばれるようになっています。</p>
<p>worker はホスト側で amd64、MTOS はヴァーチャルマシーン側で 386 で動いており、アーキテクチャが異なります。</p>
<blockquote>
<p>Job 'vimcolor_html' died: Byte order is not compatible at ../../lib/Storable.pm (autosplit into ../../lib/auto/Storable/thaw.al) line 415, at worker.pl line 14</p>
</blockquote>
<p>実際、こういうエラーが出て、うまく動きませんでした。</p>
<p>IRC で助けを求めたところ、hideden さんと dann さんに、nstore や nfreeze を使えばよいということを教えていただきました。freeze している部分を nfreeze に書き換え、速効で解決できました。hideden さん、dann さん、ありがとうございます！！</p>
<p>ということで、perl 移行に伴うｇｄｇｄをとりあえず片付けることが出来ました。</p>
<p>perl-mongers.org の MTOS も同様に panic するのを目にしたので、数日中に移行しようと思います。</p>

]]></description>
            <link>http://blog.woremacx.com/2008/11/on-the-way-to-replace-perl.html</link>
            <guid>http://blog.woremacx.com/2008/11/on-the-way-to-replace-perl.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">MTOS</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">perl</category>
            
            <pubDate>Sat, 01 Nov 2008 02:32:39 +0900</pubDate>
        </item>
        
        <item>
            <title>このブログの MTOS を元通りにした</title>
            <description><![CDATA[<p><a href="http://d.hatena.ne.jp/woremacx/20081030/1225351190">今日の 503</a> で先日お知らせしたとおり、MTOS を少しカスタマイズしてあることを忘れて素の MTOS の最新版にしてしまい、そのままリビルドをかけてしまいました。</p>
<p>ソースは subversion に突っ込んであるので、一度逆方向に merge して、何事もなかったかのようにアップグレードしたもので更新しました。</p>
<p>これに伴い、本来存在してないはずのファイルに関しては、Moved と書き込むことにしました。</p>
<p>vkgtaro さんが先日 DBIx::Class で basename を触ってらした(<a href="http://d.hatena.ne.jp/vkgtaro/20081015/1224084605">MT の permalink に entry_id 使ってたので entry_basename 使うよう変更した - 僕ト云フ事＠はてな出張版</a>)のをちょっとパクらせていただき、対応スクリプトをでっち上げました。ありがとうございます。</p>
<p>スクリプトは、以下の通りです。</p>
<p>読者のみなさまにおかれましては、503 の blog.woremacx.com をお楽しみ頂きありがとうございました。</p>
<pre>
<span class="synPreProc">#!/usr/bin/perl</span>

<span class="synStatement">use strict</span>;
<span class="synStatement">use warnings</span>;

<span class="synStatement">use lib</span> <span class="synConstant">qw(MT/lib)</span>;
<span class="synStatement">use </span>MT::ConfigMgr;

<span class="synStatement">my</span> <span class="synIdentifier">$file</span> = <span class="synConstant">&quot;MT/mt-config.cgi&quot;</span>;

<span class="synStatement">my</span> <span class="synIdentifier">$mgr</span> = MT::ConfigMgr-&gt;instance;
<span class="synIdentifier">$mgr</span>-&gt;read_config_file(<span class="synIdentifier">$file</span>);

<span class="synStatement">my</span> <span class="synIdentifier">@cfg</span>;
<span class="synStatement">push</span>(<span class="synIdentifier">@cfg</span>, <span class="synConstant">'dbi:mysql:'</span> . <span class="synIdentifier">$mgr</span>-&gt;get(<span class="synConstant">'database'</span>));
<span class="synStatement">push</span>(<span class="synIdentifier">@cfg</span>, <span class="synIdentifier">$mgr</span>-&gt;get(<span class="synConstant">'dbuser'</span>));
<span class="synStatement">push</span>(<span class="synIdentifier">@cfg</span>, <span class="synIdentifier">$mgr</span>-&gt;get(<span class="synConstant">'dbpassword'</span>));

<span class="synStatement">my</span> <span class="synIdentifier">$schema</span> = MT::Schema-&gt;<span class="synStatement">connect</span>(<span class="synIdentifier">@cfg</span>);
<span class="synStatement">my</span> <span class="synIdentifier">$entries</span> = <span class="synIdentifier">$schema</span>-&gt;resultset(<span class="synConstant">'MtEntry'</span>)-&gt;search({
    <span class="synConstant">entry_basename </span>=&gt; { <span class="synConstant">LIKE </span>=&gt; <span class="synConstant">'%\_%'</span> },
});
<span class="synStatement">while</span> (<span class="synStatement">my</span> <span class="synIdentifier">$entry</span> = <span class="synIdentifier">$entries</span>-&gt;<span class="synStatement">next</span>) {
    <span class="synStatement">my</span> (<span class="synIdentifier">$month</span>, <span class="synIdentifier">$day</span>) = (<span class="synIdentifier">$entry</span>-&gt;entry_authored_on =~<span class="synStatement"> /</span><span class="synConstant">^</span><span class="synSpecial">(\d+)</span><span class="synConstant">-</span><span class="synSpecial">(\d+)</span><span class="synConstant">-</span><span class="synStatement">/</span>);
    <span class="synStatement">my</span> <span class="synIdentifier">$base</span> = <span class="synIdentifier">$entry</span>-&gt;entry_basename;
    <span class="synStatement">my</span> <span class="synIdentifier">$origname</span> = <span class="synIdentifier">$base</span> . <span class="synConstant">&quot;.html&quot;</span>;
    <span class="synStatement">my</span> <span class="synIdentifier">$filename</span> = <span class="synStatement">sprintf</span>(<span class="synConstant">&quot;%04d/%02d/%s.html&quot;</span>, <span class="synIdentifier">$month</span>, <span class="synIdentifier">$day</span>, <span class="synIdentifier">$base</span>);

    <span class="synIdentifier">$base</span> =~ <span class="synStatement">s/</span><span class="synConstant">_</span><span class="synStatement">/</span><span class="synConstant">-</span><span class="synStatement">/g</span>;
    <span class="synStatement">my</span> <span class="synIdentifier">$wrong</span> = <span class="synStatement">sprintf</span>(<span class="synConstant">&quot;%04d/%02d/%s.html&quot;</span>, <span class="synIdentifier">$month</span>, <span class="synIdentifier">$day</span>, <span class="synIdentifier">$base</span>);

    <span class="synStatement">if</span> (<span class="synStatement">-e</span> <span class="synIdentifier">$wrong</span> &amp;&amp; <span class="synStatement">-e</span> <span class="synIdentifier">$filename</span>) {
        <span class="synStatement">open</span>(<span class="synStatement">my</span> <span class="synIdentifier">$r</span>, <span class="synIdentifier">$filename</span>) <span class="synStatement">or</span> <span class="synStatement">die</span>;
        <span class="synStatement">my</span> <span class="synIdentifier">$data</span> = <span class="synStatement">do</span> { <span class="synStatement">local</span> <span class="synIdentifier">$/</span>; &lt;<span class="synIdentifier">$r</span>&gt;; };
        <span class="synStatement">close</span>(<span class="synIdentifier">$r</span>);

        <span class="synStatement">my</span> (<span class="synIdentifier">$title</span>) = <span class="synIdentifier">$data</span> =~ <span class="synStatement">m!</span><span class="synConstant">&lt;title&gt;</span><span class="synSpecial">(.*?)</span><span class="synConstant">&lt;/title&gt;</span><span class="synStatement">!s</span>;

        <span class="synStatement">warn</span> <span class="synConstant">&quot;</span><span class="synIdentifier">$title</span><span class="synConstant"> </span><span class="synIdentifier">$filename</span><span class="synConstant">&quot;</span>;
        <span class="synStatement">open</span>(<span class="synStatement">my</span> <span class="synIdentifier">$fh</span>, <span class="synConstant">&quot;&gt; </span><span class="synIdentifier">$wrong</span><span class="synConstant">&quot;</span>) <span class="synStatement">or</span> <span class="synStatement">die</span>;
        <span class="synStatement">printf</span> <span class="synIdentifier">$fh</span> <span class="synConstant">qq{&lt;html&gt;&lt;body&gt;Requested entry &lt;a href=&quot;%s&quot;&gt;%s&lt;/a&gt; has moved.&lt;/body&gt;&lt;/html&gt;</span><span class="synSpecial">\n</span><span class="synConstant">}</span>, <span class="synIdentifier">$origname</span>, <span class="synIdentifier">$title</span>;
        <span class="synStatement">close</span>(<span class="synIdentifier">$fh</span>);
    }
}

<span class="synStatement">package</span><span class="synType"> MT::Schema;</span>

<span class="synStatement">use strict</span>;
<span class="synStatement">use warnings</span>;

<span class="synStatement">use base</span> <span class="synConstant">'DBIx::Class::Schema::Loader'</span>;

__PACKAGE__-&gt;loader_options(
    <span class="synConstant">relationships </span>=&gt; <span class="synConstant">0</span>,
    <span class="synConstant">debug         </span>=&gt; <span class="synConstant">0</span>,
    <span class="synConstant">components    </span>=&gt; [],
);

<span class="synConstant">1</span>;
</pre>

]]></description>
            <link>http://blog.woremacx.com/2008/10/recovered-my-mtos.html</link>
            <guid>http://blog.woremacx.com/2008/10/recovered-my-mtos.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">MTOS</category>
            
            <pubDate>Fri, 31 Oct 2008 12:32:41 +0900</pubDate>
        </item>
        
        <item>
            <title>U字工事 北関東ナンバーワン! を見た</title>
            <description><![CDATA[<p>茨城に異常なまでの敵対意識を燃やす栃木県民、<a href="http://blog.livedoor.jp/ujikoji/">U字工事</a>の DVD がキタコレ！
<p>今回の DVD<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001EO99LW/blogworemacx-22/ref=nosim/" name="amazletlink" target="_blank">「北関東ナンバーワン!」</a> は、2008年5月に行われた初単独ライブだそうです。
<p>近頃は、毎週水曜日のレッドカーペットを見るのが楽しみです。レッドカーペットのために、なんとか生きてる感じがするくらいレッドカーペットが好きですねｗ
<p>そのレッドカーペットにでてくるお笑いの中で、個人的に好きなのは、U字工事とナイツ。傾向としては、テンポが速くてひたすらボケながら進んでいく漫才かな。
<p>ということで、U字工事の「北関東ナンバーワン!」さっそく見ました！
<p>栃木県民ネタが凝縮されている DVD で、まじでおもしろかったｗｗｗ
<p>栃木好きな人は買って何度も見るべきｗ

<h4>本編</h4>
<ul>
<li>漫才(栃木):(栃木県民を代表して、影の薄い栃木を猛アピール)
<li>漫才(県知事):(U字工事が県知事!?)
<li>東京弁漫才:(ぎこちない発音で爆笑悶絶)
<li>スポンサー漫才:(栃木県の企業や商品を宣伝!)
<li>ビデオレター:(ローカル色満載のコントに挑戦!!)
<li>のど自慢:(あの有名な番組を再現!?)
</ul>

<h4>特典</h4>
<ul>
<li>ササモリさん:(U字工事の手書きアニメ)
<li>男星:(U字工事のビデオクリップ)
<li>茨城をぶっつぶせ!!:(茨城ロケ企画)
<li>メイキング:(舞台裏・栃木県庁) 
</ul>

<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001EO99LW/blogworemacx-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51R7xyfGvQL._SL160_.jpg" alt="U字工事/北関東ナンバーワン!" style="border: none;" /></a></div><div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001EO99LW/blogworemacx-22/ref=nosim/" name="amazletlink" target="_blank">U字工事/北関東ナンバーワン!</a><div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/B001EO99LW/blogworemacx-22/ref=nosim/" title="U字工事/北関東ナンバーワン!" target="_blank">amazlet</a> at 08.10.23</div></div><div class="amazlet-detail">CCRE (2008-10-22)<br />売り上げランキング: 520<br /></div><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B001EO99LW/blogworemacx-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div><div class="amazlet-footer" style="clear: left"></div></div>
]]></description>
            <link>http://blog.woremacx.com/2008/10/ujikoji.html</link>
            <guid>http://blog.woremacx.com/2008/10/ujikoji.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">DVD</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">お笑い</category>
            
            <pubDate>Thu, 23 Oct 2008 05:31:11 +0900</pubDate>
        </item>
        
    </channel>
</rss>

