Greasemonkey: إضافة نسخة احتياطية / استعادة

تم إنشاؤها على ٥ ديسمبر ٢٠١٧  ·  29تعليقات  ·  مصدر: greasemonkey/greasemonkey

باستخدام greasemonkey القديم ، لم تكن هناك حاجة حقًا إلى وظيفة البرامج النصية / التفضيلات للتصدير ، حيث يمكن للمستخدم نقل دليل gm_scripts من ملف تعريف / كمبيوتر إلى آخر: ولكن الآن لم يعد هذا ممكنًا ، لذا يرجى التفكير في إضافة هذه الوظيفة إلى greasemonkey 4 فى المستقبل.

التعليق الأكثر فائدة

لذلك قمت بتنفيذ ثلاث طرق استيراد مختلفة.

  1. دمج. لا تلمس أي نصوص مثبتة. ستتم إضافة البرامج النصية غير الموجودة حاليًا [1] فقط إلى قاعدة البيانات.
  2. يحل محل. قم بإلغاء تثبيت جميع البرامج النصية الحالية واستبدالها بالنصوص المستوردة.
  3. الكتابة فوق. مثل الدمج ولكن إذا تم العثور على تعارض [1] ، فستكون الأولوية للنصوص التي يتم استيرادها.

انتظار العلاقات العامة الأخرى قبل التقديم.

[1] أحدد التفرد من خلال id للنص البرمجي.

ال 29 كومينتر

حسنًا ، Firefox ومشكلاته. لذلك ، كنت أقوم بتنفيذ هذا (وبالطبع وظيفة "استيراد"). أنا على وشك الانتهاء من ذلك ، ولكن هناك توقف للعرض. إنه يعمل فقط عند فتح browser toolbox وتحديد "لا تغلق النوافذ المنبثقة تلقائيًا". يتم الاستيراد من خلال <input type="file"> (وهي الطريقة الوحيدة) ، ومع ذلك ، عند التركيز على نافذة التصفح ، يتم إغلاق النافذة المنبثقة عادةً ، وبالتالي يتم إتلاف النافذة ولا يتم تنفيذ أي وظائف. الأخطاء ذات الصلة:
https://bugzilla.mozilla.org/show_bug.cgi؟id=1292701
https://bugzilla.mozilla.org/show_bug.cgi؟id=1366330

إنه أمر مزعج للغاية وجود بيئة نصف متقنة للعمل فيها.

أيضًا ، ينطبق على # 2612. والتي يمكن معالجتها في نفس الوقت يتم معالجة هذه المشكلة.

Sxderp إذا كان إغلاق

يمكنني فعل ذلك. سيتضمن نقل مجموعة من التعليمات البرمجية. سوف أنظر في الأمر في وقت آخر.

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

أعتقد أنه من الناحية المثالية يمكن للمستخدم اختيار استبدال أو دمج الاستيراد. لا يتم دمج Stylus إلا ، وهو أيضًا محرر أسلوب إدخال غير صحيح. يبدو اختيار المستخدم ، مع الإعدادات الافتراضية التي قد تعمل ، هو الأفضل.

بالتأكيد ، ولكن بعد ذلك واجهنا الكثير من الشروط. أرغب في رؤية مخطط انسيابي من نوع ما حول طبيعة الدمج _ بالضبط.

في الغالب من حيث النزاعات. هل تريد الكتابة فوق المحتوى ، أو الكتابة فوق المفاتيح / القيم (نعم يتم تصديرها أيضًا) ، والمطالبة بكل شيء (يبدو أنه تجربة مستخدم سيئة) ، وما إلى ذلك؟

أعني فقط: استيراد كل برنامج نصي في الملف (واستبداله تمامًا بهذه الحالة) ، لكن لا تلمس / تحذف البرامج النصية غير الموجودة في الملف.

أوه. هذا أبسط بكثير. نعم ، هذا يبدو جيدًا.

لذلك قمت بتنفيذ ثلاث طرق استيراد مختلفة.

  1. دمج. لا تلمس أي نصوص مثبتة. ستتم إضافة البرامج النصية غير الموجودة حاليًا [1] فقط إلى قاعدة البيانات.
  2. يحل محل. قم بإلغاء تثبيت جميع البرامج النصية الحالية واستبدالها بالنصوص المستوردة.
  3. الكتابة فوق. مثل الدمج ولكن إذا تم العثور على تعارض [1] ، فستكون الأولوية للنصوص التي يتم استيرادها.

انتظار العلاقات العامة الأخرى قبل التقديم.

[1] أحدد التفرد من خلال id للنص البرمجي.

ماذا عن هذا؟

  1. تحديث. فقط قم باستيراد (الكتابة فوق) البرامج النصية الموجودة بالفعل.

هذا مكمل لـ 1. دمج

  1. الكتابة فوق. مثل الدمج ولكن إذا تم العثور على تعارض [1] ، فستكون الأولوية للنصوص التي يتم استيرادها.

