いよいよWMVファイルが見られるようになるかな

2006年6月30日金曜日 0 コメント
Flip4Mac v2.1 software release - including universal binary support for Intel Macs

数週間以内にFlip4Macの新版(UB)が出るようです。JRAのビデオインタラクティブもMacで見られるようになるかな〜。



Intel Macでテレビを見る Part 3

2006年6月27日火曜日 0 コメント
ピクセラからマルチチューナー対応のMac用TVキャプチャーユニット「CaptyTV Universal」 / デジタルARENA

ほんと次々出ますねー。こちらは録画がMPEGなのかな?どれが良いんだろう。。。

そしていずれにせよ価格がネックであることは言うまでもないという感じでしょうか。

Popupボタンで表示を絞り込む

2006年6月19日月曜日 0 コメント
自分用メモ。せっかくできても、書いておかないと忘れるので。

まず、こんなモデルを作りました。

モデル例

で、別画面でPopupボタンで、表示するものを絞り込む場合。

絞り込み例

試行錯誤した結果、以下のようにしたらできました・・・。
・PopupボタンのcontentにclassificationのArrayControllerのarrangedObjectをバインド
・同じくcontentValuesにclassificationのArrayContollerのarrangedObject.nameをバインド
・selectedValueに、"popup"をバインド
・AppDelegateに、BookのArrayControllerをoutletとして接続
・TableViewにはColumnごとにBookのArrayControllerをバインド

AppDelegateに以下を追加

kvc_accessor: popup
ib_outlets :book_arr

def popup=(value)
@search_name = value.to_s
variables = OSX::NSDictionary.dictionaryWithObject(@search_name, :forKey, "CLS")
temp = OSX::NSPredicate.predicateWithFormat("classification.name == $CLS")
pred = temp.predicateWithSubstitutionVariables(variables)
book_arr.setFilterPredicate(pred)
end

なんで3ペインのテーブルビューと同じようにできないのかさんざん悩みましたが、Selectedなんちゃらで返ってくるものがPopupとテーブルビューでは違うからなのですね。うー難しい。

GoogleカレンダーSafari対応?

0 コメント


Google Calendar、いつのまにかSafariで問題なく使えるようになってました(ヘルプにも出てました)。でもiCalにはまだ対応してないようですね。そして、出力方式にもHTMLってのができていました。

また、Googleパーソナライズドホームに、Googleカレンダーを表示するオフィシャルモジュールが登場してて、さっそく使っています。私ずーっとGoogleニュースをブラウザのホームページにしてたのですが、このところ、パーソナライズドホームがかなり使えるようになってきたので(Gmailやカレンダーも同時表示できるし)、Googleをホームにしてます。

[CoreData]PredicateとFetchの違い

2006年6月18日日曜日 0 コメント
日本語訳はわけわからないし、英単語としても意味不明のFilterPredicate(述語フィルタ)とFetchRequest(受信要求)の違いを解読するのに、とても時間がかかりました。ビューによっては、その違いが全く出ないんですもの。

メモ。間違っているかもしれないので、お気をつけを。
NSFetchRequest
・ManagedObjectContextを出口から絞る。
・そのため、別口でManagedObjectが修正(追加)されると、即座に反映される
・モデルに受信要求テンプレートを作っておくと楽。

FilterPredicate
・コントローラーからビューの段階で、データを絞る。
・そのため、別コントローラーで行った追加・修正は、再度フィルタをかける動作をしないと、変更が反映されない。
・逆にコントローラーごとに別の絞り込みをすることが可能。
・コントローラーにコードを記入

受信済みプロパティ(スマートプレイリストみたいなもの)は、FetchRequestを別の箱に作っておいて、全部に影響される不便さを軽減するってことなのかなー。

Intel MacでTVを見る part 2

2006年6月15日木曜日 0 コメント
Mac&iPodでテレビを楽しむ

おーMacのオフィシャルサイトに、Macでテレビを録画してiPodで持ち出すなんてページができていました。チューナーはIOデータのGV-1394TV/M3。

GV-1394TV/M3 FW H/W DVエンコーダTVチューナーBOX

発売日:2006/05/31

