تكنولوجيا

ويتضمن موقع ClimWeb أدوات ووظائف تهدف إلى دعم المرافق الوطنية للأرصاد الجوية والهيدرولوجيا (NMHSs) في أنشطتها اليومية لإدارة موقع الويب، وفي توفير المعلومات والخدمات لمستخدميها.

يسعى هذا القسم إلى تقديم اختيار التقنيات ونهج التطوير وتقديم الحزم التي تدعم الوظائف المتاحة على ClimWeb على مستوى عالٍ.

يعد ClimWeb المطور مفتوح المصدر ويتم استضافته على GitHub على https://github.com/wmo-raf/nmhs-cms

إطار عمل ClimWeb الأساسي

تم إنشاء قالب موقع الويب أعلى إطار عمل Wagtail مفتوح المصدر. تم بناء الذعرة نفسها على Django، وهو إطار ويب Python عالي المستوى يشجع التطوير السريع والتصميم النظيف والعملي

إطار عمل كليم ويب

تم أخذ ما يلي في الاعتبار عند اختيار الذعرة كإطار الاختيار:

  • ** بايثون كلغة البرمجة **. يتطلب مجال الطقس والمناخ الكثير من التفاعل مع البيانات العلمية. بايثون هي إحدى لغات البرمجة النصية التي تسهل تطوير إجراءات لمعالجة هذا النوع من البيانات. وبالتالي فإن تطوير موقع ويب باستخدام Python يتيح مرونة تطوير الوظائف القائمة على البيانات

  • سهل الاستخدام: إحدى الميزات الرئيسية لـ Wagtail هي واجهته البديهية وسهلة الاستخدام. وهذا يجعل من السهل على محرري المحتوى إدارة مواقع الويب دون الحاجة إلى تعلم التعقيدات والجوانب الفنية للإطار الأساسي.

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

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

  • الأمان: تم تصميم الذعرة مع وضع الأمان في الاعتبار. يأتي مزودًا بميزات الأمان المضمنة في Django مثل مصادقة المستخدم والتحقق من صحة الإدخال والحماية من أساليب الهجوم الشائعة.

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

  • ميزات المؤسسة المبتكرة: تتضمن الذعرة أذونات المستخدم والمجموعة، وسير عمل المحتوى والإشراف، والتقارير، وتتبع سجل تحرير المحتوى، والميزات الأخرى التي يحتاجها مسؤولو موقع الويب وفرق العمل.

  • خبرة فريق التطوير: يتمتع فريق التطوير الحالي التابع للمرافق الوطنية للأرصاد الجوية والهيدرولوجيا ClimWeb بخبرة واسعة في تطوير المشروعات القائمة على Wagtail وDjango. وهذا يجعلها سريعة في تنفيذ الميزات والوظائف الجديدة

نهج التنمية

نحن نستخدم نهج Django/Wagtail المعياري لتطوير "تطبيقات Django" لتوفير مجموعة من الميزات والوظائف. تطبيق Django/Wagtail عبارة عن حزمة Python توفر مجموعة من الميزات. يمكن إعادة استخدام التطبيقات في مشاريع مختلفة.

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

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

تم تطوير المزيد من الوظائف المتخصصة مثل تطبيقات الذعرة الخارجية التي يمكن توصيلها بمشروع التعليمات البرمجية. يتم بعد ذلك تثبيتها كحزم بايثون منشورة على مؤشر حزمة بايثون (PyPI)، وهو مستودع لبرامج لغة برمجة بايثون.

حزم الوظائف

  • CAP Composer: أداة إنشاء ونشر بروتوكول التنبيه المشترك (CAP) التي توفر وظائف لإنشاء تنبيهات بتنسيق CAP ونشرها.

  • مدير التنبؤات - واجهة لإدارة تنبؤات المدن في المرافق الوطنية للأرصاد الجوية والهيدرولوجيا (NMHSs)

  • GeoManager - يوفر واجهة تفاعلية لإدارة ونشر مجموعات البيانات الجغرافية المرجعية (GIS)

  • مدير الحدود الإدارية: يوفر وظائف لتحميل الحدود وإدارتها وتصورها لبلد ما

  • محرر WebStories - يوفر وظيفة لإنشاء ونشر قصص الويب من Google

  • منشئ الاستطلاعات – يوفر وظيفة لإنشاء الاستطلاعات ونشرها مباشرة في ClimWeb، وتصور النتائج وتحليلها باستخدام الرسومات التفاعلية

