Dec 26, 2007

MT4で「真の」 Perl版ダイナミック・パブリッシングを実現する

まず。MT 4.0でも多分動かないと思うのだけど、Boomerでもmt-view.cgiは動かない。MT::App::Viewerを見ると実装しかけで放置してあるように見える。見えない?

例によって動作するようにしてみた。以下はパッチ。

変更するファイルは、lib/MT/App/Viewer.pmのみ。MT4.0以降のバージョンなら適用可能なはず。なんせこのファイルはMT 4.0 beta6あたりから変更された形跡がない。

簡単な使い方

さて準備ができたところで、ブログのルートディレクトリに.htaccessを作って以下のように設定する。

Options -Indexes +SymLinksIfOwnerMatch
<IfModule mod_rewrite.c>
  <IfModule mod_dir.c>
    DirectoryIndex index.php index.html index.htm default.htm default.html default.asp /MTDIR/mt-view.cgi?blog_id=X
  </IfModule>
  RewriteEngine on
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ /MTDIR/mt-view.cgi?blog_id=X [L,QSA]
</IfModule>
<IfModule !mod_rewrite.c>
  ErrorDocument 404 /MTDIR/mt-view.cgi?blog_id=X
  ErrorDocument 403 /MTDIR/mt-view.cgi?blog_id=X
</IfModule>

要は、ダイナミックパブリッシングのときに生成される.htaccess中の「/BLOGDIR/mtview.php」を「/MTDIR/mt-view.cgi?blog_id=X」で置き換えたもの。XはそのブログのIDね。

試しに/BLOGDIR/の下にあるアーカイブファイルを一つ削除した上で、そのファイルを指すURLをブラウザでアクセスしてみるとよい。ページが表示されることが確認できるだろう。

...もっさりしてるけど。

あなたが「もっさりしてるけど我慢できなくはない。」という種類の人(M=もっさり好き)か「もっさりしてる。だがそれがいい!」という種類の人(ドM=ドが付くほどもっさり好き)の場合には、すっかりこの「真の」Perl版ダイナミック・パブリッシングに移行してしまってもいい。追加で以下の作業を行えばよいだけだ。

  1. Movable Typeで生成したアーカイブファイルを削除する
  2. CMSで「バックグラウンドのキューを使って再構築を行う」設定にする

おまけ

誤解はしようがないと思うけれども、Perl版ダイナミック・パブリッシング(MT4用) - The blog of H.Fujimoto再構築なんてこわくない! (Junnama Online (Mirror))などのエフォートを軽視しているわけではない。これらはページ閲覧時にそのページを再構築して生成された実ファイルを一種のキャッシュとして使う。そのことはメリットとして謳っていい。だが、率直に言えば、MT::WeblogPublisherがアーカイブのレンダリングとファイルの生成を「モノリシックに実行すること」しかできないので、それを使う限りそうするしかなかったし、それがたまたま目的に合致していて都合がよかった、のだ。

これに対して、このエントリーで私が示したかったのは、MT::WeblogPublisherに依存することなく、アーカイブのレンダリングとファイルの生成を「分離できること」である。改造版のMT::App::Viewerは、blog_idとURIだけを入力として受け取り、対象のアーカイブをオンメモリでレンダリングし、その結果をas isでブラウザに対して出力する。キャッシュが必要ならばmod_cacheを使うかMT::App::Viewerをさらに改造して内部的にキャッシュすればよいし、ブラウザに出力する以外の目的で使いたければそう改造すればよい。

本当のところを言えば、MT::WeblogPublisherをリファクタリングして欲しい(したい)。とりあえずarchiverはexportできる。あとは依存性などを考慮してFileInfoの配列を返すメソッドと、FileInfoを食べてレンダリング結果を返すメソッド、レンダリング結果とFileInfoを食べてをステージングするメソッドに分けられないものかな。

Dec 20, 2007

BoomerをPDOを使った動的生成に対応させる

MT 4.0の頃にpdo_sqliteに対応させるという記事を書いた。

Ogawa::Buzz: MT 4.0をpdo_sqliteに対応 (ただし非公開)

平たく言うと、MT 4.0のダイナミックパブリッシングは、MySQL、Postgres、SQLite 2には対応しているが、SQLite 3には対応していない、PDO_SQLiteを使って対応させたよ、という記事。派生著作物を公開することへの抵抗感から公開していなかったが、BoomerはGPLなので心置きなく公開させていただく。

