A Day in the Life

2008-01-31

エクボ360 今年初起動

一月中に起動した!RezHD 買ったよ!プレイしないで電源切った。。。CoD とか PS3/PSP いろいろ積んでる…。

gerry++

無理せずピタリット飲んだ。

家でPC開いちゃうと

あれだなー…。HDDレコーダ最初に電源入れないと!!

as3template.rb

なんか vim の template だと問答無用でファイルタイプによってテンプレートがつっこまれてしまうのでいつもこのスクリプトでテンプレート作ってる。

こんな。

[5]$ as3template Example.as
[5]$ cat Example.as
package {
    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;

    [SWF(frameRate=60, background=0x000000)]
    public class Example extends Sprite {
        public function Example() {
            stage.align = StageAlign.TOP_LEFT;
            stage.scaleMode = StageScaleMode.NO_SCALE;
            init();
        }

        public function init():void {
        }
    }
}

ソース

#!/usr/bin/env ruby

require 'pathname'
if ARGV.empty?
  warn 'as3template Foo.as'
  exit 1
end

name = ARGV.shift
file = Pathname.new(name)

if file.exist?
  warn "#{file} is exist."
  exit 1
end

file.open('w') {|f| f.puts DATA.read.gsub('_NAME_', name.sub('.as', '')) }

__END__
package {
    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;

    [SWF(frameRate=60, background=0x000000)]
    public class _NAME_ extends Sprite {
        public function _NAME_() {
            stage.align = StageAlign.TOP_LEFT;
            stage.scaleMode = StageScaleMode.NO_SCALE;
            init();
        }

        public function init():void {
        }
    }
}

Flex3 Java-based Compiler API

今更ながらにpdf読んでAPI眺めたけどあまりの何にも出来無さにガックリ。コンパイル時の詳細なログトレース以外には mxmlc を外部から叩くのとほぼ同じことしかできないじゃんすかー。プロジェクト用のカスタムantコマンド作る時なんかにちょっとつかえるかもなーとかだけどそもそもant使わないしFlexBuilderも使わないしなぁ。

参照渡し・値渡し

AS3は参照渡し(call by reference)ではない。値渡し(call by value)である。

http://d.hatena.ne.jp/flashrod/20080127#1201443331

このエントリーを読んだとき、いやそれ参照渡しでしょ、と思った。という話題を振ったらチョさんがいやその呼び方で良くて、AS/JS には参照渡しは無いよと教えてくれた。

えー ruby のメソッドの引数って全部いわゆる参照渡しだと思ってたんだけど

つまり、参照という言葉使いが2通りあるのが問題で、「参照の参照渡し」と言った場合、前の「参照」は、ポインタ(オブジェクトのアドレス)の事であり、後ろの「参照渡し」はとにかく変数を渡すことです。だから「参照の参照渡し」とは、「ポインタ型変数をそのまま(シンボルとして)渡すこと」となります。

~中略~

で、「Ruby のメソッドの引数の授受は参照の値渡しである」というのが C(++) ユーザへの説明のスタンダードになるわけです。

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/18426

なるほど、参照の値渡しか。というかこの話は higepon と以前した気てきた…。LL しかやってない(自分とか)人は、参照渡しは参照の値渡しという意味の文脈としかとらえられず勘違いしがちかも…。

C/C++ はすらっとコード書けないので PHP の参照渡しを書いてみる。

function ref($arg) {
  $arg = 'b';
};

$a = 'a';
ref(&$a);

echo $a . "\n"; //=> b
?>

ruby/js/as は参照の値渡し

#!/usr/bin/env ruby

def ref(arg)
  arg = 'b'
end
a = 'a'
ref a
puts a #=> a

perl は参照渡し

#!/usr/bin/env perl
use strict;
use warnings;

sub ref_ {
    $_[0] = 'b';
}

my $a = 'a';
ref_($a);
print $a . "\n"; #=> 'b'

たぶん当たり前のことなんだろうけど間違って覚えていて恥ずかしかったので自警を込めて。

いやでも perl で @_ 参照してるということは配列の中身変更してるから参照の値?なんかよく解らなくなってきた…

as3 log

ただし、この関数はFirebugがインストールされてあることが前提のものなので、たとえばIEを利用している場合は表示がおかしくなる場合があります。

http://blog.katsuma.tv/2008/01/as3_log_function.html

ExternalInterface#call はラッパが try/catch をはさむのでエラー表示されることは無いと思うのですが…。そもそも真っ白になるのは別の原因だと思います。

破壊的・破壊的じゃない

as3 で自分で作ったメソッドが破壊的なのか破壊的じゃないのか解らなくなってよくソース読む。プロパティ末尾に!使いたい!。まぁ頭に$でもいいのか。Class#$merge()。ださい。

記事の一覧 >