きりかノート 3冊め

おあそびプログラミング

2006-01-01から1年間の記事一覧

RubyCocoa で Objective-C の型情報をどういうスタイルにする?

ひ日誌 11/03 の「addRubyMethod_withType の構文糖」に反応。リンク先での主題ではないけれど、型エンコードを使うのって、そもそもどうなんだろう。今は裏道的な扱いだけれど、オープンにガンガン使うには型エンコードってわかりにくいと思うのだ。たとえ…

やるじゃないか WWDR

今週の木曜に開催される木下さんの「Cocoaセミナー」に行く予定だったのだけれど、先週アタマに肺炎になって仕事を休みすぎてしまったため、どうにもスケジュールの都合がつかない。キャンセルの連絡先が見つからなかったので、ダメもとで案内のメールに返信…

Rabbit-0.5.0 の MacPorts をコミット

しました。svn update 後、sudo port -n upgrade rb-rabbit でアップデートできるはず。ruby-gnome 0.15.0 は % rabbit rabbit.rd dyld: NSLinkModule() error dyld: Symbol not found: _GLIST2ARY2F Referenced from: /opt/local/lib/ruby/vendor_ruby/1.8/…

rb-gnome にまたも苦戦

Rabbit の Portfile は簡単にできたので、さっそく試してみると require "gtk2"のところでエラー。そんなとこ、ありえないっつーの! % port contents rb-gnome | grep gtk2 %うむ、ホントにないや。もう一度 -d -v 付けてインストールし直しして、出力を確…

Dock アイコンを有効に使うためのクラスライブラリ

いくつかのアプリケーションで、Dock のアプリケーションアイコンにアプリの状況を表示するものがある。仕組みとしては、NSApplication の delegate メソッド applicationDockMenu: を使うのだけろうけど、いちいちアイコンのグラフィックを合成してつくるの…

UFS のパーティションを HFSX に変更

Rabbit 0.5.0 がリリースされたので、手元の Portfile を修正して port upgrade していたら、またカーネルごと落ちた。どうもファイルシステムが壊れているらしい。これで4回目くらいだ。今まで / - HFS+ システム用 Users - HFS+ fstab で Users にマウント…

RubyCocoa のサンプルを検証

既知の問題はすべて退治したと思うので、サンプルを動かしてみた。せっかくなので、試した項目をメモ。HelloWorld.rb % ruby HelloWorld.rb "Hello!" ボタンを押すと、コンソールに "Hello again, world!" と出力される "Goodbye!" ボタンを押すと、終了する…

そこって 円記号(¥)じゃなくてバックスラッシュ(\)じゃないの?

と、rubycocoa-devel で Laurent に言われた。そういや Mac ではこの2つの文字は別のコードなんだよね、忘れてた。自分の環境では、JTerminal の環境設定で「円マークをバックスラッシュに置き換える」にチェックをつけていて、端末上では全部"¥"にしている…

いつでもユニバーサルな cc

macosxhints の Compile universal binaries by default という記事で、オプションなしでユニバーサルバイナリをつくることのできる cc が紹介されていた。おもしろそうと思って見てみたが、本当にオプションを追加して execv しているだけだった。うーん、…

RubyCocoa 今日のコミット

automatic ns_overrides がちゃんと動かないケースに対処 ふじもとさんが「RubyRaiseMan でファイルを開くと落ちる」と言っていた件。完全なるイージーミスで恥ずかしい…(さらに修正も1回デタラメな間違いしたし)

RubyCocoa 今日のコミット

プレースホルダの問題を修正 (r1196) Laurent が既に apple-unstable で修正していたらしい([rubycocoa-dev:387])。でも、その修正だとクラッシュはしなくなるけど、メモリリークが起きてしまう問題が残るはずなので([rubycocoa-devel:431])、別のアプロ…

RubyCocoa - retain 漏れの探索 (その2)プレースホルダなんてあったね

RubyTypingTutor がクラッシュする件。[rubycocoa-devel:428]ocm_retain_result_if_necessary() での alloc 時の振る舞いを変更すればクラッシュしなくなるってことは、Ruby 側からの alloc 呼び出しに関連した部分なんだろう。BigLetterView.rb での alloc …

Keynote.app についての豆知識 - スムーズに見せるために

スライド内容じゃなくって、アプリの操作の話な。MOSA Software Meeting 2006 のセッションで、スライド操作でいくつかもたもたしてしまった。最近は Rabbit ばかり使っていたというのがあるかもしれないけれど、反省を込めて、Keynote (現在 v3.0.2) でスラ…

そろそろ、Cocoa Life Vol.3 の季節

そろそろ原稿に手をつけ始めないといけないかなあ。今回は、今年の4月にやった「iTunes のような NSBrowser をつくる」をベースに、NSPredicate とコレクション演算子の機能で集合データを取り扱う方法について書くつもり。発表のときは、コントロールクラス…

RubyCocoa - retain 漏れの探索 (その1?)

[rubycocoa-devel:427] の話。まずひとつやっつけた。RubyCocoa では、Ruby 用に 1 だけ retainCount を確保するようになっている。で、Cocoa のオブジェクトが Ruby 世界にあらわれたときに、この処理をするようにしている。ただし、alloc 直後など、オーナ…

trunk の問題点 まとめ

