Markdown colaborativo en línea con matemáticas. Características principales:
Impulsado por Codemirror, Mathjax y Firebase's Firepad. Estoy usando "CM" = CodeMirror, "MJ" = Abreviaturas de Mathjax mucho en el proyecto.
Calidad alfa: comerá sus matemáticas, quemará sus marcadores y expondrá sus secretos. Lo digo en serio. Ver, por ejemplo, #85: ¡el ahorro a veces se rompió en silencio, durante medio año ! Estoy trabajando para hacerlo más robusto (y probado) pero por ahora, tenga cuidado.
Asuntos:
Mi código está bajo la licencia MIT. Excepción: Font/ Contiene una fuente de chárter BitStream subsettada bajo una licencia permisiva - ver fuentes/ licencia.
Dependencias:
Codemirror también es MIT.
Mathjax está bajo la licencia Apache 2.0.
Mi pegamento CodeMirror-Mathjax también es MIT.
El editor colaborativo Firepad es MIT. Llama a la API de Firebase Javascipt.
Firebase es un servicio propietario ; Su API Javascipt del lado del cliente Firebase.js también es propietario, aunque aparentemente está bien distribuirse en la práctica: (#4). [FirBease.js ha sido accidentalmente licenado por MIT por un tiempo, pero he actualizado a versiones más nuevas para que esto no se aplique.]
No incluyo Firebase.js directamente, sino que lo usa como un submódulo GIT.
Todos los datos del usuario se almacenan en Firebase, ahora propiedad de Google. Su política de privacidad. El acceso a los documentos (leer y editar) es por ID de documento secreto que forma parte de la URL. Esto es muy inseguro a menos que use HTTPS.
La desventaja es que los usuarios realmente no pueden controlar sus datos. Ejecutar una copia "autohospedada" del sitio todavía deja todos los datos en manos de Firebase. Ver #4 para más discusión.
La ventaja es que todas las horquillas interoperan; Puede cambiar el diseño o ajustar el editor y aún acceder a los mismos documentos. Por ejemplo, https://mathdown.net/index.html?doc=demo y http://rththmus.be/mathdown/index.html?doc=demo se ven diferentes pero acceden al mismo documento, ¡y la colaboración en tiempo real entre ellos funciona!
Hasta ahora estoy en el Plan Firebase gratuito: 100 dispositivos (no estoy seguro si 1: 1 con los usuarios), almacenamiento de datos de 1 GB (utilizado <100mb). => Necesitará un plan de 49USD/MO tan pronto como tenga un uso no desplegable. https://mathdown.firebaseio.com/?page=analytics (solo visible para mí)
Las reglas de seguridad actuales de Firebase hacen que el historial de documentos solo adjunte. Esa es una buena característica de seguridad, pero significa que una vez que sale la URL de un documento, su historia completa es para siempre accesible para el mundo. Esto debe cambiar eventualmente (#92).
Básicamente, lo que sea que Codemirror admita: IE8+ y sobre todo lo demás. Pero el móvil es actualmente casi inutilizable (#81).
Se requiere JavaScript (y esto incluye ejecutar Firebase.js no libre en su navegador). Ni siquiera puede leer documentos sin JavaScript; La lectura no será difícil de solucionar (#7), pero la edición de documentos sin JavaScript es inverosímil (planeo conformarme con un formulario de apertura solo).
Las únicas cookies que conozco:
mjx.menu Cookie Set por un año (?) Si cambia manualmente la configuración de MathJax.No estoy seguro de que Firebase nunca establece galletas. Las cosas cambiarán una vez que implemente el inicio de sesión (#50).
Después de visitar, ejecute esto para materializar las dependencias del lado del cliente:
Git Submodule Update --init - -RECURSIVE
Agradecer --remote para actualizar a las versiones más recientes de todos los submódulos (necesita comprometerse después si algo cambia). Restricciones conocidas para actualizar todos los Deps:
* 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).
(Estoy trabajando directamente en la rama gh-pages sin una rama master . Las páginas de GH resuelven automáticamente https: // ... submódulos. Ya no es el alojamiento principal, pero aún es útil probar la versión estática).
Para instalar dependencias del lado del servidor (y Devdependencies) enumeradas en package.json . JSON Ejecutar:
npm install
(Pero cuando se implementa en RhCloud o Heroku, la instalación de NPM podría ejecutarse en el modo --production y las devependencias no estarán disponibles).
Para ver si se necesitan actualizaciones/posibles, ejecute npm outdated . Para actualizar la ejecución:
npm update --save
npm shrinkwrap
Then commit the new `package.json` and `npm-shrinkwrap.json`.
TODO: ¿Encuentra la forma de usar la misma versión Node.js en Dev y Prod?
test/browser-on-saucelabs.spec.coffee ejecuta las pruebas en varios navegadores utilizando pruebas de navegador gratuitas por cortesía de Sause Labs. Hay patéticamente pocas pruebas.
Para ejecutar las pruebas:
npm install # once
npm test
Para ejecutar solo algunas pruebas y/o navegadores, use:
./node_modules/.bin/mocha --grep firefox
La prueba se ejecuta automáticamente en cualquier solicitud de confirmación y extracción. He probado varios servicios gratuitos para esto, y actualmente prefiero Travis:
.travis.yml .wercker.yml ..travis.yml .El despliegue principal actualmente se ejecuta en Heroku. Ver implementación/ subdirectorio para más detalles. Estoy interesado en volver al alojamiento estático.
Sin embargo, lo ejecuta, puede abrir los mismos ID de documento ( doc=... ) y la colaboración en tiempo real funcionará.
Formas rápidas de ejecutar:
Desplegar en Heroku:
heroku create my-mathdown --remote heroku-my-mathdown
git push heroku-my-mathdown gh-pages:master
Algunas otras formas de implementar en Heroku podrían no funcionar debido a mi uso de submódulos (?)
Ejecute el servidor local ( server.coffee ):
npm install # once
env PORT=8001 npm start # Prints URL you can click
(Puede elegir cualquier puerto, por supuesto. Ctrl+C cuando termine).
Esta aplicación funciona principalmente como páginas estáticas puras, y tengo la intención de mantenerla de esta manera.
Desde un pago, simplemente abra index.html en su navegador .
GitHub Pages sirve a la sucursal de GH-PAGE en https://cben.github.io/mathdown.
Para otras ramas/compromisos, no hay una solución trivial: RawGit.com sería excelente, pero actualmente no admite submódulos.
La forma más fácil de ejecutar (y compartir) modificaciones no comprometidas es probablemente la nube 9. TODO: prueba, detalles.
Los únicos beneficios que el servidor dinámico traerá (aún no se implementa) serán:
mathdown.net/foobar en lugar de mathdown.net/?doc=foobar URLS (#59).Otras cosas llamadas "Mathdown":
Realmente debería hablar con estas personas si está bien que esté usando el nombre y el dominio ...