preload
3月 16

BeInteractive! の yossy さんの呼びかけで始まった、変態さんたちの集いに行ってきました。参加しただけで、しゃべるネタが用意できなくてごめんなさい。でも、皆さんのお話や飲み会での会話は、思ってた以上に楽しくて、思う存分ニヤニヤできました。ニヤニヤ。

では、例によってメモを転記。

BeInteractive! yossyさん

  • Shibuya.abc 誕生の理由
  • AVM2, FlexSDK オープン化の話
  • たまりんと戯れる話
    • ビルド。ソース入手。
    • zlib のパスを Makefile にいれとく
    • avmplus できる。
    • asc ひろってくる。ビルトインのabcをパスの通ったとこにおく
    • as プログラムかく。クラス単位である必要なし。
    • コマンドライン引数を取得するテスト
      • 引数は — をつけてやらないといけないらしい。
    • 標準入力を取得するテスト
    • 直接実行できるようにするテスト。binfmt_misc つーので avmplus へ渡せるとかなんとか@linux
    • – で引数書かなくてすむように、ラッパーのシェルスクリプトを書いてやるテスト
  • ServerSide AS3 .. CGI で動くようにする
    • GET引数はQueryStringに入る。でもenvが取れない。
      • AVM2 を拡張する。SystemClass に getEnv() 追加。内部的には getenv システム関数を呼ぶ
      • ビルド方法がむずかしそう。ながい
      • 同様にPOSTもとれる。取り出すときは、Content-Length とかちゃんとチェックしてやる。
    • 独自のWebフレームワークを使って、ゲストブックを作る
      • javac のときに -AS3 フラグが要るらしい
  • Flashと連携する。BlaseDSを使う。AMF通信。移植したらしい。なんと。
  • swfassist もサーバサイドで動いたとな

クジラ飛行机さん

  • FlashLite でうごく言語をつくる
    • 言語を作ると出勤が週2でよくなることもある
    • 電車でつくるプログラミング言語
    • FL2.0 をつかった。パーサジェネレータで自動生成。コンパイルはサーバサイドでやる。アセンブラだけつくる
    • swfmill, flasm, kmyacc .. swfmill は simple モードを使う
    • flasm は swf の中のアクションを書き換えるのに使う
    • swfmillでテンプレートswfを作る。kmyaccでパーサを作る。flasmでアクションを書き換える
    • kmyacc で文法を作る。calc.phpy っていうサンプルを改造していく
      • 実行コードの中に、計算結果を返す代わりに、flasm のアセンブラ表記に書き換える形にする
      • PRINT をサポートさせる。字句解析ルールを追加。
      • サーバサイド処理を作る。ソース入力に対してyyparse()を実行して、flmの中身を書き換えてアセンブルする
  • 「葵」.. FLashベース開発環境
  • 八角研究所で情報公開中。AIRの本も書いてるそうです

鴨志田さん

  • A=ord(“d”) でニヤニヤする話
  • よりコンパクトに
    • 直接 値を書くよりも、何か評価した結果を値にもっていくことで、その命令セットと合わせてもちっちゃくなるばあいがある
    • substring(A,1,1) よりも chr(ord(A))
    • 変数名を短くする。コンスタントプールが使えない FL1.1 では重要
    • eval で数字やら制御文字を渡してやって変数名にする事もできる。そうすると使える一文字変数の数がふえる!eval(“t”) = 123; とか。
    • FL1.x で $_VARSION みると、5 系っぽい。試してみたら 5 のアクションも使えた。Increment とか使えた。SWFヘッダは4にしとく必要あり。
    • 複数の値をいっぺんに Push して、Push のヘッダ部分を節約する話 .. FL1.x 系でもいけたらしい
      • 変数が入る場合はgetVarも必要。交換法則が適用できるかどうかチェック必要
    • if で || やら && を使うと、コードサイズが2の冪乗でコードサイズが増える。
      • 各論理値を他方の式に対してそれぞれ重複して生成してしまうためらしい。A || A || A || .. ってたくさんかくだけで swf が 100K こえる
  • より高速に
    • SetRegister した値をすぐ使う場合は、直後の pop, push は要らない
    • 1万回の push[null] からオーバヘッドを測定。ヘッダ部分で 1.5μsec くらい
    • サイズが減る=アクション数が減る場合は、たいてい高速になる

TAKESAKO さん

  • Flashアンチリバースエンジニアリング
    • ライセンス。オープンにされている情報の話
    • swf を頭から読んでいく話。可変長タグの「データが無ければ飛ばされる」データを節約してファイルサイズを下げる話
    • 境界ジャンプを使う。逆コンパイラがジャンプのフローを解析できないものが多い。ジャンプ先のコードが正しく読めない
      • このテクニックを自動化するツール as2lock

gyuque さん

  • Gnash ぐなっしゅの話。オープン実装の Flash プレイヤー
  • ubuntu だとパッケージで入るらしい。でもビルドする。gtk いれとかないと mozilla 対応できない
  • 実験台swfアニメーション: アニメーションは完璧ぽい。BGM が変
  • ゲームをやってみる。クリック効かない。gotoAndPlay 追加して強制スタート。ぐちゃぐちゃになった。
  • Gnash は youtube を意識している?Youtube 再生結構完璧にいける。シークできない。バッファリングできない。
  • ソースを覗く。ソースツリーの解説。
    • swf.h に AVM2 のオペコードの実装が進んでるぽい形跡が
    • ASHander.cpp に各アクションの実装。動く仕様書というかんじ。
  • AVM を書いてみる。命令の解釈や実行スコープ管理を俺実装するデモ。それ以外は既存のVMに渡す
    • mtasc でコンパイルして defineFunction2 を置き換える
    • VM の教科書として最適?

nitoyon さん

  • avmplus how-to
  • irb みたいのがほしい。いちいちコンパイルがめんどくさい
    • ソースの中に AVMPLUS_INTERACTIVE てのが。コメントとってリビルドすると使えるようになった。おおおおお
    • でも、実行毎の状態は保持できない.. 内部的には毎回コンパイルして実行してるみたい。
    • class Hoge() {} に失敗。Object のビルトインが読み込まれてないためらしい。.import でビルトインのabcを呼んでやればOK
    • Windows でしか動かないみたい
  • winQuery .. Windows で jQuery 、みたいな Windows アプリ。
    • $(“explorer.exe”).close() みたくやりたい
    • as3Query をベースにする。
    • Window の構造を DOM として捉えるとできるんじゃないか?という仮説。nodeName=window名、className=プロセス名みたいにしてみる
    • print($(“.explorer:root:visible”)) とかで、見えてはいけないウィンドウまで見えちゃってニヤニヤ
    • ウィンドウのパーツを取得して動的に書き換えるとか。
    • 裏側では Win32 な関数をいっぱい書いてる。avmplus ってスクリプトエンジンとしても使えるんですね

こんなかんじ。wiki の方には nishio さんが Ust 中継された動画もあるみたいですので、そちらもどうぞー。

yossy さん、お声がけありがとうございました。おかげで楽しめました :)
yossy さんとは、前に amachang さん繋がりの勉強会 で会っていたと思うんだけど、今回はお話するタイミングを逸してしまった。残念。

それから、休日にもかかわらず、勉強会の場所を提供いただけるサイボウズラボさんには感謝です。TAKESAKO さん、飲み会の取りまとめまで、ありがとうございました。

ではでは、次回 Shibuya.abc[d-z]+ を楽しみにしております!


関連していそうなエントリ:

Comments are closed.