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

Adnane Kadri

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

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

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

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

    51

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

  1. لتلافي حدوث مثل هاته المشكلة قم بوضع كل من الصورة والنص في حاوية مرنة يتم تطبيق التنسيق display flex عليها، ويتم ضبط قيمة align-items لديها بـ center: <div> <h2>hey</h2> <img src="path/to/image" /> </div> div{ display: flex; align-items: center; } الخاصية align-items
  2. قم بضبط استعلام وسائط media query يحدد قيمة للخاصية left في اطار معين فقط. نحدد هذا الاطار باستعمال min-width مثلا: @media screen and (min-width: 768px) { form::before { left: 0; } } ثم يمكنك ضبط اي اسعلامات وسائط اخرى تكون دون هذا العرض، أي نستعمل max-width مثل السابق.
  3. يمكنك الغاء القيمة المسندة للخاصية 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; } } يفترض أن يحل ذلك مشكلتك.
  4. يحدث هذا الخطأ عندما يستخدم تطبيق 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 بمجرد أن تكمل عملية الترحيل، يفترض ان تحل مشكلتك.
  5. مثلما أشار مصطفى، فإنه وبشكل عام تعتبر لغة Python اللغة الأكثر استخدامًا لتعلم الآلة وتحليل البيانات للأسباب: سهولة التعلم: يعتبر لغة برمجة سهلة التعلم وفهمها، وتوفر العديد من الموارد والمكتبات المتخصصة في تعلم الآلة وتحليل البيانات. مجتمع نشط: اذ تتمتع بمجتمع نشط من المطورين والمتخصصين في مجال البيانات، وبالتالي يتوفر العديد من الدروس والمقالات والأدوات التي تسهل عملية التعلم والتطوير. مكتبات قوية: يزخر Python بمكتبات قوية وشهيرة مثل NumPy وPandas وMatplotlib وScikit-learn وغيرها، والتي تسهل عملية تحليل البيانات وبناء النماذج التنبؤية وما الى ذلك. وبالطبع، يمكن استخدام c++ في تعلم الآلة وتحليل البيانات أيضًا، لكنها قد تكون أكثر تعقيدًا في البداية وتحتاج إلى مستوى عالٍ من المعرفة في البرمجة. لذا، إذا كنت مبتدئًا في هذا المجال، فإنه ينصح بالبدء بتعلم Python ثم توسيع معرفتك إلى لغات أخرى حسب احتياجاتك واهتماماتك المستقبلية. لأن لغة c++ لغة واسعة جدا ولها مكانة هامة في عالم البرمجة وتستخدم في العديد من المجالات مثل تطوير الألعاب، برمجة النظم، الحوسبة العلمية، والمضاعفات الرقمية. ولذلك فإن تعقيدها يعطيها أفضلية السرعة وينتزع منها سهولة تعاطيها والتعامل معها.
  6. أجد مثل هاته الأسئلة الأكثر ترددا على مسامع المترددين على المجال من الجدد، والإجابة باختصار هي: لا. وستضل تسمع ذلك طوال مسيرتك وحتى أثناء عملك في مجال تخصصك بالويب. فمع تزايد الاعتماد على الويب والتكنولوجيات الجديدة منه مثل تطبيقات الويب التقدمية Progressive web applications وتطبيقات الصفحة الواحدة Single page applications وتطبيقات SSR وغيرها .. سيزيد الطلب على تخصصات أكثر بهاته المجالات وسيخلق فرص عمل أكثر فيها. وهو ما يشهده المجال مؤخرا. فضلا عن المجتمعات البرمجية التي تدعمه وتحاول بشكل دائم تحسينه وخدمة أغراض أخرى فيه. هذا بجانب اسهامات التطبيقات المتنقلة والهجينة فيه، فباستعمال جافاسكربت فقط سيمكنك انشاء تطبيقات ويب وتطبيقات سطح مكتب وتطبيقات Android باستخدام التقنيات الهجينة. بالنسبة لمستقبل مطوري الويب، قد نرى استحداث مجالات عمل أكثر تخصصا وأكثر تعمقا، أو طلبا لتخصصات أكثر شمولا مثل تخصص تطوير الويب الشامل. ويستبعد جدا بل ولن يمكن بأي حال من الأحوال الاستغناء عنهم أو استبدالهم.
  7. اضافة الى ما اشير اليه في التعليقات السابقة، فيما يلي بعض الخطوات العملية للقيام بذلك: قم بتحليل اهتماماتك ومهاراتك: قم بتقييم اهتماماتك ومهاراتك الحالية في مجال البرمجة. ما هي المجالات التي تثير اهتمامك بشكل خاص؟ وما هي المهارات التي تجيدها بالفعل؟ اكتب قائمة بالمجالات التي تود استكشافها وتعلمها. ابحث عن معلومات حول المجالات المختلفة: استخدم المصادر المتاحة عبر الإنترنت للتعرف على المجالات المختلفة في مجال البرمجة. اقرأ المقالات، وشاهد الفيديوهات، واستكشف المجتمعات المهنية والمنتديات. حاول فهم ماهية كل مجال وماهي التقنيات والأدوات المستخدمة فيه وما الى ذلك. قم بالتواصل مع مبرمجين ذوي خبرة: ابحث عن فرص للتواصل مع مبرمجين ذوي خبرة في المجالات التي تهتم بها واستشر كل منهم. قد تجد مجموعات أو منتديات عبر الإنترنت حيث يمكنك طرح الأسئلة واستفساراتك. استفد من تجاربهم ونصائحهم في اتخاذ قرارك. ابدأ بمجال واحد وقم بتوسيع معرفتك: قد تجد من الأفضل أن تبدأ بمجال معين حيث تشعر بالراحة والثقة وتستطيع بناء قاعدة جيدة فيه، ثم توسع معرفتك وتستكشف مجالات أخرى مع مرور الوقت. فكامل مجالات البرمجة تلتقي في نقطة ما في الأخير، وستجد أن الأمر هو نفسه في كامل اللغات وأطر العمل. الذي يختلف هو بعض السياقات والاصطلاحات لا أكثر ولا أقل .. ويمكن للمتعلم تعليما صحيحا ودقيقا أن يكتسب معرفة تخوله لدخول أي مجال آخر.
  8. إذا كنت ترغب في استخدام جميع الثلاثة متغيرات في رابط واحد، فيمكنك تعديل القاعدة لتتناسب مع ذلك. يمكنك استخدام القاعدة التالية: 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() لتجزئة القيمة والوصول إلى كل جزء على حدة.
  9. من الصعب الإحاطة بأسباب المشكلة على نحو دقيق، ولكن عموما قومي بالتأكد من كل من: وجود الملفات في المسار الصحيح: تحقق من أن ملفات home.glb و script.js موجودة في المسار الصحيح داخل مشروع Three.js الخاص بك. الملفات تحمّل بنجاح: تأكد من أن المتصفح يمكنه الوصول إلى الملفات اللازمة. يمكنك التحقق من ذلك من خلال فحص أداة المطور (Developer Tools) في المتصفح والتأكد من وجود أي أخطاء في تحميل الملفات أو أي أخطاء أخرى في وحدة التحكم. التحقق من دعم المتصفح: تأكد من أن المتصفح الذي تستخدمه يدعم جميع الميزات والتقنيات المستخدمة في مشروع Three.js الخاص بك. جربي ايضا تعديل المسار: // resource URL '/home.glb', ليصبح: // resource URL './home.glb', أو: // resource URL 'home.glb', ان كان على نفس مستوى ملف script.js، لأنه قد يكون هنالك مشكلة بتكوين مسارات نسبية انطلاقا من هذا المسار.
  10. لا بالطبع، ليس ان تم القيام بالأمر بشكل جيد .. فإذا كنت تستخدم مشروع Firebase واحد لإرسال الإشعارات لتطبيقين منفصلين، فيجب التأكد من تكوين الإشعارات بشكل صحيح في مشروع Firebase واحد وربطه بكلا التطبيقين لإجتناب أي سيناريو مغلوط مثل تكرار ارسال الاشعارات. هنا بعض الخطوات التي يمكنك اتباعها لتأكيد إرسال الإشعارات لكل تطبيق بشكل منفصل: تأكد من أنك قمت بإنشاء مشروع Firebase واحد وربطه بكلا التطبيقين في واجهة Firebase Console. تأكد من أنك قمت بتكوين ملف google-services.json الخاص بمشروع Firebase بشكل صحيح في كلا التطبيقين. كل تطبيق يجب أن يحتوي على ملف google-services.json الخاص به. في كود التطبيق الخاص بكل تطبيق، تأكد من تهيئة رمز المشروع الصحيح في ملف التكوين. يمكنك العثور على رمز المشروع في واجهة Firebase Console تحت إعدادات المشروع. استخدم توكن مختلف لكل تطبيق عند إرسال الإشعارات. قم بتخصيص الحمل (payload) لكل تطبيق بشكل فريد وقم بإرسال الإشعارات بواسطة التوكن المناسب لكل تطبيق.
  11. طبعا فإن هذا يعتمد على السوق التي تستهدفها وتريد النشاط فيها بدرجة أولى، ولكن فيما يلي بعض المقارنات بخصوص جزئيات مهمة من كل منهما: MERN Stack: يستخدم لغة JavaScript في الجانب الأمامي والخلفي. يوفر MongoDB كقاعدة بيانات غير علائقية. يستخدم Express.js كإطار عمل للواجهة الخلفية. يستخدم React لبناء واجهة المستخدم الديناميكية. يعتبر سهل التعلم والاستخدام لمطوري JavaScript. يوفر تجربة تطوير متكاملة وفعالة لتطبيقات الويب الحديثة. PHP: يستخدم لغة PHP في الجانب الخلفي لتطبيقات الويب. يحتوي على مجموعة واسعة من الإطارات مثل Laravel وSymfony وغيرها. يدعم العديد من قواعد البيانات الشائعة مثل MySQL وPostgreSQL. يستخدم لبناء مواقع الويب الديناميكية وتطبيقات الشركات الكبرى. يعتبر من أحد اللغات الأكثر استخدامًا في صناعة تطوير الويب. ولذلك، فان كلا من الخيارين مناسب وعليه طلب في سوق العمل.
  12. مطلبك عام جدا، ويحتاج تخصيصا وتفصيلا لإعطاء اجابة أكثر دقة، ولكن عموما، لإضافة إشعارات إلى تطبيقك على منصة Android باستخدام Android Studio، يمكنك اتباع الخطوات التالية: قم بإنشاء ملف XML لتصميم شكل الإشعار. يمكنك استخدام عناصر مثل TextView وImageView وغيرها لتخصيص مظهر الإشعار. قم بإنشاء ملف Java للتحكم في سلوك الإشعار. في هذا الملف، يمكنك تحديد عناصر الإشعار مثل النص والصورة وعمليات النقر عليها. في ملف Java الرئيسي لتطبيقك، قم بتهيئة نظام الإشعارات وتكوين القناة الافتراضية للإشعارات. يجب عليك تحديد اسم ووصف للقناة وتعيين الأذونات المناسبة (نتحدث هنا عن جزئية متفرعة جدا، وهي تقنيات الويب سوكيت لتحقيق التخاطب ما بين تطبيق الخادم والعميل في الوقت الفعلي). قم بكتابة الشفرة اللازمة لإظهار الإشعار عند الحدث المناسب، مثل استلام رسالة جديدة أو إكمال مهمة. اختبر التطبيق وتأكد من ظهور الإشعارات بشكل صحيح عند الأحداث المناسبة.
  13. ليس تماما، الكثير منها تعتبر اللغة الانجليزية كنقطة اضافية plus point فقط ولا تقدم ذلك كشرط أساسي اذ أن هنالك شروطا أخرى تعد اولى واكثر اعتبارا منها من مثل الخبرة بمجال العمل والقدرة على التواصل وما الى ذلك، ولكن هذا لا يمنع من وجود بعض الاستثناءات وبعض الشركات التي تتطلب ذلك كشرط أساسي ضمن متطلبات الوظيفة. بالإضافة إلى ذلك، هناك الكثير من الشركات تاتقنية التي تركز على خدمة السوق المحلية وعلى تطوير البرمجيات باللغة العربية. يمكنك عمل استقصاء بسيط واستعمال مواقع مثل بعيد وBayt وindeed لأخذ فكرة وتصور شامل عن متطلبات اللغة الانجليزية في مجالات البرمجة في الوطن العربي بشكل عام وفي السعودية حصرا وبشكل خاص.
  14. جرب كتابة المكون وفق السياق التالي: import React from 'react'; export function Text(props) { return ( <p>{props.text}</p> ); } اعرف اكثر عن الاختلاف بين Function Components و Class Components في React وأفضل الأساليب المستخدمة من خلال الرابط:
  15. بجانب المقترح، أفضل عن نفسي استعمال حزمة 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 الخاص بك. يمكنك استكشاف المزيد من الوظائف والتكوينات المتاحة في وثائق الحزمة لتلبية متطلبات تطبيقك والتوسع في الفكرة بشكل أفضل.
  16. وعليكم السلام ورحمة الله وبركاته، إذا كان هدفك الأساسي هو أن تصبح مطور واجهة خلفية، فإن اختيار اللغة المناسبة يعتمد على عدة عوامل. فكل من Python وJavaScript (مع Node.js) لديهما مزاياهما واستخداماتهما الخاصة. فيما يلي بعض النقاط التي يمكن أن تساعدك في اتخاذ القرار: Python: تعتبر لغة برمجة سهلة التعلم وقوية في نفس الوقت. إذا كنت مبتدئًا في تعلم البرمجة بشكل عام، فقد يكون Python خيارًا ممتازًا لك. فهو من اللغات التي تتميز ببيئة تطوير قوية ومجتمع نشط، حيث يمكنك الوصول إلى مكتبات وأدوات غنية تساعدك في تطوير التطبيقات بسهولة. هذا بجانب وجود احد اقوى اطر عملها ضمن الساحة وهو اطار Django المشهور لتطوير تطبيقات الويب، اذ يوفر هيكلا تنظيميا قويا وأدوات متقدمة لبناء تطبيقات الويب القوية والقابلة للتطوير. JavaScript: لغة البرمجة الأساسية لتطوير الواجهة الأمامية لتطبيقات الويب. إذا كان لديك رغبة في تطوير واجهة مستخدم ديناميكية وتفاعلية، فإن تعلم JavaScript ضروري. و مع Node.js، يمكنك استخدام JavaScript في تطوير الجانب الخادم أيضًا. يتيح لك Node.js بناء تطبيقات الويب الكاملة باستخدام نفس اللغة على الجانبين الأمامي والخلفي. JavaScript هي الأخرى لديها مجتمع نشط وواسع الانتشار، وهناك العديد من المكتبات والإطارات المتاحة التي تسهل تطوير تطبيقات الويب. وعموما، أي منهما يعتبر خيارا جيدا الآن.
  17. بجانب ما اقترح مصطفى، يمكنك القيام بذلك عن طريق التحرير على نسق القوالب وفق المراحل التالية: ارفع الأيقونة التي قمت بتصميمها إلى أي خدمة الاستضافة الخاصة بك. احفظ رابط الصورة المرفوعة للأيقونة. في لوحة التحكم في بلوجر، اختر "تخطيط المدونة" ثم انقر على "تحرير HTML". استخدم الأمر <link> لربط الصفحة بالأيقونة، ويجب أن يتم وضع هذا الأمر داخل عنصر <head> في صفحة HTML. استخدم الكود التالي: <link rel="shortcut icon" href="رابط الصورة"> قم بتغيير "رابط الصورة" في الأمر <link> برابط الصورة التي قمت بتحميلها في الخطوة الثانية. احفظ التغييرات وشاهد النتيجة بالذهاب إلى مدونتك وتحديث الصفحة. ستظهر الأيقونة بجانب عنوان الموقع في علامة التبويب.
  18. لفعل ذلك، اتبع الخطوات التالية: اختر النص الذي تريد تحويله من الجهة اليمنى إلى اليسرى باستخدام أداة النص. اذهب إلى القائمة الرئيسية "عناصر" Elements وحدد "عنصر النص" Text Frame. اذهب إلى قائمة الخيارات "نص الإطار" Text Frame Options وانقر فوق علامة التبويب "المحتوى" Content. حدد "يمين لليسار" Right-to-Left في الخيار "توجيه النص" Text Direction.
  19. هذه الرسالة تعني أنه تم رفض عملية الدفع (push) لأن هناك تعارض بين المشروع الحالي الذي تحاول دفعه وبين النسخة الحالية للمشروع في مستودع GitHub. هذا قد يحدث إذا قام شخص آخر بدفع تعديلات على المشروع من مستودع GitHub. لحل هذه المشكلة، يجب عليك إما استخدام الأمر git pull لجلب التحديثات الأخيرة من المستودع البعيد (remote repository) ودمجها مع ملفات المشروع الخاص بك ومن ثم القيام بعملية الدفع مرة أخرى. أو يمكنك استخدام الأمر git push --force لجبر الدفع وإلغاء أي تعديلات تم القيام بها في المستودع البعيد. ومع ذلك، يجب عليك أن تكون حذرًا عند استخدام هذا الأمر لأنه يمكن أن يؤدي إلى فقدان التعديلات التي تم إدخالها في المستودع البعيد من قبل أي شخص آخر.
  20. قد يكون هنالك بعض الجدل الخفيف بخصوص ما يقصد بالأساسيات ما بين مطوري جافاسكربت فتجد البعض يعتبر ما هو نحو التعامل مع مختلف أنواع البيانات والمتغيرات والعمليات الحسابية البسيطة والشروط والعبارات الشرطية والحلقات والتكرارات والدوال كافيا كأساسيات اللغة. ولكن البعض الآخر يذهب إلى أكثر من ذلك فيعتبر أنه بجانب ذلك ينبغي التعرض لمفاهيم اكثر تقدما من مثل مثل الدوال العالية الأمان، والوعود، والبرمجة الشيئية وما الى ذلك. ولكن عموما، سيكفيك ما تعلمته حتى الآن كأساسيات، اذ سيعينك هذا على فهم واستيعاب مفاهيم اكثر تقدما في اللغة.
  21. زيادة على ما اشار اليه المدربون، فإنه يجب أولا ادراك الفرق بين typescript و javascript لكي يتبين ما يمكن القيام به، فـ TypeScript هي لغة برمجة تعتمد على JavaScript ولكنها تضيف عليها بعض الميزات الإضافية. وتعد TypeScript أحد أدوات التطوير التي توفر ميزات البرمجة الشاملة بما في ذلك إمكانية التعلم العميق، إضافة أنواع البيانات والتأكد من صحتها، والوصول إلى ميزات جديدة مثل العمليات الجبارة والجداول الزمنية الأحادية وما الى ذلك. بالمقارنة مع JavaScript، يوفر TypeScript ميزات إضافية مثل: التحقق من الأنواع: يساعد في الحد من الأخطاء التي يمكن أن تحدث في تطبيقات JavaScript التقليدية. تعزيز الإنتاجية: يوفر الإكمال التلقائي والتصحيح النحوي ومراقبة الرموز. التعلم العميق: يساعد في تحسين أداء تطبيقات الذكاء الاصطناعي وتعلم الآلة والتصنيف والتنبؤ وغير ذلك. على الرغم من ذلك، فإن TypeScript أكثر تعقيدًا من JavaScript، وقد يستغرق الأمر بعض الوقت لتعلمها واستخدامها بكفاءة. وتحتاج TypeScript إلى مترجم خاص بها يقوم بترجمة الشفرة البرمجية المكتوبة بلغة TypeScript إلى الشفرة البرمجية المكتوبة بلغة JavaScript ليتم تشغيلها على المتصفحات أو الخوادم. وعليه، فإنه بالتأكيد يمكن إنشاء تطبيق ويب مثال للسوبر ماركت باستخدام كلا من JavaScript و TypeScript. فكلا اللغتين يتمتعان بقدرات قوية لتطوير تطبيقات الويب. بالإضافة إلى ذلك، هناك العديد من اللغات الأخرى التي يمكن استخدامها في تطوير تطبيقات الويب، مثل Python و Ruby وPHP وغيرها. وكل من هاته اللغات يفي بالغرض ويقوم بنفس الشيء، ويمكنك في كل حال من القيام بتطوير تطبيق ويب لسوبر ماركت.
  22. زيادة على ما اشار اليه المدربون في التعليقات السابقة، بالنسبة لعلوم البيانات، يمكن البدء بتعلم الأساسيات في الإحصاء والرياضيات والبرمجة، ومن ثم التركيز على تعلم لغات البرمجة المشهورة في هذا المجال مثل Python و R. يمكن الحصول على العديد من الدورات المجانية والمدفوعة على الإنترنت لتعلم هذه المهارات، كما يمكن الحصول على شهادات معتمدة في هذا المجال مثل شهادة Certified Data Scientist من معهد SAS. بالنسبة للذكاء الاصطناعي، يمكن البدء بتعلم الرياضيات المتقدمة والبرمجة، ومن ثم التركيز على تعلم تقنيات الذكاء الاصطناعي مثل التعلم العميق والتعلم الآلي ومعالجة اللغات الطبيعية والتعلم التعاوني والشبكات العصبية الاصطناعية والتعلم المعزز وما الى ذلك. يمكن الحصول على العديد من الدورات المجانية والمدفوعة على الإنترنت لتعلم هذه المهارات، كما يمكن الحصول على شهادات معتمدة في هذا المجال مثل شهادة TensorFlow Developer من شركة Google او غيرها.
  23. تقييم الألعاب والعناصر بشكل عام جيد الى ممتاز، وأهنئك على قيامك بمثل هاته الخطوات فهي ما ستعزز فهمك لجافاسكربت على نحو أدق .. هذا بجانب ان طريقتك في كتابة الاكواد واعتمادك البرمجة كائنية التوجه في التعامل مع الاجسام والكائنات تشير الى اهتمامك بتنظيم الشيفرة وتنظيفها وهو الأمر الآخر الذي يحسب لك، فالشيفرة تستوفي الكثير من معايير الشيفرة النظيفة والكثير من معايير جودة البرمجيات مثل قابلية التوسع والصيانة وما الى ذلك. سيجعل هذا من الممكن التوسع في الألعاب اكثر عن طريق استحداث ميزات أخرى دون الاخلال بتلك الموجودة، مثل اضافة مؤثرات صوتية كاصوات الثعابين او الرصاص والتحذيرات المختلفة، بجانب التحكم في جزئيات من اللعبة مثل مستوى اللعبة وما الى ذلك (في لعبة الثعبان مثلا يترجم ذلك الى سرعة الثعبان). بعض الملاحظات البسيطة: بخصوص shooting stars، لما يظهر الجزء الأسفل اليمين فارغا. عند اعادة تحجيم الشاشة وعمل resize في لعبة الثعبان، يختفي الثعبان، تأكد من اعادة تحجيم canvas اعتبارا لهذا التحجيم.
  24. زيادة على ما أشار اليه المدربون، ففي React لا يمكن تغيير قيمة state مباشرةً بدون استخدام دالة setState. في الكود الذي قمت بمشاركته، تم استخدام الدالة useState لإنشاء حالة todos والتي يتم تعيينها مرة واحدة فقط عند تحميل الصفحة. ثم تم استخدام if و else if لتصفية todos باستخدام دالة filter، ولكن هذا لن يغير قيمة todos في state. كفكرة، يمكنك إنشاء حالة جديدة مثل filteredTodos باستخدام useState وتخزين القيم المصفاة فيها، ومن ثم تحديث filteredTodos باستخدام setFilteredTodos عند تغيير قيمة showTodo. يمكنك تمرير filteredTodos كـ props إلى مكونات أخرى للعرض. سيحل هذا المشكلة لديك، هذا بجانب ان مثل هذا السياق: todos = todos.filter(todo => !todo.status) console.log(todos); قد يؤدي الى بعض المشاكل الغير متوقعة، قم بتصريح متغير آخر وليكن filteredTodos ليكون: let filteredTodos = todos.filter(todo => !todo.status) console.log(filteredTodos); ثم ان شئت حقن هاته القيمة كقيمة todos يمكنك استعمال setTodos لذلك، setTodos(filteredTodos) فتكون القيم المصفاة هي القيم المعروضة،
  25. تشير رسالة الخطأ إلى أنك تستخدم إصدار Babel 6.26.3 ، ولكن حزمة "@babel/preset-env" تتطلب إصدار Babel "^ 7.0.0-0". لحل هذه المشكلة ، تحتاج إلى ترقية إصدار Babel الخاص بك إلى الإصدار 7 أو أعلى. لترقية إلى أحدث إصدار من Babel ، يمكنك استخدام الخطوات التالية: إزالة الإصدار الحالي من Babel: npm uninstall babel-cli babel-core babel-preset-env --save-dev تثبيت أحدث إصدار من Babel: npm install @babel/cli @babel/core @babel/preset-env --save-dev تعديل ملف package.json الخاص بك لتحديث أمر Babel CLI: "scripts": { "start": "nodemon -w src --exec "babel src"" } إنشاء ملف .babelrc في جذر مشروعك بالمحتوى التالي: { "presets": [ "@babel/preset-env" ] } ان كان السؤال الخاص بك يتعلق بدورة ما، فيفضل طرح هذا السؤال ضمن قسم تعليقات الطلبة اسفل الدرس. وسيتابع معك المدربون.
×
×
  • أضف...