こんなに出来たのは、かなり久しぶり。ことで、明日は恐怖の数学が待ち受けているので勉強をしなければならない。共有スレッドインスペクタのUIについて考えてみた。現在のスレッドインスペクタは、複数の機能をパネル上部のタブで切り替えている。これではバージョンアップを重ねて機能を追加していくとタブの数がどんどん増えていってしまい、扱いにくくなってしまう。スクリーンショット)つぎに、パネルの形。FinderやXcodeのインスペクタパネルは縦長だけど、スレッドインスペクタのパネルは横長。これはどうも使い勝手が良くないような気がする。先に言った、タブの数が増えすぎるのも、ここに繋がると思う。なんか、縦長の方がすっきりするような感じ。そこで、ちょっと改良してみた(スレッドインスペクタ開発中スクリーンショット)。こっちのほうがすっきりする。タブをやめてポップアップボタンで機能を切り替えるようにした。これだと無駄に場所をとることはないし、見た目も美しい(?)。いままでのタブ方式が1回クリックするだけでよかったのに対し、このポップアップ方式は2回クリックしないと目的の機能に切り替えることができない。そんなに頻繁に切り替えることはないだろうけど、やっぱり不便。アプリケーション本体とバッティングしちゃまずいから、ショートカットキーも付けるわけにはいかない。男女に不評...3か月で存続危機(読売新聞)。台湾の鉄道に導入された女性専用車に乗客たちが不満を抱いていて、早ければ11月にも廃止することになるそうです。いう乗客のコメントがありますが、全くその通りだと思います。鉄道のような公共性の高いものが性別によって利用が制限されるのはあってはならないと思うんですよ。とも書いてありますね。日本の女性団体は男性が少しでも優遇されるとすぐに騒ぎ出すのに、女性が男性より有利な状況では何も言わない。いうのは男女平等じゃなくて女尊男卑って言うんですよ。いうか、この記事の見出しもおかしいですよね。」って、まるで日本では好評みたいな書き方じゃないですか。日本でも専用車を嫌がる人は多いと思うんですけど。女性専用車両に反対する会なんてのもありますし、東急東横線で女性専用車の運行時間が縮小されたのも苦情が殺到したかららしいですし。言って、これはただの女性客の機嫌取りにしか思えません。女性専用車以外の痴漢防止策ってないものでしょうか。今日、「スレッドインスペクタ」が原因でThousandがクラッシュするらしい、と名取さんから連絡をいただきました。スレッドを開こうとするとクラッシュするらしい。クラッシュログも送ってくださったわけなんですが、どうもNSURLDownload絡みのところで落ちてるらしい。調べると解放済みのオブジェクトにメッセージを送ろうとしてたらしい。NSURLDownloadには、3つのデリゲートメソッドがある。downloadDidFinish:デリゲートオブジェクトには、これらのメソッドが順に呼び出されるわけです。いうかそうだという前提でコーディングしてたわけなんですよ。processThread:appendingIndex:メソッドの中で使ってたんですが、このメソッドはスレッドを1回開く時に2回呼ばれるんですよ。検証してないけど、多分ログを取得する前と後で1回づつ読んでるんでしょうね。なると先ほどの前提が崩れてしまい、運が悪いと次の順番に呼び出されてしまうわけです。2回目の呼び出しこうなると、話がややこしくなる。downloadDidFinish:の中でreleaseしてたんです。上の順番で呼び出されてしまうと、最初にretainされたオブジェクトはどこからも参照されなくなり、2回目にretainされたオブジェクトも最後のメソッドが呼ばれる段階ではすでに解放済みなわけです。ここで解放済みオブジェクトにメッセージを送ろうとして、クラッシュ。初歩的なミス実はこのバグ、v0.1.xだけで発生する問題。v0.2では看板画像の表示を実装する際にこの部分を書き換えたから問題無し。チェックしたらメモリリークがいくつかあったけど、開いた瞬間にクラッシュなんてことはない。一応v0.2.1を出しといた。Javaとかにあるガベージコレクション、よくわからないんだけど、これがあればこういうミスを防げるんでしょうかね。Objective-CもLeopardでサポートされるらしいですから、待ち通しですよ。昨日、Thousand用プラグイン「スレッドインスペクタ」を公開しました。名前のまんまの機能です。インストールすると表示中のスレッドの情報をパネルに表示することが出来るようになります。ついでに板のローカルルール表示機能もつけました。公開直後、「Tigerでローカルルール表示できねーよ!」って怒られたわけです。このプラグインでは、板のhead.txtをWebViewに読み込ませているわけなんですが、お話を聞くとそのWebViewがhead.txtをHTMLとしてパースせずにそのまま表示してしまったようなんです。head.txtはサーバ側からtext/plainとして送り出されているので、この挙動は正しいわけなんですが、僕の環境(Panther、10.3.9)ではこいつをHTMLとしてレンダリングしてくれていたわけなんですよ。そのままリリースしたらTigerではダメだったわけです。1.3.2でhead.txtを開いてみると、やっぱりHTMLとしてレンダリングされますよ。WebViewはサーバ側が送り出すContent-Typeを無視するもんだと思ったんですけど、Tigerのは違うんですね。loadHTMLString:baseURL:で読み込ませることにした。結局2時間半後にバージョン0.1.1をリリースする羽目になってしまったわけ。AeroXperienceなるものを発見したんですが、NDA的には大丈夫なんでしょうかね。一般には知らされていないLeopardの情報が書かれています。8月9日に書かれたようですが、さっき読みました。Mappingフレームワークが使えるようになるらしいのよ。このフレームワークを使うとテキストを解析してフィルタエンジンなんかをトレーニングさせることができる、と。これはあれに使えるではないか。Thousand用あぼーんフィルタ。ユーザがあるレスを選択して迷惑レスに選択すると、フィルタがそれを解析して学習する。賢くなれば自動で迷惑レスを判別してあぼーんしてくれる。Leopardが待ち遠しくなった。Leopard無理かな......。Thousand」公開。共有えーと、先日のうぃ〜ラブ団子を改良して、任意のキーワードを含むレスを非表示にするようにしてみた。Thousand」に。Additionsからどうぞ。abonefilterってのをクリックすればダウンロードできる。フィルタの対象となるキーワードは複数指定することが可能。入力フィールドに半角カンマ区切りで入力するだけ。そのかわり、カンマを含むキーワードは指定できない。区切りと見なされちゃうからな。その辺は改良の余地あり。今回はバージョン0.1ってことにする。共有さて、Thousandっていう2chブラウザがあります。今のところプレビュー版ですが、僕は個人的に期待しています。なんでかって、その拡張性ですよ。