Archive for the ‘flash’ Category

1月
20

聞かれたのでメモ。

※以降の情報は個人的に調査した範囲内のものです。
今後改善されたり、隠ぺいする方法があるかもしれません。

Web ApplicationやAIRが最近流行ってますね。
メリットとしては、

・手軽に作成できる(HTMLやjavascriptの知識でアプリが作れる)
・クロスプラットフォーム(WinでもMacでもつかえる)
・WEB同様通信が簡単にできる(ブラウザと同程度の機能がある)

と、いう感じでしょうか

じゃあ逆にデメリットは?

・ソースを見ることが可能

これが非常に大きいと思います。

Web ApplicationやHTML+javascriptで作成されたAIRの場合、基本的に、ソースが丸見えです。
他にも、javascriptで作られたfirefoxのadd-onとかもそうですね。
インストールフォルダさえ見つけることができれば、基本的にはソースを見ることが可能です。
スクリプト言語を使う上のデメリットはここにあると思います。

でも、SWFで作成されたAIRなら大丈夫じゃないの?
と思われる方もいるかもしれませんが、これはこれで別の問題が・・・。
flash(SWF)、javaなどで作られたファイルは確かにコンパイル済みですが、仕様が公開されているため、逆コンパイラが作成されています。

SWFを入手→逆コンパイル→ソースコードを閲覧可能
というわけです。

AIRの場合、SWFファイルはインストールフォルダに置いてあります。
したがって、逆コンパイラの入手は難易度が高いかもしれませんが、ソースを見ることが可能といえます。(もちろん、FLASHも同様の問題を抱えています。)

そんなこと言ったら、どんな言語でも同じでは?
と、いわれるかもしれませんが。EXEファイルを逆アセンブラするのとは難易度が違います。

・手軽に作成できる(HTMLやjavascriptの知識でアプリが作れる)

というメリットがそのまま

・手軽にソースが解読される

というデメリットになってしまうわけです。

Web ApplicationやAIRは確かに便利ですが、ソースが見られてもいいように構築する必要がありますね。
具体的には、

・ソースに埋め込むべき情報を考える
(DBのパスワード、ゲームの答えなど)
・サーバで行うべき処理を切り分ける
(くじの抽選、ネットバンキング等重要データの保持、パスワードやシリアルキーの確認など)

といった感じでしょうか。

特に金銭が絡む情報や、サーバ側のセキュリティが絡む情報については注意するべきだと思います。

12月
20

先日届いたflash cs4を起動してみました。
そしたらなんと・・・

AIRの1.1にしか対応していない・・・。

そりゃないよ・・・
と、おもったけど、アップデートしたら・・・。

1.5に対応しました!わーい。

ただ、1.1がビルドできなくなっちゃいました。

昔のバージョンはビルドできない方針なんでしょうか・・・。
いまのところ、別に不便を感じることはない・・・と、思いますが
どうなんだろ。

でもまあ、AIR作成の敷居が下がったことは確かですね。
CS3のころは環境を用意するのも面倒でしたが、初期状態から対応しているのは素敵です。
バージョンが上がっても、アップデートで対応してくれるのもいいですね。

ただ、AIRのランタイムはインストールされないみたいで、
このあとホームページから、AIRのアプリをダウンしようとしたら、
インストールを求められました。

12月
06

flashcast:フリーで働くITエンジニア集団のブログ: google翻訳APIの翻訳結果JSONを読み込むswfのソースを公開しますでは、google翻訳APIをHTTPServiceを継承したクラスから呼び出しています。Internetの世界では、何かとクロスドメインの制約がつき物ですが、Flash Playerも例外ではありません。クロスドメインのアクセスには制限があります。つまり、WebサーバA上にあるswfファイルからWebサーバB上にあるリソース(API、テキスト、html、画像にかかわらず)にアクセスすることは基本的にはできません。これは開発ツールがFlex BuilderであろうがFlash CS3 Professionalであろうが関係ありません。Flash Playerのセキュリティなのです。

これを可能にするのがクロスドメインポリシーファイルです。
Adobe – デベロッパーセンター : クロスドメインポリシーファイルの仕様

<?xml version="1.0" ?>
<!DOCTYPE cross-domain-policy (View Source for full doctype...)>
<cross-domain-policy>
 <allow-access-from domain="許可するサイトのドメイン名" />
</cross-domain-policy>

Webサーバ上のルートディレクトリにcrossdomain.xmlが配置されている場合、allow-access-fromで許可されたサイト上にあるswfファイルからのアクセスが可能になります。allow-access-fromタグは繰り返しで、許可するサイトを複数指定することができます。google翻訳APIの翻訳結果JSONを読み込むswfでコールしているgoogle翻訳APIのURLはhttp://ajax.googleapis.com/ajax/services/language/translateですが、この結果を取得できているのはajax.googleapis.comのルートディレクトリにcrossdomain.xmlがあるからなのです。

http://ajax.googleapis.com/crossdomain.xml

<?xml version="1.0" ?>
<!DOCTYPE cross-domain-policy (View Source for full doctype...)>
<cross-domain-policy>
<allow-access-from domain="*" secure="true" />
</cross-domain-policy>

許可ドメインに*(ワイルドカード)が指定されているので、すべてのサイトのswfファイルからアクセス可能です。ちなみに、*.googleapis.comのように指定すると、googleapis.comのすべてのサブドメインからのアクセスが許可されます。

但し、これはFlash Playerのセキュリティの話で、AIRアプリの場合この制約は受けず、すべてのWebサーバ上のリソースへのアクセスが可能となっています。今後はどうなるかわかりませんが、もし、これができなくなると「Webの技術をデスクトップに」持ってきた意味が半減してしまいますね。

