<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>blog.aklaswad.com</title>
    <link rel="alternate" type="text/html" href="http://blog.aklaswad.com/" />
    <link rel="self" type="application/atom+xml" href="http://blog.aklaswad.com/atom.xml" />
    <id>tag:blog.aklaswad.com,2010-05-02://2</id>
    <updated>2012-03-16T07:54:26Z</updated>
    
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 5.1</generator>

<entry>
    <title>MacBook Air(2011 Mid / Lion)買ったので環境構築メモ</title>
    <link rel="alternate" type="text/html" href="http://blog.aklaswad.com/2011/000510.html" />
    <id>tag:blog.aklaswad.com,2011://2.510</id>

    <published>2011-12-04T13:15:29Z</published>
    <updated>2012-03-16T07:54:26Z</updated>

    <summary> ins { display: block; margin: 0; padding: 1em; background: #eef; border: 1px solid #ccd; color: #000; } h1 ins, h2 ins, h3 ins, h4 ins, h5 ins, h6 ins, p ins, pre ins, address ins, li ins, dt ins,...</summary>
    <author>
        <name>aklaswad</name>
        <uri>http://blog.aklaswad.com/</uri>
    </author>
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.aklaswad.com/">
        <![CDATA[<style>
ins {
  display: block;
  margin: 0;
  padding: 1em;
  background: #eef;
  border: 1px solid #ccd;
  color: #000;
}
h1 ins, h2 ins, h3 ins, h4 ins, h5 ins, h6 ins, p ins, pre ins, address ins, li ins, dt ins, dd ins {
  display: inline;
  margin: 0;
  padding: 2px 5px;
  text-decoration: none;
  background: #eef;
  border: 1px solid #ccd;
  color: #000;
}
</style>

<p>11inch 全部盛り USキーボード。人生初のUS配列。<br />Lionでperl/node.js/coffeeScriptあたりの開発環境を整える際の自分用メモ。(一部追記あります。)</p>]]>
        <![CDATA[<h3>環境設定編</h3>

<h4>OSのセットアップ時</h4>
<p>キーボード配列はUS。OSの言語設定は日本語を選択</p>

<h4>ファンクションキーを有効に</h4>
<p>環境設定 > キーボード > キーボード > F１、F２などの...をチェック</p>

<h4>ことえりを有効に</h4>
<p>環境設定 > 言語とテキスト > 入力ソース でことえりを探してチェックを入れる。 あとでgoogleIME入れる。</p>

<h4>Dock周りを整理</h4>
<ul>
	<li>左に移動して自動で隠れるように。</li>
	<li>とりあえずterminalをdockに</li>
	<li>Finder開いて左メニューのアプリケーション > ユーティリティー > ターミナルをDockにドラッグ</li>
</ul>

<h4>capslockとcontrol入れ替え</h4>
<p>環境設定 > キーボード > キーボード > 修飾キー</p>

<h4>spotlight起動のショートカットを殺す (ctrl+spaceはemacsで使うので)</h4>
<p>環境設定 > キーボード > キーボードショートカット</p>

<h4>Chromeインストール</h4>
<p>同期一発で前と同じ環境になる超便利</p>

<h4>MissionControlはとりあえず放置</h4>
<p>今まで(SnowLeopard)、あまりcommand+tabは使わずspacesでやりくりしていた(command+←/→で移動してた。押しやすくて便利だった)が、いろいろ弄ってみても前と同じ動作にならなそうなので、別の方法を探す。アプリケーションの切り替えをcommand+←/→に当ててみようかしら。 => アプリケーションの切り替えの設定場所が分からないので後回し。しばらくデフォルトの設定で使って慣れることにする。</p>

<div><ins datetime="2011-12-11T12:50:27+09:00">(追記)ReederやTwitterでのマウスジェスチャが動かなくて難儀していたが、以下の設定で動くようになった。
<ul>
	<li>環境設定 > トラックパッド > その他のジェスチャ > ページ間をスワイプ で 『2本指または3本指でスワイプ』を選択</li>
</ul>
参考 <a href="http://dbarg2.blog102.fc2.com/blog-entry-1211.html">Lionで3本指スワイプによるブラウザの戻る＆進むなどを有効にする方法（追記） - MacBookの小部屋</a></ins></div>

<h4>ターミナルの設定</h4>
<p>以前の設定を持ってくる方法はわからなかった。
とりあえず環境設定から</p>
<ul>
	<li>起動 > 起動時に開く > 次の設定の新しいウィンドウ > Proに変更</li>
	<li>設定 > 左ペインでProを選択 > 左ペイン下部のデフォルトボタンでデフォルトに設定</li>
	<li>設定 > Pro > テキスト > テキストをアンチエイリアス処理を有効に。フォントをOsaka 14pxに変更。</li>
	<li>設定 > Pro > シェル > 次の指定プロセス以外が実行中の場合のみ にemacsを追加</li>
	<li>設定 > Pro > キーボード > メタキーとしてoptionキーを使用 をチェック</li>
	<li>設定 > Pro > 詳細 > オーディオベルのチェックを外す</li>
</ul>

<h3>アプリインストール編</h3>
<h4>Growl</h4>
<p>AppStoreで買った。170円くらい。今までお世話になってた人はキチンとお金払おうね！お金は払いたくないけどgrowl嫌いだけど使いたいけどっていう人は自分でビルドして使うことも出来るらしいよ!</p>
<p><a href="http://growl.info/downloads">http://growl.info/downloads</a>からGrowlNotify(コマンドラインツール)もダウンロードしてインストール。後でcoffeescript-growlで使う。</p>

<h4>XCodeのインストール</h4>
<p>AppStoreから。無料。終わらないので一晩放置、と思ったら中途半端な時間に落ちてきてた。</p>

<h3>homebrew編</h3>
<h4>homebrewをインストール</h4>
<pre class="code">sudo mkdir /usr/local
/usr/bin/ruby -e &quot;$(curl -fsSL https://raw.github.com/gist/323731)&quot;
</pre>

<h4>mysql</h4>
<pre class="code">brew install mysql
unset TMPDIR
mysql_install_db --verbose --user='********' --basedir=&quot;$(brew --prefix mysql)&quot; --datadir=/usr/local/var/mysql --tmpdir=/tmp
cp /usr/local/Cellar/mysql/5.5.15/com.mysql.mysqld.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/com.mysql.mysqld.plist
</pre>

<h4>node</h4>
<pre class="code">brew install node</pre>

<h4>emacs</h4>
<p>デフォルトではemacs-22が入っているが、whitespace-modeを使うためemacs-23を入れ直す。</p>
<pre class="code">brew install emacs</pre>

<h3>perlbrew + cpanm 編</h3>

<h4>perlbrew</h4>
<pre class="code">curl -kL http://xrl.us/perlbrewinstall | bash
echo &quot;source ~/perl5/perlbrew/etc/bashrc&quot; &gt; .bashrc
perlbrew install perl-5.14.2
perlbrew switch perl-5.14.2
perlbrew install-cpanm</pre>

<ins datetime="2011-12-08T00:22:43+09:00">(追記)Lion特有？自分の環境では、古いperl(5.8.9とか)がすんなり入らなかった。しばらく困ったが、patchperlだけ再インストールしたら上手く行った。
<pre class="code">perlbrew install-patchperl
perlbrew install perl-5.8.9</pre>なんか本当にoverwriteするかと聞かれるのでyesと答える。</ins>

<ins datetime="2011-12-08T00:44:31+09:00"><h4>（追記)Task::Plack</h4>
EVが入らないという罠あり。<code>cpanm Task::Plack</code>で順当にこけた後に、<a href="http://llvm.org/bugs/show_bug.cgi?id=9891">http://llvm.org/bugs/show_bug.cgi?id=9891</a>のパッチをあてる。
<pre class="code">cpanm Task::Plack
cd ~/.cpanm/latest-build/EV-4.03/
patch -p0 &lt; /path/to/patch-for-ev
cpanm .
cpanm Task::Plack</pre>
とかそんな感じで。
参考: <a href="http://torus.tumblr.com/post/10720272072/lion-plack-ev">Lion で Plack をインストールすると EV のテストでエラーがでる。</a></ins>

<h4>DBD::mysql (うろ覚え)</h4>
<pre class="code">mysql -u root
mysql&gt; create database test character set utf8;
mysql&gt; grant all privileges on *.* to (ログインネーム)@localhost;
mysql&gt; \q
cpanm DBD::mysql</pre>

<h3>node編</h3>

<h4>npmをインストール</h4>
<pre class="code">curl http://npmjs.org/install.sh | sh</pre>

<h4>QUnit</h4>
<p>qunit-tapで使うため、npmでみつかるnode-qunitではなく、本家を直接インストール。しょっちゅう使うのでグローバルに。</p>
<pre class="code">npm install -g https://github.com/jquery/qunit/tarball/v1.2.0</pre>

<h4>QUnit-tap</h4>
<p>これもグローバルに</p>
<pre class="code">npm install -g qunit-tap</pre>

<h4>CoffeeScript</h4>
<pre class="code">npm install -g coffee-script</pre>

<h4>coffeescript-growl</h4>
<p>coffeescriptのコンパイル結果をgrowlで通知してくれる。更新されていないようなので、適当に直してインストールした。</p>

<pre class="code">git clone https://github.com/wesbos/coffeescript-growl.git
cd coffeescript-growl
patch -p0 &lt; fix.patch
npm install -g .</pre>

<pre class="code">index 8f0ed15..0cd0a59 100644
--- coffeescript-growl.coffee
+++ coffeescript-growl.coffee
@@ -1,11 +1,11 @@
-sys = require('sys')
+util = require('util')
 exec = require('child_process').exec
 CoffeeScript = require &quot;coffee-script&quot;
 
 App = {}
 
 App.puts = (error, stdout, stderr) -&gt;
-	sys.puts(stdout)
+	util.puts(stdout)
 
 App.icon = &quot;#{__dirname}/i/coffee.png&quot;
 
diff --git package.json package.json
index 760efb4..3aadc24 100644
--- package.json
+++ package.json
@@ -11,7 +11,7 @@
   },
   &quot;main&quot;: &quot;coffeescript-growl.js&quot;,
   &quot;engines&quot;: {
-    &quot;node&quot;: &quot;&gt;= 0.4.8 &lt; 0.5.0&quot;
+    &quot;node&quot;: &quot;&gt;= 0.6.0 &lt;= 0.6.4&quot;
   },
   &quot;dependencies&quot;: {},
   &quot;devDependencies&quot;: {}
</pre><h3>Apache編</h3>

<h4>デフォルトで入っているApacheを使う</h4>
<p>環境設定 > 共有 > Web共有をチェック
 /private/etc/apache2/users/(ログイン名).confが自動生成されていると思うので、cgiなど使えるように編集する</p>
<pre class="code">&lt;Directory &quot;/Users/(ログイン名)/Sites/&quot;&gt;                                                                                                                                                              
    Options Indexes -MultiViews ExecCGI FollowSymLinks                                                                                                                                           
    AllowOverride All                                                                                                                                                                            
    Order allow,deny                                                                                                                                                                             
    Allow from all                                                                                                                                                                               
    AddHandler cgi-script .cgi                                                                                                                                                                   
    AddHandler fastcgi-script .fcgi                                                                                                                                                              
&lt;/Directory&gt; </pre>


<ins datetime="2011-12-12T12:33:35+09:00">
<h4>(追記)varnish</h4>
<p>varnishを80番で起動して、Apacheやplackupしたサービスはリバースプロキシする事にした。</p>
<pre class="code">brew install varnish</pre>
<p>今あるformulaでは起動スクリプト的なものはついてこないみたいなので、自分でplistを書く。"varnish plist"とかでググればたくさん見つかる。<br />
80番ポートをリッスンするにはシステム権限で起動する必要があるので、plistを/Library/LaunchDaemons/に置く。ファイルオーナーもroot:wheelとかに変更しておく。</p>
</ins>


<h3>以上</h3>
<p>ほかにもいろいろやった気がするけど忘れた。おわり。</p>]]>
    </content>
