سؤال

أبحث عن مكتبة تسمح لي بمزامنة النص في الوقت الفعلي بين المستخدمين المتعددين (ALA Google Docs).

لقد تعثرت على التحول التشغيلي، والذي يبدو أنه يناسب احتياجاتي. بعد القول أنني أفهم أن جوهر OT، ولكن ليس الرياضيات ولا تنفيذ OT.

وبالتالي، كنت أتساءل عما إذا كانت هناك مكتبة JavaScript Drag'NDrop من شأنها أن توصل إلى منطقة نصية، وإنشاء التحويلات، ثم اسمح لي بتطبيق هذه التحولات على عميل آخر؟

(لقد حصلت على مصدر Etherpad، لكنني لا أستطيع أن أجعل الرأس أو ذيول من ذلك. إذا كان بإمكان أي شخص أن يشير إلى كيفية الاستفادة من تنفيذ OT ETHERPAD، فسيكون رائعا أيضا!)

هل كانت مفيدة؟

المحلول

أعتقد أن أجزاء من تطبيق Google Wave's OT مفتوح المصدر (ومزيد من الأجزاء قادم).

لست متأكدا مما إذا كان هذا هو ما تبحث عنه، ولكن بديل إلى OT هو التزامن التفاضلي:

نصائح أخرى

أصدر أحد مهندس الموجات السابقين تنفيذ قهوة خوارزمية للتحرير التعاونية المسمى SHAREJS، والتي تم تسميتها الآن شارش.

سوف تلخص الحلول التي وجدتها.

  • التحول التشغيلي: على سبيل المثال

    • جوجل موجة ot. ويستند النهج على نهج كوكب المشتري ما يسمى.
    • sharjs. بناء على خوارزمية OT نفس Google Wave OT.
    • coweb-jsoe. بناء على COT - نهج OT متطور للغاية يدعم أيضا انتشار رسائل P2P.
    • OpenCoweb. إنه يرفع OpenCoweb-JSOE من أجل توفير إطار كامل للكثير من المشكلات المشابهة.
    • يعتمد OT.JS على أنواع عمليات السهم.
    • Drivesdk. واجهة برمجة تطبيقية مثيرة جدا للاهتمام يمكن أن تفعل الكثير من الأشياء - مثل التعاون على الرسوم البيانية.
    • Swellrt هو شوكة من موجة أباتشي. يتم توحيده، ويدعم النص الغني.
  • المزامنة التفاضلية:

    • Diff-Match-Patch من نيل فريزر.
    • MobWrite يرفع خوارزمية Diff-Match-Patch.
  • CRDT. (نوع البيانات المنسوخة):

    • هناك الكثير من خوارزميات CRDT المختلفة التي تسمح بتنفيذ الأنواع المشتركة. تعمل بعض CRDTs مع انتشار الرسائل P2P، بعض الاعتماد على نماذج خادم العميل
    • yjs. يتيح لك مشاركة أنواع البيانات التعسفي (Richtext، صفيف، خرائط التجزئة، .. قابل للتمديد). دعم ودعم غير متصل ببروتوكولات اتصالات P2P (هناك وحدات ل XMPP و Websockets و WebRTC)
    • Swarmjs. قاعدة البيانات المشتركة خادم العميل مع دعم غير متصل. يعمل بشكل جيد مع الرد
    • ووت تنفيذ CRDT Woot
    • CRDT. تنفيذ CRDT آخر
    • أتمتة

المكتبات OT:

ضمن مشروع HWIOS Websocket، استخدمت ناجح كومبو كليهما (PY-Inffinote على ServerSide، Jinfinote في Clientside) لمزامنة حالات المستند.

مكتبة OT.JS. https://github.com/operational-transformation/ot.js. قد تكون مفيدة لسيناريوهات المستخدم المتعدد.

حلول تسليم المفتاح، أو حلول "السحب والإسقاط" لهذه المشكلة لم تكن موجودة بالفعل بسبب تعقيد مزامنة الدولة المتطابقة المشتركة بشكل موثوق. استجابة Dmonad هي تقريب لائق، وأنا نشرت نظرة عامة أكثر حداثة على الحلول المتاحة هنا.

هذا السؤال قديم جدا، ولكن التقارب (إخلاء المسئولية: أنا مؤسس) يوفر معظم محلول تسليم المفتاح هناك، مما يوفر ليس فقط تزامن البيانات ولكن مضيف لفية أخرى مفيدة لبناء UX تعاوني. هنا مثال تظهر بالضبط ما طلبته: مزامنة حقل نص عبر عملاء متعددين.

غير ذلك، شارش هو حل كبير مفتوح المصدر يناسب الكثير من احتياجات الناس.

تحقق أيضا من هذه المكتبات JavaScript:

مع JS Client Lib (Strophe.js)، يمكنك استخدام خادم XMPP مجاني (مثل Jabber.org) جنبا إلى جنب مع OT BIB OT LIB (JSOTTEST) لإنشاء نظام خادم عميل كامل.

سأقدم SRC لنظام دردشة خادم العميل Demo عندما يكون لدي وقت لمراجعة التعليمات البرمجية.

NPM لديه بعض مكتبات OT لطيفة لعدة node.js:

  • https://npmjs.org/package/ot. - محولات ل CodeMirror و ACE المدمجة بالإضافة إلى تطبيق العميل والخادم
  • https://npmjs.org/package/changesets. - مكتبة عادي OT قابلة للاستخدام في العقدة والمتصفح؛ يتيح لك بناء "مشكلات" (بشكل أساسي) التي يمكنك إرسالها، وتحولها ضد بعضها البعض وتطبيقها على مستند

يمكنك التحدث إلى الرجال في cedanet.. وبعد على الرغم من أن CEDA مغلق مصدر ولا تتوفر تجربة مجانية على موقع الويب الخاص بها. لقد شاركت في تطوير CEDA ومواصلة العمل معها في المشاريع التجارية، لذلك قد أكون قادرا على تقديم بعض التعليقات / المشورة إذا كنت تنتظر هذا المسار.

أنا الشيء etherpad.org مع etherpad لايت هو متفوقة على الحلول الأخرى.

نحن نبني محرر متعاون يجمع بين التحول التشغيلي مع الإصدار. وبهذه الطريقة يمكننا أن ندعم كلا، دون اتصال و Collab عبر الإنترنت. أصدرنا مكتبة OT الخاصة بنا أمس كجزء من مكدس المصدر المفتوح.

http://interior.substance.io/modules/operator.html.

لقد ساهمنا أيضا في مكتبة للتخلص.

http://interior.substance.io/modules/chronicle.html.

لقد كتبت Unixy صغيرا (قم بعمل شيء واحد وفعله جيدا) مكتبة تنفذ طبقة تحكم OT، مما يتيح لك توصيل أنواع OT مختلفة (يدعم جميع أنواع متوافقة مع جميع SHAREJS). إنه يشبه SHAREJS ولكن أقل رأيها وأكثر مجردة.

https://github.com/marcelklehrh/gulf.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top