RubyObjectクラスのコンストラクタ

RubyObjectクラスのコンストラクタは次のようになっています。

   1      private RubyObject(){};
   2  
   3      public RubyObject(Ruby runtime, RubyClass metaClass) {
   4          this.metaClass = metaClass;
   5          
   6          if (runtime.isObjectSpaceEnabled()) addToObjectSpace(runtime);
   7          if (runtime.getSafeLevel() >= 3) taint(runtime);
   8      }
   9  
  10      protected RubyObject(Ruby runtime, RubyClass metaClass, boolean useObjectSpace) {
  11          this.metaClass = metaClass;
  12          
  13          if (useObjectSpace) addToObjectSpace(runtime);
  14          if (runtime.getSafeLevel() >= 3) taint(runtime);
  15      }

RubyObjectクラスのコンスラクタは、Rubyの実行環境であるruntime、作成されるRubyObjectインスタンスのメタクラス、そしてObjectSpaceクラスを有効にするかどうかのフラグを引数としています。

ObjectSpaceクラスは、Rubyの全てのインスタンスへの参照を持ちます。Javaでこうした機構を持つことは、非常にコストの高い選択になってしまうため、JRubyのデフォルトではオフになっています。

metaClass変数には、オブジェクトのメタクラスが入ります。メタクラスはRubyClassクラスのインスタンスです。そして、RubyClassクラスは、RubyModuleクラスを親クラスに持ちます。もちろん、そのRubyModuleクラスの親クラスは、RubyObjectクラスです。

また、デフォルトコンストラクタがプライベートになっています。これは、NEVERとUNDEFという特殊な定数のために使われています。NEVERは、配列の最後に配置される「番人」として利用されるとJavaDocに書かれていますが、どうやら必ずしもそうというわけではないようです。

posted by Png takai on Tue 28 Oct 2008 at 23:36

iPhoneのキーボードが出現するときには、slide up のアニメーションがかかりますが、このアニメーションの開始から完了までの時間間隔は、0.3秒のようです。消える時のアニメーションも同様のようです。

ドキュメントを調べても取得するAPIがわからなかったのですが、 UICatalogのサンプルアプリケーションの中で、定数が定義されていました。

キーボードの寸法については、NotificationのuserInfoの中の値から調べられます。

posted by Png genki on Mon 27 Oct 2008 at 15:38

iPhoneのツールバー(UIToolbar)の高さを取得する方法のメモです。

   1  - (CGFloat)
   2  heightForToolbar
   3  {
   4    UIToolbar *toolbar = [UIToolbar new];
   5    [toolbar sizeToFit];
   6    CGRect frame = toolbar.frame;
   7    [toolbar release];
   8    return frame.size.height;
   9  }

何かどこかに定数定義とかがあるかもしれないですが、 とりあえず sizeToFit すればあるべき高さに収まるようです。 UIStatusBarでも同様ですね。

posted by Png genki on Mon 27 Oct 2008 at 15:32

札幌Ruby会議01で発表してきました
http://kakutani.com/20081025.html#p01

角谷さんの資料にあったcucumber。
サンプルがcucumberのgithubにあったのでリンク。

http://github.com/aslakhellesoy/cucumber/tree/master/examples
http://github.com/aslakhellesoy/cucumber/tree/master/examples/japanese_calculator
http://github.com/aslakhellesoy/cucumber/tree/master/examples/calculator

japanese_calculatorは角谷さん製です!

posted by Png satoko on Mon 27 Oct 2008 at 13:24

少し前にgitでのHEADが何か・どこか解決したので、リブログしておきます。

http://www8.atwiki.jp/git_jp/pub/Documentation.ja/user-manual.html#manipulating-branches

特別なシンボル "HEAD" 使用すると、常に現在のブランチを参照することができます。実際 git は .git ディレクトリにある "HEAD" という名前のファイルを使用して現在のブランチの場所を記憶しています。

   1  $ cat .git/HEAD
   2  ref: refs/heads/master

posted by Png satoko on Mon 27 Oct 2008 at 12:09

今話題の gemspec.info でs21gブログのOpenIDでログイン出来るようにしていただけました。

まいむぞうさんありがとうございます!

s21gブログのOpenIDは、

   1  blog.s21g.com/openid/<user id>

の形式です。

posted by Png genki on Mon 27 Oct 2008 at 11:08

昨日のRails勉強会でMaihaさん、Yuguiさんと話してましたが、 PayPalが日本円でのマイクロペイメントサービスを開始したようです。

PayPal、日本円でもマイクロペイメントサービス開始

米eBay傘下の決済サービス大手PayPalは22日、少額決済を行える、いわゆる「マイクロペイメント」サービスを拡大したと発表した。米国だけでなく、日本円など19通貨にも対応した。

この業界でB2Cサービスを展開してる会社にとっては、結構大きな出来事じゃないでしょうか。

See Also

posted by Png genki on Mon 27 Oct 2008 at 07:35

JRubyオブジェクトの構造

指針

JRubyのソースコードを読むにあたって、オブジェクトから始めます。これは、『Rubyソースコード完全解説』を真似してのことで、特に深い意図はありません。この章では、JRubyのオブジェクトについて、次の順番で見ていくことにしましょう。これも、真似ですね。

  • アイデンティティ
  • メソッド
  • インスタンス変数

アイデンティティ

Meyerの『オブジェクト指向入門第2版』によると、オブジェクトとは「単に何らかのクラスのインスタンスである(邦訳P212)」と身も蓋もないことが書かれていました。その表現に倣うなら、JRubyのオブジェクトとは、「単なるRubyObjectクラス(とその子クラス)のインスタンス」です。

posted by Png takai on Mon 27 Oct 2008 at 06:19

技術評論社さまより、WEB+DB PRESS vol.47 を献本いただきました。 どうもありがとうございます。

WEB+DB PRESS Vol.47
WEB+DB PRESS Vol.47
posted with amazlet at 08.10.25
WEB+DB PRESS編集部
技術評論社
売り上げランキング: 127

今号はmemcached特集が面白かったです。いろいろ参考になりそうです。 各言語/ライブラリからの利用方法もまとまっています。 笠谷さんのObjective-Cの記事も、 これから始める人には参考になりそうですね。

posted by Png genki on Sat 25 Oct 2008 at 05:33

Railsのacts_as_searchableプラグインに類似検索機能をつけた acts_as_searchable_with_similarityを、GitHubに移管いたしました。

http://github.com/genki/acts_as_searchable_with_similarity/tree/master

今後はこちらをお使いいただけるとありがたいです。

posted by Png genki on Sat 25 Oct 2008 at 05:22