Archive for October, 2005

OpenIDについて

Posted by on Friday, 21 October, 2005
>後出しジャンケンくさいですが、 >たださんの指摘する > OpenID はけっこう中間者攻撃に弱いということは、あとで僕も気付きました。 > >偽装の方法としては、任意のURLでサービス提供者にアクセスし、そのURLへのパケットの流れを捉えればいいわけで、むしろやりやすいのかもしれないという気がしますね。 > >ただまあ、それを言うなら従来の TypeKey 対応サービスだって同種の問題を抱えているのは同じで、けっきょくその辺はホスト間の SSL/TLS を使えというしかないのかな。そういうことをやる仕様になってるのかどうかは(読んでないので)知りませんが。 > >そういうわけで、個人的な情報を OpenID と結びつけるというよりは、あるサービスに継続的に同じひとがアクセスしているということが知りたいためにユーザ認証が必要なんだけどいちいち取得するのが面倒、という場合が有用なのであって、だから SBS であるとか、ブログの認証とか、wikiのユーザ認証とかには良いんじゃないかと思いますけどね。 >

インスパイアといえば

Posted by on Thursday, 20 October, 2005
>そういえば Lindows がなんで Linspire になったのか(というかなんで変えた先の名前として 〜spire が選ばれたのか)よくわかっていなかったのだが、出し抜けにそうなった理由がわかったぜ! >
> >Lindows はパーソナルコンピュータにおいて親しまれてきた「Windows」等のMS製品にインスパイアされて開始され、今回の商品化にあたって新たなオリジナリティを加えてディストリビューション化したものですが、パーソナルコンピュータにおいて「Windows」等の既存のOSを使用されることを何ら制限するものではございません。 > > >会社の名前とかすっかり忘れたぜ! >

誰のためにもならない怒り

Posted by on Thursday, 20 October, 2005
>とあるまんが家がほとんどトレスに近いかたちで他のまんがの構図をパクッてしまったことで、けっきょくそのまんが家の作品をすべて(問題になったものだけでなくほかのも)回収の上絶版というのはさすがに唖然とした。 > >これについては、 >たけくまメモ > に比較的共感できるところがあったのだけど、これは作者ないしは「業界」側の視点であって、なんとなく微妙に首をかしげるところのある印象だったのだけど、そのあとで >http://d.hatena.ne.jp/NaokiTakahashi/20051020#p1 >を読んだらけっこう納得。だいたい自分のポジションはこの辺です。いやベンヤミンもロラン・バルトもボードリヤールも読んでないけどさ。 > >このテのテキスト論とパクリの話は、少し前に日刊!ニュースな本棚でもやっていた→ >http://media.excite.co.jp/book/daily/friday/014/ >とか。 > >それとは別に、最近は2chの祭が実社会に影響を及ぼすケースが増えているように見えるのだが、そのときの流れがどうにも気にかかる。今回のケースでも、過去によくあったようにパクリを訴えるページそれ自体はたいていの人が「へぇ」で済ませてきていたと思うのだけど、それが義憤にすりかわり、他の作品もふくめて全て回収なんていう事態に発展していったのは、「祭」がヒートアップしすぎて止まらなくなったからなんじゃないかな。「祭」になっちゃうと、祭を盛り上げて維持することそれ自体が目的化してしまい、もはや適切な場所でストップすることができなくなってしまうのじゃないだろうか。 > >憶測だけど、気になっている。 >

シャッフル問題の類題

Posted by on Thursday, 20 October, 2005
>ところで、このアルゴリズムではコピー元が一意に決定されている(0〜(size-1) まで)。ここもランダムに決定し、この交換を size 回繰り返すような場合、つまり、 > >void shuffle(int music[], int size)
{
int i;
for (i = 0; i < size; i++) {
int r1 = random(0, size);
int r2 = random(0, size);
int m = music[r1];
music[r1] = music[r2];
music[r2] = m;
}
}
> >という場合は正しいシャッフルになるのだろうか? または、これを size 回ではなく、ある他の回数だけ繰り返した場合に正しいシャッフルになるケースはあるのだろうか? > >えーと、あんましちゃんと考えてないのだけど、上と同じ論法で無理っぽい気がする。配列をシャッフルするときにはこういうアルゴリズムにすると良いのでは、という話はよく聞く気がするのだけど……。 > >ところで、少し前に ruby-list でそういう話題があったなあと思って見てみて発見したのが >ruby-list:40892 >。 C で書きなおすと、 > >void shuffle(int music[], int size)
{
int i;
for (i = 0; i < size; i++) {
int r = random(0, i+1);
int m = music[i];
music[i] = music[r];
music[r] = m;
}
}
> >というわけでもとの問題に非常によく似ているが、これは実際に正しいシャッフルであることが
>ruby-list:40896 > で証明されている。上の論法でいっても、この場合はバリエーションがsizeの階乗なので問題がない(かもしれないだけで実際には重複がないか調べないといけない)という次第だ。 >

