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

Mustafa Suleiman

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

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

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

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

    475

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

  1. Interpolation Search هي خوارزمية بحث تعتمد على فكرة إن كانت البيانات مرتبة تصاعديًا أو تنازليًا، فباستطاعتنا استخدام قيمة العنصر المستهدف لتحديد موقعه التقريبي في المصفوفة. وتعمل بالآلية التالية: ابحث عن أصغر وأكبر عنصر في المصفوفة. احسب الفارق بين قيمة العنصر المستهدف وأصغر عنصر في المصفوفة. قسّم هذا الفارق على الفارق بين أكبر وأصغر عنصر في المصفوفة. اضرب النتيجة بـ (عدد العناصر في المصفوفة - 1) واحصل على فهرس تقريبي للعنصر المستهدف. قارن العنصر في هذا الفهرس مع العنصر المستهدف. إذا كانا متطابقين، فقد وجدت العنصر المستهدف. إذا لم يكونا متطابقين، فكرّر الخطوات من 3 إلى 6 مع تعديل الفهرس التقريبي بناءً على المقارنة. وهي أسرع من خوارزمية البحث الثنائي (Binary Search) في بعض الحالات وسهلة الفهم والتنفيذ. لكن لا تعمل بشكل جيد مع البيانات غير المرتبة وأبطأ من خوارزمية البحث الثنائي في بعض الحالات، والإختيار يعتمد على: حجم البيانات. ترتيب البيانات. الأداء المطلوب.
  2. يجب التفرقة بين الـ modulo والـ remainder فكلاهما يستخدمان نفس العلامة، وكل لغة تقوم بشكل إفتراضي بتطبيق سواء modulo أو remainder. وفي C++، يُستخدم العامل % كعامل modulo، والذي يُعيد الباقي من القسمة عند قسمة عدد على عدد آخر. ولكن، نستطيع استخدامه أيضًا كعامل remainder في حالة الأعداد السالبة، حيث يختلف الناتج عن عملية القسمة في حالة الاستخدام مع الأعداد السالبة. حيث أنّ الـ Modulo: في العمليات الحسابية العادية، يُعتبر الـ Modulo عملية تُعيد الباقي من القسمة العددية أي 10 Mod 3 يُعيد قيمة 1، لأن 10 ÷ 3 تساوي 3 مع باقي 1. في البرمجة، خصوصاً في لغة C/C++، الـ Modulo تُعيد قيمة سالبة إذا كان أحد العددين سالبًا. مثل -10 Mod 3 يُعيد -1، لكن ذلك السلوك يختلف بين اللغات. بينما الـ Remainder: الـ Remainder هو الباقي الإيجابي بعد القسمة ففي الرياضيات، يكون الـ Remainder دائمًا إيجابيًا. في بعض اللغات البرمجية مثل Python وJava، عملية الـ Remainder تعتبر عملية للحصول على الباقي الإيجابي من القسمة، مثل -10 % 3 في Python يُعيد 2، وهو باقي القسمة الإيجابي. وإليك مثال شامل يوضح الفرق بين الـ Modulo والـ Remainder في C++: #include <iostream> using namespace std; int main() { // Modulo cout << "Modulo Examples:" << endl; cout << "10 % 3 = " << 10 % 3 << endl; // يُعيد 1، لأن الباقي من قسمة 10 على 3 هو 1 cout << "-10 % 3 = " << -10 % 3 << endl; // يُعيد -1، لأن الباقي من قسمة -10 على 3 هو -1 cout << "10 % -3 = " << 10 % -3 << endl; // يُعيد 1، لأن الباقي من قسمة 10 على -3 هو 1 cout << "-10 % -3 = " << -10 % -3 << endl; // يُعيد -1، لأن الباقي من قسمة -10 على -3 هو -1 // Remainder cout << "\nRemainder Examples:" << endl; cout << "10 % 3 = " << (10 % 3 + 3) % 3 << endl; // يُعيد 1، لأن الباقي من قسمة 10 على 3 هو 1 cout << "-10 % 3 = " << (-10 % 3 + 3) % 3 << endl; // يُعيد 2، لأن الباقي من قسمة -10 على 3 هو -1، ولكن بعد إضافة 3 يصبح 2 cout << "10 % -3 = " << (10 % -3 + -3) % -3 << endl; // يُعيد -2، لأن الباقي من قسمة 10 على -3 هو 1، ولكن بعد إضافة -3 يصبح -2 cout << "-10 % -3 = " << (-10 % -3 + -3) % -3 << endl; // يُعيد -1، لأن الباقي من قسمة -10 على -3 هو -1 return 0; }
  3. لا يوجد ملخصات PDF لمحتوى الدورة، لكن تستطيع الإعتماد على موسوعة حسوب كمرجع لك: https://wiki.hsoub.com بالإضافة إلى المقالات والدروس في أكاديمية حسوب حيث أقسام مختلفة: https://academy.hsoub.com/programming/ وستجد نصائح أخرى هنا:
  4. أرجو تثبيت anydesk ثم إرسال الـ address على الخاص لمساعدتك من خلال الدخول على حاسوبك. لكن في البداية حاول إعادة تشغيل الحاسوب، وإن استمرت المشكلة استخدم منفذ أوامر آخر وهو powershell من خلال تثبيت التطبيق التالي: https://apps.microsoft.com/detail/9n0dx20hk701?hl=en-US&gl=US ثم البحث في شريط البحث بالأسفل عن terminal
  5. ما تريده هو استخدام GitHub Pages وستجد شرح بالفيديو هنا: ولكن عليك رفع نسخة المشروع بعد التحزيم أي رفع مجلد build وليس رفع الكود المصدري، فذلك نرفعه في فرع branch آخر. لكن من الأسهل استخدام Netlify:
  6. الذهبي: HTML: #FFD700 RGB: 255, 215, 0 CMYK: 0, 16, 100, 0 Pantone: PMS 123 C دم الغزال: HTML: #8B0000 RGB: 139, 0, 0 CMYK: 0, 100, 100, 46 Pantone: PMS
  7. هناك مشكلة في الـ compiler في Code::Blocks من الأسهل تثبيت النسخة التي تتضمن على الـ compiler وهي: https://www.fosshub.com/Code-Blocks.html?dwl=codeblocks-20.03-setup.exe#
  8. جوجل أدسنس أصبح يتطلب مستوى مرتفع لجودة المحتوى منذ فترة، فلديك في الموقع محتوى بسيط للأخبار عليك بناء محتوى مرتفع الجودة وليكن سلسلة مقالات لا تقل كلمات كل مقال عن 1500 كلمة واستهدف في المقالات ما يهتم به زوارك أي حقق لهم إفادة، بعد كتابة 10 مقالات من تلك النوعية على الأقل حاول التقدم مجددًا. ولو قمت بإنشاء مقالة ضخمة واحدة 3000 كلمة مثلاً تتحدث عن موضوع بشكل شامل أو بها مواضيع تندرج تحت موضوع معين، فذلك سيكون أفضل، بحيث تكون المقالة الرئيسية في موقعك وباقي المقالات مساعدة لها. أيضًا حاول الاستعانة بيوتيوب ووضع شرح بسيط بالفيديو لأمر معين في مقالاتك ذلك سيزيد من جودة المحتوى. واهتم بالصور والوسائط الأخرى في المقالات، وقم بالربط بينهم أي إنشاء روابط داخلية.
  9. ما هو الرابط المقصود؟ أظن أنك تتسائل حول رابط المستودع أو ملفات خاصة بدرس بالدورة، إذن أرجو التعليق أسفل فيديو الدورة حيث ستجد صندوق للتعليقات بالأسفل. وطرح الأسئلة العامة في قسم أسئلة البرمجة هنا.
  10. أشهر 20 سؤال في مقابلات العمل هو التالي: Longest Common Subsequence Longest Increasing Subsequence Edit Distance Minimum Partition Ways to Cover a Distance Longest Path In Matrix Subset Sum Problem Optimal Strategy for a Game 0-1 Knapsack Problem Boolean Parenthesization Problem Shortest Common Supersequence Matrix Chain Multiplication Partition problem Rod Cutting Coin change problem Word Break Problem Maximal Product when Cutting Rope Dice Throw Problem Box Stacking Egg Dropping Puzzle تستطيع البحث عن كل سؤال على اليوتيوب
  11. أسهل طريقة لفتح منفذ الأوامر في مسار مجلد المشروع، هو كتابة cmd في شريط العنوان بالمجلد ثم اضغط Enter كالتالي: أو يمكنك الضغط في أي مكان فارغ بالمجلد بزر الفأرة الأيمن ثم اختر open in terminal: لكن من الأفضل فتح منفذ الأوامر (التيرمنال) في vscode مباشرًة حيث يتم فتح التيرمنال في مسار مجلد المشروع المفتوح حاليًا في vscode، ونقوم بالضغط على CTRL + ` حيث ` هو حرف الـ ذ بالكيبورد لكن عندما تكون أجنبية ENG
  12. تم تغيير الـ Resolution لديك أي دقة الشاشة أصبحت أصغر ربما لأن اللعبة قديمة أو حدث مشكلة لسببِ ما، اضغط على سطح المكتب بزر الفأرة الأيمن ثم اختر display settings ثم ستجد خيار باسم display resolution قم بإختيار دقة الشاشة المناسبة للشاشة للديك والتي ستجد بجانبها recommended.
  13. عليك إضافة الكود اللازم لعرض رسالة تأكيد قبل حذف السجل عند الضغط على زر "حذف" في الجدول، وذلك من خلال مكتبة SweetAlert2 لإظهار الرسالة، كالتالي: <button class="btn btn-danger confirm" id="delete-row"> <a href="delete.php?deleteid='.$id.'" class="text-light text-decoration-none">حذف </a> </button> وكما ترى، أضفت الفئة "confirm" إلى الزر، وهذا ما نعتمد عليه في الجافا سكريبت لاستهداف الأزرار التي تحتاج إلى تأكيد. الكود بعد التعديل <!DOCTYPE html> <html lang="ar" dir="rtl"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>الرئيسية</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous"> <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script> </head> <body> <div class="container"> <table class="table my-5 table-bordered table-striped"> <thead> <button class="btn btn-success mt-3"><a href="index.php" class="text-decoration-none text-light">اضافة بيانات</a></button> <tr> <th class="text-center table-primary" scope="col">#</th> <th class="text-center table-primary" scope="col">الاسم</th> <th class="text-center table-primary" scope="col">البريد الالكتروني</th> <th class="text-center table-primary" scope="col">رقم الهاتف</th> <th class="text-center table-primary" scope="col">العمليات</th> </tr> </thead> <tbody> <?php include 'dbcon.php'; $sql = "select *from users"; $resault = mysqli_query($conn, $sql); while ($row = mysqli_fetch_array($resault)) { $id = $row['id']; echo '<tr> <td class="text-center"> ' . $row['id'] . ' </td> <td class="text-center"> ' . $row['name'] . ' </td> <td class="text-center"> ' . $row['email'] . ' </td> <td class="text-center"> ' . $row['phone'] . ' </td> <td class="text-center"> <button class="btn btn-primary my-3"> <a href="update.php?updateid=' . $id . '" class="text-light text-decoration-none"> تعديل</a> </button> <button class="btn btn-danger confirm" data-id="' . $id . '">حذف</button> <button class="btn btn-success" onclick="printPage(10)">طباعة</button> </td> </tr>'; } ?> </tbody> </table> </div> <script > document.addEventListener('DOMContentLoaded', function() { const deleteButtons = document.querySelectorAll('.confirm'); deleteButtons.forEach(button => { button.addEventListener('click', function(e) { e.preventDefault(); const id = this.getAttribute('data-id'); Swal.fire({ title: 'هل أنت متأكد؟', text: "لن تتمكن من التراجع عن هذا الإجراء!", icon: 'warning', showCancelButton: true, confirmButtonColor: '#3085d6', cancelButtonColor: '#d33', confirmButtonText: 'نعم، احذفه!' }).then((result) => { if (result.isConfirmed) { window.location.href = 'delete.php?deleteid=' + id; } }); }); }); }); </script> </body> </html>
  14. بشكل أبسط، OpenCV تخيلها مثل مجموعة أدوات كبيرة تحتوي على أدوات للتعامل مع الصور. أي تخيل مكتبة مليئة بالأدوات الجاهزة لاستخدامها على الفور، فهي عبارة عن مجموعة ضخمة من الخوارزميات التي تتعامل مع الصور والفيديو بطرق تقليدية، أي لا تعتمد على شبكات عصبية معقدة. بينما PyTorch اعتبره مثل مصنع لبناء أدمغة اصطناعية ذكية، أي مجموعة أدوات لبناء آلات ذكية قادرة على "التعلم" من البيانات، أي نستخدم الإطار في حال نتطلع إلى بناء نماذج ذكية لحل مشاكل معقدة في الرؤية الحاسوبية، كالتعرف الدقيق على الكائنات أو إنشاء محتوى جديد.
  15. OpenCV عبارة مكتبة مفتوحة المصدر توفر مجموعة واسعة من الوظائف واللغوريتمات لمعالجة الصور والفيديو. أي تُركز بشكل أساسي على معالجة الصور والفيديو التقليدية، كتصفية الصور بالتنعيم وتحديد الحواف والتشويه، وتحديد الكائنات في الصور بجانب التعرف على الوجوه في الصور ومقاطع الفيديو. بينما PyTorch هو إطار عمل مفتوح المصدر يسمح بتطوير وتدريب الشبكات العصبية لمجموعة متنوعة من المهام، بما في ذلك، التعلم الآلي من خلال تصنيف الصور، والتنبؤ، وتحليل البيانات والرؤية الحاسوبية بالكشف الكائنات، وتتبع الكائنات، والتعرف على الوجه. أي يُركز بشكل أساسي على التعلم العميق، مع إمكانيات متقدمة مثل بناء نماذج تعلم عميق معقدة، أيضًا التكامل مع أُطر عمل أخرى التعلم العميق الأخرى حيث تستطيع دمجه مع إطار TensorFlow.
  16. بشكل بسيط، نقوم بإنشاء عنصر أب كحاوية container ثم بداخله نضع عنصر آخر ليحتوي النص ونضع له إطار من اليسار ثم padding كالتالي: <!DOCTYPE html> <html> <head> <title>Page Title</title> </head> <body> <div class="quote"> <div class="quote_text">"this is important"</div> </div> </body> </html> CSS: .quote{ background-color: rgb(192, 192, 192); padding: 10px; } .quote_text{ border-left: 5px solid purple; padding: 10px; }
  17. لا يوجد ما يسمى الأفضل في البرمجة، بل لكل تقنية استخدامها الأمثل لها، هل تتسائل بخصوص تعلم مجال الواجهة الخلفية، أم بخصوص مشروع لديك تريد تطويره بلغة معينة وما هو المشروع؟ وهل تريد العمل بشركة أم تريد العمل على منصات العمل الحر. وعامًة ستجد إجابات سابقة هنا:
  18. هل تريد العمل في شركة عن بُعد؟ إذن عليك البحث عن وظائف من نوع remote على مواقع مثل linkedIn وIndeed و bayt. أيضًا توجد منصة بعيد التابعة لشركة حسوب والتي توفر وظائف عن بُعد. أو يمكنك العمل على منصات العمل الحر مثل منصة مستقل وبعيد. لكن للأسف وظائف Remote في الشركات أغلبها يتطلب خبرة، حيث أنك بمفردك أي لا يوجد فريق حولك يساعدك وتتعلم منهم، لكن أحيانًا يتم طرح فرص تدريب عن بُعد أي remote internship ابحث عن ذلك في المنصات الخاصة بالوظائف التي ذكرتها في البداية. من الأفضل بناء مشاريع كاملة ثم تكوين معرض أعمال جيد، ومحاولة العمل كمستقل في البداية بجانب التقديم على وظائف Remote في الشركات وتفقد المطلوب وما ينقصك وتعلمه أثناء ذلك لحين الوصول للمستوى المطلوب. لكن لا أنصحك بالعمل عن بُعد في بدايات حياتك المهنية فذلك ضرره أكثر من نفعه أنت بحاجة إلى التواجد ضمن فريق والتعلم واكتساب الخبرات.
  19. ساعتان على الأقل يوميًا وذلك أقل القليل، والأمر ليس بعدد الفيديوهات بل بمقدار الإفادة والاستيعاب، فلا تكتفي بمشاهدة الفيديو فقط بل حاول البحث والتطبيق وحل التمارين أو تنفيذ مشروع بسيط. ولكن إن كان لديك الوقت الكافي، فعلى الأقل 6 ساعات يوميًا ولو زدت كان أفضل، وذلك لمدة 6 شهور لكي تنتهي من مسار برمجي كامل (مثل مطور واجهة أمامية وغيره من المجالات) وتصبح بمستوى Junior في مسارك وذلك بعد تنفيذ مشاريع كاملة، وتلك المدة قد تصل إلى سنة لا مشكلة المهم هو أن مستواك يتحسن يومًا بعد يوم، فالأمر في البداية صعب والكثير يصاب بالإحباط لكن تلك طبيعة مجال البرمجة ليس بالهين يحتاج إلى صبر ومجهود وطول نفس. وإذا كنت مبتدئًا في البرمجة، فقد تحتاج إلى وقت إضافي لفهم المفاهيم الأساسية، فدورة بايثون التي تحتوي على 67 ساعة ليست الوقت النهائي لاكتساب المعرفة الكاملة، وبشكل منطقي، قد تحتاج إلى 4 إلى 5 أضعاف وقت الدورة لتتمكن من استيعاب المعلومات وتطبيقها بشكل جيد. أي في حال قمت بالدراسة لمدة 6 ساعات يوميًا، فستحتاج إلى حوالي 55 يومًا لإكمال الدورة التي تحتوي على 335 ساعة، مما يعني حوالي شهرين وبضع أيام، والدراسة اليومية المنتظمة تساعدك على البقاء على المسار الصحيح والاستفادة القصوى من الدورة.
  20. هل تستطيع كتابة تعليق في الصندوق الخاص بالتعليقات؟ أي تستطيع كتابة نص؟ في حال تستطيع، أرجو طرح تعليق جديد وليس التعديل على التعليق القديم، في حال طرحت التعليق من فترة.
  21. استخدم خاصية streams لعرض جميع الجودات المتاحة للفيديو كالتالي: video = pytube.YouTube(url) streams = video.streams for stream in streams: print(f"جودة الفيديو: {stream.resolution} - دقة الصوت: {stream.abr}") وبالطبع يجب وجود إنترنت من أجل التمكن من تحميل الفيديو.
  22. الدالة get_highest_resolution() موجودة وتستطيع تفقدها في المستند الرسمي وهي تعمل على جلب الفيديو بأعلى دقة متاحة إن وجدت.
  23. في البداية لن يفيدك ذلك، لكن بعد إنهاء مسارك البرمجي وتنفيذ أكثر من مشروع والإعتياد على استخدام GitHub، تستطيع المساهمة في المشاريع مفتوحة المصدر، وذلك سيفيدك بلا شك حيث ستتمكن من اكتساب مهارة قراءة أكواد الآخرين وفهم آلية عمل المشروع وكيف يتم تنظيم الأكواد وهيكلة مجلدات وملفات المشروع. وكيف يتم المساهمة والعمل كفريق من خلال نظام إدارة الإصدارات GIT. وستتفاجيء عند النظر للحزم والإطارات التي تستخدمها في مشروعك بأن الكثير منها مفتوح المصدر وتستطيع المساهمة بها إن كان لديك المعرفة الكافية. وكبداية لكسر حاجز الرهبة، يمكنك المساهمة بشكل بسيط من خلال مساهمات مخصصة للمبتدئين من خلال المواقع التالية: https://up-for-grabs.net https://goodfirstissue.dev
  24. عليك كتابة اسم النموذج بشكل صحيح حيث كتبت user والصحيح هو User لأنك تستورد ذلك: from django.contrib.auth.models import User أي تعديل الخطأ في السطر: user=models.OneToOneField(user,verbose_name=_('user'),on_delete=models.CASCADE) ليصبح: user = models.OneToOneField(User, on_delete=models.CASCADE) أيضًا سيظهر لديك خطأ NameError: name '_' is not defined، بسبب أنك لا تستورد gettext_lazy كالتالي: from django.utils.translation import gettext_lazy as _
  25. لا يوجد ذلك، فلغة HTML هي لغة هيكلية أو وصفية لهيكلة عناصر الصفحة، وما تريدينه يتم من خلال لغة برمجة وهي جافاسكريبت، وقد تم توضيح كيفية فعل ذلك هنا:
×
×
  • أضف...