Markdown kolaboratif online dengan matematika. Fitur Utama:
Didukung oleh Codemirror, Mathjax dan Firebase's Firepad. Saya menggunakan "cm" = codemirror, "mj" = banyak singkatan mathjax dalam proyek.
Kualitas Alpha - Akan memakan matematika Anda, membakar bookmark Anda & mengekspos rahasia Anda. Saya bersungguh -sungguh. Lihat misalnya #85 - Saving terkadang rusak diam -diam, selama setengah tahun ! Saya bekerja untuk membuatnya lebih kuat (dan diuji) tetapi untuk saat ini, hati -hati.
Masalah:
Kode saya berada di bawah lisensi MIT. Pengecualian: Font/ berisi font charter bitstream subseted di bawah lisensi permisif - lihat font/ lisensi.
Ketergantungan:
Codemirror juga MIT.
Mathjax berada di bawah Lisensi Apache 2.0.
Lem Codemirror-Mathjax saya juga MIT.
Editor kolaboratif Firepad adalah MIT. Ini menyebut Firebase Javascipt API.
Firebase adalah layanan berpemilik ; Javascipt API Firebase.js sisi klien mereka juga berpemilik, meskipun tampaknya baik untuk didistribusikan dalam praktik-(#4). [Firbease.js telah secara tidak sengaja dilisensikan MIT untuk sementara waktu tetapi saya telah meningkatkan ke versi yang lebih baru sehingga ini tidak berlaku.]
Saya tidak termasuk firebase.js secara langsung tetapi menggunakannya sebagai submodule git.
Semua data pengguna disimpan di Firebase, sekarang dimiliki oleh Google. Kebijakan Privasi mereka. Akses dokumen (baca dan edit) adalah dengan ID Dokumen Rahasia yang merupakan bagian dari URL. Ini sangat tidak aman kecuali menggunakan HTTPS.
Kelemahannya adalah pengguna tidak dapat benar -benar mengontrol data mereka. Menjalankan salinan situs yang "diselenggarakan sendiri" masih meninggalkan semua data di tangan Firebase. Lihat #4 untuk diskusi lebih lanjut.
Sisi baiknya adalah semua garpu yang saling beroperasi; Anda dapat mengubah desain atau mengubah editor dan masih mengakses dokumen yang sama. Misalnya https://mathdown.net/index.html?doc=demo dan http://rhythmus.be/mathdown/index.html?doc=demo terlihat berbeda tetapi mengakses dokumen yang sama-dan kolaborasi real-time di antara mereka berfungsi!
Saya sejauh ini pada rencana firebase gratis - 100 perangkat (tidak yakin apakah 1: 1 dengan pengguna), penyimpanan data 1GB (digunakan <100mb). => Akan membutuhkan paket 49USD/MO segera setelah saya mendapatkan penggunaan yang tidak dapat diabaikan. https://mathdown.firebaseio.com/?page=analytics (hanya terlihat bagi saya)
Aturan keamanan Firebase saat ini membuat sejarah dokumen hanya ditambahkan. Itu fitur keamanan yang bagus tetapi itu berarti bahwa begitu URL dokumen keluar, itu adalah sejarah penuh selamanya dapat diakses oleh dunia. Ini harus berubah pada akhirnya (#92).
Pada dasarnya apa pun yang didukung Codemirror: IE8+ dan tentang yang lainnya. Tetapi ponsel saat ini hampir tidak dapat digunakan (#81).
Diperlukan JavaScript (dan ini termasuk menjalankan firebase.js yang tidak bebas di browser Anda). Anda bahkan tidak dapat membaca dokumen tanpa JavaScript; Membaca tidak akan sulit untuk diperbaiki (#7)-tetapi mengedit dokumen tanpa JavaScript tidak masuk akal (saya berencana untuk puas dengan formulir yang hanya ditambahkan).
Satu -satunya cookie yang saya sadari:
mjx.menu Cookie ditetapkan selama setahun (?) Jika Anda secara manual mengubah pengaturan Mathjax.Saya tidak yakin Firebase tidak pernah mengatur cookie. Hal -hal akan berubah begitu saya menerapkan login (#50).
Setelah memeriksa, jalankan ini untuk mewujudkan dependensi sisi klien:
Git Submodule Update --inin -in -init
Tambahkan --remote untuk meningkatkan ke versi terbaru dari semua submodul (perlu berkomitmen setelah itu jika ada yang berubah). Kendala yang Diketahui untuk Memperbarui Semua 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).
(Saya langsung bekerja di cabang gh-pages tanpa cabang master . Halaman GH secara otomatis menyelesaikan https: // ... submodul. Ini bukan lagi hosting utama tetapi masih berguna untuk menguji versi statis berfungsi.)
Untuk menginstal dependensi sisi server (dan DevDependencies) yang tercantum dalam package.json run:
npm install
(Tetapi ketika digunakan ke Rhcloud atau Heroku, instalasi NPM mungkin berjalan dalam mode --production dan ketergantungan devdependensi tidak akan tersedia.)
Untuk melihat apakah ada pembaruan yang diperlukan/mungkin, jalankan npm outdated . Untuk memperbarui run:
npm update --save
npm shrinkwrap
Then commit the new `package.json` and `npm-shrinkwrap.json`.
TODO: Temukan cara untuk menggunakan versi node.js yang sama di dev and prod?
test/browser-on-saucelabs.spec.coffee menjalankan tes pada beberapa browser menggunakan pengujian browser gratis milik Sause Labs. Ada beberapa tes yang menyedihkan.
Untuk menjalankan tes:
npm install # once
npm test
Untuk menjalankan hanya beberapa tes dan/atau browser, gunakan:
./node_modules/.bin/mocha --grep firefox
Tes berjalan secara otomatis pada permintaan komit dan tarik apa pun. Saya sudah mencoba beberapa layanan gratis untuk ini, dan saat ini lebih suka Travis:
.travis.yml .wercker.yml ..travis.yml .Penempatan utama saat ini berjalan di Heroku. Lihat Deployment/ Subdirektori untuk detailnya. Saya tertarik untuk kembali ke hosting statis.
Bagaimanapun Anda menjalankannya, Anda dapat membuka ID dokumen yang sama ( doc=... ) dan kolaborasi waktu-nyata akan berfungsi!
Cara cepat untuk menjalankan:
Menyebarkan di Heroku:
heroku create my-mathdown --remote heroku-my-mathdown
git push heroku-my-mathdown gh-pages:master
Beberapa cara lain untuk digunakan di Heroku mungkin tidak berfungsi karena penggunaan submodule saya (?)
Jalankan server lokal ( server.coffee ):
npm install # once
env PORT=8001 npm start # Prints URL you can click
(Anda dapat memilih port apa saja. Ctrl+C ketika selesai.)
Aplikasi ini sebagian besar berfungsi sebagai halaman statis murni, dan saya bermaksud untuk tetap seperti ini.
Dari checkout, cukup buka index.html di browser Anda .
Halaman GitHub melayani cabang GH-Pages di https://cben.github.io/mathdown.
Untuk cabang/komitmen lain, tidak ada solusi sepele - Rawgit.com akan bagus tetapi saat ini tidak mendukung submodules.
Cara termudah untuk menjalankan (dan berbagi) modifikasi yang tidak berkomitmen mungkin adalah cloud 9. Todo: test, detail.
Satu -satunya manfaat yang akan dibawa oleh server dinamis (belum diimplementasikan) adalah:
mathdown.net/foobar bukannya mathdown.net/?doc=foobar URLS (#59).Hal -hal lain yang disebut "MathDown":
Saya harus benar -benar berbicara dengan orang -orang ini apakah tidak apa -apa saya menggunakan nama dan domain ...