Monthly Archives: 8月 2011

2011-08-31

Wanderlustでhtmlメールをfirefoxで見る(NTEmacs/Meadow)

検索してみるとしれっと~/.mailcapに「text/html; /usr/bin/firefox %s」と書けと書かれていて、ふむふむそうなのかと思ってfirefoxのパスを変えてやってみたらとんでもなくはまったのでメモ。Windows上だと色々細かいところで注意が必要。あ、ちなみにキー操作自体はメッセージが表示されてるバッファでvとかeとかである。

  1. .mailcapを作る。
    text/html; "c:/Program Files (x86)/Mozilla Firefox/firefox.exe" file:///%s
    

    Program Filesとか空白が入るのでダブルクォーテーションで囲む。%sだけだとc:/Users/~略のようになりc:というプロトコルだと判断してしまうのでダメ。頭に file:/// をつけたら大丈夫だった。

  2. flimのmel-q-ccl.elを次のように変更(書き出されたファイルの行末に=が入ってしまう問題を解消するため)。
    --- ./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で)とか。

  3. 関連するもの全部バイトコンパイルし直す。 (mel-q-ccl.elだけバイトコンパイルしてもダメっぽい)
2011-08-30

財布のプロトタイプを作る

というわけで、色々考えながら財布のプロトタイプを作ってみた。

必要な区分は5つなのだから、素直に中身を5つに区切ることにした。1つのフタを開いたら5つのものがすぐに取り出せる状態になるわけだ。日曜に近所の駅ビルで探してみたのだけど、こんな単純なものが意外にも見つからなかった。たぶん一生懸命探せば見つかるのだろうが、こういうのはたいてい自分で作った方が良いということなのだ(少ない選択肢の中から無理に選ぶよりも)。

財布外観:

20110830_wallet1.jpg

財布を開いたところ:

20110830_wallet2.jpg

財布を開いたところ:

20110830_wallet3.jpg

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

20110830_wallet4.jpg

財布の側面部品:

20110830_wallet5.jpg

A4のコピー用紙とボールペン、三角定規、はさみ、ホッチキスで作成。途中ホッチキスの芯が無くなったので一部クリップで代用。

考えたこと:

  • よくある財布の形状に対する一番の疑問点。蓋がいくつもあり、取り出し方向もバラバラ。一回の会計であっちを開けたりこっちを開けたり。これを解決するにはフタが一つであることが必要。
  • 札の入れ方。この形だとどうしても札は折って入れることになる。二つ折りにするか、多く折り曲げて小さくするか。二つ折りにするとして、どういう向きに入れるか。折り曲げた山(札の中央)を上、下、手前、奥のいずれにするのが良いのか。手前にするのがよさそう。重なっていても狙った枚数を素早く取り出せる。
  • 深さとコインやカードの取り出しやすさとの関係。札、コイン、カードといった高さが異なるものを同一の深さのポケットに入れると、どうしても取り出しにくいものが出てしまう。二つ折りにした札の高さは約7.5cm。横にしたカードは約5.5cm。コインは100円玉で約2.5cm。札の高さに合わせてポケットを深くすると、コインを取り出すときに指をポケットの奥まで入れて取り出さなければならない。解決案。札を四つ折りにする(受け取った札を入れるのが大変なので却下)。底上げする。指を突っ込みやすいようにポケットが開く幅を大きめにする。ポケットの仕切りを低くすると、鞄の中で財布が暴れたときにコインが別のポケットに移動してしまうのでダメ(実際に写真の通り切り込みを入れてみたのだが、財布を振るとコインがカードの方へ入ってしまう)。
  • ポケットの幅。最小幅(閉じたときの幅)はポケットあたり一律5mmとした。つまり、財布全体で2.5cmの幅となる。区分によってもう少し詰めてもいいかも。

課題:

  • カードが一つのポケットに入っているのは悪くはないのだが、狙ったカードがすぐに出せるような工夫がもう少しありそうだ。一番端っこのポケットなので、二つ三つスリットを入れてもいいのではないか。
  • フタをどうするか。ボタン(ホック)型にするのかL字ファスナーにするのか。ファスナーはカードを取り出すときに引っかからないか。
  • 実際にどんな素材で作るか。やはり革だろうか。革細工はやったことが無いけどやってみたい。
2011-08-29

財布について考える

いつだって本当に自分にフィットするものは自分で作るしかないのである。

今日、財布の中のカードを整理していて思うところがあって、新しい財布が欲しいと思った。

