34 skidoo

Bill Evans の作った変な曲。タイトルも変だ。意味を考えてみた。

曲の構成は↓のような感じだ。
Intro - Theme [A - B - A] - Solo [B - A]*n - Theme [B - A]*2 - Outro

Bの部分は4拍子で16小節の、比較的素直な部分。

Aの部分が凝っている。
36拍あるのだが、Evansはここが3拍子とも4拍子とも取れるように弾く。
3拍子の12小節に聞こえるソロもあれば、
4拍子の9小節に聞こえるソロもある。よくできている。
34 skidoo の "34" はこれを表現してるのではないか。

また、Aを4拍子ととらえて、全体が4拍子の曲だと解釈すると、
前ThemeのA-B-Aは、9+16+9= 34 小節で構成される!!
ここにも 34 が!!

また、
http://eigo-kobako.blog.so-net.ne.jp/2007-07-23
の解説によると、
34 skidoo は1970年に(アメリカで?)販売されていた魔方陣ゲームの名前らしい。
さらに、
http://eigo-kobako.blog.so-net.ne.jp/2007-07-22
によると、
"23 skidoo" というスラングが19世紀末〜20世紀のアメリカで使われていた
そうで、これを Evans が引用した可能性もある。

たった8文字の曲名なのに、奥が深いなあ。
いや、空白も文字に含めると全部で "9" 文字か…



Bill Evans - Blue In Green - 34 Skidoo

wanderlust vs. mozilla?

周囲に mozilla メーラーを使っている人がいるのだが、
彼のメールにファイルが添付されているとき、
たまに (ファイル名が日本語で、かつある程度長いとき?)
ファイル名の途中にタブ文字が挿入されて、
'v' キーでのファイルオープンに失敗することがある。
例えばこんな感じ↓

[2 2010_03_13_なんとかかんとかシステムの仕様書_v.3.141592_チェック途中.docx <application/octet-stream (base64)>]

mozilla のせいかどうかは特定できていないが、
とりあえず以下のような関数を .wl に追記すれば対処可能。

my-mime-decode-filename 自体は、wanderlust で日本語名の添付ファイルを
扱うときの常套句。
ここでの変更は、2行目〜4行目で filename から改行とタブ文字を削除する処理を追加しただけです。

