我正在寻找一个允许我在多个用户之间实时同步文本的库(ala Google Docs).
我偶然发现了运营转型,这似乎符合我的需求.话虽如此,我理解OT的要点,但不理解OT的数学和实现.
因此,我想知道是否有一个拖放到文本区域的拖放Javascript库,生成转换,然后允许我将这些转换应用到另一个客户端?
(我已经获得了Etherpad源代码,但我无法做出正面或反面.如果有人能指出如何利用Etherpad的OT实现,那也会很棒!)
自开源以来,有许多免费的etherpad实现.etherpad是否支持语法突出显示或是某种附加组件?
我试过 http://typewith.me/ http://sync.in/ http://www.piratenpad.de/
我很想知道Etherpad和Google Docs如何自动保存数据.在编写文本文档时,产品仅将更改发送到服务器.知道这项技术如何运作以及我可以去哪里了解更多关于终端2端的信息?
谢谢
好吧,几乎所有内容都在标题中:是否有任何快捷方式可以执行其他操作而不是使文本变为粗体,斜体或带下划线?或者任何允许这样做的插件?
根据我的一位同事的说法,源代码似乎并不包含这些内容,但也许我们错过了一些东西?
我尝试在我的计算机上安装Etherpad Lite站点并运行IIS,然后再将其上载到Azure for Web Sites,但是当我尝试(http://pastebin.com/4rZWbqix)时出现此错误:
处理请求时,iisnode遇到错误.HRESULT:0x2 HTTP状态:500 HTTP原因:内部服务器错误
您收到此HTTP 200响应,因为system.webServer/iisnode/@devErrorsEnabled配置设置为"true".
除了node.exe进程的stdout和stderr的日志之外,请考虑使用调试和ETW跟踪来进一步诊断问题.
node.exe进程生成到stdout和stderr的最后64k输出如下所示:fs.js:520返回
Run Code Online (Sandbox Code Playgroud)binding.lstat(pathModule._makeLong(path)); ^ Error: EPERM, operation not permitted 'C:\Users\Matthew' at Object.fs.lstatSync (fs.js:520:18) at Object.realpathSync (fs.js:1047:21) at tryFile (module.js:142:15) at Function.Module._findPath (module.js:181:18) at Function.Module._resolveFilename (module.js:336:25) at Function.Module._load (module.js:280:25) at Module.runMain (module.js:492:10) at process.startup.processNextTick.process._tickCallback (node.js:244:9)
在Etherpad的目录中没有fs.js文件,所以我认为它是Node.js的一部分有问题.我是Node.js的新手,所以任何帮助都会受到赞赏.
编辑1:我目前正在寻找Azure的替代品,并授予C:\ Users\Matthew权限.但是有可能以某种方式修改fs.js以在try.lstat周围放置一个try/catch吗?
编辑2:稍微玩了一下(添加权限工作!),我已经得到它的工作.但现在加载127.0.0.1:81返回:
处理请求时,iisnode遇到错误.HRESULT:0x2 HTTP状态:500 HTTP原因:内部服务器错误
您收到此HTTP 200响应,因为system.webServer/iisnode/@devErrorsEnabled配置设置为"true".
除了node.exe进程的stdout和stderr的日志之外,请考虑使用调试和ETW跟踪来进一步诊断问题.
node.exe进程生成到stdout和stderr的最后64k输出如下所示:
[x1B] [33m [2012-10-03 20:28:13.587] [WARN] console - [x1B] [找到39mNo设置文件.继续使用默认值!
[x1B] [32m [2012-10-03 20:28:14.338] [INFO] console - [x1B] [39mInstalled plugins:
看起来这不是一个错误,因为输出的是预期的,但似乎停在plugins.formatPlugins().
查看Meteor以创建协作文档编辑应用程序,因为默认情况下Meteor在多个客户端之间同步数据非常棒.
但是当使用文本区域时,例如Sameer Kalburgi的例子
http://www.skalb.com/2012/04/16/creating-a-document-sharing-site-with-meteor-js/
http:// docshare -tutorial.meteor.com/
经验是次优的.
我试图与同事同时输入,当我输入时我的更改会被覆盖,反之亦然.所以在冲突解决方案中还没有合并算法,我想呢?
这是否计划用于该功能?目前有没有办法实现这个目标?Etherpad似乎很好地处理了这个问题.在Meteor中实现这一点将使创建协作文档编辑应用程序变得更容易访问.
我正在尝试在我的网页中启用沙箱加载iframe,但它显示错误:
加载pad时发生错误Uncaught SecurityError:无法在'Document'上设置'domain'属性:禁止为沙盒iframe分配.
嵌入iframe的代码是:
<iframe
id="iframe1"
name="iframe1"
src="http://localhost:9002/p/6dN6dkWRmd"
height="700px" width="500px"
sandbox="allow-scripts allow-top-navigation">
</iframe>
Run Code Online (Sandbox Code Playgroud)
在iframe javascript中我发现此代码抛出错误:
<iframe
id="iframe1"
name="iframe1"
src="http://localhost:9002/p/6dN6dkWRmd"
height="700px" width="500px"
sandbox="allow-scripts allow-top-navigation">
</iframe>
Run Code Online (Sandbox Code Playgroud)
有人可以解释这个document.domain正在做什么,我该怎么做才能在沙箱环境中运行这个iframe?
注意:没有沙箱,它工作正常.
我们在 Etherpad 中非常广泛地使用了 SocketIO(从很早开始),我们非常感谢团队为提供如此有用的东西所做的所有努力:)
Etherpad 是一个 nodejs 项目。
我的 SocketIO 问题可能是由于我配置错误或理解错误,但经过大量测试工具生成、内存设置调整等。我们仍然获得令人沮丧的每秒最大消息数,达到 10k 大关。
在线阅读看起来切换到 ws 的性能会更好,但我看不出在我们的场景中情况如何,我们的瓶颈不是协商(最终是 websockets)而是服务器每秒处理的消息。
我不愿意尝试其他软件包,所以我想我会来这里寻求一些见解或尝试看看我们是否可以通过很多方式提高性能......通常的节点技巧(访问更多硬件[ ram/cpu]) 有点帮助,但仍然感觉我们获得的收益非常小,而不是您在其他模块基准测试中看到的巨大数字。
这个问题的一个理想结果是让某人查看 Etherpad 代码并告诉我为什么我是个白痴,希望我们可以让 Etherpad 进入每秒 10 万次更改的竞争中,但我也可能对其他模块感到迷茫因此,如果有人有与 ws 之类的基准相矛盾的基准,那么我全神贯注。
我觉得我应该补充一点,我们进行了测试,看看是否是内部 Etherpad 逻辑造成的,但实际上不是,最终导致操作转换算法出现瓶颈的是通信层,我们有 99.95% 的把握。 .
在这个问题上扔更多的硬件不是解决方案,也不是任何反向代理/传递问题的方法。
有没有人有EtherPad数据库架构?我搜索了它,看到了大量的请求,但似乎找不到一个.
我有兴趣看看.我也很好奇EtherPad处理程序如何修改/时间表.他们是否在主垫表中为每个保存创建新记录?
etherpad ×10
javascript ×2
azure ×1
benchmarking ×1
conflict ×1
database ×1
google-docs ×1
iframe ×1
iisnode ×1
jquery ×1
meteor ×1
node.js ×1
operational ×1
performance ×1
schema ×1
socket.io ×1
transform ×1
ws ×1