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

Adnane Kadri

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

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

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

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

    52

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

  1. بشكل مبسط، الفرق الرئيسي بين let و var هو النطاق (scope) الذي يتم إنشاء المتغير فيه. أي: عند استخدام let لتعريف متغير، يكون النطاق (scope) مقتصرًا على الكتلة البرمجية التي تم تعريفها فيها. وهذا يعني أن المتغير محدود الوصول داخل هذه الكتلة ولن يكون مرئيًا خارجها. قيمة المتغير let لا تهتم بالقيمة الابتدائية، فإذا لم تتم تعيين قيمة له، فإن قيمته الافتراضية ستكون undefined. عند استخدام var لتعريف متغير، يكون النطاق (scope) محدودًا بين الدالة التي يتم تعريفها فيها. وهذا يعني أن المتغير سيكون مرئيًا في كل مكان داخل الدالة بغض النظر عن الكتل (blocks) الفرعية. قيمة المتغير var إذا لم يتم تعيين قيمة لها، فستكون قيمة ابتدائية خاصة بكل نوع بيانات، مثل undefined للنصوص (strings) و 0 للأرقام (numbers). بالإجمال، إذا كنت تحتاج إلى استخدام متغير محدد فقط داخل كتلة (block) محددة، فاستخدم let. أما إذا كنت تحتاج إلى متغير يكون مرئيًا في جميع أنحاء الدالة، فاستخدم var. أمثلة عن الكتل المقصودة: حلقة loop، عبارة شرطية.
  2. يبدوا أن هنالك مشكلة بالوصول الى قاعدة البيانات باستخدام متغيرات البيئة التي تستخدمها، رجاءا تأكد من التالي: من صحة معلومات اتصال قاعدة البيانات: تحقق من أن معلومات اتصال قاعدة البيانات المحددة في ملف .env صحيحة. تأكد من أن اسم قاعدة البيانات واسم المستخدم وكلمة المرور صحيحة وتتطابق مع تلك المستخدمة في الاستضافة. من وجود قاعدة البيانات: تحقق من أن قاعدة البيانات التي تم تحديدها في ملف .env موجودة في الخادم الذي تم استضافة الموقع عليه. تأكد من أن قاعدة البيانات تم إنشاؤها بشكل صحيح ومتاحة للوصول عبر الاستضافة. من صلاحيات الوصول إلى قاعدة البيانات: تحقق من أن المستخدم المحدد في اتصال قاعدة البيانات لديه الصلاحيات الكافية للوصول إلى قاعدة البيانات وقراءة البيانات منها. يمكنك التحقق من ذلك من خلال لوحة التحكم الخاصة بالاستضافة أو من خلال التواصل مع مزود الاستضافة الخاص بك. إعادة تشغيل خادم الويب ومسح ذاكرة التخزين المؤقت: قد تكون هناك بعض المشاكل في التخزين المؤقت أو الذاكرة المؤقتة للتطبيق، نفذ الأمر php artisan cache:clear ان كنت تمتلك وصول SSH او قم بحذف ملف config داخل bootstrap/cache في حالة عدم ذلك.
  3. بالإضافة إلى ما ذكر سابقًا، يمكنك استخدام طرق أخرى لإنشاء روابط مشاركة لصفحات الويب على تطبيقات الواتساب والماسنجر. إليك بعض الأمثلة: استخدام برمجة واجهة التطبيقات (API) المقدمة من فيسبوك او واتساب: قد تحتاج في هذا التحصل على بيانات حساب مطور للاستفادة من ميزات اضافية. استخدام أزرار المشاركة المضمنة: وهي الطريقة التي أرجح أنها ما تريد، اذ يمكنك استخدام أزرار المشاركة المضمنة في موقعك على الويب، والتي تتيح للمستخدمين مشاركة صفحتك على تطبيقات التواصل الاجتماعي بسهولة، بما في ذلك الواتساب والماسنجر. (زر مشاركة فيسبوك ) قم بتكوين بيانات الزر الخاص بك واضغط Get code لتوليد الشفرة، الصقها بالمكان المناسب بكود HTML الموافق لموقعك وفقط.
  4. الفرق بين الطريقتين التاليتين في الربط بقاعدة البيانات MongoDB هو الاستخدام المختلف لعنوان الاتصال بالخادم الذي تستخدمه في كليهما. الطريقة الأولى: mongoose.connect('mongodb://127.0.0.1:27017/my_db') الطريقة الثانية: mongoose.connect('mongodb://localhost:27017/my_db') ففي الواقع، هناك فرق ضئيل بين استخدام "localhost" و "127.0.0.1"، ويتم تعيينهما عادة للإشارة إلى نفس العنوان IP للجهاز المضيف. ولكن يمكن أن يكون لديك تكوين مختلف في بيئة نظام التشغيل الخاص بك يؤثر على الوصول إلى قاعدة البيانات باستخدام احدهما. إذا فشلت الطريقة الثانية في الاتصال بقاعدة البيانات، فمن المحتمل أن هناك مشكلة في تكوين بيئة النظام الخاصة بك. يُفضل استخدام الطريقة الأولى التي تستخدم "127.0.0.1" كعنوان IP للاتصال بالخادم المحلي لتلافي المشكلة وفقط. والأرجح، أن المشكلة هي فقط بخصوص كيفية تفسير localhost و 127.0.0.1 من قبل نظام التشغيل أو التطبيق.
  5. بشكل مختصر، الدالة WINDOW في قواعد البيانات تستخدم لتعريف نافذة، والنافذة هي عبارة عن مجموعة محددة من الصفوف (السجلات) في جدول قاعدة البيانات. تسمح لك هذه النافذة بتطبيق وظائف التحليل والتجميع على مجموعة محددة من الصفوف، بدلاً من تطبيقها على الجدول بأكمله. تتكون الدالة WINDOW من ثلاثة أجزاء رئيسية: PARTITION BY: تستخدم لتقسيم الصفوف في النافذة إلى مجموعات فرعية بناءً على قيمة معينة في عمود محدد. في الجملة PARTITION BY، يتم تحديد العمود الذي سيتم تجزئته. ORDER BY: تستخدم لترتيب الصفوف داخل كل مجموعة فرعية في النافذة. يتم تحديد العمود الذي سيتم استخدامه للترتيب. OVER: تستخدم لتعريف المجموعة الكاملة للصفوف المشمولة في النافذة، بما في ذلك المجموعات الفرعية المحددة بواسطة PARTITION BY. يمكنك استخدام دوال التجميع والتحليل مع هذا الجزء لتطبيق الوظائف المعنية على الصفوف داخل النافذة. باستخدام هذه الأجزاء، يمكنك تحديد مجموعة محددة من الصفوف في الجدول وتطبيق وظائف التحليل والتجميع مثل العد، المجموع وغيرها عليها.
  6. يمكنك الاستعانة بواحدة من أشهر مكتبات الويب في تنسيق الاكواد وضبطها في حاويات .. هذه المكتبة هي مكتبة highlight.js، اذ تدعم 197 لغة وتتوفر بـ 248 تنسيقا وسمة مختلفة. تعطي تنسيقات مشابهة لما في الموقع المرفق بل وأفضل. رابط المكتبة الرسمي: https://highlightjs.org سهلة التثبيت والاستعمال: قم بتضمين ملفات المكتبة <link rel="stylesheet" href="/path/to/styles/default.min.css"> <script src="/path/to/highlight.min.js"></script> ثم قم بتهيئة حاويات الاكواد: <script>hljs.highlightAll();</script> يقصد بحاويات الأكواد أي حاويات على هذا الشكل: <pre><code class="language-js">console.log('قم بتنسيق هاته الشيفرة')</code></pre> ملحوظة: قم بإضافة اسم اللغة الى اللاحقة language في اسم الكلاس ليتم تمييز الشيفرات وفق تلك اللغة. أمثلة: language-php language-html language-plaintext قد لا تتوفر هاته المكتبة على زر للنسخ، ولكن يمكنك برمجة الأمر بشكل بسيط.
  7. تثبيته: vite يأتي معدا مسبقا كحزمة مرفقة بملف اعداد في تطبيقات لارافيل ولن تحتاج أي اعداد له، وللبدء في استعماله بشكل مباشر قم فقط بتنفيذ الأمر npm run dev لمباشرة استعمال خادمه وطبعا يكون هذا بعد تثبيت اعتماديات node، أما من حيث أفضليته على ويب باك وطريقة عمله يمكنك الاطلاع على الإجابة التالية: تكوينه وإعداده: يعد ملف vite.config.js في جذر مشروعك ملف اعداد vite الرئيسي، ويأتي باعدادات مسبقة. مثلما أنك حر في تخصيص هذا الملف بناءً على احتياجاتك ، كتثبيت أي مكونات إضافية أخرى يتطلبها تطبيقك ، مثل @ vitejs / plugin-vue أو @ vitejs / plugin-reaction أو غيرهما. استعماله في ملفات العروض blade: تأتي النسخ المتأخرة من لارافيل متوفرة على موجه القالب vite@ لحقن ملفات الاصول التي يقوم بتحزيمها في ملفات العروض، ولذلك سيمكن استعماله بوساطته كـ: <!doctype html> <head> {{-- ... --}} @vite(['resources/css/app.css', 'resources/js/app.js']) </head> اذ سيكتشف التوجيهvite تلقائيًا خادم تطوير Vite ويحقن عميل Vite لتمكين استبدال الوحدة النمطية المناسبة. وهذا لأنه يستعمل ما يعرف بـ vite manifest أو بيان vite وهو ملف json يتم توليده للإشارة إلى ملفات جافاسكربت وCSS وما يوافقها مما تم تحزيمه وتجميعه. تشغيله: # تشغيل خادم تطوير فايت npm run dev # تجميع وبناء ملفات الاصول لبيئة انتاجية npm run build هذا ما تحتاج معرفته بشكل أولي للتعامل مع vite في تطبيقات لارافيل، قد تحتاج لاحقا بعض الأمور المتقدمة قليلا كالتعرف على واجهته البرمجية أو ما الى ذلك للتعامل مع بعض المشاكل أو التخصيصات، مثل استعمال تطبيقات SPA أو Inertia أو غيرهما ..
  8. Calculus 1 و Calculus 2 و Calculus 3 هي جميعها مقررات في تخصصات الرياضيات وتتعلق بالتفاضل والتكامل وغيرهما. ومع ذلك، يختلف محتوى كل مقرر قليلاً ويشمل مفاهيم متقدمة تتعلق بالتفاضل والتكامل في أبعاد متعددة، والتفاضل الجزئي، والتكامل المتعدد، والمعادلات التفاضلية ونحوها. أما بالنسبة لتعلم مجال الذكاء الاصطناعي (AI)، فإن فهم الحساب التفاضلي والجبر الخطي والاحتمال والإحصاء يعد ضروريا جدا. اذ تعتبر هذه المواضيع أساسية في مجال الذكاء الاصطناعي وتستخدم في العديد من التقنيات والتطبيقات مثل تعلم الآلة (Machine Learning) والتعلم العميق (Deep Learning) ومعالجة اللغة الطبيعية (Natural Language Processing) وغيرها. أما بالنسبة لـ Discrete Mathematics و Mathematical Logic، ففهمهما سيكون ضروريا هو الآخر أيضا في مجال الذكاء الاصطناعي. اذ تعتبر الرياضيات التفاضلية أساسية في فهم تحليل الخوارزميات، وهي مفتاح لفهم المنطق الرياضي وهياكل البيانات وتعقيد الخوارزميات بشكل عام. وفي النهاية، يعتمد الأمر على تخصصك المحدد في مجال الذكاء الاصطناعي ومجالات الاهتمام الفرعية التي تود أن تتعمق فيها. فقد تحتاج إلى مواضيع إضافية أو رياضيات أخرى اعتمادًا على التطبيق الذي تهدف إلى تطويره. وقد تسقط اعتمادك على جزئية معينة في تخصص دون الآخر.
  9. عادةً ما يتم تخزين مشاريع XAMPP على جهاز الكمبيوتر الخاص بك في مجلد يسمى "htdocs" أو "www" في مجلد تثبيت XAMPP. وفي حالة استخدامك لقاعدة بيانات MySQL مع XAMPP، قد يكون لديك ملفات قاعدة البيانات في مجلد يسمى "data" أو "mysql" في مجلد التثبيت. ولذلك، إذا قمت بحذف هذه الملفات، فقد يكون من الصعب استعادتها. أظن أنه يتم الاحتفاظ بمجلد htdocs بعد حذف او الغاء تثبيت xampp، توجه الى قرص c ومن على مجلد xampp قم بتفحص ما ان كان مجلد htdocs لا يزال متوفرا، سيحوي مختلف ملفات مشاريعك السابقة. أما ان كان قم تم حذفه، فلا أظن أنه هنالك طريقة أخرى.
  10. لتلافي حدوث مثل هاته المشكلة قم بوضع كل من الصورة والنص في حاوية مرنة يتم تطبيق التنسيق display flex عليها، ويتم ضبط قيمة align-items لديها بـ center: <div> <h2>hey</h2> <img src="path/to/image" /> </div> div{ display: flex; align-items: center; } الخاصية align-items
  11. قم بضبط استعلام وسائط media query يحدد قيمة للخاصية left في اطار معين فقط. نحدد هذا الاطار باستعمال min-width مثلا: @media screen and (min-width: 768px) { form::before { left: 0; } } ثم يمكنك ضبط اي اسعلامات وسائط اخرى تكون دون هذا العرض، أي نستعمل max-width مثل السابق.
  12. يمكنك الغاء القيمة المسندة للخاصية left أو تركها بشكل تلقائي ثم ضبط قيمة للخاصية right حتى لا يتعارض هاذان الاثنان. مثال: @media screen and (max-width: 768px) { form::before { left: auto; right: 0; } } أو أيضا: @media screen and (max-width: 768px) { form::before { left: unset; right: 0; } } يفترض أن يحل ذلك مشكلتك.
  13. يحدث هذا الخطأ عندما يستخدم تطبيق Flutter إصدارًا قديمًا من Android embedding. اذ أن تطبيقات Flutter تعتمد على Android embedding للتفاعل مع نظام Android. ومع ذلك، فإن الإصدار القديم الذي يتم استخدامه في التطبيقات قد تمت إزالته أو إهماله ويوصى بترحيل التطبيق إلى إصدار V2 من Android embedding. لحل هذه المشكلة وتجنب الأخطاء المفاجئة أثناء التشغيل أو في المستقبل، يجب عليك ترحيل تطبيقك إلى إصدار V2 من Android embedding. يمكنك الاطلاع على وثائق الترحيل الموجودة في الرابط المرفق سابقا الرابط التالي: https://github.com/flutter/flutter/wiki/Upgrading-pre-1.12-Android-projects بمجرد أن تكمل عملية الترحيل، يفترض ان تحل مشكلتك.
  14. مثلما أشار مصطفى، فإنه وبشكل عام تعتبر لغة Python اللغة الأكثر استخدامًا لتعلم الآلة وتحليل البيانات للأسباب: سهولة التعلم: يعتبر لغة برمجة سهلة التعلم وفهمها، وتوفر العديد من الموارد والمكتبات المتخصصة في تعلم الآلة وتحليل البيانات. مجتمع نشط: اذ تتمتع بمجتمع نشط من المطورين والمتخصصين في مجال البيانات، وبالتالي يتوفر العديد من الدروس والمقالات والأدوات التي تسهل عملية التعلم والتطوير. مكتبات قوية: يزخر Python بمكتبات قوية وشهيرة مثل NumPy وPandas وMatplotlib وScikit-learn وغيرها، والتي تسهل عملية تحليل البيانات وبناء النماذج التنبؤية وما الى ذلك. وبالطبع، يمكن استخدام c++ في تعلم الآلة وتحليل البيانات أيضًا، لكنها قد تكون أكثر تعقيدًا في البداية وتحتاج إلى مستوى عالٍ من المعرفة في البرمجة. لذا، إذا كنت مبتدئًا في هذا المجال، فإنه ينصح بالبدء بتعلم Python ثم توسيع معرفتك إلى لغات أخرى حسب احتياجاتك واهتماماتك المستقبلية. لأن لغة c++ لغة واسعة جدا ولها مكانة هامة في عالم البرمجة وتستخدم في العديد من المجالات مثل تطوير الألعاب، برمجة النظم، الحوسبة العلمية، والمضاعفات الرقمية. ولذلك فإن تعقيدها يعطيها أفضلية السرعة وينتزع منها سهولة تعاطيها والتعامل معها.
  15. أجد مثل هاته الأسئلة الأكثر ترددا على مسامع المترددين على المجال من الجدد، والإجابة باختصار هي: لا. وستضل تسمع ذلك طوال مسيرتك وحتى أثناء عملك في مجال تخصصك بالويب. فمع تزايد الاعتماد على الويب والتكنولوجيات الجديدة منه مثل تطبيقات الويب التقدمية Progressive web applications وتطبيقات الصفحة الواحدة Single page applications وتطبيقات SSR وغيرها .. سيزيد الطلب على تخصصات أكثر بهاته المجالات وسيخلق فرص عمل أكثر فيها. وهو ما يشهده المجال مؤخرا. فضلا عن المجتمعات البرمجية التي تدعمه وتحاول بشكل دائم تحسينه وخدمة أغراض أخرى فيه. هذا بجانب اسهامات التطبيقات المتنقلة والهجينة فيه، فباستعمال جافاسكربت فقط سيمكنك انشاء تطبيقات ويب وتطبيقات سطح مكتب وتطبيقات Android باستخدام التقنيات الهجينة. بالنسبة لمستقبل مطوري الويب، قد نرى استحداث مجالات عمل أكثر تخصصا وأكثر تعمقا، أو طلبا لتخصصات أكثر شمولا مثل تخصص تطوير الويب الشامل. ويستبعد جدا بل ولن يمكن بأي حال من الأحوال الاستغناء عنهم أو استبدالهم.
  16. اضافة الى ما اشير اليه في التعليقات السابقة، فيما يلي بعض الخطوات العملية للقيام بذلك: قم بتحليل اهتماماتك ومهاراتك: قم بتقييم اهتماماتك ومهاراتك الحالية في مجال البرمجة. ما هي المجالات التي تثير اهتمامك بشكل خاص؟ وما هي المهارات التي تجيدها بالفعل؟ اكتب قائمة بالمجالات التي تود استكشافها وتعلمها. ابحث عن معلومات حول المجالات المختلفة: استخدم المصادر المتاحة عبر الإنترنت للتعرف على المجالات المختلفة في مجال البرمجة. اقرأ المقالات، وشاهد الفيديوهات، واستكشف المجتمعات المهنية والمنتديات. حاول فهم ماهية كل مجال وماهي التقنيات والأدوات المستخدمة فيه وما الى ذلك. قم بالتواصل مع مبرمجين ذوي خبرة: ابحث عن فرص للتواصل مع مبرمجين ذوي خبرة في المجالات التي تهتم بها واستشر كل منهم. قد تجد مجموعات أو منتديات عبر الإنترنت حيث يمكنك طرح الأسئلة واستفساراتك. استفد من تجاربهم ونصائحهم في اتخاذ قرارك. ابدأ بمجال واحد وقم بتوسيع معرفتك: قد تجد من الأفضل أن تبدأ بمجال معين حيث تشعر بالراحة والثقة وتستطيع بناء قاعدة جيدة فيه، ثم توسع معرفتك وتستكشف مجالات أخرى مع مرور الوقت. فكامل مجالات البرمجة تلتقي في نقطة ما في الأخير، وستجد أن الأمر هو نفسه في كامل اللغات وأطر العمل. الذي يختلف هو بعض السياقات والاصطلاحات لا أكثر ولا أقل .. ويمكن للمتعلم تعليما صحيحا ودقيقا أن يكتسب معرفة تخوله لدخول أي مجال آخر.
  17. إذا كنت ترغب في استخدام جميع الثلاثة متغيرات في رابط واحد، فيمكنك تعديل القاعدة لتتناسب مع ذلك. يمكنك استخدام القاعدة التالية: RewriteEngine On RewriteRule ^egypt/(.*)$ egypt.php?params=$1 [L] RewriteEngine On RewriteRule ^egypt/(.*)$ egypt.php?params=$1 [L] بهذه الطريقة، يمكنك استخدام الروابط التالية على نفس الصفحة egypt.php: www.example.com/egypt/cairo/ www.example.com/egypt/cairo/almaadi/ www.example.com/egypt/cairo/almaadi/rent/ وسيتم تمرير الجزء الكامل بعد /egypt/ كقيمة واحدة للمتغير params في egypt.php. في داخل egypt.php، يمكنك استخدام دالة مثل explode() لتجزئة القيمة والوصول إلى كل جزء على حدة.
  18. من الصعب الإحاطة بأسباب المشكلة على نحو دقيق، ولكن عموما قومي بالتأكد من كل من: وجود الملفات في المسار الصحيح: تحقق من أن ملفات home.glb و script.js موجودة في المسار الصحيح داخل مشروع Three.js الخاص بك. الملفات تحمّل بنجاح: تأكد من أن المتصفح يمكنه الوصول إلى الملفات اللازمة. يمكنك التحقق من ذلك من خلال فحص أداة المطور (Developer Tools) في المتصفح والتأكد من وجود أي أخطاء في تحميل الملفات أو أي أخطاء أخرى في وحدة التحكم. التحقق من دعم المتصفح: تأكد من أن المتصفح الذي تستخدمه يدعم جميع الميزات والتقنيات المستخدمة في مشروع Three.js الخاص بك. جربي ايضا تعديل المسار: // resource URL '/home.glb', ليصبح: // resource URL './home.glb', أو: // resource URL 'home.glb', ان كان على نفس مستوى ملف script.js، لأنه قد يكون هنالك مشكلة بتكوين مسارات نسبية انطلاقا من هذا المسار.
  19. لا بالطبع، ليس ان تم القيام بالأمر بشكل جيد .. فإذا كنت تستخدم مشروع Firebase واحد لإرسال الإشعارات لتطبيقين منفصلين، فيجب التأكد من تكوين الإشعارات بشكل صحيح في مشروع Firebase واحد وربطه بكلا التطبيقين لإجتناب أي سيناريو مغلوط مثل تكرار ارسال الاشعارات. هنا بعض الخطوات التي يمكنك اتباعها لتأكيد إرسال الإشعارات لكل تطبيق بشكل منفصل: تأكد من أنك قمت بإنشاء مشروع Firebase واحد وربطه بكلا التطبيقين في واجهة Firebase Console. تأكد من أنك قمت بتكوين ملف google-services.json الخاص بمشروع Firebase بشكل صحيح في كلا التطبيقين. كل تطبيق يجب أن يحتوي على ملف google-services.json الخاص به. في كود التطبيق الخاص بكل تطبيق، تأكد من تهيئة رمز المشروع الصحيح في ملف التكوين. يمكنك العثور على رمز المشروع في واجهة Firebase Console تحت إعدادات المشروع. استخدم توكن مختلف لكل تطبيق عند إرسال الإشعارات. قم بتخصيص الحمل (payload) لكل تطبيق بشكل فريد وقم بإرسال الإشعارات بواسطة التوكن المناسب لكل تطبيق.
  20. طبعا فإن هذا يعتمد على السوق التي تستهدفها وتريد النشاط فيها بدرجة أولى، ولكن فيما يلي بعض المقارنات بخصوص جزئيات مهمة من كل منهما: MERN Stack: يستخدم لغة JavaScript في الجانب الأمامي والخلفي. يوفر MongoDB كقاعدة بيانات غير علائقية. يستخدم Express.js كإطار عمل للواجهة الخلفية. يستخدم React لبناء واجهة المستخدم الديناميكية. يعتبر سهل التعلم والاستخدام لمطوري JavaScript. يوفر تجربة تطوير متكاملة وفعالة لتطبيقات الويب الحديثة. PHP: يستخدم لغة PHP في الجانب الخلفي لتطبيقات الويب. يحتوي على مجموعة واسعة من الإطارات مثل Laravel وSymfony وغيرها. يدعم العديد من قواعد البيانات الشائعة مثل MySQL وPostgreSQL. يستخدم لبناء مواقع الويب الديناميكية وتطبيقات الشركات الكبرى. يعتبر من أحد اللغات الأكثر استخدامًا في صناعة تطوير الويب. ولذلك، فان كلا من الخيارين مناسب وعليه طلب في سوق العمل.
  21. مطلبك عام جدا، ويحتاج تخصيصا وتفصيلا لإعطاء اجابة أكثر دقة، ولكن عموما، لإضافة إشعارات إلى تطبيقك على منصة Android باستخدام Android Studio، يمكنك اتباع الخطوات التالية: قم بإنشاء ملف XML لتصميم شكل الإشعار. يمكنك استخدام عناصر مثل TextView وImageView وغيرها لتخصيص مظهر الإشعار. قم بإنشاء ملف Java للتحكم في سلوك الإشعار. في هذا الملف، يمكنك تحديد عناصر الإشعار مثل النص والصورة وعمليات النقر عليها. في ملف Java الرئيسي لتطبيقك، قم بتهيئة نظام الإشعارات وتكوين القناة الافتراضية للإشعارات. يجب عليك تحديد اسم ووصف للقناة وتعيين الأذونات المناسبة (نتحدث هنا عن جزئية متفرعة جدا، وهي تقنيات الويب سوكيت لتحقيق التخاطب ما بين تطبيق الخادم والعميل في الوقت الفعلي). قم بكتابة الشفرة اللازمة لإظهار الإشعار عند الحدث المناسب، مثل استلام رسالة جديدة أو إكمال مهمة. اختبر التطبيق وتأكد من ظهور الإشعارات بشكل صحيح عند الأحداث المناسبة.
  22. ليس تماما، الكثير منها تعتبر اللغة الانجليزية كنقطة اضافية plus point فقط ولا تقدم ذلك كشرط أساسي اذ أن هنالك شروطا أخرى تعد اولى واكثر اعتبارا منها من مثل الخبرة بمجال العمل والقدرة على التواصل وما الى ذلك، ولكن هذا لا يمنع من وجود بعض الاستثناءات وبعض الشركات التي تتطلب ذلك كشرط أساسي ضمن متطلبات الوظيفة. بالإضافة إلى ذلك، هناك الكثير من الشركات تاتقنية التي تركز على خدمة السوق المحلية وعلى تطوير البرمجيات باللغة العربية. يمكنك عمل استقصاء بسيط واستعمال مواقع مثل بعيد وBayt وindeed لأخذ فكرة وتصور شامل عن متطلبات اللغة الانجليزية في مجالات البرمجة في الوطن العربي بشكل عام وفي السعودية حصرا وبشكل خاص.
  23. جرب كتابة المكون وفق السياق التالي: import React from 'react'; export function Text(props) { return ( <p>{props.text}</p> ); } اعرف اكثر عن الاختلاف بين Function Components و Class Components في React وأفضل الأساليب المستخدمة من خلال الرابط:
  24. بجانب المقترح، أفضل عن نفسي استعمال حزمة express-jwt، وهي واحدة من الحزمة التي توفر وسيلة سهلة لتنفيذ نظام المصادقة والتحقق من الهوية باستخدام JSON Web Tokens (JWT) في تطبيقات Express. لتثبيت حزمة "express-jwt" واستخدامها في مشروعك، يمكنك اتباع الخطوات التالية: قم بتثبيت حزمة "express-jwt" من خلال تشغيل الأمر التالي: npm install express-jwt في ملف التطبيق الخاص بك (مثل app.js أو server.js)، قم بتضمين حزمة "express-jwt" واستخدامها في تطبيق Express الخاص بك، كما هو موضح في المثال التالي: const express = require('express'); const jwt = require('express-jwt'); const jwks = require('jwks-rsa'); const express = require('express'); const jwt = require('express-jwt'); const jwks = require('jwks-rsa'); const app = express(); // تهيئة express-jwt للتحقق من التوكن وفحص الأذونات const checkJwt = jwt({ secret: jwks.expressJwtSecret({ cache: true, rateLimit: true, jwksRequestsPerMinute: 5, jwksUri: 'https://your-auth0-domain/.well-known/jwks.json', // رابط تحميل مفاتيح التوقيع العمومية }), audience: 'your-audience', // الجمهور المستهدف للتوكن issuer: 'https://your-auth0-domain/', // المصدر الذي أصدر التوكن algorithms: ['RS256'], // خوارزمية التوقيع المستخدمة في التوكن }); // تطبيق حزمة express-jwt كوسيط (Middleware) في تطبيق Express app.use(checkJwt); // تعريف طرق التوجيه الخاصة بك // مثال: طريقة GET محمية بالتحقق من التوكن والأذونات app.get('/protected', checkJwt, (req, res) => { // قم بتنفيذ الأعمال المطلوبة للطريق المحمية هنا res.send('Protected route'); }); // استجابة للأخطاء في التوكن أو الوصول المرفوض app.use((err, req, res, next) => { if (err.name === 'UnauthorizedError') { res.status(401).json('Unauthorized'); } }); // بدء تشغيل الخادم app.listen(3000, () => { console.log('Server started on port 3000'); }); تذكر أن تعديل القيم في الكود السابق وفقًا لاحتياجات تطبيقك الفعلية، مثل رابط تحميل مفاتيح التوقيع العمومية والجمهور المستهدف والمصدر الذي أصدر التوكن وما الى ذلك. طبعا فإن هذا مثال بسيط على كيفية استخدام حزمة "express-jwt" لتنفيذ نظام المصادقة والتحقق من الهوية في تطبيق Express الخاص بك. يمكنك استكشاف المزيد من الوظائف والتكوينات المتاحة في وثائق الحزمة لتلبية متطلبات تطبيقك والتوسع في الفكرة بشكل أفضل.
  25. وعليكم السلام ورحمة الله وبركاته، إذا كان هدفك الأساسي هو أن تصبح مطور واجهة خلفية، فإن اختيار اللغة المناسبة يعتمد على عدة عوامل. فكل من Python وJavaScript (مع Node.js) لديهما مزاياهما واستخداماتهما الخاصة. فيما يلي بعض النقاط التي يمكن أن تساعدك في اتخاذ القرار: Python: تعتبر لغة برمجة سهلة التعلم وقوية في نفس الوقت. إذا كنت مبتدئًا في تعلم البرمجة بشكل عام، فقد يكون Python خيارًا ممتازًا لك. فهو من اللغات التي تتميز ببيئة تطوير قوية ومجتمع نشط، حيث يمكنك الوصول إلى مكتبات وأدوات غنية تساعدك في تطوير التطبيقات بسهولة. هذا بجانب وجود احد اقوى اطر عملها ضمن الساحة وهو اطار Django المشهور لتطوير تطبيقات الويب، اذ يوفر هيكلا تنظيميا قويا وأدوات متقدمة لبناء تطبيقات الويب القوية والقابلة للتطوير. JavaScript: لغة البرمجة الأساسية لتطوير الواجهة الأمامية لتطبيقات الويب. إذا كان لديك رغبة في تطوير واجهة مستخدم ديناميكية وتفاعلية، فإن تعلم JavaScript ضروري. و مع Node.js، يمكنك استخدام JavaScript في تطوير الجانب الخادم أيضًا. يتيح لك Node.js بناء تطبيقات الويب الكاملة باستخدام نفس اللغة على الجانبين الأمامي والخلفي. JavaScript هي الأخرى لديها مجتمع نشط وواسع الانتشار، وهناك العديد من المكتبات والإطارات المتاحة التي تسهل تطوير تطبيقات الويب. وعموما، أي منهما يعتبر خيارا جيدا الآن.
×
×
  • أضف...