«前の日(08-28) 最新 次の日(08-30)» 追記

Matzにっき


2003年08月29日

_ [Ruby]local jumpの改善

ふと思い立ってeval.cの大改造。変更した点は以下のとおり

  • ブロック付きメソッド呼び出しのたびにBLOCKTAGオブジェクトを生成していたのを止めた
  • ブロック内からのreturnやbreakは妙なことをして伝達していたが、単純化
  • POP_TAGはreturn値をコピーしていたが、止めた。returnやbreakが直接設定する
  • ブロックのorphan判定を単純化。scopeがNOSTACKかどうかだけで判断する

試行錯誤でコーディングしているので、ここを直すとあちらが動かずなどということを繰り返しているうちに、 次第に全体像が頭に入ってきて、あるべき姿を理解できるようになった。こういうコーディングしているから、 いつまでたってもバグがなくならないんだろうなあ。

で、改造結果だが、構造はやや単純になったが、別に速くなったわけではないと思う。 しかし、なんだか達成感がある。

私がRubyをハックしているかたわらで、妻は手芸にいそしんでいた。夜中の3時まで。 お互いに夜更かしが過ぎます。


2004年08月29日

_ よくある名前

また、PHSをなくした。今度はうちのどこかにあるに違いないと思って、電話をかけてみた。 ベルが鳴るからどこにあるのか分かるはず。

「ぷるるる....がちゃ」。「え?」

つながった。

相手: はい?
私: あの...すいません....(当惑している)
相手: はい?
私: あの...まつ..もと..さんでいらっしゃいます..か?(まだ当惑している)
相手: はい、そうです
私: !?

私: えーっと、...あの...。
相手: そちらはどなたですか(不機嫌)。
私: あの...、わたしもまつもとなんですが...。
相手: はあ。
私: そちらは、070-XXXX-XXXXですか。
相手: いいえ、090-XXXX-XXXXですよ(怒)。
私: あ、すいません、間違えましたっ。

間違えた先も、まつもとさんであった。これだからよくある名前は困る

_ [教会]松江

家族とともに松江に出席。集会終了後、監査。


2005年08月29日

_ U20プログラミングコンテスト最終審査会

19日の審査会で10件まで絞りこんだものを、 開発者のプレゼンによって最終決定するための最終審査会。 北は北海道から南は沖縄まで全国から若い開発者が集まった。

情報化月間での最終発表まで内容は発表できないが、 なかなかの力作ぞろいであった。

高校生なのにプレゼンが上手い子とか、 自分が高校生の時どうだったかということを考えると末恐ろしい気がする。 将来が楽しみな若者たちだ。

言語処理系を自作する高校生とか、1週間でゲームを完成させちゃう大学生とか。 「社会をハックする構想」を披露する高校生もいたな。

で、最終審査の待ち時間に私から参加者対象の講演を行う。 聴衆はわずか20名くらいという贅沢な講演であった。 テーマは「ハッカーになろう/ハッカーサバイバルガイド」。 ひさびさの完全新作である。

Eric Raymondの「How To Become A Hacker」(邦訳)に似ているようで似ていない。

_ Mrs.Martin

宍道湖岸の国道9号線沿いには「Mrs.Martin」という名前の喫茶店がある。 白い壁のかわいらしい喫茶店だ。今日も空港からの帰り道にみかけた。

が、マーチンと聞くと「こいつにちょっとジャレつかれただけで私の顔はメチャメチャだ」とかいう事態が起きたり、 胃袋に隠したタンクから無色無臭の毒ガスを吐き出したりしそうで、なんとなく 足が遠のいている。

ドッギャアァァンッ。

でも、そんなこといわずに今度寄ってみようかな。

_ FEEDBRINGER

UIが変わった。フレームを使うようになったのは、(個人的にはフレームは嫌いだけど)我慢しよう。

ただ、少なくともLinux上のFirefoxでは

  • 「スペースキーでスクロール」以外のキーボードによるスクロール操作が効かない。 カーソルキー、PageUp/PageDownもHome/Endもだめ。 いちいちマウスカーソルを動かす必要があるためつらい。
  • 「閉じる」ボタンを押した後の画面の位置がかなり(下方に)ズレている。 連続してエントリを読めないのでつらい

