トップ 最新 追記

日々の破片

著作一覧

2007-12-01

_

なんと12月になっているじゃないか。

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

_ ささだ [なんてこった.]

_ arton [うほ、いい反応。]


2007-12-02

_ Win32OLE for Ruby.NETの準備段階

Win32OLEのRuby.NET版を作ろうと思ったものの、Win32OLEが生なCOMの使いかたをしているので結構難しい。あと、Ruby.NETが内部クラスを外に見せてないので、MRIのData_Get_Structみたいなことができないってのもある。

後者から、Ruby.NETの.NET Interopを利用するC#のDLLと考えたわけだが、前者からC#では無理っぽいということがわかった。すごく頑張ればやれるかも知れないけど、そんなところで頑張らなくても、C++があるじゃん。

で、やり始めたらいきなりWIN32OLE.newが実装できないということに愕然とする。キーワードだから、staticメソッドにできない。

そこで、しょうがないので、RubyでWIN32OLEクラスを実装して、C++(といってもC++/CLIになるわけだが)でCOMをいじらせることを考える。

ところが、結構、引っかかった。しかも、サンプルコードなんて全然ないし。

というわけで、C++/CLIでCreateInstance呼んでいるところと、Invokeを呼んでいるところのコードを公開しておくことにする。

#include <ole2.h>
using namespace System;
using namespace System::Runtime::InteropServices;  // 使いまくり
 
public ref class WIN32OLE // 内部用クラスでネームスペースで隔離してある
{
    LPDISPATCH pDisp;  // これはinterior_ptrとなるので移動対象
protected:
    WIN32OLE(IDispatch* p)
    {
        pDisp = p;
    }
public:
    WIN32OLE(String^ name)
    {
        pin_ptr<IDispatch> pvoid;  // pin_ptr(アドレスが取れる)はスタック上に取る。
        CLSID clsid; // スタック上に取ったオブジェクトはアドレスが取れる(pin_ptrと同じことだ)
        LPOLESTR lpolestr = Marshal::StringToHGlobalUni(name).ToPointer();
        HRESULT hr = CLSIDFromProgID((LPCOLESTR)lpolestr, &clsid);
        Marshal::FreeHGlobal((IntPtr)lpolestr);   // 必要
        if (hr == S_OK)
        {
            hr = CoCreateInstance(clsid, NULL,
                                CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER,
                                IID_IDispatch, (void**)&pvoid); // &でアドレスをとるにはpin_ptrでなければならない
            if (hr != S_OK)
            {
                throwException(hr);
            }
            else
            {
                pDisp = (LPDISPATCH)pvoid; // pin_ptrはinterior_ptrに代入可能
            }
        }
    }
    ~WIN32OLE() {    // C++/CLIではIDisposable::Disposeから呼ばれる
        if (!pDisp)
            pDisp->Release();
    }
    Object^ Invoke(String^ name, array<Object^>^ args) // object[]の書き方でえらく悩んだ
    {
        return invoke(name, args, DISPATCH_METHOD | DISPATCH_PROPERTYGET);
    }
private:
    Object^ invoke(String^ name, array<Object^>^ args, WORD wFlag)
    {
        DISPID id;
        LPOLESTR szName = (LPOLESTR)Marshal::StringToHGlobalUni(name).ToPointer(); // 後で解放する必要がある
        HRESULT hr = pDisp->GetIDsOfNames(IID_NULL, &szName, 1, LOCALE_SYSTEM_DEFAULT, &id);
        Marshal::FreeHGlobal((IntPTr)szName);
        if (hr != S_OK)
        {
            throwException(hr);
        }
        ::EXCEPINFO excepinfo; // このあたりはグローバルネームスペースにしないと、InteropServices::ComTypes下と衝突エラーになる
        memset(&excepinfo, 0, sizeof(excepinfo));
        UINT argerr(0);
        DISPID propput;
        ::DISPPARAMS params = {NULL, NULL, args->Length, 0, };
        if (args->Length > 0)
        {
            params.rgvarg = new ::VARIANT[args->Length];
            for (int i = 0; i < args->Length; i++)
            {
                Marshal::GetNativeVariantForObject(args[i], (IntPtr)(params.rgvarg + args->Length - i - 1)); // これは便利だ
            }
        }
        if (wFlag & DISPATCH_PROPERTYPUT) // これは結構忘れてDISP_E_PARAMNOTFOUNDを食らう
        {
            params.cNamedArgs = 1;
            params.rgdispidNamedArgs = &propput;
            propput = DISPID_PROPERTYPUT;
        }
        ::VARIANT result;
        VariantInit(&result);
        HRESULT hr = pDisp->Invoke(id, IID_NULL, LOCALE_SYSTEM_DEFAULT, wFlag,
                ¶ms, &result, &excepinfo, &argerr);
        if (args->Length > 0)
        {
            for (int i = 0; i < args->Length; i++)
            {
                VariantClear(params.rgvarg + i); // Marshalのメソッドを呼ぶべきかも。そのうち試されることになるが、今は不明。
            }
            delete[] params.rgvarg;
        }
        if (hr != S_OK)
        {
            throwException(hr);
        }
        if ((V_VT(&result) & ~VT_BYREF) == VT_DISPATCH)
        {   // 全部自分でやるしかなかった。
            return gcnew WIN32OLE((V_ISBYREF(&result)) ? *V_DISPATCHREF(&result) : V_DISPATCH(&result));
        }
        Object^ o = Marshal::GetObjectForNativeVariant((IntPtr)&result);
        VariantClear(&result);   // MarshalがGetObjectForNativeVariant内でReleaseしないと思うのだが、実は不明。
        return o;
    }
private:
    void throwException(HRESULT hr)
    {
        pin_ptr<IErrorInfo> peinfo;   // pin_ptrを使う
        Exception^ excep;
        if (pDisp->QueryInterface(IID_IErrorInfo, (void**)&peinfo)  == S_OK)
        {
            excep = Marshal::GetExceptionForHR((int)hr, (IntPtr)peinfo);  // このメソッドは良い
            peinfo->Release();    // Marshalが中でReleaseしていないことを祈る。今のところはSEGVしないが。
        }
        else
        {
            excep = Marshal::GetExceptionForHR((int)hr);
        }
        throw excep;
    }
}

追記:アンマネージドヒープへ確保した文字列の解放が必要だとわかったので修正。

追記2:呼び出し結果がIDispatch*だったらCOM呼び出し可能ラッパではなく、WIN32OLEの別インスタンスを作成。

_ 10+1

角谷さんのところに、10+1に江渡さんが書かれた「Wiki的都市は構想可能か?」の紹介が出ている。

10+1 No.48 特集=アルゴリズム的思考と建築(柄沢祐輔)

同じものを読んでも読み手が異なると違うところに着目する。

象を撫でるには群盲が必要な道理だ。

僕が、なるほどなぁ、と思ったのは、

認知負荷低減に与えた影響

という考察だ。

この考察は、akrさんの「使いやすいライブラリ API デザイン」

使いやすいライブラリとはプログラマが意図したことを簡単に実現できるライブラリである

という定義と多分同じことをさしているのだろう。

そしてそこから生まれる、感動が人を動かすという結論。

でも、この結論が正しければ正しいほど、多分、暗黒面があるのだろうな、と考えて愕然とする。

誤った信念というのは、感動から生まれてくるのではなかろうか? たとえば、修行をした結果、宙を浮くということに感動してしまった人たちは、実際、動いてしまった、とか。

世界中で、感動が人を動かしているのだ。それは、たとえば、自分を認めてくれた人がいるというささやかな感動(殺し屋1とかわかりやすい)でさえ良い。共同体に自分が属するという実感こそは感動的だ。そして、その駆動原理にあるのが「認知負荷低減」だとしたら、それは恐ろしいことだ。水にやさしい言葉をかけていますか? なんとわかりやすく(認知負荷が限りなくゼロだ)、そして感動的なことか。