要求:

  • 収納するものは次の5種類。
    • 札(区分けの必要なし。多くても五枚程度)
    • 硬貨大(500円、100円)
    • 硬貨小(50円、10円、5円、1円)
    • カード(カードは1ヶ月に1回以上使うものを基準に厚いものから薄いものまで合わせて7枚に絞った。使用頻度は少ないが出先で突発的に必要になるカードは財布ではなく鞄のポケットに入れる(ただし貴重なものは財布へ)。鞄への入れ方については色々問題があるのだが、それはまた別の話。下手なカードフォルダーに入れてすぐに取り出せないようにはしないとだけは言っておく)
    • レシート(レシートは家計簿をつけているので捨てない)
  • カードが一枚一枚別々のポケット(スリット)に入っている必要は無い。よく使う2枚が取り出しやすければ良い。
  • 中身が飛び出して紛失するようなことがないこと。穴が空かないように最低限の耐久性があることと、カードがするりと抜け落ちるのを防ぐ構造であること。
  • 店での支払いがスムーズに出来ること。例えば次のようなケースが効率よくできること。
    • ローソンでの買い物の例: 商品と一緒にPontaカードを出し、商品とPontaのバーコード読み取ってもらい、Pontaカードを財布に戻して、支払いはSuicaでと言ってSuicaをリーダーに当て決済し、Suicaを財布に戻し、商品とレシートを受け取ってレシートを財布に入れる。
    • 現金払いの例: 商品を出して合計金額を聞き、合計金額の下の桁からマッチする硬貨・札を出していき出した金額が合計金額を超えたら出し終わり、商品と釣り銭とレシートを受け取って釣り銭を札と硬貨100円以上と硬貨100円未満に分けて財布に入れ、レシートも(必要なら二つ折りにして)財布に入れる。
  • 上記を満たした上で可能な限り薄くて小さいこと。

このような要求を満たす財布の形状とはどのようなものだろうか。

2011-08-28 ,

Android版MobileOrgの問題

Android版のMobileOrgには色々と問題がある。

さしあたって、私が良く遭遇する問題には次のようなものがある。(0.6.1時点)

これらの問題があっても注意すれば十分使えるのだが、改善に期待がかかるところではある。7月半ばから何もコミットがないところが気になるが……。

2011-08-28 ,

org-mode 7.7 の org-toggle-checkbox

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には色々手が入っているようなので、改善されていると良いのだけど。

2011-08-21 ,

org-modeで自動的にpushする

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以外から書き換えた場合などを考慮すると、タイムスタンプを見る方式の方がいいのだろうけど、まあいいや。

2011-08-08

吉野家のカレー

今日初めて牛丼カレーではない単体のカレーを食べた。あれ、何かすごく物足りない。普通のカレーって感じ。ルーの粘度が低いのが気になっちゃう。吉野家の今回のカレーは牛丼と一緒に食べて初めて成立するものなのだなと感じた。牛丼には牛肉だけでなく玉ねぎも入ってるしね。

2011-08-08

aush

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ライブラリもあることだし、ちゃちゃっと作れるだろうと言うことで作ったわけだ。

2011-08-04

吉野家のカレー

最近のお気に入りは吉野家が今週火曜日から始めたカレーである。

吉野家は以前も何回かカレーを出したことがあったが、以前のカレーはスパイシーなだけで味の乏しいそれで、とても満足できるようなものではなかった。特にあいがけカレーを食べたときなどは甘じょっぱい牛肉の味とスパイシーなカレーの味が完全に分離していて、二度と頼むものかと思ったほどだ。

しかし今回のカレーは違う。まず、具が大きくなった。大きくて柔らかいニンジン・ジャガイモがゴロゴロしてる。カレー自体の味も以前とは比較にならないほど豊かだ。カレー自体の味が豊かになったせいか、牛丼カレーにしたときに牛肉の味とちゃんとマッチしている。いわゆるあいがけカレーというのは今日いろんな店で食べられるけれど、肉とカレーがマッチしていないものがいかに多いことか……。ルーの種類には「こく旨」と「旨辛」の二つがあるのだけど、どちらも甲乙つけがたい。辛い方も以前のようなスパイシーなだけのさらさらカレーなどではなく、ちゃんと旨みがあるカレーなので安心した。

というわけで、吉野家のメニューとしては牛鉄鍋膳(初期のうどん入り・とじ卵バージョン)以来のヒット作だ。私の中では。

2011-08-04

すき家

吉野家でも松屋でも牛丼(牛めし)の味にある程度傾向があって、吉野家はしょっぱい、松屋は甘くてベタベタというイメージを持っているのだけど、すき家はと聞かれるとどうにも思い出せなかった。

少し前、出勤時に少し遠回りをして朝食をすき家で食べると言うことを何回かやってみたのだけど、そのとき初めて牛皿を食べて思った。乳臭い、と。そうか、すき家はオージービーフだったっけ。しかしそれほど乳臭いという印象を持っていなかったのは、トッピングが乗った牛丼ばかりを食べていたからなのだろう。すき家で初めて食べたメニューは確かハーブチーズ牛丼だった。なるほどね、木を隠すには森の中、乳臭さを隠すには乳製品というわけか。この弱点を認識しているからこそ、様々なトッピングを乗せた牛丼を思いついたのかもしれない。

このことに気がついてからというもの、私の中で吉野家の評価が上がった。以前は自宅近くの吉野家がすき家と入れ替わってくれたらなぁとよく思ったのだけど、最近はすき家もそれほどではないなと思うようになった。プレーンな牛丼の味では吉野家の方が良いと感じるし、そうなると牛皿(牛小鉢)を使った定食の評価も吉野家の方が上になる。それと、全体的にすき家の方が味が濃いのも気になる。タレだけでなく味噌汁も豚汁もしょっぱすぎる。