Archive for 12月, 2007

未分類 | 4 Comments | 12月 31st, 2007

ActionScript3 で Ruby の send のようなことをするには [method名] とすれば良いようだ。

var method_name:String = 'length';
var str:String = 'htp://ecpplus.net';
trace(str[method_name]);

=> 18

みたな感じでとれる。Object は .method名 でも [method名] でも行けるような感じ。まだまだイベントが使いこなせない。

未分類 | No Comments | 12月 29th, 2007

Suse10.3 64bit版に FlashPlayer9 入れようとしたら普通には入らないみたい。Adobeのページで tar.gz 版落としてきたら、中に libflashplayer.so というファイルがあり、これをインストールすればいい。

flashplayer-installer というシェルスクリプトのインストーラがついてくる。これを見ると、Firefox のプラグインは ~/.mozilla/plugins というディレクトリのようだ。しかし、plugins はデフォルトではないようなので mkdir してあげる。そして、プレイヤーを突っ込む。

$ mkdir ~/.mozilla/plugins
$ cp libflashplayer.so ~/.mozilla/plugins

これだけでは動かないので、nspluginwrapper というコマンドをかましてあげる。これが root で実行しないとダメみたい。

$ sudo nspluginwrapper -i ~/.mozilla/plugins/libflashplayer.so

これで FlashPlayer9 インストールできる。Flex2 開発するために入れねばいけない。さっき JAVA入ってなくて小一時間ハマったよ。

未分類 | No Comments | 12月 16th, 2007

PHP の RailsコピーのAkelosを触ってる。まだVersin0.8だけど、良さそうなので使ってみたい。CakePHPはRailsコピーかと思ったら全然違ったので使うのやめた。

migration

$ php script/generate model Book

上記のコマンドで、Bookモデルが作られる。そうすると、migrateファイルにあたるものが app/installers/book_installesr.php に出来る。デフォルトだと以下のような形になって、バージョンUPとDOWNに対応した処理を書くようになっている。

< ?php
class DrinkInstaller extends AkInstaller
{
    function up_1()
    {
        $this->createTable('drinks', "
          id,
          name
        ");
    }
 
    function down_1()
    {
        $this->dropTable('drinks');
    }
}
?>

createTableの第一引数がテーブル名、第二引数がテーブルの中身になる。第二引数は、カンマでカラム名を区切っていく。型を指定しないと、自動的に最適な型にしてくれるということだが、怪しいので指定したほうが良さそう。以下のように書く。

