অপারেশনাল ট্রান্সফর্মেশন লাইব্রেরি?


102

আমি এমন একটি লাইব্রেরি খুঁজছি যা আমাকে একাধিক ব্যবহারকারীর (আলা গুগল ডক্স) মধ্যে রিয়েল-টাইমে পাঠ্যকে সিঙ্ক্রোনাইজ করার অনুমতি দেবে।

আমি অপারেশনাল ট্রান্সফরমেশনকে হোঁচট খেয়েছি, যা আমার প্রয়োজনের সাথে খাপ খায়। এটি বলার পরে, আমি ওটির সংক্ষেপ বুঝতে পারি, তবে ওটিটির গণিত বা বাস্তবায়ন হয় না nor

সুতরাং, আমি ভাবছিলাম যে যদি এমন কোন ড্রাগ'আরড্রপ জাভাস্ক্রিপ্ট লাইব্রেরি আছে যা কোনও পাঠ্য অঞ্চলে প্রবেশ করবে, রূপান্তরগুলি উত্পন্ন করবে, তবে আমাকে অন্য ক্লায়েন্টের সাথে সেই রূপান্তরগুলি প্রয়োগ করার অনুমতি দেবে?

(আমি ইথারপ্যাড উত্সটি অর্জন করেছি, তবে আমি এগুলি থেকে মাথা বা লেজ তৈরি করতে পারি না anyone কেউ যদি ইথারপ্যাডের ওটি প্রয়োগের ক্ষেত্রে কীভাবে কীভাবে উপস্থাপন করতে পারে তা নির্দেশ করতে পারে, এটিও দুর্দান্ত হবে!)


ফায়ারপ্যাস নামে চালিত সহযোগী পাঠ্য সম্পাদককে ফায়ারপ্যাড বলা হয়েছে - ফায়ারপ্যাড.ইও কিছু অনুপ্রেরণা পাওয়ার জন্য কোডটি চেক করুন github.com/FirebaseExtended/firepad
থারাঙ্গা হেভিভিথনা

উত্তর:


57

আমি মনে করি গুগল ওয়েভের ওটি বাস্তবায়নের অংশগুলি ওপেন সোর্স (এবং আরও বেশি অংশ আসছে)।

আপনি যা সন্ধান করছেন এটি এটিই কিনা তা আমি নিশ্চিত নই, তবে ওটির বিকল্প ডিফারেনটিভাল সিঙ্ক্রোনাইজেশন :


6
ডিফ-ম্যাচ-প্যাচ, নীল ফ্রেসিয়ের ( neil.fraser.name/writing/sync ) এর ডিফারেনটিভাল সিঙ্ক্রোনাইজেশন পেপারের সাথে মিলিয়ে কৌতুকটি করেছে! আমাকে সঠিক দিকে নির্দেশ করার জন্য অনেক ধন্যবাদ।
গেমার 2000

আমি যা বুঝি সেগুলি থেকে, ডিফ-ম্যাচ-প্যাচ এবং এক্সটেনশনের মাধ্যমে মোবরাইট (যেহেতু পূর্ববর্তীটি আগেরটি ব্যবহার করে) কেবল পাঠ্য সমর্থন করে, বাইনারি পরিবর্তনগুলি নয়। তবে এইচটিএমএল ফর্ম উপাদানগুলির সাথে সহযোগিতার একটি ডেমো রয়েছে যা এটি সূচিত করে যে এটি কেবল সরল পাঠকে সমর্থন করে না।
গেমারস 2000

এই উত্তরটির পরে "এবং আরও অনেকগুলি অংশের উপর কোনও সুসংবাদ আসছে"?
বার্তি

3
প্রকৃতপক্ষে, গুগল-ডিফ-ম্যাচ-প্যাচ অপারেশনাল ট্রান্সফর্মেশনগুলির বিকল্প পদ্ধতিটি প্রয়োগ করা, যা ডিফারেনটিভাল সিঙ্ক্রোনাইজেশন, ডিএস-এর নীল ফ্রেজার নথিটি পড়তে পারেন পার্থক্যগুলি বোঝার জন্য: neil.fraser.name/writing/sync (OT এই দস্তাবেজে ইভেন্ট পাসিং হিসাবে উল্লেখ করা হয়)। তারা দুটি খুব ভিন্ন পদ্ধতি।
বেনজা

5
এই পুরোনো, কিন্তু যদি আপনি কিছু মনে, আমি opensourced আছে github.com/benjamine/JsonDiffPatch এটা দীর্ঘ স্ট্রিং জন্য নিল এর পার্থক্য-ম্যাচ প্যাচ ব্যবহার করে, কিন্তু এটা arbritrary JS গ্রাফ বস্তুর জন্য কাজ করে
Benja

44

সাবেক ওয়েভ ইঞ্জিনিয়ারদের একটি, সেটির কোলাবোরেটিভ এডিটিং অ্যালগরিদম নামক ShareJS একটি Coffeescript বাস্তবায়ন, এখন নামে প্রকাশ করেছে ShareDB


