Archive for 2008年12月

今年もいろいろなことがありましたが、特に印象に残ったのは「サブプライム問題」に端を発したリーマンブラザースの破綻、世界同時不況、急速な円高、世界同時株安などなど。実際に、これによりなんらかの影響を受けた方も数多いのではないでしょうか。IT投資を控える企業の増加、人件費の削減などなど…

私の周りでも、単価の減額を要求されたり、そもそもプロジェクト自体が解散してしまう、などの話も耳にするようになりました。我々を取り巻く環境が厳しくなっているのは事実です。

ですが私は思うのです。こんな時だからこそフリーで活動することに意味があり、フリーで活動しているからこそチャンスがあると。独立してやっていくのは、さまざまな要素が必要です。メンタル、フィジカル、スキル、etc…何より必要なのは自信ではないかと思います。だからこそ自分で状況判断し、自ら行動することができる…そんな人材が求められていると。フリーで活動されている方々は、少なからず、何らかの信念を持っているはずです。志あるものが同じ方向へ進めば、必ず、何か大きな変化を起こせるのだと確信しています。

私は時代に逆行します。

ブログをはじめて3ヶ月半、まだまだ短いですが、ここまでやってこれたのはflashcastのメンバーの協力があったからこそです。この場を借りて、お礼を言いたい。ありがとう!

そして、もちろん、このブログを見ていただいている皆さんのおかげです!来年もflashcastをよろしくお願いいたします!

flashcast:フリーで働くITエンジニア集団のブログ: AIRアプリをログイン時に起動させる方法でスタートアップメニューにAIRアプリのショートカットを作成する方法をご紹介しましたが、この方法にはいくつか難点がありました。

  • アプリケーションでショートカットを登録しているので、アンインストール時に(インストーラにより)削除はされない。
  • 毎回アプリの起動時にコールされるとショートカットを手動で削除しても、毎回作り直されてムカツク。
  • 逆に初回のみしか起動されないようなロジックを書く(SharedObject等)と、一度でもアンインストールすると、自動的にはショートカットが作成されない。

これを解決するために、<アプリ名+META-INFディレクトリの作成日時(インストール日時)>の共有オブジェクトを生成し、起動時にこの共有オブジェクトが存在するかで初回起動か否かを判別します。存在しなければ初回起動です。
続きを読む »

前回の記事でCocomo SDKをダウンロードしましたが、今回はそれをFlex Builder3.0にセットアップしてみます。[Flex Builder 3 plug-in]フォルダ配下に[com.adobe.cocomo]フォルダを新規作成し、ダウンロードしたzipをここに解凍しました。

ここからが、それ以降の手順になります。

※ Cocomo Developer Guideの12ページから14ページを参考にしました。

まずはFlex Builderを起動し、新規プロジェクトを作成します。


続きを読む »

Adobeもいよいよクラウドに進出か!ということで、11月16日~19日に開催されていたAdobe MAX 2008 USで注目に値する新たな発表がありました。中でも個人的に興味のあるCocomo βを早速つかってみました。

“Cocomo” Developer PortalにあるHelp(英文)を訳しながら進めたので、せっかくですから今回はその翻訳をメモしておきます。

※ こちらのHelpはLoginした後のポータルサイトのトップページからリンクされていますので、URLの公開は控えさせていただきます。
続きを読む »

lighttpdって、日本語で呼ぶとき困りませんか?ライトエイチティーティーピーディーなのか、ライトティーピーディーなのか?正しくはlightTPDで後者のようです。
lighttpd – Wikipedia

lighttpdとは、軽量(light)で高速なWebサーバ(http)として動くデーモン(d)で、Apacheよりも高速だと言われており注目を集めていますが、phpとの連携をAmazon EC2で試してみました。

いつものようにFedora8のパブリックAMIを使用してインスタンスを立ち上げ、PuTTYにてログインします。後の手順でlighttpd-fastcgiパッケージをインストールするのですが、yumコマンドでlighttpd-fastcgiが見つからなかったため、まずyumのリポジトリを最新状態にしました。

