ぼんやりと考えている人

ひろしまなおき (廣島直己)
名前: ひろしまなおき (廣島直己)
住処: シリコンバレー
職業: しがないプログラマ
家族: 愛妻一人、息子一人、娘一人
道具: ハーレー二台、ギター三本
電紙: n at h7a.org

Twitter

« January 2009
S M T W T F S
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

以前にぼんやりと考えたこと

最近のコメント

  • ひろしま (ケータイがあろう…): 子どもにネットを自由に使わせるのは、ぼくも大反対で…
  • noriyukiokada (ケータイがあろう…): ネットの自由すぎるところがちょっと怖いんですよね。…
  • Shin (ケータイがあろう…): まだ、書かれてから十二時間しか経っていないこの文か…
  • ひろしま (そろそろ JTPA シ…): ぼくの熱狂的ファン度ではぼくも負けていないつもりな…
  • 春子 (そろそろ JTPA シ…): ITとかちんぷんかんぷんなのに、危うく廣島さん会いた…
  • ひろしま (虫歯にならない方…): ミュータンス菌の感染経路に関しては、母からという説…
  • kenn (虫歯にならない方…): 虫歯のもとはミュータンス菌ですが、それは先天的なも…
  • ひろしま (前略、ユキ子様へ…): それもまた凄いですね。。。 最初からそれだとかなり滅…
  • chika (前略、ユキ子様へ…): 私昔アメリカから日本に引っ越したとき、引越し荷物を…
  • よーこ (ミイラになってい…): 子孫にも日本語を教えてください。

  • Powered by Pivot - 1.40.5: 'Dreadwind'
  • SPAM Poison
  • XMLフィード(RSS 1.0)
  • Atomフィード

28 June '2007 - 20:46 | 技術動向 RubyCocoa で IOKit を使う

まだよく分かっていないくせに、もしくは、よく分かっていないから、とりあえず RubyCocoa で IOKit を使ってみることにした。初心者なので、なにも怖いもがない。

というわけで、二日ほど格闘した成果が ioservice.rbsmc.rbsms.rbmach.mmyIOKit.bridgesupport の五つのファイル。

順番に説明すると、まず、ioservice.rb は、IOService クラスを定義。一部の関数を簡単に使えるようにするクラスで、たとえば、IOConnectMethodStructureIStructureO とかを使える。レベルが低すぎ。これを ruby でやるのかと。

つぎに、smc.rbsms.rb は、それぞれ IOService クラスの継承クラスである SystemManagementControl と SuddenMotionSensor クラスを定義。これをみれば ioservice.rb の使い方がよく分かるという仕組み。

いちおう、両方とも、単体で実行できるようにしてあって、

$ ruby smc.rb
 CPU-1: 56.50 C
 CPU-2: 52.00 C
Motion: X(0.070) Y(0.000) X(0.863)
  Fans: 2
     0: 2796.00 RPM
     1: 2795.00 RPM
$ ruby sms.rb
X:  20    Y:   3    Z: 221

みたいに動く。ruby でこれができるというのは、なかなか嬉しい。って、ぼくだけか。

ちなみに、sms.rb は、sms.rb all とパラメータをあたえて起動すると SMC で使えるキーをぜんぶ列挙する。なにがなんだか分からないし、どこにドキュメントされてるのかも分からないけれど。

mach.m は、mach.bundle のソース。mach_task_self() はフレームワークのなかにないので、仕方なく bundle でお茶を濁すことにした。これ、IOService では必須の関数なので、IOKit が BridgeSupport でサポートされる日が来たら、RubyCocoa のどっかにぜひ入れて欲しいと思うなあ。

最後に、myIOKit.bridgesupport は名前が示す通り、野良 bridgesupport ファイル。IOKit は BridgeSupport でサポートされてないし、QUICKDRAW がどうとか文句を言われて簡単にはコンパイルできそうもなかったので、使いたい関数の定義だけ適当にでっち上げておいた。C の関数定義関数を ruby から叩けたら、このファイルを捨てられるんだけど、いまのところそれは無理。今後も無理だと思う。レベルが低すぎる。

なお、まったく、誰の何の役にも立たないことをやっているかと思いきや、これで遊んでいる時に OSX::ObjcPtr の動作に不便なところを見つけたので、さくっとパッチを書いてメーリングリストに投げたら採用されたので、少しは世の中の役に立ってるっぽい。

他にも、ObjcPtr#clear ObjcPtr#length などもあったら便利なところだけれど、どうかなあ。こんなの誰も使わないだろうしなあ。

ということで、上の成果は RubyCocoa の trunk じゃないと動かないので、あしからず。暇な人は、svn up して、試してみるべし。

Trackback link:

トラックバック用URLを生成するには、JavaScriptを有効にしてください。



  
情報を記憶する

Emoticons /

酢ハムがいったいどんなハムなのかはともかく…
 

 

通知:
非公開:

注意: 使用できるタグは <b> と <i> のみです。URLやメールアドレスはそのまま記述すればリンクになります。