Emacsの画面分割を快適にする

キーバインドにもデザインのセンスが必要だなぁとしみじみ

僕はCtrl+Tabにあてました(Ctrl-tはdmacroにあててるので)。

(global-set-key (kbd "<C-tab>") 'other-window-or-split)

「ビジョナリー・カンパニー」を読んだ

金メダルのチームを銀、銅メダルのチームと比較して抜きん出た特徴を明らかにする。既に古典に近いが色褪せないのが古典のいいところですね。

ビジョナリー・カンパニーをつくるための概念を要約するとこんな感じ

  1. 時を告げる予言者になるな。時計をつくる設計者になれ
  2. 「ANDの才能」を重視しよう
  3. 基本理念を維持し、進歩を促す
  4. 一貫性を追求しよう

ProductName ビジョナリー・カンパニー ― 時代を超える生存の原則
ジェームズ・C. コリンズ
日経BP社 / 2039円 ( 1995-09 )


  • 会社を究極の作品と見るのは、きわめて大きな発想の転換である
  • Big Hairy Audacious Goals (BHAG)
  • いいアイデアであれば採用したい。そうでない場合でもそれが現実的でないと証明できれば一種の保険になり

ggplot2で綺麗なグラフを描く

ggplot2のためにRを覚えてもいいと思う。一度覚えてしまえば使い回しの効く技術だと思うんだけどなぁ。

ProductName グラフィックスのためのRプログラミング
H. ウィッカム
丸善出版 / 4200円 ( 2012-02-29 )


グラフィックス描画のための文法をRで実装したのがggplot2らしい。

ProductName The Grammar of Graphics (Statistics and Computing)
Leland Wilkinson
Springer / 8616円 ( 2005-08-30 )


PyJade(jade)の更新を検知してコンパイルするスクリプトを書いた

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を快適に書けそうだ。

ポケモンタイピングDSを買った

ポケモンタイピングDSのBluetoothキーボードがさらにお安く!なっていたので買ってしまった。

早速娘がハマっている。

もともと、職場でスマホにつなげるキーボードがほしくてBSKBB01WHを狙っていたのだけど。

子どもがポケモンタイピングに飽きたら職場に持っていって使おうっと。

CoffeeScriptのnew @(objects)

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クラスのコンストラクタ関数を指しているという理解をした。

組織、イノベーション、そして人間のマネジメント

邦題がなにかに引っ張られているのはおいておいて、マネジメントを過去の成功者から学ぶという内容の本です。

ProductName 有名人の成功のカギはドラッカーの「マネジメント」にあった
フランク・アーノルト
阪急コミュニケーションズ / 1890円 ( 2011-05-27 )


組織のマネジメント

  • 基本的には顧客が買うのは製品ではなく、製品やサービスから得られるメリット
  • すぐれた意思決定が可能かどうかは本質的には、健全な議論文化があるかどうかそれしだい

イノベーションのマネジメント

  • イノベーションには明確で厳格な基準がある。それは、市場と顧客にとってメリットがあり、市場と顧客が満足できること

人間のマネジメント

  • 達成目標は組織内の人間に、エキスパートとして貢献するのに必要な情報を与えてくれる
  • 仕事に対する要求をどんどん下げていくと、その後に要求を上げるのはほとんど不可能に近くなる
  • たいていのひとは、時間とお金を交換しているが、逆にお金を時間と交換しよう

今いるセクションは、もうちょっと人間のマネジメントをちゃんとやってほしいなぁと思いつつも、組織内個人を強く打ち出すという訓練になるからまぁいいのかなと前向きに捉えることにしている。

Backbone-HangmanをSpine+Flaskで書きなおしてみた

Spineはサンプルとかドキュメントがまだまだ少ないので苦労することが多い。sofにも質問が70位しか投稿されてないしね。

Backbone-HangmanっていうSinatra+Backbone.jsで書かれたよさげなサンプルがあったので、これをSpine+Flaskで書きなおしてみた。Flaskのほうはさくっと終わったんだけど、Spineで書きなおすのに1週間以上かかってしまった。

spine hangman

今思うと、Spineがわかっていないというよりは、イベントドリブンなコードの読み方がちゃんとわかっていなかったんだろうと。モジュールごとに読んでも混乱するだけで、イベントごとにちょっとづつ組み立てていかなきゃあかんわなと。そういえば、backbone.jsのチュートリアルもそんな感じだったし。

spine.appはディレクトリが存在するとappオプションで作成できないので適当なディレクトリでスケルトンを作成して中身をmvした。それからFlaskのstaticにbuildされるようにslug.jsonにpublicを追加

  "public": "./static",
  "dependencies": [
    "es5-shimify", 
    "json2ify", 
    ...

今回理解したこと

  • 独自イベントのトリガーとバインド
  • elの使い方
  • ecoのロジック
  • spine.appとFlaskの連携のさせ方(ディレクトリ構成)
  • jQueryとcssを使ったウェブアプリの作り方の理解が甘いこと

放置したものはテストのやり方。モデルはまぁ分かるんだけどコントローラーのテストは一度やっておく必要がある。console.logのデバッグは疲れる。

Python Testing: Beginner

pythonでのテストの本

doctestの使い方に始まり、doctestでのモックの使い方(mockerライブラリ)を学んだらdoctestでは不十分なユニットテストをUnittestライブラリを使ってテストする。

続いてNoseでdoctestとunittestを統合することを学びつつ、TDDの話しへ。

ほんでもって、twillを使ったwebアプリのテストのやり方をざっと紹介して、integration test, system testっていう流れ。

ProductName Python Testing: Beginner's Guide
Daniel Arbuckle
Packt Publishing / 3220円 ( 2010-01-31 )


エキスパートPythonプログラミングのテストの章の内容の充実度が物足りなく感じたら読めばいいレベルの本だと思う。知りたかったモックの使い方とtwillの使い方が丁寧に書いてあったので個人的には費用対効果が高くて満足の一冊だった。

ProductName エキスパートPythonプログラミング
Tarek Ziade
アスキー・メディアワークス / 3780円 ( 2010-05-28 )


ポケットモンスターホワイト2を予約した

予約したけど娘にDSを奪われているので、サポートという遊び方になりそう。

トレーナーのトレーナーつまりメタトレーナーというわけですな。

ProductName ポケットモンスターホワイト2

任天堂 / 4079円 ( 2012-06-23 )


勝手にポケモンが育成されるのでそれはそれで楽になるかもしれないが、ブラックの時は育てたいお気に入りのポケモンが一致しなかったので、そこに関してはちょっと不安。