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

لوحة المتصدرين

  1. Mustafa Suleiman

    Mustafa Suleiman

    الأعضاء


    • نقاط

      5

    • المساهمات

      13209


  2. Mohamed Rahal

    Mohamed Rahal

    الأعضاء


    • نقاط

      2

    • المساهمات

      68


  3. ابراهيم بازي

    ابراهيم بازي

    الأعضاء


    • نقاط

      2

    • المساهمات

      56


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

    • نقاط

      2

    • المساهمات

      4894


المحتوى الأكثر حصولًا على سمعة جيدة

المحتوى الأعلى تقييمًا في 09/16/23 في كل الموقع

  1. بعد تعلمي للlivewire الاحظ كونها أبطا في بعض العمليات البسيطة مثل انشاء عداد تفاعلي , هل التغيير الى vue with Innertia يستحق ؟ وماهي ايجابياته مقارنة ب livewire ?
    2 نقاط
  2. سنتعرف في هذا المقال على مفهوم واجهة برمجية التطبيقات Application Programming Interface، هذا المصطلح السهل المعقد حيث سنحاول فهمه وكيفية بناء مواقع الويب والتطبيقات الحديثة في يومنا هذا بالاعتماد على الواجهات البرمجية ونجيب على سؤال مهم وهو كيف ترتبط الواجهة الأمامية مع الواجهة الخلفية لتطبيق الويب أو الموقع الإلكتروني. هذا المقال هو جزء من سلسلة مقالات حول الواجهة البرمجية API وكيفية الاستفادة منها في بناء تطبيق ويب: مدخل إلى الواجهات البرمجية API الاتصال بواجهة زد البرمجية وفهم عملية الاستيثاق والتصريح أمثلة عملية لاستخدام واجهة برمجة متاجر زد zid API تطوير تطبيق عملي يزيد من احتفاظ العملاء عبر واجهة زد البرمجية مفهوم الواجهة البرمجية للتطبيقات API قبل أن ندخل في أية تفاصيل تقنية عن موضوعنا اليوم، سأحكي لك يومًا في حياة علي. علي هو مبرمج تطبيقات ويب يعمل في إحدى الشركات التقنية العربية، علي يحب تجربة المأكوﻻت المختلفة، بحيث يجرب في كل يوم أكلة جديدة في المطاعم المحيطة وإن سمع بافتتاح مطعم جديد بالقرب من مكان عمله، فإنه ﻻ يتوانى في زيارته وتذوق مختلف اﻷطباق التي يقدمها. ذهب علي ﻷحد المطاعم التي فتحت أبوابها مؤخرا، واختار مكانا هادئًا ونادى النادل يسأله عن اﻷطباق التي يقدمونها من أجل أن يأخذ طلبيته إلى الطباخ لتحضير ما طلبه علي. دوَّن النادل ما يريد علي تناوله من مأكوﻻت وذهب بها إلى الطباخ من أجل تحضيرها، بعد مدة وجيزة، عاد النادل إلى علي وهو يحمل كل ما طلبه وقدمها متمنيا أنه يعجبه اﻷكل، تذوق علي المأكوﻻت وأبدى إعجابه اﻷولي بها، وبدأ في اﻷكل إلى أن أنهى كل ما في الصحون، دفع الحساب، وخرج من المطعم شاكرا النادل على حسن اﻷستقبال. هل تتساءل اﻵن، ما علاقة هذه القصة بالواجهات البرمجية؟ وهل تساءلت يومًا عن طريقة عمل تطبيقات الهواتف الذكية، وكيف تتصل بخوادم الشركات المطورة لها، هل استطعت الوصول إلى إجابات كافية عن ذلك؟ سأبين لك ما العلاقة بين المثال السابق والواجهات البرمجية وكيف أن الواجهات البرمجية ماهي إﻻ تطبيق لمثالنا باختلاف بسيط وهو مكان التطبيق فقط، فمثالنا هو من الواقع الذي نعيشه يوميًا ونراه دائمًا حتى تعودنا عليه حتى أصبحنا ﻻ ندركه، أما الواجهات البرمجية، فقد أصبحت جزءًا ﻻ يتجزأ من حياة مبرمج المواقع وتطبيقات الويب المهنية. كنت قد نوهتك ﻷن تسأل نفسك عن طريقة ربط تطبيقات الهواتف الذكية مع خوادم الشركات. هنالك طريقتين لربط تطبيقات الهواتف الذكية مع خوادم الشركات المطورة، الطريقة اﻷقدم تسمى SOAP وهي اختصار لجملة Simple Object Access Protocol، أما الطريقة اﻷحدث فهي الواجهة البرمجيةللتطبيقات API وهي اختصار لجملة Application Programming Interface، وهي التي سأركز عليها، ولكن باختصار، API هي طريقة لتواصل البرمجيات في ما بينها باستخدام صيغة JavaScript Object Notation والتي تعرف اختصارا بـ JSON. لن أدخل في التفاصيل التاريخية وسأبقى مركزا على الجانب التقني فقط، لهذا أتوقع منك أن تحاول البحث عن تاريخ ابتكار وتطوير تقنية API والتقنية المكملة لها REST والتي هي اختصار لجملة REpresentational State Transfer. مصطلحات وجب معرفتها سنسرد بعض المصطلحات باللغة الإنجليزية والعربية الضروري على كل مطور ويب أن يعرفها: Backend: الواجهة الخلفية، هي المسؤولة عن العمليات المنطقية للنظام، تتعامل مع الملفات أيضا ومع قواعد البيانات. Frontend: الواجهات الأمامية، كل ما يراه المستخدم ويتعامل معه بشكل مباشر، ويتم ربطها مع النظم الخلفية بما يعرف بالواجهة البرمجية للتطبيقات API. API: الواجهة البرمجية للتطبيقات، هي حلقة الوصل ما بين النظم أو الواجهة الخلفية والواجهات الأمامية. Request: الطلب الذي يرسله العميل (قد تكون الواجهة الأمامية) إلى الخادم Server الموجود في الواجهة الخلفية. Header: ترويسة الطلب Request المرسل والذي يحوي بعض البيانات الوصفية التي تصف الطلبية وحالها وأية معلومات إضافية مطلوبة. Body: جسم أو متن الطلب المرسل والذي يحوي غالبًا على البيانات المتبادلة في الطلبية. Response: استجابة أو رد الخادم وهي المعلومات الراجعة من الخادم إلى العميل مقدم الطلب ردًا على طلبه. تحوي المعلومات الراجعة من الخادم إلى العميل على ترويسة Header وأيضا على متن Body. Endpoint: نقطة الوصول، وهي نقطة اتصال الواجهات الأمامية مع موقع محدد في الواجهة الخلفية أي نقطة محددة تتصل عبرها الواجهة الأمامية مع الواجهة الخلفية لغرض محدَّد. HTTP Client Software: عميل خادم HTTP وهو برنامج يساعد على تسريع التعامل مع الواجهات البرمجية بتوفير آلية واضحة في عملية إرسال واستقبال الطلبيات والردود. هل تعرفت على أي من المصطلحات التي ذكرناها قبل قليل؟ لا بأس إن لم تفعل، فسنشرحها لك حتى تكون لديك معرفة مبدئية بموضوع الواجهات البرمجية. لماذا نستخدم الواجهات البرمجية للتطبيقات APIs وما هي فائدتها؟ تُعَد الواجهات البرمجية للتطبيقات طبقة الحماية الأولى First Security Layer للبرمجية الموجودة على خادم الويب، بسبب أنها تفصل ما بين النظم الخلفية والعمليات الجارية على قواعد البيانات عن الواجهات الأمامية سواءً كانت صفحات ويب عادية أو تطبيقات هواتف ذكية. أي أن أي تطبيق ويب أو موقع اليوم يتألف من واجهة خلفية وواجهة أمامية وواجهة برمجية تعد وصلة وصل بينهما. أما الواجهة الخلفية، فتحوي على كامل العمليات والإجراءات والخدمات التي يوفرها التطبيق أو الموقع مثل معالجة صورة أو بيانات أو حتى تقديم خدمة الطقس. أما الواجهة الأمامية فهي الواجهة التي يراها المستخدم والمسؤولة عن عرض البيانات القادمة من الواجهة الخلفية للمستخدم بصورة مناسبة ومتناسقة مع إرسال البيانات من المستخدم إلى الخادم بالشكل الذي يطلبها، فالبيانات المتبادلة تلك تكون بشكلها الخام (تستعمل غالبًا صيغة JSON أو حتى صيغة XML)، أما الواجهة البرمجية للتطبيقات API فهي صلة الوصل كما ذكرنا ووظيفتها استلام البيانات من الواجهة الأمامية وتسلميها للواجهة الخلفية وإرسال البيانات من الواجهة الخلفية إلى الأمامية بطريقة وأسلوب موحد أي هي التي تؤمن عملية التفاهم بين الواجهة الأمامية والخلفية لتأمين التخاطب فيما بينهما. كيف تعمل الواجهات البرمجية للتطبيقات API سأحاول قدر اﻹمكان تبسيط آلية عمل الواجهات البرمجية بمثال عملي من حياتنا اليومية، وليكن مثلا منصة فيسبوك. كما تعلم أنه بإمكانك الدخول إلى حسابك في فيسبوك من أي جهاز تريد، سواءً من هاتفك الذكي أو من جهازك اللوحي أو من جهاز الحاسوب بل بإمكانك الدخول منها مجتمعة وفي نفس الوقت، وهنا يجب أن تطرح سؤاﻻ مهمًا، كيف تتم مزامنة حسابك في كل تلك اﻷجهزة؟ هنا تأتي أهمية الواجهة البرمجية، بحيث أن كل تلك اﻷجهزة متصلة بنظام خلفي واحد وكلها تتصل بالواجهة البرمجية التي تكون حلقة الوصل ما بين كل اﻷجهزة المتصلة و النظام الخلفي. سنأخذ مثاﻻ من حياتنا اليومية وهو موقع فيسبوك، سنقوم بالدخول إلى حسابنا باستخدام الأجهزة التي بحوزتنا، إن لم تكن لديك أجهزة غير جهاز الحاسوب، افتح أكثر من متصفح، ليس نفس المتصفح، مثلا متصفح كروم Google Chrome ومتصفح فايرفوكس Mozilla Firefox، في هذه الحالة يمكنك فتح حسابك 4 مرات باستخدام التصفح الخفي، في متصفح كروم يسمى Incognito Mode أما في متصفح فايرفوكس فيسمى Private Mode. هل قمت بذلك؟ كيف تستطيع إرسال رسائل إلى أصدقائك من أي متصفح وتشاهدها في نفس الوقت من بقية المتصفحات؟ قم بالدخول إلى حسابك على فيسبوك من هاتفك الذكي، من التطبيق الرسمي أو من المتصفح، هل تستطيع أن ترى الرسائل التي قمت بإرسالها على هاتفك أيضا، كيف يحدث ذلك؟ كيف تستطيع الدخول إلى حسابك من أماكن مختلفة في نفس الوقت؟ سأشرح العملية بأكملها بشكل بسيط وبالمقارنة مع مثالنا في بداية المقال وبدون الدخول في التفاصيل الدقيقة في الوقت الحالي. عند دخول علي مطور الويب إلى المطعم، كان عليه أن يختار طاولة محددة برقم حتى يعلم النادل موقعه وأنه يريد تناول الطعام وبالتالي يستطيع تقديم مختلف الخدمات التي يعرضها المطعم. هنا الطاولة وتفاصيلها (من رقم وحجم وغيرهما) تعتبر المكان المتفق عليه من أجل اﻹستفادة من خدمات المطعم، ويمكن القول أنها نقطة الوصول إلى خدمات المطعم Endpoint. في حالة موقع فيسبوك، وعند قيامك فتح التطبيق مثلا، سيتصل تطبيقك بخادم الشركة، في نقطة متفق عليها ومحددة مسبقًا في التطبيق وفيها فقط يستطيع الخادم أن يقدم خدماته للتطبيق. جاء النادل إلى عليٍ والذي يسمى العميل client ليأخذ الطلبات منه، ودون أية ملاحظات أو أي خدمات أخرى، وبعدها ذهب إلى المطبخ ليخبر الطباخ بالطلبات من أجل تحضيرها. هنا نسمي العملية: إرسال طلب Send Request من العميل علي إلى الطباخ في المطعم مقدمة الخدمة. في حالة موقع فيسبوك، أقرب عملية لذلك المثال عملية تسجيل الدخول حيث تُدخل اسم المستخدم الخاص بك مع كلمة المرور، تأخذ الواجهة الأمامية منك هذه المعلومات وترسلها للواجهة الخلفية لموقع فيسبوك لتتحقق منها ومن الطلب الخاص بك، طلب تسجيل الدخول. يستلم الطباخ الطلبية ويتأكد من أنها طلبية صالحة ويمكنك تحضيرها (أي ليست طلبية شراء ملابس مثلًا) ثم يبدأ بتحضيرها وعندما ينتهي منها، يعطيها للنادل الذي يرتبها بدوره في صينية ويأخذها إلى علي ليضعها على طاولته حتى يتسنى له البدء في تذوقها. هذه العملية تسمى: اﻹستجابة Send Response أي استجاب الطباخ لطلبية علي وقدم له ما يريد. وفي حالة موقع فيسبوك، إن كانت المعلومات المقدمة صالحة، سيقوم خادم فيسبوك بالسماح لك بالدخول واستعراض مختلف الصفحات واﻷجزاء الخاصة به والاستفادة من خدمته التي يقدمها. هل اتضحت الصورة العامة اﻵن؟ ببساطة، الواجهة البرمجية تنفذ عمل النادل في المطعم، حيث أن النادل يقوم بأخذ طلبات الزبائن إلى الطباخ وفريقه لتحضيرها وبعد ذلك، يقوم بأخذ تلك استجابة الطباخ لتلك الطلبات إلى أصحابها، أي أن الواجهة البرمجية تأخذ الطلبات من المستخدمين (الواجهة الأمامية) إلى النظام الخلفي لتقوم بعمل محدد ومن ثم تعيد النتائج المتحصل عليها إلى طالبيها أي تعيدها للواجهة الأمامية مرةً أخرى. خاتمة تعرفنا على ماهية الواجهة البرمجية للتطبيقات وأهم المصطلحات فيها وكيف يستفيد منها المطورون في بناء تطبيقات الويب الحديثة واستثمارها في التواصل ما بين الواجهة الأمامية والخلفية لتطبيقات الويب والمواقع الحالية، فالتعامل مع الواجهة البرمجية للتطبيقات ضروري لأي مبرمج متخصص في تطوير الويب، وعليه أن يعي مفهوم الواجهة البرمجة تمامًا إذ أصبح هذا المفهوم هو المفهوم الحديث في التواصل ما بين الواجهة البرمجية الخلفية والأمامية للمواقع وتطبيقات الويب، أضف إلى ذلك أن الكثير من الخدمات والمواقع أصبحت تتيح واجهتها البرمجية (مثل الواجهة البرمجية للمطورين من فيسبوك وتويتر وغيرهما) للاستفادة منها أو حتى هنالك واجهة برمجية مخصصة فقط لتقديم خدمات محددة (مثل واجهة برمجية للحصول على معلومات الطقس) وتقدمها للمطورين للاستفادة من تلك الخدمات في مختلف المشاريع. اقرأ أيضًا المقال التالي: الاتصال بواجهة زد البرمجية وفهم عملية الاستيثاق والتصريح كيفية إنشاء متجر إلكتروني متكامل باستعمال منصة زد الواجهة البرمجية Fetch API في جافاسكريبت
    1 نقطة
  3. ممكن ترسلوا رابط لبرنامج بايثون يمكن فتحه عل الجوجل ( اون لاين )
    1 نقطة
  4. ياعني باختصار اعمل middleware اعمل middleware تاني يجيب تاريخ الاشتراك الي هو مشترك فيه والتاريخ الحالي واقارن مبينهم صح كده ؟
    1 نقطة
  5. أليس من الأفضل وضع جدول بيانات لإشتراكات المستخدمين بحيث يكون هناك علاقة بين المُستخدم و الإشتراكات (للمستخدم عدة إشتراكات) عندما يشترك المُستخدم في خطة ما تقوم بحفظ تاريخ اشتراكه و تاريخ إنتهاء الإشتراك حسب الخطة، في نموذج المستخدم تقوم بإنشاء تابع (hasValidSubscription) تقوم بالتحقق من خلاله إن كان المُستخدم لديه إشتراك صالح أم لا. داخل التابع تجلب آخر سجل إشتراك للمستخدم و تقارن خاصية تاريخ إنتهاء الإشتراك بالتاريخ الحالي و تُعيد قيمة منطقية تحدد إذا كان الإشتراك صالح أم لا. إن كان التاريخ الحالي أكبر ذلك معناه أن الإشتراك مزال صالح، و إذا كان العكس فالإشتراك منتهي. ثم تستخدم التابع في عرض الصفحات التي توفر الخدمات في موقعك، قد يكون التابع عبارة عن طبقة وسيطة middleware تعمل في المسارات التي تحتاج إشتراك، بهذا الشكل إن كان المستخدم لديه إشتراك صالح ستسمح الطبقة الوسيطة بمروره، إن كان العكس فسيتم إعادة توجيهه مثلاً لصفحة تخبره أن الإشتراك منتهي و عليه تحديثه.
    1 نقطة
  6. أعتقد ما تقصدينه هو محرر أكواد بايثون و يمكن عن طريقه تنفيذ برامج بايثون. في هذه الحالة هناك عدة خيارات ممكنة، بعضها يعطيك خيار كتابة برامج بلغات أخرى أيضاً، سأذكر أهمها بحيث يمكنك الاختيار بينها: https://www.online-python.com/ https://www.programiz.com/python-programming/online-compiler/ https://replit.com/languages/python3 https://www.onlinegdb.com/online_python_compiler https://ideone.com/ https://codesandbox.io/ في حال كنتي تريدين شيء بسيط فأنصحك بأول خيار، أما في حال كنتي تريدين تنزيل مكتبات أيضاً و بيئة برمجية كاملة فالخيار الأخير هو الأفضل.
    1 نقطة
  7. أنزلت express js الكود يرن في تيرمنيال لكن لا يرن على البراوزر ؟؟؟ ما السبب
    1 نقطة
  8. Nouveau dossier.zip هل ارسل معه ملفات نود مودل
    1 نقطة
  9. هل قمت بتشغيل السيرفر عن طريق الأمر التالي في منفذ الأوامر: node index.js وفي حال كان اسم ملف السيرفر لديك مختلف عليك تعديل اسم index.js بعد ذلك من المفترض أن تقوم بتصفح المشروع على رابط مثل التالي: http://localhost:3000/ ولاحظ أن المنفذ لديك قد يكون مختلف عن 3000 فعليك استخدام المنفذ الصحيح الذي قمت باستخدامه في المشروع. وفي حال استمرار المشكلة أرفق مجلد المشروع هنا بعد ضغطه لتفقد المشكلة.
    1 نقطة
  10. هل سيكون الامتحان في الاربع مسارات الخاصة بالمشاريع التي اتممتها ام في كامل محتوي الدورة ؟!
    1 نقطة
  11. المشكلة في الكود تكمن في الطريقة التي تقوم بها بمقارنة اختيار المستخدم بنتيجة الكمبيوتر. يجب استخدام user_choice.lower() بدلاً من user_choice.lower للقيام بمقارنة السلاسل بشكل صحيح. يجب أن يتم استدعاء الدالة lower() لتحويل السلسلة إلى حروف صغيرة ومن ثم مقارنتها بالنتيجة العشوائية للكمبيوتر. import random print("Welcome to the Coin Guessing Game") print("Choose a method to toss the coin:") print("1. using random.random()") print("2. using random.randint()") choice = input("Enter your choice (1 or 2): ") # Random toss if choice == "1": random_1 = random.random() if random_1 >= 0.5: computer_result = "tails" else: computer_result = "heads" elif choice == "2": if random.randint(0, 1) == 0: computer_result = "tails" else: computer_result = "heads" else: print("Invalid choice: please select 1 or 2") user_choice = input("Enter your guess (Heads or Tails): ") # Correct the comparison here, use lower() to make it case-insensitive if user_choice.lower() == computer_result.lower(): print("Congratulations, you won!") else: print("Sorry, you lost.")
    1 نقطة
  12. الكود قريب من الصحيح، ولكن هناك مشكلة صغيرة في الشرط الذي يقارن فيه اختيار المستخدم بنتيجة الكمبيوتر، ويجب عليك استخدام الدالة lower() لتحويل الحروف الصغيرة إلى الأحرف الصغيرة قبل مقارنتهم. أي يجب أن يكون الشرط كالتالي: if user_choice.lower() == computer_result.lower(): أيضًا، يجب أن تتحقق من أن القيم المدخلة من قبل المستخدم ("Heads" أو "Tails") تكون مكتوبة بشكل صحيح، لذلك عليك تعديل السطر الخاص بإدخال المستخدم كالتالي: user_choice = input("Enter your guess (Heads or Tails): ").lower() وبهذا الشكل، ستتمكن من تصحيح المشكلة في الشرط وضمان أنه سيتم مقارنة الإجابة بشكل صحيح بغض النظر عن الأحرف الكبيرة أو الصغيرة. import random print("Welcome to the Coin Guessing Game") print("Choose a method to toss the coin:") print("1. using random.random()") print("2. using random.randint()") choice = input("Enter your choice (1 or 2): ") if choice == "1": random_1 = random.random() if random_1 >= 0.5: computer_result = "Tails" else: computer_result = "Heads" elif choice == "2": if random.randint(0, 1) == 0: computer_result = "Tails" else: computer_result = "Heads" else: print("Invalid choice: please select 1 or 2") exit() user_choice = input("Enter your guess (Heads or Tails): ").capitalize() if user_choice == computer_result: print("Congratulations, you won!") else: print("Sorry, you lost. The coin landed on", computer_result)
    1 نقطة
  13. 1- أولاً، تحتاج إلى إنشاء واجهة مستخدم تسمح للمستخدمين برفع ملف المواقع المراد تخطيط طرق اتصال بينها، وهناك مكتبة tkinter أو PyQt لإنشاء واجهة مستخدم رسومية. بعد إنشاء الواجهة، تحتاج إلى إضافة عنصر تحكم يمكن للمستخدمين من خلاله رفع الملف، وتستطيع استخدام عنصر تحكم filedialog.askopenfilename() لعرض مربع حوار يسمح للمستخدمين بتحديد الملف. بمجرد أن يقوم المستخدم برفع الملف، باستطاعتك قراءة بيانات الملف وإنشاء قائمة بالمواقع. 2-بعد إنشاء قائمة بالمواقع، قم بإضافة إطار حول عدد محدد من المواقع باستخدام الدالة shapely.geometry.Point() لإنشاء نقطة لكل موقع. بعد إنشاء النقاط، استخدم الدالة shapely.geometry.Polygon() لإنشاء مضلع يحيط بالمواقع المحددة. 3-بعد إضافة الإطار، يمكنك حساب المسافة بين كل موقع والموقع المحيط به واستخدام الدالة shapely.geometry.distance() لحساب المسافة بين نقطتين. 4- أخيرًا، عرض النتائج على الواجهة من خلال مكتبة matplotlib لعرض البيانات في شكل خريطة. import tkinter as tk import shapely.geometry as geom import matplotlib.pyplot as plt # إنشاء واجهة المستخدم root = tk.Tk() root.title("تخطيط الشبكات") # إضافة عنصر تحكم لرفع الملف upload_button = tk.Button(root, text="رفع الملف", command=upload_file) upload_button.pack() # قراءة بيانات الملف def upload_file(): filename = tk.filedialog.askopenfilename() with open(filename, "r") as f: data = f.readlines() # إنشاء قائمة بالمواقع sites = [] for line in data: point = geom.Point(line.split(",")) sites.append(point) # إضافة إطار حول المواقع المحددة def add_frame(): num_sites = int(input("عدد المواقع: ")) frame_points = [] for i in range(num_sites): point = sites[i] frame_points.append(point) frame = geom.Polygon(frame_points) # حساب المسافة بين المواقع distances = [] for site in sites: distances.append(frame.distance(site)) # عرض النتائج def show_results(): plt.scatter([site.x for site in sites], [site.y for site in sites], c=distances) plt.show() # إضافة أزرار لإضافة إطار حول المواقع المحددة وعرض النتائج add_frame_button = tk.Button(root, text="إضافة إطار", command=add_frame) add_frame_button.pack() show_results_button = tk.Button(root, text="عرض النتائج", command=show_results) show_results_button.pack() # تشغيل الواجهة root.mainloop()
    1 نقطة
  14. تم توفير إجابات وافية على أسئلتك، لكن هناك جانب يجب عليك الإلمام به قبل بدء الدراسة بالدورة، أولاً الدورة مخصصة لمن ليس لديه أي دراية بالبرمجة وبطبيعة الحال هي مناسبة لك في حال كان لديك دراسة بسيطة في استخدام الحاسوب ويمكن مساعدتك بخصوص ذلك الشأن حيث يمكنك السؤال في التعليقات أسفل الدرس وشرح المشكلة وسيتم مساعدتك وإن تعذر الحل سيتم الإتصال بحاسوبك وحل المشكلة. في المسارات التالية لن تواجهي مشكلة في الفهم والاستيعاب وبالطبع الأمر بحاجة إلى مجهود: مدخل إلى علوم الحاسوب (سيتم به تعلم التفكير المنطقي من خلال تعلم تنفيذ ألعاب بواسطة سكراتش وأيضًا تعلم كتابة الخوارزميات قبل تنفيذ البرنامج). أساسيات البرمجة (ستتعلمين أساسيات البرمجة من خلال لغة برمجة حقيقية من خلال بايثون وجافاسكريبت). أنظمة التشغيل ونظام لينكس (من المهم التعرض لنظام لينكس عند تعلم علوم الحاسب لإزالة الرهبة الغير ضرورية من استخدام لينكس وأيضًا التعود على استخدام منفذ الأوامر Terminal وهي الشاشة السوداء التي نكتب بها الأوامر). إلى عالم الويب (ستتعلمين هنا ما الذي يحدث في مجال الويب في الواجهة الأمامية والخلفية). البرمجة كائنية التوجه (هنا ستتعلمين مفهوم محوري في البرمجة وهي البرمجة الكائنية والتي لابد من تعلمها ولا مشكلة في حال لم تفهميها بشكل كامل في البداية لكن ستتمكنين من استيعاب 70% منها). أساسيات هندسة البرمجيات (ستتعلمين هنا كيف يتم تطوير منتج برمجي وإدارة المشروع فيما يعرف باسم SDLC). المسارات التالية ستواجهين تحدي في استيعابها في البداية ولا مشكلة في ذلك ولا داعي للإحباط، حاولي استيعابها بنسبة 50 إلى 70% وبعد التخصص في مجال برمجي ستعودين إليها لمراجعتها مرة أخرى وستفهمين مدى أهميتها: الخوارزميات وبنى المعطيات أنماط التصميم
    1 نقطة
  15. بالإضافة للتعليق السابق والإجابة الوافية من قبل سمير ولكن هذه الأسئلة تم طرحها من قبل العديد من المرات لذلك يمكنكي الإطلاع على إجابات أسئلتك من خلال الإجابات التالية
    1 نقطة
  16. أتفهم المشكلة لديك، ومن الجيد أنك تحاول فهم الكود الذي تقوم بكتابته وتلك نقطة هامة عند تعلم البرمجة، وفي دورة جافاسكريبت يتم التركيز على الأساسيات التي تؤهلك لتنفيذ المشاريع مع أمثلة عملية، ولا يوجد دورة لن تحتاج بها إلى البحث والاستزادة لكي يتضح لك الأمر، فبلا شك ستجد بعض النقاط التي أنت بحاجة إلى المزيد من الشرح والتوضيح لها. وسيتعين عليك البحث على جوجل أو يوتيوب من أجل القراءة والمشاهدة، ثم محاولة التطبيق لكي تستوعب الأمر. وإذا أردت نصيحتي عليك بتعلم أساسيات جافاسكريبت والتركيز عليها قبل الإنتقال إلى React، فأنت بحاجة إلى تنفيذ مشروع من خلال جافاسكريبت وستجد ذلك على اليوتيوب ابحث فقط عن مشاريع جافاسكريبت للمبتدئين وستجد شرح لتلك النقطة هنا: بعد ذلك عليك بتعلم أساسيات React بنفس الطريقة التي تتبعها الآن وفهم ما يتم شرحه، ثم ترتيب واستخدام ما تعلمته من خلال نماذج بسيطة سواء من خلال المشروع الموجود في الدورة أو مشاريع على اليوتيوب ومع كل مشروع سيتحسن مستواك وستفهم ما يحدث ومتى نستخدم هذا وذاك. وإذا واجهت مشكلة لا تتردد في طرح السؤال أسفل الفيديو في الدورة إذا كان متعلق بمحتواه، أو هنا في قسم أسئلة البرمجة لمساعدتك إذا كان السؤال عام ولا يتعلق بمحتوى الفيديو. وستجد مقالات ودروس في أكاديمية حسوب لمساعدتك في React: https://academy.hsoub.com/programming/javascript/react/ أيضًا يوجد موسوعة حسوب: https://wiki.hsoub.com/React وسأوضح لك الأمر: ببساطة، الـ props هي بيانات يتم تمريرها من مكون إلى مكون آخر، ويمكن استخدامها لمشاركة البيانات بين المكونات، أو لإنشاء مكونات قابلة لإعادة الاستخدام. نقوم تمرير الـ props ككائن إلى المكون، ويمكن الوصول إلى الـ props في المكون باستخدام this.props في حال كنت تعتمد على الـ Class components و props فقط في حال الـ Functional components. import React, { Component } from 'react'; class MyComponent extends Component { render() { return <div>Hello, {this.props.name}!</div>; } } // استخدام المكون <MyComponent name="mustafa" /> في Functional Components، يمكنك الوصول إلى الـ props مباشرة كمعامل داخل الدالة. import React from 'react'; function MyComponent(props) { return <div>Hello, {props.name}!</div>; } // استخدام المكون <MyComponent name="mohamed" />
    1 نقطة
  17. هنا بعض المواقع الموصى بها للعثور على تمارين في مجال علوم الحاسوب: يعتبر LeetCode منصة شهيرة توفر تحديات برمجية وتمارين متنوعة في العديد من المواضيع المرتبطة بعلوم الحاسوب، مثل الخوارزميات، وهيكل البيانات، والمسائل البرمجية. توفر HackerRank تحديات برمجية وتمارين لمجموعة واسعة من المواضيع التي تشمل علوم الحاسوب وتطوير البرمجيات. يمكنك الوصول إلى تمارين برمجية ومسابقات لتحسين مهاراتك. توفر CodeSignal تحديات برمجية وتمارين تساعدك على تحسين مهاراتك في البرمجة وحل المشاكل. يتنوع المحتوى من الأسئلة الأساسية إلى الأسئلة المتقدمة. يقدم Project Euler تحديات رياضية وبرمجية تهدف إلى تطبيق مهارات الحلول الإبداعية والبرمجية لحل مشاكل صعبة. توفر Codewars تحديات برمجية تسمح لك بتحسين مهاراتك في البرمجة من خلال حل التحديات والحصول على تقييم من المجتمع.
    1 نقطة
×
×
  • أضف...