2016年8月31日水曜日

ヨーゼフ・シュンペーター「資本主義、社会主義、民主主義」

 ヨーゼフ・シュンペーター「資本主義、社会主義、民主主義」(l)
 ヨーゼフ・シュンペーター「資本主義、社会主義、民主主義」(2)

 読んでいる途中で何度もこれっていつ書かれたんだっけ、と思ってしまうほど、今の状況のことに書かれているような気分になった1。ただし資本主義についてのことだけで——社会主義についてはどこか、納得し切れなかった。
 それはすでにソ連が崩壊した世界に生きているから、ということもあるけれど——それだけではなく、著者が社会主義について語るとき、外部のことを無視しているからだ。国内のことだけ語れば、著者のいうとおりなのかもしれないが。結局、ソ連は資本主義の経済競争に負けた。そういうことじゃないのか?
 ただ、著者は資本主義が極まった結果、社会主義に移行する、と考えているらしく——資本主義と社会主義が対立するものとも考えていないらしい——マルクスもそうだった、と著者はいっている。
 そういう意味ではほんとうの社会主義というのは今だおとずれていない、ということになるかもしれない。

Footnotes:

1

書かれたのはたぶん第二次大戦中。

2016年8月22日月曜日

シッダールタ・ムカジー「がん‐4000年の歴史」

 シッダールタ・ムカジー「がん‐4000年の歴史」(上)
 シッダールタ・ムカジー「がん‐4000年の歴史」(下)

 乳がんのマンモグラフィーを毎年のように受けない方がいいという話は知っていたけれど——偽陽性の問題で、あまり意味がない——、同じように癌の摘出手術も良好な結果は得られていないらしい。
 つまり身体を切り刻まれ——化学療法や放射線治療をしても延命年数はかわらない。癌の種類によっては有効な手立てがあるらしいのだけど。
 実は骨髄移植はけっこういける治療法だとずっと思っていたのだけれど——NHKか何かのドキュメンタリーでそういう印象を受けていた——、ところがそうでもないらしい。治療に耐え切れず、亡くなる人間も多い。テレビのドキュメンタリーでは生き残ったの人間を放送しているだろうから生存者バイアスがどうしてもかかってしまっていたのだろう。
 マンモグラフィーの話を知ったとき、自分の年齢からいって癌になったとしても治療は受けないと決めていたのだけれど——痛みを何とかするという前提だけど——、ちょっとその自信がなくなってきた。というのも、患者が癌の向かい合ったとき、治療してくれと強く望んでいるようなのだ。ターミナルケアをすすめる医者と、治療をすすめる医者ではどうしても後者を選んでしまうものなのだろう。

2016年8月15日月曜日

純正 Apple MacBook Air用ACアダプター A1436 45W 14.85V 3.05A 2012 MAGSAFE POWER ADAPTER

純正 Apple MacBook Air用ACアダプター A1436 45W 14.85V 3.05A 2012 MAGSAFE POWER ADAPTER

 やられてしまった。
 うちのやんちゃ娘にである。
 MacBook Airの電源ケーブルをかじられて、充電できなくなってしまった。たぶんショートして中の回路がおかしくなってしまったのだろう。しくしくしながらAmazonでケーブルで注文したらなんと4700円もする。
 選択の余地はない。充電できなければ、ただの箱だ。MacBook Airといえども。くー。

2016年8月11日木曜日

庵野秀明総監督「シン・ゴジラ」

 監督が庵野秀明だと知って俄然、観に行く気になった。
 期待は裏切られなかった——というか、その期待すら上回り、観たことのない光景が目の前にひろがる快感に唖然とした。前情報を何も知らずに観に行ったので、塚本晋也監督が俳優としてあらわれたときにはそちらが気になってしかったなかったけれど。ほんとに塚本?
 接点があったとは知らなかった。どうやら樋口監督がらみだったらしい。

 ゴジラ・シリーズというより「ゴジラ」のリメイク版でまちがいなくポスト福島原発事故の映画だった(ハリウッド版もそうだったけれど)。
 それにしても最後は妥協したんじゃないんだろうか。
 最後の最後の、大塚英志のゴジラ論を取りこんだようなシーンは最後のあがきだったようにも思える。個人的には「巨神兵東京に現わる」のラストのような光景を観たかった。核爆発で光に包まれた東京を陽炎のような影となって歩いていくゴジラの姿を。