Sxderp أعتقد أن "Like merge" لا يتضمن القيد "فقط البرامج النصية غير الموجودة حاليًا" ...
(هذا لا معنى له هنا) وهذا يعني ، الكتابة فوق = استيراد جميع البرامج النصية ، يتم استبدال النصوص البرمجية المتضاربة بواسطة الأرشيف ...

أي من خيارات (التحديث / الدمج / إلخ) هذه يقدمها VM أو TM أو غير ذلك؟

  1. تحديث. فقط قم باستيراد (الكتابة فوق) البرامج النصية الموجودة بالفعل.

بالتأكيد ، يجب أن يكون ذلك ممكنًا.

هذا يعني ، الكتابة فوق = استيراد جميع البرامج النصية ، يتم الكتابة فوق البرامج النصية المتضاربة بواسطة الأرشيف ...

صيح.

أي من خيارات (التحديث / الدمج / إلخ) هذه يقدمها VM أو TM أو غير ذلك؟

لست متأكدا في الواقع. لكن هذا أثار اهتمامي الآخر. التوافق مع المحفوظات. بافتراض أن هذه الوظائف الإضافية تدعم تصدير قاعدة البيانات بالكامل (البرامج النصية + البيانات) ، فمن الأفضل أن تكون الواردات متوافقة مع بعضها البعض.

تحديث. فقط قم باستيراد (الكتابة فوق) البرامج النصية الموجودة بالفعل.

الآن بعد أن فكرت في هذا (كل 3 دقائق) ، لدي قلق. ماذا عن البيانات المرتبطة (get / setValue)؟ هل يجب أن تظل البيانات المخزنة حاليًا؟ هل يجب أن تكون الأولوية للبيانات المستوردة؟ نوع من الدمج؟ ومن ثم تمثيل هذا الخيار / الحالة بوضوح للمستخدم. هذا في الواقع أكثر تعقيدًا من النظرة الأولى.

أجريت بعض الفحوصات السريعة ، هذا ليس شاملاً بنسبة 100٪ ولكنه يعطي نظرة عامة عامة ، بالإضافة إلى ما يجب أن أغيره على الأرجح فيما يتعلق بالتنفيذ الخاص بي.

يتم تصدير كل من VM و TM إلى ملفات مضغوطة. داخل ملفات zip ، يمكنك العثور على ملفات .user.js لكل نص من نصوصك. ومع ذلك ، بالنسبة لتصدير تفاصيل التخزين / التنفيذ المحددة ، كلاهما يفعل ذلك بشكل مختلف قليلاً. يقوم VM بتغليف تفاصيل التنفيذ وبيانات البرنامج النصي ، لما يشبه جميع البرامج النصية ، في ملف واحد ، violentmonkey . TM يفعل هذا بشكل أكثر عقلانية. يتم تصدير تفاصيل التنفيذ المحددة ، لكل برنامج نصي ، إلى ملفات .options.js ، بينما يتم تصدير بيانات البرنامج النصي إلى .storage.json .

أعتقد أنني سأقوم بإعادة صياغة تطبيقي لاتباع TM. بشكل عام ، أعتقد أنه معيار أفضل لأنه يفصل بين تفاصيل التنفيذ والبيانات.

بالنسبة إلى "طريقة الاستيراد" (الموضحة في رسالتي أعلاه):

يوفر TM واجهة "تحديد كل برنامج نصي". عندما تقوم باستيراد أرشيف ، فإنك تحدد ما إذا كنت تريد استيراد كل نص برمجي محدد. إذا قمت بالتحقق منه ، فسيتم الكتابة فوق جميع البيانات الخاصة بهذا النص البرمجي.

يبدو أن VM فقط يقدم ما وصفته أعلاه باسم "الكتابة فوق". ومع ذلك ، هناك خيار عدم استيراد بيانات البرنامج النصي المرتبطة (عالمية لجميع البرامج النصية). من منظور واجهة المستخدم ، أعتقد أن تنفيذ هذا الخيار في GM سيكون صعبًا. ومع ذلك ، إذا اتخذنا نهج TM لتصدير / استيراد قاعدة البيانات ، فيمكن للمستخدم فتح الأرشيف وإزالة الملف .storage.json .

إذا أراد أي شخص الاختبار ، فقد قمت بتحديث فرعي ، sxderp:import-export-database-merge ، لتضمين الوظيفة .zip ناقشتها سابقًا. لم أقم بتطبيق الخيار update الذي اقترحه Eselce لأنني ما زلت غير متأكد من التفاصيل.