以下のような手順でBoomerのパッチ当てとビルドを行う。

$ svn co http://code.sixapart.com/svn/movabletype/branches/boomer
$ cd boomer
$ patch -p1 < mtos-r1117-use-pdo.patch
$ env LANG=C ./build/exportmt.pl --make --pack=MTOS --lang=ja --license=GPL

パッチ当てを行ったバージョンでは、UsePDOディレクティブが使えるようになっており、mt-config.cgiに

UsePDO 1

を追加するとダイナミックパブリッシング時にPDOバージョンのデータベースドライバを使うようになる。現在までのところ、PDO_SQLiteとPDO_mysqlに対応したつもり。また、php/lib/mtdb_pdo_<dbdriver>.phpっていうファイルを追加してMTDatabase_pdo_<dbdriver>クラスを定義すれば他のPDOドライバにも対応できるようにしてある。

Dec 19, 2007

MyMiniCityのチート方法を発見しました!

MyMiniCityが巷で大人気です。

早速ですが、

確実に成功するチート方法を発見しました!
この方法を使えばあなたも上位ランカーの仲間入り間違いなし!

詳しくはMyMiniCityのチート方法・その1その2を見てください。













っていうチート方法はこれまで何人くらい試したかな?

Dec 16, 2007

Boomerを Cache::Memcached::Fastに対応させる

Cache::Memcached::Fastを試す : blog.nomadscafe.jpで、Cache::Memcached::Fastの存在を知ったので、Boomerを対応させてみた。

オリジナルではCache::Memcachedを使う実装になっているが、上記のパッチは、Cache::Memcached::FastがあればCache::Memcached::Fastを、なければCache::Memcachedを使うように変更する。

効果のほどは試していない不明だが、Cache::Memcachedを使うPure Perlな実装に比べてかなりの高速化が期待できる。Cache::Memcached::Fastで実装されていないAPIもあるので、上記のパッチが正常に動作するかどうかは分からない。

2007-12-20追記:
MemcachedDriverディレクティブで使用するmemcachedドライバを選択できるようにしたパッチも用意した。

mt-config.cgiで下のように指定すればCache::Memcached::Fastが使われる(デフォルトはCache::Memcached)。

MemcachedDriver Cache::Memcached::Fast

Cache::Memcached互換なインタフェースを持つドライバであれば一応何でもOK。

MTOS日本語版 Nightly Builds

MTOS (Boomer)の日本語版Nightly Buildを定期的に生成するようにしてみました。


これは単に、

$ svn co http://code.sixapart.com/svn/movabletype/latest/dev

してチェックアウトしたworking copyに対して、

$ cd dev
$ svn up
$ env LANG=C ./build/exportmt.pl --local --pack=MTOS --lang=ja --license=GPL

を定期的に実行してアーカイブを作っているだけです。自分の環境で実行できる人は自前でやってください。

Dec 14, 2007

Boomerでの「プラグインの多言語化」について

MT 4.0の頃には「プラグインの多言語化」に関するちょっとしたバグを見つけ、以下のようなエントリを書いた。

Ogawa::Buzz: MT4プラグインの多言語化 Tips

Boomerではこの問題は修正されているため、load_tmplメソッドをオーバーライドする必要はなくなっている(ようだ)。

で、この対処がなされているのであれば、MT::L10N::*に定義してあるLexiconデータのうち、プラグインに関するものはプラグインのl10n_classに定義するべきだと思う。もうちょっと言うと、コンポーネントごとにLexiconを分離したら?ということ。Community SolutionやCommercial PackのLexiconとか意味ないし。

Dec 13, 2007

Boomer、来ましたね!

ついにBoomerのベータテストが始まったようです。

Movable Type Open Source - MovableType.org - Home for the MT Community

