أظن أنني لم يكن يجب أن أخفي هذا السؤال داخل المنشور الآخر.
@gerhard كيف يتم التعامل مع bbcodes المختلفة بشكل مختلف في الوقت الحالي؟ هل حدث هذا بالخطأ أم أنه مقصود؟
أظن أنني لم يكن يجب أن أخفي هذا السؤال داخل المنشور الآخر.
@gerhard كيف يتم التعامل مع bbcodes المختلفة بشكل مختلف في الوقت الحالي؟ هل حدث هذا بالخطأ أم أنه مقصود؟
ما هو معدل استيراد المنشورات في الدقيقة الذي حققتموه عند تجربته على أجهزة أكبر؟ أقوم حاليًا بتشغيل الاستيراد على معالج Xeon من 8 نوى، ويبدو أن الجهاز غير مستغل بالكامل بينما لا يتجاوز المعدل بشكل ملحوظ 1000 منشور/دقيقة.
يعمل الجهاز على قرص NVMe SSD سريع، لذا أفترض أن المشكلة ليست في الإدخال/الإخراج. هل لديكم أي أفكار حول كيفية تحسين السرعة بشكل أكبر؟ أسعى لتحسين النسبة المئوية قليلاً لتقليل إجمالي وقت الاستيراد بساعة أو ساعتين (حاليًا حوالي 14 ساعة).
مرحبًا، لدي مشكلة صغيرة… لقد استوردت وحولت حوالي 100 ألف منشور، ثم اكتشفت أنني نسيت ضبط روابط التحويل بشكل صحيح (بالإضافة إلى عدم ربط الرموز التعبيرية بالإيموجي في ملف settings.yml…). هل توجد طريقة لإعادة استيراد كل شيء بحيث يتم تحليل الروابط بشكل صحيح، دون تغيير أي شيء آخر قمت بإعداده بالفعل؟
إذا قمت بتشغيل السكربت مرة أخرى، هل سيفكر فقط أنه قد استورد بالفعل ولن يفعل شيئًا، أم سيقوم بالعمل؟
من خلال ما رأيته، هذا غير ممكن للأسف. سيفعل ما ذكرته - سيتجاهل المنشورات المستوردة بالفعل.
هل توجد طريقة لجعله ينسى المنشورات المستوردة مؤقتًا ثم يعيد استيرادها؟
(ليس بشكل دائم، حيث سأرغب في إضافة منشورات لاحقًا)
على الأرجح ليس مقصودًا، فعملية تحويل أكواد BB إلى Markdown ليست مثالية بعد.
يبدو ذلك صحيحًا تقريبًا، إلا إذا تمكنت من العثور على وحدة معالجة مركزية بسرعة نواة واحدة أعلى.
هل تملك نسخة احتياطية من الوقت الذي سبقت فيه بدء الاستيراد؟ يمكنك استعادتها ثم بدء الاستيراد مرة أخرى. وإلا فستكون في مأزق وستحتاج إلى البدء من الصفر.
هذا مؤسف. هل ينطبق هذا على الرموز التعبيرية (smilies) أيضًا؟
بمعنى “البدء من الصفر”، هل تقصد إعادة تثبيت discourse؟
أعتذر عن القول، لكن سيكون من الصعب جدًا وعرضة للأخطاء محاولة تصحيح الرموز التعبيرية بعد الاستيراد. لا يمكنني مساعدتك في ذلك إذا كنت ترغب في اتباع هذا المسار.
نعم، بشكل أساسي. يمكنك تخطي بضع خطوات بحذف جميع البيانات وإعادة بناء الحاوية.
./launcher stop app
rm -rf /var/discourse/shared/
./launcher rebuild app
شكرًا لك!
هل تقصد أنه مع هذين الأمرين سيكون المنتدى جاهزًا للاستيراد؟ هل لا توجد خطوات أخرى يجب اتخاذها؟ (ماذا عن السمات والجوائز والمجموعات وكل شيء آخر تم إعداده؟ هل هناك طريقة لنسخ هذه الإعدادات احتياطيًا؟ (حسنًا، أعرف كيفية حفظ السمات واستيرادها، لكن ماذا عن الإعدادات الأخرى؟)) (آسف، الكثير من الأقواس)
أنا في الأساس سعيد جدًا لأنني اكتشفت هذا الآن بدلاً من ذلك في منتصف عملية النقل عندما يكون كل شيء متوقفًا، لذا حان الوقت للإصلاح. لكنني أود تقليل إعادة العمل إلى الحد الأدنى قدر الإمكان…
نعم، بدون نسخة احتياطية، يتعين عليك إعادة القيام بهذه الأمور يدويًا.
إذا لم يكن الأمر واضحًا، فهذا الأمر يمحو قاعدة البيانات بالكامل وتبدأ من الصفر.
هناك عدة طرق لحفظ الإعدادات واستعادتها إذا بحثت عنها.
ولكن كما تم اقتراحه، من الأفضل حقًا إما تنفيذ هذه الخطوات بعد الاستيراد، أو تنفيذها جميعًا وإنشاء نسخة احتياطية تستخدمها كنقطة انطلاق قبل الاستيراد.
مرحباً هلمي،
اكتشف صديق يعمل على تطوير إضافة BB Code مخصصة وجود خلل في أداة الاستيراد، تسبب في عدم عرض وسوم الألوان بشكل صحيح.
وبعبارة صديقه:
يتم إزالة وسوم الألوان عمداً من المنشورات. الخطأ في المحوّل ليس أنه يزيل وسوم الإغلاق فقط. “الخلل” هو أنه لا يزيل وسوم الألوان عند استخدام أسماء الألوان.
الدليل:
https://github.com/discourse/discourse/blob/master/script/import_scripts/ph pbb3/support/text_processor.rb
def clean_bbcodes(text)
# تحتوي العديد من وسوم BBCode في phpbb على قيمة تجزئة (hash) ملصقة بها. أمثلة:
# [url=https://google.com:1qh1i7ky]انقر هنا[/url:1qh1i7ky]
# [quote="cybereality":b0wtlzex]بعض النص.[/quote:b0wtlzex]
text.gsub!(/:(?:\w{8})\]/, ']')
# إزالة وسوم الألوان
text.gsub!(/\[\/?color(=#[a-z0-9]*)?\]/i, "")
end
الجزء الأخير text.gsub!(/\[\/?color(=#[a-z0-9]*)?\]/i, "") هو تعبير نمطي (regex) يلتقط وسوم الألوان التي تحتوي على أكواد تجزئة (hash codes) ويلتقط وسوم إغلاق الألوان، لكنه لا يلتقط وسوم الألوان التي تستخدم أسماء (مثل color=green وما شابه).
الحل: حذف السطر.
text.gsub!(/\[\/?color(=#[a-z0-9]*)?\]/i, "")
نحن في الواقع لا نريده. نرغب في الاحتفاظ ببيانات الألوان، بغض النظر عن كيفية قرارنا عرضها. (بالطبع، هذا هو الحل الخاص بمنتداك. أما بالنسبة لمنصة Discourse، فستقوم على الأرجح بتعديل الكود ليُزيل جميع وسوم الألوان، وليس فقط تلك التي تستخدم أسماء الألوان).
مرحبًا جيرهارد،
بعد اتباع تعليماتك (حيث قمت أولًا بالحذف، ثم أعدت القيام بالكثير من العمل، ثم أخذت نسخة احتياطية، ثم بدأت عملية الاستيراد. ولكنني اكتشفت في منتصف الطريق أنني ارتكبت خطأً ما، لذا قمت بإيقاف الاستيراد وكان عليّ البدء من الصفر مرة أخرى، نظرًا لأن البيانات كانت قد استوردت بالفعل).
لذلك، قمت بحذف كل شيء مرة أخرى.
بعد إعادة بناء التطبيق حتى أتمكن من استعادة نسختي الاحتياطية ثم إجراء عملية الاستيراد، رفض الموقع الاتصال.
عند تشغيل أداة Discourse Doctor، تظهر الرسالة التالية: “إصدار Discourse في [النطاق] غير موجود”، و"غير موجود في localhost". ولا توجد أخطاء أخرى.
ما الذي يجب عليّ فعله؟
لم تكن هناك حاجة لإعادة البناء، بل فقط لاستعادة النسخة الاحتياطية.
أعتقد أنك بحاجة إلى
./launcher start import
أداة Discourse-doctor لا تعرف عن حاوية الاستيراد.
قد تحتاج إلى إعادة بناء التطبيق والاستيراد، حيث يجب أن يكونا من نفس الإصدار.
لقد أعيدت بناء عملية الاستيراد، وأعيدت بناء التطبيق، ولا يزال الرفض للاتصال قائمًا. ![]()
تحتاج إلى إضافة ملف نسخة احتياطية لقاعدة البيانات وملفات phpBB مرة أخرى. ربما قمت بحذفها أثناء إعادة التعيين.
نعم، لقد قمت بحذف تلك العناصر. لكن ألا أحتاج إلى استعادة بياناتي أولاً؟ لقد قمت بإعداد العديد من الأشياء قبل الاستيراد لتجنب إعادة القيام بذلك عند الحاجة إلى إعادة الاستيراد. ألا يعني ذلك الآن مجرد الاستيراد إلى مثيل discourse خام؟
ثم ستقوم باستعادة النسخ الاحتياطي الذي يجب أن يكون موجودًا في /var/discourse/shared/backups/default
ها أنا ذا مرة أخرى، آسف لكن لدي مشكلة أخرى الآن…
المشكلة هذه المرة هي: الرموز التعبيرية! لقد قمت بإضافة كل رمز تعبيري في ملف settings.yml على النحو التالي:
happy: [‘:D’,‘:-D’]
woo: ‘:woo:’
إلخ.
لقد وضعت صور الرموز التعبيرية في المجلد /var/discourse/shared/standalone/import/images/smilies.
عند الاستيراد، لم أرَ أي أخطاء تتعلق بعدم العثور على الرموز التعبيرية أو ما شابه ذلك.
ومع ذلك، لم يتم ربط الرموز التعبيرية بالإيموجي، وتم تحويلها إلى صور في المنشورات.
ما الخطأ الذي ارتكبته؟
شكرًا مرة أخرى على مساعدتكم ووجهات نظركم!
تعديل:
بالطبع… يجب أن أقوم بربطها من phpbb3 وليس phpbb2…
أعتقد أن هذا يحل المشكلة، لكن لا يزال عليّ اختبار ما إذا كانت هذه هي المشكلة حقًا.
تعديل 2: لقد قمت باستيراد جديد الآن مع نسخة احتياطية جديدة لقاعدة بيانات phpbb3 تحتوي على الرموز التعبيرية المضافة. لا تزال الرموز التعبيرية غير موجودة. لقد تم تحويلها إلى صور وهي غير موجودة في مجموعة الإيموجي. ما المشكلة؟
تمكنتُ أخيرًا من ربط الرموز التعبيرية (smilies) بالإيموجي.
نظرًا لأنني واجهتُ الكثير من الصعوبات بسبب وجود أكثر من 150 رمزًا تعبيريًا مخصصًا، جميعها بأسماء صور مختلفة وأكواد مختلفة، إليك دليلًا موسعًا وسريعًا لغيري ممن يواجهون نفس التحدي.
فهم ما يفعله المستورد مع الرموز التعبيرية
كنتُ أظن أنه عند إضافة أكواد الرموز التعبيرية في المستورد ووضع الصور في ملف الصور المخصص، سيتم إضافتها تلقائيًا إلى مجلد الإيموجي. لكن هذا لا يحدث. لذا، ستحتاج إلى استيراد صور الرموز التعبيرية يدويًا إلى الإيموجي.
عند استيرادها، يجب أن تحمل اسم كود الرمز التعبيري الذي ستستخدمه فعليًا. على سبيل المثال، إذا كان لديك رمز تعبيري اسم ملف صورته “cheery_icon0.gif” ويتم عرضه عندما يكتب المستخدم :cheer:، فستحتاج إلى إعادة تسمية تلك الصورة إلى cheer.gif ورفعها إلى مجلد الإيموجي (في لوحة التحكم > تخصيص > إيموجي).
الآن، يصبح الأمر أكثر إثارة للاهتمام عندما يكون لديك مجموعة من الرموز التعبيرية التي تُعرض في phpbb بأشياء مثل:
<;-)
%-)
:3
على سبيل المثال، كان لدي رمز تعبيري:
الكود: <:-) وكان اسمه "_1partyguyhat.gif"
أولاً، كان عليّ تحديد الكود الجديد في discourse، حيث لا يمكن تسمية الملفات بـ ‘<:-)’. ثم إعادة تسمية ملف gif إلى ذلك الكود، وإضافة الخريطة المقابلة إلى ملف الإعدادات.
لذا، بالنسبة لي في تلك الحالة المحددة كان الأمر كالتالي:
party_hat: '<:-)'
عند الاستيراد، يتم ترجمة جميع الحالات في المنشور عندما يكتب شخص ما <
إلى :party_hat:.
ثم سيتم استخدام إيموجي قبعة الحفلة لعرض الرمز التعبيري عندما يكون متاحًا في الإيموجي.
نصائح عندما يكون لديك 120 رمزًا تعبيريًا للتحويل ![]()
استكشاف الأخطاء وإصلاحها في settings.yml
emojis. (لقد أغفلتُ ذلك تمامًا)"yes": ':yes:' لتشفير ذلك الإيموجي المحدد.أتمنى أن يكون هذا قد ساعد أحدكم، فأنا أعلم أنني قضيت ما يقرب من أسبوعين في هذا قبل أن أستطيع استيرادها جميعًا بشكل صحيح في النهاية.