tmaeda 日記

トップ «前5日分 追記

tmaeda 日記

興味の対象は、各種プログラミング言語(Ruby,LISP,Objective-Cなど)、WebObjects, rails, Linux、Mac、数学、音楽、写真(特に VR)、猫などです。ツッコミは短く鋭く愛を込めて(出典:たださんの日記)。リンクはどうぞご自由に。

アンテナでの更新チェックには、antenna.lirs か、index.rdf をご利用ください。


2009-07-01 (Wed) [長年日記]

_ NEC Express5800 110Gd の CPU を換装したら、電気代が2000円も安くなった

だいぶ前に 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

2009-06-28 (Sun) [長年日記]

_ Re: プログラミング言語の選び方

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を個別に実装しなきゃならんわけで、 「メソッドの数」はオブジェクト指向言語で作ろうが関数型言語 で作ろうが同じになるはずです。

「やっぱり魔法なんてなかったんだ!」とわかってスッキリした、という話でした。


2009-06-27 (Sat) [長年日記]

_ モナドがなんとなくわかってきたかも?

今日は北海道関数型言語勉強会。 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している理由が よくわからんかった。どういう使い方するんだろ?教えてエライ人!><

参考

ふつうのHaskellプログラミング ふつうのHaskellプログラミング

ふつけるはIOモナドの説明がサラッとしすぎているので、

もあわせて読みたい。


2009-06-12 (Fri) [長年日記]

_ ボイスレコーダー OLYMPUS Voice-Trek V-62 購入

今まで V-40を使っていたのですが、 毎日持ち歩いていたせいであちこちにガタが来てたので V-62に買い替えました。しかも今日はV-62の発売日!

V-40は以下のような点が不満でした。

  • 電池のフタが緩くて、買ってから1週間ぐらいで落として無くした(首からぶら下げて持ち歩いていたので)
  • 側面のボタン押しにくい
  • 電池が取り出しにくい。爪で無理矢理出そうとすると爪はがれそうになる。
  • 電池が入る部分を取り外すとUSB端子が出てくるようになってるんですが、長いこと使っているとこの電池が入る部分の接触が悪くなってきて電池満タンなのに「電池切れ」とか言われる
  • 側面のロック用スイッチとかモード切り替えスイッチが脆くて、勝手にミュージックモードからレコーダーモードに切り替わったり、ロックが解除されたりする

で、あれから3年。V-62なんですが、全て改善されているように見えます。

  • 電池のフタ、割としっかりしてる
  • 側面のボタン廃止してボタンは全て前面に
  • 電池も(まだちょっとつらいですが)だいぶ取り出しやすくなった(指をひっかけやすくなった)
  • USB端子がスライドして出てくるようになったので、電池の接触が悪くなる問題は起き得ない(はず)
  • ロック用スイッチなどもV-40に比べると結構頑丈そう

更に機能的にも以下のような追加/改善がされてます。

  • 早再生/遅再生(0.5倍速から2倍速まで10段階)機能がついたので英語のリスニングとかにも良さそう
  • 早送りボタン/巻き戻しボタンで何秒先へ飛ばすかを設定できる
  • 1つのファイル内のある区間だけ繰り返し再生も可能
  • 液晶の文字が読みやすくなり画面も広くなった
  • USB経由で単4充電池の充電ができる

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-SLV-シルバー OLYMPUS-ICレコーダー-Voice-Trek-V-62-PNK-ピンクー OLYMPUS-ICレコーダー-Voice-Trek-V-62-PNK-ピンクー


2009-03-14 (Sat) [長年日記]

_ カシオ光ナビゲーションキーボード LK-205 に感動した

娘用にカシオ光ナビゲーションキーボードというのを買ってみた (娘、まだ1歳半なのでちょっと早いんだけど、歌はもう2-30曲 歌えるのでいいかな、と)。

