トップ 最新 追記

猫熊は燃えつきた?!日記

最近なんにもやっていませんが、なにかやったらこちらに置くようにしています。
2002|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|
2011|09|
2012|02|


2003-04-01 (Tue) 腰の痛みはあとわずか [長年日記]

まだちょっとつぼみが残っていたかな?帰り道は暗くてわからなかったや。だけど、うちの会社勝手に撮っちゃいやよん、自分の会社をいれろよな。(けど、あそこからはこっち向きの方が絵になると思う)

ついでに cmigemo

確かに cmigemo の方が導入は簡単だから、価値はあると思いますよ。ぼくは、ある程度の速さをもったマシンなら Ruby の方がいいかなぁ。

そういえば、Elisp cache を真っ当にしあげて commit しようと思っていたけど、全然進捗していないや。

春休み

なので、女房が子供を連れて実家に帰っている(月〜木)。本当なら、思いっ切りノミにでも行きたいところなのだけど、ちょっと(全然)無理だなぁ。

あぁ〜〜、明日の朝飯買ってくるの忘れてしまった。;_;

最近の検索(されている)結果

タイムピンクはちょっと恥ずかしいかも。だけど、引っ掛かるのも不思議なんだけど『how do I catch mew in Ruby Version?』ってこの人はなにを望んで検索して、なにをしたかったんだろうか。Mew とか Ruby をコンピュータ用語だと思わずに本来の意味だと考えれば良いのかな?

本日のツッコミ(全1件) [ツッコミを入れる]

ko [本来の意味のポケモンルビーでミューツーを捕まえたかったと思われ。]


2003-04-02 (Wed) ねむい。。。 [長年日記]

ぼくが h 氏に良く首を絞められている理由

そっか、hっちが悪いんじゃなくて、Oくんが悪かったんだ。初めて知ったぞ。

ThinkPAD T20

最近、レジュームから復活させたときに、LCD のバックライトが点灯しなかったり、まったくなにも表示されなかったり、というのが多発していた。LCD 回りのトラブルは、以前 30cmほど落下させたときに多々発生したのだが、そのときはばらしてみたところ、マザーボードと LCD を繋ぐケーブルのコネクタが数mm浮いていたので、それを押し込んだら直った。というわけで、今日、朝一でばらしてみたのだけど、ホンのわずかコネクタが浮いていた。しかし、これですっかり直ったかどうかはまだ不明。
だけど、ばらしかたをすっかり忘れていても、これで、ここまで素晴らしい資料が入手できる IBM & ThinkPAD 万歳 \(^^)/
ちなみに IBM の名誉のために書いておくと、ちゃんとネジ(図中の (+))で止めてあるのだけど、片止めなので、すこしづつ浮いてしまうようだ。もう、3年ぐらいつかっているしね。
         子基板
 (ケーブル) ---------
               | |        横から見た図
               + +
               | |   親基板
         ================================
 
 
         +--------------+
         | 子基板       |   上から見た図
         |          (+)|
         |              |
         +--------------+
本日のツッコミ(全1件) [ツッコミを入れる]

ko [ThinkPAD 落としたのは 2001 年の九月くらいですな?]


2003-04-06 (Sun) 親ばかの日 [長年日記]

午前の部

娘が、総合区民ホールの小ホールでピアノの発表会。K先生のピアノを演奏する姿は素敵だ。

午後の部

自宅で一時間休憩して、今度は、息子が、文化センタの小ホールでピアノの発表会。本当は一ヶ月前だったのだけど、そのときは熱でダウンしてしまったため、O先生のご厚意で別の教室で O先生が担当している今回の発表会に紛れ込ませて貰った。若手の先生お二人は演奏したが、O先生は演奏しなかったのでちょっと残念。

ダブルヘッダー

で親ばかも疲れました。一日 50曲ぐらいピアノの演奏を聞いてしまったし。

もともと、娘がピアノ教室に通っていて、本来は同じ先生(K先生)に面倒をみて貰うのが筋なのだが、たまたま、娘と同じ時間に O先生が空いたので(どーせ、息子も一緒につれていっていたし)別々の先生に見て貰うようになったのでした。特に、息子は女房のリズム感/音感のなさを継いでいるので O先生にはいつもご苦労をかけている模様。

久しぶりの失敗

午前の部のときに、Leica M6 のフィルム装填をミスっていた。自宅でフィルムを装填してチェックしたときは OK だったのだけど、娘の演奏開始時に一枚目を巻き上げたら、空巻き上げになってしまっていた。(ので、フィルムを変える時間がなくて、娘の演奏中はビデオ撮影のみ)

う〜〜、修行が足りない。本番前に適当に試し撮りしなかったのが、敗因なのだが。これなら、MZ-3 も持っていけば良かったか。。。


2003-04-08 (Tue) ふっか〜〜〜つ [長年日記]

