« 2007年10月 | トップページ | 2007年12月 »

2007.11.28

Rucola 0.0.2と RubyInject 0.1.0 もでた

RubyCocoa の新しいバージョン 0.13.0 がリリースされたからか、開発メンバーの個人プロジェクトも新バージョンがリリースされた。

Rucola

Rucola は Eloy Duran を中心に開発している(らしい)、Rails ライクな RubyCocoa 開発環境。新しいスクリーンキャスト もでてる。Eloy のお知らせコメントによると(さんきゅ!)、「より BDD になった」とのこと。

AWDwR2 はやく攻略して Rucola もトライしなくちゃ。

RubyInject

RubyInject は Laurent Sansonetti による、どんなプロセスにでも Ruby インタプリタを送り込んでしまうフレームワーク。進入先のプロセスで DRb サーバをあげて、irb から接続してプロセスをいろいろ操作できる。

ちょっと話はずれるけれど、Leopard になってからはメモリ保護がかっちりしているので、プロテクトされてるとこはいじれないみたい。以前に mach_override で Terminal.app の wcwidth() を差し替えようとして失敗した。

|

2007.11.27

SandTrip 1.0.0 リリース - Cookie に対応

WebKit なブラウザにローカル CGI 機能を追加する SIMBL プラグイン、 SandTrip のバージョン 1.0.0 をリリースしました。

  • Cookie が利用可能に
  • テスティングフレームワークを ObjCUnit から Xcode 付属の OCUnit に変更
  • 英語のREADMEを追加

乗り換えておいてなんだけど、 OCUnit の結果レポートの出力って気に入らない。実行したアサーションの件数を出してくれよう!

|

2007.11.25

RubyCocoa 0.13.0 リリース

RubyCocoaの新しいバージョン、0.13.0 がリリースされました。くわしくは [rubycocoa-devel:1258] を参照してください。日本語のリリースノートは現在作成中なので、しばしお待ちを。(だしました [rubycocoa:456]。長いよ!)

SourceForge から ダウンロード できます。

  • RubyCocoa-0.13.0-OSX10.4universal.dmg - Tiger用のバイナリインストーラ
  • RubyCocoa-0.13.0-OSX10.5universal.dmg - Leopard用のバイナリインストーラ
  • RubyCocoa-0.13.0.tgz - ソースコード

新機能は、Ruby <=> Cocoa 間のオブジェクト変換や、NSDictionary, NSArray, NSString を Ruby の類似クラス的に扱うことができるようになったあたり。あ、Cocoaのクラスでnewが使えるようになったのは、けっこう大きいかも。あとは(多くの)バグ修正やパフォーマンス改善です。

Leopard の出荷に含まれる RubyCocoa は 0.12.0 + アルファなので、0.13.0 のほうが改善されて安定しているはずです。

(2007/11/26 追記)

コミッタの 中川さんによる解説

|

2007.11.23

rubycocoa-devel 1202 の調査

もう1ヶ月近く前になるけれど、[rubycocoa-devel:1202] で「Tiger で動いていたプロジェクトが Leopard で動かなくなった」という投稿があって、その時点の trunk では動いたのでそれを報告して「あとで詳しいことは調べとく」ということにした。

で、ちょっと時間とれたので調べた。trunk で動くからほっといても大丈夫かもしれないけれど、原因がわからないと本当に問題がないかはあやしいものだからね。

問題の状況と発生理由がどうも推測できない(ChangeLog を見てもアタリがつかない)ので、リビジョンを変えつつ実行して、問題の修正されたリビジョンを特定するという二分探索を行った。リポジトリ全体にリビジョン番号付く Subversion に移行してあって良かった。CVS でも同じようなことはできるけど、ちょっと手間だもんな。

手順は次のとおり。

  1. てきとうなリビジョンにさかのぼる(svn update -rNNNN)
  2. そのままだと Leopard でビルドできないので r2094:2095 の RBRuntime.m の変更をパッチとして適用
  3. ソースから RubyCocoa.framework をビルドし DYLD_FRAMEWORK_PATH で読み込ませて再現コードを実行