で、このLK-205のあまりのすごさに驚いた。

  • 570音色。GM対応。音質も非常に良い。
  • 鍵盤の上の方にはドラムセットを選択しているときにどの鍵盤でどのドラム/パーカッションが鳴るのか絵でしめしてある
  • スピーカーつき
  • マイク付き。演奏に合わせて歌える。リバーブもかかる。
  • そして、そのマイクでサンプリングもできる。サンプリングした音を演奏したりドラムセット用の音として使える。
  • 本体に200曲の演奏が入っていて、光ナビゲーションで押える鍵盤をガイドしてくれる。選曲もなかなか良い。J-POP、童謡、クラシックなどなど。
  • 鍵盤が光るだけじゃなく、液晶にも鍵盤が表示されていて、その鍵盤上にもガイドが出ているし、どの指で押えるべきかも表示されるし、音符も表示される。一部の曲はコード名(CとかG7とか)まで表示される。運指のガイドは、右手の小指より高い音域を親指をくぐらせて弾かなければいけないときには矢印が表示されたりする。
  • 光ナビゲーションでは、右手、左手、両手などパートごとに練習したり、1つの曲をフレーズごとに細切れにして繰り返し練習できたりする
  • 6トラックのシーケンサー付き
  • 譜面立てもついてる
  • SDカードにMIDIデータやサンプリングデータなどを保存できる。CASIOのサイトからダウンロード(有料)したデータで曲の再生などもできる。
  • USB端子もついてて、USB経由でMIDIのやりとりができる。
  • 内蔵曲のちゃんとした譜面まで付いている。そして、この譜面は光ナビゲーションのフレーズの区切りの情報なども書かれている。
  • 歌詞もついてる(著作権の関係で一部掲載されてない曲もあるらしいが)
  • サスティンペダルもささる(別売)
  • PHONEジャックとか、MIC IN、AUX OUTなどは普通のシンセサイザーなどと同じサイズのジャック
  • ACアダプタ付属
  • 電池でも動くので、電源がないところでも使える。
  • 軽い(5kg)

ここまで至れり尽くせりなキーボードが2万円台前半で買えるってどゆこと!?(定価は39900円だけど)

20万とかだしてしょぼいFM音源のシンセ買うのが当たり前な時代からキーボード やってた身からすると、もうため息しか出ない。すごい時代になったもんだ。

私はピアノとか全然習った事ないので、光ナビゲーションでの 練習はすごい勉強になる。娘用に買ったのに、私がハマりそうだ。

カシオ計算機 カシオ光ナビゲーションキーボード カシオ計算機 カシオ光ナビゲーションキーボード


2003|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|10|11|12|
2006|01|02|04|05|06|07|08|09|10|11|12|
2007|01|03|06|07|08|09|10|11|12|
2008|01|02|03|04|06|07|10|12|
2009|01|03|06|07|
全文検索:

% grep '' *.td2

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
Tags:

2009-07-01 (Wed)

* NEC Express5800 110Gd の CPU を換装したら、電気代が2000円も安くなった
2009-06-28 (Sun)
* Re: プログラミング言語の選び方
2009-06-27 (Sat)
* モナドがなんとなくわかってきたかも?
2009-06-12 (Fri)
* ボイスレコーダー OLYMPUS Voice-Trek V-62 購入
2009-03-14 (Sat)
* カシオ光ナビゲーションキーボード LK-205 に感動した
2009-01-01 (Thu)
* 去年の目標のふりかえりと今年の目標
2008-12-31 (Wed)
* Objective-Cな仕事どっぷり
* Rails2.xへ移行
* mod_rails(Passenger)をちょっと使ってみた
* merb, DataMapper, Sequelを使いはじめた
* 引き続きRuby札幌の活動
* RubyKaigi2008 スタッフ
* 関数型言語勉強会参加
* 高専カンファレンス参加
* LDRからGoogleReaderへ乗り換え
* 30d.jpを使いはじめた
* iKnowを使いはじめた
* mixiを更に使わなくなった
* その他Webサービス
* emobile使いはじめた
* sakuraの専用サーバからlinodeのVPSに乗り換え
* Debian sargeからetchすっ飛ばしてlennyに移行
* 個人のメール環境をWanderlustからGmailに移行
* 書籍の執筆開始
* 英語の勉強やり直し
* 人間ドック
* 一眼レフ用に外付けのフラッシュを購入
* 子育て
* ベース購入
* まとめ
2008-12-10 (Wed)
* メモ帳、手帳、手帳用ボールペン
最近のツッコミ:
  1. takuya (01-01)
RubyKaigi2008Staff