</entry>

<entry>
    <title>コンピュータ音楽―歴史・テクノロジー・アート</title>
    <link rel="alternate" type="text/html" href="http://blog.aklaswad.com/2011/000508.html" />
    <id>tag:blog.aklaswad.com,2011://2.508</id>

    <published>2011-10-30T12:26:18Z</published>
    <updated>2011-10-30T13:39:47Z</updated>

    <summary>前回の記事で書いたsonificatorの開発が思いの外面白く、勢い余って買ってしまった。コンピュータで作曲や音声合成を行うための理論が網羅的に解説されている大著。 コンピュータ音楽―歴史・テクノロジー・アートCurtis Roads 青柳 龍也 後藤 真孝 「訳者らあとがき」によれば原著は1996年とのことで、実に15年前の内容。記述が古い箇所が多いことも否めない。例えば、現在のDAWのようにMIDIイベントとオーディオ波形が並んで表示されているシーケンサー画面について「グラフィカルな表現は、純粋な MIDI データとオーディオ波形間の時間的な対応を見るのに便利である(p 608)」と解説してある。 まだ同時には再生できなかったのだ! 理論的な部分での充実度は尋常ではなく、多くのシンセサイザーやエフェクターの原理から、グラニュラーシンセシスの理論的背景まで、自分には十分すぎる範囲がカバーされている。殆どの場合、今でも不足を感じることは無いと思う。 十年くらい前に音楽系のプログラミングに凝っていた時期があって、その時に図書館で借りて頑張ってひと通り読んだ。ここ5-6年はソッチ系のことを殆どやっていないので、大分忘れてしまった。素人の手習いに過ぎないが、また頑張って読もうと思う。当時は手元に置いておきたくてもあまりに高くて手が出なかったが。。。いや、今でも十分財布に厳しいぞ。もとを取るためにもsonificatorはしばらくいじり続けたいと思います。...</summary>
    <author>
        <name>aklaswad</name>
        <uri>http://blog.aklaswad.com/</uri>
    </author>
    
    <category term="books" label="books" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="dsp" label="dsp" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="music" label="music" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="sonificator" label="sonificator" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.aklaswad.com/">
        <![CDATA[<p>前回の記事で書いたsonificatorの開発が思いの外面白く、勢い余って買ってしまった。コンピュータで作曲や音声合成を行うための理論が網羅的に解説されている大著。</p>

<p><a href="http://www.amazon.co.jp/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E9%9F%B3%E6%A5%BD%E2%80%95%E6%AD%B4%E5%8F%B2%E3%83%BB%E3%83%86%E3%82%AF%E3%83%8E%E3%83%AD%E3%82%B8%E3%83%BC%E3%83%BB%E3%82%A2%E3%83%BC%E3%83%88-Curtis-Roads/dp/4501532106%3FSubscriptionId%3D15SMZCTB9V8NGR2TW082%26tag%3Dblogaklaswadc-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4501532106" target="_blank">コンピュータ音楽―歴史・テクノロジー・アート</a><br />Curtis Roads 青柳 龍也 後藤 真孝 <br /><a href="http://www.amazon.co.jp/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E9%9F%B3%E6%A5%BD%E2%80%95%E6%AD%B4%E5%8F%B2%E3%83%BB%E3%83%86%E3%82%AF%E3%83%8E%E3%83%AD%E3%82%B8%E3%83%BC%E3%83%BB%E3%82%A2%E3%83%BC%E3%83%88-Curtis-Roads/dp/4501532106%3FSubscriptionId%3D15SMZCTB9V8NGR2TW082%26tag%3Dblogaklaswadc-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4501532106" target="_blank"><img src="http://ecx.images-amazon.com/images/I/418SQGVQHQL._SL160_.jpg" border="0" alt="4501532106" /></a><img src="http://www.assoc-amazon.jp/e/ir?t=blogaklaswadc-22&l=ur2&o=9" width="1" height="1" style="border: none;" alt="" /><br /></p>

<p>「訳者らあとがき」によれば原著は1996年とのことで、実に15年前の内容。記述が古い箇所が多いことも否めない。例えば、現在のDAWのようにMIDIイベントとオーディオ波形が並んで表示されているシーケンサー画面について「<q>グラフィカルな表現は、純粋な MIDI データとオーディオ波形間の時間的な対応を見るのに便利である<sapn class="page-number">(p 608)</span></q>」と解説してある。 まだ同時には再生できなかったのだ!</p>

<p>理論的な部分での充実度は尋常ではなく、多くのシンセサイザーやエフェクターの原理から、グラニュラーシンセシスの理論的背景まで、自分には十分すぎる範囲がカバーされている。殆どの場合、今でも不足を感じることは無いと思う。</p>

<p>十年くらい前に音楽系のプログラミングに凝っていた時期があって、その時に図書館で借りて頑張ってひと通り読んだ。ここ5-6年はソッチ系のことを殆どやっていないので、大分忘れてしまった。素人の手習いに過ぎないが、また頑張って読もうと思う。当時は手元に置いておきたくてもあまりに高くて手が出なかったが。。。いや、今でも十分財布に厳しいぞ。もとを取るためにもsonificatorはしばらくいじり続けたいと思います。<br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>YAPC ASIA 2011で刺激されてJavaScriptに没頭してsonificator作った。</title>
    <link rel="alternate" type="text/html" href="http://blog.aklaswad.com/2011/000506.html" />
    <id>tag:blog.aklaswad.com,2011://2.506</id>

    <published>2011-10-22T05:13:25Z</published>
    <updated>2011-10-22T05:13:32Z</updated>

    <summary>YAPC ASIA 2011行ってきました。 cho45さんのWAFの話とか、普段書いているコードに直結するような話で興味深い話も多かったのですが、それ以上に、techno-catさんやHaruka Kataokaさんの音楽関係のトラックにとても刺激を受けました。そういえば、自分がプログラムを始めたきっかけって、テクノとかエレクトロニカとか、そんな音楽やりたくてじたばたしているうちに片足突っ込んだのがはじまりだったよな、ということを思い出したりして、まあ、いわゆる初期衝動？に立ち返ったような気持ちになりました。 で、この一週間モンモンとしているうちに、今やるならWeb Audio APIだよななどと思いつつ色々いじってたら、こんなのが出来ました。 sonificator すべてJavaScriptで書かれていて、Web Audio APIを利用してブラウザ上でリアルタイムに動作するプログラムで、DOM構造をそれっぽい音楽に変換して演奏します。ブックマークレットから起動できます。最近のchromeでしか動きません。今のところ、いわゆるIDMとかエレクトロニカといった感じの音にチューニングされてます。ちょっとした画像効果付きなので、そっち系統の音が好きな方は、好きなサイトで実行して放置すると良い感じなんじゃないかと思います。 自分のお気に入りは、Facebookのウォール部分です。予め先の方までAutoPagarizeしておいて垂れ流すと、とても気持ち良いです。みなさんも試してみてください。 Perlのパの字も無いところに落ち着きましたが、言語に拘らずいろんな方向に刺激を与えてくれるのもYAPCの良いところですね。この土日も仕事とも言語とも関係なく、好きなコード書きたいという気持ちが、今の僕には溢れてます。...</summary>
    <author>
        <name>aklaswad</name>
        <uri>http://blog.aklaswad.com/</uri>
    </author>
    
    <category term="googlechrome" label="Google Chrome" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="javascript" label="javascript" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="sonificator" label="sonificator" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="webaudioapi" label="Web Audio API" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="yapcasia" label="yapcasia" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.aklaswad.com/">
        <![CDATA[<p>YAPC ASIA 2011行ってきました。</p>

<p>cho45さんのWAFの話とか、普段書いているコードに直結するような話で興味深い話も多かったのですが、それ以上に、techno-catさんやHaruka Kataokaさんの音楽関係のトラックにとても刺激を受けました。そういえば、自分がプログラムを始めたきっかけって、テクノとかエレクトロニカとか、そんな音楽やりたくてじたばたしているうちに片足突っ込んだのがはじまりだったよな、ということを思い出したりして、まあ、いわゆる初期衝動？に立ち返ったような気持ちになりました。</p>

<p>で、この一週間モンモンとしているうちに、今やるならWeb Audio APIだよななどと思いつつ色々いじってたら、こんなのが出来ました。</p>

<ul><li><a href="http://aklaswad.github.com/sonificator/">sonificator</a></li></ul>

<p>すべてJavaScriptで書かれていて、Web Audio APIを利用してブラウザ上でリアルタイムに動作するプログラムで、DOM構造をそれっぽい音楽に変換して演奏します。ブックマークレットから起動できます。最近のchromeでしか動きません。今のところ、いわゆるIDMとかエレクトロニカといった感じの音にチューニングされてます。ちょっとした画像効果付きなので、そっち系統の音が好きな方は、好きなサイトで実行して放置すると良い感じなんじゃないかと思います。</p>

<p>自分のお気に入りは、Facebookのウォール部分です。予め先の方までAutoPagarizeしておいて垂れ流すと、とても気持ち良いです。みなさんも試してみてください。</p>

<p><iframe src="http://player.vimeo.com/video/30919126?title=0&amp;byline=0&amp;portrait=0" width="500" height="281" frameborder="0" webkitAllowFullScreen allowFullScreen></iframe></p>

<p>Perlのパの字も無いところに落ち着きましたが、言語に拘らずいろんな方向に刺激を与えてくれるのもYAPCの良いところですね。この土日も仕事とも言語とも関係なく、好きなコード書きたいという気持ちが、今の僕には溢れてます。</p>]]>
        
    </content>
</entry>

<entry>
    <title>MTのワンライナーを素早く書く</title>
    <link rel="alternate" type="text/html" href="http://blog.aklaswad.com/2011/000505.html" />
    <id>tag:blog.aklaswad.com,2011://2.505</id>

    <published>2011-06-16T02:36:47Z</published>
    <updated>2011-06-16T03:51:13Z</updated>

    <summary><![CDATA[通常、MTのパッケージはシステムレベルにインストールされません。そのため、lib/ とextlib/ へのパスを実行時に追加する必要があります。 例えば、EntryオブジェクトをDumpするワンライナーは以下のようになります。 $ perl -Ilib -Iextlib -MMT -MData::Dumper -e 'MT-&gt;new; print Dumper(MT-&gt;model(&quot;entry&quot;)-&gt;load(42))' また、プラグインごとのlibディレクトリへのパスは、MTのインスタンス作成時に動的に追加されます。そのため、MTのプラグインを開発中、コンパイルチェックをしたい時などに直接実行する事ができません。 $ perl -Ilib -Iextlib -Iplugins/MyPlugin/lib -c plugins/MyPlugin/lib/MyPlugin.pm 長いですね。 そこで、以下のようなモジュールを、perlのパスの通った場所に設置します。 package T; use strict; use warnings; use lib qw( lib extlib ); use MT; BEGIN {...]]></summary>
    <author>
        <name>aklaswad</name>
        <uri>http://blog.aklaswad.com/</uri>
    </author>
    
    <category term="movabletype" label="movable type" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="小ネタ" label="小ネタ" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.aklaswad.com/">
        <![CDATA[<p>通常、MTのパッケージはシステムレベルにインストールされません。そのため、lib/ とextlib/ へのパスを実行時に追加する必要があります。<br />
例えば、EntryオブジェクトをDumpするワンライナーは以下のようになります。</p>

<pre class="code">$ perl -Ilib -Iextlib -MMT -MData::Dumper -e 'MT-&gt;new; print Dumper(MT-&gt;model(&quot;entry&quot;)-&gt;load(42))'</pre>

<p>また、プラグインごとのlibディレクトリへのパスは、MTのインスタンス作成時に動的に追加されます。そのため、MTのプラグインを開発中、コンパイルチェックをしたい時などに直接実行する事ができません。</p>

<pre class="code">$ perl -Ilib -Iextlib -Iplugins/MyPlugin/lib -c plugins/MyPlugin/lib/MyPlugin.pm</pre>

<p>長いですね。</p>

<p>そこで、以下のようなモジュールを、perlのパスの通った場所に設置します。</p>

<pre class="code">package T;
use strict;
use warnings;
use lib qw( lib extlib );
use MT;
BEGIN { MT-&gt;new };
1;</pre>

<p>名前は、T.pmです。これで</p>

<pre class="code">$ perl -MT -MData::Dumper -e 'print Dumper(MT-&gt;model(&quot;entry&quot;)-&gt;load(42))'
$ perl -MT -c plugins/MyPlugin/lib/MyPlugin.pm</pre>

<p>などと、perlにMT専用オプションが追加されたような錯覚を覚える事が出来ます。</p>]]>
        
    </content>
</entry>

<entry>
    <title>githubのwikiエンジン「Gollum」を試してみた。</title>
    <link rel="alternate" type="text/html" href="http://blog.aklaswad.com/2011/000502.html" />
    <id>tag:blog.aklaswad.com,2011://2.502</id>

    <published>2011-01-22T16:53:48Z</published>
    <updated>2011-01-22T16:54:29Z</updated>

    <summary>Gollumは、githubのwikiエンジンのコア部分がオープンソースとして公開されたものです。軽量なWebServerとして動作するので、ローカルマシン上で起動してすぐに、ブラウザ経由でwikiページの閲覧や編集が可能になります。使用感をメモしておきます。 https://github.com/github/gollum インストールと起動 Gollumはrubyで書かれたwikiエンジンです。gemからインストールする事が出来ます。 起動するには、任意のgitリポジトリへ移動(またはオプションでパスを指定)してgollumコマンドを実行します。 $ sudo gem install gollum $ git init my_wiki $ cd my_wiki $ gollum これで、デフォルトでポート4567にウェブサーバが起動するので、ブラウザでlocalhost:4567にアクセスしてすぐにwikiページの作成が可能です。 特徴 バックエンドがgit gollumはストレージとして、一般的なDBエンジンではなくgitを利用しています。ブラウザからページを追加してみるとわかりますが、wikiページがファイルと一対一で対応するという直感的に分かりやすい構造になっています。ワーキングコピーでそれらのファイルを直接編集してgit commitすることでwikiに反映させることもできます。 githubのwikiもgitリポジトリとしてアクセス可能になっているので、githubからwikiをガバっとcloneしてローカルマシン上のGollumで確認しながら大量にページ追加作業をし、まとまったところでgithubにpushといった形でのgithubと連携することで、かなりの作業の効率化が可能かと思います。 オマケ的な利点として、画像などのファイルを直接git addする事でリポジトリに含めて管理、参照するといったことも挙げられます。(現時点ではGithubのwikiにはファイルアップロードのインターフェースがないので) 複数のマークアップフォーマットに対応 必要なライブラリをインストールする事で、以下のマークアップフォーマットを利用できます。フォーマットはwikiページごとに設定できます。 ASCIIDoc Creole Markdown Org Pod RDoc ReStructuredText Textile MediaWiki (gemから落とせる最新版(1.1.1)には含まれていない模様) また、github...</summary>
    <author>
        <name>aklaswad</name>
        <uri>http://blog.aklaswad.com/</uri>
    </author>
    
    <category term="github" label="GitHub" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="gollum" label="Gollum" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="memo" label="memo" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="wiki" label="Wiki" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.aklaswad.com/">
        <![CDATA[<p>Gollumは、githubのwikiエンジンのコア部分がオープンソースとして公開されたものです。軽量なWebServerとして動作するので、ローカルマシン上で起動してすぐに、ブラウザ経由でwikiページの閲覧や編集が可能になります。使用感をメモしておきます。</p>

<ul>
	<li><a href="https://github.com/github/gollum">https://github.com/github/gollum</a></li>
</ul>

<h3>インストールと起動</h3> 
Gollumはrubyで書かれたwikiエンジンです。gemからインストールする事が出来ます。
起動するには、任意のgitリポジトリへ移動(またはオプションでパスを指定)してgollumコマンドを実行します。

<pre> 
$ sudo gem install gollum
$ git init my_wiki
$ cd my_wiki
$ gollum
</pre> 

<p>これで、デフォルトでポート4567にウェブサーバが起動するので、ブラウザでlocalhost:4567にアクセスしてすぐにwikiページの作成が可能です。</p>

<h3>特徴</h3> 
<h4>バックエンドがgit</h4>

<p>gollumはストレージとして、一般的なDBエンジンではなくgitを利用しています。ブラウザからページを追加してみるとわかりますが、wikiページがファイルと一対一で対応するという直感的に分かりやすい構造になっています。ワーキングコピーでそれらのファイルを直接編集してgit commitすることでwikiに反映させることもできます。</p>

<p>githubのwikiもgitリポジトリとしてアクセス可能になっているので、githubからwikiをガバっとcloneしてローカルマシン上のGollumで確認しながら大量にページ追加作業をし、まとまったところでgithubにpushといった形でのgithubと連携することで、かなりの作業の効率化が可能かと思います。</p>

<p>オマケ的な利点として、画像などのファイルを直接git addする事でリポジトリに含めて管理、参照するといったことも挙げられます。(現時点ではGithubのwikiにはファイルアップロードのインターフェースがないので)</p>

<h4>複数のマークアップフォーマットに対応</h4>

<p>必要なライブラリをインストールする事で、以下のマークアップフォーマットを利用できます。フォーマットはwikiページごとに設定できます。</p>

<ul><li>ASCIIDoc</li>
<li>Creole</li>
<li>Markdown</li>
<li>Org</li>
<li>Pod</li>
<li>RDoc</li>
<li>ReStructuredText</li>
<li>Textile</li>
<li>MediaWiki (gemから落とせる最新版(1.1.1)には含まれていない模様)</li>
</ul>

<p>また、github 独自拡張のwiki内リンク記法が利用できます。</p>

<h3>はまったところ</h3>

<p>ワーキングコピーではなくgitリポジトリそのものを見ているので、ファイルベースで作業した場合、git commitするまで反映されない、ということに気づくまで小一時間はまった。</p>]]>
        
    </content>
</entry>

<entry>
    <title>Github の MT のリポジトリブラウザに Fogbugz へのリンクを追加する Chrome extension 書いた。</title>
    <link rel="alternate" type="text/html" href="http://blog.aklaswad.com/2011/000501.html" />
    <id>tag:blog.aklaswad.com,2011://2.501</id>

    <published>2011-01-11T15:00:12Z</published>
    <updated>2011-01-11T15:03:34Z</updated>

    <summary>Happy new year! Happy Github! ということで、Movable Type のリポジトリがgithubに移行してとても楽しみなのですが、コミットログにFogbugzのケース番号書いてあってもWebから見たときにリンクにならないので不便です。のでとりあえずChrome extensionでなんとかします。 GithubType.crx https://github.com/movabletype/ 以下で、コミットログからfogbugzのcase番号らしきものを拾って、近くにリンクを追加します。だけです。もっと良い方法をご存知の方教えてください。...</summary>
    <author>
        <name>aklaswad</name>
        <uri>http://blog.aklaswad.com/</uri>
    </author>
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.aklaswad.com/">
        <![CDATA[<p>Happy new year! Happy Github!</p>

<p>ということで、Movable Type のリポジトリがgithubに移行してとても楽しみなのですが、コミットログにFogbugzのケース番号書いてあってもWebから見たときにリンクにならないので不便です。のでとりあえずChrome extensionでなんとかします。</p>

<ul>
	<li><a href="http://blog.aklaswad.com/GithubType.crx">GithubType.crx</a></li>
</ul>

<p>https://github.com/movabletype/ 以下で、コミットログからfogbugzのcase番号らしきものを拾って、近くにリンクを追加します。だけです。もっと良い方法をご存知の方教えてください。<br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>MTDDC HOKKAIDO行ってきた。</title>
    <link rel="alternate" type="text/html" href="http://blog.aklaswad.com/2010/000497.html" />
    <id>tag:blog.aklaswad.com,2010://2.497</id>

    <published>2010-12-25T05:27:10Z</published>
    <updated>2010-12-25T06:52:33Z</updated>

    <summary>一週間経ってしまいましたが、MTDDC HOKKAIDOのまとめ。...</summary>
    <author>
        <name>aklaswad</name>
        <uri>http://blog.aklaswad.com/</uri>
    </author>
    
    <category term="hokkaido" label="hokkaido" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mtddc" label="mtddc" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="psgi" label="psgi" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.aklaswad.com/">
        <![CDATA[<p>一週間経ってしまいましたが、MTDDC HOKKAIDOのまとめ。</p>]]>
        <![CDATA[<h3>[DAY 1] MTDDC HOKKAIDO</h3>

<p>朝５時半に起きて羽田へ。毎朝のように寝坊した旨をTwitterにつぶやいている身としては、そもそも飛行機に間に合うかが一番の難関でしたが、なんとかよたよたと家を出ました。北海道は大雪だったがなんとか無事飛行機も着陸し、会場へ。MTDDCスタート!</p>

<p>やはり自分的には、技術よりのトークの方が興味ありました。残念ながら受付にいて壁越しにしか聞けませんでしたが、ka2hiroさんのテンプレートタグの話と、pirolix氏の分散処理の話が面白かったです。</p>

<p>自分のLTは、開発中のリスティングフレームワークについて、ざっとした説明とライブコーディングをやりました。資料おいておきます。</p>

<ul>
	<li><a href="http://blog.aklaswad.com/mtddc_sapporo.html">http://blog.aklaswad.com/mtddc_sapporo.html</a></li>
</ul>

<p>前日まで「時間が余っているので15分くらいやって」と言われていたのが、直前になって「やっぱ時間無いので7分以内で」となってしまい、だいぶ端折ってしまいました。リスティングフレームワーク上でのリスト作成の雰囲気が少しでも伝わったらと思います。</p>

<h3>[DAY 2] Hack-a-thon</h3>

<p>かつて無いほど大勢の参加者があり、楽しかったです。</p>

<p>自分はドラッグアンドドロップで複数ファイルをアップロードするインターフェイスの試作をやってました。マルチブラウザ対応等、いろいろ足りない部分が多くすぐには公開できませんが、ちょこちょこと手を入れていこうと思います。</p>

<p>Hokkaido.pmの方が多く参加されていた事もあり、PSGI絡みの話が多かったのが興味深かったです。<br />
触発されて、以前書いたパブリッシュ側のPSGIアプリのデモもやろうと思ったのですが、Plackのインストールがコケてしまい間に合いませんでした。残念。一応コードさらしておきます。</p>

<p><script src="https://gist.github.com/576237.js?file=gistfile1.pl"></script></p>

<h3>[DAY 3] Freetime</h3>

<p>三日目は夕方のフライトの時間までフリータイム。小樽まで足を伸ばして、寿司と、前日の打ち上げでとてもおいしかった小樽ビールの本家のビアホールと、ウニいくら丼と、食い倒れてました。とてもおいしかったです。</p>

<p>おわり。</p>]]>
    </content>
</entry>

<entry>
    <title>registryメソッドの説明的な何か。</title>
    <link rel="alternate" type="text/html" href="http://blog.aklaswad.com/2010/000487.html" />
    <id>tag:blog.aklaswad.com,2010://2.487</id>

    <published>2010-11-07T16:06:01Z</published>
    <updated>2010-11-07T16:13:11Z</updated>

    <summary>MTのあちこちで使われている registry メソッドについて、自分の知っている範囲でですが、説明的なものを書いてみました。 テストとしてサンプルコードが埋め込まれているので、prove 出来ます。 podで説明文を書いてあるのですが、後で気付いたのですが、perldoc では文字化けして読めませんでした＞＜ 直接コードとpodを読んで、実行してみる等してみてください。 何かのお役に立てれば。...</summary>
    <author>
        <name>aklaswad</name>
        <uri>http://blog.aklaswad.com/</uri>
    </author>
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.aklaswad.com/">
        <![CDATA[<p>MTのあちこちで使われている registry メソッドについて、自分の知っている範囲でですが、説明的なものを書いてみました。<br />
テストとしてサンプルコードが埋め込まれているので、prove 出来ます。<br />
podで説明文を書いてあるのですが、後で気付いたのですが、perldoc では文字化けして読めませんでした＞＜<br />
直接コードとpodを読んで、実行してみる等してみてください。<br />
何かのお役に立てれば。<br />
</p>]]>
        <![CDATA[<p><script src="https://gist.github.com/666207.js"> </script></p>]]>
    </content>
</entry>

<entry>
    <title>Re: Movable Typeのプラグインファイル構成について</title>
    <link rel="alternate" type="text/html" href="http://blog.aklaswad.com/2010/000486.html" />
    <id>tag:blog.aklaswad.com,2010://2.486</id>

    <published>2010-11-06T07:41:36Z</published>
    <updated>2010-11-06T08:09:10Z</updated>

    <summary>少し説明を追加、アップデートしました。 小粋空間さんで、プラグインのファイル構成について解説されている記事が公開されています。 Movable Typeのプラグインファイル構成について: 小粋空間 その中で、自分の過去の発表で YAML ファイルでの perl コードの実行について話した内容に触れられていたのですが、それを読んで、自分の発言が誤解されるような言い方になっていたようなので、整理してみます。 要点を順に書くと、こんな感じになります。 Movable Type の registry では、サブルーチンが期待されているなら、文字列を自動的に perl コードとして展開する場合がある plugin の定義ファイルである config.yaml ファイルではこの機能を最大限利用することで直接 perl コードを埋め込める(ようになっている設定値が多数用意されている) ただし、テーマの定義ファイルである theme.yaml ファイルを扱う際には、セキュリティ向上を目的に、基本的にこの機能を使わないよう開発している ですから、plugin のスタートポイントがfoo.plである場合と、config.yamlである場合に、セキュリティ的な安全性の差は(現在の所)ありません。小粋空間さんのところで触れられた安全性の話は、plugin と theme の違いの話だとご理解ください。 2) について補足しておくと、registry 内でサブルーチンが期待される場合(例えばテンプレートタグの登録での、実行ルーチンの指定部分)、「sub {」で始まる文字列を直接指定する事で、perl として実行させる事が出来ます。 以下は、実際にプラグインとして動作するconfig.yamlファイルの例です。 tags: function:...</summary>
    <author>
        <name>aklaswad</name>
        <uri>http://blog.aklaswad.com/</uri>
    </author>
    
    <category term="movabletype" label="Movable Type" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="registry" label="registry" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.aklaswad.com/">
        <![CDATA[<p><ins datetime="2010-11-06T17:06:48+09:00">少し説明を追加、アップデートしました。</ins></p>

<p>小粋空間さんで、プラグインのファイル構成について解説されている記事が公開されています。</p>

<ul>
	<li><a href="http://www.koikikukan.com/archives/2010/11/06-020202.php">Movable Typeのプラグインファイル構成について: 小粋空間</a></li>
</ul>

<p>その中で、自分の過去の発表で YAML ファイルでの perl コードの実行について話した内容に触れられていたのですが、それを読んで、自分の発言が誤解されるような言い方になっていたようなので、整理してみます。</p>

<p>要点を順に書くと、こんな感じになります。</p>

<ol>
	<li>Movable Type の registry では、サブルーチンが期待されているなら、文字列を自動的に perl コードとして展開する場合がある</li>
	<li>plugin の定義ファイルである config.yaml ファイルではこの機能を最大限利用することで直接 perl コードを埋め込める(ようになっている設定値が多数用意されている)</li>
	<li>ただし、テーマの定義ファイルである theme.yaml ファイルを扱う際には、セキュリティ向上を目的に、基本的にこの機能を使わないよう開発している</li>
</ol>

<p><ins datetime="2010-11-06T17:06:20+09:00">ですから、plugin のスタートポイントがfoo.plである場合と、config.yamlである場合に、セキュリティ的な安全性の差は(現在の所)ありません。小粋空間さんのところで触れられた安全性の話は、plugin と theme の違いの話だとご理解ください。</ins></p>

<p>2) について補足しておくと、registry 内でサブルーチンが期待される場合(例えばテンプレートタグの登録での、実行ルーチンの指定部分)、「sub {」で始まる文字列を直接指定する事で、perl として実行させる事が出来ます。<br />
以下は、実際にプラグインとして動作するconfig.yamlファイルの例です。</p>

<pre>
tags:
    function:
        Foo1: sub { return "Hello foo1" }
</pre>]]>
        
    </content>
</entry>

<entry>
    <title>ActionStreams + AnyEvent</title>
    <link rel="alternate" type="text/html" href="http://blog.aklaswad.com/2010/000484.html" />
    <id>tag:blog.aklaswad.com,2010://2.484</id>

    <published>2010-10-18T17:23:28Z</published>
    <updated>2010-10-18T17:37:47Z</updated>

    <summary>ActionStreamsで更新チェックする時に、AnyEvent::HTTPを使って並列ダウンロードするようにしてみました。sixapart / mt-plugin-ActionStreamsからforkして、anyeventブランチを切ってゴニョゴニョしてます。 http://github.com/aklaswad/mt-plugin-ActionStreams/tree/anyevent AnyEventが見つかれば自動的に利用するようにしてありますので、特別な設定は不要です。 10程度のストリームの処理で、ベンチマーク(ストップウォッチで目視)では約三倍ほど速くなってます。ストリームの数が増えれば、もっと差が出るかもしれません。...</summary>
    <author>
        <name>aklaswad</name>
        <uri>http://blog.aklaswad.com/</uri>
    </author>
    
    <category term="actionstreams" label="ActionStreams" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="anyevent" label="AnyEvent" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="anyeventhttp" label="AnyEvent::HTTP" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="hack" label="hack" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="movabletype" label="Movable Type" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.aklaswad.com/">
        <![CDATA[<p>ActionStreamsで更新チェックする時に、AnyEvent::HTTPを使って並列ダウンロードするようにしてみました。<a href="http://github.com/sixapart/mt-plugin-ActionStreams">sixapart / mt-plugin-ActionStreams</a>からforkして、anyeventブランチを切ってゴニョゴニョしてます。</p>

<ul>
	<li><a href="http://github.com/aklaswad/mt-plugin-ActionStreams/tree/anyevent">http://github.com/aklaswad/mt-plugin-ActionStreams/tree/anyevent</a></li>
</ul>

<p>AnyEventが見つかれば自動的に利用するようにしてありますので、特別な設定は不要です。</p>

<p>10程度のストリームの処理で、ベンチマーク(ストップウォッチで目視)では約三倍ほど速くなってます。ストリームの数が増えれば、もっと差が出るかもしれません。</p>]]>
        
    </content>
</entry>

<entry>
    <title>YAPC::Asia 2010</title>
    <link rel="alternate" type="text/html" href="http://blog.aklaswad.com/2010/000483.html" />
    <id>tag:blog.aklaswad.com,2010://2.483</id>

    <published>2010-10-16T15:26:56Z</published>
    <updated>2010-10-16T16:12:39Z</updated>

    <summary>行ってきました。YAPC、というかPerlのイベント自体に初参加だったのですが、とてもエキサイティングな二日間を過ごせました。ふっとMTを持ちあげてくれたyusukebeさんのトークには特に感謝したいです。色々吹っ切れた気がします。...</summary>
    <author>
        <name>aklaswad</name>
        <uri>http://blog.aklaswad.com/</uri>
    </author>
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.aklaswad.com/">
        <![CDATA[<p>行ってきました。YAPC、というかPerlのイベント自体に初参加だったのですが、とてもエキサイティングな二日間を過ごせました。ふっとMTを持ちあげてくれた<a href="http://twitter.com/yusukebe">yusukebe</a>さんのトークには特に感謝したいです。色々吹っ切れた気がします。</p>]]>
        
    </content>
</entry>

<entry>
    <title>テンプレートの依存関係を表示するプラグインを作ってみました。</title>
    <link rel="alternate" type="text/html" href="http://blog.aklaswad.com/2010/000477.html" />
    <id>tag:blog.aklaswad.com,2010://2.477</id>

    <published>2010-05-28T04:32:26Z</published>
    <updated>2010-05-29T14:47:10Z</updated>

    <summary>Include Map という名前のプラグインです。 なにが起こるの？ テンプレートの編集画面に、そのテンプレートをインクルードしているテンプレートの一覧を表示します。 以下のような依存関係の一覧画面を追加します。 どこでダウンロードするの？ ダウンロードはgithubからお願いします。画面右上、上から3段目の「Download Source」ボタンから、最新のパッケージをダウンロードできます。 使い方は？ IncludeMapプラグインは、テンプレートの編集を監視し、内部的に依存関係の記録を行います。ですが、現在のところプラグインのインストール時にはこの記録は作成されません。 運用中のMovable Typeにこのプラグインを追加して利用する場合、事前にブログ/ウェブサイトの一覧画面からPlugin Action &gt; Rebuild Include Mapを実行してください。 インストールに成功すると、メニューの「デザイン &gt; Include Map」から、各ブログごとのテンプレートの依存関係表を開くことが出来ます。この画面はIEでは動作しないかもしれません。 ご利用は計画的に このプラグインはMTのデータベースに変更を加えます。また、開発途中のため、今後大きな変更が加わる可能性もあります。実運用中の環境へのインストールはお勧めしません。テスト用途でのご利用をご検討ください。...</summary>
    <author>
        <name>aklaswad</name>
        <uri>http://blog.aklaswad.com/</uri>
    </author>
    
    <category term="movabletype" label="Movable Type" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="plugin" label="plug-in" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="テンプレート" label="テンプレート" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.aklaswad.com/">
        <![CDATA[<p>Include Map という名前のプラグインです。</p>

<h3>なにが起こるの？</h3>

<ul>
	<li>テンプレートの編集画面に、<strong>そのテンプレートをインクルードしている</strong>テンプレートの一覧を表示します。</li>
	<li>以下のような依存関係の一覧画面を追加します。</li>
</ul>

<p><a href="http://blog.aklaswad.com/images/include_map.png"><img alt="include_map.png" src="http://blog.aklaswad.com/assets_c/2010/05/include_map-thumb-500x175-112.png" width="500" height="175" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></p>

<h3>どこでダウンロードするの？</h3>

<p>ダウンロードは<a href="http://github.com/aklaswad/mt-plugin-include-map">github</a>からお願いします。画面右上、上から3段目の「Download Source」ボタンから、最新のパッケージをダウンロードできます。</p>

<h3>使い方は？</h3>

<p>IncludeMapプラグインは、テンプレートの編集を監視し、内部的に依存関係の記録を行います。ですが、現在のところプラグインのインストール時にはこの記録は作成されません。<br />
運用中のMovable Typeにこのプラグインを追加して利用する場合、事前にブログ/ウェブサイトの一覧画面からPlugin Action > Rebuild Include Mapを実行してください。</p>

<p>インストールに成功すると、メニューの「デザイン > Include Map」から、各ブログごとのテンプレートの依存関係表を開くことが出来ます。この画面はIEでは動作しないかもしれません。</p>

<h3>ご利用は計画的に</h3>

<p><strong>このプラグインはMTのデータベースに変更を加えます。また、開発途中のため、今後大きな変更が加わる可能性もあります。実運用中の環境へのインストールはお勧めしません。テスト用途でのご利用をご検討ください。</strong></p>]]>
        
    </content>
</entry>

<entry>
    <title>MTからOAuthを使うプラグイン作ってます。</title>
    <link rel="alternate" type="text/html" href="http://blog.aklaswad.com/2010/000476.html" />
    <id>tag:blog.aklaswad.com,2010://2.476</id>

    <published>2010-05-20T15:09:53Z</published>
    <updated>2010-05-20T15:15:33Z</updated>

    <summary>外部リソースへのアクセスを行うようなプラグインを作成するときに、OAuth認証を利用する必要がある場合があります。ぶっちゃけて言うと、７月からTwitterにアクセスするために必要になります。 OAuthによるアクセスについては、PostTwiOAuthなどで実現されていますが、プラグインごとに認証部分を再実装するのは面倒ですし、OAuthの性質上、プラグインのインストール後にそれなりの設定作業が必要になるため、エンドユーザー視点でも設定項目をプラグイン間で共有して欲しいのではないかと思います。 そこで、OAuthサービスプロバイダに関する設定のプラグイン間での共有や、Handshakeの実行、および取得したトークンの管理を行うプラグインを開発しています。 http://github.com/aklaswad/mt-plugin-oauth-framework ドキュメントは、以下で準備を進めています。 http://wiki.github.com/aklaswad/mt-plugin-oauth-framework/ プラグイン本体については、基本機能は実装済みですが、スタイリングやデザインの一部などは手つかずです。メインのAPI等の部分も、まだまだ改良の余地があるかと思います。今月末をメドに形にしたいと考えていますので、興味のあるプラグイン開発者の方は触ってみてください。フィードバック、パッチ、おしかり、ウェルカムです。このエントリのコメント/トラックバックや、githubのITSまで連絡いただければ幸いです。...</summary>
    <author>
        <name>aklaswad</name>
        <uri>http://blog.aklaswad.com/</uri>
    </author>
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.aklaswad.com/">
        <![CDATA[<p>外部リソースへのアクセスを行うようなプラグインを作成するときに、OAuth認証を利用する必要がある場合があります。ぶっちゃけて言うと、７月からTwitterにアクセスするために必要になります。</p>

<p>OAuthによるアクセスについては、<a href="http://www.macminiosx.com/2010/03/movable_typeoauthtwitter_postt.html">PostTwiOAuth</a>などで実現されていますが、プラグインごとに認証部分を再実装するのは面倒ですし、OAuthの性質上、プラグインのインストール後にそれなりの設定作業が必要になるため、エンドユーザー視点でも設定項目をプラグイン間で共有して欲しいのではないかと思います。</p>

<p>そこで、OAuthサービスプロバイダに関する設定のプラグイン間での共有や、Handshakeの実行、および取得したトークンの管理を行うプラグインを開発しています。</p>

<ul>
	<li><a href="http://github.com/aklaswad/mt-plugin-oauth-framework">http://github.com/aklaswad/mt-plugin-oauth-framework</a></li>
</ul>

<p>ドキュメントは、以下で準備を進めています。</p>

<ul>
	<li><a href="http://wiki.github.com/aklaswad/mt-plugin-oauth-framework/">http://wiki.github.com/aklaswad/mt-plugin-oauth-framework/</a></li>
</ul>

<p>プラグイン本体については、基本機能は実装済みですが、スタイリングやデザインの一部などは手つかずです。メインのAPI等の部分も、まだまだ改良の余地があるかと思います。今月末をメドに形にしたいと考えていますので、興味のあるプラグイン開発者の方は触ってみてください。フィードバック、パッチ、おしかり、ウェルカムです。このエントリのコメント/トラックバックや、<a href="http://github.com/aklaswad/mt-plugin-oauth-framework/issues">githubのITS</a>まで連絡いただければ幸いです。</p>]]>
        
    </content>
</entry>

<entry>
    <title>アーカイブ一覧をAjaxでツリー展開するカスタマイズ</title>
    <link rel="alternate" type="text/html" href="http://blog.aklaswad.com/2010/000475.html" />
    <id>tag:blog.aklaswad.com,2010://2.475</id>

    <published>2010-05-04T16:17:43Z</published>
    <updated>2010-05-04T16:24:39Z</updated>

    <summary>今回のアップグレード/リニューアル作業で、Archive Indexページにちょっとしたカスタマイズをしてみました。 見ていただければわかると思うのですが、月別アーカイブ一覧のリストの項目をクリックする事で、その月のエントリー一覧を展開する事が出来るようになっています。 予告通り、カスタマイズの詳細を公開しておきます。...</summary>
    <author>
        <name>aklaswad</name>
        <uri>http://blog.aklaswad.com/</uri>
    </author>
    
    <category term="ajax" label="Ajax" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="javascript" label="javascript" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mt5" label="MT5" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="カスタマイズ" label="カスタマイズ" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ツリー表示" label="ツリー表示" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="テンプレート" label="テンプレート" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.aklaswad.com/">
        <![CDATA[今回のアップグレード/リニューアル作業で、Archive Indexページにちょっとしたカスタマイズをしてみました。
<a href="http://blog.aklaswad.com/archives.html">見ていただければ</a>わかると思うのですが、月別アーカイブ一覧のリストの項目をクリックする事で、その月のエントリー一覧を展開する事が出来るようになっています。
予告通り、カスタマイズの詳細を公開しておきます。]]>
        <![CDATA[基本的な考え方としては、MT側であらかじめ、ツリー展開する中身の部分だけを出力するためのアーカイブを作成し、静的なHTMLファイル群として出力しておき、リストの項目のクリック時に出力されたファイルを動的にロードして表示する、という仕組みです。
以下のような手順で作業を行いました。

<h3>ボックスの内側を表示する軽量なテンプレートを作る</h3>
簡素なブログ記事一覧をHTMLとして表示するようなテンプレートを、ブログ記事リストのアーカイブテンプレートとして作成します。この部分が、ツリー展開時に中身として表示されます。

<pre class="code">&lt;mt:entries&gt;
    &lt;mt:if __first__&gt;&lt;ul&gt;&lt;/mt:if&gt;
        &lt;li&gt;&lt;a href=&quot;&lt;mt:entryPermalink&gt;&quot;&gt;&lt;mt:entryTitle&gt;&lt;/a&gt;&lt;p&gt;&lt;mt:entryBody remove_html=&quot;1&quot; trim_to=&quot;40&quot;&gt;...&lt;/p&gt;&lt;/li&gt;
    &lt;mt:if __last__&gt;&lt;/ul&gt;&lt;/mt:if&gt;
&lt;/mt:entries&gt;</pre>
これだけを、テンプレートの内容として保存します。

<h3>アーカイブマッピングを設定する</h3>

作成したアーカイブテンプレートに、以下のようにマッピングを作成します。「skelton」の部分は何でも構いません。
<pre class="code">%y/%m/skelton.html</pre>
これで、ツリー表示の内側部分を、月ごとに独立したHTMLファイルとして出力できます。マッピングの保存後、再構築しておきましょう。

<h3>アーカイブページでAjaxでの読み込みを行う</h3>

まず、jQueryをロードするためのコードを、Archive Indexテンプレートのhead部分に追加します。
<pre class="code">&lt;script src=&quot;&lt;mt:StaticWebPath&gt;jquery/jquery.js&quot;&gt;&lt;/script&gt;
</pre>
今回は手抜きをしてMT5に同梱されているjQueryをロードしましたが、テーマに同梱する場合等を考えて、jQueryライブラリはブログディレクトリにアップロードし、それを読み込むようにした方がベターだと思います。

次に、リストの項目表示部分に「load-skelton」というクラスの指定を追加します。
<pre class="code">&lt;li class=&quot;load-skelton&quot; url=&quot;&lt;$mt:ArchiveLink$&gt;skelton.html&quot;&gt;&lt;$mt:ArchiveTitle$&gt;&lt;/li&gt;
</pre>

そして、load-skeltonクラスの要素をclickした時に、先ほど作成した展開用テンプレートを読み込む動作を指定するためのjQueryのイベントを設定します。今回は、以下のようなコードを&lt;/body&gt;タグの直前に追加しました。

<pre class="code">&lt;script type=&quot;text/javascript&quot;&gt;
$('.load-skelton').click(function(){
    var toggle = $(this).attr('opened');
    if ( toggle &gt; 0 ) {
        $(this).find('.preview-box').remove();
        $(this).removeAttr('opened');
    }
    else {
        var url = $(this).attr('url');
        $(this).append($('&lt;div&gt;').addClass('preview-box').load(url));
        $(this).attr('opened', 1);
    }
});
&lt;/script&gt;</pre>

<h3>まとめ</h3>
カスタマイズは以上です。
肝は、MTのアーカイブを利用して事前に短い静的HTMLファイルを出力しておく事によって、ツリーの展開を動的に、かつ軽快に動作させることが簡単に実現できるという点だと思います。いやあ、MTって本当に便利ですね。enjoy!]]>
    </content>
</entry>

<entry>
    <title>MT5にアップグレードした</title>
    <link rel="alternate" type="text/html" href="http://blog.aklaswad.com/2010/000472.html" />
    <id>tag:blog.aklaswad.com,2010://2.472</id>

    <published>2010-05-02T16:08:26Z</published>
    <updated>2010-05-02T17:05:49Z</updated>

    <summary>MT4 + SQLite &gt;&gt; MT5 + SQLite &gt;&gt; MT5 + MySQL と長い旅路を経てようやく(今更)MT5にアップグレードできました。 色々無茶な拡張を重ねていたので、convert-db実行時に一部データが消失したり等、いくつかのトラブルが発生しましたが、懸念していた文字化けなど、MT本体についてMT4からMT5で大きな変更があった点については、問題なく作業が進みました。一般的な環境での作業なら、ほぼノートラブルでアップグレード出来るのではないかと思います。 幾つかプラグインをドロップしたので、テンプレートもそのままでは再構築できず。えいっとPicoベースに変更しました。すっきりしていて好みのデザインです。 久々にテンプレートのカスタマイズをして、普段使わない脳みその部位が脳肉痛です。Archivesのページでは、前から考えていたAjaxを使ったツリー展開を試してみました。なかなか軽快に動作しているので満足しています。このカスタマイズは後で手順をまとめておこうと思います。乞うご期待! という事で、ゴールデンウィークのまっただ中、丸一日MTと戯れてマジ楽しい一日でした。...</summary>
    <author>
        <name>aklaswad</name>
        <uri>http://blog.aklaswad.com/</uri>
    </author>
    
    <category term="ajax" label="Ajax" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mt4" label="MT4" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mt5" label="MT5" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="pico" label="Pico" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="upgrade" label="upgrade" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.aklaswad.com/">
        <![CDATA[<p>MT4 + SQLite >> MT5 + SQLite >> MT5 + MySQL と長い旅路を経てようやく(今更)MT5にアップグレードできました。<br />
色々無茶な拡張を重ねていたので、convert-db実行時に一部データが消失したり等、いくつかのトラブルが発生しましたが、懸念していた文字化けなど、MT本体についてMT4からMT5で大きな変更があった点については、問題なく作業が進みました。一般的な環境での作業なら、ほぼノートラブルでアップグレード出来るのではないかと思います。</p>

<p>幾つかプラグインをドロップしたので、テンプレートもそのままでは再構築できず。えいっとPicoベースに変更しました。すっきりしていて好みのデザインです。<br />
久々にテンプレートのカスタマイズをして、普段使わない脳みその部位が脳肉痛です。Archivesのページでは、前から考えていたAjaxを使ったツリー展開を試してみました。なかなか軽快に動作しているので満足しています。このカスタマイズは後で手順をまとめておこうと思います。乞うご期待!</p>

<p>という事で、ゴールデンウィークのまっただ中、丸一日MTと戯れてマジ楽しい一日でした。</p>]]>
        
    </content>
</entry>

</feed>

