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

Adnane Kadri

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

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

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

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

    52

كل منشورات العضو Adnane Kadri

  1. ترويسة رمز token من نوع Bearer تكون وفق السياق التالي: Bearer TOKEN_STRING_HERE انتبه الى وجود فراغ، يحتمل ان يكون ذلك ما يسبب المشكلة. يجب ايضا اضافة الرمز $ لحقن قيمة token في السلسلة النصية الموصوفة. "Authorization": `Bearer ${token }` أما ان كانت المشكلة تتعلق بـ csrf token فيجب عليك استثناء الطبقة الوسيطة التي يتم فيها فحصه من طلبية الـ API لأن هذا الأخير يعتمد بالفعل على JWT authentication وان كان يتم توزيع تطبيق لارافيل لديك كواجهة برمجية تحترم معايير REST فلا حاجة أصلا لحماية من هجمات CSRF بمعنى أنه لا حاجة أصلا من الطبقة الوسيطة المعنية. ولاستثناءها بشكل تلقائي قم بنقل تصريح المسار من ملف web.php الى ملف api.php
  2. بجانب ما اقترح الزملاء، يمكنك استخدام واحدة من اطر عمل اختبار الواجهات الأمامية وأتمتة المتصفحات لأتمتة العملية والتحكم فيها وصيانتها بشكل أكثر نجاعة. فعملية ملئ استمارة أو ضغطة زر أو التوجيه والتأكد من كل سلوك على حدة يتم بشكل مؤتمت وعن طريق الكود. من بين أشهر الأطر على الساحة اطار JEST. فهو إطار اختبار يستخدم في تطوير البرمجيات بلغة جافاسكريبت. يُستخدم على نطاق واسع في اختبار الواجهات الأمامية لتطبيقات الويب والمكتبية مثل React و Vue.js و Angular. فهو يتيح العديد من الوظائف التي تساعد المطورين في اختبار تطبيقاتهم بشكل فعال. في ما يلي مثال بسيط: ان كانت الوظيفة sum موصوفة وفق: function sum(a, b) { return a + b; } فإننا نفترض أن حالة الاستخدام (جمع 1 + 2) سيكون خرجها هو 3. سيكون الاختبار الذي سيحمل توصيف هاته الحالة هو: describe('sum function', () => { test('adds 1 + 2 to equal 3', () => { expect(sum(1, 2)).toBe(3) }) }) وهذا كمثال بسيط فقط، يسع الاطار استعمال توابع أخرى أكثر تخصصية. يوجد أيضا في اطار عمل لارافيل آداة مدمجة باسم Laravel dusk تستخدم لذات الغرض، اذ تتيح للمطورين إنشاء اختبارات بسيطة ومنظمة للتحقق من سلوك تطبيقاتهم. يمكن استخدامها لاختبار العناصر الأساسية مثل النماذج والروابط والأزرار والقوائم المنسدلة وأكثر من ذلك. بالإضافة إلى أنه يمكن للمطورين اختبار العمليات العادية مثل تسجيل الدخول وإنشاء حساب جديد وغيرها. وهي آداة تتكامل بشكل رائع مع PHPunit، فإن كنت معتادا على استعماله فسيكون استعمال Laravel dusk ممتعا ومجزيا كثيرا. انظر المثال وكيف أنه يصف حالة استخدام لعنصر من الواجهة الأمامية فعليا: $browser->visit('/projects/create') ->type('title', 'هذا عنوان لمشروع يتم انشاءه الآن') ->type('description', 'هذا وصف لمشروع يتم انشاءه الآن') ->press('Submit') ->assertPathIs('/projects') ->assertSee('تم بنجاح'); أما ان كنت تقصد بمدى نجاح التصميم مدى جودته، فذلك يعتمد بدرجة أولى على معايير مرئية يفترض احترامها في طريقتك في التصميم، مثل توزيع المسافات البيضاء أو الفراغات أو التناظر وما الى ذلك.
  3. بجانب ما اقترح الزملاء، يمكنك تصريح الخاصية hidden في وسم audio لعمل ذات الفكرة: <audio src="audio.mp3" controls hidden></audio> العنصر <audio> في HTML
  4. لا يتم قبول تسجيله في قاعدة البيانات لأن القيود المفروضة على عنوان البريد الالكتروني واسم المستخدم تفترض أن يكونا فريدين unique وذلك بحسب توصيفك لها في ملف النموذج User.js، أما بالنسبة للمشكلة التي تحدث فجرب تخصيص أسماء الحقول في الكائن المسند لأنموذج User const newUser = new User({ username: newUsername, email: email, password: passwordHash, name: name }) يحتمل أن هنالك مشكلة من الأساس في تسجيل المستخدم أول مرة.
  5. تحدث مثل هاته المشكلة في الغالب عند محاولة تشغيل التطبيق على جهاز أو محاك يحتوي بالفعل مشكلة في عملية توقيع الشهادة الرقمية للتطبيق. ولذلك حاول أولا إضافة مفتاح للتطبيق من خلال الأمر تنفيذ الأمر التالي في طرفية أندرويد استديو لديك: keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000 انتبه الى تنفيذ هذا الامر يكون في مجلد bin في مسار تثبيت JDK الخاص بك وليس في أي مسار، فسيجب التنقل اليه أولا: cd ./android/app/ في حالة استمرار المشكلة، قم بالتحقق من: تفاصيل keystore المستخدم في مشروع الأندرويد، مثل اسم الملف وكلمة المرور واسم المفتاح، فإذا كان keystore غير موجود على سبيل المثال، فيجب انشاءه بطريقة الصحيحة. قم بإعادة بناء مشروع الأندرويد باستخدام أحدث إصدار من أدوات التطوير، أي حاول تحديث جميع المكتبات من خلال android studio وعمل flutter upgrade قم بتشغيل Android Studio كمسؤول (Run as Administrator)،ثم قم بإعادة بناء المشروع. قد يمكنك الاستفادة أيضا من هذا النقاش:
  6. عن نفسي، أحب ضبط أحد البعدين دون الآخر : العرض أو الارتفاع، فيكون الآخر تلقائيا لأنه سيحترم تلقائيا معيار الأبعاد المتزنة aspect ration وهو بشكل مبسط نسبة أحد البعدين من الآخر. فإن كان ارتفاع في الصورة الأصلية يساوي 1000 بكسل وعرصها 500 بكسل فإن نسبة الطول من العرض هي 1/2 ولذلك فإن ضبط الارتفاع كـ 500 بكسل سينتج عنه تلقائيا تخفيض العرض الى 250 بكسل لأن حاصل ضرب 500 في 1/2 هو 250. 500 * 1/2 = 250 القيد الآخر الذي يمكنك فرضه هو بإستعمال الخاصية object-fit اذ يمكن تعيين قيمة "contain" للحفاظ على نسبة العرض إلى الارتفاع الأصلية للصورة والحفاظ على جودتها، أو اسناد القيمة "cover" لتعبئة العنصر بالكامل ولكن بدون تحويل نسبة العرض إلى الارتفاع، وكلاهما يحفظ الصورة من التشتت. استفد أكثر من الأجوبة على هاته الأسئلة: https://academy.hsoub.com/questions/12284-تنسيق-حجم-الصور/
  7. بالطبع فإنه هذا يخضع بدرجة أولى لمسار حفظ هاته الصور في قرص التخزين الخاص بخادمك، فإن كنت تستخدم قرص التخزين المحلي في لارافيل فإنك ستحتاج أولا انشاء الوصلة الرمزية عن طريق تنفيذ الامر: php artisan storage:link ثم بعد ذلك، استعمال الوظيفة asset لتكوين رابط أصول كامل يشير الى مسار الصورة الكاملة. على سبيل: $path = asset($user->avatar); فإن كانت مسارات الصور تخزن في مجلد avatars في مجلد storage/app/public/ وفي قاعدة البيانات كـ: avatars/image_file_name_1.ext avatars/image_file_name_2.ext avatars/image_file_name_3.ext فإن طريق قراءة المسار ستكون وفق السابق: $path = asset($user->avatar); فإن كانت قيمة user->avatar توافق avatars/image_file_name_1.ext فإن المعاد عن الوظيفة asset سيكون السلسلة النصية: https://your_domain.co/avatars/image_file_name_1.ext وهكذا..
  8. كفكرة لتحديد الأحداث حسب الأولوية، يمكنك إضافة حقل خاص بالأولوية في قاعدة البيانات وتعيين قيم لكل حدث بناءًا على أولويته، أو التعامل معها بشكل منفصل لتحديد أهميتها، بمنطق مشابه للعملية التي يتم اعتمادها في حساب نقاط السمعة في اكاديمية حسوب او المساهمات في github مثلا. فعلى سبيل المثال: زود أولوية أو اهمية الحدث في قاعدة البيانات كلما اضيفت 100 مشاهدة جديدة. زود أولولية او اهمية الحدث في قاعدة البيانات كلما اضيف تعليق جديد عنه. زود أولوية او اهمية الحدث في قاعدة البيانات كلما تم تسجيل اعجاب جديد به من طرف زوار الموقع. وهاته كأمثلة فقط، يمكنك التعامل مع التزويد او الانقاص بالقدر الذي تراه مناسبا، او يترجم اهمية هذا الحدث بالنسبة لنوع المحتوى الذي تعرضه أو تقوم بفلترته. ثم سيمكنك ببساطة في الأخير الاستعلام عن هاته الاحداث بحيث تكون مرتبة بناءًا على الأولوية أو وفق حقل الأولوية، حيث يظهر الحدث ذو الأولوية العالية في المقدمة وهكذا. SELECT * FROM events ORDER BY priority ASC أو : $orderedEvents = MyEvent::orderBy('priority' ,'asc')->get();
  9. يحدث مثل هذا السلوك لأن النقرة الأولى يتم فيها تحديث حالة المتغير validMessage الى true كون البيانات صحيحة وبشكل متزامن يتم التحقق من قيمة المتغير validMessage التي هي أصلا false ولا يتم تنفيذ عبارة الشرط أصلا لهذا الأخير. ففي النقرة الثانية تكون قيمة validMessage هي قيمة بوليانية صحيحة ويتم التوجيه بشكل طبيعي. ولتوكيد هاته الجزئية، جرب في الضغطة الأولى ان تكون البيانات صحيحة، ثم قبل الضغطة الثانية اجعل البيانات غير صحيحة ولا تطابق المنطق المتحقق منه في دالة formValidation. ورغم ذلك سيتم التوجيه الى الصفحة الموصوفة. لتلافي مثل هاته المشكلة، ستحتاج التوجيه اما من داخل دالة التحقق او استعمال عائد الدالة في شرط التوجيه، أمثلة صحيحة: const formValidation = () => { const validate = [] if (!user_regex.test(values.username)) { validate.push("Username should be 3-10 characters and shouldn't include ni special character ni numbers ni spaces!") } if (!email_regex.test(values.email)) { validate.push('Invalid email: The email should be like aaa@aa.aa') } if (!password_regex.test(values.password)) { validate.push("Password should be 8-20 characters and include at least 1 letter, 1 number and 1 special character!") } setValidate(validate) if (validate.length === 0) { setValidMessage(true) } return validMessage; } const handleClick = (e) => { e.preventDefault(); const isValid = formValidation() if (isValid) { setTimeout(() => window.open("https://github.com/Saadaoui-Forkan/react-forms/tree/main/responsive_form", '_self'), 1500) } } أو: const formValidation = () => { const validate = [] if (!user_regex.test(values.username)) { validate.push("Username should be 3-10 characters and shouldn't include ni special character ni numbers ni spaces!") } if (!email_regex.test(values.email)) { validate.push('Invalid email: The email should be like aaa@aa.aa') } if (!password_regex.test(values.password)) { validate.push("Password should be 8-20 characters and include at least 1 letter, 1 number and 1 special character!") } setValidate(validate) if (validate.length === 0) { setValidMessage(true) } if (validMessage) { setTimeout(() => window.open("https://github.com/Saadaoui-Forkan/react-forms/tree/main/responsive_form", '_self'), 1500) } } const handleClick = (e) => { e.preventDefault(); formValidation() } وكل منهما صحيح.
  10. يعد استعمال مكتبة jQuery عمليا جدا في كثير من الحالات التي نحتاج فيها اختصار الوقت أو التعامل مع تفاعليات بسيطة الى عادية بشكل مكرر او غزير في صفحات الويب أين يكون استعمال vanilla Javascript أكثر استهلاكا للوقت أو الموارد. ولكن بشكل عام، لا ينصح باستعمالها ان كان استعمالها في المشروع غير كثير، فطلب ملفها قد يأخذ بضع الوقت الذي يمكن استغلاله في طلب موارد أقل حجما وتقوم بتفس الشيء. فإن كنت تستطيع كتابة شيفراتك بشكل مخصص للتعامل مثلا مع فتح نافذة منبثقة أو اغلاق قائمة جانبية أو ما إلى ذلك. أما ان كنت تستعمل جزئيات أخرى منها مثل كائن طلبيات ال Ajax وما إلى ذلك فسيكون الاعتماد عليها خيارا جيدا. وبشأن الفرق بين تضمينها باستخدام رابط cdn او بطلبها كمورد خاص من الخادم الخاص بك فإن الطريقة الأولى هي الأفضل غالبا، وهذا لأن توزيع الموارد باستخدام cdn يعد أفضل من الطلبيات العادية من جهة، ومن جهة أخرى فإن أغلب متصفحات الويب خزنت بشكل مؤقت (في الكاش) محتوى ملف jquery عن طريق cdn في أثناء تصفحها أحد المواقع التي تستعمل مكتبة jQuery فهي مورد متكرر نسبيا بالنسبة لمتصفحات الويب وقد لا تعاود الطلب اساسا وهو الامر الذي سيسرع بطبيعة الحال من اداء الموقع.
  11. اختيار موفق، ومن وجهة نظر شخصية أرى أن أي دورة من دورات الأكاديمية تتكامل بشكل تلقائي مع دورة علوم الحاسوب، لأن هاته الأخيرة تتفرع عنها باقي العلوم والتخصصات. والادراك بالأعم ومن ثم الأخص سيزيد من استيعابك ويعمق ادراكاتك للمفاهيم البرمجية ككل. فضلا عن أنه قد يعطيك مرونة في التبديل بين اللغات أو أطر العمل أو الأدوات لأنك تتعلم الجوهر والأساس. ومثلما أسلف المدرب أسامة، فإنها موجهة أيضا لأولئك الذي لا يمتلكون أدنى خبرة أو معرفة بالمجال ككل. فهي ستقوم بشرح أساسيات علوم الحاسب وأنظمة التشغيل وبنى المعطيات والخوارزميات وما الى ذلك. ومن جهة مقابلة، ستعطيك دورة تطوير واجهات المستخدم حظوظا أكبر في سوق العمل مستقبلا. فأنت ستتعلم تطوير الويب الشامل بفرعيه وبإسهاب وتفصيل واحترافية، وهو الأمر الذي سيزيد من قيمتك وخبرتك. وباختصار، ان كنت لا تأتي من خلفية تقنية (تخصص علوم حاسوب مثلا) فالأحسن دورة علوم الحاسوب. أما ان كنت تملك بالفعل بعض التوطئات في علوم الحاسب فستكون دورة تطوير واجهات المستخدم أفضل لك. وفي كلتا الحالتين، ابدأ في الدورة الأخرى قبل دورة تطوير التطبيقات باستخدام PHP للاستفادة من محتوى الدورة أقصى استفادة.
  12. يختلف سياق شيفرة التحقق من تسجيل الدخول وتوجيه المستخدم لصفحته الشخصية حسب لغة البرمجة التي تستخدمها ونوع قاعدة البيانات التي تستخدمها لتخزين بيانات المستخدمين ومعلومات تسجيل الدخول الخاصة بهم وما الى ذلك. ففي PHP مثلا سيكون الكود مشابها لـ: <?php session_start(); // بدء جلسة لتخزين معلومات تسجيل الدخول if(isset($_POST['login'])){ // التحقق من الضغط على زر تسجيل الدخول // اتصال بقاعدة البيانات والتحقق من تطابق بيانات تسجيل الدخول $username = $_POST['username']; $password = $_POST['password']; $query = "SELECT * FROM users WHERE username='$username' AND password='$password'"; $result = mysqli_query($conn, $query); if(mysqli_num_rows($result) == 1){ // التحقق من توافق بيانات تسجيل الدخول $_SESSION['username'] = $username; // تخزين اسم المستخدم في الجلسة header('Location: profile.php'); // توجيه المستخدم لصفحته الشخصية } else{ echo "خطأ في اسم المستخدم أو كلمة المرور!"; } } ?> وهذا كعينة، سيمكن بالطبع تخصيص الشيفرة وفق ما لديك. انتبه ايضا الى أن المتغير conn الذي يتم استعماله في تنفيذ استعلام MySql هو متغير يفترض ان يعبر عن كائن الاتصال بقاعدة البيانات، يتم عادة تخزين هذا المتغير بملف منفصل يخص الاتصال بقاعدة البيانات واعداده.
  13. من وجهة نظر شخصية، إذا كان هدفك العمل في مجال تطوير البرمجيات بغض النظر عن التخصص فإن تعلم بايثون سيكون مفيداً لك، سواءا في اكتساب نظرة عامة عن المجال او التخصص لاحقا في مجال معينة، لأنها تقريبا لغة تنشط في أغلب مجالات تطوير البرمجيات. أما إذا كنت تريد الاستمرار في تعلم علوم الحاسوب، فيمكنك استكمال الدورة الحالية ومواصلة تعلمها. ولكن إذا كنت تريد تعلم لغة برمجة واحدة فقط لتبدأ العمل فيها، فبايثون هي اختيار جيد للبدء مثلما أشرت. كما أنه من المهم أن تضع خطة تعلم محددة، بحيث تقسم وقتك بين العمل والتعلم والحياة الزوجية. فعلى سبيل المثال لا الحصر، قم بتحديد أهدافك وتحديد وقت معين لتحقيقها، ومن ثم تعلم الجزئيات التي تحتاجها لتحقيق هذه الأهداف. وبشكل عام، فإن تعلم البرمجة يتطلب الصبر والمثابرة، ولكنه يمكن أن يكون مجزياً جداً عندما تتمكن من إنشاء تطبيقات ومواقع وحلول برمجية تلبي احتياجات المستخدمين في المستقبل وفي مسار عملك لاحقا. قد يكون من المفيد جدا الاطلاع على نقاشات على الأكاديمية بهذا الخصوص فهي غزيرة بهذا المحتوى. استعمل بعض الكلمات المفتاحية للبحث عن مواضيع مشابهة مثل: "العمل" أو "التنسيق بين الحياة والبرمجة" .. الخ
  14. بجانب ما اقترح المدربون، يمكنك نمذجة جزئيات هاته الفكرة الى جدولين بقاعدة البيانات: أولهما هو جدول المستخدمين وليحمل الحقول: اسم المستخدم - عنوان بريده الالكتروني - كلمة مروره. ثانيهما هو جدول الأدوار وليحمل الحقول: اسم الدور (طبيب - ممرض .. الخ), يجب أن يميز كل مستخدم يسجل في النظام بدور معين، ولذلك سنحتاج اضافة حقل يميز صفا من جدول الأدوار في جدول المستخدمين. وليكن الحقل او العمود role_id سيمكن بعد ذلك استعمال هاته البيانات في: فحص دور المستخدم المسجل دخوله تصيير الصفحات او التعامل مع التوجيه بشكل شرطي بناءا على هذا الدور فإن كان مثلا المستخدم A طبيبا وقد طلب صفحة البروفايل الشخصي تعرض صفحة doctor-profile.php مثلا وان كان المستخدم B ممرض وقد طلب صفحة البروفايل الشخصي تعرض صفحة nurse-profile.php وهكذا. بالطبع فإن هذا هو التوصيف الأبسط للعملية، قد يمكنك التعامل مع ذلك بشكل أكثر خصوصية، على سبيل اضافة اذونات وصلاحيات مختلفة أو ادارتها هي الأخرى. قد يسهل عليك التعلم والعمل على اطار عمل مثل PHP ذلك، خصوصا مع الكم الهائل للحزم والمكتبات الجاهزة التي تسهل التعامل مع مثل هكذا جزئيات.
  15. تظهر مثل هاته التحذيرات بخصوص اهمال ميزات او وظائف عند استعمال نسخة أقدم من اصدار لارافيل أو اثناء عدم توافقها مع بيئة التشغيل، ولذلك فإنك ستحتاج في الغالب: تحديث اعتماديات composer بما يوافق بيئة التشغيل استعمال اصدار اكثر توافقا من PHP مع مشروعك قم بفتح ملف composer.json وتحقق من اصدارات PHP المطلوبة. وفي الغالب، ستحتاج تحديث مشروع لارافيل لديك إلى نسخ أحدث لتلافي ما قد تحدثه هاته التحذيرات مستقبلا، استعن بأدلة التحديث في توثيقات نسخ لارافيل المختلفة وقم بذلك. قد يمكنك الاستفادة من هاذين السؤالين:
  16. بالنسبة لموضوع تراخيص الجافاسكربت فهذا يعتمد بدرجة أولى على طريقة استعمالك لها أو اي اطار عمل أو مكتبة عليها، فأساس الجافسكربت أو JS CORE يتم تعليقه بالترخيص GNU اختصارا عن General Public License أو GNU / GPL وهو عبارة عن ترخيص برمجيات مجاني يسمح لمستخدميه بتشغيل البرنامج ونسخه وتوزيعه وتعديله طالما أنهم يصدرون أي تعديلات يقومون بإجرائها بموجب نفس الترخيص. بالإضافة إلى هذا النوع، هناك تراخيص أخرى مفتوحة المصدر تُستخدم بشكل شائع لمكتبات وأطر عمل JavaScript ، بما في ذلك ترخيص MIT المشهور. اذ توفر هذه التراخيص بشكل عام صلاحيات ومتطلبات مشابهة مثل GNU GPL، ولكن بشروط محددة مختلفة. فيما يخص سؤالك عن تعلم جافاسكربت دون CSS/HTML فبالطبع يمكن، ولكن أظن أن تعلمهما يسهل تعلم الجافاسكربت ويبسط مفاهيم كثيرة فيها، فهما يبعدانها عن الجانب التجريدي لها. ويعطيانها تفاعلية أكثر تسهل في استيعاب مفاهيم لها او تطبيقها. هذا بجانب احتواء جافاسكربت على تطبيقات واجهة برمجية للتعامل مع المتصفحات ووثائق الويب، الأمر الذي يستدعي تعلمهما لإستدراك هاته الجزئية.
  17. سيمكنك بالطبع ايجاد الكثير من الكتب مثل ما اشار المدرب عمر في تعليق سابق، ولكن عيب طريقة التعلم عن طريق الكتب هو في: افتقار الكتب الى الجانب التطبيقي او صعوبة تضمينه او شرحه. تأخذ الكتب مدة طويلة للتأليف قد تتجاوز المدة التي يتم فيها تحديث المادة العلمية أصلا. تفتقر الكتب الى الجانب التفاعلي، وهو الجانب الذي يسهل تعلم واستيعاب اي مفاهيم تجريدية. تفصيل المعلومات في الكتب وصعوبة تمييز الأهم فالمهم فالأقل أهمية. المادة العلمية المتواجدة في الكتب تعتبر أفضل في تناول مفاهيم أقرب للجانب التنظيري مثل الكتب التي تتناول مواضيع مثل هياكل البيانات وقواعد الشيفرة النظيفة وخصائص جودة البرمجيات. رغم هذا، إلا أنه لا يمنع من وجود كتب جيدة الى ممتازة لتعلم HTML أو CSS. تفحص قسم كتب البرمجة في الأكاديمية.
  18. تأكد أنك تقوم باستيراد وتضمين هذا المكون على نحو صحيح، في مكون App الأب مثلا يفترض أن يكون كـ: import React from 'react'; import FichAxois from './path/to/FicheAxois.jsx'; export function App(props) { return ( <div className='App'> <FichAxois /> </div> ); } يرجى الاشارة ايضا ان كانت تظهر أي اخطاء في نافذة الطرفية console
  19. سؤالك غير واضح، هلا قمت بارفاق صورة كاملة عن المشكلة او نص رسالة المشكلة حتى يمكن معاينتها؟
  20. مرحبا ليث، من الطبيعي والعادي جدا الاحساس بمثل هكذا شعور تجاه مادة علمية بحجم جافاسكربت، فهذا راجع لطبيعتها وطبيعة المجال بدرجة اولى. ولكن ان احسست ان استيعابك لدروس الاساسيات غير مكتمل فسيمكنك اعادة مشاهدتها مع التركيز اكثر، او للاستزادة قراءة اشكالات الطلبة واسئلتهم في قسم تعليقات الطلبة اسفل كل فيديو. ثم ان العمل في مسارات اكثر تقدما مثل مسار تعلم React هو الآخر سيزيد من ترسيخ هاته المعلومات ومن استيعابها على نحو اعمق. ولكن في البداية، سيجب عليك هضم الاساسيات جيدا.
  21. PHP حساسة بشأن حالة الأحرف، أظنك تقصد الاشارة للصنف User بالاسم المكافئ الكامل App\Models\User. حاول تنفيذ الامر: App\Models\User::find(1) عوض الأمر السابق. (انتبه لحالة الأحرف، فـ user ليس هو User) طبعا فإن هذا يقتضي تواجد الصنف المشار اليه في المسار app\Models بفضاء الاسم App\Models. تأكد من ذلك.
  22. يمكنك اضافة الخاصية selected بشكل شرطي تتحقق فيه اولا من ما ان كانت القيمة المسندة لخيار ما هي نفسها الكائنة في الطلب. يمكن ايضا القيام بالأمر عن طريق المرور على عناصر مصفوفة عناصرها هي الخيارات: <select id="class"> <% var options = [ "One", "Two", "Three", "Four", "Five"]; for ( var i = 0; i < options.length; i++ ) { var selected = ( obj.class == i ) ? "selected" : ""; %><option value="<%=options[ i ] %>" <%=selected %>><%=i %></option><% } %> </select>
  23. هذا الكلام غير دقيق، قد يحدث أن تكون هنالك بعض استعلامات SQL التي تأخذ وقتا في التنفيذ أطول من أخرى، ولكن عموما يمكن تنقيح أي استعلام وضبطه وتسريعه. الأمر الذي يعتبر من تفضيلات الاستخدام ومن ضوابط الشيفرة النظيفة.
  24. يمكن القيام بعملية حسابية بسيطة لمعرفة متوسط التقييمات، فيكون المعدل كالتالي: مجموع التقييمات على العدد الإجمالي للتقييمات. فإن كان هنالك 500 تقييم لعملاء مختلفين كل تقييم هو ما بين 1 و 10 فإن المعدل يكون: مجموعها مقسوم على 500 قد يمكن كخطوة إضافية تدوير العدد إلى الوحدة لضبط التقييم كعدد صحيح. تتواجد توابع مثل floor أو ceil في عديد من لغات البرمجة لمثل هذا الأخير.
  25. لا تظهر رسالة الخطأ كاملة، هلا قمت فضلا بالتقاط صورة كاملة؟
×
×
  • أضف...