تخفيض التعاون عبر الإنترنت مع الرياضيات. الميزات الرئيسية:
مدعوم من Codemirror و Mathjax و Firebase's Firepad. أنا أستخدم "CM" = Codemirror ، "MJ" = Mathjax Abbreviations كثيرًا في المشروع.
ألفا جودة - سوف تأكل الرياضيات الخاصة بك ، حرق الإشارات المرجعية الخاصة بك وفضح أسرارك. أعني ذلك. انظر على سبيل المثال #85 - يتم الانهيار في بعض الأحيان بصمت ، لمدة نصف عام ! أنا أعمل على جعلها أكثر قوة (واختبارها) ولكن في الوقت الحالي ، كن حذرًا.
مشاكل:
الكود الخاص بي تحت رخصة معهد ماساتشوستس للتكنولوجيا. الاستثناء: الخط/ يحتوي على خط ميثاق Bitstream المُشكدين بموجب ترخيص متسامح - انظر الخطوط/ الترخيص.
التبعيات:
Codemirror هو أيضا معهد ماساتشوستس للتكنولوجيا.
Mathjax تحت رخصة Apache 2.0.
غراء Codemirror-Mathjax هو أيضا معهد ماساتشوستس للتكنولوجيا.
المحرر التعاوني Firepad هو معهد ماساتشوستس للتكنولوجيا. يدعو Firebase Javascipt API.
Firebase هي خدمة ملكية ؛ يعد Javascipt Api Firebase.js من جانب عميلهم أيضًا ملكًا ، على الرغم من أنه يبدو جيدًا لتوزيعه في الممارسة-(#4). [firtriease.js تم ترخيص معهد ماساتشوستس للتكنولوجيا بطريق الخطأ لبعض الوقت ، لكنني قمت بالترقية إلى إصدارات أحدث بحيث لا ينطبق هذا.]
أنا لا أدرج firebase.js مباشرة ولكن استخدامه كوحدة فرعية git.
يتم تخزين جميع بيانات المستخدم في Firebase ، التي تملكها Google الآن. سياسة الخصوصية الخاصة بهم. وصول المستندات (القراءة والتحرير) هو معرف المستند السري الذي يعد جزءًا من عنوان URL. هذا غير آمن بشكل كبير ما لم يكن استخدام HTTPS.
الجانب السلبي هو أن المستخدمين لا يستطيعون التحكم في بياناتهم حقًا. لا يزال تشغيل نسخة "مستضافة ذاتيًا" من الموقع يترك جميع البيانات في أيدي Firebase. انظر رقم 4 لمزيد من المناقشة.
الاتجاه الصعودي هو كل الشوكات المتداخل. يمكنك تغيير التصميم أو تعديل المحرر والاستمرار في الوصول إلى نفس المستندات. eg https://mathdown.net/index.html؟doc=demo و http://rhythmus.be/mathdown/index.html؟doc=demo تبدو مختلفة ولكن الوصول إلى نفس المستند-والتعاون في الوقت الفعلي بينهم!
أنا حتى الآن في خطة Firebase المجانية - 100 جهاز (لست متأكدًا مما إذا كان 1: 1 مع المستخدمين) ، تخزين بيانات 1 جيجابايت (يستخدم <100 ميجابايت). => سوف تحتاج إلى خطة 49usd/MO بمجرد الحصول على استخدام غير مهم. https://mathdown.firebaseio.com/؟page=analytics (مرئي فقط لي)
تقوم قواعد أمان Firebase الحالية تجعل تاريخ المستند إلحاقًا فقط. هذه ميزة أمان لطيفة ولكنها تعني أنه بمجرد خروج عنوان URL الخاص بالوثيقة ، يكون التاريخ الكامل متاحًا إلى الأبد للعالم. هذا يجب أن يتغير في نهاية المطاف (#92).
في الأساس ، كل ما يدعمه Codemirror: IE8+ وحول كل شيء آخر. لكن الهاتف المحمول غير قابل للاستخدام حاليًا (#81).
مطلوب JavaScript (ويشمل ذلك تشغيل Firebase.js غير المجاني في متصفحك). لا يمكنك حتى قراءة المستندات بدون JavaScript ؛ لن يكون من الصعب إصلاح القراءة (#7)-لكن تحرير المستندات بدون JavaScript غير معقول (أخطط للتسوية للحصول على نموذج إلحاق فقط).
ملفات تعريف الارتباط الوحيدة التي أعرفها:
mjx.menu لمدة عام (؟) إذا قمت بتغيير إعدادات Mathjax يدويًا.لست متأكدًا من Firebase لا يضع ملفات تعريف الارتباط أبدًا. ستتغير الأمور بمجرد تنفيذ تسجيل الدخول (#50).
بعد تسجيل الوصول ، قم بتشغيل هذا لتحقيق تبعيات من جانب العميل:
تحديث الجهاز الفرعي git -init -recursive
إلحاق --remote للترقية إلى أحدث إصدارات من جميع النماذج الفرعية (تحتاج إلى الالتزام بعد ذلك إذا تغير أي شيء). القيود المعروفة على تحديث جميع الاضطراب:
* 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: // ... عوامل فرعية. لم تعد الاستضافة الأساسية ولكن لا يزال من المفيد اختبار الإصدار الثابت.)
لتثبيت التبعيات من جانب الخادم (و DevDependencies) المدرجة في package.json Run:
npm install
(ولكن عند الانتشار إلى Rhcloud أو Heroku ، قد يتم تشغيل تثبيت NPM في وضع --production ولن يتوفر DevDendency.)
لمعرفة ما إذا كانت هناك حاجة إلى أي تحديثات/ممكن ، قم بتشغيل 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.yml .wercker.yml ..travis.yml .يعمل النشر الرئيسي حاليًا على Heroku. انظر النشر/ الدليل الفرعي للحصول على التفاصيل. أنا مهتم بالعودة إلى الاستضافة الثابتة.
ومع ذلك ، يمكنك تشغيله ، يمكنك فتح نفس معرفات المستند ( doc=... ) وسيعمل التعاون في الوقت الفعلي!
طرق سريعة للتشغيل:
نشر على هيروكو:
heroku create my-mathdown --remote heroku-my-mathdown
git push heroku-my-mathdown gh-pages:master
قد لا تعمل بعض الطرق الأخرى للنشر على Heroku بسبب استخدامي للفيروسات الفرعية (؟)
قم بتشغيل الخادم المحلي ( server.coffee ):
npm install # once
env PORT=8001 npm start # Prints URL you can click
(يمكنك اختيار أي منفذ بالطبع. Ctrl+C عند الانتهاء.)
يعمل هذا التطبيق في الغالب كصفحات ثابتة خالصة ، وأعتزم الاحتفاظ به بهذه الطريقة.
من الخروج ، فقط افتح index.html في متصفحك .
يخدم GitHub Pages فرع GH-Pages على https://cben.github.io/mathdown.
بالنسبة للفروع/الالتزامات الأخرى ، لا يوجد حل تافعي - سيكون Rawgit.com رائعًا ولكنه لا يدعم حاليًا عارضات فرعية.
أسهل طريقة لتشغيل (ومشاركة) التعديلات غير الملتزمات هي على الأرجح سحابة 9. TODO: الاختبار ، التفاصيل.
ستكون الفوائد الوحيدة التي سيحضرها الخادم الديناميكي (لم يتم تنفيذها بعد):
mathdown.net/foobar بدلاً من mathdown.net/?doc=foobar urls (#59).أشياء أخرى تسمى "Mathdown":
يجب أن أتحدث حقًا مع هؤلاء القوم سواء كان الأمر على ما يرام ، فأنا أستخدم الاسم والمجال ...