(defun my-mime-decode-filename (filename)
  (let ((filename (if (string-match "\n\t*" filename)
                      (replace-match "" nil nil filename)
                    filename))
        (rest (eword-decode-string filename)))
    (or (when (and my-mime-filename-coding-system-for-decode
                   (string= rest filename))
          (let ((dcs (mapcar (function coding-system-base)
                             (detect-coding-string filename))))
            (unless (memq 'emacs-mule dcs)
              (let ((pcs my-mime-filename-coding-system-for-decode))
                (while pcs
                  (if (memq (coding-system-base (car pcs)) dcs)
                      (setq rest (decode-coding-string filename (car pcs))
                            pcs nil)
                    (setq pcs (cdr pcs))))))))
        rest)))

俺 wanderlust。さっき mailcap と別れてきた

Q. 最近 wanderlust を使い始めました><
添付ファイルを外部アプリで開くにはどうすればいいのでしょう?
A. ファイル名にポイントを合わせて、v を押しましょう。簡単ですね!!!

と言いたいところだが、
実のところ大抵の環境ではこれだけでは不十分で、

  • ホームディレクトリに .mailcap というファイルを作って
  • 中に MIME Type と外部アプリの対応を記述して
  • shell-quote-argument 関数の挙動を変えて
  • windows なら cygwin 入れて

みたいな手間を踏まないと正しくファイルが開かれない。

これは面倒だ。
てか MIME Type って誰得wどのアプリで開くかなんて拡張子で分かるべww
とか考えてしまう私のような半可通には、上の手順は荷が重い。

そこで添付ファイルのオープンは全部外部のランチャにやらせることにした。
windows なら (Meadow 同梱の) fiber.exe,
MacOSX なら open,
linux なら xdg-open といった優秀なコマンド達に頼れば
もう mailcap いらないっしょwww

以下を .wl に追記するだけで達成できるはず。
fiber 使いは↓の例で駄目だったら "c:\meadow\bin\fiber.exe" みたいに絶対パスで指定すると良いと思う。

(defvar my-mime-preview-play-current-entity-appname "fiber"
 "meadow なら fiber, mac なら open, linux なら xdg-open")

(unless (functionp #'mime-preview-play-current-entity-orig)
  (fset #'mime-preview-play-current-entity-orig
        (symbol-function #'mime-preview-play-current-entity)))

(setq mime-play-delete-file-immediately nil)

(defun mime-preview-play-current-entity (&optional ignore-examples mode)
  (interactive "P")
  (if (and mode (not (equal mode "play")))
      (mime-preview-play-current-entity-orig ignore-examples mode)
    (let* ((entity (get-text-property (point) 'mime-view-entity))
           (name (mime-entity-safe-filename entity))
           (filename (expand-file-name (if (and name (not (string= name "")))
                                           name
                                         (make-temp-name "EMI"))
                                       (make-temp-file "EMI" 'directory))))
      (mime-write-entity-content entity filename)
      (message "External method is starting...")
      (let* ((process-name
              (concat my-mime-preview-play-current-entity-appname " " filename))
             (process
              (start-process process-name
                             mime-echo-buffer-name
                             my-mime-preview-play-current-entity-appname
                             filename)))
        (set-alist 'mime-mailcap-method-filename-alist process filename)
        (set-process-sentinel process 'mime-mailcap-method-sentinel)))))

.mailcap 作るのとそんなに手間変わんないか。。。

そんなに動作確認してないので、不具合あれば教えてください。


2010-09-26 追記
コードに誤りがあったため、修正しました。
mime-preview-play-current-entity の最後の方で

        (set-alist 'mime-mailcap-method-filename-alist process name)

としていましたが、正しくは

        (set-alist 'mime-mailcap-method-filename-alist process filename)

であるべきでした。
修正前のコードだと、テンポラリフォルダに一時保存された添付ファイルが削除されずに残り続けてしまいます。すみません。


ところで "Wanderlust FAQ 日本語版"
http://wiki.gohome.org/wlja/?%C0%DF%C4%EA%CA%D4
によると、そもそもこんなことしなくても、.mailcap に

application/*; fiber %s;

と書いとくだけで良いのかもしれない。


2010-10-24 追記
{fiber, open, xdg-open} が起動する直前に、一時保存された添付ファイルが
mime-mailcap-method-sentinel によって削除され、ファイルオープンに失敗してしまうようです。
そこで以下の設定を .wl に追記する必要があります。度々すみません。

(setq mime-play-delete-file-immediately nil)

id:sasakyh さんご指摘ありがとうございます。

雪豹の上に蛇が乗り鮫が動いた

"Snow LeopardMacportspythonをインストール リトライ"
http://d.hatena.ne.jp/ksaito11/20090906

の手順により、MacPorts の python26 が Snow Leopard 上で動作するようになった。
これにより、python26 依存だった wireshark も無事インストール完了。
よーしパパキャプチャしちゃうぞ

port で入れたパッケージ

メモしておこう。

coreutils
lsとか
gnutls
wanderlustでのGmail送信に必要
w3m
wanderlustでhtmlメールの閲覧に必要
wireshark
たまに使う

wireshark 入れようとしたら、python26 のビルドでエラー終了してしまう。
"#20284 (python26 fails to build on 10.6) – MacPorts"(http://trac.macports.org/ticket/20284) に Makefile のパッチがあるが、これだけではまだ解決しない。
Carbon なるパッケージが上手くインポートできてないように見えるが、これ snow leopard の宿命?

cvs
バージョン管理
subversion
バージョン管理

祝 snow leopard

Snow Leopard が届いた!

二日酔いに悩まされながらも、
Leopard の入った MacBookSnow Leopard の DVD を挿入し、
"Mac OS X インストール.app" をダブルクリックしてインストール開始。
正味 1 時間程でインストール完了。
(最初の10分くらい、ほとんど動きがなくて本当に実行されてるのかと不安になった)

Xcode 最新版のインストール

Xcode の再インストールも必要なんですね。DVD に同梱されているインストーラを実行。

MacPorts 再インストール

MacPorts の動作がおかしくなってしまったので、

"MacWiki - MacPorts"
http://macwiki.sourceforge.jp/wiki/index.php/MacPorts

の記事に従って MacPorts 全体を再インストールすることにした。

KeyRemap4MacBook で Control-s を Command-f に変えようとしたけど上手くいかない

Control がキャンセルされずに Control-Command-f として出力されてしまっているみたい。
cancel_control = true してるんだけどな。
追跡は暇なときにやります。