僕がかくあって欲しいと考える世界は、人が理性によって動く世界だ。そして理性によって動くためには、自然に対する一定の知識と知恵の集積が必要に違いない。つまり、認知負荷の軽減といっても、そこには一定の水準が必要だということなのではなかろうか。だが、おそらく、水準が低ければ低いほど、認知負荷軽減を得るのは難しいことだろう。かくして、逆に感動を得やすくさせやすいのかも知れない。

結局、自分が可能なところで地道に見聞を広げられる環境を作っていくしかないのだろうな、と思う。


2007-12-03

_ win32ole for Ruby.NET

early access

作り始めた。が、ここでストップかな。クリスマスくらいまで。

C++/CLI+Ruby(Ruby.NET)という構成にしたが、想像以上に、オブジェクトの解放は厄介だとわかった。というか、Excelそのものが厄介なのだが。

それはそれとして、CLRでRubyが動くってのは楽だな、とは思った。引数の処理みたいに厄介なところは、スクリプトで実装して微妙な処理だけRuby.NET InteropでC++/CLIに任せられるからだ。

#つまり、JRubyも同じように楽なんだろうということだ。


2007-12-04

_ on_event

どうやってEventSinkを作ればいいんだ? というところまで。


2007-12-05

_ 続き

IIDを動的に変えられないのかな? というか、QueryInterfaceを実装できないんだろうか。

とりあえず、ClassInterfaceAttributeの使い方はわかったが、それではしょうがないってこともわかった。

今のところ、シンクは、アンマネージで書き、マネージ側からDispatchを与えて、それをアンマネージ側のシンクから呼び出すという方法ならできそうだとわかったが、そんな面倒な必要があるんだろうか?

ネイティブのサーバー−アンマネージシンク−マネージクライアント

ということ。

でも、IID(というか、QueryInterfaceを実装できれば)

ネイティブのサーバー−マネージシンク−マネージクライアント

とできて、シンクとクライアントが同じマネージ界のポインタを持ててハッピーなんだが。そうでないと、アンマネージシンクに、マネージクライアントのアンマネージ用ポインタ(つまりは、COMインターフェイス)を与えることになるし、それは、公開したくもないインターフェイスの公開になるような。

でも、どっちにしても、既定でCOMVisibleAttributeは真だから同じことなのかな。

と、メモ。


2007-12-06

_ WIN32OLE.NET

RubyForgeに登録した。ソースもsvnに入れたので、とりあえずここまでかな(と、こないだも書いたがイベント処理がおもしろかったので、引きずってしまった)。

一応、イベントも受け付けられるようにしたけど、オブジェクトを殺すのが難しい(AppDomainから削除する機能を追加する予定ではある)。

_ PowerShellはShell

プログラマブルPowerShell ~プログラマのための活用バイブル~ (.NET TECHNOLOGYシリーズ)(荒井 省三)

ちょっとだけレビューさせていただいた、荒井さんのPowerShellの本がいよいよ来年早々に出てきます。

というわけで予告。

前任のWSHと同じく、確かにあるし役にも立つし使っている人は使っているはずなのに、どこにも姿形が見えないという、まるで闇に隠れて生きる妖怪人間か、人も通らぬケモノ道ひとり抜けていくカムイかというようなPowerShellです。

つまりはshellなので、shな人にはそれなりに使いやすく、batな人にはわけわからず、LLな人にはちょっと面倒なわけですが、何がおもしろいかというと、PowerShellワールド。/procファイルシステムを想像すると大体合っているのだけど、レジストリもオブジェクトもファイルもある程度までは同じように見えるところ。

というわけで、荒井さんがきちんと使い方を書いている(Windowsで使えるいろいろなオブジェクトを広範囲にカバーしている)ので役に立ちます。

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

_ arai [ご紹介いただきまして有難うございます。 「PowerShellワールド」うまい説明ですね。将にその通りの世界ですね。..]


2007-12-07

_ Win32OLEの本

るびまにcuzicさんが連載していたWin32OLEの本が出たみたいだ。

Rubyist Magazine出張版 Ruby on Windows(cuzic)


2007-12-08

_ テスティングフレームワークという言葉

テスティングとは

本を書いていて、どうもテスティングフレームワークという言葉のおさまりの悪さ(というと違うなぁ。なんていうか、妙に通ぶった言い回しというか、日本語になっていないカタカナ固有のイヤンな味というか)が気になって、えーい、テストフレームワークにしてしまえとしてみたりしたんだけど、どうにも気になる。というのは、テストって書いているけど、テストじゃないんだよな。

というようなことは、わかっている人はみなわかっているんだけど、わかっていない人はもちろんわかっていない。

でまあ、実際にユニットテストを書けば、なんとなくわかってはくるわけだけど、それを言葉で表すってのも必要だよなぁ、とかいろいろ思うところもあって。

とはいえ、やはりテスティングと書くのはどうにも気になる。逆にこういうもってまわった言い回しが敬遠されたりもするんじゃないかなぁとか。

で、なにげなくTwitterでぼそってみたら、t-wadaさんから素早く、しかも確信に満ちた言葉が返ってきた。おお、なんか妥協するにしても、単に妥協するのではなく、表現できるところまでは表現すべきだ、という勇気というとちょっと違うが、なんかモチベーションが上がった(ロールプレイングゲームのファクタには出てこないのが不思議なくらい、重要なパラメータだ)ぞ。

というわけで、書いてみたら、なんか自分でも得心してしまった。

なので、リンク可能なかたちで公開します。こういう気分、というやつです。

_ シュトックハウゼンが死んだらしい

何しろ、聞き始めたころは、単なるコンセプトアーティストと化していて、あの驚くべき国立劇場での雅楽を生で見るというラッキーな体験もできたが、どう考えても名前のかっこよさに比べて音楽はだめだった。怒れるブーレーズ>>いまの音楽にノーノー>>>>>>>>>>>>今日のおかずはシュトックハウゼンというのが、僕にとってのダルムシュタット三羽烏であった。というか、最近は耳にしない言い方だな>三羽烏。

とにかく、いや、噂に聞く天才の音楽がこんなはずはありえないと、WERGOかな?とかDGとかのシュトックハウゼンのレコードを買って帰って聞いては叩き割りたい衝動にかられるというか、売り飛ばして次のを買う資金の一部にするというやりかたをするので、手元にはみごとに残っていないのだが、ロストロポヴィッチだとホイガーだとかを結集して作った金毘羅船の追い手に帆かけてしゅらしゅしゅしゅのようなタイトルのインプロヴィゼーションがどうにもこうにもなのはもちろん、ヒムンの、これにくらべれば、おれはルーリードのメタルマシンミュージックのほうがよっぽどおもしろいと感じる単調さとか、今となっては少年の歌とか、早い話が、感動はもちろんのこと、感心すらしたことがなかった。

驚異のパーカッション(1)ツィクルス(吉原すみれ)

しかし、超一流の奏者たちが取り上げるということは、何かおれにはわからない魅力があるのだとは思う。

それにくらべてやはり、こういうのは今となってはゴミというかつわものどもの夢の跡地というか。

KONTAKTE(Karlheinz Stockhausen)

いや、タイトルの付け方は名前と共に最高にかっこいいのだな。

_ メディア特性について

興味深い。

OLPC

テレビは「愚にもつかない娯楽」を提供しているときは良いのだが、問題は、そういう特性を持ったメディアであるテレビが「よいことをしよう」と思ったときで、政治などを取り扱おうとするのだが、そういうときにこそとりあつかっている対象を破壊してしまう。

ある種の表現(ここでは論理の積み重ねを示すこと)が(基本的に)不可能なメディアが、それ抜きでは不可能(だと思われる)ことをやろうとした場合に、自分の特性のほうに対象を引き寄せてしまうために、最初の意思と裏腹に対象を正しく取り扱えない(どころか破壊してしまう)。ということだが、そこまで単純化可能なものだろうか。いや、メディアをナイーフに使うことを想定した場合、それは正しく思える。

逆に考えて、ではたとえば政治の本質的な議論に向いたメディアに求められる特性とはどのようなものだろうか? 後戻りできる必要がある。いや、違うな。議論について言えば、テレビというテクノロジーの問題ではない。テクノロジーの上に構築されたメディアの問題に見える。どういう撮影方法を利用するかというようなレイヤから、広告収入に頼りそれを定期的に挿入するというビジネスモデルのようなレイヤまで。

