2008年6月30日月曜日

eclipse 3.4 + CDT で Make & デバッグ

vixy converterをデバッグするために環境を整えてみる。

(1)eclipseをダウンロード。適当な場所に解凍。
(2)mingwリソースから、gccやgdb、makeなどを取得。
(3)eclipseを起動しSoftwareUpdatesからC/C++ Development Platformを選択。インストール。

てな感じで必要なものは揃うが、試しにデバッグさせようとしてハマる。

新規プロジェクト作成でC/C++ Projectを選択。サンプルのmain()をMakeしてexeを作成し、デバッグしようとしてもつまずく。 原因はプロジェクトのProperties-C/C++Build-SettingでBinary Parsersの設定を行わなければならないよう。GNU Elf ParserとCygwin PE ParserのチェックボックスをONにして再度デバッグさせたら正常に動作した。これが分かるまでに1時間。。。

2008年6月13日金曜日

ドラッグ&ドロップのイベントを拾う

SequenceGrabberから脱線してMac版 vixy converter の改造中。今、ローカルのFLVをトランスコードできるようにしています。ローカルにあるFLVのパスを取得する方法として、ベタですけどウインドウにドラッグ&ドロップ(以下、D&D)で取得するのが分かりやすいんじゃないかなーと実装中。とりあえず、分かったことをまとめてみる。

----
NSTextFieldは元々D&Dが可能なんだね。。。でもやりたいのはウインドウのどこでもD&Dだから。

----
D&DをNSViewやNSWindowに実装するにはNSDraggingDestinationプロトコルのメソッドを実装する必要がある。Cocoaアプリケーションプロジェクトで作成されるNSWindowにこのプロトコルを実装するためには、
(1) WindowDDHandlerというクラス名(例だよ)で、NSWindowを継承したクラスを作成。
(2) InterfaceBuilder(以下IB)を開きWindowDDHandler.hをD&Dするとカスタムクラスで選択できるようになるので、デフォルトウインドウのカスタムクラスに割り当てる。
(3) WindowDDHandlerのawakeFromNib:でD&Dを受け付けるタイプの指定registerForDraggedTypes:を行う。FinderからファイルのD&Dを受け付けたい場合はNSFilenamesPboardTypeを指定。ちなみにinitでregisterForDraggedTypes:を読んでもダメ。
(4) NSDraggingDestinationプロトコルのメソッドをオーバーライドする。 動作確認ならNSLog()だけでできるよね。

----
NSDraggingDestinationプロトコルで必要なメソッドは、draggingEntered:とperformDragOperation:。これだけでパスの取得は可能だった。draggingEntered:はウインドウにアイテムがドラッグされるとコールされ、performDragOperation:はドロップしたときコールされる。performDragOperation:の引数からNSPasteboardクラスが取得でき、そこにはNSFilenamesPboardTypeで指定した場合、ドラッグされたファイル名をNSArrayで取得することができる。

----
重要なのは:registerForDraggedTypesをコールして、D&Dを許可するファイルのタイプを指定しておくこと。というかD&Dを受け付けるということを伝えておくこと。

2008年6月6日金曜日

javascriptでcookie

FlashからCookieを弄るためにはjavascriptを介さなきゃだめ?ぽいので、javascriptで簡単にcookieマネージメント。

http://insin.woaf.net/code/javascript/cookiemanager.html

2008年5月26日月曜日

windowsのapacheでperlパス設定

大抵のサーバでPerlのパスは /usr/bin/perl か /usr/local/bin/perl に設定されているけど、windows上で開発してテストする場合、cgiの先頭にあるこのPerlパスをWindows上のパスに置き換えなければ動作しない。でもいちいち書き換えるのは面倒だし〜ということで、色々試してた。そしたらなんとも簡単、Cドライブ直下に /usr/bin/ もしくは /usr/local/bin/とディレクトリを掘って、binディレクトリにActivePerlのperl.exeだけコピーすればOK!

いやー恥ずかしながらしらなかった。

2008年5月23日金曜日

ひさびさApache

version 2.2 になってから初めていじった。。。Windows上での設定に手間取る。。。

2008年4月25日金曜日

愚痴

割り込み作業が多くて、全然進みません(笑

2008年4月16日水曜日

Sequence Grabberの生成

まずWhackedTVの初期化処理から、Sequence Grabber Componentの生成方法を理解。

WhackedTVのメインウインドウのdelegateはWhackedTVControllerクラスなので、アプリケーションを起動するとこのクラスのinitが最初に呼ばれ、起動が完了するとapplicationDidFinishLaunching:が呼ばれる。

initで行っている処理は、
 ・SeqGrabクラスの生成と初期化
 ・レコーディング動作中の動作確認用タイマーのタイマー時間設定
 ・通知の設定  ・プレビューのクオリティーとフレームレートの設定
で、もちろん重要なのはSeqGrabクラスの生成と初期化。初期化で使用しているAPIは
 ・OpenADefaultComponent
 ・SGInitialize
の2つ。

OpenADefaultComponentはComponent ManagerのAPIで、ComponentInstanceで定義される様々なリソースが取得できる(んだよね?)。Sequence Grabber Componentを取得するには、SeqGrabComponentTypeを指定してやれば良い。SGInitializeはその名の通り、取得したSequence Grabber Componentの初期化を行う。