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

Mustafa Suleiman

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

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

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

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

    446

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

  1. في الواقع العملي الأمر ليس شعارات، بمعنى تطبيق Vue مبني بشكل جيد ومعمارية سليمة سيكون دائمًا أفضل من تطبيق React مكتوب بشكل فوضوي، والعكس صحيح، أي المبرمج ومنهجية العمل أهم من الأداة نفسها. وتستطيع بناء مشاريع كبيرة من خلال Vue.js لا مشكلة، لكن الأمر يعتمد على متطلبات المشروع، أي لو المشروع يعتمد على مكتبة أو حل معين لا يتوفر إلا في بيئة React فستقوم بالتطوير من خلالها، كذلك عند تطوير مشروع يتم الأخذ في الإعتبار مدى توفر مبرمجي React أو Vue في سوق العمل المحلي وبالطبع React لها النصيب الأكبر، لذا لبناء فريق كبير سيكون هناك حاجة إلى سهولة في التوظيف، بالتالي يتم اللجوء إلى React. كذلك لو هناك حاجة لتطوير تطبيق للهواتف باستخدام نفس الكود، فيوجد React Native هو الحل الأقوى لو أردت تطوير تطبيق هاتف من خلال جافاسكريبت. أو في حال المشروع بحاجة إلى Next.js. وللعلم Vue شائع جدًا استخدامه في الصين وآسيا ويزداد اعتماده في أوروبا والشرق الأوسط، لديك مثلاً Alibaba يعتمد على Vue.
  2. ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم أسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.
  3. لا مشكلة، يستطيع أي شخص شراء الدورة لك، المهم هو التسجيل بنفس الإيميل الذي تم به تسجيل الحساب، لكن الأسهل هو أن يشتري لك بطاقة هدية بتكلفة الدورة ثم تستخدمها لشراء الدورة. ستجد تفصيل هنا لشرح الأمر: شراء بطاقة هدية استخدام بطاقة الهدية وذلك هو رابط شراء البطاقة بشكل مباشر: https://academy.hsoub.com/store/gift-cards/
  4. لم أتفهم المطلوب، لكن تفقدت المشروع لديك، وقد قمت بالمطلوب لا مشكلة ما عدا جزئية واحدة، وهو تحميل وتنظيف البيانات بتحميل الملف Books Recommendation System.csv، واختيار الأعمدة المطلوبة، وحذف الصفوف التي تحتوي على قيم فارغة بنجاح. ثم المعالجة المسبقة للنصوص بإنشاء دالة preprocess تقوم بتحويل النص إلى أحرف صغيرة، وتقسيمه إلى tokens، وإزالة علامات الترقيم والكلمات الشائعة. ثم قمت بإنشاء المتجهات بواسطة نموذج SentenceTransformer بنجاح لتحويل الأوصاف المُعالَجة إلى متجهات رقمية، مع عرض الكتب العشرة الموصى بها بشكل جيد (العنوان، الفئة، الوصف). بعد ذلك أنشئت bar chart لعرض متوسط تقييمات أفضل 5 كتب موصى بها. ما لم تقم به هو في الخطوة الرابعة حيث ُطلب منك استخدام مكتبة faiss لإنشاء فهرس للبحث الفعال عن التشابه، وأنت قمت بالفعل بإنشاء فهرس faiss: index = faiss.IndexFlatL2(embeddings.shape[1]) index.add(embeddings) ولكنه لا يستخدم الفهرس للبحث عن الكتب المشابهة، بل يعتمد على مكتبة sklearn لحساب التشابه بواسطة cosine_similarity، كالتالي: similarities = cosine_similarity(user_embedding, embeddings)[0] top_10_indices = similarities.argsort()[-10:][::-1] فالهدف من استخدام faiss هو السرعة والكفاءة في البحث عن أقرب الجيران، خاصة مع مجموعات البيانات الضخمة، بينما cosine_similarity من sklearn يقوم بمقارنة متجه المستخدم مع كل المتجهات الأخرى في مجموعة البيانات، وهو ما يصبح بطيئًا جدًا مع زيادة عدد الكتب. عليك تعديل الكود إلى: distances, top_10_indices = index.search(user_embedding, k) top_10_indices = top_10_indices[0]
  5. بالضبط، بإجراء عمليات حسابية أو مقارنات بين قيمة منطقية ورقم، تقوم بايثون بشكل ضمني أي في الخلفية بتحويل القيمة المنطقية إلى ما يعادلها من الأعداد الصحيحة 1 لـ True و 0 لـ False ثم تجري العملية. وذلك لآنّ النوع bool في بايثون هو في الواقع نوع فرعي من النوع int وتستطيع حتى استخدام القيم المنطقية في عمليات الجمع والطرح والضرب: result_add = 5 + True print(result_add) result_mul = 10 * False print(result_mul) result_sub = 100 - True print(result_sub) لكن هناك أمر هام وهو True == 1 نتيجتها True لأن قيمهما متساوية، لكن True is 1 تُعيد False، حيث ==يتحقق من تساوي القيمة. بينما is يتفقد هل المتغيران يشيران إلى نفس الكائن في الذاكرة أم لا؟ وبما أنّ True هو كائن من النوع bool، و 1 هو كائن من النوع int لذا هما نوعان مختلفان، وبالتالي ليسا نفس الكائن. print(True == 1) print(True is 1)
  6. حاليًا الأفضل الاستمرار في تعلم بايثون لكون المفاهيم حاضرة في ذهنك ولترسيخها أكثر، وللتطبيق على ما تعلمته في المسارين حاول القيام بأحد المشاريع التالية: 1- نظام إدارة نادي رياضي بمعنى Gym Manager والميزات المطلوبة هي: عضويات: إنشاء/تجديد/تجميد مع طبقة OOP (Member, Subscription, Payment). تنبيهات تلقائية بانتهاء الاشتراك واستخدم Gmail API / SMTP. فواتير PDF فيها كود QR للاسم ورقم العضوية، ستحتاج إلى reportlab وqrcode. تقرير شهري إلى Google Sheet ونسخة Excel. بالتالي ستقوم بالتطبيق على OOP، التعامل مع CSVوJSON كنسخ احتياطية، SQLite، argparse أو Typer، PDF، Excel، Gmail API، جداول Google. 2- لوحة تحكم بيانات شخصية بها الميزات التالية: تجمع بيانات من عدة APIs (طقس، عملات، أسهم). تحفظها في DB، وتصدر snapshot يومي إلى CSV و Google Sheet. ترسل تقرير صباحي في بريد HTML به رسم بياني مضمن. واجهة CLI لإضافة مصادر جديدة أو تغيير فترة الجلب. بالطبع ستواجهك تحديات، ولكن مع البحث والقراءة والمشاهدة ستتمكن من تخطيها. بعد ذلك، قبل الإنتقال لتعلم الواجهة الأمامية وجانغو تعمق في الموضوعات التي تُستخدم كثيراً مع Django لاحقًا وهي: SQL (JOINs, Indexes, Normalization). ORM. فهم نمط MVC / MVT. وحدة datetime في بايثون. بعد ذلك قم بتعلم الواجهة الأمامية، وانتقل لتعلم لجانغو بعدها.
  7. الأمر ليس مجموعة من الخطوات تستطيع نسخها ولصقها، بل عملية استكشافية تتطلب حدس، فضول ومعرفة بالمجال، أي بمعنى أدق الخبرة هي التي تُحدث فارق ملموس في دقة النماذج، تعميمها، قابلية تفسيرها وفي نجاح المشروع من الأساس، وكلما تم الاستثمار في الجانب الإبداعي لهندسة الميزات، زادت احتمالات الوصول إلى حل عملي متفوق بأقل تعقيد ممكن. بمعنى يتطلب الأمر استكشاف بصري ، وطرح أسئلة ماذا لو؟، وبناء ميزات تلتقط ظواهر غير مُشخصة في البيانات الخام، مثلاً نسبة المشتريات ليلاً ÷ إجمالي المشتريات كمؤشر لاحتيال. لتنمية ذلك الجانب قم بالتدرب على تنفيذ جلسة عصف ذهني، وأيضًا الاستعانة برأي خبير في البيانات نفسها في حال تتطلب خبرة عملية مثل البيانات الطبية، وغالب الحال ستتمكن من اكتشاف ميزة يصعب استنتاجها من البيانات وحدها. واستكشاف بصري مكثف EDA عن طريق الرسوم التشتتية، Box-Plots، وخرائط الحرارة تُولد أسئلة وفرضيات، كذلك عوضًا عن هندسة ميزة واحدة كبيرة، جرب توليد مئات الميزات البسيطة، ثم استخدم تقنيات انتقاء أو ترتيب المزايا لتصفية الأفضل. واعتمد على الـCross-Validation لتدوير الأفكار بسرعة واحتفظ فقط بما ينجح، بجانب قراءة أوراق ومسابقات مماثلة فكثير من الأفكار الإبداعية بإمكانك إعادة تدويرها.
  8. جودة البيانات هي الأهم بالطبع، لكونها تُحسن من الضجيج والانحياز معاً، بينما زيادة تعقيد النموذج في وجود بيانات رديئة ترفع التباين بدرجة أكبر من الفائدة. بالتالي جودة البيانات في المرتبة الأولى ثم زد تعقيد النموذج عند الحاجة، وتلك استراتيجية تؤدي إلى أعلى دقة، أفضل قابلية تعميم، وتكلفة معالجة أقل. ففي الواقع العملي البيانات عالية الجودة تتطلب وقت ومال، لكن الاستثمار يُدفع مرّة واحدة ويُستخدم لأي نموذج لاحق، واعتماد نموذج معقد فوق بيانات رديئة سيخفي المشاكل لفترة، لكنه يزيد من خطر الفشل عند الانتقال إلى بيئة الإنتاج وذلك يُعرف باسم data-shift. عليك بالتالي: ابدأ بتقييم جودة البيانات بتفقد القيم المفقودة، تشويش، أخطاء وضع العلامة، تحيز التوزيع. نظف البيانات، حسن التسميات، أضف ميزات مشتقة، ووازن الطبقات. درب نموذج بسيط من خلال Logistic Regression، Random Forest، XGBoost مع إعدادات افتراضية وحقق baseline قوي. استعن بنماذج أكثر تعقيداً فقط عندما يتشبع المنحنى ويصبح تحسين الدقة مكلف بالطرق التقليدية. راقب مقاييس التعميم Cross-Validation، Learning Curves للتأكد من أن زيادة التعقيد لا ترفع فجوة التدرب والاختبار.
  9. آلية الإختبار هي كالتالي، بعد إنهاء 4 مسارات من الدورة على الأقل، أو الدورة بالكامل عليكِ رفع المشاريع التي قمتي بها بالدورة على حسابك في github، ثم التحدث لمركز المساعدة وإخبارهم أنك تريدين التقدم للإختبار وتوفير روابط المشاريع على github. ثم الإنتظار لبعض الوقت لحين مراجعة المشاريع وسيتم الرد عليكِ، وتحديد موعد لإجراء مقابلة، وبها يتم: إجراء محادثة صوتيّة لمدة 30 دقيقة يطرح المدرّب عليكِ أسئلة متعلّقة بالدورة والأمور التي نفّذتيها خلالها. يحدد لك المدرّب مشروعًا مرتبطًا بما قمتي به أثناء الدورة لتنفيذه خلال فترة محددة تتراوح بين أسبوع إلى أسبوعين. إجراء محادثة صوتيّة أخرى لمدّة 30 دقيقة يناقش بها مشروعك وما نفذتيه وتُطرح أسئلة خلالها. إن سارت على جميع الخطوات السابقة بشكل صحيح، تحصلين على الشهادة أو يرشدك المدرّب لأماكن القصور ويطلب منك تداركها ثم التواصل معنا من جديد.
  10. موجودة في كل المكتبات وكذلك في مشاريع تعلم الآلة، ولكنك لا تشعر بها دائماً لأنك تعمل في دفاتر Jupyter بها كود بسيط دفك لاستكشاف البيانات بسرعة من أجل التعلم، ولا تحتاج إلى توزيع الكود على فريق كبير أو إعادة استخدامه بشكل متكرر. بالتالي الأسلوب الإجرائي أو الدوال القصيرة أبسط وأسرع، وما إن يكبر المشروع أو يصبح جزءًا من منتج، ستجد OOP في كل مكان، حتى لو لم تكتبها بنفسك. فمكتبات النمذجة والتي منها scikit-learn مبنية بالكامل على Estimator AP (fit / predict) حيث كل خوارزمية هي كائن، وكذلك PyTorch تطلب منك توريث nn.Module لإنشاء نماذجك. وTensorFlow Keras توفر tf.keras.Model و tf.keras.Layer. حتى DataFrame في pandas هو كائن ضخم، إذن، OOP ليست أقل شيوعًا بل هي ببساطة مغلفة داخل المكتبات التي تستخدمها، والسؤال الصحيح هو متى تحتاج أن تكتب كائناتك أنت؟ ببساطة لو لديك منطق تهيئة بيانات يتكرر عبر عدة تجارب، أو تريد تبديل نموذج عبر سطر إعداد واحد، أو عندما يصبح المشروع جزءاً من منتج مثل API أو تطبيق هاتف. أو هناك أكثر من شخص على الكود ويجب الاتفاق على واجهات واضحة، ولتنظيم الكود والفصل بين المسؤوليات، بمعنى • كلاس للتهيئة وآخر للتدريب وآخر للتقييم. ابدء أولاً بكتابة كود بسيط عبر الدوال، وعندما تلاحظ أن عددًا من الدوال تشترك في مجموعة متكررة من المتغيرات انقلها إلى كلاس.
  11. هل تقصد النموذج التالي في تعليق سابق؟ <form method="POST" action="/submit"> {{ csrf_token() }} <div class="mb-3"> <label for="name" class="form-label">الاسم</label> <input type="text" class="form-control" id="name" name="name"> </div> <div class="mb-3"> <label for="email" class="form-label">البريد الإلكتروني</label> <input type="email" class="form-control" id="email" name="email"> </div> <button type="submit" class="btn btn-primary">إرسال</button> </form> لست بحاجة إلى كتابة أي كود Ajax لكي يعمل النموذج، فعند الضغط المستخدم على زر إرسال، سيقوم المتصفح بإعادة تحميل الصفحة بالكامل، وإرسال طلب من نوع POST إلى المسار المحدد في السمة action وعليك تعديله ليتناسب مع المسار لديك. وسيتم إرفاق بيانات النموذج وهما الاسم والبريد الإلكتروني مع الطلب، وسيقوم لارافيل بمعالجته من خلال المتحكم المربوط بالمسار.
  12. سبب التوقف هو عدم وجود هدف واضح تسعين إليه، عليك تحديد ذلك، هل تتعلمين من أجل دخول مجال البرمجة؟ وما الدافع إلى ذلك، فور وجود الدافع ضعيه أمامك على ورقة والصقيها على الشاشة لتذكيرك، وستتمكنين من الإلتزام. ثم يجب وضع خطة لدراسة الدورة لكي لا تصابين بالإحباط، عليك بدراسة التالي أولاً: مدخل إلى علوم الحاسوب أساسيات البرمجة إلى عالم الويب أساسيات هندسة البرمجيات إعادة تصميم البرمجيات Refactoring ثم دراسة المسارات التالية وستجدي صعوبة بعض الشيء في دراستها، حاولي استيعابها بنسبة 50 إلى 70% وسيتضح لك الأمر أكثر أثناء تعلمك البرمجة وتنفيذ المشاريع والوصول لمرحلة متقدمة، ففي البداية الأمر مبهم. قواعد البيانات البرمجة كائنية التوجه الخوارزميات وبنى المعطيات أنماط التصميم أنظمة التشغيل ونظام لينكس وستجدين تفصيل هنا بخصوص بعض النقاط:
  13. الأمر ليس هذا وذاك، كلاهما مطلوب في سوق العمل لكن Vue.js بنسبة أقل وستجدها مستخدمة بالشركات الصغيرة، أما React في الشركات المتوسطة إلى الكبيرة. عامًة أنت تتعلم للحصول على وظيفة بالتالي تفقد المطلوب في سوق العمل المحلي لديك بالنسبة لمطور Front-End هل يوجد نسبة جيدة تطلُب Vue.js أم الغالبية React.js؟ وهل الوظائف التي تطلُب Vue.js تتطلب مستوى خبرة كبير أي 3 سنوات فيما فوق مثلاً أم بمستوى أقل Junior؟ في حال Junior إذن هي أفضل لك، لأنّ أغلب وظائف React تحتاج إلى خبرة سنتين على الأقل لكي يتم قبولك والقليل منها يقبل بمستوى Junior أي خبرة سنة. كنصيحة تعلم React وتعمق بها ثم تعلم Next.js وتعمق به، ثم ستستطيع تعلم أي إطار واجهة أمامية بعد ذلك، فجميعهم يتبع نفس المفهوم.
  14. يوجد منصة تواصل باسم I\O وهي عبارة عن مجتمع للنقاش الهادف والموضوعي، وبها مجتمعات مثل: تطوير الويب برمجة تستطيع طرح موضوع للنقاش هناك والتواصل مع أشخاص بنفس الهدف، أو تستطيع متابعة قسم أسئلة البرمجة ومتابعة الأشخاص المشتركين بنفس الدورة ومراسلتهم للدراسة معًا، وإليك مثال:
  15. ما يكفي للوصول إلى مستوى متوسط لتنفيذ مشاريع، وتستطيع تعلم المزيد عند الحاجة، لكن عليك التعمق في جافاسكريبت من خلال دراسة دورة جافاسكريبت فهي متعمقة أكثر باللغة.
  16. ببساطة مجال الـ Front-End يمتاز بالسهولة نسبيًا مقارنًة بالواجهة الخلفية Back-End، لكن كلاهما مجالات ليست سهلة حاليًا بسبب التطور الذي حدث بهما وبالأخص الواجهة الأمامية. كبداية ستجد دراسة الـ Front-End أسهل والحاجز الذي عليك تخطيه لتعلمه منخفض في البداية مقارنًة بالـ Back-End، وسيُشجعك على الاستمرار في التعلم وتأهيلك لتعلم الـ Back-End، وربما تفضل أحدهم على الآخر وتقرر التخصص في تخصص واحد فقط بعض تعلم كلاهما. في بداية مشوارك أنصحك بأن تكون Full-stack ثم بعد ذلك تتخصص في الواجهة الأمامية أو الخلفية، وذلك بعد الحصول على وظيفة واكتساب خبرة. صدقًا الأمر ليس بتلك الصعوبة، كل ما تحتاجه هو البدء في أحدهما وستصل للآخر، لكن التفكير الكثير فخ يقع به الأغلب. حدد فقط ما هي التقنيات التي تريد تعلمها لتصبح Full-stack، وبشكل عام HTML, CSS, JS لغات ثابتة، يتبقى لك تحديد الواجهة الخلفية، وكنصيحة ابدء من خلال جافاسكريبت وتعلم Node.js لتسهيل الأمر عليك، وبعد ذلك تستطيع تعلم أي لغة واجهة خلفية أخرى سواء PHP أو C# وغيرهم.
  17. تلك مشكلة طبيعية يمر بها الأغلب أثناء دراسة البرمجة، الأمر نابع من طريقة دراسة غير صحيحة، فلو تتذكر ما تريده أثناء التطبيق العملي بمفردك أي تتذكر الخاصية أو الدالة التي تقوم بأمر معين لكن لا تتذكر طريقة كتابتها فلا مشكلة إذن، أما إن كنت لا تتذكر ما هي إذن تحتاج إلى قراءة التالي. وللتطبيق العملي: و React غير متاحة في الدورة، بل في دورة جافاسكريبت، وسبب عدم تضمينها في دورة تطوير واجهات المستخدم هو أن الدورة موجهة لتعلم أساسيات الواجهة الأمامية من خلال تعلم اللغات الأساسية التي يعتمد عليها أي مكتبة أو إطار للواجهة الأمامية وهو HTML, CSS, JS. وتعلم تلك اللغات في البداية واجب وضروري، وبدونها ستعاني في فهم ما يدور في الكود الخاص بك عند تعلم تلك المكتبات والإطارات، وأيضًا ستواجه صعوبة في حل المشكلات التي تواجهك وأيضًا تخصيص مشروعك بالشكل الذي ترغب به. ولتعلم React.js الأمر يحتاج إلى فرد مساحة في دورة مختلفة تمامًا، والدورة لن تكون للمبتدئين في الواجهة الأمامية، فأنت بحاجة إلى تعلم اللغات الأساسية كما ذكرت لتفهم ما يحدث وما فائدة ما تتعلمه وتكتبته. ولذلك ستجد أنه تم تخصيص دورة تطوير التطبيقات باستخدام لغة JavaScript من جل تعلم مكتبة React وإطارات جافاسكريبت الأخرى مثل React Native لتطوير تطبيقات الهاتف وأيضًا Ionic ثم ستتعلم Electron.js لتطوير برامج سطح المكتب. وأيضًا يوجد شرح لإطار Next.js وهو هام جدًا بعد تعلم React من أجل التصيير من جهة الخادم Server-side Rendering.
  18. في حال لديك الوقت، قم بتعلم الواجهة الأمامية أولاً وذلك من خلال دورة واجهات المستخدم، ثم تعلم جافاسكريبت وReact من دورة جافاسكريبت. بعد ذلك انتقل إلى الواجهة الخلفية، وتستطيع أن تطوير مشاريع Full-stack عن طريق إطار Next.js والذي يتم شرحه في دورة جافاسكريبت، أما الواجهة الخلفية فقط ستحتاج إلى تعلم Node.js وإطار Express وذلك يتم شرحه بالدورة أيضًا، وبالطبع Node.js مطلوبة في سوق العمل لكن تحقق من ذلك لديك في سوق العمل بالقيام بالبحث كما أخبرتك. ستجد تفصيل هنا:
  19. لا تأخذ نصيحة أي أحد دونّ التحقق منها، بمعنى تفقد الوظائف المعروضة في سوق العمل الخاص ببلدك، ثم قرر على أساس ذلك.
  20. سيتم الإعتماد عليها في الدورة في المشاريع العملية، وذلك لكتابة كود بسيط لتنفيذ منطق خاص بالتفاعلية بالصفحة، ولكن نفس الأمر تستطيع تنفيذه من خلال جافاسكريبت أي تستطيع تجاهل استخدام jQuery وتنفيذه من خلال جافاسكريبت لو أردت، وأثناء الإختبار وضح أنك قمت باستخدام جافاسكريبت، لكن الأمر سهل وتستطيع تعلم jQuery بسهولة. عامًة على أرض الواقع لا يتم استخدام أحدث التقنيات في جميع المشاريع، فغالب الحال ستعمل على مشاريع تم تطويرها بالفعل منذ مدة، بالتالي ستجد أنّ JQuery مستخدمة بها بالرغم من أنّها عفا عليها الزمن ولم تعد تُستخدم بكثرة حاليًا كما كانت من قبل، وذلك بسبب تطور جافاسكريبت. بالتالي ليس شرط تعلم jQuery حيث بإمكانك تعلمها وقتما تحتاج إلى ذلك، ولو أردت رأي تعلم أساسيات jQuery ثم التطبيق على مشروع بسيط لا أكثر، وفي حال احتجتها تستطيع التعمق بها.
  21. ليس المطلوب منك التطبيقات العملية البسيطة، بل المشاريع العملية الكاملة، ستجد في نهاية كل مسار مشروع عملي كامل يجب تنفيذه ورفعه على مستودع Github خاص به، وأيضًا يوجد مسارات عبارة عن مشروع كامل يجب تنفيذ المشروع في كل مسار ورفعه. ولو أردت تستطيع إنشاء مجلد رئيسي للدورة وتقسيمه إلى مجلدات بداخله بحيث يكون لكل مجلد مسار تضع به التطبيقات العملية البسيطة، ثم رفع المجلد بالكامل إلى مستودع Github خاص به. بعد الإنتهاء من الدورة عليك التقدم للإختبار من خلال التحدث لمركز المساعدة وتوفير روابط المشاريع التي قمت بها.
  22. لا أنصحك بتعلم PHP للواجهة الخلفية إلا إن كنت تريد العمل على مواقع العمل الحر، فهي الأكثر طلبًا على تلك المنصات، بسبب استخدامها في ووردبريس وأيضًا إطار لارافل الذي يُسهل كثيرًا ويُسرع عملية تطوير المشاريع الصغيرة والمتوسطة. عدا ذلك، الأفضل تعلم C# وإطار .NET أو Java أو بايثون أو Node.js أو GO، والإختيار بينهم يعتمد على المطلوب أكثر في سوق العمل المحلي في بلدك، تفقد الوظائف على مواقع LinkedIN و Indeed بالنسبة لمستوى Junior وحتى Mid-level أي 3 سنوات خبرة. السبب أنّ PHP في الشركات ليس جيدة على المدى البعيد بسبب إنخفاض رواتبها مقارنًة بما سبق ولن تجد شركات كبيرة تستخدمها، الأمر الذي سيضطرك إلى التعامل مع شركات ذات نوعية ليست جيدة في أغلب الأحوال.
  23. ستتكرر تلك المشكلة بسبب أنّ مكتبة Eslint تعتمد على مكتبة prettier في اكتشاف الأخطاء الخاصة بتنسيق الكود في ملفات جافاسكريبت، وفي حال وجود أسطر فارغة يحدث ذلك الخطأ. وستحتاج إلى تنفيذ الأمر التالي بشكل متكرر: npm run lint -- --fix الأسهل إنشاء ملف إعدادات لـ prettier باسم .prettierrc ووضع التالي به: { "endOfLine": "auto" } ثم إنشاء ملف إعدادات لـ Eslint باسم .eslintrc.js ووضع التالي به: module.exports = { rules: { 'prettier/prettier': [ 'error', { endOfLine: 'auto', }, ], }, };
  24. الشروحات النظرية في باديء الأمر مفيدة، لكن يُعيبها عدم الربط مع الواقع العملي بتوفير أمثلة، فأنت لا تدري ما فائدة ذلك في المشاريع العملية في الواقع العملي، وما الذي ساستفيده منها؟ بالتطبيق على بناء نظام متجر إلكتروني، فأولاً تبدًا مرحلة تصميم البرمجيات Software Design بالتفكير على مستوى عالي أي بالنظر للمشروع ككل بنظرة عامة، حيث يجتمع مدير المشروع ومدير فريق المبرمجين Software Architect للبدء في تخطيط ما يلي: تحديد المكونات الرئيسية وليكن مثلاً: نحتاج نظاماً لإدارة المستخدمين. نحتاج كتالوج للمنتجات. نحتاج عربة تسوق. نحتاج نظاماً لمعالجة الطلبات والدفع. تحديد الهيكلية: سنستخدم بنية MVC (Model-View-Controller) Model سيمثل البيانات (المنتجات، المستخدمون). View سيمثل واجهة المستخدم التي يراها العميل. Controller سيستقبل طلبات المستخدم ويوجهها. وذلك قرار تصميمي عالي المستوى يحدد كيفية تنظيم المشروع بالكامل. ثم تحديد كيفية تفاعل المكونات كالتالي: عندما يضيف المستخدم منتجاً إلى عربة التسوق، يجب أن تتواصل عربة التسوق مع كتالوج المنتجات)للتأكد من أن المنتج متوفر وسعره صحيح. عند الدفع، يجب أن يتواصل نظام الطلبات مع نظام إدارة المستخدمين للتأكد من أن المستخدم مسجل. وتلك العلاقات تُرسم في مخططات مثل UML Diagrams لتكون واضحة للفريق. بالتالي نتيجة تلك المرحلة هو مستند تصميم تقني ومخططات توضح بنية النظام والعلاقات بين مكوناته، أي حتى الآن، لم نكتب سطر واحد من كود OOP الفعلي. بعدها تأتي مرحلة مرحلة التنفيذ لاستخدام OOP لبناء المكونات أي يأتي دور المبرمجين، بحيث يستقبل المبرمج مهمة محددة، وليكن بناء كتالوج المنتجات، ويبدأ في تطبيق مبادئ OOP، من خلال إنشاء الكلاسات وإتباع مباديء OOP وهي التغليف، التجريد، الوراثة وتعدد الأشكال. وفي النهاية يتم بناء مكون كتالوج المنتجات باستخدام كود نظيف ومنظم بفضل OOP، وهو يلتزم بالمخطط الذي تم تطويره عن طريق تصميم البرمجيات.
  25. مواقع العمل الحر لا تقبل بإنشاء حساب من قبل من هم أقل من 18 عام، لذا الأمر غير متاح لك، لكن تستطيع دراسة الدورات وتطوير مهاراتك لحين الوصول للسن المناسب. عامًة بعد الإنتهاء من دراسة الدورة والتقدم للإختبار والحصول على الشهادة، تبدأ فترة الـ 6 أشهر وذلك من تاريخ حصولك على الشهادة، حيث سيتم توجيهك ومساعدتك لدخول سوق العمل وتهيئة السيرة الذاتية ومساعدتك في كتابتها، لكن ذلك بشرط إتمام 18 عام، يمكنك تأجيل الحصول على الشهادة لحين الوصول للسن.
×
×
  • أضف...