【问题标题】:In broad prespective, how to go about creating a write board like 37signals?从广义上讲,如何创建像 37signals 这样的写字板?
【发布时间】:2011-06-16 18:28:07
【问题描述】:
我正处于 Rails 的初级阶段,想构建类似 37Signals write board 的东西,这样我就可以学习并感到“已完成”,但不知道从哪里开始以下部分:
- 是markdown格式的文本
存储为数据库中的原始文本?
- 是每个编辑/版本存储为原始降价
数据库中的文本?
- 最重要的是怎么做
我们找出两者的区别
或更多版本?有没有一套
算法?
【问题讨论】:
标签:
ruby-on-rails
markdown
37-signals
【解决方案1】:
虽然我显然无法回答 37Signals 的具体实施方式,但这是我的想法:
由于写板支持编辑以格式化形式存储降价意味着每当有人要编辑降价时,您都必须将格式化的 html 恢复为降价。我非常怀疑这将是一个好主意,尽管有人可能会争辩说,如果编辑与不编辑的比率非常小,则将降价存储格式化后的性能优势(因为您不必将降价转换为 html)将是一个巨大的优势。您还可以选择将两个版本都保存在数据库中,或者将格式化版本仅保存在缓存中。
由于写板可以变得非常大,您可能会将每个版本的差异(参见 3.)与完整的最新版本一起存储。这样,无论何时显示写板,您都可以获取完整的最新版本,而不必从差异中构建它,同时通过不以完整形式存储每个修订来节省空间。
您可以使用diff,这就是在 vcs 中所做的,例如 svn 和 git,差异为您提供了两个文本文件之间的区别:更改、插入和删除了哪些字符。