昼ご飯

Alanの語りを午前中からお昼ご飯の終わるころまで聞いてしまった。以前聞いたときは冗談かと思っていたが、彼は「大学院生のときに、招待された場合以外には講演もしないし論文も書かない」と決めたところ、今に至るまでそれでうまく来ている、と言うのである。これはマジなのだよな、結局。うーむ。

構文木の操作

なんだか昔々の話に戻ったような気もするが、いまさらながらSqueak構文木(ParseNode)をいじる。一つは、Tileから文字列表現を経由することなく一気にParseNodeを生成するというもので、もう一つは、Etoysのタイルで四則演算などを使ったときに、演算の優先順位が常に右結合優先になっていたことの修正である。

前者は、ちゃんとReturnNodeを作っておかないと、code generatorが生成したコードがスタックのバランスをちゃんとキープしなくなるため、ありとあらゆる意味不明なエラーが起こりまくるという問題にしばし悩まされたものの、正しい構文木から生成されたバイトコードを眺め、primitiveを書き間違えたときの症状に似ていることを思いだして解決。後者は、EtoysのTileから作られる式が常に右結合になっていて、それはほとんど直線的であるということから、ParseNodeの要素を操作する演算子順位文法のドライバを30行ほどで書いて、それに適切な木を食わせて変換することによって解決。

後者の問題は、Etoysをある程度使った人が常に驚かされる問題だったので、少なくともOLPCではそういうことはなくなるはずである。

MLBのシーズン

メジャーリーグが始まり、俺も人並み程度に興味を持っている今日このごろです。

長老Madduxが勝利投手になっているのを見てMLB.comで記録をチェックしたり。大リーグの最多勝投手はいわずと知れたCy Youngですが、さて、大リーグ最多敗投手は誰でしょう?

 答えは、Cy Youngだったのですね。ちょっと得した気になる小情報でした、俺にとっては。

Madduxも97年にBravesプレーオフの試合を見に行ったころなどは、「絶対的なエース」扱いだったわけですが、記録を見ると本当に勝ちまくりなのはいくつかのシーズンだけで、生涯勝率になるとそれほどでもないというのもちょっとした驚きではあります。(Randy Johnsonのほうがよっぽど良い)

なぜかBitBlt

阿部さんがアイコンを作ってくれた、本当は透明に白い線がアンチエイリアシングされて描かれていればなお良かったのだが、黒字に白のアンチエイリアシングされたアイコンになってしまっていたわけである。(しかも、よく見たら一部のものは8bit depthで、その他のものが32bit depthになっていたりするではないか。阿部さんリハビリ中ですな。)

以前TrueTypeレンダリングのことをやっていたときからこの手の変換は必要だったわけだが、今日になって、画期的な方法を思いついたのである。

そのコードはずばりこんな感じ。

| icon g h orig w height |
icon := self iconAt: aString.
orig := Form new hackBits: icon bits.
height := icon width * icon height.

g := Form extent: icon extent depth: 32.
h := Form new hackBits: g bits.

w := WarpBlt current toForm: h.
w sourceForm: orig.
w cellSize: 1.
w copyQuad: {1@0. 1@height. 2@height. 2@0} toRect: (0@0 corner: 4@height).
w combinationRule: Form over.
ret := (Form extent: icon extent depth: 32) fillColor: aColor.
g displayOn: ret at: 0 rule: 34.
^ ret.

TrueTypeの場合、キャッシュしたグリフを8ビットグレイスケールで持っておいても、横に4倍に引き伸ばした後で、rgbMul:with:を使えば良いのかもしれない。速度が向上するかどうかは不明だが、少なくともキャッシュは小さくできて、画像オペレーションのところは全部BitBltだけでできるわけなのだな。

Good Friday

今日は平日なのに朝から道もすいていて、オフィスもがらがら。「うーん、なんでだろう」と思っていたのだが、イースター前のGood Fridayだったのだな。今の勤務地はストックトレーディングをやっている人がいるオフィスの中なのだが、そういう人はみな休んでしまっているのである。

お昼のサービスも今日はボリュームダウン。そういえば、毎週金曜日はすしなのだが、ドイツ同様金曜日は魚を食べるべしという宗教的理由があるのかしらん。

某A君もGood Fridayのことは意識しておらず、「あー、だから奥さんが今朝肉を食べないようにしていたのか」と言っていた。やや、それはちょっとまずいのでは。