さよなら参画またきて刺客

 数日ぶりのご無沙汰でした木曜日。まぁ、火曜以来何をしていたかって言うと、具体的にMovableTypeのアップグレードを敢行したわけで。以前にQED-JP: MovableType大改装計画ってな感じで参考リンクをまとめたんだけど、今回は改めて具体的に書いてみる。


 今回はIDとエントリ数のズレもある程度なおしたかったので、MySQLも切り替えることから始めた。

1.MySQLのバックアップとエントリーの書き出し

2.書き出したエントリーをUTF-8に変換して保存*1

3.テンプレートの保存*2

4.MySQLの削除とエントリーの全削除

5.XREA提供のインストールツールでやろうとするも、インストール先フォルダの設定がおかしくなってしまうため、ロリポップ!レンタルサーバー - MovableTypeの設置の前にを見ながらインストール*3

6.mt-sukeroku2.plを所定の位置にインストール。

7.XML::Simple.pmがない、と怒られたのでCPANにあったXML-Simple-2.14からSimple.pmだけを抜き出して所定の位置に放り込む。

8.mt.cgiが500えらー。

9.Simple.pmを外すと正常操作するが、「利用可能なプラグインの設定」には説明が出てこない。

10.仕方ないのでまたSimple.pmを入れる。

11.mt.cgiがServer Error

12.仕方ないので今度は設定を少し弄ったKiseru.pmを外すととりあえずmt.cgiは動く。

13.Kiseru.pmを入れるとやはりmt.cgiがサーバーエラー。

14.以下気のすむまで繰り返し。

15.泣く泣くSukeroku2.plを諦め、mt-sukeroku-plus.pl Ver.1.11βを入れる。

16.ついでに1300行あたりの表記を少し弄り、評価の代わりにASINが表示出来るようにした。

17.こんな感じ。

# 作者

if(($d->{Authors})){

push(@res, qq(<li>));

push(@res, '&#20316;&#32773;: '); # 作者

my $tmpcnt = 0;

if(ref($d->{Authors}->{Author}) eq 'ARRAY'){

foreach my $author(@{$d->{Authors}->{Author}}){

if($tmpcnt++ != 0){

push(@res, ', ');

}

push(@res, escape($author));

}

}

else{

push(@res, escape($d->{Authors}->{Author}));

}

push(@res, qq(</li>));

}

# アーティスト

if(($d->{Artists})){

push(@res, qq(<li>));

push(@res, '&#12450;&#12540;&#12486;&#12451;&#12473;&#12488;: '); # アーティスト

my $tmpcnt = 0;

if(ref($d->{Artists}->{Artist}) eq 'ARRAY'){

foreach my $artist(@{$d->{Artists}->{Artist}}){

if($tmpcnt++ != 0){

push(@res, ', ');

}

push(@res, escape($artist));

}

}

else{

push(@res, escape($d->{Artists}->{Artist}));

}

push(@res, qq(</li>));

}

# 出版社・メーカー

if($d->{Manufacturer}){

push(@res, qq(<li>));

push(@res, '&#20986;&#29256;&#31038;&#12539;&#12513;&#12540;&#12459;&#12540;: '); # 出版社・メーカー

push(@res, escape($d->{Manufacturer}));

push(@res, qq(</li>));

}

# 発売日の表示

if($d->{ReleaseDate}){

push(@res, qq(<li>));

push(@res, '&#30330;&#22770;&#26085;: '); # 発売日

push(@res, $d->{ReleaseDate});

push(@res, qq(</li>));

}

# メディアの表示

if($d->{Media}){

push(@res, qq(<li>));

push(@res, '&#12513;&#12487;&#12451;&#12450;: '); # メディア

push(@res, escape($d->{Media}));

push(@res, qq(</li>));

}

# プラットフォームの表示

if($d->{Platforms}){

push(@res, qq(<li>));

push(@res, '&#12503;&#12521;&#12483;&#12488;&#12501;&#12457;&#12540;&#12512;: '); # プラットフォーム

my $tmpcnt = 0;

if(ref($d->{Platforms}->{Platform}) eq 'ARRAY'){

foreach my $platform(@{$d->{Platforms}->{Platform}}){

if($tmpcnt++ != 0){

push(@res, ', ');

}

push(@res, escape($platform));

}

}

else{

push(@res, escape($d->{Platforms}->{Platform}));

}

push(@res, qq(</li>));

}

# Asinの表示

if($d->{Asin}){

push(@res, qq(<li>));

push(@res, 'ASIN: '); # ASIN

push(@res, $d->{Asin});

push(@res, qq(</li>));

}

# ISBNの表示

if($d->{ISBN}){

push(@res, qq(<li>));

push(@res, 'ISBN: '); # ISBN

push(@res, $d->{ISBN});

push(@res, qq(</li>));

}

push(@res, qq(</ul>));

push(@res, qq(</div>));

$localAnswer = join("\n", @res);

$localAnswer = jcode($localAnswer,'utf8')->utf8

}

}

文字コードが化けるので、例えUTF-8の設定でも「 $localAnswer = jcode($localAnswer,'utf8')->utf8」の行は必要っぽい*4。また、今度はこれを入れると「作者:」などが化けるので、数値文字参照にした)

18.残念ながら購入ボタンまでは付けられなかった。

19.データをインポートしたらテキストフォーマットを置換する必要に迫られたので、MySQL上で置換を試みる。続 データを一括置換する方法:Nucleusの使い方 (財団法人サークルクラブ協会)の応用。

20.置換成功。カテゴリー再構築時のエラー回避(Bottom secret of the GRAFAiN)とかで一度にリビルドする個数を設定して、リビルド。

21.なんとか途中で止まりつつも、月別までは成功。

22.しかし、カテゴリアーカイブまでは上手くいかない。なぜだ? タイトルのみ表示とかにしても全く駄目。

23.仕方ないので、カテゴリアーカイブは諦める。まぁ、そのうちに。


 うーん、問題は山積してますが、いろいろはそのうちになるかなぁ。これからさらに「投稿の度に起こる500エラー」を潰して行くには、やはりカテゴリアーカイブを何とかするしかないかも。


 あとはそのうちこれもやりたい↓。

V.J.Catkick@: せめて土日に色をつける


 ついでにコメントスパムとかトラックバックスパムとかうざいので↓を入れました。


 色々思考の片隅にあるものはあるのですが、眠いので今日はおしまい。昼間っから本当に眠いです。日中も。まずいなぁ。

*1:それまでの文字コードEUC-JPだった

*2:といっても、テンプレート画面をそのまま保存しただけ

*3:もちろんその前に新版のMTは公式サイトから落としておく

*4Kiss Kiss Kiss: mt-sukeroku-plus.cgiの導入