Онлайн -совместная отметка с математикой. Основные особенности:
Основанный на Codemirror, Mathjax и Firebase's Firepad. Я использую "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.
Все пользовательские данные хранятся в Firebase, теперь принадлежащей Google. Их политика конфиденциальности. Доступ к документам доступ (чтение и редактирование) является секретным идентификатором документа, который является частью URL. Это крайне небезопасно, если не использовать HTTPS.
Недостатком является то, что пользователи не могут действительно контролировать свои данные. Запуск «самостоятельной» копии сайта по-прежнему оставляет все данные в руках Firebase. Смотрите № 4 для дальнейшего обсуждения.
Плюс - все вилки взаимодействуют; Вы можете изменить дизайн или настроить редактор и по -прежнему получить доступ к тем же документам. Например, https://mathdown.net/index.html?doc=demo и http://rhythmus.be/mathdown/index.html?doc=demo выглядеть по-другому, но доступ к одному и тому же документу-и сотрудничество между ними в реальном времени работают!
Я так далеко в плане бесплатной пожарной базы - 100 устройств (не уверен, если 1: 1 с пользователями), 1 ГБ хранилища данных (используется <100 МБ). => Потребуется план 49USD/MO, как только я получу невыплачиваемое использование. https://mathdown.firebaseio.com/?page=analytics (только видно для меня)
Текущие правила безопасности Firebase делают историю документов только в добавлении. Это хорошая функция безопасности, но это означает, что как только URL -адрес документа выходит, его полная история навсегда доступна для мира. Это должно измениться в конце концов (#92).
В основном любой кодовой поддерживает: IE8+ и обо всем остальном. Но мобильный в настоящее время почти не используется (#81).
JavaScript требуется (и это включает в себя запуск Non Free Firebase.js в вашем браузере). Вы даже не можете прочитать документы без JavaScript; Чтение не будет сложно исправить (#7)-но редактирование документов без JavaScript неправдоподобно (я планирую согласиться на форму только для приложения).
Единственное, о чем я знаю: я знаю:
mjx.menu Cookie Set на год (?), Если вы вручную измените настройки MathJax.Я не уверен, что Firebase никогда не устанавливает файлы cookie. Все изменится, как только я внедрим вход (#50).
После проверки, запустите это для материализации зависимостей на стороне клиента:
GIT подмодуль
Приложение --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).
(Я напрямую работаю в филиале gh-pages без master ветви. Страницы GH автоматически разрешают https: // ... подмодули. Это больше не является основным хостингом, но все еще полезно протестировать статическую версию.)
Для установки зависимостей на стороне сервера (и DevDependencies), перечисленных в package.json run:
npm install
(Но при развертывании в RHCloud или Heroku установка NPM может работать в режиме --production , и DevDependencies не будут доступны.)
Чтобы увидеть, нужны ли какие -либо обновления/возможно, запустите npm outdated . Чтобы обновить запуск:
npm update --save
npm shrinkwrap
Then commit the new `package.json` and `npm-shrinkwrap.json`.
TODO: Найти способ использовать ту же версию Node.js в Dev и Prod?
test/browser-on-saucelabs.spec.coffee запускает тесты в нескольких браузерах, используя бесплатное тестирование браузеров, предоставленное Sause Labs. Есть патетические тесты.
Чтобы запустить тесты:
npm install # once
npm test
Чтобы запустить только некоторые тесты и/или браузеры, используйте:
./node_modules/.bin/mocha --grep firefox
Тест работает автоматически по любым запросам Commit and Pull. Я попробовал несколько бесплатных услуг для этого, и в настоящее время предпочитаю Трэвис:
.travis.yml .wercker.yml ..travis.yml .Основное развертывание в настоящее время работает на Heroku. См. Развертывание/ подкаталогарь для деталей. Мне интересно вернуться в статический хостинг.
Однако вы запускаете его, вы можете открыть те же идентификаторы документов ( 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 Pages обслуживает филиал GH-Pages по адресу https://cben.github.io/mathdown.
Для других филиалов/коммитов нет тривиального решения - rawgit.com был бы отличным, но в настоящее время не поддерживает подмодулы.
Самый простой способ запустить (и обмениваться) незаконные модификации, вероятно, облачный 9. Todo: тест, детали.
Единственные преимущества, которые динамический сервер принесет (еще не реализован), - это:
mathdown.net/foobar вместо mathdown.net/?doc=foobar urls (#59).Другие вещи, называемые «математикой»:
Я должен действительно поговорить с этими людьми, в порядке ли я, что я использую имя и домен ...