大家さん

おつかれさまーー

spamfilter.el

Spam って、大抵、大事なメールがまぎれていないか確認したら一日二日ですぐ消しちゃうので、最初のコーパスどうしようかなぁと思っていたところだったんだけど、あまり学習しなくても有意義なんだ。ぼくも今度試してみようっと。

メールは大体会社に集めてそこから配るようにしてあるので、会社の Solaris7 で procmail + spamassasin で spam を殺している。だけど、これだと、この Meadow 上でも動きますな。わくわく。

しかし、個人的にはスパムメールより各種勧誘の電話の方が 1,000倍困っているし頭に来ている。昔は、交換の女の子というとっても素敵で効果的なフィルタがあったんだけどなぁ。そういや、この前、久しぶりに逆切れしていた奴がいたな。勝手に電話してきたくせに、適当にあしらわれたからって文句いってんじゃねーよ。おいら興味も聞く耳もおまえの相手している暇もなんにも無いんだよ。ぷんぷん。

新学年

昨日から息子が3年生、娘が4年生だが、息子はまたまた新任の若い女の先生が担任になったそうだ。なんてうらやましいんだ。


2003-04-09 (Wed) 今日だけはほんのちょっと余裕。。。 [長年日記]

Palm のメモ

をどうしても Emacs で読みたくなったのだけど、これ読んでパーサつくっている余力も無し、Palm DeskTop からふにふにペーストするのも(飽きたし)いやだしと、と思っていたところ、pilot-link に memos(.exe) というソフトがあるのを発見。
だけど、"memos -d dir" で category/file にバラバラに保存すると、ファイル名が "=" だらけになってしまうし、"memos" だけで mbox format にすると、UNIX From の前に空行を入れてくれない(メモが改行で終わっていれば OK)ので、パッチを作った。pilot-link 0.9.5 用。"-d" は SJIS 環境しか考えていない。
--- memos.c.orig	Mon May 21 15:55:45 2001
+++ memos.c	Wed Apr  9 20:25:30 2003
@@ -45,7 +45,7 @@
 
 void Help(void);
 int main(int argc, char *argv[]);
-void write_memo_mbox(struct Memo m, struct MemoAppInfo mai, int category);
+void write_memo_mbox(struct Memo m, struct MemoAppInfo mai, int category, int num);
 void write_memo_in_directory(char *dirname, struct Memo m,
 			     struct MemoAppInfo mai, int category,
 			     int verbose);
