2016年12月23日金曜日

FreeBSD on VirtualBox

 また、MacBook AirにFreeBSD環境をつくろうと思い立ってしまった。MacBook Airの上でVirtualBoxを動かしてその中で、FreeBSDを動かそうというわけ。インストール自体はあっさりとできた。

FreeBSD FreeBSD123 10.3-RELEASE FreeBSD 10.3-RELEASE #0 r297264: Fri Mar 25 02:10:02 UTC 2016     root@releng1.nyi.freebsd.org:/usr/obj/usr/src/sys/GENERIC  amd64

 ところがそのあと、ネットーワーク環境ではまってしまった。以前、やったものを参考に作業をしたのだが、どうもどことなくおかしい。今回はMacBook AirからFreeBSDに入ることが前提だったので、頭を悩ませてしまう。
そもそもMacBook Airのネットワーク環境が静的なら問題はないのだが、状況によって変化する。それがやっかいだった。無線LANに接続していることもあれば、スタンドアローンのこともある。1いろいろ試してみた結果、次の状態に落ち着いた。

  1. ゲストOSにネットワークアダプタを二つ用意した。
    これは以前と同じ。
  2. タイプは次の二つ。

    ・ ホストオンリーアダプター
    以前と同じ。スタンドアローンのときはこちらのアダプタを使用して接続する。

    ・ ブリッジアダプター
    以前はNATネットワークにしていたが、今回は無線LANのポートにブリッジすることにした。無線LAN接続環境ではこちらを使用して接続する。

  3. 状況によってIPアドレスがかわってしまうのでAvahiをいれた。
  4. 制限

    当たり前だけど、動的なネットワーク構成の変更には対応できていないので、VirtualBoxのゲストOSをリスタートする必要がある。FreeBSDのrebootではだめようだ。

  5. 問題

    FreeBSDのbootのとき、DHCPでIPドレスを取りにいくとき、アダプタのどちらかが、取れないの状態なのでbootに時間がかかる。

Footnotes:

1

実はinet6にすれば、問題ないのではないか、と思っているのだが、よくわからない。

2016年11月28日月曜日

いきなりOSの更新をしてしまった

 精神的に煮詰っていたのだろう。
 朝っぱらからいきなり、MacBook AirのOSのアップデートをはじめてしまった。YosemiteからEl Capitanを飛ばしていきなりmacOS Sierra。いろんなアプリケーションが動かなくなったらどうするんだ、おれ。
 時間こそ、かかったけれど——ディスク容量が足りずに中断を余儀なくされたが、リブートだけでなんとかなった。今のところ、動かなくなったアプリケーションはない。
 笑ってしまったのは残り10Gだったディスクが18Gに増えたことだ。
 Optimize Storageのおかげで不要だったファイルが消去されたのかもしれない。まぁ、元々、この機能に興味があったのでアップデートしたのだけれど。iCloud機能をONにしてないのであまり関係がない。
 驚いたのはYosemiteのころはフルスクリーン表示できなかったGnuCashができるようになっていたことだ。便利なのか、どうか、微妙。AquaTermはフルスクリーンにすると逆に全体が見えなくなってしまう。
 ただ、フルスクリーンでの二画面表示はよさげ。Split Viewというらしい。

2016年11月26日土曜日

Common Lispをインストールしてしまう

 精神的に煮詰っていたのだろう。
 朝っぱらからいきなり、MacBook AirにCommon Lispをインストールしてしまった。何をやっておるのか。参考にしたのは下記のサイト。

Common Lispとリアル・ワールドを繋ぐ「Roswell」の紹介

 だからといって何かをやろうというわけでもなく、

MacBookAir:~ yamada$ ros run
* (+ 123 456)

579
*

 とかやってみただけ。
 個人的にちょこちょことしたプログラムを組むのならEmacs Lispをやってしまうもんなぁ。Common Lispでやらなければ、ならないことなんて今のところないんだよなぁ。疲れている。

2016年11月12日土曜日

押井守「押井言論2012-2015」

 押井守「押井言論2012-2015」

 だいたい押井守の「紅い眼鏡」にシビれたというところが変態的なのだが、そのあとに観た実写——押井守監督「ケルベロス地獄の番犬」も好きな映画だ1。主演の藤木義勝が「THE NEXT GENERATIONパトレイバー」に出ていたあの人とはまったく気づいてなかったけれど。
 押井守「押井言論2012-2015」の巻末の資料を見て実は実写を数、撮りだしたのは最近のことだと、知った。そうだったんだ。
 それにしてもこの本を読んで押井守監督「東京無国籍少女」を観てみたくなってしまった。ほかのアニメや、映画もふくめて。

Footnotes:

1

どういうわけか、ものすごく自分の中のノスタルジーを刺激されたのだ。

2016年10月8日土曜日

2016年10月7日金曜日

コンタクトレンズが砕けた

 ハードのコンタクトレンズを使っているので目に入れる前にこすり洗いというものをする。洗浄液をつけて親指、人差し指、中指のあいだでこすり洗いをするわけである。
 で、その日もそうやっていたらふいに指のあいだからコンタクトの感触が消えてしまった。まるで氷砂糖でできていたかのように。
 一瞬、溶けたのか、と思った。
 そんなわけはない。
 手を確認したが、洗浄液が泡立ってしまっていてコンタクトレンズは見つけ切れなかった。水ですこし流してあらためて確認すると、何か、ある——コンタクトレンズの破片だった。
 砕けたのだ。
 コンタクトを使いはじめて30数年。はじめての経験だった。

