2009年4月28日火曜日

mozilla firefox plugin sdk まだ続く

 前回のサンプルコードを眺めていて、これじゃ、HTML上に複数インスタンスを置けないよなぁ?と、いう事で、複数インスタンスに対応してみる事に…。すると、描画がおかしい。いろいろと突っ込んでみて、わかった事。
  • 基本的な事ですが、wglMakeCurrent( hDC, hGLRC ) から wglMakeCurrent( NULL, NULL ) までがインスタンス毎に排他的に行われる必要がある。
  • Google Chrome が WM_PAINT メッセージをまともによこさない。WM_ERASEBKGND メッセージで代用しているのか?
  • Google Chrome は、WM_NULL メッセージをタイマーのように送信している。
  • Firefox のスクロールバーで移動後の再描画メカニズムがおかしい。WM_PAINT が呼ばれているようなのだが、その後にウィンドウ領域をクリアしているのか?領域計算がおかしくて WM_PAINT をよこさないケースがあるのか?原因が特定できないけど、描画されない場合がある。
 最初は、Google Chrome 行儀悪りーと思っていたが、WM_ERASEBKGND メッセージ時にも描画処理を行えば対処が可能な Google Chrome の方が御し易い。アニメーションしない Flash は、スクロール・バーでスクロールさせると白く抜ける現象を起こしたりしないのかなぁ?という疑問が…。

2009年4月27日月曜日

来たー!!!

 もうじきゴールデン・ウィークですね。私の方は、暦どおりの休みの予定です。まぁ、そろそろゴールデン・ウィークに備えて本を買いだめする時期ですよ…と、今日は物色していて、軽めのこんな本を買いました(ゴールデン・ウィーク前に読んでしまいそうで怖い)。

 こちらは、茂木先生の本ですが、脳の活用法マニュアルは無いけれども、脳の活用法マニュアルたらんという自分の仕事に対するアイデアを際立たせるためには?というミクロな視点にたった書です。って、まだ読んでねぇけどさ…
 こちらは、勝間先生の本です。脳活用法と違って、今度はマクロな視点にたって、自分の今の立場を見つめ直してみようと思います。
 今度は、ブルーバックスの本で、著者は複数みたいです。アルゴリズム・ブームみたいですが、ストーリがわかると、理解度も深まるのではないか?と思いチョイスしてみました。

 本屋は大きい方が品揃えが良いので紀伊国屋とかに行ってしまうのですが、札幌駅中の弘栄堂書店には多分、本好きの店員さんが居て、おまえはこれを読めと言わんばかりに本が並べてあります。こういう本屋さんには、ついつい足が向いてしまいます。そこで、ダン・ブラウンのフェアをやっていて、思わず買ってしまいました。
 と、家に帰ってしばらくすると、嫁さんが「そういえばAmazonから何か来てたよ」と渡された・・・

うひょーーーー来たーーーーー来たでーーーーーー!

mozilla firefox plugin sdk 続き

 とりあえず、CodeProject のサンプルを作成してみたら、アッサリと動いて拍子抜けした。WM_LBUTTONDOWN をハンドリングして、theta の値を反転させると、三角形が逆周りになった。ウィンドウ有りのプラグインは、JavaScript のイベント等とは全く関係なしに動作できるようだ。
 で、サンプルを動かしていて気が付いたのだが、おめぇー、よく見たらFirefoxじゃなくて、Chromeやんけーーーーー!どうやら、Google Chrome はFirefoxのプラグインもそのままパクっているようです。
 調子に乗って、JavaScriptable なサンプルを動かしてみたが、今度は Firefox では動作するものの Chrome では動作しない…。V8エンジンっすか…。という事で、両方をインプリメントしようと思ったら Nixysa を使わないといけないようだ。しかし、このnixysaって、はっきり言うと、ドキュメント無ぇし、使いにくいんだよ。

2009年4月26日日曜日

ubuntu 9.04 インスコ

 家の環境の Ubuntu 8.10 は、無線Lan が使えないままだった(4965agnドライバをコンパイルしてインストールしても、全く認識せずにお手上げ)ので、喜び勇んでアップグレードしました。
 まぁ、8.04 の状況に戻っただけ…。無線Lanは認識するようになったけども、相変わらず DHCP で失敗する。いじりすぎたので、今度クリーン・インストールでもしてみようかと思う。その前に WICD を試すと思うけど・・・。
 ちなみに、世界中からワッとアップグレードしているためか、アップグレードのダウンロード作業には6時間ほどかかりました。

