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

Mustafa Suleiman

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

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

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

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

    365

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

  1. لديك جامعة هارفارد تقدم العديد من الدورات عبر منصة edX حيث تقدم مجموعة متنوعة من البرامج في البرمجة عبر الإنترنت، بما في ذلك: Professional Certificate in Computer Science Professional Certificate in Web Development Professional Certificate in Artificial Intelligence معهد ماساتشوستس للتكنولوجيا MIT يقدم أيضًا مجموعة من الدورات على edX و Coursera: Professional Certificate in Computer Science Professional Certificate in Web Development Professional Certificate in Artificial Intelligence أيضًا الجامعات التالية: جامعة ستانفورد تقدم CS106A: Introduction to Computer Science. جامعة أكسفورد لديها Introduction to Computer Science. جامعة كامبريدج توفر برنامجًا في البرمجة عبر الإنترنت يسمى Introduction to Computer Science. بالإضافة إلى تلك الجامعات، هناك العديد من الجامعات الأخرى: University of California, Berkeley University of California, Los Angeles Cornell University Yale University University of Pennsylvania University of Chicago University of Michigan University of Texas at Austin أي تفقد موقعي Coursera و edX وفي حال لم تجد دورة من الجامعة التي تريدها تفقد موقع الجامعة الرسمي واسم الدورات المذكورة.
  2. شكراً جزيلاً على كلماتك الطيبة، ونبارك لك على تجربتك الإيجابية مع حسوب في تصميم واجهات المستخدم! حالياً، لا يوجد دورة خاصة بـ C# و ASP.net. أكاديمية حسوب تسعى دائماً لتحسين وتطوير محتواها التعليمي، وسنأخذ اقتراحك بعين الاعتبار لتوفير المزيد من الدورات في المستقبل، إذا كنت بحاجة إلى أي مساعدة إضافية أو كانت لديك أي أسئلة، فلا تتردد في السؤال. يمكنك متابعة الدروس والمقالات الخاص بلغة C# في الأكاديمية يوجد أيضًا دروس ومقالات لإطار ASP.NET أيضًا متابعة صفحة آخر التحديثات لمعرفة الجديد في الأكاديمية.
  3. const و final في حقول الفئة، نستخدم لتحديد أن القيمة يجب أن تكون ثابتة أثناء ترجمة البرنامج، أي يجب على القيمة التي تم تعيينها للحقل أن تكون ثابتة أثناء وقت الترجمة، ونستخدم final لتحديد أن القيمة يمكن تعيينها فقط مرة واحدة ولا يمكن تغييرها بعد ذلك، ويمكن تعيين قيمة final في وقت التشغيل (runtime) أو أثناء الترجمة. class Example { static const int myConst = 42; final String myFinalField; Example(this.myFinalField); } ونستخدم static لتحديد أن الحقل ينتمي إلى الفئة نفسها بدلاً من أن يكون ممتلكًا لكل نسخة (instance) من الفئة، ولا يمكن الوصول إلى الحقل الثابت إلا من خلال الفئة نفسها، بمعنى أنه: تنتمي إلى الفئة نفسها بدلاً من كائن معين، وتكون مشتركة بين جميع الكائنات التي تنتمي إلى الفئة. يمكن الوصول إلى الحقول static من أي مكان في التطبيق (على مستوى الفئة). لا يتم الوصول إليها باستخدام كائن محدد من الفئة، بل يمكن الوصول إليها مباشرة باستخدام اسم الفئة. class MyApp { static final String contextKey = "myContextKey"; } مما يعني أن الحقول final و static هي أنواع خاصة من الحقول التي لا يمكن تغييرها بعد إنشائها، والفرق بينهما هو أنَّ الحقول final يمكن الوصول إليها فقط من داخل الكائن الذي تم إنشاؤها فيه، بينما يمكن الوصول إلى الحقول static من أي مكان في التطبيق. أما مصطلح "السياق" فهو طريقة لتخزين البيانات والمتغيرات التي يمكن الوصول إليها من أي مكان في التطبيقاتـ ويستخدم السياق بشكل شائع لتخزين بيانات التطبيق المشتركة، مثل حالة التطبيق أو إعداداته. وبخصوص super فهى تستخدم للإشارة إلى الفئة الأم (الفئة التي يتم تمديد أو توسيع الفئة الحالية منها)، والخاصية super.key هي خاصية خاصة بالمكون المخصص، وتُرجع تلك الخاصية مفتاح المكون الأب للمكون الحالي، ونستخدمها لتعيين مفتاح المكون الحالي إلى مفتاح المكون الأب. class MyComponent extends StatelessWidget { @override Key get key => super.key ?? UniqueKey(); }
  4. الفكرة هي أنك بحاجة إلى تعديل تنسيق الـ Header عند عمل سكرول بنسبة معينة، ثم نقوم بإضافة كلاسات أخرى أو تنسيقات، فمثلاً نستخدم الكود التالي: const className = "colorful"; const scrollTrigger = 60; window.onscroll = function() { if (window.scrollY >= scrollTrigger) { document.getElementsByTagName("header")[0].classList.add(className); } else { document.getElementsByTagName("header")[0].classList.remove(className); } }; طبق نفسك الفكرة بإضافة وحذف الكلاسات أو إضافة تنسيقات، فالكود السابق يقوم بإضافة كلاس colorful والذي يحمل التنسيق التالي في ملف css: .colorful { background-color: pink; box-shadow: 0 3px 5px 0.3px rgba(0, 0, 0, 0.1); } .colorful a { color: #0e436b; }
  5. الأمر بسيط، كل ما أنت بحاجة إلى فعله هو تنفيذ الأمر التالي في منفذ الأوامر PowerShell: Set-ExecutionPolicy RemoteSigned وسبب المشكلة هو أن تنفيذ البرامج النصية (السكريبتات) معطل على نظامك، بمعنى أن PowerShell يمنع تشغيل البرامج النصية. حيث يتم تعيين سياسة التنفيذ الافتراضية لـ PowerShell على Restricted، والتي تمنع تنفيذ البرامج النصية لأسباب أمنية، ولتمكين تنفيذها، تحتاج إلى تغيير سياسة التنفيذ إلى مستوى أكثر تساهلاً، وهناك ثلاث سياسات تنفيذ رئيسية في PowerShell: Restricted: السياسة الافتراضية، والتي تمنع جميع عمليات تنفيذ البرامج النصية. RemoteSigned: تسمح بتنفيذ البرامج النصية التي تم إنشاؤها محليًا والبرامج النصية الموقعة عن بُعد من الناشرين الموثوق بهم. Unrestricted: تسمح بتنفيذ جميع البرامج النصية دون أي قيود.
  6. حاول الإعتماد على عبارة NOT IN لاستبعاد الطلاب الذين يحتوون على مواد معينة، ولكن يجب عليك تكوين الاستعلام بشكل صحيح، فأنت تستخدم IN لتحديد مجموعة من المواد المطلوبة، و NOT IN لاستبعاد مجموعة من المواد، لذا عليك استخدام AND لربط الشروط بشكل صحيح كالتالي: $sh=mysqli_query($con, "SELECT id_trainee, name, specialty, gpa FROM `tr1` WHERE id_trainee LIKE '%4432%' AND ramz IN ('داعم - 221', 'انجل - 204', 'داعم - 151', 'اسلم - 101', 'شبكا - 121') AND ramz NOT IN ('حاسب - 102', 'انجل - 102', 'انجل - 101', 'حاسب - 101', 'حاسب - 121') GROUP BY id_trainee HAVING COUNT(DISTINCT ramz) = 5"); تأكد من وضع AND بين شروط الـ IN و NOT IN. تستطيع أيضًا استخدام تعبيرات LIKE لإنشاء استعلام أكثر فاعلية، لاستبعاد الطلاب الذين لديهم أيًا من المواد التالية: SELECT id_trainee, name, specialty, gpa FROM `tr1` WHERE id_trainee LIKE '%4432%' AND (ramz LIKE '%داعم - 221%' OR ramz LIKE '%انجل - 204%' OR ramz LIKE '%داعم - 151%' OR ramz LIKE '%اسلم - 101%' OR ramz LIKE '%شبكا - 121%') AND NOT (ramz LIKE '%حاسب - 102%' OR ramz LIKE '%انجل - 102%' OR ramz LIKE '%انجل - 101%' OR ramz LIKE '%حاسب - 101%' OR ramz LIKE '%حاسب - 121%') GROUP BY id_trainee HAVING COUNT(DISTINCT ramz) = 5; ونتيجة الاستعلام هي نفسها مثل السابق، ولكنه يستخدم تعبيرات LIKE بدلاً من تعبيرات IN.
  7. في حال أن المحاكي لديك هو بإصدار 33 أو أعلى، فبدءًا من ذلك الإصدار تم إيقاف دعم HAXM، وHAXM هو اختصار لـ Intel Hardware Accelerated Execution Manager، وهو محرك يوفر تسريعًا للأجهزة للمحاكيات الافتراضية على أجهزة الكمبيوتر التي تعمل بمعالجات Intel، حيث يسمح ذلك للمحاكيات بالعمل بشكل أسرع وأكثر سلاسة، مما يحسن تجربة تطوير تطبيقات Android. وحاليًا عليك تثبيت Android Emulator hypervisor driver ويمكنك ذلك من خلال الخطوات التالية: افتح Android Studio. في شريط الأدوات، انقر فوق Tools > Android > SDK Manager. في علامة التبويب SDK Tools، حدد مربع الاختيارAndroid Emulator hypervisor driver. انقر فوق Apply > Install.
  8. أولاً تأكد من تطبيق خاصية box-sizing بقيمة border-box كالتالي: *{ box-sizing: border-box } ثانيًا سبب المشكلة، هو أنك قمت بتحديد الطول بنسبة 100% من الـ container وهو 600px ولذلك طبيعي أن يكون طول المحتوى بالداخل هو 600 لكن يوجد عنصر nav والذي يشغل مساحة من ذلك الطول وبالتالي تجد أن content خارج الـ container بسبب عدم وجود مساحة كاملة للـ 600px. والحل هو تحديد طول لكل من المحتوى والـ nav بنسبة 90% و10% كالتالي: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <style> * { box-sizing: border-box; } body { margin: 0; padding: 0; height: 100vh; } .container { height: 600px; border: 2px solid black; background-color: black; } nav { height: 10%; background-color: rgb(144, 209, 230); padding: 10px; } .content { height: 90%; border: 2px solid red; background-color: orange; } </style> </head> <body> <div class="container"> <nav> <!-- محتوى الناف --> </nav> <div class="content"> <!-- محتوى الكونتنت --> </div> </div> </body> </html>
  9. بالطبع يمكنك الدفع من أي مكان من خلال باي بال أو من خلال البطاقة الإئتمانية (بطاقة debit أو credit فقط)، وستجد هنا شرح لكيفية الإشتراك: كيفية الإشترك بالدورات وستجد هنا تفصيل لكيفية الوصول للدورات بعد الإشتراك: كيف أصل للدورات التي اشتركت بها
  10. يمكنك تعلم بايثون ومحاولة تنفيذ الأمر وستجد شروحات على اليوتيوب، لكن في حال وجود Captcha فقد لا تستطيع تنفيذ الأمر بناءًا على مستوى الصعوبة الخاصة بها ونوعها. وإليك مثال والحلول المقترحة: والخيار الثاني هو طرح المشروع على مستقل وإختيار مبرمج جيد للقيام بالأمر مع سابقة أعمال تثبت قدرته على ذلك.
  11. عامًة إذا كنت تقصد التصميم فستجد مواقع توفر تصميمات جاهز لكي تستلهم تصميمك منها: Pinterest Dribbble mobbin UX CRUSH Screen lane uplabs وستفيد المقالات التالية: أما بالنسبة للمشاريع، فيمكنك البحث على اليوتيوب عن flutter projects أو استبدل flutter بالإطار أو اللغة التي تستخدمها، وهكذا، وأيضًا ستجد على GitHub مشاريع جاهزة يمكنك تجربتها والتعلم منها.
  12. في السياق البرمجي، المعاملات (أو الباراميترز) تستخدم لتمرير القيم إلى دوال أو أحداثث، وتستطيع استخدام المعاملات لتمرير القيم من العناصر في صفحة HTML إلى الدوال في ملف السكريبت. المثال الأول: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Parameter and Input Field Binding</title> </head> <body> <label for="paramField">Parameter:</label> <input id="paramField"></input> <button type="submit" onclick='updateParameter()'>Submit</button> <script src="script.js"></script> </body> </html> JS: // script.js // Function to update the parameter field function updateParameter(value) { const data = document.getElementById("paramField").innerHTML = value; console.log(data); } قمت بتعريف دالة updateParameter ولكنها تتوقع معامل حيث حددت value كمعامل، ويجب تمريره لأنك تستخدمه في الدالة بوضع قيمة الحقل الذي يحمل id باسم paramField لتساوي معامل value، لذلك عليك تمريره كالتالي: <button type="submit" onclick='updateParameter("understand")'>Submit</button> الآن، عند النقر على زر "Submit"، ستقوم الدالة updateParameter بتحديث المحتوى في عنصر الإدخال paramField بالقيمة "understand". المثال الثاني: لم تقم بتعيين أي معامل هنا في الدالة: // script.js function submitForm() { var inputValue = document.getElementById("inputField").value; alert("Submitted value: " + inputValue); } بل تقوم باستخراج القيمة التي تم كتابتها في الحقل الذي يحمل id باسم inputField ثم تقوم باستخدامها في دالة alert.
  13. البرمج لا تتطلب مواصفات مرتفعة كل ما تحتاج له هو 16 جيجابايت أو 8 كحد أدنى من الذاكرة العشوائية، وهارد SSD بمساحة 120 جيجابايت كحد أدنى، ومعالج core i3 أو ما يماثله من AMD كحد أدنى. وبالطبع كلما كانت المواصفات متوسطة إلى مرتفعة كلما كان ذلك أفضل وتمكنت من استخدام برامج تحتاج إلى مواصفات جيدة مثل برنامج الفوتوشوب. وبالنسبة لسؤالك، فما بين الجهازين المذكورين، فمن حيث الأداء، فبالطبع آيباد اير M1 أفضل، فيحتوي على معالج أقوى مما يجعله قادرًا على التعامل مع المهام الثقيلة بشكل أفضل. لكن في حال أنك بحاجة إلى نظام الويندوز فليس أمامك خيار سوى Surface Pro 8.
  14. هل المقصود تطبيقات للهاتف أم مشاريع ويب، أي تريد تصميم واجهة مستخدم لتقوم بتنفيذها أم تريد فكرة مشروع؟
  15. في جانب الخادم استخدم split كالتالي: const token = req.headers.authorization.split(" ")[1]; وذلك لاستخراج التوكن (Token) من رأس الطلب (headers) في خادم Node.js، وذلك النمط يأتي من استخدام توقيع (Bearer) لتمييز التوكن في رأس الطلب. بمعنى أنه في معظم حالات استخدام JWT (JSON Web Tokens) كتوكن للمصادقة، يرسل التوكن في رأس الطلب باستخدام مفهوم "Bearer Token"، ويكون الرأس كالتالي: Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c لذلك نستخدم req.headers.authorization.split(" ")[1] لاستخراج الجزء الثاني (index 1) من قيمة Authorization، وهو التوكن نفسه، ويتم فصل الجزء الأول (index 0) بواسطة الفراغ (space).
  16. أولاً الأمر لا يجوز، أتفهم رغبتك في الحفاظ على ابنك من المخاطر التي تحيط به، وهناك طريقة أفضل لفعل ذلك وهي حجب المواقع الإباحية من خلال تعديل إعدادات الـ DNS في الويندوز بالـ DNS الخاص بـ cloudflare التالي لحجب تلك المواقع: 1.1.1.3 1.0.0.3 وإليك الخطوات قم بالبحث في شريط البحث بالأسفل في الويندوز عن Network Connections ثم قم بالنقر عليها كما بالصورة: سيظهر أمامك عدّة شبكات اختر منها الذي يظهر أسفلها اسم كرت الشبكة لديك مثل التالي واضغط عليه بزر الفارة الأيمن ثم اختر properties. ستظهر لك نافذة ابحث بها عن ipv4 وقم بالنقر مرتين علي ذلك الخيار: وستظهر لك نافذة أخرى كالتالي، فقم بها بالضغط على use the following DNS server ثم قم بكتابة الـ DNS الذي ذكرته لك في الخانة الأولى ثم الثاني في الخانة الثانية كالتالي ثم اضغط على ok: الآن قم بتكرارنفس الأمر بالنسبة لشبكة الواي فاي حيث ستجد شبكة مماثلة وأسفلها اسم كرت الشبكة، فما قمنا به في البداية هو للشبكة الخاصة بكابل الإنترنت السلكي، لكون اللاب توب متاح بها الخيارين.
  17. أتفهم الصعوبة التي تواجهها ونقدر ذلك في الأكاديمية، ومجهود يشكر صراحًة منك في متابعتك للدورة رغم الصعوبات التي تواجهها، سأقوم بإيصال إقتراحك للقسم الخاص بالدورات في أكاديمية حسوب، لكن هناك صعوبة في توفير تلك الميزة بسبب أنها قد تؤدي إلى مشاهدة الدورات بطريقة غير مشروعة، وستجد تفصيل أكثر عن ذلك هنا: وفي الوقت الحالي يمكنك مشاهدة الدورة بجودة أقل مثل 540p خارج المنزل مثلاً.
  18. أولاً Access هو برنامج لإدارة قواعد البيانات، وهو مصمم خصيصًا لإنشاء وإدارة قواعد البيانات، ويوفر مجموعة واسعة من الميزات التي تجعل من السهل إنشاء قاعدة بيانات قوية وقابلة للتوسع، والإختيار يكون بناءًا على: 1- حجم البيانات إن كانت حجم البيانات لديك صغيرة إلى متوسطة، ولا تحتاجين إلى العديد من الجداول والعلاقات المعقدة، فيمكن استخدام Excel بسهولة. أما إن كانت البيانات كبيرة وتتطلب قاعدة بيانات قوية مع علاقات معقدة، فهنا يعتبر Access خيارًا أفضل. 2- هيكل البيانات في حال كانت البيانات مرتبطة بشكل كبير وتحتاج إلى علاقات بين مجموعات متعددة من البيانات، فيقدم Access هيكل قاعدة بيانات يمكن تنظيمه بشكل أفضل. على الناحية الأخرى إن كانت البيانات مستقلة وغير مرتبطة بشكل كبير، فيعتبر Excel كافيًا. 3- مرونة التحليل عند الحاجة إلى تحليل بياناتك بشكل متقدم أو إجراء عمليات معقدة، فيوفر Excl مجموعة واسعة من الوظائف والأدوات للتحليل. وعند الحاجة إلى تقارير متقدمة أو مرونة أكبر في تحليل البيانات، فيوفر Access استعلامات SQL وتقارير متقدمة. 4- واجهة المستخدم في حال يتعين عليك تقديم واجهة مستخدم بسيطة وسهلة الاستخدام، فهنا يعتبر Excel خيارًا جيدًا. إما إن كنتي بحاجة إلى نظام يتيح للمستخدمين إدخال واستعراض البيانات بشكل أكثر تعقيدًا، فيقدم Access نماذج قابلة للتخصيص بشكل أفضل. 5- الأمان Access يوفر مستويات أمان أعلى ويمكنك تحديد حقوق الوصول لكل مستخدم. Excel أقل أمانًا إذا لم يتم التحكم في حقوق الوصول بشكل صحيح.
  19. من المفترض أنها مجانية ربما تغير الأمر، عن أي كورس منهم تتحدث؟
  20. يمكنك مشاهدة الدورة في الحال فور الإشتراك، وتستطيع الوصول للدورة من خلال تبويب دوراتي كما بالصورة: أيضًا الدورة متاحة لك مدى الحياة وأي تحديثات تتم على الدورة ستحصل عليها مجانًا.
  21. بالطبع فقد هناك الكورسات التالية ولكن هي بالإنجليزية: كورس الذكاء الاصطناعي من جوجل (Google AI Education) الذكاء الإصطناعي - شهادة الماستر من جامعة كولومبيا (ColumbiaX's Artificial Intelligence MicroMasters) كورس الذكاء الاصطناعي للجميع (AI For Everyone) شهادة الذكاء الإصطناعي من جامعة ستانفورد (Machine Learning AI Certification) وأفضل كورس في القائمة هو الأخير (Machine Learning AI Certification). وستجد شرح مفصل أكثر هنا بخصوص الذكاء الاصطناعي ومصادر لتعلم الرياضيات:
  22. بالفعل، خوارزمية أقصر وقت متبقي أولاً هي الأفضل بسبب أنها تعطي الأولوية للمهام التي لديها أقل وقت متبقي، مما يؤدي إلى تقليل وقت الانتظار للمهام، أما خوارزمية الجولة روبن، فهي تعطي الأولوية للمهام بالتساوي، مما يؤدي إلى زيادة وقت الانتظار للمهام التي لديها وقت متبقي طويل، أما خوارزمية الأولوية الاستباقية، فهي تعطي الأولوية للمهام بناءًا على تقدير زمن الاستجابة، مما قد يؤدي إلى زيادة أو نقصان وقت الانتظار للمهام، اعتماداً على مدى دقة التقدير. وبالتالي: في حال كانت الأولوية الرئيسية هي تقليل وقت الانتظار، فإن "أقصر وقت متبقي أولاً" يبدو الخوارزمية الأفضل، حيث يكون متوسط وقت الانتظار أقل. عندما تكون الأولوية هي تقليل وقت الاستجابة، فإن "أقصر وقت متبقي أولاً" أيضًا هو الخوارزمية الأفضل، حيث يكون متوسط وقت الاستجابة أقل. الأولوية الاستباقية تأتي بمتوسط وقت انتظار (TAT) ووقت استجابة (بالوزن) أعلى بقليل من "أقصر وقت متبقي أولاً"، ولكن تلك الخوارزمية مناسبة عندما تكون الأولوية هي ضمان استجابة سريعة للمهام، حتى لو كان ذلك على حساب بعض زيادة في وقت الانتظار.
  23. في حال استمرت المشكلة على الهاتف وعلى متصفح آخر، فذلك يعني وجود مشكلة في إتصال الإنترنت لديك، حاول إعادة تشغيل الراوتر وتركه لمدة 10 دقائق من أجل تغيير الـ IP الخاص بك، ثم أعد تشغيله، وفي حال استمرت المشكلة حاول تغيير إعدادات الـ DNS في نظام الويندوز لتصبح كالتالي: 1.1.1.1 1.0.0.1
  24. تستطيع تحميل ملف المشروع إلى حاسوبك من خلال الضغط على File (ملف) ثم اختر حفظ إلى حاسوبك (save to your computer) كالتالي:
  25. هل المقصود هو دورة علوم الحاسوب، في حال كان كذلك، قم بوضع المشاريع الخاصة بكل مسار في مجلد منفصل ثم ضع تلك المجلدات في مجلد واحد باسم الدورة وليكن hsoub cs، ثم قم برفعه على GitHub، وبالطبع عليك وضع ملفات المشاريع الخاصة بسكراتش في مجلد المسار الخاص بها.
×
×
  • أضف...