もう誰か翻訳を上げたかもしれませんが。

  • MTOSはMovable Type 4.0のすべての機能と、いくつかのマイナーな改善、バグフィックスを含みます。
  • MT4で動作するすべてのプラグイン・テーマ・テンプレート・デザイン・API群は、MTOSで動作します。また、MTOSは、他のSix Apartのオープンソーステクノロジー(例えば、memcached)とともに動作します。
  • MTOSは、ブログ数無制限、ユーザ数無制限、プラグインなしでのOpenIDによるサインインをビルトインでサポートする、唯一のオープンソースのブログツールです。
  • 我々は、Movable Typeの商用ライセンスを購入したユーザには、追加の有償特典(より良いテクニカルサポートやプラグインやテーマなどのカスタムアドオンなど)を提供する予定です。
  • MTOSは、我々が販売してきたMTプラットフォームを用いた有償のソフトウェア製品(Enterprise Solution, Community Solution, サポート付きの個人・商用ライセンスなど)を補完するものです。
  • MTOSのコードを入手するためのパブリックなSubversionリポジトリnightly buildを提供します。
  • 安定的なパブリックビルドができれば、movabletype.orgからもダウンロードできるようにする予定です。
  • MTOSプロジェクトやMTコミュニティに貢献する方法は、movabletype.orgで見つかります。
  • MTOSのサポートはコミュニティの他のメンバーによって提供されます(まずは新しいMovable Type Wikiから始めましょう!)。既存のMovable Type製品の有償ライセンスを購入して、Six Apartから直接プロフェッショナルサポートを受けることもできます。
  • MTOSは、標準的なGPLライセンスの元でリリースされる予定です。
  • 我々は、MTOSの全部または一部が、他のオープンソースプロジェクトの中で配布・再利用されることを歓迎し、奨励します。一緒に何かするのであればまずは連絡ください。

というわけで、まずはベータリリース、おめでとうございます!

オープンソースになったということで、私の最初の関心事はブートストラップまわりかな。

追記1: そうそう!すっかり忘れてた!

もよろしくね!

追記2: 今のところ、addons/Commercial.packに入るのってCustomFieldsだけなのかな。それだったらMTOSに入れてくれてもいいのにー、と思った。

Dec 10, 2007

先日のアジア野球選手権で長谷部以上に目立ってなかった和田サンが来ちゃうわけですが

落日の埼玉西武の名スラッガー=和田サンが中日ドラゴンズに来ちゃうわけだが、我々は中村紀洋を得てから変わった。

シーズン前:
「ノリいらね。」
「銭ゲバいらね。」
「マイナスあるで。」

シーズン後:
「ノリさんのおかげで日本一になれた。」
「ノリ最高や!ドメなんか最初からいらんかったんや!」

今は「和田サンいらね。」「和田サンに払う金をドメの年俸に上積みしたれや。」と思っているが、同時に「ひょっとして侮れない活躍をするかもしれない(ノリさんも活躍したし)。」という合理的に説明のつかないオプティミズムが我々を支配している…のを私は感じる。

実際のところ、和田サンはただカミが薄いだけの選手ではない。

和田一浩 - Wikipedia

平均打率が.317!何この、無茶苦茶いい数字!

右打者でこんな数値を出すのはブーマーか落合しか思いつかない。左打者の福留(.305)より高いし、年毎のバラつきが小さい。過去5年だけみても和田サン.320、福留.317。毎年100前後三振する福留より三振が少ない。案外盗塁もできる。左翼に固定すれば森野の守備負担も減るし、体調万全じゃないノリを右の代打の切り札として使いそのまま一塁の守備につかせてもいい。

…併殺マシンだがな。

Slicehostに移行してみた

さてそういうわけで、すでにSlicehostへの移行は完了している。

Slicehostの契約上の特徴は、予約ベースのサブスクリプションとディポジットベースのペイメントシステム。

ユーザは用意されているXen VMを契約するわけではなく、まず最初に契約したいスペックのXen VMをリクエストする。そうすると予約キューに入れられて新しいサーバを投入するのに充分なだけリクエストが溜まったら初めて、サービス開始可能になったと連絡がくる。予約キューは、スペックと期間によってプライオリティが付けられており、スペックが高いほど期間が長いほど待ち時間が短くなる。とは言っても私が256MBのプラン×12ヶ月の予約した場合で4,5時間しか待たされなかったのでそれほど問題にはならないかもしれない。

また、支払いはディポジットベースになっている。例えば、256MBのプラン×12ヶ月を借りるとき、240US$(20US$×12)ディポジットする。まとめて240US$以上の支払いを行うと10%のアカウントボーナスがもらえるようになっていて、ディポジット額が240+24US$に増額される。このディポジットから毎月20US$ずつ使用料が差し引かれていく。途中でプランを256MBから512MBに変更したりバックアップオプションを追加したりした場合には、このディポジットから毎月差し引かれていく額が増額される。

