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

Mustafa Suleiman

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

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

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

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

    300

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

  1. بالطبع فالمكتبة قوية جدًا، وتستطيع من خلالها إنشاء واجهة مستخدم متقدمة، والأمثلة خير دليل:

    وتوفر مكتبة PyQt5 واجهة برمجة تطبيقات (API) سهلة الاستخدام لإنشاء واجهات مستخدم رسومية تعمل على أنظمة تشغيل مختلفة مثل Windows و macOS و Linux.

    ومكونات مكتبة PyQt5 هي:

    • PyQt5 Core: يوفر الوظائف الأساسية لإنشاء واجهات مستخدم رسومية.
    • PyQt5 GUI: يوفر مجموعة واسعة من الأدوات لإنشاء عناصر واجهة المستخدم الرسومية مثل الأزرار والنوافذ والقوائم.
    • PyQt5 Widgets: يوفر مجموعة من الأدوات الجاهزة لإنشاء واجهات مستخدم رسومية معقدة.
    • PyQt5 QtWebKit: يسمح لك بعرض صفحات الويب في واجهة المستخدم الرسومية.
    • PyQt5 QtSvg: يسمح لك بعرض الصور SVG في واجهة المستخدم الرسومية.

    ومكتبة PyQt5 ليست متاحة في بايثون فقط، بل تتوفر للغات أخرى لكنها في بايثون هي النسخة الأكثر شيوعًا من مكتبة Qt لـ Python، وفي اللغات الأخرى هي بالاسم التالي:

    • C++: Qt هي مكتبة C++ الأصلية التي تم تطويرها بواسطة Trolltech.
    • Java: Qt Jambi هي واجهة برمجة تطبيقات Java لـ Qt.
    • JavaScript: Qt JavaScript هي واجهة برمجة تطبيقات JavaScript لـ Qt.
    • QML: QML هي لغة برمجة إعلانية لإنشاء واجهات مستخدم رسومية.
  2. عليك إضافة حقل نوع الملف  إلى نموذج hotel يُسمى type_media من نوع string، وحدد القيمة image للصور و pdf لملفات PDF.

     

    وفي ملف show_image.blade.php استبدل $(this).data('type_media') بـ {{ $hotel->type_media }} وأضف شروطًا لعرض الصورة أو ملف PDF.

     

    فشرط الصورة:

    @if ($hotel->type_media === 'image')
        <img id="image_src" class="img-fluid max-hight" src="{{ Storage::url($hotel->contract) }}" style="max-height:450px; width:100%" alt="" srcset="">
    @endif

    وشرط عرض ملف PDF:

    @if ($hotel->type_media === 'pdf')
        <iframe src="{{ Storage::url($hotel->contract) }}" style="width: 100%; height: 450px;"></iframe>
    @endif

    وبالطبع عليك تثبيت مكتبة mpdf في مشروعك.

    وبإمكانك إضافة المزيد من أنواع الملفات مثل الفيديوهات كالتالي:

    @if ($hotel->type_media === 'video')
        <video id="video_src" controls style="width: 100%; height: auto;">
            <source src="{{ Storage::url($hotel->contract) }}" type="video/mp4">
        </video>
    @endif

    أو فتح ملف PDF في نافذة جديدة:

    @if ($hotel->type_media === 'pdf')
        <a href="{{ Storage::url($hotel->contract) }}" target="_blank">
            <i class="mdi mdi-file-pdf" style="font-size: 25px; color: rgb(92, 88, 88);"></i>
        </a>
    @endif

    ويجب تحديث ملف show_image.js لمعالجة أنواع الملفات الجديدة.

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

  4. بتاريخ الآن قال احمد باسرده2:

    قصدت بأني تعلم بشكل خطي حتى وصلت إلى React.Native اي أني تعلم Node.js ...إلخ

    فهل تعلمي typescript  سيضيف شيء لعملي على تطبيق الويندوز

    أو حتى المسارات اللتي بعد electron.js هل سوف تكون مهمه لجعل برنامجي أكثر كفائه مثل Next.js , GraphQL ... , وشكرا

    لا حاجة لتعلم typescript لتعلم electrone أو أي إطار ومكتبة جافاسكريبت.

    لكن ما الفائدة منها ولما هي هامة ومن ضمن المهارات المطلوب إمتلاكها كمطور جافاسكريبت؟ أرجو قراءة التالي:

     

  5. ما أنت بحاجة إلى تعلمه لتنفيذ مشروع بواسطة electron هو تعلم Node.js وبالطبع تعلم جافاسكريبت أولاً قبل تعلم Node.js.

    وقبل أن تتعلم جافاسكريبت عليك تعلم HTML و CSS، حيث أنك ستستخدم كل تلك اللغات في مشروعك.

    حيث أن إطار electron يستخدم لغات الواجهة الأمامية لعرض الواجهة، ثم Node.js كواجهة خلفية.

    لذا مسار React Native هو مسار منفصل.

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

  7. استخدامها غير مؤثر في حالتنا هنا، فبالطبع سيكون الخرج هو رقم وليس نص، لكن ليس هناك فارق في الكود لدينا هنا.

    number = int(input("Enter a number :"))
    
    for x in range(10):
    
      print((number), '*', '=' ,number * x)

    لكن متى يكون مؤثر؟ في حال أردنا استخدام الرقم في سلسلة نصية، لاحظ الكود التالي سيحدث به خطأ:

    first_name = "ahmed"
    age = 25
    
    info = str(first_name) + " " + (age)
    
    print(info)  

    عند تجميع سلسلة نصية بواسطة + حدث خطأ لأننا نحاول جمع رقم مع نص، لذا علينا استخدام str كالتالي:

    first_name = "ahmed"
    age = 25
    
    info = str(first_name) + " " + str(age)
    
    print(info)  

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

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

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

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

    وكمثال من الأفضل طباعة الرقم الذي يتم ضرب الرقم به في الحلقة التكرارية وذلك باستخدام f-string وأيضًا وضع /n من إظهار أول نتيجة على سطر منفصل كالتالي:

    number = int(input("Enter a number: \n"))
    
    for x in range(1, 11):
      print(f"{number} * {x} = {number * x}")
    • أعجبني 1
  9. بتاريخ 9 ساعة قال Beshoy Wageeh:
    @forelse($transactions as $transaction)
    <tr role="row">
      <td>{{ $loop->iteration }}</td>
    
      <td>{{ $transaction->user->first_name }}</td>
      <td>{{ $transaction->num }}
      </td>
      <td>{{ $transaction->payed_at }}</td>
      @php
      $totalCredit += $transaction->credit;
      $totalDebit += $transaction->debit;
      @endphp
    
    
      <td>{{ $transaction->formatcurrncy($transaction->credit) }}
      </td>
      <td>{{ $transaction->formatcurrncy($transaction->debit) }}
      <td>{{ number_format($totalCredit - $totalDebit, 2) }}</td>
    </tr>
    @empty
    <tr>
      <td class="text-center" colspan="5">
        {{ trans('client.report_msg') }}</td>
    </tr>
    @endforelse

    عند التجربة يظهر خطأ
    Undefined variable $totalCredit

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

  10. بالتأكيد أنت تستخدم الصور بحجمها الكامل وأيضًا لم تقم بضغطها مع استخدام صيغة مناسبة لكي لا تفقد جودتها، وتستطيع فعل ذلك من خلال الفوتشوب من خلال تصغير حجم الصور لتكون ضعف الحجم الذي تريد عرضها به، مثلاً لو تريد 500 بكسل ستكون الصورة 1000 بكسل لكي تظهر بجودة جيدة على الهواتف التي بها تقنية الـ double pixel.

    ثم حفظها بصيغة webp أو avif.

    وإذا لم ترد استخدام الفوتشوب تستطيع استخدام موقع Squoosh من خلال المتصفح، لتنفيذ ما سبق.

     

    • شكرًا 1
  11. في البداية نستخرج البيانات من قاعدة البيانات:

    1. تحديد نموذج قاعدة البيانات الذي يمثل حساباتك (مثلاً: حسابات، معاملات، ...).
    2. كتابة استعلام لعرض البيانات المطلوبة، مع مراعاة ترتيبها حسب التاريخ.

    مع تضمين الأعمدة التالية في الاستعلام:

    • التاريخ: تاريخ المعاملة.
    • الدائن: المبلغ الدائن في المعاملة.
    • المدين: المبلغ المدين في المعاملة.
    • البيان: وصف موجز للمعاملة.

    ثم برمجة خانة الإجمالي لكل صف كالتالي:

    1. استخدم حلقة foreach لعرض البيانات.
    2. داخل الحلقة، حدد متغير لحفظ إجمالي الدائن حتى الآن.
    3. أضف قيمة الدائن لكل صف إلى متغير إجمالي الدائن.
    4. حدد متغير آخر لحفظ إجمالي المدين حتى الآن.
    5. أضف قيمة المدين لكل صف إلى متغير إجمالي المدين.
    6. اعرض قيمة إجمالي الدائن وإجمالي المدين في كل صف.

    بعد ذلك كتابة الكود الخاص بخانة صافي المبلغ (الإجمالي)  من خلال طرح إجمالي المدين من إجمالي الدائن وعرض قيمة صافي المبلغ (الإجمالي) في آخر الصف.

    وكمثال بسيط:

    @foreach ($transactions as $transaction)
    <tr>
        <td>{{ $transaction->date }}</td>
        <td>{{ $transaction->credit }}</td>
        <td>{{ $transaction->debit }}</td>
        <td>{{ $transaction->description }}</td>
    
        @php
            $totalCredit += $transaction->credit;
            $totalDebit += $transaction->debit;
        @endphp
    
        <td>{{ number_format($totalCredit, 2) }}</td>
        <td>{{ number_format($totalDebit, 2) }}</td>
        <td>{{ number_format($totalCredit - $totalDebit, 2) }}</td>
    </tr>
    @endforeach
    
    <tr>
        <th></th>
        <th>{{ number_format($totalCredit, 2) }}</th>
        <th>{{ number_format($totalDebit, 2) }}</th>
        <th></th>
        <th></th>
        <th></th>
        <th>{{ number_format($totalCredit - $totalDebit, 2) }}</th>
    </tr>

     

    • أعجبني 1
  12. دالة abs تأخذ القيمة المطلقة لعدد أي أنها ستحذف علامة السالب من أي رقم سلبي. 

    هناك دالة round بدلاً من دالة abs حيث ستقرب الرقم إلى أقرب عدد صحيح، أي لو كان الرقم المدخل هو 256.35، فسوف تقوم دالة round بإرجاع 256.

    وإن كان 256.35-، فسوف تقوم دالة round بإرجاع 256.

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

  13. وعليكم السلام مهند،

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

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

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

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

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

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

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

    أيضًا تستطيع البحث على اليوتيوب عن مشاريع للمبتدئين ووضع اسم اللغة بجانب ذلك مثال:

    "مشاريع جافاسكريبت للمبتدئين أو مشاريع HTML و CSS للمبتدئين" وهكذا...

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

  15. من خلال الموقع الرسمي ومن الأفضل تحميل الإصدار 3.11 وليس 3.12 لكون الإصدار 3.11 أقدم وأغلب المكتبات الموجودة متوافقة معه بينما إصدار 3.12 إصدار حديث في  2023-10-02 لذا ننتظر بعض الوقت قبل استخدامه.

    رابط الموقع الرسمي:

    وإليك رابط مباشر للإصدار 3.11:

    وأثناء التثبيت لا تنسي الضغط على add python to PATH

    • شكرًا 1
  16. بتاريخ 3 دقائق مضت قال معاذ عبد الخالق:

    و افرض ان حسابه اقل من ارقام التانيه و عملت عمليه الطرح هيطلع بالسالب ف هيغير الحساب بردو و هيطلع بالسالب 

    وده غير بردو حسابه بقي بالسالب

    مضبوط، لذا نستخدم دالة ABS  لتكون النتيجة موجبة، لكن عليك التوضيح ما الغرض من عمليات الطرح تلك؟ فالعمليات المالية مثلاً حساسة ولا نستطيع تعيينها إلى 0 في حال كانت القيمة سالبة مثلاً بل يتم رفض عملية الطرح إن كان حسابه ليس به مبلغ كافي مثلاً.

     

    • أعجبني 1
  17. تستطيع استخدام دالة ABS لحساب القيمة المطلقة للنتيجة حيث ستُحوّل الدالة أي قيمة سالبة إلى قيمة موجبة.

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

    SELECT CASE WHEN V - (x + A) >= 0 THEN V - (x + A) ELSE 0 END AS total_amount
    FROM table1
    WHERE id = customer_id;

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

    UPDATE table1
    SET total_amount = V - (x + A)
    WHERE id = customer_id;
    • أعجبني 1
  18. عنصر meta وهو عنصر HTML يوفر بيانات وصفية حول مستند HTML، ولا يتم عرض بيانات الوصف تلك على صفحة الويب نفسها، ولكنها تستخدم بواسطة محركات البحث والمتصفحات والأجهزة الأخرى لفهم محتوى الصفحة.

    وهناك العديد من الأنواع المختلفة من عناصر meta، ولكل نوع attribute أو سمة مختلفة، أي يختلف العنصر بإختلاف السمة، ونكتب كل سمة بشكل منفصل أي لانضع كل السمات في عنصر meta واحد.

    بمعنى:

    • name: سمة "الاسم" تحدد اسم الخاصية التي يصفها عنصر "ميتا".
    • viewport: اسم خاص يحدد كيفية عرض محتوى صفحة الويب في منفذ عرض.
    • content: سمة "المحتوى" تحدد قيمة الخاصية.

    width=device-width تحدد تلك القيمة عرض محتوى صفحة الويب بعرض الجهاز الذي يعرضها.

    و initial-scale=1.0 تحدد مقياس التكبير الأولي لصفحة الويب على أنها 1.0، مما يعني أن محتوى صفحة الويب سيتم عرضه بحجمه الأصلي.

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

    بشكل أبسط نسبة العرض للإرتفاع متساوية ليتم ملائمة طول الشاشة مهما كان عند عرض صفحة الموقع لأول مرة، ويظهر الموقع بشكل طبيعي على أجهزة الهاتف دون تكبير أو تصغير، فلو قمتي بعمل zoom على شاشة هاتفك ستجدي أن الموقع يتم تكبيره لكن قيمة 1 تعني أن الموقع سيتم عرضه بدون تكبير أي بشكله الطبيعي.

    • أعجبني 1
  19. نتيجة الطرح طبيعية؟

    فأنت تقوم بطرح متغير t من متغير v أي طرح 50 من 500 لذا النتيجة سالبة لأنك تطرح الرقم الصغير من الكبير.

    يجب طرح الرقم الكبير من الصغير إذا أردت قيمة موجبة كالتالي:

    <?php
    
    $v = 500;
    
    
    $t = 50;
    
    $i = 40;
    
    $e = $t + $i;
    
    
    echo $v - $t; 
    
    ?>

     

  20.  ميثود unshift مشابهة لـ splice ولكنها تعمل بشكل مختلف قليلاً، حيث نستخدمها لإضافة عنصر واحد أو أكثر إلى بداية المصفوفة.

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

    لنفترض وجود مصفوفة تحتوي على العناصر التالية:

    const array1 = [1, 2, 3];
    console.log(array1.unshift(4, 5));
    
    // expected output: 5
    console.log(array1);
    
    // expected output: Array [4, 5, 1, 2, 3]

    كما ترى، تم إضافة الأرقام في بداية المصفوفة وتحريك جميع العناصر إلى اليمين، ولكن تلك الميثود تقوم بتعديل المصفوفة الأصلية لذا عليك معرفة آلية عمل كل ميثود وهل تقوم بتغيير المصفوفة الأصلية أم إنشاء مصفوفة جديدة دون تعديل الأصلية.

    • شكرًا 1
  21. بتاريخ 45 دقائق مضت قال Ail Ahmed:

    تمام جدا 

    بس  حاجه تاني لوسمحت ممكن افهم الفرق بين الخورزميا ده وبين عمليه الضرب ده

    c = 32 * 14

    وكمان العمليه ده بتشتغل ازي خلف الكوليس

    يعني انا ليه اكتب كل ده 

    وبسطر واحد اضرب رقمين عادي 

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

    وما يحدث هو:

    1. تقسيم الأعداد إلى جزئين: الجزء العلوي (a0) والجزء السفلي (a1)
    2.  ضرب كل جزء من الأعداد: a0 * b0، a1 * b1، (a0 + a1) * (b0 + b1)
    3.  حساب النتائج الوسيطة (c0، c1، c2)
    4.  تحديد العلامة العشرية للنتيجة النهائية (x0)
    5.  حساب النتيجة النهائية (c)
    • أعجبني 1
  22. غالبًا أنت تتحدث عن دورة علوم الحاسوب، وذلك أمر طبيعي بخصوص تلك الدورة، ففي البداية يتم تقديم المفاهيم إليك بشكل نظري، فالدورة الغرض منها تقديم مختلف علوم الحاسوب إليك بشكل مُبسط، على إفتراض أنك شخص ليس لديه خلفية عن تلك المفاهيم، لذا الأمر يجب أن يكون تدريجيًا.

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

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

     

  23. من الأفضل استخدام أسماء أكثر وضوحًا للمتغيرات، مثل استبدال "a0" بـ "tensA" و "a1" بـ "onesA" لتجعل الكود أكثر قابلية للقراءة.

    وهناك إمكانية لإضافة تحقق لضمان أن الأرقام المدخلة هي أرقام صحيحة، مثل التأكد من أن a و b يتمثلان في أرقام صحيحة، ولتحسين أداء الكود تجنب إعادة حساب القيم التي تم حسابها بالفعل، مثل حساب a0 + a1 و b0 + b1 مرتين.

    def anatoly(a, b):
        # تحقق من صحة الإدخال
        if not isinstance(a, int) or not isinstance(b, int):
            raise ValueError("الرجاء إدخال أرقام صحيحة")
    
        # تحويل الأعداد السالبة إلى إيجابية
        a = abs(a)
        b = abs(b)
    
        tensA = a // 10
        onesA = a % 10
        tensB = b // 10
        onesB = b % 10
    
        c0 = onesA * onesB
        c1 = tensA * tensB
        c2 = ((tensA + onesA) * (tensB + onesB) - (c1 + c0))
    
        if c2 % 2 == 0:
            x0 = c2 // 10
            x1 = c2 % 10
        else:
            x0 = 0
            x1 = c2
    
        return x1, c1 + x0, c0
    
    print(anatoly(32, 14))

     

    • أعجبني 1
×
×
  • أضف...