と考えると、テクノロジーはやはり中立ではなかろうか。いや、それも違うか。表現可能なものと不可能なものは残るからだ。

_ ポストマン

読んでみたいけど、さすがに技術書じゃないと英語で読む自信はないので、翻訳を探してみたが、これがそうかな? (というか、ニールポストマンではこれしかない)

技術vs人間―ハイテク社会の危険(ニール ポストマン)

日本は、いまマルチメディア社会を目前にしている。ばら色の未来予測がとびかうなか、技術の無制限の成長が人間の知的・道徳的環境にもたらす破壊的な影響を意味論的に追究、それへの知的レジスタンスをよびかけ、学校教育での新しいカリキュラムを提案する。

それっぽい。マルチメディア社会どころかHD社会になってしまいつつあるが。

追記:違った。これは『Technopoly』という本らしい。(よしきさんが言及されているもう一冊のほうだ)

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

Before...

_ arton [どうもありがとうございます。 1週間という反論のための猶予期間や、下々まで配布可能な形態とかが根拠になっているのです..]

_ よしき [Neil Postmanの本の英語はほとんど高校生でもわかりそうな勢いなので、技術書の下手な日本語訳を読むよりはよっ..]

_ arton [見たら1500円と比較的安いから、仮に読みきれなくてもそれほどダメージがなさそうなので、アマゾンに発注してしまいまし..]


2007-12-09

_ 福袋

アップルの福袋かぁ、とか見ながら、でも35000円で欲しいものが入ってりゃいいけど、たいてい、価格換算では損してないけど、実質少しも得した感じしなかったりもするんだよなぁとか思ってみたりというほど、福袋を買ったことはないけど、それでも玩具とか菓子とか服とかないわけじゃない。そうか。子供の服の福袋はそう悪くなかったな(ジャスコのやつだけど、福袋といっても、何が入っているのかは選べるわけだが、ジャケットとパンツとシャツとバッグとかのコーディネイション一式販売になってて、それなりにお得になっている)。

とか、思いながら、アップルはともかく、本屋やレコード屋の福袋とか考えてみたり。本屋はまだ再販制があるからだめだろうけど、レコード屋(と書いて、今はなんて呼ぶのかな。ビニールからCDになっても録音は録音、やっぱりレコード屋なのか、それともCDショップとかと呼ぶんだろうか)の福袋って言ったら、去年ヒットして3ヶ月で誰も聞かなくなったようなどうでも良い曲が入ってるんだろうな、いらねぇ、とか。

アップルといえばマイクロソフトだ。

マイクロソフトの35000円の福袋ってのがもしあったら、そりゃどういうものになるんだろう? Office2003デベロッパーエディション10万円とか。もちろんアップグレード権があるかどうかで、えらく価値が変わる気もするけど、それなりにお得かも。Visual C++ 2.0は18万円くらいしたが、かといって、それが入っていても困るだろうな。4.0へはアップグレードできるかも知れないが、それでも意味ないし。NT3.1とか。Windows2000 Advanced Serverとかだとかえって欲しかったりする人も稀にはいるだろうけど。

おおそうか。はがきスタジオのその年度版とマウスとキーボードだと相当うれしそうだぞ。ぎりぎり、年賀状に間に合うし、とか。エンカルタの去年版とか、ゲーム詰め合わせとか、X Boxの型落ちとか、考えるとそれなりに福袋を作れそうだ。

魚屋の福袋で、刺身と切り身が50000円分入って35000円って、おそらく48000円くらいは生ゴミになりそうな気がするが、干物用の網とか入れてあると意味あったりするかな、とか。

_ time consumer

zoo keeper

時間を良く食べる化け物であった。

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

_ 通りすがります [レコード屋、ですねぇ。レコード屋はデジタル配信が当たり前になっても「レコード」でいけそうですが、すんごいよけいなお世..]

_ arton [確かに心配ですねぇ。というか現実に(僕の中では同類の)CISCOは店をやめちゃったし。]

_ 通りすがります [CISCOはびっくりしました。ディスクユニオンって、よく考えたら「ディスク組合」って事ですよね。なんか悲哀が増してき..]


2007-12-10

_ ラマ

WinampとSimcityの開発者は違うと思うんだが、どっちもラマ文化圏なのは何故だろうか?


2007-12-11

_ 百舌鳥と隼

はやにえとか栗鼠のドングリみたいなことをしてしまう我が身を省みるひととき。

アンテナの使い方


2007-12-12

_ マネーボール

以前、moleskinさんのを読んで、こりゃおもしろそうだな、と買ったものの、ずっと手付かずで放っておいたマネーボールを読み終えた。読み始めるとあっと言うまだ。つまりどえらくおもしろかった。

マネー・ボール (RHブックス・プラス)(マイケル・ルイス)

この本に書かれているのは、それまで着目されていた点(たとえば、剛速球を投げるとか、脚が速いとか)ではなく、純粋に得点を取るために着目すべき数値データ(たとえば出塁率)のみを優先することで、不人気な、したがって年俸が低く獲得競争に巻き込まれる可能性が低い選手(多くは太っちょ)を集めた球団のサクセスストーリーだ。それを指揮するのは、失敗した元大リーガーのジェネラルマネージャとその良きアシスタントのデータ解析屋(ハーバード卒のビジネスエリート)で、選手に対する予算10倍の球団を打ち負かす。しかも安く雇って人気が出て年俸が上がった選手はトレードに出して収益を上げて、ついでにトレード先で埋もれている安い選手を仕入れる。

−数値化できない、技の世界だとその世界の住人は信じている

−数値化できない以上、データから能力を判断するのは間違いだとその世界の住人は信じている

という状況で、主役のアスレチックスのビリービーンとポールデポデスタの2人は実際に、その数値化というものを武器に安い人材で圧倒的な成果を上げるのだが、ベースボール界ではごく一部の例外を除いて、その経営手法はまったく相手にされない(そのおかげで安い買い物ができる)。

で、その数値化のためにはデータが必要なわけだが、そこに稀代のデータ魔のような人物がいるのが、野球の不思議なところでもある。不思議なスポーツだな。

で、さらにこの本がおもしろいところは、本書の付録(ペーパーバック版への後書きという後日談)にも書かれているが、自分のビジネスに引き寄せて考えたくなる点だろう(しかし、ほとんどの野球人だけはそうは考えないというという点も含めて)。野球はルールが決定されているというのがこの手法が成功している重要なファクターのような気がするが、それを無視して敷衍して考えたくなる魅力があるのだが、それについては作者の書き方がうまいせいではないかという気もする。


2007-12-13

_ 嫌われてきれいに別れる

Meって、そういう存在だったな。

起動が早くなるって鳴り物入りで出てきたけど、どうやっても以前より起動は遅くて、いったいDOS/Vマガジンとかのレポートはなんだったんだろう? ととても不思議に思ってみたりしたものだ。それだけならばまだいいが、98SEよりもUSBでつながったやつが変な動きをしてみたり、なんか余分なことを裏でしてるらしくてシーンと静まりかえってみたり、青くなったりいろいろ。98SEは良かったねぇ、とか言いながら、Meじゃなくて98SEをのっけたパソコンは売ってないのか? とか探してみたり(うそかも)。

で、みなさん、心置きなく16ビットのカーネルを持ったOSを捨ててXPに移れたというわけだ。っていうのも、32ビット版でコンシューマ用UIを持ったOSとしては、NT4、2000に次ぐ3番目としてのXPってのがあったからだ。

で、今32ビットのVistaが、エクスプローラが半透明の緑の棒グラフを出して妙に時間をかけてコピーや削除をしたりすることがあったり、IMEが不思議な動きをしてくれたり、少なくてもおれのノートパソコンは、蓋をしてからも数10秒くらいHDDがくるくる回っていたり(XPは蓋した瞬間にスリープモードの点滅を始めてただけに気になる)、起きなかったり、レディブーストしてても、別に変わらないように見えたり(メモリーの搭載量の問題なのかも。ある程度余裕があると、単に邪魔するだけだったりってことはないかな)、いや、なかなか愉快なOSで、Meに匹敵するような気がする。

