2007/05/13

[ネット]   神の怒りをくらえ!「BibleFight」画像付レビュー

at 19:03JST
Bible Fight
http://www.adultswim.com/games/biblefight/index.html

Flashによるブラウザゲーム。
「聖書ファイト」。

キリスト教の聖書に出てくるキャラが闘いを繰り広げる、対戦格闘ゲーム。えーと、イエスとマリアが戦ったりするわけなんですが…。仮にもキリスト教系の学校出てる人間が喜んではいかん内容なのだろうか。でも、かなり凝ってる。

無意味にキャプチャをまじえて紹介。
2007051301mage1.png

これから始まる荘厳な闘いを予期させるタイトル画面。さりげなくメリケンサックが描かれているのが「神々の世界にもルール無用のストリートファイトがあるのだ」ということを暗示している。でも、路上のカリスマとかは出てきません。

20070513mage2.png

「はじめに闘いありき」だそうです。そうか、聖書書き換えないとね。トーナメントモードかアーケードモードを選択せよ。

20070513mage3.png

選択可能なキャラ。イブの格好はヤバいだろう…。臨死!江古田ちゃんですか? ノアも農夫にしか見えん。

20070513mage4.png

キャラ選択後に「controls」をクリックすると操作方法インストラクション。上下左右およびZXキー。コマンド入力で特殊攻撃が発動する。イブは
・りんご投げ
・へびの誘惑
など。もちろん、ノアは
20070513mage5.png

洪水を起こせます。箱船に乗り込ませた動物たちも召還しちゃいますよ。まっとうなのはたぶんマリア。光輪やロザリオを投げたりしかできません。あと、モーゼが海を割れないのはどうよ? かわりにカエルを降らせるのだが、これはイエスも生魚を降らせるのでややインパクトに欠ける。

20070513mage6.png

みなさん、おまちかね〜。バイブルファイト、レディー、ゴーッ!


20070513mage8.png

戦闘中。ちなみに右下の「C」をクリックすると、特殊攻撃のボタン操作ガイドを見ながらプレイできます。ノアの必殺技は意外に強いぜ! でも、イブは女の色香でアダムを召還したりするのであなどれない。
20070513mage9.png
イブは勝つとヘビとキスしながら喜びます…そりゃねーだろ!!

あと、隠しキャラが一名いるそうです。さて誰でしょう…まあ想像はつきますが。

[木鐸]   「俺の知ってる奴にこういうのがいるんだけど」

at 16:30JST
単にコピペ。

断片部 - ユウガタ - アレゴリーの使いどころ/「俺の知ってる奴にこういうのがいるんだけど」
http://fragments.g.hatena.ne.jp/Tez/20070512/p1
私の知人に、努力してよい職を得るのではなく、日々を怠惰に暮らしている奴がいる。話を聞いてみると学生時代から怠け者だったらしく、そんな奴がまともな職にありつけないのは当然である。格差とか何とか言ってるが、怠け者にはそれに相応しい待遇というものがあるのではないか。

…どうだろうか。私は馬鹿に見えたかな?
「私の知人」がいようといまいと、私の主張は愚劣である


ぼくはこういう「私の知人」話に遭遇することが多くて、そのたび頭がぐるぐる回って、
「ああ、今すぐ相手かもしくは自分の頭をかち割ったら
 ラクになれるのに…」
と思う。

のでこの文章(の続き)を読んで少しラクになった。かもしれない。

とはいえこの程度で成長できるほどぼくは佳き人間ではないので、ぼくの近くに寄ってくるときは死ぬ覚悟もないのに
「私の知人に障害者がいるんだけど、
 補助金もらって外車乗り回してウハウハしてて
 給食費も払ってないんだよプギャー!」
とか言わないでください。絞殺か撲殺かどちらかを選べるくらいのサービスはするように努力しますから。

他人はキライ。
自分をふつうの人だと思っている他人はもっとキライ。

[雑記]   「電脳コイル」見逃しました…

