29092009 Linux
moreっぽいコマンドの実装。あとは導入っぽい章
- あるコマンドは何をするのか
- そのコマンドはどんな仕組みなのか
- そのコマンドは自分で実装できるか
という感じで問いから始まり理解をしながら実装してみることを通して悟りをひらいていく感じの流れの本っぽい。
29092009 Linux
moreっぽいコマンドの実装。あとは導入っぽい章
という感じで問いから始まり理解をしながら実装してみることを通して悟りをひらいていく感じの流れの本っぽい。
29092009 life
超広角とか魚眼とか単焦点とか欲しいよう
TAMRON AF10-24mm F/3.5-4.5 DiIILD Aspherical [IF] ニコン用 AFモーター内蔵 B001NIIClojureの本一通り読んだ(?)し、PK-PDも読まなあかんよなぁと。
でも、これ結構内容が濃くて、、、、、辛いっ。ていうか吞みながら読める本ではない。 ただ、いいこと書いてあるのでじっくり読まないと。
ちょうどUnix/Linuxプログラミングも届いた。
これもしっかり読む。
28092009 Clojure
駆け足で。
STMを使う。STMはデータベースでいうACIDのうちACIを提供する。実際にいくつか書いてみないと理解できない感じ。
マクロ
マルチメソッドの話。
以下の事柄に関して簡単に説明 - tet-isを使ったユニットテストについて - データベースアクセス - Compojureというweb application framework
章の最後にLancetっていうRakeみたいなソフトウェアでの実例で説明してるんだけど、Lancet使ったことないのでイメージが掴みにくかった。
もう少しClojure触ってから再度読み直すとよいかもしれん。
ピーマンと唐辛子の収穫と、葉物野菜の準備

シソの花。シソもそろそろ終わりにしようかな。

白インゲン(もらいものの種)。この時期にちゃんと育つのか不安。今から撒くならスナップエンドウがよいらしい。

苦土石灰撒いたので一週間ほどおいて、来週にはほうれん草と小松菜の種を撒く。

26092009 music
ダビーでスモーキー。
trickyは最初のほうのアルバムのほうが好き。レゲエはあんま好きじゃないけどdubは好きってのが割と謎(自分七不思議のひとつ)。
26092009 Clojure
どんどん読む。5章はfunctional programmingに関して。遅延評価についてもふれている。
clojureは(jvmが?)末尾最適化しないので、tail recursionでなくself recursionをすべし。
self recursionはrecurを使う。またはlazy-seqをつかって遅延評価させる。
mutual recursionの場合はtrampolineという最適化テクニックを使うとよいらしい(未消化)。
26092009 Clojure
4章はsequenceという抽象の話がメイン。
clojureではsequenceの操作関数は重要。若干関数リファレンスみたいになってしまっている部分もあるが、それは仕方ない。どうせ、実際にコード書くときに何度も見返すことになるので、lispとか触ったことがあれば軽く読み流せる章。
26092009 Clojure
3章はJava周りと最適化の話
javaのメソッドを呼ぶための使いやすい構文糖衣が用意されている/(slash)と.(dot)が重要
ClojureのCollectionはconcurrency-safeらしい。
Clojureのビルドツール。これは使ってみないと読んだだけではよくわからん。
jrubyのたらい回し関数のエントリみてたらClojureでもやってみたくなった。
Clojure 1.0.0-
user=> (defn tak [x y z]
(if (>= y x)
z
(tak (tak (- x 1) y z) (tak (- y 1) z x) (tak (- z 1) x y))))
#'user/tak
user=> (time (dotimes [_ 100] (tak 24 16 8)))
"Elapsed time: 27580.504 msecs"
nil
ついでにOCamlでも
let rec tak x y z =
if y >= x then z
else tak (tak (x-1) y z) (tak (y-1) z x) (tak (z-1) x y)
;;
for a = 1 to 100 do
ignore(tak 24 16 8)
done
;;
まずはバイトコードで。
$ ocamlc tak.ml -o tak.exe
$ time ./tak.exe
real 0m10.777s
user 0m10.692s
sys 0m0.033s
ネイティブコードにコンパイルすると
$ ocamlopt tak.ml -o tak_opt.exe
$time ./tak_opt.exe
real 0m1.130s
user 0m1.119s
sys 0m0.006s
結構はやい。
そういえばMooseでLispはたらい回し関数はしるくらいまではやっとこうと思いつつ止まってしまっていたのに今気づいた。