Sxderp شكرًا لك على تطوير هذه الميزة. لقد أنشأت الحزمة وقمت بتثبيتها في Firefox Developer Edition (لتمكين تثبيت ملحقات غير موقعة). لقد قمت بترقية ملف تعريف موجود باستخدام إصدار المتصفح هذا ، وقمت بالكتابة فوق تثبيت GreaseMonkey الحالي وقمت بتصدير قاعدة البيانات الخاصة بي دون مشكلة.

تسبب الاستيراد في ملف تعريف Firefox جديد مع تثبيت GreaseMonkey هذا في حدوث مشكلة. يبدو أن نصًا برمجيًا واحدًا محددًا كبيرًا جدًا (يبلغ حجم كل من user.js و gm_details.js حوالي 230 ألفًا يتسبب في حدوث مشكلات في الاستيراد. بعد استبدال قاعدة البيانات ، توقف GM عن العمل. يؤدي النقر فوق رمز GM إلى فتح قائمة منسدلة فارغة (حوالي 10x10 مربع).

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

تحرير: الطريقة الوحيدة لجعل GM تعمل بعد تعطلها هي إزالة الامتداد وإعادة تشغيل Firefox وإضافته مرة أخرى.

GMexport_20180 2 17_164139.zip ؟؟؟

تم استيراد مجموعة كاملة من البرامج النصية الكبيرة (جزئيًا) (> 20) من ملف مضغوط بحجم 3.4 ميجا بايت بدون شكوى. لا يوجد فحص مفصل على الرغم من ...

  return 'GMexport_'
       + date.getFullYear().toString()
       + date.getMonth().toString().padStart(2, '0')
       + date.getDate().toString().padStart(2, '0')
       + '_'
       + date.getHours().toString().padStart(2, '0')
       + date.getMinutes().toString().padStart(2, '0')
       + date.getSeconds().toString().padStart(2, '0')
       + '.zip'

IIRC ، getMonth() يبدأ عند 0 ... ; مفقود ...

IIRC ، getMonth () يبدأ في 0 ... ؛ مفقود...

مزق

لم أعمل في هذا الفرع منذ فترة. سآخذ اليوم وأعيد وضعه على المستوى الرئيسي وأقوم بمجموعة من التنظيف.

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

تم دمجها مع التغييرات في 7fe8bfe94efbadeb1da1a6491aaf424fc8275f09. إعادة الفتح لتتبع / مناقشة بعض القضايا التي رأيتها.

إعادة الفتح لتتبع / مناقشة بعض القضايا التي رأيتها.

ما هي القضايا؟

لقد كان اختبارًا سريعًا لمرة واحدة ، ولست متأكدًا من أن بعض البرامج النصية التي كنت أتوقع أن يتم تثبيتها لم يتم سردها. لكني أريد أن أكررها وأتتبعها بعناية وأدون النتائج. هناك الكثير من الحالات المحتملة.

لقد نظرت أخيرًا في هذا قليلاً.

يدعم فقط .user.js ، و "التفاصيل". والذي يحدث أنه يتضمن المحتوى المطلوب بطريق الخطأ ، لكنه يفتقد إلى الموارد (تسلسل JSON النقطة إلى {} ). سوف AFAICT .setKnownResources() بنقاط فارغة / مكسورة ، وبالتالي تفشل في العمل.

قد يبدو من الأفضل أن يحتوي كل برنامج نصي على مجلد خاص به ، حيث يحتوي هذا المجلد على ملف لـ .user.js ، لكل @require و @resource ، ثم ربما المجلد المتبقي الذي تم تحليله / التفاصيل المخصصة والقيم المخزنة. أعتقد أن هذا قد يكون أفضل بما يكفي لدرجة أنني سأتخلى عن أي توافق عبر الأنظمة الأساسية.

موافق تماما. تمامًا مثل حفظ مستند "كصفحة ويب" ، مما يؤدي إلى إنشاء مستند htm بالإضافة إلى مجلد يحمل نفس الاسم (الأساسي) مع التبعيات ...

والذي يحدث بطريق الخطأ تضمين المحتوى المطلوب ...

لم يكن بالصدفة. يتم تضمينه عن قصد لأي تغييرات محلية قد تحدث. كنت أعتبر الموارد / تتطلب "تفاصيل التنفيذ" ، وبالتالي يتم تصديرها على أنها "تفاصيل". لا يقوم TM حتى بتصدير الموارد / يتطلب.

لكنه يفتقد إلى الموارد (JSON تسلسل النقطة وصولاً إلى {}). سوف AFAICT .setKnownResources () بنقاط فارغة / مكسورة ، وبالتالي تفشل في العمل.

هناك TODO لمعرفة ما إذا كانت النقط تتشنج بشكل جيد. تم دمج هذه الميزة تقنيًا قبل تقديم PR لها.

في الوقت الحالي ، سيتم حل مشكلة Blob بالرقم 2937.

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

هذه هي "الميزة الكبيرة" لـ 4.4 لذا آمل حقًا إنهاء / تحسين هذا قريبًا.

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

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات