【问题标题】:How to create text diff web app如何创建文本差异网络应用程序
【发布时间】:2011-02-04 14:01:39
【问题描述】:

想法

我想为自己创建一个小应用程序来存储想法(问题是 - 我希望它按照我的方式行事)

数据库

我的想法很简单:

id       - unique id of revision in database
text_id  - identification number of text
rev_id   - number of revision
flags    - various purposes - expl. later
title    - self expl.
desc     - description
text     - self expl

.

  • 标志 - 如果我(即)添加标志 rb;65,而不是存储整个文本,我刚才说过,每当我要求最新版本时,我都会再次进入数据库并检查版本 65

问题:这种设置是最好的吗?存储差异或整个文本更好(我知道,空间很便宜......)?该修订标志是否有意义(仅复制文本会不会更好 - 更多磁盘空间,但更少 dbphp 处理。

php

我在想,我会在这里和 PEAR 一起去。虽然重点是open-edit-save,但查看修订的可能性并不难编程,并且在某些情况下可以挽救生命(好的想法被删除,保存错误的版本等......)。

然而,我从来没有在长期或完整的项目关系中使用过 PEAR,但是,在我之前的经历中,短暂的接触留下了相当糟糕的感觉 - 我记得,实施起来太难了,缓慢而庞大一起玩,所以不知道有没有更好的。

更新:似乎有更多的文本差异预制库,有些甚至比 PEAR 更轻量级,所以我可能不得不深入研究它。

为什么?

虽然有数不胜数的各种时间/项目/想法管理工具,但对我来说,无论是与用户共享、在更多 PC 上同步、时间跟踪、项目管理……我都相信,这本书diff webapp 稍后将与各种不同的工具一起供内部使用。因此,如果您知道任何支持大量使用文本且具有良好且具有良好 UI 的项目管理应用程序,请告诉我,这样我就可以节省时间做一些比重新设计轮毂更好的事情了。

【问题讨论】:

    标签: php mysql database-design web-applications


    【解决方案1】:

    我认为您的问题只是归结为一行(如果还有其他问题,请告诉我,我会补充):

    存储差异或整个文本更好(我知道,空间很便宜......)?

    存储整个文本肯定会更好,除非您真的需要节省空间。查看文本将是比检查差异更常见的操作,如果某些内容有很多修订,那么为最新版本“构建”文本可能是一个重要的过程。想象一个使用率很高的页面,您已经进行了数千次修订,而“整个文本”仅与原始内容一起存储。然后,您必须处理数千个差异来查看最新文本,而不是直接将其从数据库中提取出来。

    如果您想妥协,每次计算任意两个修订版之间的差异时,请将其存储在单独的表中。然后你只需要计算任何给定的差异一次,所以下次你查看相同的差异时它会是即时的。如有必要,可以每隔一段时间修剪一次此表,以删除长时间未访问的差异。

    【讨论】:

    • 不是也可以从文件的最新版本向后构建吗?另一种策略当然是保存最常查看的版本。
    • 这也是一个好方法,假设查看旧版本并不常见。该方法的一件事是计算两个旧版本之间的差异需要额外的步骤。您必须分别构建两个较旧的版本,然后对它们进行比较。如果您存储整个文本,则可以跳过整个构建步骤。同样,这取决于系统的使用方式。
    • 好的,让我们说存储整个文本并在比较修订时“计算”差异在速度和内存方面都是明智的,对吧?
    【解决方案2】:

    这是一个 php diff 函数:http://paulbutler.org/archives/a-simple-diff-algorithm-in-php/

    还有一个:holomind.de/phpnet/diff.php

    【讨论】:

      【解决方案3】:

      如果您要存储大量不同版本的文件,git 可以为您提供很多帮助。

      【讨论】:

      • 是的,但是:要么您必须拥有自己的 git-server,我们才能在一台 PC 上工作(当然,也可以使用付费的 git 服务器)
      • 你所说的 git-server 是指运行 git 的服务器吗?如果你有一个虚拟主机,你可以做到这一点,对吧? (只是感兴趣)
      • 是的,但是我在 shared 服务器上拥有大多数站点和客户端站点,不幸的是 [暂时...]
      猜你喜欢
      • 2011-04-30
      • 1970-01-01
      • 2015-01-20
      • 2021-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多