著作一覧 |
あらためてクレメンスクラウスが振った蝙蝠(狙っているわけではなく、図書館で借りられたのがクラウス盤だったのだが、なんと見事な選択であることか)を聴いたり、クライバーが振った蝙蝠を観たりしていてつくづく感じることは、彼らの終末が実に優雅だということだ。
(ヴァルターの大地の歌で見事な厭世っぷりを示しているパツァークがアイゼンシュタインを唄っている)
HMVのは解説がおもしろい。なるほどなぁというか、クラウスって不思議な指揮者だな。
クラウス盤がドイツ零年に近い終末どまんなか(オーストリーだけど同じ帝国ということで一つに勘定してしまうわけだが)ならば、元のこうもりそのものが、1874年の作で、普墺戦争に敗けてハンガリーと2重帝国を作ってというようなぼろぼろの時期で、そこで作られた最も楽しいオペラがこうもりだ。
こうもりといっても日和見主義ではなく、仮装舞踏会に蝙蝠の扮装をしていって酔っ払って寝てしまったら、悪友が大広場にその恰好のまま捨ててきてしまい、結果として翌朝、衆人環視の中をこうもりのかっこうで家に歩いて帰ることになり、末代まで近所の子供からこうもり博士と呼ばれることになった男の、その張本人たる悪友に対する恐るべき復讐の物語だ。
序曲の途中ではじまる、きれいでリズミカルな曲が、劇の中では「これでお別れね……悲しい悲しい悲しいわ」という歌で、きれいにみんなで悲しみながら夜に待っているパーティーやら復讐やら罠やらを考えてウキウキ踊り出すという、まるでフランソワオゾンが映画でへたに真似ているような終末感で、最初歌詞を知らずにビデオで観ていて、お、あの曲だなと思いながら字幕を読んで振り付け観て意味がわかってびっくりした。メロディーと歌詞と行動が全然違うじゃん。というか、全編そんなのばっかりだから、観なければおもしろくないはずだが、一度、舞台を知ってしまえばCDを聴いていても楽しい。
で、そういう無内容な終末を100年過ごして、壊滅的にゼロ年を迎えたドイツ(オーストリー)だけど、優雅ということは良いものだ。
というわけで、優雅な終末を迎えるといいなぁと、こうもりを聴きながらしんみりと(もちろん足はワルツを踊っているのだが)思うくそ暑い夏の昼。
(ときどき、焼石に水の横に広がったダンスは夢に出てきて、猛烈にうなされるのだった)
DVDでジム・ジャームッシュのコーヒー&シガレットを観た。
以前見た時より印象が変わったのが、テスラコイルのやつで、姉妹だと思っていたが(役者はそうかも知れないが)、そうとも限らない様子。
物語を物語らない映画としては、やはり圧倒的におもしろい。が、最初うまくのれなくて2本目までは居心地が悪かった。映画館の暗闇とか予告編とか、スクリーンのサイズとかが一種の儀式の導入を果たすのだな、と理解する。家でビデオを観るというのは、その入眠(夢の世界に入るという意味で眠と表現した)儀式抜きとなるので、そこに欠落する何かがあるのだろう。
というわけで、オーティスレディングの煙草と珈琲を聴くことにする。
突然、NetBeansが起動しなくなった。
スプラッシュが表示されたままうんともすんとも言わない。
不思議に思って、スプラッシュをクリックしても何も変わらないが、タスクバーから選択したらスプラッシュの背後に隠れていたメッセージボックスが表示されてCan't Create JavaVMとか文句を垂れている。
おかしい。
とりあえず、コマンドプロンプトから実行してみる。
C:\>"C:\Program Files (x86)\NetBeans 7.0\bin\netbeans" C:\> …… netbeans.exe自体はローンチャなのだろう。 The launcher has determined that the parent process has a console and will reuse it for its own console output. Closing the console will result in termination of the running program. Use '--console suppress' to suppress console output. Use '--console new' to create a separate console window. Error occurred during initialization of VM Could not reserve enough space for object heap
なぜobject heap用のスペースが不足とか言い出したんだ?
で、突然起動しなくなった理由は、わからないが(覚えていないだけでプリファレンスからヒープの設定を変えたのかな? --しかしそれらしい設定箇所は無いし、たまたま実行時の最大サイズを覚えているとかかなぁ? IDEのプロファイル作成というのが怪しいかも)、とりあえずコマンドオプションを付けて起動してみる。
C:\>"C:\Program Files (x86)\NetBeans 7.0\bin\netbeans" -J-Xmx512m
無事、起動できた。-Jに続けてJVMへ与える引数を設定できるので最大ヒープサイズを512Mにしてみたのだった。
というわけで、JVM Creation Failedとか出るようだったら、ショートカットのリンク先に-J-Xmx(n)m を付けてみると起動できるようだ。
NetBeans IDE 7 Cookbook(Dantas, Rhawi) (NetBeans特化の本もあることにはあるようだ)これだと思うけどな。
デカルトの夢 (アスキー・海外ブックス)(デービス,フィリップ・J.)
デカルト自身の夢は3つから成り立つけど、この本の4ページで次のようにまとめてある。
『第三の夢はすべての学問が統一されることを、あらゆる学問、あらゆる知識がある単一の方法で解明できることを、意味しているという。』
で、それがCだというのは、結構、妥当な意見だと思う。
でもよく見たら、引用している感覚を通じて真理にたどり着こうとすることの困難さをCにたとえているような。
JAX-RSを実戦(ちょっと違うかも)投入したのだが、実に気に食わない点がある。
WEB-INF/libの下にばかみたくたくさんjarを入れざるを得ない点だ。少なくともRESTEASYのディストリビューションのlibをそのままコピーすると10MBを超える。おれは、未だにFD換算するくせが抜けないから、なんとFD8枚分で、Windows3.1並だぐへーとなってしまう。
では、利用しないjarは削除するかと思ってもどれがどうからんでいるのか、さっぱりわからない(全部展開してjavapで調べるとかする気はまったく起きないし)。
このjarの山が実に気持ちが悪い。で、ついmvnで自力構築しようとすると、えんえんとダウンロードが始まって、しかもクールではないURLのやつがあって404になってリトライしてみたりするし、最低だ。
配備先がインターネットにつながっているとか、USBメモリ(CD-ROMでも良いけど)でソフトウェアを配布できるとか、セキュリティ意識が低かった20世紀ならともかく、今の世の中、まっとうなエンタープライズサーバーでそんなことができるわけがない。
で、それは良いとして、困ったところがあって、以下のように解決したが、もっときれいな方法があれば知りたいところ。
やりたいことは、常にJSONで返すことだ。たとえば
@Path("/foobar") public class FooBarService { public static class FooBarData { } @GET @Path("item/{id}") @Produces("application/json") public FooBarData item(String id) { FooBarData data = new FooBarData(); ... return data; } }
みたいなやつ。
で、問題は、ここで、FooBarServiceには、既にWCF REST実装があって、
[DataContract] public class FooBar { [DataMember] public string Name { get; set; } [DataMember] public bool Brave { get; set; } }
がJSONとしてクライアントへ届けられているということだ。
すると、
@XmlRootElement(name = "FooBarData") public static class FooBarData { String name; Boolean brave; @XmlElement public String getName() { return name; } @XmlElement public Boolean isBrave() { return brave; } }
とは書けない。上のように書くと、
{ "name": "...", "brave": true }
みたいに、小文字プロパティ名になってしまうからだ。
JavaBean規格としては良いけれど、あいにく.NET方式プロパティ規約だから、これではだめだ。
そこで、XmlElementアノテーションのname属性の存在を知り、以下のように書く。
@XmlRootElement(name = "FooBarData") public static class FooBarData { String name; Boolean brave; @XmlElement(name = "Name") public String getName() { return name; } @XmlElement(name = "Brave") public Boolean isBrave() { return brave; } }
うまくいきそうだが、変化しない。Jettisonのバグ? 考慮不足? とか思うが、へたにバージョンを変えるとJAXBと整合性が取れなくなるのではないか、RESTEasyと整合性が取れなくなるのではないか、では最新のRESTEasyにしてみようか、おっと、こいつはJava6用でビルドしてあるが、あいにく実行環境はJava5なのだ。ではソースからビルドだ。そうかpom.xmlだったなぁ、3時間かけていろいろダウンロードが始まって、おっと、RESTEasyはJDK5コンパチかも知れないけど、依存しているやつがpom.xmlに1.6とターゲットを明記していやがる、これを1.5と直す勇気はおれにはないなぁ、しょうがないあきらめた。
と、ここでも、jarがばかすか入っていることがまったく悪い方向にしか働いていない。DRYはすばらしいし、車輪の再発明はくだらないかも知れないが、もう少し自分のところで開発して依存するjarを減らせよ、と不快になる(少なくともJDK5コンパチじゃないのには依存するなよというか)。
で、少し考えて、フィールド名はBean規約もへったくれもなくそのままプロパティ名となることに気付く。
@XmlRootElement(name = "FooBarData") public static class FooBarData { @XmlElement public String Name; @XmlElement public Boolean Brave; }
できたうえに、C#並にコードもコンパクトになった。ばっちりだ。
が、C#バージョンではメソッドだが、こっちは生フィールド(しかもpublic)なわけだ。(コンストラクタインジェクション+finalという方法は知っているが、世の中はそんなに固定的では無い)
しょせん値オブジェクト(しかもデータ転送専用)だから、むき出し生フィールドでいいじゃんと心を落ち着かせようとしても、やはり気分的にはいやなものだ(フックできるポイントが減るのはどうにも落ち着かない貧乏性なのだ)。
でも、まあ、こんな感じでルーズな結合ができるのは良いことではある。
というわけで、やはりJAX-RSも良いものだ。
JavaによるRESTfulシステム構築(Bill Burke)めんどうくさい(からみが複雑怪奇な)Webアプリケーションのデバッグをalertベースでやっていたら、F12を叩くんだという声が聴こえて来た。
で、叩いてみたら、えらくうまくできたデバッガが起動して結構、感動した。
・パーシャルHTMLを山ほど食ってDOMのお化けを作るタイプのWebアプリケーション
→デバッガ無しだとソースを表示しても何もわからないが、IE9のデバッガのHTMLビューはDOMの要素単位にきれいにノードが整理されて見える
・同じくパーシャルHTML(JS)単位に山ほどJavaScriptが振ってくる
→個々のJavaScriptは、ドロップダウンリストから定義元のファイル名を選択するとすぐ見える。
上記から、デバッグをうまく実行するには次のような手順となる。
・とりあえず、デバッグしたい箇所までアプリケーションを走らせる。
その時点でF12でデバッガを開く。
そこで、JavaScriptにブレークポイントをしかけたりしておく。
IEをとにかくバックキーを叩くなり、リフレッシュしまくるなりして最初のHTMLまで戻す(URIを叩けば済むのならそれでもOK)。そこまでのDOMやJavaScriptが消えてもデバッガはファイルと位置を覚えているのでブレークポイントは有効なまま。
・デバッガの「デバッグ開始」をクリック。
・必要なら、^Rでキャッシュリフレッシュを呼び出して「Y」を叩く(JavaScriptやCSSを修正した場合はやるべき。場合によってはブレークポイントがずれるがしょうがない)。
IEでアプリケーションを操作する。
ブレークポイントで止まる。
FreeTDS 最新の0.91.devのzipには、NMakefileというMS-WIN用のMakefileが入っている。
ビルド方法: nmake -f nmakefile PLATFORM=x64 CONFIGURATION=release
ただし、win32\config.hにHAVE_INTTYPES_Hが定義されているので、コメントアウトする必要がある。同じく、OpenSSLとリンクする場合には、#define HAVE_OPENSSL 1する必要がある(コメントアウトもされていない。完全に未定義状態)。
OpenSSLとリンクする場合は、NmakefileのMSLIBSに、
たださんが書いているけど、byflowで見かけておもしろそうだから読んだラ・プティット・ファデットが、おもしろそうなんてものではなく、本気でおもしろかったので、原作(原案なんだろうなと思っていたら、ラストと額縁を除けば、セリフも感情描写もほぼ忠実で、原作と呼ぶべきかなと考えなおした)の愛の妖精を読んだ。
ラ・プティット・ファデット La Petite Fadette(しかくの)
(マンガならではのとっつきやすさは疑いようもないし、これはこれで良い)
で、図書館に篠沢秀夫(おれの世代だとクイズダービーでおなじみの、やたらと人間臭いアカデミアン)訳があったので借りて読んだ。
すごくおもしろかった。
これは不思議だ。なぜこの年齢になって、この有名な文学史的な(つまりは死んだ)恋愛小説をおもしろがれるんだろう?
物語を簡単に紹介すると、舞台は18世紀、フランス大革命をはさんだ数年間(ただし、最初と最後にいっきに10年が流れる)、しかし革命とか政治は一切関係なしの田舎の2つの村のできごとだ。
そこそこ裕福な農民の家に双子が生まれる。双子はなかなかうまく育てられないというので両親は気を遣おうとはするけど、そこは農民根性というか節約と倹約が美徳なのでうまくいかない(食い物や服は別のものにしろとか言われていた)。うまくいかないが、二人はすくすく育ち、立派な少年になる。
しかし、不作と、長女と次女がばかすか子供を産むので少しばかり家計が傾いてくる。隣村に住む父親の友人が家畜係に小僧を一人貸さないか? と提案してきたので弟を送り込む。(この話には総体としての悪意や、小さな意地悪はあっても、主人公を小公子や小公女やフランダースの犬のような目に合わすような敵意は出てこない。したがって、弟は全然不幸ではない)
ここから本題が始まる。兄貴は弟の不在に悩み苦しむ。しかし弟は一人前の男として遇されているし、働くことはおもしろいので、まったくハッピー。むしろ兄貴が自分の不在を悲しんでいるのを知っているので、本当は寄宿先の友人とかと遊びたくても、我慢して日曜日には家に帰る生活をしている。
(実はこのあたりはそれほど読んでいておもしろくない。テンポが良いのでつまらなくはないし、村の生活や人々の細かな心理描写が興味深いので読み進めているだけのことだ)
というような生活が続いて、ついに兄貴は同情を惹こうと家出してしまう(ここの描写は、子供(弟)が成長したのにもかかわらず、相変わらずママゴトの相手をしてやろうとして疎まれるジジババとか父親とか(兄貴側)を想像してしまうのだが、そう考えると説得力がある。また弟が成長の機会を得たのに兄貴がうまくいかないことも病弱とか母親の溺愛とかでうまく説明されている。全体、18世紀文学なので心理描写の細かさがミソなのだろう)。
当然のように母親はうろたえ、弟はなんか理不尽だとは気付きながらも自分の不在が原因で正直すまんかったという後悔にかられながら、兄貴を探しに村中を行ったり来たりする。
そこに女主人公のファデットが登場してくる。村の境に祖母と脚が悪い弟の3人で暮らしているのだが、貧乏でいつも小汚く痩せて小さくて、コオロギとか呼ばれている。兄貴の居場所を教えてやると言うのだ。で、さんざん勿体を付けた挙句、教えてやる。
弟はなぜ、ファデットが自分が兄貴を探しているのかわかるのか? やはり噂通りの魔女なのか? とか少しびびるが、よくよく考えてみれば自分が兄貴を探して村の人に訊いたりしているのを見かけた可能性はあるし……とか納得する。
このあたりから、この物語の真のおもしろさが始まる。主人公たちはほぼすべて、何か理不尽なことや不思議があると、最初は素直にびびったり驚いたりするのだが、すぐに理由を考えて、考え付けば納得し、考え付かなければ取りあえず疑問として抱えておく(大抵は、後で解決される)。この態度が実にすがすがしくて、読んでいて気持ちが良いのだ。もっとも最後の手段として、それは神様の御業ということにしてしまうこともあるが、したがって悪いはずがあり得ない(なぜなら神様の御業なのだから)と、実に良く解釈するのだが、その導き方も悪いものではない。
たとえば、弟が夜、はじめてファデットと腹をわって話すシーンでは、
どの言い分にも反論する余地はなかった。
というあたりが転機となる。反論する余地がなければ自分のそれまでの考えが間違っていたのだから、あらためる、というわけだ。
かくして、弟はファデットに恋をし、一方ファデットは弟の助言に納得して外面を整えるようになる、このあたりの二人のやり取りや、周りの連中(特におもしろいのは、弟の寄宿先の同じ年の末息子との付き合いの始まりとか)のありようが、またおもしろい。おもしろいのは、すべてが理詰めで進むからで、これを物語を支配する全能の神と呼ぶのは簡単なことだが、この全能の神は力学の法則を無視しないわけだ。
弟とファデットの結婚話に家族は反対するのだが(ファデットには悪い噂がたくさんあるからで、一つには母親が外に男を作って家出したという事実が尾をひいている)、息子をだましているのではないかという疑念が解消した後は、素行調査を行って噂が根も葉もないことだと確認できた時点でぱっと考えを変える。で、ファデットに親父のほうから結婚話を切り出すのだが、ファデットはファデットで力関係を考えて、簡単にOKしないのだが、そこで親父いわく「わしや家のものに、まだ何かこだわってるようだな。この年をした男にあやまれって言うのはむりだよ。約束をするから、それで満足しておくれ。」……悪くない。
が、兄貴はおさまらない。で、ついにファデットが兄貴をカウンセリングというかコーチングすることになる。いや、まったくもって20世紀的な意味でのカウンセリングだな。が、患者も悪くない。
シルヴィネは何も答えなかった。そして、ファデットがなおも容赦なく批判するのを、黙って聞いていた。結局ファデットの言うとおりだと思い、言いすぎだと思ったのはただひとうの点だった。
と、理詰めで説得される。
つまり、ファデットの能力は、論点を整理してそれに対する評価を順序立てて説ける点にある。作者はそれをもって、頭の良さと呼んでいるわけだ。物語として重要なのは、説得される側も、その筋道の立て方と理屈を受け止めていることだ。このことが興味深いのは、この本が実際に18世紀当時売れて、その後も名作として読まれ続けていることだ。
つまり、この本が読まれているということが意味するのは、理屈を述べる少女(しかも理屈を述べるだけではなく、問題点を解決するための実行力がえらく伴っている)とそれに説得されて、しかもその論理の立て方に魅了される少年という構図を、読者が当然のように受け入れているということだ。――いや、それはそうだろうと思う。これは読書人の理想世界に近いものがありそうだ。だって、これを現代の日本に当てはめたら、どう考えてもファデットの役回りは、理屈っぽい文化系メガネっ子(クラスのちゃらい女子たちからガリベンとか悪口を言われているわけだろうな)だろう。その現代に通じる普遍的な感覚が、18世紀の農村と農民の生活という興味深い舞台を背景に展開されるのだから、これがおもしろくないわけがない。
というわけで、この作品を引っ張り出してきたしかくのというマンガ作家は実に慧眼と言わざるを得ない。
いや、実におもしろかった。
ピーターラビットのお父さんはマグレガーさんに捕まってシチューになった。
Peter Rabbit Naturally Better Classic Gift Set(Potter, Beatrix)
サムが作るうさぎのシチューはそれなりにうまそうだ(ゴラムは生で食いたかったようだが)。
ロード・オブ・ザ・リング トリロジーBOXセット [Blu-ray](イライジャ・ウッド)
というわけで、うさぎはおいしいらしい。
しかし子供の頃、親がステーキを作ってくれたが、なんか血の甘い味がしてこれは好みではないと思ったこともあって、それからまったく口にしないまま数十年の歳月が流れた。
こないだ、麻布のニッシンに行ったら、冷凍のうさぎが売っていて、1羽(頭と内臓、皮は取り除いてある。もしかしたら、毛皮を取った後の廃物利用かも)だいたい1500円くらいだったので、子供とこれは食ってみたいなぁという話になった。子供の頃、好みではないと思ったのは偏見のせいかも知れないし。
で、日曜にニッシンで1羽買ってきた。とりあえず冷蔵庫に入れて解凍する。
と、包装がいい加減なのか血が垂れてきて(そんなにべたつかない、割と薄目のやつ)、厄介なことになったが、まあ、それはおいておくことにする。
で、今日、腿をオーヴンで炙り焼き、それ以外の部分をシチューにしてみた。シチューは一晩シャトルシェフで寝かせるつもりなので、腿の炙り焼きだけを食ったのだった。
炙って驚いた(というか、調理しているときに気付いているのだが)のは、脂肪が全然ないことで、これは実にヘルシーな肉だな。(追記:仮に脂肪がつくとしても皮下脂肪だけなんじゃなかろうか。そのため、皮が剥かれていると脂肪が全然ないということかも)
でも脂肪がないということは、炙っても焦げ目がつかないということでもあって、良くわからないので250°Cで、12~3分炙ったのだが、火が通ったのかどうかまったくわからん。
で、取り出して、白い表面にナイフを入れて、どうも大丈夫そうだとなって、さて食おうとして、非常に厄介な食い物だということに気付く。
獣の肉だと考えると、肉の層が薄すぎるのだ。それに肉の繊維がしっかりしている(一方、ジューシーでへたに切ると汁気が出てしまう)ので、ナイフをうまく入れて肉だけを切り取るのが難しい。というわけで、鶏の腿を食べるように、手で骨を持って食い千切りながら食べることにした。
うーむ、独特の香りがあって、確かに記憶通りに甘いなぁ。でも、そんなに悪いものでもない。ただ、そのまま食べるには甘味が強過ぎてちょっと気持ちが悪い。で、クレイジーソルトを少しかけてみて、味を締まらせる。肉質はどちらかというと固め(締まっている)で、肉汁はジューシーなのは炙った時間のせいかも知れないが、それに甘味があるのだった。
うまいが、鶏のほうが(慣れているせいかも知れないが)好みだし(白身で脂肪が少ないので、牛や羊よりも鶏に近い……だから、1羽、2羽と数えるのかなぁ?)と、多分、当分は食べなくてもいいね、となった。
後になって考えると、そのまま炙り焼きにするのではなくて、バーベキューソースとか塗ってバーベキューにしたほうがうまいかも知れないな。ただ、その場合、香りがわからなくなってしまって、それこそ鶏で十分ということになってしまいそうな気もする。だからまあ基本は塩で食うで良かったのだが。
#子供の頃に食ったステーキというのにえらく疑問が湧いてきた。ステーキはステーキでもタルタルステーキ(挽き肉のやつ)で、かつ骨も砕いて含まれていたのではないか、という気がする。あの甘さは骨髄じゃないかなぁ。少なくとも、ステーキと呼べる大きさの一枚肉が取れる獣じゃないような。
シチューにしたうさぎだが、シチューはえらくおいしかった。
考えてみれば、それはそうだろうと思う。
というのは、腿を外した以外は、そのまま腰のあたりで2つに折って煮込んだからで、意図せずにガラのスープになっていたからだ。
シチュー(というかスープだな)にするのだから、それほど深くは考えず、オリーブ油少しをフライパンで熱して、そこに2つ折りにしたうさぎを入れて表面に焼き色つけて、水を入れた鍋に入れて火にかける。気分的に月桂樹の葉を1枚、パチンと叩いて入れた。
それから玉ねぎとジャガイモ、ニンジンを少しずつ時間差をつけて、この順でさっきのフライパンで炒めて、鍋に追加する。
ピーマンのヘタと種を取ったやつを千切って鍋に入れる。
一煮立ちしたところで、アクをすくおうと思ったら、全然アクが出ていないので驚いた。これは楽チンな食材だな。
で、後はひたすら煮る。キャベツが結構あったので、ピーターラビットの親父風ということにして、追加でぺりぺり千切りながら剥がして入れた。
で、後はひたすら煮込んだ。
実にうまい。というか、普通は調味をするのだが、温め直したらそのままで十二分に味が出ていてうまいので、そのまま食った。
脂はないし、塩も不要なので、これは本当にヘルシーな食い物だ。
が、問題がある。
骨がやたらとあって、しかも固いから食べにくいのだ。でっかな骨ならそこから肉を剥がせば良いのだが、小骨が多いのでそうはいかない。出しを取ったと思って捨てれば良いのかもしれないが、肉はうまいので(煮たら、焼いたのと違って妙な甘さはほとんど消えていて(ピーマンと月桂樹の香りのせいだな)、えらくおいしかった)、曹操のひそみにならって兎肋とか口に出す羽目になる。というわけで、骨を捨てる小鉢が必要。
微妙だなぁ。味は良いが、面倒過ぎる。
そこで、中学生の頃、親に「マクドナルドの肉は猫の肉なんだってさ」みたいな都市伝説を得意気に吹聴したら、「猫の肉なんて効率の悪いものを使うはずあり得ないだろ」と一蹴されたのを思い出した。言われてみれば、猫を風呂に入れたらぺっしゃんこになるわけで、確かに肉を取るのは至難の業だろうし、それ以前に肉がほとんど無い。それをどうにか集めてハンバーグにするくらいなら、牛を使ったほうが遥かに効率的だ。というわけで、親の常識的な感覚に感心したのだが(これもまたオッカムの剃刀であるな)、うさぎがそれほど食われないのは、この面倒くささにあるのだろう。
なんか間違ってサークルを作ってしまった。
で、そこに何人か入れてみたりして。
で、サークルを右クリックしたら削除があったので、選択した。
ら、思いもよらぬ動きをして消えて行った。
これはおもしろいなぁ。
SqlServer Configuration Managerで(あるいはサービスの設定で)SQL Server Browserを実行しておかないとclosed connectionエラーとなる。
(Visual Studioのサーバーマネージャはこの状態でも(多分、名前付きパイプか共有メモリを利用するのだろう)接続できるので、最初、原因がわからなかった)
TinyTDSを利用する場合は、SQL ServerとSQL Server Browserの両方を実行しておく必要がある。
znzさんのセッション
Rubyの正規表現では\A \zと^ $の使い分けが必要。
あるパターンが文字列内のいずれかの行とマッチなら、/^パターン$/。
ある文字列全体がパターンとマッチなら、/\Aパターン\z/ 。
小崎さんのセッション
GVLとして利用しているオブジェクトがメモリ1にあり、それがCPU1とCPU2でCPU1に近い場合、それぞれのCPUから同時にロックしようとすると、距離が近いCPU1が常に勝つ。
物理的な距離の話にしびれまくる。
Huang
エンタープライジャー歓喜のグッドプラクティス強制機。
デメテル則の修正のあたりを見ていると、ちょっと表面的に過ぎるかなぁとも感じるけどCheckStyleほど皮相的でもないようだ。
というか実装は参考になりそう。
3日目は、安藤さんのparse.yの遊び方から。
最初のうちはともかく、ennnnnnnndには、そう来るか!というわけで受けまくる。というか、中田さんがelispでどうにかしようとちょっと乗り気っぽかったのが面白かった。
(が、nの数を数えるよりもendを書く方が楽チンなわな)
追記 http://redmine.ruby-lang.org/issues/5054
で、コピペで簡単に(bisonのこととか知らなくても)使えるよ、というのは、いろいろ良いプレゼンだなと感じ入った。さすが(元)カリスマだな。
で、ucnvさんのGlitch。これはどこまでまじめなのかどこまで本気なのかさっぱりわからないが、でも、おもしろかった。というか、変換クラスは便利そうだな。
で、そらさんの復讐戦を見たりして昼飯。
とやっているうちに、2日目に見てえらく気に入ったJRubyのブロックを無名じゃなくて匿名インナークラスの代わりに使えるやつの実装方法に思い当たったので、rjbを修正してみる。
途中、桑田さんのプレゼンがおもしろいので手が止まる。ワンライナーが重要なんじゃないよ、と念を押しまくっていたのが印象的だった。が、わかるような気はする。LINQをしばらく使うと、LINQ構文を使うよりもメソッドチェインで記述するほうが読むのも書くのもはるかに良いという感覚を持つに至ったのだが、おそらく同根のように思う。が、最初のあたりを聞き逃しているような気もするので、資料が公開されたらじっくりと味わおう。
どうにかできて、エノボさんに見せたら、implというのも見せられて、そっちも実装した(method_missingの第1引数がSymbolだというのをころりと忘れて、StringValueCStrに食わせてSEGVさせまくってびびった)。
その過程で、rb_class_inherited(super, klass)をなぜか、klass#inherited?(super)の意味と勘違いしてマクロを組んでいるバグを見つけてあせる。rb_funcall(super, rb_intern(">="), 1, klass)の形式に修正する。
で、結局、implも実装できた。
test/test.rbのtest_anoninterfaceとtest_impl。
とかやっているうちに、まつもとさんとそらさんの掛け合い漫才を含むキーノートが終わって、無事閉幕。
みなさん、お疲れ様でした。
本関係では、2日目におおと思って手に取ったが価格をみてとりあえず戻したAlloyの本が、酒井さんと遠藤さんたちによるものと酒井さんから教えられる。が、とりあえず、手を出さなかった。
抽象によるソフトウェア設計−Alloyではじめる形式手法−(Daniel Jackson)
(が、興味は尽きることはない)
ささださんのところで、asakusa.rbのようなRubyKaigiの4日目。
なんかhsbtさんから、やらないか? と訊かれたのでやるやる答えたが、考えてみたらDELLのノートPCが壊れたので、手元に持ち運び可能なWindowsマシンが無いのであった。
しょうがないので、壊れたPCから回収したHDDを入れようとトルクスドライバーをアマゾンに発注していたのがちょうど届いていたし、RubyKaigiから帰ってすぐに、
・MBP17(2007モデル)のHDD換装(200GなのでiTunesですでにいっぱいいっぱいになっている)
・タイムマシンから復元(何時間かかるのか)
・ブートキャンプと一瞬考えたが2007年モデルで64ビットWindows入れるのはなんかやたらと面倒だったのを思い出したので、VirtualBoxの導入
・VirtualBoxにWindows Server 2008R2SP1をインストール
・Windows Server 2008R2SP1に、SQL Server 2008R2をインストール
・能楽堂をインストール
・tiny_tdsの設定をしておきたいのでRailsのちょろいアプリケーションを用意
を始めたが、結局、最後のステップの直前で力尽きてしまった。
ベッセル(VESSEL) パワーグリップ トルクスドライバー TORX T6×80mm B-5400TX(-)
(アルミ一体型より前のMBPはこれを使わないと換装とか無理だと聞いて購入。実際、無ければたくさんの+ネジを外した時点であきらめることになっていたと思うとぞっとする)
で、あんまりデモとかちゃんとできなかった(上に、rackup -s にクラス名を入れるのだから大文字で始まるに決まっているのに、なぜか小文字でennouとか入れてエラーにしたり)が、ちょっとだけトーク。slideshare
が、そんなことより、吉川さん(@tsuyoshikawa)のトークがすばらしかった。
最初から普通じゃなかった。勤め先からコンテンツなどを持ち出せないからGmailを貸してくれとか言って、笹田さんのPCのブラウザを使って開始。
1つの白いページに1つの小さな言葉が英語で書かれている。
それをぼそぼそっと英語で読んで、それから英語たまに日本語で、その英語の言葉が意味するコンテキストを説明するというスタイル。
これはなんだろう?
これは詩だ。それも、「詩」という死んだメディアではない。なんだかわけがわからないものが表現されているすごい何かだ。というか、おれが知っている表現芸術でこれに一番近いのは、パティスミスとかトムバーレインとかのパフォーマンスだ。というか、ポエットリーディング(という言葉を思い出せずに教えてもらう)だ。というか、髪形からはデビューしたてのネコと2人でタクシーに乗ってライブへ向かってドライブするボブディランとかを想像したりしてみたり。
(で、前職で、詩の交換サイトをリリースしたら数日たっても7人しか来なかったというエピソードが、発表形態(ポエットリーディング)と実にうまくからんでくるうえに、UUからARPUという現職の話と前職の話を組み合わせるとARPUで稼ぐ詩の交換サイトで数日たっても7人という悪夢のような世界を見ることができたりして、深みがあるのなんのって、おもしろ過ぎる)
というわけで異様に楽しめたのだった。
卜部さんの終わることはよいことだという感覚についてを読んで、結構同感して(だって終わらなきゃつまらないし)、でついでにArchiveを見たら全部既読ではあるけれど、なんとなく最初のやつを読んで考えた。
いや、これは穴があって、ではPyGTKはどうやって作ったのかとか、そういう僕作る人、君使う人みたいな区分けって、おかしかないかとか思うのだが、ただ趣旨はわからなくはない。
面倒なからまれかたされるのがイヤだからなのか知らないけど、Pythonで良くね? とか書いているが、おれはPython勉強中だから割と似たような立ち位置のRubyで置き換えて考えてみれば、確かにCを使う必要は全然なくて、DLを使えば基本、Cで書けるプログラムならなんでも書けるわけだから、確かにそれRubyで良くね? とは言える。
エキスパートPythonプログラミング(Tarek Ziade)
(永遠に勉強中の本)
言えるのだが、DLはCより大変なのだった。で、面倒なのでおれはDLを使うよりはCで書く方が楽だとは思うけど、大変かどうかよりも、言語に対する愛でプログラミングする人たちもいるのだから、そういう人たちは、Rubyでシステムプログラミングしてみると良いと思う。
(というか、DLでシステムコールもできない人間がCでプログラムを書くなということは言えていると思う)
以前はTortoiseSVNで、普通にRubyForgeからチェックアウトしたりコミットできていたのだが、いつからか全然できなくなってしまった。そんなコマンドサポートしていないエラーとかになるのだ。
でも、Linuxマシンからは普通にできるのでそれはそれでOKで済ませていた。
が、やはり出先でノートPCからコミットできないのは不便だなぁと思い返して、OSXマシンにid_rsa*をコピーしてsvnするとエラーとなった。0600じゃないキーファイルはキーファイルとは認めないよエラーだ。
ああ、確かに黙ってコピーしたらそうなるよな、とパーミッションを直してコミットしたりしてふと気づく。もしかして、Windowsマシンの鍵を更新してなかったからかな。
で、以下の手順で設定した。
puttygen.exeを実行する。Loadボタンをクリックして、Unixマシン(SMBで繋げているとして)の~/.ssh/id_rsa(拡張子が付いていないプライベートキーのほう)を指定して読み込む。ファイルを開くダイアログは最初拡張子ppkでフィルタリングしているので*.*を選択してから見えるようにしてから行う。
すると、パスフレーズの入力が求められるので入れてやる。
ロードが完了したら、「Save Private Key」をクリックして、id_rsa.ppk(名前はなんでも良いけど)として保存する。これがPuTTY形式といって、普通のid_rsaとは違う形式らしい。
次に、TortoiseSVNのSettings-Network-SSH Clientにキーの位置を指定する。
既定でTortoisePlink.exeがフルパス名で入っているので、「 -C -i c:\ppkファイルへのパス\id_rsa.ppk」を追加する。-Cは圧縮有効オプション。-lオプションを使う例を見かけたが、Windowsのログオンユーザ名が利用される(のだと思うが、id_rsaに埋め込まれているものも同じなのでなんとも言えない)で、同じ名前を使っているのなら指定する必要はない。
で、チェックアウトするとパスフレーズ入力ダイアログが表示されて、無事完了。
会社からの帰り道、スズメが歩道で何かきらきらしたものを突いているのを見かけた。
何かと思ってみると、それは動いている。コガネムシだ。
スズメは突つきまわすと、2、3歩、ぴょこぴょこ後ずさりする。すると、コガネムシが動き出す。すると猛然と前進してまた突く。コガネムシが固まると、2、3歩ぴょこぴょこ後ずさりして、またコガネムシが動き出すと……を繰り返している。
食べるつもりかな? と思ったが、普通は米を食うはずだし、ミミズならともかく、甲虫を食べるとは思えない(でかいし)。
まるで、ネコが食べる前にいたぶるってやつみたいだなぁとしばらく見ている。
すると、コガネムシが隙を見つけたのか、いきなり飛んだ。するとスズメも飛び上がり、鋭く嘴から体当たり。コガネムシが落ちる。そこを着地してクチバシで突きまわす。コガネムシの動きが止まると、2、3歩ぴょこぴょこ後ずさり……また、これか。
そのうち、ついにコガネムシは死んだらしくぴくりともしなくなった。スズメは悠然とどこかへ飛んで行った。
あの、茶色い小さな丸い頭の鳥が、あんなに凶暴な側面を持つとは知らなかった。にしても、食べるでもなく、単におもちゃにしているだけだったわけだが、不思議な行動だなぁ。
(写真に撮ろうとしたのだが、もたもたしているうちに、飛んだり、元に戻って今度こそ、と思うとスリープしていて、それを解除して……とかやっているうちに取り損ねた)
IMAXで観るほうが良いだろうと(実際の撮影には使ってないとは思う)、モラージュ菖蒲町。
広告/予告篇の画質と、IMAX用の画質が全然違うのはいつみてもおもしろい。
映画はなんというか、出だしの俯瞰、竜に乗って飛ぶ、狭い坑道の高速移動あたりはともかくとして、まったく3Dにする意味も効果もないような画作りなので、いろいろスタッフの苦労がしのばれる。(たとえば、どう考えても、これはスタンドアローンアプリケーションだろうと、アーキテクチャからUIまで決めて、ほぼ完成しているのに、流行だからと突然HTML+CSS+(Ajaxが間に合わずにJavaApplet)とかで作らされると、こうなってしまうかもなぁという感じ。
それでも、IMAXはきれいだし、音も良いので、価格相応かどうかはともかく、悪いものではなかった。もっとも、物語は、ただただ大団円に向けて筋を通してまとめていくだけの一方通行なので、まったくおもしろくもなんともない。単なる映像体験であって、映画ではない。まあ、たまには悪くはないので、観ている間は空しいとしても、退屈はしなかった。
あとは、家族が買い物している間、ひまだから本屋に行って、現代語訳の梁塵秘抄を買って時間つぶしに読む。
なんか、現代語訳は汚らしくしかも古臭い日本語でがっかりする。が、元ネタが最高なので、つまらないわけではない(おれは後白河の大ファンなのだ)。それよりも、大岡信あたりも、なんかもったいつけた解釈をしているというような解説を読んで暗澹たる気分となる。
現代語訳をしている人がおれよりも年上なので、感覚が古くてあれだが、たとえば「女心の未練でしょうか~」という昭和の詩が、1000年後に古典として「恋人と別れた女性が自身の割り切れない思いをせつせつとして歌い上げた詩である。当時の女性の心境が良くわかる」と解説してあったらどう思う? という話だ。いや、それを書いたのはプロの作詞家で、そういう仮想体験を楽しんだりわが身に置き換えてしんみりしたりしたとしても、それを書いた本人のせつせつたる思いというのは大間違いだ、というのが編訳者の主張。それはそうだよな。
上野でABT。ロメオはマルセロゴメス、ジュリエットはジュリーケントで、どちら初見。ABTそのものが舞台では初見なのである意味当然。ベンボーリオのシムキンは、何度も観ているけど。
で、これが素晴らしかった。マクミランのオリジナルは以前コジョカルのロイヤルので観たはずだが、遥かに強い印象を受けた。
たとえば、キュピレットの舞踏会での場面で、なかなかお互いに気付かない、そのサスペンス感、キュピレットに受け入れられて踊るところでの、ティボルトとジュリエットとの人の入れ代わりのおもしろさ、まるで鸛門の会(コウが出てこないので当て字)。最初の街のシーンから細かくそれぞれが芸を披露して飽きることがない。
ゴメスは実にかっちりとしていて気持ちがよい。ジュリエットが飛び込んねそのまめリフトするところの滑らかさ。ケントはとても軽そうで、特にかんかんのうでの死体っぷりがすさまじい。
最近買ってよく聴いているセルのCDもそうだが、しっかりとした技術の上でのエンターテインメントというのは、これはこれで実に良いものだ。
継承関係にある2つのクラスが異なるjarに入っている場合、解決できないか、あるいは解決しないようにしているかのいずれかのようにみえる。
意図せぬ継承を弾くことが目的で後者としているのだとしたら、もっともなことだとは思うが、不便だなぁ。
なんとなく単に遅れているだけのような気もするが、JavaScriptというプログラミング言語の特性を理解せずに使っているとしか考えられない例を見ていろいろ考える。
あるシステムを作っているのだが、そこでJavaScriptで作られたフレームワークが使われていて、そのフレームワークそのものは実に巧妙で良いのだが、利用している側がどうもJavaのウルトラサブセットくらいのつもりで利用しているみたいでぎょっとするようなコードを見て、使い方を提案してみたり。
たとえば、次のようなコードがあって、びっくりする。
function SomCommonObject(_caller) { this.caller = _caller; FrameworkObject.registerObject(this); } SomeCommonObject.prototype.onFoobar = function() { if (this.caller.id == 'a') { ... } else if (this.caller.id == 'b') { ... } else ... } else { alert('呼び出し元のIDと処理を登録してください!!'); } } SomeCommonObject.prototype.onBaz = function() { ...
onFoobarという関数はフレームワーク関数でハリウッド原則にしたがっているのだが、利用している側が何か大きく勘違いしている。
いや、これでは共通のオブジェクトでハリウッドメソッドを使っている意味がほとんどないではないか。確かにonFoobar以外のonBaz以降のハリウッドメソッドはa~zの誰がnewしようと共通で使えるのだから、このオブジェクトを共通で利用するという設計は正しい。
しかしonFoobarで誰が作ったかによってそれぞれの処理を記述しているのは何が何でも異様だ。共通で使うものを使うもの全員が内部に処理を記述するなんておかしいだろ(ソースコード管理的な意味ですら)。呼び出し側固有の処理は、呼び出し側が呼び出し側に定義すべきじゃん。
だって、継承できないし……とか、いや、それはそういうくだらないことはしなくても良いように巧妙にJavaScriptが設計されているのだから、JavaScriptの言語の機能を利用すれば良い。
JavaScriptのオブジェクトのホットスポットはどう記述すべきだろうか?
FrameworkObject.registerObjectの中の人から呼ばれるかどうかで変わるが、以下のようにするのが良いと思う。
function CallerA() { this.common = new SomCommonObject(function () { // onFoobarの処理 }); ... } //---------- function SomeCommonObject(onfoobar) { if (onfoobar != null) { this.onFoobar = onfoobar; } FrameworkObject.registerObject(this); }
もし、そこら中でSomeCommonObjectをnewしまくるのなら、コンストラクタの引数に直接記述せずに以下のようにしても良い。
function CallerA() { this.commonOnFoobar = function() { ... // インスタンス毎に変えるものがあるならば。無ければprototypeに定義すれば良い。 } } CallerA.prototype.foo = function() { var common = new SomeCommonObject(this.commonOnFoobar); ... }
そこで、jQueryのドキュメントで、要素のon属性にスクリプト片を書くのではなく、 $(document).readyの中でDOMの要素オブジェクトに直接記述するという方法を推奨している理由の中には、もしかすると、関数をファーストクラスオブジェクトとして記述するという良い習慣を身に着けさせようという意図もあるのかな、と考えてみたり(多分、実際に「We have a clean separation of structure (HTML) and behavior (JS)」ということだけなんだろうけど)。
以下余談と自戒:自分でJavaScriptという名前についだまされてしまうのは、Java流のばかみたいに長い変数名やら関数名やら属性名やらをつい定義してしまうこと。そのため、おそろしいほどの未定義エラーに見舞われる。動的言語はCの良き慣習にしたがうのが鉄則だな。lenを書き間違えたことは一度たりともないが、lengthをlegnthにしてしまうことは100回書けば2~3回はあるわけだhし(AruwakeDashiというのも、単にAruにすべきだ)。
今年はパスしようかなぁとか思っていたら、それを察知したらしくJust MyShopがポイントをぽこんと付けてきた。
で、ATOK 2011 for MACを買ったわけだが、Vista以降のIMEにはうんざりしているので(7のはVistaやOffice 2010のやつみたいにはひどくないが、それでもなんかこちらの期待とは異なる動作をすることがある)、変換学習や辞書が同期できるのだから、WindowsにもATOKを入れれば良かったと後から後悔した。
ATOK 2011 for Mac + Windows 通常版(-)
(これのAA版はライセンス的に問題なさそうだが、MAC用に以前のバージョンの時に買った辞書(ロングマンや広辞苑)をWindowsで使うことは可能なのかがいまいちわからないな。あと、ATOK Syncアドバンスの絵にAndroidが出ていないのだが、もしシェアできるのなら、Syncしたい(Androidで日記を書くのは変換がほとんど効かないのでえらく苦痛(それだけじゃなくて、カーソル移動がほとんど異常というのも困った点だが)。携帯のほうが日本語文章書きという点からは全然上だった)。)
ジェズイットを見習え |
_ きしだ [NetBeansのJVMオプションは、NETBEANS_HOME/etc/netbeans.confのnetbean..]
_ arton [どうもありがとう! 昨日一応確認したつもりだったけど、たくさんオプションがあるので-Xmsを見逃していました。なんと..]
_ arton [上の嘘。-Xss2m -Xms32m でmxは指定されていませんでした(で、指定した)。なぜ、急に起動できなくなった..]