ももう終わり。何もしない間に終わってしまった...
最近ずっと金曜日は休んでる気がする。
無事? 内輪な面接終了。受験票の提示すら求められなかった。例によって例の如く GC がんばっても全体としては大して速くならないよねぇ、といじめられる。:-) プロジェクターは使えない、と書いてあったのでわざわざ OHP を用意していったのだが、 ちゃんとプロジェクターが置いてあった。どういうことだ。
ようやく時間を見にいく。10 時 20 分から、ということを知る。 9 時からじゃなくてよかった。
リロードしても side panel のページ数が全く変わらなくて悲しい。
面接 (ほとんど修論中間発表) の準備をしなければいけないのだが、全然やる気が おきない。困ったもんだ。
指導教官が今年から電通大に異動していて、さらに向こうにも学生用の部屋ができた、 ということで、さらに今こっちで使っている部屋を一個明け渡すことになったので、 引越しの準備を手伝う。調布は遠いし、さらに定期は買えないらしいんだけど、 本拠地は向こうに移ってしまうし、 今いる建物も耐震工事がそのうち始まるらしいが、どうしたものやら。
読破。毎回帰省すると壁に貼ってあるのが数ページくらい増えていて、 気になってきて、そういえば原書の方を読んだことがないぞ、と思ってついでに 買ったら The Lord of the Rings よりはるかに読みやすいので先に読んでしまった。
またもや pserver protocol を眺める。うーむ。
久しぶりに Ruby binding をいじって、compile は通るようにする。
が降ったのでお休み。というか、本当は本の配達を待っていたのだが、待っている間に 雨が降って来たという方が正しい。しかも、いい加減待てなくてでかけてから 一時間ほどで配達に来たらしい。うーむ。
山のように溜まっているメールの処理をしなければ。
lsh で負の bignum の左 shift はどうするべきなのだろう。そんな code は今は 存在しないはずだから適当に定義してしまえばいいのかなぁ。ash に比べると lsh は何と頭の痛い関数だろう。
へ戻ってくる。西明石の信号機の故障により電車が遅れていたらしく、 ダイヤが狂っていて、姫路-明石間は普通電車という変な新快速に乗ることになる。 新幹線はかなり空いていて快適。
lsh の負の値の左 shift をどうするべきなのか悩む。何も考えずに bignum support を 加えると、でっかい正の整数になってしまう。わざと overflow させて今までと 同じ値を返すようにするのが良いのだろうか。負の左 shift をまともに使おうと すると ash を使うべきだし、grep してみても most-positive-fixnum としての -1 の右 shift があるくらいで、他には負の値はみかけないので、そんなに悩むことも ないのだろうけど。
らしいので東京に戻るのは延期。
整数のかけ算の overflow をどうやって検出すれば良いのかわからずに 悩んでいると、python 2.2 では (1 << 30) * (1 >> 30) をちゃんと計算してくれることを 発見する。Python 2.1 では OverflowError: integer multiplication になる。 ただし、どちらも 1 << 31 は -2147483648 になるし、1 << 32 は 0 に なってしまう。
Source を眺めると、2.2 は double のかけ算もして、long のかけ算との差が 十分小さければ overflow していない、ということにしている。2.1 の方は 何 bit のかけ算か、ということでごにょごにょやっている。でも、 2.2 の comment によると以前の方法はうまく動かなかった、と言っているし、 どうしたものだろう。
gmp の速度がどれくらいなのかは知らないけど、XEmacs の bignum では普通の十分小さい正の整数の かけ算以外は gmp を使って計算させてしまう方が楽でいいなぁ。 xemacs-packages の下の lisp を grep してみたけど、でっかいかけ算をしている ところはほとんど無いし。そもそも、Emacs Lisp でかけ算をすることって あんまり多くないような気がする。
ServerWatch の一部になっていることを発見。
突然 build できなくなって驚く。原因は、+ を bignum 対応させたのに、 logand を bignum 対応させていなかったので、cl.el が current-time を 元に足し算をして、その結果に logand をしているところに bignum が わたってしまって止まっていたのを発見する。
Integer は fixnum しかないことを仮定して毎回 logand をとることを さぼったばっかりに、bignum の足し算を何度もすることになる可能性がある。 Bignum object は fixnum と違って GC の対象となることを考慮すると、 毎回 logand を取って fixnum の範囲に抑えていた方が得なような気がするけど、 どうなんだろう。ここはちょっとした計算しかしていないので 大勢にはまったく影響しないけど。
英語が難しいので少しずつ読み進めていたのだが、ようやく読破。
随分長い間放置していたが、この前 James さんから進捗状況はどう? という メールをもらったので、久々に覗いてみる。libgmp3-dev を install していなくて bignum support 付きで compile できない。仕方がないので apt-get install を実行。
Build してみて、21.5.1 を base にしているので、-znocombreloc が必要だということに 気付き、rebuild. Source code をちょっと眺めて、 なぜ面倒になって途中で実装を止めてしまったかも思い出す。
ついでにしばらく前の cvs の HEAD も build してみる。ben-mule が入ってからの XEmacs を build するのは初めて。string-to-char-list が無くなっていて SKK が動かない。modeline も変わっていて変な感じ。常用する気はないので放置。
何となく aptitude の画面を見ていて libtar なるのものがあることを発見するが、 残念なことに license が original BSD license であることがわかる。GNU GPL の program からは使えない... (正確には link した binary を配布できない、と 言った方が良いのだろうけど)。
本を読んで過ごす。そろそろ休みモードから抜けなければ。
ふと気付くと、galeon のタイトルバーに日本語のタイトルが表示されるよう になっている。XEmacs でも同じ。LANG を C で X を起動しても出るように なったのかな。以前は表示されなかったような記憶があるのだけど。
今学期最後のレポート。あまりできの良くないレポートをでっちあげる。 あまり提出したくないが、単位を揃えるためには仕方がない。