Clojureはじめました

Clojureがとても良い感じです。
Clojureは、Lispの新しい方言でScalaなどと同じく、JavaVMの上で動く言語です。
JVM上で動くので、Javaのライブラリがそのまま使えます。
Lispなのでマクロが使えます。
ScalaErlangのようなアクターモデルを並行処理制御に使っていますが、
ClojureはSTMを採用しています。
ということで、Clojureの勉強のメモブログを始めました。
http://ctrkode-clojure.blogspot.com/

甘味処 『甘いっ子』

で、氷いちごミルク金時を食べた。ありえないほどうまくて驚いた。

カキ氷よりはアイスクリーム、アイスクリームよりケーキが好きな自分だが、このカキ氷には、ほれた。
イチゴソースが、あかい色のついた甘いだけのアレとちがって、なんか本当にイチゴの味がする。
種がつぶつぶしているのも目視できたし、本当にイチゴの煮たものを使ってるっぽい。
小豆も当然うまい。そしてコンデンスミルク。そして氷。もう最高。

[参考]
http://gourmet.livedoor.com/restaurant/4392/
http://www3.plala.or.jp/Viola/amaikko.htm

開発合宿

開発合宿に行ってきた。とても楽しかった。
開発もなかなかはかどった。
卓球もした。
帰りに軽井沢駅前に寄って観光した。
これも楽しかった。
プリンをお土産に買って帰った。
妻の口には合わなかったらしく、
「まったくがっかりだよ」
といわれた。
忌憚ないなぁ。

Oz/Morzart

amd64のマシン(ml115)にはどうもうまくMorzartをインストールできなかった。
aptitudeでもmakeでも。
ぐぐってみたら、ubuntu forums でもまさにそんな話題があった。
http://ubuntuforums.org/showthread.php?t=570502
intel+ubuntuマシン(110Gd)には問題なくaptitudeではいった。
tcerlもml115にはいれられなかったしなー。
やっぱLinuxでいろいろ試すならintelのほうが楽だー。
一般的に広く使われているようなソフトウェアだけ使うならあんまり問題ないんだけれどね。PythonとかErlangとかEmacsとか。

スカイ・クロラ

少し前のことになるけれど、スカイ・クロラを公開初日に立川の映画館で観た。
午前中にみたのだけれど、面白かったので、同じ場所でその日の夜、もう一度みた。

さわやかな映画だった。
自分の持っていた押井監督のイメージをいい意味で覆すような、さわやかで明るい前向きなメッセージが伝わってきた。

若造である自分がいうのもなんだけれど、監督もおとなになったんだなぁ、と思った。いい意味で。

他力本願―仕事で負けない7つの力

他力本願―仕事で負けない7つの力

それで今この本を読んでいる。半分ほど読んだ。妻が欲しいといって買ったのだけれど、思ったより面白くてびっくり。

Webサービスを作ったり、本を書いたり、ゲームを作ったりする際に参考になりそう。

    • 追記--

「副題は仕事で負けない7つの力」となっているけれども、
その内容は、映画を撮ることに関係した割と具体的な話が主で、汎用的な"仕事術"の類ではないと感じた。映画に対する考え方とか、映画を作り上げる際の方法論などは大変おもしろかったけれど。
もちろん具体的なことから汎用的な知恵を学び取ることは可能なんだけれど、そういうことではなくて、本の帯やタイトルの付け方から、無理に一般的な"仕事"に役に立つようなイメージで売り込もうとしている感じで、内容とキャッチコピーにずれが大きいなぁと。かんとくがなにか言っているので聞いてみよう、という感じだったので、個人的にはその点にまったく不満はないのだけれど、誤解がないように一応。

tcerl

tcerlを試してみた。ソースを読みながら試行錯誤している段階なので、
おかしな使い方をしているところがある可能性が高いが、使用できた。
tcは、ハッシュ、B+木、固定長、の3種類のDBを提供しているが、
いままで調べた限りでは、tcerlではB+木だけを提供しているようだ。
ハッシュや固定長もあるとありがたいが、パフォーマンスを気にしなければB+木で
当座は事足りる。

-module(test).
-compile(export_all).

test()->
    Filename="abc",
    tcerl:start(),
    {ok,Wr} = tcbdb:open(Filename,[writer,create,term_store]),
    tcbdb:vanish(Wr),
    put(Wr,{1,1.0},23),
    put(Wr,{1,1.0},24),
    put(Wr,{2,3.0},25),
    put(Wr,{2,3.0},25),
    put(Wr,{3,3.0},25),
    tcbdb:close(Wr),
    {ok,Rd} = tcbdb:open(Filename,[reader,term_store]),
    [23,24] = get(Rd,{1, 1.0}),
    [X1] = next(Rd,{1,1.0}),
    {2,3.0} = X1,
    [X2] = next(Rd,X1),
    {3,3.0} = X2,
    [] = next(Rd,X2).

print(X,Y)->
    io:format("~w ~w~n",[X,Y]).    

print(X)->
    io:format("~w~n",[X]).

next(R,K)->
    map_t2b(tcbdb:next(R,term_to_binary(K))).

put(R,K,V)->
    tcbdb:put_dup(
      R,
      term_to_binary(K),
      term_to_binary(V)).
map_t2b(XS)->
    lists:map(fun(X)->
		      binary_to_term(X) end,XS).

get(R,K)->
    map_t2b(tcbdb:get(R,term_to_binary(K))).