トップ «前の日記(2006-11-03) 最新 次の日記(2006-11-05)» 編集

日々の破片

Subscribe with livedoor Reader
著作一覧

2006-11-04

_ Windows CE

MASの作者がCE版Rubyの話を振ってくるのだが、今はメンテが止まっているとか、別に需要は無いんじゃないとしか答えられないんだが、CEってヨーロッパじゃ利用されてるのかな? と誰とも無く聞いてみたり。

_ ASR

久々に読むとおもしろい、と思った。

_ ドイツの子供は恐怖に震えて成長する

もじゃもじゃペーター (ほるぷクラシック絵本)(ハインリッヒ・ホフマン/ささき たづこ)

残念なことに絵が出ないので、英語版のほうも。

Struwwelpeter(Heinrich Hoffmann)

恐怖の教訓話がこれでもかこれでもか、と恐ろしい挿絵と共に繰り広げられる子供のための絵本だ。

もじゃもじゃペーターは風呂が嫌い、爪を切るのも嫌い、髪を切るのも嫌い。そこで表紙の絵のような素敵な姿になる。そしてある日、恐ろしい運命が彼を待ち受ける。そのほかにも指しゃぶりをやめない子供や、火遊びをする子供や、好き嫌いをする子供、そんな日常的な躾がまだ身につかない子供たちが巻き込まれる恐るべき日常が美しくも楽しいポエムに乗せられて淡々と描かれる。ヨーロッパから遠く離れたイングランドでマザーグースを子供たちが楽しんでいる同じころ、ドイツではもじゃもじゃペーターが猛威を振るっていたのだ。

作者(絵も)は19世紀のまじめで子供好きなお医者さんらしい。待合室で退屈している子供たちを慰めようと伝承話をネタに自ら絵本を作るナイスガイだ。その本の効き目は評判に評判を呼び、ついに出版され、ドイツ中の家庭に1冊という大ベストセラーとなり、日本でも翻訳出版され、誰もが知ってるもじゃもじゃペーターとなった。

(なんとなくティルに触発されて、ドイツもので)

_ メモ:ASRにデフォルトオブジェクトを組み込む

ActiveScriptにはデフォルトオブジェクトというフィーチャがある。

具体的には、IActiveScript::AddNamedItemをSCRIPTITEM_GLOBALMEMBERSフラグ付きで呼ばれた場合に、該当オブジェクトのメソッドをグローバルな名前空間内で探索可能とするというものだ。

例)IE内でのwindowオブジェクト。alert('hello'); が実行可能なのは、JScriptの組み込み関数としてalertが用意されているからではない。windowオブジェクトがグローバルな名前空間内に含まれているため、windowオブジェクトのalertメソッドがオブジェクトの指定を省略しても呼び出せるからだ。

これを、ASRが実装することを検討する。

問題は、named itemがモジュールではなく、クラスのインスタンスだという点。モジュールであれば、簡単。

_ メモ:ASRはtest/unitと相性が悪いというか使えない

test/unitが実行されるのは、exit時。この時点で、named itemは解放され、SCRIPTSTATEはUNINITIALIZEDへ遷移している。したがって、ホスト提供オブジェクトはすでに切断されている。

追記:むとうさんから教わった方法で回避。

<package>
<job>
<script language="GlobalRubyScript">
  require 'test/unit'
  class TestGRscript < Test::Unit::TestCase
    def setup
    end
 
    def test_constantiate
      assert_equal('Windows Script Host', Globals.wsh.Name)
    end
 
    def test_globalize
      assert(/^\d+\.\d+$/.match($WSH.Version))
    end
  end
  exit Test::Unit::AutoRunner.run
 
</script>
</job>
</package>

_ デフォルトオブジェクト

いい加減だけど、こんなんでいいかな。
class B
  def bar()
    puts 'bar'
  end
end
 
@b = B.new # ASRがインポートしたオブジェクトと想定
 
def self.method_missing(s, *args)
  begin
    @b.send(s, *args) # とりあえず委譲
  rescue NoMethodError
    super             # 既定動作
  end
end
 
bar                   # グローバルオブジェクトが処理する
xz                    # 本当にエラー

_ 定数化

上のほうで、constantiateなんて言葉をでっちあげたが、正しい言葉がわからない。

Googleで検索したら同じような問いが

でも、concatenateは違うような(これは、単なる書き間違えみたいだな)。

communication as a reference to constantiate the variable

この用例は定数化みたいだが。

本日のツッコミ(全4件) [ツッコミを入れる]
_ keisuken (2006-11-04 14:32)

> Windows CE<br>Windows CE/Mobile版のRubyが欲しいと思う人はそれなりにいると思いますよ.<br>PDAが衰退してしまったのでそもそも動作機器が少ないと思いますが,日本だとW-ZERO3とかもありますし,Emmbdedな機器で使おうとか思ってるんじゃないでしょうか.<br>#.NET Compact Frameworkがあるのでなくてもそう困らないと思いますけど(^^;.

_ arton (2006-11-04 15:48)

そうですか。確かにW-ZERO3はありますね。<br>とりあえずruby-talkの購読を勧めとこうかな。

_ むとう (2006-11-04 17:06)

test/unitとの相性ですが、Ruby-GNOME2でも同様の問題がありました。Ruby-GNOME2の場合はtestrbを使うと回避できるようですがどうでしょうか。<br><br>http://www.yotabanana.com/lab/20060116.html#p01

_ arton (2006-11-04 17:14)

どうもありがとうございます。無事、動作しました。<br>しかし、これはこの手のライブラリ作ってる人に共通のトピックでしょうね。<br>#rjbはTestCaseのsetup、tearDownでJVMのロード/アンロードをしてるから、影響を受けてないのか。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|

ジェズイットを見習え