2016年7月3日日曜日

Emacs カッコの自動挿入で困っている方へ

閉じカッコの自動挿入は便利なのに・・・

Emacs では、カッコを書く時に自動的に閉じカッコを挿入してくれる設定があります。(リンク:Emacs 閉じカッコの自動挿入)

開きカッコ "(" を書くと自動で閉じカッコ ")" を書いてくれて、更にカーソルはカッコの中にあるのですぐに中身を書き始められます。

自動挿入でなかった時には、カーソルを行ったり来たりさせていたのがなくなってスムーズに書けるようになり、絶対に外せない機能です。


これは、何もないところにカッコを書き始める場合は非常に便利な機能です。

でも、すでに中身が書いてある所でそれをカッコでくくろうとすると、とたんに煩わしい機能になります。

カッコでくくりたい部分の先頭にカーソルを持ってきてカッコを書くとこんな風になります。

 y = ()a + b * c          // y = (a + b) * c と書きたいのに・・・


"M-(" で解決

これを解決するのが、リージョンを選択して M-( です。

上の場合だと、a + b の部分を選択して、M-( すると (a + b) になります。

直観的で非常に良いアイデアだと思います。

でも、惜しむらくは、()カッコにしか対応していないところです。

ダブルクォーテーションに対応した、M-" はないのか・・・。



別のアプローチ

方針は違うのですが、こんな対策を考えてみました。

「() カッコを書くとカーソルを () の中に持ってきてくれる。」

() カッコは自分で書きます。実は、閉じカッコを書くのが面倒くさいのではなくてカーソルをカッコの中に戻すのが面倒なのではないかという発想です。

よろしければ使ってみてください。 () と {} と [] と <> と "" と '' に対応しています。

https://github.com/tbhby39g/backalittle.el


インストールするには、backalittle.el を load-path のフォルダ(例えば、~/.emacs.d/lisp/)に置いて、.emacs(または、init.el) に (require 'backalittle) を書き加えれば OK です。

これを使う場合は、electric-pair-mode (or その他のカッコ自動挿入機能)は無効にしておいてください。


リンク: Emacs 閉じカッコの自動挿入
リンク: https://github.com/tbhby39g/backalittle.el

2015年6月26日金曜日

Project Euler 始めました。

Ruby 勉強中です。

最近話題になった「1時間以内にこの問題を解けなきゃソフトウェアエンジニアじゃない、5つの問題」を勉強がてら Ruby でチャレンジして、それ以来、いろいろな問題を解くのがマイブームになっています。

そんな中、ポッドキャストの「CodeLunch.fm」を聞いていて、"Project Euler" という数学問題サイトを知りました。


Project Euler では、2015. 6. 25 現在、521問が出題されています。

最新の 521問目は数日前の 6/21出題です。第1問は2001年なので14年も続いている長寿サイトです。

丁寧なサイトで、問題を説いてサブミットし正解なら解説の PDF がダウンロードできたり、その問題のフォーラムがのぞけるようになります。

それから、問題を解いていくと賞がもらえて、僕は "Baby Steps" をもらいました。

現在、約50万人が登録していて、でも続けているのは少数のようで、123問まで解いている人が全体の1%です。ひとまず、1%以内に入るのが目標。

問題によっては、一見すると時間がかかりそうで、スクリプト言語ではなくてもっと速い言語にしようか、と思うものもあります。でも、頭のひねりが足りないだけで、ちゃんとしたアルゴリズムなら1分以内に解けるようにできているそうです。

いい頭の体操になります。

脳内の休眠中だったいろんな部分が活性化されている気がして、結構、燃えます。


リンク


2015年2月21日土曜日

Windows でもEmacs 魂は健在です

Emacs を使うのが楽しくなってくると、それに比例して Windows を使うのがつまらなくなってくる。

そんな気持ちを和らげてくれるのが「 keyhac 」というキー操作をカスタマイズできるソフトと Emacs 用の設定です。

作者の方、ありがとうございます。便利に使わせて頂いています。

Windows へのインストールと Emacs 用の設定は「Windows 7や8(64bit)で emacs キーバインドにする方法」を参考にしました。


keyhac を使ってみると

エディタだけではなくて、エクスプローラでファイルをコピー&ペーストするときにも M-w, C-y となって、思った以上に Emacs 化されてワクワクします。

もちろん IDE も Emacs のキーバインドになるので、IDE に元々付いている微妙な Emacs モードを使う必要はありません。

アプリケーションによっては、Emacs のキーバインドにしたくない場合もあると思います。

僕の場合は、ペイントをよく使うのですが、ペイントでは C-n は下へ移動ではなくて、標準の「新規ファイル」としておきたい。

こういう時は、設定ファイルの指定の場所に適用したくないアプリケーションの実行ファイル名を "mspaint.exe" のように書くだけでOKです。(場所は設定ファイルを見ればすぐに分かります。)


C-@ でマークする方に朗報です。

僕は、Emacs ではマークを C-@ で行っています。

上記の設定では、C-@ は英語キーボードではうまくいかないとのことでコメントアウトされています。

 ## 英語キーボードを利用する場合、LC-2 の設定(数引数の指定で利用)が LC-Atmark の設定で上書きされるのでコメント化
 #keymap_emacs["LC-Atmark"]     = reset_search(reset_counter(set_mark_command))

僕が使っているのは日本語キーボードなので、コメントアウトを外してみたのですが、うまく設定されませんでした。

以下の設定を追加すると、C-@ でマークできるようになりました。

keymap_emacs["LC-(192)"]     = reset_search(reset_counter(set_mark_command))

まとめ

keyhac を使うと Windows の操作が何でも Emacs 風になります。

人の心理とは面白いもので、たったこれだけのことで Windows を使うのが楽しくなり、仕事が楽しくなります。


リンク


2015年2月8日日曜日

Emacs "FooFooFoo" をプログラミングする

Software Design の1月号の記事で、「編集はプログラミングである 」というコラムがありました。(リンク:Vim に乗り換え!?

Vim では 「FooFooFoo」と書くには、3iFoo Esc とタイプすれば良いようです。

結果として FooFooFoo と得るために、行うのは 3iFoo Esc という入力である。「これはプログラムである」と考える。

FooFooFoo

FooFooFoo とそのままタイプするのは DRY の原則に反しており、プログラマとしては避けたい(?)

Emacs で FooFooFoo をプログラミングするにはどうするか? 次のような案はどうか?


1. "Foo M-del C-y C-y C-y"

【 説明 】

Foo とタイプしてそれを切り取って3回貼り付ける。

7ストロークのタイプになり、FooFooFooとタイプするより(9ストローク)も2ストローク少なくなる。(速いかどうかはともかく)

しかし、最後のC-y C-y C-y は同じことを3回やっていて依然としてDRY違反で、モヤモヤ感は残る。


M-3 C-y というようなイメージで貼付けを3回するようプログラミングしたい。

(M-数字 は次のコマンドや入力を数字回繰り返すコマンド)

しかし M-3 はこの場合は C-y に適用できない。


2. "C-x ( Foo C-x ) M-2 C-x e"

【 説明 】

C-x ( と C-x ) はマクロの定義。最後のC-x e がマクロの実行。

C-x ( と C-x ) の間の Foo という入力がマクロとして定義され、マクロの実行をM-2 で2回繰り返す。(定義した時に1回、Fooを入力しているのであと2回繰り返して計3つのFooが入力されたことになる。)

Fooという関数を切り出して、ループで2回実行しているようなイメージ。プログラミングをしているような感じがする。


マクロはショートカットがあるので、実はもっと簡単になる。

C-x ( は F3 キーに割り当てられていて、C-x ) はF4 キーに割り当てられている。

さらに、C-x )は繰り返しのコマンド "M-数字" が適用できて、この場合にはマクロを定義して即座に数字(-1)回分実行する。

まとめると以下の "プログラム" になる。

"F3 Foo M-3 F4" (6ストローク!!)


3. まとめ

あまり実用的ではない編集方法でした。

以下を覚えておくと、この駄文を最後まで読んだ意義があるかもしれません。

 1. M-del で後ろ向きに1単語 kill する。

 2. M-数字 コマンド でコマンドを "数字" 回繰り返す。

 3. マクロの定義、実行は意外と簡単(やってみるべき!)。定義にはショートカット(F3, F4)もある。


リンク

・Emacs manual - Keyboard Macros 17.1 Basic use

・Vim に乗り換え!?




2015年2月1日日曜日

Vim に乗り換え!?

Software Design の2015年1月号は Vim の特集でした。

Emacs を使っているので、普段は Vim の記事は読まないのですが、Vim を IDE のように使うという記事に惹かれてちょっと読み始めました。

Emacs を使っていても、もう少し IDE 的にしたいと感じていたので妙に熱心に読んでしまい、気がついたら Vim をインストールしてチュートリアルをやっていました。


もう Vim への乗り換えを決意して、チュートリアルも終わった後で、ふと1文字削除しようとして我に返りました。

1文字削除するには、「編集モードに移行して x キーを押す」なのか?

これは打ち間違えた時のコストが高すぎる!

・・・何でもコマンドですると思い込んでいて Backspace で消せることには思いが至りませんでした。

とにかく、勘違いにせよ冷静になれました。

Emacs も何でもできるので IDE 的にしたければ Emacs でやればいいだけでした。

一瞬だけの Vim 乗り換えでしたが、IDE 的に拡張したいポイントを考えるいいきっかけになりました。


***

特集のコラムで Vim の編集作業はプログラミングであると言っていました。

「3iFoo Esc」と "プログラム" すると「FooFooFoo」という結果が得られるという例が挙げられていました。

モードを切り替えて入力したり編集したりすると考えるのではなく、編集作業全体(3iFoo Esc)がプログラムで、結果としてある文字が入力されている、という考え方です。

面白い考え方と思いました。

Emacs は編集モードはありませんが、様々な編集のショートカットがあるので考え方は通ずるところがあると思います。


今、Emacs を使っていて編集機能を使いこなせているとは言いがたいので、もう少しチャレンジしてみようと思いました。

普段は読まない Vim 記事ですが、いい刺激が得られました。


Software Design (ソフトウェア デザイン) 2015年 01月号 [雑誌]



2015年1月18日日曜日

2015年の手帳

昨年に続き今年もフランクリン・プランナーの手帳にしました。

中身は特に変わりはないようですが、「段差をなくし、180度開いて使いやすく改良しました。」とメーカーが書いている通り、明らかに開きやすく改良されています。

あと、カバーにペン差しがついたのがありがたい。


と思っていたのですが、僕の3色ボールペンはサイズがペン差しにギリギリで入れにくいので使うのをやめました。

もう一つ不満を言うと、手帳のカバーにはポケットがあって、一週間の目標を書く短冊状のカードを入れるようになっているのですが、これが浅すぎて落ちそうで不安です。


以前に使っていたほぼ日手帳はつくづく良くできた作りだったと思います。

ペン差しにペンを差すと手帳が開かないように閉じられるのは本当に良い。


***

フランクリン・プランナーはカバーには不満なのですが、中身は自分には合っていて、とにかくやる気にさせてくれるので、今は手放せないです。

たぶん、「7つの習慣」を実践するように導いてくれたり、思い出させてくれるからだと思う。


***

実はこの手帳、カバー無しの中身だけでも入手できます。

この記事を書きながら気づいたのですが、中身をフランクリン・プランナーにして、カバーはほぼ日にすれば、これは僕にとって完全にベストな手帳です。

ただ、サイズが今年買ったB6サイズに合うものが、ほぼ日にはありません。A5サイズなら両方そろいます!

来年はこれだ! 来年が待ち遠しい!


リンク:フランクリン・プランナー オーガナイザー〈2015.4〉

リンク:手帳で気分転換(フランクリン・プランナー)

リンク:Amazon ダイアリー・綴じ手帳



2014年7月20日日曜日

⌘+クリックで1秒短縮(新しいタブで開く)

Chrome でリンク先を「新しいタブで開く」時は、⌘+クリック。

知らなかったので、久々の大物ライフハック。


今までは、

  1. リンクを2本指タップ、
  2. コンテキストメニューから「新しいタブで開く」を選択。

でも、2本指でタップしたつもりが1本指になっていてリンク先に移動してしまう、なんて事故も時々。


1秒くらいの時間短縮になるかな。

Safari でも同じ機能でした。FireFox でも同じでした。

Linux や Windows では、⌘でなくて Ctrl キーです。

実は業界標準ですか?


2014年5月10日土曜日

iTerm2 カーソル位置の見つけ方

iTerm2 で「 ⌘ + / 」とタイプするとカーソル位置が見つかります。

エディタを使っている時や、tmux で画面分割している時などは、目を動かして探しまわるよりもこの方が一瞬早く見つけられるかも。

画面の移動をしようと思って( ⌘ + ])間違えてタイプして発見しました。
(我ながら、ちょっとあり得ないミスタイプですが。)

***

もしかして Mac のデフォルトの機能なのかと思って、Evernote 上でも試してみました。
ノートが共有されました。
むやみに試さないほうがいいです。

***

iTerm2 のメニューの View の中に 「 Find Cursor 」というのがあるのに後で気づきました。






2014年5月6日火曜日

iTerm2 画面分割状態で起動

iTerm2 では画面分割とかタブを利用して、ターミナルを自分用の使いやすい配置にできます。

でも、立ち上げるたびに毎回分割するのはちょっと面倒。

iTerm2 を使って暫く経つのですが、いまさらながら「 保存しておいた分割を起動時に再現できる 」方法を知ったので紹介します。


【手順】

  1. 希望の分割、タブ追加等を行います。
  2. 現在の状態を保存します。
    これは、メニューの「 Window 」→「 Save Window Arrangement 」を選んで適当な名前をつけるとできます。
  3. メニューの「 iTerm 」→「 Preferences... 」→「 General 」→ Startup項の「 Open default window arrangement 」にチェックを入れる。これで起動時にデフォルトの配置になります。
  4. 続いて、Preferences 画面の「 Arrangements 」で先ほど、手順2で保存した設定を選択し 「Set Default」ボタンを押してデフォルトにします。

これで次に iTerm を立ち上げた時に保存した分割、タブ状態で起動します。

<リンク> iTerm2 Documentation


2014年4月17日木曜日

Google 翻訳良いと思います。

Google 翻訳良いです。

Google 翻訳

機械翻訳は面白い訳をするだけで役に立たないとずっと思っていました。

必要に迫られて使ってみると意外とまともで、ちょっとびっくりしています。


英訳をしたかったのですが、タブを2つ開いてひとつは日本語→英語、もうひとつは英語→日本語として使いました。

日本語を英訳して、結果をまた日本語訳して正しく英訳できているのか確認。 英語をちょっと変更してから、また日本語訳して確認。

こうやって、ちょっとずつ英語の精度を高めていこうという作戦です。

でも結局、自分の知識は超えられないので、候補はいくつかできるのですが本当の正解は分からない・・・。
自然な英語なのかどうかがいつまでたっても心配です。

機械翻訳がダメという思いがまだどこかにあるのでこんなことをやってしまうんですが、もう信じてみてもいいのかもしれません。


ウィキペディアによると、よく使われている翻訳エンジンとは別の、独自のエンジンで統計的機械翻訳というのを使っているとのことです。

元々、言語学の分野のものを統計学の分野に引っ張ってきて、エンジニアが介入できる余地が大きくなって、翻訳精度が上がったんだろうか、と勝手に想像。

Google 翻訳は良いと思います。


2014年3月31日月曜日

Mac に nkf をインストールして乾杯

Mac で nkf コマンドを使おうと思ったら Mac にはデフォルトでは入っていないよう。

homebrew でも入れられるとのことなので、インストールする。

$ brew install nkf


インストールは一瞬で終わるのですが、homebrew ではインストールメッセージの最後にビールアイコンが表示される。
「おつかれさま!」の意味なんだろうか。
大した仕事はしてないのですが、乾杯することにします。

このビールアイコンを見ると、味気ないターミナルに表示されるためか、妙にテンションが上ります。
Mac で見たいときには下記コマンドで出てきます。

$ echo "\xf0\x9f\x8d\xba"


参考: homebrewでinstall後にビールアイコンが表示される件




2014年2月22日土曜日

Emacs 閉じカッコの自動挿入

Emacs で開きカッコを書くと自動で対応する閉じカッコを挿入するモードがありました。
Emacs 24 で導入された機能です。
機能を有効にするには、.emacs に以下のように書くだけ。

(electric-pair-mode 1)

リンク:Emacs: Insert Parenthesis/Brackets by Pair
リンク:The Emacs Editor の 26.4.3 Matching Parentheses


***

なんと、この対応は全角のカッコでもOKです。
「」とか【】でも機能します。

なんと、なんと、"" (ダブルクオート) にも対応しています。
("string") などと書く時にどういう順番でタイプするのが早いのかというのを、もう悩まなくても済みます。
( を書いて " を書くと、("") という状態になってカーソルがダブルクオートの間に来るので、後は string と書くだけ。

長年のモヤモヤが解決しました。


リンク:Emacs カッコの自動挿入で困っている方へ



2014年2月3日月曜日

「黒田如水」の予習

吉川英治の「黒田如水」を Kindle で読みました。
今年の大河ドラマは「軍師官兵衛」なので、予習をしようと思ってです。

Amazon でも Kindle の無料書籍の1位になっており、みんな同じようなことを考えているのではないでしょうか。

決して暗君ではないが、優柔不断な殿様、小寺政職。
自分を取り立ててくれたこの殿様のために、滅私の精神で奔走する官兵衛の姿が描かれていて面白かった。

***

最近、「7つの習慣」を読んで理想に近づこうという気持ちが盛り上がっていて、その為もあってか官兵衛の、純粋に自分の信じる理想を追求する姿に共感した。

しかし、7つの習慣を読んだせいか、官兵衛を「大きな仕事を本気でやり遂げていくビジネスマン」の姿に置き換えて読んでしまうという弊害もあった。

***

こんなにも主君のためと思っていても、政職に裏切られ、結果、敵将の荒木村重の元に数ヶ月間も幽閉されてしまう。

それでも助けだされた時には、「倍返しだ!」とはならない。
旧恩に報いるため、国を追われて落ちぶれた政職の家族を客分として迎えるというくだりは清々しい。

この本は残念ながらここで終わっていて、官兵衛の半生しか書かれていない。
大河ドラマの予習のためには、後半生を別の本で読まなければならない。


黒田如水

リンク

・「 7 つの習慣 」のひと言まとめ


2014年1月7日火曜日

「 7 つの習慣 」のひと言まとめ

今年から新しい手帳、フランクリン・プランナーを使い始めました。
この手帳はスティーブン・R・コヴィー著の「7つの習慣」がベースになっているとのことなので「7つの習慣」を読みました。


■1. 7つとは

  1. 主体性を発揮する
  2. 目的を持って始める
  3. 重要事項を優先する
  4. Win-Win を考える
  5. 理解してから理解される
  6. 相乗効果を発揮する
  7. 刃を研ぐ


■2. 7つの習慣のひと言まとめ

1. 主体性を発揮する

自分自身の行動は周りの状況からではなく、自分の価値観に基づいて決める。
反対語は「反応的」。
反応的な人は周りから大きな影響を受ける


2. 目的を持って始める

自分はどうなりたいのか、何をしたいのか、自分の行動の基礎となる価値観を明確にする。
(ミッション・ステートメントを書く)
そして、その価値観に基づいて行動する。


3. 重要事項を優先する

大事を小事の犠牲にしてはならない。
緊急度ではなく重要度に集中する。
なかなか手がつけられない、「緊急ではないが重要な事柄」を行うようにする。


4. Win-Win を考える

お互いに満足できる合意を打ち出すこと。
当初、それぞれの当事者が持っていた案ではなく全く新しい第三案の存在を信じる。


5. 理解してから理解される

まず相手を理解するように努め、その後で自分を理解してもらうようにする。
相手を本当に理解するためには自分のパラダイムというフィルターを通して話を聞くのではない。
感情移入して聞くようにする。


6. 相乗効果を発揮する

1 〜 5 の習慣により1プラス1が3あるいはそれ以上の結果となるようにする。


7. 刃を研ぐ

自分自身という最も大切な資源を維持する。
肉体的、精神的、知的、社会・情緒的側面のそれぞれを再新再生させること。
定期的に刃を研ぐ時間を取らなければならない。



■3. その他の重要キーワード

1. パラダイム

世界を見る見方。認識、理解、解釈を決めるもの。
本書では若い女性と老婆のだまし絵の例が取り上げられている。
同じ絵を見ていても、絵が若い女性に見える人もいれば老婆と見える人もいる。
つまり、物事を見た時に自分だけが正しいのではなく相手も正しい。
相手の見え方(パラダイム)を理解することが大事。


2. インサイド・アウト

自分自身の根本的なパラダイム、人格、動機などを変えることから始める。
相手や環境を正そうとするのではなく。


3. P / PC

目標達成(performance)と目標達成能力(performance capability)。
斧を使って目標を達成するだけでなく、定期的に刃を研いでその能力を維持あるいは向上させる。
つまり、目標達成能力を向上させる。


ひと言まとめで物足りない方はこちらもどうぞ。(フランクリン・プランナーの解説ページ)

リンク

・手帳で気分転換(フランクリン・プランナー)

完訳 7つの習慣 人格主義の回復

(※ 新しい翻訳が出ているようですが、僕は古い方を読みました。)




2013年12月19日木曜日

手帳で気分転換(フランクリン・プランナー)

来年の手帳はフランクリン・プランナー にしました。

これまで 5 年間は「ほぼ日手帳」を使っていて気に入ってはいるのですが、(手帳の良し悪しとは関係なく)漠然とした行き詰まり感を感じていて気分転換も兼ねて変えてみました。

1 日 1 ページの手帳です。

この手の手帳を持つ人はスケジュール管理以上の何かを手帳に求めていると思いますが、今回の手帳は目的が明確です。

「なりたい自分になって人生の目標を達成する」

使いこなせれば確かに成長して目標に近づけそうな内容です。

手帳を開くと 40 ページまで活用の仕方の説明があり、これを読んだだけでも前向きな考え方にさせられます。

新しい手帳を手にして、あとは来年が来るのを待つだけ・・・ではありません。
使い始めるにあたっては、まず「ミッション・ステートメント」を書き出します。これは人生の目的や自分がどうありたいかといったこと。

そして次に何を達成すればミッション・ステートメントが実現するのかといった具体的な目標を設定し、更にその目標を小さなステップに切り分けます。

・・・ここまでで、すでにお腹いっぱいです。

使い始めたら「一週間コンパス」で毎週目標を決め、日々のページでは QII Activities として「緊急ではないが重要」な項目をピックアップしておく。

・・・全くスキがないです。

ミッション・ステートメントを考える過程では、憧れの人から連想するように導かれますが、昔の上司や後輩を思い出して初心に帰った気分です。

しかし、1 月 1 日に使い始められるように準備が間に合うかな?


リンク

「 7 つの習慣 」のひと言まとめ

フランクリン・プランナー PVC 1日1P 2014年1月始まり B6綴じ手帳 デイリー (バーガンディ)


2013年12月6日金曜日

人生のやり残しを取り返せるか(ドラクエDL.無料です。)

ドラクエが iPhone で無料でできるということで(僕は iPod touch ですが)、先日より始めて、暇さえあれば経験値をためています。

昔、ファミコンでやった時は最後のボスを倒せずじまいでした。
なので、実はエンディングを見ていないのです。

エンディングを見ておらず、ドラクエはこれまでにやり残した感のある事の一つだったので、iPod touch でやっていると、人生をもう一度やり直すチャンスをもらった気分です。(大げさでなく本当に。)


ふと気づくと対時間効果が最大になるように(早く終えたい)考えていたりと、昔は、純粋にその瞬間を夢中になってやっていたのとは違った遊び方をしているのは面白い。
(それにしても今は、解き方をこんなに丁寧に教えてもらえるとは・・・。明日からは一気に進みそうです。)

・・・今ひとつ夢中になれないとは、やはり過ぎ去った時間は取り戻せないのか?




2013年11月29日金曜日

OS が変わると動作が変わるのが悩ましい(Chrome 拡張機能)

Chrome の拡張機能を書いています。

バックグラウンドで処理をする機能を書いていて、ブラウザを終了すると処理も終了して欲しいのですが、Windows ではブラウザが終了してもバックグラウンドの処理は動き続けています。

Mac では終了します。Linux でも終了します。


悩ましい。


ならば、ブラウザの終了を検知して明示的に処理を終了させれば良いのだ。
・・・しかし、ブラウザの終了タイミングを検知するそのものズバリのイベントはないようです。

ウインドウが閉じられたタイミングを知らせるイベントはあるので、

「最後のウインドウが閉じられた」 = 「ブラウザが終了した」

と考えてこんな風に書いてみた。

// "onRemoved" は Chrome の API で、ウインドウが閉じられた時に発生するイベント

chrome.windows.onRemoved.addListener(function (windowId) {  
    chrome.windows.getAll(function (windows) {  // 全てのウインドウを取得するメソッド
        if (windows.length === 0) {
            // ブラウザ終了時の処理
        }
    });
});

結果は・・・、

Windows ではうまく終了をとらえられました。
Mac ではブラウザの終了時には onRemoved イベントが発生しませんでした・・・。ガーン。
Linux ではうまくいきました。


悩ましい。


ブラウザはプラットフォームの違いを吸収してくれると楽観したくなるが、過信してはいけない。


(補足ですが、Mac では×ボタンでウインドウを閉じますが、この時は最後のウインドウを閉じた時でも onRemoved イベントは発生します。
しかし、×ボタンで閉じた時はウインドウは閉じられているのですがブラウザのプロセスは終了していません。
通常、ブラウザを終了させるときは、Command + q で終了させます。この時に onRemoved が発生しないのです。)






2013年10月8日火曜日

Doodle (Google ロゴ) を全部見る

Google の検索画面で、何も入力せずに "I'm Feeling Lucky" ボタンを押すと、これまでの Doodle の一覧画面が出た!

一日違いで見逃したときは、ここで見ればいいのか。



2013年10月4日金曜日

MacBookAir 購入後の設定メモ

この秋、新しい OS (OS X Mavericks) が登場という、まさにこの時に新しい MacBookAir(まだ古いOS) を買いました。 13 インチです。

これまで、メモリ不足で煩わしい思いをしてきたので、今回は奮発して 8G の最大容量までアップグレードしました。 勢い余って CPU もアップグレードしました。

購入後に、最初にやったことの自分用メモです。


  1. ユーザー ID

    ターミナルでユーザー ID をプロンプトに表示するのであまり長くしない。


  2. OS アップデート

    App Store ーアップデート


  3. Xcode

    次の Homebrew でのパッケージインストール時に必要になるのでインストールしておく。
    また、ライセンス認証をしておかないと、Homebrew でのパッケージインストール時に警告がでるので一度起動しておく。(警告が出てもインストール自体は問題ないようですが。)


  4. Homebrew

    以前は MacPorts を使用していて特に不便を感じていた訳ではないのですが、 Homebrew が良い良いと見かけるので Homebrew をインストールする。

    Homebrew のページのシンプルな説明のおかげか、すごく分かりやすい印象です。
    とにかくパッケージは /usr/local にインストールされると言うのが分かるだけでも安心。

    Mac に元々入っているアプリケーションのバージョン違いなどをインストールした場合、このままだと元々入っている方が呼ばれてしまうので、パスの順番を変更しておく。

    パスの順番を変更するには /etc/paths ファイルを編集して、/usr/local/bin を先頭にする。


  5. iTerm2

    ターミナルは iTerm2 を使っています。

    iTerm2 をインストール後、表示色をマイルドにする SOLERRIZED をダウンロードしてきて、色のプロファイル設定でインポートする。

    あと、Emacs で現在行をハイライトする設定にすると、その行の文字が読めなくなるので、同じく色のプロファイル設定で "Minimum contrast" の設定を少し high 寄りにする。


  6. Emacs

    今まで使っていた MacBookAir の .emacs と .emacs.d をコピーして持ってくる。

    メタキーを "Command" キーの位置にしたいので、システム環境設定のキーボード設定で Command と Option を入れ替える。
    また、iTerm2 でもメタキーが効くように、iTerm2 のキーのプロファイル設定で "Left option key acts as" を "+Esc" にする。


  7. Zsh

    Homebrew で zsh をインストールし、シェルを zsh に変更する。今まで使っていた MacBookAir の .zshrc をコピーして持ってくる。

    [ シェルの変更 ]

    1. /etc/shells/usr/local/bin/zsh を追加する。(←これが homebrew でインストールした zsh)
    2. chsh -s /usr/local/bin/zsh でシェル変更。


  8. Google 日本語入力

    変換候補の精度が圧倒的に良いので、Google 日本語入力 をインストールする。

    インストール後、システム環境設定ー言語とテキストー入力ソースで「ことえり」のチェックを外す。


  9. 外部モニター & キーボードの接続、Magic TrackPad の設定

    家では外部モニターとキーボードを接続して、クラムシェルモードで使用しています。

    1. キーボードのドライバーインストール
    2. KeyRemap4Macbook のインストール。右シフトキーの横の "_" でバックスラッシュが入力できるようにする。
    3. 音がモニターから鳴るようにする。
      システム環境設定ーサウンドー出力、で出力する装置をモニタにする。
    4. (外付け)Magic TrackPad の設定
      これまで使っていた MacBookAir での Bluetooth ペアリングの解除をし、新たに新しい MacBookAir で設定し直す。


  10. その他

    マウスのポインターを大きくする。
    システム環境設定ーアクセシビリティーディスプレイ、でカーソルのサイズを設定。


<リンク>


2013年9月25日水曜日

Emacs バッファを読み込み専用にする

Emacs で現在編集中のファイルと同じ名前のファイルを開いたときに、どちらが元のファイルか分からなくなってしまうことがある。

ファイルのパスを表示するコマンドを見つけたが (C-x C-v)、同じ趣旨で、参照用として開いたファイルは読み込み専用にしておくと言う手もある。

コマンドは、C-x C-q

バッファを開いた状態で C-x C-q とタイプすれば読み込み専用になります。もう一度タイプすると解除されます。

読み込み専用時には、左下に "%%" が表示されるので、編集中のファイルか参照用のファイルかの区別がつきます。参照用ファイルを間違って編集することもなくなるので余計な気を使わなくて済むのもいい。

***

同じバッファ名だと区別がつかない時、バッファ名を変更するというのが王道なのかもしれませんが、M-x rename-buffer でバッファ名をタイプするのは少々面倒くさい。


<参考>

入門 GNU Emacs 第3版

<リンク> Emacs 現在のバッファのファイルパスを表示する