トップ 最新 追記

日々の破片

著作一覧

2008-12-20

_ 2008年の映画をふりかえる

圧倒的にペドロコスタ。いくつものシーンが記憶されている。すごい質感。

でも、結構、クェイ兄弟を夢に観てうなされる。

_ 2008年のバレエをふりかえる

ジゼル。おっかなかった。

でも新年にいきなり観た美女と野獣(少し曖昧な状態に陥ってしまったのが悔しい)がどうも傑作だったような。

_ 2008年のオペラをふりかえる

新国立劇場のトゥランドットかなぁ。アイーダも良かったけど。(というか、これにソフィアのトゥランドットを加えると観たすべてなのであった)

_ 2008年の読書(非技術書)をふりかえる

世界の測量と香水がどちらもおもしろかった。

ある人殺しの物語 香水 (文春文庫)(パトリック ジュースキント)

(ばかみたいに売れた本が真価を問われるのは、誰も語るものがいなくなったときに手に取った人間がどう評価するかだ。香水は素晴らしい。その孤独と孤高と矜持が今や絶滅寸前の蛙)

が、おれはどうもニザンみたいなのが好きなんだな。

いまさら読んでもと思いながら結局、全部読んだが、やはりおもしろい。

アデン、アラビア/名誉の戦場 (池澤夏樹=個人編集 世界文学全集 1-10)(ジャン ルオー)

おもしろいのだが、こういう作品には将来はないだろうなぁという気もする。あるいは逆に、こういう作品は普遍性を獲得したとも言える。発表の場がネットワークによってもたらされたからだ。つまり、商品としての将来はなく、スタイルとしての普遍性が獲得されたというか。ほんの少しの客体と饒舌でそれまでの人生で獲得してきたありったけの知を利用した主体のせめぎあい、容赦ない告発と自省。

ニザンで最も好きなのは、今やカタログすらない陰謀だ。世界の調和を取り戻すためにすべてをうまくやろうとして、結局、何もできずに苦しみながら、しかも嫌になるほど明晰に自分が失敗したという確信の中で主人公は死ぬのだが(というか、そこしか覚えていなくて、なんで死ぬのか、自殺だっけ? ではなぜ自殺を選ぶのかとかまったく覚えていない)、その明晰な意識があまりにも生々しく、ようするに、そういう自分の最期というものをさんざんシミュレートした人間が書いたもの、だという感触、つまり本当にあり得る、最悪の死が描かれているからだ。

_ 2008年のマンガ

スパナのおかげでリボーンがおもしろい。

敵味方関係なく、すごい技術が間違って使われてたらデバッグしたくなるよなぁ。

_ 縦書き

っていうか、世界で最も読まれている(もちろん日本でも出版部数は一番多いと思うんだけど、部数に関しては)日本の本って、マンガだと思うんだけど、あれは縦書きなんじゃなかったっけ?

_ 太陽系

Sunがやれば良いと思うんです。

おれ、この言葉ではなく、このエントリーすごく好きだな。

より自由

という見方は重要だよなぁとうなずいたりしながら。

_ マルチキャストで信頼がある通信を行うにはどうすれば良いのだろうか

マルチキャストだと、もしACKを相手に求めると、元の発信元が大変なことになる。だから、確定応答方式はとれない、と思う。

そこで、抜けを見つけた受信先が欠落したパケットの再送を求めるか(信頼性があるネットワークなら欠落は少ないため実用的かも知れない。しかしネットワークが信用できなかったり、送信先に送信元の転送速度より遅くて取りこぼしするノードが複数あると、再送であふれてしまいかねない(個々に対応する場合))。

すると、抜けを発見したノードはあきらめるか(では、逆に完全に到達したノードは存在するのか、どうやって見つければ良いか)、1人でも抜けと手をあげたら、現在の送信とは別に周回遅れの送信をやはりマルチキャストしてやるとか、で、それでさらに手を挙げたノードがいたら……、だめですな。


2008-12-19

_ NaClのこと

Monoミーティングで川幡さん(ごめんなさい。最初間違えて書いてました(ご指摘多謝))のNaClについてのプレゼンというか調べたことのレポートがあって、えらくおもしろかったのでメモ。

・NaClは、Cのプログラム(x86バイナリにコンパイル済み)をダウンロードして実行する仕組み。

・ミソは、2重のサンドボックス(というか安全弁)

・最初のサンドボックスとは

−コンパイル時にretを生成しない。(スタック上のデータをpcに設定しない)

−レジスタを利用した間接ジャンプは、NaClJumpというものに置き換える。

−NaClJumpは、eaxに0xffffffe0でマスクした後にeaxの指すアドレスへジャンプ。

−ミソは0mod32にすること。オペコードの開始は32バイト境界へ配置(個々のルーチンは、ということだと思う。()内で思っているのはおれ)

