itok's Lab

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

2008-01-01から1ヶ月間の記事一覧

Labの過去記事を復活させました

サーバ故障からようやく本格的に立ち直ってきました。最後のバックアップがとれていた2007年5月以前のブログデータをそのままの形で復活させました。一応、mod_rewriteも使って、以前のURLでもアクセスできるはず。 http://110k.net/old/ 2007年5月以降のデ…

iPhotoプラグインを作る「フォト蔵編」-6 : フォト蔵APIヘのアクセス-2 : 写真のアップロード

前回までの NSURLRequest の話を利用して、実際にフォト蔵へ写真をアップロードしてみましょう。使用するAPIは photo_add です。 #define ASCII_DATA(str) [(NSString*)(str) dataUsingEncoding:NSASCIIStringEncoding] { NSURL* apiUrl = [NSURL URLWithStr…

iPhotoプラグインを作る「フォト蔵編」-5 : NSURLRequest -2 : データ転送

次は、NSURLRequestでデータを転送する話。特にPOSTの場合。 これもよくわからなかったので、いろいろとネットを徘徊した結果、こちらを参考にしました。 CocoaDec:HTTPFileUpload 要するに、マルチパートのメッセージを自前でこしらえる必要があるっていう…

iPhotoプラグインを作る「フォト蔵編」-4 : NSURLRequest -1 : Basic認証

ちょっとの間、フォト蔵、というよりCocoaによる通信のお話。 CocoaでHTTP等の通信を行う場合、NSURLRequestを使うのが一般的でしょう。ここでは、NSURLRequestの一般的な使い方、というより、ちょっとだけ突っ込んだところを見てみます。 で、Basic認証です…

iPhotoプラグインを作る「フォト蔵編」-3 : フォト蔵APIヘのアクセス-1 : まずはcurlで

さて、プラグイン側のひな形も出来たところで、次はフォト蔵へのアクセスを考えましょう。 多くのWebサービスがそうであるように、フォト蔵も外部からアクセスするためのAPIを公開しています。 フォト蔵API (β版) このAPIはRESTと呼ばれるタイプでして、もの…

iPhotoプラグインを作る「フォト蔵編」-2 : iPhotoプラグインの作り方-2 : ひな形作成

さて、次は、サンプルソースを参考に、自前のプラグインのひな形を作ってみましょう。手順として大事なのは、ざっとこんな感じです。 Cocoa Bundleプロジェクトを作成 拡張子を .iPhotoExporter に変更 .nib ファイルの作成 File owner として ExportPluginP…

iPhotoプラグインを作る「フォト蔵編」-1 : iPhotoプラグインの作り方-1 : サンプルソースを触る

まずは、iPhotoプラグインの作り方を調べます。。。と、Appleのサイトを見ても何にも載ってませんねえ。。。 いろいろ、徘徊した結果、わかったこと。iPhotoプラグインの作成なんて公式にサポートされているものじゃなさそう。いわば、みなさんがハックした…

iPhotoプラグインを作る「フォト蔵編」-0 : はじめに

このシリーズでは、国内大手の写真共有サイト「フォト蔵」へ、iPhotoから直接写真を投稿するためのプラグインを作成する手順を紹介していきます。紹介、といっても、僕自身もiPhotoプラグイン作成は初めてのことなので、試行錯誤しながら、と。はてさて、ど…

iPhotoプラグインメモ

iPhotoの書き出しプラグインの作り方。このあたりを参考にやってみましょう。 Writing PlugIns for Cocoa Developing an iPhoto export plugin (英語ですけどね)

Leopard の新機能 NSCell の expansion frame を抑制する

Leopard になると、例えば NSTableView 上のとあるセルにカーソルを持ってくれば、勝手にそのセルの内容が ToolTip みたいなものとして表示されることがあります。これは、NSCell の新機能の一つである expansion frame というやつだそうです。 NSCell では…

CalendarStoreを使う-3「終日予定は?」

繰り返し予定は無事に取り扱えることがわかりました。では、終日予定は、といいますと、、、 そもそも、イベントクラスである CalEvent のプロパティとして isAllDay というものがありまして、それがまさに終日予定かどうかを示しているわけですが、ここで問…

CalendarStoreを使う-4「データ変更を通知する」

iCalのデータっていうのは当然のことながら、同時にいろんなアプリケーションからアクセスされます。なので、データを変更した場合にはそれを他のアプリケーションに通知しなければなりませんし、また他のアプリが変更した場合もその通知を受けとる必要が出…

CalendarStoreを使う-2「気になる繰り返し予定」

自分でデータをすべて解釈していた時に、一番大変だった「繰り返し予定」。それは、本ブログの最初のころのエントリ「iCalとiCalendar」にもあらわれておりますけれど、さてさて CalendarStore ではどうなっているでしょうか。 ぱっとみたところ、CalRecurre…

CalendarStoreを使う-1「基本:イベント取得」

とりあえず、既存のカレンダーデータへアクセスしてみましょう。 基本的には CalCalendarStore を使うところからはじまります。例えば、カレンダーの一覧を得るにはこういう感じで。 NSArray* calendars = [[CalCalendarStore defaultCalendarStore] calenda…

CalendarStoreを使う-0

Leopardで追加されたフレームワーク、CalendarStore.framework。まあ、つまりはiCalのデータへのアクセッサフレームワークとでもいいますか。ざっくり見た感じでは、追加削除はもちろん、検索とかいろんな部分をきれいにラッピングしてくれているみたい。 拙…

トップページを差し替える

cakePHPのトップディレクトリ (app/webroot) にブラウザからアクセスすると、デフォルトでは app/views/pages/home.thml を参照しに行きますが、いきなりなにかしらのアクションをおこしたい場合、つまり別ページを参照したい場合は app/config/routes.php …

XML_Feed_Parserで”Indirect modification of overloaded property”

PHP5.2以降限定の話だと思いますが、PEAR::XML_Feed_Parserでforeach文を使用すると Indirect modification of overloaded property XML_Feed_Parser_...::$idMappings has no effect といったNoticeが出力されます。__get関係の問題なのかな?とか思ったり…

cakeでファイルアップロード

FileHandlerコンポーネントを使うと簡単。 テーブル名やフィールド名が固定されてはいる(もちろん、オリジナルソースの改変で変更可)けれど、自分で自由にフィールドの追加ができますし、とりあえずcakeの枠内で楽にアップロードできます。 フィールドを追…

スリープ状態への移行と復帰を検知する

スリープへ移行するタイミングと、スリープから復帰するタイミングをとらえます。10.2までだと多少下層のコードにアクセスしないとダメだったんですが、10.3からはCocoaでアクセスできるようになりました。 NSWorkspaceWillSleepNotification // スリープへ…

NSMenuの表示直前に処理をする

メニューの中身がなにか別のデータに依存していて、そのデータの変更が結構頻繁だったりして、データ変更があるたびにメニューの中身を書き換えなくちゃいけなくて、それだったらメニューを表示する時(正確には表示する直前)に毎回データの中身をチェック…

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

OSS

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

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

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

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

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