jFD開発したりしなかったり日誌
2005-10-22 [長年日記]
_ お袋来たる
お袋が上京してきて、整体をしていってくれた。
Oさんの噂話なんかをしつつ整体。
あと、酒を控えろと怒られた。
ごもっとも。
あれは脳への影響がでかいそうで、これしか資本が無いので少し控えようと思う。
_ それから、
てくてく歩いて、先日バイクを注文したレッドバロンへ。
月曜午前にやっと免許が入手できるのでその晩納車するつもりだが、
会社にヘルメットを持ってかないで済むように預かってもらうことになっていた。
いつもの店員さんが接客中なので他の店員さんに対応してもらって、
自分のバイクを眺めていた。
このお預け感がどうにも・・・
_ JMF
久しぶりにJava Media Frameworkを触っている。
jFD1でムービープレイヤーを実装して以来だけど、
あの頃に比べると自分の腕も上がっているのでAPIがよりよく
理解できるのだけど、やっぱこのAPI出来悪いわ。
なんか無駄に複雑な気がする。
たとえばPlayerの初期化なんだけど、Playerを生成して、realize()を呼ぶと
初期化できるんだけど、realize()は初期化処理が終わる前に
制御を戻すようになっている。
初期化が完了したかどうかを知るにはPlayerにControllerListenerを追加して、
controllerUpdateの中で判別しないといけない。
普通、ムービーなんかを表示するときは、
「初期化→描画コンポーネント取得」
という流れになるけど、何も考えずに
player.realize(); Component c = player.getVisualComponent();
_ みたいな感じにやると、
「プレーヤーがまだrealizeされてねーのにgetVisualComponent()呼ぶんじゃねーよ」
例外が発生する。
ネットワーク越しのストリームを開くこともあるので非同期処理なのは
わからんでもないが、それにしても使い勝手が悪い。
また、設計思想がアレで、PlayerがClockを継承してる時点で
どうかと思う。
これってhas-A関係じゃないのか?
委譲するべき部分を継承しているので継承が深すぎて、
主要インターフェイスの継承関係がこうなってる。
Processor─Player┬MediaHandler └Controller┬Clock └Duration
_ Processorは5個のインターフェイスを継承していて、
数えたら38個のpublicメソッドを持っていた。
これは酷い。
JMFは古いAPIなので、当時は今ほど正しいオブジェクト指向設計が理解されてなかったし、
仕方ないとは思うんだけどこれはなあ・・・
- http://mixi.jp/show_friend.pl?id=19358 ×2
- http://web-search.ameba.jp/search.html?q=アメリカチンコ ×2
- https://www.google.co.jp/ ×1
- http://i-know.jp/dot/ ×1
- http://wrs.search.yahoo.co.jp/S=2114736003/K=男優ヌード... ×1
- http://sheepman.parfait.ne.jp/wiki/コードも書かない人に言われたく... ×1
- http://wrs.search.yahoo.co.jp/S=2114736003/K=韓国 男優... ×1
- http://a.hatena.ne.jp/gekka/simple ×1
- http://wrs.search.yahoo.co.jp/S=2114736003/K=アジア A... ×1
- http://diarynote.jp/editor/edit_access_log.html ×1
- http://i-know.jp/kmizu/ ×1
- 男優ヌード ×63 / 韓国AV ×32 / アジアイケメンヌード ×25 / 韓国AV ×21 / アメリカチンコ ×21 / イケメンAV男優 ×15 / アジアゲイ ×13 / アジア イケメンヌード ×13 / アジアのイケメン画像 ×12 / 韓国 イケメン ヌード ×11 / 韓国AV 動画 ×11 / アジア ゲイ 画像 ×11 / アジアイケメン ×10 / 韓国 AV動画 ×10 / 韓国 AV動画 ×10 / 韓国イケメンヌード ×10 / アメリヌード画像 ×8 / イケメン裸画像 ×8 / 2005東日本新人王 ×8 / 韓国 av男優 ×8 / ランブルローズ エロ画像 ×6 / createRealizedPlayer ×6 / 韓国アンマ ×6 / アジアイケメンヌード画像 ×6 / アジアのちんこ画像 ×6 / 卓球動画 ×6 / 韓国 AV 動画 ×6 / 韓国 AV男優 ×5 / ギルガメッシュナイト 画像 ×5 / ゲイヌード ×5 / 金蹴 ×4 / ちんこ蹴り動画 ×4 / 韓国av動画 ×4 / アジアゲイ画像 ×4 / 韓国AV 画像 ×4 / ランブルローズ エロコード 裸 ×4 / アジアゲイヌード ×4 / getVisualComponent ×4 / アジアのちんこ ×4 / 韓国av ×4 / プロレスヌード ×3 / JMF realize 例外 ×3 / アジア 裸 画像 ゲイ ×3 / 小学生 裸 ×3 / アメリカチンコ 画像 ×3 / 金蹴り写真集 ×3 / 韓国 アンマ ×3 / マン蹴り ×3 / 女子プロレス ヌード ×3 / ギルガメッシュナイト 動画 ×3 / 韓国 ちんこ ×3 / アジアのイケメンヌード ×3 / controllerUpdate ×3 / アジアゲイヌード画像 ×2 / 韓国AV 動画 ×2 / AV男優(ゲイ) ×2 / 最新ノード ×2 / ちんこ 蹴り 動画 ×2 / ゲイ動画 ×2 / AV男優ヌード ×2 / 韓国 Av動画 ×2 / 韓国AV女優 ×2 / 赤外線 水着 ×2 / 男優 ヌード ×2 / 韓国AV動画 ×2 / 電気アンマ 金蹴りゲイ ×2 / ボクシング 動画 ×2 / ビートマニア プレイ動画 ×2 / 小学生の裸 ×2 / ランブルローズエロ画像 ×2 / 韓国AV女優動画 ×2 / 金玉蹴り 動画 ×2 / 金けり ×2 / アメリカ チンコ 画像 ×2 / プロボクサー ファイトマネー ×2 / AV女優 ヘルメット ×2 / キョンシー 動画 ×2 / ランブルローズ 動画 ×2 / av動画 ×2 / アジアイケメン画像 ×2 / winny動画 ×2 / アジア イケメン 画像 ×2 / イケメン 裸写真 ×2 / ボクシング新人王 2005 ×2 / アジアのゲイ動画 ×2 / 盗撮動画 赤外線 ×2 / 韓国AV 入手 ×2 / チンコ動画 ×2 / ランブルローズ エロ コード ×2 / ランブルローズ コード ×2 / AV男優 裸 ×2 / jmf realize ×1 / キーワード不明 ×1 / JMF realize 完了 ×1 / player realize ×1 / jmf processor ×1 / processor player getvisualcomponent ×1 / jmf java player ×1 / getVisualComponentメソッド ×1 / java jmf getduration ×1
いづれにしてもコンテンツごとrealizeしなくちゃいけないので,ここは富豪的にManager.createRealizedPlayer(or Processor)とかいきなりやってます.最初の初期化以外はすぐ再生が始まるのでそんなに問題ないのではないかと.
アレがLG3D上で動いてるんですけど(無茶,VisualComponentとか使えないので,Rendererは自分で作ってますよ.バカですね.ってネタバレしていいのか....
ああ,それとRubyistな人から,クラスに多くのメソッドを実装するのもいいのではないだろうか,という意見もありました.
無駄に階層を設けて分かりにくくなる・面倒になるよりマシという意味なのですが,JMFの場合はあまりよくない実装ですね.
createRealizedPlayerしかないですね。
リスナー使って制御するのは面倒くさすぎて。
しかしアレをLG3Dに移すってのはさすがというか・・・
メソッドが多すぎるのは、JMFの場合クラスの全貌がわかりづらくて、どのメソッドを呼んだらいいのかわからないです。
多分クラスを修正するときも影響の範囲が広すぎて苦労しそうです。
期待してませんが、JMF3.0が出るとしたらAPIを1から直して欲しいですね。
コメントいれるのが遅くなったが、酒ばかり飲んではいかんぞ。ペプシをのめ、ペプシだ。
太るわい。
ダイペプじゃ。