The Fifth Element

折角レンタルしてきたのにゾーグ(ゲイリー・オールドマン)がぼくの期待(記憶)していた声優じゃありませんでした……。

フィフス・エレメント - Wikipediaによると、DVD・ビデオ、テレビ朝日、日本テレビの三種類の吹替えがあるようです。

ルビー・ロッド(クリス・タッカー)が山寺宏一なのは一致していましたので、そこから考えるに佐古正人版のゾーグを記憶していたのでしょうか。

あの常に悪ふざけしているような吹替えが素敵でしたのに……佐古ゾーグ、次に見られるのは、いつになるのかなあ……。

re: fastri-server が起動しているか気にしたくない

Cygwin Emacs 上でも動くように修正しました。

問題は以下の通り。

  • Cygwin の ps は uxww しても各プロセスの引数が表示されないため、fastri-server が起動しているか判定できない
  • そのため、無限に fastri-server を起動してしまう

そこで尊敬する Windows スペシャリストの真雪(id:mayuki)さんにご教示願いましたところ、すぐに「wmic process が使えるます」と答えてくださいました。

WMIとwmicコマンドを使ってシステムを管理する(基本編) − @IT によると、wmic は XP 以降の Windows に含まれているそうです。

現在のコードは以下の通りです。Cygwin, Darwin(Mac OS X), GNU/Linux 上で正しく動作する事を確認しました。Meadow は最近使っていないのですが、恐らく動くのではないかと……。

なお、

  • locate-executable は実行ファイルが存在すればそのパスを、存在しなければ nil を返す自作関数です