ということを繰り返して、r2058 で修正されたということがわかった。最後は ChangeLog 見て省略できたけど。

r2058の変更は、Ruby 側で生成された Cocoa オブジェクトのメモリ管理に関する変更(ChangeLog 見るかぎり、修正ではなく改善)。どうもこの変更前では、再現コードではオブジェクトが参照中にもかかわらず開放されてしまうということが起こっていたようだ。けっこーマズイ問題。RubyCocoa の次のバージョンがリリースされたら、ぜったいアップデートすべきなんだけど、今までの MacOS X を見ているとソフトウェアアップデートではバージョン上がらないんじゃなかろうか。

ついでに sample/Scripts/darkroom.rb が Leopard 組み込みの RubyCocoa で動かないってのも調べた。これは、Leopard の RubyCocoa-57 固有の問題みたいで、SourceForge の 0.12.0 (r2001) から最新の trunk (r2138) まで再現できなかった。これはもう調べない。

(2007/11/24 追記)

これ、テストで発見できないのか?だとしたら今のテストに追加しないといかんな。とりあえず r2057 でテスト実行。

   1) Failure:
 test_rbobject_gc(TC_SubClass) [./tc_subclass.rb:249]:
 <10000> expected but was
 <10001>.
 
 360 tests, 2114 assertions, 1 failures, 0 errors

これか。

このテストケースは、Rubyで定義した Cocoa のサブクラスのインスタンスを 10,000 個生成して、GC でファイナライザが呼ばれた回数を検証するというもの。検証対象の値が期待されるものより大きいということは、release/dealloc が呼ばれすぎってことだ。

|

Xcode 2.5用 RubyCocoa プロジェクトテンプレートのインストーラをリリース

しました。0.12.0 のリリースファイルにあります。教えてくれた RubyCocoaスレ 55 の人、ありがとうございます。

このインストーラは、Xcode 2.5 用の場所にテンプレートをインストールします。Tiger 上で Xcode 2.4.x(もしくはそれ以前)を使っている人、もしくは Leopard で Xcode 3.0 を使っている人はインストールする必要はありません

trunk のスクリプトは直したので 0.13.0 がリリースされれば 10.4 用のインストーラに含まれているはずだけど、なんかいつリリースされるかわからん雰囲気あるし。あんまし考えないで 10.4 専用にしちゃったけど、リリースノート読み直していたら、Leopard でも Xcode 2.5 は使えるのね。

|

2007.11.22

RubyCocoa 昨日からのコミット(2007/11/21-22)

2ちゃんねるの RubyCocoaスレで「Xcode 2.5を入れて、RubyCocoa を .dmg からインストールすると、Xcode の新規プロジェクトで RubyCocoa 関連のターゲットが表示されない」との報告があった。原因は Xcode 2.4 までと Xcode 2.5 でテンプレートの置き場所が変わったこと。ちゃんと Xcode 2.5 Release Note にも書いて合った。見落としててごめんなさい。

なので、Xcode 2.5 用の場所にもテンプレート類をインストールするようにした(r2136)。具体的には次のとおり。

  • MacOSX 10.4 (Xcode 2.0 - 2.5) 以下の両方に
    • /Library/Application Support/Developer/2.5/Xcode/ - 2.5用
    • /Library/Application Support/Apple/Developer Tools/ - 2.4以前用
  • MacOSX 10.5 (Xcode 3.0)
    • /Library/Application Support/Developer/3.0/Xcode/ - 3.0用

Developer/Shared/Xcode/ にしておけば 、しばらく(3.1まで?)直さなくもよさそうだけれど、とりあえずの様子見はゲンミツなほうが安全かなと考えてバージョン番号付きのほうに。

で、2.5 用のテンプレートだけのインストーラパッケージあったほうがいいよな、0.12.0 だとインストールする方法ないし。と、準備していたら、パッケージファイルの Info.plist が

 <key>CFBundleShortVersionString</key>
 <string>0.13.</string>

