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

Mustafa Suleiman

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

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

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

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

    403

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

  1. ما تريد هو إضافة للمتصفح، بحيث تسمح لك بتحديد عنصر معين في موقع ما وحفظه واستخدامه لتنفيذ سكريبت معين، مثل تحديد كلاس أو ID لزر الإعجاب ثم وضع حدث click للاستماع لنقرة الزر وتنفيذ كود معين بناءًا على ذلك. مثال للتوضيح، لنفترض أنه يوجد بالصفحة كالتالي: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Automatic Button</title> </head> <body> <!-- زر الإعجاب --> <button id="likeButton">اعجاب</button> </body> </html> فسنكتب سكريبت بسيط لاستهداف الزر وتنفيذ كود معين: // استهداف زر الإعجاب باستخدام معرفه const likeButton = document.getElementById('likeButton'); // وظيفة لتنفيذ الإجراء التلقائي function performAutoAction() { // يمكنك وضع الإجراء الذي تريد تنفيذه هنا console.log('تم النقر على زر الإعجاب. الآن يمكنك تنفيذ الإجراء المطلوب.'); // على سبيل المثال، يمكنك تغيير لون خلفية الصفحة عند النقر على الزر document.body.style.backgroundColor = 'lightblue'; } // تعيين الدالة لتنفيذها عند النقر على زر الإعجاب likeButton.addEventListener('click', performAutoAction); بالطبع الكود ينقصه الجزء الخاص بتحديد العنصر في موقع معين ثم حفظه وتذكره عند زيارة الموقع مرة أخرى، حاول تنفيذ ذاك المنطق.
  2. الـ Flex والـ Grid هما البديل الحديث لـ Float لتخطيط وتصميم الصفحة، وستجد تفصيل هنا: أما بخصوص position فالأمر يعتمد على التصميم الخاص بك، ولها قيم مختلفة وستجد تفصيل هنا: وبشكل أساسي ستحتاج إما استخدام Flex أو Grid أو خليط بينهم على حسب التصميم، والـ Grid بحاجة إلى ممارسة لاستيعابه والتمكن من استخدام الخواص المختلفة له، على عكس Flex فهو أسهل نسبيًا لكن بالطبع في بعض التصاميم سيتعين عليك استخدام Grid.
  3. أولاً يتم استيراد المكتبات: face_recognition: مكتبة للتعرف على الوجوه. cv2 (OpenCV): مكتبة برمجية مفتوحة المصدر للرؤية الحاسوبية. ثم تهيئة كائن لتقاط الفيديو من الكاميرا الافتراضية (فهرس الكاميرا 0). video_capture = cv2.VideoCapture(0) ثم: تحميل صور لوجوه معروفة ( وهي باراك أوباما وجو بايدن). تُحسب تشفيرات الوجوه باستخدام face_recognition.face_encodings. بعد ذلك إعداد مصفوفات للوجوه المعروفة وتلك المصفوفات تخزن تشفيرات الوجوه المعروفة وأسمائها المقابلة. known_face_encodings = [obama_face_encoding, biden_face_encoding] known_face_names = ["Barack Obama", "Joe Biden"] وتبدأ الحلقة الرئيسية للتعرف على الوجوه، من خلال التقاط إطارات فيديو متتالية ومعالجتها باستمرار للتعرف على الوجوه. while True: تغيير حجم الإطارات لتسريع عملية المعالجة. استخراج مواقع وتشفيرات الوجوه من الإطار المُصغر. ثم مقارنة تشفير كل وجه مكتشف مع تشفيرات الوجوه المعروفة. وتحديد أفضل تطابق وتسند اسم للوجه (أو "غير معروف" إذا لم يتم العثور على تطابق). رسم مستطيلات حول الوجوه المكتشفة. إضافة نص يحمل اسم الشخص المعترف به. بعد ذلك الإطار المعالج يعرض في نافذة تحمل اسم 'Video'. cv2.imshow('Video', frame) ويمكن إنهاء البرنامج عن طريق الضغط على مفتاح 'q'. if cv2.waitKey(1) & 0xFF == ord('q'): break بحيث يتم تحرير كائن التقاط الفيديو، وتغلق نوافذ OpenCV.
  4. السؤال غير واضح، ما الذي تحاول فعله وما الخطأ الذي يظهر لك؟ عامًة ذلك كود بسيط من أجل إدخال قيمة معينة من قبل المستخدم في بايثون وطباعتها: user_input = input("Please enter a value: ") print("You entered: ", user_input)
  5. تقصد توضيح لكود تريد فهم آلية عمله؟ نعم يمكن ذلك.
  6. وعليكم السلام، أولاً، random.randint لا ينتج مصفوفة بل ينتج عددًا عشوائيًا، وعليك استخدام numpy.random.randint بدلاً من ذلك. ثانيًا، عند استخدام count_nonzero، يجب أن تكون المصفوفة الداخلية لديك تحتوي على أرقام، ليس قائمة متعددة الأبعاد كالتالي: import numpy as np a = np.random.randint(0, 10, (3, 3)) x = np.count_nonzero(a > 5, axis=1) print(x) وبخصوص: axis تستقبل قيمًا أخرى غير الواحد، فمثلاً مرر 0 للعمل على الصفوف و1 للعمل على الأعمدة، وتستطيع أيضًا توفير قيمة None لحساب إجمالي عدد العناصر غير الصفر في المصفوفة بأكملها. بالنسبة للمتغيرات الأخرى التي تقبلها count_nonzero، فهي تستقبل المصفوفة (أو القائمة) كمدخل وتحسب عدد العناصر غير الصفر فيها، وبإمكانك أيضًا توفير المحور axis كمعلمة اختيارية، وإن لم تقدم قيمة للمحور، فستقوم بحساب العدد الإجمالي لجميع العناصر غير الصفر في المصفوفة.
  7. ببساطة هو منصة على الإنترنت تهدف إلى توفير مجتمع للمهنيين والهواة في مجال العلوم البيانية وتحليل البيانات، ويقدم مجموعة متنوعة من الفرص والأدوات لتعلم الآلة وتحليل البيانات، ويشكل مرجعًا قويًا للمطورين والعلماء البيانيين، وويضم أكثر من 20 مليون عضو من جميع أنحاء العالم. وكاستفادة، تستطيع الوصول إلى البيانات التي يوفرها، من خلال مجموعة واسعة من مجموعات البيانات المفتوحة التي يمكنك استخدامها لتعلم تعلم الآلة وتطوير مشاريعك الخاصة، بواسطة مكتبات مثل Pandas وتحليل البيانات لفهم هيكل البيانات والمتغيرات المتاحة. أيضًا هناك مسابقات البيانات (Data Competitions)، حيث ينظم الموقع مسابقات بيانات دورية وبإمكانك المشاركة في حلول لمشاكل واقعية تتعلق بالبيانات، مما يسمح لك بتحسين مهاراتك وتطبيق المفاهيم التي تعلمتها.
  8. المحرك غير متاح مجانًا، لكن هناك نسخة تعليمية من Pico-8. وهي مجانية تمامًا، ومتاح على جميع المنصات الرئيسية، بما في ذلك Windows و macOS و Linux. وهي مصممة خصيصًا للاستخدام في بيئات التعليم، وهي مناسبة للمبتدئين والمتقدمين على حد سواء. وتتميز نسخة Pico-8 التعليمية بالميزات التالية: مجانية تمامًا. متاح على جميع المنصات الرئيسية. سهل الاستخدام، حتى بالنسبة للمبتدئين. يحتوي على مجموعة كاملة من الأدوات اللازمة لإنشاء ألعاب Pico-8. يتضمن مجموعة من الألعاب التعليمية والتدريبية. يوفر موارد تعليمية، مثل الدروس والكتب الإلكترونية. وبالطبع هناك بعض الاختلافات الرئيسية بين نسخة Pico-8 التعليمية والنسخة الكاملة: لا تتضمن نسخة Pico-8 التعليمية القدرة على تصدير الألعاب إلى تنسيقات أخرى. لا تتضمن نسخة Pico-8 التعليمية بعض الميزات المتقدمة، مثل القدرة على إنشاء ألعاب متعددة اللاعبين. وتستطيع استخدام النسخة المجانية من الرابط التالي وهي تعمل في المتصفح فقط: https://www.pico-8-edu.com
  9. الكروت التالية مناسببة لما تريده: Nvidia GeForce RTX 3090 Ti: تتميز بأداء عالٍ للغاية وذاكرة وصول عشوائي كبيرة (24 جيجابايت). Nvidia GeForce RTX 3080 Ti: تقدم أداءً جيدًا بسعر أقل من RTX 3090 Ti. AMD Radeon RX 6900 XT: تقدم أداءً جيدًا جدًا بسعر أقل من RTX 3080 Ti. وبالطبع الأمر يعتمد على الميزانية الخاصة بك، فالكروت السابقة ذات أسعار مرتفعة نسبيًا.
  10. ما المقصود بالواجب، تقصد رفع المشروع الذي قمت بتنفيذه كما تم شرحه في الدورة؟ أم تريد إرفاق مجلد المشروع في السؤال؟
  11. شكرًا لإهتمامك أحمد، لكن أرجو التوضيح ما المقصود، تفقدت الدرس في أساسيات بايثون ولا يوجد به مشكلة؟
  12. الخوارزمية الأساسية المستخدمة في تعرف الوجوه تعتمد على ما يُعرف بـ "خوارزمية تصنيف الوجه" (Face Detection Algorithm)، وهناك عدة خوارزميات تستخدم لهذا الغرض، منها Haarcascades و Single Shot Multibox Detector (SSD) وغيرها. ومكتبة Face Recognition في بايثون هي مكتبة مفتوحة المصدر مصممة للتعرف على الوجوه، وتعتمد خوارزمية اكتشاف الوجه Haar Cascades، حيث تعمل الخوارزمية على اكتشاف الأشكال الأساسية في الصورة، مثل الخطوط والزوايا، أي تحويل الصور إلى نقاط مميزة يمكن استخدامها لتحديد الأشخاص، وبالطبع تم تدريب تلك الخوارزمية على مجموعة بيانات ضخمة من الصور التي تحتوي على وجوه بشرية. فعند تحميل صورة وجه، تقوم الخوارزمية بفحصها لاستخراج ميزات مميزة من الوجه Face Encoding، وتلك الميزات تشمل نقاط معينة على الوجه تمثل نقاط العيون والأنف والفم وغيرها. وتُستخدم الميزات المستخرجة لتمثيل الوجه بشكل رقمي (Face Representation)، وهو تمثيل رياضي يمكن استخدامه لمقارنة الوجوه. بعد تمثيل الوجه بشكل رقمي، يمكن مقارنته بتمثيل الوجه لأفراد آخرين، باستخدام مقياس الشبه لتحديد مدى تشابه الوجهين.
  13. تقصد الشروحات المتعلقة بذلك في الدورة؟ لا مشكلة في ذلك طالما أنك تستطيع التعامل مع توزيعة مختلفة، إن واجهت صعوبة في إتباع الشرح من الأفضل إذن تحميل Ubuntu. وأرجو التعليق أسفل فيديو الدورة الخاص بالسؤال لمساعدتك بشكل أفضل، وطرح الأسئلة العامة هنا.
  14. يوجد الكثير من الدروس والمراجع بخصوص بايثون في أكاديمية حسوب، وأيضًا يوجد كتاب لتعلم لغة بايثون، بالإَضافة وجود دورة مدفوعة، وبخصوص الدورات المجانية وما سبق ذكره ستجد كافة المصادر موضحة هنا:
  15. حرصًا على حقوق المستخدمين ولأن الحساب قد يكون مرتبطًا بمعاملات مالية جارية، لا يُتاح لك حذف حسابك بشكل مباشر من طرفك، إنما من خلال التواصل مع فريق الدعم وتوضيح الأسباب أو المشاكل لنقدم المساعدة المناسبة. في حال تأكيد رغبتك بحذف الحساب، سنقوم بإيقافه ولن تتمكن من استعادته مجدداً. أرجو منك التواصل مع مركز المساعدة وطلب حذف الحساب.
  16. ما ذكرته صحيح، والمصدر هو التالي: https://www.jetbrains.com/community/education/#courses سيتم مراجعة إقتراحك وتفقد إمكانية تطبيق أم لا من قبل القسم المسؤول، شكرًا لإهتمامك أحمد. وعامًة في حال كنت في الجامعة حاليًا أو لديك أحد قريب منك، تستطيع الحصول على نسخة مجانية من خلال الإيميل الجامعي والتفاصيل هنا: https://www.jetbrains.com/community/education/#students
  17. كلاهما يؤدي وظيفة مختلة، حيث نستخدم random.choice لاختيار قيمة عشوائية من مصفوفة معينة. وأنت قمت بكتابة random.choice(x) لاختيار قيمة عشوائية من المصفوفة x، والقيمة المختارة هي 3. بينما random.shuffle نستخدمها لخلط (إعادة ترتيب) العناصر في مصفوفة، وأنت قمت باستخدام random.shuffle(z) لخلط المصفوفة z ونتيجة العملية كانت ترتيب عشوائي جديد للعناصر في المصفوفة z. بالنسبة للفارق في طريقة الاستدعاء، يجب أن يكون اسم الدالة بشكل صحيح، فلديك خطأ في كتابة اسم الدالة random.shuffle ويجب أن يكون الاسم الصحيح هو random.shuffle(z) دون الحاجة إلى إضافة "y" في النهاية. random.shuffle(z)
  18. عليك أولاً تحديد نوع الملف وفلترته للسماح بصيغ محددة فقط: <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $uploadDir = "uploads/"; // مجلد الرفع $uploadFile = $uploadDir . basename($_FILES["image"]["name"]); $imageFileType = strtolower(pathinfo($uploadFile, PATHINFO_EXTENSION)); // السماح بالصيغ المحددة فقط $allowedExtensions = array("jpg", "jpeg", "png", "gif"); if (in_array($imageFileType, $allowedExtensions)) { // استمرار عملية الرفع } else { echo "الصيغ المسموح بها: jpg, jpeg, png, gif"; exit(); } } ?> ثم استخدم دالة move_uploaded_file لنقل الملف المرفوع إلى المجلد المحدد. <?php if (move_uploaded_file($_FILES["image"]["tmp_name"], $uploadFile)) { echo "تم رفع الصورة بنجاح."; } else { echo "فشل في رفع الصورة."; } ?> ثم الإتصال بقاعدة البيانات: <?php if (move_uploaded_file($_FILES["image"]["tmp_name"], $uploadFile)) { // ربط قاعدة البيانات (يفضل استخدام PDO أو MySQLi) $dbHost = "localhost"; $dbUsername = "اسم_المستخدم"; $dbPassword = "كلمة_المرور"; $dbName = "اسم_قاعدة_البيانات"; $conn = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName); if ($conn->connect_error) { die("فشل الاتصال بقاعدة البيانات: " . $conn->connect_error); } // إدراج المعلومات في قاعدة البيانات $imagePath = $uploadDir . basename($_FILES["image"]["name"]); $currentDate = date("Y-m-d"); $sql = "INSERT INTO employee_data (image_path, entry_date) VALUES ('$imagePath', '$currentDate')"; if ($conn->query($sql) === TRUE) { echo "تم حفظ البيانات بنجاح."; } else { echo "خطأ في الحفظ: " . $conn->error; } $conn->close(); } else { echo "فشل في رفع الصورة."; } ?> وعليك إنشاء جدول employee_data في قاعدة البيانات بحيث يحتوي على حقول id (رقم تعريف فريد وتلقائي)، image_path و entry_date.
  19. بالطبع تستطيع ذلك، لكن ما هي اللغة التي تعمل بها لتوضيح طريقة التحديث؟ على أي حال، في بايثون تستطيع التحديث من خلال: pip install <package_name> --upgrade واستبدل <package_name> باسم المكتبة أو الإطار وسيتم التحديث لأحدث إصدار. وهناك أمر مختصر وهو: pip install <package_name> -U لكن بالطبع ذلك سيعني أنه سيتوجب عليك تحديث أجزاء في الكود لديك لتتوافق مع الإصدار الجديد.
  20. من الأفضل تعلم أساسيات بايثون، وستتمكن من تنفيذ ذلك بسهولة، وستجد هنا مصادر: وعامًة الخطوات هي تثبيت numpy: pip install numpy ثم استيرادها: import numpy as np ثم إنشاء دوال خاصة بجزء معين في اللعبة، مثل دالة create_board لإنشاء لوحة 3x3 فارغة باستخدام numpy. ودالة أخرى لعرض اللوحة، ثم دالة خاصة بتفقد هل هناك لاعب فاز أم لا، ودالة خاصة بتفقد هل اللوحة اكتملت لتحديد الفائز أم لا. ثم استخدام حلقة التكرار while لتنفيذ كود معين خاص بإدخال قيمة من قبل اللاعبين وهي أرقام 0 و2 أو 3 لوضع علامة باللوحة، ثم تبديل الأدوار بينهم والتحقق من النتيجة بواسطة دالة is_winner عبر جملة شرطية if وأيضًا elif في حال اكتملت اللوحة. وستجد شروحات على اليوتيوب.
  21. ليس شرطًا عليك كتابة نفس الكود، طالما أنك استوعبت ما يتم شرحه، تستطيع تنفيذ ما تريد بطريقتك أنت، مثلاً لو كنت تريد كتابة جزء معين من الكود بأسلوبك أنت فلا مشكلة، أو تريد تنفيذ مشروع آخر غير الذي تم شرحه بالدورة لا مشكلة طالما أنك استوعبت، المهم هو التطبيق على ما تعلمته وتسليم المشاريع المطلوبة منك فلكل دورة عدد مشاريع معينة على لغات وإطارات محددة. وكتابة الكود بناءًا على ما استوعبته أنت هي الطريقة الصحيحة لتعلم البرمجة، وليس كتابة الكود بشكل حرفي، عليك الاستيعاب ثم تطبيق المنطق البرمجي الخاص بك، وقارنه بما تم شرحه وربما تأتي بطريقة أفضل وأكثر تعقيدًا.
  22. nano مثبت بالفعل في توزيعتي Ubuntu وDebian. وعلي أي حال افتح terminal واكتب الأمر التالي: sudo apt install nano لإنشاء ملف Python باستخدام nano، اكتب الأمر التالي: nano my_python_file.py
  23. في البداية للتوضيح، تلك الأوامر تستخدم في أنظمة unix، مثل لينكس وMacOS. cat cat اختصار لـ "concatenate"، وهو أمر يستخدم لعرض محتوى الملفات، ويقوم بطباعة محتوى الملفات مباشرة على الشاشة، وتستطيع استخدامه لدمج المحتوى من عدة ملفات وعرضها على الشاشة، لكنه يفتقر إلى ميزات التنقل والبحث المتوفرة في less فلو كتبت cat filename.txt سيقوم بطباعة محتوى الملف filename.txt على الشاشة. less هو عبارة عن برنامج لعرض محتوى الملفات أيضًا، لكن بطريقة متقدمة أكثر من cat، حيث يسمح less بالتصفح السهل للملفات الكبيرة، من خلال التمرير للأمام وللخلف، البحث في الملف، والقفز إلى نقاط محددة، ويدعم ميزات مثل ترقيم السطور والتلوين ووضع التفاف. ويستخدم للملفات الكبيرة التي يصعب عرضها بأكملها في مرة واحدة على الشاشة، ويمكنك تشغيلها ببساطة باستخدام less filename.txt. file أمر يُستخدم لتحديد نوع الملف، وبمجرد تشغيل file مع اسم الملف، سيقوم بإظهار نوع الملف، مثل نصي (text)، صورة (image)، أو برنامج قابل للتنفيذ (executable). أي عند كتابة file filename.txt سيخبرك بنوع الملف، مثل "ASCII text" إذا كان نصيًا.
  24. بخصوص الدعم بعد الحصول على الشهادة، عليك التحدث في تلك النقطة مع مركز المساعدة . وعامًة، يجب تطوير مهاراتك وتعلم ما تبقى لك بالنسبة لمتطلبات سوق العمل وفقًا للوظيفة التي تريدها، وتستطيع التعلم من خلال تنفيذ مشاريع متوسطة الحجم والتعقيد فلا تكتفي بمشروع واحد فقط أو اثنان.
  25. الأمر حسب الإتفاق، هل ستقوم أنت بعمل Deploy للسيرفر على استضافة؟ إذن عليك تهيئة قاعدة البيانات، بالإضافة إلى تسليم الكود المصدري للمشروع وأية ملفات متعلقة به. أما في حال كان سيقوم هو بنشر المشروع، فسيقوم هو بإعداد قاعدة البيانات على الاستضافة ونشر المشروع. أيضًا تستطيع تحميل (تصدير) قاعدة البيانات على حاسوبك من MongoDB في هيئة JSON أو CSV ثم تستطيع استيرادها مرة أخرى. https://www.mongodb.com/docs/compass/current/import-export/
×
×
  • أضف...