観察日記 2010-10-05

Integer#[]

0xff[0] とか 0xff[1] とか書けるんだから
0xff[0, 3] #=> 7 と書けるべき
こいつをどう思う
おどろきもきもさ
しかし、まぁわからんでもない
[rgb[0, 8], rgb[8, 8], rgb[16, 8]] などと書ける
(rgb >> 8) & 0xff とかに疑問を持たないのは C に毒されすぎ
整数ってBitArrayじゃないからなぁってのはちょっと
i=8;i[3]=2とかしたいの
2はねーよ
2 は難しいな
整数の[]はそもそも下位bitから0だと固定している辺りに反感を覚えてはいる。Integer#[]とか無くなってもいいのに。
それを捨てるなんてとんでもない
上位ビットからだと負の値で困る
別クラスにすべきだとぼかぁおもうなー
大クラス主義よいよい
泥臭いのが見えるの嫌いじゃないですけれどねw
泥臭い?
Integer#[]は泥臭い
泥臭いっていうのは Integer#size とかを言うのでは
それも泥臭いw
Integer#size って何の役に立つのかわからない。
Integer#size は本当にわからないですね
String#size の代わりに呼ばれて有害だった覚えしかない。
Integer#[] はむしろきれいだと思うけど
計算機がべったりみえるじゃないですか
何故2進数なのかとか
なぜ 2 進数でないのか
Cとかアセンブラを触っている気分に少しだけなれる
3進数でも10進数でもよかったのになぜ2進数なんでしょう?
10進数でn桁目が取れるとか
10 進なら to_s でいいじゃない
2 進を to_s すると大きすぎる
そういうのは程度の問題だし凄く後付っぽい気がするんですがどうなんでしょうか?
もちろん内部表現が 2 進というのもあるでしょうね
ただ単純にbitを取り出す演算がこれまでのプログラミングの慣習としてあって、かつ2進数を高速に取り出すのにC実装が都合よかった。で内部表現の書き方とマッチするのが[]だった
という事だと思うんだけれど。そこに高度な言語設計があったのかなぁ
問題がわからない
まあ正直に言えば 5.times {|y| puts (0..4).map {|x| 18157905[y * 5 + x] }.join.tr("01", " #") } とか書けるのがいいよね
すいません。私も分からなくなってきたけど Integer#[] はむしろきれい vs 泥臭い というのと 2進数をto_sすると大きすぎるから[]は2進数がいい っていう意見に納得できないという辺りだろうか
("%05b" % 18157905[y * 5, 5]).tr("01", " #") とかければもっと素敵なのに!
まあ、任意進数での桁取り出しもあってもいいんじゃないですかね
bit の取り出しは bit って言ってるんだから 2 進数なのではないか
RubyがCやUnixべったりなのはそういうものなので、それはデザイン上の前提としていいのではあるまいか
ところで[]の事を考えるとbitsizeが欲しい
size*8 でなにが困る?
1.bitsize→8はうれしくないお
n[n.bitsize-1]は1になって欲しい
なるほど
ところで、8[-1]が0なんですが
8[-1] は 0 でよい
そうかなぁ
1.0 の 0 だもん
8 だから 1000.0 か
ふむ
0.5[-1]
それあると welcome to the real world が説明しやすい?
まあ説明してないけど
その理屈はおかしい気もする
ところで -1.bitsize は?
難しい問題です
1かなぁ
Float::INFINITY
abs(n).bitsizeと等しいと
n.abs.bitsize
それは bignum の全桁なめないといけない
まあなめればいいがペロペロ
BDISITS*の最後だけみればよくない?
2 の補数表記なので
あれ、そうだっけ
符号別に持ってた気がするけど
ぼくも Integer#[] 作ってて気がついた
符号別に持ってるが 2 の補数
正確には 2 の補数の反転
なるほど

URIのスキームの闇

uriのfile:スキームって表現方法は環境依存なのかなぁ
書きかけのRFCはあったはず
起源切れのinternet draftっていうのが正解か
http://tools.ietf.org/html/draft-hoffman-file-uri-03
tnx
気が向いたらこれRFCにしたいなぁ
ruby -ruri -e'p URI("file://///host/some/path")+"/hoge"'
#
はしかたないのかしら
ruby 1.8.7 (2010-01-10 patchlevel 249) [i486-linux]
ruby -ruri -e'p URI("file://///host/some/path/")'
#
2個'あたまの/'が減ってる
leading /は消したような気がする
で、冒頭のスラッシュ大杉ね
それはさておいてもなんかがっかりだな
lib/uri/file.rbが必要かなぁ
winなfirefoxからsamba経由でunixなホストのファイル参照するとあたまに5こ'/'がついちゃうのよ
それFirefoxのバグじゃね・・・
別にsambaじゃなくてもwinのファイル共有ならいいんだけど
まぁ、3個でも同じ挙動なのでlib/uriもよくない
たしかにchromeだとfile://host/pathで参照できるなぁ
file://host/some/pathか
ruby -ruri -e'p URI("file://host/some/path/")'
#
2個だと問題ないのか
2こでじゅうぶんですよ
file: //host /path で、hostが''な事があるってはなしか
いわゆるUNC
http://blogs.msdn.com/b/ie/archive/2006/12/06/file-uris-in-windows.aspx
{util_mput} File URIs in Windows - IEBlog - Site Home - MSDN Blogs http://tinyurl.com/29t84a3
MSDNさんが仕事してた
firefoxがあたまに5つもつけるのは
file:// + uncの// + /host
と解釈してるのか
http://en.wikipedia.org/wiki/File_URI_scheme Mozillaのばーかってかいてあった
{util_mput} File URI scheme - Wikipedia, the free encyclopedia http://tinyurl.com/2syyta
ひひ
本当に馬鹿だな
RFCにしてからMozillaを締め上げる遠大な計画
そもそもなんで//なんだろうな
remoteの前は//だっけ
そもそもUNCの//のあとに/いらんだろう
Firefoxアホすぎじゃね?
うむ
Internet-Draftもその辺間違ってるな
redmineにチケット投げといた方がいいかな
:URIがleading / 削るの
よくわからんが、投げる側は投げて損はない
もじらのばーかで済ませられるのなら
投げることもないかなぁと
むしろ、もじらに投げる
まずRFCにするのが正解だと思う
なるせさんがんばれ
Rubyのバグが無くなったら頑張る
えいえんにがんばれっ
えいえんはあるよ
ここにあるよ