« mail2entry、表示部で文字化けしてました | メイン | セキュリティパッチ大過ぎ »

2003年09月23日

穴水版mail2entry ver.0.2.0公開します

※最新版が公開されていますので、このページからのダウンロードは出来なくなりました。こちらへ

名前、変えた方が良いですかね。Joi Itoさんのと混同されないように。んー

えー、ver.0.2.0です。rebuild_indexも合わせてダウンロードしてください。
Download mail2entry.cgi(ダウンロード後、拡張子.txtを.cgiに変更)
Download rebuild_index.cgi(ダウンロード後、拡張子.txtを.cgiに変更)

追加機能、改良点を更新履歴より以下に引用します。

更新通知のpingが問題なく送れるようになったようなのでバージョンを0.2まで上げました。また少しまともなスクリプトになった気分(笑)
リビルドのあたりのコードが少し変わりました。blog->saveが新登場。いまいち使い方分からず使ってます。こうしたらいいとか、ここが変とか、どしどしご指摘くださいませ。

アップデートするときの注意点。

と、こんな感じです。でもまだなにか書き忘れているような・・・
実験用コードですので、ご利用に際してはくれぐれもご注意ください。ログが吹っ飛ぶようなことはないと思いますけど。

投稿者 osho : 2003年09月23日 18:11

トラックバック

このエントリーのトラックバックURL:
http://www.mobile-bozu.com/mt/mt-tb.cgi/131

このリストは、次のエントリーを参照しています: 穴水版mail2entry ver.0.2.0公開します:

» http://www.funkanoll.com/blog/archives/000070.html from Funkalogic
Mobile-bozu: 穴水版mail2entry ver.0.2.0公開します... [続きを読む]

トラックバック時刻: 2004年07月12日 14:29

コメント

okasakaです。
mail2entryを試そうとしていますが、
設定などしてもひたすらInternal Server Errorがでます。
CGIの設置など基本的なことはできているつもりですが、
以下の2点をとりあえず教えてください。

1)このCGIには別モジュールが必要ですか?
2)ドキュメント中に
mail2entry.cgi,rebuild_index.cgi
entry.cgi,index.cgi
など複数のcgiがでてきますが、実際に現行のバージョンで必要なのはどのcgiでしょうか?

その他、設置のときのコツなどありましたら
教えてください。

投稿者 okasaka : 2003年10月11日 15:08

別モジュールはいくつか必要ですが、最近のサーバーでは一般的に用意されていることが多いものばかりのはずです。198行目〜212行目を見ると必要なモジュールが分かります。湖西災害ボランティアのサーバーは、MIME::Parserがありませんでした。ほかには、サムネイル表示をするためにImage::Magickが必要です。TELNETが使える環境であればParserはインストールできると思いますが、Image::Magickはコンパイルが必要なので、管理者にお願いしてみるしかないと思います。$flagresizeが0になっていれば、Image::Magickがなくても動きます。

必須cgiは、mail2entry.cgiとrebuild_index.cgiです。同じディレクトリに設置してください。アクセス権は出来る限り700で。index.cgiは、トップページを開くと同時にmail2entry.cgiを実行したい場合に用います。

コツは・・・特に無いと思います。Setting節のディレクトリに関するものがちょっと間違っているだけでエラーになりますから、その点要注意です。他に分かりにくいのはブログIDぐらいでしょうか。First Weblogを消して新たにweblogを作っていたのを忘れて、1を指定し続けて困った経験があります(汗。MTの編集メニューの時のアドレス欄を見ると確認できます)

投稿者 osho : 2003年10月11日 22:01

設置の仕方がログに埋もれてしまってますね。目にとまりにくいと思いますので、ここにリンクをはっておきます。
http://www.mobile-bozu.com/weblog/archives/000066.html

投稿者 osho : 2003年10月11日 22:04

ありがとうございます。MIME::ParserはこのCGIを動かすのに必須なんですね。職場のサーバがMTに対応しているので、評価しようかなと思ったのですが、レンタルサーバーなので少し難しそうです。レンタルサーバー自体を移行する話(これはもしかして企業秘密か?)もありますので、職場で別に環境を作って試してみます。具体的にはJoeITOさんのプログラム(dhさんのゲートウェイ)を今まで使用しているのですが、それの「置き換え」を考えています。

