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

Mustafa Suleiman

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

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

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

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

    445

كل منشورات العضو Mustafa Suleiman

  1. المشكلة إذن في الحساب البنكي هل قمت بتقديم حساب لشخص آخر؟، المطلوب ورقة بها ما يلي: اسم صاحب الحساب ويجب أن يطابق ما في حسابك. رقم الحساب المصرفي الذي وضعته في بايونير. شعار البنك. اسم البنك. تاريخ إصدار كشف الحساب لا يزيد عن 3 أشهر سابقة. كل ما سبق يجب أن يُطابق البيانات في حسابك. ويجب تصوير نسخة حقيقية لذلك وليس إرسال نسخة مطبوعة، مع إظهار الـ 4 حواف للورقة بشكل واضح في الصورة والتصوير في إضاءة جيدة. ونصحيتي إليك تجنب استخدام ذلك البنك، تفقد جنسية صاحبه أو مؤسسه، يوجد بنوك إلكترونية أخرى أفضل.
  2. الفكرة هي تحويل الوقت من صيغة 24 ساعة إلى صيغة 12 ساعة مع إضافة "AM" أو "PM" وذلك من خلال دالة بداخلها المنطق لتنفيذ ذلك واسمها formatingTimes تستطيع استدعائها متى تريد. بها معامل باسم times تستقبل قيمة له وهي الوقت الذي تريد تحويله، وفي حال لم يتم إدخال وقت أي قيمة times فارغة أو null أو undefined، فستعيد "00:00" كقيمة افتراضية. عند استقبال الوقت وليكن مثلاً "14:30" فيتم تقسيمه عند علامة : باستخدام split(":")، فيصبح لديك مصفوفتين، الساعات hours والدقائق minutes. ثم يحول القيمتين إلى أرقام باستخدام map(Number)، لأن split تُعيد نصوص. ولو الساعات أكبر من أو تساوي 12، يتم تعيين "PM" للمتغير perd، والعكس لو أقل من 12، يتم تعيين "AM". ويتم التحويل من خلال عامل باقي القسمة % حيث يتم قسمة الساعات على 12 لتحويل الساعات إلى صيغة 12 ساعة، أي لو الساعة 14 فباقي قسمة 14 % 12 = 2. وفي حال الساعات تساوي 0 وذلك عند منتصف الليل، يتم تحويلها إلى 12 باستخدام || 12 حيث عامل || يعني أو في البرمجة لأن 0 تعني false لذا يتم تعيين القيمة الأخرى بعد || وهي 12 لأنها true وذلك يسمى Short circuiting في جافاكسريبت. ثم تنسيق الدقائق في template literals أو قالب النص في النهاية، كالتالي في حال الدقائق minutes أقل من 10، يتم إضافة صفر قبله مثل 05 بدلاً من 5، حيث يوجد شرط ثلاثي Ternary Operator. minutes < 10 ? "0" + minutes : minutes
  3. قم بتثبيت أداة Support Tool من الرابط التالي وبعد الإنتهاء من التثبيت سيتم فتح نافذة لحذف Microsoft Office ثم اتبع الخطوات: https://outlookdiagnostics.azureedge.net/sarasetup/SetupProd_OffScrub.exe في حال استمرت المشكلة قم بتحميل أداة OfficeScrubber من الرابط التالي: https://github.com/abbodi1406/BatUtil/tree/master/OfficeScrubber وأرفقتها لك في المرفقات للتسهيل، بعد فك الضغط ستجد ملف باسم OfficeScrubber.cmd اضغط عليه بزر الفأرة الأيمن ثم اختر run as administrator وسيتم تفقد نسخة Microsoft Office المثبتة تلقائيًا والبدء في الحذف. BatUtil-OfficeScrubber.rar
  4. تستطيع الاشتراك بالدورات لا مشكلة، سنك مناسب لتعلم البرمجة، ستحتاج إلى دراسة دورة علوم الحاسوب في حال لا يوجد لديك أي خبرة سابقة بالبرمجة، لكن بشرط القدرة على استخدام الحاسوب بشكل جيد وطالما لديك حاسوب ولابتوب فذلك متوفر لديك. الدورة الأخرى التي تستطيع الإشتراك بها يتوقف على ما تريده، أُرشح لك دورة بايثون أو جافاسكريبت. حاليًا يوجد عرض دورتين بسعر دورة واحدة، ستجد تفصيل هنا: https://academy.hsoub.com/offers/double-skills-2025/ وهنا صفحة الدورات تستطيع تفقدها للإختيار من بينها: https://academy.hsoub.com/store/c1-دورات-تعليمية/ والمقال التالي سيُفيدك:
  5. js هي صيغة ملفات جافاسكريبت كما تعلم، بالتالي نستخدمها لكتابة أكواد جافاسكريبت فقط، بينما jsx هي صيغة خاصة بمكتبة React، حيث يتم الدمج بين كود جافاسكريبت وكود HTML أيضًا كالتالي: import React from 'react'; function Welcome() { const name = "علي"; return <h1>مرحبًا {name}</h1>; } export default Welcome; لاحظ ملف JSX يحتوي على عنصر <h1> مع تعبير JavaScript داخل الأقواس {} وذلك هو الـ syntax الخاص بملفات jsx في React. وما سبق هو الأفضل والمنطقي، لكن تستطيع استخدام أي صيغة تريدها في مشاريع React أي تستطيع كتابة JSX في ملفات .js وسيعمل بشكل جيد بفضل Babel الذي يعمل على تحويل الكود، وذلك عند إنشاء المشروع من خلال react-scripts. أما من خلال vite فيجب استخدام jsx لمكونات React وإلا سيحدث خطأ.
  6. صحيح في منفذ الأوامر وسيتم تحزيم المشروع في مجلد باسم build أو dist لتجهيزه للنشر.
  7. بخصوص التاريخ، فمن خلال كائن Date في جافاسكريبت كالتالي: <span id="date"></span> <script> function updateDate() { const today = new Date(); document.getElementById('date').textContent = today.toLocaleDateString(); } updateDate(); setInterval(updateDate, 24 * 60 * 60 * 1000); </script> الفكرة هنا في السطر: setInterval(updateDate, 24 * 60 * 60 * 1000); حيث استخدمت دالة setInterval وحددت لها مدة 24 ساعة لتشغيل دالة updateDate. حاول تنفيذ ذلك في مشروع React لكي تحقق استفادة. أما مواقيت الصلاة، ستحتاج إلى API خاص بأوقات الصلاة، ويتوفر التالي: https://aladhan.com/prayer-times-api بالطبع ستحتاج إلى قراءة المستند الخاص به وكيفية استخدامه من هنا: https://aladhan.com/prayer-times-api#get-/timingsByCity/-date- مثال عند جلب مواقيت الصلات لمدينة القاهرة في دولة مصر بتاريخ اليوم: https://api.aladhan.com/v1/timingsByCity/24-05-2025?city=cairo&country=egypt&method=8 حاول القيام بذلك بنفسك، لو واجهت صعوبة أخبرني.
  8. لا تقلق بخصوص تلك النقطة، تستطيع التقدم للإختبار أكثر من مرة لحين إجتيازه والحصول على الشهادة، لكن الأفضل الاستعداد له جيدًا وعدم التسرع في خوضه، وذلك حفاظًا على وقتك ومجهودك، فالأمر يستغرق وقت بلا شك. آلية الإختبار هي كالتالي: بعد إنهاء 4 مسارات من الدورة على الأقل، أو الدورة بالكامل عليك رفع المشاريع التي قمت بها بالدورة على حسابك في github، ثم التحدث لمركز المساعدة وإخبارهم أنك تريد التقدم للإختبار وتوفير روابط المشاريع على github. ثم الإنتظار لبعض الوقت لحين مراجعة المشاريع وسيتم الرد عليك، وتحديد موعد لإجراء مقابلة، وبها يتم: إجراء محادثة صوتيّة لمدة 30 دقيقة يطرح المدرّب عليك أسئلة متعلّقة بالدورة والأمور التي نفّذتها خلالها. يحدد لك المدرّب مشروعًا مرتبطًا بما قمت به أثناء الدورة لتنفيذه خلال فترة محددة تتراوح بين أسبوع إلى أسبوعين. إجراء محادثة صوتيّة أخرى لمدّة 30 دقيقة يناقش بها مشروعك وما نفذته وتطرح أسئلة خلالها. إن سارت على جميع الخطوات السابقة بشكل صحيح، تحصل على الشهادة أو يرشدك المدرّب لأماكن القصور ويطلب منك تداركها ثم التواصل معنا من جديد.
  9. المشكلة في مكون Prayer حيث قمت بتعريفه كالتالي: export default function Prayer(name, time) { } لكن في React، يجب أن تستقبل المكونات معامل واحد وهو props وليس معاملين، بالتالي عند استدعائك <Prayer /> بدون تمرير أي خصائص، تكون القيم غير معرفة، ويؤدي ذلك إلى مشاكل في العرض. يجب وضع الخصائص بين { } في حال أردت استقبالهم مباشرًة بدلاً من كتابة props، وذلك يسمى object destruction في جافاسكريبت، وذلك لتفكيك كائن props الخاص بالمكون: export default function Prayer({ name, time }) { } ثم في ملف App.jsx يجب تمريرهم كالتالي: <Prayer name="الفجر" time="04:00" />
  10. vite هو أداة تحزيم bundler للمشاريع، لكنها حديثة وسريعة وحاليًا يتم استخدامها في أغلب المشاريع، بينما في الدورة قمنا بإنشاء مشروع React عن طريق react-scripts والتي تستخدم في الخلفية webpack وهو أداة تحزيم أيضًا لكنها أقدم من vite وأقل استخدامًا حاليًا. في الوقت الحالي تم الإنتقال إلى vite حيث أنّ react-scripts لم يُعد يتم تطويرها، من خلال vite يتم إنشاء المشروع بكل سهولة وأيضًا عملية التطوير سريعة من خلالها. لذا لا اختلاف فيما تم شرحه بخصوص React، الفكرة في طريقة إنشاء وتهيئة المشروع فقط والعملية بسيطة، لو واجهت مشكلة أخبرني.
  11. height من الاسم تعني تحديد إرتفاع العنصر، أي بتحديد قيمة ثابتة سيكون ذلك هو الارتفاع النهائي للعنصر بغض النظر عن محتواه أو العوامل الأخرى، ما لم يتم تجاوزه بواسطة خصائص أخرى مثل max-height أو المحتوى الزائد مع overflow. بالتالي لو المحتوى أكبر من الارتفاع المحدد، فسيتسبب ذلك في التدفق الزائد overflow إن لم يتم التعامل معه بتحديد تنسيق overflow: auto له. div { height: 100px; } لاحظ العنصر سيكون دائمًا بارتفاع 100 بكسل، حتى لو كان المحتوى أصغر أو أكبر. بينما min-height يحدد الحد الأدنى لارتفاع العنصر، أي يسمح للعنصر بأن يكون أطول من القيمة المحددة إذا تطلب المحتوى ذلك، لكنه لن يكون أقصر من القيمة المحددة. نستفيد من ذلك بضمان أن العنصر لن يصبح أصغر من ارتفاع معين لكي لا يتشوه التصميم أو يحدث مشكلة في عرض المحتوى، ولكن متاح له أن يتوسع لو المحتوى يحتاج إلى مساحة أكبر. div { min-height: 100px; } وبالطبع تستطيع توظيف height وmin-height معًا، حيث يتأكد min-height من أن الارتفاع لا يقل عن قيمة معينة، بينما height يحدد الارتفاع الافتراضي. وفي حال قيمة min-height أكبر، فخاصية min-height ستتغلب على height.
  12. خاص بالقائمة المنسدلة، أي القائمة التي تختار منها خيار واحد أو أكثر من خيار حسب ما تحدده أنت، وستجد أنها مستخدمة في النماذج أي في عنصر form. ولإضافة الخيارات داخله ستحتاج إلى العنصر <option> حيث كل <option> يمثل خيار في القائمة، كالتالي: <select name="colors" id="colorSelect"> <option value="red">أحمر</option> <option value="blue">أزرق</option> <option value="green">أخضر</option> </select> حيث name="colors" هو اسم الحقل الذي سيتم إرساله مع النموذج إلى الخادم في الواجهة الخلفية، و id="colorSelect" هو مُعرف للعنصرفي حال أردت تنسيقه أو استهدافه من قبل جافاسكريبت. وكل <option> يحتوي على value وهي القيمة التي تُرسل إلى الخادم عند اختيار الخيار ، والنص هو الذي يراه المستخدم مثل أحمر. وللعلم في حال لم يتم تحديد value في <option>، يتم إرسال النص الموجود بين الوسمين كقيمة.
  13. ستحتاج إلى كتابة منطق جافاسكريبت كالتالي: let mainProductImage = document.getElementById('mainImage'); let pageContainer = document.querySelector('.container'); function phones(phoneSrc){ mainProductImage.src = phoneSrc; } function colors(color){ pageContainer.style.background = color; } وعليك تعيين id باسم mainImage للصورة التي سيتم تغييرها بالصور الأخرى: <div class="img"> <img id="mainImage" src="https://placehold.co/600x400?text=Hello+World" alt="Main Product Image"> </div> الفكرة هي اختيار عنصر الصورة الرئيسية باستخدام getElementById وتخزينه في متغير mainProductImage، كذلك اختيار عنصر الحاوية باستخدام querySelector وتخزينه في متغير pageContainer. والدالة phones تستقبل مصدر صورة مصغرة كمعامل وتعينه كمصدر للصورة الرئيسية. والدالة colors تستقبل أيضًا لون الخلفية كمعامل وتعمل على تغيير لون الخلفية عند الضغط على كل صورة.
  14. تقصد التطبيق بمفردك مرة أخرى؟ عامًة الأفضل إعادة التمرين بمفردك، فعملية التعلم عملية تكرارية وتدريجية، فلن تتمكن من تنفيذ مشروع كامل دونّ التدرج من خلال تلك التمارين البسيطة. وأثناء التطبيق مع الشرح لا يكون ذهنك حاضر بنسبة كبيرة، بينما أثناء تنفيذه بمفردك يتم التركيز على الكود والخطوات بنسبة أكبر وتتثبت المعلومات أكثر ويظهر لك نقاط الضعف وما أنت بحاجة إلى مراجعته. ستجد تفصيل هنا:
  15. لا أفضل من الواقعية والصراحة لكي لا تُصاب بالإحباط عند مواجهة أرض الواقع، تحتاج على الأقل ما بين 6 أشهر أو سنة لكي تتعلم تخصص معين في البرمجة مثل الواجهة الأمامية أو الخلفية أو كلاهما معًا. HTM, CSS, JS هي لغات الويب الأساسية لكن غير كافية للعمل على مشاريع حقيقية، نعم توجد مشاريع بسيطة على مواقع العمل الحر العربية تتطلب تلك اللغات فقط، لكن المنافسة عليها عالية فالجميع يتعلم تلك اللغات عند تعلم البرمجة في الغالب. ما الفرق بينك وبين الآخرين إذن؟ تحتاج إلى تمييز نفسك بتعلم كامل التقنيات اللازمة للواجهة الأمامية، أي تعلم React بجانبهم والمكتبات التي حولها فهي لا تعمل بمفردها بل بحاجة إلى مكتبات أخرى في المشاريع الحقيقية، والتي ستتعرف عليها في دورة جافاسكريبت. والأمر ليس بتلك الصعوبة، طالما تعلمت React الباقي يسير. ثم ستحتاج إلى تعلم Next.js وهو إطار عمل مبني على React ولا جدال حول ضرورة تعلمه حاليًا فنحن في 2025، حيث أنك تتعلم React لكي تتعلم Next.js ستجد تفصيل أكثر هنا:
  16. الطريقة الصحيحة لتعلم React هي بتعلم جافاسكريبت والتعمق بها، لديك مشكلة في استيعاب دوال المصفوفات لأنك لم تقم بتجربتها جميعًا أو قراءة شرح لها على الأقل، فتلك من أساسيات اللغة، لذا يجب أولاً الإهتمام باللغة البرمجية نفسها المبنية عليها React من الأساس، ستحتاج إلى تنفيذ مشاريع جافاسكريبت بسيطة ابحث على اليوتيوب عن مشاريع جافاسكريبت للمبتدئين. لو واجهت صعوبة قم بمراجعة أساسيات جافاسكريبت من الدورة مجددًا، أو من أي مصدر تريد. وبخصوص التطبيق بمفردك في حال قمت بذلك واستوعبت الأمر فعلاً، فستكون تعلمت جزء كبير من الأساسيات الخاصة بـ React وأيضًا جافاسكريبت ولكن ليس كامل React بالطبع فهي ليست مكتبة بسيطة. بعد الإنتهاء من التطبيق مع الشرح، أرجو إعادة تنفيذ المشروع من جديد بمفردك، ولا مشكلة في الرجوع للدروس لمراجعة بعض الأمور بعد المحاولة بنفسك أو لتفقد الكود لرؤية هل ما قمت به صحيح أم لا لتجنب تراكم الأخطاء وتركها للنهاية. الفكرة هي تحفيز ذاكرتك على استرجاع المعلومات وأيضًا تفقد مدى استيعابك لما تم شرحه وما قمت به، وكذلك إجبار عقلك على التركيز لأنك تقوم بالمشروع بنفسك، حيث لا يكون ذهنك حاضر بنسبة كبيرة عند التطبيق مع الشرح. ستجد تفصيل هنا: ولكن الأفضل تنفيذ مشروع بسيط آخر بواسطة React فمشروع واحد ليس كافٍ، ابحث على اليوتيوب عن "مشروع React للمبتدئين" وستجد الكثير لكن اختر مشروع بسيط، ستجد مشروع مواقيت صلاة جيد وبسيط، ثم تنفيذ مشروع آخر معقد قليلاً فقط عنه.
  17. الأفضل فصل حساب الإحصائيات، وذلك ما يجب فعله عند التعامل مع بيانات تدريب واختبار، عليك أولاً حساب الإحصائيات من بيانات التدريب فقط. ثم تعريف الدالة التي تستقبل الإحصائيات وبالطبع بها عليك العمل على نسخة من البيانات لتجنب تعديل البيانات الأصلية بشكل غير متوقع، وبداخلها أيضًا تُحدد الأعمدة التي تريد مِلأها. ثم تطبيق الدالة على بيانات التدريب: age_mean_train = train_data['Age'].mean() embarked_mode_train = train_data['Embarked'].mode()[0] def fill_missing_values_ml(data, age_fill, embarked_fill, deck_fill='F'): data_filled = data.copy() fill_values = { 'Age': age_fill, 'Embarked': embarked_fill, 'Deck': deck_fill } cols_to_fill = [col for col in fill_values.keys() if col in data_filled.columns] for col in cols_to_fill: data_filled[col].fillna(fill_values[col], inplace=True) return data_filled train_data_processed = fill_missing_values_ml(train_data, age_mean_train, embarked_mode_train, deck_fill='F') ولاحظ تحديد [0] لأن mode() تعيد أكثر من قيمة لو تساوت التكرارات.
  18. كلاهما من الدوال الخاصة بالمصفوفات في جافاسكريبت، splice لتعديل المصفوفة الأصلية مباشرةً عن طريق إضافة، حذف، أو استبدال عناصر فيها. أي تقوم بتغيير المصفوفة الأصلية، لاحظ التالي: let fruits = ['تفاح', 'موز', 'برتقال', 'مانجو']; fruits.splice(1, 1); console.log(fruits); هنا قمت بحذف عنصر واحد فقط بدءًا من الـ index رقم 1 في المصفوفة، ثم حددت عدد العناصر التي أريد حذفها وهي عنصر 1 فقط. لذا النتيجة: ['تفاح', 'برتقال', 'مانجو'] أما filter لإنشاء مصفوفة جديدة تحتوي فقط على العناصر التي تستوفي شرط معين، ولا تقوم بالتغيير في المصفوفة الأصلية، بل تعيد مصفوفة جديدة تحتوي على العناصر التي اجتازت الشرط. let fruits = ['تفاح', 'موز', 'برتقال', 'مانجو']; let filteredFruits = fruits.filter(fruit => fruit !== 'موز'); console.log(filteredFruits); //المصفوفة التي فلترتها console.log(fruits);//المصفوفة الأصلية قمت بحذف موز من المصفوفة، قم بتجربة تشغيل الكود ولاحظ الفرق بين المصفوفة التي فلترتها والمصفوفة الأصلية والتي لم تتغير. ستجد تفصيل هنا أرجو قراءته بتمعن:
  19. ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم أسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.
  20. قديمًا كان يتم التدخل بشكل بشري ومراجعة المحتوى الذي تم التبليغ عنه، حاليًا تقنيات الذكاء الاصطناعي تُستخدم بشكل كبير بعد أن تم تدريبها على تلك البيانات. ويتبقى جزء صغير للتدخل البشري في حالات معينة، للتفرقة بينهم، لو تم حجب المحتوى خلال ثوانٍ أو دقائق قليلة جدًا من نشره، فذلك يعني تدخل الخوارزميات التي تفحص المحتوى بشكل آلي وسريع بحثًا عن كلمات مفتاحية معينة، صور أو مقاطع فيديو مصنفة مسبقًا كمنتهكة للسياسات مثل العنف، خطاب الكراهية الواضح، المحتوى الجنسي، أو حتى بعض الرموز والشعارات السياسية المحددة. مثلاً في موضوع غزة، ستجدين أنه يتم نشر محتوى متشابه في طبيعته أو كلماته المفتاحية ويتم حجبه باستمرار وبنفس السرعة، بالتالي الخوارزمية تعلمت أو تمت برمجتها لاستهداف ذلك النوع من المحتوى. أيضًا ستجدين رسائل الحجب الآلية عامة جدًا، مثل هذا المحتوى ينتهك معايير مجتمعنا، دون تحديد دقيق للسبب. تقديريًا 95 ٪ من المحتوى يحذف آلياً أولاً، ويتم مُراجعة 5٪ منه كعينة فقط يدويًا لتفقد المحتوى أو بسبب وجود نسبة خطأ، بينما الـ 5% الأخرى تتم يدويًا نتيجة بلاغات. وستجدين أنّ البعض يقوم بالتلاعب بالكلمات أو تقطيعها وإضافة رموز بها لتخطي تلك المشكلة، لكن تقنيات الذكاء الصناعي تتطور وأصبحت قادرة على فهم سياق المنشور بنسبة كبيرة. لكن لو السياق معقد ويتطلب فهم دقيق للسياق والنية مثلاً، هل هو نقد ساخر أم تحريض؟ هل هو رأي أم تضليل متعمد؟، فتلك الحالات تتطلب تقييم بشري، حتى لو تم الإبلاغ عنها مبدئيًا بواسطة خوارزمية أو من قبل أشخاص آخرين. وللعلم ليس شرطًا حظر المحتوى صراحًة، بل هناك فكرة خبيثة يتم تنفيذها، تُسمى الحظر الشبحي أو Shadowbanning حيث لا يتم إعلامك بالحجب، ولكن مدى وصول منشوراتك ينخفض بشكل كبير جدًا، وذلك إجراء عن طريق الخوارزميات لتقليل انتشار محتوى معين دون حذفه بالكامل.
  21. لديك مشكلة في حلقة التكرار، وهي infinite loop أي حلقة تكرار لا نهائية، فالشرط في الحلقة هو while (x < 20)، أي أن الحلقة ستستمر طالما x أقل من 20، وقيمة x هي 1. ويتم زيادتها في حال x قيمة فردية فقط بسبب الشرط if (x % 2)، بالتالي الشرط if (x % 2) لن يتحقق في الحالة الزوجية، ولن يتم تنفيذ x++. يجب أن تزيد من قيمة x دائمًا في كل تكرار للحلقة، سواء كان زوجيًا أم فرديًا: let x = 1; while (x < 20) { if (x % 2) console.log(x); x++; }
  22. بالضبط، عند تطوير تطبيق أو نظام فهو بمثابة النظام الأساسي أو Primary System، لكونه يتفاعل معه المستخدم النهائي بشكل مباشر لتحقيق هدف معين. وفي حال الحاجة إلى قدرات معالجة لغة طبيعية متقدمة كتوليد النصوص، الترجمة، الإجابة على الأسئلة، فنستدعي OpenAI API لتنفيذ تلك المهام. بالتالي OpenAI API هو نظام ثانوي أو خدمة خارجية External Service أو مكون تابع، لأنّ النظام الأساسي يعتمد عليه لأداء وظائف محددة لا يمتلكها داخليًا أو يفضل تفويضها. وفي مخططات حالات الاستخدام في UML، ستقوم بتمثيل العلاقة إما بشكل ضمني حيث أن تفاصيل كيفية تحقيق الـ use case لا تظهر دائمًا المكونات الثانوية أو بشكل أكثر تفصيلاً باستخدام علاقة تبعية dependency أو تضمين لو الخدمة الخارجية جزء لا يتجزأ من تحقيق الـ use case. وكلمة use تصف طبيعة العلاقة بشكل جيد.
  23. المطلوب منك هو المشاريع العملية الكاملة أي التي بها مجلدات وملفات كثيرة مثل مشروع واجهة API للأفلام في مسار Node.js أو مشروع المهام في مسار react وهكذا. أما التطبيقات العملية التي تكون في ملف واحد ليست مطلوبة، لكن الأفضل إنشاء مجلد ثم تقسيمه إلى مجلدات حيث تُنشيء مجلد لكل مسار وداخله تُقسمه إلى مجلدات حيث مجلد لكل قسم داخل المسار، ثم وضع التطبيقات العملية الخاصة بكل قسم في المجلد الخاص بها، ثم رفع المجلد الرئيسي في مستودع github. وبالطبع عليك رفع المشاريع العملية الكاملة على مستودع GitHub منفصل لكل منها، وتوفير روابط تلك المستودعات عند التقدم للإختبار.
  24. في البداية يجب تفهم أن الشعور بالحيرة والتخبط والتشتت وكل المشاعر السلبية أمر طبيعي في بدايات تعلم البرمجة، كل ما عليك هو تجاهل تلك المشاعر ودراسة الدورة بطريقة صحيحة ومنظمة وعدم التسرع، ومع الاستمرار سيزول الأمر شيئًا فشيئًا، ويصبح لديك قدرة على تقييم الأمور بشكل أوضح. ولا تتوقع أن تستوعب كل شيء بمجرد مشاهدة الدرس من المرة الأولى في حال لم يكن لديك خبرة برمجية سابقة، هل ستتعلم اللغة الإنجليزية بمجرد مشاهدة درس عن التحدث؟ بالطبع لا، ستحتاج إلى المراجعة والممارسة والتكرار لكي يتثبت الأمر لديك، وبالأخص الجانب العملي هو أم عامل أثناء تعلم البرمجة، فكلما واجهت صعوبة في استيعاب مفهوم ما قم بالتطبيق بشكل عملي عليه وسيتضح لك بنسبة كبيرة. ولا تدع المفاهيم تتراكم عليك، وتتخطاها لتشاهد دروس أخرى، بل اعمل على استيعابها ثم الإنتقال للدروس التالية، حيث أنّ عملية التعلم عملية تراكمية أي الدروس تعتمد على بعضها البعض ولو واجهت مشكلة في درس ما ستواجه صعوبة في درس آخر. ستجد تفصيل هنا لما عليك فعله:
×
×
  • أضف...