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

Hassan Hedr

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

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

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

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

    38

كل منشورات العضو Hassan Hedr

  1. نعم ضمن دورة علوم الحاسوب ستتعلم أساسيات البرمجة بلغة بايثون Python وقد تسأل عنها ضمن الامتحان، يفضل اتباع ترتيب مسارات الدورة فهي ستؤهلك لكل ما قد يرد في الامتحان، حاول التركيز على فهم الأفكار ضمن الدورة وتعلمها وكن ماهرًا بها فالهدف لك ليس اجتياز الامتحان بل تطوير مهارات البرمجة لديك وكسب خبرات جديدة
  2. قالب Blade هو ملف PHP عادي أي يمكنك ضمنه الكتابة بلغة php ضمن وسم اللغة التالي: <?php /* PHP لغة */ ?> لتعريف المتغير var$ يمكنك ضمن الملف كتابة التعليمة كالتالي: <?php $var = "value"; ?> يمتلك Blade وسوم Directives كثيرة تسهل عملية كتابة تعليمات PHP ضمن ملفات القوالب، ومنها وسم php@ يماثل في عمله وسوم لغة PHP ويمكنك كتابة نفس عملية التعريف السابقة داخله كالتالي: @php $var = "value"; @endphp
  3. PHP مستخدم أكثر من قبل شريحة الأعمال الصغيرة والمتوسطة وذلك عبر ووردبرس ولارافل لتطوير التطبيقات، في حال كان هدفك الرئيسي البحث عن عمل بها نعم يفضل اختيار PHP
  4. كلا المسارين يتيحان لك اكتساب مهارة تطوير تطبيقات النظم الخلفية Back-End الاختلاف بينهما في اللغة المستخدمة وأطر العمل والمكتبات المتاحة ضمنها: في دورة تطوير تطبيقات الويب باستخدام لغة PHP ستستخدم لغة PHP لتبني التطبيقات وستتعلم أيضًا إطار عمل Laravel وهو إطار عمل واسع الاستخدام، وستتعلم أيضًا التعامل مع ووردبرس لتطوير قوالب وهو أيضًا نظام إدارة محتوى واسع الاستخدام في دورة تطوير التطبيقات باستخدام لغة JavaScript ستستخدم لغة جافاسكريبت بمفردها وضمن بيئة NodeJS وستتعلم العمل ضمن إطار NextJS كما أيضًا باستخدامها ستتعلم استخدام مكتبة React لبناء واجهات صفحات الويب و ReactNative و Ionic لبناء تطبيقات الجوال، و Electron لبناء تطبيقات سطح المكتب كلا اللغتين لديها انتشار واسع واستخدامات عديدة، في حال كان لديك معرفة مسبقة بإحداها ستجد من الأسهل متابعة التعليم ضمن مسار تلك اللغة
  5. المتغير team الممرر للتابع store ضمن المتحكم لا يتم جلبه بشكل صحيح، يجب التأكد من تعريف متغير team ضمن أقواس "{ }" عند تعريف المسار المخصص له كالتالي: Route::post('/team/{team}/edit/player/create',[PlayerController::class,'store']); ^^^^^^ وعند ذكر هذا المسار ضمن ملفات العرض يجب تبديل team بمعرف الفريق المناسب مثلًا كالتالي: <form action="/team/{{ $team->id }}/edit/player/create" method="POST"> ... ^^^^^^^^^^^^^^^ </form>
  6. يرجى إرفاق رسالة الخطأ والشيفرة ضمن الصورة والشيفرة ضمن المشروع المتعلقة بالاستفسار ضمن نص السؤال بشكل نصي
  7. المعامل :? يدعى Elvis Operator وهو اختصار للمعامل الثلاثي Ternary Operator عند حالة خاصة وهي أن القيمة الشرطية وأول قيمة ضمن المعامل هي المتغير نفسه المثال التالي باستخدام المعامل الثلاثي Ternary Operator: $x ? $x : $y; يمكن كتابته نفسه بالمعامل Elvis Operator كالتالي: $x ?: $y;
  8. يمكنك استخدام مكونات لارافل لتحقيق ذلك بطريقتين: استخدام json@ ضمن ملف عرض blade كالتالي: var arr = @json($arr); أو استخدام Illuminate\Support\Js لتحقيق ذلك ويضمن هذا التابع تحويل المحارف ضمن المتغير لتناسب صفحات HTML كالتالي: var arr = {{ Illuminate\Support\Js::from($arr) }};
  9. يتم دوريًا تحديث محتوى الدورات لتشمل آخر الإصدارات من كل من أنظمة التشغيل واللغات والمكتبات المستخدمة، قد يتم ذلك لاحقًا لا يوجد فرق كبير بين تثبيتع على كلا الإصدارين في حال كنت تواجه مشكلة معينة على ويندوز 11 يرجى طرح سؤال عنها وسيتم مساعدتك
  10. يمكنك الحصول على المعرف الخاص بالنموذج مباشرة بعد حفظه كالتالي: $product->save(); $product->id; // المعرّف أو في حال كان حقل المعرف الأساسي للجدول من نوع Auto Increment فيمكنك الحصول على آخر نموذج تمت إضافته عبر الاستعلام التالي: $product = Product::orderBy('id', 'desc')->first(); في هذه الحال يجب التأكد من أن نسخة واحدة من تطبيقك فقط تتعامل مع قاعدة البيانات، لتجنب إنشاء عنصر جديد من قبل نسخة أخرى قبل حصولك على جواب الاستعلام السابق فتحصل على جواب خاطئ
  11. بما أنك تقوم بتعيين ال Cookie ضمن Queue ليتم تعيينها على الرد لاحقًا، يمكنك الحصول عليها باستدعاء التابع queued كالتالي: $cookie = Cookie::queued('cookie_name') يمكنك أيضًا تمرير قيمة افتراضية كمعامل ثانٍ في حال لم يتم العثور على ال Cookie المطلوبة $cookie = Cookie::queued('cookie_name', 'قيمة افتراضية')
  12. يمكنك إرسال الملف باستخدام التابع streamDownload، حيث تمرر له تابع وتقوم داخل التابع بطباعة محتويات الملف بعد جلبه باستخدام file_get_contents كالتالي: return response()->streamDownload(function () { echo file_get_contents('https://www.example.com/image.png'); }, 'image.png');
  13. القيمة absolute للخاصية postion في CSS تجعل العنصر يتموضع في مكان ثابت بالنسبة إلى المبدأ، تعمل تلك الخاصية عبر البحث ضمن شجرة DOM عن أقرب عنصر أب يملك الخاصية position: relative ليتمكن من حساب التموضع الحالي للعنصر، عند تطبيقك يدويًا لتلك الخاصية فأنت تحدد العنصر الأب الذي سيتم التموضع بالنسبة له، أي تكون الإحداثيات التالية تساوي مكان العنصر الأب صاحب القيمة relative top:0; left:0; يمكنك الاستفادة من قراءة المقال التالي:
  14. سيتم التواصل معك في أقرب وقت حال فراغ المدرب، في حال لم يطلب منك تخصيص معين يمكنك تعديل التصميم كما تشاء مع المحافظة على وظائف المشروع
  15. في حال لم يطلب منك المدرب تخصيص الألوان بطريقة معينة ضمن المشروع المقدم فلا مشكلة في اختيارك للألوان بحيث يبقى التصميم واضحًا وسهلًا، تواصل مع المدرب المسؤول عن مشروع التخرج واستفسر منه عن ذلك في حال رغبت.
  16. في حال أردت تخصيص تصميم صفحة 404 فقط يمكنك ذلك أولا بإنشاء ملف عرض blade ضمن المسار التالي ضمن مشروعك: resources/views/errors/404.blade.php وتخصيص تصميمها ومحتواها بما يناسب مشروعك، مثال <h1>404</h1> <p>الصفحة المطلوبة غير موجودة تأكد من صحة الرابط</p>
  17. هناك خطأ لديك أنه عند إضافة الصنف active على الصورة يتم ذلك بشكل صحيح، لكنك لا تقوم بحذف ذلك الصنف من باقي الصور وهذا ضروري حيث أنك تريد لصورة واحدة فقط في كل مرة أن تمتلك الصنف active، يمكنك إضافة السطر التالي قبل عملية إضافة active لمسح هذا الصنف من جميع الصور كالتالي: // مسح الصنف من جميع الصور imgs.forEach(img => img.classList.remove('active')) // إضافة الصنف للصورة المستهدفة if (cercles[i].getAttribute("data-clic") === imgs[i].getAttribute("alt")) { imgs[i].classList.add("active"); }
  18. هل يمكنك إرفاق شيفرة HTML أيضًا حتى يتوضح المثال بشكل كامل مع استفسارك
  19. يرجى تعديل نص السؤال وتبديل الصور المرفقة بالشيفرة الموضحة ضمن الصور بشكل نصي وتنسيقها بتنسيق Code حتى يتم الإجابة على استفسارك
  20. حاول وضع الخاصية writeToDisk ضمن ملف الإعدادات webpack.config.js ضمن الخاصية devMiddleware كالتالي: module.exports = { devServer: { devMiddleware: { ... writeToDisk: true, }, }, ... }; في حال بقيت المشكلة يرجى إرفاق محتوى ذلك الملف وذكر نسخة webpack المثبتة ضمن المشروع
  21. لا يوجد حد أقصى لعدد المدخلات التي تستطيع توفيرها، لكن في حال كانت قيم تلك المدخلات مجتمعة ستشكل حجمًا كبيرًا فبحسب الخادم الوجهة الذي سيتم إرسال البيانات إليه قد يشترط وجود حد أقصى لحجم الطلبات الواردة وإلا سيتم رفض الطلب. في حال لديك امكانية الوصول وإدارة الخادم وكنت تستخدم PHP يجب تعديل قيمة post_max_size في ملف الإعداد php.ini ورفع القيمة إلى قيمة تناسب الحجم المتوقع للمدخلات المرسلة: post_max_size=20M أيضًا يجب التأكد من عدد تلك المدخلات ورفع القيمة max_input_vars إلى العدد المناسب في حال كانت المدخلات كبيرة جدًا max_input_vars=1000 قد تكون كثرة المدخلات مؤشرًا على إمكانية تحسين تصميم التطبيق لتصميم أفضل بعدد مدخلات أقل تبعًا للحالة
  22. تستخدم المنافذ بشكل أساسي لتحديد طرق (بروتوكولات) مختلفة للاتصال مع التطبيقات على الجهاز، يمكنك تخصيص: المنافذ Ports المتاحة على الجهاز (التي يستمع للطلبات الواردة عبرها) نوع البروتوكول على كل منفذ تعديل رقم المنفذ الافتراضي للبروتوكولات لأغراض أمنية، كتعديل رقم منفذ خدمة SSH هناك أرقام منافذ افتراضية معيارية لكل بروتوكول كالمنفذ 80 لبروتوكول HTTP والمنفذ 21 لبروتوكول FTP كمبرمج قد تتعامل مع المنافذ خلال مرحلة التطوير حيث تشغل تطبيقك وتحدد له منفذ مخصص للاستماع للطلبات الواردة إليه عبره، وتقوم باختبار تطبيقك عبر الاتصال مع عنوان جهازك المحلي على ذلك المنفذ، أو قد تتعامل مع المنافذ أثناء عملية نشر وحماية التطبيق على الخادم فتقوم بتعديل أرقام المنافذ الافتراضية أو فتح منافذ محددة ضرورية لعمل التطبيق وإغلاق أخرى يمكنك الاستفادة من قراءة المقالات التالية:
  23. AJAX هي طريقة لإرسال الطلبات من ضمن الصفحة لجلب محتوى أو معلومات إلى الصفحة دون الحاجة لمغادرتها fetch هي واجهة برمجية ضمن المتصفحات تساعد في تضمين إرسال الطلبات وجلب المعلومات للصفحة الحالية API هي الواجهة البرمجية، وإذا كنت تقصد بها هنا الواجهة البرمجية للنظام الخلفي فهي شكل الواجهة التي يمكن إرسال الطلبات إليها وتلقي البيانات منها إلى صفحة الموقع، يمكن اعتبارها مصدر البيانات القادمة و وجهة البيانات الصادرةمن الصفحة المقال التالي يشرح كيفية ارسال البيانات عبر fetch إلى الواجهة البرمجية API والاستفادة من ذلك في تحديث محتوى الصفحة الحالية : وإذا كنت تستخدم JQuery المقال التالي يساعدك في فهم طريقة إرسال طلبات AJAX باستخدام المكتبة
  24. الواجهة interface والصنف المجرد Abstract Class متشابهين لحد كبير الفرق الوحيد بينهما هو احتواء الصف المجرد على تضمين فعلي للتوابع، بينما في الواجهة تكتفي بذكر شكل التوابع ومسؤولية وطريقى التضمين تقع على الصنف الذي يطبق تلك الواجهة استخدام الواجهة من حالات استخدام الواجهات interfaces عند وجود أكثر من تضمين للتابع interface Logger { function log(string $); } // عدة تضمينات للواجهة class DBLogger implements Logger { function log(string $){ // تسجيل ضمن قاعدة البيانات } } class FileLogger implements Logger { function log(string $){ // تسجيل ضمن الملفات } } لتحقيق تعدد الأشكال Polymorphism interface Logger {...} interface Database {...} class MyClass implements Logger, Database { ... } class App{ public __construct(Logger $logger, Database $database){ ... } } // يمكن التعامل مع الصنف نفسه بأكثر من شكل new App(new MyClass(), new MyClass()); استخدام الصنف المجرد استخدم الصنف المجرد: لإعادة استخدام الشيفرة عند استخدام الوراثة عند تطبيق نمط تصميم الاستراتيجية Strategy Design Pattern abstract class BaseClass { abstract function calculate() { $data = $this->getData(); ... } abstract function getData(); } class MyClass extends BaseClass { function getData() { // نمط الاستراتيجية return ... } function myCalculate(){ // إعادة استخدام الشيفرة $this->calculate(); } } يمكنك الاستفادة من قراءة المقالات التالية يمكن تطبيق نفس الأفكار في أي لغة برمجة تدعم النمط كائني التوجه:
  25. لا علاقة لبنية الخوادم السحابية Cloud Server Architecture بذلك بشكل مباشر، يمكن بناء قاعدة بيانات وحدة وتصميمها مع تطبيق ويب يمكن من خلالها فصل بيانات عدة عملاء (تجار) بحيث يظهر وكأن لكل عميل موقعًا مولدًا خاصًا، هذا يضيف مزايا إدارة وسهولة في التطوير على كل المتاجر دفعةً واحدة. يمكن الاستفادة من قراءة الكتاب التالي: البنية السحابية تفيد في إدارة الحاجة للموارد وتركيبها أو التخلص منها عند الحاجة، ما سيرفع من موثوقية الخدمة وكفاءتها، يمكن الاستفادة من قراءة المقالات التالية:
×
×
  • أضف...