<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Supernova &#187; perl</title>
	<atom:link href="http://blog.dealforest.net/category/perl/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.dealforest.net</link>
	<description>be careful, be bravely</description>
	<lastBuildDate>Mon, 17 May 2010 04:44:48 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>XML::Simple で RSS の entry を順番通りに取り出す方法</title>
		<link>http://blog.dealforest.net/2009/09/xml-parse-in-order/</link>
		<comments>http://blog.dealforest.net/2009/09/xml-parse-in-order/#comments</comments>
		<pubDate>Sun, 06 Sep 2009 09:38:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[perl]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://blog.dealforest.net/?p=595</guid>
		<description><![CDATA[たとえばこんな感じのフィードがあったとします。

&#60;?xml version=&#34;1.0&#34; encoding=&#34;utf-8&#34;?&#62;
&#60;feed&#62;
    &#60;entry&#62;
        &#60;key&#62;blog1&#60;/key&#62;
        &#60;title&#62;blog1-title&#60;/title&#62;
        &#60;content&#62;blog1-content&#60;/content&#62;
    &#60;/entry&#62;
    &#60;entry&#62;
        &#60;key&#62;blog2&#60;/key&#62;
        &#60;title&#62;blog2-title&#60;/title&#62;
 [...]]]></description>
			<content:encoded><![CDATA[<p>たとえばこんな感じのフィードがあったとします。</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;utf-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;feed<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;entry<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>blog1<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;title<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>blog1-title<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/title<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;content<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>blog1-content<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/content<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/entry<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;entry<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>blog2<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;title<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>blog2-title<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/title<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;content<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>blog2-content<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/content<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/entry<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;entry<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>blog3<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;title<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>blog3-title<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/title<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;content<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>blog3-content<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/content<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/entry<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;entry<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>blog4<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;title<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>blog4-title<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/title<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;content<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>blog4-content<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/content<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/entry<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;entry<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>blog5<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;title<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>blog5-title<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/title<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;content<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>blog5-content<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/content<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/entry<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/feed<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>
単純に parse するとハッシュに格納されるので<br />
entry の並び順はめちゃくちゃになります。
</p>
<p>dump結果</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">$VAR1 = {
          'entry' =&gt; {
                     'blog2' =&gt; {
                                'content' =&gt; 'blog2-content',
                                'title' =&gt; 'blog2-title'
                              },
                     'blog5' =&gt; {
                                'content' =&gt; 'blog5-content',
                                'title' =&gt; 'blog5-title'
                              },
                     'blog4' =&gt; {
                                'content' =&gt; 'blog4-content',
                                'title' =&gt; 'blog4-title'
                              },
                     'blog1' =&gt; {
                                'content' =&gt; 'blog1-content',
                                'title' =&gt; 'blog1-title'
                              },
                     'blog3' =&gt; {
                                'content' =&gt; 'blog3-content',
                                'title' =&gt; 'blog3-title'
                              }
                   }
        };</pre></div></div>

<p>
ランキングの RSS とかだと entry の順番が変わるだけで致命的です。<br />
今回がまさにその状態。<br />
blog1〜5の順番で entry に入っていてほしかったのです。
</p>
<p>
できないかと思って調べてたらいけました。<br />
<a href="http://www.cpanforum.com/threads/6670">how to preserve XML::Simple element order</a><br />
どうやら Tie::IxHash を使えばいけそうとのこと。<br />
Tie::IxHash については <a href="http://katsubemakito.net/cgiperl/variable/hash/post-46.html">ハッシュのキーを挿入(追加)した順番通りに取り出す</a> がとても<br />
まとまっておりわかりやすいです。
</p>

<div class="wp_syntax"><div class="code"><pre class="perl" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/usr/bin/perl</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">use</span> strict<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> warnings<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">use</span> Tie<span style="color: #339933;">::</span><span style="color: #006600;">IxHash</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> XML<span style="color: #339933;">::</span><span style="color: #006600;">Simple</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> Data<span style="color: #339933;">::</span><span style="color: #006600;">Dumper</span><span style="color: #339933;">;</span> 
&nbsp;
<span style="color: #0000ff;">*XML</span><span style="color: #339933;">::</span><span style="color: #006600;">Simple</span><span style="color: #339933;">::</span><span style="color: #006600;">new_hashref</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">'new_hashref'</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">sub</span> new_hashref <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$self</span> <span style="color: #339933;">=</span> <span style="color: #000066;">shift</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">tie</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">%hash</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">'Tie::IxHash'</span><span style="color: #339933;">;</span>
    <span style="color: #0000ff;">%hash</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">@_</span><span style="color: #339933;">;</span> 
    <span style="color: #000066;">return</span> <span style="color: #0000ff;">\%hash</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$parser</span> <span style="color: #339933;">=</span> XML<span style="color: #339933;">::</span><span style="color: #006600;">Simple</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">new</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$xml</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$parser</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">XMLin</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'sample.xml'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">warn</span> Dumper <span style="color: #0000ff;">$xml</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">__END__</span>
結果
<span style="color: #0000ff;">$VAR1</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
          <span style="color: #ff0000;">'entry'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900;">&#123;</span>
                     <span style="color: #ff0000;">'blog1'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900;">&#123;</span>
                                <span style="color: #ff0000;">'content'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'blog1-content'</span><span style="color: #339933;">,</span>
                                <span style="color: #ff0000;">'title'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'blog1-title'</span>
                              <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
                     <span style="color: #ff0000;">'blog2'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900;">&#123;</span>
                                <span style="color: #ff0000;">'content'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'blog2-content'</span><span style="color: #339933;">,</span>
                                <span style="color: #ff0000;">'title'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'blog2-title'</span>
                              <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
                     <span style="color: #ff0000;">'blog3'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900;">&#123;</span>
                                <span style="color: #ff0000;">'content'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'blog3-content'</span><span style="color: #339933;">,</span>
                                <span style="color: #ff0000;">'title'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'blog3-title'</span>
                              <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
                     <span style="color: #ff0000;">'blog4'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900;">&#123;</span>
                                <span style="color: #ff0000;">'content'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'blog4-content'</span><span style="color: #339933;">,</span>
                                <span style="color: #ff0000;">'title'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'blog4-title'</span>
                              <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
                     <span style="color: #ff0000;">'blog5'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900;">&#123;</span>
                                <span style="color: #ff0000;">'content'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'blog5-content'</span><span style="color: #339933;">,</span>
                                <span style="color: #ff0000;">'title'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'blog5-title'</span>
                              <span style="color: #009900;">&#125;</span>
                   <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div>

<p>
このように new_hashref を Tie::IxHash で tie してやった<br />
ハッシュリファレンスを返すように override してやれば大丈夫です。<br />
XML::LibXML でも同じようなことはできるらしいです。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dealforest.net/2009/09/xml-parse-in-order/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>モジュールに定義されている関数名一覧を取得</title>
		<link>http://blog.dealforest.net/2009/06/get-functions-list-of-module/</link>
		<comments>http://blog.dealforest.net/2009/06/get-functions-list-of-module/#comments</comments>
		<pubDate>Sun, 07 Jun 2009 14:07:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://blog.dealforest.net/?p=501</guid>
		<description><![CDATA[
よく忘れるのでメモ。
シンボルテーブルの一覧を取得するには以下の方法で取得できます。
ポイントはモジュール名の後に :: をつけること。
これよく忘れます。


%モジュール::;


で、これだと変数なのか関数なのかが判断できません。
そこで便利なのが Devel::Symdump です。


 @array = Devel::Symdump-&#62;functions(@packs);


これだけで関数一覧が取得できます。
関数だけでなく hash や scalar が取得できたり
diff とれたり HTML で出力できたり地味に便利です。
]]></description>
			<content:encoded><![CDATA[<p>
よく忘れるのでメモ。<br />
シンボルテーブルの一覧を取得するには以下の方法で取得できます。<br />
ポイントはモジュール名の後に <strong>::</strong> をつけること。<br />
これよく忘れます。
</p>
<pre class="brush: perl;">
%モジュール::;
</pre>
<p>
で、これだと変数なのか関数なのかが判断できません。<br />
そこで便利なのが <a href="http://search.cpan.org/~andk/Devel-Symdump-2.08/lib/Devel/Symdump.pm">Devel::Symdump</a> です。
</p>
<pre class="brush: perl;">
 @array = Devel::Symdump-&gt;functions(@packs);
</pre>
<p>
これだけで関数一覧が取得できます。<br />
関数だけでなく hash や scalar が取得できたり<br />
diff とれたり HTML で出力できたり地味に便利です。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dealforest.net/2009/06/get-functions-list-of-module/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ports で入れた perl で Mac::Growl が使えるようになるまで</title>
		<link>http://blog.dealforest.net/2009/05/be-able-to-use-macgrowl-installed-by-the-ports-of-perl/</link>
		<comments>http://blog.dealforest.net/2009/05/be-able-to-use-macgrowl-installed-by-the-ports-of-perl/#comments</comments>
		<pubDate>Mon, 25 May 2009 14:21:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[perl]]></category>
		<category><![CDATA[growl]]></category>

		<guid isPermaLink="false">http://blog.dealforest.net/?p=457</guid>
		<description><![CDATA[Test::Continuous に興味がわいたので
さわってみようとしたらMac::Growl が必要とのこと。
いれようとしたら Foundation.pm 等がないためちゃんと test に通らなかった。
どうやら ports でいれたのには Foundation の ラッパーモジュール がないらしい。
variants で調べて +darwin を足していれなおしたけどなかった。
というわけでいいのかわからないけど、デフォルトに入ってるのにシンボリックリンクを貼って
その場をしのいだ。
以下、説明。
mac 独自に bundle されたモジュール類(Foundation.pmとか)は
/System/Library/Perl/Extras/5.8.8/darwin-thread-multi-2level 以下にあります。
Foundation.pm が PerlObjCBridge.pm と CoreFoundation.pm にも依存していたので忘れなく貼ること。
自分の環境だと以下のパスに貼った。

sudo ln -s /System/Library/Perl/Extras/5.8.8/darwin-thread-multi-2level/Foundation.pm /opt/local/lib/perl5/5.10.0/darwin-2level/Foundation.pm
sudo ln -s /System/Library/Perl/Extras/5.8.8/darwin-thread-multi-2level/CoreFoundation.pm /opt/local/lib/perl5/5.10.0/darwin-2level/CoreFoundation.pm
sudo ln -s /System/Library/Perl/Extras/5.8.8/darwin-thread-multi-2level/PerlObjCBridge.pm  /opt/local/lib/perl5/5.10.0/darwin-2level/PerlObjCBridge.pm

perl のバージョンが 5.10 だけど 5.8.8 からのシンボリックリンクでも現状、一応動いてる。
ただ、Mac::Growl が utf8 で文字を渡しても文字化けする始末。
というわけで Net::Growl や GNTP::Growl も試してみたが
残園なことにNet::Growl は何もおこらない。
GNTP::Grwol は IO::Socket::INET でコネクションできない感じ。

IO::Socket::INET: connect: [...]]]></description>
			<content:encoded><![CDATA[<p>Test::Continuous に興味がわいたので<br />
さわってみようとしたらMac::Growl が必要とのこと。<br />
いれようとしたら Foundation.pm 等がないためちゃんと test に通らなかった。</p>
<p>どうやら ports でいれたのには Foundation の ラッパーモジュール がないらしい。<br />
variants で調べて +darwin を足していれなおしたけどなかった。<br />
というわけでいいのかわからないけど、デフォルトに入ってるのにシンボリックリンクを貼って<br />
その場をしのいだ。</p>
<p>以下、説明。<br />
mac 独自に bundle されたモジュール類(Foundation.pmとか)は<br />
<strong>/System/Library/Perl/Extras/5.8.8/darwin-thread-multi-2level</strong> 以下にあります。<br />
Foundation.pm が PerlObjCBridge.pm と CoreFoundation.pm にも依存していたので忘れなく貼ること。</p>
<p>自分の環境だと以下のパスに貼った。</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">sudo ln -s /System/Library/Perl/Extras/5.8.8/darwin-thread-multi-2level/Foundation.pm /opt/local/lib/perl5/5.10.0/darwin-2level/Foundation.pm
sudo ln -s /System/Library/Perl/Extras/5.8.8/darwin-thread-multi-2level/CoreFoundation.pm /opt/local/lib/perl5/5.10.0/darwin-2level/CoreFoundation.pm
sudo ln -s /System/Library/Perl/Extras/5.8.8/darwin-thread-multi-2level/PerlObjCBridge.pm  /opt/local/lib/perl5/5.10.0/darwin-2level/PerlObjCBridge.pm</pre></div></div>

<p>perl のバージョンが 5.10 だけど 5.8.8 からのシンボリックリンクでも現状、一応動いてる。</p>
<p>ただ、Mac::Growl が utf8 で文字を渡しても文字化けする始末。<br />
というわけで Net::Growl や GNTP::Growl も試してみたが<br />
残園なことにNet::Growl は何もおこらない。<br />
GNTP::Grwol は IO::Socket::INET でコネクションできない感じ。</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">IO::Socket::INET: connect: Connection refused at /opt/local/lib/perl5/site_perl/5.10.0/GNTP/Growl.pm line 44,  line 1.</pre></div></div>

<p>うむぅ〜困った。</p>
<h3>追記 2009/08/29 20:17:22</h3>
<p>snow leopard にしたら Mac::Growl が使えなくなった。<br />
どうやら Carbon 系が 32bit でしか使えないみたい。<br />
64bit で起動させると使えない。<br />
<a href="http://www.nntp.perl.org/group/perl.macosx/2009/08/msg10817.html">ソース</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dealforest.net/2009/05/be-able-to-use-macgrowl-installed-by-the-ports-of-perl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mac(Leopard) に DBD::SQLite をいれる時には注意</title>
		<link>http://blog.dealforest.net/2009/03/macleopard-%e3%81%ab-dbdsqlite-%e3%82%92%e3%81%84%e3%82%8c%e3%82%8b%e6%99%82%e3%81%ab%e3%81%af%e6%b3%a8%e6%84%8f/</link>
		<comments>http://blog.dealforest.net/2009/03/macleopard-%e3%81%ab-dbdsqlite-%e3%82%92%e3%81%84%e3%82%8c%e3%82%8b%e6%99%82%e3%81%ab%e3%81%af%e6%b3%a8%e6%84%8f/#comments</comments>
		<pubDate>Sun, 22 Mar 2009 05:53:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[perl]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://blog.dealforest.net/?p=319</guid>
		<description><![CDATA[DBIx::Class をいれようとした時に少しハマったのでメモ。
どうやら CPAN コマンドを使ってインストールしようとすると
Mac にバンドルされている sqlite を使ってないらしい。。。
そのためインストールに失敗する。
これを回避しようと思うと Makefile.PL に USE_LOCAL_SQLITE=true に指定すればよいらしい。

1
2
3
$sudo cpan
cpan[1]&#62; o conf makepl_arg USE_LOCAL_SQLITE=true
cpan[2]&#62; install DBD::SQLite

o conf commit をしない限りここで変更しても cpan を再起動すると元の設定を使うことになる。
参考資料
DBD-SQLite-1.14
cpan コマンドでモジュールをインストールするときに Makefile.PL の引数を設定するCommentsAdd Star
]]></description>
			<content:encoded><![CDATA[<p>DBIx::Class をいれようとした時に少しハマったのでメモ。<br />
どうやら CPAN コマンドを使ってインストールしようとすると<br />
Mac にバンドルされている sqlite を使ってないらしい。。。<br />
そのためインストールに失敗する。<br />
これを回避しようと思うと Makefile.PL に USE_LOCAL_SQLITE=true に指定すればよいらしい。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="shell" style="font-family:monospace;">$sudo cpan
cpan[1]&gt; o conf makepl_arg USE_LOCAL_SQLITE=true
cpan[2]&gt; install DBD::SQLite</pre></td></tr></table></div>

<p><strong>o conf commit</strong> をしない限りここで変更しても cpan を再起動すると元の設定を使うことになる。</p>
<h3>参考資料</h3>
<p><strong><a href="http://storybook.jp/mt/2008/04/dbdsqlite114.html">DBD-SQLite-1.14</a></strong><br />
<strong><a href="http://d.hatena.ne.jp/amachang/20080502/1209707274">cpan コマンドでモジュールをインストールするときに Makefile.PL の引数を設定するCommentsAdd Star</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dealforest.net/2009/03/macleopard-%e3%81%ab-dbdsqlite-%e3%82%92%e3%81%84%e3%82%8c%e3%82%8b%e6%99%82%e3%81%ab%e3%81%af%e6%b3%a8%e6%84%8f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>actionscirpt3 で変数に格納された値を使って動的にインスタンスを生成</title>
		<link>http://blog.dealforest.net/2008/09/actionscirpt3-%e3%81%a7%e5%a4%89%e6%95%b0%e3%81%ab%e6%a0%bc%e7%b4%8d%e3%81%95%e3%82%8c%e3%81%9f%e5%80%a4%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e5%8b%95%e7%9a%84%e3%81%ab%e3%82%a4%e3%83%b3%e3%82%b9/</link>
		<comments>http://blog.dealforest.net/2008/09/actionscirpt3-%e3%81%a7%e5%a4%89%e6%95%b0%e3%81%ab%e6%a0%bc%e7%b4%8d%e3%81%95%e3%82%8c%e3%81%9f%e5%80%a4%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e5%8b%95%e7%9a%84%e3%81%ab%e3%82%a4%e3%83%b3%e3%82%b9/#comments</comments>
		<pubDate>Mon, 29 Sep 2008 12:27:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[perl]]></category>
		<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://blog.dealforest.net/?p=56</guid>
		<description><![CDATA[以前からできないのかなと思っていて、
ちょっと調べたらできそうだったので調べてみた。
試した環境は Flex3 SDK です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package &#123;
    import flash.display.Sprite;
    import flash.text.TextField;
    import flash.utils.getDefinitionByName;
&#160;
    public class Hoge extends Sprite &#123;
        public function Hoge&#40;&#41; &#123;
　　　　　　　var cls:Class = getDefinitionByName&#40;&#34;flash.text.TextField&#34;&#41; as Class;
           [...]]]></description>
			<content:encoded><![CDATA[<p>以前からできないのかなと思っていて、<br />
ちょっと調べたらできそうだったので調べてみた。</p>
<p>試した環境は Flex3 SDK です。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre></td><td class="code"><pre class="actionscript" style="font-family:monospace;">package <span style="color: #66cc66;">&#123;</span>
    <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">Sprite</span>;
    <span style="color: #0066CC;">import</span> flash.<span style="color: #0066CC;">text</span>.<span style="color: #0066CC;">TextField</span>;
    <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">utils</span>.<span style="color: #006600;">getDefinitionByName</span>;
&nbsp;
    <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Hoge <span style="color: #0066CC;">extends</span> Sprite <span style="color: #66cc66;">&#123;</span>
        <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> Hoge<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
　　　　　　　<span style="color: #000000; font-weight: bold;">var</span> cls:<span style="color: #000000; font-weight: bold;">Class</span> = getDefinitionByName<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;flash.text.TextField&quot;</span><span style="color: #66cc66;">&#41;</span> as <span style="color: #000000; font-weight: bold;">Class</span>;
            <span style="color: #000000; font-weight: bold;">var</span> t:<span style="color: #0066CC;">TextField</span> = <span style="color: #000000; font-weight: bold;">new</span> cls<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
            t.<span style="color: #0066CC;">text</span> = <span style="color: #ff0000;">&quot;hoge&quot;</span>;
            t.<span style="color: #006600;">y</span> = <span style="color: #cc66cc;">100</span>;
            addChild<span style="color: #66cc66;">&#40;</span>t<span style="color: #66cc66;">&#41;</span>;
&nbsp;
            <span style="color: #000000; font-weight: bold;">var</span> t2:<span style="color: #0066CC;">TextField</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">TextField</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
            t2.<span style="color: #0066CC;">text</span> = <span style="color: #ff0000;">&quot;fuga&quot;</span>;
            addChild<span style="color: #66cc66;">&#40;</span>t2<span style="color: #66cc66;">&#41;</span>;
        <span style="color: #66cc66;">&#125;</span>
    <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

<p>特に重要なのが8-9行目ですね。<br />
これで動的にインスタンスを生成することができるみたいです。</p>
<p>getDefinitionByName便利ですね。<br />
でもよく考えればできそうな気もせんでもないような。。。。<br />
ま、できてなによりです。</p>
<p><strong>参考資料</strong><br />
<a href="http://blog.isocchi.com/2007/12/flex-actionscript.html">http://blog.isocchi.com/2007/12/flex-actionscript.html</a><br />
<a href="http://www.fxug.net/modules/xhnewbb/viewtopic.php?topic_id=1241">http://www.fxug.net/modules/xhnewbb/viewtopic.php?topic_id=1241</a></p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
追記：  2008/9/30 22:52</p>
<p>パフォーマンスがちょっと気になったのでベンチをとってみた。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
</pre></td><td class="code"><pre class="actionscript" style="font-family:monospace;">package <span style="color: #66cc66;">&#123;</span>
&nbsp;
    <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">Sprite</span>;
    <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">utils</span>.<span style="color: #0066CC;">getTimer</span>;
    <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">utils</span>.<span style="color: #006600;">getDefinitionByName</span>;
    <span style="color: #0066CC;">import</span> org.<span style="color: #006600;">libspark</span>.<span style="color: #006600;">utils</span>.<span style="color: #006600;">Dumper</span>;
&nbsp;
    <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Generate <span style="color: #0066CC;">extends</span> Sprite<span style="color: #66cc66;">&#123;</span>
&nbsp;
        <span style="color: #0066CC;">private</span> <span style="color: #0066CC;">static</span> const <span style="color: #0066CC;">ROUND</span>:uint = <span style="color: #cc66cc;">50000</span>;
&nbsp;
        <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> Generate<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
            bench<span style="color: #66cc66;">&#40;</span>generate_new, <span style="color: #ff0000;">&quot;new&quot;</span><span style="color: #66cc66;">&#41;</span>;
            bench<span style="color: #66cc66;">&#40;</span>generate_class, <span style="color: #ff0000;">&quot;[new - class]&quot;</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #66cc66;">&#125;</span>
&nbsp;
&nbsp;
        <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> generate_new<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#123;</span>
            <span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> i:<span style="color: #0066CC;">int</span> = <span style="color: #cc66cc;">0</span>; i <span style="color: #66cc66;">&lt;</span> <span style="color: #0066CC;">ROUND</span>; i++<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span> <span style="color: #000000; font-weight: bold;">new</span> Sprite<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #66cc66;">&#125;</span>
        <span style="color: #66cc66;">&#125;</span>
&nbsp;
        <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> generate_class<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#123;</span>
            <span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> i:<span style="color: #0066CC;">int</span> = <span style="color: #cc66cc;">0</span>; i <span style="color: #66cc66;">&lt;</span> <span style="color: #0066CC;">ROUND</span>; i++<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
                <span style="color: #000000; font-weight: bold;">var</span> cls:<span style="color: #000000; font-weight: bold;">Class</span> = getDefinitionByName<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;flash.display.Sprite&quot;</span><span style="color: #66cc66;">&#41;</span> as <span style="color: #000000; font-weight: bold;">Class</span>;
                <span style="color: #000000; font-weight: bold;">new</span> cls<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
            <span style="color: #66cc66;">&#125;</span>
        <span style="color: #66cc66;">&#125;</span>
&nbsp;
        <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> bench<span style="color: #66cc66;">&#40;</span>func:<span style="color: #000000; font-weight: bold;">Function</span>, tag:<span style="color: #0066CC;">String</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#123;</span>
            <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">start</span>:uint = <span style="color: #0066CC;">getTimer</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
            func<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
            <span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">getTimer</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> - <span style="color: #0066CC;">start</span><span style="color: #66cc66;">&#41;</span> + <span style="color: #ff0000;">&quot;ms :&quot;</span> + tag<span style="color: #66cc66;">&#41;</span>;
        <span style="color: #66cc66;">&#125;</span>
    <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>


<div class="wp_syntax"><div class="code"><pre class="txt" style="font-family:monospace;">[64bitの結果]
330ms :new
659ms :[new - class]
355ms :new
658ms :[new - class]
&nbsp;
[32bitの結果]
1285ms :new
1172ms :[new - class]
1285ms :new
1211ms :[new - class]</pre></div></div>

<p>会社でも試した結果、おそらく32bitだと[new - class]の方がはやかった。<br />
なぜだーーーーーと思って、家の64bit環境で試したら上記のような結果。<br />
まぁ。。。納得？</p>
<p>できねーしｗ</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dealforest.net/2008/09/actionscirpt3-%e3%81%a7%e5%a4%89%e6%95%b0%e3%81%ab%e6%a0%bc%e7%b4%8d%e3%81%95%e3%82%8c%e3%81%9f%e5%80%a4%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e5%8b%95%e7%9a%84%e3%81%ab%e3%82%a4%e3%83%b3%e3%82%b9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
