最新 追記

Matzにっき


2008年03月03日 [長年日記]

_ [言語] CS 11: Python track: python idioms

Pythonのイディオム。

List Comprehensionの解説で

results = [(x, y)
           for x in range(10)
           for y in range(10)
           if x + y == 5
           if x > y]

という例題がある。そうか、forって複数指定できるんだ。

で、Rubyのメソッドチェーンではこのような複数シーケンスの ネストしたループをストレートに書くことができないことに気がついた。

(1..2).xxxx(1..2)

で、

[1,1],[1,2],[2,1],[2,2]

を返すようなxxxxメソッドがあれば、

(1..10).xxxx(1..10).select{|x,y| x+y == 5}.select{|x,y|x > y}

と書けるんだけど、名前がな。いい名前ないかな。

_ [Ruby] Binary search algorithm - Wikipedia, the free encyclopedia

Rubyのオブジェクトはヒープと呼ばれる複数のメモリ領域のいずれかに所属する。 GCの過程で(保守的なチェックの一環で)ポインタがどのヒープ領域に所属するか をチェックしているところがある。

今までは線形探索をしていたのだが、 ここを二分検索するようにした。 まあ、現時点ではヒープの数はあまり多くならないので メリットはさしてないのだが、今後ひとつひとつのヒープのサイズを小さくすることを 考えているのでそのための下準備として。

ところが、二分検索の基本的なアルゴリズムは理解していたはずなのに なかなかバグが取れない。結構、情けない。

_ [OSS] Theological Cultural Analysis of the Free Software Movement

クリスチャン的視点から見たフリーソフトウェア運動。

っていうか、タイトルを見た時にはどういう論理展開するのかと思って読んだのだが、 実は穏当な意見であった。

_ 小寺信良:正直、テレビはもうダメかもしれん - ITmedia +D LifeStyle

テレビはダメかもしれん、という話(そのまんま)。

実際、ここ数年テレビを見る時間はぐんぐん減っている。 私の家族も最近はPCを使った情報収集に時間を取られて テレビはあまり見なくなってしまっている。

テレビはもはや時間が余った時に雑学を入力する手段くらいにしかなってなくて、 しかもそれってインターネットで代用可能だったりするんだよね。

やっぱ、2011年にはテレビを捨てることになるのかなあ。

_ [Ruby] You Used Ruby to Write WHAT?! - CIO.com - Business Technology Leadership

Zed 「ゲットー」 Shawが(CIOに向けて)Rubyの「欠点」について語る。

言語そのものについての欠点の指摘はほとんどないので 言語デザイナーとしては安堵なのだが、欠点のほとんどは私の実装(MRI)の弱点なので そういう意味では涙目である。

やや、根拠が薄いような気もするが(ほんとに遅いのかとか、ほんとにリークするのかとか)、 改善の余地があることについては私も認める。

悔しいので、また手を入れることにする。 一番難しいのはGCだろうか。「保守性によるリーク」や「停止時間」の問題について また考えてみたい。

_ 取材

某雑誌の記事のため写真撮影。 なんか金かけてるよな。

今日はいきつけの本屋さんで立ち読みしているところの撮影だとか。 事前に本屋には許可を取ってあるのだが、 立ち読みしてるところをバシバシとられるのは かなり恥ずかしい。


2008年03月02日 [長年日記]

_ [教会] 第一安息日

先週は(雪のせいで)教会に来れなかったが、 今週は無事参加できた。 毎週教会に出席するのは当たり前と感じていたが、 改めてありがたいかとだなあと思う。

集会終了後、息子が飛ばしていた紙飛行機が 駐車場の車の屋根に乗ってしまう。 「お父さん、とって」と頼まれるが ひとの車によじ登るのはなあ、とためらっていると 車の持ち主(180cm超)がやってきて、 やすやすと取ってくれる。

あんなに身長が高けりゃな。

「こんなことにしか役立ちませんけど」とか 言われたけど、それでもやっぱり身長が高いのはあこがれる。

アメリカに行った時とか、(立ったまま)打ち合わせしてても みんな背が高いから見上げないといけなくてつらいんだよな。


2008年03月01日 [長年日記]

_ [Ruby] Ruby 1.9.0-1 snapshot released

結局、次の日になってしまった。

で、実はパッケージスクリプトにバグがあって、 再パッケージしている。正しいmd5sumは

4344e18188bbdf3e5f19cdd3ade902bb  ruby-1.9.0-1.tar.bz2
90b721dce088f455df914c9482508601  ruby-1.9.0-1.tar.gz
8e89b49e473ac1c209e3c73a6fd6610f  ruby-1.9.0-1.zip

である。ごめんなさい。

