トップ 追記

Don'tStopMusic

2003|07|08|09|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|09|10|12|
2006|01|02|03|04|


2006-04-30

_ [私生活]体重

はてなグラフで体重を記録しています。それまでは気が向いたときにしか測ってませんでしたが、記録に残そうとしてからはほぼ毎日測るようになりました。

実は 2 月からつけていたのに操作を誤って全消ししてしまったという……あの UI にはなかなか慣れないですね。

56kg 前後が目標ですが、今のところ 2 月から 54kg 台を行ったり来たりな調子です。運動でもすれば増えるんでしょうかね。


2006-04-20

_ [ネットサービス] fluxiom

リリースされたみたいです。とりあえず BASIC で 30 日間トライアルを申し込んでみました(要クレジットカード登録)。

800MB のベーシックで月 29 ユーロという割と強気な値段設定は「企業向け」だからなのかな。

ファイルのアップロード画面

upload

アップロード状況がグラフィカルに分かります(うちの Firefox だと表示が変)。

アセット画面

ドラッグで選択

アップロードしたファイルが並ぶ画面。ダブルクリックでプレビューやダウンロード。ファイルをドラッグで選択できます。

画像ファイル

画像ファイルはもちろんサムネイル表示されます。

拡大

拡大縮小も自由自在。

detail

detail

detailボタンをクリックすると下からにょきっと detail のパネルが生えてきます。楽しい。


2006-04-08

_ [私生活] 結婚

昨日入籍しました。

本日のツッコミ(全8件) [ツッコミを入れる]

Before...