追記:アップグレードしたUbuntu 9.04 に WICD を入れてみましたが、無線LANの4965agn は繋がりません。しょうがいないので、Ubuntu 9.04 をクリーン・インストールしてみましたが、繋がりません。
# iwpriv wlan0
とコマンドを打ってみましたが、priv コントロールが無ぇーと怒られます。え~っ?8.04 の初期状態に逆戻り?今度は、wifi-radar でも入れてみるか?

mozilla firefox plugin sdk 備忘録

 選択肢は、JavaScript, Flash, Silverlight と、いろいろあるのだが、結局O3Dのような事をやろうと思ったら Native しか選択肢が無さそうなので、ぐるりと一周して plugin という話に落ち着いた。ブラウザの選択肢としての IE は既に重要視していない。ActiveX コントロールの開発はバリバリ可能ではあるが、後でどうにでもなるや・・・という事で、plugin を突っ込むことに・・・。つか、今時、独自仕様での開発(=ActiveX, Direct3D)はパスしたいところだ。

 材料
  インストール
  まぁ、展開するぐらいで、特に何もない。Gecko SDK は、c:\libs\xulrunner-sdk というフォルダに展開するものとする。

 プラグインのサンプルのコンパイル
     mozilla/modules/plugin/tools/sdk/samples/simple 
 にあるサンプルをコンパイルする。

  1. npsimple.dsp ファイルをサクラ・エディタで開く
  2. 編集・全て選択
  3. 編集・CRLF改行でコピー
  4. 編集・貼り付け
  5. ファイル・上書き保存

  1. Visual Studio で開く
  2. ツール・オプション・一番上のプロジェクトおよびソリューションにて、以下を設定
  include = C:\Libs\xulrunner-sdk\include
  include = C:\Libs\xulrunner-sdk\sdk\include
  lib = C:\Libs\xulrunner-sdk\lib
  lib = C:\Libs\xulrunner-sdk\sdk\lib

  1. plugin.h から、pluginbase.h を開く
  2. pluginbase.h から、npplat.h を開く
  3. include の順番がおかしいので下記のように修正する。


/**************************************************/
/* */
/* Windows */
/* */
/**************************************************/
#ifdef XP_WIN
#include "windows.h"
#endif //XP_WIN

#include "npapi.h"
#include "npupp.h"

  1. ソリューション・エクスプローラのnpsimple からプロパティを開く
  2. ビルド・イベントのビルド前イベントに下記のコマンドを追加する


xpidl -m header -Ic:\Libs\xulrunner-sdk\sdk\idl nsISimplePlugin.idl
xpidl -m typelib -Ic:\Libs\xulrunner-sdk\sdk\idl nsISimplePlugin.idl

以上

ダメージ

 自転車通勤のダメージが抜けません・・・。腰と背筋と肩周りの筋肉がほぐれなくて、ぐったりしてます。中途半端に休むと筋肉がほぐれないです。まだ、肩が重たい・・・。

2009年4月24日金曜日

いろいろ

 困ったときには、このタイトルで(^_^;

 巡回セールスマン問題の新しい実装、終了した。でも、まだウェブの方は調整中です。

 新人プログラマーがプロのプログラマーとして独り立ちするための7つの条件・・・すみません・・・謝っときます。ここんところ、リソースが足りないが口癖です。実際、足りません。ほんと足りません。どうにもなりません。身の回りの整理整頓ができません。orz...。1.は表現が違うような気もしますが、真実をついてます。今の技術がどこまで通用するか、いつ廃れるか?は、絶えず考えてます。

 自転車通勤、良いです!健康的です。しかし、帰ってきたら脱力してぐったりです。運動した方が頭の回転も集中力も高まる気がします。

 C|C++のライブラリが貧弱なのは認めます。しかし、一昔前に比べたら、今は天国です。

 「新日本紀行ふたたび」と「WALL-E」買いました。うちの坊ちゃん大興奮です!