最新

val it : α → α = fun

<<  2006/09  >>

2006/09/15 darcs はどこが気持ち良いか、あるいは darcs が遅いわけ

昨日のつづき。昨日は darcs の心地良さについて「すべてがパッチベースであること」を挙げたけど、よくよく考えるともうひとつある。それは「すべてのワーキングコピーがレポジトリであること」。

正確に言うと、ワーキングコピーがレポジトリなのではなく、「すべてのワーキングコピーにはレポジトリ」が付随していて、それぞれ独立にバージョン管理可能な状態になっている。分散バージョン管理といっても、 GNU arch とかは(マニュアルを読むかぎり)まずユーザは自分のレポジトリを作るようだから、そのような構成にはなっていないようだ。一方、 monotone は db ファイルを指定するから、ワーキングコピーごとにレポジトリが存在するという構成になっているのだろう。

で、この構成の何が良いかというと、細かいことをいろいろ考えなくて良いのである。

たとえば「ブランチを切る」という行為。これは「新しいワーキングコピーを1コつくる」ということに相当する。ブランチ間で変更を移すのは、レポジトリ間で変更を伝達するのと同じこと。 darcs には、いわゆる「チェックアウト」という考え方すら(そういう意味では)存在しない。チェックアウト相当の動作は、ただ単に、

  1. 手元に空のレポジトリを作成し、
    1. リモートのレポジトリからパッチをコピーして、
      1. そのパッチを前から順番に実行する

        ことしかしなくて、これはようするにレポジトリの複製を作っているのと同じなのだ。そして、こういう考え方はパッチベースととても相性が良い……と、思う。もっとも、 monotone はパッチベースではないようだから、そうでもないのかもしれない。

        ところで、この「心地良さ」は実はパフォーマンスと表裏一体になっていると言える。上のような手順を踏まないとレポジトリをコピーできないため、チェックアウトには常に、 svk でいうところの mirror の手間がかかる……といってもネットワーク越しでなければ大したコストは必要ないのだけど。

        darcs は、「パッチの理論」なるモノがあってなんだかややこしそうなのと、実装言語が Haskell である点に特殊性がありそうだが、そういうことはぜんぜんない。私はパッチの理論についてはよく知らないし、 Haskell であるかどうかはあんまり関係ないように思える。遅いといっても、処理系に由来する遅さは特にないし。


        2006/09/15 「以外全部」遊び

        http://d.hatena.ne.jp/izumino/20060912/p1。こんな感じ?

        • 時間以外全部衝突
          • 美亜以外全部に贈る真珠
            • 時空以外全部ドーナツ
              • タフ以外全部の方舟

                大元のネタはともかく、こういうのがあると便乗していろんな人がいろんなネタを提出するうちにスタージョンの法則が働いて全体としてはつまんないものになってしまうと思っていて、このことをおれは「ダメマッシュアップ現象」と勝手に呼んでいるのだが、まあそれはさておきおれもちょっと書いてみました。


                2006/09/15 greylisting トラックバックの思い付き

                トラックバックに greylisting を持ち込むアプローチってあるんだろうか。あーつまり、デフォルトは許可制にしておき、トラックバックを受けても、書き手がチェックしないと結果に反映させないようにしておく。しかし、書き手がいったん許可すると、相手のブログの URL を覚えておき、次からは許可なしでもスパムとみなさずに自動的に表示する、といった具合。なんかメールの greylisting よりずっと有効な気がしてきた。

                ただ問題点がひとつあって、「どこまでがブログの名前」で「どこからが可変領域(エントリによって変更される場所)」なのか、っていうのは、システムやサービス提供者によってマチマチなので、「覚える」ために URL を切り出すところがアドホックな処理にならざるをえず、面倒くさいということですかね。

                概ね、

                • クエリ文字列を削り、
                  • パスの最後の区分が〜.htmlなどになっていればそれを省き、
                    • 数値のみで構成されるディレクトリを排除する

                      ことで「そのブログのURL」が取り出せそうな気がします、直感ですが。

                      なんか書いてたら、既出な気がしてきましたけど、まあいいや。この日記にはトラックバックをあれこれする機能はないんで、アイディアだけでした。