10月
23

flashcast:フリーで働くITエンジニア集団のブログ: flash+javascriptで、クリップボードにコピーする
の続きです。

こんな感じになりました。

   $(document).ready(function() {
    if (!$.browser.msie) {
     var i = 0;
     $(".dp-highlighter").each(function(){
      this.id = "tonosamartdp" + i;
      $(this).children(".bar").children(".tools").children("a:contains('copy to clipboard')").replaceWith("&lt;span id='" + this.id + "swf'/&gt;");

      var flashvars = {
       func:"copy2clip_getData",
       img:"http://tonosamart.com/flashcast/copy2clip/copy.swf",
       param:this.id
      };
      var params = {
       menu:"false",
       allowScriptAccess:"always"
      };
      var attributes = {
       id:this.id + "swf"
      };
      swfobject.embedSWF("http://tonosamart.com/flashcast/copy2clip/copy2clip.swf",  this.id + "swf", "93", "14", "9.0.0", "http://tonosamart.com/flashcast/swfobject/expressInstall.swf", flashvars, params, attributes);

      ++i;
     });
    }
   });

ブラウザ判定をして、IE以外だった場合は、「copy to clipboard」の文字をflashに置き換えています。
また、そのときにidを付加して、javascriptの呼び出しに使っています。

こういう、ページ内の特定のタグに対する一括処理はjQueryだと簡単に出来て便利ですね。

flashから呼ばれるjavascriptはこんな感じです。

function copy2clip_getData(param) {
 var text;
 text = dp.sh.Utils.FixForBlogger(document.getElementById(param).highlighter.originalCode).replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/&amp;/g,'&');
 //alert(param + ":" + text);
 if ($.browser.msie) {
  window.clipboardData.setData('text', text);
  return null;
 } else {
  return text;
 }
}

highlighter.originalCodeにコピー元のコードが入っているのを探すのに苦労しましたが、特に問題なくできました。

これで、IE以外のブラウザでも、ソースのコピーができるようになりました!

10月
22

このblogでは、ソースの表示にsyntaxhighlighter – Google Codeというのを使っているのですが、右上に「copy to clipboard」と書いてあるのをご存知でしょうか?

このリンクを押すと、ソースの内容をクリップボードにコピーするのですが、今日firefox3で試したら、きかなくなっていました。

がーん

理由を調べたら、どうもflash 10の仕様変更のようです。
参考:akihiro kamijo: Flash Player 10 のクリップボードに関連する変更

そもそも、このリンクどういう仕組みかというと、javascriptを呼んでいて
・IEだったら、clipboardData.setDataでコピー
・その他のブラウザだったら、flashを実行してコピー
という動作をしています。

なんでこんな面倒なことをしているかというと、IE以外のブラウザでは、javascriptでクリップボードにコピーできないからなんです。

・その他のブラウザだったら、flashを実行してコピー

という部分が、今回のflash player の仕様変更で使えなくなってしまったというわけ。

今回のflash player の仕様変更は、flash側で発生したclickイベント内では実行できるようなので、リンクをflashにかえて、flash内からjavascriptを呼ぶように改造すればうまくいきそうです。

と、いうわけでまずは、そんなflashを作ってみました。
copy2clip

実際のsyntaxhighlighterへの埋め込みはまた今度

  • Search:
  • flashcastとは?

    東京を中心に、現在フリーランスとして活動しているITエンジニア、および、かつてフリーランスとして活動していた起業家達が立ち上げたコミュニティーです。

    みんなで集まって面白いことをやろう!形に残そう!ということで、ブログをはじめました。

    技術情報や、フリーエンジニアに役立つ情報などを、ご紹介できたらと思っています。

    お問い合わせ:
    info@flashcast.jp
  • カレンダー

    2010年7月
    日曜日 月曜日 火曜日 水曜日 木曜日 金曜日 土曜日
    « 6月    
     123
    45678910
    11121314151617
    18192021222324
    25262728293031
  • メンバー紹介

    もじゃもじゃ
    flashcastのリーダー

    3年ほどフリーのITエンジニアとして活動。現在は、社員2名の株式会社を経営しています。

    一攫千金を夢見る野心家です。

    ライブキャスト

    yasu
    ダイバー

    自宅サーバーでホームページを作り始めました。

    少しずつ記事を増やしていきますので足を運んでください。

    よろしくお願いします。

    sa-sa-ki.jp

    のら
    たびびと

    ねこ好きに悪人はいなーいっ!!

    バイクや車も好きです。

    めぐ
    デザイナーのたまご

    音楽とデザインとお酒をこよなく愛する永遠のダイエッター。

    現在ペンタブレットでイラストを勉強中。

    Hiro
    コンサル

    PMやSEの案件を業務委託で請けることが多いですが、小規模案件も受託でやっています。

    得意な分野はマイクロソフト製品や関連技術によるシステム構築です。

    KEI
    取締役の風格

    最年少なのに、メンバーで1番の貫禄の持ち主!?

    C#や.netなどサーバ側の開発が得意。

    ろっきー
    美食家★パパ

    自分にとっての息抜きは、ドライブして温泉に入って、美味しいご飯を食べる事。

    ココロとカラダのリフレッシュを大切にし、日々の仕事に励む一児の父親です。

    郵便番号検索

    my-hobby

    とのさま
    げーむのおうさま

    大人なのに好きなことしかやらない駄目人間。

    Web系が得意、アクセスは苦手><

    tonosamart.com

    セクレタリアト
    ギャンブラー

    フリーランス時代は仲間の現場を探すことが多く、それをきっかけに会社を設立。

    現在はSI業に特化せず、他の業種にも興味を持ち始めています。

    メドレー株式会社

  • 広告