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

Mustafa Suleiman

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

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

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

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

    305

أجوبة بواسطة Mustafa Suleiman

  1. تقصد الشروحات المتعلقة بذلك في الدورة؟ لا مشكلة في ذلك طالما أنك تستطيع التعامل مع توزيعة مختلفة، إن واجهت صعوبة في إتباع الشرح من الأفضل إذن تحميل Ubuntu.

    وأرجو التعليق أسفل فيديو الدورة الخاص بالسؤال لمساعدتك بشكل أفضل، وطرح الأسئلة العامة هنا.

    • شكرًا 1
  2. يوجد الكثير من الدروس والمراجع بخصوص بايثون في أكاديمية حسوب، وأيضًا يوجد كتاب لتعلم لغة بايثون، بالإَضافة وجود دورة مدفوعة، وبخصوص الدورات المجانية وما سبق ذكره ستجد كافة المصادر موضحة هنا:

  3. بتاريخ 3 ساعة قال محمد عبد القادر السكري2:

    مرحبًا، احتاج الى حذف هذا الحساب لانه لا يمكنني مشاهدة الدروس  التي انا سجلت فيها. 

    شكرا

    حرصًا على حقوق المستخدمين ولأن الحساب قد يكون مرتبطًا بمعاملات مالية جارية، لا يُتاح لك حذف حسابك بشكل مباشر من طرفك، إنما من خلال التواصل مع فريق الدعم وتوضيح الأسباب أو المشاكل لنقدم المساعدة المناسبة.

    في حال تأكيد رغبتك بحذف الحساب، سنقوم بإيقافه ولن تتمكن من استعادته مجدداً.

    أرجو منك التواصل مع مركز المساعدة وطلب حذف الحساب.

  4. ما ذكرته صحيح، والمصدر هو التالي:

    سيتم مراجعة إقتراحك وتفقد إمكانية تطبيق أم لا من قبل القسم المسؤول، شكرًا لإهتمامك أحمد.

    وعامًة في حال كنت في الجامعة حاليًا أو لديك أحد قريب منك، تستطيع الحصول على نسخة مجانية من خلال الإيميل الجامعي والتفاصيل هنا:

  5. كلاهما يؤدي وظيفة مختلة، حيث نستخدم random.choice لاختيار قيمة عشوائية من مصفوفة معينة.

    وأنت قمت بكتابة random.choice(x) لاختيار قيمة عشوائية من المصفوفة x، والقيمة المختارة هي 3.

    بينما random.shuffle نستخدمها لخلط (إعادة ترتيب) العناصر في مصفوفة، وأنت قمت باستخدام random.shuffle(z) لخلط المصفوفة z ونتيجة العملية كانت ترتيب عشوائي جديد للعناصر في المصفوفة z.

    بالنسبة للفارق في طريقة الاستدعاء، يجب أن يكون اسم الدالة بشكل صحيح، فلديك خطأ في كتابة اسم الدالة random.shuffle ويجب أن يكون الاسم الصحيح هو random.shuffle(z) دون الحاجة إلى إضافة "y" في النهاية.

    random.shuffle(z)
  6. عليك أولاً تحديد نوع الملف وفلترته للسماح بصيغ محددة فقط:

    <?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.

     

  7. بالطبع تستطيع ذلك، لكن ما هي اللغة التي تعمل بها لتوضيح طريقة التحديث؟

    على أي حال، في بايثون تستطيع التحديث من خلال:

    pip install <package_name> --upgrade

    واستبدل <package_name> باسم المكتبة أو الإطار وسيتم التحديث لأحدث إصدار.

    وهناك أمر مختصر وهو:

    pip install <package_name> -U

    لكن بالطبع ذلك سيعني أنه سيتوجب عليك تحديث أجزاء في الكود لديك لتتوافق مع الإصدار الجديد.

    • أعجبني 1
  8. من الأفضل تعلم أساسيات بايثون، وستتمكن من تنفيذ ذلك بسهولة، وستجد هنا مصادر:

    وعامًة الخطوات هي تثبيت numpy:

    pip install numpy

    ثم استيرادها:

    import numpy as np

    ثم إنشاء دوال خاصة بجزء معين في اللعبة، مثل دالة create_board لإنشاء لوحة 3x3 فارغة باستخدام numpy.

    ودالة أخرى لعرض اللوحة، ثم دالة خاصة بتفقد هل هناك لاعب فاز أم لا، ودالة خاصة بتفقد هل اللوحة اكتملت لتحديد الفائز أم لا.

    ثم استخدام حلقة التكرار while لتنفيذ كود معين خاص بإدخال قيمة من قبل اللاعبين وهي أرقام 0 و2 أو 3 لوضع علامة باللوحة، ثم تبديل الأدوار بينهم والتحقق من النتيجة بواسطة دالة is_winner عبر جملة شرطية if وأيضًا elif في حال اكتملت اللوحة.

    وستجد شروحات على اليوتيوب.

  9. ليس شرطًا عليك كتابة نفس الكود، طالما أنك استوعبت ما يتم شرحه، تستطيع تنفيذ ما تريد بطريقتك أنت، مثلاً لو كنت تريد كتابة جزء معين من الكود بأسلوبك أنت فلا مشكلة، أو تريد تنفيذ مشروع آخر غير الذي تم شرحه بالدورة لا مشكلة طالما أنك استوعبت، المهم هو التطبيق على ما تعلمته وتسليم المشاريع المطلوبة منك فلكل دورة عدد مشاريع معينة على لغات وإطارات محددة.

    وكتابة الكود بناءًا على ما استوعبته أنت هي الطريقة الصحيحة لتعلم البرمجة، وليس كتابة الكود بشكل حرفي، عليك الاستيعاب ثم تطبيق المنطق البرمجي الخاص بك، وقارنه بما تم شرحه وربما تأتي بطريقة أفضل وأكثر تعقيدًا.

  10. في البداية للتوضيح، تلك الأوامر تستخدم في أنظمة 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" إذا كان نصيًا.

    • شكرًا 1
  11. بخصوص الدعم بعد الحصول على الشهادة، عليك التحدث في تلك النقطة مع مركز المساعدة .

    وعامًة، يجب تطوير مهاراتك وتعلم ما تبقى لك بالنسبة لمتطلبات سوق العمل وفقًا للوظيفة التي تريدها، وتستطيع التعلم من خلال تنفيذ مشاريع متوسطة الحجم والتعقيد فلا تكتفي بمشروع واحد فقط أو اثنان.

     

    • أعجبني 1
  12. الأمر حسب الإتفاق، هل ستقوم أنت بعمل Deploy للسيرفر على استضافة؟ إذن عليك تهيئة قاعدة البيانات، بالإضافة إلى تسليم الكود المصدري للمشروع وأية ملفات متعلقة به.

    أما في حال كان سيقوم هو بنشر المشروع، فسيقوم هو بإعداد قاعدة البيانات على الاستضافة ونشر المشروع.

    أيضًا تستطيع تحميل (تصدير) قاعدة البيانات على حاسوبك من MongoDB في هيئة JSON أو CSV ثم تستطيع استيرادها مرة أخرى.

  13. بتاريخ 52 دقائق مضت قال احمد قايد:

    بقول لي 

     Cannot read properties of undefined (reading 'image')

     

    فكيف اصل الى الصورة؟

    ولماذا الوسم اللذي وضعته انا لا يعمل ؟

    وهل هنالك المشكلة في وضعي لمسار الصورة في الباك اند؟

    أنت تستخدم vite لذا عليك استيراد مسار الصورة كالتالي:

    import testImage from '../../image/IMG_20220103_173254.jpg';

    ثم استخدامها كالتالي:

              <img src={testImage} />

    حيث يتم عمل hash لمسار الصورة في الإخراج، لكن إذا أردت استخدام مسار ثابت أي كالتالي:

              <img src='/../../image/IMG_20220103_173254.jpg' />

    فعليك نقل مجلد الصور إلى مجلد public حيث يتم البحث عن الوسائط بالمسارات الثابتة هناك ولكن ضع علامة / في بداية المسار للإشارة لمجلد الجذر root أي مجلد المشروع الرئيسي.

    وبخصوص Cannot read properties of undefined قم بطباعة كائن post وتفقد ما اسم الخاصية للصورة.

    • أعجبني 1
  14. يوجد التالي:

    أيضًا موقع Codewars فالأسئلة هناك أبسط من موقع leetcode، وتستطيع البحث على اليوتيوب عن "حل أسئلة Codewars جافاسكريبت"، أيضًا يوجد موقع coderhub.sa.

    وستجد تفصيل أكثر هنا:

    ومن الأفضل في البداية البحث عن مشاريع جافاسكريبت للمبتدئين على اليوتيوب ثم تنفيذها، ثم تستطيع بعد ذلك حل المشاكل البرمجية على تلك المواقع.

    • أعجبني 2
  15. عليك معرفة ما هو الإدارة الدلالية لنُسخ البرمجيات أو Semantic Versioning أو semver وبشكل بسيط:

    حيث تُمثل الإصدارات البرمجية بالشكل 0.0.0 ولنفترض أن لدينا إصدار 1.3.4 من البرنامج، فيعني الرقم:

    • إصدار رابع تصحيحي أي زيادة في الإصدار التصحيحي (PATCH) (إصلاحات الأخطاء متوافقة)، بمعنى أننا قمنا بإصلاح الأخطاء أو التعامل مع مشكلات دون إضافة ميزات جديدة، ويجب زيادة الإصدار التصحيحي ليصبح الإصدار 1.3.5
    • بينما رقم 3 يعني  الإصدار الفرعي (MINOR) (إضافة ميزات جديدة متوافقة)، ونقوم بزيادته في حال قمنا بإضافة ميزات جديدة إلى المكتبة دون التأثير على الوظائف الحالية، ليصبح الإصدار 1.4.5
    • نأتي لرقم 1 ويعني الإصدار الرئيسي للبرنامج، أي هناك تغييرات رئيسية تؤثر على التوافق مع الشيفرة الحالية، مثل إزالة وظيفة مستخدمة على نطاق واسع أو تغيير واجهة البرمجة الرئيسية، وبالتالي يجب زيادة الإصدار الرئيسي ليصبح 2.4.5.

    ونتبع ذلك النهج مع كل إضافة للبرنامج، وبالطبع يوجد لواحق نضيفها للإصدارات مثل beta وalpha  وستجد شرح مفصل هنا:

    وكمثال في لغة بايثون إصدار بايثون 3.12.1 صدر في 24 نوفمبر 2023، وهو إصدار ثانوي لإصدار 3.12.0. يتضمن إصدار 3.12.1 العديد من الإصلاحات للأخطاء، بما في ذلك:

    • إصلاح خطأ في وحدة codeop يؤدي إلى تحديد Incomplete f-strings بشكل غير صحيح.
    • إصلاح خطأ في وحدة parser يؤدي إلى محاولة الكتابة فوق أخطاء موجودة وتسبب في حدوث عطل.
    • إصلاح عطل في وحدة compiler عند استخدام عبارة with مع 19 مديري سياق.
    • استخدام حالة AST-parser لكل منها بدلاً من حالة عالمية لتتبع عمق الاستدعاء داخل محلل AST لمنع حالة السباق المحتملة بسبب التحليل المتزامن.
    • حساب نهايات الأعمدة بشكل صحيح للرموز متعددة الأسطر في وحدة tokenize.
    • إصلاح خطأ SystemError في عبارة import وفي طرق reduce() لأنواع بنية اللغة المضمنة عندما لا يكون builtins عبارة عن dict.
    • إصلاح UnicodeEncodeError عند قراءة رسالة تحتوي على حرف surrogate Unicode بواسطة طريقة get_payload() من وحدة email.message.
    • في وحدة asyncio.StreamReaderProtocol.connection_made()، يوجد رد اتصال يقوم بتسجيل خطأ إذا فشل المهمة التي تُغلف رد الاتصال "المتصل". سيفشل هذا رد الاتصال نفسه إذا تم إلغاء المهمة. منع ذلك عن طريق التحقق مما إذا كانت المهمة قد تم إلغاؤها أولاً. إذا كان الأمر كذلك، أغلق النقل ولكن لا تسجل خطأ.
    • إصلاح تحذيرات الموارد لـ unclosed files في واجهات سطر الأوامر pickle و pickletools.
    • التأكد من أن webbrowser.MacOSXOSAScript يرسل حدث تدقيق webbrowser.open.
    • عندما يظهر مرجع ثانٍ إلى سلسلة في الإدخال إلى pickle، ويكون تنفيذ Python قيد الاستخدام، فإننا نضمن أن يتم حفظ نسخة واحدة فقط ونسخ واحدة فقط.
    بتاريخ 53 دقائق مضت قال Ail Ahmed:

    وهل انا كا مبرمج اهتم الازم اهتم بالتفاصل الزي ده 

    كل 6 أشهر عليك تحديث معلوماتك، وبخصوص بايثون، ستجد شرح للتحديثات هنا:

    وعليك الاشتراك في جروب مهتم ببايثون سواء على فيسبوك أو لينكدان إو تويتر (X) أو الإشتراك في نشرة بريدية خاصة ببايثون.

    أو يمكنك البحث على اليوتيوب مع كل إصدار جديد عن What's New in Python 3.12 مثلاً واستبدال 3.12 برقم الإصدار مثل 3.11 وشاهد الفيديو وسيوضح لك ما الجديد، وإن وجدت أنه مفيد لك تعلمه ولكن بعض المكتبات لا تتوافق مع الإصدارات الجديدة وتحتاج بعض الوقت للتحديث، لذا قد يتعين عليك استخدام إصدار أقدم من بايثون بسبب الحاجة إلى استخدام مكتبة معينة.

    • أعجبني 1
  16. حاول استخدام متصفح آخر، لتفقد أين تكمن المشكلة، فإن لم تحدث معك فذلك يعني أن المشكلة بالمتصفح الحالي لديك حاول تحديثه أو تفقد هل هناك إضافة تسبب ذلك.

    وإن استمرت أرجو التواصل مع مركز المساعدة وشرح المشكلة ولو أمكن توفير صورة للمشكلة وسيتم مساعدتك بخصوص حسابك.

    أيضًا ربما تكون المشكلة بسبب بطيء في الإنترنت لديك حاول إعادة تشغيل الراوتر وتغيير الـ DNS لجوجل مثلاً.

     

  17. قم بإنشاء مجلد المشروع ثم افتح منفذ الأوامر في مسار ذلك المجلد وأسهل طريقة هي كتابة cmd في شريط العنوان ثم الضغط على Enter:

    cmd.thumb.png.184a6388f32e53718aa4b072dc873b2e.png

    بعد ذلك عليك إنشاء بية إفتراضية لمشروعك لتثبيت الحزم بها كالتالي:

    python -m venv venv

    ثم تفعيلها:

    venv\Scripts\activate

    ثم تثبيت flask:

    pip install Flask

    ثم عليك كتابة الأكواد الآن واستخدام مكتبة flask وستجد شرح هنا:

     

  18. المشكلة تكمن في الشرط الأخير المتعلق بالدرجة F، فالجملة else لا تستقبل أي شرط، عليك تحويلها إلى جملة elif. 

    أيضًا عليك تحويل القيمة المدخلة من المستخدم من نص إلى رقم من خلال دالة int، ليصبح الكود:

    user = int(input('Enter your grade, please:'))
    
    if user <= 100 and user >= 90:
        print("Your grade is A")
    elif user <= 89 and user >= 80:
        print("Your grade is B")
    elif user <= 79 and user >= 70:
        print("Your grade is C")
    elif user <= 69 and user >= 60:
        print("Your grade is D")
    elif user <= 59 and user >= 50:
        print("Your grade is E")
    elif user <= 49 and user >= 40:
        print("Your grade is F")
    else:
        print("Invalid grade input")

     

×
×
  • أضف...