−セグメントレジスタを設定することで、限定した32ビットアドレス内でのみ実行できるようにする。

−ベリファイアがダウンロード中にインストラクションの正当性を検査。たとえばretを発見したら弾く。間接jumpがNaClJumpでなければ弾く。不法オペコードは弾く。この処理はやたらと高速。

−実行速度は、NaClJumpのオーバーヘッドがあるのではないかと思ったら、むしろ高速だった。32バイト境界へのオペコード配置がキャッシュと相性が良いのではないか。

−もちろん、サイズはでかくなる。30%増し。ただし、配置を最適化すればもう少しコンパクトになる可能性はある。

・もう一つのサンドボックスは、当然ライブラリということになる。

というような感じで、retのところにしびれた。

しびれたが、callはcallなんだろうから、関数のエントリで戻りアドレススタックのようなアプリケーションスタックを用意してそこへ格納し、NaClJump用にeaxへポップするというような仕組みなのかな? というようなことを知りたければ、NaClのソースを読むか、生成したバイナリを調べれば良いので、休日になって、しなければならないことをしたら、見てみよう。たとえば、戻りアドレスがデータスタック(というように通常のスタックを利用すると仮定して)上のを利用しないとしても、関数の戻り先での利用を想定してオーバーフローさせておいて、そこでeaxへポップしたら、そこで落とせるのではないかとか。結局、見なければわからないな。

(追記:ご教示ありがとうございます。『ret は pop + nacljmp になるだけちゃうかな。』。そこまで川幡さんの説明では語られていなかったので僕が勝手に想像していただけです。というか、今までスルーしていたクロフォード本の80386セグメンテーションの項を読んでいるけど、これは難しいな)

(参考:正しいUI というのを思い出したが、さてNaClはどう使えるのだろうか)

Monoミーティングでは、ミゲルのPDCセッションの話。SIMDを利用したら、Monoのプログラムがものによっては48倍高速化されるという(ちょっと詐術が入っていそうな)デモとか。にしても、SIMDの効果はすごいな。

というわけで、Mono(というかNovell)のビジネスとして、ゲーム用のライセンス(LGPLと商用のデュアルとなっているらしい)がそれなりに出ているというような話。

さらに、万葉でプレゼンするというあたりから、中学のときには100首ほど暗記していたというような話が出たり、なんか意外と世界は狭いような気になったり。

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

_ shinh [中の人として間違ってると問題あるので、その発言はよくも知らん子が、疑問に思った後に適当に論文斜め読み + nacl-..]

_ koichiro [×川端さん ○川幡さん です!]

_ arton [表現を変えました。すみません。>shinhさん どうもありがとうございます。>koichiroさん]


2008-12-18

_ 仮想マシンの使い方

開発方法についてのミーティングをしていたらおもしろい(comicalの意味ではない)アイディアを聞いたのでメモ。

できますた、といって持ってこられると、どうも、その開発者の環境だけでは正しく動く。たとえばJavaのバージョンとか、Jakartaの何かとか、その他のなにかとか、ディレクトリの構成とか、もろもろ。

いちいちそういうの検証するのって誰の作業なんだ?

というわけで、こちらの環境をパッケージした仮想マシンの仮想ディスクを渡して(もちろん、Junitとか実行できるように仕込んでおく)、この中でテストして動作するか確認してから持ってくるように、とすれば良いのではないか。

おお、なるほど、それはそうだ、となった。

でまぁ、Virtual PCか(Virtual Serverというわけにはいかんだろうし)、さもなきゃVirutalBoxだろJKと思っていたら、Playerという言葉が聴こえたので、そりゃないだろうという話になったり。

なったのは良いのだが、ふと気付くと、おれはVirtualBox使ったことないから、具体的なことが言えないことに思い当たる。

というわけで、ちょっと試してみることにする。

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

_ atsushieno [うちのやつですけどこんなのもありますですよ。細かい機能は知らないけど、サーバサイドで勝手に作っちゃうそうです。 ht..]

_ arton [どうも。おもしろそうなので見てみます。]


2008-12-17

_ 排他制御と同期

単純に、
synchronized (lockObject) {
  critical++;
}
みたくsyncronizedステートメントで囲むから、それを訳して「同期ブロックを使う」とか、「critical変数への加算を同期させる」とか書いてみる。
確かに、前者はともかく、後者は変だな。同期させているのは、ブロックへの進入だ、というか、それを同期かというと、むしろ複数のスレッドの待ち合わせをして同時に進入させるような印象を受けるかも。
でも、そう覚えておけば、syncronizedステートメントをすぐに思い出せて良いかも。
C#だと、
lock (lockObject) {
    critical++;
}
だから、もう少し素直な感じ。ロックしてcritical変数を加算。
そういえば、
class Foo implements Serializable {
    ...
}
のシリアライザブルを、シリアライズ(同期の意味)と紛らわしくてひどい命名だというようなことをkjanaさんが言っていたなぁと思いだしたり。
COMだと
: IMarshal
だから用語的にはいい感じかも。