[rubycocoa-devel:425] の話。NSZombieEnabled アリガトウ という話?今の RubyCocoa trunk では、以下の問題が見つかっている。 sample/RubyTypingTutor で、ドラッグやコピー操作中にクラッシュする 藤本さんの MSM2006 の tutorial_1 で、特定の処理を評…

RubyCocoa 0.5.0 リリース延期のお知らせ

いくつかのサンプルが動作しない問題が確認されたため、0.5.0 のリリース作業は中断しています。開発チームで調査を続けていますが、現在のところ原因の特定にいたっていないため、解決には時間がかかるかもしれません。とりあえず、お知らせまで。個人的に…

まだ、RubyCocoa のユニバーサルバイナリが i386 で動かない

ダメだった…。3度目の正直なるかっ!?ええと、0.4.3d2 は大丈夫だったんだよな。じゃあそれの setup 時の出力と比較してみよう。てきとうに省略。 (0.4.3d2) CompileC .o .m DynamicLibrary.LinkUsingFileList /Users/kimuraw/proj/rubycocoa/src/rubycocoa…

推測 - RubyCocoa のユニバーサルバイナリが i386 で動かない

[rubycocoa-devel:402] の話。ふつうにスクリプトでつくった RubyCocoa のユニバーサルバイナリのパッケージがどうもうまく動かないようだ。0.4.3d2 のときはちゃんと動いてたんだから、その後の変更があやしいよな。というわけで、まずは setup 時の出力を…

このサイトが NOINDEX, NOFOLLOW になっていた

なんだか自意識を差し引いても、検索にひっかからなさすぎると思ったのでトップページのソースをみてみたら、head に <meta name="robots" content="noindex,nofollow" />とかはいってやんの。調べてみたら、ココログの設定で「更新通知」を「いいえ」に設定するとそうなるらしい。ヘルプの説明だと、ココログ</meta>…

RubyCocoa 今日のコミット

NSArray#to_a.each をボクメツ RCArrayAttachment のおかげで、0.4.3d2 から NSArray#each が使えるようになっていたので、それを利用するように変更。ちょっとコードがすっきりに。コミット前に update (svk pull) しなかったおかげで藤本さんとコンフリク…

RubyConf 2006 "Leveraging Mac OS X from Ruby" by Laurent Sansonetti

Web 上のレポートをチェック mputの日記 Nick Sieger 藤本さんの OSM の記事でも思ったけど、RubyOSA はかなりおもしろそう。Automator アクションも書けるはずだし、AppleScript であるがゆえに敬遠していた層を取りこめれば、RubyCocoa 以上に普及しそうな…

0.5.0 準備完了っ!

ドキュメントの更新やら細かい修正やらが終わった。あとは開発メンバーで簡単な確認をしたらリリースするつもり。リリース前に試してみたいひとは、現在の svn trunk をチェックアウトしてください。知らなかったんだけど、Info.plist を Cプリプロセッサに…

宿題その2 - プロジェクトテンプレートをXcodeネイティブに

RubyCocoa の Application と Document base Application のプロジェクトテンプレートが Project Builder のまんまだったので、Universal Binary がつくりにくいというので変換した。はじめは Xcode 2.0 にしようと Tiger の DVD 引っ張り出したんだけど、こ…

宿題その1 - eval でメソッドをオーバーライドしても反映されない

MSM2006での宿題 1/2。メソッドキャッシュなのかなあと思って検証。 require 'osx/cocoa' class Foo < OSX::NSObject def foo(sender) 111 end end obj = Foo.ocm_send(:alloc).ocm_send(:init) p obj.ocm_send(:foo, nil).to_i class Foo < OSX::NSObject d…

RubyCocoa 今日のコミット

lib/ruby 側の osx/appkit.rb と osx/foundation.rb が修正されてなかったのを修正 obj.objc_methods にも 引数を追加。false が渡されたときはスーパークラスを見ないように。(ruby 1.8 の methods と同じ仕様に。objc_class_methods と objc_instance_met…

MSM2006 行ってきた

例によって資料を置いておく。スライドのみ。ちょっと時間足りなかったところは反省。どうせ質問がでるだろうとスキをつくっておいたけど聞かれなかったので、資料に載せなかった個人的な見解。 Q. OpenDoc とか「発行と引用」の歴史があるんだけど大丈夫? …

NSURLProtocol サブクラスの canInitWithRequest: は登録の逆順に呼ばれる

経験的にそうであることは知っていたけど、ドキュメントには書いてないからねえ、と思っていたのだけど、webkitsdk-dev ML で Apple の人がそう言っていたから仕様だと思っていいのかな。SandTrip はそうであることを利用して file: スキームの特定の URL を…

RubyCocoa 今日のコミット

0.5.0 のリリース準備。 今年になってから追加されたサンプル(from rubycocoa.com) の中に ns_overrides があったので削除。 ドキュメント類の最低限の更新(まだ途中) 勢いさえつけば作業はできるのだ、と改めて実感。できるだけ早くリリースできるよう努…

OmniDazzle を Keynote で有効にする

OmniDazzle のエフェクトが Keynote 上で描画されない。ウインドウレベルの関係かなあとおもっていたら、ふつうにヘルプに書いてあった。 Keynote の環境設定で「Expose や Dashboard などによる画面の使用を許可」 にチェックをつけたまえユニバーサルアク…