與數學的在線協作宣傳。主要功能:
由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)。其他稱為“數學”的東西:
我真的應該和這些人交談,無論我使用名稱和域名是否可以...