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

Mustafa Suleiman

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

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

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

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

    299

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

  1. أولاً الدالة floor غير موجودة في مكتبة C++ الأساسية وعليك تعريفها بواسطة <cmath>. أيضًا أنت تستخدم عامل modulo (%) مع نوع float على الجانب الأيسر وأنواع int على الجانب الأيمن، وذلك غير صحيح لأن عامل modulo يتطلب أن يكون كلا الجانبين من نوع integer، أي تحويل المتغير Seconds إلى int قبل العملية. ويوجد قوس مغلق (}) ناقص في نهاية دالة main. لذا الكود الصحيح هو: #include <iostream> #include <cmath> using namespace std; int main() { float Seconds; float remender; cout << "Enter Number Seconds: \n"; cin >> Seconds; int secperD = 24 * 60 * 60; int secperH = 60 * 60; int secperM = 60; int NumOfD = floor(Seconds / secperD); remender = static_cast<int>(Seconds) % secperD; int NumOfH = floor(static_cast<int>(remender) / secperH); remender = static_cast<int>(remender) % secperH; int NumOfM = floor(static_cast<int>(remender) / secperM); remender = static_cast<int>(remender) % secperM; int NumOfS = remender; cout << "Number of Days: " << NumOfD << endl; cout << "Number of Hours: " << NumOfH << endl; cout << "Number of Minutes: " << NumOfM << endl; cout << "Number of Seconds: " << NumOfS << endl; return 0; }
  2. ستحتاج إلى استخدام إطار Flask أو Django، فتلك الإطارات توفر إنشاء API بكل سهولة، أيضًا يوجد إطار FastAPI مع أدوات مدمجة للتحقق من صحة البيانات. لذا اختر الإطار الذي تريده، وإن المشروع بسيط فاستخدم Flask. والأمر مماثل لكل منهم: حدد نقاط النهاية (endpoints) التي ستعرض وظائف مشروعك. حدد نوع البيانات التي ستستخدمها لنقل البيانات بين العميل والخادم. حدد HTTP methods لعمليات CRUD (إنشاء، قراءة، تحديث، حذف). https://academy.hsoub.com/programming/python/flask/
  3. استخدم ميثود الأسلوب setText() لتحديث نص الـ QLabel ثم تحديث نص الـ QLabel الحالي بقيمة المتغير name_get باستخدام setText() على العنصر القائم بالفعل كالتالي: from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLineEdit, QLabel, QVBoxLayout app = QApplication([]) w = QWidget() w.setWindowTitle('تحديث QLabel') layout = QVBoxLayout(w) l1 = QLabel("الاسم : ", w) layout.addWidget(l1) e1 = QLineEdit(w) layout.addWidget(e1) b1 = QPushButton("Print", w) layout.addWidget(b1) l2 = QLabel("", w) layout.addWidget(l2) def get(): name_get = e1.text() l2.setText(name_get) b1.clicked.connect(get) w.show() app.exec_()
  4. المشروع لديك ممتاز، أحسنت حقًا، التصميم جيد جدًا وبسيط، لكن إن كنت تريد استخدام ذلك المشروع بدلاً من المشروع في المسار أرجو توفير مزايا التعديل والحذف الموجودة في مشروع الدورة فهي غير موجودة هنا. لذا أخبرتك بأن تقوم بتنفيذ المشروع فهناك دائمًا أمور جديدة ستتعلمها أو حتى طريقة جديدة لتنفيذ أمر معين.
  5. الأسئلة الإختبارية لا يتم الإجابة عليها بشكل مباشر. ولكن كمساعدة في تنفيذ ما تريديه، عليك أولاّ تعريف المتغيرات اللازمة مثل name و marks وهما قائمتين، ثم استخدام دالة معينة نستخدمها في بايثون لاستقبال إدخال من المستخدم، ويجب تحويل ذلك الإدخال إلى رقم صحيح وليس نص. ثم نقوم بدفع الاسم والعلامات إلى القوائم، ثم في النهاية نقوم بحساب مجموع العلامات في قائمة marks وطباعتها.
  6. دائمًا الإنسان يخاف مما يجهله، والمستقبل مجهول بالفعل، وبخصوص هيمنة الذكاء الاصطناعي فلا تقلق بخصوص ذلك الأمر يبدوا لك كذلك في البداية لكن عندما تتعلم وتقوم بتنفيذ مشاريع واقعية ومعقدة ستفهم حقيقة الأمر. لكن عليك ذكر تفاصيل أكثر لتقديم نصيحة مفيدة لك، ما هو سنك وفي أي جامعة تدرس وما هي بلدك وما هي ظروفك المادية. على أي حال في حال كنت تدرس بالجامعة فأنصحك بتعلم مجال الـ AI فالمستقبل واعد له، لكن الأمر بحاجة إلى جهد لفترة تصل إلى 3 سنوات لكي تصل إلى مستوى جيد بهذا المجال، أيضًا الرياضيات جزء هام بل هو أساس ذلك المجال وستجد توضيح هنا: ويمكنك إلقاء نظرة وتجربة المجال لفترة معينة قبل تحديد مسارك الجامعي إن كان ذلك متاحًا، وإن لم يكن ذلك متاح لك فالأفضل لك تعلم مجال تطوير المواقع فهو مجال مفتوح وتستطيع الإنتقال منه لأي مجال آخر.
  7. لا مشكلة عزيزي الإختلاف أمر طبيعي بالتوفيق لك.
  8. لا مشكلة في ذلك، تستطيع فتح حسابك من خلال الحاسوب واللاب توب والهاتف. ويجب تجنب الدخول لمشاهدة الدورات من أكثر من 3 أجهزة فذلك قد يعرض حسابك للإيقاف المؤقت لتفقد السبب.
  9. تفقد العنصر نفسه من خلال inspect element هل هناك تنسيقات أخرى متداخلة؟ فالكود لديك ليس به مشكلة أرجو إرفاق مجلد المشروع إن استمرت المشكلة.
  10. كقاعدة يمكن الاستناد عليها، تتراوح مدة دراسة الدورة ما بين 3 إلى 5 أضعاف، وذلك ما بين مشاهدة واستيعاب وتطبيق وبحث ومراجعة. وكمثال مدة ساعات الدورة هي 72 ساعة في 4 تساوي 288 ساعة، ولنفترض أنك تخصص 4 ساعات يوميًا للدراسة فذلك يعني 72 يوم على 30 يساوي شهرين ونصف. وستجد تفصيل أكثر هنا: وبخصوص الإختبار، فستجد تفصيل هنا:
  11. في الدورات يوجد مشاريع متفرقة في مسارات مختلفة للتطبيق على ما تم دراسته وتعلم أمور جديدة. إذا أردتي تمارين على مسار معين أو مجموعة دروس معينة، أرجو ترك تعليق أسفل الدرس وذكر الدروس أو المسار أو المسارات التي تريدي التطبيق عليها وسيتم توفير تمارين لك أو فكرة مشروع.
  12. أرجو تفهم أنك تكتب حلقة تكرار داخل حلقة تكرار، الكود هو نفسه لكن أقصر فقط. ومن حيث الأداء الكود لديك يقوم بإنشاء سلسلة جديدة من "* " في كل تكرار مما يؤدي إلى استهلاك الكثير من الذاكرة في حال كانت النصوص طويلة وليس هنا بالطبع. بينما الذي أشرت إليه يقوم بإنشاء سلسلة واحدة فقط، ثم يقوم بإضافة "*" إليها في كل تكرار، لذا هو أفضل.
  13. بالفعل الكود أفضل من حيث القراءة، لكن ما يحدث في الخلفية هو نفس الكود الذي كتبته.
  14. عليك توضيح هل تريد مجرد تكرار نص ام رسم نجوم بشكل هرمي؟ فالكود الغرض منه القيام بأمر معقد مقارنة بتكرار نص فقط
  15. الألعاب التي تعتمد على سيرفر (ألعاب الآون لاين) لا يمكن اختراقها لكونها تعتمد على البيانات التي يتم جلبها من السيرفر، لذا يجب اختراق السيرفر أولاً وذلك يعني اختراق شركة الاستضافة. لذا تجد أن أغلب الألعاب يتم تهكيرها وتصبح أوف لاين في حال كانت اللعبة لا تحتاج إلى أن تبقى متصلة بالسيرفر. لكن بعض الألعاب أصبحت تستخدم always online DRM أي عليك أن تبقى متصل دائمًا بالإنترنت لكي تستخدم المنتج وهو اللعبة، لذا الأمر يصبح أصعب لإختراق ذلك لكن يتم الإختراق بالطبع بعد فترة. والأمر يتم بطرق مختلفة، مثل استخدام سريال أصلي للعبة وقطع إتصالها بالإنترنت لكي لا تقوم بالتحقق منه في السيرفر ومعرفة أنه مستخدم من قبل. أو يتم تفقد الذاكرة العشوائية واستخدام لغة assembly لتفقد الجزء الخاصة بالحماية ثم تغيير ذلك سواء بكتابة كود لتجاهل ذلك الجزء أو التلاعب به أي reverse-engineer. أو تعديل ملف اللعبة نفسه exe بجانب إمكانية تعديل ملف dll.
  16. لا حاجة للضرب، فالأمر بسيط من خلال حلقة تكرار خارجية وداخله حلقة تكرار أخرى لطباعة النجوم بشكل هرمي، حيث تقوم باستقبال input من المستخدم وتفقد هل الرقم صحيح أم لا كالتالي: let rows = prompt("أدخل عدد الأسطر:"); if (isNaN(rows)) { alert("يجب إدخال رقم صحيح"); } else { for (let i = 1; i <= rows; i++) { let str = ""; for (let j = 1; j <= i; j++) { str += "* "; } console.log(str); } }
  17. نوع الوثائق المقبولة هو: جواز سفر: يجب أن يكون ساري المفعول ويحتوي على صورة واضحة لصاحب الحساب واسم كامل مطابق لما هو مُسجل في حساب جوجل بلاي. عقد إيجار: يجب أن يكون ساري المفعول ويُظهر اسم صاحب الحساب وعنوانه الكامل. كشف حساب بنكي: يجب أن يكون حديثًا (صادر خلال 90 يومًا) ويُظهر اسم صاحب الحساب وعنوانه الكامل. ويجب الإنتباه إلى تنسيق الوثيقة فالمطلوب هو ملف PDF واضحًا وقابل للقراءة ولا يتجاوز 5 ميجابايت، وتأكد من أن اسم صاحب الحساب في الوثيقة مطابق لما هو مُسجل في حساب جوجل بلاي.
  18. تقصد أنك كنت تريد إهداء تلك الدورة لأحد أصدقائك لكنك قمت بشرائها عن طريق الخطأ؟ عليك إذن التحدث لمركز المساعدة ووصف ما تريده بالتفصيل. أما إن كانت الدورة لديك بالفعل من قبل فلا تستطيع ذلك، ولفعل ما تريده يجب شراء بطاقة هدية بتكلفة الدورة وإعطائها له، وستجد تفصيل هنا: شراء بطاقة هدية استخدام بطاقة الهدية
  19. يظهر أنه لم يتم تثبيت composer وغير موجود في متغيرات البيئة لديك، من الأسهل إعادة التثبيت لـ composer من خلال الرابط التالي: https://getcomposer.org/Composer-Setup.exe وأثناء التثبيت لا تنسي إختيار مترجم php الموجود في xampp: ومن الأفضل استخدام بيئة laragon بدلاً من xampp فهي أسهل في الاستخدام وتجنبك الكثير من المشاكل. إن لم يتم حل المشكلة سيتعين عليك تعديل إعدادات إضافة composer Companion، لكن لننفذ ما سبق في البداية.
  20. دالة showLoginForm تقوم بعرض نموذج تسجيل الدخول. وفي البداية يتم إنشاء خدمة جديدة: $service = new Master() ثم الحصول على أنواع المستخدمين $service->types(). بعد ذلك التحقق من وجود حراس متعددين: if ($service->checkMultipleGuards()) { return redirect()->route('home'); } وفي حال العثور على حراس متعددين، يتم إعادة توجيه المستخدم إلى الصفحة الرئيسية. وإن لم يتم العثور على حراس متعددين، يتم إرجاع عرض نموذج تسجيل الدخول: return view('auth.login')->with(['types'=>$types]); مع إرسال قائمة بأنواع المستخدمين ($types) إلى العرض. ثم تأتي الدالة redirectTo والتي تعيد قيمة return '/home' أي تحدد مسار إعادة التوجيه بعد تسجيل الدخول بنجاح لإعادة توجيه المستخدم إلى الصفحة الرئيسية (/home). ثم الدالة username التي تعيد قيمة return 'username'; لتحديد اسم المستخدم الذي سيُستخدم لتسجيل الدخول أي اسم المستخدم الافتراضي هو username. أخيرًا الدالة logout التي تستخدم فئة Auth لتسجيل خروج المستخدم من النظام بواسطة Auth::logout(); وحذف بيانات جلسة المستخدم باستخدام فئة Session: $request->session()->invalidate(); ثم إعادة توجيه المستخدم إلى الصفحة الرئيسية (/) بعد تسجيل خروجه من النظام.
  21. لديك مشكلة في مسار متغير البيئة لمترجم php لديك، حيث لا يتم التعرف على أمر php، عليك إضافة مجلد php الذي يقع في المسار التالي: c:\xampp\php إلى System variables كالتالي: نبحث عن System variables في شريط البحث بالأسفل في الويندوز، ثم: ثم غلق منفذ الأوامر في vscode من خلال الضغط على أيقونة سلة المهملات وإعادة تشغيله لقراءة متغيرات البيئة الجديدة.
  22. أي أوامر خاصة بالمشروع نقوم بتنفيذها في منفذ الأوامر (التيرمنال) في مسار المجلد الرئيسي للمشروع الذي يوجد به ملف package.json و composer.json
  23. أولاً الـ spread operator عبارة عن مشغل يستخدم لفرد عناصر مصفوفة أو كائن إلى قائمة منفصلة ونستخدمه في أي مكان يمكن فيه استخدام قائمة منفصلة. const arr1 = [1, 2, 3]; const arr2 = [...arr1, 4, 5]; console.log(arr2); // [1, 2, 3, 4, 5] أما array.push ببساطة هي طريقة method تابعة للمصفوفات في جافاسكريبت تضيف عنصرًا أو أكثر إلى نهاية مصفوفة. أي نستخدمها فقط مع المصفوفات. const arr1 = [1, 2, 3]; arr1.push(4, 5); console.log(arr1); // [1, 2, 3, 4, 5] وبالتالي استخدام spread operator عام أكثر ومختلف أيضًا، لحالات دمج مصفوفات أو كائنات، إنشاء نسخة جديدة من مصفوفة مع تغييرات طفيفة أو تمرير عناصر مصفوفة كوسيطات لوظيفة. أيضًا نستطيع من خلاله تحديث خواص الكائن لاحظ المثال التالي: const person = { name: "mahmoud", age: 30, }; const updatedPerson = { ...person, age: 31, city: "Cairo", }; console.log(updatedPerson); // { name: "mahmoud", age: 31, city: "Cairo" } لاحظ كيف تم تغيير خاصية age في الكائن الثاني رغم أنها كانت 30 في البداية. وذلك المُشغل نستخدمه في React لتحديث الحالة State بنفس الكيفية.
  24. الأمر غير قانوني بالطبع، لكن لمعلوماتك فقط، لتعلم إختراق شيء عليك تعلم كيف تم صنعه صحيح؟ إذن تعلم اللغات المستخدمة في تطوير الألعاب والتعمق في كيفية التلاعب بالقيم بالذاكرة العشوائية، عامًة اللغات المستخدمة للألعاب هما C++ وC#.
×
×
  • أضف...