2009-01-16 色々弄ってますw
rubyとかRailsとか。
◆ [日記][プログラム] rubyの整数型って面白い挙動するなぁ。
ちなみにruby 1.8.7 (2008-08-11 patchlevel 72) [i386-mswin32]。CRuby(MRI)バージョンね。
irbでつつくと、こんな感じ。
irb(main):001:0> 0.object_id
=> 1
irb(main):002:0> 1.object_id
=> 3
irb(main):003:0> 2.object_id
=> 5
irb(main):004:0> 3.object_id
=> 7
irb(main):005:0> -1.object_id
=> -1
irb(main):006:0> -2.object_id
=> -3
irb(main):007:0> -3.object_id
=> -5
irb(main):009:0> 1.equal? 1
=> true
irb(main):010:0> "1".equal? "1"
=> false
irb(main):017:0> 1073741823.object_id
=> 2147483647
irb(main):018:0> 1073741822.object_id
=> 2147483645
irb(main):019:0> 1073741824.object_id
=> 21857200
irb(main):020:0> -1073741824.object_id
=> -2147483647
irb(main):021:0> -1073741825.object_id
=> 21850170
irb(main):022:0> 1073741823.equal? 1073741823
=> true
irb(main):023:0> 1073741824.equal? 1073741824
=> false
irb(main):024:0> -1073741824.equal? -1073741824
=> true
irb(main):025:0> -1073741825.equal? -1073741825
=> false
なので
irb(main):001:0> 1073741823.class
=> Fixnum
irb(main):002:0> 1073741824.class
=> Bignum
irb(main):003:0> -1073741824.class
=> Fixnum
irb(main):004:0> -1073741825.class
=> Bignum
なのです。
Fixnumはクラスのフリをしているけれど、object_idだけ見るとインスタンスは1個しか存在しないらしい。で、object_idは、整数値*2+1。全部奇数。
で、Bignumはクラスなので幾つもインスタンスが存在すると……。クラスのobject_idは全部偶数っぽいなぁ。
この割り当て方に感心したワシ。結構一般的なのか?
整数型で、(普通は使わないと思うけど)インスタンスを比較すると、時々妙な結果になると言うことは分かりました(笑)
似たような話でObject.superclassがnilでnil.classがNilClassで、NilClass.superclassがObjectというループ構造をしているっぽいです。NilClass.superclass.superclass.classがNilClassだしな(笑)
プログラミング言語(rubyな)を勉強し始めて最初に遊んでみたのが、こんな内容なワシ。 なぜ最初にこんな事をするかなぁ(笑)
もっと他にやることあるだろう、と自己つっこみ。
◆ [日記][覚え書き][メモ] rubygemsのアップデート方法
まず最初に怒られた環境変数JAVA_HOMEを設定。javaのインストールディレクトリをさせばいいらしい。やり方は省略。
んで、Windowsで最新のRailsをJRubyで動かす。を参考に。
> jruby -S gem install rubygems-update
> jruby -S update_rubygems
これでgemが1.3.1に上がりました(*゜ー゜)ノ
◆ [日記][覚え書き][メモ] jrubyのアップデート方法
わからんかったから、JRubyのページからjruby-bin-1.1.6をDLしてきて適当に展開。……鬼のように小さいファイルを大量に展開してくれるのな、これ……(笑)
で、NetBeansのRubyプラットフォームマネージャーで、プラットフォームを追加。展開した中\bin\jruby.batあたりを指定してやれば良いらしい。
ついでにFast Debuggerをインストールをぽちっとな。エラッタ……。
一旦RubyGermsへ行ってRubyプラットフォームをJRuby 1.1.6にしてから、新しいGemからrailsを選択してインストール。多分これで使える……かな?(笑)
◆ [情報][メモ] Winny利用の果て――家族崩壊した銀行マンの悲劇
怖いっすよ……
◆ [ネタ][情報] TVA「ヘタリア Axis Powers」キッズステーション放送中止のお知らせ。
ネタをネタと割り切れない人が多すぎるようです。……まぁ笑って過ごせる人ばっかりだったら戦争も起きんわなぁ。
ヘタリア自体は、聞いた当初から「あぶねぇ」とは思ってた事が現実に、って感じですね。