確かに cmigemo の方が導入は簡単だから、価値はあると思いますよ。ぼくは、ある程度の速さをもったマシンなら Ruby の方がいいかなぁ。
そういえば、Elisp cache を真っ当にしあげて commit しようと思っていたけど、全然進捗していないや。
なので、女房が子供を連れて実家に帰っている(月〜木)。本当なら、思いっ切りノミにでも行きたいところなのだけど、ちょっと(全然)無理だなぁ。
あぁ〜〜、明日の朝飯買ってくるの忘れてしまった。;_;
タイムピンクはちょっと恥ずかしいかも。だけど、引っ掛かるのも不思議なんだけど『how do I catch mew in Ruby Version?』ってこの人はなにを望んで検索して、なにをしたかったんだろうか。Mew とか Ruby をコンピュータ用語だと思わずに本来の意味だと考えれば良いのかな?
そっか、hっちが悪いんじゃなくて、Oくんが悪かったんだ。初めて知ったぞ。
子基板
(ケーブル) ---------
| | 横から見た図
+ +
| | 親基板
================================
+--------------+
| 子基板 | 上から見た図
| (+)|
| |
+--------------+
自宅で一時間休憩して、今度は、息子が、文化センタの小ホールでピアノの発表会。本当は一ヶ月前だったのだけど、そのときは熱でダウンしてしまったため、O先生のご厚意で別の教室で O先生が担当している今回の発表会に紛れ込ませて貰った。若手の先生お二人は演奏したが、O先生は演奏しなかったのでちょっと残念。
で親ばかも疲れました。一日 50曲ぐらいピアノの演奏を聞いてしまったし。
もともと、娘がピアノ教室に通っていて、本来は同じ先生(K先生)に面倒をみて貰うのが筋なのだが、たまたま、娘と同じ時間に O先生が空いたので(どーせ、息子も一緒につれていっていたし)別々の先生に見て貰うようになったのでした。特に、息子は女房のリズム感/音感のなさを継いでいるので O先生にはいつもご苦労をかけている模様。
この時期の江戸川区の施設で小ホールを持っているところは全部島村楽器がキープしちゃっているんじゃないだろうか。島村楽器は今は全国展開しているけど、もともと、江戸川区からはじまった(今も本社は江戸川区)ところだ。
午前の部のときに、Leica M6 のフィルム装填をミスっていた。自宅でフィルムを装填してチェックしたときは OK だったのだけど、娘の演奏開始時に一枚目を巻き上げたら、空巻き上げになってしまっていた。(ので、フィルムを変える時間がなくて、娘の演奏中はビデオ撮影のみ)
う〜〜、修行が足りない。本番前に適当に試し撮りしなかったのが、敗因なのだが。これなら、MZ-3 も持っていけば良かったか。。。
Spam って、大抵、大事なメールがまぎれていないか確認したら一日二日ですぐ消しちゃうので、最初のコーパスどうしようかなぁと思っていたところだったんだけど、あまり学習しなくても有意義なんだ。ぼくも今度試してみようっと。
メールは大体会社に集めてそこから配るようにしてあるので、会社の Solaris7 で procmail + spamassasin で spam を殺している。だけど、これだと、この Meadow 上でも動きますな。わくわく。
しかし、個人的にはスパムメールより各種勧誘の電話の方が 1,000倍困っているし頭に来ている。昔は、交換の女の子というとっても素敵で効果的なフィルタがあったんだけどなぁ。そういや、この前、久しぶりに逆切れしていた奴がいたな。勝手に電話してきたくせに、適当にあしらわれたからって文句いってんじゃねーよ。おいら興味も聞く耳もおまえの相手している暇もなんにも無いんだよ。ぷんぷん。
昨日から息子が3年生、娘が4年生だが、息子はまたまた新任の若い女の先生が担任になったそうだ。なんてうらやましいんだ。
--- 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 はしていないし、メールの最後に無駄な空行がつくときもあるけど、とりあえず幸せ。
今日の読売新聞の読者投稿欄から
『家庭訪問の先生への贈り物は、私の住む地域で *も* 習慣となっているが』
『5000円の商品券が相場』
『私のような者は常識のない親になるらしい』
*も* ということはどなたかの投稿を受けてのことだと思うけど、しんじらんない。贈る方も贈る方だが貰う方も貰う方だぞ。:-<
今度はちゃんと運動靴を履いて、子供の卓球につき合った。 コーチの方々にお相手をしてもらって、フォアハンドはそれなりに打てるようになった気がするが、バックハンドは全然だめ。
子供の頃から、ずーーーと、ペンだったのだけど、 バックハンドはシェイクの方が楽そうな気がしてシェイクを使ってみたけど 3分で断念(フォアが打てない)。
しかし、汗(しかも大汗)をかきながら卓球しているの、ぼくだけなんですけど。
帰り道に都知事選の投票にいって、一度うちに帰った後、女房と(子供を誘ったけど断られた :-<)自転車でお出掛け。洋服の青山でジャケット買おうかと思ったけどやめて、ユニクロでポロシャツと T-シャツを買込んだ。
またまた、帰った後、レンタルしてきた『スパイダーマン』を見た。それなりに面白く、見終わったあとに息子と「スパイダーマン vs ゴブリン」のまねで戦い(どっとがゴブリンかは最後までわからない戦いだった)。
(あいかわらず)なんにも出来なかった。
運動靴のおかげで腰の痛みはそれほどでもないが、臀部から太股の裏側にかけての筋肉が激しく筋肉痛痛い。
ふと思って、曜日を表示するようにした。いままで、なんだかあとから見ると見にくいなぁ。。。と感じていたのは曜日を表示していなかったのが原因かも。
へい、ぼくも今まで聞いたことがありませんでした。なんだろうなぁ、地域性(しかも非常に局地的な)かなぁ。細かい地域は忘れたけど、新聞の投稿は茨城県の人だったなぁ。
ぼくの(とっくに死んでしまった)父親は、結構厳格な警察官だったため、ぼく自身も法に触れる行為は通常の人よりも拒否反応が強いかもしれない。そういうのもあるし、公務員相手にどうしたこうしたなんていうのがとってもとっても嫌いなのでした。
だけど、ぼく自身は単なるサラリーマンなので接待でも贈り物でもどんどんしてください :-)。
にユーミンの「雨のステイション」の歌碑が出来たそうだ。モトネタは読売新聞。『コバルトアワー』は持っていたので懐かしい。今見ると、そうそうたるメンバだな。
金銀クリスタルまでは知っていたけど、ルビー、サファイヤは知りませんでした。うちの子供たちはポケモンでカタカナを覚えたようなもの(フミヤも同じことを言っていたなぁ)なので、懐かしい。ぼくも 151匹全部言えたし。
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 の占める割合が大きい。
会社の gateway が virus を検出すると『オリジナルのメールからウイルスを除去しつつ、注意書きを加えたメール』と『ウイルスを除去したメールを送りましたよメイル』と、必ず二通メールが来る。後者は必要ないと思うんだけどなぁ。。。会社といえば、親会社の某部門が『IM2000』を使ってメールマガジン(みたいなもの)を送ってくるので、X-Mailer のルールが複雑になっていやだ。
ぼくが座っている場所が、おそらく社内で一番暑いところなんだよぉぉぉ。。。なんでこんなところに、めちゃくちゃ暑がりで汗かきな私が座っているんだぁ。。。
あっちの建物は冷房入っているのになぁ :-<
% uname -a CYGWIN_NT-5.0 HS13D 1.3.3s(0.44/3/2) 2001-09-03 23:55 i686 unknownで作ったら、なんと Windows2000 で動いてしまった。
% cd build_unix % ../dist/configure --prefix=/usr/local % make <<ここで、Makefile の UTIL_PROGS に .exe をつけまくる>> % make installbogofilter-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通ぐらいなので、無駄な作業だったかもしれない。
最近、ぼくの H"
(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 のチェックをしないとあまりうれしくないな。
(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))
(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回目の電話で女房が起きてくれて助かった。
前から何とかしようと思いつつも、個人的にはまったく困っていないため、めちゃくちゃ腰の重いこの問題は、やっぱり mw32script.el で "#! /usr/bin/env hoge" の解析をするのがよいのだろうか? mw32script-argument-editing-alist に ruby.exe を押し込んだ張本人としては、少々悩んでしまう。
また、どこであった話かも覚えていないけど、script interpreter(って言うんだっけ?これ)の是非の討論とかも読んだ気がするし、どうなんだろうなぁ。けど、Ruby Script って /usr/bin/env 使う人が多いみたいだしなぁ。。。
昨日は実は出勤日だったのだけど、すでに 50% 程度の人が休んでいた。
のときの必需品は、小型懐中電灯。帰りに 4階から歩いて降りてくるときに、まったく電気がついていないので、なんらかの灯りが無いと、階段を踏み外しそうで非常に恐ろしい。
けど、最終退出者にならなくて、ちょっとだけ幸せ (*^^*)
最初、松下関係のどっかがなんかやっちまったのかと思ったぞ。^^;;; ××ウェーブっていう商品名(愛称)や組織団体名は無いみたいだな。良かった良かった。
たった今気付いたのだけど、Meadow から Fiber 経由で phoenix を複数立ち上げても、tab で開いてくれるぞ。これ、NotePC だとすごくうれしい。あと、設定はいろいろとお試し中。今は "Use multiple browsers only when I open them" にしている。
△ ko [本来の意味のポケモンルビーでミューツーを捕まえたかったと思われ。]