Marque de collaboration en ligne avec mathématiques. Caractéristiques principales:
Propulsé par Codemirror, Mathjax et Firebase's Firepad. J'utilise "cm" = codeMirror, "MJ" = MathJax Abréviations dans le projet.
Qualité alpha - mangera vos mathématiques, brûlera vos signets et exposera vos secrets. Je suis sérieux. Voir par exemple # 85 - La sauvegarde était parfois en silence brisée, pendant une demi-année ! Je travaille pour le rendre plus robuste (et testé) mais pour l'instant, soyez prudent.
Problèmes:
Mon code est sous la licence MIT. Exception: Font / Contient une police de charte Bitstream sous-ensemble sous une licence permissive - voir Fonts / License.
Dépendances:
Codemirror est également le MIT.
Mathjax est sous la licence 2.0 Apache.
Ma colle Codemiror-Mathjax est également le MIT.
Le rédacteur en chef collaboratif Firepad est le MIT. Il appelle l'API Javascipt Firebase.
Firebase est un service propriétaire ; Leur API Javascipt API Firebase.js côté client est également propriétaire, bien que apparemment fin à distribuer dans la pratique - (# 4). [Firbease.js a accidentellement été licencié depuis un certain temps, mais je suis passé à des versions plus récentes, donc cela ne s'applique pas.]
Je n'inclus pas directement Firebase.js mais l'utiliser comme sous-module GIT.
Toutes les données utilisateur sont stockées dans Firebase, désormais détenue par Google. Leur politique de confidentialité. L'accès aux documents (lire et modifier) est par ID de document secret qui fait partie de l'URL. Ceci est largement non sécurisé à moins d'utiliser HTTPS.
L'inconvénient est que les utilisateurs ne peuvent pas vraiment contrôler leurs données. L'exécution d'une copie "auto-hébergée" du site laisse toujours toutes les données entre les mains de Firebase. Voir # 4 pour plus de discussions.
L'avantage est que toutes les fourches interopérent; Vous pouvez modifier la conception ou modifier l'éditeur tout en accédant aux mêmes documents. Par exemple https://mathdown.net/index.html?doc=demo et http://rhythmus.be/mathdown/index.html?doc=demo a l'air différent, mais accédez au même document - et une collaboration en temps réel entre eux fonctionne!
Je suis jusqu'à présent sur le plan Free Firebase - 100 appareils (je ne sais pas si 1: 1 avec les utilisateurs), stockage de données 1 Go (utilisé <100 Mo). => Aura besoin d'un plan 49USD / MO dès que j'obtiens une utilisation non négligeable. https://mathdown.firebaseio.com/?page=analytics (seulement visible pour moi)
Les règles de sécurité actuelles de Firebase font de l'historique des documents uniquement. C'est une belle fonctionnalité de sécurité, mais cela signifie qu'une fois que l'URL d'un document sort, son histoire complète est à jamais accessible au monde. Cela doit éventuellement changer (# 92).
Fondamentalement, tout ce que Codemirror prend en charge: IE8 + et à propos de tout le reste. Mais le mobile est actuellement presque inutilisable (# 81).
JavaScript est requis (et cela comprend l'exécution de la Firebase.js non libre dans votre navigateur). Vous ne pouvez même pas lire des documents sans javascript; La lecture ne sera pas difficile à corriger (# 7) - mais l'édition de documents sans JavaScript est invraisemblable (je prévois de me contenter d'un formulaire de consolidation).
Les seuls cookies que je connais:
mjx.menu Cookie set pendant un an (?) Si vous modifiez manuellement les paramètres Mathjax.Je ne suis pas sûr que Firebase ne fixe jamais de cookies. Les choses changeront une fois que j'implémenterai la connexion (# 50).
Après avoir vérifié, exécutez ceci pour matérialiser les dépendances côté client:
Mise à jour du sous-module GIT - Init - réécursive
Ajouter --remote pour passer aux dernières versions de tous les sous-modules (besoin de s'engager par la suite si quelque chose a changé). Contraintes connues sur la mise à jour de tous les 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).
(Je travaille directement dans la branche gh-pages sans branche master . Les pages GH résout automatiquement https: // ... sous-modules. Ce n'est plus l'hébergement principal, mais il est toujours utile de tester la version statique fonctionne.)
Pour installer les dépendances (et DevDependces) listées dans package.json Run:
npm install
(Mais lors du déploiement de Rhcloud ou Heroku, l'installation de NPM peut s'exécuter en mode --production et DevDependces ne sera pas disponible.)
Pour voir si des mises à jour sont nécessaires / possibles, exécutez npm outdated . Pour mettre à jour Run:
npm update --save
npm shrinkwrap
Then commit the new `package.json` and `npm-shrinkwrap.json`.
TODO: Trouver un moyen d'utiliser la même version Node.js dans Dev et Prod?
test/browser-on-saucelabs.spec.coffee exécute des tests sur plusieurs navigateurs en utilisant un test de navigateur gratuit gracieuseté de Sause Labs. Il y a pathétiquement peu de tests.
Pour exécuter les tests:
npm install # once
npm test
Pour exécuter uniquement quelques tests et / ou navigateurs, utilisez:
./node_modules/.bin/mocha --grep firefox
Le test s'exécute automatiquement sur toute demande de validation et de traction. J'ai essayé plusieurs services gratuits pour cela et je préfère actuellement Travis:
.travis.yml .wercker.yml ..travis.yml .Le déploiement principal se déroule actuellement sur Heroku. Voir Déploiement / sous-répertoire pour plus de détails. Je suis intéressé à revenir à l'hébergement statique.
Quoi que vous l'exécutez, vous pouvez ouvrir les mêmes ID de document ( doc=... ) et la collaboration en temps réel fonctionnera!
Façons rapides de courir:
Déployer sur Heroku:
heroku create my-mathdown --remote heroku-my-mathdown
git push heroku-my-mathdown gh-pages:master
D'autres façons de se déployer sur Heroku pourraient ne pas fonctionner en raison de mon utilisation de sous-modules (?)
Exécutez le serveur local ( server.coffee ):
npm install # once
env PORT=8001 npm start # Prints URL you can click
(Vous pouvez choisir n'importe quel port bien sûr. Ctrl + C une fois terminé.)
Cette application fonctionne principalement comme des pages statiques pures, et j'ai l'intention de le garder ainsi.
Depuis un paiement, ouvrez simplement index.html dans votre navigateur .
GitHub Pages sert la branche GH-Pages à https://cben.github.io/mathdown.
Pour les autres branches / commits, il n'y a pas de solution triviale - Rawgit.com serait excellent mais ne prend pas en charge actuellement les sous-modules.
La façon la plus simple d'exécuter (et de partager) des modifications non engagées est probablement le cloud 9. Todo: test, détails.
Les seuls avantages que le serveur dynamique va apporter (non implémenté) sera:
mathdown.net/foobar au lieu de mathdown.net/?doc=foobar URL (# 59).Autres choses appelées "Mathdown":
Je devrais vraiment parler à ces gens, que ce soit OK que j'utilise le nom et le domaine ...