« 2006年5月 | トップページ | 2006年7月 »

2006.06.28

今日のコミット @ RubyCocoa

次の問題を修正した。

  • 0.4.3d2 でユニバーサルバイナリをつくると ruby install.rb test が必ず失敗する

DYLD_PRINT_LIBRARIES_POST_LAUNCH でロードしたライブラリをエラー出力に出すとき、そのライブラリがユニバーサルバイナリだと、"cpu-sub-type: 0" などの情報が追加で出力される。これを認識してなかったので、ちゃんと考慮するようにした。

|

ActiveResource vs IMAP URL Scheme

遅レスの ActiveURL というエントリを読んでいて、なんとなく RFC2192 IMAP URL Scheme を思い出した。この RFC では、CRUD の R しか定義されていないので、あまり一致しないけど。

  • imap://imapserver/mailbox でフォルダ内のメッセージのリストを表示
  • imap://imapserver/mailbox?keyword%20value で検索
  • imap://imapserver/mailbox/;UID=123 でメッセージを表示

といったようなもの。ActiveResource と比べると冗長かなあ。

|

2006.06.21

昨日と今日のコミット@RubyCocoa

ひさしぶりのような。

  • 自動 ns_override のセレクタ検出の差異に、先頭の "_" は変換しないように
  • Objective-C メソッドの呼び出し時に、パラメータが不足していると勝手に nil を補完する機能を廃止
  • 上述のケースでは例外を発生させる

可変引数のサポートのための準備。NSInvocation では、可変引数が扱えない(setArgument:atIndex: でエラーになってしまう)ので、objc_msgSendv() を使わないとだめってことまでは確認した。

|

2006.06.18

日本Rubyカンファレンス 2006 番外レポート

とても楽しかったし、知恵熱でそうなくらいの刺激。スタッフの方たちの細かい配慮が会場にいっぱいあって、Ruby愛(?)にあふれたイベントだったと思う。もう1週間もたってしまったし、何か書かないとね。

だがしかし、当日メモをとったノートをみたら、22ページもあってまとまる気がしねえ。とりあえず本題でないところについて。今月中にはマトモなものを書くよ、きっと。

  • Rabbit の須藤さんにショッカー人形をもらった。イー!
  • Ruby/Tk の永井さんに、スレッドまわりの相談。やっぱり、rubyを実行するスレッドをひとつにするという戦略らしい。
  • 非OOかつ非LLという化石的環境でメシを食っている自分のような人は少ないらしい。つーか、懇親会で話した範囲ではいなかったよ!
  • もっと人間関係を広げる努力をしないとなあ。顔見知り少ないと間がもたない。
  • どちらかといえば collect。むしろ Kernel#open より File.open。

とりあえずそんなとこ。

|

風力発電に関する書籍あれこれ

はてなが風力発電による「グリーン電力証書」を取得に関連して。風力発電については、以前に興味を持って本を読んだりしたので参考までにメモ。

詳しく知るための本

技術的な比較や導入実績、社会的な影響あたりが気になって読んでみた2冊。両方ともけっこうおもしろい。

松岡憲司 著「風力発電機とデンマーク・モデル」。技術サイドからの視点が中心で、技術の発達やその歴史など。ワット数の増大に伴って、径やメカニカルが変化していくさまなど、読み物としても面白い。工作がしたくなる。タイトルには"デンマーク"としかないけど、ドイツ・オランダ・日本についても多くのページが割かれている。

飯田哲也 著「北欧のエネルギーデモクラシー」。前述の本が技術的なら、こちらは社会学的なアプローチの内容。今回の件の「グリーン電力」は、本書の第1章と第2章で詳しい話が扱われている。なんでそういうものがあるのかとか、なぜそんな仕組みが成立するのか、というあたりに興味のある人には役に立つと思う。はじめて読んだときには、「電力をその発電源により区別する」という発想にとても衝撃を受けた。単なる環境問題ではなく、産業としての位置や経緯といったことも詳しく扱われていて興味深い。ただ、著者の理想としての「成熟した民主主義」によるエネルギー政策の決定という視点もかなり強くでている本だということも書いておこう。

その他

そもそも興味をもつきっかけになったのが、池澤夏樹の「すばらしい新世界」。物語の中で、小型の風力発電機を設計して設置して、メンテナンスを行っているのだけど、「現実にはどうなってるんだろ?」と思ってそこから。小説としても、池澤作品のなかでいちばん好きかもしれない。ハードカバーだけど、通勤電車で何回も読んだ。(今は文庫がでてる)

|

TMPresents 0.3.4

というわけで、ちょっとだけ変更してリリース。0.4.3d2をアプリケーションにバンドルして、ユニバーサルバイナリになりました。

|

2006.06.17

windowWillResignKey: はないのかっ

ないんだけどね。

RubyKaigi でふじもとさんと話しながら、TMPresents を改造した。そのときに、 「スライドの前に別アプリケーションが持ってこられるようになっててもいいかな」とも思った。なので、別のアプリケーションが前面になっているときに ウインドウレベルを通常のアプリケーションと同階層に下げて、他のアプリケーションのウインドウも表示できるようにしてみた。これは、スライドのウィンドウが最前面でなくなったとき(デリゲート windowDidResignKey:)にウインドウレベルを変更するということで実装。

だけど、Command+TAB でアプリケーションを切り替えたときには、

  1. 前面のアプリケーションが変わる
  2. TMPresentsのスライドウインドウのウインドウレベルを変更

という順になるので、2.の時点では TMPresents のウインドウのほうが前になってしまう。このために、選択したアプリケーションのウインドウはスライドウインドウの後ろになってしまって表示されない。Witch などの別のウインドウ切り替えのアプリケーションを利用すれば、意図したとおりには動作する。これは、切り替えのアプリがアクティブになったときに、TMPresents のウインドウレベルが変更されるから(たぶん)。

ここで、windowWillResignKey: があれば、前面のアプリケーションが変更される前にウインドウレベルが変更できるので、Dock や Command+TAB にも対応できるのになあと考えたのだ。ない理由は十分に想像できるので、ただの愚痴。

|

2006.06.13

sendの話・番外編

最近 RubyCocoa 界でいちばんアツい話題といえば、「メソッド呼び出しをどう書くか?」のようだ。

RubyCocoa の特殊ルールとして、

BOOL を返すメソッドには、セレクタの末尾に "?" をつけること

というのがある。この場合に限っては、アンダースコアのスタイルじゃないとちょっとキモチワルイな。

 1. workspace.openFile_withApplication?(path, app)
                                      ^
 2. workspace.openFile?(path, :withApplication, app)
                      ^
 3. workspace.__send__ :openFile?, path, 
                 :withApplication, app
                                ^

openFile?(path, :withApplication, app) とか書けたほうがよかったりする?(6.13 訂正。もともとそうだった。2.と3.を変更)

論理値返すメソッドのうち、複数のパラメータ受けるものってそんなに数はないから、あまり気にはしていないんだけどさ。

|

2006.06.10

RubyCocoa の attachment

クラス階層がふつうになったので、oc_attachments.rb は個別に有効にする必要がない。なので、最上位のクラスで include すりゃ OK なんだけど、OSX.ns_import するための準備がこんぐらがっていて、oc_attachments 中でやろうとするとエラーになる。cocoa_macros.rb くらいしか書ける場所がないんだけど、それもなんだかなあ。

まずは、oc_import.rb さえ require すれば、うまくうごくよう整理することから手をつけよう。

|

2006.06.09

DarwinPorts Ruby-GetText-Package 1.6.0

いつのまにかリリースされていたので、野良 DarwinPorts を更新したよ。

|

なにげに RubyCocoa のクラス階層が Cocoa と一致するように

なっているじゃないか!スーパークラスの依存関係をどう解決するかが、ちょっと悩みどころだったのだけど、const_missing による自動ルックアップがそれ以前に実装されたので、あまり気にしなくてもよくなった。

Cocoa では、内部利用のクラスの名前に "%" とか "_" とかイヤな感じの接頭辞がつくことがある。こういうのがあると、Ruby のクラス(=定数)にそのまますることはできない。どうせ内部利用なので、そいつらは無視してその上位のクラスがスーパークラスに見えるようになるパッチを書いて、ML に投げてみた。[rubycocoa-devel:286](追記:マージされた)

変更のイキオイがすごいので、「どこがいつ変わったのか追うのメンドイ…」とちょびっと思っていたのだけど、ViewVC で見りゃいいのか。CVSROOT をバックアップ用にローカルに持ってきてるので、それを見てもいいけど、ViewVC のほうがらくちん。

|

2006.06.08

ふつける写経会に行ってきたよ

火曜日に、オブジェクト倶楽部が主催の「『ふつうのHaskellプログラミング』写経会」に行ってきた。

自分のバックグラウンドとしては、

  • Haskell超初心者(ふつけるを3章くらいまで読んで、Hello World!だけはやった)
  • 写経会ははじめて

