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

Adnane Kadri

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

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

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

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

    52

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

  1. لا يمكن ضبط الامر بشكل قطعي، فالموضوع ذاتي كثيرا ويتعلق بعدة أسباب تتغير من الشخص للآخر، نذكر مثلا: قدرة الشخص على الاستيعاب ظروف الشخص المحيطة قدرته على الصبر والالتزام تركيزه وبعده عن التشتيتات والعديد من الأمور الأخرى .. هذا بجانب أن فكرة تحديد حجم ساعي معين غير مقترحة أصلا، في المقابل يجب عليك التركيز على تعلم كذا أشياء في اليوم أو في الأسبوع، والأهم ليس هو حجم الساعات التي تقضيها أمام الحاسوب، بل كمية المادة العلمية التي استوعبتها في الوقت الذي قضيته وأنت تتعلم. والأهم الأهم هو الاستمرارية وما مدى استمرارك في التعلم والتزامك بذلك. أما مسألة الوقت وتحديد وقت بشكل جبري هو أمر سيجعلك تركز في انقضاء الوقت دون تعلم الشيء، وهو ما لا تريده بطبيعة الحال.
  2. لا يفترض أن تكون هنالك أي مشكلة بالشيفرة، تأكد فقط من مصادقة البيانات المحقونة للبيانات المسجلة الحقيقية لديك. أي: $DB_ADDRESS="localhost"; $DB_USER="id21726021_ali"; $DB_PASS="Kamalalan@20172019"; $DB_NAME="id21726021_legacy"; أو قم باستعمال أخرى موجودة لديك فعلا. أيضا تأكد من استعمال الشيفرة بشكل صحيح، اذ تتوقع منك فتح الملف باستخدام طلبية POST محملة بالبيانات: query key أيضا انتبه للتالي: $result=$conn->query($query); ففكرة ارسال استعلام SQL عبر طلبية HTTP هي غالبا فكرة غير صائبة وستفتح لك الكثير من الثغرات الأمنية، انتبه إلى أنه يتم التقاط الاستعلام من على الطلبية.
  3. المشكلة غير واضحة تماما، ولكن يرجح أن هنالك خطأ في السياق سببه السطر التالي: <?php <?php while ($row = mysql_fetch_assoc($result)) { ?> انتبه إلى أن <?php مكررة، احذفها في الموضع الأول أو الثاني، وأعد تشغيل الملف.
  4. مرحبا علي، التدريب العملي فكرة جيدة، ولكنه يجب أن يضبط بطبيعة الحال أيضا ولا يفترض أن يكون بشكل يغلب على التحصيل النظري في المقابل أيضا. خصوصا وأن دورة علوم الحاسب هو دورة عامة تعنى بالمجال ككل ولا تعنى بمجالات تخصصية مثل تطوير تطبيقات الويب أو الموبايل أو ما نحو ذلك، ولذلك فإن المفترض بك هو أن تركز على التحصيل العلمي من الدورة مع التدريب العملي مع المدرب أثناء وخلال الدورة. أما بالنسبة للتطبيق النظري بهذا الشكل، فسوف يمكنك القيام بذلك مع دورات أخرى تخصصية. وبما أن الطلبة يتاح لهم وصول لكامل المسارات الأولى من كامل الدورات فسيمكنك اختيار مسار معين والقيام بالامر معه. الأولى في دورة علوم الحاسب، هو التحصيل والتدوين مع التدريب العملي في الجزئيات التي يرد فيها ذلك.
  5. إنشاء شركة لتطوير مواقع الويب وتطبيقات الجوّال والأنظمة المحاسبية يتطلب بطبيعة الحال تخطيطا جيدا ومجموعة من الخطوات الأساسية للانطلاق. إليك نظرة عامة على ما قد تحتاجه: عن طريق البحث والتخطيط قم بتحديد مجموعة من الميزات التي تريد توفيرها وقم بتحديد مجموعة الخدمات التي تنوي تقديمها. قم بدراسة المنافسين واعمل على تحديد الميزات التنافسية وحدد مختلف الاستراتيجيات المتعلقة بذلك. قم بعمل شراكات مع مصممين ومطورين ومحاسبين لتقديم خدمات ذات جودة. قم ببناء منصة الموقع أو صفحة الهبوط الخاصة بالشركة وحدد طريقة التواصل والتقارب مع أصحاب المشاريع. قم بتسجيل مشروعك بشكل قانوني واحصل على رقم ضريبي للشركة، فقد تحتاجه. قم بتسويق مشروعك وتمويله. قم بالبدء في تقديم الخدمات. الجزء الأخير الذي يعنى بتقديم الخدمات غالبا ما يتعلق بفريق التطوير الخاص بك، ولذلك تأكد من اختيار مدير فريق / منتج خبير بمجال العمل لكي يمكنه تقديم ما يريده أصحاب المشاريع بالضبط.
  6. يبدوا أنه يتم استعمال مكتبة واضافة phpbolt لتشفير ملفات PHP وتنفيذها، وهي مكتبة تهتم بتشيفر وفك تشيفر الكود المصدري لشيفرة PHP (php source code). تتوفر المكتبة بشكل اساسي هنا. في حين تتوفر اضافة وحزمة مستقلة للارافيل هنا. وهي توفر الوظيفتين: bolt_encrypt: bolt_encrypt( file_name, encryption_key ) يرفق مفتاح التشيفر ومسار الملف المستهدف. وتعيد الكود المشفر. bolt_decrypt: bolt_decrypt( encrypted_code, encryption_key) يرفق مفتاح التشيفر وناتج التشفير. وتقوم بتنفيذ شيفرة PHP المشفرة.
  7. يوجد العديد منها. منها تلك الخاصة ببيايثون حصرا، ومنها تلك العامة التي يمكنك استعمال محركات البحث فيها للتوصل الى تمارين بايثون، نذكر منها مثلا: Hackerrank Codecademy LeetCode GeeksforGeeks Codewars Exercism وهاته الأشهر على الساحة، يمكنك البحث أيضا عن تمارين بشكل أكثر توسعي في محركات البحث أو في المقررات الدراسية وما الى ذلك.
  8. يرجى ضغط المشروع ورفعه في ملف واحد بدل رفع جميع الملفات منفصلة.
  9. يتم الأمر غالبا بالاستعانة بمفهوم الويب سوكيت، وهو بروتوكول اتصال مستعمل في الويب يوفر اتصالا دائما في الوقت الفعلي ما بين الخادم والعميل، بشكل يمكن العميل من التقاط اي اشعارات يتم استحداثها على مستوى الخادم. بحيث يتصل كل العملاء بقناة معينة ويقومون بالاستماع للأحداث التي يتم بثها فيها. إليك تبسيطا للعملية: يشترك أحمد في القناة CH1 ويستمع للحدث E1 يشترك علي في القناة CH1 ويستمع للحدث E1 يشترك عمر في القناة CH1 ويستمع للحدث E1 عندما يقوم عمر بعمل اعجاب لمنشور ما، يتم ارسال الطلبية الى الخادم ليتم تسجيل الاعجاب، وفي نفس الوقت يتم استهداف الحدث E1 عبر القناة CH1 بما أن كل الثلاثة يستمعون للحدث E1 عبر الثناة CH1 فإن كل من الثلاثة سيتلقى البيانات التي يتم تمريرها عبر القناة ولنقل مثلا تفاصيل الاعجاب او رسالة "اعجب عمر بالمنشور الفلاني". يتلقى كل الثلاثة الرسالة ويقومون بعرضها في شجرة DOM هاته هي الفكرة بمجملها، وتقوم بعض الحزم والمكتبات باختصار الطريق فتوفر لك تطبيقا وواجهة برمجية للتعامل مع هاته المراحل ببساطة. أما بالنسبة لـ PHP فيمكنك استعمال واحدة من الحزم التي تتوفر، نذكر مثلا Pusher أو Laravel websockets أو ما نحوهما ..
  10. الأمر بسيط، لتشغيل وتجربة كود في Android Studio، اتبع ما يلي: قم بتنزيل وتثبيت Android Studio من الموقع الرسمي: موقع Android Studio. بعد تثبيت Android Studio، قم بفتحه واختر "Start a new Android Studio project" لبدء مشروع جديد. اختر نوع المشروع الذي ترغب في إنشاءه (مثل تطبيق فارغ أو تطبيق أساسي). اتبع الخطوات الموجهة لإكمال إعدادات المشروع. قم بفتح ملف وضف الكود المناسب في المكان المناسب. شغل التطبيق. اعرض النتائج: انتظر حتى يتم تشغيل التطبيق على المحاكي أو الجهاز الفعلي. ستظهر النتائج في النافذة الخاصة بالتطبيق.
  11. اطلع على الإجابة السابقة، فهي تقتضي استعمال PHP مباشرة
  12. بالطبع هنالك فائدة، ولن يمكن للذكاء الصناعي الاصطناعي أن يحل محله بأي حال من الأحوال. فمتطلبات العمل لا تزال تزداد تعقيدا، وستضل هنالك دوما لحاجة لتحليل متطلبات العميل وصاحب المشروع وتحويلها الى برمجيات فعالة، بما في ذلك تصميم واجهات الاستخدام. خصوصا أن المجالات الابداعية حالة خاصة في مثل هاته المواضيع. أما بالنسبة للعمل، فقد يمكنه قصد مواقع العمل الحر أو مواقع وشركات التوظيف للتقدم الى وظائف تتطلب مهارات الواجهة الأمامية. يجب الاشارة ايضا الى دوره الذكاء الصناعي نفسه، فهو يركز على: التكامل وليس الاستبدال: يمكن أن يلعب الذكاء الاصطناعي دورًا في تحسين الأداء وتوفير أدوات جديدة أو في مساعدتك على اختصار الوقت في العمليات المكررة، ولكنه لا يستبدل بشكل كامل المطورين في تطوير واجهة المستخدم. فالقدرة على فهم وتفسير احتياجات وتفضيلات المستخدمين وتطلعاتهم لا تزال مهمة بشكل كبير. التحسين المستمر: تطور التكنولوجيا يعني أن مطوري واجهة المستخدم يحتاجون إلى التكيف والتعلم المستمر للحفاظ على فهمهم لأحدث التقنيات والاتجاهات. وان شئنا اختصار الموضوع، فالمطور الذي يضع أدوات الذكاء الصناعي في معارفه ويدرك مواضع قوته وضعفه ويستعمله لزيادة انتاجيته ويوجهه في ذلك هو أفضل بطبيعة الحال من المطور الذي يتجاهله بشكل كامل.
  13. الطريقة الأبسط والأسهل هي تنزيل النسخة الموزعة الأخيرة من الموقع الرسمي وتثبيتها بطريقة اعتيادية. قم بتنزيل أحدث إصدار من Node.js من الموقع الرسمي: Node.js Downloads. اختر إصدارا مستقرا (LTS) إذا كنت ترغب في الحصول على إصدار يتم دعمه لفترة طويلة، أو اختر أحدث إصدار إذا كنت ترغب في استخدام أحدث الميزات. أما كطريقة أخرى، هي باستخدام مدير حزم Node أو بما يعرف بـ NVM، وهو مكتبة تنفيذية تساعدك في التبديل بين نسخ Node ببساطة. وهو بشكل أساسي متوفر لأنظمة Linux ولكن يوجد اصدار منه للويندوز يمكنك الوصول إليه من هنا. ولتثبيته ما عليك إلا اتباع الخطوات: قم بتنزيل ملف التثبيت من على الموقع الرسمي أو من هنا. قم بتشغيل ملف التثبيت واتبع خطوات التثبيت حتى آخرها. الآن يمكنك التبديل بين نسخ Node بشكل عادي: nvm use 14.0.0 .
  14. الأمر بسيط، عملية تسجيل الدخول والخروج في رياكت متعقلة بإرفاق رمز token في الطلبيات المرسلة الى الخادم، فمتى ما غاب هذا الرمز عن الطلبيات تم رفض اتمام الطلبية، نفس المنطق وراء حجب او اظهار بعض الصفحات أو المكونات في رياكت. ولهذا سوف يمكن التحكم في عملية تسجيل الدخول والخروج بناء على حضور هذا الرمز في التطبيق أو مرفقا في ترويسات الطلبيات المرسلة للخادم. لنقل أنه يتم استقبال رمز jwt عند ارسال طلبية تسجيل الدخول الى الخادم، بعد ذلك سيتم حفظ هذا الرمز في التخزين المحلي localeStorage لتطبيق رياكت. لاحقا، سيتم التحقق مما ان كان رمز jwt موجودا في localeStorage أو لا، فإن كان: تم عرض الصفحة أو قبول التوجيه اليها. وفي حال ما لم يكن، لم يتم عرضها ولم يتم قبول التوجيه اليها. في نفس الوقت، يتم اضافة رمز jwt المخزن في localeStorage الى كل طلبية مرسلة الى الخادم في ترويسة Authorization ليتم توثيق الطلبيات من قبل الخادم. وبالنسبة لتسجيل الخروج، فستكون العملية أبسط. اذ سنقوم فقط بمحو هذا الرمز من على التخزين المؤقت، ولن يمكن للمستخدم اعادة تسجيل واحد جديد إلا لما يعيد عملية تسجيل الدخول من جديد.
  15. جرب اضافة الشرط التالي: if len(david_locations) > 0: # استخدام مواقع الوجوه الأول فقط left, top, right, bottom = david_locations img = Image.fromarray(david) draw = ImageDraw.Draw(img) draw.rectangle(((left,top), (right,bottom)), outline='green' , width=5) img.show() else: print("لا يوجد وجوه في الصورة")
  16. مبدئيا، لا يظهر بالشيفرة أي خطأ. ما تحتاج التحقق منه هو: من أن مسار الصورة المسند صحيح. من ما ان كانت هنالك أي رسالة خطأ تظهر بخصوص تنفيذ الشيفرة. من أن david_locations قائمة وليست فارغة قبل استخدام القيم منها. يمكنك اضافة عبارة شرطية على سبيل if david_locations: للتحقق من وجود على الأقل وجه واحد. كما أنه يفضل تغيير حجم الصورة إلى حجم معقول قبل تحميلها باستخدام resize لتجنب مشاكل الأداء. في حالة ظهور أي رسالة خطأ، يرجى ارفاقها.
  17. مبدئيا، العملية تحتاج الى تراكم معلومات والمسير وفق مخطط واضح لمدة معتبرة من الزمن. ولذلك، يقترح التعلم بجانب العمل في حال تطلب الحاجة الى ذلك نظرا لأن المدة الزمنية قد تكون طويلة قليلا، خصوصا أن هنالك الكثير من عروض العمل التي لا تحتاج خبرة شاملة بل تحتاج تخصصات فرعية مثل تطوير الواجهات الأمامية وما الى ذلك. وعموما، لا يتوقف أحد عن التعلم في هذا المجال. فهو مجال متجدد ويحتاج متابعة وتطويرا دوريا ولا ينبغي التوقف عن التعلم والتحصيل مهما بلغ مستوى الشخص، لأن هذا سيحد من قدراته ولا يجعله يواكب التطورات. بالنسبة لعمل مطوري الواجهات الأمامية، فهو يختلف بحسب طبيعة المشاريع التي يشتغلون فيها. فبعض المشاريع يكونون فيها حلقة وفردا من أعضاء الفريق الذين يتم ادارتهم من قبل مدير منتج أو قائد فريق ويطلب منهم مهاما تتناسب مع قدراتهم ومهاراتهم، وحتى التنسيق بين مطور الواجهة الأمامية ومطور الواجهة الخلفية يتم من خلال توجيهات مدير المنتج. أما بعض المشاريع الأخرى يكونون فيها الوحيدين المشتغلين على المشروع، وهاته المشاريع التي تكون ثابتة المحتوى مثل : صفحات الهبوط، واجهات الويب .. الخ.
  18. الأمر بسيط، قم بتضمين ملفات التنسيقات وملفات الجافاسكربت المبنية في ملف layout العام، وابدأ باستعمال المكونات الجاهزة من القالب بنسخها ولصقها.
  19. ملفات الخطوط سيتم التعامل معها بشكل تلقائي في vite، سوف لن تحتاج أي محمل مخصص. أما بخصوص الوحدات والاضافات الموجودة في webpack فسوف تحتاج استعمال مكافئاتها في vite، ابحث عن مثيلاتها في vite. أيضا، يفترض أن تقوم بأخذ نسخة المشروع المبنية وليس تلك الخاصة ببيئة التطوير، أي أنك تحتاج تنفيذ npm run build لتخريج مجلد dist والذي سوف يتم ربطه مع المشروع وليس ذاك الخاص بملفات التطوير.
  20. بعد الانتهاء من تطوير التطبيق، سوف تحتاجين تخريج نسختين، واحدة للويب وأخرى لتطبيق جوال، أندرويد أو IOS. وفي ذلك، تحتاجين فتح المشروع في نافذة موجه أوامر CMD وتنفيذ الأمر: flutter build apk # لنظام Android flutter build ios # لنظام iOS flutter build web # لتطبيق الويب لتخريج ملفات الجوال والويب، لنظام Android قم بتحميل ملف APK الذي تم إنشاؤه إلى Google Play Console. ولنظام iOS: قم بتحميل التطبيق إلى App Store Connect باستخدام Xcode. ونفس الشيء بالنسبة لتطبيق الويب على الاستضافة (قومي بتفريغ محتويات مجلد build/web داخل مجلد public_html على الاستضافة).
  21. يمكن أن نقول أن تركيب ثيم Bootstrap 5 مبني على ويباك في تطبيق لارافيل يتبع المراحل التالية: تثبيت مختلف الاعتماديات اللازمة في تطبيق لارافيل التي تتعلق بالثيم، مثال: npm install @fortawesome/fontawesome-free bootstrap @popperjs/core . تضمين مختلف ملفات التنسيقات بملفات التنسيقات التي ينشئها لارافيل ابتداءا، مثل ملف app.scss: @import './theme/style' . تضمين مختلف ملفات الجافاسكربت بملفات الجافاسكربت التي ينشئها لارافيل ابتداءا، مثل app.js: require('./theme/index.js') . اعداد vite وتثبيت اعتماديات node بتطبيق لارافيل: npm install . أنشئ ملفا للنسق العام، وسمه app.blade.php وضع فيه المحتوى المكرر من القالب: <!DOCTYPE html> <html lang="ar" dir="rtl"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>متجر عربي</title> @vite(['resources/scss/app.scss', 'resources/js/app.js']) </head> <body> <div class="container-fluid"> <!--الشريط العلوي--> <div class="row"> <nav class="navbar custom-navbar navbar-expand-lg"> <div class="container px-0"> <div class="navbar-header"> <button class="navbar-toggler btn btn-icon" data-bs-toggle="collapse" data-bs-target="#navbar-collapsed-menu" aria-controls="navbar-collapsed-menu"> <i class="fas fa-bars fa-xl"></i> </button> <a href="./checkout.html" class="d-lg-none btn btn-icon"> <i class="fas fa-shopping-cart fa-lg"></i> </a> <a href="." class="me-5"> <img src="./images/logo.png" alt="متجر عربي"> </a> </div> <form class="d-flex align-items-center inline-form"> <input class="form-control custom-form-control" type="search" placeholder="كلمة البحث .."> <div class="dropdown categories"> <a class="nav-link dropdown-toggle custom-btn" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false"> اختر فئة </a> <ul class="dropdown-menu custom-dropdown-menu"> <li> <div class="checkbox ms-2"> <label> <input type="checkbox" name="search-category" value="men"> رجالي </label> </div> </li> <li> <div class="checkbox ms-2"> <label> <input type="checkbox" name="search-category" value="women"> نسائي </label> </div> </li> <li> <div class="checkbox ms-2"> <label> <input type="checkbox" name="search-category" value="kids"> أطفال </label> </div> </li> </ul> </div> <button class="btn search-btn" type="submit">ابحث</button> </form> <div class="collapse navbar-collapse" id="navbar-collapsed-menu"> <ul class="navbar-nav ms-auto"> <li class="nav-item"> <a class="nav-link" href="./index.html">الصفحة الرئيسية</a> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown2" role="button" data-bs-toggle="dropdown" aria-expanded="false">أقسام المتجر</a> <ul class="dropdown-menu custom-dropdown-menu"> <li> <a class="dropdown-item" href="#">رجالي</a> </li> <li> <a class="dropdown-item" href="#">نسائي</a> </li> <li> <a class="dropdown-item" href="#">أطفال</a> </li> </ul> </li> <li class="nav-item"> <a class="nav-link" href="./search.html">البحث المتقدم</a> </li> <li class="nav-item active"> <a class="nav-link" aria-current="page" href="./contact.html">تواصل معنا</a> </li> <li class="d-none d-lg-block mt-2"> <a href="checkout.html" id="btn-shopping-cart" class="btn btn-icon" title="عربة الشراء" data-bs-toggle="tooltip" data-bs-placement="bottom"> <i class="fas fa-shopping-cart"></i> </a> </li> </ul> </div> </div> </nav> </div> <!--نهاية الشريط العلوي--> <div class="container"> @yield('content') </div> <!--تذييل الصفحة--> <footer class="row"> <div id="brand-logos" class="text-center"> <span>المتجر وكيل مُعتمد لكبرى الشركات العالمية</span> <div class="img-container"> <img src="./images/lacoste.png" alt="Lacoste"> <img src="./images/adidas.png" alt="Adidas"> <img src="./images/puma.png" alt="Puma"> <img src="./images/polo.png" alt="Polo"> </div> </div> <div id="footer-nav" class="text-center"> <div class="footer-logo"> <a href="./"> <img src="./images/logo_footer.png" alt="عربي"> </a> </div> <div class="footer-nav-links d-none d-md-block my-5"> <a href=".">الصفحة الرئيسية</a> <a href="search.html">البحث المتقدّم</a> <a href="contact.html">تواصل معنا</a> </div> <div class="newsletter d-flex align-items-center justify-content-center col-md-6 offset-md-3"> <form> <label for="footer-email"> تابع النشرة البريديّة لأحدث العروض </label> <br> <div class="input-group"> <input id="footer-email" class="form-control custom-form-control" type="email" placeholder="البريد الإلكتروني" name="email" required> <button type="submit" class="btn custom-btn-warning"> متابعة </button> </div> </form> </div> </div> <div id="footer-copyright-social"> <div class="container"> <div class="clearfix"> <div id="copyright" class="float-start"> </div> <div id="social-icons" class="float-end"> <a href="https://www.facebook.com"> <i class="fab fa-facebook-square fa-lg"></i> </a> <a href="https://www.twitter.com"> <i class="fab fa-twitter-square fa-lg"></i> </a> <a href="https://www.instagram.com"> <i class="fab fa-instagram fa-lg"></i> </a> </div> </div> </div> </div> </footer> <!--نهاية تذييل الصفحة--> </div> </body> </html> . البدء في استعمال مكونات وملفات التطبيق بداخل ملفات blade في لارافيل، مثال - صفحة المراسلة: @extends('layouts.app') @section('content') <!--عناصر التّنقّل الفرعيّة--> <div class="row" area-label="breadcrumb" style="--bs-breadcrumb-divider: '>';"> <ol class="breadcrumb custom-breadcrumb"> <li class="breadcrumb-item"> <a href=".">الصفحة الرئيسية</a> </li> <li class="breadcrumb-item active">تواصل معنا</li> </ol> </div> <!--نهاية عناصر التّنقّل الفرعيّة--> <div id="contact-options" class="row mb-4"> <!--معلومات التواصل--> <div class="col-lg-3 offset-lg-2"> <h4 class="heading-with-border-bottom "> معلومات التواصل </h4> <div id="contact-info" class="mb-4"> <div> <i class="fas fa-phone fa-lg"></i> 974.4422.7813 </div> <div> <i class="fas fa-envelope fa-lg"></i> info@araby.com </div> <div> <i class="fas fa-map-marker-alt fa-lg"></i> العنوان: الإمارات العربية المتحدة، دبي، برج خليفة </div> </div> <!--قسم الاشتراك بالنّشرة البريدية--> <h4 class="heading-with-border-bottom">اشترك بالنشرة البريدية</h4> <form id="form-subscription"> <div class="input-group"> <input type="email" class="form-control custom-form-control" placeholder="البريد الإلكتروني" name="email" required> <button class="btn custom-btn-warning" type="submit"> متابعة </button> </div> </form> </div> <!--نهاية معلومات التواصل--> <!--قسم اترك رسالة--> <div class="col-lg-6"> <h4 class="pb-2">اترك رسالة</h4> <form> <div class="row"> <div class="col-md-6"> <input class="form-control custom-input-details custom-form-control" name="name" type="text" placeholder="الاسم" required> </div> <div class="col-md-6"> <input class="form-control custom-input-details custom-form-control" name="email" type="email" placeholder="البريد الإلكتروني" required> </div> </div> <div class="mt-3"> <textarea class="form-control custom-input-details custom-form-control" name="message" placeholder="نص الرسالة" required></textarea> </div> <div class="d-flex justify-content-end"> <button type="submit" class="btn custom-btn-warning custom-btn-with-icon"> <span> إرسال الرسالة <i class="far fa-paper-plane"></i> </span> </button> </div> </form> </div> <!--نهاية قسم اترك رسالة--> </div> @endsection . يمكنك جعل باقي الصفحات تأخذ نفس المنحى.
  22. لا يتم رفع الملفات بشكل مباشر الى قواعد البيانات عادة، بل يتم رفعها الى نظم الملفات ويتم حفظ مسارات اليها في قاعدة البيانات ليتم عرضها عند الاستعلام. وطريقة خالد في الإجابة السابقة تقتضي ذلك. هنالك طريقة أخرى، قد يمكن اعتبارها حلا مؤقتا نسبيا. وهي عن طريق تحويل هاته الملفات الى سلاسل نصية مكودة بـ base64، ولاحقا يتم الغاء تشفيرها بها لتعود على هيئتها. // قراءة ملف البي دي اف او التقاطه من الطلبية $pdfContent = file_get_contents($pdfFilePath); // تحويله $base64String = base64_encode($pdfContent); // حقنه في قواعد البيانات $sql = "INSERT INTO files (encoded_string) VALUES ('$base64String')"; يرجى الاشارة أيضا الى أن الحقل encoded_string يجب أن يستوعب أعداد محارف كبيرة، لأن السلسلة الناتجة ستكون كبيرة جدا.
  23. يرجح أنك لم تقم بتثبيت pipenv أساسا، ولذلك حاول تثبيتها باستخدام مدير الحزم pip في بايثون على النحو التالي: pip install pipenv في حالة استمرار المشكلة تذكر أنه يمكنك على كل حال تثبيت جانقو على النحو التالي: python -m pipenv install django
  24. الشيفرة ببساطة تقوم بعمل حلقة تكرارية لإنشاء تسلسل مصفوفات باستخدام قائمة التكرار list comprehension، ولفهم العبارة لنجزء الشيفرة لـ: [..]، وتعني أن ناتج ما بين الأقواس يتم وضعه في مصفوفة. [i for i in range(5)]، ويتم هاهنا تكرار i من أجل i أقل من 5، أي الناتج: [0,1,2,3,4]، ولنسميها j فتكون: [j for j in range(6)] . يتم تكرار j من أجل j أقل من 6 فتكون: [j, j, j, j, j, j] فيكون الناتج: [[0,1,2,3,4], [0,1,2,3,4], [0,1,2,3,4], [0,1,2,3,4], [0,1,2,3,4], [0,1,2,3,4]] . تلخيص: الشيفرة تقوم بإنشاء مصفوفة ذات 6 صفوف و 5 أعمدة، حيث يتم ملء القيم في كل صف بالأرقام من 0 إلى 4.
  25. ان شئت فصلهما فلك كامل الحرية، ولكن لما ذلك وأنت تستطيع دمجمها في تطبيق واحد وتوفر الكثير. اذ يمكنك عرض تطبيق رياكت ضمن تطبيق لارافيل بالفعل، ولا حاجة لإنشاء تطبيق منفصل. ستحتاج أولا إنشاء ملف عرض يقوم بتضمين المكون الجذر لتطبيق رياكت، وليكن spa.blade.php: <!DOCTYPE html> <html lang="{{ str_replace('_', '-', app()->getLocale()) }}"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Laravel</title> @vite('resources/sass/app.scss') </head> <body class="antialiased"> <div id="app">..</div> @vite('resources/js/main.js') </body> </html> انتبه الى تضمين ملف جافاسكربت وملف التنسيقات الأساسين للتطبيق. الأن سنحتاج توجيه كل الطلبيات التي تختلف عن مسارات الـ API إلى عرض هذا الملف، وذلك لأنه يقوم بتصيير تطبيق رياكت ويترك له عملية التوجيه Routing. ضف المسار التالي في ملف web.php: Route::get('{any}', function(){ return view('spa'); }) ->where('any' ,'^(?!api).*$'); قم بتضمين وبناء تطبيق رياكت لديك داخل تطبيق لارافيل، وعند الانتهاء قم بتشغيل npm run build لتحزيم ملفات التطبيق وتخريجها. وطبعا لا تنسى بناء تطبيق رياكت لديك في الملف الذي يتم تضمينه في صفحة spa: import React from 'react'; import ReactDOM from 'react-dom'; import App from './App'; import './index.css'; ReactDOM.render( <React.StrictMode> <App /> </React.StrictMode>, document.getElementById('root') ); سيتم تصيير تطبيق رياكت في المكون الجذر app بطبيعة الحال.
×
×
  • أضف...