اذهب إلى المحتوى

Hassan Hedr

الأعضاء
  • المساهمات

    2852
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    38

كل منشورات العضو Hassan Hedr

  1. يجب جلب الفحوصات عن طريق مطابقة مُعرّف id المريض مع الحقل cid من جدول الفحوصات وليس مع مُعرّف الفحص نفسه، ليصبح الاستعلام كالتالي: SELECT * FROM testt WHERE cid=$row[tid] ^^^ يمكنك الاستفادة من قراءة المقال التالي:
  2. هذا هو تحديدًا الهدف من تلك الخاصية، وهي تغيير حجم نافذة الاستعراض لاستعراضها إما بالنسبة الحقيقية 100%، أو أي نسبة تختارها تناسب النافذة لديك، لتجنب حدوث هذه المشكلة تأكد دومًا من وجود مساحة فارغة أسفل نافذة الجهاز ما يؤكد أنك تشاهد شاشة الجهاز كاملة، يمكنك أيضًا اختيار "Fit to window" والذي سيعدل مدى التكبير لتصبح مناسبة تمامًا لقياس النافذة لديك
  3. يرجى تبديل صورة الشيفرة بالشيفرة نفسها بشكل نصي عند طرح أي سؤال
  4. يرجى إرفاق الشيفرة التي تحاول تطويرها ضمن نص السؤال، كي تتوضح المشكلة أكثر ونتمكن من المساعدة
  5. بما أنه لا يوجد صفحة بالاسم index.html وهو اسم الصفحة الرئيسية عادة، فإن خادم إضافة Live Server في VSCode يعرض لك كافة الملفات الموجودة في المجلد الحالي المفتوح ضمن VSCode للاختيار منها، يمكنك إما الضغط على اسم الصفحة التي تريدين معاينتها من هذه الصفحة، أو من VSCode يمكنك مباشرة الضغط بالزر الأيمن على ملف الصفحة الذي تريدين معاينته واختيار "Open with Live Server"
  6. الأمر يتعلق بنوع تلك الاستضافة والخطة التي اشتركت بها والمزايا المتاحة لمساحتك من الاستضافة، من ذاكرة ومعالج وعرض حزمة، نوع الاستضافة يلعب أكبر دور في الأداء، يوجد استضافات مشتركة يتم فيها مشاركة موارد الخادم بين عدة مواقع لذا الضغط على إحداها سيسبب بطئًا في الآخر، وهناك استضافات تمنحك خادم وهمي خاص VPS وهذا سيحجز لك بعض الموارد من خادم حقيقي ولا يسمح لأي موقع آخر على نفس الخادم باستخدام مواردك، الموارد المتاحة لك تكون بحسب الخطة التي اشتريتها وهذه تعد أفضل الاستضافات لكنها تحتاج لخبرة تقنية لإعدادها، قد يكون الأفضل لبعض المواقع الاستضافات المشتركة، وقد يكون لبعضها الأفضل حجز VPS بمواصفات بسيطة، وآخر يحتاج مواصفات عالية، الأمر يعتمد بالدرجة الأولى على طبيعة الموقع أو التطبيق الذي تحاول نشره، يمكنك التعرف على أنواع الاستضافات بشكل أكبر والشركات التي تقدم تلك الخدمات من المقال التالي:
  7. يقع بروتوكول رسالة التحكُّم عبر الإنترنت Internet Control Message Protocol -أو اختصارًا ICMP ضمن طبقة الشبكة في نموذج OSI، أو كما يصطلح البعض فوق طبقة الإنترنت مباشرةً، وهو جزءٌ لا يتجزأ من مكدس بروتوكول الإنترنت، أو كما يشار إليها بالمصطلح TCP/IP. عُيِّن الرقم 1 لبروتوكول ICMP تبعًا لمنظمة IANA، وقد صُمِّم ليعمل مثل آلية توليد تقارير عن الأخطاء وخدمة استعلام، ويلعب دورًا مهمًا في خدمة مخطط البيانات مضيف- مضيف في الاتصال الشبكي، وهو الجزء من خدمة IP الذي يلعب دور نظام تغذية راجعة ضمن شبكة اتصال IP، ويضمن إعلام المضيف المرسل، مثل الموجّه أو بوابة النفاذ بالرزم التي لم تصل. يمكن لأي جهاز شبكة IP إرسال رزم بيانات من نوع ICMP، بما في ذلك بطاقات واجهة الشبكة والعديد من الأجهزة الشائع استخدامها. برتوكول ICMP يمكن توضيح دور بروتوكول ICMP في الاتصالات الشبكية بمثالٍ عن فريقٍ مسؤول عن تجميع السيارات باستخدام القطع المُرسلة من المصنع، إذ تُرسَل القطع واحدةً تلو الأخرى، ويُفترض أن تُستلم القطع من قِبل فريق التجميع؛ ولكن أحيانًا لا تصل بعض القطع في وقتها المحدد، أو يحدث تأخيرٌ ما من طرف جهة التوصيل وتكون طريقة توصيل القطع للفريق أسرع، وسيحتاج الفريق في هذه الحالة لطريقةٍ ما يخبر بها المصنع لإعادة إرسال القطع الناقصة، أو إرسال القطع عبر طريق أو جهة توصيل أسرع. يلعب بروتوكول ICMP دور المرسال لتلك المعلومات من المستقبِل إلى المرسل، أما في الواقع البروتوكول أعقد من ذلك، والمثال السابق هو مثالٌ بسيطٌ للتوضيح فقط؛ إذ لا يقتصر دور البروتوكول على إرسال تقرير عن الرزم غير المرسلة أو المضيف المتعذر الوصول إليه، بل يرسل أيضًا رسائل إعادة التوجيه، رسائل صدى echo والرد عليها، ورسائل أخرى سنتطرق إليها لاحقًا. يستخدِم الأمر المشهور PING رسائل الصدى والرد عليها للسماح للمستخدم بإرسال رسالة صدى إلى مضيفٍ مستقبِل وهو بدوره يرسل رسالة رد في حال استقباله للرسالة الأولى. توفر رسائل ICMP للنظام طريقةً لإعلام المضيف المصدر في حال عدم تلقي المضيف البعيد الرزم المرسلة، ولكن لا يرفع بروتوكول ICMP من اعتمادية بروتوكول IP، فهو فعليًا لا يستقبل أو يرسل أي بيانات، بل هو موجودٌ فقط بمثابة نظام تغذيةٍ راجعة، أو موردٍ للتعريف بمشاكل الرزم الضائعة، أو طرق التوجيه غير السليمة. تُعد رسالة تعذر الوصول للوجهة Destination Unreachable إحدى أشهر رسائل بيانات ICMP وأكثرها فائدة، وهناك عدة أسباب لتوليد رسائل تعذر الوصول للوجهة، منها تعذُّر الوصول للشبكة أو للمضيف أو للمنفذ أو للبروتوكول؛ إذ يعيد الموجّه رسائل تعذر الوصول للوجهة تلك إلى المضيف وهو بدوره يعيدها إلى التطبيق الذي ولّد الرزمة الأساسية، وتُعلم رسائل الخطأ التطبيق بإعادة المحاولة مجددًا، أو يمكن للتطبيق المضيف توليد رسالة خطأ وعرضها للمستخدم لإعلامه بمشاكل في اتصال الشبكة. مع أن رسائل تعذر الوصول للوجهة هي الأشهر ويألفها الجميع من خلال استخدامهم للأداة PING، لكن يحتوي بروتوكول ICMP أيضًا العديد من الرسائل الأخرى، منها رسالة إعادة التوجيه التي تستخدمها بوابة النفاذ لإعلام المضيف بتغيير حركة مرور البيانات إلى موجّه آخر. هناك أيضًا رسالة تجاوز الوقت التي يستخدمها الموجّه لإخبار المضيف بأن الرزمة قد تجاوزت مدة عمرها الزمني Time to Live -أو اختصارًا TTL- ولذلك تجاهَلها، وقد تكون مؤشرًا على وجود حلقة تغذية راجعة على الطريق المؤدي للوجهة. تُرسل رسائل إخماد المصدر Source Quench من الموجّه إلى المضيف لإعلامه بأن سعة التخزين المؤقت قد امتلأت ويجب عمل إيقافٍ مؤقت للإرسال للسماح للموجّه باللحاق بسرعة الإرسال. كما يوجد أنواعٌ أخرى من الرسائل، مثل رسالة مشكلة في المعامل parameter ورسالة وجواب طلب قناع العنوان وطلب العلامة الزمنية، وغيرها. لا يرسل بروتوكول ICMP رسائل عن رسائل بروتوكول ICMP نفسه، لأن ذلك سيولّد حلقة تغذية راجعة، إذ ستولّد كل رسالة عائدة من بروتوكول ICMP رسالة ICMP أخرى للطرف المقابل، والتي ستولِّد بدورها رسالةً ثالثة وهكذا، مما سيولد الكثير من رزم ICMP التي ستغرق الشبكة. لنفس السبب السابق لن يرد بروتوكول ICMP على عناوين البث broadcast أو عناوين الإرسال المتعدد multicast؛ فعلى عكس البروتوكولات الأخرى، مثل بروتوكول IP و UDP، لا يؤدي بروتوكول ICMP غرض تبادل البيانات بين المضيفين. إذًا، لا يتفاعل المستخدمون النهائيون مع هذا البروتوكول عدا عن بعض أدوات التحليل، مثل أداة ping و traceroute والتي تُستخدم لاكتشاف مشاكل الشبكة والاتصال بالإنترنت. يمكن اختراق بروتوكول ICMP للهجوم على الأجهزة بما يعرف بالهجوم المميت "Ping of Death"، وهو هجوم سيبراني مشهور يسبِّب مشاكل المنع من الخدمة ضمن الشبكات، تُرسل فيه رزمة IP مصممة لإغراق ذاكرة التخزين المؤقت للجهاز الهدف بغرض إفشال عمل نظامه؛ ويوجد أيضًا هجومٌ آخر يتكون من كميةٍ كبيرةٍ من رسائل ping تمنع حركة مرور البيانات من الوصول للجهاز المستهدف، إذ يمكن منع تلك الاختراقات بسهولة نسبيًا وذلك عبر تضمين فحوصات لقطع IP خلال عملية إعادة التجميع. رسائل ICMP هي مخططات بيانات مغلّفة ضمن رزم IP، وتُستعمل من قبل كلٍ من بروتوكولي (IPv4 (ICMPv4 و (IPv6 (ICMPv6، إذ تبدأ تلك الرزم بترويسة IP متبوعة بترويسة ICMP ثم حقلي النوع والرمز ثم رمز التحقق checksum، وبعدها البيانات، وتعتمد البيانات على حقلي النوع والرمز اللذان يعرِّفان نوع رسالة ICMP المُرسلة. يُعد بروتوكول ICMP أحد أهم مكونات رزمة بروتوكول الإنترنت ويؤدي دورًا مهمًا في الاتصالات الشبكية IP؛ فهو يضمن علم المضيف المرسل في حال عدم استقبال المضيف البعيد لتلك الرزم المُرسلة، مما يوفر معلومات هامة حول مشاكل الشبكة، ويساعد على رفع كفاءة إرسال البيانات على الشبكة من قبل الأطراف جميعًا؛ كما يستخدمه مدراء وفنيو الشبكات أداةً لاكتشاف للمشاكل تساعدهم في تحديد نقاط الفشل ضمن الشبكة، فهذه الأداة لا غنى عنها في التدفق الثابت واللا منتهي من المليارات من رزم IP المرسلة حول العالم في كل ثانية من كل يوم. أسئلة شائعة حول ICMP لماذا لا تحتوي الرزمة من النوع ICMP على أرقام منافذ للمصدر والوجهة؟ يُعد بروتوكول رسالة التحكم بالإنترنت ICMP جزءًا من مكدس بروتوكولات TCP/IP، إذ ينتمي إلى طبقة الإنترنت، بينما توجد أرقام المنافذ ضمن طبقة النقل فقط وهي طبقة فوق طبقة الإنترنت. ما هو بروتوكول ICMP؟ بروتوكول ICMP هو اختصارٌ لبروتوكول رسالة التحكُّم بالإنترنت Internet Control Message Protocol، صُمم ليوفر وظائف إدارية للإرسال عبر الإنترنت، ومن الأمثلة على استخداماته هي رسائل فحوصات الحالة ورسائل الأخطاء المتبادلة بين جهازين على طرفي الاتصال. ما هي الطبقة التي ينتمي إليها ICMP؟ يُعد ICMP جزءًا من مكدس بروتوكولات TCP/IP، ويقع ضمن طبقة الإنترنت وهي الطبقة الثانية في ترتيب الطبقات، ويُشار لبروتوكول ICMP على أنه بروتوكول من الطبقة الثالثة، لأن هذا العدد يدل على طبقة الشبكة في مكدس بروتوكول الاتصال بين الأنظمة المفتوحة OSI، إذ أن طبقة الشبكة في نموذج OSI هي الطبقة الثالثة وتعادل طبقة الإنترنت في مكدس TCP/IP. ترجمة -وبتصرف- للمقال "What is ICMP? The Protocol, Port Number and PING!" لصاحبه Jeff Parker. اقرأ أيضًا طبقة النقل في بروتوكول TCP/IP مدخل إلى شبكات الحواسيب: مصطلحات وفهم طبقات الشبكة دليلك لفهم أمر ping واستخدامه
  8. يمكنك الاشتراك في الدورات والتعلم مهما كان عمرك، يمكنك الدفع باستخدام حسابات أحد أقربائك، ولا يوجد مدة محددة للدورة فعند اشتراكك بأي من الدورات ستحصل على وصول مجاني لمحتواها مدى الحياة مع دعم من قبل فريق من المدربين للاجابة على كافة استفساراتك وحل المشاكل التي تواجهها، يمكنك التعرف أكثر على تفاصيل الاشتراك والدورات والفحص والشهادات من قاعدة المعرفة الخاصة بالأكاديمية، ويمكنك التواصل مع مركز الدعم في حال كان لديك استفسار بخصوص عملية الدفع والتسجيل بما أن عمرك أقل من 18، بالتوفيق لك أمين في دراستك،
  9. النسيان أمر طبيعي ليس فقط في البرمجة بل في باقي المهارات، وهو شيء طبيعي في بداية تعلم أي شيء جديد تكون فيه كمية المعلومات الجديدة كبيرة نسبيًا، مع الوقت ومع زيادة ممارستك ستبدأ تتذكر بعض الشيفرات التي كتبتها مرارًا وتكرارًا دون الحاجة للرجوع إلى أي درس أو مقال أو توثيق لجلبها، مهمتك الأساسية كمبرمج ليست الحفظ، فلكل لغات البرمجة والمكتبات والوحدات الخاصة بها مراجع متاحة يمكنك الرجوع إليها والحصول على المعلومة التي تريد، مهمتك هي في فهم المشكلة والتفكير بطريقة حلها وتجزيئها إلى مشكلات أصغر، لا تشعر بالإحباط فهذا أمر طبيعي يمر فيه الجميع عند بداية تعلم أي مجال جديد، ركز على التدريب المستمر والتطبيق العملي وحل المشكلات الجديدة والبحث عن حلولها، يمكنك الاستفادة من إجابات الأسئلة التالية ولاحظ كيف أنك لست وحدك من يمر بذلك فيي بداية تعلمه:
  10. يمكن اعتبار Redux كمخزن مركزي لحالة التطبيق، يتم إرسال الأحداث إليه من كل المكونات مع تفاصيل عن تلك الأحداث، ويتم التحقق من تلك الأحداث وتحديث الحالة ضمن المخزن بناءًا على شروط موضوعة ضمن reducers، مكتبة Redux كانت موجودة لتحل مشكلة مركزية الحالة قبل وجود Context API، لكن بعد إطلاق تلك الميزة في React أصبح من السهل التعامل مع مشاركة الحالة لعدد من المكونات المتباعدة ضمن شجرة مكونات التطبيق دون الحاجة لمكتبات مثل Redux، يتميز Redux باستخدام reducers لتحديث حالة المخزن وهي توابع تتلقى الأحداث وتغير حالة قسم من بيانات المخزن، لكن يمكن تطبيق نفس الفكرة باستخدام Context API مع الخطاف useReducer. مزايا كل من الطريقتين: Context API: يأتي مسبقًا مع رياكت ولا يحتاج إلى إعداد، ممتاز للبيانات الثابتة مثل حالة الواجهة أو بيانات سيتم تحديثها محليًا فقط. Redux: يحتاج لتثبيت مكتبته وإعدادها، ويحتاج إلى الكثير من الكتابة المتكررة أغلب الوقت لتنفيذ نفس الوظيفة، ويمكن بسهولة إعداده ليتعامل مع البيانات الديناميكية أثناء معالجة حالة التطبيق (كجلب بيانات من خادم نظام خلفي)، ويتوفر له أدوات مطور قوية تساعد حلى تعقب وحل المشاكل بسهولة. في حال كانت الحالة ضمن تطبيقك معقدة ومترابطة بين عدة مكونات وأقسام وتحتاج لمعالجة بيانات ديناميكية تدخل في حساب حالة التطبيق، استخدم Redux، عدا ذلك Context API أسهل وأبسط. يمكنك الاستفادة من قراءة المقالات التالية:
  11. يمكن اعتبار كل مُبدل Switch مع الأجهزة الموصولة به شبكة محلية منفصلة LAN تملك مجال عناوين IP الخاص بها، ودور الموجه الأساسي هو الوصل بين الشبكات الفرعية الموصولة على كل واجهة Interface ضمنه، يمكن تقسيم مجال العناوين 192.168.0.0/16 إلى ثلاث شبكات فرعية يُعنون منها الأجهزة (والواجهات على الموجه) على كل شبكة LAN على حدى وتكون كالتالي: LAN 1: address: 192.168.0.0/17 subnet: 255.255.128.0 IPs range: 192.168.0.1 - 192.168.127.254 LAN 2: address: 192.168.128.0/18 subnet:255.255.192.0 IPs range: 192.168.128.1 - 192.168.191.254 LAN 3: address: 192.168.192.0/18 subnet:255.255.192.0 IPs range: 192.168.192.1 - 192.168.255.254 من مجالات العناوين range السابقة يجب عنونة الأجهزة والواجهات وضبط الشبكة على هذا الأساس، يمكنك الاستفادة من قراءة المقالات التالية:
  12. لا تترك ما تتقنه بل يمكنك الاستفادة من خبرتك في ووردبرس لتوسيع خبراتك ومهاراتك في المجالات الأخرى، يمكنك البدء بتطوير مهاراتك في بناء الواجهات الأمامية، ابدأ بتعلم HTML ثم CSS ثم جافاسكريبت، بعدها سيصبح بإمكانك بناء قوالب ووردبرس بسيطة أو التعديل في تنسيق قوالب تستخدمها؛ تعلم أساسيات ومبادئ PHP، واستفد منها في تطوير القوالب التي بنيتها وإضافة المحتوى من ووردبرس ضمنها، سيصبح بإمكانك تطوير قوالب كاملة جاهزة للاستخدام أو التعديل على القوالب الموجودة. طور خبرتك في PHP واقرأ توثيقات ووردبرس عن أساسيات التوابع التي يوفرها وكيف يمكنك استخدامها لإضافة المزايا على ووردبرس عن طريق الإضافات، تدرب كثيرًا وحاول تنفيذ قوالب وإضافات بمهام بسيطة أو تقليد ما هو موجود مسبقًا بهدف الاستكشاف والتعلم، التدريب وحده كافي لكي يطور من مهارتك، يمكنك الاستفادة وأخذ صورة شاملة عن مجال البرمجة وكيف تتعلمه من المقالين التاليين: والاستفادة من المقالات التالية للاطلاع على تطوير ووردبرس:
  13. تأكد أن نسخة php التي تستخدمها هي في المسار نفسه لملف الإعدادات php.ini، بتنفيذ الأمر التالي سيتم عرض أماكن برامج php التنفيذية بالترتيب، تأكد أن أول نتيجة هي في نفس مسار ملف الإعدادات، وإلا حاول إضافة إعدادات XDebug للملف الخاص بذلك المسار: where php وحاول إضافة الإعداد التالي لقسم إعدادات xdebug ضمن php.ini xdebug.idekey = VSCODE
  14. مكتبة Bootstrap تعتمد على تنسيقات CSS لإضافة التنسيقات للمكونات ضمن صفحات الويب، React Native لتطبيقات الجوال لا يمكنها استخدام تنسيقات CSS، فهي تقنية مستخدمة ضمن متصفحات الويب فقط وليس ضمن التطبيقات الأصلية Native، التنسيقات يمكن التعبير عنها بكائنات Objects فيها مفاتيح لخواص التنسيقات تُشبه بأسمائها تنسيقات CSS، يمكن تثبيت واستخدام مكتبة react-native-bootstrap-styles التي تحوي كائنات تنسيقات تطابق أسمائها أسماء الأصناف في Bootstrap كالتالي: const { styles: s, constants: c } = bootstrapStyleSheet; ... <View style={[s.body]}> <View style={[s.container, s.h100, s.justifyContentCenter]}> <Text style={[s.text, s.title]}>مرحبًا</Text> </View> </View>
  15. يرجى تعديل السؤال وإرفاق الشيفرة ضمن الصورة بشكل نصي، لا داعي لاستخدام while مع break للتحقق من مساواة الاسم المدخل مع قيمة العنصر الحالي، يمكن استخدام if مباشرةً بدلًا منها، وبعد العثور على القيمة وعرضها يمكن الخروج من البرنامج باستخدام quit كالتالي: for key, value in phone_book.items(): if xx == value: print(...) print('thank you') quit() // نخرج من البرنامج عند العثور على القيمة بعد تنفيذ الشيفرة السابقة يمكن طباعة رسالة تعبر عن عدم العثور على اسم صاحب الهاتف: for key, value in phone_book.items(): // .. print('Phone not found') ويمكن التحقق من صحة الرقم المُدخل قبل بدء عملية البحث والخروج من البرنامج حتى لا يتم تنفيذ الشيفرات اللاحقة: if len(xx) != 10: print('Invalid phone number, please enter a 10 digit number') quit() for key, value in phone_book.items(): // .. يمكنك الاستفادة من قراءة المقالات التالية:
  16. النموذج DoctorProject يمثل جدولًا في قاعدة البيانات، ويرتبط معه جداول أخرى، إحداها الجدول الممثل بالنموذج DoctorProjectPayed بعلاقة تسمى transactions، للتعرف عليها أكثر ضمن النموذج ستلاحظ وجود دالة بنفس الاسم: class DoctorProject extends Model { //.. function transactions(){ //.. } } بعد جلبك لسجل من نموذج DoctorProject وتعيينه للمتغير operation$ يمكنك الوصول للسجلات المرتبطة معه عبر اسم العلاقة السابقة transactions، والتابع each يمر على كل عنصر من تلك السجلات المرتبطة وينفذ التابع الممرر له، ضمن التابع في مثالك يتم تعيين العلاقة doctorProject ضمن السجل transaction وربطها مع السجل operation، تفاصيل تضمين المشروع وبنية تصميم الجداول ستوضح لك أكثر الفائدة من تلك العملية، يمكنك الاستفادة من قراءة المقالات التالية:
  17. كلا المكونين يستخدمان لإظهار قائمة طويلة يمكن التمرير scrolling عبرها: ScrollView يُستخدم لعرض أي نوع من البيانات داخله، كمكون ذو ارتفاع أكبر من الشاشة حتى يتمكن المستخدم من التمرير ومشاهدة المكون بأكمله. FlatList مخصص لعرض البيانات المتكررة حيث يعرضها أيضًا ضمن تنسيق قابل للتمرير scrolling. الفرق أن ScrollView يُحمل المكونات داخله مباشرة إلى الذاكرة، بينما يُحمل المكون FlatList فقط المكونات الظاهرة على الشاشة للمستخدم، ويُحمل باقي المكونات عند التمرير عليها ويفرغ من الذاكرة المكونات التي أصبحت خارج الشاشة، لذا نستخدم المكون FlatList عند عرض قوائم بيانات طويلة لتوفير استخدام الذاكرة، أما ScrollView خلاف ذلك. يمكنك القراءة أكثر في صفحة مرجع المكون FlatList وصفحة استخدام المكون ScrollView، والاستفادة من المقال التالي:
  18. يمكنك الدخول إلى محرر القوالب ضمن واجهة التحكم إذا كان لحسابك صلاحية ذلك: بعدها اختر ملف functions.php الخاص بالقالب المفعل حاليًا للتعديل عليه، وأضف الشيفرة التالية في النهاية: add_action('after_setup_theme', function() { $file = get_stylesheet_directory() . '/rtl.css'; touch($file); }); وحدث الملف، سيتم بعدها إنشاء ملف rtl.css ستجده ضمن قائمة الملفات يمكنك الآن تعديل محتوياته، وبعد إنشاء ذلك الملف بنجاح يمكنك إزالة الشيفرة السابقة من ملف functions.php
  19. بروتوكول إدارة الشبكة البسيط Simple Network Management Protocol -أو اختصارًا SNMP- هو بروتوكول اتصال يسمح لنا بمراقبة تجهيزات الشبكة التي نديرها، مثل الموجّهات والمبدلات والخوادم والطابعات وأجهزة أخرى عاملة ببروتوكول IP جميعًا ضمن نظام أو برمجية إدارة واحدة؛ وإذا كان جهاز الشبكة يدعم بروتوكول SNMP، يمكننا تفعيله وإعداده لجمع المعلومات ومراقبة عدة تجهيزات شبكية من نقطةٍ واحدة. من مهام بروتوكول SNMP: مراقبة حركة مرور البيانات الواردة والصادرة عبر الجهاز. الاكتشاف المبكر للأخطاء ضمن التجهيزات الشبكية، وإرسال التنبيهات أو الإشعارات. تحليل البيانات المُجمّعة من الأجهزة خلال فترات زمنية طويلة للتعرف على أماكن اختناقات عنق الزجاجة Bottlenecks ومشاكل الأداء. الضبط البعيد للأجهزة المتوافقة معه. الوصول والتحكم بالأجهزة المتصلة عبر بروتوكول SNMP عن بُعد. مفاهيم أساسية حول بروتوكول SNMP هناك عدة مكونات أساسية لعمل بروتوكول SNMP بصورةٍ سليمة، منها: مدير SNMP (نظام إدارة الشبكة Network Management System). عملاء SNMP. منفذ SNMP. الأجهزة المدارة، مثل الخوادم والمبدلات والموجّهات وغيرها. قاعدة إدارة المعلومات Management Information Base -أو اختصارًا MIB-، وتعرف أيضًا باسم قاعدة بيانات إدارة المعلومات Management Information Database. معرّف الكائن OID. مصائد Traps. الإصدارات. مدير نظام إدارة الشبكة NMS مكون المدير هو جزءٌ من برمجية مُثبتةٍ على جهاز، ويُسمى عند تركيبه على الشبكة نظام إدارة الشبكة Network Management System، إذ يستطلع دوريًا وبحسب مدةٍ مخصصة الأجهزة الموجودة على الشبكة للحصول على معلومات، ويحتوي على الاعتماديات اللازمة للوصول إلى المعلومات المُخزنة على الأجهزة الأخرى، ويُصرّف تلك المعلومات إلى صيغةٍ قابلةٍ للقراءة ليتمكن مهندس الشبكات أو المسؤول عنها من مراقبة، أو تشخيص المشاكل، أو أماكن اختناق عنق الزجاجة. تختلف أدوات أنظمة إدارة الشبكة في تعقيدها، إذ يسمح بعضها بإعداد رسائل نصية قصيرة SMS أو رسائل بريد إلكتروني لتُرسل تنبيهاتٍ في حال حدوث خلل وظيفي للأجهزة ضمن الشبكة؛ بينما يكتفي بعضها الآخر باستبيان الأجهزة فقط عن معلومات أساسية بسيطة. العملاء Agents عميل بروتوكول SNMP هو برمجيةٌ ضمن جهاز الشبكة، مثل الموجّه والمبدل والخادم وأجهزة wifi وغيرها، تنجز بعد تفعيلها وإعدادها أغلب العمل نيابةً عن المدير وذلك بتصريف وتخزين كل البيانات المُستخرجة من الجهاز المثبتة ضمنه ضمن قاعدة بيانات إدارة المعلومات MIB، إذ نُظمت هيكلة قاعدة البيانات للسماح لبرمجية المدير بالاستعلام عن المعلومات وحتى إرسال معلومات إلى المدير في حال حدوث أي خطأ. ما هو المنفذ المستخدم من قبل SNMP؟ تستقصي برمجية المدير المذكورة في القسم السابق المعلومات من العملاء خلال فترات زمنية ثابتة عبر المنفذ 161 من نوع UDP، إذ تسمح المصائد Traps ضمن بروتوكول SNMP -والتي سنشرح عنها في فقرة لاحقة- للعميل بإرسال معلومات عن النظام والجهاز إلى المدير عبر المنفذ 162 من نوع UDP؛ وهو بروتوكولٌ شائع الاستخدام من قِبل بروتوكول SNMP، ولكن يمكن أيضًا استخدام بروتوكول TCP. التجهيزات الشبكية قيد الإدارة تتضمن التجهيزات الشبكية قيد الإدارة الموجّهات والمبدلات وأجهزة wifi والخوادم بنظام ويندوز وغيره، والحواسيب المكتبية والشخصية والطابعات وأجهزة UPS وغيرها المزيد، إذ تحتوي على برمجية العميل ضمنها وهي بحاجة لتفعيلها أو إعدادها لتكون جاهزةً للاستبيان من قِبل NMS. قاعدة إدارة المعلومات MIB يمكن اختصار ملفات MIB على أنها الأسئلة التي يمكن لمدير SNMP سؤالها للعميل، إذ يُجمّع العميل تلك البيانات ويخزنها محليًا كما هي معرفةٌ ضمن MIB. ويجب أن يكون مدير SNMP على درايةٍ بتلك المعايير والأسئلة الخاصة بكل نوعٍ من العملاء، إذ يحافظ العملاء كما ذكرنا سابقًا على قاعدة البيانات الخاصة بهم منظمةً وفقًا لمعاملات الأجهزة وإعداداتها وبيانات أخرى. يجري نظام إدارة الشبكة NMS الاستبيان أو الطلب من عميل جهاز ما، ويشارك العميل بدوره المعلومات المُرتبة ضمن قاعدة البيانات التي أنشأها مع NMS، ويترجم تلك المعلومات لتنبيهات وتقارير ومخططات وغيرها. تُسمى قاعدة البيانات المُشاركة من قبل العميل قاعدة إدارة المعلومات Management Information Base -أو اختصارًا MIB، إذ تحتوي ملفات MIB على فئةٍ من القيم التحليلية وقيم التحكم المعرّفة من قِبل جهاز الشبكة. توسِّع عادةً شركات التجهيزات الشبكية المختلفة القيم المعيارية بقيم خاصة بأجهزتها باستخدام ملفات MIB خاصة بها. لتبسيط مفهوم MIB فكِّر بها على النحو التالي: ملفات MIB هي الأسئلة التي يمكن لمدير SNMP سؤالها للعميل، إذ يجمِّع العميل تلك الأسئلة فقط ويخزِّنها محليًا ويخدِّمها لنظام NMS عندما تُطلب. توضِّح الصورة التالية مثالًا بسيطًا عن طريقة عمل MIB، إذ يسأل NMS جهاز الشبكة سؤالًا، مثلًا "ما جواب السؤال رقم 2؟"، ثم يرسل عميل جهاز الشبكة بعدها ردًا عن جواب السؤال رقم 2. لنحاول فهم العملية أكثر من خلال مثال آخر، فعندما نريد مثلًا معرفة وقت التشغيل الكلي لجهازٍ ما، سيرسل NMS طلبًا للعميل يطلب فيه قيمة وقت التشغيل الكلي للنظام، ثم يرسل الطلب برقمٍ يمثِّل ملف MIB والكائن المطلوبين، مع رقمٍ آخر يُدعى النسخة Instance. OID = 1.3.6.1.2.1.1.3.0 يوضح الجدول التالي تحليل رقم معرف الكائن OID: table { width: 100%; } thead { vertical-align: middle; text-align: center; } td, th { border: 1px solid #dddddd; text-align: right; padding: 8px; text-align: inherit; } tr:nth-child(even) { background-color: #dddddd; } قاعدة إدارة المعلومات MIB الكائن المطلوب النسخة 1.3.6.1.2.1.1 3 0 قاعدة إدارة المعلومات MIB الكائن SysUptime النسخة يطلق على أول قسمين من الرقم المرسل للعميل (MIB والكائن المطلوب وهو في هذا المثال توقيت عمل النظام الكلي) اسم معرّف الكائن Object Identifier -أو اختصارًا OID-، وكما ذكرنا سابقًا ملفات MIB هي قيم معيارية يعلمها نظام إدارة الشبكة مسبقًا ويمكنه طلبها أو الاستبيان من جهاز الشبكة ليرسل له تلك المعلومات. معرف الكائن OID معرّف الكائن OID هو ببساطة رقمٌ مكونٌ من MIB والكائن المطلوب والنسخة، وكل معرّفٍ منها مميزٌ وفريدٌ ضمن الجهاز، وسيوفِّر عند الاستعلام عنه معلومات عن OID المطلوب. هناك نوعان من معرف الكائن OID: قيمة مفردة Scalar: هي قيمة مفردة من نسخة الكائن، مثل اسم الشركة المصنعة للجهاز؛ إذ لا يمكن أن يكون للجهاز نفسه أكثر من اسم شركة مصنعة، لذا قيمة OID من النوع Scalar. قيم متعددة Tabular: يمكن أن تتكون من عدة نتائج للمعرف الخاص بها OID، فمثلًا سينتج عن معالج بأربع أنوية أربع قيمٍ مختلفة لوحدة المعالجة المركزية CPU. المصائد Traps تُستخدم المصائد Traps عندما يحتاج الجهاز لتحذير نظام إدارة الشبكة عن حدثٍ ما دون الحاجة لانتظار ورود استبيان، إذ تضمن Traps حصول NMS على معلومات يجب تسجيلها عن حدوث حدثٍ ما ضمن الجهاز دون الحاجة لانتظار استبيانها من قِبل NMS. تحتوي التجهيزات الشبكية قيد الإدارة على ملفات MIB معرّفةٍ بشروطٍ مُسبقة ضمنها، ومن المهم جدًا وجود تلك الملفات مصرّفةً compiled ضمن نظام إدارة الشبكة كي يستطيع استقبال المصائد Traps المُرسلة من قِبل الأجهزة. MIB هي أرقام تعرِّفُ بعض الخصائص أو القيم عن الجهاز، لكن في حال لم يحتوي نظام إدارة الشبكة على بعض ملفات MIB تلك التي ترسلها المصائد Traps، فلن تكون هناك طريقة لتفسير MID أو تسجيل الحدث. الإصدارات v1 و v2c و v3 أُصدرت النسخة رقم 1 من البروتوكول في عام 1988، وأُطلقت منذ ذلك الحين عدة إصدارات منه على مر الأعوام، والإصدار الحالي هو الإصدار رقم 3، ولكن تدعم معظم أنظمة إدارة الشبكة جميع إصدارات البروتوكول. الإصدار 1 من بروتوكول SNMP كان الإصدار رقم 1 هو الإصدار الأول المُعرّف من البروتوكول في RFC رقم 1155 و 1157، وهو أبسط الإصدارات الثلاث من البروتوكول وأقلها أمانًا بسبب استخدامها الاستيثاق باستخدام النص غير المشفر. الإصدار 2 أو 2c من بروتوكول SNMP أُطلق الإصدار رقم 2 من البروتوكول عام 1993 بتحسينات كبيرة عن النسخة السابقة، مثل تعيينات النقل وبنية عناصر MIB وأهم تلك التعديلات استيثاق أفضل وتحديثات أمنية، ومع ذلك ورث الإصداران 1 و 2/2c ثغراتٍ أمنية كما ذكرنا سابقًا، إذ تُرسل سلاسل المجتمع Community Strings المكافئة لكلمات المرور على هيئة نصٍ غير مشفر، مما يسمح لأي أحد يتنصت على الشبكة من الوصول إلى تلك السلاسل النصية وبالتالي إحداث ثغرةٍ ضمن تجهيزات الشبكة، أو حتى تغيير إعدادات تلك التجهيزات بواسطة SNMP. الإصدار 3 من بروتوكول SNMP ظهر الإصدار الثالث من البروتوكول لأول مرة عام 1998، وتحسّنت النواحي الأمنية ضمن حزمة البروتوكول عبر تضمين ما يسمى الأمن المبني حول المستخدم "user-based security"، إذ سمحت تلك الميزة الأمنية بضبط الاستيثاق بالاعتماد على متطلبات المستخدم. مستويات الاستيثاق الثلاث هي على الشكل التالي: NoAuthNoPriv: والتي يكون المستخدمون لهذه الوضعية أو المستوى غير متحققٍ من هويتهم، وليس لديهم أي خصوصية عند إرسال أو استقبال الرسائل. AuthNoPriv: يتطلب هذا المستوى الاستيثاق من المستخدم، ولكن لن تُشفَّر الرسائل المرسلة أو المستقبلة. AuthPriv: المستوى الأخير والأكثر أمانًا، إذ يكون الاستيثاق مطلوب وتُشفَّر الرسائل المرسلة و المستقبلة. يُعد الإصدار الثالث من البروتوكول الأكثر أمانًا من بين الإصدارات، ولكن تفرض طبقة الأمان تلك على مستخدميها خطوات ضبط أكثر وتعقيدًا أكبر للإعداد؛ ولكن تفوق الفوائد صعوبات إعدادها بصورةٍ سليمة عند التعامل مع التجهيزات الشبكية عالية المستوى والتي تحتوي على معلومات حساسة. مخطط بياني عن SNMP الآن بعد أن تعلمت ما هو بروتوكول SNMP وما فائدته، يمكنك تحميل برنامج لإدارة الشبكة وإعداد عدة تجهيزات معًا والبدء بجمع بيانات SNMP وتحليلاته كي تفهم أكثر إمكانيات البروتوكول ومدى مرونته. ترجمة -وبتصرف- للمقال "What is SNMP? Basic Tutorial on NMS, MIBs, OIDs, Traps & Agents" لصاحبه Jeff Parker. اقرأ أيضًا طبقة النقل في بروتوكول TCP/IP معمارية الشبكة الحاسوبية وشبكة الإنترنت
  20. لا يوجد خدمات مجانية لذلك، في حال كان نطاق تطبيقك يعتمد على بعض الدول فقط الحل الأفضل يكون بكتابة وفهرسة جميع تلك الدول باللغة العربية ضمن الشيفرة لديك، سيوفر ذلك سرعة أكبر في الاستعلام ويخفف التعقيد
  21. بما أن الخدمة لا تدعم تعدد اللغات للبيانات، يمكنك ترجمة النصوص يدويًا إلى اللغة المطلوبة، ووضعها كمفاتيح للخواص ضمن كائن، يعبر المفتاح عن القيمة الأصلية وقيمته عن الترجمة، ويمكن وضع الترجمات ضمن مفتاح يعبر عن البلد، بذلك عندما تريد دعم أسماء بلد ما يمكنك إضافتها ضمن مفتاح خاص وترجمتها، مثال: const translations = { SA: { "Najrān": "نجران", .. } } وتحول النتيجة كالتالي: success: res => { const citiesAR = res.map(city => translations[data.iso2][city]); //.. } لكن الفكرة الأساسية من استخدام تلك الخدمة هي التخلص من تضمين أسماء البلدان والمدن كبيانات مكتوبة ضمن الشيفرة لديك، وتوكيلها إلى خدمة تعتمد مبدأ الطلب عند الحاجة، لذلك الأفضل أن توفر الخدمة دعمًا للغات المتعددة
  22. لا مشكلة في كتابة الشيفرة كذلك، التحقق من وجود قيمة ضمن الطلب والتصرف على أساسها لتعيين الاستعلام الحاصل والاستفادة من العبارة الشرطية if طريقة سليمة، لكن بما أنك استخرجت القيمة سابقًا ووضعتها ضمن متغير يمكنك التحقق من ذلك المتغير، قد تضيف لاحقًا معالجة لتلك القيمة خلال استخراجها فتضيفه في الأعلى فقط ولا تغير الشرط كالتالي: $IDCat = $_GET['IDCat']; if($IDCat == '310') { // معالجة وجود القيمة ... } يمكنك الاطلاع أكثر على الجمل الشرطية في PHP وطرق استخدامها من المقال التالي:
  23. يمكنك عرضه للبيع على أحد متاجر المنتجات الرقمية مثل متجر بيكاليكا، ويجب أن ترفق صورًا من القالب توضح كافة مزاياه بشكل جذاب وأهم المزايا التي طورتا ضمنها، وتشرح التقنيات المستخدمة في تطوير القالب، وتوافقيته والنظام الذي يعمل عليه مثل ووردبرس أو هو قالب HTML ثابت، يمكنك الاكتفاء بإدخال بيانات وهمية بحسب طريقة تطويرك للقالب، حتى تأخذ صور استعراضية للقالب سيكتفي العميل بمعاينة تلك الصور مثلًا لذا اعرض كل جوانب وتفاصيل ومزايا القالب، يجب إرسال كافة الملفات التي سيتحتاجها العميل لاستخدام قالبك بكامل مزاياه، وهو سيقوم بعملية الربط ووضع البيانات في أماكنها ضمن القالب، لكن عليك إرفاق شرح وافٍ عن طريقة استخدام القالب وأماكن حقن البيانات وأي ملاحظات أخرى، يمكنك الاستفادة من قراءة المقالات التالية:
  24. لذا الأمر يعتمد على طبيعة تصميم قاعدة البيانات، وهنا دورك كمطور أو خبير تصميم قواعد البيانات في إجاد الشكل الأنسب لتصميم الجداول وربطها بحيث تحقق المطلوب، أنصحك بقراءة كتاب تصميم قواعد البيانات، فهو يشرح التفاصيل المتعلقة بطريقة التصميم الأمثل لقواعد البيانات:
  25. إذا كانت كل تعليمات JOIN متعلقة ببعضها إذًا الاستعلام منطقيًا كتلة واحدة ولا يمكن فصله، في حال كانت بعض تلك التعليمات يمكن إزلتها وتحصل على بيانات أقل لكنها كافية نسبيًا وتنفيذ استعلام آخر يحوي البيانات الباقية وتعليمات JOIN المُزالة من الأولى يكون حل لتلك المشكلة، مثال للتوضيح: SELECT * FROM table LEFT JOIN A ... LEFT JOIN B ... LEFT JOIN C ... # استعلام أول SELECT * FROM table LEFT JOIN A ... LEFT JOIN B ... # استعلام ثانِِ SELECT * FROM table LEFT JOIN C ... الأمر يعتمد على طبيعة هذه البيانات والمطلوب من الاستعلام، يجب تحليل ودراسة الاستعلام جيدًا لمعرفة امكانية تقسيمه إلى استعلامين أم لا
×
×
  • أضف...