2016年8月9日火曜日

poor-grep-dired

で、つくってみた。

(require 'em-unix)

(defun poor-grep-dired (string)
  "貧乏人のgrep"
  (interactive "s検索文字列: ")
  (let ((file-list
  (dired-get-marked-files nil nil 'dired-nondirectory-p))
 (display-buffer-function nil))    ; popwinを無効化
    (eshell-poor-mans-grep (cons string file-list))))

 dired-modeでmarkしたファイルにたいしてpoor-grepをかける。

2016年8月8日月曜日

dired-modeは奥が深い

 ここのサイトを見てはじめて知った。
 dired-modeでmarkしたファイルにたいして置換することができるそうだ。キーアサインは「Q」——「dired-do-query-replace-regexp」——あ、これは使える! これはmarkしたファイルに検索をかけることができる、ということじゃないか。
 しかもdired-modeはfind-fileでディレクトリを選んだときだけつくられる一覧というわけでもない。「find-lisp-find-dired」でも「mdfind-dired」でも生成される。「locate」でも。ごっそりファイルをひっぱりだしてきてそれにたいして操作ができる。
 「dired-do-query-replace-regexp」をもとにmarkしたファイルにたいして「eshell-poor-mans-grep」をかける関数なんて簡単にでっち上げられそうだし。

2016年8月7日日曜日

poor-grepを拡張してみた

(require 'em-unix)
(require 'cl)

(defun poor-grep (string regexp)
  "貧乏人のgrep"
  (interactive "s検索文字列: \nsファイルregexp: ")
  (let ((file-list (loop for x in (split-string regexp)
   append
   (file-expand-wildcards x)))
 (display-buffer-function nil))    ; popwinを無効化
    (eshell-poor-mans-grep (cons string file-list))))

 ファイルregexpを「* / */*/*」という感じで指定して複数のディレクトリを対象にできるようにした。

2016年8月6日土曜日

Spotlite

 MacOSのSpotliteをコマンド(mdfind)からEmacsで使えることは知っていたのだけど、ほとんど使ってなかった。下記のようにしてlocateのかわりにしていたのだけど。

(setq locate-command "mdfind")

 検索がファイル名のリストで、しかもファイルの中身や、タグもひっかかってしまうので、わけがわからなかったからだ。Spotliteだと、プレビューがあるからいいのだけど。でもファイル検索はやはりfindを使うより圧倒的に早い。
 el-getでmdfind-dired.elを落としてきたりした。mdfind-dired-nameでファイル名検索もできる。でもやっぱりhelmから使いたいよね。
 というわけでググってみた。
 helm-locateから使うには

(setq helm-locate-command
      (case system-type
 ('gnu/linux "locate -i -r %s")
 ('berkeley-unix "locate -i %s")
 ('windows-nt "es %s")
 ('darwin "mdfind -name %s %s")
 (t "locate %s")))

 で、helm-spotliteをつくる方法も同じとことにあった。

(defun helm-spotlight ()
  (interactive)
  (helm :buffer "*helm: spotlight*"
 :sources '(helm-source-mac-spotlight)))

Use mdfind instead of locate in helm-locate in OS X layer

;; locateのコマンドで引数を使う方法(こんな感じ?)
(setq locate-make-command-line (lambda(x) (list locate-command "-name"
search-string)))

2016年8月5日金曜日

Xcodeを削除

 MacBook Airの容量不足が深刻である。
 このところ、99%をこえ、残り容量が1Gになることもしばしばだ(今は2.2G)。
 EL Capitanの次のOSでは使ってないファイルをクラウドへ自動的に掃き出して容量を確保してくれるPlan9のような機能が追加されるそうだけど——その前にこちらはまだ、Yosemiteだ。残り容量1GではEL Capitanにすることすらできないだろう(試していない)。
 SSD換装をしようか、と思って検索してみたところ、結構な値段がする。それなら新しいMacBookを買った方がよくないか? そんな値段。
 どうしよう。
 しかたないので空きをつくため、Xcodeを削除した。「svn」などのコマンドは「Command Line Developer Tools」をもってくれば、使えるそうだし。
 削除したら残り容量7.4Gになった。
 94%である。
 うーん、90%を切りたいところなのだが。ついこのあいだまで10Gはあったんだがなぁ。どうしてこんなに減っちゃったんだろ。

2016年8月4日木曜日

Emacsからゴミ箱へ

 Emacsからファイルを削除してゴミ箱にはいるなんて必要ないや、と思っていたらそのような案件が発生した。Emacsでdeleteして復活させたくなったのだ。
 これはいかん。
 というわけで下記のように設定した。

(setq delete-by-moving-to-trash t)

 ところがMacでは次のメッセージをだしてうまくいかなかった。
 あれ?

ls does not support --dired; see `dired-use-ls-dired' for more details.

 どうやらCocoaEmacsではネイティブにはサポートされてないらしい。
 emacswikiでやり方を見つけた。

(setq delete-by-moving-to-trash t)

(defun system-move-file-to-trash (file)
  "Use \"trash\" to move FILE to the system trash.
When using Homebrew, install it using \"brew install trash\"."
  (call-process (executable-find "trash")
  nil 0 nil
  file))

 このやり方だとHomeBrewからtrashというコマンドをインストール必要がある。——「brew install trash」。
 それにしても「system-move-file-to-trash」を定義するだけで行くのはどうしてだろう、と思ってelispをあさってみたら

6 matches for "system-move-file-to-trash" in buffer: files.el.gz
   6796:This directory is only used when the function `system-move-file-to-trash'
   6806:(declare-function system-move-file-to-trash "w32fns.c" (filename))
   6814:If the function `system-move-file-to-trash' is defined, call it
   6841: ;; If `system-move-file-to-trash' is defined, use it.
   6842: ((fboundp 'system-move-file-to-trash)
   6843:  (system-move-file-to-trash filename))

 ということで、Windowsの場合はCで書かれた「system-move-file-to-trash」がバンドルされるらしい。

2016年8月3日水曜日

w32-shell-execute

 先日、Org-ModeのHyperLinkのことを調べていて「org-file-apps-defaults-windowsnt」という変数を見つけた。見るからにWindowsで何かアプリケーションを動かしてくれそうだ。
 その中に次のように定義されているところがあった。

(system w32-shell-execute "open" file)

 ——へっ?
 てなもんだ。先日、my-x-openをつくった(ググって見つけたものをパクったものだけれど)ばかりだというのに。あれ、Windowsにも「open」コマンドがあったっけ?
 だいたい「w32-shell-execute」って何よ。MacのEmacsには見当たらないんだけど。それでもしつこくelispをあさってみたら。

2 matches for "w32-shell-execute" in buffer: org.el.gz
   1951:                 'w32-shell-execute)
   1956:                 'w32-shell-execute)
2 matches for "w32-shell-execute" in buffer: browse-url.el.gz
    875:(declare-function w32-shell-execute "w32fns.c")    ;; Defined in C.
    885:        (t (w32-shell-execute "open" url))))

 というのがひっかかってきた。
 ——w32fns.c!
 Cか。
 するとこれはWindowsのときだけリンケージされるようなものなのかもしれない。ああ、もしかしたらcmdを呼ばなくてもすでにEmacsの中からWindowsでもファイル指定でエクセルを立ち上げるなんてことができるようになっていたってことではないだろうか……。

 Emacs for Windows1をあらためて調べてみたら「w32-shell-execute」という関数がやはり存在していてしかもこれなら——当たり前だが——わざわざ、file-pathをWindows用に変換しなくても動くのだった。
 というわけで

(defun my-x-open (file)
  "open file."
  (interactive "FOpen File: ")
  (message "Opening %s..." file)
  (w32-shell-execute "open" file)
  (message "Opening %s...done" file))

 これでいいのだった。しかもなんか、色々できそうな感じ……。
 というか、my-x-openなんで定義せずにw32-shell-executeを直接、呼び出せば、いいじゃん……orz

w32-shell-execute is a built-in function in `C source code'.

(w32-shell-execute OPERATION DOCUMENT &optional PARAMETERS SHOW-FLAG)

Get Windows to perform OPERATION on DOCUMENT.
This is a wrapper around the ShellExecute system function, which
invokes the application registered to handle OPERATION for DOCUMENT.

OPERATION is either nil or a string that names a supported operation.
What operations can be used depends on the particular DOCUMENT and its
handler application, but typically it is one of the following common
operations:

 "open"    - open DOCUMENT, which could be a file, a directory, or an
               executable program (application).  If it is an application,
               that application is launched in the current buffer's default
               directory.  Otherwise, the application associated with
               DOCUMENT is launched in the buffer's default directory.
 "opennew" - like "open", but instruct the application to open
               DOCUMENT in a new window.
 "openas"  - open the "Open With" dialog for DOCUMENT.
 "print"   - print DOCUMENT, which must be a file.
 "printto" - print DOCUMENT, which must be a file, to a specified printer.
               The printer should be provided in PARAMETERS, see below.
 "explore" - start the Windows Explorer on DOCUMENT.
 "edit"    - launch an editor and open DOCUMENT for editing; which
               editor is launched depends on the association for the
               specified DOCUMENT.
 "find"    - initiate search starting from DOCUMENT, which must specify
               a directory.
 "runas"   - run DOCUMENT, which must be an excutable file, with
               elevated privileges (a.k.a. "as Administrator").
 "properties"
           - open the the property sheet dialog for DOCUMENT; works
               for *.lnk desktop shortcuts, and little or nothing else.
 nil       - invoke the default OPERATION, or "open" if default is
               not defined or unavailable.

DOCUMENT is typically the name of a document file or a URL, but can
also be an executable program to run, or a directory to open in the
Windows Explorer.  If it is a file, it must be a local one; this
function does not support remote file names.

If DOCUMENT is an executable program, the optional third arg PARAMETERS
can be a string containing command line parameters that will be passed
to the program.  Some values of OPERATION also require parameters (e.g.,
"printto" requires the printer address).  Otherwise, PARAMETERS should
be nil or unspecified.

Optional fourth argument SHOW-FLAG can be used to control how the
application will be displayed when it is invoked.  If SHOW-FLAG is nil
or unspecified, the application is displayed as if SHOW-FLAG of 10 was
specified, otherwise it is an integer between 0 and 11 representing
a ShowWindow flag:

  0 - start hidden
  1 - start as normal-size window
  3 - start in a maximized window
  6 - start in a minimized window
 10 - start as the application itself specifies; this is the default.

Footnotes:

1

「GNU Emacs 24.5.1 (x8664-pc-mingw32) of 2015-04-14 on NTEMACS64」と「GNU Emacs 25.0.95.1 (i686-pc-cygwin) of 2016-07-09」

2016年8月2日火曜日

fullscreen

 使っているのは「GNU Emacs 24.5.1 (x86_64-apple-darwin14.3.0, NS apple-appkit-1347.57)」である。どうせMacBookAir上ではつねにフルスクリーン表示だ。それならelispからフルスクリーンにする方法はないか?

(toggle-frame-fullscreen)

 というのがあった。ところがinit.elの中で呼び出すようにしてみても——たしかにフルスクリーンになるのだが、frameだけだ。Emacsでいうところのウィンドウはフルスクリーンにならない。バグかな、これは、という動きだった。
 ——だめかぁ。

 と思ってすっかりあきらめていたらinit.elを整理したらうまく行くようになっていた。どうしてかは不明。もしかしたらMacOSのUPDATEがだめだったときからずいぶんあたっているからそのせいかもしれない。よくわからん。

 ちなみに

(toggle-frame-maximized)

 というのもある。

2016年8月1日月曜日

Org-ModeのHyperLink

 使っているのは「GNU Emacs 24.5.1 (x86_64-apple-darwin14.3.0, NS apple-appkit-1347.57)」である。Org-Modeのバージョンは「8.2.10」——そのorgでHyperLinkでリンクを張ったところ、いきなりVLCが立ち上がった。C-cC-oでHyperLinkからjumpしたところで、である。
 ——えっ。
 Linkのタイプは「file:」でEmacsでそのファイルを開いてくれるものだとばかり思っていた。これが「elisp:」のようにそれなりの処理を想定していたのならまだ、わかる。
 理解不能だった。
 あきらかにMacの「open」コマンドを呼び出したような動き。
 そこで該当の関数、「org-open-at-point」のソースを追っかけてみたところ、意外なことに「auto-mode-alist」を参照していた。Emacsのファイルとメジャーモードを関連づけている変数である。半分以上、カンだが、そこに定義されていないと、外部コマンドを呼び出すようになっているような。
 それで「.dat」ファイルを次のように定義した。

(add-to-list 'auto-mode-alist '("\\.dat$" . fundamental-mode))

 HayperLinkから無事、Emacsのfind-fileで開くようになった。