[root@domU-12-31-39-00-A1-D6 ~]# yum update

lighttpdをインストールします。

[root@domU-12-31-39-00-A1-D6 ~]# yum install lighttpd

続きを読む »

12月11日現在のS3 Firefox Organizerの最新バージョンは0.4.5です。
Amazon S3 Firefox Organizer(S3Fox) :: Firefox Add-ons

私もこのバージョンを使用していますが以前のバージョンではなかった使用上の注意点をあげておきます。

画面右上部にはS3のバケットに保存されているディレクトリとファイルを(FFFTPみたいな)一覧形式で表示しています。バケット直下にはファイル名なしで0byteのディレクトリがありますが、これはごみデータではありません。カレントディレクトリを示しています。これを削除してしまうと、バケット配下に保存しいるすべてのデータが削除されてしまいます。EC2に登録しているカスタムAMIと紐づいているイメージファイルも含めてすべてです。

以前のバージョンでは削除できなかったのですが、S3 Firefox Organizer(0.4.5)では削除ができてしまいます。やっちまいました・・・一度削除処理が走り始めるともう止められません。時間をかけて作ったイメージファイルが削除されていく様をただただ見守るしかありません(涙)。Flash Media Server3の無償デベロッパ版を入れてたやつも消えちゃいました。ずいぶん前に作ったものもあったので、いい意味でリセットされましたけど。

稼働率99.95%以上というSLAを引っさげて10/23に正式版になったAmazon EC2、久しぶりにいじってみました。β版から使っていたカスタムAMIも問題なく動きました。

EC2を使っていると、ローカルで作成したものを起動中のサーバにアップしてブラウザから確認、というようなことをしたいときがありますが、こんなときに便利なのがs3sync.rb

1.起動中のサーバにインストール

[root@domU-12-31-39-00-A1-D6 ~]# wget http://s3.amazonaws.com/ServEdge_pub/s3sync/s3sync.tar.gz
–20:58:13–  http://s3.amazonaws.com/ServEdge_pub/s3sync/s3sync.tar.gz
           => `s3sync.tar.gz’
Resolving s3.amazonaws.com… 72.21.202.66
Connecting to s3.amazonaws.com|72.21.202.66|:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 30,415 (30K) []

100%[============================================================================>] 30,415        –.–K/s

20:58:13 (2.61 MB/s) – `s3sync.tar.gz’ saved [30415/30415]

続きを読む »

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があるからなのです。
続きを読む »

SQLiteに接続する際に、テーブルが存在していなかったらファイルをcreateするAIRアプリを作成する場合、以下のコードのようなコードを書いてしまうと、アンインストールしてもファイルは削除されません。

package
{
 import flash.data.SQLResult;
 import flash.data.SQLStatement;
 import flash.events.SQLEvent;
 import flash.filesystem.File;

 public class TestManager
 {
  private var _connection:ConnectionManager;
  private var arr:Object;

  public function TestManager()
  {
  }

  public function initTest():void {
   var file:File = File.applicationStorageDirectory.resolvePath("test.db");
   var str:String = "CREATE TABLE IF NOT EXISTS test (" +
    "id INTEGER PRIMARY KEY, " +
    "original VARCHAR(10));"

   _connection = new ConnectionManager();
   _connection.initConnection(file);
   _connection.execute(str, initTestHandler)
  }

  private function initTestHandler(event:SQLEvent):void {
   _connection.execute(
    "SELECT * FROM test " +
    "ORDER BY id desc;",
    selectHandler);
  }

  private function selectHandler(event:SQLEvent):void {
   var stmt:SQLStatement = event.currentTarget as SQLStatement;
   stmt.removeEventListener(SQLEvent.RESULT, arguments.callee);

   var result:SQLResult = stmt.getResult();

   if (result.data != null) {
    arr = result.data;
   }
  }

  public function load():Object {
   return arr;
  }
 }
}

続きを読む »