ぼんやりと考えている人

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

Twitter

« November 2023 »
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    

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

最近のコメント

  • ひろしま (ひらがなせいかつ …): じゅくじくんは なくした ほうが いい ですね。ぼくは…
  • たんぽぽ (ひらがなせいかつ …): きゅうに ぜんぶの ことばを ひらがなだけに する…
  • とね まさひこ… (ひらがなせいかつ …): ぼくは ものかき だが, かんじが きらいなので,…
  • とりえ (ひらがなせいかつ …): このさいとは みているだけで なんとなく ほんわか…
  • ひろしま (思い通りの日本語…): こうどな ほんを よめなければ、こうどな たんごを 学…
  • nt4 (思い通りの日本語…): ひらがなせいかつに初めて接し、興味を覚えました。そ…
  • ひろしま (ひらがなせいかつ …): やはり、がいこくに くらしていたり、がいこくとの か…
  • ぷりうりうぷ… (ひらがなせいかつ …): こんにちは。すうぇーでんに すんでいます。いとうさ…
  • Joi Ito (ひらがなせいかつ …): もと べいにち たいしの Edwin O. Reischauer さん…
  • yonay (理屈じゃないとい…): なんか、著者の主張を誤解しているような気がするよ。…

  • 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やメールアドレスはそのまま記述すればリンクになります。