mail-entry Version 0.6.1用のPoweredバナーを作りました。
一般的なMTのPoweredバナーに合わせて作っているので、どんなサイトにもなじみが良いかと思います。
画像はこちらです。
ダウンロードしてお使い下さい。
自由に張って頂いて私はかまいません。
ただし、2次配布などはご遠慮下さい。
また、この画像に関する著作権はKENT&Co. / kmrsolid.netに帰属します。
mail-entryの名称についてはMobile-Bozuさんが定めるとおりとなります。名称に関して、こちらでは一切の権限を持っていません。
また、皆さんのご希望次第で別バージョンも用意していけたら良いのかなぁとも思っていますので、何かございましたら、是非ともコメントをお願いいたします。
Mobile-Bozuさんで紹介されたのでエントリー化してみます。
そのままですが、mail-entry用のPoweredバナーを作りました。
一般的なMTのPoweredバナーに合わせて作っているので、どんなサイトにもなじみが良いかと思います。
画像はこちらです。
ダウンロードしてお使い下さい。
自由に張って頂いて私はかまいません。
ただし、2次配布などはご遠慮下さい。
また、この画像に関する著作権はKENT&Co. / kmrsolid.netに帰属します。
mail-entryの名称についてはMobile-Bozuさんが定めるとおりとなります。名称に関して、こちらでは一切の権限を持っていません。
また、皆さんのご希望次第で別バージョンも用意していけたら良いのかなぁとも思っていますので、何かございましたら、是非ともコメントをお願いいたします。
最寄り駅隣のローソンです。確か、このローソン一年ちょっと前にも改装していたような…。
しかし、お隣にある店舗面積約3倍のセブン・イレブンによって陰に隠れてしまっているのでしょうか。
そんな私はローソンの方がわけもなく好きです。
大学の受験料も振り込める。
ATMがある。
各種チケットを買える。
DVDを買える。
からあげクンがある。
水曜どうでしょうグッズを買える。
どれを取っても私には魅力満載です。
今日の23時から営業再開なんだとか。
ローソンよ、君の底力を見せてくれ!
五日間の休業をものともせず、近隣同業者に打ち勝つのだ!
営業再開後については、追って報告する。
ついにモバイル用Air-H"Phoneを機種変更しました。
いわゆる京ポンですね。入力にクセがあって慣れないものの、徐々に使いこなしてます。そんなわけでこの更新も京ポンからです。
もうちょっとキーレスポンスが良いとなお良しでしょうね。速いキータッチにはついてこられないみたいです。これじゃあ、文字入力に一苦労だなぁ…。
ほかの機能がほどほどにできあがっているからなおさら残念。
社名変更後のDDI Pocketに期待ですね。
参考にしたのはMobile-bozuさんとはぢめのページさんです。
#陳謝>両ページオーナー様
さて、まずはMobile-bozuさんのところで公開されているmail-entryを適当なディレクトリにコピー。cgiは実行できる適当なパーミッションへと変更。
そして、メールアカウントを設定。新しくモブログ用に作ります。これは何かのやりとりには利用しないメールアカウントが必要だからです。これは、モブログに反映される・されないを問わず、無条件に受信したメールが処理されて消去されるため、必要なメールでさえ消去されてしまうからです。
そして、mail-entry-config.cgiを利用して初期設定。
パスワードは初期値で「passpass」になっている。
パス指定は極力絶対パスで設定するのが賢明。なぜなら後々mail-entryのディレクトリ位置を変更しても動作するからです。ただし、違うサーバへ移動したりなどなど、相対的な位置は変わらないものの絶対的な位置が変わってしまう予定があるなら、相対パスでも良いでしょう。
メールの設定は同じサーバなら「localhost」でOK。
受け入れのメールアドレスも大文字小文字を合わせてしっかりと設定しましょう。
#自分は大文字のドメインで設定しているので、一回はじかれました。
もし、携帯からの投稿で署名が自動添付されるおそれがあるのならば、署名削除の部分の設定もお忘れ無く。
ちなみに、私のサーバには「MIME::Parser」が無かったので、コマンドラインにて「perl -MCPAN -e 'install "MIME::Parser"'」(シングルクォーテーションとダブルクォーテーションの位置に注意!)とすることでインストールができます。途中の問い合わせは通常YesでOK。
これで、インストール自体は完了。
新しく設定してあるメールアカウントへ以下の書式でメール送信しましょう。
宛先:スクリプト内で設定したメールアドレス
件名:メールからエントリー!
本文:
<(投稿者ID)>
<(カテゴリ名)>
ここに本文を書く
<extend>
ここから追記として扱われる
ここで、問題がありました。
私のページでは「概要(excerpt)」の部分がトップで表示される仕組みをとっていて、「追記(extend)」が入力できることよりも、「概要(excerpt)」が入力できることの方が重要です。
と、ここで登場するのがはぢめのページさんの処置方法。
私はメールの詐称云々、うまく利用してしまう質なので特に対処せず。
行数が一部違っているのを修正しながら以下に一部転記しながら解説。
●mail-entry.cgi 13行目以降(変数定義の中にあればどこでも良い。)
<excerpt>で分割するために一つ変数を用意。今回はmyで指定。名前は$expseparetekeyとする。
my $trackback_separater = "";
my $eofkey = "";
my $exseparatekey = "";
my $expseparatekey = "<excerpt>";
my $cr_cut = 0;
my $hady_phone_domain = "";
my $title_head = "";
●mail-entry.cgi 147行目あたり以降(追記処理の後ろに追記する。)
投稿されたメールの「<excerpt>」以降を概要として処理するためのスクリプトを追記。
#概要部分を取り出し、本文からは削除
$expseparatekey = Jcode->new($expseparatekey)->$to_jcode();
if($mail_body =~ s/(.*)\n${expseparatekey}\n(.*)/$1/s ) {
$excerpt = $2;
}
●mail-entry.cgi 465行目あたり以降(新規エントリー処理に追記)
エントリーを作るときに概要を処理させる。
$entry->title($title);
$entry->text($comment);
$entry->text_more($ex_comment);
$entry->excerpt($excerpt);
●mail-entry.cgi 582行目以降
結果表示文にも概要を表示処理するために追記。
Rebuild Entry ...<br>
title: $title<br>
date: $create_date<br>
category: $mycategory<br>
author: $myauthor<br>
comment: <pre>$comment</pre><br>
excerpt: <pre>$ex_comment</pre><br>
Great!!<br><br>
以上で、私の環境ではうまくいきました。
ただし、概要に写真を貼り付けると言うことはできません。それは、見やすいサイズへと変換するのに実際どうしたらいいのかというのがいまいち固まっていないから、処理を考えているところです。実装するかどうかはわかりませんが、この際、このままでも良いかなと思っています。細かいことはPCから処理した方が良いに越したことはないので。
ちなみに、お気づきの通り、私のトップページでは写真が2箇所に表示される場合があります。もちろん、最近のエントリーの部分と「写真」と書かれている、最近の写真投稿の部分です。この2箇所がサイズに差を持っているため、それぞれで写真のサイズが正当な大きさになるように見ながら調整することも重要です。間違っても100%なんて指定をしたら、ど真ん中にどでかく写真が表示されてしまうことがあるので、「写真」の方だけを考えるわけにはいきません。かといって、widthを100pxに固定してしても、heightが変わってくれなければ意味がないわけで...。
いずれにしても実装したらここに追記するつもりです。
[追記 2005/01/17 17:10]
そういえば、どうすれば実行できるのかを書き忘れました。
Webブラウザから、mail-entry.cgiを呼び出せば実行できますので、手動実行するならそれで十分。
ただし、リビルドに時間がかかる場合があります。しょっちゅう携帯からcgiを実行させていたのではパケット代がかなりかかってしまうかもしれません。
その時はCronを利用します。
インストールされているかを確認するにはシェルスクリプトで「which crontab」とします。ディレクトリが表示されれば実行可能です。そうでなくて、「/usr/bin/which: no crontab in (/usr/lib/courier-imap/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin)」などと表示されたらcronは入っていません。自分で管理するサーバなら、自分でインストールを行っても良いと思います。それはこの場では紹介しません。
無事にインストールされているようであれば、シェルコマンドで「crontab -e」とするとcronの設定ファイルエディタが起動します。使い方はviと同じです。文字挿入を開始するなら「i」のキーを押します。書き終わったら、「esc」で抜けます。その後保存して終了するには「:wq」と打ってエンターキーです。もし、失敗して保存したくないのであれば「:q!」です。
たとえば5分ごとに実行するなら
*/5 * * * * cd /home/user_name/directory/to/the/mail-entry/ ./mail-entry.cgi
!注意!:このまま入力したりしないように。ちゃんと自分のディレクトリに書き換えること。
[追記 2005/01/17 18:00]
意外と簡単に概要に画像表示ができるようになりました。
私が画像表示を躊躇ったのは自動で画像サイズを変換できるシステムがサーバにないためです。
ということで、以下の内容を追記しました。
●mail-entry.cgi 147行目以降
概要に入れるための画像出力タグ保存用の変数をmyで宣言。
my $title = "";
my $comment = "";
my $exp_comment = "";
my $ex_comment = "";
my $excerpt = "";
●mail-entry.cgi 259行目以降
サムネイルを作らない設定にしてあるので、ここで、概要に付け足すべき画像出力タグを作成する処理を追記。
# サムネイルを作成しなかった時
$comment .= img({
src=>$imgpath."/".$filename,
width=>$width,
height=>$height});
my $exp_height = int($height * 160 / $width);
$exp_comment .= img({
src=>$imgpath."/".$filename,
width=>"160"});
●mail-entry.cgi 422行目以降
概要部分の出力に画像タグを付け足して出力する処理を追記・変更。
#概要部分を取り出し、本文からは削除
$expseparatekey = Jcode->new($expseparatekey)->$to_jcode();
if($mail_body =~ s/(.*)\n${expseparatekey}\n(.*)/$1/s ) {
$excerpt = $exp_comment;
$excerpt .= $2; # "="ではなく".="になっているので注意!
}
これだけで、大丈夫でした。
画像は「写真」ゾーンが160pxでちょうど良くなることを良いことに、幅だけ明示的に設定して割り算かけ算。そして、その値をint(整数)型にキャストそれで高さを割り出してます。意外とうまくいっちゃってちょっとショッキングですけど。
[追記 2005/01/18 09:10]
Cronに関しての追記です。
どうやら上記の方法でCronを設定すると、毎回毎回、実行結果のメールが届いてしまうようです。これは困りもの。実行されていることを確認する意味ではDebugに使えるんですが、これが、5分ごとに送られてくるとなると、常にどこかでメール受信をしてなければかなり大変。
と言うわけで、以下のように書き足しました。
*/5 * * * * cd /home/user_name/directory/to/the/mail-entry/; ./mail-entry.cgi > /dev/null
!注意!:一行にまとめて書くこと。改行すると保証はありません。
[追記 2005/01/21 01:20]
html出力に関するCGI修正の追記です。
私は画像を先に持ってくるのが好きなので、(というか今までそうなっていたので)そういう風に出力してもらう必要がありました。さらに、今までのCGIではサムネイルを作成しなかったときに横幅が160px未満でも横幅を160pxにしようとするため、意図しない拡大が起こる可能性があり、不都合があるため、修正をしてみました。ついでにサーバマシンの移行とともにPerlモジュールを入れて、ImageMagick (PerlMagick)で処理できるようにしました。そのため、サムネイルを作成した場合の処理も変更をしてみました。
変更箇所は以下の通りです。
●mail-entry.cgi 257行目以降
# HTMLの作成
if ($sumfilename eq "") {
# サムネイルを作成しなかった時
$comment = img({
src=>$imgpath."/".$filename,
width=>$width,
height=>$height}) . $comment;
if ($width > 160) { # 横幅が160px以上の時だけwidthを160pxにする
my $exp_height = int($height * 160 / $width);
$exp_comment .= img({
src=>$imgpath."/".$filename,
width=>"160",
height=>$exp_height}) . $exp_comment;
} else { #そうでなければそのままのサイズで表示する
$exp_comment = img({
src=>$imgpath."/".$filename,
width=>"$width",
height=>$height}) . $exp_comment;
}
} else {
# サムネイルを作成した時
$comment = a({ # ".="が"="に変更になっているので注意!
href=>$imgpath."/".$filename,
target=>"_blank" },
img({
src=>$imgpath."/".$sumfilename,
width=>$sw,
height=>$sh })) . $comment;
$exp_comment = a({ # ".="が"="に変更になっているので注意!
href=>$imgpath."/".$filename,
target=>"_blank" },
img({
src=>$imgpath."/".$sumfilename,
width=>$sw,
height=>$sh })) . $exp_comment;
}
ソースをいじくってみました。結局うまくいくのかはわからないのですが、これ
でうまくいったらいいなぁ。
モブログで概要を書くのにexcerptを利用してみた結果です。
[追記]
それだって、うまくいかない様子です。(涙)
もちろん、モブログするためのメールには規定があるわけで。
指定されたとおりに書かないとちゃんと更新されないわけですよ。
となると、概要は書けないのかなぁ...なんて。
モブログで概要を書くのにexcerptを利用してみた結果です。
[追記]
結局うまくいかなかった...。