From: "NAKAMURA, Hiroshi" Date: 2007-06-09T07:40:52+09:00 Subject: [ruby-dev:30939] Re: secrand.rb -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Tanaka Akira wrote: >> 長いファイル名はRubyに合わない感じがしますね。なんででしょう。大クラス主 >> 義だから? とすると本筋はrandom.rbかな。そして誰かがRandomクラスを書く。 >> Railsみたいなのが流行れば、種が1つじゃ困るでしょう。って、誰も困ってない >> んかね。 > > 長い名前は使いにくいから、かなぁ。省略して短くするのは正しく > は無いけど、使いやすさのためにはあえて踏み込む、という慣習は > あると思う。 はい。ostructやpstoreがあるので、私も「新規に略称として導入するほどの名 称」であれば、気にならなかったと思います。ここで「新規に略称として導入す るほどの名称」になりうる理由としては、「固有名詞として覚え易い」「誤り易 い利用法から正しい利用法への誘導になる」など。 というわけで、最初は、srandom.rbはどうかと提案しようと思ったんですが、 この場合関数名はsrandom()で、それはsrand()と混同するので駄目だ、と。 関数形式がなくなった今、srandom.rbはどうですかね? SRandom.random_bytes。 > 種が1つじゃ困る、というのはよくわかりません。シミュレーショ > ン用の疑似乱数ならそうでしょうが、cookie に使う secure > random number ならひとつあればいいような。 cookieに使うsecure RNGについては、ひとつあればよいと思います(*)。それ以 外に、randとsrandに依存しているライブラリが複数あって、それを混ぜて使う アプリケーションの場合、あるライブラリが呼んだsrandが他のライブラリの前 提を壊すことはないか、と。例えば私がsoap4rの中でこっそりsrand呼ぶと、一 緒に使われて発狂するライブラリとか、ないかな。 # すいません、「Railsみたいなのが流行れば」というのは、余計だったかも。 # Railsじゃなくても起きます。 (*) 今回の修正により、種とは無関係になったわけですが。これ1.8にも入れた ほうがいいと思うなー > ブランチメンテナ >> 私だったら、securerandom.rbというかっこ悪い名前のまま追加して、「あーい >> つか直さなきゃ」というトゲにします。そしていつか直す。しかし、互換性のこ >> とを考えると、標準添付ライブラリでそんなことはできないか。 > > 私もメソッド名についてはそのような手段をよくとります。 > > でも、ファイルは古いのが残っていると目障りですし。 そうですね。1.9でもしrubygemsが入るなら、フィーチャー利用宣言(っていう かrequire)をhookできる仕組みを入れて、そこで、存在しないファイル名の指 定を掴まえて書き換えられればいいのかな。 > むしろ、この件については長いほうがいいのだ、という積極的な主 > 張はできませんかね。例えば、しばらく考えて思い付きましたが、 > cookie の生成なんて個々の webapplication がやるものじゃなく > てframework がやるべきものだから、secure random number を直 > 接使うプログラムは少なくて、secrand みたいに短くするほどの頻 > 度はない、とか。 最初に上記の論拠も考えたんですが、cookieの生成しか考えないのであれば、そ もそもsecrand.rbなんて追加せずに、cgi/session.rbに追加すりゃいいですよ ね。そうしなかったってことは、汎用の(cookieの生成以外でも使われる) secure RNGが欲しい、という経緯だろうと思いました(それで最初に経緯を聞き ました)。 だとすれば、RNGとしてrand/srandを使っていたほとんどの層に、スムーズに新 RNGに移行してほしいわけで、やはり短い名称のほうがいいと思います。 というわけで、今のところ「固有名詞でもない略称がちょっとなー」以上は思い ついてません。# なので気にせずどうぞ -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (Cygwin) iQEVAwUBRmnarx9L2jg5EEGlAQIfcAf/U5gSHtc3U0LivA4Tbmlrx1X7QIr/Laoj x5RIXRJlVXLBV3aYqUDZOsXwGpjAvVnpacDmjcgHdh3Uylps6NFwWSWM1A3xK4MU Xfv6cws9mG676rssrNdK/AR4uLdNKjPeyHJ+vbUqTpm9+QIfiXvuwWBbIiOvhrJx wooHRsQyA/Kuv5E1WEzgMeNDX+Cw1+rGGVXLa1aAAoIVnFmP+7s+6q9HbM9kq5l9 42IvR/k2EXVcLQ/8ygbJYTgXboFsmAsrrP+JybPaM9fAQMEpBLliqcpfQ28+tFCd 1rjAw9lPpc+dHKVnhLJllwrireRKA0e9pm1pGnVlIcILZEIqS6uMIw== =8j5a -----END PGP SIGNATURE-----