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

Mustafa Suleiman

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

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

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

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

    305

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

  1. الكود يعتمد على حلقة تكرارية (while loop) لتنفيذ سلسلة من العمليات اعتمادًا على شروط محددة، كالتالي:

    • i تم تعريفها كمتغير صحيح وتم تهيئتها بالقيمة 0.
    • m تم تعريفها كمتغير صحيح وتم تهيئتها بالقيمة 15.

    - ثم في الحلقة التكرارية (While Loop):

    الحلقة تستمر حتى أن i يصبح أكبر من أو يساوي 10.

    داخل الحلقة:

    1. يتم إضافة قيمة i إلى m.
    2. فحص ما إذا كانت القيمة الحالية لـ m هي عدد زوجي.
    3. إن كانت القيمة زوجية، تستخدم continue للانتقال إلى بداية الحلقة دون تنفيذ الأوامر التالية.
    4. إضافة قيمة 3 إلى i.
    5. طباعة قيمة m.
    6. استدعاء Console.ReadLine() للانتظار حتى يقوم المستخدم بإدخال شيء (للتفاعل مع البرنامج).

    في كل دورة من الحلقة، تُطبع قيمة m إذا كانت m عددًا فرديًا (لأنه في حالة الأعداد الزوجية، يتم استخدام continue).

    القيم التي تم طباعتها هي:

    • m = 15 (لأن 15 % 2 ليست زوجية).
    • m = 21 (لأن 18 + 3 = 21 وهي فردية).
    • m = 27 (لأن 24 + 3 = 27 وهي فردية).
    • m = 45 (لأن 42 + 3 = 45 وهي فردية).

    وهكذا تستمر الحلقة حتى يتم تنفيذها 10 مرات (بناءً على الشرط i < 10).

    والكود الصحيح هو كالتالي:

    class Program
    {
        static void Main(string[] args)
        {
            int i = 0, m = 15;
    
            while (i < 10)
            {
                m = m + i;
    
                if (m % 2 == 0)
                    continue;
    
                i = i + 3;
    
                Console.WriteLine(m);
            }
    
            Console.ReadLine(); // نقلت هذا السطر إلى خارج الحلقة
        }
    }

     

  2. كلاهما واحد سواء parent أو master المقصود بها النافذة الرئيسية MainWindow.

    أي العنصر الرئيسي الذي يحتوي على عناصر فرعية، مثل نافذة (window) أو إطار (frame) أو عنصر آخر، وعند إنشاء عنصر فرعي مثل Frame، يتم تمرير العنصر الرئيسي (parent) كمعلمة.

    وفي Tkinter، تستطيع استخدام "master" كمصطلح بديل لـ "parent"، حيث يشير كلاهما إلى العنصر الرئيسي الذي يحتوي على العناصر الفرعية.

    • أعجبني 1
  3. المجالين بعيدين جدًا عن بعضهم، فلو كنت تريد تعلم الواجهة الخلفية مثلاً Back-End مع الواجهة الأمامية Fron-End أي مجال الويب كاملاً لقلت لك تستطيع ذلك.

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

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

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

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

     

    • أعجبني 1
    • شكرًا 1
  4. بتاريخ On 28‏/12‏/2023 at 13:03 قال Ahmed Ebrahim11:

    حسنا استاذي ها هي الصور 

    اريد جعل مثلثات كما بالصوره ف نهاية ال bars ولكن لا تظهر عند استخدام after او before

    بالنسبه لل navbar كيف يمكن جعله يثبت معي عند ال scroll ولا يختفي اذا نظرت للصورتين ستجد ان ال nav موجود ف احداها وهذا ما اريده

    بالنسبة لشريط التنقل Navbar تستطيع تثبيته أثناء السكرول من خلال خاصية sticky، كالتالي:

    .navbar {
      position: sticky;
      top: 0;
    }

    أما بالنسبة للسؤال الخاص بالمثلثات لم أفهم بالضبط ما تريده.

    • أعجبني 1
  5. أرجو التعليق أسفل فيديو الدورة لمساعدتك بشكل أفضل.

    المشكلة هي أنك تستخدم منفذ الأوامر Powershell وهو مختلف عن منفذ الأوامر CMD، وأنت تقوم بتشغيل السكريبت الذي ينتهي بصيغة bat وهو موجه لـ CMD، بينما السكريبت الخاص بـ PowerShell ينتهي بـ ps1.

    لذا عليك تنفيذ الأمر التالي بدون تحديد صيغة السكريبت وسيتم إختيار السكريبت المناسب بشكل تلقائي كالتالي:

    venv\Scripts\activate

     

  6. بخصوص التطبيقات العربية فيوجد:

    • دراسة جدوى مشروع : نموذج pdf

    • دراسة الجدوى (Word)

    ولكن هي مجرد نصائح ودليل فقط.

    ويوجد التطبيق التالي لإنشاء دراسة جدوى:

    • دراسة جدوى المشروع Business pl

    أما إذا أردت موقع لذلك فيوجد موقع "الجدوى".

    @Saleh Kamal

  7. من المفترض أن يوجد خطأ في النسخة الحالية من الكود لديك ويخبرك بذلك، ويخيرك بين تشغيل تلك النسخة من الكود أو تشغيل النسخة السابقة السليمة، اضغط على No وتفقد ما الخطأ.

  8. الخطأ لديك هو onbackinvokedcallback is not enabled for the app، حيث لم يتم تمكين خاصية "OnBackInvokedCallback" في تطبيق Flutter لديك، وتلك الخاصية ضرورية للتعامل مع إيماءة الرجوع على أجهزة Android التي تعمل بإصدار 13 أو أحدث.

    والحل يكمن في تفعيل الخاصية في ملف AndroidManifest.xml، وستجده في المسار android/app/src/main/AndroidManifest.xml في مشروعك.

    أضف السطر التالي داخل وسم <application>:

    android:enableOnBackInvokedCallback="true"

    بحيث يبدوا الوسم كالتالي:

    <application
        android:name="io.flutter.app.FlutterApplication"
        android:label="YourAppName"
        android:icon="@mipmap/ic_launcher"
        android:enableOnBackInvokedCallback="true">

    ثم أعد تشغيل أو إعادة بناء تطبيق Flutter.

    وفي حال تستخدم مكتبة لإدارة التوجيه مثل go_router، ستحتاج إلى تحديثها إلى إصدار يدعم خاصية "OnBackInvokedCallback" وهو الإصدار 3.0.0 أو أحدث.

  9. المشكلة في الجزء التالي من الكود:

    b=b.pop()

    لاحظ أنك تقوم بإعادة تعيين قيمة b إلى القيمة العائدة من b.pop حيث يتم إعادة آخر قيمة من المصفوفة من خلال pop وبالتالي b لم تعد مصفوفة بعد الآن بل قيمة فقط، لذا لا يمكن استدعاء ميثود push عليها.

    والصحيح هو:

    b.pop();

    أي لديك مشكلة في المقارنة حيث أنك كتبت 

    j=b.length-1;j++

    بينما الصحيح هو:

    j < b.length - 1; j++

    من أجل التكرار بشكل صحيح.

    والكود هو:

    var lengthOfLongestSubstring = function(s) {
      var max = 1;
      var a = s.split('');
      let b = [];
    
      for (let i = 0; i < a.length; i++) {
        b.push(a[i]);
    
        for (let j = 0; j = b.length - 1; j++) { 
          if (b[j] === a[i + 1]) {
            var dd = b.length;
            if (dd > max) {
              max = dd;
              ss = b.join('');
              b.pop(); 
            }
          }
        }
      }
    
      return ss;
    };
    
    console.log(lengthOfLongestSubstring('pwwkew'));

     

  10. بخصوص تطوير قالب ونشره على منصة سلة، فأنت بحاجة إلى تعلم لغات HTML, CSS, JS ثم تعلم محرك القوالب المستخدم في إنشاء القوالب على متجر سلة وهو محرك Twig والذي يعتمد على لغة PHP لذا أنت بحاجة إلى الإلمام بتلك اللغة وستجد تفصيل هنا:

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

     

    • شكرًا 1
  11. من الممكن تركيبها في منفذ I2C الموجود على اللوحة الأم للجهاز، كالتالي:

    1. افتح غطاء Raspberry Pi 4 Model B.
    2. ابحث عن منفذ I2C الموجود على اللوحة الأم. عادةً ما يكون هذا المنفذ موجودًا بالقرب من منفذ GPIO.
    3. قم بتوصيل دافروت الساعة بالمنفذ I2C باستخدام الأسلاك. عادةً ما يتم توصيل خطوط البيانات SDA و SCL بالمنفذ I2C.
    4. أغلق الغطاء.

    ولتسجيل دافروت الساعة في الجهاز:

    • قم بتشغيل Raspberry Pi 4 Model B.
    • قم بتوصيل الجهاز بالإنترنت.
    • قم بفتح موجه الأوامر.
    • اكتب الأمر التالي:
    sudo raspi-config
    • انتقل إلى "Advanced Options".
    • حدد "I2C".
    • حدد "Enable I2C".
    • اضغط على "Yes".
    • اخرج من موجه الأوامر.

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

    1- تشغيل برنامج Python التالي:

    import smbus
    
    def get_time():
        address = 0x50
        bus = smbus.SMBus(1)
        data = bus.read_byte_data(address, 0)
        return data
    
    print(get_time())

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

    وبخصوص دافروت ساعة الوقت الحقيقي PCF 8523 فهي:

    • تدعم دقة ثانية واحدة.
    • يمكنها الحفاظ على الوقت الصحيح حتى في حالة انقطاع التيار الكهربائي.
    • تتطلب مصدر طاقة 5 فولت.
    • شكرًا 1
  12. بتاريخ 39 دقائق مضت قال Omar Shaheen2:

    لم يظهر سهم للوصول للإعدادات

    ذلك ليس التطبيق الذي أرفقته لك يبدوا أن هناك أكثر من تطبيق لديك، قم بالبحث عن apps في إعدادات الويندوز ثم احذف أي تطبيق باسم powershell ثم أعد تثبيت التطبيق الذي أشرت إليه مرة أخرى.

  13. عليك تحديث كود حذف (delete.php) كما يلي:

    <?php
    include 'dbcon.php';
    
    $id = $_GET['deleteid'];
    
    // تحقق من وجود قيمة للمتغير $id
    if (isset($id) && !empty($id)) {
        // عرض رسالة تأكيد باستخدام SweetAlert2
        echo '<script>
                Swal.fire({
                    title: "هل أنت متأكد؟",
                    text: "لن يمكنك التراجع عن هذا الإجراء!",
                    icon: "warning",
                    showCancelButton: true,
                    confirmButtonText: "نعم، احذف!",
                    cancelButtonText: "لا، إلغاء"
                }).then((result) => {
                    if (result.isConfirmed) {
                        // إذا تم النقر على "نعم"، قم بحذف السجل
                        window.location.href = "delete_confirm.php?deleteid=' . $id . '";
                    } else {
                        // إذا تم النقر على "لا"، قم بالرجوع إلى الصفحة الرئيسية
                        window.location.href = "display.php";
                    }
                });
              </script>';
    } else {
        // إذا لم يتم تحديد قيمة للمتغير $id، قم بالرجوع إلى الصفحة الرئيسية
        header('location:display.php');
    }
    ?>

    ثم أنشئ صفحة جديدة باسم delete_confirm.php للتأكيد النهائي لحذف السجل:

    <?php
    include 'dbcon.php';
    
    $id = $_GET['deleteid'];
    
    $sql = "DELETE FROM `users` WHERE id=$id";
    $result = mysqli_query($conn, $sql);
    
    if ($result) {
        echo '<div class="alert alert-success text-center w-25" role="alert">
            تم الحذف بنجاح
          </div>';
        header('location:display.php');
    } else {
        echo mysqli_error($conn);
    }
    ?>

     

×
×
  • أضف...