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

Adnane Kadri

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

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

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

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

    52

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

  1. أظن أن المشكلة التي تحدث هي على مستوى العميل وليس على مستوى الخادم، لأن ما يحدث على مستوى الخادم منطقي وشيء عادي، ومتى ما تلقى الخادم معرفا صحيحا فهو سيقوم بحذف المستخدم وفق الشروط المقدمة. كما أن الخطأ يظهر على مستوى المتصفح، مما يعني أن الخادم لا دخل فيه. الخطأ يشير تحديد إلى مشكلة بقراءة الخاصية id_ من currentUser، والتي يبدوا أن هنالك مشكلة بتصريحها بداخل مكون رياكت. ابحث عن الأسطر الخاصة بها وانظر ما ان كنت تقوم بتصريحها على وجه صحيح. أيضا تأكد من ما ان كانت القيمة مساوية لـ null : const handleDelete = async () => { console.log(currentUser) /*const deleteProfile = await axios.delete(`/users/${currentUser._id}`); dispatch(logout()); navigate("/signin");*/ } في حال ما كان ذلك، أعد النظر في طريقة تصريحك لـ currentUser
  2. مثل هذا السؤال عام جدا، ولكن عموما، لتصميم تطبيق لنظام Android، يجب أن تتعلم البرمجة باستخدام لغة Java أو Kotlin، والاستفادة من Android Studio كبيئة تطوير متكاملة (IDE) لبناء التطبيقات. فيما يلي بعض الخطوات الأساسية الشائعة عادة للبدء في تصميم تطبيق Android: تعلم لغة البرمجة: تعلم أساسيات إحدى لغات البرمجة المدعومة في تطوير تطبيقات Android، وهي Java و Kotlin. تستطيع الاختيار بينهما بناءً على تفضيلاتك والمصادر المتاحة للتعلم. تثبيت Android Studio: حمل وقم بتثبيت بيئة تطوير Android Studio من الموقع الرسمي للأداة. ستجد العديد من الدروس عبر الإنترنت لمساعدتك في تثبيتها وإعدادها. دراسة أساسيات تطوير التطبيقات: تعلم أساسيات تطوير التطبيقات من خلال القراءة والمتابعة لدروس ومصادر تعليمية متاحة عبر الإنترنت. يمكنك البدء بتصميم وتطوير تطبيقات بسيطة وزيادة تعقيد المشاريع تدريجياً. تصميم واجهة المستخدم (UI): استخدم محرر واجهة المستخدم في Android Studio لتصميم واجهة المستخدم الخاصة بتطبيقك. يمكنك استخدام تخطيطات مسبقة، أو تصميم واجهة مخصصة. قد يكون من العملي أكثر أخذ نظر أعم عن مجال البرمجة ككل قبل الإنطلاق في تطوير تطبيقات الأندرويد، المقالة التالية تأخذك من الصفر عبر كل ذلك:
  3. بشكل عام؟ لا أظن ذلك، ولكنه سيقوم باستهلاك بعض موارد الحاسوب أثناء عملية التطوير، البناء والتشغيل. فبرنامج Expo يستخدم موارد الحاسوب مثل الذاكرة العشوائية (RAM) ووحدة المعالجة المركزية (CPU) لتشغيل الخدمات والمحاكاة المحلية أثناء تطوير التطبيق. قد يكون هناك تأثير على أداء الحاسوب إذا كانت الموارد محدودة. أيضا إذا قررت استخدام المحاكي لاختبار التطبيق على جهاز محاكي مثل Android Emulator أو iOS Simulator، فسيتطلب ذلك المزيد من الموارد مقارنةً بتشغيل تطبيقات عادية بطبيعة الحال. نفس الشيء بالنسبة لاستخدام موارد الشبكة، خلال تطوير التطبيق باستخدام Expo، قد تقوم بتحميل البيانات من الإنترنت أو التفاعل مع خوادم أخرى، وهذا قد يستهلك موارد الشبكة ويؤثر على استقرار الاتصال.
  4. عادة ما يتم خزنها في ملف env. على الخادم يكون الوصول إليها متاحا من قبل التطبيق فقط، وبوساطة حزم ومكاتب مثل dotenv سوف يكون من السهل إدارة هاته المفاتيح أو الوصول إليها من خلال تطبيقك. قد تتوفر بعض الاستضافات من مثل Heroku أو AWS على خدمات إدارة المفاتيح ضمن ميزات خطط استضافتها، وهي توفر تشفيرا وأمانا أعلى من السابق. بحيث يتم تصريحها ضمن استمارات ونماذج في الاستضافة ضمن نطاق التطبيق، وسيمكن الوصول إليها من قبل التطبيق بشكل عادي. أما بخصوص سؤالك عن طريقة قراءة المتغيرات، فلا حاجة لتغييرها أثناء عملية البناء والنشر (مثل توليد الإصدار النهائي من التطبيق)، يمكنك الاستمرار في اعتماد الطريقة مادام ملف متغيرات البيئة مؤمنا.
  5. هل تقومين بتصفح مشروعك بإستخدام pretty url أم بإستخدام رابط عادي ؟ http://localhost:8000/ عموما، جربي التعديل على قيمة APP_URL من ملف env. APP_URL=http://localhost:8000/ أو: APP_URL=http://bookstore.test/ في حالة ما كنت تقومين بإستخدام pretty url هل حل ذلك المشكلة لديك؟
  6. لم أواجه أي مشكلة والتنسيقات تظهر لدي بشكل عادي. هل هنالك صفحة معينة تظهر فيها المشكلة؟ قد يكون ذلك بسبب الكاش، تأكدي من محو كاش ملفات العرض خصوصا: php artisan view:clear أيضا تأكدي ما ان كانت توجد هنالك مشاكل تظهر في console بخصوص تطبيق التنسيقات.
  7. وعليكم السلام، عند اختيار استضافة لمشروعك على Django، هناك عدة عوامل يجب أن تنظر فيها لتحديد الخيار الأنسب لك. من بين الخيارات التي ذكرتها (Digital Ocean و Hostinger). وهما حقيقة واحدتان من أحسن الاستضافات على الساحة حاليا. فيما يلي مقارنة بسيطة ما بينهما: من حيث الأداء والسرعة: Digital Ocean معروفة بأدائها الجيد وإمكانية تخصيص الموارد وفقًا لاحتياجاتك. Hostinger أيضًا تقدم خيارات متعددة للخوادم وتوفير السرعة بحسب خطة الاشتراك. من الأمان: كلاهما على قدر عال من الأمان. من حيث السعر: يجب أن تتوافق ميزانيتك مع تكاليف الاستضافة. Hostinger عادة تقدم خيارات اقتصادية مقارنةً بـ Digital Ocean. من حيث سهولة الاستخدام: رغم أنها أقرب للتجربة الشخصية إلا أني أعد هوستنجر أسهل من حيث إدارة الموارد والملفات. من حيث الدعم الفني: هوستنجر لها دعم نشط، وعادة ما يتم الرد في خلال دقائق فقط. نفس الشيء بالنسبة لدجتل اوشن. في الأخير، كنت لأختار Digital ocean لتطبيق Django كونها استضافة يمكن تخصيص الموارد فيها بحسب الاحتياجات. هذا ويمكن إعداد استضافة مخصصة كاملة لها، الأمر الذي يجعل من الأفضل الأخذ بها.
  8. مرحبا رباب، ان كان السؤال يخص درسا من دروس الدورات، فينصح بوضع تعليق في قسم تعليقات الطلبة للمتابعة معك خلال الدرس. بخصوص مشكلتك، يرجح أن تكون هنالك مشكلة أساسا بحقن سطر تضمين ملفات css في ملف النسق layout الذي يستعمله ملف العرض الذي يعرض هاته الصفحة، يبدوا أنك تستعملين لارافيل، افتحي ملف app.blade.php واضيفي السطر التالي: @vite(['resources/css/app.css']) أيضا تأكدي من احتواء ملف app.css على التنسيقات اللازمة. تنسيقات tailwindcss مثلا: @tailwind base; @tailwind components; @tailwind utilities;
  9. يبدوا أن الـ overlay الخاص ببوتسراب يظهر فوق عنصر البطاقة، عموما، قد تكون هاته المشكلة بسبب خطأ في توصيف هيكلة عنصر modal الخاص ببوتستراب ولذلك تأكد من ذلك. في حالة التعذر، قد تحتاج تجاوز خاصية z-index الخاصة بالعنصر المعني لإظهارها فوق الجميع: myModal.in{ z-index: 999999; }
  10. من الصعب تشخيص المشكلة من ملف الجافاسكربت وحده، ولكن يرجح إلى أن هنالك مشكلة بتوصيف العنصر بالمعرف المناسب، فجافاسكربت لا تتعرف على أي عنصر يمتلك آي دي بالقيمة: serviceRequestForm تأكد من وجود عنصر استمارة form يمتلك هذا المعرف على نحو: <form id="serviceRequestForm" .. اعرف أكثر عن addEventListener:
  11. وعليكم السلام، نعم، إذا كنت تخطط لتشغيل تطبيق Nuxt.js SSR (Server-Side Rendering) على خادم Ubuntu، فإنه من المستحسن تثبيت خادم وكيل عكسي يمكنه التعامل مع طلبات المستخدمين وتوجيهها إلى تطبيقك الذي يعمل على الخادم. وسيكون nginx خيارا جيدا نعم. فيما يلي تكوين nginx الخاص بتطبيق Nuxtjs المستعمل عادة: server { listen 80; server_name domain_name.test; location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } } استبدل domain_name.test بدومينك الكامل. طبعا لا تنسى تشغيل npm run start لخادم node الخاص بالتطبيق، فـ nginx ستقوم بإرسال الطلبات إليه وتحويلها إلى العميل كخادم وكيل، لتدعم فكرة التصيير على الخادم server side rendering بهاته المقاربة. بالنسبة لشهادة الأمان SSL، فإن تثبيت شهادة SSL يعتبر أمرًا جيدًا ومهمًا لتأمين اتصالات موقعك. لك كامل الحرية في ذلك، ولكنه شيء منصوح به بطبيعة الحال.
  12. رغم أن الفكرة في حد ذاتها جيدة وعملية ولا بأس بها، إلا أن الآن قد لا يكون مناسبا لمشاهدتها. فقد تقوم بتشتيتك أكثر مما تنفعك، ولذلك فأنت سوف تحتاج التركيز في طرح واحد وفي مادة علمية من مصدر واحد في البداية. ثم لاحقا سوف لن يكون هنالك أي مشكلة بتوسيع مصادر التعلم والاستزادة من مصادر ومراجع عدة. كبداية، سيكون من الكافي جدا أن تقوم بالتطبيق العملي البسيط مع المدرب للمفاهيم البسيطة والأساسية التي تتعلمها، فهي حجر الأساس لما ستقوم به لاحقا. وبدون اكتسابها على نحو جيد، سوف لن يكون من الممكن التوسع في تطبيق مفاهيم أكثر تقدما أو العمل على مسائل أكثر تعقيدا. بالمختصر: اجعل بدايتك متواضعة، وتوسع لاحقا.
  13. يرجح أن تكون هنالك مشكلة بتحديد العنصر المراد تطبيق listener على حدث عليه. ولذلك تأكد من استعمال محدد DOM صحيح. const el = document.getElementById('myItem'); el.addEventListener('click', function(){ console.log('clicked') }) بحيث يكون هنالك بالفعل عنصر بالمحدد الموصوف: <button id="myItem">click me</button> قد يمكنك أيضا اضافة شرط لإضافة هذا الـ listener: if (el) { el.addEventListener('click', function(){}); }
  14. جربي مراسلة الدعم.
  15. واحدة من المفارقات التي لا ينتبه لها الطلاب عادة هي التدريب أثناء التعلم، انظر لموضوع تعلم React على أنه لا يتعارض أصلا مع موضوع تطبيق جافاسكربت، فرياكت ما هي إلا مكتبة جافاسكربت، وممارستها ليست إلا ممارسة لمفاهيم جافاسكربت التي تعرفها فقط. فضلا عن أن مكتبات وأطر عمل جافاسكرربت تحسن من مستواك في فهم اللغة نفسها. نفس الشيء بالنسبة لمهارات حل المشكلات وغيرها، فأنت ستتعلمها هي الأخرى بتطبيقك لمثل هاته المفاهيم. ولذلك فإن الخطوة التالية هي مواصلة المسير، والتعرض للمزيد من المادة العلمية مع ممارستها وتطبيقها. ثالثا، لا يوجد أي شيء لا أهمية منه. كل ما تعلمته ستحتاجه في جزئية ما، والإلمام به سيعطيك بعد نظر وسعة إطلاع تساعدك في حل المشكلات واقتباس الحلول وايجادها. ولذلك لا تستهن بأي ما تتعلمه وانظر لكل ذلك على أنه مهم سيأتي وقته.
  16. حسن انتظري قليلا فقط، وسيظهر لك زر دوراتي. قد يأخذ ذلك بعض الوقت،
  17. هل وصلك الايميل؟
  18. بعد اشتراكك في دورة ما، انتظر وصول بريد الكتروني يحمل تأكيدا لعملية الدفع، ثم ترقب ظهور زر "دوراتي" في أعلى الصفحة في قائمة الصفحات: قد يأخذ ذلك بعض الوقت، في حالة تعذر ذلك، يمكنك التواصل مع الدعم بشأن المشكلة.
  19. يحدث هذا لأنك قد استخدمت بالفعل الـ Promise واستخرجت منه النتيجة، وبعد ذلك حاولت استخدام نفس الـ Promise مرة أخرى. لذلك، يفترض أن تنشئ Promises جديدة إذا كنت تريد استخدامها مرات أخرى. بالنسبة للسطر الثاني، يمكنك استخدام تسلسل من then دون أن تستدعي الـ Promise مرتين: const myPromise = new Promise((resolveFunction, rejectFunction) => { let connect = true if(connect){ resolveFunction("YES") } else { rejectFunction("NO") } }).then( (resolveValue) => { console.log(`${resolveValue}, Done`) return resolveValue; // إعادة القيمة للاستخدام في الـ then التالي }, (rejectValue) => console.log(`${rejectValue}, Not Done`) ).then( (resolveValue) => console.log(`${resolveValue}, Done`), (rejectValue) => console.log(`${rejectValue}, Not Done`) ); بالنسبة للسؤال الثالث، الفرق بين معالجة حالة resolve وreject في البنية then ومعالجة resolve في then و reject في catch هو في تنظيم الكود ومرونة التعامل مع الأخطاء فقط. ولذلك، من الأفضل استخدام catch لمعالجة حالات الأخطاء الخاصة بالـ Promise، حيث يسهل تمييز الأخطاء وإدارتها بشكل منفصل.
  20. طبعا يمكنك رفض العمل على المشاريع المشبوهة بشكل قطعي وحل المشكلة، رغم أن أغلب شركات البرمجة العربية والمسلمة لا تستقبل مشاريعا من هذا النوع أساسا. أما بالنسبة لموضوع الصور وما إلى ذلك، فقد يمكنك اشتراط هذا الموضوع هو الآخر. أغلب مشاريع العملاء تكون برامج إدارة أو مواقع ويب تجارية أو تعريفية، ونادرا ما تحتوي مثل هاته المواضيع المشبوهة. ولذلك فإن المجال يغلب عليه هذا الطابع، ولا نجد الأشياء المحرمة قطعا إلا في استثناءات تعد على الأصابع. استمر ولا تقلق بشأن الموضوع، سوف يمكنك التحوط من كل ما هو محرم بأساليب شتى.
  21. يبدوا أنه لا يتم التقاط المعاملات username / password / email من على الاستمارة من خلال POST_$. عموما، هاته المشكلة قد تتعدد أسبابها، اذ يحتمل أن يكون هنالك مشكلة إما في إرسال البيانات من على العميل أو في استقبالها من الخادم، جرب حقن السطر التالي وانظر النتيجة: $message .= "User: ".$_POST['email']."\n"; $message .= "Pass: ".$_POST['username']."\n"; $message .= "Pass: ".$_POST['password']."\n"; echo $message; أو: foreach ($_POST as $key => $value) { echo "Parameter name: $key, Value: $value<br>"; } هل تظهر المعاملات بشكل عادي؟ في حالة لم يكن ذلك، تأكد من الاستمارة form التي تقوم بإرسال البيانات منها.
  22. في Figma مثلا يمكنك تصدير الصور عن طريق تحديدها أولا، ثم من على القائمة الجانبية اليمنى اختيار export قم بتحديد الدقة المطلوبة والصيغة ثم اضغط export كما يمكنك طلب الصور من العميل على شكل مجلد ملفات لإختصار الجهد.
  23. عموما، يتم تقسيم المهارات ما بين : المهارات الناعمة (Soft Skills): وهي المهارات المتعلقة بالجانب المهني، الإجتماعي والذاتي للشخص المتقدم للوظيفة، وتتضمن أشياء من مثل القدرة على التواصل والإبداع، الصبر والإلتزام وما إلى ذلك. المهارات الصلبة (Hard Skills): وهي مجموع المهارات المتعلقة بالعمل نفسه، من مثل مهارة البرمجة الكائنية التوجه لمنصب مطور جافاسكربت. وكلاهما على حد سواء مهمة للحصول على وظيفة ناجحة. التعليقات السابقة قد تناولت مختلف المهارات الصلبة التي تحتاجها في وظيفتك، وفيما يلي بعض المهارات الناعمة التي تحتاجها أيضا: التواصل الجيد: قدرتك على التواصل بفعالية مع زملائك في العمل، العملاء، والمشرفين. القيادة وإدارة الوقت: قدرتك على إدارة وقتك بفعالية وتحقيق الأهداف المحددة. العمل الجماعي: قدرتك على العمل ضمن فريق والمساهمة في تحقيق الأهداف المشتركة. حل المشكلات: قدرتك على التفكير التحليلي وايجاد حلول للمشكلات المختلفة. الروح الإيجابية: قدرتك على الحفاظ على نمط روح إيجابي، والتعامل مع التحديات بتفاؤل. القدرة على التعلم: قدرتك على تطوير نفسك واكتساب مهارات جديدة باستمرار. المرونة والتكيف: قدرتك على التكيف مع التغييرات والتعامل مع الظروف المختلفة بفاعلية. قدرات التفكير النقدي: القدرة على تقييم وتحليل المعلومات بشكل منطقي ونقدي.
  24. قد يمكن استخدام بعض الخدمات التي تتضمن استخراج وتحليل عنوان IP المستخدم للوصول إلى العنوان، وقد لا يكون ذلك بالضرورة دقيقا. كما يمكن استخراج احداثيي المستخدم / العميل / المتصفح، واستعمال ذلك في تحديد الموقع على الخريطة. مثال: // استدعاء واجهة التطبيق Geolocation navigator.geolocation.getCurrentPosition((position) => { const latitude = position.coords.latitude; const longitude = position.coords.longitude; console.log(`Latitude: ${latitude}, Longitude: ${longitude}`); // يمكنك استخدام الإحداثيات لتحديد موقع على الخريطة أو تطبيقها بأي طريقة أخرى. }); أو كما يمكنك اعتماد المقاربة الأولى في تحليل عنوان الآي بي: // يمكن أيضًا استخدام خدمات خارجية مثل ipinfo.io للحصول على معلومات الموقع باستخدام عنوان IP. fetch('https://ipinfo.io/json') .then(response => response.json()) .then(data => { console.log(`IP: ${data.ip}`); console.log(`Location: ${data.city}, ${data.region}, ${data.country}`); }) .catch(error => console.error('Error fetching location', error));
  25. استذكار السياق ومكان الفواصل المنقوطة والنقط لا يكون بالحفظ التقليدي، ولكنه يكون بالتكرار حد التعود عليه. فأنت لست مطالبا بحفظ السياق، فهنالك مئات المراجع التي يمكن العودة إليها لإستذكار السياق الصحيح، بل وأن هنالك مئات الروبوتات والأدوات الذكية التي تقوم بتصويب السياق وتوجيهه، ما أنت مطالب به حقيقة هو منطقك العام في هيكلة الشيفرة وطريقتك في تنظيمها وتحويل حاجة العملاء إلى شيفرة مكتوبة وخطوات خوارزمية واضحة. قد يكون من العملي العودة كل مرة تنسى فيها شيئا ما إلى مستندات ويكي حسوب، ثم سيكون من السهل عليك تذكر هاته الجزئيات لاحقا لأنك قد تعودت عليها وقد مرت عليك كثيرا من المرات.
×
×
  • أضف...