at 10:22JST
思いっきり忘れてた。

物語【電脳コイル】
http://www.tokuma.co.jp/coil/news.html
見逃した方に朗報! 第1話のみ再放送決定!!
5月18日(金) 午後7:18〜NHK教育テレビにて「まだ間に合う!電脳コイル」(第一話再)を放送する予定です


ただオレは「ありがとうありがとう」と涙した…。
NHKがムダに多チャンネルもってる利点はこういうとこにあるよなー。リピート放送も多いし。受信料は払いませんが、NHK自体は応援します。

ちゃんと予約録画入れました。
でも、録画しといて視ないんだよなあ、きっと…。

[雑記]   ほしのあきが銀幕デビュー

at 10:20JST
劇場版 仮面ライダー電王・ゲキレンジャー 電影版
http://www.den-o-movie.jp/pre/news/2/i.html

…ゲキレンジャーに出てる平田裕香ちゃんが霞む。かわいそう…>_<;

(ヘタしたら観に行くかもしれん)

2007/05/12

[雑記]   めじろにとまる

at 22:46JST
なぜか急に目白の安ホテルにお泊まり…。

実は目白で降りたのは初めてだ(やっぱ山手線全駅下車作戦を実行すべきか?)。

これまで、なんとなーく
「目白なんて高田馬場の植民地か池袋の出島みたいなとこじゃね?
 西日暮里のほうが都会だよねプギャー!mO(^^)」
とバカにしていた。

駅から離れたところを歩いて気付いた。
「なんか豪邸や億ションっぽいところが多い…」

よく考えたら高級住宅地のひとつでしたね..._| ̄|O

世の中、知らないことがまだまだたくさんあるぜ!←単にモノシラズ

[雑記]   livedoor Auth OpenID(β)

at 22:30JST
http://auth.livedoor.com/openid/

知らなかった。いつのまに始めてたんだろう。

メモ:
はてな、paperboy&co.、GoogleはPassportの夢をみる(副題「naoya君にお願い」)
http://www.trapon.com/log/cid/web/200702/rechallenge_to_passport.html

[雑記]   山手線全駅上下車+Suicaポイントゲット企画

at 12:59JST
なんかスクリプト書くのに煮詰まったので、くだらないことを考えてみた。

キヨスクでもポイント取得、「Suicaポイント」6月1日スタート
http://k-tai.impress.co.jp/cda/article/news_toppage/34367.html

というのが来月から始まる。まあ、乗車賃では使えないのだけれど、キオスクやSuica対応自販機でモバイルSuicaを使って買い物をするとポイントがもらえるのである。

そこで。
「鉄子の旅」

ですっかりメジャーになった(なってないなってない)
「全駅上下車」
に、
「下車した全駅で必ずSuica決済で何か買う」
というタスクを課してやってみたらどうか。もちろん「Suica使用」が前提なのでフリーきっぷなど使用しない、財布に厳しい企画である。

※ちなみに、このあいだ誰かと
「山手線は“やまのてせん”か“やまてせん”か」
という話をした記憶があるのだが、JR公式は“やまのてせん”だった。施策として明確に打ち出されたのが1970年代なので、“やまてせん”と読むのは年寄りである

で、

山手線 - Wikipedia
http://ja.wikipedia.org/wiki/%E5%B1%B1%E6%89%8B%E7%B7%9A

によると、山手線は
駅数:29
所要時間:58分
である。

28区間を各130円で上下車したとすると、これだけで
 28×130円=3640円
となる。さらに、29駅で最低120円(ジュース)の買い物をしなくてはいけないので、
 29×120円=3480円
で、最低催行予算が
 7120円
となる。ジュースばかりではお腹がたぷんたぷんになってしまうので、もっと高いものを買うかもしれない。キオスクが開いていればもっと安いものをSuicaで決済できるのだが、最近は閉店しているところが多いので期待できそうもない。

