オンライン コラボレーション ツールを構築するプロジェクトに取り組んでいます。ウィキペディアを見て、ユーザーが作成したページのイテレーションを簡単に比較できることに気付きました。比較すると違いが強調されます。
概念的には、ほぼ同じことを行うには何を実装する必要がありますか?
オンライン コラボレーション ツールを構築するプロジェクトに取り組んでいます。ウィキペディアを見て、ユーザーが作成したページのイテレーションを簡単に比較できることに気付きました。比較すると違いが強調されます。
概念的には、ほぼ同じことを行うには何を実装する必要がありますか?
良いアドバイスから合成:
最も簡単な方法は、既存のウィキ エンジンをそのまま使用することです。優れた wiki エンジンはたくさんあります。車輪を再発明しないでください。
たとえば、StackOverflow 自体はカスタム ビルドの wiki です。スタック オーバーフローの編集ビューアーを見て、その機能が質問で説明されている機能をどの程度満たしているかを確認してください。
バージョン管理されたデータストアと差分アルゴリズムが必要になります。
各リソースにリビジョン番号を付けて、リソースのバージョンを保存します。ユーザーがリソースを編集するときは、リソースを置き換えるのではなく、編集内容を新しいエントリとしてデータストアに新しい、より高いリビジョン番号で保存します。リソースを取得する場合は、リビジョンが最も高いリソースを返します。
リビジョン番号の代わりに、タイムスタンプを使用できます。タイムスタンプは常に増加するだけでなく、リビジョン番号自体を使用して、リソースがいつ変更されたかを識別することができます。
リソースの保存方法に基づいて、diffアルゴリズムを選択します。diff
ウィキテキストは通常行ごとであるため、ユーザーがそれを編集している場合は、標準のUnixユーティリティのように行ごとの差分を使用するのが理にかなっています。リソースがXMLの場合は、XML固有の差分アルゴリズムを見つけて、違いがどこにあるかをユーザーに明確に示すことができます。