(when (and
       (locate-executable "fastri-server")
       (locate-executable "fri")
       (setq ri-ruby-script (locate-executable "ri-emacs"))
       (load "ri-ruby" 'noerror))

  (defun fastri-server-alive-p ()
    (with-temp-buffer
      (let
          ((progname "fastri-server")
           (wmic-tmp-file "TempWmicBatchFile.bat"))
        (cond
         (windows-p
          (call-process "wmic" nil t t "process")
          (when (file-exists-p wmic-tmp-file)
            (delete-file wmic-tmp-file)))
         (t
          (call-process "ps" nil t t "uxww")))
        (goto-char (point-min))
        (not (not (re-search-forward progname nil t))))))

  (defun fastri-server-start ()
    (unless (fastri-server-alive-p)
      (message "starting fastri-server. please wait...")
      (let*
          ((progname "fastri-server")
           (buffname (format "*%s*" progname)))

        (start-process progname buffname progname)
        (while (not
                (with-temp-buffer
                  (sit-for 0.5)
                  (call-process
                   "fri" nil t t "Kernel#lambda")
                  (goto-char (point-min))
                  (re-search-forward "lambda" nil t)))))))

  (defadvice ri-ruby-get-process (before ri/force-start-fastri-server
                                         activate)
    (fastri-server-start)))

*1:Emacs 22 では実装も同じでした……。

Carbon Emacs 上で ATOK 2008 for Mac を使う際に ctrl を Emacs に取られて使い辛いという皆様へ

(setq mac-pass-control-to-system t)

もし必要があればこちらも……。

(setq mac-pass-command-to-system t)

なおこれらは陽に nil にしないと t (な筈)ですので、.emacs から当該定義を削ってしまっても良いかと思います。
FYI: [emacs] View of /emacs/src/macterm.c

Emacs に ctrl を握らせた方が使い良い場面も多いのが悩みどころですが…… :)

MacTheRipper3R14

Intel 用バイナリなんて出ていたんですねー。リンク先はアップローダぽい。まあそのタイトルでピンと来た方以外は見に行かない方がよいかと。

MacTheRipper 3 R14 (MacTheRipper3R14.sitx) - DivShare (今時珍しいポップアップ広告の出るページです)

(mac-toggle-max-window)

この記事は旧くなっています。 d:id:elim:20081007:1223716085 を参照ください。

なぜか下に1,2行隙間が出たので適当にheightを指定。

http://blog.masuidrive.jp/index.php/2008/04/30/fullscreen-carbon-emacs/

手元の Carbon Emacs 22.2.50 (CVS から取ってきてパッチを当ててビルド) では window-setup-hook から呼ぶと全画面になりました。

(and (eq window-system 'mac)
     (functionp #'mac-toggle-max-window)
     (add-hook 'window-setup-hook
	       (lambda ()
		 (mac-toggle-max-window))))

実は

CarbonEmacsを全画面で使おう - @masuidrive blog へコメントしたものとほぼ同一の内容です。


コメントではインデントが無くなったり、クォートをバッククォートに変換されたりしていましたので、個別エントリを立てて kill & yank し易くしようという目論見です :)

追記

Users should not interfere with it.

http://www.gnu.org/software/emacs/manual/html_node/elisp/Window-Systems.html#Window-Systems

あらら。ご使用の際は自己責任で B)

fastri-server が起動しているか気にしたくない(修正版)

この記事は旧くなっています。 d:id:elim:20080930:1223721748 を参照ください。

id:elim:20080410:force_start_fastri_server が間違っていたので訂正します。

ri に defadvice していましたが、これでは advice が働かずに進んでしまい、ri-ruby.el に "Couldn't start ruby script" と叱られてしまいます*1

以下のように改変しました。

  • ri-ruby-get-process への advice へ変更しました。
  • astri-server の起動完了を STDOUT への出力で確認していましたが、実際に fri で引けるか試すように変更しました。
(defun force-start-fastri-server ()
  (let*
      ((progname "fastri-server")
       (buffname (format "*%s*" progname)))
    (with-temp-buffer
      (call-process-shell-command
       (format "ps uxww |sed -e '/%s/!d' -e '/sed/d'" progname) nil t)
      (goto-char (point-min))
      (unless (re-search-forward progname nil t)
	(with-current-buffer (get-buffer-create buffname)
	  (erase-buffer)
	  (start-process progname buffname progname)
	  (while (not
		  (progn
		    (sit-for 0.5)
		    (with-temp-buffer
		      (call-process-shell-command
		       (format "fri 'Kernel#lambda'" progname) nil t)
		      (goto-char (point-min))
		      (re-search-forward "lambda" nil t))))))))))

(defadvice ri-ruby-get-process (before ri/force-start-fastri-server
				       activate)
  (force-start-fastri-server))

*1:interactive で引数を決定しているからでしょうか?

fastri-server が起動しているか気にしたくない

この記事は誤りを含んでいます。 id:elim:20080424:force_start_fastri_server を参照ください。

M-x ri してから fastri-server が起動していない事に気付くと悲しいので、起動していなければ起動させるようにしてみました。
初回だけは少し待たされますが、次回以降は(とうぜん)いつもの速度になります :)

(defun force-start-fastri-server ()
  (let*
      ((progname "fastri-server")
       (buffname (format "*%s*" progname)))
    (with-temp-buffer
      (call-process-shell-command
       (format "ps ux |sed -e '/%s/!d' -e '/sed/d'" progname) nil t)
      (goto-char (point-min))
      (unless (re-search-forward progname nil t)
        (with-current-buffer (get-buffer-create buffname)
          (erase-buffer)
          (start-process progname buffname progname)
          (while (not
                  (progn
                    (goto-char (point-min))
                    (re-search-forward progname nil t)))
            (sit-for 0.1)))))))

(defadvice ri (before ri/force-start-fastri-server activate)
  (force-start-fastri-server))

fastri-server が起動しきるまで数瞬かかりますので、while の中で fastri-server の出力を確認しています。これをしないと初回の M-x ri が失敗します。単に sit-for させても良いと思います。また、もっと素敵な方法が見付かり次第差し替える予定です :p