حزم تكامل أدوات الطرف الثالث

التسويق عبر البريد الإلكتروني

الاجتماعات عبر الإنترنت

  • تكامل Zoom: دمج Zoom تسجيل الأحداث (الاجتماعات أو الندوات عبر الإنترنت) في صفحات النماذج التي تم إنشاؤها باستخدام Wagtail

أطر واجهة المستخدم والمكتبات


تطوير وظائف جديدة

يتم استخدام النهج المعياري عند تطوير وظائف جديدة ليتم تضمينها في ClimWeb. يجب تطوير الوظيفة الجديدة بشكل منفصل كحزمة Wagtail Python ونشرها على PyPi للتثبيت باستخدام Pip.

ونتبع الخطوات التالية بشكل عام:

  • استكشف الحزم الموجودة في مجتمع Wagtail/Django التي توفر وظائف مماثلة.

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

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

نشر الإنتاج

يتم استخدام Docker لتخزين المكونات المختلفة لـ ClimWeb.

وتشمل الحاويات الأخرى المستخدمة

  • PostgreSQL مع ملحق PostGIS كقاعدة بيانات

  • Nginx كخادم الويب ووكيل الويب

  • Memcached كنظام التخزين المؤقت لطلبات الويب

  • Eclipse Mosquitto كوسيط رسائل MQTT. يستخدم بشكل أساسي لرسائل تنبيهات CAP

ويتم وضعها في ملف تكوين إنشاء عامل إرساء، يُستخدم لنشر المشروع باستخدام Docker Compose.

يتم توفير مستودع التهيئة الذي يجمع جميع المكونات المختلفة في مشروع واحد. يمكن الوصول إلى هذا على https://github.com/wmo-raf/nmhs-cms-init. يتم توفير دليل التثبيت في ملف README الخاص بالمستودع.

إدارة التحديثات

يتم نشر الإصدارات الجديدة مع إصلاحات الأخطاء وتحديثات الميزات بشكل دوري على إصدارات مستودع nmhs-cms.

عندما يكون هناك إصدار جديد، ستعرض واجهة ClimWeb Admin رسالة تشير إلى وجود إصدار جديد. يمكن لمسؤول موقع الويب بعد ذلك اختيار الترقية إلى الإصدار الجديد، بعد الاطلاع على ملاحظات الإصدار المصاحبة لكل إصدار.

تتم الترقية من خلال نقرة زر واحدة، مما يؤدي إلى تشغيل عملية بناء عامل الإرساء مع الإصدارات الجديدة. بمجرد إنشاء الإصدار الجديد بنجاح، تتم إعادة تشغيل الحاوية مع تفعيل الإصدار الجديد.

زر تحديث ClimWeb

في حالات نادرة عندما يفشل مشغل الإنشاء التلقائي، يتم تدريب مسؤولي النظام على إجراء الترقية يدويًا

الأمن في جانغو/الذعرة

يحتوي ClimWeb، باستخدام Django/Wagtail، على ميزات الأمان التالية المضمنة. يمكن العثور على مزيد من التفاصيل حول كل ميزة على https://docs.djangoproject.com/en/5.0/topics/security

  • حماية البرمجة النصية عبر المواقع (XSS).

  • الحماية من التزوير عبر المواقع (CSRF).

  • حماية حقن SQL

  • الحماية من قرصنة النقرات

  • إعدادات الحماية SSL\HTTPS

  • التحقق من صحة رأس المضيف

  • حماية سياسة الإحالة

  • سياسة الفتح عبر الأصل

  • أمان الجلسة

  • حماية المحتوى الذي تم تحميله بواسطة المستخدم

ميزات الأمان الخاصة بـ ClimWeb:

  • القدرة على تغيير عنوان URL المسؤول بشكل دوري

  • آليات النسخ الاحتياطي اليومي

  • منع تسجيل الدخول بالقوة الغاشمة

  • 2 عامل المصادقة لحساب المسؤول