2008年11月アーカイブ

概要: 少し前から気になっていました。Movable Type 4.22で再構築がうまくできない事が。 と言っても、再構築がすべて失敗する訳ではなく、一つ一つ調べてみると、再構築できないのは月別アーカイブだけ...

少し前から気になっていました。Movable Type 4.22で再構築がうまくできない事が。

と言っても、再構築がすべて失敗する訳ではなく、一つ一つ調べてみると、再構築できないのは月別アーカイブだけです。しかも質が悪い事に、何かのエラーを出力してくれる訳でもなく、記事40件分の再構築に成功した(らしい)後、残りの3件がどうしても再構築できないのか、数秒間隔で延々と再読込を続けます。

Googleで探してみましたが、どうもこの現象に遭遇している人は他にはいないのか、ヒットしません。しかし近い所で「再構築に失敗する場合、一度に再構築する記事の数を減らすと直る(事がある)」という情報があったので(どこが出所なのか判らないので特定のリンクはしませんが、Movable Type 再構築 失敗 で検索してみるとこんな感じ)、Movable Typeのアプリケーションディレクトリを%MTAppDir%とした場合の%MTAppDir%/lib/MT/Core.pmの321行目、EntriesPerRebuildの初期値を10に減らしてみました。

# %MTAppDir%/lib/MT/Core.pm line 321
# 変更前
'EntriesPerRebuild' => { default => 40, },
# 変更後
'EntriesPerRebuild' => { default => 10, },

10件の記事しか再構築できなくなってしまいました

まあでも影響している事は間違いあるまい。そんな訳で今度はEntriesPerRebuildを使ってgrepしていると、%MTAppDir%/lib/MT/CMS/Blog.pmの676行目や728行目に気になる単語が。

# %MTAppDir%/lib/MT/CMS/Blog.pm line 676, 728
Limit => $app->config->EntriesPerRebuild,

Limit? Blog.pmを覗いてみると、これはサブルーチンrebuildを呼び出す際の引数の一つのようです。

# %MTAppDir%/lib/MT/CMS/Blog.pm line 671-678
# 変更前
$app->rebuild(
  BlogID => $blog_id,
  ArchiveType => $type,
  NoIndexes => 1,
  Offset => $offset,
  Limit => $app->config->EntriesPerRebuild,
  FilterCallback => $cb,
) or return $app->publish_error();

一回分の再構築で処理される記事の数が制限されているのでしょうか。どう扱われているのか追跡してみましたが、%MTAppDir/lib/MT/WeblogPublisher.pmのサブルーチンrebuildの中、MT::Entry->load_iterという呼び出しの所で吸収されてしまいました(これがどこに書いてあるのかよく判らない)。

色々試してみてただ一つ判ったのは、再構築が一回だけで終われば、(月別アーカイブ以外も含めて)すべての再構築がうまくいく事です。つまり、全記事数以上の値をLimitに与えてやれば、一応、成功します。

# %MTAppDir%/lib/MT/CMS/Blog.pm line 671-678
# 変更後
$app->rebuild(
  BlogID => $blog_id,
  ArchiveType => $type,
  NoIndexes => 1,
  Offset => $offset,
  Limit => $total,
  FilterCallback => $cb,
) or return $app->publish_error();

但し、いくらEntriesPerRebuildを小さくしても進捗状況は見られません。でもまあ大した害じゃないので許せる範囲内でしょう。

これはバグなんでしょうか、それとも個人ライセンス(無償)使うならこれくらいの制限は自分で外せって事なんでしょうか。バグである事を祈ります。

概要: 迷走してハンドルをCrowned ClownからE+Xに変えました。以下、言い訳。 歴史を詳しく知っている訳ではないけれど、インターネットは歴史的に実名を使って情報を交換する為のネットワークだった...

迷走してハンドルをCrowned ClownからE+Xに変えました。以下、言い訳。

  1. 歴史を詳しく知っている訳ではないけれど、インターネットは歴史的に実名を使って情報を交換する為のネットワークだったはず。必ずしも実名を使う必要性は無かっただろうけど、研究者が情報を交換するのに自分が誰だか判らないようにしていたのでは、円滑な研究はできそうもない(責任や栄誉の所在も判らないし)。
  2. そういった慣習が連綿と受け継がれてきた為か、あるいはその他の理由に因るものか、W3Cの勧告文書なんかも、編集者はみんな実名で記名している。
  3. 翻訳版を作って公開している人達も、殆どは実名のようだ。
  4. 合わせた方が失礼が無いかな、と思って合わせた。
  5. ハンドル使ってた意味無いじゃん。
  6. ついでに言うと、思いついた時は語呂の良さしか考えていなかったけれど、crownという単語は英語圏では意味が良すぎる。
  7. しかも、どっかの漫画でそんな名前の何かが出て来るらしい(だいぶいいかげん)。
  8. ハンドル使うのやめよっか。
  9. それでもいいけど、なんかあった方が良さそうだ。
  10. そんなに実名から乖離しないで、奇を衒いすぎないで、かつ少しひねってあるくらいのものがいいな。
  11. 名字を見ていると、最初の文字が E, +, X の組み合わせで書ける事に気がついた。
  12. 得意じゃないけど数学は好きだし、何だかネイピア数(と言うらしい)eと変数xの和みたいで面白いじゃん。
  13. なんだかやっぱり奇を衒ってしまっているような気もするけど無視する。
  14. 多分変えた所で誰も迷惑しないだろうから、今の内に変えちゃえ。

このアーカイブについて

このページには、2008年11月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2008年10月です。

次のアーカイブは2008年12月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。