Marcada colaborativa on -line com matemática. Principais recursos:
Alimentado por Codemirror, Mathjax e Firebase Firepad. Estou usando "cm" = codemirror, "mj" = mathjax abreviações muito no projeto.
Qualidade alfa - comerá suas contas, queimará seus favoritos e exporá seus segredos. Quero dizer. Veja por exemplo #85 - A economia às vezes seria silenciosamente quebrada, por meio ano ! Estou trabalhando para torná -lo mais robusto (e testado), mas, por enquanto, tenha cuidado.
Problemas:
Meu código está sob licença do MIT. Exceção: Font/ contém uma fonte de fream BitStream subsettada sob uma licença permissiva - consulte fontes/ licença.
Dependências:
Codemirror também é MIT.
O Mathjax está sob a Licença Apache 2.0.
Minha cola Codemirror-Mathjax também é MIT.
O editor colaborativo Firepad é o MIT. Ele chama a API do Firebase JavaScipt.
Firebase é um serviço proprietário ; O JavaScipp API FireBase.JS do lado do cliente também é proprietário, embora aparentemente bom de distribuir na prática-(#4). [Firbease.js foi acidentalmente licenciado por um tempo, mas eu atualizei para versões mais recentes para que isso não se aplique.]
Não estou incluindo o FireBase.js diretamente, mas o uso como um submódulo Git.
Todos os dados do usuário são armazenados na Firebase, agora de propriedade do Google. Sua política de privacidade. Documents Access (Read and Edit) é por ID do documento secreto, que faz parte do URL. Isso é grosseiramente insuficiente, a menos que o uso de HTTPS.
A desvantagem é que os usuários não podem realmente controlar seus dados. A execução de uma cópia "auto-hospedada" do site ainda deixa todos os dados nas mãos da Firebase. Veja #4 para mais discussão.
A vantagem é todos os garfos interoperados; Você pode alterar o design ou ajustar o editor e ainda acessar os mesmos documentos. Por exemplo, https://mathdown.net/index.html?doc=demo e http://rhythmus.be/mathdown/index.html?doc=demo parecem diferentes, mas acesse o mesmo documento-e a colaboração em tempo real entre elas obras!
Estou tão longe no Plano Firebase Free - 100 dispositivos (não tenho certeza se 1: 1 com usuários), 1 GB de armazenamento de dados (usado <100MB). => Precisará de um plano 49USD/MO assim que eu obtiver uso não negligenciável. https://mathdown.firebaseio.com/?page=analytics (apenas visível para mim)
As regras atuais de segurança do Firebase tornam o histórico de documentos somente o anexo. Esse é um bom recurso de segurança, mas significa que, uma vez que o URL de um documento sai, sua história completa é para sempre acessível ao mundo. Isso deve mudar eventualmente (#92).
Basicamente, o que o Codemirror suportar: IE8+ e sobre todo o resto. Mas o celular está quase inutilizável (#81).
O JavaScript é necessário (e isso inclui a execução do FireBase.js não livre no seu navegador). Você não pode nem ler documentos sem JavaScript; A leitura não será difícil de corrigir (#7)-mas os documentos de edição sem JavaScript são implausíveis (pretendo me contentar com o formulário somente de apego).
Os únicos cookies que eu soube:
mjx.menu Cookie definido por um ano (?) Se você alterar manualmente as configurações de Mathjax.Não tenho certeza se o Firebase nunca define cookies. As coisas mudarão assim que eu implementar o login (#50).
Depois de verificar, execute isso para materializar as dependências do lado do cliente:
Atualização do submódulo Git -Init -Recursiva
Anexe --remote para atualizar para as versões mais recentes de todos os submódulos (precisam se comprometer depois se alguma coisa mudar). Restrições conhecidas na atualização de todos os deícidos:
* 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).
(Estou trabalhando diretamente na filial gh-pages sem uma filial master . As páginas de GH resolvem automaticamente https: // ... submódulos. Não é mais a hospedagem principal, mas ainda é útil testar a versão estática.)
Para instalar dependências do lado do servidor (e devDependências) listadas no package.json run:
npm install
(Mas, ao implantar para Rhcloud ou Heroku, a instalação do NPM pode ser executada no modo --production e as dependências devDendências não estarão disponíveis.)
Para ver se alguma atualização é necessária/possível, execute npm outdated . Para atualizar a execução:
npm update --save
npm shrinkwrap
Then commit the new `package.json` and `npm-shrinkwrap.json`.
TODO: Encontre maneira de usar a versão Node.js no Dev e Prod?
test/browser-on-saucelabs.spec.coffee executa testes em vários navegadores usando testes de navegador grátis, cortesia da Sause Labs. Existem pateticamente poucos testes.
Para executar os testes:
npm install # once
npm test
Para executar apenas alguns testes e/ou navegadores, use:
./node_modules/.bin/mocha --grep firefox
O teste é executado automaticamente em qualquer solicitação de comprometimento e puxão. Eu tentei vários serviços gratuitos para isso e atualmente prefiro Travis:
.travis.yml .wercker.yml ..travis.yml .A principal implantação atualmente é executada no Heroku. Consulte a implantação/ subdiretório para obter detalhes. Estou interessado em voltar à hospedagem estática.
No entanto, você o executa, você pode abrir os mesmos IDs de documentos ( doc=... ) e a colaboração em tempo real funcionará!
Maneiras rápidas de correr:
Implantar no Heroku:
heroku create my-mathdown --remote heroku-my-mathdown
git push heroku-my-mathdown gh-pages:master
Algumas outras maneiras de implantar no Heroku podem não funcionar devido ao meu uso de submódulos (?)
Execute o servidor local ( server.coffee ):
npm install # once
env PORT=8001 npm start # Prints URL you can click
(Você pode escolher qualquer porta, é claro. Ctrl+C quando terminar.)
Este aplicativo funciona principalmente como páginas estáticas puras, e pretendo mantê -lo dessa maneira.
De uma finalização da compra, basta abrir index.html no seu navegador .
As páginas do Github serve a filial de GH-pages em https://cben.github.io/mathdown.
Para outras agências/comérteis, não há solução trivial - o RawGit.com seria ótimo, mas atualmente não suporta submódulos.
A maneira mais fácil de executar (e compartilhar) modificações não comprometidas é provavelmente a nuvem 9. TODO: teste, detalhes.
Os únicos benefícios que o servidor dinâmico trará (ainda não implementado) será:
mathdown.net/foobar mais bonito em vez de mathdown.net/?doc=foobar URLS (#59).Outras coisas chamadas "Mathdown":
Eu realmente deveria falar com esse povo, se está tudo bem que estou usando o nome e o domínio ...