1
শেয়ার জেএস সম্ভবত সহজ এবং আরও ভাল ডকুমেন্টেড এবং গুগলের ডিফ এবং প্যাচের সাথে মবরাইট কী করে তার চেয়ে বেশি পুনরায় ব্যবহারযোগ্য।
লুক স্ট্যানলে

33

আমি যে সমাধানগুলি পেয়েছি তার সংক্ষিপ্তসার করব।

  • অপারেশনাল ট্রান্সফরমেশন: উদ

    • গুগল ওয়েভ ওটি। পদ্ধতির তথাকথিত বৃহস্পতি পদ্ধতির উপর ভিত্তি করে।
    • ShareJs। গুগল ওয়েভ ওটি হিসাবে একই ওটি অ্যালগরিদমের উপর ভিত্তি করে।
    • Coweb-jsoe। সিওটির উপর ভিত্তি করে - একটি অত্যন্ত পরিশীলিত ওটি পদ্ধতির যা পি 2 পি বার্তার প্রচারকে সমর্থন করে।
    • OpenCoweb। এটি অনেকগুলি অনুরূপ সমস্যার জন্য একটি পূর্ণাঙ্গ ফ্রেমওয়ার্ক সরবরাহ করার জন্য ওপেনকাউব-জেসোইকে উপকৃত করে।
    • ওটি.জেগুলি ভাগ করে নেওয়ার জন্য অপারেশন-প্রকারের উপর ভিত্তি করে।
    • DriveSDK। একটি খুব আকর্ষণীয় এপিআই যা অনেক কিছু করতে পারে - যেমন গ্রাফগুলিতে সহযোগিতা।
    • সোয়েলআরটি অ্যাপাচি ওয়েভের একটি কাঁটাচামচ। এটি সংঘবদ্ধ, এবং সমৃদ্ধ পাঠ্যকে সমর্থন করে।
  • ডিফারেনশিয়াল সিঙ্ক্রোনাইজেশন:

    • নীল ফ্রেজারের থেকে ডিফ-ম্যাচ-প্যাচ।
    • মোবরাইট ডিফ-ম্যাচ-প্যাচ অ্যালগরিদমকে উপস্থাপন করে।
  • সিআরডিটি ( পরিবর্তিত প্রতিলিপিযুক্ত ডেটার প্রকার):

    • প্রচুর আলাদা আলাদা সিআরডিটি অ্যালগরিদম রয়েছে যা ভাগ করে নেওয়া ধরণের প্রয়োগের অনুমতি দেয়। কিছু সিআরডিটি পি 2 পি বার্তা প্রচারের সাথে কাজ করে, কিছু ক্লায়েন্ট-সার্ভার মডেলগুলির উপর নির্ভর করে
    • Yjs আপনাকে স্বেচ্ছায় ডেটা টাইপগুলি ভাগ করতে দেয় (রিচটেক্সট, অ্যারে, হ্যাশ ম্যাপস, .. প্রসারিত)। পি 2 পি যোগাযোগ প্রোটোকলের জন্য অফলাইন সমর্থন এবং সমর্থন (এক্সএমপিপি, ওয়েবসকেট এবং ওয়েবআরটিসি-র জন্য মডিউল রয়েছে)
    • SwarmJS ক্লায়েন্ট সার্ভার অফলাইনে সহায়তার সাথে ডাটাবেস ভাগ করেছে। প্রতিক্রিয়া সঙ্গে ভাল কাজ করে
    • Woot Woot CRDT এর একটি বাস্তবায়ন implementation
    • সিআরডিটি আরেকটি সিআরডিটি বাস্তবায়ন
    • Automerge

গুগল ড্রাইভ এপিআই ওএস ডিএস নয় ব্যবহার করে। developers.google.com/drive/realtime/conflict-resolution
ম্যাথিয়াস বাক

6

ওটি গ্রন্থাগারসমূহ:

HWIOS ওয়েবসকেট প্রকল্পের মধ্যে, নথির রাজ্যগুলিকে সিঙ্ক করতে আমি সফলভাবে উভয়ের একটি কম্বো (সার্ভারসাইডে পাই-ইনফিনোট, ক্লায়েন্টাইডে জিনফিনোট) ব্যবহার করেছি।




4

টার্নকি, বা "ড্র্যাগ এন্ড ড্রপ" সমাধানগুলি ভাগ করে নেওয়ার মত পরিবর্তনযোগ্য স্থিতি নির্ভরযোগ্যতার সাথে সিঙ্ক্রোনাইজ করার জটিলতার কারণে সত্যই বিদ্যমান নেই। ডোমনাডের প্রতিক্রিয়া একটি শালীন রাউন্ডআপ, এবং আমি এখানে উপলভ্য সমাধানগুলির জন্য আরও একটি আধুনিক সংস্করণ পোস্ট করেছি ।

