问题标签 [delta]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python Difflib Deltas 和比较 Ndiff
我想做一些我相信变更控制系统所做的事情,它们比较两个文件,并在每次文件更改时保存一个小差异。我一直在阅读这个页面:http ://docs.python.org/library/difflib.html ,它显然没有陷入我的脑海。
我试图在下面显示的一个有点简单的程序中重新创建它,但我似乎缺少的是 Delta 包含的内容至少与原始文件一样多,甚至更多。
难道不能只做纯粹的改变吗?我问的原因很明显 - 节省磁盘空间。
我可以每次只保存整个代码块,但最好保存一次当前代码,然后保存更改的小差异。
我还在试图弄清楚为什么许多 difflib 函数返回一个生成器而不是一个列表,那里有什么优势?
difflib 对我有用吗 - 还是我需要找到一个更专业、功能更多的软件包?
谢谢!
更新:
----- 显示上下文 -----
* 5,9 **
打印“j=”+j
打印“XYZ”
--- 5,9 ----
- 打印“结束”
另一个更新:
在 Panvalet an Librarian 的旧时代,大型机的源代码管理工具,您可以创建这样的变更集:
这只是意味着在第 9 行之后添加一行(或多行)。然后是 ++REPLACE 或 ++UPDATE 之类的单词。 http://www4.hawaii.gov/dags/icsd/ppmo/Stds_Web_Pages/pdf/it110401.pdf
java - 如何有效地应用数据库中巨大列表的多个位置变化?
我有一个巨大的简单对象 java 列表,存储在数据库中,通过索引列维护元素的位置。我使用休眠但自己管理列表,因为它太大而无法存储为集合。
在对列表进行一些更改(添加、删除、移动)之后,我想通过手动更新索引列并通过休眠插入新的分别删除的元素来将更改保留在数据库中。
现在,(1)是否有一种有效的算法如何将列表增量组合到尽可能少的 sql 语句 - 或者(2)我是否必须记录每个更改并逐步应用它?
java - Java中文件增量/版本控制的现有解决方案
在对文件备份进行版本控制或优化时,一种想法是仅使用已修改的增量或数据。
起初这听起来像是一个简单的想法,但实际上确定未修改数据的结束位置和新数据的开始位置是一项艰巨的任务。
是否存在已经执行此类操作的现有框架或有效的文件比较算法?
python - 流 rdiff - 增量差异?
我有一个使用 rdiff 进行在线备份的产品。目前发生的情况是:
将文件复制到暂存区域(这样文件在我们处理时不会消失或被修改)
散列原始文件,并计算 rdiff 签名(用于差异差异) 计算 rdiff 差异差异(如果我们没有先前版本,则跳过此步骤)
压缩和加密产生的增量差异
目前,这些阶段的执行方式各不相同。最终结果是我们多次迭代文件。对于小文件,这没什么大不了的(尤其是考虑到磁盘缓存),但对于大文件(10 甚至 100 GB),这才是真正的性能杀手。
我想将所有这些步骤整合到一个读/写通道中。
为此,我们必须能够以流方式执行上述所有步骤,同时仍保留所有“输出”——文件哈希、rdiff 签名、压缩和加密的增量差异文件。这将需要从源文件中读取一个数据块(比如 100k?),然后在内存中迭代文件以更新哈希、rdiff 签名、进行增量差分,然后将输出写入压缩/加密输出流. 目标是大大减少我们所做的磁盘抖动量。
目前我们使用 rdiff.exe(它是底层 librsync 库之上的一个薄层)来计算签名并生成二进制增量。这意味着这些是在一个单独的过程中完成的,并且是一次性完成的,而不是流式的。
我怎样才能使用 librsync 库来做我需要的事情?
file - 将源文件夹和目标文件夹之间的差异复制到第三个文件夹
如何使用 robocopy 仅将 2 个文件夹之间的差异复制到第三个文件夹(而不是目标文件夹)?
因此,如果“SourceFolder”包含 FileA、FileB、FileC 并且“DestinationFolder”包含 FileA 和 FileB,我希望看到“DifferencesFolder”包含 FileC。
python - Python:字典列表之间的减法
我有 2 个包含字典的列表,如下所示:
我也有单独的列表中的所有单元名称和测试名称:
我怎样才能找到每个测试值的增量,即 ( test2
- test1
) 的 val,以便我最终可以将数据排列如下:
到目前为止,我有这些:
不幸的是,代码给出了Keyerror
. :( 帮助,请。谢谢。
mysql - 如何设计带有 undo-redo 的 SQL 数据库?
我试图弄清楚如何设计我的数据库表以允许撤消重做。
假设您有一个具有以下结构的任务表:
现在假设在几天内多次登录并进行了多次编辑;但用户想回到其中一个版本。
- 您是否有一个单独的表来跟踪更改 - 或者 - 您是否会尝试将更改保留在任务表中(“幽灵”行,因为没有更好的术语)?
- 您会跟踪所有列还是只跟踪每次更改的列?
如果重要的话,我正在使用 MySQL。另外,如果重要的话,我希望能够显示历史记录(ala Photoshop)并允许用户切换到任何版本。
额外问题:您会在更改时保存整个memo
单元格还是尝试仅保存增量?我问的原因是因为memo
单元格可能很大,每次修订只能更改一个单词或字符。诚然,保存增量需要解析,但如果不经常期望撤消,那么节省空间而不是处理时间不是更好吗?
感谢您的帮助。
node.js - nodejs如何测试大输出文本
我有项目将 js 编译为 js。
我写了filename.js并编译成filename.out.js,并手动检查filename.out.js,下次我修改我的编译器时,我希望输出不要改变,如果改变了显示差异。
每次都说AssertionError,但不应该,而且不能给出不同的。
javascript - 冒泡滚动/鼠标滚轮事件
我已经设置了我的应用程序/网站,以便在滚动面板顶部有一个绝对定位的画布元素,当滚动面板滚动时,我将偏移量应用于画布以使其看起来像图像正在滚动(这允许我有巨大的画布,没有巨大的画布元素的开销)。问题是,当我的鼠标在画布元素上时,滚轮不起作用,因为滚动事件不会冒泡。但是,在这种情况下,我需要冒泡才能使滚动条正常工作。
我为此使用了 GWT,所以我不想依赖 jQuery 解决方案(尽管纯 javascript 解决方案也可以),因为将两者混合起来有点困难。我可以捕获鼠标滚轮事件,但主要问题是它似乎无法区分滚动(上/下)和滚轮倾斜(左/右)。我尝试了 eventGetShiftKey()、eventGetButton()、eventGetType() 和其他一些方法,但所有这些方法都返回相同的滚动和倾斜结果(向左倾斜 = 向上滚动,向右倾斜 = 向下滚动)。
处理这个问题的最好方法似乎是将实际事件冒泡到滚动面板(顺便说一下,它还包含包含绝对定位画布的父 div),但我不确定这是否可能?
c# - 发送变更通知的可用框架/工具?
是否有一个框架可以识别(通过比较对象)对象属性值何时发生变化(用户可以指定要“监视”哪些属性),然后引发事件/发送通知?
示例:应用程序将 Person 类存储在数据库中,并在内存中保留一份副本。该应用程序从数据库中检索人员数据以定期刷新内存中的副本。其他应用程序/进程更新数据库中的人员数据。我希望在更改人员对象的情绪属性(字符串列表集合:乐观,疲倦等)时引发事件/通知。
我知道如何编写代码,但我觉得有一些东西可以做到这一点。我能想到的只有两件事是相似的:
缓存通知,但还没有看到任何允许您指定要通知的属性/值的内容。这还需要一个分布式缓存服务器。
sql 查询通知 - 我正在研究这个。