とかへんなところで切れていることに気づいた。直した (r2138)

バージョン番号は 1桁で収まるという Ruby 的な考えで 5文字でぶったぎっていた。甘い考えだった。なんかチカラ抜けたので、今日はここまで。

|

2007.11.19

SandTrip 0.9.9 リリース - Leopard Shiira も ok!

WebKit なブラウザにローカル CGI 機能を追加する SIMBL プラグイン、 SandTrip のバージョン 0.9.9 をリリースしました。

  • Leopard 上のシイラでのエラー時の問題を修正

この異常が発生する条件は、

  • CGI実行ファイルは存在し、実行可能
  • 対象の実行ファイルは、NSTask で直接実行するタイプ(.cgi など。他のプログラムに実行させる .php や .rb でなく)
  • CGI実行ファイルの shebang が無効(実行直後に "Terminating temporary process." で終了する)

というもの。

NSTask でCGI実行ファイルを直接実行するのではなく、/bin/sh -c を経由させるようにしたら解決。sh さいきょー。どうも 10.5 の CoreFoundation Release Note にある "CoreFoundation and fork()" に関係がありそうなのだけど、なんかすっきりしない。

もう 1.0 までバージョン番号が残っていない、どうしたものだろう。

|

2007.11.17

Rabbit を MacPorts 本家に登録しよう!

Ruby で書かれた素敵プレゼンツール Rabbit ではいくつかの MacPorts Portfile を提供していて、それを利用すると port コマンド経由で Rabbit と必要なライブラリが簡単にインストールできるようになってる。てか、自分が Portfile メンテナ。

subversion のログを見てみると、2006年の7月からあったようだ。1年以上たってるし、自分以外にも利用している人もいるようなので、それなりに安定してると判断できるね、きっと。

というわけで、ずいぶん遅くなってしまったけれど、本家に登録を依頼しよう。

現状

Rabbit プロジェクトで提供している非公式Portfileは

  • rb-rabbit - Rabbit 本体
  • rb-rdtool - RDtool 必須
  • rb-rcairo - rcairo まあ必須
  • rb-gnome - Ruby-GNOME2。 本家パッケージを改変して、Rabbit 用に依存関係を調整したりしてる
  • rb-gettext - Ruby-GetText-Package なくてもどうにかなる
  • rb-htree - htree なくてもどうにかなる

となっている。

今後のさくせん

  1. 必要なものを登録
    • rb-rabbit, rb-rdtool, rb-rcairo
  2. rb-gnome を改善
    1. ruby-gtk2 のみでのインストールも可能に
    2. 依存パッケージに rcairo を追加(1.で rb-rcairo 登録後)
  3. コミッタ権限をもらう
  4. 日々メンテナンス

といったところだろうか。まず現時点でできる、1. を #13323 として申請した。しばらく待ち。うちの Leopard WebKit が「macosforge にログインすると落ちてしまう病」にかかっているので、Firefox をインストールしてチケットを登録した。

