SSブログ
プログラミング ブログトップ
前の10件 | 次の10件

PaTrash2.0を作る - その7 [プログラミング]

最近、集中できる時間がなくてPaTrash2.0がなかなか進まない。もうちょっとなんだけど、時間が経つと何をしていたのか忘れてしまって、自分のコードを見て思い出すという作業が最初に必要になる。他のみんなはどうしてるのかなあ。普通の人はそんな早く忘れないのかなあ。

今日はバックグラウンドアプリのユーザインターフェイスのためにシステム環境設定を使うことについて。

続きを読む


SpaghettiMazeMakerのレビュー [プログラミング]

もうずいぶん前に書いて、すでにすっかり忘れていた曲線迷路生成アプリSpaghettiMazeMakerレビューをなぜかいまごろ上げてくれた。他所のコピペではなくて、ちゃんと自分でアプリを動かしてコメントをしてくれているので作者としてはうれしい。AdvantagesよりDisadvantagesのポイントのほうが多いのは、まあそれぞれのコメントを見れば納得できる。でも、一番のポイントであるアナログな曲線の迷路を生成する(non-cell based)と言う点にコメントがないのは残念である。その旨コメント追加した。

しかし、まあ、そんなもんだろ。これでも十分ありがたい。

実行時にOSのバージョンを調べる7つの方法(PaTrash2.0を作る - その6) [プログラミング]

アプリがどのバージョンのOSで動作しているか知りたいときがある。Mac OS XはAPIの追加削除が激しいのでいろいろなバージョンをサポートしようとすると実行時に知る必要がある。

たとえば、このときのNSFileManagerの簡単メソッドは10.6以降でないと使えない。使えるバージョンならこれを呼んで、使えないバージョンなら拡張子を調べるというふうに分岐させる必要がある。Cocoa/Objective-Cなら、メソッドが定義されているかどうかを実行時に直接調べればいいけど、メソッドの仕様変更がある場合やCore FoundationやCarbonではその手は使えない。

また、アプリによっては古いバージョンでは機能が限定されてしまう場合、ユーザにその旨報告する必要がある。そのとき「あんたのMac OS Xはこれこれなのでなになにの機能が使えません」と表示する必要があるかもしれない。この場合、単にAPIが動作するかどうかではなく、ユーザに理解できる形でOSのバージョンを表示する必要がある。

Mac OS Xのバージョンを調べる方法をまとめてみる。

続きを読む


PaTrash2.0を作る - その5 [プログラミング]

Mac OS XのユーザがFinderでみると普通のファイルなんだけど、プログラミング上はディレクトリに見えるバンドルとパッケージ。前回はこれらを区別する方法が何通りかあることを確認した。

今日は、これらがどういう結果を返すかを調べて、それがそれぞれ微妙に違っているということを示すことにする。

続きを読む


PaTrash2.0を作る - その4 [プログラミング]

間があくとどんどん忘れてしまうので、早く片付けたい。前回はMac OS Xの「バンドル」について調べた。バンドルは実はディレクトリで、いろいろなリソースをひとまとめにしておくための手段だった。これは古いMac OSの「リソースフォーク」の「よいところ」と「わるいところ」を昇華するように、その代替として考えだされたものだと思える。

バンドルはFinderで見るとひとつのファイルとして表示される。

プログラミング上は、NSFileManagerやBSDレイヤではフォルダとバンドル/パッケージの区別はつかない。

では区別したいとき(すなわちFinderと同じ見方をしたいとき)どうすればいいか、というといくつかの方法がある。
  • NSWorkSpaceを使ってUTIを調べる
  • NSFileManagerの新しいメソッドを使う
  • CoreServicesのFile managerを使う
  • ApplicationsServicesのLaunch Serviceを使う
などである。一気に調べてしまおう。

続きを読む


PaTrash2.0を作る - その3 [プログラミング]

普段の日は帰ると晩飯を食べて酒を飲んで寝てしまうだけになってしまったので、あまり進まない。1週間経つと忘れてしまう。前回を思い出すと「dll地獄の話」だった。Mac OS Xではそれを避けるためのメカニズムが考えられている。そのひとつ、バンドルの話。バンドルは自分で使うライブラリやフレームワーク(Windowsななdllファイル)を自分自身の中に格納できる。今日はその構造について。

続きを読む


PaTrash2.0を作る - その2 [プログラミング]

ちょっと完成度が低くて恥ずかしいのでPaTrashの2.0を作ることにした。それほど大変な作業というほどではない。さくっと終わらせてさくっと公開したい。

昨日は、1.0からどこを修正するかをまとめた。ゴミ箱に入った日はちゃんと覚えておくようにして、ゴミ箱の中身のサブディレクトリまでスキャンするためにNSDirectoryEnumeratorというクラスが使えることを確認した。NSDirectoryEnumeratorはNSEnumeratorのサブクラスだけど、「タコツボサブクラス化」の典型のようなクラス。NSEnumeratorとNSFileManagerとを組み合わせれば、メソッドの再帰呼び出しで実装できるだろう、と思える。わざわざFoundationフレームワークの中に含まれているのは、やっぱり効率的な実装がされているのかもしれない。それとも単にFoundationの他のクラスが内部的に使っているからだけかもしれない。まあ、使えるなら文句はない。

今日はそのNSDirectoryEnumeratorの使い方をレビューして、そのあとを続ける。

続きを読む


PaTrash2.0を作る [プログラミング]

先日作ったPaTrashはいちおう動作するものができたのでアップしたけど、僕のアプリとしては完成度がちょっと低いと言わざるを得なかった(もちろん僕の基準において、だけど)。それ以外にも、僕の思い込みのせいで非標準的なコーディングになっている部分もある。

そこでやっぱり、2.0を作ることにしよう。PaTrash1.0とはどういうアプリだったかというと、ゴミ箱の中の指定されたタイプのファイルだけを、一定時間後に選択的にゴミ箱から消去するユーティリティだった。設定用のアプリと実際に消去を実行するヘッドレス(コマンドライン型)のアプリとの組み合わせで動作していた...

続きを読む


ゴミ箱監視ユーティリティ - その4 [プログラミング]

ということでできたアプリがこれ。
0307patrash.png
名前は「PaTrash」。ゴミ箱(Trash)を監視(Patrol)してちょとだけ掃除するので。アイコンは犬がゴミ箱あさりしてるところ。あまり犬に見えない(でもかわいく描けたのでちょっと気に入ってる)。例の「フランダースの犬」のパトラッシュ(そっちはPatrascheという優雅な綴り。発音は同じだけど)とは他人のそら似である。

続きを読む


ゴミ箱監視ユーティリティ - その2 [プログラミング]

先週末どたばたと作ったユーティリティの技術的なポイントを整理しておく。まず、ゴミ箱に限らずMac OS Xの一般のフォルダの内容の変化を検出する方法について。

続きを読む


前の10件 | 次の10件 プログラミング ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。