価格: ¥ 28,770




定価は上の通りですが、23157円(6/14 19時半現在)になってます。価格comを見ても、こんなもんかなー。iPodとの連携が楽しそう。私Mac買ってもっとも強く思ったのが、iPodって実は携帯音楽プレーヤーじゃなくて、携帯デバイスだったということ。Windowsだとディフォルトでやれることは限られますが、Macだとスケジューラーから、プレゼンの端末としてまで、あらゆるツールとして使うことが簡単にできるんです。だからHDD版の大容量iPodがあるんだ〜と。うーん、両方併せてボーナスで、かな。

CoreDataのお勉強

2006年6月3日土曜日 6 コメント

Happy Macintosh Developing Time Third Edition Cocoaプログラマのための技術解説書

著者:木下 誠

発売日:2006/05

価格: ¥ 3,990

ISBN: 4861003806




日本初のCoreData詳細解説を含むという上の図書が発行されたので、さっそくCoreData部分を読んでます。前に見た解説書では、エンティティとプロパティを作って、nibにドラッグアンドドロップで簡単に入力画面までできる!とだけしか書いておらず、それじゃーデータをいじりたいとき(たとえば小計の欄を足したい)とかはどうすりゃいいの?と思ってたんですよね。

手探りですが、すこーし分かったような気がします。p.282のiTunes Music Libraryを読み込むimportメソッドを、RubyCocoaバージョンにしてみました。



def import
path = "/Users/[ユーザ名]/Music/iTunes/iTunes Music Library.xml"
dict = OSX::NSDictionary.dictionaryWithContentsOfFile(path)
if (dict==nil)
return
end

entity = OSX::NSEntityDescription.entityForName("Track", :inManagedObjectContext, @managedObjectContext)

                   @managedObjectContext.undoManager.disableUndoRegistration

request = OSX::NSFetchRequest.alloc.init
request.setEntity(entity)

managedTracks = @managedObjectContext.executeFetchRequest(request, :error, nil)
enum = managedTracks.objectEnumerator.to_a
for i in 0..enum.length - 1
@managedObjectContext.deleteObject(enum[i])
end

#request.release
#requestのリリースは不要(禁止)

tracks = dict.objectForKey("Tracks")
enumerator = tracks.keyEnumerator
key = enumerator.to_a

for i in 0..key.length - 1
track = tracks.objectForKey(key[i])
trackObject = OSX::NSEntityDescription.insertNewObjectForEntityForName("Track", :inManagedObjectContext, @managedObjectContext)

title = track.objectForKey("Name")
trackObject.setValue(title, :forKey, "title") if title

album = track.objectForKey("Album")
trackObject.setValue(album, :forKey, "album") if album

artist = track.objectForKey("Artist")
trackObject.setValue(artist, :forKey, "artist") if artist

year = track.objectForKey("Year")
trackObject.setValue(year, :forKey, "year") if year

end

@managedObjectContext.processPendingChanges
@managedObjectContext.enableUndoRegistration

end



ちょっとはまったのが、NSEntityDescription。仕様書みてもそれをどうRubyで書けばいいかわかんなくて、ググりまくり。またNSFetchRequestって、rubyではrelaseしなくていいのかな。releaseしちゃうと1回目は問題ないのですが、もう一度importボタンを押すと、デバッガが立ち上がって、なにやら暗号をはき出してくれるのでした。コメントアウトしたら起きなくなったから、おそらくこの所為だなあと思って。NSDictionaryをhashにできる、とRubyCocoaの説明に書いてあったので、今度はそれを手さぐりしてみます。

ついでにBindingも学ぼうと思ったら、Bindingは前版を見てくれと「はじめに」に書いてありました。orz これって3rd ed.とかなってるけど、実はv. 3だったのでした。また、初めてCocoa使うんだけど、という人には向いてないですね。1から説明してくれてるわけじゃないので。

ThunderbirdがようやくUBに

0 コメント
Thunderbird - 迷惑メールにお別れを

今回のUpdateでようやくUniversal Binaryになったようです。Firefoxも1.5.0.4にアップデートされてました。うーん、でももうApple Mailに乗り換えちゃったしなー。