2016年10月5日水曜日

Mailリーダー on Gnus

 どうせGnusを使うのだからメールも読めるようにしよう。
 そう思って設定していて何か、嫌になってしまった。
 というのも苦労して設定してもメールはほとんど使わないんじゃないか、と気がついたからだ。そもそも昔、Gnusでメールを読んでいたときにくらべてあきらかに、最近はメールに依存していない。読んでいるメーリングリストもない。
 それでもあちらこちらにメールアドレスが登録されているのでメールそのものは必要なのだけれど——逆にそのせいもあって広告メールがやたらくる——、人とメールのやりとりをすることがなくなっている。まあ、人間関係がきわめて細くなっていることも一因だけど。
 今ならLINEか、SNSのメッセンジャーが主流だろうし。
 いちおうメインのメールはGnusで読めるようにしたけれど、送信できるようにはしてない。その前にやる気をなくした。だってiPhoneでメールすれば、いいのだから。大量にメールを書くならまだしも。

2016年10月4日火曜日

レンダリング

 あれ、と思ったのはかつてnewstickerでRSSを読もうとしたとき、w3mをいれる必要があったからだ。そうしないと、htmlはうまくレンダリングされなかった。剥き出しのXMLが表示されていた記憶がある。それなのに、GnusでRSSを読むときは何もせずに読めた、普通に。
 レンダリングされている。
 今やEmacsにはEWWというブラウザが内蔵されているからなぁ。
 と思っていたらshr.elというライウラリがあるのだった。——"Simple HTML Renderer"。htmlファイルをひらいて「shr-render-buffer」をやると、レンダリングされる。

2016年10月3日月曜日

RSSリーダー on Gnus

 FireFoxの調子がよくないこともあって——終了させるとゾンビになる——、GnusでRSSを読み出したここ最近。ところがどうも不満だ。妙にストレスを感じる。つらつら考えてみるに、RSSで全文の記事内容が渡ってくるわけではない。なのであらためてブラウザでひらくことになるのだけど、それがストレスらしい。
 というのも次の手順が必要だからだ。

  1. GnusのSummary BufferからArticle Bufferへ移動(hキー押下)
  2. linkまでカーソル移動(tabキー押下)
  3. リターンキーでブラウザ起動。

 で、次のものを読もうと思ったらEmacsへもどって、とやらなければ、いけない。だったらEmacsのブラウザを使えば、いいじゃん——そうでもなかった。3.のタイミングでC-uvでEWWが立ち上がるのだけど、何か煩雑。
 Summary Bufferにいる状態からいきなりブラウザが開いてくれるのが、一番、いい。理想はしばらくすると、勝手に開いてくれることだけど——いろいろと問題があって、とりあえず、Summary Bufferでwキーを押下したらEWWで開くようにした。

(defun y-gnus-summary-eww-open()
  (interactive)
  (let ((url (save-window-excursion
        (gnus-summary-select-article-buffer)
        (goto-char (point-max))
        (shr-previous-link))))
    (select-window (get-buffer-window gnus-group-buffer))
    (eww url)))

