FxUG in Toyama #32011.4.16 Presented by wacky. 最近 AMF 3 の Encode/Decode を実装してみました。 そこで得た知識を共有したいと思います! 30分後には … AMF の基本構造が分かっている AMF の得手不得手が分かっている BlazeDS.

Slides:



Advertisements
Similar presentations
第6回 JavaScript ゼミ セクション3-6 発表者 直江 宗紀. 組み込み関数  JavaScript に予め用意された関数  特定のオブジェクトに依存していない  単に関数名で呼び出すことが可能.
Advertisements

サービス管理責任者等研修テキスト 分野別講義    「アセスメントと        支援提供の基本姿勢」 <児童発達支援管理責任者> 平成27年10月1日.
Scala + Liftフレームワーク その2.
第5章 家計に関する統計 ー 経済統計 ー.
公共財 公共経済論 II no.3 麻生良文.

食品の安全性に関わる社会システム:総括 健康弱者 ハイリスク集団 HACCP (食肉処理場・食品工場) 農場でのQAP 一般的衛生管理
規制改革とは? ○規制改革の目的は、経済の活性化と雇用の創出によって、   活力ある経済社会の実現を図ることにあります。
地域保健対策検討会 に関する私見(保健所のあり方)
医薬品ネット販売規制について 2012年5月31日 ケンコーコム株式会社.
平成26年8月27日(水) 大阪府 健康医療部 薬務課 医療機器グループ
エナジードリンクの危険性 2015年6月23日 経営学部市場戦略学科MR3195稲沢珠依.
毎月レポート ビジネスの情報 (2016年7月号).
2010度 民事訴訟法講義 補論 関西大学法学部教授 栗田 隆.
浜中 健児 昭和42年3月27日生まれ 東京都在住 株式会社ピー・アール・エフ 代表取締役 (学歴) 高 校:千葉県立東葛飾高校 卒業
Blosxom による CMS 構築と SEO テクニック
ネットビジネスの 企業と特性 MR1127 まさ.
Future Technology活用による業務改革
ネットビジネス論(杉浦) 第8回 ネットビジネスと情報技術.
Webショップにおける webデザイン 12/6 08A1022 甲斐 広大.
物理的な位置情報を活用した仮想クラウドの構築
ハイブリッドクラウドを実現させるポイントと SCSKのOSSへの取組み
寺尾 敦 青山学院大学社会情報学部 第12回 情報デザイン(4) 情報の構造化と表現 寺尾 敦 青山学院大学社会情報学部
公益社団法人日本青年会議所 関東地区埼玉ブロック協議会 JCの情熱(おもい)育成委員会 2011年度第1回全体委員会
第2回産業調査 小島浩道.
『ワタシが!!』『地域の仲間で!!』 市民が始める自然エネルギー!!
ポイントカードの未来形を形にした「MUJI Passport」
JavaScript プログラミング入門 2006/11/10 神津.
情報処理の基礎 私たちとコンピュータの扱うデータの違い 明治学院大学 法学部消費情報環境法学科 鶴貝 達政
センサネットワークを利用した林業活動におけるウェアラブルシステムの構築
基礎プログラミングおよび演習 第9回
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
String - 文字列 2009年10月9日 7ADD2116 佐藤洋輔.
アルゴリズムとデータ構造 2011年6月13日
アルゴリズムとデータ構造 2011年6月20日
第13回 ハッシュテーブルを使ったプログラム ~高速に検索するには?~.
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
暗黙的に型付けされる構造体の Java言語への導入
独習XML 第2章 XML文書の構成要素 2.1 XMLの文字と文字列 2.2 コメント
0からわかるF# Part1 中 博俊 F# September 2008 CTP Base.
画像処理プログラムの説明.
0からわかるF# Part1 中 博俊 F# September 2008 CTP Base.
P n ポインタの基礎 5 q m 5 7 int* p; int 型の変数を指すポインタ int* q; int 型の変数を指すポインタ int n=5, m=7; int 型の変数 int array[3]; int* pArray[3]; p = &n; ポインタにアドレスを代入しているのでOK.
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
アルゴリズムとデータ構造1 2005年7月5日
オブジェクトのプロパティ プロパティとは? あたかもそういうメンバー変数(フィールド)がそのクラスに存在するかのように見せる仕組み!
2013年度 プログラミングⅡ ~ 計算してみよう ~.
2015年度 プログラミングⅡ ~ 計算してみよう ~.
プログラミング演習I 2004年5月19日(第5回) 理学部数学科・木村巌.
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
プログラミング入門2 第9回 ポインタ 情報工学科 篠埜 功.
JavaScriptを含んだHTML文書に対する データフロー解析を用いた構文検証手法の提案
C言語ファミリー C# 高級言語(抽象的) Java オブジェクト指向 C++ C 機械語(原始的)
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
アルゴリズムとデータ構造 2012年6月11日
JAVA入門③ 配列とコレクション.
サブゼミ第7回 実装編① オブジェクト型とキャスト.
アルゴリズムとデータ構造1 2006年6月23日
アルゴリズムとデータ構造1 2009年6月15日
情報処理Ⅱ 2006年11月24日(金).
情報処理Ⅱ 第7回 2004年11月16日(火).
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
アルゴリズムとデータ構造 2012年6月21日
アルゴリズムとデータ構造 2010年6月17日
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
情報処理Ⅱ 2005年11月25日(金).
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
Presentation transcript:

FxUG in Toyama # Presented by wacky

最近 AMF 3 の Encode/Decode を実装してみました。 そこで得た知識を共有したいと思います! 30分後には … AMF の基本構造が分かっている AMF の得手不得手が分かっている BlazeDS の弱点も分かっている

Action Message Format の略、データ形式の一種。 仕様は Adobe から公開されている。 ActionScript 3(Flex2 以降 ) の型に対応している。 Flash Player 9 から使用可能。 AMF 3 仕様 :

Marker (string) Marker (string) ABC (UTF-8) x 3バイト x 3バイト xxxxxxx1 参照ではない xxxxxxx1 参照ではない

Marker (array) Marker (array) x 2要素 x 2要素 xxxxxxx1 参照ではない xxxxxxx1 参照ではない Marker (string) Marker (string) xxxxxxx0 参照 xxxxxxx0 参照 x 0番目 x 0番目 空文字列 ( 疎データ無 )

AMF 3 では、3種類の参照情報を管理している。 文字列 オブジェクト (Object, Array, Date, XML, ByteArray) Traits 情報(オブジェクトの型情報) プロパティー名リストのようなもの 既出の文字列は、 2~5 バイトで送信可能。 既出のオブジェクトも、 2~5 バイトで送信可能。 ただし、同一インスタンスの場合のみ 既出の Traits 情報も、 2~5 バイトで送信可能。

整数 (int) は可変バイトで Encode される。 ※ Size は Marker に必要な 1 byte を含む。 ※ int 領域全体での平均サイズは、実は約 8.5 byte … ※ Vector 内の int は固定バイト ( 4 byte) となる。

整数 (long) は固定で Marker + 8 バイトに Encode ただし、形式は double 形式。 つまり、桁落ちします … long の範囲 ( 64 bit) ~ 正しく Encode → Decode できる範囲 ( 53 bit) ~ ※元々、 Flex 上では表現できない数字だけど …

サンプルデータ(異なる値) // Sample: Dynamic 値 var target:Array = []; for (var k:int = 0; k < 1000; k++) { target.push({ index: k, message: "Message" + k }); } // Sample: Sealed 値 var target:Array = []; for (var k:int = 0; k < 1000; k++) { target.push(new Bean(k, "Message" + k)); } // Sample: Dynamic 値 var target:Array = []; for (var k:int = 0; k < 1000; k++) { target.push({ index: k, message: "Message" + k }); } // Sample: Sealed 値 var target:Array = []; for (var k:int = 0; k < 1000; k++) { target.push(new Bean(k, "Message" + k)); }

サンプルデータ(同じ値、別インスタンス) // Sample: Dynamic 値 var target:Array = []; for (var k:int = 0; k < 1000; k++) { target.push({ index: 999, message: "Message999" }); } // Sample: Sealed 値 var target:Array = []; for (var k:int = 0; k < 1000; k++) { target.push(new Bean(999, "Message999")); } // Sample: Dynamic 値 var target:Array = []; for (var k:int = 0; k < 1000; k++) { target.push({ index: 999, message: "Message999" }); } // Sample: Sealed 値 var target:Array = []; for (var k:int = 0; k < 1000; k++) { target.push(new Bean(999, "Message999")); }

サンプルデータ(同一インスタンス) // Sample: Dynamic 値 var target:Array = []; var item:Object = { index: 999, message: "Message999" }; for (var k:int = 0; k < 1000; k++) { target.push(item); } // Sample: Sealed 値 var target:Array = []; var item:Bean = new Bean(999, "Message999"); for (var k:int = 0; k < 1000; k++) { target.push(item); } // Sample: Dynamic 値 var target:Array = []; var item:Object = { index: 999, message: "Message999" }; for (var k:int = 0; k < 1000; k++) { target.push(item); } // Sample: Sealed 値 var target:Array = []; var item:Bean = new Bean(999, "Message999"); for (var k:int = 0; k < 1000; k++) { target.push(item); }

同一データを重複送信しないだけ。圧縮すると減る。

実は、 AMF 3 の仕様書に載っていない 新しいデータタイプが存在 … Flash Player 10 を使用すると発生 …

Java 5 対応されていない Enum: 文字列にエンコード。デコードは未対応。 Generics: 無視される。※ List とか厳しい … Unicode のサロゲートペア未対応 Encode: サロゲートペア1文字が、 6 バイト (UTF-8) に Encode されてしまう。※正しくは4バイト Decode: Flash Player 10 で Encode したサロゲートペアを Decode すると例外が発生。 Flash Player 10 未対応 Vector を扱えない。 Dictionary を扱えない。 ※ BlazeDS で確認