MT4i Version 1.81を公開します。
■Version 1.8からの変更点
- 自blog内リンクをMT4iで表示する
自blog内Entryへのハイパーリンクを、chtmltransを経由せず、MT4iで表示できるようにしました(何か分かり難い表現ですが)。ただし、EntryへのparmalinkにEntryIDが含まれていることが前提条件となります。MTデフォルトで使用されているユーザーさんには問題ありません。設定は、変数"$my_arc_url"にIndividual Archiveへのparmalinkを正規表現で指定するだけです。だけです、とは言うものの、正規表現はちと敷居が高いかも。ちなみに、当サイトの場合は'http://www.hazama.nu/t2o2/archives/(\d\d\d\d\d\d).html'となります。'\d'が正規表現で、任意の数字一文字を意味します。EntryIDを切り出せるよう、カッコで囲んで下さい。もちろん、未入力''で機能をオフにできます。 - コメント投稿フォームに注意書き
変数"$comment_notes"に指定された文字列を、コメント投稿フォームの最上部に表示するようにしました。「J.V.N.C. mobile ver.」にて、あまりにもくだらないコメント投稿が連続した為の処置です。多少の効果はありました。未入力""で非表示です。 - chtmltransを経由させない
変数"$exitchtmltrans"に指定された文字列が、AタグのALTTITLE属性に含まれる場合、chtmltrans変換しないようにしました。そもそも携帯電話での表示に対応しているサイトを、わざわざ再変換するのは間抜けですし、レイアウトが崩れる可能性も有りますから。文字列には、デフォルトでは"携帯対応"が指定されています。 - Rebuildの対象とするテンプレートを指定
コメント投稿時、リビルド(再構築)の処理が走りますが、対象はIndexテンプレートとArchiveテンプレートのすべてでした。これは、MTのデフォルトがそうなっているからです。しかし、携帯電話からだと、タイムアウトの設定が短めなのか、コメント投稿時にタイムアウトするという話を良く聞きました。この為、IndexテンプレートとArchiveテンプレートの中でも、リビルドしたいテンプレートのみを指定できるようにしました。配列変数"@rbld_indx_tmpl_id"にはIndexテンプレートのテンプレートIDを、@rbld_arc_tmpl_idにはArchiveテンプレートのタイプを指定します。IndexテンプレートのテンプレートIDは、MTの管理画面でTempleteの編集を選び、リビルド対象としたいテンプレートのリンクをポイント、ステータスバーに表示されたURLの"id="の後に続く数字です。Archiveテンプレートのタイプは、'Individual', 'Daily', 'Weekly', 'Monthly', 'Category'の5つです。 - テキスト分割処理の高速化
劇的に速くなってます。自分でもビックリするくらい。これまでどんだけへっぽこなコーディングしてたかってことですね。申し訳ございません。これは、あまり長文なエントリーを書かない、それほど多くのコメントが投稿されないblogにとっては、あまり恩恵はないかもしれません。長文を書けば書くほど、コメントが増えれば増えるほど、その差を感じて頂けることでしょう。 - ページ分け処理で分割されたページを読む時、これまでは1ページずつ繰って行く方式だったが、これをページ数を表示し、それぞれにリンクをはる方式に変更。これで、何度もコメントだけ読みに来る訪問者の負担を減らし、また、サーバの負荷も軽減。
- 二重投稿防止
Entry数が増え、アクセス数が増え、リビルドに時間がかかるようになってくると、タイムアウトになる頻度が上がり、不作為の多重投稿が多く発生するようになりました。そこで最初に行った対策が、この二重投稿防止だったんです。コメント投稿時、直近のコメントを読み込み、投稿されたコメントと名前、メールアドレス、コメント本文が同一の場合、「既に同内容のコメントが投稿されています」とエラーを表示するようにしました。これにより、MT4iからの多重投稿はほぼ無くなりました。MT本体からの多重投稿は減りませんが(苦笑)。 - 長らく原因不明だった文字化けへの対策
以前より、ユーザーの環境によって、原因不明の文字化けが発生していました。同じ文字コードでも発生したりしなかったりしていたので、原因がなかなかつかめずにいたんですが、今回、「こしぱ Weblog」にて文字化け発生の報を受け再度調べたところ、おそらく原因であると思われるところを発見しました。変更点を簡単に言うと、これまでJcode.pmにて文字コードを変換あるいは全角→半角変換する際、変換元の文字コードを指定していなかったんですが、これを指定するようにしました。Jcode.pmで変換元の文字コードが指定できること、今まで知りませんでした。ごめんなさい。ちゃんとマニュアル読めよ。>俺
1.8をリリースした1月から随分と間が空いた為、偉い数の追加/修正が。これで0.01しかバージョンが上がらないのはなんだか変な気もしますが、まぁ、バージョン番号なんていい加減だと言うことで。
上記変更点のうち、最後の1つを除いては、仮公開していた1.81β4までですべて包含しています。1.81β4を既にご使用されており、特に問題が出ていなければ、入れ替える必要は無いです。
ただ、最後の1つである文字化け対策は、これまで文字化けが発生していた為に全角→半角変換をオフにしていたり、使用そのものを止めてしまっているユーザーには有効です。是非、試してみて頂いて、「文字化けしなくなった」「相変わらず文字化けしている」とご報告頂ければ幸いです。
<追記>
「Movable Type 3.0 日本語版ベータ2のご提供」が始まっていますが、未だMT3.0での動作確認は行えていませんので、3.0は未サポートということでご了承願います。特にコメント周りがまともに動かない可能性が高いです。
にっく
おつかれさまでーす。
近々利用させていただきます。よろしくね。(って何をだろう?(^^;)
とらじろう
トラックバックもしましたがこちらにも。
本当に今回は、公私ともに大変な時であるにもかかわらず、ありがとうございました。
以前からの懸案事項の解決に結果として貢献することができ、私としてもとても嬉しく思っています。
ふるやん
早速最新のMT4iを導入してみたのですが、文字化けが発生しています。なんとかヘルプいただけませんでしょうか。
【環境】
文字コード:UTF-8
DB:BarkleyDB
Perlのパス:/usr/bin/perl
Jcode.pmは/extlib以下に導入済(ver0.82)
jcode.plもmt4i.cgiと同じディレクトリへ導入(ver2.13)
my($MT_DIR)には絶対パスで指定
mt.cfgでも絶対パスを指定
MT4iの導入前は正常に動作していましたが、導入後は下記のエラーが表示されるものの、エントリーなどは表示されます。
エラーメッセージ:Software error:
Can't locate Jcode/Unicode.pm in @INC (@INC contains: /home/sites/site17/web/extlib /home/sites/site17/web/lib /usr/lib/perl5/5.00503/i386-linux /usr/lib/perl5/5.00503 /usr/lib/perl5/site_perl/5.005/i386-linux /usr/lib/perl5/site_perl/5.005 .) at (eval 9) line 1.
For help, please send mail to the webmaster (admin), giving this error message and the time and date of the error. Content-type: text/html; charset=Shift_JIS Content-Length: 2226
TonkeyMagicさんの↓も参考にして、jcode.plを強制的にOnとするようにコメントアウトすると、エラーメッセージは表示されないものの、今度は文字化けしてしまいます。
http://tonkey.mails.ne.jp/archives/000493.html
MT4iのver1.81もver1.8も同じでしたし、TonkeyMagicさんのバージョンでも同様でした。
いろいろ調べてみたのですが、お手上げ状態です。
何かチェックポイントがありますでしょうか。
管理人
「Can't locate Jcode/Unicode.pm〜」のメッセージは、Unicode.pmというファイルが見付からない為に発生しているものと思われます。
extlibディレクトリの下の、更にJcodeというディレクトリの下に、Unicode.pmというファイルが有りますか?
ふるやん
早速のアドバイスありがとうございます。
extlib/Jcode の下にUnicode.pmはありませんでしたが、Unicodeというディレクトリがあります。
Unicode.pmを extlib/Jcode に置いても、 extlib/Jocode/Unicode の下においても変わらずでした。
Jcodeモジュールを解凍するとUnicodeというディレクトリができるのですが、これを Extlib 以下に置く必要はありませんでしょうか?
管理人
すいません、そもそも気になっていたんですが、
>MT4iの導入前は正常に動作していましたが、導入後は下記のエラーが表示されるものの、エントリーなどは表示されます。
これってどういう意味でしょうか。
MT4iの導入前にMT4iが正常に動作していた、ってのもおかしな話なんですが……。
管理人
そもそもの質問に答えていませんでしたね。
Unicodeディレクトリはアップロードする必要はありません。
更に質問。
「Can't locate Jcode/Unicode.pm〜」のエラーは、どのタイミングで表示されますか?
ずっと表示されっぱなしですか?
それとも、コメント投稿時のみとか、限られたタイミングですか?
文字化けが発生しているのは、どこ(記事一覧とか、MT4iから投稿したコメントとか、更にそのタイトルのみとか)ですか?
jcode.plを強制的にOnとするようにコメントアウトすると文字化けが発生するとのことですが、コメントアウトする前はどうでしたか?
文字化けが発生していましたか?
できれば、設置されたURLを教えて頂いて、現象を直に見せて頂いた方が早いと思うのですが、どうでしょう。
ふるやん
サポートありがとうございます。
>MT4iの導入前は正常に動作していましたが、導入後は下記のエラーが表示されるものの、エントリーなどは表示されます。
というのは、MT4iの導入前にはMovableType(ver2.661)が文字化けもなく動作している、という意味です。
説明不足で申し訳ありません。
またMT4i導入後、mt4i.cgi へアクセスしたときのみ、エラーが出たり、文字化けをしたりはしていますが、index.htmlやコメント投稿などMT4iと関係ないものは問題なく動作しております。
例のエラーが出るのは mt4i.cgi にアクセスした場合です。このとき文字化けは起こっておらず、mt4i.cgi からリンクされるすべてのページでエラーは発生しています。エラーは表示されっぱなしです。
Jcode.plを使うようにコメントアウトした場合は、エントリーのタイトルと本文が文字化けして、「コメント」や「次の記事へ」「前の記事へ」などは文字化けせずに表示されています。
MT4iのVer1.81を設置しているのは以下になります。
http://www.furuyan.jp/mt4i.cgi
ServerErrorが出ているものです。
Jcode.plを使うようにソースの一部をコメントアウトしたものが以下になります。
http://www.furuyan.jp/mt4i2.cgi
こちらはエントリーが文字化けしています。
mt4i2.cgi からリンクをたどるとmt4i.cgi?id=〜 へリンクされますので、表示されたらURLのmt4i.cgiをmt4i2.cgiと書き換えていただくとmt4i2.cgiを通した状態で表示されます。
お手数おかけして申し訳ありませんが、よろしくお願いいたします。
管理人
Jcode.plはUTF-8に対応していないので、文字化けするのが正常です。
もしかすると、これかな……。
Jcodeでエラー→CGI::Carpが古かった
http://www.hyuki.com/diary/dia0404.html#i17_18
CGI::Carp自体を修正する、ということみたいです。
自前でサーバを立ててらっしゃるなら最新版をインストールあるいは修正、レンタルなら管理者に相談か、Jcode.pmと同じ方法で導入したら、もしかしたらいけるかもしれません。
管理人
追記。
CGI::Carpで不具合が出てるなら、使用を止めてしまえばいけるかもしれません。
CGI::Carpは開発時のデバッグの為に仕込んでおり、MT4iの実際の動作には問題ないはずです。
29行目辺りの
use CGI::Carp qw(fatalsToBrowser);
の一行を、コメントアウト(先頭に'#'を付与)するか、削除してみてください。
ふるやん
アドバイスありがとうございます。
レンタルサーバーを使っているため、サポート窓口宛に問合せしました。
返答があり、状況が変わりましたら報告させていただきます。
ふるやん
use CGI::Carp qw(fatalsToBrowser);
をコメントアウトしたらInternalServerErrorがでて、
残念ながらダメでした。
shuki
はじめまして、shukiと申します。mt4i.cgiを実行すると下記のようなエラーが出ます。
環境は、windows自宅サーバ ANHTTPDです。
なにがおかしいのかさっぱりわかりません。何かヒントをください。
Software error:
Can't locate MT.pm in @INC (@INC contains: http://shukig.com/blog/extlib http://shukig.com/blog/lib D:\Perl\\Lib D:/perl/lib D:/perl/site/lib .) at d:\www\shukig\blog\mt4i.cgi line 361.
For help, please send mail to this site's webmaster, giving this error message and the time and date of the error. [Sat Aug 7 11:03:58 2004] d:\www\shukig\blog\mt4i.cgi: Can't locate MT.pm in @I NC (@INC contains: http://shukig.com/blog/extlib http://shukig.com/blog/lib D:\P erl\\Lib D:/perl/lib D:/perl/site/lib .) at d:\www\shukig\blog\mt4i.cgi line 361 .
lomo
いつもお世話になってます!
さきほど以前MT4iについて書いていたエントリーを一部書き直して保存したんですがトラックバック先のURL欄を消したのに再度送ってしまったようです…
申し訳ございません!
お手数ですが削除していただけませんか?
よろしくお願いいたします。