(add-hook 'gnus-summary-mode-hook
   (lambda ()
     (define-key gnus-summary-mode-map
       "w" 'y-gnus-summary-eww-open)))

 こんな感じ。

2016年10月2日日曜日

iPad Proを手にもっているのがつらい

 何がつらいといってiPadをもっていて肩がおかしくなる。しかも薄くて表面にひっかかりがないので指先に思った以上に力をこめていて指が痛くなる。あかんわー。
 なんとか、ならんものか。たとえば、女子バレーの真鍋監督(2016)がつかっているようなハンドストラップがあれば、いいな、と思ってAmazonで探していたのだけれど。
 ふと思いついた。そういえば、あれはつかえないかな。ブックホルダ。

 こんな感じ。

2016年9月22日木曜日

RSSリーダー

 今だにRSSであちらこちらのサイトを読んでいる。
 GoogleがRSSリーダーのサービスから撤退して、Emacsのnewstickerを使ってみたりしたけれど、結局、ふとした拍子に思い出した昔、愛用していたFireFoxのSageというツールを使っている。Sage自体はいいツールで満足していたのだけれど、最近、EmacsのGnusでRSSを読めことに気がついた。
 Gnusならunpluggedの機能でオフラインで読めるようになるのではないか。

 で、opmlファイルでデータをimportしてみた。
 結論からいうと、全データをとりこめなかったし、RSSはgnus-unpluggedでもネットへアクセスヘ行く。望んでいるものとちがう。ただ、Emacsは立ち上げっぱなしにしているので、オフラインとかわらない。過去の分のフィードも残されているようなのでそれはメリットかもしれない。Sageは現時点のRSSフィードしか、見えないから。

 とりあえず、記事全体をRSS配信してくれているサイトとかを中心にGnusで読むようにしてみようかな。Sageとどこまで読んだか、情報を共有できないのがちょっとデメリットだけど……。

(require 'gnus-win)
(add-to-list 'gnus-buffer-configuration
      '(article (horizontal 1.0
       (vertical 0.5
          (group 1.0))
       (vertical 1.0
          (summary 0.25 point)
          (article 1.0)))))

で、こんな感じ。

2016年9月15日木曜日

OneDrive

 バックアップにいろんなファイルを目一杯、OneDriveに放りこんでいたらいつのまにか、容量が減らされていて警告がでていた——iPad Proの設定をしていて気づいた。
 あわててファイルをダウンロードしている。
 まいったなぁ。

2016年9月14日水曜日

emacsclient

 事情があってemacsclientのmanを読んでいたらこんな記述に気づいた。

-e, --eval
       do not visit files but instead evaluate the arguments as Emacs Lisp expressions.

 えっと思って試してみたらemacsclientからEmacsに値を設定できた。

bash-3.2$ emacsclient -e '(setq wrk "123")'
"123"
(message wrk)
"123"

 おお、wrkに"123"が入ってる。

emacsclient -e '(helm-mini)'

 笑った。
 しかもemacsclientには結果が返却されている。
 最初、セキュリティホールになるんじゃね? とも思ったけれど、おもしろそうなことができそうな気もする。
 覚えておこう。

2016年9月13日火曜日

iPad ProとApple pencil

 Apple pencilのデモ動画でわずかに遅延していたのでいまいちだなぁ、と思っていたのだけれど——どういうわけか、注文してしまった。しかもそんな欲しいと思っていなかったのにだ。後悔した気分のまま、製品が到着してしまった。
 初期設定をしてすこし使ってみてまだ後悔している。
 値段の価値はないよなぁ、と。自分にとって。
 pencil自体は適度な重さで、ペン軸がちょっと細いかな、ということと値段以外は不満はなかった。ただ、紙と鉛筆とは書き味がちがいすぎて——ディスプレイの表面がつるつるしているので——違和感が大きい。
 文字入力ならやはりキーボードなので、やはりpencilは必要ないのだった。
 ただ——値段にたいするメリットとしては微々たるものだけど——、pencilでiPadをつついて操作できるのはいい。別に潔癖症というわけではないけれど、指先がべたつくような日にiPadを操作するのは不快でしかたがなかった。ちょっとディスプレイに刺さるような感触なのでそれはそれでストレスを感じてしまうのだけれど。

9.7インチiPad Pro Wi-Fiモデル 437 g

 iPad自体はiPad miniを買ってからもう四年ほどたつので、そろそろ買い換えの時期といえば、そうだった。pencilを買うつもりがなかったらたぶん、買い替えることはなかったのだけれど、さすがに四年もたつと技術も進歩していて——値段も高くなっていたけれど——、重さはiPad ProとiPad miniはかわらない。片手で支えると、さすがに大きさのせいで(テコの原理ですな)重いけれど。
 うーん。

 ——メリットが見出せない。どうしたものか。

2016年9月11日日曜日

このアプリケーションで開く

 ファイルタイプをアプリケーションと関連づけてあると便利だ。ファイルをクリックすると、そのアプリケーションで開いてくれる。以上、同義反復。
 しかし、Emacsをアプリケーションに割り当てると、二重に起動してしまう。そんなときのために、emacsclientがある(たぶん)。
 ところが、Macだとそのemacsclientがアプリケーションとして割り当てることができない。emacsclient.appではないからだろう。しかたなく、Emacsを割り当てていたのだが、やはりふたつ開く。フルスクリーンで使っているのでわずらわしい——ただ、そのEmacsを終了させると元々、立ち上がっていたEmacsも終了してしまったのであれ、とは思っていたのだが(伏線)。

 方法は

・emacsclientのapp化
・強引に裏からemacsclientを関連づける
・あきらめる

 で、app化は好みではないので——ググってできるらしいことはわかったのだが——、やめにして裏からの方法を探してみた。SetFileでできそうだった。が、弾かれた。

bash-3.2$ SetFile -c emacsclient tmp.el
Invalid type or creator value: 'emacsclient'
bash-3.2$

 あかーん。
 このレベルでappであることを求められてはたぶん手はねー。
 あきらめかけたのだが、要件を考えると、Emacsが二重起動しなければ、いいわけで、何か手はないか、とググってみた。=>emacs23で新しいファイルを開いた時にemacsを複数起動させない

;;複数ウィンドウを開かないようにする
(setq ns-pop-up-frames nil)

 というのを見てあっ、と気づいた。そもそもEmacs.appは二重起動してなかったってことに。だから二つ目を終了させると、一つ目のEmacsも終了したように見えていたのだ(伏線回収)。
 だいたい、ns-* ってことはMac用の設定じゃないか。

 これでEmacsからopenコマンドを使って開いてもEmacsで開くようになる(同義反復?)。

2016年9月10日土曜日

skk-comp-wrapper

 tabキーには何がアサインされているのかな……。「C-hk」してみたら「skk-comp-wrapper」が割り当てられていた。
 何よ、「skk-comp-wrapper」って。

<tab> runs the command skk-comp-wrapper, which is an interactive
autoloaded compiled Lisp function in `skk-comp.el'.

It is bound to <tab>.

(skk-comp-wrapper &optional ARG)

Character でないキーに補完を割り当てるためのコマンド。

 skkの入力途中で使える補完機能だった。1
 あ、けっこう使えるかも、と思ったけど、案外、使わないかも。頭の中の言葉が流れるように出力できるからskkを使っているのであって——スマホのように変換予測を出すのならほかのIMEを使う。
 でもこんな機能もある、ということを覚えた。

Footnotes:

1

Emacsのtabキーはよく補完機能に割り当てられている。

2016年9月3日土曜日

柏野祐二「海の教科書 波の不思議から海洋大循環まで」

 柏野祐二「海の教科書 波の不思議から海洋大循環まで」

 いつもの年よりも海水温が暖かいから台風の勢力が弱まらない、というテレビの天気予報の解説を聞くたびに、そうなんだろうか、と疑問が浮かんでしかたがなかった。海水温が1度や2度、あがったからって気温が1度か、2度あがるだけだろう? そんなことがあるのか、と。
 まぁ、恥じるべきは自分の無知なのだけれど。

 海洋全体の熱容量は大気全体の熱容量の一〇〇〇倍にもなります。これは海洋全体でわずか一 〇〇〇分の一°Cの温度変化が大気全体の一°Cの変化と等しい。

 という記述を見て自分の無知を悟った。
 1度、海水温があがるということは大気にとっては1000度の温度上昇に等しいということじゃないか。驚いた。認識を改めた。なんてことだ。
 あと、淡水が一番重くなるのは四度のときだ、とか、波のこととか、鳴門海峡は自分が思っていたところじゃなかったとか。

 非常におもしろかった。

2016年9月2日金曜日

変態だw 変態だw

 Windows環境ではNTEmacs64を使っていたのだけれど、Cygnusを使うためCygnus版のEmacsを使うことになった。一応、両方、インストールしておいてbookmarkなどの情報は共有していたのだけど。
 このふたつはパスの表現が微妙にちがう。
 Cygnus版はCygnusの環境下で動作するためだ。
 なのでbookmarkを取り込んでも、Cygnus版からはbookmark-jumpできないことがある。こうなることはわかっていたのだけれど、使わないからいいや、と思っていたのだ。そんな風に考えたことは大概、あとではまる。

 bookmarkファイルの中身をCygnusのパスに変換してしまえば、いいのだけれど、そうすると、NTEmacs64から使えなくなる。Emacsには関数を拡張するためにhookという仕掛けがあるのだけれど、これは拡張する関数の中に、あらかじめ定義しておかなければ、いけない。うーん。bookmarkの関数を置き換えてしまうのも手だけど、最近、advice関数というものを知ったばかりだ。それを使うことにした。

(when (eq system-type 'cygwin)
  (advice-add 'bookmark-get-filename :filter-return 
              'cygwin-convert-file-name-from-windows))

 これで動いた。
 動いてしまった。
 何という変態ぶりだ、elisp。

2016年9月1日木曜日

smartrepを導入してみた

 つらつら、るびきち「日刊Emacs」を見ていたら。

#19 同時押し&リピート 少し特殊なキー設定 (Software Design 2015年11月号掲載記事) Emacs key-chord smartrep インストール 設定 使い方

 という記事の、とくに「プレフィクスキーを省略させるsmartrep」に興味を魅かれた。さっそく導入してみた。other-windowがC-xoooでつぎつぎとウィンドウを移動できるのはいい。導入以前はC-xC-oC-xC-oと繰り返していた。けっこう面倒だな、と思って逆向きに行けるようにとか、定義していたのだけど、移動方向がちがうことがあってイラッとしていた。
 これならほとんど、気にしなくてもいい。1

 と思って、取りこんで使ってみていたのだが、だめだ。くりかえさないとき、イラッとする。smartrepにモードインしていると、そこから抜け出すために1キーが必要になる。たとえば、org-modeでC-cC-pとやって飛んでC-nで一行下げようとすると、smartrepに喰われてしまってC-cC-nになってしまう。
 これがストレスだ。

 ただ、収穫もあった。C-xzにrepeatというのが、標準でバインドされていて——今回、はじめて知った——これがC-xzのあと、zの連打で処理をくりかえすことができるのだ。くりかえしのとき、1キー、増えるが、なんだ、smartrepと同じことができるということじゃないか。
 これでいいや。
 C-xC-tなんてのもあることを知ったことだし(transpose-lines)。

 で、結局、other-windowだけ有効にすることにした。

Footnotes:

1

るびきち「日刊Emacs」ではC-tにother-windowを割り当てる方法を推奨しているけれど、C-tの連打より、oの連打の方が気持ち的に楽だ、ぼくは。

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で開くようになった。

2016年7月29日金曜日

Tips

 時々、Emacsを検索語にくわえて適当にググってあちらこちらのサイトを見ていると、目からウロコが落ちる。もうちょっと使い易くならないかな、と薄々思っているようなことのTipsにあったりして。
 最近だとediffがそうだし、古くはtruncate-linesとか。
 今回はこれ。dired

;; diredを2つのウィンドウで開いている時に、デフォルトの移動orコピー先をもう一方のdiredで開いているディレクトリにする
(setq dired-dwim-target t)
;; ディレクトリを再帰的にコピーする
(setq dired-recursive-copies 'always)
;; diredバッファでC-sした時にファイル名だけにマッチするように
(setq dired-isearch-filenames t)

 早速、init.elにコピーだ。再帰コピーの指定はコメントアウトしたけれど。

2016年7月28日木曜日

winner-mode

 左にhowmの一覧を表示して、右側でその中身をいじっていて——ふとほかのものを見ると、右側のバッファが切り替わってしまう。まぁ、通常の動作なのだが、元のバッファを表示しなおすのにいつもこまってしまう。
 ファイル名が年月日+時刻だからどれもそっくりなのだ。helmのswitch bufferも形無しだ。どうしたらいいんだろう、といつも思っていたら解決する手段がすでにあることを知った。
 winner-modeである。
 しかも標準だ。
 Windowの構成をundoしてくれる。「global minor mode」なんて存在、はじめて知った。デフォルトのキーバインドはC-c <left>とC-c <right>。
 Emacsに矢印キーは不要だぜ、と思っていたのだけど、最近はOrg-modeでも使用することもあってすっかりお世話になっている。

2016年7月27日水曜日

scroll-all-mode

 できるということは知っていたのだけれど、どうすれば、いいか、わからなかった。昔、Infoでちらりと見ただけなのだ——夢だったのかもしれない。どういうわけか、最新のInfoにその記述をで見つけ切れないのだ。
 左右に二分割したバッファを同期してスクロールする方法があったはずなんだがなぁ。どうやるんだっけなぁ。helmでscrollで検索したらあっさりそれらしいものを見つけた。これか?

scroll-lock-mode

 外れだった。正解は「scroll-all-mode」。

2016年7月26日火曜日

poor-grep

 Emacs for Windowsではgrepが使えないので、とりあえずpoor-grepをでっち上げた。

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

2016年7月25日月曜日

同一フレーム内にediffのコントロールバッファを表示

 たぶんあるんじゃね、と思って探していたのだけど、見つけられなかった。何度もググってもだめで、speedbarのようにできないのかな、とあきらめていたところ——偶然、判明した。->「来年も使いたいelispランキング2013
 同一フレーム内にediffのコントロールバッファをだす方法である。
 ediffは超絶便利なのだけれど、コントロールバッファが別フレームにでるのがデフォルトなのだ。フルスクリーンで使っているとこまってしかたがなかった。しかもdiff対象のバッファが上下二分割されてしまうし。これは左右分割にしたい。howmのときのように
 とういうわけで上記、サイトより設定をinitにコピー。

;; コントロール用のバッファを同一フレーム内に表示
(setq ediff-window-setup-function 'ediff-setup-windows-plain)
;; diffのバッファを上下ではなく左右に並べる
(setq ediff-split-window-function 'split-window-horizontally)

2016年7月24日日曜日

WindowsのEmacsからエクセルのファイルはエクセルで開くようにしたいんだよ

 たとえば、Macだと下記のようなコードをinit.elに放りこんでおくと、dired-modeでWで、指定したファイルをopenコマンドで呼び出してくれる。これはファインダーでダブルクリックしたときと同じ動きをしてくれるもので——pdfファイルだったらpdfビュアーで開いてくれる。これでエクセルのようなEmacsで開いてもしかたがないようなファイルを対応したアプリケーションで開くことができるようになる。

(require 'deferred)

;; diredで外部プロセス起動
(add-hook 'dired-mode-hook
   (lambda ()
     (define-key dired-mode-map
       "W" 'dired-open)))

(defun dired-open ()
  (interactive)
    (deferred:process "open" (dired-get-filename)))

 元々、このコードはMeadowがらみで知った1。Meadowにはfiberという、Macのopenコマンドに相当するものが同梱されていたのだ。そのMeadowも今はメンテされていない。
 Windowsで動くEmacsはいくつか、あるのだけれど、さすがにfiberはなくてかわりにstartコマンドがある。でもこいつを呼び出すにはどうしたらいいのかなぁ、なんかstartコマンドが見つからないんですけど、と思っていたら内部コマンドだということを知った。そうか。2
 ところがEmacsのパス構文がちがうため、フルパスでstartコマンドを渡すとうまく動作しない。前記のサイト2でもディレクトリの部分をのぞいたファイル名だけにしていた。MeadowはWindowsのパス構文の変換ができた。もしかしたらEmacsに取り込まれているんじゃないか、とelispを漁って、見つけた。

 w32-convert-standard-filename

 で、前記サイトのコードを元にこうした。

(defun my-x-open (file)
  "open file."
  (interactive "FOpen File: ")
  (message "Opening %s..." file)
  (call-process "cmd.exe" nil 0 nil "/c" "start" "" (w32-convert-standard-filename file))
  (message "Opening %s...done" file))

 これを使ってbookmarkの一覧バッファや、orgのハイパーリンクから外部コマンドで立ち上げることができるようになる。良きことかな。

追記:2016年7月31日(日)
cmd.exeをcall-processなどしなくてw32-shell-executeで呼び出せることが判明……。

Footnotes:

1

もちろんもうすこしちがうコードだった。当時はdeferredとか、なかったし。

2

サイトはググっても見つからなくなってしまった……。

2016年7月23日土曜日

Emacs for Windows

 事情があってWindows上でEmacsを使うことになった。
 かつてはMeadowというすぐれものがあったのだけれど、Emacs本体に取り込まれてしまったのか、現在はメンテされていない。四月ぐらいにはWindows上でgnupackのEmacsを使っていてまぁ、それでいいか、と思ってさっそくインストールした。これだと、CygnusというWindows上で動くUnix環境もついてくる。なのでいろんなコマンドが使えて便利だ——grepとか、findとか。
 ところがCygnus上で動作しているためか、動きはもっさりしているし、やたらとvforkエラーがでる1。四月のころはそんなにエラーにならなかったような記憶があるのだけれど(それでもエラーはでた)。32bit環境で動作しているせいかもしれない。なんとなく、Windows3.0のころのMS-DOSを思い出した。
 それくらいエラーが頻発する。

 こりゃ、たまらんというわけでNTEmacs64を入れることにした。
 IMEパッチはいらないので(どうせSKKを使う)、emacs-24.5.zipだ。
 動作はgnupackより機敏。vforkエラーもいまのところでていない。ただ問題はUnixコマンドが全然、使えないことで、たとえば、圧縮されたファイルを開けない。おかげで同梱されているelispが圧縮されていて往生した。外部コマンドに依存している機能は基本的にはだめだろうが、まぁ、vforkエラーの不快さよりはましだ。
 一番、使いそうなgrepはeshellのpoor grep2, 3で代用できるだろうし。

Footnotes:

1

diredだけでvforkエラーになる。くり返せば、いずれいくのだが、はっきりいってうざい。

2

ただし、popwinを使っていると画面がむちゃくちゃになるのでオフにしていた方がいいかも。

3

実はpoor grepだと文字コードが混在してもgrepが効くので(たぶん)逆にCygnusのgrepよりもよかったりする。遅いけどね。

2016年7月20日水曜日

バッチ処理

 たとえば、Emacsだと、batchモードというものがあって画面を表示できないような状況でも処理を実行できる。つまりログインしてなくてもcronの時間起動で動かすことができるというわけ。ところがほかの画面を持つアプリケーションだとそうはいかない。
 画面表示でエラーになってしまう。
 これがちょいとばかり問題で、というのも時間起動で勝手に動かしておきたいのに、わざわざログインして手作業で動かさなくていけない——そのまま、放ったらかしにしておけば、いいのだが、不用心だし、猫がキーボードの上にのったりしたらおかしくなってしまう。でも画面を表示しなければ、だめなわけだからどうしようもないよなぁ、と思っていたら——。
 Xvfbというものの存在を知った。
 仮想的にXサーバを立ち上げてくれるソフトで極端な話、ノンディスプレイのハード構成でも画面を表示するアプリケーションを動かすことができる。つまりアプリの画面が仮想的なXサーバに表示されるわけだ。見えないけど。でもアプリは動く。もし表示されている内容を確認したいのなら画面ダンプをとれば、いい。

import  -display :1 -window root test.jpg

 あとは時間がきたらCtrl+qのキーボードイベントをその画面にたいして発行して終了させれば、いい——それにはxautomationが使える。1

xte -x :1 "keydown Control_L"
xte -x :1 "key q"

 これでもしかしたらFireFox2を動かして特定のhtmlをPDF出力なんてできるんじゃないか、自動で。

Footnotes:

1

:1はXvfbで立ち上げたディスプレイID

2

FreeBSDのFireFoxではPDF出力ができる

2016年7月16日土曜日

remount

 また、やってしまった。
 ひさしぶりにThinkPadのFreeBSDの/etc/fstabをいじって——bootできなくしてしまった。shellに落ちる。ところが、/etc/fstabを元にもどそうと思ってもディスクがread-onlyでmountされているので、/etc/fstabを修正することができない。
 頭を抱えこむ。
 今までにも何度も似たようなことをやっていて、そのたびに、ディスクを筐体の中から取り出してほかのマシンにつないで事なきを得ていたのだが——。また、同じことをやらなければ、ならないのか、とちょっと自分に嫌になってしまった。しかもすぐにUFSでマウントできるようなマシンがない……。
 まいったな。
 ふと気づく。もしかしたら何か手があるんじゃないか。
 グーグル先生におうかがいをたててread-onlyのディスクをremountして書きこみ可能にできるらしいことを知る。

mount -o remount ,rw /

 ところがこれでうまくいかなかった。optionにremountなんてない、といわれる。たしかにグーグル先生が教えてくれたのはLinux環境のものだった。同じだろうと思ったのだが、たしかに「man mount」で調べてみても「remount」なんてoptionはない。
 ——FreeBSDではできないのか……。
 半分、絶望して検索ワードにFreeBSDを追加してようやく正解が判明。

mount -o rw /

 だった。

2016年7月1日金曜日

地下沢中也「預言者ピッピ」

 地下沢中也「預言者ピッピ」(1)
 地下沢中也「預言者ピッピ」(2)

 購入しようと思ってAmazonへ行ってみると、Kindle版しかなかった。1
 しかたなく、Kindle版を買ったのだけれど、あまりにもおもしろくて夜中にあわてて2巻も買ってしまった。そうでなかったら何日間か、やきもきしていただろう。ところが——。
 ところがである。
 3巻はまだ、でてない。
 なのでさらにやきもきしている。ああ、どうなるんだろう、この話……。

Footnotes:

1

今は紙の本も入荷しているようだ。

2016年6月30日木曜日

尿路結石

 6月26日、日曜日の起き抜けの排尿でやっと石がでた。
 先週の月曜(6月20日)から七転八倒していたのである。あまりの痛みに病院へ行ったけれど、当然、処置のしようはなく——CTで結石の大きさは2mmほどとのことだった——、痛みがなくなっては、ぶり返しての繰り返しだった。人生三度目で——認識しているかぎり——、今回が一番、きつかった。最初のときは小指大の石がでたけど、痛みはなかったんだけどなぁ。

2016年6月29日水曜日

ブックホルダ


FlipKlip ミッドナイトブルー(フリップクリップ・ブックホルダ)

 このところ、最相葉月「星新一 一〇〇一話をつくった人」とか、グレアム・アリソン/フィリップ・ゼリコウ「決定の本質 キューバ・ミサイル危機の分析 第2版」とかの厚めの本を読んでいたせいで、指先が痛くなってしまった。書見台を買うかな、とAmazonを見ていたらブックホルダというのを見つけた。

 上下の使い方が逆だけど(日本語の縦書きだと下の方がスペースがあるから)今のところ、なんともいえないところ。まぁ、文庫本にはさすがに不要かなぁ。

2016年6月27日月曜日

最相葉月「星新一 一〇〇一話をつくった人」

 最相葉月「星新一 一〇〇一話をつくった人」

 奥付を見ると、2008年1月25日になっているからちょうどそのころに購入したはずだ。買ってすぐにざっくりと流し読んだ。そのこともあって読んだような気になっていたけれど、いつか、ちゃんと読み直そう読み直そうとは思っていた。
 そうしているうちに文庫になってしまって読む気力が失せてしまった。
 ようやく腰を据えての読了である。

 山田風太郎と佐野洋のエピソードのこと、どこで知ったんだろうと思っていたらここからだった。

2016年6月20日月曜日

GPSロガー for iOS(ZweiteGPS)、およびLispにちょっと感動した話

 EveryTrailの代替で使用していたSportsTrackerが有料会員にならなければ、iPhoneのGPSログを引っ張り出せなくなってしまった。そもそもデータをクラウドへアップできなくなってしまったのである。EveryTrailのサービスが閉鎖されたときに多少、予想はしていたのだけれど——やはり無料アプリだけではやっていけないのか。

 ところがぼくには有料サービスを使ったら敗けみたいな感覚があって——有料アプリはいくつか、使っているけれど——、そんなに高額なわけではないのだけれど、無料アプリは適当なものが見当たらない。一番、良いのはiPhoneから直接、GPSのデータが吸い出せるようなアプリだ。
 それならそのアプリのサービスがなくなっても使いつづけることができる。クラウドに依存すると、そのクラウドがなくなってしまうとにっちもさっちもいかなくなってしまうんだよなぁ。
 そうこうしているうちに、「ZweiteGPS」というアプリを見つけた。
 iPhoneから直接、MacBookAirに吸い出せる。
 ただしデータの形式はjsonだった。
 ——ふむ。
 Emacsでjsonがらみのライブラリってあったっけ、と探してみると、あることが判明した。それで俄然、つかう気になった。要はjsonからGPX形式に変換してやれば、いい。
 ただ、json.elはjsonをlistに変換してくれるが、listからjsonへもどすようなものは用意されていない。これはxmlからlistへ変換してくれる「libxml-parse-xml-region」はあるけれど、逆変換はないことと同じことだった。
 なぜ、ないのだろう……。
 普通、双方向じゃないの、と思っていたのだけれど、変換するためのelispを書こうとしていろいろ、考えていたら突然、目から鱗が落ちた。
 驚いたのはelispでプログラミングしているのに、XML(GPX)ができあがってしまうというか、XMLを書くようにして、elispのloopやifの構造が使えてしまうというか——なるほどなぁ。逆変換の関数なんか、用意する必要がないわけだ。
 そういえば。

竹内氏によると、Lispはすべての言語の原点なのだという。「いまRubyがブームだが、Rubyは要するにカッコのないLisp。XMLもぶ厚いカッコのあるLisp。いろいろなプログラミング技法を見ますが、『Lispにあった』ということが多いです」(竹内氏)

Lispの仏さま 竹内郁雄の目力

 Paul Grahamも似たようなことをいっていたけど、その一端をようやく垣間見れたような気がする。

2016年6月10日金曜日

BUFFALO 11n対応 11g/b 無線LAN子機 親機-子機デュアルモード対応モデル WLI-UC-GNM2

 BUFFALO WLI-UC-GNが壊れてからずっとThinkPad1はダンボール箱にいれてTimeCupsleに有線接続して使っていたのだけれど、やはり表にだすことにした。いくつか理由はあって電源が切れてしまうと、箱を開けなくてはいけないし、ssh経由ではなく、直に操作したいこともある。2
 というわけで、「BUFFALO 11n対応 11g/b 無線LAN子機 親機-子機デュアルモード対応モデル WLI-UC-GNM2」を購入した。もちろん設定は今までどおりで充分。到着した日にUSBに挿入したらちゃんと動いた。良きことかな。

Footnotes:

1

というか、まだThinkPad X60を使っているのか、という話だ。

2

外部ディスクをつけたり、はずしたりしたい、とか。

2016年6月8日水曜日

2016年6月6日(月):本栖湖FUNビーチ:晴れのち曇り

Sail:CORE 5.7(NEIL PRYDE) Board:NG ACP 260 Fin:9.5inch

時刻 帆走時間 帆走距離 最高速 平均時速
13:11-13:37 26分 4.5km 42.77km/h 10.14km/h
13:44-14:20 36分 5.5km 39.04km/h 9.10km/h
14:41-15:02 20分 3.9km 43.09km/h 11.42km/h
15:06-15:30 23分 4.5km 38.93km/h 11.37km/h
17:04-17:14 10分 1.0km 14.94km/h 5.88km/h

total 117分 19.4km 9.9km/h

 経験則によると、筋肉痛がかるく残るていどの中二日がいい。
 毎日だと疲労が溜まるばかりだし、三日目だと、筋肉がゆるみはじめる。
 というわけで前回から中二日で本栖湖へ行くつもりだった。予想天気図ではぎりぎりなんとか、なるというところ。ところが朝、起きてみると、陽射しはなく、薄曇りの天気だった。Yahooの天気予報でも関東甲信越地方は今日、梅雨入りだという。
 本栖湖ははずれかも。
 そう思いつつ、たどりついた本栖湖はいつもの晴れた青い湖面に白波がたっていた。いましがた吹き出した感じだった。ラッキー。前回が薄曇りで寒かったせいもあって喜びもひとしおだ。
 他の車のうしろに車を停めると、その車のオーナーは魂さんのようだった。確信はなかったけれど。セイルをセッティングしていると、その人がおそるおそる話しかけてきた。
「あのぉ……」
 やはり魂さんだった。一年に一度ぐらい本栖湖でしか、顔を合わせないので互いに確信がなかった。ただ個人的には月曜なので魂さんがきているかも、とは思っていた。

 本日はマスト用のアタッチメントも用意してある。
 ただ、ベースは前バージョンのOptrixよりも首の可動角度が悪い。うまく撮れるかわからない。それでもためしてみたが。ただ、いつもとちがう、Optrix純正のアプリをつかっていたこともあって——スイッチがオンにならないこともたびたび1
 撮れた動画を確認して位置と、角度を調節して出艇した。
 フルプレーニングした瞬間、異音がしてマストからiPhoneが消えた。
 ——また、やっちまった!
 あわてて後方を見る。沈んでいくiPhoneの姿は確認できなかった。一瞬で沈んでしまったはずだ。ほんとうにマストからはずれているのなら。リグコードはつけてあるからそんなことはないはずなのだが……。
 どこにもiPhoneの姿はない……あ、あった。セイルの陰にぶら下がっていた。あわててその場で沈してぶらぶらしている状態をなんとか、しようと思ったが、アタッチメント自体がダブルクリップからはずれてしまっていた。結束バンドが切れてしまったのだ。
 あらためて固定することは不可能だった。
 そこでリグコードからiPhoneをはずしてセミドライの内側にいれる。このときに落としたら最後のお別れになる。水面下にセイルをはわしてその上で作業。
 無事に岸までもどることはできたが、はずれる瞬間の動画は撮影されてなかった——。

 また、結束バンドでダブルクリップに取り付けてもいいのだが、結果は同じになることは目に見えていた。結束バンドがダブルクリップの縁に擦れて切れてしまっているのだろうから。やはりヘルメットにつけるしか、ないか。
 そうしているうちに本栖湖が変調してしまった。空に雲がかかり、薄曇りになってしまう。風も冷たくなる。前回よりはましだが、似た状態だった。
 次に出艇したとき(14:41-15:02)、沖合いの方がコンスタントに風がはいっているように見えたので、意を決してラインをのばす。プレートの合わせ目のような風向きがかわるところを抜けて「山の裏側2」にはいる。さすがにドラゴンまでブローはつづいていなかったので、そのあたりで二往復ほど——地図で見ると、どうやら静岡と山梨の県境を往復していたらしい。

 時折、雲のあいまから太陽がのぞいたけれど、基本的に薄曇りのまま。
 風の状態はあまりよくなく、あとは五時から「ボーナスタイム3」に賭けるしかないか、と食事をしたり、アタッチメントをふたたび、ダブルクリップに固定してみたり工夫していた。

 湖面の風はあるような、ないような感じで、魂さんたちはプレーニングして行き来していたけれど、「ボーナスタイム」はもっと風が入るはず——と思っているうちに今日は不発だということが判明した。4あわてて出艇したときには時すでに遅く一往復で終了してしまい、フルプレーニングできなかった。
 ——ああっ。

 いやはや、それにしても魂さんの動画を見ると、ひとり異様な姿だな、おれ……道具的に。

Footnotes:

1

どうやら水につけると、タッチしているとアプリが誤判断してしまい、オフになっているようにも思える。

2

個人的にそう呼んでいる。

3

個人的にそう呼んでいる。

4

気温が下がってきていたのでインナーを着込んでいたこともある。