(ただし、MeのUIは、98SEよりきれいだった。そしてVistaのUIは、XPよりきれいだ)

そこで気付いた。

コンシューマ用64ビットWindowsは、XP、Vista、次、で3作目になる。

つまり、Vistaは、16ビットのMeと同じ位置づけの32ビット版なのだ。

というわけで、次からはみんな64ビットだね。

さらに、思い起こしてみれば、16ビットのMeが腐っていたかも知れないが、32ビットのNT4SP4や2000はまともに動いてた。

ってことはだ、Vistaだって64ビット版はとてもまともなのかも。4G載せて、Vista64に移行すればハッピーかもなぁ(というわけで、今度、暇みてやってみる予定)。

なんて、見事な移行シナリオなんだ。柳の下の2匹目だな。

そこで陰謀論。つまり、32ビットVistaの出来加減ってのは、AMDやIntelの意向を汲んだものなんだぜ。

_ オルダス

さていよいよ恐怖による支配

1984年 (ハヤカワ文庫 NV 8)(ジョージ・オーウェル)

ではなく、歓びによる(どの漢字がふさわしいかな? 悦びかもというか、「娯楽による」かも)支配についての本を読み始めたが、

すばらしい新世界 (講談社文庫)(ハックスリー)

いかに語彙が貧弱かと愕然としますな。小学生高学年程度なのかも。

_ それでも1/10は読めた

180ページの本の17ページ分を読むのに、2時間弱かかるってことはとんでもなくのろいが、でも読めそうだな。ぱっと見て、10単語に1単語くらいわからない言葉があるが、同じことを異なる言い回しで示す書き方を取っているから、大意は取れているようには思う(が誤読の可能性もないわけではない)ので辞書を引かずにとりあえず読み進めてみる。

メタファーの意味が「暗喩」(言葉による表現技法)とは異なる意味のようだ。マクルーハンの「メッセージ」という用語は修正が必要でそれは「メタファー」だと書いているんだから、それは暗喩ではないだろう。多分、日本語だと表象とかが合いそうだ。あるものを直接示すのではなく別の言い方で言い換えたもの、なのだから確かに暗喩といえそうに見えるが、暗喩が修辞学に属する表現技法なのに対して、この場合は、メディアの限界によって直接表現できないため別の表現を利用して示しているという意味だ。というか、このメタファーに対応する訳語ってなんだろうかな?


2007-12-14

_ スパゲッティなJavaなコード

コードでスパゲッティというのも想像できるけど、やっぱり継承のスパゲッティだろうなぁ。

テンプレートメソッドパターンを失敗したようなやつ。特に、publicクラス1ファイル縛りがガッツリと効いてくるのだが。

と書いたところで、IDEで「定義を参照」とかの機能を使うと別になんの問題もなく読めるのかも、と思ってみたり。

// Foo.java
public class Foo extends FooBase {
    public void method() {
        a();
        b();
        c();
    }
    protected void c() {
       d();
       ...
       e();
    }
}
ふむ、ってことはaはFooBaseだな。
// FooBase.java
import a.b.c.*;
import a.b.d.*;
import a.b.e.*;
public class FooBase extends BarExtended {
    public void method() {
        a();
        b();
        c();
    }
    protected void c() {
       ...
    } 
}

おい、まじかよ。っていうか、どのパッケージ見ればいいんだ?

// BarExtended.java
public class BarExtended extends Bar3 {
    public void b() {
       ...
       c();
    }
}

……

ls Bar*

……

// BarBase.java
public class Bar3Base extends Bar2 {
    public void a() {
        c();
    }
}

えーと、おれは何を調べていたんだっけ?


2007-12-15

_ 今日予約した本

ふたつのスピカ 13 (MFコミックス フラッパーシリーズ)(柳沼 行)

なんか最近、近所の本屋がメディアファクトリーの本を置いてないので、予約してしまう。

ZOOKEEPER(4) (イブニングKC)(青木 幸子)

どこにも売ってないから(というか、これは予約じゃなくて既刊なのか)アマゾンだ。

あと、これも注文。

RESTful Webサービス(Leonard Richardson)

あ、この買い方だとふたつのスピカが発売されるまでまったく配送されないのか……まあいいや。

_ マウス新調

ソニーかというぐらい見事に1年を越えたあたりからボタンの動きがおかしくなったので、買い替え。(ジッタリング>(間違い。チャタリング)というらしくて、ボタン操作が勝手にダブルクリックになったり、ドラッグ中に離された扱いにされたり、どうにも困る。ガンガンボタンを叩くと直ると聞いたのでやってみたらしばらく直っていたが、やはり調子悪いことに変わらないので、きれいさっぱり捨てることにした)

でもやっぱり買うのはロジクール。

LOGICOOL ワイヤレスレーザーマウス ワンタッチ検索ボタン搭載 MX-620(-)

ロジクールのマスウはでかいんだけど、ちょうど掌にぴったりくるので好き。あと左右非対称なところが好み。

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

Before...

_ arton [どうもありがとうございます。僕が取り間違えて覚えてたみたいです。]

_ きしだ [開けてみると、ボタンの裏が削れててうまくスイッチを押せなくなったりしてませんか? ぼくはそこに紙を挟んでだましてます..]

_ arton [残念。もう捨ててしまいました(これ、クリック時に書いたんじゃなくて取り替えたタイミングで書いた)。 もっとも、開け方..]


2007-12-16

_ 夜顔

ふざけた題だが、原題は「相変わらず美しい」というような感じ。多分。客の入りは4/5という感じ。土曜の最終にしては良いほうかな?

オリヴィエラもついに99歳だが、相変わらず、飄々とした映画を撮る。大したやつだ。

当然、出てくるビュルオジェにしろミシェルピコリ(常連の中の定番みたいな)にしろ、ばあさんじいさんだが、99歳から見ればまだまだ駆け出しなんだろうか。そんなこともないかも知れないけど。ふと思ったが、若いマネージャが年取ったエンジニアと組むことに抵抗を感じるみたいなことをなんかで読んだが、もしそんなことを言い出す映画監督がいたらどうすんだとか。

ドボルザークの第8交響曲で幕が開く。ミシェルピコリが聴いている。隣のおばさんとは無関係なのかな。クラリネット(イングリッシュホルン?)のソロでソリストが強調される。音と絵があってるので、生撮りみたいだ。破綻ない。わりと直情タイプの指揮。バレンボイムみたいだけど違う人(あとで調べたらポルトガルの楽人たちだった)。

ピコリ、左を向くと、金髪の女性に目が止まる。確かに止まる。ビュルオジェだ。黒い服。未亡人。

彼女はピコリに気付かずに黒い車の後部に乗り込み消える。

ピコリは劇場の外で待つ。でも何をだ?

劇場が完全に閉まり、夜の町。歩行者信号の緑(すそが広がったパンツのシルエット。パリってこうなのか?)、赤。クラクションの音。ピコリが赤なのに突っ切る。

(緑から映るということは、当初渡るべきを渡らず、つまり考えにふけっていたか妄想しているかという描写)

モダンな3体のダミーが飾ってあるショーウィンドウ。ピコリがにやにやしながら見る。向いの店。なんちゃらヴァンドーム。オジェが出てきて、車を拾って去る。

ピコリ、店に入る。

ひげの若いバーテン。ウィスキドゥブルサングラス。店の奥のボックス席には2人の娼婦。

と、映像が語りながら話が進む。

昼と夜の区切りは、俯瞰でエッフェル塔がある夜景。いつも変わらない。初回はサーチライト2周分。次からはもっと短い。

高級な店(に見える)。卓に赤いプレゼントを置き、待つ。シャンパン。いや、まだだ。窓から見ている。ずっと見ている。黒い車がやっと来る。

晩餐の始まり。

わたしはこのままシャンパン。