投稿者 okasaka : 2003年10月13日 22:18

Parserはメールの解析に使っているので欠かせないんですよ。Parserのインストールはサーバー管理者にとっては簡単な作業のはずなので、管理者に要望を出してみると案外すんなりいくかもしれません。低価格サーバーでも応じてもらえたという話も聞きますし。(私は勝手にインストールしちゃいましたが・・・)
この辺りのこともVer.1.0が出来たら記載しなくちゃと思っていますが、1.0になるのはいつのことやら・・・なるべく早めにまとめてエントリーします。

moblog.uva.ne.jpには興味あります。災害用に使うには方向が違うかも、と思ったので今のところ自力で作ってますが、そのうち試してみたいサービスです。

おおっぴらに書くほど進展してないのでここにこっそり書きますが、mail2entryの設定をブラウザから行うためのcgiをちょっとずつ書いてます。いまだにPerlに馴染めなくて試行錯誤を繰り返してるので、随分時間がかかりそうですが・・・

投稿者 osho : 2003年10月15日 00:05

 こんにちは。greenplastic.netのyosshiと申します。
 昨日から、こちらで公開されているmail2entryを使わせていただいているのですが、メール送信後、mail2entry.cgiにブラウザからアクセスしますと、なぜか同じエントリーが2つ投稿されてしまいます。
 申し訳ないのですが、手順を確認させていただきますと、まず、メールを送信する。その後、mail2entry.cgiを実行する。
 以上でメールの内容がウェブログに反映されるということでよろしいのでしょうか。
 このような便利なスクリプトを積極的に公開されている方々にはいつも感謝しています。mail2entryについては、以前にJoi Itoさんのところからダウンロードしたスクリプトと格闘して敗れ去ったという苦い思い出があります。
 よろしくお願いいたします。

投稿者 yosshi : 2003年11月07日 14:21

はじめまして、yosshiさん。mail2entryのご利用ありがとうございます!

使い方はその通りです。今までテストした中では、エントリーが2重に投稿されることはなかったですので、初のケースです。どうしたことでしょう。一つも投稿されないときはしょっちゅうでしたけど。

ブラウザからmail2entry.cgiを実行したときの結果表示は、エントリー1つ分になっていますか?
その時点で2つあるようなら、メール自体が2通有るか、cgiが2通有ると思いこんでしまって処理をしているということになります。

ちゃんと1つ分であれば、リビルドをする段階でおかしなことになっていることになります。

試しに、mail2entry.cgiの最後の3行を
#if($flagmessage) {
# system "./rebuild_index.cgi $myblog_id";
#}
とコメントアウトしてみてください。単にリビルドしてるだけなのでたぶん解決にはならないはずですが、念のため。

また、
$blog->save; #blogをsaveしないと、前回のエントリーにナビゲータがうまく付かないことがある
という行もコメントアウトして試してみてください。
怪しいのはこれぐらいでしょうか。

なにぶん自分の環境では再現出来ないものですから、申し訳ありませんが実験してみてください。どんな環境でも一発で動くものにしたいと思ってますので、よろしくお願いします。

投稿者 osho : 2003年11月07日 20:40

 ありがとうございます。
 結論から言うと、ボクのミスだったようです。
 どうやら、携帯電話でmail2entry.cgiを呼び出してエラーが出たことや、safari(MacOSXのブラウザ)のエラー(60秒間応答がないとエラーになる)が原因で2重投稿が起こっていたようです。
 念のため、もう一度だけ確認してからmail2entry.cgiを書き換えようと思ってそのまま試したところ、問題なしでした。safariのエラーを考慮して別のブラウザでmail2entry.cgiを呼び出したところ、時間はかなりかかりましたが(5分くらいかかったかも)、最終的にはエントリー1つ分の投稿完了メッセージが出ました。
 お騒がせして申し訳ありません。

投稿者 yosshi : 2003年11月07日 21:49

無事に動いて良かったです。ほっとしました。

そういえば、携帯電話から呼び出しテストしたことがないです。エラー処理ルーチンをしっかりしないといけないですね。ちょっとしたことで出来るはずなのですがほったらかしにしていまして。。。

