トップ 最新 追記

日々の破片

Subscribe with livedoor Reader
著作一覧

2008-06-01

_ 2008年6月1日

子供のころ、ドライブすると周りの車のナンバープレートを使って10を作る遊びを親とやった(やらされたのかも)。同じようなことをここ数年は自分が子供とやっている。

20080601だと、20/(0+8+0-6)+0*1で10ができる。この場合の20のように桁数を変えるのが結構ミソだったりする。最近は負数にできるのだから逆数もありにしようとか、段々できる範囲が大きくなってきている。

やり方が複数通りある場合は、2*(0+0+8)+0-6+0*1のようにシンプル(除算や複数桁はシンプルではないと感じる)なものが良い解となる。

_ Coldplay

美しき生命 【初回限定盤】(コールドプレイ)

iTSで予約。XYZが良かったとか(桑島さんに勧められたんだよな、確か)、イーノはまだ仕事してたのかとかいろいろ。

しかし、物理CDもいいな。

本日のツッコミ(全2件) [ツッコミを入れる]

_ maq [イーノはまだまだ現役バリバリですよ〜ん。バーンとのツアーも計画されてるみたいですし :) 日本に来るかはわかりません..]

_ arton [それ以上に、阿木謙にたどりついたほうがもっと驚きだった……興味深いリンク、どうもありがとうございます。]


2008-06-02

_ ミッションスクールの謎

あるミッションスクールの創立年の話になって、1860か1870のどちらかだと言い張る。

徳川政権ではあり得ないから1860は却下して、ハイフツ(携帯から入力するのは無理だ:追記:廃仏毀釈と書きたかったのだったがフを濁らせてなかったのが原因かな?)が1870年代終わりだと思うから(間違い。初め。日本のタリバン―天皇主義者による石仏破壊事件など)1870も否定した。

でも実際は1870だった。例えばフェリス。

キリシタン(漢字で書きたい)禁制の解除は1874のはずだ(確認してないので誤差はあり得る)。

なぜ禁制下で建学可能なんだ?

そこで考える。ミッションスクールが宣教師のための学校ならば、日本人用ではないのであり得るかも知れない。

ミッションがミショナリの意味のミッションならば、それで合っているだろう。

そこで疑問はミッションスクールのミッションとは何か?


2008-06-03

_ OSXのJavaの中

TopCoderのJWSアプリケーションで遊んでいるというか遊ばれているというか遊べていないというかなのだが、OSXの世界とコピー&ペーストができなくて閉口する。

Command-v/cに反応しないし、マウスクリックにコンテキストメニューをアサインしているわけでもないし、メニューバーも実装されていない。だから、何かの理由からコピー&ペーストを実装していないのかと思っていた。

が、途中で放置して別のことしていて戻ってみたら、セッションが切れたからローカルへコピー&ペーストしてやり直せというようなメッセージを出しているのに気づいた。コピー&ペーストしろと書いてあるくらいだから実装されているのだろう。

でも、Command-cは効かないし、マウスをどうしようが何も出ない(選択はできる)。ふと、JavaのWORA特性に思い当たる。Ctrl-cを押してみる。コピーできた。

疑問点:jTextなんちゃらがOSがどうだろうがCtrl-Cでコピーを実装しているのか、それともアプリケーションを作った人がCtrl-Cにアサインしたのか、それともOSXのSWingの実装がCtrl-Cをコピーに割り当てたのか、どのレイヤーで、キーボードショートカットが動作しているのだろうか。

本日のツッコミ(全4件) [ツッコミを入れる]

Before...

_ きしだ [にしおさんか誰かがコピペできないって書いてたのですが、まったく問題なくコピペできてて、なんのことだろうと思ってたので..]

_ Kazz [>疑問点: パス上にawt.properties、又はsun.awt.resources.awt.propertie..]

_ arton [>Kazzさん、見あたらないですね。今、SWingデモを試しましたが、素だとCommand-C/Vにアサインされてい..]


2008-06-04

_ 配列を作る

aからbまでを要素に持つ配列の作り方。

(a..b).to_a

(いつも忘れるのでメモ)

_ 再帰ではない方法

TopCoderの最初の練習問題(チュートリアルではなくアリーナのほうのやつ)のアドバンスがどうやってもできずにえらく悩む。

1から与えられた数までの集合(たとえば、与えられた数が4なら、1,2,3,4)から、与えられた桁数を埋める数字を作る(たとえば与えられた数が3なら、123とか431とか)。

この時、作られた数字の並びが、左側に対して等しいか大きくなるような数は何通りできるか? という問題。たとえば、上の集合と桁であれば、123はOK、111もOK。でも、121はNG。

これは再帰を使えばすぐに解ける。といってもすぐにできたわけではないのが悲しいところであるが。

#最後のパラメータはデバッグ用
def count_r(start, range, depth, a)
  if depth == 0
    p a if $DEBUG
    return 1
  end
  r = 0
  start.upto(range) do |is|
    a.push is
    r += count_r(is, range, depth - 1, a)
    a.pop
  end
  r
end
puts "4, 3(r)=" + count_r(1, 4, 3, []).to_s
puts "4, 4(r)=" + count_r(1, 4, 4, []).to_s
puts "4, 5(r)=" + count_r(1, 4, 5, []).to_s
puts "93, 8(r)=" + count_r(1, 93, 8, []).to_s

最初の3つはすぐに求まる。

4, 3(r)=20
4, 4(r)=35
4, 5(r)=56

だが、4つ目(実際の問題のINDIGOのはず)は無限とも思われる時間がかかっても終わらない。もちろんYARVじゃなくてJavaで書いても同じだ。

ということは、もっと賢い(というか、全件を求めているのだから単に力任せで少しも賢くはないから、「もっと」というのは変だな)アルゴリズムがあるはずだ。

が、これがわからない。頭の中には左から右に枝分かれする絵があるのだが、再帰を使ってすべての枝をたどる方法ではなく、それを計算で求める方法がわからない。

で、考えていた。ほぼ1日。正味でも数時間かも。

さっきわかった。1から4の場合であれば

[1, 1, 1, 1]
[4, 3, 2, 1]
[10, 6, 3, 1]
[20, 10, 4, 1]

ということか(数字自体は見えていたのだが、配列に入れることで求め方がわかったということ)。その要素から右端までの要素の総和が次ぎの要素となる。

それにしても、こういうの(あるいはもっと賢い方法)をさっと考えつく人がうじゃうじゃいるわけだから、世の中は広い。

_ >P31 1.9 や JRuby は green thread ではない気がしますね

いや、だから、今の、ステイブルなバージョンについて書くと(言葉は違うが)最初に書いてあるじゃん。あと、JRubyはスコープ外。

まるごと Ruby! Vol.1(るびきち/arton/大場 光一郎/高井 直人/後藤 謙太郎/新井 俊一/瀧内 元気/cuzic/倉貫 義人/大場 寧子/久保 優子/十河 学/舞波)

正誤表とサンプルダウンロード

>特集1 が Java との比較ってのもすごいな

これは同意。正直、JRubyの記事が最初に来て、それに対しての補完(じゃないな。カウンターでもないし、蛇足と言う気はないし)になるのかと思ってた。

>Lisp 涙目

なぜ?

2008年06月03日の日記

_ コンピュータにやらせる

inabaさん(最初、間違えて書いてましたごめんなさい)の指摘に衝撃を受ける。

その通りだ。

やっていることは既に求めた枝の数の足し込みなのだから、キャッシュして利用すれば良い、ということもそうだが、それより僕が思いつかなかったのは、引数の組がそのまま枝の形(葉の数)だという点。これか。

