11月 2004のアーカイブ
dirify and Permalink (Movable Type)
注: Movable Type 3.2x については、まず
エントリー「Archive File Path Specifiers / Movable Type 3.2」
» http://www.osbsd.net/2005/10/archive_file_pa.html
をご覧下さい。
Permalink 先のURLとして使用されることが多い個別アーカイブ・ファイル名は、Movable Type のデフォルト設定では、
オリジナルドメイン名 (ないし, WWWサーバのホスト名やユーザ名) + エントリーのタイトル名の自動変換(dirify).拡張子
です。
Movable Type 設定についての日本語ドキュメント(英語版の逐語訳)では、
http://www.movabletype.jp/manual/mtmanual_weblog_config.html#archiving
「デフォルトで個々のアーカイブ・ファイルには、エントリーのタイトルに応じて名前が付けられます。たとえば、’Our Magnificent Day at the Beach(ビーチでの素晴らしい日)’というタイトルのエントリーには’our_magnificent.html’などのファイル名が付けられ、エントリーの作成月に基づき’2004/05/our_magnificent.html’というディレクトリに保存されます。・・・」と記述されています。しかし、日本語のタイトルでは、偽りの説明です。
しかも、PublishCharset (エンコード) の選択: 「UTF-8」 「EUC-JP」 「Shift_JIS」 によって、異なる名前となります。
Ogawa::Memorandaさんの タイトル: dirifyについて考えてみた。
http://as-is.net/blog/archives/000926.html
をご覧になると名づけ方の詳細がわかります。
"ダイナミック (PHP) ページのための設定について" というタイトルで新規エントリを作成すると、
Δ PublishCharset (日本語エンコード):「EUC-JP」
⇒ http://hitomi.s47.xrea.com/shellscript.biz/archives/2004/09/aessaphpuiaiass.html
URL名としては無意味な文字の羅列(phpを含む) となることがあります(注1)。 なお、「Shift_JIS」においても無意味な変換が行われます。
Δ PublishCharset (日本語エンコード):「UTF-8」
⇒ http://www.example.com/archives/2004/11/_php.php
日本語はすべて_ (アンダースコア)に変換されて、英語 php のみ表示されます (すべて日本語タイトルのとき: (注2) (注3) をご覧下さい)。
Δ 個別エントリーアーカイブのテンプレートをファイル名 <$MTEntryTitle dirify="1"$>_<$MTEntryDate format="%m%d%y"$>.php で保存したとき (日本語エンコード: UTF-8):
⇒http://www.example.com/archives/archives/_php__111704.php
英語であれば行頭から(半角文字数)15以内の文字制限なし_日付.拡張子 となります(注3)。但し、正しく設定しないと、ダイナミック・ページではURLに反映しません。
Δ アーカイブの設定 (□ 以前の形式の個別アーカイブへのリンクをつかう) をチェックしたとき:
⇒ http://hitomi.s47.xrea.com/shellscript.biz/archives/000024.html
個別のアーカイブへのリンクに以前の形式(id)を利用しますか? にチエックを入れ保存すると、連番表示のURLとなり、日本語エンコードには依存しません。
Δ(注1): PublishCharset: EUC-JP における問題点 (タイトルから無意味な URLが生成されてしまう) は、mt.cfg に「DefaultLanguage ja」を設定することで解決するそうです。詳しくは、
http://as-is.net/blog/archives/000895.html
http://as-is.net/blog/archives/000910.html
のページをご覧下さい。
make_unique_basename と dirify の利点、欠点が詳しく解説されています。
引用(1)
「一つのエントリに一つのファイル名を対応させる」ために個々のエントリにuniqueな文字列が設定されます(MT::Util::make_unique_basename)。
引用(2)
ただし、make_unique_basenameはそのエントリが作成された時点で呼び出されるので後で日時を変更してもbasenameには反映されません。このbasenameというのはほとほと「使えない奴」なわけです。
Ogawaさんに、再々感謝です。
Δ(注2): タイトルがすべて日本語のとき
⇒ post.html, post_1.html などに変換されます。
Δ(注3): タイトルに英語が含まれているとき
⇒ 同じタイトル名では、エントリが異なっていても、同一のファイル名 (URL)となることがあります。
Δ マルチバイト対策のMT用 plugin "dirifyplus" を使用しても、本質的な解決とはなりません。
⇒ http://mt-plugins.org/archives/entry/dirifyplus.php
アンダースコアを除去したり、(半角)空白をトルツメしたり、ハイフンに変換したり・・・の機能だけのようです。
たとえば、個別エントリーアーカイブのテンプレートのファイル名を指定すると、
(例) URL: http://www.example.com/archives/how-to-upgrade-movable-type-and-mt-manual-weblog-config.html
と表示できます。
Movable Type 3.121, 3.12 リリース版の未修正バグ
カテゴリーのトラックバックURLは利用できません。
ブログ[MT 3.12] が公開しているカテゴリーのトラックバックURLへTrackBack ping を行っても、MT 3.12側は受信できません。
送信エラーが続いたので、「Movable Type Support Forums」で同事例の報告を確認しました。
There’s a bug in 3.121 that prevents it from receiving trackback pings to a category (see thread) which will hopefully be fixed soon.
英語圏、英語版のブログ (Movable Type 3.12) へトラックバックを送信するとき、複数の pingサーバへ同時送信するときなど、ご注意下さい。送信完了まで繰り返しTrackBack ping を行うと、連続投稿を制限していない他のブログページへ重複してTB送信してしまいます。実際に本サイトから送ってしまいました。失礼いたしました。
送信側のログは
Ping ‘http://www.example.com/mt/mt-tb.cgi/数字’ failed: HTTP エラー: 500 read timeout
となります。
bug fix 版が公開されるまで、必ず entry に対してTrackBackする必要があります(下記のような個別エントリ内のトラックバックを利用すれば、問題は発生しません)。
====
トラックバック
(英) Trackback Pings
このエントリーのトラックバックURL:
(英) TrackBack URL for this entry:
http://www.example.com/mt/mt-tb.cgi/数字
====
Dynamic or Permalink
Movable Type 3.11以降では、ダイナミック (動的) 生成とスタティク (静的) 生成を使い分けることが可能となりました。アーカイブページなどの生成において、どちらが都合がよいか、内部、外部からのアクセス両面で考える必要があります。外部とは、特にロボット検索の最適化 (SEO) も含めてのことです。
たとえば、新聞社、IT関連企業など毎日多くのニュースを配信するブログでは、ダイナミック パブリッシングがよいでしょうし、特に著作権を重要視する会社では、スタティク (静的) 生成ページによる “Permalink”はハイリスクかもしれません。一方、個人のブログで、趣味のページを作成し、備忘録として残しながら、かつ、多くのクライアントにも情報を発信したい、閲覧してほしいときは、ロボット検索の効率なども重視し、個別エントリアーカイブなどを静的生成にする方がよいのではないでしょうか。ダイナミック生成とスタティク生成には、それぞれ利点、欠点がありますので、http://www.movabletype.jp/manual/mtmanual_dynamic.html を参照の上、ご活用下さい。
なお、”Permalink” とは、・・・「永遠 Permanent に変わらないブログ item, 情報アイテム を参照するように作成された URL」・・・ を Permalink (Permanent link) と呼ぶそうですので、生成の方法 Dynamic, Static とは直接関係はありませんが。
Encode.pm and Movable Type
Movable Type をJcode.pm ではなく Encode.pm で活用するための tipsです。
Powered by
with Encode.pm
【 編集(4)は Xrea.comさんの(一部の)サーバでは必須です】
(1) まず、mt-check.cgi にて Perlのバージョンを調べます。
version: 5.8.4 であれば、perl: 5.008004と同義です。
もし version 5.8.0 以上でなければ、モジュール Encode.pm は標準実装されていませんので、
mt-check.cgi の148行目あたりに、
[ 'Encode', 0, 1, 'Encode is required for Encoding conversion.' ],
の1行を追加し、mt-check.cgiを再実行します。
【この方法をご教示下さいました Ogawaさん に感謝いたします。】
Your server has Encode installed (version *.**).
と表示されると、Encode.pm が実装されています。
(2) WWWサーバの Perl version: 5.7.3以上、Encode.pm 未実装の環境であれば、Xrea.comさんのサーバでは直接お願いして下さい。ライブラリー導入、対応されるそうです。しかし、
(Xrea.comさんからの回答を引用)
「Perlが5.6系である場合は、導入させていただくことができません。動作しなくなるCGIが出てくる可能性がありますので、Perlのバージョンを上げさせていただくことは出来ない状況です。」とのことです。よって、サーバ s47あたり(および、以前のサーバ)は導入できないはずです。
(3) 次に、Ogawaさんが作成、公開された貴重なスクリプト I18N-encode.pmを
http://as-is.net/blog/archives/000920.html
からダウンロードします。インストール方法はページをご覧下さい。
(4) ここで、Xrea.comさんのサーバでは、cgiの簡単な編集が絶対に必要となります(重 要)。
mt.cgi
mt-tb.cgi
mt-comments.cgi
mt-search.cgi
mt-xmlrpc.cgi
mt-atom.cgi
mt-send-entry.cgi
mt-view.cgi
mt-add-notify.cgi
などのMTのベーシックディレクトリにあるCGIファイルの先頭行を下記のとおり変更します。
変更前 (先頭行):
#!/usr/bin/perl -w
変更後 (先頭行、2行目)
#!/usr/bin/perl
require 5.008;
perl のコマンドラインオプション -w は、単に「識別子に関するさまざまな警告を出す」オプションですので、変更の必要はないように (一般的には) 考えますが、-wオプションを残しておくとブラウザでのアクセス不能となりますので、ご注意下さい。
もし、Perl version: 5.7.3-5.7.9であれば、require 5.007;と思いますが、未確認です。変更後の mt**.cgi をアップロードします。
(5) Ogawaさんと同じく、チャレンジャーの方にのみおすすめいたします。
以上
encode.pm, movable type
このブログページは、Xrea.comさんのWWWサーバ
Perl: version: 5.8.4 (5.008004)
Encode: version 2.08
上で稼動しています。
現在、モジュール Encode.pm を利用しており、[mt]/extlib 内のJcode.pm関連のライブラリーすべてリネームしています。
メール、TBなどの日本語化に問題が発生しないことを確認しました(テスト終了)。
[Permalink]
[Encode.pm and Movable Type]
[random characters 文字化け]
なお、個別アーカイブページを表示すると、スクリプトエラーとなる理由は、テンプレートモジュール”Remember Me”用のタグをコメント文としているためです。
headタグ内で、 <!–MTInclude module=”Remember Me”–>
Encode.pm, Jcode.pm とは全く関係ありません(サンプルページとして表示中)。
[Permalink]
[テンプレート・モジュール "Remember Me" と個別アーカイブ]