5分ぐらいかかるというのは、なんとも不思議です。mt.cgiでリビルドするのと大差ない時間で出来るはずなのです。
試しに、216行目(Setting節の少し下)にある
print "Content-type: text/html; charset=$printJcode{$to_jcode}¥nPragma: no-cache¥nCache-Control: no-cache¥n¥n";
という行の前に、
binmode(STDOUT);
という一文を挿入してみてください。MT4iでタイムアウトエラーが出たときに使った方法なのですが、もしかしたら効果があるかもしれません。

投稿者 osho : 2003年11月07日 23:43

 binmode(STDOUT);
を挿入してみましたが、結果は一緒でした。5分くらいかかります。
 ボクはindividual, daily, monthly, categoryのアーカイブを使用しているのですが、mail2entry.cgi実行中でもそれらのページは生成されていることを発見しました。indexに結果が反映されていないので、rebuildが行われていないものだと思っていましたが。
 ここで質問なのですが、mail2entry.cgiによるrebuildは、mt.cgiで『すべてを再構築』するのと同じ動作なのでしょうか。
 というのも、ボクはこの『すべてを再構築する』を普段ほとんど使いません。コメントを削除したりしたときなどにrebuildを促されはしますが、そこで再構築をせずにエントリーの保存を行います。時間とCPUの不可の節約になると思ってそうしています。
 もし『すべてを再構築する』が行われているなら、もしかしたらそのくらい時間がかかるのかもしれません。

投稿者 yosshi : 2003年11月08日 00:33

あらら、効果なしでしたか。私の予想は外れっぱなしですね。申し訳ないです。
「すべてを再構築」に、さらにその前にエントリーの保存とリビルド、前回エントリーのリビルドをしています。なんだか無駄なような気もしますが、2通以上のメールを処理しようとすると正しくリビルドされないので、いろいろ実験した結果、こうなっています。
つねに1通メールするごとにcgiを実行するというのであれば、上にも書きました以下の3行をコメントアウトして、
#if($flagmessage) {
# system "./rebuild_index.cgi $myblog_id";
#}
以下の文を下に書き加えてみてください。
$mt->rebuild_indexes(BlogID => $blog_id)
or die $mt->errstr;
エントリーの保存の終わるタイミングを監視する方法が分かればもう少し幅広い環境に対応できるんですけれど・・・

投稿者 osho : 2003年11月08日 09:55

 どうも、お世話になってます。
#if($flagmessage) {
# system "./rebuild_index.cgi $myblog_id";
#}

$mt->rebuild_indexes(BlogID => $blog_id)
or die $mt->errstr;

を試してみましたが、mail2entry.cgiを呼び出すと500エラーが出てダメでした。
 あと、ボクが借りているサーバーはcronが使えるのですが、この場合、mail2entry.cgiを実行するように指定すればよいのでしょうか。

投稿者 yosshi : 2003年11月10日 23:23

すいませーん
間違えてました。ほんとうにすいません。
$mt->rebuild_indexes(Blog => $blog_id)
でした。Blogの後のIDが余分でしてた。
cronを使うのであれば、
if($flagmessage) {
# system "./rebuild_index.cgi $myblog_id";
$mt->rebuild_indexes(Blog => $blog_id)
or die $mt->errstr;
}
としておいてください。if文を消してしまうと、メールが無くても見リビルドをしてしまいますので。

cronの使い方は結構複雑ですので、
http://homepage1.nifty.com/cra/linux/cron.html
を参照してください。
viというエディタで書式を書き込むことになります。操作方法が分からなければ、以下のページが参考になると思います。
http://www.net-newbie.com/linux/commands/vi.html
うまく動かなくなったらescキーを何回か叩いて、:q[enter]で終了できることさえ覚えておけば安心です。

シェルでcrontab -eとするとviが立ち上がってcronの設定ファイルを編集できるようになるので、書式に従って一行書き加える、ということになると思います。
実は、「cronに登録するか」などと書いてるくせに、使い方知らないんです(汗)

なるべく効率よくリビルドするようにコードを修正している最中ですが、なかなかうまくいきません。時間かかりそうです。

投稿者 osho : 2003年11月11日 00:41

コメントしてください

サイン・インを確認しました、 さん。コメントしてください。 (サイン・アウト)

(いままで、ここでコメントしたとがないときは、コメントを表示する前にこのウェブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


情報を登録する?