という点が悪くなっている。残念だ。

そもそも「すべての未読フィードを広げた状態で表示する」設定で使えれば、こんな問題はないのだが、 FEEDBRINGERは「広げた状態で表示」した瞬間に既読フラグを立ててしまうので、 表示した後なんらかの事情(ブラウザが落ちた、間違ってタグを閉じた、など)で、 「本当はまだ読んでないのにフィードを失う」ケースがしばしばあるので安心して使えない。

この点、Bloglinesは具体的にどうしているのかはよくわからないが、 こういう事態は発生しなかった。 リロードしたり、タグを開き直しても古いフィードが残っていたからだ。

全体的な使い勝手はFEEDBRINGERの方が優れているので、改善されるといいなあ。

追記

今見たら、不満の第二点(ズレる)は直っていた。 あとはスクロールだ。あるいは賢い既読管理でもいいけど。


2006年08月29日

_ [Ruby] String embedding

ちょっと手が空いたので、ハックしようという気分が盛り上がる。

で、なにに手をつけようかと考えたのだが、 アイディア袋からSymbolをStringのサブクラスにする、というものを選ぼう ...と思ったのだが、 そのためにはStringの消費するメモリ消費量を削減する必要があると考えた。

で、以前akrさんがStructとembedded化した時の方針を参考に、 Stringも埋めこんだ。

しかし、

  • StringはStructと違い、大きさが頻繁に変更される
  • しかも使われている局面が極端に多い

ので、偉い苦労した。コンパイルが通っても、 ちょっと実行させるとすぐに落ちちゃうし。

_ 夜更かし

中学生は8月30日から2学期が始まるそうだ。

で、例によって宿題が終わらないといういかにもありそうな理由で 娘たちが夜更かしをしている。 割と早いうちから宿題をしてたみたいだが、 やはりやり残りや見落としがあったようだ。

次女は1時くらいには布団に入ったようだが、 後で聞いたら長女は4時まで起きてたのだそうだ。

自分の締切前の行動を考えると あまり強いことは言えないのだが、 中学生は4時まで起きてるべきではないのではないか。

いや、新聞を読んでから寝るのは人としてどうかと思う。 自分自身、しょっちゅうやってるんだけど。


2007年08月29日

_ 東京出張

午前中は松江で打ち合わせ。 午後からは楽天技術研究所のミーティング。

3時から夜までびっちりミーティングだぜ。

_ 「まわりが“天才だらけ”の中で、どう生き延びる?」 (“アンチ天才”のボトムズ流仕事術):NBonline(日経ビジネス オンライン)

テーマは「まわりが天才だらけ」と扇情的なものだが、 実際には「他人が天才と呼ぶ人」と「普通の人」の違いを示している点が 重要なのだと思う。

僕はそれまで、「自分には才能がない」と思っていたんです。ずっと後で分かったことなんですけど、それは才能のあるなしではなくて、別のものだったんです。

僕には「引き出し」がなかったんですね。

「天才だ!」と僕が思った人たちは、入社する前からアニメや漫画が好きで、アニメに対する素養があったのに、僕にはそういう引き出しがなかった。引き出しもなくて努力もしないで、いきなり彼らと伍そうと思った。入社してすぐに「あいつらは才能がある、俺にはない」という仕分けをしちゃって。それは大きな間違いで。

才能ではなく、引き出しの違いというのに気がつくのに、ずいぶんかかりました。

才能や能力があるかではなく、どれだけ蓄積したものがあるか というのがもっとも重要な点だと思う。ある意味、「時間をどう使うか決める」、 「モノになるまで継続する」ことができることこそ「才能」ではないか、と思う。

自分の引き出しはどこにあるか、知らないで「天才」と勝負するのは無謀すぎる。

自分の引き出しは、彼らと違ったんですよ。逆に、引き出しの違いが勝負ポイントになると思ったんです。

僕が好きなのはノンフィクションとか時代劇。そんなところの材料というのは、アニメの人はあまり持って来ないんです。だから僕は、なるべく漫画好き、アニメ好きが触れないようなところから持ってくる。

