先月からの続き。特急電車の中で座席に備え付けの冊子をなんとなく眺めていたら、良さそうな財布が目にとまった。

厚さ1cmでコンパクト。ぱかっとファスナーを開けばすべてが取り出せる。
惜しい。かなりいい線いっている。だが、先日挙げた要求を満たしていない。機能が絞られている分薄いのが魅力か。
先月からの続き。特急電車の中で座席に備え付けの冊子をなんとなく眺めていたら、良さそうな財布が目にとまった。

厚さ1cmでコンパクト。ぱかっとファスナーを開けばすべてが取り出せる。
惜しい。かなりいい線いっている。だが、先日挙げた要求を満たしていない。機能が絞られている分薄いのが魅力か。
検索してみるとしれっと~/.mailcapに「text/html; /usr/bin/firefox %s」と書けと書かれていて、ふむふむそうなのかと思ってfirefoxのパスを変えてやってみたらとんでもなくはまったのでメモ。Windows上だと色々細かいところで注意が必要。あ、ちなみにキー操作自体はメッセージが表示されてるバッファでvとかeとかである。
text/html; "c:/Program Files (x86)/Mozilla Firefox/firefox.exe" file:///%s
Program Filesとか空白が入るのでダブルクォーテーションで囲む。%sだけだとc:/Users/~略のようになりc:というプロトコルだと判断してしまうのでダメ。頭に file:/// をつけたら大丈夫だった。
--- ./mel-q-ccl.el.~1.5.6.3.~ 2006-06-13 00:10:02.000000000 +0900 +++ mel-q-ccl.el 2007-11-28 19:01:00.750000000 +0900 @@ -932,7 +932,10 @@ (defun quoted-printable-ccl-write-decoded-region (start end filename) "Decode quoted-printable encoded current region and write out to FILENAME." (interactive "*rnFWrite decoded region to file: ") - (let ((coding-system-for-write 'mel-ccl-quoted-printable-lf-lf-rev) + (let ((coding-system-for-write + (if (coding-system-p 'mel-ccl-quoted-printable-lf-lf-rev-unix) + 'mel-ccl-quoted-printable-lf-lf-rev-unix + 'mel-ccl-quoted-printable-lf-lf-rev)) jka-compr-compression-info-list jam-zcat-filename-list) (write-region start end filename)))
Quoted-Printable なエンティティの保存に失敗するより。
他にも添付メッセージの保存 (Wanderlustで)とか。
というわけで、色々考えながら財布のプロトタイプを作ってみた。
必要な区分は5つなのだから、素直に中身を5つに区切ることにした。1つのフタを開いたら5つのものがすぐに取り出せる状態になるわけだ。日曜に近所の駅ビルで探してみたのだけど、こんな単純なものが意外にも見つからなかった。たぶん一生懸命探せば見つかるのだろうが、こういうのはたいてい自分で作った方が良いということなのだ(少ない選択肢の中から無理に選ぶよりも)。
財布外観:

財布を開いたところ:

財布を開いたところ:

財布の中の底上げされたポケット:

財布の側面部品:

A4のコピー用紙とボールペン、三角定規、はさみ、ホッチキスで作成。途中ホッチキスの芯が無くなったので一部クリップで代用。
考えたこと:
課題:
いつだって本当に自分にフィットするものは自分で作るしかないのである。
今日、財布の中のカードを整理していて思うところがあって、新しい財布が欲しいと思った。
要求:
このような要求を満たす財布の形状とはどのようなものだろうか。
Android版のMobileOrgには色々と問題がある。
さしあたって、私が良く遭遇する問題には次のようなものがある。(0.6.1時点)
これらの問題があっても注意すれば十分使えるのだが、改善に期待がかかるところではある。7月半ばから何もコミットがないところが気になるが……。
org-modeを7.5から7.7へアップデートしたらorg-toggle-checkbox (C-c C-x C-b) が動かなくなった(call-interactively: Wrong type argument: markerp, 304 のようなエラーが出る)。
調べてみるとorg-list.elのorg-toggle-checkbox関数内でマーカーの取扱がおかしいようだった。org-modeのリポジトリを見ると7.7リリース以降にそれらしい変更が加えられていた。
上の二つを手動でorg-list.elに適用したら正しく動くようになった。
ソースコードを読んで初めてorg-toggle-checkboxがリージョン一括変更に対応していることを知った。でも7.7の段階では最後の行の扱いが良くない。7.7以降org-list.elには色々手が入っているようなので、改善されていると良いのだけど。
AndroidのMobileOrgを今ひとつ活用できていない理由はorg-mobile-pushを忘れるからなのである。なので、書き換えたら自動的にpushするようにしてみた。
;;; org-agenda-filesに該当するファイルをセーブしたときは、 ;;; 一定時間後かEmacs終了時に自動的にorg-mobile-pushを実行する。 (setq my-org-mobile-push-timer-id nil) (defun my-org-mobile-push-schedule () (my-org-mobile-push-cancel) (setq my-org-mobile-push-timer-id (run-at-time "1 min" nil 'my-org-mobile-push)) (add-hook 'kill-emacs-hook 'my-org-mobile-push) ) (defun my-org-mobile-push-cancel () (if my-org-mobile-push-timer-id (progn (cancel-timer my-org-mobile-push-timer-id) (setq my-org-mobile-push-timer-id nil))) (remove-hook 'kill-emacs-hook 'my-org-mobile-push) ) (defun my-org-mobile-push () (my-org-mobile-push-cancel) ;org-mobile-pre-push-hookをフックしているから不要なんだけど、一応。 (org-mobile-push)) ;; セーブ時に自動pushをスケジュールする。 (add-hook 'org-mode-hook ;; NOTE: org-mode-hookが呼ばれるときに ;; (org-agenda-files)を使った判定を行うとなぜか終了時 ;; にorg-mobile-pushが失敗する。仕方ないので判定は ;; after-save-hook呼び出し時点で行っている。 #'(lambda () (add-hook 'after-save-hook #'(lambda () (if (member (expand-file-name (buffer-file-name)) (mapcar 'expand-file-name (org-agenda-files))) (my-org-mobile-push-schedule))) nil t) )) ;; 手動でorg-mobile-pushしたときは自動pushを行わないようにする。 (add-hook 'org-mobile-pre-push-hook #'(lambda () (my-org-mobile-push-cancel)))
最も単純な方法では、(add-hook 'kill-emacs-hook 'org-mobile-push)だけで十分なのだけど、これだとEmacs終了時に必ずorg-mobile-pushを実行するので終了が遅くなってしまう。
既存のものが何かないかなと探したらorg-mode+MobileOrg(+Dropbox)でGTD始めました。オレオレ改造をごっそり公開 - ヒルズで働くholidays-lの技ログに終了時にファイルのタイムスタンプを見てorg-mobile-pushを実行するかどうか判定するコードが掲載されていた。しかし、customでorg-mobile-directoryを設定していると変数org-mobile-directoryがpushやpullをするまで有効にならなかったり、org-mode使うまで関数org-agenda-filesが有効にならなかったり、そのままではうまく動かなかった。
上の実装ではorg-agenda-filesに該当するファイルをセーブしたときに、一定時間後または終了時にpushするようにしている。一定時間以内に何回もセーブした場合は最後にセーブした時点から一定時間後にpushする。また、手動でpushしたときは一定時間後のpushをキャンセルする。
Emacs以外から書き換えた場合などを考慮すると、タイムスタンプを見る方式の方がいいのだろうけど、まあいいや。
今日初めて牛丼カレーではない単体のカレーを食べた。あれ、何かすごく物足りない。普通のカレーって感じ。ルーの粘度が低いのが気になっちゃう。吉野家の今回のカレーは牛丼と一緒に食べて初めて成立するものなのだなと感じた。牛丼には牛肉だけでなく玉ねぎも入ってるしね。
aushというオーディオプレイヤーを作った。
なんか今時プレイヤーソフトなんて作りたくなかったんだけど(しかもDirectSound)、それによく探せば他にも見つかりそうではあるんだけど、手頃なのがすぐには見当たらなかったので作った。
何がしたかったかというと、Emacs(Meadow)上から音を鳴らしたり、鳴るのが終わるのを検出したりしたかった。
最初はMeadowのMCI機能(mw32-mci-*)を使ってみたのだけど、色々と問題があってやめた。鳴り終わりだけでなく明示的に停止したときにも停止イベント通知が発生してしまった。それも再生→停止→オープン→再生というのを間を置かず実行すると、最初の明示的に止めたときの停止イベントだけ来て、次の再生の鳴り終わりイベントが発生しない。必ず前の停止イベントを待ってから次の再生を行うようにすれば回避できたのかもしれないけれど、怪しいのでMCI機能を使うのは諦めた。
NTEmacsでplay-sound-fileを試してみたのだけど、鳴っている間全く操作ができなくなってしまうのでこれは使えないと思った。
MPlayerも試してみたけれどうまくいかなかった。MPlayerというのはCUI(コマンドライン)のプレイヤーソフトで、Emacsからの制御ではEMMS(Emacs Multimedia System)という前例があるのでいけるかなと思った。しかし、MPlayerのWindowsビルドをダウンロードして適当なoggファイルをならしてみたら、音の最後の部分が途切れてしまった。原因はよく分からなかったが、そのようなバグがあるという記述をどこかのサイトの何年か前の記事で見かけた。面倒なのでそれ以上追求しなかった。
というわけで、plainなwavとoggが再生できればよいのなら、自前のDirectSoundライブラリもあることだし、ちゃちゃっと作れるだろうと言うことで作ったわけだ。
最近のお気に入りは吉野家が今週火曜日から始めたカレーである。
吉野家は以前も何回かカレーを出したことがあったが、以前のカレーはスパイシーなだけで味の乏しいそれで、とても満足できるようなものではなかった。特にあいがけカレーを食べたときなどは甘じょっぱい牛肉の味とスパイシーなカレーの味が完全に分離していて、二度と頼むものかと思ったほどだ。
しかし今回のカレーは違う。まず、具が大きくなった。大きくて柔らかいニンジン・ジャガイモがゴロゴロしてる。カレー自体の味も以前とは比較にならないほど豊かだ。カレー自体の味が豊かになったせいか、牛丼カレーにしたときに牛肉の味とちゃんとマッチしている。いわゆるあいがけカレーというのは今日いろんな店で食べられるけれど、肉とカレーがマッチしていないものがいかに多いことか……。ルーの種類には「こく旨」と「旨辛」の二つがあるのだけど、どちらも甲乙つけがたい。辛い方も以前のようなスパイシーなだけのさらさらカレーなどではなく、ちゃんと旨みがあるカレーなので安心した。
というわけで、吉野家のメニューとしては牛鉄鍋膳(初期のうどん入り・とじ卵バージョン)以来のヒット作だ。私の中では。