所要時間を考えてみたが、出退場記録をするので、各駅で最低5分はかかるだろう。ということは、
 純乗車時間58分+(出退場5分×28駅)=198分
だ。最低3時間か。

で、なおかつ下車したら
・その場でケータイで駅舎と購入したものを撮影
・ケータイからblogに写真を投稿する
ことで行動記録をつける。写真にはEXIF情報で撮影日時が記録されているので、証拠にもなる。…作業にさらに5,6分かかりそうだ。最低5時間は見ておいたほうがいいかもしれない。

ちなみにここまでやってどれくらいSuicaポイントをもらえるかというと、
 17.4ポイント
である。

誰か、この非常に有意義な企画に賛同して随行してくださる方はいませんか?
(どう考えてもいないので無意味にトラックバックを受け付けておこう)

[雑記]   惜しいことをした

at 04:41JST
むかし通ってた学校がはしかで全学休講になったらしい。

くそっ。
なぜ今ごろ。
あのとき休講にしててくれれば…(該当する“あのとき”が多すぎて神様が困りそうだ)。

2007/05/11

[技術系]   XPでOffice 2003使ってる人に朗報!

at 19:44JST
KB937383 - Microsoft Update または Windows Update が終了しない
http://www.st.ryukoku.ac.jp/~kjm/security/memo/2007/05.html#20070511_svchost
Office 2003 をインストールしてある Windows で自動更新や Windows Update / Microsoft Update を実行すると、svchost.exe が長時間 CPU 100% のまま推移することがある、という話。 OS がハングアップしたかと思うような状況になるようです


おおおおおおまえかー! おまえだったのかー!> Office 2003

どうも最近、XPがハングアップのような状態に陥ることが多くて、それが
・Windows Updateの更新自動スキャンがかかったとき
・手動でWindows Updateをかけたとき
に発生するところまでは突き止めていたのだけれど…。IE7のせいだとばっかり思っていた。

そういえば、ぼくはこの4月にOffice 2003に乗り換えて(4年も前のソフトになぜ今さら乗り換えるのかという疑問はさておき)いたのだ。しかし、まさかそれが原因だったとは。盲点だ。道理で、Office 2000のままの別のXPはサクサク動くわけだよ!

つーわけなので、Office 2003を導入してる人は即刻
http://support.microsoft.com/kb/937383/ja
からKBとWUAをインストールしたほうがよいと思われ。

いやはや…。
結局、最高品質のOfficeは相変わらずOffice 2000だということなのだろうか。
 Windows XP + Office 2000 + IE6
だと、ほぼ電源を落とさずに長期間運用できるんだよね。休止状態→レストアを何回繰り返してもOK。UIや動作可能コンポーネント面でビハインドがあるから今どきWindows 2000を勧めるようなラジカルなことは主張しないが、現実的で安定した作業環境が欲しいなら、この三位一体構成あたりがよいのかも。

[雑記]   ねんの

at 18:45JST
ねんね。

2007/05/10

[雑記]   だまされたのか?

at 18:52JST
…。

なかなか雨が降りそうになかったので手ぶらで喫茶店まで出てきたが。

夜になるにつれ降水確率が高くなる予報だったとは知らなかった。かさ…。

[雑記]   なんかたべてこよ

at 16:53JST
気分が重いけど、ちょっと作業したから、
自分にごほうびでケーキたべてこよ。

[技術系]   MTインポートによる移行向けに、旧URL→新ファイルパスのマップを作成するスクリプト

at 16:49JST
結論>MTにスクリプトから「出力ファイル名」指定でポストする方法 : ひろ式めもちょう
http://memo.hirosiki.jp/article/40820357.html

のつづき。

結局、
「他blog/他MTサイトからMTエクスポートログによって移行してくると、従来のURLを維持できない」
ので、エクスポート/インポート時に適当なスクリプトで
「旧URL→インポート後のファイルパス」
のマップを自動作成し、リダイレクトツールなどのためのデータにするのが好ましい。