_ だて [ありがとうございます。 国益のために女児を作って Ruby ハッカーに育て上げます(笑]

_ babie [おめでとうございます。うちの女児を Ruby ハッカーにする件はすっかり失念しておりました。非国民です。]

_ hwc [お久しぶりです。お元気ですか? おめでとうございます!]

_ tnoma [おめでとうございます。そんな計画が密かに進行していたなんて、、、Rubyハッカーですか。Perlもできたらバイリンガ..]


2006-04-04

_ [Ruby]動的型言語の一番の問題点

babie さんが話題にしてたのでちょっと考えてみました。

自分の考える動的型言語の一番の問題点は、
 
    log_puts(out, msg)
 
ここのoutに何を入れられるのか、何を入れたらいいのか簡単に調べる方法がないという点です。

この「問題点」で困ったことがないです。ライブラリ/クラス/メソッドの使い方に迷うのは、オブジェクト同士の協調関係が把握できないためであって、メソッドのシグネチャのせいではないですね。例えば、net/http の使い方には良く迷いますが、Net::HTTP のメソッド呼び出しを書くのには困らないというか。

例えばシグネチャが log_puts(LogOutputStream out, String message) だったとして、LogOutputStream が知らないクラスだとしたら、out を log_puts に渡せる状態にするにはどうすればいいかは結局調べないといけませんし、そのコストは「何を入れられるのか、何を入れたらいいのか」という型を知るだけのコストよりも高いと思います。

更に言えば、log_puts(out, msg) を見て、out なら少なくとも IO (Ruby の標準クラス)が渡せるだろうと推測でき、またそれが裏切られることがあまりないならば、ますます型情報はメソッドを使うときのヒントとしては必要ありません。

この仮定を裏返して考えると、ユーザの推測を裏切らないためには、できるだけ推測し易いオブジェクトを受け入れるようにメソッドを書くことになります(実際にそうかどうか定量的に調べると面白いかもしれませんね)。

「できるだけ推測し易いオブジェクト」などといっても、必要だから IO ではなく LogOutputStream にしているんだと言われそうですね。ただ、動的型言語は基本データ型の標準クラス(Ruby だと String/Array/Hash など)が強力ですので、クラスの対象ドメインに特化したクラスをあまり作らない傾向があると思います。HTML の属性を表すのに HTML::Attribute クラスを定義せず、Hash でいいやとか。

本日のツッコミ(全1件) [ツッコミを入れる]

_ なおゆき [まったくもって、同意です。]


2006-03-19

_ [Ruby] 真偽の扱い

%!zt! diary(2006-03-17) 偽値

どちらかというと0が偽として見なされる方が見落としてバグになる可能性が高い気がする。plumの罠の話とか。

これは思いますね。Perl などで条件式に変数を入力があるかないかの意味で書くとたまにはまります。

Perl と Ruby と真偽の扱いが異なる点は、空文字列を偽とする、0 (と "0"。Perl は区別しないけど)を偽とするところです(他あったかな)。

Ruby では値が入力されているかを確かめるために、

if input and not input.empty?
  p input
end

と書いたりします。input が nil でなく(=存在している)、かつ空ではない(=入力されている)という意味です。empty? メソッドは Array、Hash、String といった基本的なデータ型クラスのオブジェクトが持っています。特に入力には String が使われることが多いので、上のようなイディオムが良く使われます。rails では Object#blank? として定義されていますね。ここでは Perl と同じく空文字列 "" を偽として扱っています。

一方 0 が 偽だと困ることがあります。0 が意味のある値として与えられるときです。例えば、

  • ユーザの入力
  • 外部プログラムの実行結果
  • ゼロオリジンの設定値

具体例にすれば、0 円の購入物を家計簿につける、ZnZ さんが挙げられている plumの罠、項目の表示順番を 0, 1, 2 ... とするプログラムなどが言えるかと思います。

つまり、0 が偽な言語では、値 hoge が有効かどうかを条件とする際に、

  • 0 は有効な値ではない => 変数をそのまま条件式に => if (hoge)
  • 0 は有効な値である => 変数をそのまま条件式にすると偽になってしまうので、代わりに変数の存在を確かめる必要がある => if (defined hoge)

といった使い分けを必要とするのではないでしょうか。

大変そうだけど、慣れれば自然と回避できるようになるのかな。

本日のツッコミ(全2件) [ツッコミを入れる]

_ なおゆき [> 大変そうだけど、慣れれば自然と回避できるようになるのかな。 2年間ほどperlを使い続けていますが、いまだに慣..]

_ だて [米人が多少のデザイン崩れを気にも留めないように、重篤なバグの原因にならなければ気にしないのかもしれませんね。]


2006-03-13

_ [Ruby]Interviewing Ruby Programmers

O'Reilly Ruby ブログより。Ruby プログラマを面接するときに訊いておくべきこと。「"J2EE" or "EJB" という単語が履歴書に何度も出てくるなら、Java は知らないと解釈せよ」(そして Ruby でも同じようなことがいえるだろう)などなど。実際的かどうかはわかりませんが、話としては面白い。

_ [Rails] Symbol#to_proc に違和感を覚える件

ヽ( ・∀・)ノくまくまー(2006-03-09) Symbol#to_procより例を拝借。

まず、前提。Symbol#to_proc の導入により、

array = [1,2,3]
array.collect{|i| i.to_s}

から、ブロック変数 i を除去することができて

array = [1,2,3]
array.collect(&:to_s)

とより簡潔に書けます。

簡潔なのは歓迎ですが、to_s する主体(オブジェクト i)がコード上からいなくなるのに違和感を覚えます。加えて、慣れ親しんだ collect が別物になってしまった感もあります。array.collect( :proc => &:to_s ) ならまだいいかなあ。

まあ、前者についてはprivate メソッドに一々 self をつけたりはしない(あ、そもそもできない。self. つけられるのはなんだったかな……)ので、慣れの問題なのかもしれません。


2006-03-12

_ [ゲーム] かなぶん

これはまりますね。とりあえず 50 点越えを目標。

ひらがなゲーム - かなぶん

_ [Ruby] Tips の共有

rubycoさんの日記は、プログラミング言語のTipsまとめサイトとして素晴しく機能しているわけだが、これは"結城さんがやっている"ということに依るところが多きい気がする。もし、"結城さんがやっている"ということが、各rubyユーザーに与える精神的な影響を抽出して仮想的な人格を構成できたら、プログラミング言語のTipsまとめサイトを半自動で生成することができないだろうか。

難しいのはベースとなる TIPS を書く人は文責を持たなければならないことかなと思います。つまり、

  • 正しいことを間違えなく書かなくてはならない
  • 書いた文章に継続的に責任を持たなければならない

雰囲気があると、私のような間違いを恐れる人間には参加が難しいです。TIPS として適切な内容か、もっと良いコードはないか、言い回しは適切かなど、その後洗練をしていけばいいことを、最初から思い悩むこと必至です。質問側になら回れるのですけどね。その点、最低限タイトルとタグとコードがあればいいcode snippetsだと気軽かな。(という思考で私は オブジェクト指向スクリプト言語 Ruby リファレンスマニュアルに対峙してしまうわけですが、他の方がこれに書き加えたい/修正したい項目を見つけたときに、どう考えてどう行動するかを知りたいものです。)


最近のコメント:1.tnoma(2006-04-12 00:33) 2.hwc(2006-04-11 22:01) 3.babie(2006-04-09 18:15)

RSS
Creative Commons License
This work is licensed under a Creative Commons License
(note: text only. w/o web design, citations, (re)distributed softwares).