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

Adnane Kadri

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

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

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

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

    52

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

  1. قم بفحص مدخلات المستخدم عن طريق الاستمارة ثم قم بتنفيذ استعلام قاعدة بيانات لجلب ذلك العدد ثم قم بتنفيذ عملية الطرح ببساطة. اليك مثالا: <form action="{{ route('form.submit') }}" method="POST"> @csrf @method('POST') <input type="number" name="number" /> <button type="submit">submit</button> </form> ثم قم بتعريف المسار المعني: Route::post('/form/submit', function(Request $request){ $number = $request->number; $storedNumber = MyModel::first()->my_number; $result = (int) $number - $storedNumber; // بقية الكود })->name('form.submit'); قد تحتاج كخطوة اضافية فحص ادخال العدد والتأكد من أنه عدد بالفعل. Route::post('/form/submit', function(Request $request){ $request->validate(['number' => 'integer']); $number = $request->number; $storedNumber = MyModel::first()->my_number; $result = (int) $number - $storedNumber; // بقية الكود })->name('form.submit');
  2. بجانب ما اقترح مصطفى يمكنك أيضا التعديل على قيمة متغير الحالة notes - خصوصا وأنها قيم اختبارية: const [notes, setNotes] = useState([ { id: 1, text: "test", date: (new Date()).toLocaleString(), }, { id: 2, text: "test", date: (new Date()).toLocaleString(), }, { id: 3, text: "test", date: (new Date()).toLocaleString(), }, ])
  3. انتبه إلى أن هنالك خطأ في التعرف على عنصر Modal المرافق، إذ يتم تصريحه كـ: <div class="card modal fade" id="Model" في حين يتم ارفاقه للخاصية data-bs-modal كـ: <div class="text" data-bs-toggle="modal" data-bs-target="#Modal"> تأكد من جعلهما مماثلين حتى يمكن التعرف عليها. أيضا لا تنسى مراجعة هيكل عنصر model في نفسه، لا يبدوا أنه يتم توصيفه بشكل صحيح. ان كانت المشكلة تتعلق بدورة ما، يقترح نشر السؤال في قسم تعليقات الطلبة المرافق للدرس وسيتم المتابعة معك هنالك.
  4. مراحل هندسة البرمجيات والتي يختصر لها بـ SDLC اختصارا عن Software Development Life Cycle غالبا ما تتبع منهجا موحدا وهو كالتالي: البحث والتخطيط Planning & Analaysis: ويتم فيه هاته المرحلة تحليل متطلبات العميل وفهمها وتحديد مختلف احتياجات المشروع من تجهيزات بشرية ومادية وكذلك بناء مخططات حالات الاستخدام وقصص المستخدمين وما الى ذلك .. التصميم Design: في هاته المرحلة يتم بناء مختلف واجهات الاستخدام وتخريجها كتصميم UI/UX .. التطوير Development: يتم تسليم مختلف التصاميم والمخططات لفرق التطوير للعمل على التطبيق وبناءه ويشمل ذاك تطوير الواجهات الأمامية والخلفية. الاختبار Testing: يتم تقديم ناتج المرحلة السابقة لفرق الاختبار لاختبار مختلف حالات الاستخدام التي تم تحديدها في المرحلة الأولى، ويتم التأكد من استيفاءها للغرض إما بشكل مؤتمت Automated أو بشكل يدوي من وجهة نظر المستخدم النهائي end user perspective .. النشر والتكامل Deployment & Integegration: يتم هاهنا نشر التطبيق والتأكد من تكامله مع مختلف البيئات المستهدفة التي سينشط فيها. الصيانة والمتابعة Maintenance: بعد نشر التطبيق يتم متابعته بشكل دائم لصيانة أي أعطال أو التخلص من أي مشاكل .. وقد يتم تقديم بعض هاته المراحل أو دمجها في بعض الأساليب البرمجية من مثل أسلوب TDD أين يتم دمج مرحلة الاختبار مع التطوير أو BDD أو غيرها .. وكل ذاك بحسب مرونة المشروع أو بحسب النهج المستخدم مثل نهج Agile..
  5. تأكد من أن الصفحة التي تعرض الملف تقوم بعرضه لكي تعمل خاصية download بصورة صحيحة. إليك مثالا: download.php: <?php $file = "http://example.com/". $_GET['file']; header("Content-Description: File Transfer"); header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=\"". basename($file) ."\""); readfile ($file); exit(); ?> فيكون الرابط: echo '<p><a href="http://example.com/download.php?file='.$filename.'" target="_blank" download>اضغط هنا للتحميل ملف النسخ الأحتياطي</a></p></h3>';
  6. أظن أن مثل هاته الفكرة موجودة بالفعل في مفاهيم مثل شجرة دوم الافتراضية Virtual DOM وما تقوم به مكتبات وأطر الجافاسكربت الحديثة بالفعل، فهي تقوم بتصيير محتوى HTML وهيكلته وضبط تنسيقاته من خلال تنفيذ أكواد جافاسكربت على المتصفح. ولذلك فهي ليست بالفكرة الجديدة. انتبه أيضا الى عيوب هاته الفكرة من حيث أن ناتج تصيير العناصر لن يتم أرشفته على محركات البحث، فمحركات البحث لن تستطيع الوصول لمحتوى جافاسكربت، فهو محتوى يتم عرضه بعد فتح الصفحة وليس عند طلب المورد من الخادم. أيضا انتبه إلى هدفك وما القيمة التي ستقدمها من خلال القيام بهاته الفكرة، ولما يجب عليك ذلك بدل كتابة شيفرة HTML و CSS قياسية. تأكد من أن أهدافك تتطلب هاته الفكرة.
  7. للنظر ما ان كنت جاهزا لامتحان الدورة وأخذ الشهادة أو لا تأكد من أنك تستوفي شروط الامتحان، والتي هي: إتمام أربعة مسارات تعليمية على الأقل التطبيق العملي مع المدرب، والاحتفاظ بالمشاريع العملية الناتج رفع المشاريع على حسابك على GitHub وفي حال ما كان ذلك، يمكنك التقدم الى الامتحان وطلب ذلك، يمكنك الإطلاع تفاصيل أكثر من هنا: الامتحان والحصول على الشهادة
  8. أغلبية مصطلحات البرمجة وهندسة الحاسوب تحمل مفاهيم دلالية تعبر عما تعنيه بالضبط، فكلمة Entity تترجم لكيان في حين أن كلمة Object تترجم لكائن، ولذلك فإن Entity في قواعد البيانات عادة ما يمثل شيئا محددا في العالم الحقيقي مثل شخص، مكان، حدث، أو شيء آخر قابل للتخزين في قاعدة البيانات. ويمكن أن يتكون هذا الكيان من عدة متغيرات أو أعمدة (Columns) تمثل السمات (Attributes) أو الخصائص التي تميز هذا الكيان عن غيره. أما بالنسبة لـ Object في لغات البرمجة فيُعرف عادةً كتجسيم لكيان يمثل شيئًا معينًا أو كائنًا في البرنامج. بحيث يتكون هذا الكائن من البيانات (الخصائص) والسلوك (الطرق أو الوظائف) التي تعبر عنه. وتتمثل وظيفته في تحقيق الوظائف المحددة التي يتوقعها المبرمج أو المستخدم من البرنامج. كما يمكن أن تتفاعل هاته الكائنات مع بعضها البعض أو مع مكونات النظام الأخرى لتحقيق أهداف محددة. هاته هي الفكرة باختصار.
  9. بما أنك قد تقدمت في المشروع فمن الصعب تطبيق ذلك وإلا سيكون ذلك بجهد كبير، ولكن مبدئيا، يمكنك العناية أكثر بالأكواد واستخدام short open tags وعزل خرج HTML كملفات عروض views في مجلد منفصل،
  10. لتسهيل عملية فصل الأكواد HTML عن الـ PHP في مشروعك، استخدم مفهوم الـ Templating. بحيث يتيح لك الـ Templating فصل أكواد HTML وPHP بشكل أكبر ويساعدك في تطبيق مبدأ فصل المهام seperating of concerns والذي هو مبدأ مهم من مبادئ علوم الحاسب، قد يمكنك أيضا توزيع المشروع ضمن معمارية مشهورة مثل MVC لفصل مهام التطبيق وجعل التطبيق يتواصل مع بعضه داخليا بشكل أكبر وأكثر فعالية، قد يمكنك ايضا الاستفادة مما تقدمه أطر عمل من مثل Laravel لاستخدام محركات القوالب الخاصة بها، مثل blade في Laravel. كما يمكنك استعمال محرك قوالب منفصل مثل Smarty لمشروع native PHP. اقرأ عنه أكثر من هنا.
  11. قم بإضافة قاعدتين واحدة لتجاهل كل ملفات gitignore. وأخرى لاستثناء الملف المستهدف، بهذه الطريقة سيمكن رفع هذا الملف وحده. إليك ذلك: node_modules/* !node_modules/specific-file.js
  12. مرحبا أيمن، هلا قمت بشرح المشكلة التي تواجهها بتفصيل أكثر؟
  13. يبدوا أن المنفذ الذي تستغله خدمة MySQL محجوز حاليا، جرب اغلاق البرنامج الذي يحجز المنفذ أو قم بتغيير منفذ MySQL. ولذلك قم بالتالي: افتح ملف my.ini من خلال الضغط على config من لوحة تحكم xampp ثم ابحث عن السطر التالي: port = 3306 وغيره لـ port = 3360 أعد تشغيل خدمة xampp وانظر ما ان حل ذاك المشكلة.
  14. خذ الأمر من هاته الناحية: هو ما يدل عليه لفظه، فالعبارة target تعني الهدف أو المستهدف، وفي الأحداث events في جافاسكربت هنالك عنصر مستهدف بهذا الحدث، سواءا كان ذلك ضغطة أو مرورا بمؤشر الفأرة ضغطة على زر من أزرار لوحة المفاتيح أو طباعة على حقل نصي أو ما إلى ذلك، وفي كل هاته الحالات المستهدف هاهنا هو العنصر ذاته، أي الزر وعنصر الحقل النصي وزر لوحة المفاتيح أو أيا كان ذاك. ولذلك يتفرع كخاصية عن الكائن event، بحيث يمكن مباشرة تطبيق خواص عليه أو التعامل معه.
  15. يمكنك استعمال مكتبة datepicker مخصصة أخرى، اذ لا يظهر أن المكتبة التي اعتمدت عليها تعمل بصورة صحيحة. تأكد من استخدامها بصورة صحيحة أو استبدلها بمكتبة أخرى، عادة ما استعمل مكتبة Datepicker الخاصة بـ jQueru UI. يمكنك الإطلاع على التوثيق الرسمي لها من هنا: هنا. فيما يلي شكل المحدد:
  16. السبب غالبا هو في الخطأ في طريقة تصفحك الموقع، تأكد من زيارة الرابط الصحيح. يبدوا أن موقعك متوفر بشكل عادي على: https://ahmed-alfadaly.github.io/ ان شئت نشر الموقع على رابط فرعي مثل: https://ahmed-alfadaly.github.io/Travel_Agency.github.io/ فتأكد من اعتماد الاعدادات اللازمة من صفحة اعدادات صفحة غيتهب الموافقة لموقعك.
  17. مرحبا أحمد، الأمر طبيعي وعادي جدا، والأكاديمية تتفهم ذلك ولذلك تقوم بتوفير فريق كامل من المدربين متوفرون على مدار الساعة والأسبوع للمتابعة مع الطلاب والإجابة على تساؤلاتهم واستفساراتهم. ويمكنك ذلك عن طريق اضافة تعليق أو سؤال أسفل الدررس الذي واجهت مشكلة بفهمه وسيهتم أحد المدربين بانشغالك على الفور. اعرف أكثر عن : كيف أتواصل مع المدرّبين.
  18. في الحقيقة، هذا هو المحتوى الموجود كله، لأن العناصر والمكونات التي تراها في المتصفح تم عرضها وتصييرها بعد تحميل موارد الصفحة وملفات الجافاسكربت المعروضة في خرج السكربت الذي كتبته. جرب القيام باستعراض الكود المصدري للصفحة عن طريق view source page وسترى أنه مماثل لما تم جلبه، فالهيكل المعروض في المتصفح في تبويبة Elements ليس إلا ناتج تصيير أي مكونات وأي عناصر ولو بعد تحميل الصفحة، ولكن الهيكل المعروض ككود مصدري للصفحة هو ما يتم جلبه من الخادم.
  19. تقريبا نعم، فماهيم البرمجة يتم التعامل معها بكثرة وبدورية، الأمر الذي يجعل من التعامل معها أسهل فأسهل كل مرة. كما أن الأمر طبيعي مع أي مفهوم جديد على أي شخص ولا يشمل ذلك البرمجة فقط، فأي شيء يتم التعود عليه يصبح أكثر وضوحا. يجب الإشارة أيضا إلى أنه لا يقصد بهذا أن لا تكون المفاهيم والأساسيات واضحة ومفهومة ولو بنسبة قليلة، إذ يجب استيعاب هاته المفاهيم ولو بشكل أولي ثم استيعابها بشكل أكبر مع التقدم في الأمر. قد تحتاج القراءة أكثر عن تعلم البرمجة هنا:
  20. الأمر بسيط، قم بتعديل الشيفرة الخاصة بك عن طريق تمرير كائن خصائص التنبيه المراد إظهاره: echo "<script> Swal.fire({ title: 'رسالة تأكيد', text: 'تم تعديل بيانات الطالب بنجاح!', icon: 'success', customClass: 'your-custom-class' }) </script>"; واستبدل your-custom-class بالكلاس المخصص المستهدف الذي تريد اضافته لعنصر التنبيه.
  21. تأكد من استعمال الترميز الصحيح: $mail->CharSet = 'UTF-8'; ثم من ارساله وفق SMTP: $mail->IsSMTP(); في حال ما واجهت مشكلة مماثلة بخصوص تعيين قيمة لـ subject هي الأخرى، حاول القيام بذلك على النحو التالي: $mail->Subject = '=?UTF-8?B?'.base64_encode($subject).'?=';
  22. الأمر غير منطقي أساسا، أظنك تحتاج مراجعة متطلبات المشروع والنظر فيما ان كانت تتطلب هذا الدمج أساسا. رغم أنه صعب التحقيق من الناحية العملية. لارافيل هو إطار عمل مبني على لغة PHP وموجه لبناء تطبيقات ويب تكاملية وشاملة، و Django في المقابل هو أيضا نفس الشيء مبنيا بلغة Python، رغم أن كلاهما يعتمد معمارية وهيكلة مختلفة للتعامل مع مفاهيم الويب، إلا أنهما يوفيان نفس الاحتياج. ولذلك فإنك ستحتاج استعمال أحدهما دون الآخر، أو العمل على توظيف ميزة في احدهما تتوفر في الآخر.
  23. وعليكم السلام، VARCHAR هي اختصار للعبارة كاملة: Variable Charachter وهو نوع بيانات يتم تحديد به الحقول التي يمكن أن تحوز حتى على 65535 محرف أو Charachter والتي يمكن تحديد طول أعظمي لها. TEXT هو نوع بيانات يمكن أن يحوز على نفس العدد السابق من المحارف دون إمكانية تحديد طول أعظمي لها. ولذلك: نستعمل VARCHAR لما يمكن التنبؤ بالطول الأعظمي للحقل أو عند الرغبة في تحديد طول أعظمي له. نستعمل TEXT لما نتعامل مع نصوص وسلاسل نصية لا يمكن التنبؤ بالطول الأعظمي لها ولا تكون هنالك حاجة لتحديده.
  24. هنالك العديد من الفروقات التي تحدد استعمالات كل منهما في سياقات معينة، إليك مقارنة بسيطة: Middleware أو الطبقات الوسيطة: يتم تشغيلها بشكل أساسي على المسارات، وعادة ما يتم استخدامها كفلتر للتعامل مع الطلبات القادمة. استعمالات شائعة: فحص قيمة ترويسة Header معينة في الطلبية. أما Guards فهي طريقة لتحديد كيف يتم توثيق ومصادقة المستخدمين للطلبات، استعمالات شائعة: انشاء محمية Guard لمصادقة المستخدمين العاديين وأخرى لمصادقة المشرفين Admins.
  25. مبدئيا، لا يوجد أي مشكلة بظهور الكود المصدري للواجهة الأمامية على المتصفح، فهو شيء تحصل عليه المتصفح بالفعل ومن غير المنطقي أن لا يكون الوصول إليه متعذرا، نفس الأمر بالنسبة لأدوات تجريف الويب web scraping، فكل الذي يتم تحصيله هو هاته الشيفرات التي تخص الواجهة الأمامية. قد يمكنك تعطيلها أو تشويشها أو تقليلها Minimizing من خلال استعمال ادوات ظغط أو برامج ويب لكتابتها في سطر واحد، ولكن لا يزال نفس الأمر مطروحا إذ لا يشكل ذلك أي مشكلة، مادامت شيفرات الواجهة الخلفية غير متاح الوصول إليها.
×
×
  • أضف...