といいうところ。ようするにゼロ。それでも(だからこそ?)得るものはけっこうあり。以下感想など。

  • 1時間てのは、意外とちょうどよい。腹八分目。
  • だいたい2章くらいまですすんだ。
  • わき道にもけっこう行ったり。経験者の話もおもしろい。
  • 教えてもらったこと
    • ghci で :t や :i で関数の情報が見られる
    • doの直後で改行したほうがインデントがそろえやすい

まだ序盤しか読んでないけど、ふつけるはうまく構成されている書籍だと思う。関数型がどうこうとか気にせずに、とにかく手を動かせば理解できそうな予感。

週2回のハイペースなので、さすがに全部は行けないと思うけど、これからもできるかぎり行くつもり。

|

2006.06.07

OmniGroup の新作 OmniDazzle

GTD ツールなんじゃないの?と噂されていた、OmniGroup の新作は OmniDazzle というマウスの視覚効果をつけるユーティリティだったのだ。

MacDevCenter blog のエントリ "Quick OmniDazzle review" でデモムービーをひととおり見ることができる。なんだかファニーなものが多いのだけど、 FlashLight や Cutout 、Focal Point は、プレゼンや説明用のスクリーンショットをとるときなどに威力ありそう。

設定パネルのインターフェイスもチャレンジな感じでおもしろい。これも OmniFrameworks に入らないかなあ。コードが見たい。

|

最近の RubyCocoa

最近あまりできていないのだけど、近況。

RubyKaigi

チケットがとれたので行くつもりな 日本Rubyカンファレンス2006。

なんと、ライトニングトークスにふじもとさんの名前がッ!(申し込みをしたというのは聞いていたのだけど)RubyCocoa の紹介ということで、どんなのか楽しみ。

開発

Laurent がブランチをつくって、そこにガンガンコミットしているので、その確認とか考えてみたりとか。まだそんなに読めてないけれど、コードも整理されててよさそうな感じ。

ここで大きく手の入っているメモリ管理まわりは、いつも理解したと思いながら、次のときになるとまったくわからなくなってる。「あれ?これだと全部解放されないんじゃね?」とか悩むことがちょくちょく。そろそろ書き物をしたほうが、自分のためにもよさそう。

可変長の引数の件も、そろそろ手をつけたいのだけど、ちょうどブランチのほうで直しまくっているあたりなので、手元の検証まではやっとくて感じかなあ。ブランチつくっても、競合したらマージはめんどいからなあ。

|

2006.06.06

やっぱり Haskell のインストールは難関みたい

 % ghc hello.hs -o hello

でカーネルごと落ちた。信じられない。

6.4.1のバイナリは公式で配布されていることに気づいたので、それをいれることに。

|

2006.06.05

第18回 Cocoa 勉強会に行ってきた

とりあえず自分の発表資料。値変換

  • 例によって準備がギリギリ。発表しながら構成を変更したりしたのはいまいち。
  • 時間が守れたのはマル

回数を重ねてきたからか、今回はいつも以上にバラエティに富んでいて楽しい発表がめじろおしだった。仕事で開発しているメンバーも増えてきて、「10.2以前はバグが多すぎ」「Cocoa でスレッド使っちゃダメだってば」などの現実も聞けたのがなんだか。

次回は7月末の予定。その前に「Cocoa Life vol.2」の原稿を書かなくちゃね。

|

2006.06.01

第18回 Cocoa 勉強会のお知らせ(直前)

公式のほうにも出ていますが、今週の土曜日は Cocoa 勉強会(関東)があります。あと3人くらいは見学者も受付できるかも、という状況なので、興味のある方はどーぞ。

予定されているかもしれない発表

  • ドキュメントを書け!
  • 並列処理時におけるクラスのロードに関する問題
  • Spotlightのパフォーマンステクニック
  • PDFKitを使って、PDFファイルを簡単操作
  • MacBook の Sudden Motion Sensor で遊ぼう
  • 値変換(NSValueTransformer)

自分がやるのは値変換。10.3 で Cocoa Bindings と同時に導入された、値変換について。API や カスタムの値変換の作り方については、ドキュメントを見ればわかるので、いろいろな値変換を紹介しつつ、「値の相互変換ばっかりじゃないんだよ」という話をするつもり。

まだ下調べも完了してないってば!

|

ghc のビルドが終わらない

「ふつける」こと「ふつうのHaskelプログラミング」がそろそろ書店に並ぶらしいので、 port install ghc したら、1時間たってもまだ終わらないでやんの。もう寝る。

(追記:どうやら5時間くらいかかったらしい)

|

« 2006年5月 | トップページ | 2006年7月 »