        $this->createTable('drinks', "
          id,
          name varchar(255),
          descrption text,
          isbn varchar(20) not null
        ");

これをDBに反映させるには script/migrate book install と書く。install をやると up が順に実行され、 uninstall を実行すると down が実行される。

chu@chu-mac:~/Sites/sample$ php script/migrate book install
Upgrading-----
(mysqlt): SET AUTOCOMMIT=0
-----
-----
(mysqlt): BEGIN
-----
-----
(mysqlt): SHOW COLUMNS FROM books
-----
1146: Table 'sample_dev.books' doesn't exist
ADOConnection._Execute(SHOW COLUMNS FROM books, false)% line  854, file: /Users/chu/Sites/akelos/vendor/adodb/adodb.inc.php
ADOConnection.Execute(SHOW COLUMNS FROM books)% line  393, file: /Users/chu/Sites/akelos/vendor/adodb/drivers/adodb-mysql.inc.php
ADODB_mysql.MetaColumns(books, true, false)% line  202, file: /Users/chu/Sites/akelos/vendor/adodb/adodb-datadict.inc.php
ADODB_DataDict.MetaColumns(books)% line  723, file: /Users/chu/Sites/akelos/vendor/adodb/adodb-datadict.inc.php
ADODB_DataDict.ChangeTableSQL(books, id I NOTNULL AUTO KEY,
name varchar(255),
desctipntion XL,
isbn varchar(20) NOTNULL,
updated_at T,
created_at T, Array[1])% line  279, file: /Users/chu/Sites/akelos/lib/AkInstaller.php
-----
(mysqlt): CREATE TABLE books (
id                       INTEGER NOT NULL AUTO_INCREMENT,
name                     VARCHAR(255),
desctipntion             LONGTEXT,
isbn                     VARCHAR(20) NOT NULL,
updated_at               DATETIME,
created_at               DATETIME,
                 PRIMARY KEY (id)
)TYPE=InnoDB
-----
-----
(mysqlt): COMMIT
-----
-----
(mysqlt): SET AUTOCOMMIT=1
-----
Smart Commit occurred

途中にエラーっぽいメッセージがあるが、公式のScreenshot見てもこれが正常な動作のようだ。

ちなみに、以下のように書いておくと migration を uninstall した時にbooksテーブルがdropされます。Railsだと、デフォじゃテーブルやバージョン別のmigrationをサポートしてないからこれは結構便利かも。ただ、みんなで別々にやってたらどうなるのか。全部一気にやる方法がまだわからない。同じファイルに全部書いておけば問題はないと思うけど、要調査。

    function down_1()
    {
        $this->dropTable('books');
    }

未分類 | No Comments | 12月 14th, 2007

インストール

まず、flex2SDK のサイトへ行き、Flex SDK, Flex Language Pack を落とす。

Flex SDK の中に、 Flex Language Pack 内のファイルをディレクトリごとに配置する。MacのFinderで同じディレクトリ上書きすると、前にあった中身消しちゃうんだねー。

あとは Fles SDK ディレクトリのbinにパスを通せばいいみたい。

flexのコンパイルはやたら時間がかかるそうなので、Flex Compiler Shell を導入。ダウンロード、解凍したファイルをFlex SDK の該当のディレクトリに一緒に入れて置けばそのまま使える。

あと、ActionScript3 (mxmlc) でのコンパイルを100倍速にする方法 に書いてあった rlwrap というのも入れた。上下キーで履歴辿れたりするみたい。

rlwrap は port で入る。

$ sudo port install rlwrap

これで環境構築は終わり。

fsch はこんな感じに使うみたい。

chu@chu-mac:~/flex$ rlwrap fcsh
Adobe Flex Compiler SHell (fcsh)
Version 2.0.1 build 159086
Copyright (c) 2004-2006 Adobe Systems, Inc. All rights reserved.

(fcsh) mxmlc hello.mxml
fcsh: Assigned 1 as the compile target id
設定ファイル "/Developer/SDKs/flex/frameworks/flex-config.xml" をロードしていま##
/Users/chu/flex/hello.swf (126938 bytes)
(fcsh) compile 1
設定ファイル "/Developer/SDKs/flex/frameworks/flex-config.xml" をロードしていま##
Nothing has changed since the last compile. Skip...
/Users/chu/flex/hello.swf (126939 bytes)
(fcsh) 

rlwrap で fsch を起動して、そのシェル内で mxmlc コマンドを叩く。するとfcsh: Assigned 1 as the compile target id と出るので、次回からは compile 1 と id を指定することで、メモリ上に展開されたソースを瞬時にコンパイルしてくれるみたい。上の実行例だと、差分がなかいので何もしなかった様子。

fcwrap

インストール

コンパイルするの結構めんどくさいと思っていたら、fcwrap というのがあった。webrick でサーバが常時立ち上がってて、ソースの更新ごとにコンパイルしてブラウザをリロードしてくれるとても良いもの。

http://saqoosha.net/2007/03/25/534/

Rails環境がそろってれば、3あたりからで大丈夫な感じ。

3. gemsいろいろ
$ sudo gem install rails hoe mongrel rack --include-dependencies

4. fcwrap
$ svn co svn://rubyforge.org/var/svn/hotchpotch/fcwrap fcwrap
$ cd fcwrap
$ sudo rake install_gem

使い方

$ fcwrap -s hello_world.mxml

として、http://0.0.0.0:3001/ を開いておきます。 hello_world.mxml に更新があるたびにブラウザ側で勝手にロードしてくれます。

rascut

fcwrapの後継で高機能版の rascut というのが出ていたみたい。

インストール

$ sudo gem install rascut --include-dependencies

使い方

$ fcwrap hello_world.mxml -s

とするとサーバモードで起動して、http://0.0.0.0:3001/ を開いておきます。 hello_world.mxml に更新があるたびにブラウザ側で勝手にロードしてくれます。

プリントデバッグ

http://subtech.g.hatena.ne.jp/secondlife/20070219/1171872801

から log.as を頂いてくる。flex-config.xml に以下のように書くみたいなんだけど、その mxml ファイルがあるディレクトリに置いたら import せずにそのまま使えた。


/path/to/

以下のように書いたら、fcwrap 立ち上げて firefox の firebug の console でプリントデバッグ出来ました。AS3 の文法わからなすぎて、なんで log.as が呼ばれるのか分かってないけど、環境そろったので始めよう。

   private function sayHello():void{
     log('hello !');
   }

未分類 | No Comments | 12月 13th, 2007

中身がおかしくなったので再インストール。

保証なくなるのはもういいので、HDDを変える。

Hitachiの2.5inch 160GBの7200rpm のやつ。MacBookの遅さにいらいらしてたのだけど、HDD変えたら割と速くなったように感じる。それだけ。

download the hurt locker