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

Mustafa Suleiman

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

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

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

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

    340

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

  1. نوع الوثائق المقبولة هو: جواز سفر: يجب أن يكون ساري المفعول ويحتوي على صورة واضحة لصاحب الحساب واسم كامل مطابق لما هو مُسجل في حساب جوجل بلاي. عقد إيجار: يجب أن يكون ساري المفعول ويُظهر اسم صاحب الحساب وعنوانه الكامل. كشف حساب بنكي: يجب أن يكون حديثًا (صادر خلال 90 يومًا) ويُظهر اسم صاحب الحساب وعنوانه الكامل. ويجب الإنتباه إلى تنسيق الوثيقة فالمطلوب هو ملف PDF واضحًا وقابل للقراءة ولا يتجاوز 5 ميجابايت، وتأكد من أن اسم صاحب الحساب في الوثيقة مطابق لما هو مُسجل في حساب جوجل بلاي.
  2. تقصد أنك كنت تريد إهداء تلك الدورة لأحد أصدقائك لكنك قمت بشرائها عن طريق الخطأ؟ عليك إذن التحدث لمركز المساعدة ووصف ما تريده بالتفصيل. أما إن كانت الدورة لديك بالفعل من قبل فلا تستطيع ذلك، ولفعل ما تريده يجب شراء بطاقة هدية بتكلفة الدورة وإعطائها له، وستجد تفصيل هنا: شراء بطاقة هدية استخدام بطاقة الهدية
  3. يظهر أنه لم يتم تثبيت composer وغير موجود في متغيرات البيئة لديك، من الأسهل إعادة التثبيت لـ composer من خلال الرابط التالي: https://getcomposer.org/Composer-Setup.exe وأثناء التثبيت لا تنسي إختيار مترجم php الموجود في xampp: ومن الأفضل استخدام بيئة laragon بدلاً من xampp فهي أسهل في الاستخدام وتجنبك الكثير من المشاكل. إن لم يتم حل المشكلة سيتعين عليك تعديل إعدادات إضافة composer Companion، لكن لننفذ ما سبق في البداية.
  4. دالة 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(); ثم إعادة توجيه المستخدم إلى الصفحة الرئيسية (/) بعد تسجيل خروجه من النظام.
  5. لديك مشكلة في مسار متغير البيئة لمترجم php لديك، حيث لا يتم التعرف على أمر php، عليك إضافة مجلد php الذي يقع في المسار التالي: c:\xampp\php إلى System variables كالتالي: نبحث عن System variables في شريط البحث بالأسفل في الويندوز، ثم: ثم غلق منفذ الأوامر في vscode من خلال الضغط على أيقونة سلة المهملات وإعادة تشغيله لقراءة متغيرات البيئة الجديدة.
  6. أي أوامر خاصة بالمشروع نقوم بتنفيذها في منفذ الأوامر (التيرمنال) في مسار المجلد الرئيسي للمشروع الذي يوجد به ملف package.json و composer.json
  7. أولاً الـ 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 بنفس الكيفية.
  8. الأمر غير قانوني بالطبع، لكن لمعلوماتك فقط، لتعلم إختراق شيء عليك تعلم كيف تم صنعه صحيح؟ إذن تعلم اللغات المستخدمة في تطوير الألعاب والتعمق في كيفية التلاعب بالقيم بالذاكرة العشوائية، عامًة اللغات المستخدمة للألعاب هما C++ وC#.
  9. بواسطة دالة _ يتم ترجمة الرسالة من ملف اللغة المحدد (lang/en) لأنها تُمرر اسم الرسالة كـ argument، ثم يتم استبدال أي متغيرات موجودة في الرسالة بقيمها باستخدام الدالة __. و @error('email') is-invalid @enderror هو عبارة عن تحقق من صحة حقل البريد الإلكتروني فلو كان هناك خطأ في البريد الإلكتروني الذي أدخله المستخدم، فإن الكلاس is-invalid يُضاف إلى الحقل لتغيير مظهره وإظهار أن هناك خطأ، كما أنه يُعالج الخطأ بوضع <span> يعرض رسالة الخطأ المحددة بواسطة {{ $message }}. ويتعرف على الرسائل الخاصة بالأخطاء من خلال استخدام المجموعة اللغوية المناسبة، أي عند استدعاء دالة @error في النموذج، يُمرر اسم الحقل المرتبط بالخطأ إليها، وتستخدم Laravel هذا الاسم للبحث عن الرسالة المناسبة في ملفات المجموعات اللغوية. مثل خطأ في حقل البريد الإلكتروني تستدعى @error('email')، يبحث Laravel في ملف lang/en للعثور على الرسالة المناسبة لهذا الخطأ. كمثال: 'custom' => [ 'email' => [ 'required' => 'Please enter your email address.', 'email' => 'Please enter a valid email address.', ], ],
  10. أسهل طريقة لمعرفة كيفية تنفيذ ذلك هو بتفقد الكود المصدري لووردبريس نفسه، وستجد الكود المصدري هنا: https://github.com/WordPress/WordPress الأمر سيستغرق وقت بالتأكيد لكنك ستتعلم الكثير أثناء ذلك، ولا تستعجل قم بحصر الجزء الخاص بالقوالب وتفقده، أي لا أقصد قراءة كامل الشيفر لمشروع ووردبريس بالطبع. قم بتحميل المشروع على حاسوبك وابحث عن كلمات مثل theme وتفقد الملفات المجلدات التي بها ذلك.
  11. إذا أردت الأفضل من حيث الأمان بخصوص الذاكرة العشوائية فاستخدم Rust. وبخصوص بايثون فلها مزايا ولها عيوب، فمن ضمن مزاياها أنها تتعامل تلقائيًا مع إدارة الذاكرة باستخدام آلية "جمع القمامة" حيث تحدد الآلية الكائنات غير المستخدمة وتستعيد ذاكرتها، مما يمنع تراكم الذاكرة الميتة وتسريبات الذاكرة. أيضًا توفر أدوات لإدارة الذاكرة المُؤقتة بكفاءة، مثل مكتبة collections.lru_cache، مما يساعد على تقليل استخدام الذاكرة وتحسين الأداء، وتفرض بايثون أنواعًا صارمة على البيانات، وبالتالي منع الأخطاء التي ربما تؤدي إلى تلف الذاكرة أو الوصول غير المصرح به. لكن قد تؤدي الدورات المرجعية إلى تسريبات الذاكرة، حيث تستمر الكائنات في الاحتفاظ ببعضها البعض في الذاكرة حتى بعد انتهاء الحاجة إليها، وتتطلب بعض المهام، مثل برمجة الشبكة أو معالجة البيانات، استخدام الذاكرة المُخصصة، والتي يمكن أن تكون عرضة لأخطاء الذاكرة إذا لم تتم إدارتها بشكل صحيح.
  12. في حال تواصلت مع مركز المساعدة بخصوص ذلك، فأرجو الإنتظار وسيتم الرد عليك بخصوص ما تريده، ولا تقلق بخصوص الرد. إن لم تقم بذلك، أرجو التواصل مع مركز المساعدة.
  13. من خلاله نستطيع تحديد من يمكنه الوصول إلى أجزاء مختلفة من التطبيق وبالتالي يمكن إنشاء حراس مختلفين بمستويات مختلفة من الوصول. وبالتبعية تستطيعي عرض محتوى مختلف للمستخدمين المُصادق عليهم اعتمادًا على الحارس الذي يستخدمونه.
  14. بشكل بسيط: من المفترض أن يكون لديك رابط في أحد عروضك ينتقل إلى صفحة "admin.profile". عند النقر على هذا الرابط، سيتم تنفيذ طريقة info() في وحدة التحكم "AdminController". ستقوم طريقة info() بالحصول على المستخدم المُصادق عليه من الحارس "admin". ستقوم طريقة info() بعد ذلك بعرض "admin.profile" مع إرسال المستخدم المُصادق عليه إلى العرض. حيث أنّ auth() عبارة دالة مساعدة موجودة في Laravel تُستخدم للوصول إلى واجهة المستخدم المُصادق عليها، وguard() هي طريقة على واجهة المستخدم المُصادق عليها تُستخدم لتحديد الحارس الذي يجب استخدامه وهو "admin". أما user() هي طريقة على الحارس تُستخدم للحصول على المستخدم المُصادق عليه. والهدف هو الحصول على المستخدم المُصادق عليه من الحارس "admin" واستخدام المستخدم المُصادق عليه بعد ذلك في عرض "admin.profile". ويُفترض أن يكون لديك حارس مُسمى "admin" مُعرّف في ملف config/auth.php، ويجب أن يكون المستخدم المُصادق عليه مُسجلاً في قاعدة البيانات.
  15. حاول تنفيذ الاستعلام التالي لتحويل قاعدة البيانات إلى UTF8: ALTER DATABASE db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  16. تستخدم NumPy مجموعة متنوعة من الخوارزميات لضرب المصفوفات، اعتمادًا على خصائص المصفوفتين: الخوارزمية الساذجة: هي أبسط طريقة لضرب المصفوفات، وهي مناسبة للمصفوفتين الصغيرة وتقوم بحساب كل عنصر في المصفوفة الناتجة عن طريق ضرب العناصر المتناظرة من المصفوفتين. خوارزمية Strassen: وهي خوارزمية أكثر كفاءة من الخوارزمية الساذجة، خاصة للمصفوفتين الكبيرتين وتتضمن تقسيم المصفوفتين إلى أجزاء أصغر، ثم ضرب كل جزء باستخدام خوارزمية Strassen أو الخوارزمية الساذجة. خوارزمية Winograd: خوارزمية أكثر كفاءة من خوارزمية Strassen في بعض الحالات وتعمل على تحويل المصفوفتين إلى شكل آخر، ثم ضربها باستخدام خوارزمية أكثر كفاءة. في عام 2020، طور Alman و Williams خوارزمية جديدة لضرب المصفوفات تسمى "Alman-Williams" وتُعد الخوارزمية أكثر كفاءة من الخوارزميات السابقة في بعض الحالات، ويعتمد اختيار الخوارزمية الأفضل على خصائص المصفوفتين.
  17. أثناء الاستيراد هل حددت الترميز كالتالي؟ في حال قمت بذلك تأكد من أنّ قاعدة البيانات الترميز الخاص بها هو UTF8 من خلال الضغط على status and system variables من الجانب الأيسر. ثم في خانة البحث ابحث عن Collation وتأكد من أن الترميز بالكامل هو utf8 أيضًا ابحث عن character ثم تأكد من نفس الترميز.
  18. لذلك سنحتاج مكتبة numpy فهي خاصة بمثلك تلك الأمور والعمليات الرياضية المعقدة على المصفوفات. بالطبع عليك تثبيت المكتبة pip install numpy ثم استيرادها كالتالي: import numpy as np وكمثال لنقوم بإنشاء مصفوفتين: A = np.array([[1, 2], [3, 4]]) B = np.array([[5, 6], [7, 8]]) لضرب المصفوفتين نستخدم دالة dot() ونطبع النتيجة: C = np.dot(A, B) print(C)
  19. يجب تحديد الترميز على أنه UTF8 عند الاستيراد، لكن ما هي الطريقة التي تقوم بالاستيراد من خلالها؟ هل من خلال الواجهة أم من خلال استعلام SQL؟
  20. الأمر طبيعي بالفعل على Xcode، ولحل المشكلة عليك استخدام النسخة المجمعة مسبقًا pre-compiled من Firestore iOS SDK. https://github.com/invertase/firestore-ios-sdk-frameworks وستجد أن وقت البناء انخفض بشكل كبير. وذلك بسبب أن النسخة الغير مجمعة مسبقًا من Firestore iOS SDK بها 500+ ألف سطر برمجي تخيلي أن ذلك يتم تجميعه في وقت البناء؟ في ملف ios/Podfile.lock تفقد نسخة Firebase iOS SDK وكمثال هنا هي نسخة 9: PODS: - cloud_firestore (3.2.1): - Firebase/Firestore (= 9.2.0) - firebase_core - Flutter عليك تفقد هل يوجد نسخة مجمعة لذلك الإصدار أم لا وحاليًا متوفر حتى الإصدار 10.21.0. ثم تغيير النسخة في ios/Podfile لتشير للنسخة المجمعة كالتالي: pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '10.19.0'
  21. ربما المشكلة هي أنك لم تقم بحفظ التغييرات عن طريق CTRL + S. وإن استمرت المشكلة أسهل طريقة، هي حذف إضافة Live server ثم إعادة vscode ثم تثبيت الإضافة مرة أخرى. وسيظهر لك زر Go Live بالأسفل عند الضغط عليه سيتم تشغيل السيرفر، ويجب وجود ملف باسم index.html فهو الملف الرئيسي للمشروع لديك، وإلا سيظهر لك نافذة تخبرك بإختيار الملف الرئيسي للمشروع.
  22. بالطبع تستطيع إزالتها ذلك للتأكد من أنك صاحب الموقع بالفعل بعد التأكيد يمكنك حذفها لا مشكلة.
  23. أتفهم قلقك بخصوص ذلك، وبخصوص أنك تريد التقدم للإختبار ففي تلك الحالة يتم مراجعة المشاريع والرد على كافة استفساراتك، في حال لم توفر روابط المشاريع من الأفضل توفيرها لتسريع العملية، ولا تقلق بخصوص الرد فذلك أمر طبيعي عند التقدم للإختبار. شكرًا لتفهمك.
  24. عليك كتابة الإعدادات التالية في .htaccess RewriteEngine On RewriteCond %{QUERY_STRING} id=(.*) RewriteRule ^page.php$ /page-%1.html? [R=301,L] وذك لتحويل الروابط من page.php?id=الاستعلام إلى page-الاستعلام.html بشكل تلقائي. لكن عليك توضيح ما تريده بالضبط لتوفير إعداد أفضل، فإعدادات htaccess ستسبب لك مشكلة في حال كانت غير مناسبة لما تريد تنفيذه.
  25. ما تقصده الفرق بين وحدة string والكائن str في لغة بايثون فوحدة string هي وحدة مدمجة في لغة بايثون تقدم مجموعة من الوظائف للتعامل مع السلاسل النصية وتشمل الوظائف عمليات مثل البحث عن الأحرف أو الكلمات، وتغيير حالة الأحرف، ودمج النصوص، والتحقق من صحة البيانات النصية. حيث تعتبر وحدة string قديمة نوعًا ما، وبدأت وظائفها تندمج مع الكائن str في الإصدارات الحديثة من لغة بايثون. أما الكائن str هو نوع بيانات أساسي في لغة بايثون يمثل سلسلة من الأحرف وتستطيع إنشاء كائن str باستخدام علامات الاقتباس المفردة أو المزدوجة أو باستخدام دالة str() كالتالي: str(3) '3' ويوفر مجموعة من الطرق (methods) للتعامل مع محتوى السلسلة النصية، وتلك الطرق (ميثودز) أكثر حداثة وسهولة في الاستخدام من وظائف وحدة string. وستجد توضيح بالأمثلة هنا: الوحدة string في بايثون الدوال التابعة للكائن str وتم إيقاف استخدام وحدة string في الإصدار 3.9 من لغة بايثون، ولكن لا يزال من الممكن استخدامها في الإصدارات القديمة.
×
×
  • أضف...