ディストリビューションは、Ubuntu Dapper, Gutsy, Debian Etch, Gentoo 2007.0, CentOS 5.0, Fedora Core 6から選べる。i386ではなくx86_64アーキテクチャなので、Ubuntuみたいな満艦飾タイプのディストリビューションでは正常に動作しないパッケージがたまに混じっている。aptやyum頼みの人は要注意。

私はいつも使っているGutsyにした。標準でインストールされているのは、ubuntu-minimal以上ubuntu-standard未満。timezoneがUTCになっているので、

# dpkg-reconfigure tzdata

してtimezoneをAsia/Tokyoにしたり、localeが設定されていないので、

# locale-gen en_US.UTF-8 && update-locale LANG=en_US.UTF-8

してen_US.UTF-8にしたりしさえすれば、あとはもう普通のUbuntuサーバとして設定して行くことができる。メモリが限られているので、mod_pythonを動かすのにmpm_preforkじゃなくてmpm_workerにするとか、mpm_workerなのでPHP5はmodule版じゃなくてfcgiで動かすとか、メモリが少な目のところに詰め込む功夫は別途必要だけど。

Dec 7, 2007

Slicehostを借りてみた

(約一週間前に書いたエントリをそのままお送りしています)

Xenベースのホスティングに移行しようと思っている。言うまでもなく、専用サーバを借りるよりは安価で済み、OpenVZなどを使ったホスティングと違って独占的に利用可能な物理メモリがある程度確保でき、手元でほぼ同等の環境を作って動作試験するのが容易だからだ。

本当はAmazon EC2が使いたいのだけどお世辞にも安いとは言えない。今借りているさくらインターネットの専用サーバが6,800円なのでそれより高くなっては意味がない。

だいたい独占的に使えるメモリが256MBで20US$/month、512MBで40US$/monthくらいが目安と考えて探すと、HostingFuにリストされているようなものが見つかる。

Xen Hosting | HostingFu

上記に加えてOgawa::Buzz: VPSLinkでも言及したVPSLinkが10月からOpenVZではなく、XenベースのVPSのサービスを開始している。

XEN VPS Hosting - VPSLink Hosting Services

Server Axisの安さは異常なのだが、メモリ256MBのオプションがないので最低価格ではVPSLinkやSlicehostに分がある。

メモリは256MB使えれば充分だとひとまず考えるとすると、一年契約でVPSLinkが20.79US$、Slicehostが18US$(20US$から実質10%ディスカウント)。VPSLandが期間限定でメモリ50%増量サービス中になっているので、メモリ192MBのプラン(メモリは288MBに増量される)で三カ月契約で20US$/month。加えて最初の月が半額になるクーポンもあるのでさらに安くなる。ただ、サービス期間が終わったらメモリ容量が契約通りに戻るのだとしたらXL-256を契約しなければならず、その場合は27US$と割高になる。

以下は雑多な観測。

  • VPSLinkはもともとネットワーク性能やディスクI/O性能に定評がある。
  • Slicehostのネットワーク性能やディスクI/O性能は正直しょぼい。ディスクI/Oの方は大した問題ではない。ネットワークの方はたびたび工事していて心配。逆に言えば、まだ伸びしろがある。
  • Slicehostはユーザインタラクションが充実している。フォーラム、Wiki、ブログが提供されているのは今や当然として、tumblrブログ、twitter、ircなどよく分からない方向にユーザ用チャンネルを広げている。また、Xenホスティングに関して比較的長いエクスペリエンスがある。
  • Server Axisはユーザインタラクションを無視している。フォーラムもWikiも何もない。ただスペックとサービスのみをユーザに提供するアティチュードには「漢」を感じる。
  • VPSLinkは毎晩無料のバックアップを行う。バックアップ時間が日本の昼間に当たるためその間の性能が低下する。バックアップのリストアには一回50US$かかる。Xenホスティングではバックアップを今のところリストアすることができない。
  • Slicehostでのバックアップは、契約したプランに応じたオプションになっている。メモリ256MBのプランでは月5US$。日ごと週ごとの自動バックアップに加えて、任意の時点のスナップショットが取れる。バックアップからリストア、別に契約したホストへのクローニングもできる。

とりあえず、Slicehostを借りてみた。

Dec 1, 2007

iKnow! 始めました

iKnow! 始めました。お友達からお願いします!

iKnow! – hogawa

About Me

My Photo

つくばで働く研究者

Total Pageviews

Amazon

Copyright 2012 Ogawa::Buzz | Powered by Blogger
Design by Web2feel | Blogger Template by NewBloggerThemes.com