_ 高木浩光@自宅の日記 - 公開鍵暗号方式の誤り解説の氾濫をそろそろどげんかせんと

公開鍵暗号とその代表格であるRSA暗号を混同してしまう間違いが 世に氾濫している、という話。

嫌な予感がして前に公開鍵暗号について解説した記事(日経Linux2006年6月号)の 原稿を確認してみた。間違えていた。orz

ごめんなさい。

Webでも公開されているので、 以下の部分を

 公開鍵暗号は,公開鍵で暗号化した文字列は秘密鍵を用いてしか解読できず,逆に秘密鍵を使って暗号化したものは公開鍵でしか解読できないという性質を持つ暗号です。公開鍵暗号は認証(自分が確かに秘密鍵を持つことの証明)と暗号化(鍵を持たない人以外に読めないメッセージを作ること)の両方を実現できます。

 公開鍵暗号の仕組みをごく簡潔に紹介します。2つの素数p,qが存在するとして,この2つの素数から図12に挙げる数を計算します。

以下のように修正する必要がある。

 RSA暗号は,公開鍵で暗号化した文字列は秘密鍵を用いてしか解読できず,逆に秘密鍵を使って暗号化したものは公開鍵でしか解読できないという性質を持つ暗号です。このような鍵を一般に公開しても成立する暗号を公開鍵暗号と呼びますRSA暗号は認証(自分が確かに秘密鍵を持つことの証明)と暗号化(鍵を持たない人以外に読めないメッセージを作ること)の両方を実現できます。

 RSA暗号の仕組みをごく簡潔に紹介します。2つの素数p,qが存在するとして,この2つの素数から図12に挙げる数を計算します。

Webでも訂正されるようにお願いしておこう。

_ [Ruby] Lisa Awards: Biggest Hack for a Language Runtime on Dion Almaer's Blog

Rubyが、Lisa Awardsという(冗談の)賞をいただいた、ということらしい。

しかし、

For letting a first interpreter implementation be fast enough

というのは、遅い(けど使えないことはない)って皮肉だよなあ。


2008年02月29日 [長年日記]

_ [Ruby] 1.9.0-1 リリース準備

事前に予告していたので、1.9.0-1のリリース準備をする。

とりあえず他の人は盛り上がらないので、 ひとりで細々と失敗するテストを見直す。 まあ、みんなそれぞれ忙しい事情を聞いてしまっているので、 なかなか声をかけづらいのもある。 自業自得っぽい。

が、しばらく放置していた失敗するテストには 直すのにてこずるものも多く、 今日中には終わらないかも。

またリリースは遅れそうだ。

今度からは誰かに音頭取りを任せないとなあ。

_ [Ruby] Webエンジニア武勇伝 第18弾 笹田耕一氏 | 株式会社ウェブキャリア

笹田くんのインタビュー。

研究と実用の狭間で。

ってか、我々のやってることって研究的には新規性はないんだけど、 でもRubyに組み込まないと世間の人にとってうれしくないんで やることに価値がないわけではないという、 アカデミアにとっては微妙なポジションで。

そこにあって、ちゃんと論文を書いてる笹田くんはたいしたものだと思う。 私は書けなかった。

ま、私の仕事に学位は関係ないんで熱意が足りなかったってのもあるけど。 将来、大学に就職しようと思ったりしたら、後悔するのかなあ。


2008年02月28日 [長年日記]

_ [Ruby] MacRuby - ruby - Trac

Mac OSXで動作するRubyというだけなら単にコンパイルするだけでよいのだが、 このMacRubyは、YARVをベースに

  • 全部のオブジェクトをObjective-Cのオブジェクトにマップ(プロクシ不要)
  • OSXの世代別GCを利用
  • obj.foo(1, bar: 2)を [obj foo: 1 bar: 2] にマップ

するという大胆なもの。すげーっ。

これが成功すればRubyは名実ともにOSXの公式スクリプト言語として定着するに違いない。

言語設計者として一番気になるのは、リストの最後にある「Objective-C呼び出しへのマッピング」。 上の例では「foo:bar:」というObjective-Cのメソッドが存在しなければ 通常のfooメソッドの呼び出しになるようになってるそうだ。

将来(2.0?)のキーワード引数に対するヒントになるかもしれない。

言語実装者として気になるのは、世代別GCの実装。 確か明示的なライトバリアが必要なタイプだったと思うんだけど、 これをどうしたかっていうのも興味深い。

っていうか、手元にOSXマシンがなくて試せないってのはどうなのよ。

最近はMacBook安いし、ひとつ手元にあっても、という気もしないでもないのだが、 あのポインティングデバイスが駄目なので*1、 どうにも購買意欲が。

*1  試したがiPod Touchも駄目だった


最新 追記