与数学的在线协作宣传。主要功能:
由Codemirror,Mathjax和Firebase的Firepad提供支持。我正在使用“ cm” = codemirror,“ mj” = Mathjax缩写在项目中很多。
Alpha质量 - 将吃您的数学,燃烧您的书签并揭露您的秘密。我是认真的。例如,请参见#85-有时储蓄有时会被默默破坏,持续半年!我正在努力使其更加健壮(并经过测试),但现在要小心。
问题:
我的代码在MIT许可下。例外:字体/包含允许许可下的子集Bitstream章程字体 - 请参阅字体/许可证。
依赖性:
Codemirror也是麻省理工学院。
Mathjax在Apache许可证2.0下。
我的codemirror-Mathjax胶也是麻省理工学院。
协作编辑FirePad是麻省理工学院。它称为firebase javascipt api。
Firebase是专有服务;他们的客户端javascipt api firebase.js也是专有的,尽管显然可以在实践中分发 - (#4)。 [firbease.js曾经意外地获得了MIT许可,但我已升级到较新的版本,因此不适用。]
我不是直接包含firbase.js,而是将其用作git子模块。
所有用户数据都存储在现在由Google拥有的Firebase中。他们的隐私政策。文档访问(读取和编辑)是由秘密文档ID,它是URL的一部分。除非使用HTTPS,否则这是严重不安全的。
缺点是用户无法真正控制其数据。该网站的“自托”副本仍将所有数据留在Firebase手中。有关更多讨论,请参见#4。
上升是所有叉子互操作的。您可以更改设计或调整编辑器并仍然访问相同的文档。例如https://mathdown.net/index.html?doc=demo和http://rhythmus.be/mathdown/index.html?doc=demo看起来有所不同,但访问同一文档 - 彼此之间的实时协作!
我掌握了免费的Firebase计划 - 100个设备(不确定是否与用户使用1:1),1GB数据存储(使用<100MB)。 =>一旦我获得不可忽略的用法,就需要49usd/mo计划。 https://mathdown.firebaseio.com/?page= analytics(我只能看到)
当前的Firebase安全规则使文档历史记录仅附加。这是一个不错的安全功能,但这意味着一旦文档的URL出现,它就可以将整个历史记录到世界上。这必须最终改变(#92)。
基本上,无论CodeMirror支持:IE8+以及其他所有内容。但是手机目前几乎无法使用(#81)。
需要JavaScript (这包括在浏览器中运行非免费firebase.js)。没有JavaScript,您甚至无法阅读文档;阅读并不难修复(#7) - 但是没有JavaScript的编辑文档是不可信的(我计划适应仅附加形式的形式)。
我知道的唯一饼干:
mjx.menu cookie设置了一年(?),如果您手动更改MathJax设置。我不确定Firebase永远不会设置饼干。一旦我实现登录(#50),事情就会改变。
检查后,运行此操作以实现客户端依赖性:
git suppodule更新 - init-回报
Append --remote升级到所有子模型的最新版本(如果有任何更改,则需要提交)。更新所有dep的已知限制:
* firepad only includes pre-built dist/firepad.js in tagged versions (after every release they strip it back).
* [CodeMirror-MathJax currently doesn't support MathJax 2.5](https://github.com/cben/CodeMirror-MathJax/issues/33).
(我直接在没有master分支的gh-pages分支中工作。GH页自动解决https:// ... subpodules。它不再是主要托管,但测试静态版本的工作仍然很有用。)
安装package.json中列出的服务器端依赖项(和DevDepentencies)。
npm install
(但是部署到Rhcloud或Heroku时,NPM安装可能会以--production模式运行,而DevDections将无法使用。)
要查看是否需要/可能进行任何更新,请运行npm outdated 。更新运行:
npm update --save
npm shrinkwrap
Then commit the new `package.json` and `npm-shrinkwrap.json`.
TODO:找到在开发和产品中使用相同Node.js版本的方法?
test/browser-on-saucelabs.spec.coffee使用Sause Labs提供的免费浏览器测试对几个浏览器进行测试。可悲的测试很少。
进行测试:
npm install # once
npm test
要仅运行一些测试和/或浏览器,请使用:
./node_modules/.bin/mocha --grep firefox
该测试将在任何提交和拉请请求上自动运行。我已经为此尝试了几种免费服务,目前更喜欢Travis:
.travis.yml控制。wercker.yml控制。.travis.yml控制。目前,主要部署在Heroku上运行。有关详细信息,请参见部署/子目录。我有兴趣回到静态托管。
但是,运行它,可以打开相同的文档ID( doc=... ),实时协作将起作用!
快速运行的方法:
在Heroku上部署:
heroku create my-mathdown --remote heroku-my-mathdown
git push heroku-my-mathdown gh-pages:master
由于我使用子模型(?),其他一些在Heroku上部署的方法可能无法使用(?)
运行本地服务器( server.coffee ):
npm install # once
env PORT=8001 npm start # Prints URL you can click
(完成后,您可以选择任何端口。完成后CTRL+C 。)
该应用主要用作纯静态页面,我打算以这种方式保持它。
从结帐时,只需在浏览器中打开index.html即可。
GitHub页面在https://cben.github.io/mathdown上为GH-pages分支提供服务。
对于其他分支机构/提交,没有琐碎的解决方案-Rawgit.com会很棒,但目前不支持子模型。
最简单的运行(和共享)修改方法可能是云9。todo:测试,详细信息。
动态服务器将带来(尚未实现)的唯一好处是:
mathdown.net/foobar代替mathdown.net/?doc=foobar URL(#59)。其他称为“数学”的东西:
我真的应该和这些人交谈,无论我使用名称和域名是否可以...