わたしは、ウィスキドゥブルサングラス。空のコップを口元まで運び、テーブルに戻す。ギャルソンがウィスキを注ぐ。

日本人の贈り物と同じものを見つけた。蓋を開ける。ブーンというミツバチのような唸り音。

怒るオジェ。

わたしは昔のわたしではないのよ。

そうか。では私が使うことにしよう。

あなたが?

シーボルトの時代から日本はファニーな国だったのだな、とか思ってみたり。

オジェが去った戸口を左からオンドリが来る。確かにブニュエルにささげられた映画。オンドリ。

置き忘れられた財布のエピソード。金をチップに与える。えんえんと後片付け。すべてが片付く。部屋の隅の金属製の人形のアップ。(途中、ピラミッド広場のジャンヌダルク?の銅像のアップ(馬の顔も)と対をなすようにして終わり。


2007-12-17

_ Rubyの会の忘年会

幹事のみなさま、お疲れ様でした。それにしても恵比寿は駐輪場が発達しているので、割りと行きやすい。

_ ワークフロー

ワークフローとかBPMって・・・

ぶりってな〜に〜?

「何か」って?

絵を描いたらほんとにその通りに動くのか??

どんな風になら動くのか

用途は?

makotan(ぶりつくっている人)の解説。

物をみないで書くのは間違いのもとなのだが、これを読むと「コードセントリックなワークフローエンジン」というキャッチフレーズが思い浮かぶ。(12/29補完)

_ 来年のデブサミ

なんじゃこりゃーと思わずびっくりするようなラインアップ。

タイムテーブル

via NyaRuRuの日記

必見と呼ばれるJoelショーのほか、青木さんが健在らしいとか、いろいろすごい。

_ 温度差ってどこから生まれるんだろう?

雅叙園の部屋のサイズはちょっとわからないし、無料だとキャンセルを前提にキャパシティを決めるだろうから、相当多目に設定しているとは思うわけだ。

でも、それにしても、昼休みが終わりかけている時間なのに、全部残席ありってどうしてなんだ? と書いてから、ああ、平日の日中開催かと気付く。

ところで、14日13:00からの「都市とアーキテクチャ」ってもしかして、デブサミとは思えぬメディア発信なのだろうか? (メディアテクノロジじゃなくてメディアアートってことだが)

_ Rails2.0

インストールしようとしたら、gem zlib:BufErrorというエラーになる。

で、gem update --system(うう、installと書いてて自分ではまった)でgemを更新してOK。


2007-12-18

_ C#はおもしろい(らしい)

いろいろC#のおもしろい機能をきく。Expression Treeとか。

名前からはパーシャルメソッドが気になったので調べると、いくつか見つかる。

パーシャルメソッド続き

・パーシャルメソッドはパーシャルクラス内で宣言する

・パーシャルメソッドはパーシャルモディファイアで示す

・パーシャルメソッドはボディを持たなくても良い

・パーシャルメソッドはvoidを返す

・パーシャルメソッドはstaticでも良い

・パーシャルメソッドは引数を取れる

・パーシャルメソッドはprivateでなければならない

#if 0の代わりに利用できるみたいだし、ポイントカットを示す(実装をコンパイル時に与えればウィービングできる)ためにジョインポイントにはさみこんでいくような使い方もできる。

Expression Treeが実行時にアスペクトをウィービングするために利用できるように、パーシャルメソッドは静的なポイントカットを利用してアスペクトをウィービングするために利用できる。

と考えると、AOPのアスペクトをウィービングするという機能はC#に入れたいが、しかしAOPの枠組みでは入れないよ、という意思の表れってことなのかも。

_ わかりやすいRuby1.9.1

「Ruby 1.9 を語る」 by まつもとゆきひろ - Ruby/Rails勉強会@関西-21

まとまっていてとてもわかりやすい。

10年くらいの綱引き

C#のExpression Treeって何年だ? とか考えると、すでにC#ってインフラ構築言語に移行したのかも。


2007-12-19

_ Rails2.0でInPlaceEditor

あまりに妙な方法で解決させたが、もっとスマートな方法がありそうにも思うので、晒してみる。なんで、そんなやり方するの? というツッコミしてください。

  • POSTを使うといったら使う
  • せっかくあるのだから、というかエディットなのだから、protect_from_forgeryは有効にする

とした場合、フォームパラメータをどう、InPlaceEditorで追加するかでひっかかった。

で、以下のようにしてみた。これで動くのは確認したけど、もっとスマートな方法(って最初に書いてるけど)はないでしょうか?

new Ajax.InPlaceEditor('edit', 
    '<%= url_for :action => 'update_foobar', :id => item %>', 
    {callback: function(f,v) {return Form.serialize(f) + '&authenticity_token=<%= form_authenticity_token%>';}});

なんか、関数を与えるんじゃなくて、もっと属性をちょっと設定してやるとかでできないもんかと。


2007-12-20

_ ちょっと気になるストラクチュ

わけあって、structural typingという言葉について調べてるうち、OCamlの用語っぽいなぁとかGoogleの検索結果を見ていて気付いて、手元の目つきの悪い鳥に相談してみる。

入門OCaml ~プログラミング基礎と実践理解~(OCaml-Nagoya)

が、ちょっと違う(sub-の有無はこのさいおいておいて)。

OCamlには構造的サブタイピング(structual subtyping)と呼ばれる多相性がサポートされています。

P.156

索引でもstructual subtypingで出ているから、確信がある言葉だと思えるし、サポートページにも特に記載はない。

でも、これってstructural subtypingじゃないかな?

----

で、書影をはるため調べてみたら、ラクダの本もあるのだね。

プログラミング in OCaml ~関数型プログラミングの基礎からGUI構築まで~(五十嵐 淳)

(僕は買わないけど、貼ってみたりして)

これから、ラクダ本といったら、それがPerlなのかOCamlなのか区別する必要があるわけだなぁ。

プログラミングPerl〈VOLUME1〉(ウォール,ラリー)

(おれが持ってるピンクというか薄い赤紫のラクダ本は1冊だったのに、なんと2冊になっている)

_ るびま

0022号

ゴルフなんだけど、これであってるかな(一応隠してある)?(26バイトだけど最後にLFとか\dがあると考えれば27バイトでパーだと思う)

200.step(1000){|v|p -v*10}

でもパーがあるってことはイーグルとかもあるんだろうから、もっと縮まるんだろう。

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

Before...

_ sawat [フタコブラクダ本といってみるとか]

_ arton [ほんとだ。気付きませんでした。]

_ C-yan [ぬお、r か. 気付きませんでした(^^;;;]


2007-12-21

_ 8GB USBメモリを使う

VS2008をダウンロードしたのは良いけれど4.6GBもあるもんでDVDには入らないし(50MBオーバーとか言われる。二層式なら良いらしいけど、そんなディスクは今、手元にはない)。

で、8GBのUSBメモリを持っているのを思い出して、コピーしようとすると、これまた「空き容量がない」というたわけたメッセージが出てくる。4GBだとMSBが立つとかそういう問題か?

と調べると、FAT32だとそういうことみたいだ。

で、しょうがないのでNTFSでフォーマットしようとすると、これができない。エクスプローラのフォーマットメニューで選べないのであった。

で、どうしようかと思ったら、KBに出てた。

プロパティ−ハードウェア−ポリシーで、遅延書き込みを有効にすると、NTFSでフォーマットができるようになる(そのかわり、ちゃんと安全な取り外しをしろと書いてあるが、逆にしなくても良いとは知らなかったくらいなので、まあOK。突然思い出したが、AMIGAについてbitにハワイ大学の先生が寄稿していて、FDにファイルコピーすると壊れる欠陥マシンだと大騒ぎしてたなぁ。遅延書き込みとか、アクセスランプの意味とか知らなかったんだろうけど、1980年代ってのは牧歌的な時代であった)。

で、解決。


2007-12-22

_ 胡桃割人形

手垢とか古びたとかポピュラーとかいう言葉を発すること自体がだめだということ。

リ・クリエイトの重要性。


2007-12-23

_ 熊川版くるみ割り人形

観て来た。えらく感動した。

何に感動したのかと言えば、その演出にだ。全然別の世界がその枠組みの中で構築されている。

プティパの呪いから完全に解き放たれているってこと。

熊川哲也 くるみ割り人形 [DVD](熊川哲也)

時計修理のドロッセルマイヤー(王宮の魔法使いってこた、陰陽師みたいなもんか――追記:どうも執事らしい。ってことはヽ大法師の役回りか)がやって来て、時計の針が逆転すると、雪の通りがあっというまにクリスマスパーティの会場になり、最後はベッドから外が開いて元の世界が始まる。

唐十郎の紅テントの、最後でばっとテントが跳ね上がって花園神社の向こうが見える演出を思い出したりもしたが、舞台の空間と時間と現実の空間と時間の往復を何十年ぶりかで意識した。その刺激が強烈だった。

最初の街角にあるガラスでできた建物の照明がメリーゴーラウンドのようで、妙にわくわくしてくるし、なんか、とてつもなく素敵なものを観たという気分を味わえた。

踊りは、1幕の中ごろで、クララをドロッセルマイヤーとなんだか忘れた人がキャッチボールのように宙を飛ばせるところが印象的だったな。トレパークのダイナミックなところとか、きのこの踊りという呼び方だった気がするけど中国の踊りの千手観音みたいなおもしろい振り付けとか。あとカーテンコールのネズミの尻尾とか、玉座のネズミたちとか。通りの子供たちの跳馬の踊りの楽しさ。でも、バレエというよりは演劇を観たような気になるのは、舞台装置と演出のせいだろう。それが一番見事だったということだ。

で、終わった後、向いの美術館でムンクを見る。

晩年の作品をまったく知らなかっただけに、労働者の群像に見とれる。あるいは衝撃を受ける。良く知ったムンクの不安定で崩落が始まっていて、世界樹が枯れて溶け始めた世界とはうってかわって、確信に満ちた力強い世界がそこにある。なんとしっかりと大地を踏みしめていることか。ところが、制作年ときたら1914年だ。

もう不安は的中して、世界の枠組みが変わって、あれほど美しかったヨーロッパが自壊する。

頭脳警察セカンド(頭脳警察)

だから、何も絵画でそれを表現する必要はすでに無いのかも。あるいは単に、それが老境というものかも知れないけど。

あるいは、帯としての絵画とか、神殿としての絵画とか。個々の不安に満ちた作品を部屋のまんなかから見渡せば、細部は空間に溶け込むために、単に美しい色彩の帯となる。全然、印象が異なることになる。その中に、中期の白が目立つ橋の上の群像が穴のようになっていて、いったいこの人はどこへ行くのだろうと不思議になる。しかし近づけば、色彩の明るさに反して、あいかわらず世界は溶け始めている。

美の20世紀〈6〉ムンク (美の20世紀 6)(エリザベス イングレス)

で、さらに医者の子供部屋のための作品群を見る。なんでこの美しい緑を拒否したのかなぁとか思いながらも、画家の悪意も感じざるを得ない。なぜ、やめろと言われているにもかかわらず抱擁像を何個も配置したのだろうか。妙に丸まってしまっているので、わからないとでも思ったんだろうか。でも、その融合ぶりがむしろ妖しさを感じさせているのだが。

なんどもなんども同じ画を描いていることに興味をひかれる。描くたびに微妙に構図が変わるのは理解できるが、描かれている細部が変わるのが興味深い。たとえば小船があったりなかったり。しかし一環して月の光の縦の帯はある。

太陽の習作の縦の帯。

縦の帯は、ほとんどの画に共通している。アダムとイブの真ん中の木の帯は地下の骨から栄養を吸い取り天井の都市へと供給する。

立像の縦の帯。

それに対して部屋を横の帯状に画が取り巻くという空間設計。

すると、縦の帯は柱の役割を持つのかなぁとかいろいろ考える。

労働シリーズでの馬は横たわっているように見える。労働者の屹立する群像とは対照的だ。

_ 連絡事項

届いていますが、少なくとも評せる程度に読んでから報告したいと思います。

_ 利便性の代償

「それ、違法だし。なんで正規版買わないの?」

「だって、あれ、最初にスキップできない変な青い画面で待たされるじゃん」

「ああ、確かに。誰に向かって言ってるんだ? っていうやつが出てくるな」

「うん。あれバカだと思うだろ?」

「確かに、バカだな」

「つまり、正直ものはバカを見る」

まったくだ。


2007-12-24

_ ちょっとびっくり

メインマシンをVistaに移行したが、FreePeekがちゃんと動作するのには驚いた(管理者として実行を選択したわけだが)。

_ Dell Precision 470をVistaへ移行

えらく苦労したので、ログ。

1. 素直にアップグレードしようとすると、「Dell Storage Manager」が非互換というエラーになってインストールできない。しかし、Vista Migration Checkは通っているのだが。

2. Dell Storage Managerなんていうプログラムは存在しないが、RAID Managerというのがあったので、プログラムの追加と削除から削除。ちなみに、RAIDは使ってないので問題ないはず。

3. 再起動

4. アップグレードやり直し。同じエラーになる。

5. いろいろ試す。

6. デバイスマネージャで見るとAFAMgt.sysというのが、HDDのドライバとして登録されている(IDEコントローラではなく、ディスクユニットのほう)。しかし、削除してもすぐ復活する。

7. \windows\system32\drivers\afamgt.sysをリネームしてみたり。

8. ブルースクリーンで再起動不可。

9. マシン付属のOSディスクで管理コンソールを開き、afamgt.sysのファイル名を復元。

10. デバイスマネージャでみても非Pluginドライバとしても見えない。つまり正規の手段では削除できない。

11. KB888190を見つける。指示通りにレジストリを修正。

12. 再起動してアップグレード。やっぱり引っかかる。むかつく。

13. レジストリエディタで、afamgt.sysを検索して、完全にすべて、削除。一応、削除前にエクスポートしたけど。

14. やっとアップグレードが始まる。

15. ブート構成の更新でエラー。最後の最後(2時間くらいかかる)で、と怒る。しかし、2時間ってのは序盤だと知るのは、この後のことである。

16.エラー文言で検索すると、素人相談室がひっかかって、だまされてしまった。ようするに、アップグレード権がないのが問題というようなことがそこには書いてあったのであった。

17. XP ProからのアップグレードにEnterpriseは選べないのかな、と不安になり、Buisinessでやり直し。

18. ブート構成の更新でエラー。わけわからん。

19.KB931697を発見。翻訳は腐りまくっているがなんと、11.の手順が問題なんじゃん。単にAFAmgt.sysを削除するだけではなく、PartMgrという文字列への置き換えが必要だったのであった。

20. 再度Enterpriseを選ぶ。無事進み始める。

21. しかしいつまでたっても終わらない。

22. 確かに数時間かかるとは書いてはあるが、10数時間の間違いではないか? (そこまではかかってないか)

23. で、あがった。万事快調。というか、こいつのために、Vistaに更新する気になったFirefoxがそれほどページフォールトせずにさくさく動く。まあ、様子見だけど。でも予想が正しければ、XPのメモリ管理との不整合とおそらく(多分XP側の)レースコンディションが問題のはずだから、Vistaでだったら固まらないと思うんだよね(Firefoxの死に切れない状態のせいで何度XPの再起動が必要になったことか)。

24.これで、Explorerの緑の帯病が治れば文句ないんだけどなぁ。

25. Becky!の画面表示が異常(未読数でフリッカ)。えらくバージョンがあがっていることを知って、アップデート。

26. HPのなんか重たいやつが、いきなり死ぬ。あとでHPからVista対応のやつを取って来よう。しかしマイグレーションチェックには引っかからないんだが、そんなのばっか。

27. 問題あるかもよ、とマイグレーションチェックがおどしてたSoundMAXは問題なし。

続き(12/25)

28.DVD観てたら音がぶち切れる。やっぱ問題あったわ。と、DELLのサイトからSoundMAXの最新ドライバを入れる。直った。

29. HPだめだめ。ソリューションセンターからのテストプリントがどうあってもゴミ出力となる。でも、WindowsのプリンタのテストプリントはOKだし、PDFもちゃんと出る。わけわからないHPクォリティ(まあ、放置)。

30. そして何度ものスリープにも関わらず、Firefoxはさくさく動いているのです。

万事快調 [DVD](イヴ・モンタン)

それにしてもイブモンタンは思い出のモンパルナスといい、良き節目で良き監督の良き映画に出るもんだん。


2007-12-25

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

_ ksh [命はまだ一個残ってますものね。]

_ arton [そうですね。僕はあの影が見えたと思って降りて、結局、黒猫を拾って来るところとこか好きです。]


2007-12-26

_ 楽しいやりとり

たださんも指摘してたけど、

> | Added files:

> | trunk/golf_prelude.rb

> | trunk/goruby.c

>

> この忙しい時にナニを足してるんですか(苦笑)。

いやなにを。

これ、最高。

_ なんで?

明日(寝て起きた後)見る。
compiling openssl
C:/home/arton/ruby-1.9.0-0/lib/mkmf.rb:300:in `initialize': Permission denied -
conftest.c (Errno::EACCES)
        from C:/home/arton/ruby-1.9.0-0/lib/mkmf.rb:300:in `open'
        from C:/home/arton/ruby-1.9.0-0/lib/mkmf.rb:300:in `create_tmpsrc'
        from C:/home/arton/ruby-1.9.0-0/lib/mkmf.rb:307:in `try_do'
……
        from ./../ext/extmk.rb:430:in `
' NMAKE : fatal error U1077: '.\miniruby.exe' : リターン コード '0x1' Stop.

_ 再現しない

普通にopensslのビルドが始まってしまった(Explorerかインデックスなんちゃらが何かしてたんだろうか)。
../.././../ext/openssl/ossl_pkey_ec.c(1579) : fatal error C1021: シャープ記号 (#)
の後にくる文字群が、有効なプリプロセッサ ディレクティブの形式になっていません。'warning'
NMAKE : fatal error U1077: 'cl' : リターン コード '0x2'
Stop.
NMAKE : fatal error U1077: '.\miniruby.exe' : リターン コード '0x1'
Stop.

VC++には、#warningというディレクティブは無い(MSDN)。

無くてmakeが終了するくらいなら、#errorに置き換えたいところ。

とりあえず、opensslを0.9.7から0.9.8に上げるのが良いかな?

_ おれのライセンス選び

たださんのGPL観にぐっと来たので、おれも書いてみようかな。

でも、GPLについては書かない。GPLが最高なのは自明の前提としたいからだ(もちろん、こういう態度はきわめて不真面目なので良くないけど、いろいろ思うところ、感じるところが多いので、面倒だ。で、それを一言で示すと、自明の前提ということになる)。

まず、rjbのようなライブラリ。これはLGPLだろう。ほかにどうしろと。

で、それ以外は基本的(基本的でないときはGPLになる)にFair License。短いから誰でも読めるだろうし(現実的)、短いからソースコードを読む邪魔をしないし(実用的)、コンパイラの読み飛ばしも高速だろうし(効率的)、しかもOSDだ(本質的)。

思うところを書かないとなんて簡単なんだ。

_ でけた

opensll-0.9.8に更新したら無事できた。

あとは、年越しmsi(golf付)を作ればOK。特別版なのでASRとかeserbとか無いやつ。

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

Before...

_ arton [ふーむ、mkmf.rbが何か違うのかなぁ。というか違うんだろうけど。]

_ なかむら(う) [とりあえず回避策だけ入れときました。効くかどうかわかんないですけど。]

_ arton [どうもありがとうございます。(いや、僕は基本的にリリース時にしかビルドしないけど、機会があれば意識して試してみます)]


2007-12-27

_ フランダースの犬

いつ読んだ時の反応か、という観点が抜けているだろ。

子供の頃であれば、かわいそうと感じるはずじゃないか、洋の東西を問わず?

おれは、確か、子供のころ読んでかわいそうな話だな、と感じたし、そういうネガティブな感情は多分、感動とそう遠くは無く、気づけば感動的な物語を読んだということになっているのではないだろうか?

たとえば、アンデルセンに青銅の豚の話があった(と記憶してる)が、同工異曲なかわいそうな話だった。ほかにもこういったある観点からは負け犬の話はそこらじゅうに転がっているだろう(マッチ売りの少女と書けば納得できる?)。で、幼心を痛めつけるのだ。たまたま子供用の本のリストから抜け落ちてしまったために、忘れ去られて、後から掬えなくなったというだけに思える。

アキカウリスマキは別ね。あれはそっちに張ってるわけだから(というか大人向けである)。

街のあかり [DVD](ヤンネ・フーティアイネン)

さて、日本の良い年したあんちゃんやおっさんに、フランダースの犬を読ませて、「この主役の小僧をどう思う?」と聞けば、「かわいそうな負け犬野郎だ、後味の悪い嫌な話だ。あっち行け」と、これまた洋の東西を問わずなるんじゃないか?

コンテキスト抜きで語るのは愚かである

_ 芸術の死

別の観点もありうる。

マッチ売りの少女は、凍え死んで天に召される。救済方法はフランダースの犬と変わらん。

違いはなにか?

ネロは画家という、それだけで食えないだろうと思われてしまう職業をある程度の年齢なのに選択しているところだ。マッチ売りの少女は、なんだかわからんがマッチを売るという商売で、このほうが一見すると安定した職業を選択しているうえに、より年齢が低い。

そのあたりが、洋の西でネロに対して風当たりが強い原因かも(多分、東でも同じだろう、大人になって読めば)。

つまり、芸術家が相手なしになって死ぬのは、語るに値しない予定調和なのであった。

_ Ruby-1.9.0 Windows Installer Package

Ruby 1.9.0を試してみたいけど、おれはWindowsだからという人は、考えてみたらExpress Editionを使えばよいわけですが、とはいってもMakeするのは面倒だったり、readlineとかopensslとかそろえるのは面倒だったりするだろうから、お試しパッケージということでRuby-1.9.0を一式パッケージ化したMSIを提供します。

Ruby-1.9.0.msi

ASRやExerbはもちろん、Visualu Rubyなども入っていない素のMSVCRT(VC++6SP5)版のRuby 1.9.0になります。

以下が含まれます。サイズは15MB近くとでかいので注意。

・1.9.0 リファレンスマニュアル (chm版)

・include、lib、riなど1.9.0のnmake install対象すべて。rbconfig.rbは修正が必要かも

・Vista対応

・openssl(0.9.8g)

・readline

・zlib

・iconv(1.9.1)

・tcltk84用tcltklib.so

・この忙しいのにしっかりと入ったgoruby

再配布もご自由にどうぞ。

なお、アンインストールには信じられないくらいの時間がかかります。

★Vista利用時のヒント

gemとか使いたい場合は、ruby-1.9 consoleを管理者権限で起動してください。(追記:ショートカットは管理者権限では起動できませんでした。別途md.exeを管理者権限で起動して、パスを通してgemしてください)

追記(12/29) 今さら遅いかも知れないけど(なんか想定以上のダウンロード数だし)、なぜASRとかExerbとか僕のディストリビューションなら入っていて当たり前のものを「……はもちろん」という言い方で入れてないか、とか、「試してみたいけど」と書いてあるのかとか、15MBもあるのにinfoseekにサーバー負荷を肩代わりしてもらってないのかとか、は当然の了解があると思ってるわけだけど、これはあくまでも人柱用パッケージですよ。

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

_ hassie [arton先生!待ってましたよ!。というわけで、いただいていきます(笑)]


2007-12-28

_ Ruby on Windows

以前書影だけ張ったRuby on Windowsですが、cuzicさんから、献本していただきました。どうもありがとうございます。

Rubyist Magazine出張版 Ruby on Windows(cuzic)

これは良いです。

ご存知というか、使っていると思いますが、Excelは相変わらず現役で、OLEというかCOMを使って外部プログラムから操作できるわけです。

で、副題の「Rubyで丸投げ! ルーチンワーク」が効いてくると。(「Rubyに」じゃなくて、Rubyのプログラムを作るのはこっちなので、「Rubyで」なわけですね)

COMWin32OLE)の説明としてExcelADOOutlookIEWSHWMIiTunesが取り上げられていて、よくまとまっています。各章は、課題があって、その解決策としてRubyを利用したプログラムを作成して、解決するというシナリオがあるため、明快です。なるほどなぁ。

関連してSimple OLE Browser助田さんにゃすさんVisualuRubyを使って作ったプログラム)の操作方法とか情報の引っ張りかたとかも出ています。このあたりは、知ってしまえばあまりに自明なのでas isになりやすいのですが、きちんとフォローしてあるので、COM初心者にはありがたいのではないでしょうか。

あと、ExerbRubyCLRRjbJRubyなどのWindows特化ツールや、環境ブリッジについてもそれぞれ章が割かれています。特にExerbも、作った人も使っている人もなんかわかって使っているので……とSimple Object Browserと同じような感じになっているので、こうやって明解な解説があるのは良いことだなぁと思います。

あと、美点でもあり欠点でもある点。版型が大きいです。そのため、リストが変な折り返しなしできちんと入っているのが好感度高。でも、僕の机の上は狭いので、開いて置くのはちょっと大変とか。

にしても、

Rubyを256倍使うための本 邪道編(arton)

から8年弱。邪道編を書いたときにも、そろそろCOMも終わりだろうなぁとか感じていたのに、確かに未だに(あれ書いたときは知らなかった言葉=DSLのために)ExcelをWin32OLEで操作しているわけで、時の流れの気まぐれぶりはおもしろい。

(なんとなくリソースポータルを作ってしまった)

追記:地味だけど、巻末のIDE一覧もいい。しかし「一番使っているのは」が同じなんだけど、それが人口比でどう変わっていくのかはちょっと見届けたい気がする。

_ Instant Railsが戻ってきたぜ

Instant Rails

Rob Bazinet has offered to take over the Instant Rails project

and will soon be releasing a new version feature Rails 2.0.

だれだかしらないんだけど、thanks Rob.

#もしかしたら、このニュースが、1.9.0やるりま以上のクリスマスプレゼントだという人もいるかも知れない。


2007-12-29

_ 世界でもっとも短いライセンスまたはRubyの歴史

Fair License / オープンソースライセンスでGOLFを行うとどうなる?

OSDに準拠できるかどうかは、わからないけど、

・私を訴えない限りなにをしてもよい

・一部を他の非オープンのソフトウェアに流用してもOK

Ruby ライセンスについて

というのは短いし、えらく意図がわかりやすい。

元の意図はともかく、このライセンスはつまりは、

第1項で、ソースコードは作者の手を離れていることを言明している(だから、それを利用した人が自分の責任ですべてをやれ)。

第2項で、ソースコード内に含まれるイディオムや、関数(機能)などは、元のソフトウェアから自立していることを言明している。(というより、全部では意味がないというべきか)

で、まるで、可愛い子には旅をさせる思想ですね。

GPLの場合、可愛い子には旅をさせるんだけど、パスポートに「この旅行者の自由を保証しない限り、あなたの国内に入国させるな」と書いてあるようなもんだ。

こちらは、「何かしでかしても本国への強制送還はお断り。入国させた貴国の責任で対処しろ」と。

えーと、つまり読みどころ(少なくとも僕の解釈では)は、一度書いたソースコードには、秘密もなにも存在しないということです。書いてしまった、つまりソースコードになってしまったわけだから。そしてそれは、公開した瞬間から自立する、ということ。僕は、そういう感覚を持っている。

作者ができることは、その公開の範囲の制御だけ、と。


上で引用した投稿からはじまる一連の議論は、以下の点から興味深い。

ちょっと毀誉褒貶もある人のようだけど(モル……とか書き始めてから気づいたが、職業的にクライアントの利益を最大化するのが職業的な使命なのだから、と、こないだの母子事件から得た知識を敷衍すると、まったく正しい行動だったのだろう)、ここでの尾崎さんは、法律家の観点から、それがどういう意味になるか、どのような制約を持つか、といったことを誠実に書いている。少なくとも僕にはそう読める。

しかし、相当の誤解と軋轢を生んでいる。反応しやすい微妙な言葉があるのかも知れない。

語彙とコンテキストの非共有という僕がいつも不思議の思う問題がここでは明らかなかたちで露出している。

ライセンスどうあるべきか、とかを含めていろいろな意味で興味深いスレッドです。


2007-12-30

_ 孤独の旅路

まるで、ウールリッチかアイリッシュの作品の題みたいだが、まあ、わからんでもない。

ニール・ヤング ハート・オブ・ゴールド ~孤独の旅路~ スペシャル・コレクターズ・エディション [DVD](ニール・ヤング)

欲しいのでとりあえず貼っておいて、後で買う。

っていうか、ジョナサンデミってまるでアランパーカーのようによくわからないフィルモグラフィの持ち主だなぁ。ストップメイキングセンスと羊たちの沈黙とニールヤングか。


2007-12-31

_ 年末はWii

子供が友達の家に遊びに行って、なにやら興奮して帰って来た。

Wii Fitがおもしろい、買え買え。

妻も、Wii Fitはやってみたいとか言い出す。

DSはともかく、初代ファミコン以来ゲームマシンは買ったことがないけど、そろそろ一台くらいあっても良いかなぁとか、もう、普通にアマゾンで待たずに買えるのか、とかあって、では買おうということで買った、届いた、3日前。

Wii本体 (シロ) (「Wiiリモコンジャケット」同梱) (RVL-S-WD) 【メーカー生産終了】(-)

Wiiフィット (「バランスWiiボード」同梱)(-)

いやぁ、こりゃおもしろいや。確かに売れるわけだ。

届くまではわかってなかったけど(リモコンについては知ってた)、体重計みたいな台がセンサーになっていて、重心の前後左右を検知するのか。

で、ヨガだの筋肉トレーニングとかはわりとどうでも良いのだが(ジョギングだけは犬についてくと崖を飛んだりするのでおもしろい)、バランスゲームとかいうゲームが入っていて、こいつがおもしろい。

特に、スキーの旗くぐりみたいなやつと、シャボン玉の中に入って川を下るやつ。

体重の移動と、画面出力のフィードバックシステムなんだが、自分の体を制御するのってなかなか難しいわけで、すさまじくはまってしまった。シャボン玉のやつは、ハンドルが無いセグウェイの運転という感じで(TechEDで乗ったことがあるのだが、まさにセグウェイの運転に近い)これがおもしろい。

それにしても、肉体というデバイスを細かく制御するのは、想像以上に難しく、不自由で、まさにゲームであるなぁと思わずにはいられない。しかも、反復することで技術が向上するのが距離とか速度とかでフィードバックされるわけで、まさにゲームなわけだし。

で、AV端子が塞がって不便(デフォルトで同梱されているのは黄赤白ケーブルなのだが、この入力は1つしかないので、DVDプレイヤーと抜き差しベースでの交換となる)なので、D端子ケーブルを後から発注してみたり。

Wii専用 D端子AVケーブル(-)

_ グールドファン

Glenn Gould - The Complete Original Jacket Collection(Glenn Gould)

すげぇ、こんなのがあるんだ(誰かが買ったアフィリエイト経由。どなたか知らないけど、2重に感謝。買ってくれてありがとう+教えてくれてありがとう)。

グレングールドの全部のCD80枚で30000円って、むちゃくちゃ安いんじゃないか? 自分のお年玉に買うかどうかちょっと検討する(っていうのは20枚くらいは重複しちゃうからだが、それを引いてもお得なような)。

(で、結局注文してしまった……が、考えたらモーツァルトやベートーヴェンのバガテルみたく絶対に聴かなそうなのもあるので、ほんの少し後悔したけど、シベリウスやヒンデミットみたいにわざわざ買わないけど聴きたかったやつが聴けることになるんだから、やっぱり良かったな、とか。で、シベリウスやヒンデミットはちゃんと入ってるんだろうな?)


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|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|

ジェズイットを見習え