এই প্রশ্নটি বেশ পুরানো, তবে কনভার্জেন্স (অস্বীকৃতি: আমি একজন প্রতিষ্ঠাতা) সেখানে সর্বাধিক টার্নকি সমাধান সরবরাহ করে, যা কেবলমাত্র ডেটা সিঙ্ক্রোনাইজেশনই দেয় না তবে সহযোগী ইউএক্স তৈরির জন্য দরকারী অন্যান্য এপিআইয়ের একটি হোস্ট সরবরাহ করে। এখানে আপনি যেমন অনুরোধ করেছেন ঠিক সেটির উদাহরণ এখানে রয়েছে : একাধিক ক্লায়েন্ট জুড়ে একটি পাঠ্য ক্ষেত্রের সিঙ্ক্রোনাইজেশন।

অন্যথায়, শেয়ারডিবি একটি দুর্দান্ত ওপেন সোর্স সমাধান যা অনেক লোকের প্রয়োজনের সাথে খাপ খায়



2

একটি জেএস ক্লায়েন্ট lib (Strophe.js) দিয়ে আপনি একটি সম্পূর্ণ ক্লায়েন্ট-সার্ভার সিস্টেম তৈরি করতে আমার ক্লায়েন্ট-সাইড ওটি লিব (জেসোটিটিএসটি) সহ একটি ফ্রি এক্সএমপিপি সার্ভার (যেমন জাব্বার.অর্গ) ব্যবহার করতে পারেন।

কোডটি সংশোধন করার সময় পেলে আমি একটি ডেমো ক্লায়েন্ট-সার্ভার চ্যাট সিস্টেমের এসআরসি জমা দেব।


1
প্রায় দুই বছর আগে আপনি লিখেছেন "আমি একটি ডেমোর এসআরসি জমা দেব ..." write আপনি কি কখনও ডেমোটি শেষ করেছেন?
ব্রায়ান ওকলে

দুঃখিত ... তবে আমার কোনও পাবলিক ডেমো প্রকাশের সময় ছিল না! তবে পিএইচপি জন্য বোশ লাইব ব্যবহার করা খুব সহজ! বিদায়
user981836

2

নোড.জেএস এর জন্য এনপিএমের কয়েকটি দুর্দান্ত ওটি গ্রন্থাগার রয়েছে:

  • https://npmjs.org/package/ot - কোডমারির জন্য তৈরি অ্যাডাপ্টার এবং টেক্কা তৈরির পাশাপাশি ক্লায়েন্ট এবং সার্ভার বাস্তবায়ন
  • https://npmjs.org/package/changesets - নোড এবং ব্রাউজারে ব্যবহারযোগ্য প্লেইন ওটি লাইব্রেরি; আপনাকে এমন 'চেঞ্জসেট' তৈরি করতে দেয় (প্রয়োজনীয়ভাবে আলাদা হয়) যা আপনি চারপাশে প্রেরণ করতে পারেন, একে অপরের বিরুদ্ধে রূপান্তর করতে পারেন এবং একটি নথিতে প্রয়োগ করতে পারেন

1

আপনি সিডনেটে ছেলেদের সাথে কথা বলতে পারেন । যদিও সিডা ক্লোজড সোর্স এবং তাদের ওয়েবসাইটে কোনও বিনামূল্যে ট্রায়াল পাওয়া যায় না। আমি ক্যাডার বিকাশের সাথে জড়িত হয়েছি এবং এর সাথে বাণিজ্যিক প্রকল্পগুলিতে কাজ চালিয়ে যাচ্ছি, তাই আপনি যদি এই পথে এগিয়ে যান তবে আমি কিছু প্রতিক্রিয়া / পরামর্শ দিতে সক্ষম হতে পারি।


1

আমি ইথারপ্যাড লাইট সহ ইথারপ্যাড.আর.জি অন্যান্য সমাধানগুলির চেয়ে সেরা।


1
আপনি উদাহরণস্বরূপ ইথারপ্যাডের শ্রেষ্ঠত্বকে প্রমাণ করতে সক্ষম হবেন?
ডি এল নরসিমহান

1

আমরা একটি সহযোগী সম্পাদক তৈরি করছি যা সংস্করণের সাথে অপারেশনাল ট্রান্সফর্মেশনকে সম্মিলিত করে। এইভাবে আমরা অফলাইন এবং অনলাইন উভয় সহযোগকে সমর্থন করতে পারি। আমাদের ওপেন সোর্স স্ট্যাকের অংশ হিসাবে আমরা গতকাল নিজস্ব ওটি লাইব্রেরি প্রকাশ করেছি।

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

আমরা সংস্করণের জন্য একটি লাইব্রেরি অবদান রেখেছি।

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


1

আমি একটি ছোট ইউনিক্সি লিখেছি (একটি কাজ করুন এবং এটি ভাল করুন) লাইব্রেরি যা একটি ওটি নিয়ন্ত্রণ স্তর প্রয়োগ করে, আপনাকে বিভিন্ন ওটি প্রকারে প্লাগ করতে দেয় (সমস্ত শেয়ার জেএস অনুবর্তী প্রকারকে সমর্থন করে)। এটি শেয়ারজেএস এর মতো তবে কম মতামতযুক্ত এবং আরও বিমূর্ত।

https://github.com/marcelklehr/gulf

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.