2014/07/08


掟1

プログラムが時間を費やす箇所がどこにあるのかは知り得ない。ボトルネックは意外な場所で発生するため後知恵で批判してはならないし、ボトルネックがどこにあるか証明出来るまではスピードハックを入れてはいけない。

掟2

測定しよう。測定し終えるまでは、さらにはコードの一部分が残りのコードの支配的な量とならないならばチューニングを行ってはいけない。

掟3

凝ったアルゴリズムは、n が小さいときに低速となり、通常 n は小さい。凝ったアルゴリズムは大きな定数を有する。n は頻繁に大きくなり得ることを知るまでは凝ったアルゴリズムを得てはならない。 (n が大きくなる場合であっても、まず掟 2 を行いなさい)

掟4

凝ったアルゴリズムは単純なものよりもバギーであり、実装が非常に難しい。簡単なアルゴリズムだけでなく、単純なデータ構造を使用すること。

掟5

データが支配する。もし正しいデータ構造と組織的な物事を上手く選択したとすれば、アルゴリズムは殆どの場合自明となる。データ構造はアルゴリズムとは違いプログラミングの中心である。


Pike の掟 1 と 2 は Tony Hoare の有名な格言「早まった最適化は諸悪の根源である。」の言い換えであり、Ken Thompson は Pike の掟 3 と 4 を「疑わしいならばブルートフォースを使用すべきだ」と言い換えた。掟 3 と 4 は、the design philosophy KISS (Keep It Simple, Stupid)の具現。掟 5 は、The Mythical Man-Month で Fred Brooks が述べた。掟 5 は、多くの場合、「スマートオブジェクトを使うと愚かなコードを書く」に短縮される。

参照:

Rob Pike's 5 Rules of Programming

Posted at by




github の pull-request を clone する設定をいつも思い出せなくて、毎回ググってるので alias を書いた。
Checkout github pull requests locally

Here's fetch : 1 git fetch From github.com:gittip/www.gittip.com * [new ref] refs/pull/100/head -> o...

https://gist.github.com/piscisaureus/3342247
$ git config --global alias.pr-setup "config --add remote.origin.fetch +refs/pull/*/head:refs/remotes/origin/pr/*"
とすれば alias がインストールされるので、以後は pull-request を監視したいリポジトリを clone した後 $ git pr-setup とすれば .git/config に上記リンク先の設定が入る。後は普通に $ git fetch origin
$ git checkout pr/999
とかすればいい。ちなみに clone した瞬間に設定する方法無いかなーと思ったけど、clone したいだけのリポジトリで勝手に fetch されて太っても嫌だなーと思ったので手動で pr-setup を叩く事にする。
Posted at by



2014/07/07


:echo webapi#json#decode(webapi#http#get("http://tanzak.herokuapp.com/api", {"q""カッコイイVimmerになれますように"}).content).c
┏┷┓
┃ ┃
┃カ┃
┃ッ┃
┃コ┃
┃イ┃
┃イ┃
┃V┃
┃i┃
┃m┃
┃m┃
┃e┃
┃r┃
┃に┃
┃な┃
┃れ┃
┃ま┃
┃す┃
┃よ┃
┃う┃
┃に┃
┃ ┃
┗━┛
Posted at by