音楽シャッフル・クイズ

Posted by on Thursday, 20 October, 2005
> >http://hyuki.com/d/200510.html#20051020190000 >はなかなか面白かった。 > >自分のアプローチとしてはちょっとださくて、実際に長さ3で検証しようとして、面倒になったのでプログラムを書いてから、ちゃんとした解答を思いついたとゆー。なのでその順に説明しよう。 > >まずそのプログラムはこんな感じ。 > >import Array
import List

arraySwap a i1 i2 = a // [(i1, a ! i2), (i2, a ! i1)]

possibleArrays i a = map (arraySwap a i) [lb..ub]
where (lb, ub) = bounds a

evolve n al = main 0 al
where main i al
| i == n + 1 = al
| otherwise = main (i+1) $ concat $ map (possibleArrays i) al

uniq_c [] = []
uniq_c (x:xs) = (c, x) : uniq_c tl
where (c, tl) = count 1 xs
count n [] = (n, [])
count n l@(y:ys)
| x == y = count (n+1) ys
| otherwise = (n, l)

arrays n = uniq_c $ sort $ map elems $ evolve (n-1) $ [listArray (0, n-1) [0..n-1]] > >調べてないので uniq_c 相当のってあったっけ? あったような気も。まーいーや。ようするにだ、ランダムで分岐しているのをすべての可能性についてリストアップしていって、最後にまとめて出現回数をカウントすると。で、こうなる。 > >*Main> array 3
[(4,[0,1,2]),(5,[0,2,1]),(5[1,0,2]),(5,[1,2,0]),(4,[2,0,1]),(4,[2,1,0])]
> >というわけで公平にならない。でもなぜだろうか、というところでようやくピンときた。 > >問題のアルゴリズムでは、公平に0〜(n-1)のが選ばれて、それとi番目の要素がスワップしている。これがn回繰替えされるから、ようするに長さsizeのリストをシャッフルする場合、ランダムの選択のされかたはsizeのsize乗個あるということになる。 > >これがシャッフルで公平に分配されれば、正しくシャッフルされることになるのだが、シャッフルのバリエーションは長さがsizeのときはその順列、つまり (size)P(size) = (size)の階乗になる。 > >で、一般のsizeについて、 (size^size) / (size!) は割切れないことは言うまでもない。ということは公平に分配しようがないわけで、正しくシャッフルされることはありえない。 > >というのが答え。 > >ちなみにプログラムしていてわかったことは、この「公平さ」の偏りが、リストが長くなるにつれてどんどん偏っていくということ。上の長さ3の場合は出現頻度の差は1しかないけど、長さ4の場合には最大で8と15でほぼ倍の出現確率、長さ5では16と47だからおおよそ3倍、長さ6だと32と159で5倍ほどの比になる。 >


ブログの読者数の増減について

Posted by on Tuesday, 18 October, 2005
> >http://nais.to/~yto/clog/2005-10-14-3.html >という。あるあるあるある(笑)。 > >でもリンカとかの話の方が面白く読めたりする人もいるわけで、かといってそっちを続けろと強制する筋合は外部にはないわけであるが。てなことを思ったり思わなかったり。 >

昔からの疑問

Posted by on Tuesday, 18 October, 2005
>Ruby がオタくさいから嫌とか言ってる人たちは、 Python とその語源についてはどう思ってるのだろうか。アニメはダメだけどモンティ・パイソンはいいのかなあ。 > >と、時々、思います。 >

OpenIDといえば

Posted by on Monday, 17 October, 2005
> >OpenID といえば >こないだのWikiばなでも話題になっていた気が。Wiki spam に対抗するためにユーザ管理的なものが必要になるとして、しかしながら個別の wiki ごとにユーザを作るのは現実的でない。ということで TypeKey でもなんでもいいけど、今書き込んでいるのが誰か、ということを知りつつ、一方で wiki engine 側にはIDは知らせつつパスワード等の情報を知らせない仕組みがなんか欲しくて、あると便利なんじゃないかと思っているのですがどうかなあ。まあ OpenID の仕組みは調べてませんが……。 > >そうそう、こういう方向性には koyhoge さんが紹介していた >http://writeboard.com/ > も近いんじゃないかと推測するんですがさてどうだろう。 > >writeboardは、 koyhoge さんの紹介では、 > > >アカウントを作成すると、自由にいじれる wiki ページみたいなものが15枚もらえる > > > >ページごとに、いじってよいユーザを指定できてみんなでゴチャゴチャできる > > > >いじりたいページをもっと増やすにはお金が必要 > > > > >という仕組みのようで、話を聞く分にはなかなか面白げな印象ではありました。似たようなことを OpenID と何かの wiki engine で出来ないだろうか。でもそれは面白いのかな。うーん。 > >なんだか話がズレてきた気がするので戻すと、とりあえず TypeKey 使って videntity のページを作ってみた→ >http://videntity.org/profile/www.jmuk.org > > >てか、作ってみたもないもんだ。そのまんまじゃん。 >

