興味の対象は、各種プログラミング言語(Ruby,LISP,Objective-Cなど)、WebObjects, rails, Linux、Mac、数学、音楽、写真(特に VR)、猫などです。ツッコミは短く鋭く愛を込めて(出典:たださんの日記)。リンクはどうぞご自由に。
アンテナでの更新チェックには、antenna.lirs か、index.rdf をご利用ください。
だいぶ前に NEC Express5800 110Gd というPCを nttxstoreで15000円ぐらいで買って、家サーバに してました(24h運用)。
Celeron D 341(2.93GHz)を Celeron 420(1.6GHz) というのに交換。 CPUは中古で2500円ぐらい。
載せ換えには以下を参考にしました。
インテルがわざわざ日本語ナレーションが入ったムービーまで 作ってるってのはすごいね。
で、交換して1ヶ月。電気代については 「2年ぐらいで元が取れればいいかな〜」と全く期待してなかったの ですが、なんとびっくり2000円/月も下がってしまいました。 2年どころか1ヶ月で元がとれてしまいました。 いや〜、驚いた。
CPUファンのヒートシンクに結構ホコリがたまってたってのも ありますが、CPU交換とヒートシンクの掃除だけでこんなにも 電気代が変わるとは、、、
こんなことなら「CPUの値段が下がってから」なんて ケチケチしないでもっと早くに交換しておけば よかった。
あ、そうそう。性能なんですが、クロックは半分ぐらいしかないけど性能は Celeron 420の方が若干良いみたい。性能はいいわ、電気代は安いわで、ほんと素晴らしいです。
Ruby1.9.1-p129のビルドにかかった時間(Celeron D)。 real 22m10.750s user 20m50.526s sys 0m25.270s Ruby1.9.1-p129のビルドにかかった時間(Celeron 420)。 real 17m3.854s user 14m25.294s sys 0m15.205s
ikegamiさんの日記より。<URL:http://madscientist.jp/~ikegami/diary/20080514.html#p01>
OSC2007do(でしたっけ)でikegamiさんの話を聞いて 非常に刺激を受けたし、 私が今こうしてHaskellを学べたのもikegamiさんの影響を多分に 受けているのでikegamiさんに楯突くつもりはサラサラないんですが、、、
たとえば、MacOSX のテキストエディタは NSTextView クラスを使っているのだ けれど、NSTextView クラスはメソッドの個数が約160個もあるのです。さらに、 NSTextView クラスの継承関係は NSTextView : NSText : NSView : NSResponder : NSObject ということになっていて、メソッドの総数はどれだけ あるのやら。NSTextView のメソッドの一つは (void *)setBackgroundColor:(NSColor *)aColor ですが、このように、機能一つにメ ソッドが対応するので、結果的にクラスが大きくなってしまうわけです。当た り前のことですけど。その点、関数型言語でしたら、(Haskell の例にしますが) setBackGroundColor :: (ApplicationStateMonad m, View a) => a -> Color -> m () になるでしょう。これ一つで充分です。
当時私はHaskellとかモナドとかいうものを全く知らなくて、 この文章を読んだときに「関数型言語だろうがオブジェクト指向言語 だろうが同程度の機能を実装するには同程度複雑になるような気がするが、Haskellには何かものすごい魔法でもあるんだろうか」と、 疑問に思ったのでした。
で、一応一通りHaskellの勉強した今、再び読み返してみましたが、 ikegamiさんの指摘はやっぱり違う気がする。
setBackGroundColor :: (ApplicationStateMonad m, View a) => a -> Color -> m ()
これはViewクラスの型aに適用できる setBackGroundColorという関数を定義しておけば、 Viewクラスの型の背景色設定は全てこの関数だけで 用事が済むよね?という話だと理解しました。
ですが、これと等価なコードはObjective-Cでも 書こうと思えば以下のように書けます。
@interface NSView @end -(void)setBackgroundColor:(NSColor *)aColor
NSTextViewってのはNSViewを継承しているので、 NSTextViewクラスには-(void)setBackgroundColor:(NSColor *)aColor を実装する必要はなく、NSViewの -(void)setBackgroundColor:(NSColor *)aColor 1つだけで用事が済みます。
でも、Cocoaがあえてそういう設計にせず(NSViewには -(void)setBackgroundColor:(NSColor *)aColorを実装せず)、 それぞれのビュークラスに個別に-(void)setBackgroundColor:(NSColor *)aColorを 実装しているのには、何か理由があると思うわけです。 例えば、各Viewによって setBackgroundColorの仕様や実装があまりに違い過ぎて NSView上の実装に一本化できない、とか。
となると、Haskellでやったとしても結局はその「状況ごと」の setBackgroundColorを個別に実装しなきゃならんわけで、 「メソッドの数」はオブジェクト指向言語で作ろうが関数型言語 で作ろうが同じになるはずです。
「やっぱり魔法なんてなかったんだ!」とわかってスッキリした、という話でした。
今日は北海道関数型言語勉強会。 1年ちょいかかってやっとふつけるの11章、モナドまで来た。
モナドについてとっかかりだけは理解できたと思う。
モナドの定義をもう一度メモっておくと、
class Monad m where (>>=) :: m a -> (a -> m b) -> m b return :: a -> m a
但しreturnと>>=は以下の条件を満たす。
1. (return x) >>= f == f x 2. m >>= return == m 3. (m >>= f) >>= g == m >>= (\x -> f x >>= g)
returnがモナドじゃないデータをモナドの世界に引きずり込む 関数。
>>=は左辺からモナド(m a)を受け取り、モナドの中身(a)を右辺の関数(f :: a -> m b)に渡す。
fはモナドの中身(a)を受け取って、何らかの処理を行い、 結果をまた同じモナドで包んで(m b)返す。
で、最終的にこの m b が >>= の戻り値になる、と。
モナドから中身を取り出すための関数を定義すべきか否かという 決まりはないので、いろいろな演算をしたけど結局中身は 取り出さずに終わる、という場合もある(IOなんかはまさにこれ)。
Maybeモナドなんかは大抵中身を取り出したいので、中身を取り出す ためのfromJustなんていう関数が存在する。
Prelude> :i Maybe.fromJust Data.Maybe.fromJust :: Maybe a -> a -- Defined in Data.Maybe Prelude>
>>= はモナドを受け取って、同じモナドを出力するので、 そのモナドの世界の演算はずーっと連結して実行できる (しかも「モナドの中身」を隠したまま)。
これにより、「流れるようなインターフェース」で処理を 書くことができるようになったり、実行順序という概念が 存在しないHaskellの世界に「実行順序」という制約を もたらしたりできる、と。
jQueryはモナドだ、とか言われてるのもそういうことなのね(jQueryの中身はまだ調べてないので、本当にモナドなのかは定かじゃないが)。
昔、2chに「>>2がスレの流れを決める」ってコピペがあったけど、あれに ちょっと似てるな、と思った。return がスレ立て。 その直後の>>=の右辺の 関数がどのモナドの流れにするかを決める、という。
return "hello" >>= \x -> [x] -- fがListモナドを返すのでListモナドの流れ return "hello" >>= \x -> Just x -- fがMaybeモナドを返すのでMaybeモナドの流れ return "hello" >>= \x -> putStr x -- fがIOモナドを返すのでIOモナドの流れ
本日mrkn先生が書いた非常にわかりやすい絵を張っておく。
あぁ、そうそう。MaybeモナドがEqをderivingしている理由は わかるんだけど、Ordをderivingしている理由が よくわからんかった。どういう使い方するんだろ?教えてエライ人!><
参考
ふつけるはIOモナドの説明がサラッとしすぎているので、
もあわせて読みたい。
今まで V-40を使っていたのですが、 毎日持ち歩いていたせいであちこちにガタが来てたので V-62に買い替えました。しかも今日はV-62の発売日!
V-40は以下のような点が不満でした。
で、あれから3年。V-62なんですが、全て改善されているように見えます。
更に機能的にも以下のような追加/改善がされてます。
USBの口が外に丸見えになってるところだけがちょっと心配(そのために ケースがついてるんだろうか?)だけど、全体的には非常に良くできてると思う。満足。
V-40は512Mで15000円ぐらいだった気がしたけど、V-62は2Gで9000円ぐらい。 iPod Shuffle(一番安いやつ)は4Gで録音もできず液晶も無くて8800円ということを考えると、 V-62はかなり妥当な値段な気がする。
OLYMPUS-ICレコーダー-Voice-Trek-V-62-SLV-シルバー
OLYMPUS-ICレコーダー-Voice-Trek-V-62-PNK-ピンクー
娘用にカシオ光ナビゲーションキーボードというのを買ってみた (娘、まだ1歳半なのでちょっと早いんだけど、歌はもう2-30曲 歌えるのでいいかな、と)。
で、このLK-205のあまりのすごさに驚いた。
ここまで至れり尽くせりなキーボードが2万円台前半で買えるってどゆこと!?(定価は39900円だけど)
20万とかだしてしょぼいFM音源のシンセ買うのが当たり前な時代からキーボード やってた身からすると、もうため息しか出ない。すごい時代になったもんだ。
私はピアノとか全然習った事ないので、光ナビゲーションでの 練習はすごい勉強になる。娘用に買ったのに、私がハマりそうだ。
| 前 | 2009年 7月 |
次 | ||||
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 | |