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

Mustafa Suleiman

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

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

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

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

    495

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

  1. يوجد طريقة للتغلب على ذلك بحذف مساحة من قرص الـ D ثم إنشاء قرص آخر بحرف مختلف ونقل الملفات إليه لكن أرى أن مساحة D ممتلئة تقريبًا. لذا ستحتاج إلى برامج خارجية ويوجد AOMEI Partition Assistant يوفر لك ما تريده بشكل مجاني في النسخة المجانية حيث بها ميزات Create, Extend, Shrink, Move, Delete, Format, Merge, Clone Partitions.
  2. الغرض منها تحويل مجموعة كبيرة من المتغيرات Features/الأعمدة في البيانات إلى مجموعة أصغر من المتغيرات الجديدة تُسمى المكونات الرئيسية Principal Components - PCs، مع الحفاظ على أكبر قدر ممكن من المعلومات لتحقيق التباين الموجود في البيانات الأصلية. وذلك للتغلب على لعنة الأبعاد، ففي حال يتوفر عدد كبير جداً من المتغيرات مقارنة بعدد العينات وهي الصفوف، تصبح النماذج أقل كفاءة، وأكثر عرضة للـ Overfitting، وتتطلب بيانات أكثر للتدريب، هنا يظهر فائدة الـ PCA بتقليل عدد المتغيرات والتي بدورها تزيد من أداء النموذج ويصح أسرع ويتطلب ذاكرة أقل. كذلك تقليل الضوضاء بالتركيز على الأنماط الرئيسية ذات التباين الأكبر في البيانات، ويتجاهل التباينات الصغيرة التي تسبب ضوضاء. ومن الصعب تصور بيانات ذات أبعاد كثيرة أكثر من 3، وبتقليل الأبعاد إلى 2 أو 3 مكونات رئيسية فقط من خلال PCA، يسمح برسم البيانات وفهم بنيتها أو اكتشاف تجمعات Clusters أو نقاط شاذة Outliers بصرياً. بالإضافة إلى معالجة تعدد الخطية Multicollinearity واستخراج الميزات، وليس شرطًا استخدامه مع الشبكات العصبية خاصًة العميقة منها، فهي قادرة بطبيعتها على التعامل مع بيانات ذات أبعاد عالية جداً وتعلم تمثيلات معقدة للميزات بنفسها داخل طبقاتها المخفية، وعملية التعلم تتضمن غالباً نوعاً من تقليل الأبعاد أو استخلاص الميزات بشكل ضمني. يتم اللجوء إليه أحيانًا مع وجود بيانات ذات أبعاد هائلة كبعض بيانات الصور أو الجينوم، كخطوة أولية لتقليل الأبعاد قبل إدخال البيانات للشبكة العصبية لتسريع التدريب أو تقليل متطلبات الذاكرة، أو لتصور مخرجات الطبقات الداخلية للشبكة. لكن الـ PCA يعتمد على علاقات خطية، بالتالي لو العلاقات المهمة في البيانات الغير خطية بشكل كبير، فسيتم فقدان معلومات مهمة تحتاجها الشبكة العصبية لتحقيق أداء جيد، حيث تتفوق في التقاط العلاقات غير الخطية.
  3. ليس عليك التعمق بها حاليًا سنتطرق إليها لاحقًا خلال الدورة في مسار الخوارزميات وبنى المعطيات، يكفي حاليًا التطبيق على ما تعلمته من خلال تمرين أو اثنان، بعدها تنتقل لتعلم أساسيات البرمجة، وتطبيق ما تعلمته في المسار الأول على المسار الثاني، بمعنى تنفيذ Flow chart بسيط لتمرين معين مثلاً وكتابة Pseudo Code. بعد الإنتهاء من مسار أساسيات البرمجة تستطيع حل مسائل برمجية من أجل تحسين مهارة التفكير المنطقي وكتابة الخوارزميات بحل مسائل بسيطة في البداية للجمع بين التعلم النظري والتطبيق عبر التمارين مثل منصات HackerRank أو Edabit أو Codewars للمبتدئين، حيث تبدأ بالتدرج من خلال منصة سهلة نسبيًا مثل Codewars وحل الأسئلة السهلة ثم المتوسطة ثم الصعبة، ثم الإنتقال لمنصة leetcode وحل المسائل التي بها بدءًا من مستوى متوسط فما فوق. هناك تفصيل بخصوص الـ problem solving ستجده هنا:
  4. بسبب مشكلة في المسار، لاحظي أن ملف index.html لا يعمل على نفس الخادم، بالتالي عند الضغط على الزر سيتم التوجه إلى مسار مشابه للتالي: file:///C:/laragon/www/script.php وهو مسار الملف على الحاسوب وليس الخادم. الصحيح هو كتابة مسار الخادم: <button onclick="window.location.href=' http://localhost:8080/script.php'" class="button"></button>
  5. المقصود أنّ الكود يجب أن ينتهي من التنفيذ بالكامل في مدة أقصاها 9 ساعات، في حال تعمل على وحدة المعالجة CPU ونفس الأمر بالنسبة لوحدة المعالجة GPU، بأي حال من الأحوال يجب أن ينتهي تنفيذ الكود في مدة أقصاها 9 ساعات عند تقديمه للتقييم النهائي في المسابقة Submission run. وذلك لضمان أن جميع المتسابقين لديهم نفس الموارد الحاسوبية المحدودة، أيضًا وضع حد زمني يمنع استهلاك الموارد بشكل مفرط ويضمن توفرها للمستخدمين الآخرين، ويسمح للمسابقة بتقييم الحلول في إطار زمني معقول. ولو استغرق الكود وقتاً أطول من 9 ساعات ليكتمل عند تشغيله بواسطة كاجل ستحصل على خطأ Timeout.
  6. تقصد أنك لا تريد تشغيل الكود؟ تستطيع تعليق الجزء الذي لا تريده في الكود بالوقوف عند السطر الذي تريده بالفأرة ثم الضغط على CTRL + / ويجب الضغط على الشرطة المائلة للأمام وليس الخلف، وستجد رمز # قد ظهر بجانبه في حال اللغة بايثون أو // للغة جافاسكريبت. ولو أردت تعليق عدّة أسطر قم بتحديدها بالفأرة ثم اضغط على SHIFT + ALT + A وذلك لتنفيذ تعليق متعدد الأسطر وليس فردي من خلال """ """ للغة بايثون و /* */ للغة جافاسكريبت والأكواد التي تم تعليقها لن تعمل عند تشغيل الكود.
  7. المطلوب هو المشاريع العملية الكاملة وليس التطبيقات البسيطة، بمعنى المشاريع التي نقوم بإنشاء مجلد لها وملفات بداخله وتنفيذه بواسطة بايثون أو من خلال أحد الإطارات الخاصة باللغة مثل Django، أو تطبيق عملي كبير نسبيًا، مثل لعبة tic tac toe حيث نكتب به منطق برمجي معقد نسبيًا في بداية التعلم. أما التمارين البسيطة فليس مطلوب منك تسليمها، وعامًة تستطيع جمعها في مجلد واحد لكل مسار ووضع التمارين به ثم وضع تلك المجلدات في مجلد واحد رئيسي ورفعه على مستودع.
  8. اضغط على واجهة لاراجون بزر الفأرة الأيمن ثم اختر php ثم اختر extensions ثم تفعيل إضافة zip
  9. لا حاجة لحذفه، وليس هناك إمكانية للحذف، التعديل فقط.
  10. ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم أسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.
  11. الكود يعتمد على وجود دوال مثل get_roaad_artists()، get_modern_artists()، وغيرهم، ويفترض أن تكون معرفة في ملفات أخرى artists-roaad.php، artists-modern.php، أو ما شابه، والتي يتم استدعاؤها في القالب الرئيسي. تفقد تلك الملفات واحد تلو الآخر. عامًة قم بتبسيط category-items.php مؤقتًا لمعرفة هل هو المسبب أم لا، باستبدال الكود به بالتالي: <?php define('ARTISTS_IMAGE_PATH', get_template_directory_uri() . '/images/'); function get_category_artists($category_type) { return array( array('name' => 'فنان اختبار', 'url' => '#', 'image' => ARTISTS_IMAGE_PATH . 'test.jpg') ); } ثم أعد تشغيل الصفحة، ولو اختفت المشكلة وعملت الصفحة بشكل صحيح، فالمشكلة مرتبطة بالكود الأصلي أو الملفات المستدعاة.
  12. تفقد ملف القالب page-templates/your-template-file-name.php من خلال محرر vscode، وتأكد تمامًا من أن <?php هي أول شيء في الملف ولا توجد أي مسافات أو أسطر فارغة أو أي رموز قبلها واحذف أي شيء تجده قبلها. ثم استخدم خيار Save with Encoding في محرر الأكواد وتأكد من اختيار UTF-8 ثم احفظ الملف بالضغط على CTRL + S. لو استمرت المشكلة قم بتعليق أي إضافة // في بداية السطر لجميع أسطر require_once مؤقتًا: <?php get_header(); // // استيراد ملفات التصنيفات - تم التعليق مؤقتًا // require_once(get_template_directory() . '/includes/category-items.php'); // require_once(get_template_directory() . '/includes/artists-roaad.php'); // require_once(get_template_directory() . '/includes/artists-modern.php'); // require_once(get_template_directory() . '/includes/artists-hakiba.php'); // require_once(get_template_directory() . '/includes/artists-shaabi.php'); // require_once(get_template_directory() . '/includes/artists-female-voices.php'); ?> احفظ الملف وجرب عرض الصفحة، وتفقد هل اختفت مشكلة طباعة الكود؟ وبالطبع لن تظهر البيانات، لكن يجب ألا يظهر الكود نفسه. إذا اختفت المشكلة، فذلك يعني أن أحد الملفات المُضمَّنة هو السبب، أعد تفعيل أسطر require_once واحدًا تلو الآخر، مع تحديث الصفحة بعد كل واحد، حتى تكتشف أي ملف يتسبب في ظهور المشكلة مجددًا. بمجرد تحديد الملف المُسبب للمشكلة، افتحه وافحصه بحثًا عن مسافات بيضاء أو BOM في بدايته قبل وسم <?php الخاص به، أو أخطاء في بناء الجملة البرمجية Syntax Errors، أو أي كود يقوم بطباعة شيء بشكل غير متوقع. وللمساعدة في تفقد المشكلة، قم بتفعيل وضع التصحيح Debug Mode في ووردبريس، من خلال فتح ملف wp-config.php في المجلد الرئيسي وابحث عن define( 'WP_DEBUG', false );. قم بتغييرها إلى: define( 'WP_DEBUG', true ); if ( WP_DEBUG ) { define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', true ); @ini_set( 'display_errors', 1 ); } بالطبع لا تترك WP_DEBUG_DISPLAY بقيمة true على موقع حي على استضافة يتصفحها المستخدمين، استخدمها فقط للتشخيص. الآن، عند زيارة الصفحة، سترى رسالة خطأ PHP واضحة بدلًا من الكود المطبوع، وسيوجهك مباشرة إلى المشكلة، وتفقد أيضًا من ملف wp-content/debug.log بحثًا عن أي أخطاء مسجلة.
  13. أرفق مجلد المشروع لتفقده
  14. هل قمت بتفعيل نسخة الويندوز؟، عامًة قم بالضغط على extend for 1 week ومن المفترض أن يظهر لك زر مثل التالي: اضغط عليه لتفعيل التحديثات. في حال لم يعمل قم بتشغيل task manager ثم اختر services ثم ابحث عن Windows update واضغط بزر الفأرة الأيمن ثم اختر start: ثم قم بتشغيل CMD كمسؤول administrator ثم تنفيذ الأوامر التالية بالترتيب واحد تلو الآخر: net stop bits net stop wuauserv net stop cryptsvc ren %systemroot%\softwaredistribution softwaredistribution.bak ren %systemroot%\system32\catroot2 catroot2.bak net start bits net start wuauserv net start cryptsvc ثم تفقد التحديثات.
  15. الأغلب منها مخصص لأمريكا وكندا، والمتاح لمنطقة الشرط الأوسط خاصة بالنساء فقط: https://buildyourfuture.withgoogle.com/scholarships/generation-google-scholarship-emea
  16. عبارة عن منح دراسية مقدمة من جوجل، وبها مجموعة متنوعة من البرامج التي تقدمها الشركة لدعم الطلاب المتميزين أكاديمياً والذين يظهرون إمكانات قيادية، خاصة في مجالات التكنولوجيا وعلوم الكمبيوتر والمجالات ذات الصلة مثل علوم الحاسوب، والهندسة، وتصميم تجربة المستخدم، وغيرها. وأيضًا لتشجيع المجموعات غير الممثلة بشكل كافٍ في مجال التكنولوجيا كالنساء، الأقليات العرقية والأشخاص ذوي الإعاقة على متابعة دراساتهم ومهنهم في المجال. فيوجد منحة Generation Google Scholarship وهي موجهة للطلاب الذين يدرسون علوم الحاسوب أو تخصصات تقنية ذات صلة، وتقدم دعماً مالياً متفاوت حيث 10,000 دولار في الولايات المتحدة أو 5,000 دولار كندي في كندا لعام 2025-2026. وGoogle Lime Scholarship مخصصة للطلاب ذوي الإعاقة الذين يدرسون في مجالات تقنية. تستطيع تفقد المنح والتفاصيل هنا: https://buildyourfuture.withgoogle.com/
  17. الهدف الأساسي من بايثون أن يكون الكود واضحًا ومفهومًا قدر الإمكان، قريبًا من اللغة الإنجليزية العادية، لتقليل العبء الذهني على المبرمج والتركيز على ماذا يريد أن يفعله الكود أي حل المشكلة بدلاً من كيفية التعبير عنه بتعقيد لغوي. ومن خلال بناء جملة بسيط ومكتبة أساسية بها الكثير من الأدوات المضمنة في اللغة، ونظام واسع من المكتبات الخارجية Ecosystem، يتمكن اي مطور بايثون من إنجاز المهام بسرعة وبكود أقل مقارنةً بلغات أخرى كثيرة، وذلك من شأنه تقليل الأكواد الزائدة أو المتكررة Boilerplate Code التي لا تخدم مباشرةً منطق حل المشكلة. فبدلاً من كتابة حلقة طويلة معقدة بلغة أخرى، في بايثون يوجد سطر واحد بسيط بواسطة list comprehension لتحقيق نفس النتيجة. لذا بايثون أداة سهلة الاستخدام تسمح للمبرمج بالتفكير في المشكلة نفسها ومنطق حلها، بدلاً من قضاء وقت طويل في التعامل مع تفاصيل لغوية معقدة أو كتابة كود روتيني لا يضيف قيمة مباشرة للحل. وذلك لا يعني أنها خالية من التعقيد تمامًا، فبايثون لغة قوية ومتعددة الاستخدامات، وعند التعامل مع مفاهيم متقدمة كالبرمجة غير المتزامنة، أو الواصفات Descriptors، أو الميتاكلاس أو بناء أنظمة معقدة وكبيرة، ستظهر تعقيدات لا مفر منها، وفي إدارة المشاريع الكبيرة، والتبعيات، والبيئات الافتراضية ستضيف طبقات من التعقيد.
  18. ستجد الحل هنا باستخدام مكتبة whitenoise
  19. الخيار line wrap موجود بالفعل في المتصفح، لكن لاحظ أنه يتم تصفح الكود المصدري source للموقع وذلك بالضغط على زر الفأرة الأيمن في أي مكان فارغ بالموقع ثم اختر view page source وسيظهر لك ذلك الخيار
  20. الطريقة التي أضفت بها إعدادات تقديم ملفات الوسائط في ملف urls.py الرئيسي باستخدام static() تعمل فقط عندما يكون وضع التصحيح DEBUG مضبوطاً على True في ملف settings.py، تأكد من أنّ القيمة هي True. فالطريقة مخصصة لخادم التطوير المدمج في Django من خلال manage.py runserver لتسهيل عملية التطوير، أما في بيئة الإنتاج Production، يجب أن يتولى خادم الويب Nginx أو Apache مهمة تقديم تلك الملفات مباشرة، أو استخدام whitenoise ستجد تفصيل هنا:
  21. يوجد مشكلة syntax لذا الكود لا يتم تنفيذه، بسبب خطأ في كتلة default، يجب أن تتبع كلمة default نقطتان رأسيتان : كالتالي: default: console.log('Invalid Input'); break;
  22. لا مشكلة، فلو لديك أكثر من فئتين وليكن قطة، كلب، طائر، ستقوم الدالة confusion_matrix بإنشاء مصفوفة مربعة أبعادها N x N، حيث N هو عدد الفئات لديك. بينما ConfusionMatrixDisplay تستقبل مصفوفة الارتباك التي تم حسابها في الخطوة السابقة وتقوم برسمها بشكل مرئي كـ heatmap، لتسهيل رؤية الأنماط في أخطاء النموذج. وستوضح لك مصفوفة الارتباك confusion_matrix بشكل دقيق بالضبط أي الفئات يخلط النموذج بينها، وهل يخلط دائماً بين القطة والنمر؟ هل يجد صعوبة في التمييز بين أنواع معينة من الطيور؟ أيضًا تقييم الأداء وحساب المقاييس ومنها الدقة، الاستدعاء، و F1-score لكل فئة على حدة باستخدام قيم مصفوفة الارتباك، وهو أمر مهم جداً في حال أداء النموذج غير متساوٍا عبر الفئات. كذلك أكثر تفصيلاً من الدقة الإجمالية Accuracy، لأنّ الدقة الإجمالية أحيانًا مضللة، خاصًة لو الفئات غير متوازنة، فمصفوفة الارتباك تعطيك صورة أكمل بكثير عن أداء النموذج.
  23. تلك من مكتبة Keras الموجودة الآن ضمن TensorFlow، وهي لتسهيل عملية تحميل الصور وتجهيزها للنماذج العصبونية العميقة، خاصة في حال البيانات منظمة بشكل معين على القرص الصلب، وذلك هو ما لدينا هنا. وتستطيع استخدامها كالتالي: import tensorflow as tf from tensorflow.keras.preprocessing.image import ImageDataGenerator import os structured_data_dir = "/kaggle/input/microsoft-catsvsdogs-dataset/train" datagen = ImageDataGenerator(rescale=1./255) batch_size = 32 img_height = 128 img_width = 128 train_generator = datagen.flow_from_directory( directory=structured_data_dir, target_size=(img_height, img_width), batch_size=batch_size, class_mode='binary', shuffle=True ) print("الفئات التي تم العثور عليها:", train_generator.class_indices) print("عدد الصور الكلي:", train_generator.samples) print("عدد الدفعات في كل دورة تدريب (epoch):", len(train_generator))
  24. التسميات ليست موجودة في ملف منفصل، ولكنها مُضمَّنة مباشرة في أسماء ملفات الصور نفسها. افحص أسماء الملفات، وستجد أن أسماء الصور والملجدات تتبع نمطاً معيناً: cat.0.jpg, cat.1234.jpg dog.567.jpg, dog.9999.jpg بالتالي لو اسم الملف يبدأ بـ cat، فهذه صورة لقطة، ونفس الأمر يبدأ بـ dog، فتلك صورة لكلب، نفس الأمر للمجلدات. ستجد هيكل مجلد مجموعة البيانات كالتالي: data/ train/ dogs/ dog001.jpg dog002.jpg ... cats/ cat001.jpg cat002.jpg ... validation/ dogs/ dog001.jpg dog002.jpg ... cats/ cat001.jpg cat002.jpg ... تفقد المستودع: https://github.com/darshanbagul/Cats-vs-Dogs
  25. أثناء دراسة الدورة، ستجد مشاريع عملية كاملة أي مشروع كامل من البداية للنهاية به مجلدات وملفات، ويستغرق وقت في تنفيذه، تلك هي المشاريع المطلوب تسليمها، وليس التطبيقات العملية البسيطة التي نكتبها في ملف واحد بسيط. ومن المفترض أثناء العمل على المشروع تقوم برفع التغييرات التي تجريها إلى مستودع المشروع على github، أي بعد الإنتهاء من جزء معين تقوم بدفع ذلك إلى المستودع. وستجد هنا تفصيل بخصوص رفع المشروع:
×
×
  • أضف...