2

私はレールの初期段階にあり、37Signals 書き込みボードのようなものを構築して、「達成」を学び、感じることができるようにしたいと考えていましたが、次のセグメントのどこから始めればよいかわかりません。

  1. マークダウン形式のテキストはDBに生のテキストとして保存されていますか?
  2. 各編集/バージョンはDBに生のマークダウンテキストとして保存されていますか?
  3. 最も重要なことは、2 つ以上のバージョンの違いをどのように見つけるかということです。これにはアルゴリズムが設定されていますか?
4

1 に答える 1

1

37Signals でどのように実装されているかについては明らかに答えられませんが、これは私の考えです。

  1. 書き込みボードは編集をサポートしているため、フォーマットされた形式でマークダウンを保存することは、誰かがマークダウンを編集するたびに、フォーマットされた html をマークダウンに戻す必要があることを意味します。編集と非編集の比率が非常に小さい場合、マークダウンをフォーマットして保存することのパフォーマンス上の利点 (マークダウンを html に変換する必要がないため) と主張する人もいるかもしれませんが、これが良いアイデアであるとは思えません。大きなアドバンテージになります。データベースに両方のバージョンを保持するか、フォーマットされたバージョンをキャッシュのみに保持するかを選択することもできます。

  2. writeboard はかなり大きくなる可能性があるため、完全な最新バージョンとともに各バージョンの diff (3. を参照) を保存することになるでしょう。このようにして、書き込みボードを表示するたびに完全な最新バージョンを取得でき、差分からビルドする必要がなくなり、同時に各リビジョンを完全な形式で保存しないことでスペースを節約できます。

  3. diffを使用できます。これは、svn や git などの vcs で行われていることです。diff は、2 つのテキスト ファイルの違いを示します。どの文字が変更、挿入、削除されたかを示します。

于 2011-06-16T19:09:55.177 に答える