ということで、そのためのツールを作った。自分用だけどメモしておかないとまたどこかに行っちゃうので公開。なお、スクリプトはなぜかWindows ActivePerlで動作させることを前提としている。

準備するもの:
a・旧サイトのMTエクスポートログ(mt.log)
b・旧サイトのスタティックHTMLファイル群(article/*.html)

まず、
a, bを展開したディレクトリ上で、static2mt.plを、
>static2mt.pl mt.log article/*.html > new_mt.log

のように動かす。すると、new_mt.logとして、

・各記事の属性部分に
 XORIGINALFILENAME: article/26381747.html
・各記事のBODYの先頭行の先頭に
 <!-- XORIGINALFILENAME: article/26381747.html -->

のように、マッチするスタティックHTMLファイルのファイルパスが挿入されたMTログファイルが新しくできる。

なお、マッチするファイルの認識には、スタティックHTMLファイル中に埋め込まれた
<rdf:RDF 
    :
<rdf:Description
    :
dc:date="2006-10-29T03:28:55+09:00"
/>
</rdf:RDF>
のようなRDF情報のdc:dateを使用している。RDFが埋め込まれていないHTMLファイルでは識別できない。

これでできあがったnew_mt.logを、移行先のMTにインポート。再構築してスタティックHTMLファイルを作成させる。

つまり、旧サイトのファイルパス情報がコメントタグ形式で埋め込まれたHTMLができる。

今度は、新しくできたスタティックHTMLファイル群に対して、mkurlmap.plを使って、
>mkurlmap.pl article/*/*.html > result.txt

などと操作する。

すると、result.txtには、
my %entriesMaps = ( 
'article/26573153.html' => 'article/200611/01-amazon_associates.html',
'article/26516570.html' => 'article/200610/31-seesaa_1.html',
'article/26610333.html' => 'article/200611/02-post_11.html',
        :

のようなハッシュテーブルが生成される。

あとはこれをCGIスクリプトに埋め込むなり、リダイレクトオンリーの静的HTMLファイル生成に使うなりすればいい。

なんつーことはないAd Hocなスクリプトなのだが、この手のツールが見あたらないのはなぜだらう。

[雑記]   出かけようと思ったら

at 15:26JST
東京の西のほうで大雨が降っているのをレーダーが感知した。

ちぇっ。

たまには傘差して出かけてみるかなあ。

[雑記]   ケータイにキズが!

at 11:49JST
がーん…。
表側の外装にスクラッチが入ってしまった。

考えてみると、このケータイ、もう半年も使ってるもんな。たぶん、ぼくの端末の中では10年前のノキア端末に次いで長い。

かといって、今回は「お持ち帰り0円」で買ったのであと2年月賦が残っているわけだが。

ソフトバンクモバイルになってからも外装交換サービスってやってるんだっけ?

シリコンカバー欲しいんだけど対応してないのよね。

[技術系]   MTでまっとうにエスケープしたエクスポート/インポートをできるようにするパッチ

at 10:58JST
MovableTypeエクスポートログ形式は腹を切って死ぬべきだ : ひろ式めもちょう
http://memo.hirosiki.jp/article/41332519.html

なんか一瞬「エクスポートのほうはめんどくさそうだ」と思ったけど、適当に処理してみる。こんな腐ったスクリプトを書けるのはひろ式先生だけ。あと、他人のこと偉そうに指摘するわりには、自分では
「エントリーのデータに\0が混じってるときちんと動作しないバグ」
を埋め込んでいるという話もある。

MTでハイフンをエスケープしたログをインポートするパッチ : ひろ式めもちょう
http://memo.hirosiki.jp/article/41336105.html

のパッチ取り込み済み。


*** lib/MT/ImportExport.pm.org	Thu May 10 09:37:57 2007 
--- lib/MT/ImportExport.pm Thu May 10 10:53:34 2007
***************
*** 297,302 ****
--- 297,303 ----
for my $piece (@pieces) {
$piece =~ s!^\s*!!;
$piece =~ s!\s*$!!;
+ $piece =~ s!^- !!mg;
if ($piece =~ s/^BODY:\r?\n//) {
$entry->text($piece);
}
***************
*** 526,532 ****
require MT::Template::Context;
my $tmpl = MT::Template->new;
$tmpl->name('Export Template');
! $tmpl->text(<<'TEXT');
AUTHOR: <$MTEntryAuthor strip_linefeeds="1"$>
TITLE: <$MTEntryTitle strip_linefeeds="1"$>
STATUS: <$MTEntryStatus strip_linefeeds="1"$>
--- 527,533 ----
require MT::Template::Context;
my $tmpl = MT::Template->new;
$tmpl->name('Export Template');
! my $tmplText = <<'TEXT';
AUTHOR: <$MTEntryAuthor strip_linefeeds="1"$>
TITLE: <$MTEntryTitle strip_linefeeds="1"$>
STATUS: <$MTEntryStatus strip_linefeeds="1"$>
***************
*** 538,556 ****
CATEGORY: <$MTCategoryLabel$>
</MTEntryCategories>
DATE: <$MTEntryDate format="%m/%d/%Y %I:%M:%S %p"$>
! -----
BODY:
<$MTEntryBody convert_breaks="0"$>
! -----
EXTENDED BODY:
<$MTEntryMore convert_breaks="0"$>
! -----
EXCERPT:
<$MTEntryExcerpt no_generate="1" convert_breaks="0"$>
! -----
KEYWORDS:
<$MTEntryKeywords$>
! -----
<MTComments>
COMMENT:
AUTHOR: <$MTCommentAuthor strip_linefeeds="1"$>
--- 539,557 ----
CATEGORY: <$MTCategoryLabel$>
</MTEntryCategories>
DATE: <$MTEntryDate format="%m/%d/%Y %I:%M:%S %p"$>
! __SEPARATOR__
BODY:
<$MTEntryBody convert_breaks="0"$>
! __SEPARATOR__
EXTENDED BODY:
<$MTEntryMore convert_breaks="0"$>
! __SEPARATOR__
EXCERPT:
<$MTEntryExcerpt no_generate="1" convert_breaks="0"$>
! __SEPARATOR__
KEYWORDS:
<$MTEntryKeywords$>
! __SEPARATOR__
<MTComments>
COMMENT:
AUTHOR: <$MTCommentAuthor strip_linefeeds="1"$>
***************
*** 559,565 ****
URL: <$MTCommentURL strip_linefeeds="1"$>
DATE: <$MTCommentDate format="%m/%d/%Y %I:%M:%S %p"$>
<$MTCommentBody convert_breaks="0"$>
! -----
</MTComments>
<MTPings>
PING:
--- 560,566 ----
URL: <$MTCommentURL strip_linefeeds="1"$>
DATE: <$MTCommentDate format="%m/%d/%Y %I:%M:%S %p"$>
<$MTCommentBody convert_breaks="0"$>
! __SEPARATOR__
</MTComments>
<MTPings>
PING:
***************
*** 569,578 ****
BLOG NAME: <$MTPingBlogName strip_linefeeds="1"$>
DATE: <$MTPingDate format="%m/%d/%Y %I:%M:%S %p"$>
<$MTPingExcerpt$>
! -----
</MTPings>
! --------
TEXT

my $iter = MT::Entry->load_iter({ blog_id => $blog->id },
{ 'sort' => 'created_on', direction => 'ascend' });
--- 570,584 ----
BLOG NAME: <$MTPingBlogName strip_linefeeds="1"$>
DATE: <$MTPingDate format="%m/%d/%Y %I:%M:%S %p"$>
<$MTPingExcerpt$>
! __SEPARATOR__
</MTPings>
! __ARTSEPARATOR__
TEXT
+ #-------- __ARTSEPARATOR__ \0\0
+ #----- __SEPARATOR__ \0
+ $tmplText =~ s/__ARTSEPARATOR__/\0\0/g;
+ $tmplText =~ s/__SEPARATOR__/\0/g;
+ $tmpl->text( $tmplText );

my $iter = MT::Entry->load_iter({ blog_id => $blog->id },
{ 'sort' => 'created_on', direction => 'ascend' });
***************
*** 588,593 ****
--- 594,602 ----
or return $class->error(MT->translate(
"Export failed on entry '[_1]': [_2]", $entry->title,
$tmpl->errstr));
+ $res =~ s/^-/- -/mg;
+ $res =~ s/\0\0/--------/g;
+ $res =~ s/\0/-----/g;
$cb->($res);
}
1;

[技術系]   MTでハイフンをエスケープしたログをインポートするパッチ

at 09:44JST
MovableTypeエクスポートログ形式は腹を切って死ぬべきだ : ひろ式めもちょう
http://memo.hirosiki.jp/article/41332519.html

V3.3。

diff -c lib/MT/ImportExport.pm.org lib/MT/ImportExport.pm 
*** lib/MT/ImportExport.pm.org Thu May 10 09:37:57 2007
--- lib/MT/ImportExport.pm Thu May 10 09:40:02 2007
***************
*** 297,302 ****
--- 297,303 ----
for my $piece (@pieces) {
$piece =~ s!^\s*!!;
$piece =~ s!\s*$!!;
+ $piece =~ s!^- !!mg;
if ($piece =~ s/^BODY:\r?\n//) {
$entry->text($piece);
}

[技術系]   MovableTypeエクスポートログ形式は腹を切って死ぬべきだ

at 08:31JST
MovableTypeエクスポートログ形式の問題点 : ひろ式めもちょう
http://memo.hirosiki.jp/article/41294601.html

のつづき。

MTのエクスポート結果って、
属性: 属性値
属性: 属性値
  :
BODY:
本文内容
----- ←項目区切り
ほかデータ列
  :
------- ←エントリ区切り

って感じで羅列になっているテキストファイルなわけだが。

ということは、これはどんな素人が見ても、
「本文中に ----- とか ------- とかが
 単独行で入ったらマズいな」
とわかる。通常、こういうものは何らかの方法でエスケープするものだ。

たとえば、いにしえのUNIX mbox形式では、メールメッセージの区切りが
From nantoka@nantoka

となっているわけだが、一般にメッセージ中行先頭の
From

は、
>From

でエスケープする慣習となっている。相互運用性にはやや混乱があるが、
http://man.qmail.jp/jman5/mbox.html
きわめてまっとうな方法で、これで20年は戦ってきた。

シェアの高いMTだし、当然このあたりは何か対応しているんだろうと思って確認してみると、

・エクスポートされるデータ
 →まったくエスケープされない

というのがわかった(V3.3)。

…正気か?

さらにさらに。

・エスケープされていないデータをインポートした場合
 →壊れたエントリが生成される

ということも確認できた。

…えー!?
マジですか…。

いくらMTのエクスポート画面で
「これは完璧なバックアップ手法じゃありません」
とうたってても、こりゃないだろ! というか、問題はバックアップではなく(バックアップならMySQLをダンプしておけばいい話)エクスポートが正常にできないということだ。相互運用性が確保されないという問題だ。

というか、大げさに言えばこれはセキュリティホールにも近い問題だ。なぜなら、上記のような形式で出力される中には「コメント」「トラックバック」のデータも含まれるから。
「お。気に入らないやつみっけー。
 こいつ、もうまともにエクスポートできないように、
 コメント欄に - を5つ書いといてやれ!」
と攻撃のネタにすることもできる。これだけで攻撃対象は自分のMTを簡易バックアップすることが不可能になるうえ、ほかのblogシステムへの移行もできなくなる。

ちなみに、いったんこの形式でエクスポートされたデータは機械的に問題点をチェックすることはできない。目視で修正するしかない!(検索すりゃ手間が多少省けるけど、コメントだけで1万件近いようなサイトを運営してる身には地獄だ)


そもそもMTがきちんとエスケープしないでエクスポートしている背景には、この機能がMTのテンプレート機能を転用して実装された簡易なものだということがあるようだ。

Movable Type Knowledge Base: Customized Exports
http://www.sixapart.com/movabletype/kb/imports/customized_expo.html

にはエクスポート形式の詳細のほか、いろいろなエクスポートの方法が書かれているが、あくまでMTのテンプレートを使った方法だけが紹介されている。まあ、言っちゃ悪いがテヌキだよね。


で、こんな簡単な問題はもちろんぼくじゃなくてもすぐわかるわけで、知ってる人はけっこういるみたいなんだけど、あんまり問題視されてないんだな…。おまけに、ご丁寧にほかのMT互換サービスも、このMTと同じ弱点をそのままマネしている。Seesaa BLOGもそう! -----のエスケープの必要を考えず、そのままエクスポートしている。おーい…。

唯一対応しているらしいのが

開発者ブログ MovableType形式と忍者形式のログエクスポートやログインポート
http://samurai.blog.shinobi.jp/Entry/111/

「忍者ブログ」だ。ここは
5つ以上の連続したハイフンと改行は5つの連続したハイフンと改行の間に半角スペースを入れます。

というAd Hocなやり方で対応している。忍者はいつもひと味違うサービスをやってるが、えらいな…。

忍者ブログは
「何らかの方法でエスケープしても、
 インポート側がアンエスケープできなければ意味がない」
という事情からこの方式を考え出したのだろう。行末に半角スペースが入っていても誰も気づかない。しかし、本来的には

エクスポート側
・行頭に-がある場合は「- 」を挿入する
インポート側
・行頭に「- 」がある場合はこれを削除する

という、より単純で明確な運用を普及させる必要があると思う。

とはいえ人に対応してもらうのを待っているわけにもいかないしな…。
いくつか方策を考えた。

・エクスポート側
 - MTでまっとうにエクスポートできるよう、プラグインを作る
  (とりあえず、ぼくは今「インポートする側」なので後回し)
 - XML-RPC APIを介して、MT互換blogから正常に“吸い出す”スクリプトを書く
  (…トラックバックとコメントって吸い出せたっけ?)
 - MT Perl API経由でバックエンドのDBからデータを吸い出すスクリプトを書く

・中間
 - MTエクスポートデータ中、怪しい「-----」を見つけて
  エスケープする支援スクリプトを書く

・インポート側(- エスケープ対応)
 - MTでまっとうにインポートできるようパッチを書く

※追記
エクスポート、インポートともにパッチを書いてみた↓

MTでまっとうにエスケープしたエクスポート/インポートをできるようにするパッチ : ひろ式めもちょう
http://memo.hirosiki.jp/article/41339889.html


めんどくさ…。

もうさー、とにかくこの
・まともにエスケープもしていない
・ファイル名(permlink URL)の保全もできない
MT形式を標準扱いするのはやめようよー。


追記:
…これ、コメント部分のインポート時パースにも問題ないか?
lib/mt/importexport.pm l.320から
my @lines = split /\r?\n/, $piece; 
my($i, $body_idx) = (0) x 2;
COMMENT:
for my $line (@lines) {
$line =~ s!^\s*!!;
my($key, $val) = split /\s*:\s*/, $line, 2;
if ($key eq 'AUTHOR') {
$comment->author($val);
} elsif ($key eq 'EMAIL') {
$comment->email($val);
} elsif ($key eq 'URL') {
$comment->url($val);
} elsif ($key eq 'IP') {
$comment->ip($val);
} elsif ($key eq 'DATE') {
my $date = $class->_convert_date($val) or next;
$comment->created_on($date);
} else {
## Now we have reached the body of the comment;
## everything from here until the end of the
## array is body.
$body_idx = $i;
last COMMENT;
}
$i++;
}
これだと、コメントの先頭に「(EMAIL|URL|IP|DATE):」な行があるとパースされてしまうよね。…URLのところがヘンにサニタイズをすり抜けたりしなきゃいいんだけど…。

別にケチつけたくて調べてるわけじゃないんだが、これならJUGEMかどっかみたいにXML形式でエクスポートしてくれたほうがいいなあ。もともとMTはXML関連モジュールを使用しているのだから、インポート/エクスポートに利用できないことないのに。

[雑記]   「コヨーテ」のゆみさんからメール

at 06:37JST
コヨーテのゆみです。
今日は、楽しかったです。ありがとうございました。
携帯番号080********です。電話くださいね!


…群馬の、うちと一文字違いドメインの建設会社のおじさんへ。
会社のメールアドレスの入った名刺をキャバクラで配るのはやめたほうがいいと思います。

というかやめてください。さとし社長。
じゃないと御社と中曽根弘文後援会との黒いつながりをバラす。

「優」で「さとし」と読むとははじめて知りました。

2007/05/09

[雑記]   カペリンはアイスランド産のほうがおいしい気がする

at 23:28JST
最近、トースターでししゃもを焼けるのに気付いてからハマっている。スーパーで安売りしているのを買ってきては食べている。たぶん今、人生でいちばん焼き魚を食べてるな。だいたい焼き魚てコストパフォーマンス悪いから、家族の食卓でも使ったことなかった。

と言っても、もちろん「カペリン」─からふとししゃものほうだ。ししゃもなんて売ってないし。ぼくはししゃもよりカペリンのほうが好きだし。数年前から
「ニセししゃも」
として評判の悪いカペリンだけれど、安いし脂が多くておいしい気がする。そもそも「本当のししゃも」の漁獲高が落ちたのは70年代なので、それ以降に生まれた人が親しんだ味はカペリンなんだよね。

このあいだ、近所のCO-OPにはじめて入った。いっつものスーパーより軒並み物価が安くて驚愕した。で、ためしに汲み上げどうふ(90円!)を何丁かとカペリンを買ったのだ。

カペリンも10尾で200円だったかなあ。少し身も大きい。とりあえず焼いてご飯で食べた(お酒は飲まないから肴にはしない)。

…?
なんか味が違う。

ちょっと苦みが強いなあ。

産地をしげしげと眺めると、
「カナダ産」
とある。

そういえばいつも食べてるのは
「アイスランド産」
で中国加工のものだった。こぶりで、焼いているとすぐ脂が出てくる。身も壊れやすい。それで
「うーん。
 こっちのほうが安物なの?」
と思ってた。でもかじると香ばしい中に甘味があるのだ。CO-OPで買ったカナダのは、どうもそれとは違う。

ふむう。
カナダ産って、たぶん太平洋側─オホーツク寄りのことだよねえ。いっぽう、アイスランドは大西洋側。

カペリンも種類が違うんだろな。そんでもってアイスランドのほうがぼく好み、と。

ちなみにアイスランドの貨幣にはカペリンが誇らしげに刻まれているそうで。そんくらいだからやっぱりアイスランドのほうがおいしいんじゃないだろうか。

つーことでCO-OPでカペリンを買うのはやめた。

人生日々是勉強だねえ。
さらに過去の記事
2009/04 (1)   2008/12 (3)   2008/11 (9)   2008/10 (10)   2008/09 (20)   2008/08 (2)   2008/07 (23)   2008/06 (16)   2008/05 (22)   2008/04 (11)   2008/03 (21)   2008/02 (20)   2008/01 (21)   2007/12 (32)   2007/11 (37)   2007/10 (46)   2007/09 (63)   2007/08 (33)   2007/07 (41)   2007/06 (81)   2007/05 (173)   2007/04 (168)   2007/03 (113)   2007/02 (123)   2007/01 (92)   2006/12 (111)   2006/11 (185)   2006/10 (20)  

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。