2004/01/10(土) [n年前の日記]
#1 [anime] 境目は無いのが本当かもしれない
プラネテス。ギクリとした。自分もついつい、物事には須らく境目があるかのように、錯覚・勘違いしてしまう事が多いもんで。
[ ツッコむ ]
#2 [anime] エロゲ的表現がアニメに取り込まれたのかと思った
スピカ。冒頭のシーンが、エロゲ画面的雰囲気。やられた。いや、無声映画や外国映画から取り込んだと考えるのが自然だろうけど。それにしても、過去と現代を行ったり来たり。どういうシリーズ構成やねん。全国の子供達はついてこれてるのか。…子供が見てるとも思えんか。あの作品を「いいねぇ」なんて言いながら見てる子供の姿は、想像すると、ちと怖い。
[ ツッコむ ]
#3 [windows] *.dbx→MH形式への変換作業
ようやく上手くいったみたいなのでメモ。まずは、
_DBX Export Tool
を使って、*.dbxを*.emlに変換する。変換する際の設定は、「ファイル名の付け方」→「連番」、「DBXファイルごとにフォルダを作成する」にチェックを入れた状態。下のような感じ。

これで、フォルダ別に、連番の*.emlが作られる。emlファイルは、中身がそのままMH形式として使えるらしいのだけど、それでも、ファイル名と改行コードを変更しなければならない。しかし、フォルダ数が結構あるので手作業ではやってられない。というわけで、以下のようなperlスクリプトを作って作業をした。
以前と違って「^M」なんて出てこないし、大半は内容を読めてるので大丈夫そう。一部のメールが文字化けしてるのが謎だけど。文字コードが違うのかな。

