2009年2月2日月曜日

blog移転

誰もみてないだろうけど。。。 これから色々と全部こちらに書くことにしました。

2008年8月20日水曜日

Xcode 2.5でffmpegのmakeが通らない...

原因はmakeのバージョンが古い(3.8)ことでした。

makeを3.8.1にするとちゃんとmakeできます。

2008年7月31日木曜日

MFCのSDIアプリケーションTIPS

MFCのSDIアプリケーションでメニューを消したい場合は、MainFrameクラスのPreCreateWindowでCREATESTRUCTのHMENUハンドラを解放してあげればよい。でもこれだと再度メニューを表示させる場合はどうしたらいいのやら。
http://support.microsoft.com/kb/131368/ja

SDIのフォームを複数切り替えたいってときは、リソースにFormViewを追加して、そこからCFormViewベースのクラスを作成する。MFCのCOLLECTサンプルが分かりやすい。
http://msdn.microsoft.com/ja-jp/library/fw2702d6(VS.80).aspx

ドキュメントサポートのSDIアプリケーションの場合、タイトルにドキュメント名が追加されてしまう(Untitleとか)。タイトルバーに任意の文字列を表示させるには、MainFrameにてOnUpdateFrameTitleをオーバーライドし、その中でSetWindowTitleを使うとよい。

MainFrameのインスタンスをMainFrame外で使用(取得)するには

CMainFrame *pMainFrame = (CMainFrame*)AfxGetMainWnd(); 

2008年7月25日金曜日

centos4+apache cgiトラブルー

perlのcgiがInternal server errorで全く動かない。errorlogを見てみると

Premature end of script headers: ~ 
(2) No such file or directory: exec of ' ~

と出力されている。

これはなんぞと調べてみて分かったことは、なにやらFTPで転送した際にcgiの改行コードがLFではなくCR+LFになっていたため、ファイル先頭のperlパスにいらない文字(この場合CR)がくっついて、perlがみつからないというエラーだった。

FTPクライアントはFFFTPを使っていて、特に文字コードうんぬんの設定はない。サーバに合わせて改行コードを変更してくれるはずなんだけど、上手く動いていないみたい。ぶっちゃけバイナリモードで改行コードLFのcgiを転送すれば動作するんだろうけど、いちいちCR+LFをLFにするのも面倒です。

ということでサーバ側に何か設定がないか調べてみた。centosのftpはvsftpdのようなので、/etc/vsftpd/vsftpd.confを開いてみる。ありましたasciiなんちゃらの設定。コメントアウトされていたのでコメントを外し、YESに設定を変更し、サーバを再起動。めでたくLFに変更されて転送されました。

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