Flex、AIR、Java、Androidなど

Archive for 1月, 2009

XHTMLやXMLの場所を指定してやるとattributeとルートからのパスを付けてDataGridに表示してくれるようなもんを作っていて、ぼちぼち出来たのですが行き詰まりました。明日から忙しくなりますし、もう止めます。
このブログのトップページを指定した結果(別窓で開きます)
オブジェクトのツリー化まではFlexにまかせようと思うと、閉じられていないタグ(<br>とか<img>とかね)、もしくはscriptタグ内などの”<”等のエスケープされていない特殊文字、これらがあった時点でパースエラーを投げます。
これらにまで対応させようとするとレスポンスをプレーンテキストで受け取って、オブジェクトツリー化する前に相当色々やらないといけません。趣味でやれる範疇と自分のスキルの限界を完全に超えます。
ということでHTMLの使用を全てをカバーすることは今の自分には不可能という結論になりました。いつかスキルと時間が手に入ったらやってみるかもしれません。
欲しいのはamazonやgoogle、mixiとかどんなファイルでもマークアップされているファイルなら大雑把でもいいのでささっと同様にDataGridに表示してくれるようなイメージなんですけどね。
そういえばフィードか何かをいらうPerlのモジュールのソース見てみようと思って印刷したらA4用紙30枚くらい出てきたのを思い出しました(笑) 未だに私の机に眠っています :)
このあたりから私のような素人には難しくなってくるのでしょうか。

コメントは受け付けていません。
Tags:

mx.rpc.http.HTTPServiceは、指定されたURLにHTTPリクエストを送信し、返ってきた結果を指定された型に変換し、ResultEventとして返します。
何も指定しない場合はフレームワークにより自動的にツリー状のオブジェクトに変換され、ご親切にラッパーまでつけた状態で代入できるので便利なのですが、場合によってはこの変換プロセスを拡張してやりたい時もあるでしょう。
で、メモ。
HTTPServiceでresultFormatプロパティに何も指定しない、もしくはobjectを指定した場合は、mx.rpc.xml.XMLDecodermx.rpc.xml.SimpleXMLDecoder内のdecodeXML(XMLNode)がXMLをObjectに変換する関数として呼ばれます。
ここはHTTPServiceのXMLDecodeプロパティに指定可能なので、継承したを作るか自分で関数を書いてそれを指定してやることでこのプロセスを定義してやることができるようです。
しかしこのXMLDecoder、2400行もあるのでざっと見てみるだけでも一苦労です(苦笑)
SimpleXMLDecoderは簡単な内容なので弄りやすいと思います。
ただSimpleXMLDecoderでやるとタグの[ 属性:値 ]が[ 子要素:子要素の中身 ]と同じように扱われてしまう(両方ともそのオブジェクトのプロパティとして格納される)ので、ここを属性は属性としてべっこにするように作りたいんですよね。
Web::ScraperだとCSSタイプセレクタでも切れるのでここも何とか自由にいじれるようになっておきたいものです。

コメントは受け付けていません。
Tags:

24 1月, 2009

AS3でデザインパターン

Posted by: tachibana In: Flex| プログラミング

学んで、こうやってやってみるとJavaとの色々と違いが分かるものですね。まだ手探り状態ですが。
使うと思ったのでXMLかHTMLでマークアップされたオブジェクトを渡すとそれを取り出すためのXPath付けて見やすくした状態で表示するようなFlash作ろうと思ったのですが、エラーエラーで怒られっぱなしです。
もうどなたか作って公開されているかもしれませんがデザインパターンの実践に丁度いいかと思いまして。
今回出てくるのは
・Singletonパターン
・Compositeパターン
・Facadeパターン
・Observerパターン
あたりだろうなと思って実装していたのですが、まずAS3ではコンストラクタはpublicでないといけないようです。
そしてabstractが使えないので抽象メソッドをゆるやかに定義してやることができません。
今までだとここで頭が痛くなって「もう動けばソースはどうでもいいや」となっているところなのですが、今回はもう少し粘ってみようかと思います。
というか、多分コマンドラインで走るJavaかSwingとかで書いて、それを移植するようなことになるかも?それだったら文字通り二度手間か(苦笑)
でも最近はAPIにより綺麗に整形されたXMLだけでなく、好きなページを触れないとダメだと思うようになってきたのでここは大切ですね。あと正規表現ももっと知りたいし。

コメントは受け付けていません。
Tags: ,

Mementoパターン - 自分なりの結論:

あるプロジェクト内で何度も状態が変化するようなインスタンスがある場合、それの状態を保持しておいて利用できるようにしようというのがMementoパターン。保持を行うクラスのフィールドのアクセス修飾子は何もつけず同じパッケージ内のみからのアクセスを通すようにする。また、コンストラクタも同じくアクセス修飾子を省略してパッケージの外からはnewできないようにしておく。パッケージ内にはその状態保持クラスと保持される値を持つオブジェクトしか置かないようにすればフィールドはprivateにしなくても直接アクセスしてやって問題ない。オブジェクトに何らかの状態の変化があり、それを任意のタイミングで状態保持クラスに変更を保存するようにすれば、それから何度か状態が変化したとしても状態保持クラスに残っている値をもとに復元したりすることも可能になる。値を上書きするのではなく配列に入れたりすることでさらに高度なことも可能となる。

Stateパターン - 自分なりの結論:

イベントを起こし得る複数のオブジェクトがあり、それらがイベントを起こしたときにある条件によって処理を分けたいような時、アクション毎にif文とかを書いてはいけない。「ある状態」を表すクラスを作るべきである。Stateパターンを利用する。イベントはdispatchされると状態を表すクラスの親クラスのメソッドを呼ぶだけで、実際にその時にどのように条件により仕訳されているかは知らない。ともかく状態により親クラス型の変数はいくつかのそのサブクラスのインスタンスであるのは間違いないので分岐がスッキリし、管理しやすくなる。

Flyweightパターン - 自分なりの結論:

Prototypeパターンとの違いが分からん。

コメントは受け付けていません。

Fecadeパターン - 自分なりの結論:

これまでもやってきた通り、プロジェクト内では常にクラス同士の結び付けを出来るだけ弱めたり、再利用されたり一部だけの実装を回りに影響が無く出来るようにすることが求められる。Facadeパターンはメインクラスが行いたい処理を可能な限りそのクラスの中で処理し、メインクラスの負担を下げるような働きをする。これにより更に大きなプロジェクトになった際に組み合わせて威力を発揮するパターンのようなもの。「窓口」となるような役を作ること。

Mediatorパターン - 自分なりの結論:

オブジェクトがあるプロパティを持ち、そのプロパティが変化すると他のオブジェクトのプロパティも変化するようなケースに使う。相互に影響するような関係の場合、何も考えずにプロパティが変われば他のオブジェクトのメソッドを呼びプロパティを変更するようなプログラムを書いてはならない。自分のプロパティによって他のオブジェクトのプロパティを変えるような処理を行うことのあるクラスは、初期化されると同時に状態の変化を管理するクラスを保持し状態の変化は条件の分岐も含めその管理クラスに委譲する(どのオブジェクトのどのプロパティがどうなっていればどのオブジェクトの状態をどうするというような処理も全てこのクラスが行う)。これがMediatorパターン。

Observerパターン - 自分なりの結論:

何らかの機能を持つクラス階層があり、その状態の変化などイベント?を監視したい際、同じく監視するだけが目的のObserver的な階層をつくること。実装のクラスも同様に階層を成すが、メインクラス上では通知は実装のトップに行われる(ように見える)。機能のクラスは他のオブジェクトから渡されたObserverを格納するメソッド、削除するメソッドをスーパークラスが実装している為、サブクラスも自動的にObserverの追加・削除できるようになる。また、Observerに通知するメソッドは抽象でないメソッドとしてスーパークラスに定義される為、メインクラスは機能のクラスをインスタンス化した後、Observerを追加してやってから処理に移る。

コメントは受け付けていません。

Categories

 

2009年1月
« 1月   2月 »
 1234
567891011
12131415161718
19202122232425
262728293031  

About

Author: tachibana

  • ちょっとしたことはTwitterに書いています。こっちはアプリの公開等の時に更新されます。
  • 最近はもっぱらJavaとObjective Cです。AS3は飽きました。
  • スクリプト言語ではPerlが好きでしたが最近はGAE/Jで何でもやってます。
  • Linuxは自宅サーバー建てるのがやっとのレベルです。前の会社で何日も徹夜してやったのはいい思い出です。
  • アプリへのご要望などご意見等ありましたらお気軽にご連絡下さい。

Alternative content here