@@ -310,7 +310,7 @@
 
 		switch (mode) {
 		case MEMO_MBOX_STDOUT:
-			write_memo_mbox(m, mai, category);
+			write_memo_mbox(m, mai, category, i);
 			break;
 		case MEMO_DIRECTORY:
 			write_memo_in_directory(dirname, m, mai, category,
@@ -349,18 +349,20 @@
  *
  ***********************************************************************/
 void
-write_memo_mbox(struct Memo m, struct MemoAppInfo mai, int category)
+write_memo_mbox(struct Memo m, struct MemoAppInfo mai, int category, int num)
 {
 	int j;
 
 	printf("From Your.Palm Tue Oct 1 07:56:25 1996\n");
 	printf("Received: Palm@p by memo Tue Oct 1 07:56:25 1996\n");
-	printf("To: you@y\n");
-	printf("Date: Thu, 31 Oct 1996 23:34:38 -0500\n");
+	printf("Date: Wed, 01 Jan 2003 00:00:00 +0900 (JST)\n");
+	printf("From: Palm =?iso-2022-jp?B?GyRCJE4lYSViGyhC?= <memos@PalmDevice>\n");
+	printf("To: palm-owner@localhost\n");
+	printf("X-Mail-Count: %d\n", num + 1);
 	printf("Subject: ");
 
 	/* print category name in brackets in subject field */
-	printf("[%s] ", mai.category.name[category]);
+	printf("[%03d:%s] ", num + 1, mai.category.name[category]);
 
 	/* print (at least part of) first line as part of subject: */
 	for (j = 0; j < 40; j++) {
@@ -374,6 +376,7 @@
 		printf("\n");
 	puts("");
 	puts(m.text);
+	printf("\n");
 }
 
 /***********************************************************************
@@ -419,28 +422,36 @@
 		if ((!m.text[j]) || (m.text[j] == '\n'))
 			break;
 		if (m.text[j] == '/') {
-			strncat(pathbuffer, "=2F", 3);
+			strncat(pathbuffer, "_", 1);
+			continue;
+		}
+		if (m.text[j] == ' ') {
+			strncat(pathbuffer, "_", 1);
+			continue;
+		}
+		if (m.text[j] == '\'') {
+			strncat(pathbuffer, "_", 1);
+			continue;
+		}
+		if (m.text[j] == '\"') {
+			strncat(pathbuffer, "_", 1);
+			continue;
+		}
+		if (m.text[j] == '\\') {
+			strncat(pathbuffer, "_", 1);
 			continue;
 		}
 		if (m.text[j] == '=') {
-			strncat(pathbuffer, "=3D", 3);
+			strncat(pathbuffer, "_", 1);
 			continue;
 		}
-#ifdef OS2
 		if (m.text[j] == ':') {
-			strncat(pathbuffer, "=3A", 3);
+			strncat(pathbuffer, "_", 1);
 			continue;
 		}
-#endif
-		/* escape if it's an ISO8859 control character (note: some
-		   are printable on the Palm) */
-		if ((m.text[j] | 0x7f) < ' ') {
-			tmp[0] = '\0';
-			sprintf(tmp, "=%2X", (unsigned char) m.text[j]);
-		} else {
-			tmp[0] = m.text[j];
-			tmp[1] = '\0';
-		}
+
+		tmp[0] = m.text[j];
+		tmp[1] = '\0';
 		strcat(pathbuffer, tmp);
 	}
 
で、"-d" でファイルに落して使おうかなぁと考えたのだけど、良く考えると、ファイル名が SJIS の第一バイトで切れちゃうと破綻しそうなので、
% memos.exe -v | nkf -j -m0 > memos.mbox
% imget --src=local:./memos.mbox --dst=+tmp
として Mew で読むことにした。Subject の encode はしていないし、メールの最後に無駄な空行がつくときもあるけど、とりあえず幸せ。

2003-04-10 (Thu) なんか頭いたい ;_; [長年日記]

Message-ID:

とりあえず、追加
printf("Message-Id: <%d@PalmDevice>\n", num + 1);

bogofilter

導入。Spam はその場で消しているので、この spamassasin を使って学習する、方法を取った。しかし、オプションの違いに注意。

ぼくは常識のない親で良い

今日の読売新聞の読者投稿欄から

家庭訪問の先生への贈り物は、私の住む地域で *も* 習慣となっているが

5000円の商品券が相場

『私のような者は常識のない親になるらしい』

*も* ということはどなたかの投稿を受けてのことだと思うけど、しんじらんない。贈る方も贈る方だが貰う方も貰う方だぞ。:-<


2003-04-13 (Sun) 暑い日だったなぁ [長年日記]

卓球

今度はちゃんと運動靴を履いて、子供の卓球につき合った。 コーチの方々にお相手をしてもらって、フォアハンドはそれなりに打てるようになった気がするが、バックハンドは全然だめ。
子供の頃から、ずーーーと、ペンだったのだけど、 バックハンドはシェイクの方が楽そうな気がしてシェイクを使ってみたけど 3分で断念(フォアが打てない)。

しかし、汗(しかも大汗)をかきながら卓球しているの、ぼくだけなんですけど。

その後

帰り道に都知事選の投票にいって、一度うちに帰った後、女房と(子供を誘ったけど断られた :-<)自転車でお出掛け。洋服の青山でジャケット買おうかと思ったけどやめて、ユニクロでポロシャツと T-シャツを買込んだ。

またまた、帰った後、レンタルしてきた『スパイダーマン』を見た。それなりに面白く、見終わったあとに息子と「スパイダーマン vs ゴブリン」のまねで戦い(どっとがゴブリンかは最後までわからない戦いだった)。

仕事と趣味

(あいかわらず)なんにも出来なかった。


2003-04-14 (Mon) やっぱり今日も筋肉痛 [長年日記]

筋肉痛

運動靴のおかげで腰の痛みはそれほどでもないが、臀部から太股の裏側にかけての筋肉が激しく筋肉痛痛い。

乃村さん

日記発見。

day of the Week

ふと思って、曜日を表示するようにした。いままで、なんだかあとから見ると見にくいなぁ。。。と感じていたのは曜日を表示していなかったのが原因かも。

家庭訪問の先生への贈り物 その2

へい、ぼくも今まで聞いたことがありませんでした。なんだろうなぁ、地域性(しかも非常に局地的な)かなぁ。細かい地域は忘れたけど、新聞の投稿は茨城県の人だったなぁ。

ぼくの(とっくに死んでしまった)父親は、結構厳格な警察官だったため、ぼく自身も法に触れる行為は通常の人よりも拒否反応が強いかもしれない。そういうのもあるし、公務員相手にどうしたこうしたなんていうのがとってもとっても嫌いなのでした。

だけど、ぼく自身は単なるサラリーマンなので接待でも贈り物でもどんどんしてください :-)。


2003-04-15 (Tue) あめのーすていーしょーーん あーえーーるーーーきがしてーーー [長年日記]

西立川駅前

にユーミンの「雨のステイション」の歌碑が出来たそうだ。モトネタは読売新聞。『コバルトアワー』は持っていたので懐かしい。今見ると、そうそうたるメンバだな。

ポケモン

金銀クリスタルまでは知っていたけど、ルビー、サファイヤは知りませんでした。うちの子供たちはポケモンでカタカナを覚えたようなもの(フミヤも同じことを言っていたなぁ)なので、懐かしい。ぼくも 151匹全部言えたし。

Mew3 で thread をくっつける

[mew-dist: 23587]に対抗して、以前から使っている Mew3(おそらく Mew2 も可)で切れている thread を(無理やり)くっつけるコマンド。

と思ったのだが、あまりに汚ない、かつ、冗長、かつ、なんでこんなことやっているの?というところが多かったので、公開中止 ^^;;; とりあえず、動くことは動くんだが、ちょっと恥ずかしいレベルであった。そのうちにまた出し直します。

2003-04-17 (Thu) 今日は半袖のボタンダウンだ(けど、暑い) [長年日記]

spamよけ

bogofilter を導入して、丁度一週間がたったので経過報告。
  Total Average  Number Folder
  ----- -------  ------ ------
  87103    7258      12 +virus <= 会社の gateway が virus 検出
 640839    4419     145 +spam-bogo <= bogofilter が捕まえた spam
  15631    3907       4 +spam-ew3m <= emacs-w3m moderate mail 専用 spam 対策
 510402   13794      37 +spam <= spamassasin が捕まえた spam
 263426   13864      19 +direct-mail <= 別に来てもよいダイレクトメール
 226250    8080      28 +trash <= procmailrc のルールで捕まえた spam
3268294    5028     650 /var/mail/shirai <= 普通のメール
  ----- -------  ------
5011945    5599     895
 
問題無いメールの割合 => 669 / 895 = 74.749%
今週はいつもより普通のメールが少なかったんじゃないかな?その分、spam の占める割合が大きい。
+trash に入ったのは、すぐ bogofilter と spamassasin に学習させているのだけど、運用を開始してすぐに一気に同じ spam が 12通連続できやがりやがったので、それを除けば、bogofilter は順調に動いている。また、spam を普通のメール扱いしたのは 4通ほど。これもすぐに学習させている。
ちなみに普通のメールを spam 扱いしたのは、某社の売り込みメール一通のみ。spam と判断したのが妥当な気がするので、nospam のおまじないをしておいた。

virus お知らせメール

会社の gateway が virus を検出すると『オリジナルのメールからウイルスを除去しつつ、注意書きを加えたメール』と『ウイルスを除去したメールを送りましたよメイル』と、必ず二通メールが来る。後者は必要ないと思うんだけどなぁ。。。会社といえば、親会社の某部門が『IM2000』を使ってメールマガジン(みたいなもの)を送ってくるので、X-Mailer のルールが複雑になっていやだ。


2003-04-18 (Fri) 暑い ;_; [長年日記]

暑い暑い暑い暑い暑い暑い暑い暑い暑い暑い

ぼくが座っている場所が、おそらく社内で一番暑いところなんだよぉぉぉ。。。なんでこんなところに、めちゃくちゃ暑がりで汗かきな私が座っているんだぁ。。。

あっちの建物は冷房入っているのになぁ :-<

bogofilter

昼休みの気晴らしに
% uname -a
CYGWIN_NT-5.0 HS13D 1.3.3s(0.44/3/2) 2001-09-03 23:55 i686 unknown
で作ったら、なんと Windows2000 で動いてしまった。

作り方

手元にあった (ちょっと古いが) db-3.3.11.tar.gz。これは、
% cd build_unix
% ../dist/configure --prefix=/usr/local
% make
<<ここで、Makefile の UTIL_PROGS に .exe をつけまくる>>
% make install
 
bogofilter-0.11.1.8は、src/common.h に "#include <getopt.h>" を追加しただけだった。

実験

Solaris にためてあった spam 288通と mew-dist から 1000通を学習させたところ、結果は良好良好 :-)