2-1. あたりもやってしまいたいのだけど、ruby-gnome2-0.16 のリリース版では最新の glib2 や gtk2 でハマる問題がある(#12367)ので、次の ruby-gnome2 のリリースが出たらやることにしよう。MacPorts は古いバージョンをインストールしたいとき、通常の操作ではできないのがやっかいだよなあ。

|

2007.11.15

第26回 Cocoa勉強会 (12/16)のお知らせ

12/16(日)に行われる、Cocoa勉強会のお知らせ。見学の申し込みは勉強会のメールフォームからどうぞ。会場はいつもの初台ではなく、埼玉県の朝霞です。ちなみに関西のほうの次回は、来年2008/2/23(土)に大阪で開催の予定だそうです。

概要

  • 日時:2007年12月16日(日)13:00〜(終了は16:30くらい)
  • 会場:朝霞 産業文化センター JR武蔵野線 北朝霞駅、もしくは東武東上線 朝霞台駅
  • 予定されている発表(随時更新:2007.12.13 現在)
    • Leoprdで変わったNSMenuのまとめ!
    • vNote変換アプリケーション
    • Leopardで発生したCarbonアプリの不具合
    • Leopardのテキストまわりの変更について
    • Quick Lookプラグインの作り方
    • CoreDataのデータMigration(木村:時間余れば)

|

Rabbit on Leopard 確認中

Leopard で Rabbit の確認として sample/rabbit.rd を表示していたら、本文のグリフがなんかちがう。昔は ヒラギノ丸ゴだったのが X11 のちょっとがっかりなフォントに。どうやら、(MacPortsの?)Pango の デフォルトの設定が強化されたせいらしい。いつからかは調べない。

/opt/local/etc/pango/pangox.aliases で、 Sans や Serif といった一般的なファミリに mincho とか日本語の設定もされていた。これで、無効なフォントファミリを指定していたときに、なんとなくヒラギノになっていた道が閉ざされたよう。

ちゃんと ~/.fonts.conf なり書けばいいのだろうけど。

|

2007.11.10

InputSwitcher で「書類ごとに異なる入力ソースを使用」が復活!

http://d.hatena.ne.jp/Psychs/20071108/1194528979#c1194621054の長い説明。

Psychsさん作の InputSwitcher(11/10 時点での最新は 0.2)がとてもとても便利。これは、アプリケーションごとの InputMethod の状態を保存してくれるユーティリティ。

背景

Leopard では、InputMethod の状態がシステムでひとつになっている。Tiger 以前では、システム環境設定 > 言語環境に「書類ごとに異なる入力ソースを使用」と「すべての書類で同じ入力ソースを使用」のラジオボタンがあり、どちらかを選ぶことができたのだけど、Leopard では後者のみが強制されるようになってしまったのだ。

これがどういうことかというと、アプリケーションを切り替えても日本語入力や英数入力の状態がそのままになってるということ(いろいろ省略)。で、これが原因となって

  • メール書く→Quicksilver で他の作業をしよう→入力が反映されない(日本語入力になっているままだから)→ムキー!!
  • ブラウザで調べもの→ターミナルに戻ってプログラミング→でf(日本語のまま)→むきーっ!!

という悲劇が(少なくとも自分のとこで)起きていたわけ。

InputSwitcher 登場

InputSwitcher は、 制御アプリ(サーバ InputSwitcher.app)と SIMBL プラグイン(クライアント InputSwitcherClient.bundle)で構成されている。

  • サーバ:アプリごとの InputMethod の状態を記憶、必要なら InputMethod を変更する
  • クライアント:アプリのアクティブ/非アクティブの状態の変化を監視、変更があれば変更のあったことをサーバに通知する

という仕組みになっている。動作を具体的に説明すると、

  1. GyazMail でメールを書いている。入力は「かな」
  2. ターミナル.app に切り替えてプログラミングしようとする。
    1. ここで GyazMail が非アクティブになるので、クライアントはサーバに「GyazMail:非アクティブ」との通知を送る
    2. サーバは通知を受け取って「GyazMail:最後の入力状態は「かな」」を記憶する
  3. ターミナル.app でプログラミング作業。入力は「英数」
  4. ちょっとメールチェック、GyazMail に切り替え
    1. クライアントはサーバに「GyazMail:アクティブ」との通知を送る
    2. サーバは通知を受け取って GyazMailの最後の入力状態は「かな」だったことを思い出す。そして、システムの入力状態を「かな」に変更

のようになる。もちろん、ターミナル.app 側でのアクティブ/非アクティブ時にも、同じように動作している。簡単のため省略。

これで、アプリケーションごとに入力方法が切り替わるようになるのだ。

0.1 (最初のバージョン)のクライアント初期化処理

クライアントはアプリケーションのアクティブ/非アクティブの変更を監視(というか NSApplication の通知がくるのを待ってる)するために、オブジェクトをひとつ作成する。

このオブジェクトの生成をアプリケーションの起動後にどこかで実施する必要があるのだけれど、0.1 では

  • NSObject と NSWindow を poseAs: したクラスを作成
  • このクラスの -awakeFromNib メソッドでクライアントオブジェクトの生成を行う

という手続きになっていた。このやり方は、

  • ターゲットのアプリケーションで .nib のロードが発生する
  • その .nib には NSObject(のサブクラス)または NSWindow (のサブクラス)のインスタンスがあり、awakeFromNib がオーバーライドされていない

という条件を満たす必要がある。そうでないと、そのアプリケーションでは InputSwitcher が有効に働かない。

ところで SIMBL には、プラグインの Info.plist の NSPrincipalClass で指定されたクラスに +insltall というクラスメソッドがあると、そのメソッドをプラグインのロード時(= 対象アプリケーションの起動時)に呼び出す、という機能がある。これがプラグインの初期処理に使えるよ、という話でした。たしか、SIMBL 0.5 あたりで導入された機能だと思う> +install。SIMBL 0.2 の頃にはなかったはず。

余談

アプリケーションのアクティブ/非アクティブのシステムグローバルな通知って、無いのだね。ひさしぶりに Notification Watcher 立ち上げてチェックしてみたものの、それらしいものは見つからない。起動/終了は通知飛ぶのに。TSM 関連っぽい通知はすごい数が飛んでいた。

InputSwitcher に感動したので SIMBL の作者に donate してみた。ちょっとスジが違う気がしなくもない。

Quicksilver だと…(2007/11/11 追記)

Quicksilver だと効かないことに気づく。あー、アプリケーション本体はアクティブにならないまま動作するからか。

コードを svn のリポジトリ から取ってきて調べてみると、コマンドパネル(なんて呼ぶんだ?)の表示/表示終了のときにそれぞれ "InterfaceActivated" / "InterfaceDeactivated" という通知が発行されていることがわかった。

で、試行錯誤の結果 +[PSInputSwitcherHook install] に以下の処理を追加した。

 if ([appid isEqualToString:@"com.blacktree.Quicksilver"]) {
   [c addObserver:NSApp selector:@selector(activateIgnoringOtherApps:) 
      name:@"InterfaceActivated" object:nil];
   [c addObserver:i selector:@selector(appDidBecomeActive:) 
      name:@"InterfaceActivated" object:nil];
   [c addObserver:i selector:@selector(appWillResignActive:) 
      name:@"InterfaceDeactivated" object:nil];
   [c removeObserver:i 
      name:@"NSApplicationWillResignActiveNotification" object:nil];
 }
  • コマンドパネル表示のときにアプリケーションをアクティブにする
  • コマンドパネル表示のときにサーバにアクティブの通知(アプリケーションが Quicksilver のまま パネル非表示→再表示となったときのため)
  • コマンドパネルの表示終了時に入力モードを記憶させる
  • アプリケーションの非アクティブ時の通知はしない

というもの。activateIgnoringOtherApps: の引数は id でなく BOOL なのでちょっとマズイ。コマンドパネル表示時にメニューバーのアプリケーションが切り替わるのが、うざいっちゃうざいものの、日本語入力になってるよりは全然いい。

|

appcast を自動化 - Sparklemation

また stepwise.com 経由で、Sparklemation という記事。これは、Sparkleフレームワークで利用されている appcast でのソフトウェア更新の配信を自動化しようぜ、というお話。

仕組みは単純で、

  • アプリケーションとそのた配布ファイルを ZIP で固める
  • appcast の xml ファイルを生成する
  • 上記のファイルをアップロードする(ここでは .Mac を使ってるので、ローカルコピーと操作は同じ)

という処理を行って、新規バージョンを配信するというもの。Xcode の構成が Release じゃないときにはエラーにするなど、ちょっとしたチェックも。なんだかんだで appcast ファイル書くのってカッタルイ(サンプルでしか書いたことないけれど)ので、こういうアプローチはよいと思うのです。

で、ひさしぶりに Sparkle のウェブサイト見たら、Sparkle 2.0 とかいうページができてた。なにをするのかよくわからない項目もあるけれど、野心的なプロジェクトみたい。個人的な希望としては、もう個別のアプリケーションごとに appcast のチェックをするんじゃなくて、集中管理するような PrefPane にならないかなあと思っていたり。

|

2007.11.07

次の RubyCocoa リリース

予定だと来週くらい。trunk のバグとか見つけた方は早めに教えていただけると、リリースに間に合うかもしれません。先週後半から、いくつかの問題が見つかって直したりということがあったので、予定より遅れるかもしれませんが。

よろしくお願いします。

|

Leopard のタブ(Safari, Terminal)

Leopard の Safari と Terminal.app のタブが似てる。

  • ドラッグで並べ替えができる
  • 別のウインドウにもドラッグで移動させることができる
  • ウインドウの外にドロップすると、新規ウインドウになる

というすぐれもの。複数のアプリで共通ってことは、これって AppKit 組み込みのクラスなんじゃね?と期待っ。でも、調べてみたところ、AppKit には存在しないし、ほかの場所でとくに部品化されてる(たとえば PrivateFrameworks とか)わけでもないようだ。パーツの画像ファイルもそれぞれアプリケーションバンドルに持ってるし。

先日の Cocoa勉強会で PSMTabBarControl を紹介したのがギリギリのタイミングだったのかと思えばそうでもなく。まだ、こっちの線で深入りしても大丈夫そう。

|

2007.11.05

Xcode いらずの RubyCocoa 開発環境 rucola

RubyCocoa の活発なコミッタでもある Eloy Duran が rucola を rubycocoa-talk で アナウンス してた。RubyConf で(RubiGen の一部として?)発表したもののスクリーンキャスト(4分程度)も用意されている(Eloy のブログからたどれる)。

これは、Rails ライクな RubyCocoa アプリケーションの開発パッケージで、まずスタブを生成して、その後

  • コードの編集
  • rake でいろいろ
  • ビューの編集(nib / Interface Builder)

を繰り返してくことで開発していくというもの。Rails よく知らないので「それっぽいなあ」ということしかわからんのだけど。テストのサポートが気になる。

|

2007.11.03

SandTrip 0.9.8 リリース

はじめに警告!「Leopard 上の シイラ 2.x で SandTrip を利用しないでください。プロセスが暴走する問題が見つかっています」

リリースノート

WebKit なブラウザにローカル CGI 機能を追加する SIMBL プラグイン、 SandTrip のバージョン 0.9.8 をリリースしました。

  • Leopard の Safari でエラー発生時に、アプリケーションごと落ちる問題を修正
  • CGI プロセスの応答を都度ブラウザに返すようにしました。多くの CGI で体感速度が向上するはずです。

シイラのほうは調査中

2.2 のソース取ってきて、Xcode でデバッグなどしていますが、まだ未解決です。

  • システム全体がビジーになる
  • アプリケーションを終了しても、アプリケーションプロセスは実行されたまま(残ったプロセスのターミナルからの kill は可能)
  • CPU の温度がすごく上がる

など、状況としてはかなりヤバイです。万が一調査に協力してくれるという方がいたら、注意深く行動してください。おそらく NSError の SandTrip 側の構成が手抜きなあたりがアヤシイと思っているのですが…

|

続・ruby-1.8.6-p110 で bridgesupport の生成に失敗する(解決編)

ruby-1.8.6-p110 で bridgesupport の生成に失敗するの続き。どうにか解決できたっぽいので、[rubycocoa-devel:1222]として投げた。

原因は Ruby の REXML ライブラリの変更によるもの。Ruby 1.8.6 の p40 で lib/rexml にわりと変更がはいって、それに追従できていない。

  1. [ruby-dev:32040]
  2. REXML::Element#add_attribute の値が文字列じゃないといけない。元々 API の仕様はそうなんだけど、これまでなんとなくうまく変換されていた。現在は、true/false/数値 がアウト。
  3. REXML::DocType の DTD ファイルの場所が normalize されるようになった。そのため、今までダブルクオートでくくって渡していたものがエスケープされてアウト。

これらを解決するよう修正を入れて、ローカルで検証。以下の方法で生成した bridgesupport がすべて一致すること(diff -urw)を確認した。

  • ruby-1.8.6p36(Leopard組み込み), RubyCocoa r2102, BridgeSupport r15
  • ruby-1.8.6p111(REXML修正済み), RubyCocoa r2102, BridgeSupport r15(修正済み)
  • ruby-1.8.6p36(Leopard組み込み), RubyCocoa r2102, BridgeSupport r15(修正済み)

なかなか Leopard でのプログラミングお楽しみ会は遠いねえ。

その後の経過(2007/11/04 追記)

  • BridgeSupport は r16 で修正された。Laurent 仕事はええな。
  • macports ruby はチケット#13135を投げた。コミットされるといいなあ。

|

MacPorts Portfile 用の VIM シンタックス

どういう理由かわからないが、MacPorts の Portfile ではタブ幅が 4 のものが多い。最近ようやく毎回 se ts=4 するのがメンドクサイことに気づいたので、filetype を設定することに。

~/.vim/after/filetype.vim に以下を追加。

 au BufNewFile,BufRead Portfile set ft=macports

で、~/.vim/after/syntax/macports.vim を新規に作成。

 
 " MacPorts Portfile syntax
 " $Id: macports.vim 621 2007-11-02 15:40:55Z kimuraw $
 
 " includes Tcl syntax
 runtime! syntax/tcl.vim
 
 " default Portfile style
 set tabstop=4
 set shiftwidth=4
 
 " enable '.' as a keyword character
 set iskeyword+=.
 
 " portfile(7) keywords
 " ..snip..

ついでに man portfile(7) に書いてあるキーワードも色がつくようにした。-append, -delete は気にしないことに。

なんかもっと楽に書けるような気がするのだけど、vim スクリプトわからんのだ。てかね、ちゃんと探せば先人が絶対見つかると思うのだよ。

|

2007.11.01

EditCast 1.1 リリース そして終了のお知らせ

WebKit の TEXTAREA を好きなエディタで編集できるようにする SIMBL プラグイン、EditCast 1.1 をリリースしました。変更点は次のとおりです。

  • UKKQueue を 0.5 に更新
  • nibtool によるローカライズを Leopard では ibtool で行うように

で、気づいたのですが、Leopard の WebKit では使えないようです。理由は、TEXTAREA が NSTextView のサブクラスではないため。EditCast では

  1. NSTextView をハックして任意のエディタで編集できるようにする
  2. その機能を TEXTAREA の クラスのみで有効にする

という手順で外部エディタによる編集機能を実現していますが、後者のクラスが不明&NSTextView のサブクラスでもないっぽい(すべてのクラスで有効にすると、アドレスバーは有効になるので、機能そのものは有効っぽい)ので、いまのところ打つ手なしです。まあ、使っている人がいる、という話も聞いたことないので問題ないでしょう。

|

ruby-1.8.6-p110 で bridgesupport の生成に失敗する

ウチだけなんだろーか。macports で入れた、ruby-1.8.6-p110 が 10.4 でも 10.5 でも bridgesupport の生成でこける。thread_hooks の有無も関係なし。 p111 でも同様。どうも p40 で REXML がかなり変更されたのが原因っぽいのだが…

Leopard 付属の p36 の添付ライブラリを流用して

 % RUBYOPT=-I/usr/lib/ruby/1.8 /opt/local/bin/ruby install.rb config --gen-bridge-support=yes

だと通ったりするし(diff -r で /usr/bin/ruby で生成したものと一致を確認)、ライブラリしか考えられん。

もう寝る。

|

« 2007年10月 | トップページ | 2007年12月 »