markdown การทำงานร่วมกันออนไลน์กับคณิตศาสตร์ คุณสมบัติหลัก:
ขับเคลื่อนโดย Codemirror, Mathjax และ Firebase ของ Firebase ฉันใช้ "cm" = codemirror, "mj" = mathjax ตัวย่อมากในโครงการ
คุณภาพอัลฟ่า - จะกินคณิตศาสตร์ของคุณเผาบุ๊กมาร์กของคุณและเปิดเผยความลับของคุณ ฉันหมายถึงมัน ดูตัวอย่าง #85 - บางครั้งการออมจะถูกทำลายอย่างเงียบ ๆ เป็นเวลา ครึ่งปี ! ฉันกำลังทำงานเพื่อให้มันแข็งแกร่งขึ้น (และทดสอบ) แต่ตอนนี้ระวัง
ปัญหา:
รหัสของฉันอยู่ภายใต้ใบอนุญาต MIT ข้อยกเว้น: ตัวอักษร/ มีแบบอักษรกฎบัตรบิตสตรีมย่อยภายใต้ใบอนุญาตอนุญาต - ดูแบบอักษร/ ใบอนุญาต
การพึ่งพา:
Codemirror ยังเป็น MIT
Mathjax อยู่ภายใต้ Apache License 2.0
กาว codemirror-mathjax ของฉันก็เป็น MIT เช่นกัน
FirePad บรรณาธิการร่วมกันคือ MIT มันเรียกว่า Firebase Javascipt API
Firebase เป็นบริการ ที่เป็นกรรมสิทธิ์ Javascipt API Firebase.js ฝั่งลูกค้าของพวกเขายังเป็นกรรมสิทธิ์แม้ว่าจะเห็นได้ชัดว่าจะแจกจ่ายในทางปฏิบัติ-(#4) [firbease.js ได้รับการใบอนุญาตโดยไม่ได้ตั้งใจมาระยะหนึ่งแล้ว แต่ฉันได้อัพเกรดเป็นรุ่นใหม่กว่านี้ดังนั้นจึงไม่สามารถใช้ได้]]
ฉันไม่รวม firebase.js โดยตรง แต่ใช้เป็น submodule git
ข้อมูลผู้ใช้ทั้งหมดถูกเก็บไว้ใน Firebase ซึ่งปัจจุบันเป็นเจ้าของโดย Google นโยบายความเป็นส่วนตัวของพวกเขา การเข้าถึงเอกสาร (อ่านและแก้ไข) เป็นรหัสเอกสารลับซึ่งเป็นส่วนหนึ่งของ URL สิ่งนี้ไม่ปลอดภัยอย่างไม่มีการลดเว้นแต่จะใช้ HTTPS
ข้อเสียคือผู้ใช้ไม่สามารถควบคุมข้อมูลได้ การเรียกใช้สำเนา "โฮสต์ตัวเอง" ของไซต์ยังคงทิ้งข้อมูลทั้งหมดไว้ในมือของ Firebase ดู #4 สำหรับการสนทนาเพิ่มเติม
upside คือส้อมทั้งหมดทำงานร่วมกัน; คุณสามารถเปลี่ยนการออกแบบหรือปรับแต่งตัวแก้ไขและยังคงเข้าถึงเอกสารเดียวกัน เช่น https://mathdown.net/index.html?doc=demo และ http://rhythmus.be/mathdown/index.html?doc=demo ดูแตกต่างกัน
ฉันอยู่ในแผน Firebase ฟรี - 100 อุปกรณ์ (ไม่แน่ใจว่า 1: 1 กับผู้ใช้), การจัดเก็บข้อมูล 1GB (ใช้ <100MB) => จะต้องมีแผน 49USD/MO ทันทีที่ฉันได้รับการใช้งานที่ไม่มีสิทธิ์ https://mathdown.firebaseio.com/?page=analytics (มองเห็นได้เท่านั้น)
กฎความปลอดภัยของ Firebase ปัจจุบันทำให้ประวัติเอกสารต่อท้ายเท่านั้น นั่นเป็นคุณลักษณะด้านความปลอดภัยที่ดี แต่ก็หมายความว่าเมื่อ URL ของเอกสารออกมาแล้วประวัติศาสตร์เต็มรูปแบบก็สามารถเข้าถึงได้ตลอดไปทั่วโลก สิ่งนี้จะต้องเปลี่ยนในที่สุด (#92)
โดยพื้นฐานแล้ว Codemirror สนับสนุน: IE8+ และทุกอย่างอื่น แต่ปัจจุบันมือถือไม่สามารถใช้งานได้ (#81)
จำเป็นต้องใช้ JavaScript (และรวมถึงการเรียกใช้ firebase.js ที่ไม่ใช่ฟรีในเบราว์เซอร์ของคุณ) คุณไม่สามารถอ่านเอกสารที่ไม่มีจาวาสคริปต์ได้ การอ่านจะไม่ยากที่จะแก้ไข (#7)-แต่การแก้ไขเอกสารที่ไม่มีจาวาสคริปต์นั้นไม่น่าเชื่อ (ฉันวางแผนที่จะชำระสำหรับแบบฟอร์มต่อท้ายเท่านั้น)
คุกกี้เดียวที่ฉันรู้:
mjx.menu ตั้งค่าเป็นเวลาหนึ่งปี (?) หากคุณเปลี่ยนการตั้งค่า Mathjax ด้วยตนเองฉันไม่แน่ใจว่าเบส Firebase ไม่เคยตั้งค่าคุกกี้ สิ่งต่าง ๆ จะเปลี่ยนไปเมื่อฉันเข้าสู่ระบบ (#50)
หลังจากตรวจสอบแล้วให้เรียกใช้สิ่งนี้เพื่อทำให้การพึ่งพาฝั่งไคลเอ็นต์เป็นรูปธรรม:
Git Submodule Update -Init -Recursive
ผนวก --remote กลับมาอัพเกรดเป็นรุ่นใหม่ล่าสุดของ submodules ทั้งหมด (จำเป็นต้องกระทำหลังจากนั้นหากมีสิ่งใดเปลี่ยนแปลง) ข้อ จำกัด ที่รู้จักกันในการอัปเดต 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).
(ฉันทำงานโดยตรงในสาขา gh-pages โดยไม่มีสาขา master หน้า GH จะแก้ไข https โดยอัตโนมัติ: // ... submodules มันไม่ได้เป็นโฮสติ้งหลักอีกต่อไป แต่ก็ยังมีประโยชน์ในการทดสอบเวอร์ชันคงที่)
ในการติดตั้งการพึ่งพาฝั่งเซิร์ฟเวอร์ (และ 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
การทดสอบจะทำงานโดยอัตโนมัติในการร้องขอและดึงคำขอใด ๆ ฉันได้ลองใช้บริการฟรีหลายอย่างสำหรับเรื่องนี้และปัจจุบันชอบ Travis:
.travis.ymlwercker.yml.travis.ymlการปรับใช้หลักในปัจจุบันทำงานบน Heroku ดูการปรับใช้/ ไดเรกทอรีย่อยสำหรับรายละเอียด ฉันสนใจที่จะกลับไปที่โฮสติ้งแบบคงที่
อย่างไรก็ตามคุณเรียกใช้คุณสามารถเปิดรหัสเอกสารเดียวกัน ( doc=... ) และการทำงานร่วมกันแบบเรียลไทม์จะใช้งานได้!
วิธีการวิ่งด่วน:
ปรับใช้ Heroku:
heroku create my-mathdown --remote heroku-my-mathdown
git push heroku-my-mathdown gh-pages:master
วิธีอื่น ๆ ในการปรับใช้ Heroku อาจไม่ทำงานเนื่องจากการใช้ submodules ของฉัน (?)
เรียกใช้เซิร์ฟเวอร์ท้องถิ่น ( server.coffee ):
npm install # once
env PORT=8001 npm start # Prints URL you can click
(คุณสามารถเลือกพอร์ตใด ๆ แน่นอน Ctrl+C เมื่อเสร็จแล้ว)
แอพนี้ ส่วนใหญ่ ทำงานเป็นหน้าคงที่บริสุทธิ์และฉันตั้งใจจะเก็บไว้ด้วยวิธีนี้
จากการชำระเงิน เพียงแค่เปิด index.html ในเบราว์เซอร์ของคุณ
หน้า GitHub ให้บริการสาขา GH-PAGES ที่ https://cben.github.io/mathdown
สำหรับสาขา/การกระทำอื่น ๆ ไม่มีวิธีแก้ปัญหาเล็กน้อย - rawgit.com จะยอดเยี่ยม แต่ปัจจุบันไม่สนับสนุน submodules
วิธีที่ง่ายที่สุดในการเรียกใช้ (และแบ่งปัน) การแก้ไขที่ไม่มีข้อผูกมัดอาจเป็นคลาวด์ 9. สิ่งที่ต้องทำ: ทดสอบรายละเอียด
ประโยชน์เพียงอย่างเดียวที่เซิร์ฟเวอร์ไดนามิกจะนำมา (ยังไม่ได้ใช้งาน) จะเป็น:
mathdown.net/foobar แทน mathdown.net/?doc=foobar url (#59)สิ่งอื่น ๆ ที่เรียกว่า "Mathdown":
ฉันควรจะคุยกับชาวบ้านเหล่านี้จริงๆว่ามันโอเคที่ฉันใช้ชื่อและโดเมน ...