すごく勉強になった。ありがとうございます。

晒してみるものだなぁ。

本日のツッコミ(全5件) [ツッコミを入れる]

Before...

_ arton [更新ができないのは何故だ?]

_ aki [> [1, 1, 1, 1] > [4, 3, 2, 1] > [10, 6, 3, 1] > [20, 10, 4..]

_ arton [>これは「パスカルの三角形」と呼ばれるものですね。 あ、本当だ。気づきませんでした。ありがとうございます。 http..]


2008-06-05

_ 正しく届かない

単純所持宣言 / その他、 性規制について

まともにものを考え、他人の考えを尊重すれば、(社会的な分野については)断言はできないし、結局はみんながどう考えるかがすべてなので、相手に考えることを勧めるために、疑問調にならざるを得ない。

問題は、それが正しい戦略なのかどうかだ。と時々考える。


2008-06-06

_ ほいほいほいほい

ここから

順に読んでいっていきなり不思議に思う。っていうか、大域脱出は使わないのだろうか?

思い出してみると、Cでは一回しか使ったことないけど(フレームワークが呼び出したアプリケーションが強制退出するために呼び出す関数としてlongjumpする関数を提供した。もちろん、あらかじめフレームワーク側でsetjumpしておく)。

空whileだのの理屈でいくと、こんな感じだろうか?

ErrorType e = ERROR_NONE; // なんかのenum値
while (0) { // 6/7追記: これは間違い。doでなければいきなりスキップされる
    if (foo() != SUCCESS) {
        e = ERROR_FOO;
        break;
    }
    ...
}
switch (e) {
case ERROR_FOO:
    throw new FooError();
case ...
}
return SUCCESS;

スタックトレース情報が無駄になるなぁと思う。

というか、eという状態変数は無駄だと思う。

というか(前提とした場合)、enumと対応する例外クラスというのはバカ丸出し(なので、さすがにこういうのはあり得ないか)。

と考えると、スローはどこからでもOKなのだろう。であれば、returnだってどこからでもOKじゃん。

でも、OKじゃないからwhile使ったりしているという前提となるのだから、……どうやるんだ?

で、最後までいくとまさに最初にガンガン例外を投げる話に行きつく。どうみてもwhileが意味不明だ。

意味不明なものというのは、たいていの場合、文化だ。たとえば、ちょんまげとか辮髪とか。文化外から見ればただのバカ丸出しだが、本人たちにとっては存在証明だったり。

コードは文化なのだなぁ、とつくづくと思う。

ならば、それはそれで良いことなのだろう。

_ Strutsを一掃

世界中の誰もが魅了されるようなWebアプリケーションを開発し、公開する。

しかも、仕様から、細かいリクエストが山ほど来るように作る。日記とかBlogみたいに、ある程度ローカルで書きこんでから投げるようなのではなく、ひとことふたこと書いてすぐサブミットみたいなやつ。

ここまでできたら、終わったも同然だ。というか、ここまでが一番のハードル。

あとは、人気が出まくったところで、これはStrutsを使って開発したことを明言する。もしかしたら規約の表示画面だけかも知れないけど、使っていることについては嘘でないのでOK。突っ込まれたら、「一部は他の技術も取り入れている」とか言えばOK。まったくもって嘘ではないし。

そのうち負荷に耐えきれなくなる。そうしたら、自然とシステムが劣化するに任せる。時々、処理を変えてみたり。なにか中の人がいろいろ頑張っています感が醸せればOK。

そのうちに、実際にはそのシステムがどのように構築されたかは中の人以外は、知りもしないけど、なんとなくStrutsダメダメという雰囲気が利用者の間で広まる。

今ここ。


2008-06-07

_ トリッキーなコード

昨日書いたリストを眺めていて、やっと「トリッキーなコード」という言葉の意味を理解したように思えた。

トリッキーという言葉が意味することは「奇をてらったさま。巧妙なさま。「―な仕組み」」なので、奇をてらってはいるけれど、考え通りに動く=巧妙なコードという意味だろう。

女子高校生風に考える(良くわからないことにしておくが、こういう場合、JKと書くものらしい)と、途中のコードをスキップして制御を移動させる場合はgotoというステートメントを使うものだ。Cの言語仕様ではそうなっている。

したがって、常識的で、まったく奇のてらいがない、普通のコードであれば

int foo() {
    int result = ERROR_EXIT;
    if (foobar() != SUCCESS) goto error_return;
    if (barbaz() != SUCCESS) goto error_return;
        ...
    ...
    result = SUCCESS;
error_return:
    return result;
}

と書くところだ。

これは、しかし、do……whileを使った(修正済み:コメント欄参照)トリッキーなコードでも記述できる。

int foo() {
    int result = ERROR_EXIT;
    do {
        if (foobar() != SUCCESS) break;
        if (barbaz() != SUCCESS) break;
        ...
        result = SUCCESS;
    } while (0);
    return result;
}

これがトリッキーなのは、本来、「偽になるまでループ」するために利用するwhileを、breakによって節から退出できることを悪用してgotoに代替させている点にある。そもそも論では、あらかじめ条件式に偽を設定するところからしてトリッキーだ。

僕が良く耳にする女子高校生なコーディング規約は、「トリッキーなコードは禁止」というものだ。ふむ。

どうやら、トリッキーなコードを許容できるくらいに、gotoを使うことに無意味(この場合に意味ありますか?)な拒否反応があるのだろう。

おもしろい。

_ 女子高校生的に考えることの重要さ

そこで考えるのだが、ダイクストラの時代であればともかく、while、do……while、さらにはforといった至極便利極まりないステートメントを持つ言語を利用していて、あえてgotoを使う人がいるのだろうか?

昔の人はそうだったかも知れない。はじめてwhileだのdoだのを目にした人が、「かーっ! こんなまだるっこしいもの使ってられるかってんだ」とgotoを使うというのは、まあ、理解できなくはない。

しかしだよ、今この時点で、

for (int i = 0; i < 10; i++) {
    if (a) {
      continue;
    } else if (b) {
      break;
    }
    ...
}

と書かずに、わざわざわざと、

    int i = 0;
start_loop:
    if (i >= 10) goto exit_loop;
    if (a) {
        i++;
        goto start_loop;
    } else if (b) {
        goto exit_loop;
    }
    ....
    i++;
    goto start_loop;
exit_loop:
    ...

なんて書くかね? 本気でそう信じているのか?

そう信じているなら、イワシの頭賞を進呈する。どうぞご自由に。

しかし、女子高校生風に考えれば、そんな面倒なことをする人間はいない。

であれば、goto禁止というのは取り下げたほうが良い。

そうすれば、「このgotoというステートメントは何の役に立つんだ?」となるだろう。

そこで、「エラーになったら、エラーリターン用のラベルへ分岐するために利用したり、深い制御構造の中から脱出するために利用するんだよ」で済むではないか。

10年ドロドロおじさんの悪口を言うのも結構だが、ドロドロおじさんと同じレベルで「禁止」とか無定見に言ってないか、考えてみても良いと思う。

本日のツッコミ(全6件) [ツッコミを入れる]

Before...

_ みずしま [便乗してどうでもいいツッコミですが、next;じゃなくて continue;ではないかと。]

_ arton [ううむ、まったく説得力をなくすバグの連続。後で直しておきます。ありがとうございました。]

_ arton [あれ? 更新できたぞ。]


2008-06-08

_ コロッサスユース(追記:コロッサルをなんか書き間違えている)

ペドロコスタのコロッサスユースを観に、イメージフォーラム。

世の中には、真に才能を持つ人間が存在するという事実に、打ちのめされると同時に、深く楽しむ。

映画館も気を利かせて、始まるまでの幕間の音楽はヤングマーブルジャイアンツ。

Colossal Youth (Dlx)(Young Marble Giants)

例によって大して好きでもない、オルガンのペナペナとリズムボックスのドンカマ音とへたな歌。でもまあ、一種のドアーズと言えなくもないかなぁとか一瞬感じたりした。なんで、コロッサルユース(どでかな若さ?)と不思議に思っていたのだが、どうも、ペドロコスタ自身が、YMGを意識して英語タイトルを付けたらしい(オリジナルとフランス題は、前進する若さみたいな感じ)。

薄暗い画面奥に半ば壊れた外壁の建物。代官山の同潤会アパートをちょっと思わせる。ディープフォーカス。いきなり窓からでっかな家具が落ちる。それまでの静寂が破れる。次々に家具が落ちる。強烈な破壊音。いやな音だ。

黒人女性。手にナイフ。海で泳ぐ話を話す。鮫がいると男たちに言われる。いつまでも泳いでいたい。岩の上に置いた子供を心配する。探している。岩から落ちそうになる。

まくしたてて去る。

すべての構図とすべての光と影、すべての衣装、すべてのセリフが完璧に構築された2時間30分。バンダの部屋にはまだ残っていた退屈する一瞬が完全に無くなっている(もっとも、観客つまりおれの体調や精神状態にも依存する)。

撮影は、一部を除き、すべて大して広くない部屋の中。

スラムからの立ち退き先の中層アパートの白い部屋。美術館。バンダのダブルベッド、妹の薄暗い部屋、レントのテーブル、名前忘れた末息子と食事する食堂のテーブル。ほとんどのシーンでの独白は腰のあたりから仰角による撮影。遠近感を強調するために、台形の映像。異様な映画だ。明るいか、暗いかのどちらか。清潔か汚いかのどちらか。惨めか神々しいかのどちらか。

それに対して、美術館の庭、最後に一瞬出る川。中層アパートの中庭でヴァンダを呼ぶシーンではあえて近寄っているため、広さはまったく感じさせない。

現在の服である白いワイシャツと黒いスーツ。ぴかぴかのワイシャツなのだが、それは行く場所によって異なる。美術館や、鍵を持った市の職員とのシーンではシミだらけの不潔なおっさんだが、ヴァンダや(名前忘れたが足の異常を抱えた物乞い)と一緒のシーンでは未来のように光る。

レントと一緒のときの作業員風の服。頭の包帯。包帯が巻かれるのは、美術館の警備人に、美術館の工事中に落下したことが語られた後となる。

完全な映画で示されているのは、ある移民の物語のメタデータだけだ。

たとえば、奥さんに刺し殺された亡霊の家族巡りの物語と読むことすら可能だ。過去と未来、あったこととなかったこと、ありそうなことが、ごちゃまぜに語られる。レントに教え込む手紙の文句はどんどん長く変容していく。

ヴァンダの部屋 [DVD]

バンダの部屋の不健康だがぞっとする美しさを見せる女性と、同じ女性とは思えない、年月。煙草と咳とたえまないお喋りだけが共通。ヘロイン中毒は治療中だとわかる。出産の話。治療薬が盗難されてからは、余分に配布されるようになったこと。

存在しない子供のために一番広い部屋を手に入れる。しかし家具を失ったので床で寝ている。市の職員の電気、ガス、家賃に関する冷たい宣告。最初の部屋での壁についた汚れを拭うシーン。すべてが的確。

どうして、ペドロコスタは特別なのだろうか? ペドロコスタと比較するとゴダールでさえ夾雑物が多すぎて退屈だ。

おそらく、映画とは何かについて、さらに深化させることに成功したからだろう。時代が後になるほうが、高速道路が延びているというだけのことかも知れない。しかし、それだけではない。というのは、これだけの映画は、他にはデプレシャンくらいしか考えつかないからだ(でも、まだまだ物語で楽しませてくれる)。

物語をいっさい語らずに、純粋にその物語のメタデータ(たとえば会話、たとえば独白、たとえば動き、たとえば光、たとえば影、たとえば場所、たとえば建物、たとえば音響)だけを呈示するというのは、どう考えても難しそうだ。それだけのロケーションと役者(しかも役者ではない)がいれば、物語を語りたくなるのではないだろうか。でも、それがない。すべてがばらばらで、それをつなげるのは、観客の作業となる。完全な素材が提供されているのだ。それがおもしろくないわけがない。

だからおもしろいのだな。

だから、おれはペドロ・コスタを特別に特別な映画作家だと感じるらしい。

コロッサル・ユース [DVD]

コロッサル・ユース [DVD]

_ 対比についてシーンを反芻

コロッサルユースの中で、思い出してみると、暗いのはほとんどが過去で、明るいのはほとんどが現在であった。夜のシーンで始まる。

暗い過去では、故郷に残る妻へのラブレター、独立を祝う(たぶん)革命歌のレコードと歌。高揚感と針飛び。怪我をしてから変調するラブレターの文言。シルク。本来であれば若いのだが、同じ人間が演じているので少しも若くない。そこにおそらく、タイトルのユースがある。

しかし、直接床に寝ていて物乞いに起こされるシーンは現在だが、暗かった。末娘の部屋のシーンも暗い。しかし窓は光る。ヴァンダの部屋は明るい。美術館は白い。末息子(たぶん)と食事をするレストランは明るかったような記憶がある。食事を取らずに喋る。刺された手を見せる。

しかし、2軒目のアパートの入り口で待っているシーンは明るくない。部屋は明るい。1軒目で会ったときより、役人は力強くなり、主人公は薄汚れている。

物乞いが入院している病室。窓は光る。手前に女が椅子に腰かけていて、その手前のベッド。その手前に主人公。女は喋らず、ただ居るだけ。

最後のヴァンダの部屋。窓は光る。ダブルベッドに寝そべる。手前の隙間に子供。顔だけがベッドより少し高い位置。左(テレビの方向)を向いている。何か口に出している。

突然暗くなっておしまい。


2008-06-09

_ 覚え書き:NetBeansでアプレットを作る

ちょっとアプレットを作ってみたくなったのだが、そのものずばりのプロジェクトテンプレートが無かったので、とりあえず以下のようにやってみた。

1.新規プロジェクトで、「Javaクラスライブラリ」を選択

2. 新規ファイルで、「Swing GUIフォーム」からJAppletフォームを選択

しかし、このプロジェクトで「実行」などのボタンを押すと、主クラスが登録されていないというエラーとなる。

以下の方法でデバッグ実行などができた

1.プロジェクトビューのソースパッケージから、アプレットのソース(〜.java)を選択する。右クリックして「ファイルを実行」を選択するとAppletViewerが動いてアプレットを実行する。「"〜.java"をデバッグ」を選択すると、NetBeansのものらしいアプレットビューアが起動し、デバッグ(ステップ実行や設定済みブレークポイントでの停止など)が可能となる。


2008-06-10

_ まっかなまっくになっちゃいな

結局、MacBookとかMacBook Proについてはそのままなのかな?

_ 良くないインターフェイス

自分の間違いを他人のせいにするわけだが、javax.sound.sampled.SourceDataLineのある種の実装は誉められたものではない。

openしてwriteすると0バイトの書き込みに成功する。

その成功になんの意味があるんだ?

勝手に暗黙にstart呼ぶか、さもなければIllegalStateExceptionをスローすべきではないだろうか。


2008-06-11

_ プログラミングと言語

プログラミング言語Cを利用してプログラミングを学習するということはどういうことだろうか?

一見すると「英語を利用して小説の書き方を学習します」という言い方に通じるものがありそうに思う。英語で小説の書き方を学習して、では日本語で小説を書けるだろうか? 想像してみると、主人公の造形、舞台設定、盛り上げ方、などの小説の内容に関することについては英語か日本語かは関係なさそうだ。しかし、小説らしい文章表現、言い回し、などについてはそれほど応用は利かなそうに思える。

しかし、CとJava、あるいはRubyをあてはめてみると、日本語と英語ほどの相違はなさそうに思える(応用を利かせられるかどうかという点で。もちろん表現そのものは相当異なる)。一方、CとJavaに対して、HaskellとOCamlであれば、ずいぶん異なるだろう。

とすると、異なる自然言語はパラダイムが異なると考えることができるかも知れない。では、フランス人が「英語を利用して小説の書き方を学習します」の後に、フランス語で小説を書くことを想像してみる。似たような言語ではあるが、やはり「小説らしい文章表現……」にはそれなりの差がありそうだ。

違うなぁ、そういうことを考えたのではない。何を考えついたのか忘れた。

もしかしたら、設計の記述と実装の記述はやはり分離可能なのではないか、あるいは分離すべきではないか、と考えたのかな?


2008-06-12

_ Vista64でNetBeansを使う

そのままNetBeans6.1のインストーラを実行しようとすると、JVMが見つからないというエラーになる。インストールしたJavaがx64版だからかと思いx86版もインストールしてみるが変わらない。

netbeans-6.1-*.exe --javahome "c:\program files (x86)\java ..."

をしてみると、今度はしばらく動いた上で、バージョンが異なるというようなメッセージを表示してインストーラが終了する。

ネイティブアプリケーションなのは、インストーラそのものだけなので、直接Javaの世界でインストールすれば良い。

コマンドラインから、

netbeans-6.1-*.exe --extract

を実行すると、ファイルが展開されるので、次に

c:\program files\java\jdk\...\java -jar bundle.jar

を実行する。すると正しくインストールされる。

実行するjavaはx86版でもx64版でも構わない(と思うが、x64版を指定した)。


2008-06-13

_ Firefoxクラッシャー

波形を適当に変えてどんな音になるのか試すアプレットを作っていろいろ試しているのだが(というほどは試せていないが)、問題は、IE7だと想定通りに動くのだが、Firefoxはハングアップしてしまい強制終了するしかなくなることだ(レースしているんだろうが、何と何が競い合っているのかがわからない)。ほかにも異常となる環境やブラウザーがあるかも(OSXのSafariだと、Java6からのクラス-javax.swing.GroupLayout$Groupがないため、NoClassDefErrorとなるのでハングはしない)。

wave(Vista上のFirefox 2.0.14についてはほぼ確実に死ぬので踏まないこと)

ソースは、WaveApplet.java(NetBeansでGUIを生成したので初期化コードがそういったものになっている)

というか、何が悪いんだろう? あたまか!

_ Firefoxクラッシャー(続)

こんなのを捕まえられたが……

java.lang.RuntimeException: Error while creating embedded frame
	at sun.plugin.viewer.WNetscapePluginObject.createFrame(Unknown Source)
	at sun.plugin.viewer.WNetscapePluginObject.setWindow(Unknown Source)

あと、最初にメニューから「ツール」―「Javaコンソール」を選択しておくと(トレースレベルを変えようとしたのだが、トレースレベルの設定とは無関係に)ハングしないこともわかった。

初期化を急ぎ過ぎている(タイミングの問題と言いたいらしい)とかかなぁ

_ 後で読む

音波

本日のツッコミ(全2件) [ツッコミを入れる]

_ るいも [とりあえずUbuntu 64bit上のFirefox3+OpenJDKでは、大丈夫でした。確かにWindows上のF..]

_ arton [厄介ですねぇ。というよりOpenJDKってすごいですね。]


2008-06-14

_ 作業メモ

exerbの1.8.7版を作ろうとしたがsourceforge.jpからチェックアウトできなくて悩む。

open-sshのことを思い出して、keygenし直し、登録し直しでとりあえずチェックアウト完了。

「し直し」という字面は実に妙だな。

_ enumerator.so

Exerbでどう扱うか、結構、厄介だな。むー

追記:微妙だけどenumerator.cで呼び出しているrb_provideを削除することにするのはどうか?

……ってのも微妙だなぁ(Exerbの場合に互換性をなくすとは思えないけど)。とりあえずtestの表明を修正して逃げておくか。

追記:というか期待値が古いのか。こっちを修正。

_ Exerb-4.5.0

リリース完了

で、次はASRだな。でもその前に一回休み。

_ enumerator

IEnumeratorをマップすべきなのかな?


2008-06-15

_ 情報の量

2件

この結果は変なような。

追記:あぶねぇ。こっちが正しい

_ ASR-1.8.7-p17

ActiveRuby.msi

MD5 checksum: 5a935b1563f2628a2bc1a7ad3a25b776

追記:下のほうで書いている件の修正をしました。新しいチェックサムは e07ea46227dbeafb5c35723d0b6c7782 です。

Ruby-1.8.7-p17以外のおもな変更点

・rubyにPATHを通した管理者権限のコンソールを追加(gem実行用)

・Exerb-4.5.0

・site_rubyへインストールしていたライブラリ(racc、exerb、vruby、unlhaなど)はvendor_rubyへ移動しました。

・ヘッダとDLL用libは同梱することにしました(staticライブラリは配布しませんし、予定もありません)。

RDocは別パッケージで配布します。追記:RDoc1.8.msi

特に問題がなければ、木曜あたりにinfoseekのほうへコピーしますので、試していただけると嬉しいです。

_ Gem

?? 上のASRですが、いきなりgemが、

C:/Program Files/ruby-1.8/bin/gem:14: undefined method `ruby_version' for Gem:Module (NoMethodError)

になります。原因がわからないので、調査中です。

なんでだろう?

追記:わかった。以前のバージョンを消さずにインストールできるようにしたのだけど、その結果、site_rubyが上書きされないため、中途半端に古いgemが動いてしまうからだ。

というわけで、事前に、以前のバージョンのASR-1.8.xをアンインストールしてからインストールするか、インストール後に、lib/ruby/site_rubyの下を消すかしてください。

さらに追記:逆に空ディレクトリをインストーラは作らないのかぁ。ダミーのファイルを入れておかないと、site_rubyが作られないのは、まずいことか、どうでもよいことか、どっちだろう? (setup.rbでインストールする人がいるのなら、あるべきだし、gemしか使わないのなら、なくてもよいだろうし)

さらにパイプの追記:しぬよりも遅くgem installが動く。とは言え、相手は上がったり下がったりのrubyforgeなので本当にRuby(のsocketというよりもselect)の実装がおかしいのか、端的にgem 1.1.1がおかしいのかはわからない。あとでじっくり眺める予定。

_ XP

ぐは。XPでテストしたら、管理者コンソールが「関連づけされたプログラムが見つからない」(でも、batだぜ)という変なエラーになる。Vistaの場合だけインストールされるようにすべきかなぁ。

本日のツッコミ(全2件) [ツッコミを入れる]

_ elim [ActiveRuby.msi へのリンクがおかしいようです。 http://arton.no-ip.info/dia..]

_ arton [どうもありがとうございます。直しました。]


2008-06-16

_ 延べで考えてみる

宇宙が生まれて、今年で満137億とんで259年だそうだ(端数はうそ)。

考えるよりも長い年月で想像することもできないのだが、ちょっと待て、と気づく。

今、日本に約1.3億人いると仮定する。そして医学と経済の進歩のおかげでみんな働くこともできずにただ100歳程度までは最低限の生活というものを味わえると仮定してみよう。

すると、日本人すべての認識というものは、宇宙がビッグバンしてから今にいたるまでのすべての年月に匹敵するだけの量があるということになる。

これは恐ろしいことだ。一人で137億年を過ごすことなど考えたかないが、それに匹敵するだけの時間が現在にプラスマイナスして50年の間に存在しているのだから。そして、それを地球の規模に膨らませれば、それは確かに乳幼児がばたばたと死んでいく世界もあれば、ブルガリアのヨーグルトな人たちのように130年くらい生きているというようなうわさのある世界もあるとは言え、それでもほんの2〜3年のレンジで、全人類の脳みその中の時間、内宇宙時間の合計は、外宇宙が誕生してからの時間に匹敵するだけの量となる。

外宇宙はとりあえず1つと仮定できるが、内宇宙は人間の数だけ並列する。そして2〜3年で宇宙が存在していた時間を超えるだけの量となる。

今、南極の極点から(同じ意味か。南極大陸の極点から)北極点まで、らせん状に線をひくことを考える。このらせん状の線の上には、地球上に存在する全人類がどこかしらかで乗っている。一人につき外宇宙の2〜3年分の単位を持つ。

地球が誕生して、昨日でちょうど44億年だ(48億かも)。北極点のほうに近いというか、人類は南半球より圧倒的に北半球のほうに偏って分布していると思うから(インドと中国と北米が北だ)地球の誕生日に相当する人はおそらく、四川省で今、家を失って困っているはずだと思うけど、ベンガル地方でトラ退治しているかも知れない。全然、はずれているかも。

というような、宇宙時間と人間の内宇宙のマッピングした地図を作ったと仮定して、明治100年なんていう日本の近現代は、たかだか北極点に一番近い位置にいる最後の人類の2〜3年程度の時間に過ぎないのだな。と、考えると、なんとかけがえのない時間であることか?


2008-06-17

_ vc6のlink

clは、-I"c:/program files/xxxx"と書いてもOKなのに、linkは-libpath:"c:/program files/xxxx"と書くと、

LINK : fatal error LNK1181: 入力ファイル "Files.obj" を開けません

となる。あまりの厄介さにうんざり。

_ 鍵盤楽器と弦擦楽器は異なる

山下さんの紹介が魅力的だったので、寺神戸亮の無伴奏チェロ(でも楽器はヴィオロンチェロ・ダ・スパッラ)組曲を買って、早速聴いている。

バッハ:無伴奏チェロ組曲全曲(寺神戸亮/バッハ)

以前、遠い昔、誰かので聴いたとき以来……と書いてから、それはシゲティだと思い出し、したがってチェロではなくヴァイオリンではないかと気づくが、そのくらい、あまり聴かない。

そして実際に聴くと、やはり聞き慣れない。

別に弦楽器が好きではないというわけではないのだが、バッハに関しては、圧倒的にピアノ(クラヴサンやハープシコードでもだめで、そこはやはりピアノだ)が聴きやすい。慣れもあるだろうが、音の動きを追いやすいからだ。

そのため、チェロ(ではないが)の独奏曲を聴いていると、自分がどこにいるのかわからなくなり、文字通り音楽の森に迷ってしまうのであった。

にもかかわらず、その迷宮が魅力に溢れているのだから、しょうがない。

録音のせいかもしれないが、音に深みがあり(残響を多めに残しているようだ)、もしそれがこの楽器の能力の一つだとしたら、それは確かに魅力的だ。

それにしても、以前、高橋悠治だと思ったが、一人で眠れぬ夜に自分のために、自分の楽しみのためだけにゴルトベルクを弾くのは楽しいことであるというようなことを書いているのを読んで、妙にあこがれたのだが(いくつかは弾けなくはないが、ああは弾けない)、それ以上に、無伴奏チェロ組曲を自分のために弾くのはは楽しそうだ。

本日のツッコミ(全3件) [ツッコミを入れる]

_ さみだれ [もしかしたら、linkのオプションは、"-"ではなくて"/"ではありませんか?]

_ arton [それはどちらでも使えるので問題ないと思います。上のはVC6の話なので、VS2008ではちゃんと動くかも知れないですね..]

_ 寺神戸亮、公演情報 [バロック・ヴァイオリニスト寺神戸亮(てらかど りょう)が、 2006年から最近復元された珍しい楽器‘ヴィオロンチェロ..]


2008-06-18

_ ASR-1.8.7-p17

infoseekへコピーした。ASR配布サイト

WindowsでGemのバイナリ配布を行わない場合、つまり、その場でのビルドを実行しようとすると、nmakeあるいはlinkの問題で、Program Files (x86)のような空白入りディレクトリへコピーするとビルドに失敗する。

これはおもしろくないので、rbconfigなどが得るディレクトリ名をWindowsのShortPathNameを利用するように変更した。

この処理を行うスクリプトは(オンデマンドで処理することになるので)同梱してあるが、こんなの。

require 'pathname'
require 'dl/win32'
class Pathname
  unless class_variable_defined?('@@GetShortPathName')
    @@GetShortPathName = Win32API.new('Kernel32.dll', 'GetShortPathNameA', 'SSI', 'I')
  end
  def shortname
    olen = 200
    begin
      buff = ' ' * olen
      len = @@GetShortPathName.call(relative? ? realpath.to_s : to_s, buff, buff.size)
      if olen < len
        olen = len
      end
    end while olen == len
    buff.rstrip.chomp("\0")
  end
end
  
if $0 == __FILE__
  if ARGV.length == 0
    $stderr.puts 'usage: winpath.rb pathname [more pathname ...]'
    exit 1
  end
  ARGV.each do |f|
    p = Pathname.new(f)
    $stdout.puts p.shortname
  end
end

なんとなく、Pathnameのメソッドだよなぁとか。

rbconfig.rbでは以下のように利用している。

  TOPDIR = Pathname.new(File.dirname(__FILE__).chomp!("/lib/ruby/1.8/i386-mswin32")).shortname

逆に、これまでASRを利用していて、長いパス名を前提にしてプログラムを組まれていた場合は、もしかすると互換性の問題があるかも知れません(あるかな? 既知のディレクトリ名とマッチングをしたりしているとあるかも)。

本日のツッコミ(全5件) [ツッコミを入れる]

Before...

_ うえだ [> とりあえず、rakeのようにサイズが小さいgemがインストールできるかどうか試していただけますか? 同じエラー..]

_ arton [>コマンド叩くとスグ それは妙ですね。 利用しているOSはなんですか? もしかして16ビットWindows(9xとか..]

_ うえだ [すいません、昨日はすぐ寝てしまいました。 OS は XP sp2 です。一応、アンインストールして、 インストールし..]


2008-06-19

_ ASR-1.8.7-p17 (隠しバージョン3)

最新置場

昨日infoseekへコピーした隠しバージョン2(隠しているつもりはないのだが、普通にインストーラを実行しても見えない)とは別に、結局、--with-winsock2したバージョンを作りました。

gemの速度が妙に遅かった問題も解消したので(うえださんの問題もこれが原因かなぁ)、しばらくしたら、こちらを正規版にします。

本日のツッコミ(全5件) [ツッコミを入れる]

Before...

_ うえだ [ダメでした --;)。で、1.8.6-p114 を入れたところ、こちらも ダメでした。ということでこちらの PC の..]

_ うえだ [と思ったら上手く行きました! インストール先をいつもは c:\ruby にしているのですが デフォルトのまま c:\..]

_ arton [おお、それは良かったです。]


2008-06-20

_ ASR更新

infoseekも更新(6/19最新置場に配置したものと同じパッケージです)。

考えてみたら事前条件としてMSIの導入を要求しているのだから、同じようにWinsock2の導入も要求すれば良いのでした。


2008-06-21

_ すべては初台の地下で始まった

高橋さんから、台湾のOSCみたいなカンファレンスの話を聞いたのだが、とにもかくにも、日本のオープンソフト系カンファレンスのエンターテインメント性は異常、他に匹敵できるのは知っている限りではシアトルの連中だけ、というような内容。シアトルと渋谷のpmだのjsだのが突出しまくりである、と。

で、なぜだろう? と話は続く。

そこで、考えてみるわけだが、おれが最初に参加したことがあるのは(JUSの勉強会みたいなのは別にすると)、YAPRCだったわけで、pmとか言うと、当然、そこに見られた特徴について考えることがベースとなる。確かにPerl Mongersな人たちのプレゼンはおもしろかったような(覚えてないけど)。他にエンターテインメントと言えばライトニングトークは海外の企画の流用だったし、でも、何かもっとオリジナルで圧倒的なエンターテインメント性があるプレゼンがあったような……目の前にいる男こそがその張本人ではないのか?

でかいプレゼン 高橋メソッドの本(高橋 征義)

「いや、YAPRCは、宮川さんが最初に表舞台に登場したという点から、確かに特別のイベントでしたが」

と高橋さんは謙遜するが、

・すべてのシートは1枚では完結しない(状態を持つ)

・1つの文は複数のシートによってポイントされる

・内容の表現は文字に限定される

というテクニカルカンファレンスにおけるプレゼンのアーキテクチャスタイルを決定づけた(高橋メソッドは、アーキテクチャスタイルの1つのインスタンス――プレゼンアーキテクチャ)のではないだろうかなぁ。

もちろんRESTは素晴らしい。

_ 舞波の名刺

西さんから名刺をいただいたのだが、なぜかアマゾンで売っている。

シングルV「涙の色」 [DVD](℃-ute)

しかし、名刺だということの証明のようにカバンからあふれんばかりの枚数が入っていて、しかも通りかかる人たちに配りまくっていた。

_ 上の

読みようによってはあまり良く書いていないようにも見えるが、正直なところ、「これ、名刺です」といってあれを渡された衝撃+それがカバンの中にてんこ盛りというのは、おれにとっては、海岸でのミシンと蝙蝠傘の出会いの美しさ以上のパースペクティブだったので、記録せずにはいられない。

マルドロールの歌 (集英社文庫)(ロートレアモン伯爵/前川 嘉男)

(海岸はバラードかロブグリエだけど気にしない)


2008-06-22

_ 舞波の名刺(続)

2枚の名刺のもう1つのほうを子供に見せたら、なんかアニメの主題歌らしくて、喜んでいた(中にカードが入っていて、それも嬉しいらしい。まあそういうこたあるな)。

Kiss!Kiss!Kiss!(Buono!/岩里祐穂/C.Piece/西川進/安部潤)

というわけで、無事名刺入れにしまわれることになりました。


2008-06-23

_ Exerb-4.6.0リリース

Exerb-4.6.0

コアをRuby-1.8.7-p22に変更。Winsock2を動的リンクするように修正。

_ ASR-1.8.7.4

Ruby-1.8.7-p22で作成し直しました。

ActiveRuby.msi(MD5 checksum: f788a2be978da12bd1250c338ac8d0a5)

おまけに、セッションで使ったHeapShowの拡張ライブラリも同梱してあります(実行時イメージ)。

ただしHeapShowは、列挙したメモリーブロックからheaps_slotテーブルらしきものを利用する(該当テーブルはgc.cのstaticなデータ)ということを行っているため、たまたま以前に実行したプロセスのイメージが残っているメモリーブロックを読み込んだなどの理由から存在しないメモリーブロックを参照してクラッシュすることがあります(連続して実行しているとおおよそ20回に1回くらいの頻度)。また、HeapShow::Displayクラスのメソッドのほとんどはテストしていません。さらに、発見した(とみなす)heaps_slotテーブルのダンプをmsvcrtのstdioを使って標準出力へ出すデバッグ処理も有効になったままです。

このため、テスト環境での利用に限定してください。

同梱しているheapshow.rbとcheapshow.soの組み合わせはheapshow.rbのロードと同時にネイティブスレッドを起動してその中で自動的に描画を開始します。そのため、GCの動作を確認したいプログラムを起動するときに、コマンドラインで-rheapshowを指定することで、実行できます。

なお、ソースは、Subversionリポジトリにあります。

主なRVALUEに対応する色は、Object……緑、Class……赤、Module……オレンジ、Float……紫、String……青、Array……黄色、Hash……黄緑、File……ピンク、Data,Scope,Varmap,Node……薄いグレーの一族です。

参考までに、セッションで実行した青と黄色の網目状となり、GCにより黄色が黒(フリーなセル)となり、すべてが青く染まっていくスクリプトを以下に示します。

$files = []
def deep(d)
  begin
    Dir.open(d).each do |x|
      next if x[0] == ?.
      if File.directory?(File.join(d, x))
        deep(File.join(d, x))
      else
        $files << x
      end
    end
  rescue
  end
end
deep('/')  # ここを変えて、必要となるセルの量を調整する。/windowsあたりが良いかも知れない
puts $files.size

_ メモ

ゲイナー(gainer)はすごくおもしろい。

通販だと9000円くらいだが、自分で組み立てる必要がある。ICCの売店は高いけど組み立て済みのが買える(gotoken)

_ ミドリオン

昔作ったTENORI-ON(ワンダースワン時代)クローン。

栃木−埼玉−東京リージョナルRuby会議で突然思い出したので、リンクを張っておきます。

というか、自分でもどこに置いたか忘れてたので検索したら、はてぶが引っかかったりしてちょっと驚いた。

なんか、妙な作者のことばを書いていたりもする。

本日のツッコミ(全18件) [ツッコミを入れる]

Before...

_ むらまさ [Vistaでmayuが使えれば…。]

_ ムムリク [すでに完結した感はありますが、きむら(K)さんの書いた通りです。 インストールそのものは問題ないので構わないわけでは..]

_ arton [どうも。木村さんにキャプチャを見せて頂けたので多分直せそうです。infoseekには修正したのを上げるようにします。]


2008-06-24

_ 問題

次の中で偽はどれか?

_ RubyKaigi'08レポート

出たよ

斉木さんは仕事が早い(おれが遅かったのだが、書いていて発見もあり、おもしろかった)。


2008-06-25

_ ASR-1.8.7.4 (p22) リリース

ASR download page

結局、文字化けの原因は言語設定Neutralのダイアログに対して(良くわからない理由により)日本語用メッセージが設定されていたためでした。原文に置き換えたので、解消しているはずです。

ムムリクさん、木村さん、どうもありがとうございました。

_ レイヤーとサブジェクト、コンテキスト

年輪とか魚の鱗のようなもので、最初はコアしかないのだが、そのまわりにライブラリとかがかぶさって、それを固めたコンポーネントがある。

開発時にパターン化できるようにモデルを与えるフレームワークとは別に、実行時にコンポーネントの相互運用を確保するためのフレームワークがある。

別のところにサービスがあって、より落とし込んでサブジェクトと呼ぶことにする。

ここにおいて、サブジェクト→フレームワーク→コンポーネントという3つ組ができる。

サブジェクトというのは、外部からは、情報をくれといえばくれて、情報を作れといえば作り、消せといえば消し、変えろといえば変えるものだ。副作用の有無(具体的にはサブジェクト間の相互作用)は、外部にとっては関心外である。当然だが、サブジェクトに対して作成した項には識別子が必要である。

ここで、RESTを適用することを考える。

その先を考える。

すると、あるサブジェクトのふるまいは、クライアントの事情や大人の事情で時々別のものとなる。

これをコンテキストと呼ぶ。

コンテキストを上のRESTなシステムに適用することを考える。

URLは変わらない。コンテキストは周辺事情であり、リソースそのものを変形したり、表現に影響したり、あるいはなんらかの副作用を伴うとしても、そのサブジェクトのそのリソースが異なるものになるわけではないからだ。

3種類の実装が考えられる。

1つは、URLの先でコンテキストによって実際に起動されるサブジェクトを変える方法で、それはルーティングの役割である。サブジェクトは静的なコンポーネントで良い。この方法は、つまらないし、まじめな実装であれば、コンテキストの増加によるコンポーネントの爆発的増加という結果となり、それはすべての条件判断のための実装継承のようなもので、捨てられた過去の方法だ。

1つは、OOな仕組みで、サブジェクトはクライアントごとに1インスタンスを割り当てることを前提とすれば、実行時に動的な変形が行われればよい。たった1つのサブジェクトが100クライアントを相手にしているときは、100の異なるふるまい=コードを持ったインスタンスとして動作する。このふるまいの変更をどのように記述できるかは、1つのサブジェクトそのもので、関心領域だ。おそらく、最短はAOPでコンテキストとアスペクトの対応付けかもしれないが、現在のAOPの記述方法、つまり主となるモジュールに対応する少ないアスペクトという方法では、最初の方法と同じくコンテキストの増加(コンテキストが実行順にも影響すると前提すれば、加算でなく、べき乗となる)を整理して記述することはできない。

考え直そう。多数のデータを素早く整理して扱うための道具を利用する。すなわちコンピュータとプログラムである。幸いにしてノイマン型のコンピュータを使っているので、コードとはデータである。

……この方法は、詳細が記述できるようになったBPELのようなもののように見える。使えないな。

というわけで、3番目の方法を考える必要がある。

というような、話だったのかなぁ?

本日のツッコミ(全1件) [ツッコミを入れる]

_ ムムリク [ありがとうございます。解消されていました。]


2008-06-26

_ それがすべてじゃない

つまらなくて役に立つ物を作るということ

唐沢なをきのマンガの、自分の職業を親戚のおばさんとかに言うとかならずのように、(そのおばさんは自分の)子供に向かって、「○○ちゃん、ほら、ドラエモンを書いてもらいなさい」とか言い出す、というのみだいだな。

_ レポート続き

続き

後で以下を修正します。

?~→!

?include→using

?selective…は擬似コードとわかりやすく

?RubyEndのライセンス(調べる)…パイソニアンの罠というようなネタは無しで

本日のツッコミ(全2件) [ツッコミを入れる]

_ FILE [初めまして。興味深く拝読しました。 '書く引数'は'各引数'ですね。(Page 3)]

_ arton [ありがとうございます。反映しました。]


2008-06-27

_ アスタ

ASRにStarRubyをバンドルしようと思うんだけど何かまずいことはあるかなぁ?

_ アスタ(続)

ASR 1.8.7.5

StarRubyの実行部(SDL含む)を入れたASRです。(md5checksum: e4d58c7c599476ee0a172c511729ef22)

危険ですが、実験的に(非難されたら消す)ネットワーク越しに(StarRubyを前提とした)スクリプトを直接実行する機能を入れてみました。

Rubyコンソールを起動した後に、書き込み可能なディレクトリへ移動して、

star http://arton.no-ip.info/data/test/star/airship.rb

とか、

star http://arton.no-ip.info/data/test/star/helloworld.rb

を実行してみてください(http://arton.no-ip.info/data/test/starには、StarRuby Windowsパッケージのsamplesディレクトリの内容がそのままコピーされています)。

star.batは、Font.newとTexture.loadに介入して、引数で指定されたURIからの相対でファイルをローカルへコピーします。一度、実行に成功したらローカルにスクリプトとリソース類が残るので、2回目以降は

ruby airship.rb

とか

ruby helloworld.rb

で実行できます(rubyではなく、starを利用してもできるけど)。star.batは、インストールディレクトリ\binにあるので、何をしているのかは確認できます。

本日のツッコミ(全6件) [ツッコミを入れる]

Before...

_ 星一 [ライセンスは問題ないと思います。]

_ 星一 [早速遊んでみました。ありがとうございます! star コマンド楽しい! ゲームの配布が簡単でいいですね。 ところで ..]

_ arton [あ、requireには対応してませんでした。というわけで、6/28の日記へ続く。]


2008-06-28

_ アスタ(続)

とりあえず作ってみたstar.batが介入しているのは、StarRuby::FontとStarRuby::Textureだけなので、requireはだめなわけですが、どうせなら、requireにも介入するか。

というわけで、とりあえずお手元の、star.batに次のパッチを当ててみてください。

--- star.bat~	Fri Jun 27 21:34:47 2008
+++ star.bat	Sat Jun 28 02:00:50 2008
@@ -34,11 +34,11 @@
     end
     
     def self.to_local(uri, path)
-      [ '', '.TTF', '.png'].each do |ext|
+      [ '', '.TTF', '.png', '.rb' ].each do |ext|
         begin
           src = open(uri.to_s + ext, 'rb')
           FileUtils.mkdir_p File.dirname(path)
-          File.open(path, 'wb') do |f|
+          File.open(path + ext, 'wb') do |f|
             f.write src.read
           end
           src.close
@@ -62,9 +62,22 @@
       _load RemoteFile.get(path)
     end
   end
+
+
 end  
 
 include StarRuby
+
+alias _require require
+
+def require(path)
+  begin
+    _require path
+  rescue LoadError
+    StarRuby::RemoteFile.get(path)
+    _require path    
+  end
+end
 
 load RemoteFile.get(ARGV[0])

一応、動くのは確認したので、ASR 1.8.7.6も作るけど。

追記:requireで拡張子pngとかTTFは無駄過ぎるな……

_ ASR-1.8.7.6

ASR 1.8.7.6(MD5checksum: bbdaad881ab3761b263b5af1de227f95)

requireの場合は拡張子rbのみ検索するようにしたstar.batに更新しました。

あと、RubyGemsを1.2に更新。

star http://arton.no-ip.info/data/test/star/falling_blocks.rb

も実行できます。

_ Star Ruby

というか、知らない人にはなんだかさっぱりわからないよな。

Star Rubyは、SDLの上に星さんが作ったゲームツールキットというか、クラスライブラリ。

で、ASRに0.2.0バイナリ配布アーカイブからSDLを含むDLLを同梱したということです。約1.5MBの増量だけどまだまだOne Clickに比べればコンパクト。

あと、おまけにセキュリティについて一切考えていないスマートクライアント風な実行用バッチファイル(star.bat)を添付したと。Openクラスで良かった!

_ 目が覚めたら

こないだICCで買ってきたGainerで遊ぶ予定。

+GAINER―PHYSICAL COMPUTING WITH GAINER(GainerBook Labo/くるくる研究室)

_ YARV戦略

メモを整理してたら、

Rubinius: Cが少ないから互換性の問題がない

YARV: Rubyで書いたところが少ない

  →RubiniusがRubyで書いたコアクラスを取る

ってのが出てきた。反映させるかと一瞬考えたが、ちょっと目線が異なる内容なので、ここに書いて終わりにしとく。

追記:メモなので短い言葉を選んでるため、「取る」という、なんかタマとかクニとかを対象にする物騒な言葉を使っているけど、実装の仕組みからJRubyよりRubiniusのほうが協力しあえるというような意味です(で、その中には、Rubiniusで作成したコアライブラリを流用してVM以外はピュアRuby環境というのも試せるとか、そんな感じ)

_ ドワーフの歌

白雪姫 [DVD](ウォルト・ディズニー)

ヘイホー、ヘイホー、クロージャー

おれたちゃ関数 ヘイホー、ヘイホー、ヘイホー

(無限にエクステントする)

本日のツッコミ(全10件) [ツッコミを入れる]

Before...

_ arton [いや、$SAFE=1はプログラムを信用している前提だから設定する意味はないですね。]

_ 星一 [あーそっか、 Texture.load とかのときに使うんですね。 > Dir.mkdir]

_ arton [Dir.mkdirは解消方法を見つけたのですが、今度は、Windows Vista固有(だと思う)でのtempdir..]


2008-06-29

_ $SAFE

なんか、異様にやっかいなことが判明して、メールを書いてみたり。

_ アテネでファスビンダー

未見だったデスペアを観に20年ぶりくらいにアテネへ行く。いかにもアテネらしい野放図な喫煙所にちょっと驚く。

ガラスのテーブルの上に乗せたグラスに卵を割りいれ、牛乳を注ぎ、シェークするところを上から撮ったり下から撮ったり、水滴がぽたぽた垂れるところとか、生理的に不快になるシーンが延々と続くオープニング。ガラス。

ガラスは、似ても似つかぬ瓜二つの疑似兄弟と出会う仮想的なミラーハウス、居間のソファ、その他、あらゆるところに出てきて、ファスビンダーのルーツにダグラスサークがあることを思い出した。

水道の蛇口からの水滴は最後のホテルの流し(異常に大きい陶器の破片にぶつかる)にも登場。

鉤十字と制服を印象的に使っているが、この時期に可能だったのか疑問に感じる。プログラムには「国際舞台への飛躍」とか書いてあるが、国内での上映を最初から考えていなかったのではないかと考える。

妻のいとこのアトリエのキャンバスの裏の鉤十字(家主の子供がラクガキしたという言い訳をいとこがする)。何度も強調する。

ペーターカーンが扮するミューラーがどんどん過激化して、制服を着てくる。精肉屋を襲撃するSSをカフェから傍観する。隣の席にユダヤ人の老人が2人で談笑しているのを不思議そうに眺めるシーン(何を強調したかったのだろうか)。

似ていないのに似ているという映画上の設定かと思わせて、錯乱状態なのでやはり似ていないのだと思わせて、しかし計画が進むにつれて、ひげを剃り、錯乱状態が沈静化した後に、計画を妻に話すため、本当は似ているという設定なのかと思わせて、訪問してきた刑事が妻に、「しかし別人です」とやはり似ていないと落とすので、笑いを誘う。ユーモア映画とも言える。

しかし、アルトーやゴッホに献じている(あと一人は知らない人)ので、もちろん、意図的である。

ステッキの銘の強調。

フェリックスの裸体の強調。たぶん、ファスビンダーとしてはサービスショットだったのではないか、と想像してみる。妻の不気味な裸体のお詫びとしてとか。

最初はソファに座っているのがドッペルゲンガーで、寝室にいるのが本物。

2回目は、寝室にいるのがドッペルゲンガーで、ソファに座っているのが本物。それを妻の呼び声で示す。

メイドが最初は下着姿。いとこは最初は風呂上がりでバスタオルを巻いただけ。

精神分析医ではないかといとこに言ったあといとこを邪見に追い払う。いとこが戻ってきて男を精神分析医だと紹介する。妻との生活について話し始める。男は、保険を勧める。いとこは高笑いをして去る。

窓から外を眺めると、いとこが画を書いている。

最後、これは映画の撮影なので、私はここを去ると言ってストップモーション。

傑作だった。

_ OS X Gainerのチュートリアルではまる

はまるというほどのことでも、ないが、
+GAINER―PHYSICAL COMPUTING WITH GAINER(GainerBook Labo/くるくる研究室)
をそのまま読みながらコードを打ち込むとうまく動かないので、メモ。

こういうことがあるので、初心者(おれはセンサー初心者)本のチュートリアルは難しい。

P.73の、『ProcessingでGainerを使う』だが、のっけのSketch01からうまく動かない。Appletビューアが一瞬起動してそのまま消えてしまうのだ。

Processingの下半分のコンソールを眺めていると、一瞬、Gainerを見つけるが、すぐにBluetoothのポートを探しにいって、not foundでエラー終了していることがわかる。

さらに良くながめるとthread-2というようなメッセージを見える。

これは、おそらくsetupの処理に時間がかかり、ワーカスレッド側とメインスレッド側の通信に失敗しているからだろうと想像する。

であれば、オリジナルの

void seutp() {
    gainer = new Gainer(this);
 
    size(200, 100);
}
の実行順序を変えれば良いだろう。おそらく、sizeに想定以上の時間がかかっていると考えられる(とは言っても、MacBook Airで試しているので、そんなに箸にも棒にもかからないほど遅いとも思えないが)。

void setup() {
    size(200, 100);
    gainer = new Gainer(this);
}

で無事、Appletビューアによる表示ができた。以降も同様で、最後にGainerのインスタンスを作る必要があった。

……もうちょっとライブラリのコードは考えたほうが良いような気はするけど。

_ 上の続き

チュートリアルが終わったので、再現させてみたが、レスポンスを取りこぼしてるみたいだ。Gainerとの通信スレッドがGainerとのハンドシェイクに失敗している(メインのsizeメソッドとかWindow生成とかに引きずられていると考えると素直だ)ので、次のポートを見に行っているのだろう。うまく行く場合は、Bluetoothのポートは見ていない。

_ 図の問題点

あと、P.77の実体配線図が間違っている。最初、入力が取れないので、壊れているのかと思った。+5Vの線を左の島と結ばなければだめ。(P.68の図などでは正しくなっている)

というか、ことここに至って、正誤表を探すべきと気づく。

あった。Prosessingのバージョンアップによってsizeを先頭で呼ぶように変わったというのが正解なのか。そりゃわからんな。

実体配線図の間違いについては、配線した人のミスということでおさまっているところがなんとも(どうも質問者も、自分で気づくべきだと思ったのかも知れない)。


2008-06-30

_ コルグのおもちゃ

なんとなくアマゾンを眺めているとコルグのおもちゃ(といっていいんじゃないかなぁ)がいっぱいあって楽しい。

KORG コルグ 超コンパクト・サイズ・シンセサイザー カオシレーター KAOSSILATOR

カオスなko1か。

KORG コルグ ダイナミック・エフェクト・プロセッサー カオスパッド ミニ KAOSS PAD MINI MINI-KP

こっちはKP。KeepとPってなんだっけな?

B000S5MVCW

ぱっと見はテノリオンみたいだ。

B000TGO1LO

なんだか妙にポップだがMIDIなのか。

ElectribeMX EMX-1

これは何をするもんだろう?

KORG ESX1

これは色違いかな?

KORG DS-10

これが本命のDSに入れるやつか。

本日のツッコミ(全7件) [ツッコミを入れる]

Before...

_ とおりすがり [http://www.nicovideo.jp/watch/sm2426873 何してるかはこれ。]

_ とおりすがり [http://www.nicovideo.jp/watch/sm3277113 こっちのほうがわかりやすかった。]

_ arton [お、どうも。というか、4回もとおりすがってくれてありがとう。]


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|

ジェズイットを見習え