2009-10-05(月)
■はてな市民復活のためのエントリです。
最近は些細なことでも http://vkgtaro.jp に書こうと思ってこっちは更新してないのでした。
まぁ、些細なこと書けてないですがw
一定期間おくとはてな市民から外れるのでたまに困る。
2009-08-14(金)
■[programming] とりあえず多重継承をやめるよ
「プログラミング言語 Ruby」が一段落した*1ので、次の積読「まつもとゆきひろ コードの世界」を読み始めた。今、2章中盤くらい。
まつもとゆきひろ コードの世界?スーパー・プログラマになる14の思考法
- 作者: まつもとゆきひろ,日経Linux
- 出版社/メーカー: 日経BP出版センター
- 発売日: 2009/05/21
- メディア: 単行本(ソフトカバー)
- 購入: 49人 クリック: 1,684回
- この商品を含むブログ (110件) を見る
ずっと、「多重継承するとスパゲッティになるなぁ」と思ってたんだけど、いろいろ納得した。そおいうことかー!
Stream を継承した、ReadStream, WriteStrem があって、さらに ReadWriteStream を作るという話のとこで、「単一継承だとそうなるよね、どうするんだ?」とか思ったけど、そこで Mix-in ですか! Readable と Writable 作って、Mix-in ですよ。
Ruby は単一継承しかできなくて、こういう時どうするんだ、とか思ってたのも氷解した。やっぱり Module 作って include するのかなぁとか、ぼんやり思ってたのもだいぶしっくり来た。←というか、「プログラミング言語 Ruby ほんとにちゃんと読んだのかレベル」ですかねw
あと、Java などの静的言語における「仕様の継承」と「実装の継承」の話もあって、Java のインターフェイスは何となくわかった。Moose の Role は Java のインターフェイスじゃないとかって話題も少しわかった気がする。
Perl も Moose があるから、多重継承はなるべく避けて Mix-in しよう。今まで Angelos 見て何となくまねてたけど、だいぶわかったんじゃないか?
あああああ、モダン Perl 入門にも Moose の Role はそういうもんだって書いてあったね。わかってるねん、わかってるねんで!
この本おもろいなぁ。理解が進むって楽しいなぁ。スーパープログラマにはなれなくても、ヘボプログラマのヘボは取れそう。周りに迷惑をかけることも減りそう >_<
追記
そして次のページ読んだら、「多重継承は良くないものだ」というのは誤解と書いてあった。「うまく使わないと問題が起きることがある」だそうだ。
そして、「Mix-in は多重継承と別物ではなくて、多重継承の使い方のテクニックの一つ」とあった。なるほど−。
2009-08-09(日)
■ [Keynote] Keynote のテーマを作る
ちなみに自分の Keynote は iWork 06 の Version 3。
- スライドを新規に作成、テーマは白紙がいい
- メニューの[表示]→[マスタースライドを表示]で左側にマスタースライドが出る。
- マスタースライドに絵を置いたりしていくとウインドウに付いてるメニューからマスターで選択できるようになる
- 使いたいマスターを全部編集したら、[ファイル]→[テーマとして保存]で、保存
これで次回からテーマとして選べて、選択すると作ったマスタが使えるようになる。
■ 20分
演劇だったらだいぶ長い。小劇場系のお芝居で長くてもたいていは2時間、その中で主役クラスの長い独白があっても20分ってのはなかなか無いと思う。
観客を20分つなぎ止めていられる人は相当なものだと思う。
まぁ、芝居ではないので話す内容をちゃんと作って、ゆっくりしっかり話せば何とかなるよ。緊張すると絶対早口になるからなぁ。
資料が一つできたのでさっき練習したら「えーっと」言いまくってたw
kansai.pm でも何か連呼してたんだよなぁ。たぶん本番でも言うなぁ……。
もう一回やって言葉に詰まるところを見直した方が良いかもしれないな。
資料的には詰め込もうと思うと20分は結構短いかも。LazyWay はどうだろうなぁ。20分ぶんの資料作れるかなぁw 今日はもう帰って明日の夜やろ。
2009-07-29(水)
■[ruby] Object.send でメソッドを呼ぶ
ruby は変数に接頭辞がないから、perl で $obj->$method() みたいなことやるのにどうしたらいいんだろ、とか思ってたらプログラミング言語 Ruby に出てきた。
Object に send ってメソッドがあって、o.send :method_name で呼び出せる。
perl のこのコードは
my $hoge = Hoge->new; foreach my $method ( qw/one two three/ ) { print $hoge->$method() . "\n"; } package Hoge; sub new { bless {}, shift; } sub one { 1 } sub two { 2 } sub three { 3 }
ruby で書くとこんな感じ
class Hoge def one; 1; end def two; 2; end def three; 3; end end hoge = Hoge.new [:one, :two, :three].each {|x| puts hoge.send x }
今はリフレクション、メタプログラミングの章に入ってきたところ。
