センサー付きLEDがライフチェンジングだって話

センサーがついているLED電球を購入して、小さいけど生活が改善した。

今住んでいる部屋は玄関に照明があるのだけど、暗くなってから帰ると手でつけなければいけない。
だけど、スイッチがちょっと離れた所にあって、手を伸ばす必要がある。
じゃあつけっぱなしにしておけばいいかというとそれはそれでもったいないような気がするし、使わない時はやはり消しておきたい。

ということで、センサーがついた電球はないかなと思って探してみるとやはりあった。
結構いろんなメーカーが作っているのだけど、玄関の照明はE16口径で、しかも斜め取り付けタイプなので選択肢がなく、アイリスオーヤマのこれを購入。

{% amazon text B006IHKRDY %}
{% amazon medium_image B006IHKRDY %}

昨日届いたので設置したけど、手を伸ばしてスイッチをつける、という動作が必要ないって素晴しい。

org-modeのアーカイブ先ファイル名を変更する

org-modeでタスクを管理していると、だんだんファイルサイズが大きくなる。 そのため、「org-archive-subtree」を使って完了したタスクをアーカイブしてファイルのサイズを小さくするのだけど、数年使っているとアーカイブ先のファイルサイズが大きくなる。 そこで、このアーカイブ先のファイル名を変更して肥大化を防ぐ。

ファイル名は標準では「%s_archive」である。「todo.org」の場合は「todo.org_archive」だ。 この名前は「org-get-location-archive-location」で決定される。 バッファ内に「#+ARCHIVE: 文字列」というオプションを設定している場合はその名前が使われる。 設定していない場合は「org-archive-location」変数が使われる。 そこで、次のように設定する。

scm
(setq org-archive-location (concat "%s_archive_" (format-time-string "%Y" (current-time))))
接尾辞として「_archive_2014」のように、その年をつけることで、毎年違うファイルにアーカイブできる。

今年追加したEmacsの設定

この記事は.emacs Advent Calendar 2013 – Qiita [キータ] の16日目です。 ほんのちょっとしたべんりな設定を紹介すると良いらしいので、今年追加した(と思う)(自分にとって便利な)設定を紹介します。

OSX用のフルスクリーンコマンド

いつのまにか、OSXのフルスリーン表示に対応していたので、トグルするコマンドを設定に追加しました。 追加したといっても、X11用のものとほとんど同じだったので、OSXの時に使えるようにするだけでした。

scm
(defun toggle-fullscreen ()
"Toggle full screen on X11 or OSX"
(interactive)
(when (or (eq window-system 'x) (eq window-system 'ns))
(set-frame-parameter
nil 'fullscreen
(when (not (frame-parameter nil 'fullscreen)) 'fullboth))))
(global-set-key [f9] 'toggle-fullscreen)

org-modeのSRCブロックでハイライト表示を有効にする

以前はmmm-modeを使ってハイライト表示していたのですが、org-mode本体の設定でできることを知ったので切り替えました。 設定は簡単で、「org-src-fontify-natively」をtにするだけです。 これでブロック内のソースコードに色がつき、とても見やすくなります。

scm
(setq org-src-fontify-natively t)

org-modeのアジェンダの時間表記を時間単位に変更する

org-modeのアジェンダにはクロックテーブルという機能があり、その日(アジェンダが週表示ならその週)のタスクを集計して表示してくれます。 どういう作業をどの位したのかがひと目で分かるので大好きなのですが、週で表示した時場合は、トータルの表示が「1d 21:51」のようになってしまいます。 別に困る分けではないのですが、時間で表示してほしいので以下のような設定を行いました。

scm
(setq org-time-clocksum-format '(:hours "%d" :require-hours t :minutes ":%02d" :require-minutes t))

org-modeでも「M-h」でbackward-kill-wordする

普段「M-h」にはbackward-kill-wordを割り当てているのですが、org-modeだとそれが効かなかったので設定しました。 地味だけど、他のモードと操作が同じになって使いやすくなりました。

scm
(org-defkey org-mode-map "\M-h" 'backward-kill-word)

明日は

esehara@githubさんです.

Rubyでオブジェクトのスーパークラスを遡って取得する

Rubyでクラスの親クラスを取得するには、Class#superclassを使えばよいという事を知った。 なので、BasicObjectまで遡れば継承している全ての親クラスを取得することができる。

\ ruby class Foo end

class Bar < Foo end

class Hoge < Bar end

class Class def all_superclass def recur(c, a) return !c.superclass ? a : recur(c.superclass, a.push(c.superclass)) end recur(self, []) end end

p Hoge.all_superclass \

実行結果はこう。

sh
$ ruby ./get_all_superclass.rb
[Bar, Foo, Object, BasicObject]

任意のクラスを継承しているか判別するのに使えると思う。

Linuxでアクティブなアプリケーションを記録&可視化した

FluentdとGrowthForecastを使って自分の行動をロギング・可視化する -すぎゃーんメモ を見て、自分もやりたくなったのでやった。 上記リンクと違うのは、アクティブなアプリケーションを取得する箇所のみ。 Linuxだと、xpropというコマンドを使ってXの状態を取得できる。

なので、まずは今アクティブなウィンドウのIDを取得。

bash
xprop -root _NET_ACTIVE_WINDOW | awk '{print $5}'

次に、取得したIDを使ってアクティブなウィンドウの情報を取得する。 今回はウィンドウのクラスを取得した。 他にもいろいろな情報を得られておもしろそうなので時間を作って遊んでみたい。

bash
xprop -id ${取得したID} WM_CLASS | awk '{print $4}' | tr -d '\"'
これらをワンライナーにしてfluentdの設定に組み込んだのが下記である。 DISPLAY環境変数の設定を行っているのは、fluentdを実行しているfluentユーザからディスプレイを参照できなかったため。 今はmongodbとGrowthForecastに投げている。なかなかおもしろい。

html
<script src="https://gist.github.com/takaishi/6bcefcd3e43f5779fc15.js"></script>