書評右翼、書評左翼

Posted by on Monday, 17 October, 2005
> >http://d.hatena.ne.jp/Erlkonig/20051012/1129052231 > やってみようか。 > >書評右翼 > > >△ 批評派 > > > >△ ☆☆☆☆☆で五段階評価 > > > >○ だ・である調 > > > >× もう何年も傑作を読んでいないと主張 > > > >× 劣化とかデッドコピーとか言う > > > >○ ジャンル分けが好き > > > >○ 客観的評価であるかのように「駄作」と言う > > > >× 批判目的で嫌いな作家の本を買う > > > >× 本を壁に投げたことがある > > > >× 「今はもう惰性で読んでいる」を多用 > > > >× 地雷と呼ばれる作品に積極的に手を出し、生き生きと散々に貶す > > > >× 「こんな本読んでる奴は本当に凄い小説を読んだことがないんだろうな」とか言う > > > >○ フェア・アンフェアにこだわる > > > >× 自分の予想を外されたら評価を下げる > > > >○ 自分の予想通りに進んでも評価を下げる > > > >× 悪貨は市場から駆逐しないといけない > > > >× ときどきツンデレ > > > >× 実はアフィリエイトやってみたい > > > >× ジュブナイルポルノにちょっと興味がある > > > >× 『わたしたちの田村くん』を読もうか迷っている > > > >× 獣人毒者 > > > > >書評左翼 > > >△ 感想派 > > > >× あらゆる小説は平等に面白い > > > >△ 作品に点数はつけられない > > > >× ですます調 > > > >× 面白くないと思ったら、それは読者の読み方が悪いから > > > >△ 五冊に一冊くらいの頻度で傑作に当たる > > > >× 他の著者との類似点を挙げて人に薦める口実にする > > > >× ジャンル分けを極端に嫌う > > > >○ 客観的評価であるかのように「傑作」と言う > > > >× 「この文章は主観的なものです」と但し書き > > > >× 嫌いな作家はいないとうそぶく > > > >○ 「癖が強いので」「読み手を選ぶ」「人によって好き嫌いが大きく分かれる」を多用 > > > >× 欠点を指摘せず良い所だけ誉める、または欠点を味と言い換える > > > >○? 「ミステリーだと思ったらホラーだった。一本取られた!」むりやり誉める > > > >○? 地雷と呼ばれる作品に積極的に手を出し、「これはこれで面白いと思うよ」とうそぶく > > > >○ 本当につまらなさそうな作品は本能的に避ける > > > >○ 本当につまらなかった作品は読まなかったことにする > > > >× 実はアフィリエイトやってみたい > > > >× ジュブナイルポルノにちょっと興味がある > > > >× 『わたしたちの田村くん』を読もうか迷っている > > > >× 獣人毒者 > > > > >むう、どっちでもないという結論になりそうな(笑)。 > >なにゆえに右翼と左翼という基準がもうひとつ見えないのですが、いちおうジャンル意識(ナントカ主義)が強くてそれに殉じるのが右翼で、軽薄になんでも読むよと言うのが左翼ということなのかな。 > >そういえば >SF右翼 >というのもあるようですが、こっちはよくわからないというかこれじゃファンの嫌なところを列挙しただけだ。自分としてはSF右翼という単語から想起されるのは山本弘のイメージなのだがどうだろう。 >

Streamモジュールについて

Posted by on Monday, 17 October, 2005
>確かにストリームは遅延リストとして利用することもできるのですが、パーサが破壊的にふるまうため、 npeek などを併用したりする必要があり、かなり面倒です。 > >具体的には、 > ># let f = parser
| [&lt; 'c &gt;] -&gt; c
| [&lt; &gt;] -&gt; raise Not_found;;
val f : 'a Stream.t -&gt; 'a = &lt;fun&gt;
# let s = [&lt; '1; '2; '3 &gt;];;
val s : int Stream.t = &lt;abstr&gt;
# f s;;
- : int = 1
# f s;;
- : int = 2
# f s;;
- : int = 3
# f s;;
Exception: Not_found.
> >といったことが起こります。こういう小さい例では問題ないのですが、ひとつのストリームをいろいろ取り回してみたり、関数を組み合わせてみたりすると、どこで何が実行されるからここで1コ要素が削られて……ということを考えだしてしまい、そのうち疲れました。Extlib には >Enum > というストリームによく似た(そしてそこそこ便利な関数が揃った)モジュールがあるのですが、これも破壊的なふるまいを示すので同じようにうんざりとしました。 > >ついカッとなって LazyList を作ってみたのにはそういう背景があります。 >