<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>Technology on Information</title>
        <link>http://tec.toi-planning.net/</link>
        <description>ToI企画の技術情報です</description>
        <language>ja</language>
        <copyright>Copyright 2010</copyright>
        <lastBuildDate>Mon, 01 Mar 2010 14:48:20 +0900</lastBuildDate>
        <generator>http://www.sixapart.com/movabletype/</generator>
        <docs>http://www.rssboard.org/rss-specification</docs>
        
        <item>
            <title>CKEditor for Movable Type 1.04 をリリース</title>
            <description><![CDATA[<p>
バージョン1.04をリリースしました。
</p>

<p>
公開ページに CKEditor を埋め込むという特殊な機能に関する修正のため、管理画面だけで利用をしている場合はアップデートの必要はありません。
</p>

<p>
修正点は以下の通りです。
</p>

<ul>
<li>公開ページに CKEditor を埋め込むタグ「&lt;mt:CKEditorJavaScript /&gt;」の動作を修正しました。(<a href="http://tec.toi-planning.net/mt/ckeditor/tags/#ckeditorjavascript">マニュアル</a>)</li>
</ul>

<a href="http://github.com/usualoma/ckeditor-for-mt/downloads">ダウンロードページ</a>
]]></description>
            <link>http://tec.toi-planning.net/mt/ckeditor/ckeditor-for-movable-type-104/</link>
            <guid>http://tec.toi-planning.net/mt/ckeditor/ckeditor-for-movable-type-104/</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">CKEditorForMT</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">リリース</category>
            
            <pubDate>Mon, 01 Mar 2010 14:48:20 +0900</pubDate>
        </item>
        
        <item>
            <title>CKEditor for Movable Type で利用するタグ</title>
            <description><![CDATA[<div class="tags">
<h2>タグ</h2>

<div class="tag">
<h3 class="name" id="ckeditorjavascript">&lt;mt:CKEditorJavaScript /&gt;</h3>
<h5 class="type_block">function</h5>
<h4 class="description">
CKEditor を使うための JavaScript や CSS を挿入します。MTの管理画面ではなく、公開されたページ内に CKEditor を埋め込むことができるので、公開ページの画面で編集ができるような機能を実装する場合に便利に使うことができます。
</h4>

<h5 class="usage">使いかた</h5>
<hr/>
<pre><code
>&lt;mt:Ignore&gt;textarea に CKEditor を適用します。&lt;/mt:Ignore&gt;
&lt;textarea name=&quot;text&quot; id=&quot;text&quot;&gt;&lt;/textarea&gt;
&lt;mt:CKEditorJavaScript /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
CKEDITOR.replace('text');
&lt;/script&gt;
</code></pre>

<h5 class="modifire">モディファイア</h5>
<hr/>
<dl>
  <dt>wrapper="1 | 0"</dt>
  <dd>MT向けにカスタマイズされたCKEditorを挿入します。ファイルのアップロードボタンを使うためには必要です。(デフォルト: 1)</dd>
  <dt>jquery="1 | 0"</dt>
  <dd>ファイルのアップロードボタンに使われているjQueryを挿入します。テンプレート内ですでに jQuery がロードされている場合には 0 にすることもできます。 (デフォルト: 1)</dd>
  <dt>css="1 | 0"</dt>
  <dd>ファイルのアップロードのモーダルダイアログを表示するための CSS を挿入します。ファイルのアップロードボタンを使う場合は必要だと思いますが、独自に用意をする場合は 0 にすることもできます。 (デフォルト: 1)</dd>
</dl>

</div>

</div>
]]></description>
            <link>http://tec.toi-planning.net/mt/ckeditor/tags/</link>
            <guid>http://tec.toi-planning.net/mt/ckeditor/tags/</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">CKEditorForMT</category>
            
            
            <pubDate>Mon, 01 Mar 2010 14:32:17 +0900</pubDate>
        </item>
        
        <item>
            <title>ウェブサイトのテンプレートを自身の文脈で評価させる</title>
            <description><![CDATA[<div class="column">


<div class="paragraph">

<p>
若干長い題名ですが、内容は難しくありません。MT5でブログ(子)からウェブサイト(親)のテンプレートモジュールを Include した場合、テンプレートは Include 元のブログ(子)の文脈で評価されるのですが、単純に共通パーツとして利用したいテンプレートの場合はウェブサイト(親)の文脈で評価されて欲しい場合もありそうなので、プラグインでこれをできるようにしてみました。
</p>

</div>


<div class="paragraph">

<h3>ForceTemplateContext</h3>

<p>
ForceTemplateContext をインストールするとウェブサイトのテンプレートモジュールの編集画面に「Includeされた場合もこのブログの文脈を使う」という設定が追加され、この設定を有効にすしたテンプレートは Include された場合もウェブサイトの文脈で評価されるようになります。
</p>

<h4>スクリーンショット</h4>

<h3>ウェブサイトのテンプレートモジュールの編集画面</h3>
<p>
<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://tec.toi-planning.net/assets_c/2010/02/ForceTemplateContext-0.0.1-ja.html" onclick="window.open('http://tec.toi-planning.net/assets_c/2010/02/ForceTemplateContext-0.0.1-ja.html','popup','width=524,height=185,scrollbars=yes,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://tec.toi-planning.net/assets_c/2010/02/ForceTemplateContext-0.0.1-ja-thumb-500x176.jpg" width="500" height="176" alt="ForceTemplateContext-0.0.1-ja.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span>
</p>

</div>

<div class="paragraph">

<h3>設置</h3>

<ol>

<li><a href="http://github.com/usualoma/movable-type-plugin-force-template-context/downloads">ダウンロードページ</a>から「ForceTemplateContext-x.x.x.zip」をダウンロードします。(x.x.xにはバージョン番号が入ります)</li>

<li>ダウンロードしたファイルを展開します。</li>

<li>ForceTemplateContext-x.x.x/plugins/ForceTemplateContext を、インストール先のMTに plugins/ForceTemplateContext としてアップロードします。</li>

<li>設置完了です。</li>

</ol>

</div>

<div class="paragraph">
<h3>あわせて使いたい</h3>
<ul>
	<li><a href="http://www.skyarc.co.jp/engineerblog/entry/parentalinclude.html" target="_blank">ParentalInclude</a></li>
	<li><a href="http://chibatch.jp/blog/archives/mt-plugin-include.html" target="_blank">Include</a></li>
</ul>
</div>

<div class="paragraph">
<h3>対応しているMT</h3>
<ul>
	<li>MT5</li>
</ul>
</div>

<div class="paragraph">
<h3>ライセンス</h3>
<h5>MITライセンス</h5>
</div>

</div>
]]></description>
            <link>http://tec.toi-planning.net/mt-column/plugin/post-8/</link>
            <guid>http://tec.toi-planning.net/mt-column/plugin/post-8/</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Plugin</category>
            
            
            <pubDate>Tue, 16 Feb 2010 07:21:04 +0900</pubDate>
        </item>
        
        <item>
            <title>「MTDDC Tokyo」に参加しました</title>
            <description><![CDATA[<div class="column">

<div class="paragraph">

<p>
2010年2月5日に開催された<a href="http://www.movabletype.jp/blog/mtddc_tokyo_report.html" target="_blank">MTDDC Tokyo</a>に参加してきました。
</p>

<p>
カンファレンスには220名以上応募があり、また当日も150人程の方が参加されていたとのことで、大変人気があり、また熱気の高いカンファレンスとなっていました。
</p>

<p>
参加者が多いという話は事前に出ていたので、実は個人的に、内容も広く浅くというものがメインかなと思っていたのですが、そんなことはなく、どのセッションも濃く、また浅いところから深いところまでカバーしている内容で、既にMT5をカスタマイズしながら利用しているユーザーでも得ること多いものばかりでした。
</p>

<p>
各セッションの資料はシックス・アパートさんのサイトで<a href="http://www.movabletype.jp/blog/mtddc_tokyo_report.html" target="_blank">公開</a>されていますし、他の参加者の方の詳細なレポートもあるので、ここでは簡単に、技術者の視点でみてどのように感じたかというところでまとめてみます。
</p>

</div>


<div class="paragraph">

<h3>Movable Type 5 成長するプラットフォーム
<a href="http://www.slideshare.net/sakk/movable-type-5-3076177" target="_blank">資料</a>
</h3>

<p>
MTの事業担当の金子順様からのMT5の総合的なお話でした。
</p>

<p>
前半は、MT5の新機能の紹介に始まり、新機能のコンセプトや想定されている新機能の利用方法などが具体例を交えながら説明されました。テーマについての説明やカテゴリーとカスタムフィールドの連携など、MTをCMSとして利用しているユーザーであればすぐに利用したいと思うような機能の説明がたくさんあったと思います。
</p>

<p>
また後半は、Web制作と運用のにおけるMTの位置付けの話に始まり、フレームワークとしてのMTの話や、また新機能や開発環境の構想の話が続きました。抽象的な部分が多かったですが、随所に技術的に具体的に突っ込んでいる部分もあり、技術者として今後の展開を期待させられるには充分の内容でした。
</p>

</div>


<div class="paragraph">

<h3>テーマの大冒険
<a href="http://blog.aklaswad.com/gaott/" target="_blank">資料</a>
</h3>

<p>
MTの開発者担当の澤田哲様からの、MT5の目玉の新機能であるテーマのお話でした。
</p>

<p>
テーマの話はMT5の勉強会ではいつも話題になるところであり、自分としては充分に理解をしているつもりではあったのですが、<a href="http://github.com/aklaswad/slidon" target="_blank">Slidon</a>のテーマを使っているところを見ながら改めて話を伺うと、使い方に大きな可能性を秘めているということが感じられました。
</p>

<p>
テーマ機能はMT4のテンプレートセットの後継にあたるものですが、テンプレートを複製できるという便利さを引き継ぎつつ、デフォルトのページを追加したりブログの設定等も設定できたりする、とても高機能なものになっています。まだ見ていない方には、是非スライドの資料を見ることをお勧めします。
</p>

</div>


<div class="paragraph">

<h3>書籍紹介</h3>

<p>
毎日コミュニケーションズの角田様と伊佐様からの、これまでに出版されたMT関連書籍の紹介がありました。
</p>

<p>
書籍紹介のお話ではあるのですが、出版された書籍の歴史を追って順に、当時の振り返りや裏話などを含んだストーリーのある話となっており、とても楽しい内容となっていました。
</p>

</div>


<div class="paragraph">

<h3>Brand new API
<a href="http://www.slideshare.net/sakk/mtddc-201025-tokyo-brand-new-api" target="_blank">資料</a>
</h3>

<p>
MTの開発者担当の高山裕司様からの、MT5で新しく追加されたり拡張された機能についてのお話でした。
</p>

<p>

お話があったのは以下の内容についてです。(資料より)

<h4>新しく追加された機能</h4>
<ul>
<li>ウェブサイト</li>
<li>テーマ</li>
<li>版管理(リビジョン管理)</li>
<li>ユーザーダッシュボード</li>
</ul>

<h4>拡張された機能</h4>
<ul>
<li>文字コードのUTF-8への統一</li>
<li>管理者権限のAPI</li>
<li>メニューの構造</li>
<li>ダイナミックパブリッシング</li>
<li>ユーザーインターフェイス</li>
<li>カスタムフィールド</li>
</ul>

個人的には、新しく追加された機能については大体把握をしていたのですが、拡張された機能のうち特に「管理者権限のAPI」と「ユーザーインターフェイス」につては初めて聞く話だったので、とても参考になりました。
</p>

</div>


<div class="paragraph">

<h3>シックス・アパートのWebサイトの管理
<a href="http://www.slideshare.net/sakk/ddc-web" target="_blank">資料</a>
</h3>

<p>
シックス・アパートのWebサイトの管理を担当している広瀬修司様からの、Webサイト管理に関するノウハウのお話でした。
</p>

<p>
大量のページを少人数でどのように管理をしているかという、現場のお話でした。
</p>

<p>
サイトの管理についてはいろいろな方法があるので、ベストプラクティスを決めるというのはとても難しいと思いますが、やるべきこと、またやるべきでないことのまとめなど、大変参考になる内容でした。
</p>

</div>


<div class="paragraph">

<h3>フィードバックのおはなし
<a href="http://www.slideshare.net/sakk/ss-3076999" target="_blank">資料</a>
</h3>

<p>
MTの品質保証チームの井上恵一様からの、フィードバックに関するお話でした。
</p>

<p>
受け付けたフィードバックの扱われ方や、受け付けている内容、また登録の仕方などの話がありました。
</p>

<p>
フィードバックとしては、以下のような内容を受け付けているとのことです。
<ul>
	<li>バグレポート</li>
	<li>機能要望</li>
</ul>
逆に以下の内容はサポートの範囲になるため受け付けられないとのことです。
<ul>
	<li>インストールの仕方が分かりません</li>
	<li>ブログの作り方が分かりません</li>
</ul>

またフィードバックは以下のページ、及びサイトで登録できるようです。
<ul>
	<li><a href="https://mtuser.sixapart.jp/Form/Enquete/Default.aspx?dpid=0&enqid=0000000016">不具合、バグ、機能に関するリクエスト送信フォーム - Six Apart</a></li>
	<li><a href="http://bugs.movabletype.org/">FogBugz</a></li>
</ul>

フォードバックの登録の際の書き方の説明などもありますので、フィードバックを送る場合は資料に目を通すことをお勧めします。
</p>

</div>


<div class="paragraph">

<h3>Lightning Talks</h3>

<p>
シックス・アパートの方々のセッションの後に、Lightning Talks(以下LT) という形で参加者が発表をするセッションが行われました。
</p>

<p>
1つ1つのLTへのコメントはしませんが、皆さんMTへの思い入れの深さを感じさせられる内容でした。
</p>

<p>
以下、一覧はシックス・アパートさんのサイトからの転載です。
</p>

<ol>
    <li>プレビュー表示について: 木本達朗さん</li>
    <li><a href="http://www.slideshare.net/naoaki011/mtddc-tokyo-lt2010-oscar">「最近の」言うなぁ！</a>: 小野崎直昭さん</li>
    <li><a href="http://www.3oclock.com/hello-world/2010/02/mtddc-lightning-talk.html">画で見る機能要望</a>: 伊藤のりゆきさん</li>
    <li>親子関係うまくいっていますか？: <a href="http://www.kigoulab.co.jp/">キゴウラボ</a>小山さん</li>
    <li>MTマーケティング担当からのお願い: シックス・アパート高橋真弓</li>
    <li><a href="http://www.musashinor.net/">武蔵野R</a>の紹介：アライミツルさん</li>
    <li><a href="http://www.imagedrive.jp/movabletype5_x_microformats.pdf">Movable Type 5 x Microformats</a>: 吉村さん</li>
    <li><a href="http://www.slideshare.net/tomohiro555/resize-image-3083923">ResizeImageプラグイン紹介</a>: 森下智弘さん</li>
    <li><a href="http://www.tinybeans.net/blog/2010/02/08-130139.html">続・素人だけどMTが好き：Chotto CMS for MT</a>: 奥脇知宏さん</li>
    <li>MT5開発秘話: シックス・アパート高山裕司</li>
    <li>MT Forum, MT.orgに参加して英語を勉強しよう(仮): <a href="http://smallworld.west-tokyo.com/">にっくさん</a></li>
    <li><a href="http://tec.toi-planning.net/mt/googledocs/">MTで検索といえば...</a>: 天野 卓さん</li>
    <li><a href="http://www.h-fj.com/blog/archives/2010/02/07-231410.php">プラグイン開発セミナーはいかがでしょう？</a>: 藤本 壱さん</li>
    <li><a href="http://www.dakiny.com/archives/event/mtddc_tokyomovable_type_developers_designers_confe/">CkEditor</a>: 蒲生トシヒロさん</li>
    <li><a href="http://junnama.alfasado.net/online/2010/02/mtddclt.html">その日の気分で（空気？）でMT Talk</a>: 野田純生さん</li>
</ol>

</div>


<div class="paragraph">

<h3>まとめ</h3>

<p>
記事の冒頭でも書いたのですが、どのセッションも非常に内容が濃く、終わってみれば6時間にも及ぶ長時間のカンファレンスとなりましたが、技術系MTユーザーとして満足のできる内容でした。
</p>

<p>
また次回のカンファレンスも是非参加したいと思います。
</p>

<p>
皆様ありがとうございました。
</p>

</div>


</div>
]]></description>
            <link>http://tec.toi-planning.net/mt-column/event/mtddc-tokyo/</link>
            <guid>http://tec.toi-planning.net/mt-column/event/mtddc-tokyo/</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Event</category>
            
            
            <pubDate>Sun, 07 Feb 2010 17:52:26 +0900</pubDate>
        </item>
        
        <item>
            <title>Selenium IDE とブックマークレットでテーマを更新する</title>
            <description><![CDATA[<div class="column">


<div class="paragraph">

<h3>ハッカソンLite</h3>

<p>
昨日の MTDDC Tokyo に続き、今日はシックス・アパート株式会社の赤坂オフィスではハッカソンが開催されているとのことですが、私は参加出来なかったため、自宅でハッカソンLiteをしてみました。
</p>

<p>
※今日のブックマークレットとSelenium IDEについては Firefox でのみ動作します。また確認はFirefox 3.5.7でのみ行っています。
</p>

</div>


<div class="paragraph">

<h3>テーマの更新作業</h3>

<p>
MT5に搭載された新しい機能の1つとしてテーマというものがあり、これは初期設定やテンプレートを同じにしたいブログを複製する際に大変便利な機能です。(商店街のWebサイトを作って、各店舗で1つずつブログを持つとか。)
</p>

<p>
<a href="http://blog.aklaswad.com/gaott/" target="_blank">テーマについての説明</a>
</p>

<p>
ただこのテーマ(MT4でのテンプレートセットもそうでしたが)、ブログの複製時には大変便利なのですが、ブログを作ってしまってからテンプレートを更新したい場合には一つ一つ初期化をしなければならず、これは大変面倒な作業となります。(グローバルテンプレートを多用するという手もありますが)
</p>

<p>
そんな背景のもと、今日はテーマの更新作業(テンプレートに関して)を自動化する(ための土台となるデータを作成する)ブックマークレットを作成したので、これを紹介します。
</p>

</div>

<div class="paragraph">

<h3>Selenium ID (今回利用するツール)</h3>

<p>
Webアプリケーションのテストのためのツールとして Selenium というものがあり、また Selenium のテストを実行したり作成したりするための Selenium IDE という Firefox のアドオンがあります。Selenium IDE はテストのためのツールではあるのですが、ブラウザでテストを行うということはすなわち実行(クリックしたりフォームに入力したり)するということで、自動実行のツールとしても便利に使うことができます。
</p>

<p>
以下、この Selenium IDE でテストを行うためのデータをブックマークレットで作ってみます。
</p>

<p>
<a href="https://addons.mozilla.org/ja/firefox/addon/2079" target="_blank">インストールはこちらから</a>
</p>

</div>

<div class="paragraph">

<h3>ブックマークレットと作業手順</h3>

<ol>

<li>
以下のブックマークレットを保存して、MTの管理画面内で実行します。
<br />
<a href="javascript: (function($) { $.fn.mtDialog.open( ScriptURI + '?' + '__mode=dialog_select_weblog&amp;multi=1'); var i = $('#mt-dialog-iframe').get(0); function wait() { var c = i.contentWindow ? i.contentWindow : null; if ( c &amp;&amp; c.Dialog &amp;&amp; c.Dialog.Simple) { c.Dialog.Simple.prototype.close = function() { var header = '&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;%' + '0A&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;%' + '0A&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;en&quot; lang=&quot;en&quot;&gt;%' + '0A&lt;head profile=&quot;http://selenium-ide.openqa.org/profiles/test-case&quot;&gt;%' + '0A&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot; /&gt;%' + '0A&lt;link rel=&quot;selenium.base&quot; href=&quot;&quot; /&gt;%' + '0A&lt;title&gt;テンプレートの更新&lt;/title&gt;%' + '0A&lt;/head&gt;%' + '0A&lt;body&gt;&lt;table cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; border=&quot;1&quot;&gt;&lt;thead&gt;&lt;tr&gt;&lt;td rowspan=&quot;1&quot; colspan=&quot;3&quot;&gt;update_theme&lt;/td&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;'; var str = ''; c.jQuery('input:checked').each(function() { str += '&lt;tr&gt;&lt;td&gt;open&lt;/td&gt;&lt;td&gt;' + ScriptURI + '?__mode=list_template&amp;amp;blog_id=' + this.value + '&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;click&lt;/td&gt;&lt;td&gt;link=テンプレート初期化&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;waitForText&lt;/td&gt;&lt;td&gt;//html[@id=&quot;dialog&quot;]//div[@id=&quot;content-header&quot;]&lt;/td&gt;&lt;td&gt;テンプレート初期化&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;click&lt;/td&gt;&lt;td&gt;backup&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;click&lt;/td&gt;&lt;td&gt;refresh_type_clean&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;click&lt;/td&gt;&lt;td&gt;//button[@type=&quot;submit&quot;]&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;clickAndWait&lt;/td&gt;&lt;td&gt;//button[@type=&quot;button&quot;]&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;'; }); var footer = '&lt;/tbody&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;'; window.open('data:text/html,' + header + str + footer); $.fn.mtDialog.close(); return false; }; } else { setTimeout(wait, 1000); } } setTimeout(wait, 1000); })(jQuery);">テンプレート更新ブックマークレット</a>
</li>

<li>
実行するとブログ選択画面になるので、テンプレートの更新をしたいブログにチェックを入れて「OK」ボタンを押します。
</li>

<li>
(テストの)実行手順を指定するHTMLが開かれるので、このページを名前を付けて保存をします。
</li>

<li>
Selenium IDE を開き、「ファイル > テストケースを開く」から保存したHTMLを読み込みます。
</li>

<li>
「テストスイート全体を実行」ボタンを押して実行します。
</li>

<li>
テンプレートの反映作業が進行します。
</li>

</ol>

</div>

<div class="paragraph">

<h3>デモ</h3>

<object
	classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
	codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"
	width="508"  height="390"
>
	<param name="allowFullScreen" value="true" />
	<param name="movie" value="http://tec.toi-planning.net/selenium_ide_bookmarklet.swf" />
	<embed
		src="http://tec.toi-planning.net/selenium_ide_bookmarklet.swf"
		allowFullScreen="true" width="508" height="390"
		type="application/x-shockwave-flash"
		pluginspage="http://www.macromedia.com/go/getflashplayer"
	/>
</object>

<p>
ムービー全体が表示されない場合はこちらのリンクから表示をしてください。<br />
<a href="http://www.screencast.com/users/usualoma/folders/Jing/media/0ceabb2b-c5ef-4f73-bce5-131f7600b968" target="_blank">ムービー</a>
</p>

</div>

<div class="paragraph">

<h3>お疲れさまでした</h3>

<p>
かけ足ですみませんが、以上が私のハッカソンLiteでした。本会場の方、また自宅でハッカソンの方、皆様お疲れさまでした。
</p>

</div>

</div>
]]></description>
            <link>http://tec.toi-planning.net/mt-column/tips/selenium-ide-and-bookmarklet/</link>
            <guid>http://tec.toi-planning.net/mt-column/tips/selenium-ide-and-bookmarklet/</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Tips</category>
            
            
            <pubDate>Sat, 06 Feb 2010 17:16:47 +0900</pubDate>
        </item>
        
        <item>
            <title>GoogleDocs for Movable Type の紹介</title>
            <description><![CDATA[<div class="usage">

<div class="what">

<h3>スライド</h3>

<div style="width:425px;text-align:left;margin: auto;" id="__ss_3074980"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/usualoma/mt-lt-20100205-3074980" title="MT LT 20100205">MT LT 20100205</a><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mt-lt-20100205-100204174125-phpapp01&stripped_title=mt-lt-20100205-3074980" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mt-lt-20100205-100204174125-phpapp01&stripped_title=mt-lt-20100205-3074980" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object><div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">presentations</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/usualoma">Taku Amano</a>.</div></div>

</div>

<div class="what">

<h3>ムービー</h3>

<object
	classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
	codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"
	width="508"  height="390"
>
	<param name="allowFullScreen" value="true" />
	<param name="movie" value="http://tec.toi-planning.net/mt/googledocs/GoogleDocs-0.1.0-ja.swf" />
	<embed
		src="http://tec.toi-planning.net/mt/googledocs/GoogleDocs-0.1.0-ja.swf"
		allowFullScreen="true" width="508" height="390"
		type="application/x-shockwave-flash"
		pluginspage="http://www.macromedia.com/go/getflashplayer"
	/>
</object>

<p>
ムービー全体が表示されない場合はこちらのリンクから表示をしてください。<br />
<a href="http://www.screencast.com/users/usualoma/folders/Jing/media/affbfd2e-57a8-4438-8739-7c47ffb94f95" target="_blank">ムービー</a>
</p>

</div>

</div>]]></description>
            <link>http://tec.toi-planning.net/mt/googledocs/demo/</link>
            <guid>http://tec.toi-planning.net/mt/googledocs/demo/</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">GoogleDocs for Movable Type</category>
            
            
            <pubDate>Fri, 05 Feb 2010 17:13:37 +0900</pubDate>
        </item>
        
        <item>
            <title>GoogleDocs for Movable Type とは</title>
            <description><![CDATA[<div class="usage">

<div class="what">

<h3>できること</h3>
<ul>
	<li>GoogleDocs を使ってページやアイテムの検索を行うことができます。</li>
</ul>

<h3>できないこと / 注意するべきこと</h3>
<ul>
        <li>α版としてリリースをしていますが、現在はプロトタイプに近い状態です。不具合や実装されていない機能があります。</li>
	<li>GoogleDocsのIDとパスワードを暗号化せずにデータベースに保存をしているので、データベースのデータが盗まれた場合はGoogleDocsのアカウント情報も盗まれる可能性があります。</li>
	<li>不具合により既存のGoogleDocのデータが消去される可能性があるので、大事なデータの入っているアカウントは設定しないでください。</li>
</ul>

</div>

<div class="arch">
<h3>対応しているMT</h3>
<ul>
	<li>MT5</li>
</ul>
</div>

<div class="install">

<h3>プラグインのインストール</h3>
<ol>
  <li>依存関係にある<a href="http://tec.toi-planning.net/mt-column/plugin/apimt/">SearchEngine</a>プラグインをインストールします。</li>
  <li>依存関係にある<a href="http://tec.toi-planning.net/mt/assetarchives/">AssetArchives</a>プラグインをインストールします。</li>
  <li><a href="http://github.com/usualoma/google-docs-for-mt/downloads">ダウンロードページ</a>から「GoogleDocs-x.x.x.zip」をダウンロードします。(x.x.xにはバージョン番号が入ります)</li>
  <li>ダウンロードしたファイルを展開します。</li>
  <li>GoogleDocs-x.x.x/plugins/GoogleDocs を、インストール先のMTに plugins/GoogleDocs としてアップロードします。</li>
  <li>GoogleDocs-x.x.x/theme/google_docs_theme を、インストール先のMTに theme/google_docs_theme としてアップロードします。</li>
  <li>設置完了です。</li>
</ol>

<h3>プラグインの設定</h3>
<ol>
  <li>テーマに「GoogleDocs」を指定してブログを作成します。</li>
  <li>「ブログのプラグイン設定」でGoogleDocsのアカウント情報を登録します。</li>
  <li>設定完了です。</li>
</ol>

<h3>検索の仕方</h3>
<ol>
  <li>「検索フォーム」ウィジェットがカスタマイズされているので、サイドバーの検索フォームからGoogleDocsを使った検索を行うことができます。</li>
  <li>「AJAX検索ページ」のテンプレートでAJAX検索を行うことができます。</li>
</ol>

</div>


<div class="install">

<h3>GoogleDocsのテーマについて</h3>
ほとんどのテンプレートで「クラッシックブログ」のテンプレートがそのまま使われていますが、以下のファイルがカスタマイズされています。

<h4>ブログテンプレートの管理</h4>

<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://tec.toi-planning.net/assets_c/2010/02/GoogleDocs-list_template.html" onclick="window.open('http://tec.toi-planning.net/assets_c/2010/02/GoogleDocs-list_template.html','popup','width=970,height=1902,scrollbars=yes,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://tec.toi-planning.net/assets_c/2010/02/GoogleDocs-list_template-thumb-500x980.jpg" width="500" height="980" alt="GoogleDocs-list_template.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span>

<h4>ブログウィジェットの管理</h4>

<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://tec.toi-planning.net/assets_c/2010/02/GoogleDocs-list_widget.html" onclick="window.open('http://tec.toi-planning.net/assets_c/2010/02/GoogleDocs-list_widget.html','popup','width=970,height=1509,scrollbars=yes,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://tec.toi-planning.net/assets_c/2010/02/GoogleDocs-list_widget-thumb-500x777.jpg" width="500" height="777" alt="GoogleDocs-list_widget.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span>

</div>

<div class="license">

<h3>ライセンス (プラグイン)</h3>
<h5>MITライセンス</h5>

<h3>ライセンス (テーマ)</h3>
<h5>GPL</h5>

</div>

</div>
]]></description>
            <link>http://tec.toi-planning.net/mt/googledocs/about/</link>
            <guid>http://tec.toi-planning.net/mt/googledocs/about/</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">GoogleDocs for Movable Type</category>
            
            
            <pubDate>Fri, 05 Feb 2010 17:10:37 +0900</pubDate>
        </item>
        
        <item>
            <title>AssetArchives とは</title>
            <description><![CDATA[<div class="usage">

<div class="what">

<h3>できること</h3>
<ul>
	<li>1つ1つのアイテムに対してアーカイブファイル(htmlやphp)を生成することができます</li>
	<li>ブログ記事のアーカイブテンプレートでアーカイブマッピングとして指定することができます</li>
</ul>

<h3>使用例</h3>
<ul>
	<li>アップロードされたそれぞれのflvファイルに対してプレイヤーのHTMLを出力する</li>
</ul>

</div>

<div class="arch">
<h3>対応しているMT</h3>
<ul>
	<li>MT5</li>
</ul>
</div>

<div class="arch">
<h3>対応している出力方法</h3>
<ul>
	<li>スタティックパブリッシング</li>
        <li>(ダイナミックパブリッシングは未対応)</li>
</ul>
</div>

<div class="install">
<h3>インストール</h3>
<ol>
  <li><a href="http://github.com/usualoma/movable-type-plugin-asset-archives/downloads">ダウンロードページ</a>から「AssetArchives-x.x.x.zip」をダウンロードします。(x.x.xにはバージョン番号が入ります)</li>
  <li>ダウンロードしたファイルを展開します。</li>
  <li>AssetArchives-x.x.x/plugins/AssetArchives を、インストール先のMTに plugins/AssetArchives としてアップロードします。</li>
  <li>設置完了です</li>
</ol>
</div>

<div class="license">
<h3>ライセンス</h3>
<h5>MITライセンス</h5>
</div>

<div class="arch">
<h3>スクリーンショット</h3>

<p>
エントリーアーカイブでのアーカイブマッピングの設定
</p>

<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://tec.toi-planning.net/assets_c/2010/02/AssetArchives-0.1.1-ja.html" onclick="window.open('http://tec.toi-planning.net/assets_c/2010/02/AssetArchives-0.1.1-ja.html','popup','width=824,height=390,scrollbars=yes,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://tec.toi-planning.net/assets_c/2010/02/AssetArchives-0.1.1-ja-thumb-500x236.jpg" width="500" height="236" alt="AssetArchives-0.1.1-ja.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span>

</div>

</div>
]]></description>
            <link>http://tec.toi-planning.net/mt/assetarchives/about/</link>
            <guid>http://tec.toi-planning.net/mt/assetarchives/about/</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">AssetArchives</category>
            
            
            <pubDate>Thu, 04 Feb 2010 08:00:18 +0900</pubDate>
        </item>
        
        <item>
            <title>Net::FTP::Find</title>
            <description><![CDATA[<div class="usage">

<div class="what">

<h3><a href="http://search.cpan.org/dist/Net-FTP-Find/">Net::FTP::Find</a>とは何か</h3>
<ul>
	<li>Net::FTPを通じてFile::Findのような処理を行うためのライブラリです</li>
</ul>

</div>

<div class="what">

<h3>特徴</h3>
<ul>
	<li>File::Find とほぼ同じ感覚で FTP の接続先のディレクトリを辿ることができます。</li>
</ul>

</div>

<div class="what">

<h3>できないこと / 注意するべきこと</h3>
<ul>
        <li>Net::FTP::Findの問題ではありませんが、FTPはパスワードを平文でネットワークに流すため、インターネット上で利用するとパスワードを盗まれる危険性があります。</li>
</ul>

</div>

<div class="manual">

<h3>使い方</h3>
<ul>
	<li><a href="http://search.cpan.org/dist/Net-FTP-Find/lib/Net/FTP/Find.pm">http://search.cpan.org/dist/Net-FTP-Find/lib/Net/FTP/Find.pm</a></li>
</ul>

</div>

<div class="license">

<h3>ライセンス</h3>
<h5>MITライセンス</h5>

</div>


</div>]]></description>
            <link>http://tec.toi-planning.net/perl/lib/net-ftp-find/</link>
            <guid>http://tec.toi-planning.net/perl/lib/net-ftp-find/</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">lib</category>
            
            
            <pubDate>Wed, 03 Feb 2010 08:50:27 +0900</pubDate>
        </item>
        
        <item>
            <title>Test::FTP::Server</title>
            <description><![CDATA[<div class="usage">

<div class="what">

<h3><a href="http://search.cpan.org/dist/Test-FTP-Server/">Test::FTP::Server</a>とは何か</h3>
<ul>
	<li>テストのためのFTPサーバーを起動します</li>
</ul>

</div>

<div class="what">

<h3>特徴</h3>
<ul>
	<li>Perlのみで実装されている<a href="http://search.cpan.org/dist/Net-FTPServer/">Net::FTPServer</a>を利用してFTPサーバーを起動します。特定のFTPサーバーアプリケーションには依存をしていません。</li>
	<li>サーバーの設定やユーザーの定義(ユーザーID、パスワード、ホームディレクトリ)を起動時のパラメーターとして渡すことができます。</li>
</ul>

</div>

<div class="what">

<h3>できないこと / 注意するべきこと</h3>
<ul>
        <li>Net::FTPServerの挙動が若干不安定かもしれません。</li>
	<li>FTPのルートディレクトリとして特定のディレクトリを指定することができますが、chrootを使ったものではないため、セキュリティ的には万全ではないかもしれません。</li>
</ul>

</div>

<div class="manual">

<h3>使い方</h3>
<ul>
	<li><a href="http://search.cpan.org/dist/Test-FTP-Server/lib/Test/FTP/Server.pm">http://search.cpan.org/dist/Test-FTP-Server/lib/Test/FTP/Server.pm</a></li>
</ul>

</div>

<div class="license">

<h3>ライセンス</h3>
<h5>MITライセンス</h5>

</div>

</div>
]]></description>
            <link>http://tec.toi-planning.net/perl/lib/test-ftp-server/</link>
            <guid>http://tec.toi-planning.net/perl/lib/test-ftp-server/</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">lib</category>
            
            
            <pubDate>Wed, 03 Feb 2010 08:50:25 +0900</pubDate>
        </item>
        
        <item>
            <title>MT5でのログイン直後のページとBypassDashboardプラグイン</title>
            <description><![CDATA[<div class="column">


<div class="paragraph">

<h3>MT5でのログイン直後のページ</h3>

<p>
MT5ではトップページとして「ユーザーダッシュボード」という概念が追加されたのですが、この「ユーザーダッシュボード」についてある人から、「ログイン直後は必ずユーザーダッシュボードが表示されるのですか？」と質問をされて不安になったので、ちょっと調べてみました。
</p>

<p>
結論としては、MT5では「ログイン直後は必ず...」ということで間違いないようです。
MT4の時にあった「前回のセッションで最後に作業をしていたブログのダッシュボードが表示する」という機能はなくなっていました。
</p>

</div>


<div class="paragraph">

<h3>BypassDashboard</h3>

<p>
上記のような「ログイン直後は必ずユーザーダッシュボード表示される」という仕様は、利用マニュアルを作る際などはとても便利な仕様だと思います。
</p>

<p>
ただ一方で、1つのブログにしか権限をもっていないユーザーにとってはログイン時に常に、「ユーザーダッシュボード &gt; 管理するブログのダッシュボード」と進まなければいけないのは面倒で、また「ダッシュボード」らしきものが複数あるのはちょっと分かりにくい面もあると思います。
</p>

<p>
そこで、そのようなケースをフォローするために BypassDashboard というプラグインを作りました。
</p>

<p>
BypassDashboardをインストールすると、「1つのブログにしか権限を持っていないユーザー」がログインをした際には「ユーザーダッシュボード」ではなく「権限を持っているブログのダッシュボード」が表示されます。また左上の「Movable Type」のロゴをクリックした際にも同様に「ブログのダッシュボード」が表示されます。
</p>

<p>
<a href="http://code.google.com/p/toiplan-mtplugin-directory/downloads/list?q=label:BypassDashboard" target="_blank">BypassDashboardのダウンロード</a>
</p>

<p>
よろしければお使いください。
</p>

</div>

</div>
]]></description>
            <link>http://tec.toi-planning.net/mt-column/tips/bypass-dashboard/</link>
            <guid>http://tec.toi-planning.net/mt-column/tips/bypass-dashboard/</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Tips</category>
            
            
            <pubDate>Tue, 02 Feb 2010 08:50:10 +0900</pubDate>
        </item>
        
        <item>
            <title>MT5でテンプレート編集フォームをテキストエリアにする5つの方法</title>
            <description><![CDATA[<div class="column">


<div class="paragraph">

<h3>MT5でのテンプレート編集フォーム</h3>

<p>
MT5ではテンプレートの編集フォームにCodeMirrorが採用され、シンタックスハイライトのオンとオフを切り替えることができなくなりました。
</p>

<p>
ただ、シンタックスハイライトは綺麗でよいのですが、CodeMirrorでは「タブ文字」が認識されなかったり、編集領域が「iframe」になってしまうため「textarea」であることを前提にしたブラウザのプラグインが利用できなかったり、また単純に重いなど、利用の仕方や環境によっては不便な場合もあるようです。
</p>

<p>
今回はこれを解消する方法を5つ(他のブログで紹介されている方法を2つと独自の方法を3つ)紹介します。
</p>

</div>


<div class="paragraph">

<p>
まずは(1)〜(2)として、既に他のサイトで公開をされている方法を紹介します。
</p>

</div>


<div class="paragraph">

<h3>(1) MTのプラグインで無効にする</h3>

<p>
この問題を解決する方法として一番最初に紹介されたものだと思いますが、<a href="" target="_blank">小粋空間</a>さんが公開されている<a href="http://www.koikikukan.com/archives/2009/09/11-005555.php" target="_blank">InvalidateCodeMirror プラグイン</a>というものがあります。
</p>

<p>
このプラグインではテンプレート編集画面のHTMLソースを書き換えてCodeMirrorが有効にならないようにしていますので、ブラウザを問わず有効で、かつCodeMirrorが重いという問題も解消されます。
</p>

</div>


<div class="paragraph">

<h3>(2) テンプレートのソースファイルを書き換える</h3>

<p>
また別の方法として、<a href="http://npass.net/" target="_blank">えぬぱすどっとねっと</a>さんが<a href="http://npass.net/archives/2010/01/mt5_edit_template.php" target="_blank">MT5のテンプレート編集画面を軽快にする方法</a>というものも公開をされています。
</p>

<p>
これも(1)と同様に、テンプレート編集画面のHTMLソースを書き換えてCodeMirrorが有効にならないようにするという方法を採用しているので、ブラウザを問わず有効で、かつCodeMirrotが重いという問題も解消されます。
</p>

</div>

<div class="paragraph">

<p>
これ以降、(3)〜(5)がこのサイトで新しく紹介する方法です。
</p>

<p>
(1)と(2)の方法ではサーバー上のMTに手を入れるため、ブラウザを問わず有効ですし、またCodeMirrorも有効にならないため軽量化もできるという優れた点があるのですが、ただ例えば、「ちょっとテンプレートが分からないので見てほしい」とか「プラグインを自由にインストールすることができない」とかいった場合には対応ができないというところがありました。
</p>

<p>
そこでこれ以降の方法ではサーバー上のMTではなく、ブラウザ(※1)に手を入れてtextareaで編集できるようにしようというアプローチで進めていきます。<br />
(※1) (4)と(5)はFirefox限定
</p>

</div>

<div class="paragraph">

<h3>(3) ブックマークレットを使う</h3>

<p>
任意のページをアドホックに変更する場合はブックマークレットが便利なので、これを使ってみます。(どのブラウザでも動作します)
</p>

<p>
以下のリンクをブックマークして、MTのテンプレート編集ページで実行してください。
</p>

<p>
<a href="javascript:(function(){window.editor.getCode=null;jQuery('#text').show().attr('rows', 30);jQuery('.CodeMirror-wrapping').hide()})();">TextareaForMT</a>
</p>

<p>
以下のようなコードになっています。
</p>

<pre><code
>javascript:(function(){window.editor.getCode=null;jQuery('#text').show().attr('rows', 30);jQuery('.CodeMirror-wrapping').hide()})();
</code></pre>

</div>

<div class="paragraph">

<h3>(4) Greasemonkeyスクリプトを使う</h3>

<p>
(3)ではテンプレート編集ページを開くたびにブックマークレットを実行する必要がありますが、Firefoxにはこういったスクリプトを自動で適用してくれる<a href="https://addons.mozilla.org/ja/firefox/addon/748" target="_blank">Greasemonkey</a>というアドオンがありますので、(3)と同じ内容でGreasemonkeyスクリプトを用意しました。
</p>

<p>
以下のリンクをクリックするとインストールできます。
</p>

<p>
<a href="http://tec.toi-planning.net/textareaformt5/TextareaForMT5.user.js">TextareaForMT.user.js</a>
</p>

<p>
以下のようなコードになっています。
</p>

<pre><code
>// ==UserScript==
// // @name         TextareaForMT5
// // @namespace    http://github.com/usualoma/textarea-for-mt5
// // @description  Editing template by plain textarea.
// // @include      http://*
// // @exclude
// // ==/UserScript==
if (
	(typeof unsafeWindow.MT !== 'undefined')
	&amp;&amp; (typeof unsafeWindow.jQuery !== 'undefined')
) {
	(function() {
		var $ = unsafeWindow.jQuery;
		var code_mirror = $('#template-body-field .CodeMirror-wrapping');
		if (code_mirror.length) {
			setTimeout(function() {
				unsafeWindow.editor.getCode = null;
				code_mirror.hide();
				$('#text').attr('rows', 30).show();
			}, 1000);
		}
	})();
}
</code></pre>

<p>
setTimeoutで1秒間を空けているのは、原因ははっきり分からないのですがこれを入れないとエラーになったからです。
</p>

</div>

<div class="paragraph">

<h3>(5) Firefoxのアドオンにする</h3>

<p>
(4)のGreasemonkeyスクリプトで多くの場合要件は満たすことができると思うのですが、一度初期化はされるためtextareaになる前に一瞬CodeMirrorでハイライトされたソースが表示されることもあり、若干気になります。
</p>

<p>
また誰かに奨めるときに、「Greasemonkeyはインストールされている？」と確認するのも若干面倒です。
</p>

<p>
というところで、「ブラウザに手を入れる方法でも最初から初期化されないようにしたい」かつ「Firefoxであれば難しいことを言わないで使えるようにしたい」という方針で、Firefoxのアドオンを作ってみました。
</p>

<p>
<a href="http://tec.toi-planning.net/textareaformt5/textareaformt5-1.0.xpi">TextareaForMT5</a><br />
※開発中のため動作が不安定の可能性もありますが、ご了承ください。
</p>

<p>
このプラグインを入れるとMT5のテンプレート編集画面でも最初からCodeMirrorが入っていないかのようにtextareaが表示されます。またインストール後「ツール &gt; アドオン &gt; TextareaForMT5」からテキストエリアの高さも指定することができます。
</p>

</div>

<div class="paragraph">

<h3>まとめ</h3>

<p>
MTに手を入れる方法(1)〜(2)からブラウザに手を入れる方法(3)〜(5)まで、5つの方法の紹介でした。
</p>

<p>
MT5ではテンプレートもMTでリビジョン管理ができるので、ブラウザで編集をして管理する方法もより積極的に行ってよいのではと考えています。なのでそんな意味でも、MTがデフォルトでtextareaで編集をさせてくれるオプション持っていればいいのにと思いつつ、今回はアドオンの作成などしてみました。
</p>

</div>

</div>
]]></description>
            <link>http://tec.toi-planning.net/mt-column/tips/textarea-for-mt5/</link>
            <guid>http://tec.toi-planning.net/mt-column/tips/textarea-for-mt5/</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Tips</category>
            
            
            <pubDate>Mon, 01 Feb 2010 08:50:00 +0900</pubDate>
        </item>
        
        <item>
            <title>CKEditor for Movable Type 1.03 をリリース</title>
            <description><![CDATA[<p>
バージョン1.03をリリースしました。
</p>

<p>
修正点は以下の通りです。
</p>

<ul>
<li>「フォントの設定 > 指定可能なフォントサイズ」と「フォントの設定 > 指定可能なフォント」の設定が反映されない不具合が修正されました。</li>
</ul>

<a href="http://github.com/usualoma/ckeditor-for-mt/downloads">ダウンロードページ</a>]]></description>
            <link>http://tec.toi-planning.net/mt/ckeditor/ckeditor-for-movable-type-103/</link>
            <guid>http://tec.toi-planning.net/mt/ckeditor/ckeditor-for-movable-type-103/</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">CKEditorForMT</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">リリース</category>
            
            <pubDate>Thu, 28 Jan 2010 22:20:28 +0900</pubDate>
        </item>
        
        <item>
            <title>_Build</title>
            <description><![CDATA[<div class="usage">

<div class="what">

<h3>これは何か</h3>
<ul>
	<li><a href="http://search.cpan.org/dist/Module-Build/" target="_blank">Module::Build</a> で生成される「Build」に対して補完を行なうための <a href="http://www.zsh.org/" target="_blank">zsh</a> のスクリプトです。</li>
</ul>

</div>

<div class="script">

<h3>スクリプト (_Build)</h3>

<pre><code
>#compdef Build

typeset -A opt_args
local context state line

local actions
actions=$(
    _call_program actions $words[1] help 2>/dev/null |
    sed -e '0,/Actions defined/d;/for details on an individual action/,$d'
)

local arguments_args
arguments_args=(":actions:($actions)")
if test "$words[2]" = "help"; then
    arguments_args+=(":help_actions:($actions)")
else
    arguments_args+=("*:file:_files -/")
fi

_arguments $arguments_args && return 0

return 0
</code></pre>

</div>

<div class="usage">

<h3>設定例</h3>

<p>
スクリプトを $HOME/.zsh/func/_Build に保存をして、.zshrc を以下のように設定します
</p>

<pre><code
>fpath=($fpath $HOME/.zsh/func)
autoload -Uz compinit
compinit
</code></pre>

</div>

<div class="reference">

<h3>参考サイト</h3>

<p>
<a href="http://www.ayu.ics.keio.ac.jp/~mukai/translate/write_zsh_functions.html" target="_blank">zsh補完関数の書き方</a>
</p>

</div>

</div>]]></description>
            <link>http://tec.toi-planning.net/tool/zsh/-build/</link>
            <guid>http://tec.toi-planning.net/tool/zsh/-build/</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">zsh</category>
            
            
            <pubDate>Thu, 14 Jan 2010 13:28:05 +0900</pubDate>
        </item>
        
        <item>
            <title>PHP::Var</title>
            <description><![CDATA[<div class="usage">

<div class="what">

<h3><a href="http://search.cpan.org/~usualoma/PHP-Var/">PHP::Var</a>とは何か</h3>
<ul>
	<li>PerlのハッシュやリストをPHPのソースコードとしてエクスポートするためのPerlのライブラリです。</li>
</ul>

</div>


<div class="what">

<h3>特徴</h3>
<ul>
	<li>「Perlで作成したデータ構造をPHPのソースコードとして書き出す」ということに特化しているためエクスポートが高速です。</li>
	<li>インポートの際はPHP側でコードとして評価されるため、serializeしたものをunserializeするよりも低速です。</li>
</ul>

</div>


<div class="what">

<h3>できないこと</h3>
<ul>
	<li>PHPのデータをPerlへインポートすることはできません。</li>
	<li>blessされたオブジェクトを意味のある形でエクスポートすることはできません。(qq("")がオーバーロードされている場合はスカラーとしてエクスポートされます。)</li>
</ul>

</div>


<div class="manual">

<h3>使い方</h3>
<ul>
	<li><a href="http://search.cpan.org/~usualoma/PHP-Var/lib/PHP/Var.pm">http://search.cpan.org/~usualoma/PHP-Var/lib/PHP/Var.pm</a></li>
</ul>

</div>


<div class="what">

<h3>ベンチマーク</h3>

<p>
Perlで作成したデータ構造をPHPへ渡す機能をもつライブラリとして<a href="http://search.cpan.org/~miyagawa/PHP-Session/lib/PHP/Session/Serializer/PHP.pm">PHP::Session::Serializer::PHP</a> がありますので、これと比較しつつ、サンプルデータでベンチマークをとってみました。<br />
(PHP::Session::Serializer::PHPはPHPでserializeしたデータをPerlのデータ構造にunserializeする機能もあったり、またPHPのclassも扱うこともできたりする高機能で汎用性のあるライブラリです。)
</p>

<h4>スクリプト</h4>
<pre><code
>#!/usr/bin/perl

use strict;
use warnings;

use File::Temp qw/ tempfile /;

use PHP::Var;
use PHP::Session::Serializer::PHP;
my $serializer = PHP::Session::Serializer::PHP-&gt;new;

use Benchmark qw(cmpthese);

my %data = ();
foreach my $k1 ('a' .. 'z') {
    $data{$k1} = {};
    foreach my $k2 (1 .. 10) {
        $data{$k1}{$k2} = [
        'a' x 1000, 'b' x 1000, '&quot;' x 20, &quot;'&quot; x 20, '\\' x 20,
        ],
    }
}

sub php_session {
    my $enc = $serializer-&gt;encode(@_);
}

sub php_var {
    my $enc = PHP::Var::export(@_);
}

cmpthese(1_00, {
    serialize =&gt; sub { &amp;php_session(\%data) },
    php_var =&gt; sub { &amp;php_var(\%data) },
    php_var_purity =&gt; sub { &amp;php_var('purity' =&gt; 1, \%data) },
    php_var_enclose =&gt; sub { &amp;php_var('enclose' =&gt; 1, \%data) },
});

print(&quot;\n&quot;);

sub _tempfile {
    my $data = shift;
    my ($fh, $fn) = tempfile();
    print($fh $data);
    close($fh);
    $fn;
}

my $sess_data = &amp;_tempfile(&amp;php_session(\%data));
my $sess = &amp;_tempfile(
    &quot;&lt;?php \$var = unserialize(file_get_contents('$sess_data')); ?&gt;&quot;
);

my $var_code = &amp;_tempfile(&amp;php_var('enclose' =&gt; 1, 'var' =&gt; \%data));
my $var = &amp;_tempfile(&quot;&lt;?php include('$var_code'); ?&gt;&quot;);

my $eval_data = &amp;_tempfile(&amp;php_var(\%data));
my $eval = &amp;_tempfile(&quot;&lt;?php eval(file_get_contents('$eval_data')); ?&gt;&quot;);

cmpthese(1_00, {
    unserialize =&gt; sub { system(&quot;php $sess&quot;) },
    code_embed =&gt; sub { system(&quot;php $var_code&quot;) },
    code_include =&gt; sub { system(&quot;php $var&quot;) },
    'eval' =&gt; sub { system(&quot;php $eval&quot;) },
});
</code></pre>

<h4>結果</h4>
<pre><code
>                  Rate    serialize php_var_enclose php_var_purity       php_var
serialize       34.6/s           --            -22%           -27%          -27%
php_var_enclose 44.6/s          29%              --            -5%           -6%
php_var_purity  47.2/s          36%              6%             --           -1%
php_var         47.6/s          38%              7%             1%            --

               Rate         eval code_include   code_embed  unserialize
eval         30.4/s           --          -1%          -3%         -32%
code_include 30.6/s           1%           --          -3%         -32%
code_embed   31.4/s           3%           3%           --         -30%
unserialize  44.8/s          48%          47%          43%           --
</code></pre>

<p>
一般的なケースでは書き出しよりも読み込みの頻度の方が高いと思うので、<a href="http://search.cpan.org/~miyagawa/PHP-Session/lib/PHP/Session/Serializer/PHP.pm">PHP::Session::Serializer::PHP</a> と比較して速度的には劣ることが多いです。
</p>

</div>


<div class="license">

<h3>ライセンス</h3>
<h5>MITライセンス</h5>

</div>


</div>
]]></description>
            <link>http://tec.toi-planning.net/perl/lib/php-var/</link>
            <guid>http://tec.toi-planning.net/perl/lib/php-var/</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">lib</category>
            
            
            <pubDate>Thu, 14 Jan 2010 07:24:17 +0900</pubDate>
        </item>
        
    </channel>
</rss>
