2008-01-23
■ [biwascheme] BiwaSchemeでプレゼンツールを実装しました
先日のびわこ開発合宿#2の成果発表のときに、なんとなくプレゼンツールが作りたくなって、 突発的に作ってみた。
- デモ:presen.html
ソースはこんな感じ(笑)。
<script src="../lib/biwascheme.js"> (load "presen.scm") (define *presen* '#(("自己紹介" ("yharaです" "y y hara")) ("やろうと思ってたこと" ("修論")) ("やったこと" ("プレゼンツール" "いまつくった" "applyがない" "string-concat")) ("やったこと" ("BiwaSchemeの改良" "mapとかつくった" "ネットワークロード")) ("どう見ても現実逃避です" ("本当にありがとうございました")) )) (presen-start) </script>
本体はpresen.scm。作り始めてからapplyが未実装なことに気付き、時間がないので ライブラリ側にstring-concatを実装してその場を凌いだ(ひどい)。
というのも含めて30分くらいで書いたんだが、Schemeのボトムアップなプログラミングは超短期での開発に向いてるなぁと 思った。 要するに小さい関数一つ一つを動かしながら確かめるので、それが簡易的なユニットテスト代わりになるという。
■ [biwascheme] define-macroを実装した
いわゆる「古典的なマクロ」を実装した。
(define-macro (foo x y) `(+ ,x ,y)) (foo 8 9)
というコードが17を返すことしか試してないので、まだバグがあるかも知れないが。
なんか15分で実装する流れだったのに、結局2日かかってしまい非常に残念な感じになった。 マクロ展開器のコンパイル結果をキャッシュするとか考えなければもうちょっと早かったかも知れないけど。
インタプリタの実行開始回りがぐちゃぐちゃになったのでどげんかせんといかん。
■ [tetris][prog] テトリスをプレイすることによって体調を測る
やはり夜中の3時とかにコードを書くのは(僕にとっては)良くないらしい。テンションは高いが頭がうまく回らない。 単純なバグに気付かない。等。
自分の脳がちゃんと動いているかを調べるのはとても簡単で、Tiを一回プレイしてみれば良い(笑)。 適切な睡眠を取った日はm6〜m7前後が出るし、睡眠時間が極端に短いか長い日はカンストすら出来ずに死ぬ。
10月くらいからの統計では、
- 長さは8時間程度がベスト。6時間を切ると少ない。10時間を越えると多い(多すぎても良くない。)
- 就寝時間が3〜4時を越えると、たとえ8時間寝てても駄目
ということがなんとなく分かっている。