«前の日記(2005年05月30日) 最新 次の日記(2005年06月01日)» 編集

Matzにっき


2005年05月31日 [長年日記]

_ 「セキュアLSI」などで著作権保護技術を搭載し、ハイビジョンがようやくパソコンで実現

富士通がARIBの基準を満たして、ハイビジョンが扱えるPCを発売した、という話。

PC Watchによる開発談

専用のボードを開発し、HDDの録画時、バス上のデータ、処理中のメモリにいたるまで保護を行い、 家電なみの著作権保護機能を実装とのこと。

まあ、ご苦労さまなことだし、努力のほどはわからないでもないが、 そこまでして客を悪者扱いしなければならない制度や基準は変だと思う。

別にハイビジョン映像が扱えなくてもいいから、 もっと自由にコンテンツを見たい・扱いたいという私の欲求は自然なものだと思うのだけど。

「デフォルトコピーワンス」の世界が遠くない今、 なにかもう一度考え直す必要があるのではないだろうか。

_ プレゼン練習

わたし自身も明日発表があるのだが、 これはLinux Conferenceで発表する後輩の練習につきあう。

だがしかし、技術的には間違ってない、嘘のない内容ではあるが、 全体のストーリーが弱く、小さな話が数珠つなぎになっているような構成なので、 聞いてて正直つらい。直前だが、全体構成から見直してスライドを並び替えるように提案する。

酷なことをしてしまったか。

_ [Ruby]暗黙のcall

Ruby 1.9ではしばらく前から、ローカル変数の後ろに引数を並べたものは、 そのオブジェクトに対する「call」の呼び出しとするというルールを試験的に導入していた。

しかし、いろいろ試してみると

  • ローカル変数と同名のメソッドを呼び出す例
  • ローカル変数だけでは満足しない(任意の式に対してimplicit callしたい)人

が予想以上に多かった。というわけで、このアイディアを採用するのは止めようと思う。

思い付いたときには、いいアイディアだと思ったんだがなあ。

で、代わりにどうするかというと、ばくぜんと以下のいずれかを考えている。

  1. なにも新たには追加しない。
  2. 「foo[]」の呼び出しにブロックが指定できるようにする
  3. 「(expr)(args...)」でimplicit call

2番目のものは、現状のclosureは[]を使ってcallの代わりをして、 なんとなく関数的に見える呼び出しかたを許しているが、 現状のRubyは[]の呼び出しにブロックを指定できないので、 完全互換ではない。ここを修正することで、関数呼び出しと同等にできるというアイディア。

試しに実装してみたら、「foo[1]{p 11}」のようなスタイルは簡単だが、 ブロック変数「&block」を許そうと思ったら、とたんにreduce/reduce conflictの山だった。 要するに「ary[&block]=5」のようなものをどうするかということなんだと思う。

3番目のものは実装してみたら簡単だった。あんまり、あっというまにできてしまったので 拍子抜けしてしまったくらい。ただし、

a=lambda{|x,&b|p 5; b.call}
(a)(10){p 11}

のようなコードを許すのが本当によいことなのか自信はない。 っていうか、「(a)(10){p 11}」はあんまりだろう。 International Obfuscated Ruby Code Contest出場者は喜ぶかもしれないけど。


«前の日記(2005年05月30日) 最新 次の日記(2005年06月01日)» 編集