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

عبدالباسط ابراهيم

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

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

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

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

    11

أجوبة بواسطة عبدالباسط ابراهيم

  1. قبل أي شئ سأحاول التنبيه على أنه لا يجب عليكي حفظ اللغة البرمجية وحفظ المفاهيم وال syntax إنما ما يجب فعله هو فهم ال concepts بشكل سليم والتطبيق وراء المدرب للتعود على ال syntax 

    لذلك لا يجب عليكي الضغط من أجل تذكر جميع المعلومات التي تم تحصيلها من خلال هذا المسار 

    لذلك الحل العملي والمنطقي للخروج من هذه المشكلة هو كالتالي

    • أولاً عند مشاهدة أي درس يفضل تدوين المعلومات المهمة فقط (ستفيدكي هذه الخطوة لاحقاً) وأعتقد أنكي قمتي بهذه الخطوة مسبقاً
    • ثانياُ في التطبيق العملي في آخر مسار  " أساسيات اللغة " يفضل الإستماع لعدة دروس مرة واحدة مثلاً 5 دروس والتركيز فقط على طريقة بناء البرنامج وربط الأكواد معاً وفهم الإستفادة من مفاهيم لغة البرمجة 
    • ثم بعد ذلك محاولة تطبيق ما قام به المدرب في الدروس ال 5 السابقة وبالطبع ستجدي الأمر صعب ولكن هنا الإستفادة حيث أنه عند المحاولة في تنفيذ البرنامج والوقوع في الأخطاء ثم الرجوع لشرح الدرس (هذه الخطوة هي التي تقوم بتثبيت المعلومة)
    • يفضل عند الحاجة لمراجعة جزئية معينة الرجوع لأي مرج للغة البرمجة python مثلاً موسوعة حسوب لتقليل الوقت المستهلك عند إعادة مشاهدة الفيديوهات
    • عند الإنتهاء من المشروع يفضل التغيير في أكواد البرنامج أو المشروع مثل تحديث جزئية في المشروع أو عمل إضافة للبرنامج
  2. بتاريخ 7 ساعة قال علي العبدالله:

    انا مشترك مسبقاً في دورة php وتعلمت كيف بناءAPI

    انا اقصد في دورة الجافاسكربت هل سنتعلم كيفية التعامل مع هذا الapi بشكل كامل؟

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

    كما أن دورة  تطوير واجهات المستخدم يوجد بها شرح لهذا الموضوع من خلال ال jquery بحيث يتم شرح هذا الموضوع من خلال الكثير من التقنيات

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

     

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

    • تحديث الإصدارات: يجب تحديث نسخة PHP إلى أحدث إصداراتها المتاحة وتحديث جميع المكتبات والإضافات المستخدمة. هذا يضمن استخدام أحدث الأمان والميزات الجديدة المتاحة في PHP، بما في ذلك إصلاح الثغرات الأمنية المعروفة في الإصدارات القديمة.
    •  استخدام الأدوات الأمنية: ينبغي استخدام أدوات الأمان والحماية مثل Firewall والخوادم الآمنة وأدوات إدارة الوصول وغيرها. هذه الأدوات تساعد في حماية الخادم وتطبيقاته من هجمات القرصنة وتقليل فرصة الوصول غير المصرح به إلى الموارد الحساسة.
    • التحقق من المدخلات: يجب التحقق من جميع المدخلات المستخدمة في التطبيقات PHP، مثل النماذج والمعاملات والبيانات المرسلة عبر الإنترنت، لضمان عدم وجود بيانات خبيثة أو مدمرة. يمكن استخدام مكتبات مثل "Filter Functions" في PHP لضمان تحقق المدخلات.
    • تشفير البيانات: يجب تشفير جميع البيانات الحساسة والمهمة مثل كلمات المرور وبيانات العملاء والمعاملات، وذلك لحمايتها من الوصول الغير المصرح بها. يمكن استخدام بروتوكولات التشفير مثل SSL / TLS لتشفير الاتصالات عبر الإنترنت.
    • تطبيق مبدأ الحد الأدنى للصلاحيات: يجب تطبيق مبدأ الحد الأدنى للصلاحيات على المستخدمين والمديرين والمطورين. يجب تخصيص الصلاحيات لكل مستخدم وفقاً لدوره في التطبيق، وتقييد الصلاحيات اللازمة للمطورين والمديرين.
    • فحص الشفرة المصدرية: يجب فحص شفرة PHP بانتظام للتحقق من عدم وجود ثغرات أمنية وإجراء الإصلاحات اللازمة. يمكن استخدام أدوات مثل "Static Code Analysis" و"Vulnerability Scanners" للتحقق من أي ثغرات أمنية محتملة في شفرة PHP.

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

    كل خطوة من الخطوات السابقة تحتاج للعديد من المقالات لذلك قم بالتعمق في كل خطوة

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

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

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

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

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

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

  5. بتاريخ 7 ساعة قال منتصر احمد:

    انا اصلا mern stack developer

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

    • Advanced React:

    React هو إطار عمل قوي وشائع لتطوير واجهات المستخدم. وبمجرد أن تتعلم أساسيات React، يمكنك الانتقال إلى مفاهيم أكثر تقدمًا مثل React Router و Redux و Hooks و Context API. هذه المفاهيم تساعدك على بناء تطبيقات الويب المعقدة والتي تتطلب القدرة على إدارة الحالة والتلاعب بالمكونات وتوصيل المكونات ببعضها البعض.

    • Serverless Architecture:

    Serverless architecture هي طريقة جديدة لبناء تطبيقات الويب بدون الحاجة للتعامل مع إدارة الخادم والتوسع والصيانة. يمكنك تعلم العمارة الخادمية باستخدام AWS Lambda و Azure Functions و Google Cloud Functions. يسمح لك العمل بالعمارة الخادمية بتطوير تطبيقات الويب بسرعة أكبر وتكلفة أقل، حيث يتم تشغيل الكود فقط عند الحاجة له.

    • Testing:

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

    • DevOps:

    DevOps هي مجموعة من الممارسات التي تجمع بين تطوير البرمجيات وعمليات تكنولوجيا المعلومات لتقليل دورة حياة تطوير النظم. يمكنك تعلم التكامل المستمر والنشر المستمر باستخدام أدوات مثل Jenkins و TravisCI و CircleCI. وهذا يساعد على تسريع عملية تطوير التطبيقات وتحسين جودتها.

    • GraphQL:

    GraphQL هو بديل لواجهات برمجة التطبيقات RESTful ويوفر طريقة أكثر كفاءة للاستعلام عن البيانات من الخادم. يمكنك تعلم GraphQL باستخدام Apollo Server و Apollo Client. ويسمح لك GraphQL بتحسين أداء تطبيقات الويب الخاصة بك وتقليل تكرار الاستعلامات لاسترداد البيانات من الخادم.

    • Microservices:

    Microservices architecture هي طريقة لبناء تطبيقات الويب على شكل مجموعة من الخدمات الصغيرة وغير المرتبطة والمتفككة. يمكنك تعلم Microservices باستخدام أدوات مثل Docker و Kubernetes و Istio. يسمح لك استخدام Microservices بتطوير تطبيقات الويب المناسبة للتوسع والتي تمكن المستخدمين من تجربة تجربة أفضل، حيث يمكن تطوير كل خدمة بشكل مستقل واستخدامها في تطبيقات مختلفة.

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

  6. إذا كنت تقصد وصف الموقع description meta tag فقد يكون هناك عدة أسباب لذلك. وفيما يلي بعض الخطوات التي يمكن اتخاذها لحل هذه المشكلة:

    •  التحقق من رمز المصدر الخاص بصفحة الموقع: تأكد من وجود علامة meta tag الخاصة بالوصف في رمز المصدر HTML لصفحة الموقع. يمكنك عرض رمز المصدر بالنقر بزر الماوس الأيمن على صفحة الموقع واختيار "View Page Source" أو "Inspect Element".
    • التأكد من صحة تنسيق علامة meta tag: علامة meta tag الخاصة بالوصف يجب أن يكون تنسيقها كالتالي: `<meta name="description" content="وصف الموقع الخاص بك">`. تأكد من أن العلامة مكتوبة بشكل صحيح وأن المحتوى محاط بعلامات اقتباس مزدوجة.
    • التحقق من عدم وجود مشاكل في التخزين المؤقت: إذا قمت بتحديث علامة meta tag الخاصة بالوصف مؤخرًا، فقد يتم تحميل نسخة قديمة من الصفحة من ذاكرة التخزين المؤقت للمتصفح أو أدوات التخزين المؤقت الأخرى. حاول مسح ذاكرة التخزين المؤقت للمتصفح وتحديث الصفحة.
    • التحقق من عدم وجود تعارضات مع علامات meta tag أخرى: إذا كانت هناك علامات meta tag أخرى على صفحة الموقع، فقد يتعارضون مع العلامة meta tag الخاصة بالوصف. تأكد من أن العلامة meta tag الخاصة بالوصف هي الوحيدة التي تحمل اسم "description".
    •  التحقق من عدم وجود مشاكل في برنامج إنشاء الموقع: إذا كنت تستخدم برنامج إنشاء الموقع أو نظام إدارة المحتوى (CMS) لإنشاء موقعك، فقد يكون هناك مشاكل في كيفية تعامله مع علامة meta tag الخاصة بالوصف. تحقق من الوثائق أو منتديات الدعم الخاصة ببرنامج إنشاء الموقع أو نظام إدارة المحتوى الخاص بك لمعرفة ما إذا كانت هناك مشاكل معروفة به.

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

    • أعجبني 1
  7. برمجة نواة تشغيل من الصفر يتطلب فهمًا عميقًا لأنظمة التشغيل ومكوناتها، والتفكير في صعوبات البرمجة وتحديات الأمان والأداء والاستقرار. إليك بعض الخطوات الأساسية لبرمجة نواة تشغيل من الصفر:

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

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

    هناك العديد من المصادر المتاحة عبر الإنترنت التي يمكن استخدامها لتعلم برمجة نواة تشغيل. إليك بعض المصادر المفيدة:

    •  موقع osdev.org: يوفر هذا الموقع مصادر وشروحات وأدلة حول برمجة نواة تشغيل من الصفر. كما يشمل هذا الموقع مجتمعًا نشطًا من المطورين الذين يشاركون المعرفة والخبرات.
    •  كتاب "Operating System Concepts" للمؤلفين Abraham Silberschatz وPeter B. Galvin وGreg Gagne: هذا الكتاب هو مصدر شهير لفهم مفاهيم أنظمة التشغيل ويغطي العديد من المواضيع المهمة لبرمجة نواة تشغيل.
    • كتاب "Linux Kernel Development" للمؤلف Robert Love: يشرح هذا الكتاب كيفية برمجة نواة تشغيل لنظام Linux ويغطي العديد من المواضيع المفيدة.
    • دورات عبر الإنترنت: يوجد العديد من دورات البرمجة عبر الإنترنت التي تغطي برمجة نواة تشغيل مثل دورة "Operating Systems and System Programming" على Coursera.
    • مشاريع مفتوحة المصدر: يمكن الاطلاع على مشاريع مفتوحة المصدر مثل نظام Linux و FreeBSD وغيرها لفهم كيفية برمجة نواة تشغيل.

     

  8. هذا الخطأ يشير إلى وجود تاريخ غير صالح في ملف المشروع الخاص بك في Android Studio. وعادة ما يكون هذا الخطأ ناتجًا عن وجود تاريخ خاطئ أو غير صالح في ملف build.gradle الخاص بالمشروع.

    يجب البحث عن السطر الذي يحتوي على التاريخ الخاطئ في ملف build.gradle وإجراء التعديلات اللازمة. يجب أن يكون التاريخ في تنسيق صالح، على سبيل المثال "yyyy-MM-dd HH:mm:ss z"، حيث yyyy يمثل السنة، MM يمثل الشهر، dd يمثل اليوم، HH يمثل الساعة، mm يمثل الدقائق، ss يمثل الثواني، وz يمثل المنطقة الزمنية. ويجب التأكد من وجود هذه العلامات في التاريخ المحدد بشكل صحيح.

    يمكن استخدام ميزة "Find Usages" في Android Studio للعثور على جميع الأماكن التي يتم فيها استخدام التاريخ غير الصالح وتصحيحها على النحو التالي:

    • افتح ملف build.gradle الخاص بالمشروع في Android Studio.
    • اختر التاريخ الذي يحتوي على الخطأ.
    • انقر بزر الماوس الأيمن على التاريخ المحدد واختر "Find Usages" (البحث عن الاستخدامات) أو استخدم الاختصار Ctrl + Shift + F7 (أو Command + Shift + F7 في MacOS).
    • سيقوم Android Studio بالبحث عن جميع الأماكن التي يتم فيها استخدام التاريخ المحدد، ويظهر النتائج في نافذة "Find" (البحث).
    • يمكن النقر فوق كل نتيجة للانتقال إلى موقع استخدام التاريخ المحدد.
    •  بعد الوصول إلى النتيجة، يمكن تحرير التاريخ الخاطئ وتعديله على النحو الصحيح.
    •  بعد إجراء التعديلات، يمكن الحفظ على الملف وإعادة تشغيل التطبيق للتأكد من عدم وجود الخطأ.

    يجب ملاحظة أنه في حالة عدم العثور على أية نتائج في نافذة "Find"، يجب التأكد من أن البحث قيد التنفيذ في ملفات المشروع الصحيحة وأن التنسيق المستخدم للتاريخ صالح.

    يجب ملاحظة أن هذا الخطأ يمكن أن يظهر أيضًا في حالة وجود تنسيق غير صالح للتاريخ في ملفات أخرى في المشروع، مثل ملفات الخيارات العامة (gradle.properties) أو ملفات الإعدادات (settings.gradle)، ومن الممكن أن يكون الحل مماثلًا في هذه الحالات.

  9. هذه الرسالة تشير إلى أن هناك خطأ في تثبيت حزمة Unity Render Pipelines Universal. يمكن أن يكون هذا الخطأ مرتبطًا بعدم وجود الإصدار المحدد من الحزمة المذكورة في مكتبة حزم Unity.

    لحل هذه المشكلة، يمكنك اتباع الخطوات التالية:

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

    أكاديمية حسوب توفر مجموعة كبيرة من المسارات التعليمية التي تغطي العديد من المهارات والمجالات التقنية. وهي توفر دروسًا عملية وتطبيقية وتمارين ومشاريع عملية تعمل على تحسين مستوى المتعلم وتطوير مهاراته.

    للاستفادة القصوى من أكاديمية حسوب، يمكنك اتباع بعض النصائح التالية:

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

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

  11. يمكن استخدام مكتبة Flask-Login لإنشاء زر إعادة تعيين كلمة المرور بسهولة أكبر. يتيح لك Flask-Login إضافة وظائف تسجيل الدخول والخروج وإدارة جلسات المستخدمين بشكل سلس في تطبيق Flask الخاص بك.

    لإضافة زر إعادة تعيين كلمة المرور باستخدام Flask-Login، يمكنك اتباع الخطوات التالية:

    تثبيت Flask-Login باستخدام pip:

    pip install flask-login

    إضافة مكونات Flask-Login إلى تطبيق Flask الخاص بك:

    from flask_login import LoginManager, current_user, login_user, logout_user, login_required
    login_manager = LoginManager()
    login_manager.init_app(app)

    إضافة دالة العودة المفقودة لتطبيق Flask الخاص بك لتحديد المستخدم الحالي:

    @login_manager.user_loader
    def load_user(user_id):
        return User.query.get(int(user_id))

    إضافة مسار جديد إلى تطبيق Flask الخاص بك لإعادة تعيين كلمة المرور. يمكنك استخدام الرمز التالي:

    @app.route('/reset_password', methods=['GET', 'POST'])
    def reset_password():
        if current_user.is_authenticated:
            return redirect(url_for('index'))
        form = ResetPasswordForm()
        if form.validate_on_submit():
            # تنفيذ إعادة تعيين كلمة المرور هنا
            flash('تم إعادة تعيين كلمة المرور الخاصة بك بنجاح.', 'success')
            return redirect(url_for('login'))
        return render_template('reset_password.html', title='إعادة تعيين كلمة المرور', form=form)

    في قالب HTML لصفحة تسجيل الدخول، يمكنك إضافة زر إعادة تعيين كلمة المرور باستخدام الرمز التالي:

    {% if not current_user.is_authenticated %} <a href="{{ url_for('reset_password') }}">إعادة تعيين كلمة المرور</a> {% endif %}

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

    • أعجبني 1
  12. حزمة phpdotenv هي حزمة برمجية مفيدة جداً في مشاريع PHP، وتستخدم عادةً في تطبيقات ويب ومشاريع PHP الأخرى التي تحتاج إلى العديد من المتغيرات المحيطة بالتطبيق، مثل معلومات قاعدة البيانات ومفاتيح التوثيق وإعدادات البريد الإلكتروني وغيرها.

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

    يكون من الأفضل استخدام حزمة phpdotenv في حالات عديدة، من بينها:

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

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

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

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

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

    بتاريخ On 29‏/4‏/2023 at 21:01 قال Ali Ahmed39:

    يعني هو بيبحث عن ثغر ازي   بيكتوب كود صح

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

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

    • أعجبني 1
  14. بتاريخ On 29‏/4‏/2023 at 18:16 قال Mohammed Hendawy:

    تمام ازي بقا بعد ما يتم وضعي علي الطريق الصحيح اكمل الليي ناقص وابقي محترف زي الناس اللي احترفت 

     

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

    1- التدريب العملي: بعد الانتهاء من الدورة التدريبية، يجب أن تقوم بالتدريب العملي والعمل على مشاريع حقيقية لتطبيق ما تعلمته.

    2- التعلم المستمر: يجب عليك الاستمرار في تعلم المزيد من المفاهيم والأدوات والتقنيات المستخدمة في تطوير المواقع، وذلك من خلال الدورات التدريبية الأخرى والقراءة والتجارب العملية.

    3- العمل الجاد: يجب أن تكون ملتزمًا بالعمل الجاد والمثابرة على تحقيق أهدافك، وتحسين مهاراتك وخبراتك في هذا المجال.

    4- التواصل مع المجتمع المحترف: يمكن أن يساعد التواصل مع مجتمع المطورين المحترفين في تطوير شبكة من العلاقات المهنية والتعرف على المزيد من الفرص والإمكانيات لتحسين مستواك الاحترافي.

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

    ولكن للإجابة على سؤالك بشكل صريح فكيف يتم توجيهك إلى الإحتراف من خلال هذه الدورة؟

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

  15. تعلم أساسيات علوم الحاسوب قبل الدخول في البرمجة له العديد من المميزات، ومن أهمها:

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

    وهذا هو ما تجعلك تتميز به هذه الدورة التعليمية بحيث أن دراسة الأساسيات دائماً يسهل عليك التعلم بعد ذلك

    • شكرًا 1
  16. يمكن إضافة progress bar إلى كود الرفع باستخدام مكتبة Volley في تطبيق Android باستخدام الـ RequestQueue الخاصة بـ Volley وباستخدام الـ ProgressListener لمراقبة التقدم في الرفع.

    فيما يلي خطوات إضافة progress bar إلى كود الرفع باستخدام مكتبة Volley في تطبيق Android:

    • تحديد الـ RequestQueue الخاصة بـ Volley وإضافة الإرسال إليها:
    RequestQueue queue = Volley.newRequestQueue(this);
    String url = "http://example.com/upload.php";
    
    // إنشاء الـ StringRequest
    StringRequest stringRequest = new StringRequest(Request.Method.POST, url,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    // تنفيذ الشيفرة عند الانتهاء
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            // تنفيذ الشيفرة عند حدوث خطأ
        }
    }) {
        @Override
        protected Map<String, String> getParams() {
            // إضافة المعلومات المطلوبة للرفع هنا
            Map<String, String> params = new HashMap<>();
            params.put("key", "value");
            return params;
        }
    };
    
    // إضافة الـ StringRequest إلى الـ RequestQueue
    queue.add(stringRequest);
    • إضافة ProgressListener لرصد التقدم في الرفع:
      final ProgressBar progressBar = findViewById(R.id.progress_bar); // تعريف الـ ProgressBar
      
      // إضافة الـ ProgressListener للـ StringRequest
      stringRequest.setRetryPolicy(new DefaultRetryPolicy(
              0,
              DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
              DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)) {
      
          @Override
          public void deliverError(VolleyError error) {
              super.deliverError(error);
              // إخفاء ProgressBar عند حدوث خطأ
              progressBar.setVisibility(View.GONE);
          }
      
          @Override
          protected void deliverResponse(String response) {
              super.deliverResponse(response);
              // إخفاء ProgressBar عند الانتهاء
              progressBar.setVisibility(View.GONE);
          }
      
          @Override
          public void deliverProgress(long downloaded, long total) {
              super.deliverProgress(downloaded, total);
              // تعديل قيمة ProgressBar بناءً على التقدم في الرفع
              progressBar.setProgress((int) ((downloaded / (float) total) * 100));
          }
      };
    • إظهار ProgressBar قبل البدء في الرفع، وإخفائه بعد الانتهاء:

      // إظهار ProgressBar قبل البدء في الرفع
      progressBar.setVisibility(View.VISIBLE);
      
      // إضافة الـ StringRequest إلى الـ RequestQueue
      queue.add(stringRequest);

       

  17. بتاريخ On 27‏/4‏/2023 at 21:44 قال bm.soft:

    هده طريقة انشاء مشروع جانغو و تطويره

    انا اريد نشر الموقع بعد الانتهاء من التطوير و لكن على شبكة محلية فقط

     

    قام Django ببناء خادم لذلك. يمكنك تشغيله 

    python manage.py runserver

    على عكس php لذلك التعليق السابق يوضح الخطوات بالتفصيل

    و هناك العديد من الخيارات البرمجية التي يمكن استخدامها كحل مشابه لـ XAMPP لتطوير تطبيقات Django. وفيما يلي بعض الخيارات:

    • Bitnami Django Stack: هذا هو مجموعة أدوات برمجية معدة مسبقًا تتضمن Django و Apache و MySQL وأدوات أخرى مطلوبة للتطوير. يمكن تنزيلها وتثبيتها على أنظمة التشغيل Windows و macOS و Linux.
    •  PyCharm: PyCharm هو بيئة تطوير متكاملة (IDE) لتطوير البرامج باستخدام Python و Django. يتضمن خادم الويب المدمج لتشغيل تطبيقات Django أثناء التطوير. يوفر PyCharm أيضًا أدوات للتصحيح والاختبار والنشر.
    • Anaconda: Anaconda هي توزيعة من Python وأدوات العلوم البيانية الأخرى. يتضمن إطار عمل Django ويمكن استخدامه للتطوير والنشر لتطبيقات Django. يوفر Anaconda أيضًا أدوات لإدارة البيئات والتبعيات.
    •  Docker: Docker هو منصة تحتوي على حاويات تطبيقات، يمكن استخدامها لإنشاء بيئة تطوير لـ Django. يسمح للمطورين بتغليف تطبيقاتهم وتبعياتها في حاوية يمكن تشغيلها على أي جهاز يحتوي على Docker.

    بشكل عام، توفر هذه الخيارات مجموعة مماثلة من الأدوات لـ XAMPP لتطوير PHP، ولكن مصممة خصيصًا لتطوير تطبيقات Django.

    • شكرًا 1
  18. بتاريخ On 27‏/4‏/2023 at 22:45 قال Flutter Dev:

    اهلا أخي الكريم

    شاكر لك ردك عزيزي

    بالنسبة إلى موضوع Batched Writes

    هل تقصد أن اجعل الكود بشكل التالي هل الطريقة هذا تعتبر افضل من الطريقة الأولى في اول مشاركة ؟ 
     

     void _getbooksData() async {
        final batch = FirebaseFirestore.instance.batch();
    
        final booksSnapshotFuture = FirebaseFirestore.instance
            .collection('books')
            .where('id', isEqualTo: 522)
            .get();
    
        final results = await Future.wait([booksSnapshotFuture]);
    
        final booksSnapshot = results[0];
        final booksDocs = booksSnapshot.docs;
        if (booksDocs.isNotEmpty) {
          final booksData = booksDocs.first.data();
    
          final categorySnapshotFuture = FirebaseFirestore.instance
              .collection('Category')
              .where('idMainCat',
              isEqualTo: booksData.containsKey('IDCat') ? booksData['IDCat'] : null)
              .get();
    
          final subCategorySnapshotFuture = FirebaseFirestore.instance
              .collection('SubCategory')
              .where('idSubCat',
              isEqualTo: booksData.containsKey('Id_Sub') ? booksData['Id_Sub'] : null)
              .get();
    
          final results = await Future.wait([
            categorySnapshotFuture,
            subCategorySnapshotFuture,
          ]);
    
          final categorySnapshot = results[0];
          final categoryDocs = categorySnapshot.docs;
          final categoryData =categoryDocs.isNotEmpty ? categoryDocs.first.data() : null;
    
          final subCategorySnapshot = results[1];
          final subCategoryDocs = subCategorySnapshot.docs;
          final subCategoryData =subCategoryDocs.isNotEmpty ? subCategoryDocs.first.data() : null;
    
          final combinedData = FullListWomanModel.fromJson(Map.from(
              booksData ?? {})
            ..addAll(categoryData ?? {})
            ..addAll(subCategoryData ?? {}));
    
          await batch.commit();
    
          setState(() {
            _ListDataDisplay.add(combinedData);
          });
        }
      }


     

    الكودين المذكورين يحتويان على نفس النهج العام للحصول على بيانات من Firestore، ولكن الثاني يستخدم Batched Writes، بينما الأول لا يستخدمها.

    الفرق الرئيسي بين الكودين هو في استخدام Batched Writes لتحسين أداء قاعدة البيانات وتقليل عدد العمليات التي تتم على قاعدة البيانات.

    في الكود الثاني ، يتم تعريف دفعة batch، وبعد ذلك يتم تنفيذ عمليات القراءة والكتابة وإضافتها إلى الدفعة باستخدام دالة set(). وفي النهاية، يتم تنفيذ الدفعة باستخدام دالة commit().

    أما في الكود الأول ، فإنه لا يستخدم Batched Writes، بل يقوم بتنفيذ عمليات القراءة والكتابة بشكل فردي، ويستخدم دالة Future.wait() لإنشاء مستقبلات لكل عملية قراءة، ثم يتم الانتظار حتى يتم الانتهاء من كل المستقبلات قبل معالجة النتائج.

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

    • أعجبني 1
  19. لحذف الرسومات في Plotly.js، يمكنك استخدام دالة Plotly.deleteTraces التي تقوم بحذف إحدى الرسومات أو عدة رسومات محددة بواسطة مؤشراتها.

    على سبيل المثال، إذا كنت تريد حذف كل الرسومات الموجودة، يمكنك استخدام الأمر التالي:

    Plotly.deleteTraces('myDiv', [0, 1, 2, 3]);

    حيث أن 'myDiv' هو معرف العنصر النائب الذي تريد حذف الرسومات منه، و [0, 1, 2, 3] هي مؤشرات الرسومات التي تريد حذفها. يمكنك تغيير هذه المؤشرات لحذف مجموعة مختلفة من الرسومات.

    أما بالنسبة للخطأ  Plotly is not defined الذي يظهر عند تطبيق الخطوات كما في التعليق الأول فحاول نقل ال 

    <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>

    في قسم ال head 

  20. يمكن القول بأن MacBook Air يمكن أن يكون خيارًا جيدًا للمطورين في العديد من المجالات البرمجية المختلفة، وذلك يعتمد على احتياجات المستخدم ومتطلبات المشروع.

    وفيما يلي بعض المجالات البرمجية التي يمكن أن يكون MacBook Air خيارًا قويًا فيها:

    • تطوير تطبيقات iOS وmacOS: يمكن استخدام Xcode، الأداة الرسمية لتطوير تطبيقات iOS وmacOS، على MacBook Air بسهولة. ويمكن استخدام لغات البرمجة المختلفة مثل Swift وObjective-C لتطوير تطبيقات iOS وmacOS بشكل كامل.
    • تطوير تطبيقات الويب: يمكن استخدام MacBook Air لتطوير تطبيقات الويب باستخدام أدوات التطوير المختلفة مثل Visual Studio Code و Sublime Text وغيرها. وبفضل نظام التشغيل macOS والأداء الجيد، يمكن تطوير تطبيقات الويب بشكل كامل على MacBook Air.
    • تطوير الألعاب: يمكن استخدام MacBook Air لتطوير ألعاب الكمبيوتر باستخدام لغات البرمجة المختلفة مثل C++ وJava وغيرها. ويمكن استخدام أدوات التطوير المختلفة مثل Unity وUnreal Engine وGameMaker Studio على MacBook Air لتطوير الألعاب بشكل كامل.
    • تطوير تطبيقات Android: يمكن استخدام MacBook Air لتطوير تطبيقات Android باستخدام Android Studio، الأداة الرسمية لتطوير تطبيقات Android. ويمكن استخدام لغات البرمجة المختلفة مثل Kotlin وJava لتطوير تطبيقات Android بشكل كامل.
    • تطوير الذكاء الاصطناعي والتعلم الآلي: يمكن استخدام لغات البرمجة المختلفة مثل Python وR وغيرها لتطوير الذكاء الاصطناعي والتعلم الآلي على MacBook Air. وتتوفر العديد من المكتبات والأدوات المفيدة لتطوير الذكاء الاصطناعي على macOS.

    وبشكل عام، يمكن القول بأن MacBook Air يمكن أن يكون خيارًا قويًا للمطورين في العديد من المجالات البرمجية المختلفة

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

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

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

  22. كما ذكر المدربون في التعليقات السابقة دورة علوم الحاسب هي الدورة الأفضل في أكاديمية حسوب للبداية في مجال البرمجة عموماً . وهي دورة مدفوعة ولكن إذا كنت تريد دورة مجانية فيعتبر من أفضل الكورسات هو CS50

    CS50 هو مقرر تعليمي مفتوح المصدر يعرّف الطلاب على علوم الكمبيوتر. يهدف المقرّر إلى تعليم الطلاب كيفية تطوير البرامج باستخدام لغات البرمجة C و Python و SQL و JavaScript إلخ.

    يتضمن المقرر المواضيع الأساسية في الحوسبة مثل:

    • الخوارزميات والبيانات. 
    • الهياكل والقوائم المرتبطة. 
    •  البحث الثنائي.
    •  التراكب. 
    •  المؤشرات.
    •  الإدارة الذاتية للذاكرة.
    •  وغيرها الكثير.

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

    لمزيد من المعلومات حول CS50 يمكنك زيارة الرابط التالي

     

  23. إذا كنت تريد استخدام Netlify   يمكنك استخدام الـ Netlify Functions لتنفيذ المطلوب ومثال على كيفية رفع مشروع json-server على Netlify، يجب عليك اتخاذ الخطوات التالية:

    أضف ملف netlify.toml الذي يحتوي على الإعدادات التالية:

    [build]
      command = "npm run build"
      publish = "build"
    
    [dev]
      command = "npm run start"  # سيتم تشغيله عند تشغيل موقعك
    
    [[redirects]]
      from = "/*"
      to = "/index.html"
      status = 200
    
    [functions]
      directory = "functions" # يحتوي على ملف lambda لتشغيل json-server

    أضف ملف functions/lambda.js يحتوي على:

    const jsonServer = require('json-server')
    const server = jsonServer.create()
    const router = jsonServer.router('db.json')
    const middlewares = jsonServer.defaults()
    
    server.use(middlewares)
    server.use(jsonServer.rewriter({
      '/api/*': '/$1'
    }))
    server.use(router)
    server.listen(5000, () => {
      console.log('JSON Server is running')
    })

    قم بتغيير المنفذ في "start" script إلى منفذ آخر مثل 5000

    قم بنشر المشروع على Netlify

    سيقوم Netlify بتشغيل الوظيفة lambda.js التي بدورها ستقوم بتشغيل json-server على المنفذ 5000.

    ستتمكن من الوصول إلى البيانات من خلال https://your-site.netlify.app/api/posts

    هذا ما يجب عليك فعله لرفع مشروع json-server على Netlify. 

    يمكنك الإطلاع على المصادر التي تم ذكرها في أول تعليق للمزيد من المعلومات

  24. توجد بعض الاختلافات بين MySQL و Firebase  (كما أخبرك مصطفى)في آلية الربط بين الجداول (Joins) .

    بالنسبة لـ Firebase فالتوصيل بين الجداول يتم بطريقة مختلفة. يمكنك القيام بذلك عن طريق:

    • تخزين الروابط في حقل من نوع كائن (Object) أو سلسلة (String) تحتوي رقم المفتاح الأساسي في الجدول الآخر. مثلاً حقل "related_table_id".
    • عند طلب البيانات من إحدى الجداول، تقوم بالإشارة إلى الجدول الآخر والبحث فيه بناءً على رقم المفتاح "related_table_id".
    • تجميع النتائج من الجدولين في مصفوفة واحدة وإرجاعها للمستخدم.

    ولتسهيل التعامل مع ال FIREBASE قم بتعلم قاعدة البيانات NoSQL  حيث تختلف عن ال sql بشكل كبير

    • أعجبني 1
  25. نعم، محرك الألعاب Godot 4 يدعم استخدام لغة البرمجة Python بشكل رسمي ويمكن استخدامها لتطوير الألعاب في المنصة. يمكن استخدام Python في Godot 4 باستخدام إضافة "GDScript Python" التي تأتي مع المحرك كإضافة قياسية، والتي تسمح للمطورين باستخدام Python في إضافة إلى GDScript و C# و Visual Scripting كلغات برمجة لتطوير الألعاب.

    لإستخدام لغة Python في محرك الألعاب Godot 4، يجب اتباع الخطوات التالية:

    • تحميل إضافة "GDScript Python": يمكن تحميل الإضافة من موقع Godot الرسمي أو من مستودعات الإضافات الخاصة بـ Godot 4.
    • تثبيت الإضافة: يجب فتح محرك Godot 4 والانتقال إلى مجلد "addons" الخاص بمشروعك، ومن ثم يتم نسخ الإضافة المحملة في المجلد.
    • تفعيل الإضافة: بعد نسخ الإضافة، يجب فتح مشروع Godot الخاص بك والانتقال إلى قائمة "Project Settings"، ومن ثم اختيار "Plugins" وتفعيل إضافة "GDScript Python".
    • إنشاء ملف Python جديد: يجب إنشاء ملف Python جديد داخل مشروع Godot الخاص بك وإضافة الأوامر الخاصة بـ Godot.
    • تحديد مسار Python الصحيح: يجب تحديد مسار Python الصحيح في إعدادات المشروع. وذلك يتطلب تحديد مسار CPython المثبت على جهاز الكمبيوتر الخاص بك.
    • استخدام Python في Godot 4: يمكنك الآن استخدام Python في Godot 4 لتحريك الكائنات وإدارة الصوت والرسوميات والتفاعل مع اللاعبين والمزيد.
×
×
  • أضف...