@gerhard: هل يمكنني تحقيق تنظيف ترميز الأحرف السيئة بعد الهجرة باستخدام Sidekiq؟ أنا جديد جدًا على Discourse لذا قد لا أفهم كيفية عمله.
أو ربما يمكنني استخدام سكريبت SQL مباشرة في MariaDB؟
شكرًا جزيلاً!
@gerhard: هل يمكنني تحقيق تنظيف ترميز الأحرف السيئة بعد الهجرة باستخدام Sidekiq؟ أنا جديد جدًا على Discourse لذا قد لا أفهم كيفية عمله.
أو ربما يمكنني استخدام سكريبت SQL مباشرة في MariaDB؟
شكرًا جزيلاً!
بالتأكيد! يمكنك أيضًا تعديل كل منشور يدويًا. من الأسهل بحوالي 10 أضعاف القيام بذلك مسبقًا عندما يكون من الممكن البدء من جديد.
جربت العديد من الأشياء لمحاولة إصلاح الترميز على جانب MariaDB، لكنني لم أجد حلاً. إليك بعض الكود الذي استخدمته لإصلاح الترميز في استيراد أعمل عليه حاليًا.
### ترميز WIN1252
win_encoded = ''
begin
win_encoded = raw.force_encoding('utf-8').encode("Windows-1252",
invalid: :replace, undef: :replace, replace: ""
).force_encoding('utf-8').scrub
rescue => e
puts "\n#{'-'*50}\nفشل Win1252 لـ \n\n#{raw}\n\n"
win_encoded = ''
end
شكرًا لك ![]()
كانت تجربة مؤلمة. لقد جربت عدة ترميزات وأدرجت عدة منها في المنشور لمقارنتها. بدا أن هذا الحل يحل معظم المشاكل في معظم الأوقات. استغرق مني وقتًا أطول بكثير مما أردت لفهم .scrub، فبدونه كنت سأنتهي بسلاسل لم يعد بإمكان gsub تحليلها.
هل لدى أحدكم حل جيد لاستيراد القوائم المتداخلة من phpBB؟
لست خبيرًا بما يكفي في لغة Ruby لأعرف كيفية التعامل مع الأمر – وأنا أجلس أمام هذا الكود:
def process_lists(text)
# تحويل وسوم القوائم إلى ul ووسوم list=1 إلى ol
# لا يتم دعم list=a، لذا نتعامل معه مثل list=1
# list=9 و list=x لهما نفس نتيجة list=1 و list=a
text.gsub!(/\[list\](.*?)\[\/list:u\]/mi) do
$1.gsub(/\[\*\](.*?)\[\/\*(:m)?\]\n*/mi) { "* #{$1}\n" }
end
text.gsub!(/\[list=.*?\](.*?)\[\/list:o\]/mi) do
$1.gsub(/\[\*\](.*?)\[\/\*(:m)?\]\n*/mi) { "1. #{$1}\n" }
end
end
هل لدى أحدكم فكرة عن كيف يمكن أن يبدو “التكرار” فوق قائمة متداخلة؟
إليك مثال على BBCode:
[list]
[*]
[list=a]
[*]a
[*]b
[*]c
[*]d
[*]e
[/list]
[*]قائمة خارجية
[/list]
هل نظرت في كيفية مساعدة هذه الإضافة الرسمية للخطاب لك مع وسوم LIST؟
لم أراجعها بعد، لكنني سأفعل، شكراً لك. رغم أنني أحاول تجنب استخدامها لأنني لا أريد دعم وسوم BB إضافية على المدى الطويل - فأتفضّل حقاً تحويل المحتوى عند الاستيراد. القوائم المتداخلة ليست عائقاً حاسماً، لكن سيكون من الرائع توفرها.
يمكنك إنشاء نسخة احتياطية، والترقية إلى phpBB 3.2، واستخدام الفرع التجريبي الخاص بي. فهو يدعم BBCode بشكل أفضل بكثير. ![]()
يبدو الأمر مثيرًا للاهتمام، لكنني أفضل عدم الخوض في تعديلات phpBB مرة أخرى. فبغض النظر عن القوائم، فإن عملية الاستيراد أصبحت سلسة إلى حد كبير بالفعل. وهذا سيعيدنا إلى مزيد من العمل والاختبار. لكن من الجيد رؤية تقدم الإصدار 3.2 يسير على نحو جيد.
مرحبًا @helmi
نعم، كنا نكافح مع هذه الأنواع من المشكلات منذ شهر الآن، أثناء هجرة منتدى قديم من vB3 يضم ما يقرب من عقدين من الاستخدامات الغريبة المتنوعة لـ bbcode، والتداخل، والتضمين، وما إلى ذلك.
إن تحقيق هجرة من هذا النوع بنسبة 99.9% مثالية ليس بالأمر الهين. على سبيل المثال، كتبنا كود Ruby لإزالة جميع وسوم bbcode من وسوم الكود لدينا لأن Markdown لا “يعجّب” بوجود bbcode داخل كتل الكود المحاطة بأقواس.
من جانبنا، ما زلنا نعمل على إكمال العديد من روتينات المعالجة المسبقة باستخدام Ruby، ونقترب أكثر فأكثر، لكننا لن نصل أبدًا إلى “الكمال” أو “100%” مع ما يقرب من عقدين من المنشورات من بعض مستخدمي bbcode المبدعين للغاية (ناهيك عن جميع المستخدمين الذين قاموا بالنسخ واللصق في المنشورات، إلخ…)
ما زلنا نعمل على تنظيف المشكلات الناتجة عن التحويل من BBCode إلى MD.
في بعض الأحيان أفكر: “فقط احذفها كلها” … LOL
يبدو أننا لا نزال نواجه بعض المشاكل مع تعديل أسماء المستخدمين أو عدم استيرادها على الإطلاق عند احتوائها على بعض الأحرف الخاصة.
هل هناك مشاكل معروفة في أداة الاستيراد، أم أنني أخطئ في فهم خيار اسم المستخدم unicode في Discourse؟ لقد قمت بتفعيله، لكن القائمة البيضاء لا تزال تحتوي على أحرف مثل (ü, ö, ä). هل يجب عليّ حذف القائمة البيضاء للسماح بجميع أحرف unicode، أم أنني بحاجة إلى سرد جميع الأحرف؟ كان تفكيري أن تفعيل unicode يسمح بجميع الأحرف، بينما تعطيله يسمح فقط بالأحرف المدرجة في القائمة البيضاء.
عند الاستيراد، يبدو أن بعض الأحرف مثل @ أو * يتم استبدالها بـ _ – يمكنني تخيل أن @ قد يسبب مشاكل في نظام الإشارات (@mention)، لكن… أردت فقط التأكد قبل أن نتعامل يدويًا مع جميع هؤلاء المستخدمين قبل الاستيراد (وهو ما سيكون عناءً كبيرًا).
هل لديك أي تلميحات بخصوص ذلك؟
تحياتي،
فرانك
حتى عند تمكين دعم Unicode، لا يزال يسمح فقط بالحروف والأرقام. راجع Unicode usernames and group names
مرحباً،
أولاً وقبل كل شيء، شكرًا لكم على جميع الوثائق والمساعدة المقدمة في هذا الموضوع.
لقد قمت للتو باستيراد منتدى phpBB3 قديم إلى منصة Discourse جديدة تمامًا.
سار كل شيء بسلاسة إلى حد كبير مع 200 ألف مشاركة و20 ألف مرفق، لكن Sidekiq واجه بعض الصعوبة في معالجة كل ذلك بعد الاستيراد.
أواجه الآن مشكلة جديدة تتعلق بوسوم الصور التي كانت مدرجة داخل وسوم الروابط، على النحو التالي:
[url=http://www.casimages.com][img]http://nsm01.casimages.com/img/2009/04/24//090424092900546293539010.jpg[/img][/url]
بعد الاستيراد (تحويل BBCode إلى Markdown)، تظهر هذه الصور كروابط فقط:
[nsm01.casimages.com/img/2009/04/24//090424092900546293539010.jpg](http://www.casimages.com)
هل توجد طريقة لمعالجة/إعادة تشكيل هذه الروابط بحيث تُعرض كصور ويتم رفعها تلقائيًا إلى S3؟
شكرًا مقدّمًا على مساعدتكم
ابحث في إعدادات النظام عن “تحميل عن بعد”
تعديل: أوه، يبدو أن هذه لم تكن مشكلتك. عذراً.
شكرًا لك يا جاي. نعم، لقد قمت بالفعل بتفعيل إعداد “تحميل عن بُعد”. مشكلتي هي أن هذه الصور تُعرض كرابط (وأن عنوان الصورة هو فقط “الجزء المعروض” من الرابط، والهدف لا يتطابق مع محتوى الصورة).
مرحباً،
أمتلك حالياً منتدى تم استيراده من phpbb.
أفكر في استيراد منتدى phpbb آخر (يتضمن 36000 رسالة و230 عضواً) داخل تثبيت Discourse الحالي. يتشارك كلا المنتدىين فئات مشتركة ومستخدمين مشتركين.
يمكن دمج حسابات المستخدمين يدوياً.
أما الرسائل، فبعد الاستيراد سيتم نقلها يدوياً إلى الفئات الموجودة.
هل سيعمل هذا الأمر بشكل سلس باستخدام سكريبت الاستيراد كما هو، أم سيؤدي إلى فوضى؟
ماذا يحدث إذا قمت باستيراد منتدى phpbb وبعض عناوين البريد الإلكتروني للمستخدمين موجودة بالفعل في Discourse الحالي؟
ستحتاج إلى مسح حقول import_id المخصصة، وإلا فسيُعتبر أن المنشورات الجديدة قد تم استيرادها بالفعل.
يبدو أن هذا يتطلب الكثير من التجريب في تثبيت محلي، باستخدام نسخة احتياطية من قاعدة بياناتك الرئيسية.
شكرًا لك على هذه المعلومات القيمة التي لم أكن قد فكرت فيها ![]()
نعم، سأفعل ذلك وأجرب على خادم اختبار لأرى ما إذا كان يمكن إدارته.
بخصوص السياق:
أنا أستضيف منتدى وطنيًا على Discourse حول ركوب الدراجة ذات العجلة الواحدة.
كما أستضيف منتدى phpbb لجمعية محلية للدراجات ذات العجلة الواحدة.
يتشارك كلا المنتدىين بعض المستخدمين نفسه، وهناك مواضيع أو مواضيع نقاش متكررة. الفكرة هي دمج منتدى الجمعية المحلية في المنتدى الوطني بحيث لا تعود هناك مواضيع مكررة، وإنشاء مجموعة أو فئة للمواضيع المتعلقة بالجمعية المحلية.
بالإضافة إلى ذلك، ستنضم الأشخاص الذين يستخدمون فقط منتدى الجمعية المحلية إلى المنتدى الوطني بهذه الطريقة، وربما يجلبون نشاطًا أكبر.
هل لدى أحد فكرة عن السبب وراء عدم تشغيل MySQL في حاوية الاستيراد؟
لقد أجريت عدة محاولات ونجحت دائمًا، لكن الآن أواجه الخطأ التالي:
Can't connect to local MySQL server through topic:30810
عند محاولة بدء الاستيراد، قمت بمراجعة كل شيء ثلاث مرات وأعدت بناء حاوية الاستيراد عدة مرات. كل شيء موجود، لكن يبدو أن MySQL لا يعمل. ![]()
أنا في حالة من الرعب لأن هذا هو الانتقال الفعلي إلى Discourse اليوم.
![]()
هذا يبدو غريبًا. من أين يأتي هذا؟