酒徳カンファレンス(渋谷)とSoozy Conference#4(鎌倉)

非常に真面目なプレゼンを二連続で。

1/26(土)は、Flash勉強会(通称:酒徳カンファレンス、場所はウノウ株式会社さん)で「Flash Lite 3.0 って実際どうなの?」というネタ突発LTの発表をさせていただきました。
懇親会のあとで、酒徳さんと酒徳さん(片方はミドルネームの方)と
Haskell Hackathon とか Shibuya.abc#1の話ができたので楽しかったです。
会場に集まっていただいた日本全国の酒徳さん、本当にありがとうございました。

1/27(日)は、Soozy Conference#4(場所は鎌倉の面白法人カヤックさん)に。タイムキーパー係として参加するはずが途中渋滞に巻き込まれて30分遅刻するという失態をかましてしまいました。LTの順番も最後にずらしていただきました。><

SoozyCon#4の写真はこちらにアップロードしています:
http://flickr.com/photos/takesako/sets/72157603804961863/

新年さっそく ActionScript の”濃い”技術系イベントに参加してきた

オライリー「Essential ActionScript 3.0」の著者として知られる Colin Moock 氏が来日されているので、
日本のActionScript使いの人達が歓迎しよう、というイベントに急遽参加してきました。

今頃のエントリーになってしまいましたが、当日の会場の様子をフォトレポートでお伝えしたいと思います。

●日時&場所
1月16日(水)18:30~20:40 @アドビオフィス(大崎)

Keynote (30min)

ECMAScript4 (Colin Moock)
Colin Moock
Es4-discuss

続きを読む

FlashLite難読化どう書くか?第2回モバイル勉強会

第2回モバイル勉強会にて、FlashLiteの難読化について発表してきました。

そのときの発表資料を若干修正してSlideShareにアップロードしました。

途中のデモに失敗してgdgdになっていたりするので、ustream.tvの動画の方はあんまり見ないで下さい。(><)

自分はモバイル業界ではありませんでしたが、他の方の発表も非常に面白かったです。

下の写真は小飼弾さんのケータイを使ったプレゼンを再現したものです。

第2回モバイル勉強会

総勢12名の発表者のみなさん、会場を提供してくださったECナビさん、イベントを取り纏めてくれたmemokamiさん、ustream.tvの中継を見てくださったみなさん、どうもありがとうございました。

SWF Binary Golf on FlashLite

先週の土曜日の勉強会で発表した資料を公開します。

FizzBuzz SWF Binary Golf on FlashLite 1.1

FizzBuzz SWF Binary Golf on FlashLite 1.1
http://namazu.org/~takesako/swf/FizzBuzz-SWF-Golf.ppt

申し訳ないことにActionScriptの話は一つもでてきません。
SWFファイルの構造解析とASバイトコードの話です。
そんなシチュエーションがあるかどうかわかりませんが、
SWFファイルのバイナリを直接いじりたいときに役に立つのではないかと。

勉強会ではどの発表も面白かったのですが、個人的にはBeInteractive!のyossyさんとASバイトコードの話ができて嬉しかったです。

[お約束] SWF で FizzBuzz ってみた

とりあえず

(1) 正解のFizzBuzz文字列をそのまま出力した場合 -> 478 byte (FlashLite1.1)
http://namazu.org/~takesako/swf/fizz478.txt

(2) FizzBuzzを計算しながら出力した場合 -> 251 byte (FlashLite1.1)
http://namazu.org/~takesako/swf/fizz251.txt

(3) FizzBuzzを計算しながら出力した場合 -> 159 byte (FlashLite2.0)
http://namazu.org/~takesako/swf/fizz159.txt

ここまで圧縮できました。

ASバイトコード最適化

ASバイトコードの最適化の過程はこんな感じで

http://namazu.org/~takesako/swf/

--- fizz287.flm	
+++ fizz161.flm
@@ -1,71 +1,48 @@
-movie 'fizz287.swf' // flash 4, total frames: 1, frame rate: 12 fps, 104x104 px
+movie 'fizz161.swf' compressed // flash 6, total frames: 1, frame rate: 12 fps, 104x104 px

   frame 0
-    push 'i', '0'
-    setVariable
    label1:
-    push 'i', 'i'
+    push '100', 'i', 'i', 'i'
     getVariable
     increment
     setVariable
-    push '100', 'i'
     getVariable
     oldLessThan
-    not
-    not
     branchIfTrue label6
-    push 'x', 'x', 'x'
-    getVariable
-    push 'i'
+    push 'x', 'x'
     getVariable
     push 'i'
     getVariable
     push '15'
-    divide
-    int
-    push '15'
-    multiply
-    subtract
+    modulo
     branchIfTrue label2
     push 'FizzBuzz'
     branch label5
    label2:
     push 'i'
     getVariable
-    push 'i'
-    getVariable
     push '5'
-    divide
-    int
-    push '5'
-    multiply
-    subtract
+    modulo
     branchIfTrue label3
     push 'Buzz'
     branch label5
    label3:
     push 'i'
     getVariable
-    push 'i'
-    getVariable
     push '3'
-    divide
-    int
-    push '3'
-    multiply
-    subtract
+    modulo
     branchIfTrue label4
     push 'Fizz'
     branch label5
    label4:
     push 'i'
     getVariable
    label5:
     concat
     push ' '
     concat
     setVariable
     branch label1
    label6:
   end // of frame 0
end

yossyさんから教えてもらったFlasmのコードでASバイトコードを読みやすい形に変換しています。

最後のFizzBuzz159byteへの圧縮は、ちょっとトリッキーなことをしています。

僕はActionScriptの経験は素人以下ですが、SWFバイナリの話ならできますので、
またどこかでAS関係のイベントがあれば声を掛けてくださると嬉しいです。(><)

この度は貴重な勉強会に参加できてよかったです。ありがとうございました。

Shibuya.es発表資料 – SWF Binary Hacks ~evalのいばら道~

Shibuya.js Technical Talk #3 – Shibuya.esで発表してきました。
とりいそぎ発表資料(修正バージョン)を公開したいと思います。

Flash Player 9 以降ではもう使えない技

今回は急遽発表者の欠員が出たので、その埋め合わせで私がLTで発表することになりました。なので、発表ネタはラボの掲示板で1週間前にやりとりしたときの話をベースにしました。
当日資料を作り始めたので、ちょっと荒削りな内容になっています。すみません。

他の人の発表も結構最新の話題があったりして面白かったですねー。

二次会での名刺交換の様子

こちらの写真はいぬビームさんの名刺交換の様子を撮影したものです。これは新しい!