−−勝負ポイントを、自分の強いところに持ってくる、ということですね。

そうすると競争相手が少ないから、楽じゃないですか(笑)。

_ [OSS] google-sparsehash - Google Code

Googleがオープンソースソフトウェアとして公開しているsparsehash。 新BSDライセンス。

ハッシュテーブルは要素に対するオーバーヘッドは馬鹿にならないものがあるのだが、 こちらは1エントリあたりわずか2ビットしか消費しないのだそうだ。

いったいどうやっているのか。これもソースコードを読みたいソフトウェアである。

_ [言語] [r6rs-discuss] Unicode issues

先日のFactorからの指摘に対する反論。

UTF-16なのに定数アクセス

shouldとmustの取り違え。しかし、

a future version (of Larceny) will offer at least one variable-width representation that still provides O(1) access.

とあるのはどうやって実現するんだろう。実に興味深い。 というか、できるものならRubyでも真似したい。

大文字小文字変換(charがcharにマップしない)

同意。

collation

後方互換性。また、collationはUTS(Unicode Technical Standard)であり、 実装しなくてもUnicode互換性に問題ない。

locale

同上

_ 楽天ミーティングで学んだこと

今日はGfarmの話を聞いたり、その他いろいろなことを学んだが、 例によって具体的なことは書けないので、箇条書き。

  • CPU分散とストレージ分散を分けるのは、もしかして間違った切り分け?
  • ディスクは遅い。シークは更に遅い。シーケンシャルアクセスはまだマシ
  • LANならばディスクよりもネットの方が速い
  • つまり、高速化の鍵は適切な切り分け。遅いもの(ディスク上のデータのランダムアクセス)を避ける
  • 独力で分散ハッシュテーブルの概念そのものを思いつくってのは尋常じゃない
  • ソフトウェア開発は「ものづくり」のレベルに達してない
  • ソフトウェア開発者は製造業のことを知った方がよい

_ ソフトウェア開発者は製造業のことを知った方がよい

なんかこの件についての反応をいくつか見かけたのでここに追記しておく(実際に書いたのは9月)。

まず、ほとんどのソフトウェア開発者は製造業経験者の語る「もっと知った方がよい」という 言葉を何度も聞いたことがあると思う。が、それらは実際には役に立たないことが多い。

我々の作るものには物理的制約がないこと、 ソフトウェアは製造するものではなく設計するものであること、 などから彼ら(製造業経験者)の使うメタファーは間違ってる(よく言って不適切である)ことが多いからだ。

それは事実だ。

今回トヨタ流製造業発想を聞いていて、 私自身が同じことを何度も思った。

が、純粋なソフトウェア開発者であり、かつ製造業についてほとんど知識のない私が これらの話を聞いて「製造業のことを知った方がよい」と思ったのは、 その態度であり取り組みである。

彼らが、プロセスの改善のために継続的かつ組織的に払っている努力は 尊敬に値する。ハッカーは環境改善が好きだが、それは組織的なものではない。 多人数によるソフトウェア開発は(伝聞によると)かなり前時代的かつ改善が推奨されない 雰囲気のところが多いと聞く。

彼らが、「正当な製品」を出荷するために継続的かつ組織的に払っている努力は 尊敬に値する。ソフトウェアはなにが「正当」が決めることが困難という事情を 考慮してもなお彼らほどの努力をしているところは少数派だろう。

もっとも私はよく知らないんだけど「組み込み」領域は 製造業の一部であるため、すでにこれくらいの努力と取り組みは行われている のかもしれない。なんか苦労話しか耳にしないんだけど、 それは彼らにとっての当たり前は話題にならないと言うことなのかもしれず。


2008年08月29日

_ [Ruby] Logic-Junction: RubyEnd

StGITのパッチセットを眺めてたら 去年のRubyKaigiで発表されたRubyのパーサーを拡張して "end" の対応付けをチェックするパッチを、1.9対応にしたものを発見した。 -wがついている時にインデントが揃っていないことを警告するパッチ。

特に害はないのでコミットしようかしら?


«前の日(08-28) 最新 次の日(08-30)» 追記