22042012 Emacs
キーバインドにもデザインのセンスが必要だなぁとしみじみ
僕はCtrl+Tabにあてました(Ctrl-tはdmacroにあててるので)。
(global-set-key (kbd "<C-tab>") 'other-window-or-split)
22042012 Emacs
キーバインドにもデザインのセンスが必要だなぁとしみじみ
僕はCtrl+Tabにあてました(Ctrl-tはdmacroにあててるので)。
(global-set-key (kbd "<C-tab>") 'other-window-or-split)
22042012 work
金メダルのチームを銀、銅メダルのチームと比較して抜きん出た特徴を明らかにする。既に古典に近いが色褪せないのが古典のいいところですね。
ビジョナリー・カンパニーをつくるための概念を要約するとこんな感じ
21042012 R
ggplot2のためにRを覚えてもいいと思う。一度覚えてしまえば使い回しの効く技術だと思うんだけどなぁ。
グラフィックス描画のための文法をRで実装したのがggplot2らしい。
20042012 Python
jQuery Mobile用のHTMLをPyJadeで書いているんだけど、いちいちファイルを修正するたびに手でコマンド打つのもめんどくさくなったので、ファイルの更新を検知して自動的にコンパイルするようにしてみた。
import jinja2 import time import sys import watchdog.events import watchdog.observers env = jinja2.Environment(extensions=['pyjade.ext.jinja.PyJadeExtension']) env.loader = jinja2.FileSystemLoader('.') class JadeHandler(watchdog.events.FileSystemEventHandler): def __init__(self, file): self.file = file html = file self.html = html.replace('.jade', '') + '.html' def on_modified(self, event): if event.src_path.endswith(self.file): template = env.get_template(self.file) with open(self.html, 'w') as f: f.write(template.render().encode('utf-8')) print "file modified (re-compiled)" def main(): file = sys.argv[1] event_handler = JadeHandler(file) observer = watchdog.observers.Observer() observer.schedule(event_handler, path=".") observer.start() try: while True: time.sleep(1) except KeyboardInterrupt: observer.stop() observer.join() if __name__ == "__main__": main()
これでなかなか快適にはなったんだけど、jadeで書いてみて思うのはdata-属性多すぎで見栄えが悪い。いっそdata-は@に置換してしまったらどうだろうかと。
div(@theme='a', @role='footer', @position="fixed") div(@role="navbar") ul li: a(href="#", @icon="home") Home li: a(href="#", @icon="search") Search li: a(href="#info", @icon="info") Info
これでいけそうなカンジがするので、Jinjaにテンプレートを読ませる前に@をdata-に置換する処理をかましておけば、jqm用のHTMLを快適に書けそうだ。
20042012 life
ポケモンタイピングDSのBluetoothキーボードがさらにお安く!なっていたので買ってしまった。
早速娘がハマっている。
もともと、職場でスマホにつなげるキーボードがほしくてBSKBB01WHを狙っていたのだけど。
iBUFFALO Bluetooth2.0 無線キーボード パンタグラフ 83キー [PC,PS3,iPhone4S,iPad2]対応 ホワイト BSKBB01WH子どもがポケモンタイピングに飽きたら職場に持っていって使おうっと。
19042012 coffeescript
spineのソースコードでわからないとこがあって、なんで@をnewしてんの?っていう。
class Test constructor: (@name)-> @test:(name) -> new @ name test1 = new Test 'xxx' test2 = Test.test('yyy') console.log test1 console.log test2
new @ nameはTestクラスのコンストラクタ関数を指しているという理解をした。
19042012 life
邦題がなにかに引っ張られているのはおいておいて、マネジメントを過去の成功者から学ぶという内容の本です。
今いるセクションは、もうちょっと人間のマネジメントをちゃんとやってほしいなぁと思いつつも、組織内個人を強く打ち出すという訓練になるからまぁいいのかなと前向きに捉えることにしている。
Spineはサンプルとかドキュメントがまだまだ少ないので苦労することが多い。sofにも質問が70位しか投稿されてないしね。
Backbone-HangmanっていうSinatra+Backbone.jsで書かれたよさげなサンプルがあったので、これをSpine+Flaskで書きなおしてみた。Flaskのほうはさくっと終わったんだけど、Spineで書きなおすのに1週間以上かかってしまった。

今思うと、Spineがわかっていないというよりは、イベントドリブンなコードの読み方がちゃんとわかっていなかったんだろうと。モジュールごとに読んでも混乱するだけで、イベントごとにちょっとづつ組み立てていかなきゃあかんわなと。そういえば、backbone.jsのチュートリアルもそんな感じだったし。
spine.appはディレクトリが存在するとappオプションで作成できないので適当なディレクトリでスケルトンを作成して中身をmvした。それからFlaskのstaticにbuildされるようにslug.jsonにpublicを追加
"public": "./static", "dependencies": [ "es5-shimify", "json2ify", ...
放置したものはテストのやり方。モデルはまぁ分かるんだけどコントローラーのテストは一度やっておく必要がある。console.logのデバッグは疲れる。
17042012 Python
pythonでのテストの本
doctestの使い方に始まり、doctestでのモックの使い方(mockerライブラリ)を学んだらdoctestでは不十分なユニットテストをUnittestライブラリを使ってテストする。
続いてNoseでdoctestとunittestを統合することを学びつつ、TDDの話しへ。
ほんでもって、twillを使ったwebアプリのテストのやり方をざっと紹介して、integration test, system testっていう流れ。
エキスパートPythonプログラミングのテストの章の内容の充実度が物足りなく感じたら読めばいいレベルの本だと思う。知りたかったモックの使い方とtwillの使い方が丁寧に書いてあったので個人的には費用対効果が高くて満足の一冊だった。
16042012 life
予約したけど娘にDSを奪われているので、サポートという遊び方になりそう。
トレーナーのトレーナーつまりメタトレーナーというわけですな。
勝手にポケモンが育成されるのでそれはそれで楽になるかもしれないが、ブラックの時は育てたいお気に入りのポケモンが一致しなかったので、そこに関してはちょっと不安。