#!/usr/bin/perl
# eml2mh.pl
# ActivePerl 5.6.1 build 635 で使用。
my $convert_use = 1; # 変換処理を行うか (1=yes/0=no)
my $file_delete = 1; # 処理後、.eml を削除するか (1=yes/0=no)
my $file_verbose = 1; # 処理中のファイル名を表示 (1=yes/0=no)
my $dir_verbose = 1; # 処理中のディレクトリ名を表示 (1=yes/0=no)
my $allcnt = 0;
&filesearch(".");
exit;
sub filesearch {
my($dir) = @_;
my $file;
my @files;
my %emlv;
my $eml;
opendir(DIR,"$dir");
@files = sort grep(!/^\./, readdir(DIR));
closedir(DIR);
my @emls = ();
foreach (@files) {
my $file = "$dir/$_";
if (-d $file ) {
&filesearch("$file");
} elsif ( -f $file && $file =~ /\.eml$/ ) {
push(@emls,$file);
}
}
foreach $eml (@emls) {
$eml =~ /^.*\/(\d+)\.eml$/;
$emlv{$eml} = $1;
}
my @emlsort = sort { $emlv{$a} <=> $emlv{$b} } keys %emlv;
my $cnt = 0;
foreach $eml (@emlsort) {
$eml =~ /^(.*\/)(\d+)\.eml$/;
my $p = $1;
my $i = $2;
$allcnt++;
# my $newfn = $p . sprintf("%04d", $i);
# my $newfn = $p . $i;
my $newfn = $p . $allcnt;
print "$newfn <- $eml\n" if $file_verbose;
$cnt++;
if ( $convert_use ) {
my @lines = ();
open(IN,$eml) || die "Can't open $eml";
binmode(IN);
@lines = <IN>;
close(IN);
open(OUT,">$newfn") || die "Can't open $newfn";
binmode(OUT);
foreach(@lines) {
s/\r\n/\n/;
print OUT $_;
}
close(OUT);
if ( $file_delete ) {
unlink($eml) || die "Can't delete $eml";
}
}
}
print "[$dir]\t... convert .eml file = $cnt\n" if $dir_verbose;
}
perlは、ActivePerlを利用。
*1
DOS窓で、
cd 該当フォルダ perl c:\〜\eml2mh.plと打って使う。やってる事は、
- 各ファイル名を、「連番.eml」から「連番」に変更。
- ファイル中のWindows改行コード(\r\n)をUNIX改行コード(\n)に変換。
- サブディレクトリを再帰的に辿って処理する。
- 1Z を入力して、フォルダリストを更新。
- g を入力して、フォルダ名を選択。
- s を入力して、allと打って、サマリを更新。( ~/.mew.el等を修正してサマリ表示形式を変更した場合)
- 読みたいメールの上で、spc を押せば、内容が見れる。
以前と違って「^M」なんて出てこないし、大半は内容を読めてるので大丈夫そう。一部のメールが文字化けしてるのが謎だけど。文字コードが違うのかな。
*1: ちなみに、ActivePerlでファイルを読む場合、何もしないと改行コードがWindows向けに変更されてしまうらしく。binmode(〜) をしておかないとダメみたい。
*2: ちなみに、UNIX環境なら _incなるツールでmbox→mh変換ができる らしいですな。
*2: ちなみに、UNIX環境なら _incなるツールでmbox→mh変換ができる らしいですな。
[ ツッコむ ]
#4 [meadow] Wanderlustの設定作業中
メールデータの変換が出来たので、あちこちのサイトを覗きながら、Wanderlustの設定ファイル、~/.wl の記述について調べてたり。
◎ アーカイブフォルダとやらはたしかに魅力的なんだけど :
しばらくは、各メールの中身を参照して、不具合がないか調べないといけない予感。なので、問題が無い事がハッキリするまでは、普通(?)のMH形式で様子見しようかと。
◎ マウスに慣れちゃってた事を痛感 :
キーボードによる操作がちとツライ。考えてみれば、OE利用時、ブラウザと同じ感覚で使ってたような。見るだけの作業の時は、マウスonlyのほうが楽。しかし、Meadow2+Wanderlustにおいては、カーソルがどこにあっても、ホイールを使うとフォルダビュー(?)がスクロールしてしまうわけで。むーん。
[ ツッコむ ]
#5 [windows] MewもWanderlustも日時管理に関してはMozilla Thunderbirdと同じみたいなんだけど
やはり、ヘッダ中のDateしか読んでないように見える。誰も困ってないんだろうか。不思議。世界中のPCの時計は、そんなにも正確かい? 正確かい?
◎ Windows圏とUNIX圏の違いかもしれないな :
UNIX圏ではntp云々で時間を合わせるのが常識だから、ネットに繋がってるPCの時計が狂ってる=メールの送信日時がおかしくなるなんて滅多にあり得ない。よって自ずと、時間情報が狂ったメールへの対処方法については、さほど意識が向かない、とか? でも、Windowsは違う。知識を持たないユーザが多いせいもあって、各家庭のPCの時計が、数分〜数十年、狂ってるなんてザラ。だからOEは、メールのヘッダに含まれた複数の時間情報の中から、より間違いが少ないであろう情報を参照して管理するようになった。そうでもしないとWindowsの世界では使い物にならない…そんな時期があったのではないかと想像。…でも、Thunderbirdなり、Mewなり、Wanderlustなり、UNIX圏生まれのメーラが、今後、時間情報の参照個所について選択肢を増やす展開は期待薄だろうな。俺達はちゃんとやってるんだ、なんでバカどもに合わせなきゃならんのだ的自負もあるだろうし。…でも、それもちょっと困る。自分側の設定でどうにか解決できるならともかく、相手側、それも知識を持たないユーザ達の行動・意識に期待しなければならないのは、問題解決の道としてはどうなのか。…OE(MS)は技術で解決する道を選び、
*1
UNIX圏のメーラはユーザのモラル向上に期待する道を選んだ。一見すると後者のほうが、正しく、美しく、整った道のように思えるけど。でも、世界中の人間の頭の中身が同じになれば問題は解決するはず的な考え方って、技術者のアプローチ・思考としてはどうなんだろう。てな疑問を持ってしまったのは私だけでしょうか。
◎ といいつつも実際にはそんなに悲惨な状況では無いし :
大多数のメールは送信日時・受信日時のズレなんて無視できる範囲なわけで、メーラの動作に不具合が生じるほど日時が狂ったメールは圧倒的に少数。なので、わざわざメーラ側で対処するまでもなく、それらメールのみ別フォルダに分けて管理するとか、該当メールのDateを手作業で書換えるとか、あるいはそういった書換え処理を行う別のツールを作るほうが現実的だろうな。…メール内容をガシガシ変えちゃってええんかという不安・疑問もあるけど、spamやMLじゃよく行われてる事だろうし、特に問題は無いのかもしれない。たぶん。…とはいえ、OEですら出来てる事が、他のメーラでは出来ないとなると、単なるエンドユーザとしては「なんでやねん」と思うところがあったりもして。…まあ、どれが正解というわけでもないんだけど。難しいですな。
*1: 同時に、マズイ状況を放置する事に加担してしまったわけですが。それでもWinXPあたりだと、ntpによる時刻合わせ機能が標準で含まれてるようだし(デフォルトでonになってるかまでは知らんけど)、改善しようという気持・姿勢は一応あるのかも。
この記事へのツッコミ
[ ツッコミを読む(2) | ツッコむ ]
以上、1 日分です。
雷鳥のコードはあまりにも大きくてどの部分がメッセージの日時を管理するかサッと見つけられなかったので、WLでは日付部分の取得はどうやっているのかとチラとコードを覗いてみたんですが、ちょっと私のelispの習得具合では弄りたくないレベルのコードが記述されてます。
elmo/modb-entity.elの変数modb-entity-default-handlerに自作のentity-handler関数をバインドすれば、色々出来そうです。
dateエンティティの取得は(elmo-unfold-field-body "date")とやっているだけのようですのでこの部分を弄ればよいのかもしれません。
# エンベロープのどのフィールドの値を最優先するかなどの悩ましい問題も残りますが…
言われてみて今頃気づいたんですが、もしかして、WLにしろ雷鳥にしろ、
受信した順番でファイルに番号をつけてる
(あるいはmbox形式のファイルに追加してる?)のかなという気が…
だとすれば、そのまま番号順(あるいは格納された順)に表示するだけでも、
ちゃんと受信順で並んでしまうわけで、WLや雷鳥しか使わない環境であれば、
問題が起こる事などあり得ないような気がしてきました。
何故に自分が困ってるかといえば、
必ずしも受信順に並んでいない・格納されてないOEのメールデータを
インポートして眺めてるからであって…
だとすれば、このあたり、メーラ云々の話ではなく、
OEからのインポート処理が適切ではない、というだけの話ですね (;´Д`)
やはり、対処するとなれば、インポート処理の際に対処してしまうのが
タイミング?としては妥当のような気もします。
(とはいえ、複数のメールアカウントを利用しつつ、
受信・送信のデータも混在して管理するとなれば、
受信順が時系列に沿ったものになるか怪しい場面も出てくるので、
状況が変わってくるかもしれませんが…)
> チラとコードを覗いてみたんですが
うわ。コードを覗けるなんて凄い。尊敬しますです。
うう、私もそういった能力を身につけられるよう努力せねば… (;´Д`)
> 自作のentity-handler関数をバインドすれば、色々出来そうです。
なるほど。ユーザ自身がガリガリと仕様を変更できる余地が残ってるのですね。
ということは、後はユーザ側のカスタマイズの問題になるのか…
知識が無ければ現状を甘んじて受け入れるしかない、
という話になってしまうのだろうな…
…ていうか、それは何に関してもそうですな。
最終的には、「なければ作れ」と言われて話が終ってしまうというか(笑)