_ なぜか伊藤だけが生き延びた?

そりゃくれくれくんが使う割合約100%なんだから、使われない機能名は忘れられるでしょう。

後はふつうに雑誌とか読んでて、ダウンロードしてか伊藤はあっても、たあ坊をビージーズ(アフィは勘弁しといたる)でとうけつのあ…とは下品になるから(貴種は自ら手を動かさない)書かれてないってのもあると思います。

なんてね(げふんげふんと咳のまね)


2008-12-16

_ 残ってるのは終わりではない証拠?

たとえば、COBOLの時代は終わった。という断言をするとどこからともなくとおりすがりが湧いてきて、まだまだメインフレームは現役でっせ(実はPL/Iで記述されててもお構いなしに)とか書いていったり、あるいは.NETでもCOBOLが使えまっせとか(そりゃあることは知っているが、それはメインストリームか? それでどれだけの新規案件が取れるのか?)言って、全然終わっていないと一生懸命主張するとする。

第三者がそれを見て感じることは、なんだろうか? 見苦しいなぁ、というか、まさか終わってたとは思わなかったけど、本当に終わってたんだな、という感慨だ。

というわけで、終わったことがわかったので、クラウドについても調べることにする。

#でも、対比がまずいのではなかろうかとか。

むしろ、そういう終わりうんぬんで言うと、萩原さんの、ACIDは終わったのほうが、しっくりとくる。

いや、とっくに終わっているという声がWebのほうから聴こえてくる。うむ、同じ図式か。つまり、終わっているのだな。しかし、2フェーズコミットは終わったとしても、局所的にはACID特性が守られる必要はあるような。ちょっとわからなくなったから、ここは後に回して。

つまり、終わったと無くなった(亡くなったでもいいかも)は異なる。

終わったというのは、おそらく、あまり変化する必要がなくなったという意味なのだろう。変化する必要がなければ、あとは、どれだけ固くできるかな勝負になって、最終的にはROM化されて、家電のようにパッケージ化されて、スィッチひとつで操作できるようになるということだ。

でもまあ、電灯なんてとっくの昔に終わったのかと思ったら、ここ10年(もっと短いかな)あたりの電球式蛍光灯の動きなんて、全然終わってないから、数十年してまた始まることもあるだろうけど。

ま、なんにしても終わったようだ。

で、なんだろう。

局所化されたACID特性に頼った、ゆるい分散システム(各システムの間は、キューのようなもので遅延OKで繋ぐ)アーキテクチャというのは、別にそれほど新しいとは思わないから、もっと異なる何かなのか、それとも、そのようなアーキテクチャがたとえば2フェーズコミットのように、データベースに組み込まれることになるのか(現在の洗練程度ではきっとまだまだだね、青少年というところなのだろうか)。

あるいは、全然、別の考え方が必要となるのか。いや、ならないだろ。とここについては考える。というのは、各システムについては整合性が取れている必要はあるからだ。したがって、局所的にはトランザクションは相変わらず必要と考える。

でも待て。リレーションシップがあるから、AとCが必要ということはないだろうか? 可変なものが1つにまとまっていたら、別段、好き勝手に更新しても良いのかも。

すると、更新の単位は1つのサブシステムと、その時点で実行されているトランザクションということになる。

なんか、そういう概念もあったな。スナップショットか。それが単なるバックアップ用語ではなく、リアルタイムでばかばか取られる。タイムマシンの数秒おきバージョン。で、トランザクション単位に巻き戻しができる。

メモリーがばかみたいにたくさんあって、SSDでもなんでも良いが、IOが意味なく高速なら、そういうこともありうるかも知れない。

とか、取り留めなく考えてみたり。

_ 巻き戻しではなかったりして

巻き戻しってのが古びた考え方なのかも。

どんどん上書き。

最終的に合計値が合えばOKみたいな。

補償トランザクションが自動的にがんがん生成されるとか。

でも待て、すべてが加算というわけではない。というか、あるフラグが立っていれば加算、そうでなければ減算というような制御をするのがまずいということかも。

そのときの状態は関係なく常に貸し方、借り方へ付けていく、そういうデータベースであれば、常に補償が利く。

江戸時代へ逆戻りなのか? そうとは言えない。行をなめて加算する速度が、加算結果を記録するより速ければ問題ない。

で、マスターは元々衝突するわけもなく、というか、ふつうにACID型トランザクションで良いから、基本はリードオンリーだし。

というようなデータベースを前提とすれば、どう変われるか?


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|

ジェズイットを見習え