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

Mustafa Suleiman

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

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

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

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

    472

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

  1. لا يُفترض أن يكون فارغ قمت بتحميل مجلد المشروع الخاص بك هنا وتنفيذ أمر البناء: npm run build وتم التحزيم وتجهيز المشروع للنشر كالتالي: لاحظ المجلد ليس فارغ وجاهز للنشر، حاول إعادة تنفيذ أمر البناء مرة أخرى وأنت في مسار مجلد المشروع في منفذ الأوامر.
  2. أرجو تفقد طلبات الشراء: https://academy.hsoub.com/clients/orders/ وأيضًا إدارة المشتريات: https://academy.hsoub.com/clients/purchases/ ما هي الحالة الخاصة بعملية الشراء؟ أحيانًا الأمر يستغرق بعض الوقت لمعالجة عملية شراء الدورة، وسيظهر لكِ بعدها تبويب دوراتي وعند الضغط عليه يظهر الدورة التي اشتركتي بها: أرجو الإنتظار لبعض الوقت، في حال استمرت المشكلة تستطيعي مراسلة مركز المساعدة
  3. عليك تحديد هدفك من تعلم الإطار؟ هل تريد أن تصبح Full-Stack أو مطور واجهة خلفية فقط؟ وأقصد بـ Full-Stack هو تطوير الواجهة الأمامية والخلفية معًا، أي تنفيذ المشروع بالكامل، وذلك ما أنصحك به في البداية ثم يمكنك التخصص. عامًة Django هو إطار واجهة خلفية بالمقام الأول، أي يسمح لك بإنشاء الخادم والـ API's والتعامل مع قاعدة البيانات، وكذلك يدعم Full-Stack بمعنى يوجد به محرك قوالب تستطيع من خلاله ربط الواجهة الخلفية الخاصة به بالواجهة الأمامية عن طريق القوالب. ولن تتمكن من استيعاب إطار بوتستراب بدون استيعاب أساسيات CSS بشكل جيد والتطبيق عليها، بعد ذلك تنتقل لتعلم الإطار واستيعاب آلية عمله وستجد أن تتذكر الكثير من الكلاسات بكل سهولة. بمعنى كلاس d-flex يأتي من display: flex، وكلاس m-3 يأتي من margin الهامش، والرقم 3 يمثل مستوى معين من الهامش. وكلاس bg-primary يأتي من background-color أي لون الخلفية، و primary تشير إلى اللون الأساسي، وهكذا، وستجد توضيح هنا للكلاسات. https://wiki.hsoub.com/Bootstrap/extend كذلك ستحتاج إلى تعلم أساسيات HTML و جافاسكريبت.
  4. الأفضل إرجاء React Native إلى النهاية تمامًا، فتخصص الإطار هو تطوير تطبيقات الهاتف، وحاليًا تركيزك على تعلم تطوير الويب، لذا عليك بالاستمرار في ذلك وتعلم ما تحتاجه وهو Typescript لكن قبل ذلك هل تعمقت في جافاسكريبت لبعض الوقت؟ فالعبرة ليست في الإنتقال من تقنية لأخرى وتعلم القشور منها، بل في إتقانك للأساسيات بشكل نسبي ثم تعلم تقنية معينة مثل React أو Vue.js والاستمرار لبعض الوقت من خلال JS ثم تستطيع تعلم Typescript. وإن لم تتمكن من جافاسكريبت، فلن تتمكن من فهم TypeScript بشكل عميق، وستواجه صعوبة في فهم الأخطاء التي تظهر لك، أي هل هي مشكلة في منطق الجافاسكريبت أم مشكلة في أنواع البيانات الخاصة بـ TypeScript؟ أي الأفضل التقليل من الحمل المعرفي أو Cognitive Load وذلك مبدأ في علم النفس يعني كمية الجهد الذهني الذي يحتاجه دماغك بالإعتماد على الذاكرة قصيرة المدى لمعالجة معلومات جديدة في وقت واحد. أي تخيل دماغك مثل الـ RAM في جهاز الكمبيوتر، لو حاولت تشغيل 10 برامج ثقيلة ومعقدة في نفس الوقت، سيبطئ الجهاز، ويتجمد، وربما يتعطل، ودماغك يعمل بطريقة مشابهة. فبمحاول تعلم العديد من المفاهيم الجديدة والمعقدة دفعة واحدة، تزيد الحمل المعرفي عليه.
  5. واقع الحياة أمر مختلف عن النصائح العامة، فلو أنت شخص لديه وقت فراغ كبير الأفضل الاستفادة منه في التعلم، وكذلك لو أنت شخص تريد الحصول على وظيفة عما قريب ستحتاج إلى بذل جهدك وليس توفير الوقت، وأمور أخرى حسب ظروف كل شخص تقتضي عدم إهدار وقت متاح. مجال البرمجة ليس بالسهل ويحتاج إلى وقت وممارسة وإلتزام خاصًةفي البداية حيث تكون الأمور ضبابية، ومع الوقت وبذل الجهد تتضح الرؤية ويسهل الأمر شيئًا فشيئًا، لو سألتني فلا مشكلة في قضاء 10 ساعات يوميًا وأنت تدرس ذلك طبيعي من وجهة نظري، وبعد فترة 6 أشهر تستطيع خفض تلك المدة لمُعدل صحي حسب طبيعة الحياة الخاصة بك. هل سيتأثر جسدك؟ بالطبع سيتأثر، لذا حاول ممارسة أي نشاط لمدة ربع ساعة يوميًا سواء تمارين الضغط أو التشمية قليلاً أو أي شيء، وضع ما تريد من الخطوط أسفل حاول، ولا أنصحك بتجاهل ذلك، فله أثره الواضح على المدى البعيد، ولا تنسى الصلاة في حال كانت جزء من حياتك. كذلك الأفضل تخصيص يوم إجازة لا تقترب به من الحاسوب، لكي تعود نشيط الذهن وتجنب الملل.
  6. لست بحاجة إلى تعلم الـ SEO بشكل مُتعمق، ما يلزمك هو الجانب التقني منه وذلك يسمى technical SEO وهو كل ما تفعله لمساعدة محركات البحث مثل جوجل على الزحف إلى موقعك، فهمه، وفهرسته بكفاءة، وذاك أساس أي استراتيجية SEO ناجحة، بالتالي لو الأساس ضعيف فكل جهود المحتوى والروابط الخارجية لن تحقق أقصى فائدة. ستحتاج إلى البحث وتعلم الأمور التالية: robots.txt XML Sitemap Canonical Tags سرعة وأداء الموقع وذلك يشمل Core Web Vitals والتي تحتوي على LCP وFID وCLS، كذلك سيتعين عليك تعلم كيفية تحسين الصور للـ SEO وتطبيق Lazy Loading عليها، بجانب TTFB. هيكلة الموقع وبنية الروابط أو Site Architecture و URL Structure التصميم المتجاوب للموقع تفعيل HTTPS والتعامل مع أكواد حالة HTTP ومنها301 Redirects باستخدمها لإعادة توجيه الروابط القديمة إلى الجديدة بشكل دائم، و404 Not Found بإنشاء صفحة 404 مخصصة ومفيدة توجه المستخدمين إلى أجزاء أخرى من الموقع، وكذلك تجنب أخطاء الخادم 5xx بأي ثمن.
  7. غالبًا لديك مشكلة في المسار، يجب أن يكون اسم الملف هو image.jpg تمامًا كما كتبته، لو الاسم Image.jpg بحرف I كبير أو image.JPG، فلن يعمل المسار، وللعلم أنظمة التشغيل مثل ويندوز لا تفرق بين الحروف الكبيرة والصغيرة، لكن سيرفر التطوير والخوادم الحقيقية تفرق. أيضًا يجب أن يكون الملف موجود مباشرة داخل مجلد src/assets. في حال استمرت المشكلة، اضغط Ctrl + C لإيقاف السيرفر في نافذة الـ Terminal، ثم أعد تشغيله مرة أخرى باستخدام الأمر npm run serve. والأفضل بدلًا من وضع المسار مباشرة في الـ CSS، هو استيراد الصورة في جزء الـ <script> ثم نربطها كـ style مباشرة على العنصر، وذلك من خلال import، حيث أداة البناء Webpackأو Vite تفهم أن الملف يجب معالجته، فتقوم بنسخه إلى مجلد البناء النهائي dist وتعطيك المسار الصحيح والنهائي له، وذلك يمنع حدوث أي مشاكل في المسارات. كالتالي: <template> <div class="my-main" :style="{ backgroundImage: 'url(' + imageUrl + ')' }"> </div> </template> <script> import imageFile from '@/assets/image.jpg'; export default { name: 'MyMain', data() { return { imageUrl: imageFile } } } </script> <style lang="scss" scoped> .my-main { width: 100%; min-height: 400px; background-size: cover; background-position: center; } </style>
  8. JS لغة خاصة بالويب أو ذلك ما كانت عليه في باديء الأمر، حاليًا يتم استخدامها في كل شيء تقريبًا، لكن هي ليست من اللغات القوية فيما يتعلق بالاستقرار وتجنب الأخطاء، بسبب عدم وجود معمارية صارمة بها لفرض أنواع محددة للبيانات عند تعريفها، أو حتى التحقق منها وفرض نوع معين للبيانات عند تشغيل المشروع، فأثناء تشغيل المشروع تحدث أخطاء غير متوقعة بسبب عدم توفر ذلك. وفي المشاريع الكبيرة التي يعمل عليها فريق، يصبح الكود المكتوب بـ JS معقدًا وصعب الفهم، أي بدون TS فأي مبرمج جديد ينظر إلى دالة مثل processData(data)، سيتساءل ما هو شكل data؟ هل هو كائن object؟ ما هي خصائصه؟ هل هو مصفوفة array؟ أم رقم؟ سيضطر لقراءة الكود بالكامل أو تتبعه ليفهم. بالتالي منذ سنوات قليلة أصبحت TS هي اللغة الأساسية لتطوير مشاريع جافاسكريبت، ومتوقع منك أن تكون متقن لها بنسبة جيدة. ستجد تفصيل هنا:
  9. Vue قادر على بناء أي شيء يمكن لـ React بناؤه، إذن الفارق ليس في القدرة الأساسية للإطار أو المكتبة نفسها، بل في مدى اتساع وعمق النظام البيئي أي الـ Ecosystem المحيط به، بمعنى المكتبات المتوفرة وحجم الدعم. بالطبع يوجد مكتبات ودعم أكبر في بيئة React، وستجد الكثير من الحلول للمشاكل التي تواجهها، فلأي مشكلة أو ميزة تتخيلها، غالبًا ما ستجد مكتبة موثوقة ومدعومة جيدًا، بينما في Vue ستجد حلولًا لمعظم المشاكل الشائعة، لكن ليس بنفس التنوع أو درجة النضج في بعض المجالات المتخصصة جدًا، وأحيانًا ستضطر إلى بناء مكون بنفسك أو الاعتماد على مكتبة أقل شهرة، لذا الأمر يعتمد على نوع المشروع. بجانب وجود إطارات متنوعة تعتمد على React بالتالي يوجد الكثير من الخيارات، بدءًا من Next.js وهو الأشهر، بالإضافة إلى Gatsby وRemix. وبالرغم من وجود Nuxt.js وهو المنافس المباشر لـ Next.js وهو ممتاز وقوي للغاية ويقوم بنفس الوظائف (SSR, SSG, etc) بشكل جيد، لكن لا يوجد نفس التنوع السابق. أيضًا أدوات إدارة الحالة State يوجد خيارات أكثر بكثير في بيئة React، بينما Vue لديك Pinia وهو الحل الرسمي الحالي وقوي جدًا وممتاز. كذلك يوجد React Native لبناء تطبيقات الهواتف، وستتمكن من خلاله من إعادة استخدام كود React الذي كتبته لتطبيق الويب. ولا يوجد حل رسمي من فريق Vue لتطوير تطبيقات الهاتف، والبدائل موجودة ولكنها ليست بنفس القوة أو الشعبية، حيث يوجد NativeScript-Vue وهو حل جيد لاستخدام Vue لبناء تطبيقات Native، لكن مجتمعه أصغر ودعمه أقل من React Native.
  10. في الواقع العملي الأمر ليس شعارات، بمعنى تطبيق Vue مبني بشكل جيد ومعمارية سليمة سيكون دائمًا أفضل من تطبيق React مكتوب بشكل فوضوي، والعكس صحيح، أي المبرمج ومنهجية العمل أهم من الأداة نفسها. وتستطيع بناء مشاريع كبيرة من خلال Vue.js لا مشكلة، لكن الأمر يعتمد على متطلبات المشروع، أي لو المشروع يعتمد على مكتبة أو حل معين لا يتوفر إلا في بيئة React فستقوم بالتطوير من خلالها، كذلك عند تطوير مشروع يتم الأخذ في الإعتبار مدى توفر مبرمجي React أو Vue في سوق العمل المحلي وبالطبع React لها النصيب الأكبر، لذا لبناء فريق كبير سيكون هناك حاجة إلى سهولة في التوظيف، بالتالي يتم اللجوء إلى React. كذلك لو هناك حاجة لتطوير تطبيق للهواتف باستخدام نفس الكود، فيوجد React Native هو الحل الأقوى لو أردت تطوير تطبيق هاتف من خلال جافاسكريبت. أو في حال المشروع بحاجة إلى Next.js. وللعلم Vue شائع جدًا استخدامه في الصين وآسيا ويزداد اعتماده في أوروبا والشرق الأوسط، لديك مثلاً Alibaba يعتمد على Vue.
  11. ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم أسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.
  12. لا مشكلة، يستطيع أي شخص شراء الدورة لك، المهم هو التسجيل بنفس الإيميل الذي تم به تسجيل الحساب، لكن الأسهل هو أن يشتري لك بطاقة هدية بتكلفة الدورة ثم تستخدمها لشراء الدورة. ستجد تفصيل هنا لشرح الأمر: شراء بطاقة هدية استخدام بطاقة الهدية وذلك هو رابط شراء البطاقة بشكل مباشر: https://academy.hsoub.com/store/gift-cards/
  13. لم أتفهم المطلوب، لكن تفقدت المشروع لديك، وقد قمت بالمطلوب لا مشكلة ما عدا جزئية واحدة، وهو تحميل وتنظيف البيانات بتحميل الملف 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]
  14. بالضبط، بإجراء عمليات حسابية أو مقارنات بين قيمة منطقية ورقم، تقوم بايثون بشكل ضمني أي في الخلفية بتحويل القيمة المنطقية إلى ما يعادلها من الأعداد الصحيحة 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)
  15. حاليًا الأفضل الاستمرار في تعلم بايثون لكون المفاهيم حاضرة في ذهنك ولترسيخها أكثر، وللتطبيق على ما تعلمته في المسارين حاول القيام بأحد المشاريع التالية: 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 في بايثون. بعد ذلك قم بتعلم الواجهة الأمامية، وانتقل لتعلم لجانغو بعدها.
  16. الأمر ليس مجموعة من الخطوات تستطيع نسخها ولصقها، بل عملية استكشافية تتطلب حدس، فضول ومعرفة بالمجال، أي بمعنى أدق الخبرة هي التي تُحدث فارق ملموس في دقة النماذج، تعميمها، قابلية تفسيرها وفي نجاح المشروع من الأساس، وكلما تم الاستثمار في الجانب الإبداعي لهندسة الميزات، زادت احتمالات الوصول إلى حل عملي متفوق بأقل تعقيد ممكن. بمعنى يتطلب الأمر استكشاف بصري ، وطرح أسئلة ماذا لو؟، وبناء ميزات تلتقط ظواهر غير مُشخصة في البيانات الخام، مثلاً نسبة المشتريات ليلاً ÷ إجمالي المشتريات كمؤشر لاحتيال. لتنمية ذلك الجانب قم بالتدرب على تنفيذ جلسة عصف ذهني، وأيضًا الاستعانة برأي خبير في البيانات نفسها في حال تتطلب خبرة عملية مثل البيانات الطبية، وغالب الحال ستتمكن من اكتشاف ميزة يصعب استنتاجها من البيانات وحدها. واستكشاف بصري مكثف EDA عن طريق الرسوم التشتتية، Box-Plots، وخرائط الحرارة تُولد أسئلة وفرضيات، كذلك عوضًا عن هندسة ميزة واحدة كبيرة، جرب توليد مئات الميزات البسيطة، ثم استخدم تقنيات انتقاء أو ترتيب المزايا لتصفية الأفضل. واعتمد على الـCross-Validation لتدوير الأفكار بسرعة واحتفظ فقط بما ينجح، بجانب قراءة أوراق ومسابقات مماثلة فكثير من الأفكار الإبداعية بإمكانك إعادة تدويرها.
  17. جودة البيانات هي الأهم بالطبع، لكونها تُحسن من الضجيج والانحياز معاً، بينما زيادة تعقيد النموذج في وجود بيانات رديئة ترفع التباين بدرجة أكبر من الفائدة. بالتالي جودة البيانات في المرتبة الأولى ثم زد تعقيد النموذج عند الحاجة، وتلك استراتيجية تؤدي إلى أعلى دقة، أفضل قابلية تعميم، وتكلفة معالجة أقل. ففي الواقع العملي البيانات عالية الجودة تتطلب وقت ومال، لكن الاستثمار يُدفع مرّة واحدة ويُستخدم لأي نموذج لاحق، واعتماد نموذج معقد فوق بيانات رديئة سيخفي المشاكل لفترة، لكنه يزيد من خطر الفشل عند الانتقال إلى بيئة الإنتاج وذلك يُعرف باسم data-shift. عليك بالتالي: ابدأ بتقييم جودة البيانات بتفقد القيم المفقودة، تشويش، أخطاء وضع العلامة، تحيز التوزيع. نظف البيانات، حسن التسميات، أضف ميزات مشتقة، ووازن الطبقات. درب نموذج بسيط من خلال Logistic Regression، Random Forest، XGBoost مع إعدادات افتراضية وحقق baseline قوي. استعن بنماذج أكثر تعقيداً فقط عندما يتشبع المنحنى ويصبح تحسين الدقة مكلف بالطرق التقليدية. راقب مقاييس التعميم Cross-Validation، Learning Curves للتأكد من أن زيادة التعقيد لا ترفع فجوة التدرب والاختبار.
  18. آلية الإختبار هي كالتالي، بعد إنهاء 4 مسارات من الدورة على الأقل، أو الدورة بالكامل عليكِ رفع المشاريع التي قمتي بها بالدورة على حسابك في github، ثم التحدث لمركز المساعدة وإخبارهم أنك تريدين التقدم للإختبار وتوفير روابط المشاريع على github. ثم الإنتظار لبعض الوقت لحين مراجعة المشاريع وسيتم الرد عليكِ، وتحديد موعد لإجراء مقابلة، وبها يتم: إجراء محادثة صوتيّة لمدة 30 دقيقة يطرح المدرّب عليكِ أسئلة متعلّقة بالدورة والأمور التي نفّذتيها خلالها. يحدد لك المدرّب مشروعًا مرتبطًا بما قمتي به أثناء الدورة لتنفيذه خلال فترة محددة تتراوح بين أسبوع إلى أسبوعين. إجراء محادثة صوتيّة أخرى لمدّة 30 دقيقة يناقش بها مشروعك وما نفذتيه وتُطرح أسئلة خلالها. إن سارت على جميع الخطوات السابقة بشكل صحيح، تحصلين على الشهادة أو يرشدك المدرّب لأماكن القصور ويطلب منك تداركها ثم التواصل معنا من جديد.
  19. موجودة في كل المكتبات وكذلك في مشاريع تعلم الآلة، ولكنك لا تشعر بها دائماً لأنك تعمل في دفاتر Jupyter بها كود بسيط دفك لاستكشاف البيانات بسرعة من أجل التعلم، ولا تحتاج إلى توزيع الكود على فريق كبير أو إعادة استخدامه بشكل متكرر. بالتالي الأسلوب الإجرائي أو الدوال القصيرة أبسط وأسرع، وما إن يكبر المشروع أو يصبح جزءًا من منتج، ستجد OOP في كل مكان، حتى لو لم تكتبها بنفسك. فمكتبات النمذجة والتي منها scikit-learn مبنية بالكامل على Estimator AP (fit / predict) حيث كل خوارزمية هي كائن، وكذلك PyTorch تطلب منك توريث nn.Module لإنشاء نماذجك. وTensorFlow Keras توفر tf.keras.Model و tf.keras.Layer. حتى DataFrame في pandas هو كائن ضخم، إذن، OOP ليست أقل شيوعًا بل هي ببساطة مغلفة داخل المكتبات التي تستخدمها، والسؤال الصحيح هو متى تحتاج أن تكتب كائناتك أنت؟ ببساطة لو لديك منطق تهيئة بيانات يتكرر عبر عدة تجارب، أو تريد تبديل نموذج عبر سطر إعداد واحد، أو عندما يصبح المشروع جزءاً من منتج مثل API أو تطبيق هاتف. أو هناك أكثر من شخص على الكود ويجب الاتفاق على واجهات واضحة، ولتنظيم الكود والفصل بين المسؤوليات، بمعنى • كلاس للتهيئة وآخر للتدريب وآخر للتقييم. ابدء أولاً بكتابة كود بسيط عبر الدوال، وعندما تلاحظ أن عددًا من الدوال تشترك في مجموعة متكررة من المتغيرات انقلها إلى كلاس.
  20. هل تقصد النموذج التالي في تعليق سابق؟ <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 وعليك تعديله ليتناسب مع المسار لديك. وسيتم إرفاق بيانات النموذج وهما الاسم والبريد الإلكتروني مع الطلب، وسيقوم لارافيل بمعالجته من خلال المتحكم المربوط بالمسار.
  21. سبب التوقف هو عدم وجود هدف واضح تسعين إليه، عليك تحديد ذلك، هل تتعلمين من أجل دخول مجال البرمجة؟ وما الدافع إلى ذلك، فور وجود الدافع ضعيه أمامك على ورقة والصقيها على الشاشة لتذكيرك، وستتمكنين من الإلتزام. ثم يجب وضع خطة لدراسة الدورة لكي لا تصابين بالإحباط، عليك بدراسة التالي أولاً: مدخل إلى علوم الحاسوب أساسيات البرمجة إلى عالم الويب أساسيات هندسة البرمجيات إعادة تصميم البرمجيات Refactoring ثم دراسة المسارات التالية وستجدي صعوبة بعض الشيء في دراستها، حاولي استيعابها بنسبة 50 إلى 70% وسيتضح لك الأمر أكثر أثناء تعلمك البرمجة وتنفيذ المشاريع والوصول لمرحلة متقدمة، ففي البداية الأمر مبهم. قواعد البيانات البرمجة كائنية التوجه الخوارزميات وبنى المعطيات أنماط التصميم أنظمة التشغيل ونظام لينكس وستجدين تفصيل هنا بخصوص بعض النقاط:
  22. الأمر ليس هذا وذاك، كلاهما مطلوب في سوق العمل لكن Vue.js بنسبة أقل وستجدها مستخدمة بالشركات الصغيرة، أما React في الشركات المتوسطة إلى الكبيرة. عامًة أنت تتعلم للحصول على وظيفة بالتالي تفقد المطلوب في سوق العمل المحلي لديك بالنسبة لمطور Front-End هل يوجد نسبة جيدة تطلُب Vue.js أم الغالبية React.js؟ وهل الوظائف التي تطلُب Vue.js تتطلب مستوى خبرة كبير أي 3 سنوات فيما فوق مثلاً أم بمستوى أقل Junior؟ في حال Junior إذن هي أفضل لك، لأنّ أغلب وظائف React تحتاج إلى خبرة سنتين على الأقل لكي يتم قبولك والقليل منها يقبل بمستوى Junior أي خبرة سنة. كنصيحة تعلم React وتعمق بها ثم تعلم Next.js وتعمق به، ثم ستستطيع تعلم أي إطار واجهة أمامية بعد ذلك، فجميعهم يتبع نفس المفهوم.
  23. يوجد منصة تواصل باسم I\O وهي عبارة عن مجتمع للنقاش الهادف والموضوعي، وبها مجتمعات مثل: تطوير الويب برمجة تستطيع طرح موضوع للنقاش هناك والتواصل مع أشخاص بنفس الهدف، أو تستطيع متابعة قسم أسئلة البرمجة ومتابعة الأشخاص المشتركين بنفس الدورة ومراسلتهم للدراسة معًا، وإليك مثال:
  24. ما يكفي للوصول إلى مستوى متوسط لتنفيذ مشاريع، وتستطيع تعلم المزيد عند الحاجة، لكن عليك التعمق في جافاسكريبت من خلال دراسة دورة جافاسكريبت فهي متعمقة أكثر باللغة.
  25. ببساطة مجال الـ Front-End يمتاز بالسهولة نسبيًا مقارنًة بالواجهة الخلفية Back-End، لكن كلاهما مجالات ليست سهلة حاليًا بسبب التطور الذي حدث بهما وبالأخص الواجهة الأمامية. كبداية ستجد دراسة الـ Front-End أسهل والحاجز الذي عليك تخطيه لتعلمه منخفض في البداية مقارنًة بالـ Back-End، وسيُشجعك على الاستمرار في التعلم وتأهيلك لتعلم الـ Back-End، وربما تفضل أحدهم على الآخر وتقرر التخصص في تخصص واحد فقط بعض تعلم كلاهما. في بداية مشوارك أنصحك بأن تكون Full-stack ثم بعد ذلك تتخصص في الواجهة الأمامية أو الخلفية، وذلك بعد الحصول على وظيفة واكتساب خبرة. صدقًا الأمر ليس بتلك الصعوبة، كل ما تحتاجه هو البدء في أحدهما وستصل للآخر، لكن التفكير الكثير فخ يقع به الأغلب. حدد فقط ما هي التقنيات التي تريد تعلمها لتصبح Full-stack، وبشكل عام HTML, CSS, JS لغات ثابتة، يتبقى لك تحديد الواجهة الخلفية، وكنصيحة ابدء من خلال جافاسكريبت وتعلم Node.js لتسهيل الأمر عليك، وبعد ذلك تستطيع تعلم أي لغة واجهة خلفية أخرى سواء PHP أو C# وغيرهم.
×
×
  • أضف...