NotePC な Windows2000 だと procmail から起動とかは出来ないので、Mew から使うインタフェースを書こう。だけど、pop しながらリアルタイム処理をするには、ちょっと重くてイヤだな、bogofilter on Windows2000。

だけど

よくよく考えたら、この NotePC で受けるメールはすでに Solaris でフィルタしてあるので、Spam って ISP のメールアドレス宛てのだけなのだよな。しかも週に 2-3通ぐらいなので、無駄な作業だったかもしれない。


2003-04-23 (Wed) ちょっと風邪気味 [長年日記]

飲みすぎ

ぼくは言ったかなぁ?良く覚えていないや。まぁ、ぼくも散々飲んだくれていたから、あんまり人のことは言えないけど、ぼくが飲んだくれていたのは 独身のとき だから、ちょっと違うかな。

新形?Spam

最近、ぼくの H" にまで、中国語(と思われる) Spam が来るようになった。H" なメールは全然使っていないのになぁ。。。。

bogofilter その2

またまた、昼休みの気晴らしに、Mew (ただし ver.3) から bogofilter をいじる elisp を書いてみた。
(defun mew-add-bogo-blacklist (&optional white)
  "Bogofilter の spam list にいれる。C-u で nospam list にいれる。"
  (interactive "P")
  (mew-summary-not-in-queue
   (mew-summary-not-in-draft
    (save-excursion
      (mew-summary-goto-message)
      (let* ((bogo (mew-which-exec "bogofilter"))
	     (fld (mew-summary-folder-name))
	     (msg (mew-summary-message-number)))
	(when (and bogo fld msg)
	  (with-temp-buffer
	    (let ((coding-system-for-write mew-cs-text-for-write)
		  (coding-system-for-read mew-cs-text-for-read))
	      (insert-file-contents (mew-expand-folder fld msg))
	      (if (not (y-or-n-p (format "Add `%s' to %s? " (mew-header-get-value "From:")
					 (if white "*noSpam* list" "*SPAM* list"))))
		  (error "Nothing to do.")
		(when (string= (mew-header-get-value "From:")
			       "emacs-w3m-admin@namazu.org")
		  (goto-char (point-min))
		  (if (and (re-search-forward "^------- Forwarded Message" nil t)
			   (re-search-forward "^Received: " nil t))
		      (delete-region (point-min) (line-beginning-position))
		    (error "???")))
		(apply 'call-process-region (point-min) (point-max) bogo
		       'delete (current-buffer) nil
		       (if white '("-S" "-n") '("-s"))))))
	  (if white
	      (when (string= fld "+spam")
		(mew-summary-refile-body '("+inbox")))
	    (when (not (string= fld "+spam"))
	      (mew-summary-refile-body '("+spam"))))
	  (message "%s/%s to %s" fld msg (if white "noSpam." "SPAM!!"))))))))
 
(defun mew-bogo-check (&optional arg)
  "Bogofilter を使った Spam check。C-u なら region。"
  (interactive "P")
  (if (mew-summary-or-virtual-p)
      (mew-summary-not-in-queue
       (mew-summary-not-in-draft
	(if arg
	    (mew-bogo-check-region)
	  (mew-bogo-check-one))))
    (message "This command can be used in Mew.")))
 
(defun mew-bogo-check-region ()
  (let* ((begend (mew-summary-get-region))
	 (spam 0)
	 (total 0)
	 beg end pos)
    (when begend
      (setq beg (car begend))
      (setq end (cdr begend))
      (save-restriction
	(narrow-to-region beg end)
	(mew-decode-syntax-delete)
	(when (mew-sinfo-get-disp-msg)
	  (mew-summary-toggle-disp-msg))
	(goto-char (point-min))
	(setq pos (point))
	(while (not (eobp))
	  (setq total (1+ total))
	  (when (mew-bogo-check-one)
	    (setq spam (1+ spam)))
	  (forward-line 1)))
      (message "%d/%d detect." spam total))))
  
(defun mew-bogo-check-one ()
  (save-excursion
    (mew-summary-goto-message)
    (let* ((fld (mew-summary-folder-name))
	   (msg (mew-summary-message-number))
	   (bogo (mew-which-exec "bogofilter"))
	   ret)
      (when (and bogo fld msg)
	(with-temp-buffer
	  (let ((coding-system-for-write mew-cs-text-for-write)
		(coding-system-for-read mew-cs-text-for-read))
	    (insert-file-contents (mew-expand-folder fld msg))
	    (goto-char (point-min))
	    (when (string= (mew-header-get-value "From:")
			   "emacs-w3m-admin@namazu.org")
	      (goto-char (point-min))
	      (if (and (re-search-forward "^------- Forwarded Message" nil t)
		       (re-search-forward "^Received: " nil t))
		  (delete-region (point-min) (line-beginning-position))
		(error "???")))
	    (apply 'call-process-region (point-min) (point-max) bogo
		   'delete (current-buffer) nil '("-u" "-e" "-p"))
	    (goto-char (point-min))
	    (when (and (re-search-forward "^X-Bogosity: " nil t)
		       (looking-at "Yes"))
	      (setq ret t))))
	(if ret
	    (progn
	      (when (not (string= fld "+spam"))
		(mew-summary-refile-body '("+spam")))
	      (message "%s/%s is Spam!!" fld msg))
	  (when (string= fld "+spam")
	    (mew-summary-refile-body '("+inbox")))
	  (message "%s/%s is noSpam." fld msg))
	ret))))
 
思いっ切りぼくの環境に依存しているので注意。だけど、本当は、mew-pop-command-dele() にで組み込んで spam のチェックをしないとあまりうれしくないな。

2003-04-24 (Thu) 知らないことが多い [長年日記]

最近の検索

MSN検索から『ノバうさぎ』で来る人が妙に多いので、MSN 検索というものを初めて試したところ、ぼくのページが 10位になっていてびっくり。常用するのは、やっぱ google の方が精度も高いし、良いと思いますよ。> 来られた方

最近のアンテナ

これってなぁに?とずーと思っていたんだけど、最近やっとどういうものか理解できた。理解できたというより、URL の上の階層を見に行った、かな。
emacs-w3m の antenna よりも不便のような気もするが、とりあえず koseさんのところに便乗して閲覧させて貰おう。simple じゃないほうって diff みたいにしているのかな?

Mew3 で thread をくっつける その2

つかのまのげんじつとーひで[mew-dist: 23608]に再度対抗してみた。汚いのはあいかわらずだが、これ以上やる気が無いので公開。
ぼくと同じキー設定だと、"t1" を親にしたいメールの上で押して Message-ID を取得、子供にしたいメールの上で "t2" を押す。undo したかったら、"t3"。summary と thread と virtual で動くつもりだけど、作った本人も virtual folder で試したことはないです。ちなみに、もとのメールを改竄するので注意!!
(define-key mew-summary-mode-map "t1" 'mew-get-msgid-inrepto)
(define-key mew-summary-mode-map "t2" 'mew-put-msgid-inrepto)
(define-key mew-summary-mode-map "t3" 'mew-remove-msgid-inrepto)
 
(defvar mew-get-msgid nil)
 
(defun mew-get-msgid-inrepto ()
  "親の Message-ID を取得する"
  (interactive)
  (setq mew-get-msgid nil)
  (if (mew-summary-case1)
    (save-excursion
      (mew-summary-goto-message)
      (beginning-of-line)
      (when (looking-at "[^\r]+\r \\(<[^>]+>\\) ")
	(setq mew-get-msgid (mew-match-string 1)))
      (if mew-get-msgid
	  (message "Message-Id: %s" mew-get-msgid)
	(message "No Message-Id: detect")))
    (message "Not execute this buffer")))
  
(defun mew-put-msgid-inrepto ()
  "親の Message-ID を In-Reply-To に無理やり付ける"
  (interactive)
  (if (not (mew-summary-or-virtual-p))
      (message "This command can be used in Mew.")
    (let (addrep)
      (save-excursion
	(mew-summary-not-in-queue
	 (mew-summary-not-in-draft
	  (mew-summary-goto-message)
	  (let* ((fld (mew-summary-folder-name))
		 (msg (mew-summary-message-number))
		 (file (mew-expand-folder fld msg))
		 exist pos end)
	    (if (and (looking-at "[^\r]+\r \\(<[^>]+>\\) ")
		     (string=  mew-get-msgid (mew-match-string 1)))
		(message "Same Message-ID detect.")
	      (if (null mew-get-msgid)
		  (message "No Prev Message-Id:")
		(when (y-or-n-p (format "Add In-Reply-To: %s? " mew-get-msgid))
		  (with-temp-buffer
		    (mew-frwlet
		     mew-cs-text-for-read mew-cs-text-for-write
		     (insert-file-contents file)
		     (setq exist (or (mew-header-get-value "In-Reply-To:")
				     (mew-header-get-value "References:")))
		     (if (and exist
			      (not (y-or-n-p "Exist In-Reply-To: or References: Replace? ")))
			 (message "Exist In-Reply-To: or References:")
		       (goto-char (point-min))
		       (if (re-search-forward "\n\\(\n\\)" nil t)
			   (setq end (match-beginning 1))
			 (setq end (point-max)))
		       (goto-char (point-min))
		       (if (re-search-forward "^In-Reply-To:" end t)
			   (progn
			     (beginning-of-line)
			     (insert "X-Mew-")
			     (beginning-of-line))
			 (goto-char (point-min))
			 (if (re-search-forward "Message-ID:" end t)
			     (beginning-of-line)
			   (if (re-search-forward "\n\\(\n\\)" nil t)
			       (goto-char (match-beginning 1)))))
		       (mew-header-insert "In-Reply-To:"
					  (concat mew-get-msgid " (Inserted Mew)")
					  'nofold)
		       (mew-fake-inrep-sub file fld msg)))
		    (setq addrep t)))))))))
      (when addrep
	(when (mew-thread-p)
	  (let ((lines (count-lines (point-min) (point-max))))
	    (mew-summary-make-thread)
	    ;; "mt" じゃなさそうなので、再表示する
	    (when (= lines (count-lines (point-min) (point-max)))
	      (mew-summary-make-thread))))
	(message "Add In-Reply-To: %s done" mew-get-msgid)))))
 
(defun mew-remove-msgid-inrepto ()
  "無理やりつけた In-Reply-To をはずす"
  (interactive)
  (if (not (mew-summary-or-virtual-p))
      (message "This command can be used in Mew.")
    (let (modp)
      (save-excursion
	(mew-summary-not-in-queue
	 (mew-summary-not-in-draft
	  (mew-summary-goto-message)
	  (let ((fld (mew-summary-folder-name))
		(msg (mew-summary-message-number))
		file xinrep mewinrep pos end)
	    (when (and fld msg)
	      (setq file (mew-expand-folder fld msg))
	      (with-temp-buffer
		(mew-frwlet
		 mew-cs-text-for-read mew-cs-text-for-write
		 (insert-file-contents file)
		 (set-buffer-modified-p nil)
		 (goto-char (point-min))
		 (if (re-search-forward "\n\\(\n\\)" nil t)
		     (setq end (match-beginning 1))
		   (setq end (point-max)))
		 (goto-char (point-min))
		 (setq xinrep (mew-header-get-value "X-Mew-In-Reply-To:"))
		 (when (setq mewinrep (mew-header-get-value "In-Reply-To:"))
		   (setq mewinrep (string-match " (Inserted Mew)$" mewinrep)))
		 (goto-char (point-min))
		 (when (and mewinrep
			    (re-search-forward "^In-Reply-To:" end t))
		   (goto-char (match-beginning 0))
		   (setq pos (point))
		   (forward-line 1)
		   (mew-header-goto-next)
		   (delete-region pos (point)))
		 (goto-char (point-min))
		 (when (and xinrep
			    (re-search-forward "^\\(X-Mew-\\)In-Reply-To:" end t))
		   (delete-region (match-beginning 1) (match-end 1)))
		 (when (setq modp (buffer-modified-p))
		   (mew-fake-inrep-sub file fld msg)))))))))
      (if modp
	  (let (lines)
	    (when (mew-thread-p)
	      (setq lines (count-lines (point-min) (point-max)))
	      (mew-summary-make-thread)
	      (when (= lines (count-lines (point-min) (point-max)))
		(mew-summary-make-thread)))
	    (message "Remove In-Reply-To inserted by Mew."))
	(message "No In-Reply-To inserted by Mew.")))))
 
(defun mew-fake-inrep-sub (file fld msg)
  (write-region (point-min) (point-max) file nil 'nomsg)
  (save-excursion
    (if (get-buffer fld)
	(set-buffer fld)
      (mew-summary-visit-folder fld)
      (while (processp mew-summary-buffer-process)
	(sit-for 1)
	(discard-input)))
    (unless (mew-sinfo-get-scan-form)
      (mew-sinfo-set-scan-form (mew-summary-scan-form fld))))
  (set-buffer-multibyte t)
  (let ((width (1- (mew-scan-width)))
	(vec (if (fboundp 'mew-pop-scan-header)
		 (mew-pop-scan-header)
	       (mew-scan-header))))
    (mew-scan-set-folder vec fld)
    (mew-scan-set-message vec msg)
    (mew-scan-insert-line fld vec width msg nil))
  (set-buffer fld)
  (mew-summary-folder-cache-save))
 

が〜〜〜ん

(ちょっと反応が遅いが)由伸、登録抹消かぁ。これはいたい ;_;


2003-04-25 (Fri) 今週もぼろぼろの一週間だった [長年日記]

bogofilter その3

ちょっとだけ息抜きして、ちょっとだけバージョンアップした。

Virus

いいかげん頭に来たので、ここに文句を書いた。
# 自動応答で帰ってくるメールのこっちの名前に ぐらいつけるように freebit :-<
## だけど、すぐ丁寧かつ迅速な対応のメールが来たので許してしまいます。

2003-04-28 (Mon) 今週もがんばろ〜〜 [長年日記]

おぉ!!

とでも言わないとやっていられませんが、今週はずーと仕事です。

長期休みにずーと出社するのは、入社以来初めての様な気がする。少なくても、結婚してからは初めて。

某氏のメールより

Texas と聞いて

  • 『テキサース!!』と叫ぶ山さん
  • ドリー、テリーのザ・ファンクスが血だらけになりながら腕を振り回している姿
  • スタン・ハンセンがロープを振り回している入場シーン

しか頭に浮かんで来ないわたしって。。。

goto-new-folder

最近、spam よけやらなんやらで procmail から直接 folder に放り込むのが多くなったので、こんなのを寄せ集めで書いた。ぼくにはこれで十分。Mew2-3 用。どっかに (defvar mew-touch-folder-p t) と書いておくと、Mew 4 でも動くかもしれない。
(define-key mew-summary-mode-map "Gn" 'mew-summary-goto-new-folder)
 
(defun mew-summary-goto-new-folder ()
  "Goto folder to have a few new messages."
  (interactive)
  (message "Gathering new folders...")
  (let ((flds (or (and (boundp 'mew-folder-list) mew-folder-list)
		  (and (boundp 'mew-local-folder-list) mew-local-folder-list)
		  (and (boundp 'mew-local-folder-alist)
		       (mapcar 'car mew-local-folder-alist))))
	newflds alst fld)
    (while (setq fld (car flds))
      (when (and (not (or (mew-folder-draftp fld)
			  (mew-folder-queuep fld)
			  (mew-folder-postqp fld)))
		 (mew-summary-goto-new-folder-p fld))
	(setq newflds (cons fld newflds)))
      (setq flds (cdr flds)))
    (if (null newflds)
	(message "Gathering new folders...no new folders")
      (mapcar (lambda (x) (setq alst (cons (list x) alst))) newflds)
      (let ((completion-ignore-case mew-complete-folder-ignore-case))
	(setq fld (completing-read "UNREAD folder: " alst nil t nil
				   'mew-input-folder-hist)))
      (setq mew-input-folder-hist (cons fld mew-input-folder-hist))
      (let ((newfld (mew-summary-switch-to-folder fld)))
	(if (eq 1 (w3m-function-max-args 'mew-summary-ls))
	    (mew-summary-ls newfld)
	  (dont-compile;; To avoid a byte-compile warnning.
	    (mew-summary-ls newfld newfld)))))))
 
(defun mew-summary-goto-new-folder-p (folder)
  (let* ((dir (file-chase-links (mew-expand-folder folder)))
	 (t1 (if mew-touch-folder-p
		 (mew-file-get-time
		  (expand-file-name mew-summary-touch-file
				    (mew-expand-folder dir)))
	       (mew-file-get-time dir)))
	 (cache (expand-file-name mew-summary-cache-file dir))
	 (t2 (mew-file-get-time cache)))
    (if (and mew-touch-folder-p (null t1)
	     (file-directory-p dir)
	     (mew-dir-messages (mew-expand-folder dir)))
	t
      (mew-compare-times t1 t2))))

がーーん

家にたどり着いて、玄関の鍵を出そうとしたら、無い。どうも昨日着ていたベストのポッケの中のようだ^^;;;
3回目の電話で女房が起きてくれて助かった。

/usr/bin/env hoge

前から何とかしようと思いつつも、個人的にはまったく困っていないため、めちゃくちゃ腰の重いこの問題は、やっぱり mw32script.el で "#! /usr/bin/env hoge" の解析をするのがよいのだろうか? mw32script-argument-editing-alist に ruby.exe を押し込んだ張本人としては、少々悩んでしまう。

また、どこであった話かも覚えていないけど、script interpreter(って言うんだっけ?これ)の是非の討論とかも読んだ気がするし、どうなんだろうなぁ。けど、Ruby Script って /usr/bin/env 使う人が多いみたいだしなぁ。。。


2003-04-29 (Tue) GW 初日だけど会社 [長年日記]

今日が本当のGW 初日

昨日は実は出勤日だったのだけど、すでに 50% 程度の人が休んでいた。

Phoenix + Tabbrowser Extensions

最近、UNIX でも Win でも Mozilla より Phoenix (今は Firebird って言うんだよな、たしか)の方が好きだったのだけど、

  • tab のメニューに「他のタブすべてをクローズ」がない
  • UNIX で -remote openURL("http://hoge",new-tab) がきかない

のが嫌だった。特に後者はどうしようもないので、UNIX では Mozilla の使用頻度が高かったのだけど、 Tabbrowser Extensions - outsider reflex を導入したら、一挙に解決。最初、new-tab はできなかったのだけど、設定の Window Mode で『Use only one browser anytime (Single Window Mode)』にして、コマンドからは new-window を送るようにしたらできた。すごくうれしい。
ちなみに、使っているのは、気が向いたときに貰ってくる Nightly build な Phoenix(じゃなくて Firebird)。

休日出勤

のときの必需品は、小型懐中電灯。帰りに 4階から歩いて降りてくるときに、まったく電気がついていないので、なんらかの灯りが無いと、階段を踏み外しそうで非常に恐ろしい。


2003-04-30 (Wed) GW二日目 [長年日記]

今日も仕事

けど、最終退出者にならなくて、ちょっとだけ幸せ (*^^*)

パナ*****研究所

最初、松下関係のどっかがなんかやっちまったのかと思ったぞ。^^;;; ××ウェーブっていう商品名(愛称)や組織団体名は無いみたいだな。良かった良かった。

けど、タマちゃんまで出てくるとは大笑い。

Phoenix + Tabbrowser Extensions + Fiber

たった今気付いたのだけど、Meadow から Fiber 経由で phoenix を複数立ち上げても、tab で開いてくれるぞ。これ、NotePC だとすごくうれしい。あと、設定はいろいろとお試し中。今は "Use multiple browsers only when I open them" にしている。


書いている人: 白井秀行 (mailto:shirai@meadowy。org)
訪問して下さった人: 今日: 人, 昨日: , 過去: 人 (2007年5月10日から)
RDF Feed