수학과 함께 온라인 공동 작업장. 주요 기능 :
Codemirror, Mathjax 및 Firebase의 파이어 패드로 구동됩니다. 프로젝트에서 "cm"= codemirror, "mj"= mathjax 약어를 많이 사용하고 있습니다.
알파 품질 - 수학을 먹고 북마크를 태우고 비밀을 드러냅니다. 나는 그것을 의미한다. 예를 들어 #85를 참조하십시오 - 절약은 때때로 반년 동안 조용히 깨질 것입니다! 나는 그것을보다 강력하고 테스트하기 위해 노력하고 있지만 지금은 조심하십시오.
문제 :
내 코드는 MIT 라이센스 아래에 있습니다. 예외 : FONT/는 허용 라이센스에 따라 서브 세트 스트림 헌장 글꼴을 포함합니다 - 글꼴/ 라이센스를 참조하십시오.
종속성 :
Codemirror도 MIT입니다.
Mathjax는 Apache 라이센스 2.0에 따라 있습니다.
내 Codemirror-Mathjax 접착제도 MIT입니다.
협업 편집기 FirePad는 MIT입니다. FireBase Javascipt API라고합니다.
Firebase는 독점 서비스입니다. 클라이언트 측 Javascipt API FireBase.js는 독점적이지만 실제로는 분배하는 것이 좋습니다 (#4). [Firbease.js는 실수로 한동안 MIT 라이센스가 있었지만 최신 버전으로 업그레이드하여 적용되지 않습니다.]
나는 firebase.js를 직접 포함시키지 않고 그것을 git 하위 모듈로 사용합니다.
모든 사용자 데이터는 이제 Google이 소유 한 Firebase에 저장됩니다. 그들의 개인 정보 보호 정책. 문서 액세스 (읽기 및 편집)는 URL의 일부인 Secret Document ID에 의한 것입니다. HTTPS를 사용하지 않는 한 이것은 안전하지 않습니다.
단점은 사용자가 실제로 데이터를 제어 할 수 없다는 것입니다. 사이트의 "자체 호스팅 된"사본을 실행하면 여전히 모든 데이터가 Firebase의 손에 남습니다. 자세한 내용은 #4를 참조하십시오.
상승은 모두 포크 상호 작용입니다. 디자인을 변경하거나 편집기를 조정하고 여전히 동일한 문서에 액세스 할 수 있습니다. 예를 들어 https://mathdown.net/index.html?doc=demo 및 http://rhythmus.be/mathdown/index.html?doc=demo는 다르게 보이지만 동일한 문서에 액세스하고 그들 사이의 실시간 공동 작업에 액세스하십시오!
나는 지금까지 Free Firebase Plan -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 쿠키 설정 (?).Firebase가 결코 쿠키를 설정하지 않는지 확신 할 수 없습니다. 로그인 (#50)을 구현하면 상황이 변경됩니다.
체크 아웃 후 클라이언트 측 의존성을 구체화하기 위해이 실행을 실행하십시오.
git submodule update --init -Recursive
추가하십시오 --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 : // ... 서브 모듈을 해결합니다. 더 이상 기본 호스팅은 아니지만 여전히 정적 버전 작업을 테스트하는 것이 유용합니다.)
package.json run에 나열된 서버 측 종속성 (및 devdependencies)을 설치하려면 :
npm install
(그러나 Rhcloud 또는 Heroku에 배포 할 때 NPM 설치는 --production 모드에서 실행될 수 있으며 DevDdependencies를 사용할 수 없습니다.)
업데이트가 필요한지 확인하려면 npm outdated 실행하십시오. 실행 업데이트 :
npm update --save
npm shrinkwrap
Then commit the new `package.json` and `npm-shrinkwrap.json`.
TODO : Dev 및 Prod에서 동일한 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은 훌륭하지만 현재 하위 모듈을 지원하지 않습니다.
커밋되지 않은 수정을 실행 (및 공유)하는 가장 쉬운 방법은 아마도 Cloud 9입니다. TODO : 테스트, 세부 사항.
동적 서버가 가져올 수있는 유일한 이점은 다음과 같습니다.
mathdown.net/foobar urls 대신 Pretier mathdown.net/?doc=foobar (#59)."Mathdown"이라는 다른 것들 :
나는 이름과 도메인을 사용하는 것이 괜찮 든이 사람들과 정말로 이야기해야합니다 ...