itok's Lab

昔の開発ネタを記録として残してます

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

CentOS 5.1 インストールメモ(AMD 690)

新しいサーバはAMD 690に乗っかってます。で、これのNICがCentOSのデフォルトのドライバでは認識してくれません。なのでRealtekのサイトからLinux用のドライバをダウンロードしてインストールします。例えば、こんな感じで。 # wget ftp://202.65.194.212/cn…

サーバ復帰

サーバ故障からようやく復帰しました。過去のデータもそこそこ死んでしまっているのですが、おいおいこちらのブログに移行させていくかもしれません。。。 とりあえず、また、よろしくお願いします。

引越のお知らせ

引越といってもサーバのソフト的な移転ではなくて、リアルな引越です。来る5/25(金)に引越します。自宅サーバに乗っかっている当コンテンツも必然的にサーバごと移動するわけですが、その間アクセスできなくなりますのでご了承下さいませ。 多分25日の朝から…

PackageMaker でインストーラーを作るメモ

だいたいのことは、このサイトを参考にすれば大丈夫。 はやぐい/MacOS X 10.4 + PackageMakerでインストーラを作る で、いくつかメモ。 ローカライズの変更は手動の方法しかわかりません。パッケージ内の English.lproj を参考に手動で他言語のファイルを作…

クラッシュレポート拡張:Smart Crash Reports

OSS

多種多様な便利拡張モジュールを作っている unsanity のクラッシュレポート拡張モジュール Smart Crash Reports。OS 標準のクラッシュレポートに独自の連絡先を付加出来ます。こんな感じで 左下が標準の「アップルへ送信」ボタン、右下が拡張された「XXX と…

WebKit を用いて HTML 文字列を描画する

NSAttributedString を用いれば HTML 文字列を HTML として解釈して描画してくれます。基本形はこれ。 // NSAttributedString -(id) initWithHTML:(NSData*)data options:(NSDictionary*)options documentAttributes:(NSDictionary**)dict 10.4以降なら自動…

GUID (UUID) 文字列を生成する

