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

Mustafa Suleiman

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

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

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

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

    494

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

  1. بالطبع يجب استدعاء fetch كل مرة تصل فيها إلى نهاية الصفحة أو بالقرب منها حسب تصميم الصفحة لديك، والأفضل بالقرب منها وذلك بالإعتماد على Intersection Observer API في المتصفح. لا تقم أبدًا بجلب كل البيانات، فذلك من شأنه التأثير على الأداء بشكل كبير، وأيضًا استهلاك الموارد بدون داعٍ. من خلال CORS وهي آلية أمان مدمجة في المتصفحات تمنع أي موقع أو أصل - Origin من طلب موارد من موقع آخر إلا إذا سمح الموقع الآخر بذلك صراحًة، والأصل يتكون من البروتوكول، اسم النطاق والمنفذ. أي بتحديد النطاقات المسموح لها بالإتصال بالخادم وتمرير ذلك إلى مكتبة CORS وذلك بالنسبة لجافاسكريبت، أما في PHP فتتحقق من جود الـ origin في الطلب.
  2. ما هو تخصصك؟ هل تنوي استخدامه لدراسة الفيزياء أم تنوي دراسة مجال الذكاء اصطناعي وتسأل عن الأساسيات المطلوبة؟ عامًة لست بحاجة إلى دراسة الفيزياء، بل أساسيات الرياضيات: ابدء بالجبر الخطي ودراسة المصفوفات، العمليات الأساسية، الضرب النقطي. ثم التفاضل ودراسة المشتقات، قاعدة السلسلة، التدرج. ثم الإحصاء ودراسة المتوسط، الانحراف المعياري، التوزيعات الأساسية بعد ذلك كلما واجهتك مفاهيم رياضية، توقف وادرسها. ستجد تفصيل هنا:
  3. البرمجة ليست مثل اللغة الإنجليزية يمكن ممارستها بشكل شفهي أو كتابة نصوص عادية أو الاستماع للشرح فقط، ستحتاج إلى التفاعل بشكل نشط، واستخدام محرر الأكواد لتطبيق ما تعلمته. وكتابة الكود على الهاتف عملية صعبة بطبيعة الحال، لذا لحين توافر لابتوب حاول شراء لوحة مفاتيح لاسلكية وربطها بهاتفك، من أجل أن تتمكن من كتابة الكود الكود بشكل قريب من الحاسوب. واستخدام نسخة الويب من vscode لكتابة الكود وتثبيت المكتبات اللازمة للمشاريع. https://vscode.dev/ وفي حال دورة الذكاء الاصطناعي، فاستخدم جوجل كولاب بدلاً من jupyter.
  4. الملفات الكبيرة عليك بمعالجتها عن طريق التقسيم Chunking، حيث يتم تقسيمها إلى مئات القطع الصغيرة، وفي وقت التقييم، يسترجع النظام فقط الأجزاء ذات الصلة بالمعيار المحدد، بمعنى كل الملفات تدخل نفس الـ pipeline، ويتم استخلاص نصوصها، تقسيمها، وترميزها في نفس قاعدة البيانات. عند البحث، سيعثر النظام على القطع ذات الصلة بغض النظر عن الملف الأصلي الذي أتت منه. والملفات الصغيرة سيتم تقسيمها إلى قطعة واحدة أو بضع قطع وتتم فهرستها كالمعتاد. لذا شكل الـ Pipeline: مرحلة الإدخال والمعالجة المسبقة: استقبال الملفات والصور. استخلاص النصوص من الملفات وللملفات النصية الأمر مباشر لا مشكلة، لكن لملفات الصور، ستحتاج إلى تقنية OCR. ثم تنظيف النصوص بإزالة الأحرف غير الضرورية، التنسيقات وخلافه. 2. التقسيم Chunking، بتقسيم النص الكامل المستخرج من كل الملفات إلى Chunksأصغر وذات معنى، مثلاً، كل قطعة عبارة عن فقرة أو 300 كلمة. 3. مرحلة الترميز والفهرسة: تحويل كل قطعة نصية إلى تمثيل رياضي يسمى Vector Embedding أي متجه رقمي يلتقط المعنى الدلالي للقطعة. ثم تخزين كل المتجهات في قاعدة بيانات متخصصة تسمى Vector Database مثل ChromaDB, Pinecone, FAISS والتي تتيح البحث عن المعلومات بناءًا على المعنى وليس فقط الكلمات المفتاحية. 4. مرحلة الاسترجاع: تحويل السؤال أو القاعدة أو الشرط الذي تريد تقييم المستندات على أساسه إلى Vector Embedding. ثم استخدام المتجه الناتج للبحث في قاعدة البيانات عن أكثر القطع النصية تشابهًا وذات صلة من مستنداتك. 5. مرحلة التوليد والتقييم: بعد العثور على القطع النصية الأكثر صلة التي تم استرجاعها في الخطوة السابقة، تُرسل مع السؤال أو القاعدة أو الشرط الذي تريد تقييم المستندات على أساسه إلى نموذج لغوي كبير LLM. إعطاء النموذج مهمة محددة بكتابة Prompt ليقوم بالتقييم، وتوفير التغذية الراجعة، تحديد النتيجة، والإجابة على سؤال هل المعلومات كافية؟
  5. ما تقصده هو المنطق البرمجي، وأسهل حل هو تقسيم ما تريد تنفيذه إلى أجزاء ثم العمل على جزء جزء وربط المنطق ببعضه البعض، وليس النظر للمشكلة ككل، وأيضًا كتابة الكود هي الخطوة الأخيرة وقبلها يجب التفكير في طريقة حل المشكلة، بمعنى ستكتب كود زائف Pseudocode عبارة عن كتابة خطوات الحل بلغة عادية عربية أو إنجليزية ولكن بأسلوب يشبه الكود، وهنا ستقوم بالتركيز على المنطق فقط، بعيدًا عن تعقيدات الـ Syntax. بمعنى لتطوير برنامج لتحديد هل الرقم زوجي أم فردي، ستقوم بكتابة الكود الزائف التالي: ابدأ البرنامج. اطلب من المستخدم إدخال رقم. خزن الرقم في متغير اسمه number. إذا كان باقي قسمة number على 2 يساوي 0: اطبع الرقم زوجي. وإلا: اطبع الرقم فردي. أنهِ البرنامج. وتصبح ترجمته إلى بايثون مباشرة وسهلة جدًا: number = int(input("**Enter a number:** ")) if number % 2 == 0: print("**The number is even**") else: print("**The number is odd**") وفيما بعد عند زيادة تعقيد المشروع، استخدم أيضًا المخططات الانسيابية Flowcharts وهي تمثيل مرئي لتدفق المنطق في البرنامج. وتنمية مهارة المنطق البرمجي بحاجة إلى ممارسة ووقت، لذا لا تستعجل النتائج، وحاول توظيف ما تعلمته بشكل عملي وربط الدروس ببعضها البعض، بمعنى تنفيذ ما تعلمته في الدروس السابقة في التمرين الخاص بالدرس الحالي وهكذا.
  6. البرنامج منطقه بسيط، وهو إختبار لك، لذا توفير الحل بشكل مباشر لا استفادة به، عليك تجزأة المطلوب إلى أجزاء أو مهام أصغر ثم العمل عليها وليس النظر للمشكلة أو المطلوب ككل. ولا تقم بكتابة الكود أولاً، بل فكر في المنطق الذي ستنفذ من خلاله البرنامج واكتبه في شكل خطوات ثم حوله إلى كود، ابحث عن pseudo code لتتفهم الفكرة. ستحتاج إلى دراسة التالي لتنفيذ البرنامج:
  7. لا يتوفر للأكاديمية تطبيق للهاتف في الوقت الحالي، لكن تستطيع الدراسة من خلال متصفح الهاتف، وعامًة الدراسة من خلال الهاتف بالنسبة للبرمجة ليست عملية، حيث يجب التطبيق بشكل عملي وليس المشاهدة فقط، ولا مشكلة في ذلك بالنسبة للدروس النظرية، أما العملية فيجب المشاهدة والتطبيق في نفس الوقت. وحتى الدروس النظرية يجب تلخيصها في نقاط أو بشكل مختصر للعودة إلى التلخيص عند المراجعة.
  8. حاليًا لا تتوفر عروض بخصوص ذلك، لكن في أوقات مختلفة من العام يتم توفير عرض دورتين بسعر دورة واحدة، وذلك في أوقات مثل العطلة الصيفية أو رمضان وأحيانًا في فترة التخفيضات السنوية الخاصة بالجمعة البيضاء أو في بداية العام. ومنذ فترة انتهى ذلك العرض ويتجدد خلال العام في أوقات مختلفة، وربما يتغير العرض، لكن الفكرة أن هناك عروض خلال العام، تابع الأكاديمية. أيضًا أرجو سؤال مركز المساعدة عن توافر كوبونات حاليًا أم لا، فأحيانًا يتوافر ذلك. كيفية استخدام الكوبون للحصول على الدورات
  9. هما الأساس لأي خوارزمية من الناحية النظرية، حيث Time Complexity يقيس عدد العمليات التي تقوم بها الخوارزمية كدالة في حجم المدخلات، بمعنى كلما زاد حجم المدخلات، كم من الوقت الإضافي سيستغرقه البرنامج؟ فالخوارزمية البطيئة لا مشكلة بها لـ 10 عناصر، لكنها ستستغرق ساعات أو أيام لمعالجة مليون عنصر، بالتالي المقياس يساعدنا على فهم قابلية الـ Scalability أو التوسع للحل. وSpace Complexity يقيس مقدار الذاكرة الإضافية التي تستخدمها الخوارزمية كدالة في حجم المدخلات، أي بزيادة حجم المدخلات، كم من الذاكرة الإضافية سيحتاجها البرنامج؟ حيث استخدام ذاكرة هائلة سيؤدي إلى بطء النظام أو انهياره، خاصة في البيئات ذات الموارد المحدودة مثل الهواتف المحمولة أو الخوادم المشتركة. لكن عمليًا، هناك مقاييس أخرى، وأهما مدى نسبة صحة الخوارزمية بالنسبة لمختلف الحالات، بالإضافة إلى مدى بساطة الخوارزمية ومدى تعقيدها، وأداء ذاكرة التخزين المؤقت، قابلية التوسع في الأنظمة الموزعة، الاستقرار واستهلاك الطاقة.
  10. بالنسبة للاستضافات المجانية، يتوفر render والتي توفر لك استضافة خادم node.js وكذلك توفير قاعدة بيانات Postgres وMySQL، لكن ستحتاج إلى credit card أي بطاقة دفع من أجل تفعيل حسابك والحصول على باقة مجانية ولن يتم خصم منك شيء فقط للتفعيل. وفي حال لا يتوفر بطاقة لتفعيل حسابك، تتوفر استضافة vercel حيث توفر خادم لاستضافة مشاريع node.js، لكن لاستضافة قاعدة البيانات ستحتاج إلى استضافة إضافية وهي Supabase وستحصل على رابط للإتصال بقاعدة البيانات من خلال vercel أي ستضع ذلك الرابط في متغيرات البيئة في مشروعك على Vercel. وبالنسبة للطريقة فيجب أولاً رفع المشروع على github لكي تتمكن من نشره على الاستضافة، ثم تفقد الشرح التالي فالطريقة مشابهة لكن تختلف واجهة المستخدم فقط: وفي حال واجهت صعوبة، قم بالبحث على اليوتيوب عن how to deploy express.js project on render وتستطيع الاستفسار هنا أيضًا.
  11. الدورات بالأكاديمية ليست مُحددة المدة، عند الإشتراك تصبح متاحة لك مدى الحياة، بالإضافة التحديثات التي تحدث على الدورة كل فترة ستحصل عليها مجانًا. كذلك تستطيع الحصول على الشهادة في أي وقت، ولا يوجد مدة مُحددة لإنهاء الدورة خلالها بعد الإشتراك.
  12. جيد جدًا، لكن هل المقصود تطبيق للهاتف أم تطبيق ويب؟ بمعنى هل سيتم استخدامه من قبل المتصفح، أم المطلوب تطبيق متكامل؟ عامًة تستطيعي تطوير تطبيق ويب من خلال django ثم الاستفادة من تقنية PWA لتثبيت تطبيق على الهاتف، و بنسبة كبيرة ذلك كافٍ جدًا حيث تطبيق الويب التقدمي هو في الأساس موقع ويب مصمم ليبدو ويعمل كتطبيق هاتف أصلي. لكن في حال المطلوب رفع تطبيق على متجر جوجل بلاي، فستحتاجين إلى استخدام Java وتطوير تطبيق أندرويد من خلال Android Studio و Java SDK لبناء تطبيق أندرويد أصلي. لكن لو أردتي نشر التطبيق على متجر آبل أيضًا، فيجب تطويره من خلال بايثون وإطار BeeWare. وللعلم أيضًا تستطيعي تعلم C# فهي قريبة من Java و C++ والإعتماد على إطار NET. الخاص بها لتطوير تطبيق وتطبيق هاتف أيضًا لكل من أندرويد وiOS
  13. لا داعي للقلق، طالما وضحت ما تريده في الرسالة سيتم الرد عليك عما قريب، نعتذر لك عن أي تأخير.
  14. ما هي فكرة المشروع المراد تنفيذه؟ وهل لديكِ أي دراية بالبرمجة من قبل؟
  15. عليك بالتقسيم الطبقي المُجمع Stratified Group Splitting وأقصد Stratified Group K-Fold وليس Stratified Split، حيث ستصنف العملاء أنفسهم أي المجموعات إلى فئات بمعنى طبقات بناءًا على أعلى رصيد لديهم بواسطة df.groupby ثم تقسيم العملاء مع الحفاظ على نسبة الفئات في كل مجموعة، لو 3 فئات n_bins = 3 مثلاً التقسيم سيتم على أساس منخفض، متوسط، عالي، وستستخدم pd.qcut لتقسيم متساوٍا حسب الكمية. ولتقسيم البيانات مرة واحدة مثلاً 70% تدريب، 15% تصديق، 15% اختبار، استخدم دالة train_test_split مرتين، وفي كل مرة، مرر فئات الرصيد التي أنشأتها إلى معامل stratify، للحفاظ على نسب الفئات. بمعنى StratifiedGroupKFold، لتنفيذ Cross-Validation بعد التقسيم الأولي، أي على مجموعة التدريب نفسها، لاختيار أفضل إعدادات للنموذج.
  16. تطبيق الويب أشبه في استخدامه لتطبيقات الهاتف لكن من خلال موقع ويب، أي عند زيارته من خلال متصفح الهاتف تستطيعي التنقل بين الصفحات بسرعة وتحديث البيانات بشكل فوري دونّ إعادة تحديث الصفحة، مثل موقع فيسبوك على الهاتف أو تويتر، ولستِ بحاجة إلى تثبيت أية تحديثات فقط تتصفحى الموقع، وعند وجود ميزات جديدة ستجديها به، أي بمجرد أن يقوم المطور بتحديث الموقع، يراه كل المستخدمين، وتحتاجين اتصال دائم بالإنترنت لكي تتصفحي الموقع. بينما تطبيق الهاتف مثل التطبيقات المثبتة على هاتفك، حيث تحتاجين إلى التوجه لمتجر التطبيقات مثل جوجل بلاي على الأندرويد ثم تحميل التطبيق وتثبيته لاستخدامه، وبالطبع تجربة الاستخدان هنا أسرع وأكثر استجابة لأنه مصمم خصيصًا للهاتف، ولديه وصول كامل لكل ميزات الهاتف أي الكاميرا، الميكروفون، جهات الاتصال، الإشعارات، البلوتوث، وخلافه. وهناك حل وسط بينهم وهي تقنية Progressive Web App - PWA وهي تقنية خاصة بمواقع الويب، وتسمح بتثبيت تطبيق خفيف على الهاتف به ميزات تشبه تطبيقات الهاتف. ومتاح أن يعمل بدون إنترنت، ويمكنه إرسال إشعارات، وكل ذلك من خلال المتصفح مباشرة حيث يعتمد في الخلفية على المتصفح. ستحتاجين إلى قراءة التالي:
  17. الأمر ليس بتلك السهولة، وفي مجال البرمجة لا يعني تفوق تقنية في جزء معين أفضليتها بشكل كامل على تقنية أخرى، فلكل تقنية (لغة أو إطار) الاستخدام المناسب لها، ولا يوجد ما هو أفضل لكل شيء. أيضًا التقنيات تتقدم بشكل مستمر، ولذا لم تعد PHP بطيئة، فمع إصدارات PHP 7 و8، تحسن الأداء بمعدل 2 إلى 3 أضعاف، أي سرعة أعلى وتقليل استهلاك الذاكرة، بسبب تقنية JIT Compiler في PHP 8. وPHP تدعم Asynchronous الآن منذ PHP 8.1، من خلال ميزة Fibers بالإضافة إلى مكتبات قوية مثل Swoole التي تتيح بناء تطبيقات غير متزامنة عالية الأداء، وReactPHP. وSynchronous ليس عيب دائمًا، فهي مناسبة لمعالجة الطلبات البسيطة وعمليات قواعد البيانات. ناهيك عن ثبات واستقرار واستمرار تطور منصة WordPress التي تعتمد على PHP، وأيضًا تطور إطار لارافل بشكل كبير، وسهولة وسرعة تطوير المشاريع الصغيرة والمتوسطة من خلالهم. كذلك يوجد استقرار نسبي في مجتمع PHP مقارنًة بجافاسكريبت التي بها مشكلة تعقيد في الأدوات Webpack, Babel, وخلافه، وسرعة التغيير والإنتقال لتقنيات أخرى.
  18. دورة بايثون ودورة الذكاء الاصطناعي بهما ترابط كبير، حيث تخصص الذكاء الاصطناعي يعتمد على لغة بايثون في المقام الأول، وأيضًا الدورة سيتم بها شرح أمور متعلقة بتحليل البيانات وتعلم الآلة، وكذلك شرح إطارات الويب الخاصة ببايثون وهم جانغو وفلاسك، والتي ستحتاج إليها في حال أردت نشر نموذج ليصبح متاح استخدامه من قبل آخرين عن طريق واجهة مستخدم. وبما أنك تخصصت في مجال الويب بالفعل، لذا دورة بايثون هي الأنسب لك، ومن خلال تستطيع تطوير الواجهة الخلفية عن طريق جانغو وفلاسك، وكذلك تطوير مشاريع Full-stack أيضًا من خلالهم. وستتعلم أمور متقدمة نسبيًا مثل كيفية استخراج بيانات من الويب عن طريق web scraping وتخزين تلك البيانات واستخدامها في موقعك مثلاً. كذلك كيفية تحليل البيانات في ملف csv و Word و PDF، والاستفادة منها بتخزينها في قاعدة البيانات وعرضها في الموقع. أما مجال تعلم الآلة أو الذكاء الاصطناعي، فهو مجال مختلف تمامًا عن تخصصك.
  19. هل قمت بإنشاء المستودع المحلي في المجلد الصحيح، أي قمت بتنفيذ أمر git init في مسار مجلد المشروع في منفذ الأوامر سواء cmd أو powershell؟ تأكد من ذلك، وأيضًا يجب تنفيذ الأمر git add . في مسار مجلد المشروع الذي به المستودع المحلي. ويجب إنشاء ملف gitignore. وإعداده، من أجل تجنب رفع الملفات والمجلدات التي ليس لها علاقة بالكود المصدري أو الملفات الحساسة مثل ملف متغيرات البيئة env. الأفضل تعلم أساسيات git من خلال التالي:
  20. اللغة العربية بها صعوبات لأي نموذج، بسبب الأشكال المركبة أي ربط الحروف، النقاط والتشكيل التي تغير المعنى بجانب جودة الصور من الكاميرات الأمنية والإضاءة وزوايا الرؤية. لذا في حال جودة الصورة منخفضة فيجب تنفيذ Preprocessing على الصور من خلال تصحيح الإضاءة، تكبير الصورة 2-3x، تحسين التباين وإزالة الضوضاء، ولو الزوايا مائلة قم بتطبيق تصحيح perspective. أيضًا لو النموذج لم يتدرب على لوحات فيجب عمل Fine-tuning له على لوحات، ولو ظهرت مشكلة مزج اللغات عربي وإنجليزي، ستحتاج إلى استخدام نموذج متعدد اللغات multi-lingual models. ويتوفر نموذج PaddleOCR (Baidu) ويدعم العربية بأداء جيد، وللمشاريع المتقدمة ستحتاج إلى YOLOv8 كنموذج Recognition Layer بحاتب PaddleOCR (Baidu). واعتمد على مجموعة البيانات السعودية التالية لعمل Fine-tuning: https://www.kaggle.com/datasets/riotulab/saudi-license-plate-characters وتستطيع توليد لوحات بشكل اصطناعي أي Synthetic Data Generation، فبناء dataset مخصصة بجودة عالية سيحسن الدقة بنسبة 40 إلى 60% على الأقل. ولتحسينها أكثر قم بعمل Post-processing لتصحيح أخطاء الـ OCR.
  21. بعد دراسة الأساسيات وتنفيذ مشروع بسيط، ابدء في حل المساءل البرمجية، وفي نفس الوقت اعمل على تطوير مستواك في اللغة بتعلم المفاهيم المتقدمة. لكن قبل حل المسائل البرمجية، عليك تعلم أساسيات هياكل البيانات والخوارزميات أي مفاهيم بسيطة من الـ DSA مثل: Arrays وطرق التعامل معها. Strings والخوارزميات الأساسية عليها مثل عكس النصوص، البحث عن عنصر. Time Complexity بشكل بسيط مثل فهم الفرق بين O(n) و O(n^2). وما سبق ستتعلمه في أساسيات جافاسكريبت، لذا يتبقى Time Complexity فقط. وتتوفر منصات مثل HackerRank أو Edabit أو Codewars للمبتدئين، حيث تبدأ بالتدرج من خلال منصة سهلة نسبيًا مثل Codewars وحل الأسئلة السهلة ثم المتوسطة ثم الصعبة، ثم الإنتقال لمنصة leetcode وحل المسائل التي بها بدءًا من مستوى متوسط فما فوق. بعد حل أي مسألة، اقرأ حلول الآخرين لتعلم تقنيات جديدة وخصص وقت يوميًا للحل حتى لو 30 دقيقة، وتستطيع التعمق في DSA عند الانتقال للمسائل المتوسطة، حيث ستتعلم هياكل البيانات الأساسية Linked Lists, Stacks, Queues, Hash Tables, Trees. والخوارزميات أساسية هي: البحث الخطي والثنائي Linear/Binary Search. الفرز السريع والدمج Quick Sort, Merge Sort. الاجتياز Traversal للأشجار مثل BFS, DFS. وبخصوص طريقة الدراسة المناسبة ستجد تفصيل هنا:
  22. الدورة تخصصها التطوير وليس التصميم، بمعنى أنت ستستلم التصميم من مصمم واجهات المستخدم ثم تعمل على تحويله إلى موقع حي، وذلك يسمى Front-End Developmen. أي كمطور واجهة أمامية التصميم ليس من اختصاصك بل من اختصاص مصمم واجهات المستخدم، لكن يجب الإلمام بالأساسيات الخاصة به لتصبح قادر على التعديل متى أردت وإبداء رأيك في التصميم واقتراح أمر ما على المصمم من وجهة نظرك، أو حتى تصميم واجهة جيدة عند العمل على مشاريعك، ستفاجيء بمقدار التحسن في تصميم الواجهة الذي تقوم به في مشروع خاص بك عند الإلمام بالأساسيات أي على دراية بما تقوم به وليس بشكل عشوائي. أيضًا عند العمل على مواقع العمل الحر، ستضطر أحيانًا إلى تصميم وتطوير المشروع بنفسك، لذا يجب أن تكون على جاهزية لتنفيذ المطلوب وبالطبع هناك تكلفة إضافية بجانب البرمجة. على الأقل تعلم ما يلي: التسلسل الهرمي البصري Visual Hierarchy وهو ترتيب العناصر لتوجيه عين المستخدم إلى الأهم أولاً. التباين Contrast الخاص باستخدام الألوان والأحجام والأوزان لجعل العناصر قابلة للقراءة والتمييز. المساحة البيضاء White Space وNegative Space لاستخدام الفراغ لتنظيم المحتوى وتجنب ازدحام الواجهة. المحاذاة Alignment لتنظيم العناصر على شبكة Grid وهمية لجعل التصميم يبدو مرتب ومنظم. التكرار أي إعادة استخدام نفس الأنماط (الألوان، الخطوط، الأزرار) للحفاظ على الاتساق. نظرية الألوان Color Theory لاستيعاب أساسيات تناسق الألوان وكيفية استخدامها للتأثير على شعور المستخدم. Typography لاختيار الخطوط وأحجامها وأوزانها لضمان سهولة القراءة وتحسين تجربة المستخدم. وإليك مصادر لتعلم الأساسيات: وتعلم Figma وأساسيات الـ UI/UX من القنوات التالية: Ahmad Sekmani Anas Rafaat | أنس رأفت
  23. كمسألة برمجية بمستوى مبتدأ، اعمل على تطوير برنامج حاسبة مجموع الأعداد الزوجية، حيث ستكتب دالة باسم sum_of_evens تستقبل قائمة من الأعداد الصحيحة كمدخل، وتقوم بإعادة مجموع الأعداد الزوجية فقط الموجودة في القائمة. ومسألة متوسطة المستوى، اكتب دالة باسم word_frequency_counter تستقبل نص كمدخل، وتقوم بإعادة قاموس يحتوي على كل كلمة في النص وعدد مرات تكرارها، ويجب أن يكون الحل غير حساس لحالة الأحرف case-insensitive، أي أن Python و python تعتبران نفس الكلمة، وتجاهل علامات الترقيم الأساسية مثل الفاصلة , والنقطة . ومسألة متقدمة، اكتب سكربت بايثون يقوم بفحص جميع الملفات في مجلد معين ولنفترض أنه المجلد الذي يعمل فيه السكربت، ولكل ملف، سيقوم السكربت بإنشاء مجلد فرعي جديد يحمل اسم امتداد الملف مثل txt, pdf, jpg في حال لم يكن موجود بالفعل، ثم ينقل الملف إلى ذلك المجلد. والمراجعة ستتم بناءًا على: هل الكود ينتج المخرج الصحيح للمدخلات المعطاة؟ وهل يعمل بشكل صحيح مع الحالات الاستثنائية الغير تقليدية؟ هل الحل يستخدم أفضل طريقة من حيث سرعة التنفيذ واستهلاك الذاكرة؟ والأمر مهم أكثر في المسائل المتقدمة. هل الكود منظم وسهل القراءة؟ هل أسماء المتغيرات والدوال واضحة وذات معنى؟ هل هناك تعليقات لشرح الأجزاء المعقدة؟ هل تستخدم ميزات اللغة بشكل جيد؟ مثلاً، استخدام list comprehensions بدلاً من حلقات for التقليدية عند الإمكان، أو استخدام with عند التعامل مع الملفات. هل الكود قادر على التعامل مع المدخلات غير المتوقعة بشكل سليم دون أن يتعطل؟ مثلاً، لو القائمة فارغة في المسألة الأولى؟
  24. الشهادة الجامعية في حد ذاتها غير مهمة في مجال تعلم الآلة وفي مجال البرمجة بشكل عام، لكن وجود شهادة جامعية يُحسن من فرص قبولك بطبيعة الحال، فجزء كبير من الشركات يشترط شهادة جامعية على الأقل. لكن يمكن تعويض ذلك من خلال اكتساب خبرة كبيرة بحيث يتم التغاضي عن الشهادة، وبالطبع ذلك من خلال تطوير مستواك وتنفيذ مشاريع والعمل على منصات العمل الحر أو عن بُعد. وأُثناء ذلك تستطيع الإلتحاق بأي نظام تعليم جامعي مفتوح والحصول على الشهادة في نفس الوقت. عامًة في حال تريد تعلم البرمجة فافعل ذلك طالما ليس لديك شيء آخر تفعله، أي ابذل ما في وسعك والله لا يُضيع أجر من أحسن عملاً.
  25. بالطبع، وبه ستكتب وصف للمشروع ماذا يفعل الـ API؟ ما هي المشكلة التي يحلها؟ والتقنيات المستخدمة Tech Stack، وكيفية تشغيل المشروع محليًا بتعليمات واضحة خطوة بخطوة. وقائمة بالـ API Endpoints من خلال جدول بسيط يوضح كل endpoint، وماذا تفعل، وما هي البيانات التي تتوقعها، مثلاً POST /auth/register - register a new user ,شرح للمتغيرات التي يحتاجها المشروع ليعمل مثل DATABASE_URL وJWT_SECRET. بجانب ما سبق يجب نشر المشروع على استضافة وتوفير رابط لحي لإختبار الـ API، وكذلك توثيق تفاعلي بواسطة Swagger. من خلال إضافة مكتبة Swagger إلى مشروعك swagger-ui-express، وهي ستقوم تلقائيًا بإنشاء صفحة ويب توثق كل الـ Endpoints في مشروعك (مثل GET /users, POST /products)، وستوفر توفر واجهة لتجربة كل endpoint مباشرة، وإرسال البيانات، ورؤية الاستجابة. وسيتم إنشاء مسار للتوثيق عند نشر المشروع على استضافة، ولتكن render مثلاً: https://my-todo-api.render.com/api-docs
×
×
  • أضف...