ユニークなIDとして使える(ことになっている)GUID(AppleではUUIDといわれることが多い)の文字列を生成。CoreFoundation に CFUUID があるので、それを使えば簡単。 CFUUIDRef uuid = CFUUIDCreate(kCFAllocatorDefault); NSString* uuidStr = (NSString*…

XML の namespace を取得する

XML ドキュメントで定義されている namespace を取得します。一般的には複数の namespace が定義されていることが多いので、配列で取得出来ます。 // NSXMLElement -(NSArray*) namespaces; 返ってくるのは NSXMLNode の NSXMLNamespaceKind のオブジェクト…

subversion メモ:バックアップとリストア

subversion メモ。リポジトリのバックアップとリストアについて。 バックアップ # svnadmin dump /path/to/rep > svn.dump リストア # svnadmin create /path/to/rep # svnadmin load /path/to/rep svn.dump

subversion メモ:OSX クライアント

svnX というのがあるそうです。普段のコミット作業なんかは XCode かコマンドラインでやってますけれど、リポジトリ操作とはこれの方がわかりやすいかも。

アプリ更新フレームワーク:Sparkle 使用メモ

なんだか、当サイトで一番アクセスの多そうな Sparkle のお話ですが、実際に自作アプリに導入してみてのメモ。 アプリ更新フレームワーク:Sparkle SUUpdater のインスタンスは一つで 当たり前っていえばそうですが、複数の nib にまたがって「更新」メソッ…

QuickTime 対応拡張子を取得

QuickTime は基本的に拡張子でファイルの種別を識別しています(つまり拡張子がおかしかったら中身が正しくでも読み込んでくれない)。で、QuickTime が対応している拡張子のリストを取得するメソッド。 // QTMovie +(NSArray*) movieFileTypes:(QTMovieType…

2つのファイルを比較する

2つのファイルの中身を比較、まあコマンドで言うところの diff 的なメソッド。 // NSFileManager -(BOOL) contentsEqualAtPath:(NSString*)path1 andPath:(NSString*)path2; 比較といっても、一致しているかどうかだけを返します。まずはファイルサイズを比…

WebViewで表示できるかどうかをチェック

あるファイルを WebView で表示できるかどうかを確認する方法。ご存知のように、ブラウザはそのプラグインの仕組みによって、いろんなファイルを表示することができます。そのせいもあって、環境によっては表示できたりできなかったりしますよね。そのへんを…

アプリ名からアプリアイコンを取得

アプリケーション名からアプリケーションアイコンを取得します。まず、アイコンを取得するには NSWorkspace のこのメソッド。 //NSWorkspace -(NSImage*) iconForFile:(NSString*)fullPath これにアプリケーションのフルパスを渡してあげれば大丈夫。じゃあ…

任意の領域にToolTipを指定

NSView 上の任意の領域に ToolTip を指定する場合、例えば、NSTableHeaderView 上でカラムごとに ToolTip を表示する時なんかは、これを使います。 // NSView -(NSToolTipTag) addToolTipRect:(NSRect)aRect owner:(id)anObject userData:(void*)userData; …

HTTPヘッダを確認して不要なダウンロードを避ける

同じURLに何度もアクセスに行くような場合、変更がないのにDLするのはMac側の無駄というだけでなく、サーバへの負担を考えてもあまりいいことではありません。NSURLDownloadでは実際のDL処理がはじまる前にヘッダを取得できた時にdelegateが呼び出されるので…

指定URLをバックグラウンドで開く

URLを指定して別のアプリで開く場合、普通はそのアプリが前面にきてしまいますよね。で、それを抑制する方法。NSWorkspace のメソッドの引数として NSWorkspaceLaunchWithoutActivation を使います。 // NSWorkspace [[NSWorkspace sharedWorkspace] openURL…

TracにWebAdminをインストール

先日導入した Trac ですが、次期バージョンを待っているのも面倒くさくなったので WebAdmin のプラグインをインストールしてみました。 まずプラグインインストールに必要なツールsetuptoolsを持ってきます。で、こいつをまずインストール。 # python ez_set…

ranlib エラー

オープンソースのスタティックライブラリをコンパイルして、自分のアプリに組み込むとかそういう時に、こんなエラーがでることがあります。 xxx.a is out of date; rerun ranlib(1) (can't load from it) /usr/bin/ld: なんやらよくわからんけれど、ranlib …

CoreDataメモ(メモリ関連)

CoreDataメモ。メモリ関連。 NSManagedObjectContext と NSManagedObject は互いに参照を持ちあうが、retain はしていない。 2つのアプリが同じデータストアにアクセスしたり、1つのアプリで複数のデータストアを取り扱う場合、まあ、想像がつくようにオブジ…

CFRunLoopとCFRunLoopSourceの簡単サンプル

RunLoop のドキュメントを見ても、載っているサンプルは CFRunLoopTimer なので、CFRunLoopSource を使った簡単サンプルでも。 CFRunLoopSourceRef src; CFRunLoopRef loop; // (1) void thread() { CFRunLoopSourceContext context = {0}; context.perform …

ドメイン変更

特に意味があったわけではないのですが、ふとドメインをとってしまったので、Labをサブドメインから独立させることにしました。新しいアドレスは http://110k.net/ です。転送設定もしてあるので旧アドレスでも使えますけれど、よかったら新しいほうをどうぞ…

Trac を導入してみる

最近気になっていたプロジェクト管理システム(というとちょっと大げさかもしれませんが)Trac を導入してみました。参考にしたのはこのあたり。 Trac をインストールしてみたよ Sandbox Trac-0.10 無事に導入できて、さあ Ensemble2 の開発ロードマップをこ…

デフォルトアプリに飛んできたイベントを受け取る

さて、デフォルトアプリとしての設定もでき、任意の scheme に従う URL を受け取ることができるようになったわけですが、ではどうやってそれを受け取ったらいいのか、という話。これには AppleEvent の枠組みを使います。Cocoa でいえば、NSAppleEventManage…

デフォルトアプリとして設定する

デフォルトブラウザとかデフォルトメーラーとかのデフォルトアプリとして設定する方法。前述の「デフォルトアプリとして認識してもらう方法」も参照してください(この設定も必要なので)。 これは実のところ関数を呼び出すだけです。が、Info.plist の方に…

NSTimer を使う

ごくごく基本的なことなんですが、何度かはまってしまったので、備忘録として。 NSTimer の生成にはおおまかに2種類のメソッドがあります。 // NSTimer 1: +(NSTimer*) scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL…

デフォルトアプリの候補として認識してもらう

デフォルトブラウザとかデフォルトメーラーとか、そういうデフォルトアプリの候補として認識してもらう方法。こういうのはその対応する URL の scheme 部分が関係しているわけですが、それぞれのアプリケーションで「私はこの scheme を受け取れますよ」って…

table の特定行を再描画

テーブルネタが続きますけれど、NSTableView でデータを読み込むのは reloadData: があって、NSOutlineView だとこれにくわえて reloadItem: っていうのがあるわけですが、データの読み込みというよりは特定の行に対して単なる再描画を行いたい場合は、これ…

table上の任意のcellが表示されるようにスクロール

NSTableView や NSOutlineView で任意の cell が表示されるようにスクロールさせる。 // column 指定 -(void) scrollColumnToVisible:(int)columnIndex // row 指定 -(void) scrollRowToVisible:(int)rowIndex