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

ياسر مسكين

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

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

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

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

    6

كل منشورات العضو ياسر مسكين

  1. وعليكم السلام ورحمة الله تعالى وبركاته، نعم هناك فرق واضح ومهم بين تحليل البيانات وعلم البيانات، رغم التشابه بينهما في التعامل مع البيانات، فتحليل البيانات يركز بشكل أساسي على فحص البيانات الحالية واستخلاص رؤى محددة للإجابة عن أسئلة واضحة مثل ما الذي حدث ولماذا؟ ويعتمد غالبا على الإحصاءات الوصفية، الرسوم البيانية، والجداول المحورية، وهو مجال أبسط نسبيا ويتطلب مهارات إحصائية وبرمجية أساسية إلى متوسطة. أما علم البيانات فهو مجال أوسع وأكثر شمولا يجمع بين الإحصاء، البرمجة، تعلم الآلة، وتنقيب البيانات ويهدف إلى اكتشاف أنماط وتوقعات مستقبلية وحلول ذكية، أي لا يكتفي بفهم الماضي بل يسعى للتنبؤ بالمستقبل واتخاذ قرارات مبنية على البيانات.
  2. السلام عليكم ورحمة الله تعالى وبركاته، لا داعي للقلق، فدورات أكاديمية حسوب متاحة بشكل دائم ومستمر مدى الحياة، وحتى التحديثات التي تطرأ بين الفينة والأخرى على مختلف الدورات تكون متاحة دون قسائم إضافية أو اشتراكات جديدة، أي أنّ المحتوى الذي تشتركين فيه سيكون متاحا مدى الحياة، وهذا موضح في مزايا دورات الأكاديمية ويمكنك الاطلاع عليه من هنا: https://support.academy.hsoub.com/page/courses-features أما بخصوص عدم إيجادك لتبويبة دوراتي في حسابك فهذا لأنّ حسابك الحالي ليس نفسه الحساب الذي اشتركت به في الدورة، فهذا حساب جديد، قمت بالتسجيل منه منذ 18 ساعة كما هو موضح في هذه البطاقة: لذا أرجو البحث عن البريد الإلكتروني الخاص بك الذي قمت بالتسجيل به، ثم إعادة تعيين كلمة السر للدخول إلى حسابك، وفي حال وجدت أي صعوبة يمكنك التواصل مع مركز مساعدة أكاديمية حسوب.
  3. السلام عليكم ورحمة الله تعالى وبركاته، أفضل طريقة لمذاكرة جافا سكريبت أو أي لغة برمجة أخرى هي الدمج بين الفهم النظري للدروس والمفاهيم وحل المسائل البرمجية بشكل يومي على الأقل حيث أن حل التحديات يساعد على تطبيق المفاهيم وتثبيتها ومن أفضل المواقع التي توفر مسائل مرتبة من المستوى الصفري للمتقدم: Codewars فهو يستخدم نظام Kata المدرج من السهل للصعب freeCodeCamp JSchallenger HackerRank العديد من المواقع والمنصات تعتمد على ترتيب متقارب في الدروس والتطبيقات العملية لذا فالاختلاف لن يكون كبيرا جدا لتلك الدرجة التي قد تؤثر على فهمها واستيعابها.
  4. إذا لم تظهر هذه التبويبة "دوراتي" لديك: فعلى الأغلب أنه لم يتم تحديثها بعد في حسابك، وسيستغرق الأمر بعض الوقت وستظهر لديك ويمكنك الوصول للدورة التي اشتركت فيها، يمكنك في كل وقت مراجعة فريق دعم أكاديمية حسوب لأي استفسار.
  5. وعليكم السلام ورحمة الله تعالى وبركاته، يمكنك عرضها من خلال عدة طرق لأنه توجد أدوات التوثيق التفاعلية مثل Swagger/OpenAPI أو Postman لإنشاء واجهة تفاعلية تسمح للمشاهدين بتجربة واختبار API endpoints مباشرة في المتصفح بدون الحاجة لكود Frontend. أو من خلال نشر API على منصات سحابية مجانية مثل Heroku أو Railway أو Render لتصبح متاحة للوصول عبر الإنترنت ثم يمكنك مشاركة الرابط مع توثيق Postman Collection أو Swagger UI مستضاف يوضح كيفية استخدام كل endpoint.
  6. وعليكم السلام ورحمة الله تعالى وبركاته، بداية فإنّ مسارات الدورة مرتّبة وفق ترتيب مدروس يراعي صعوبة الدروس ويتدرّج في شرحها مع التطبيق العملي والموازنة بينه وبين المفاهيم النظرية الأساسية لفهم المسار لذا فإنّ دراسة الدورة وفق ترتيبها المعمل به أكثر من ضروري لكن في حال أردت تخطي درس أو مسار أرجو الرجوع في كل مرة إلينا هنا لنساعدك من خلال تقديم مقترحات ونجيبك إن كان التخطّي قد يؤثر أم لا. أنصحك بدراسة المسارات جميعها خاصة تلك المترابطة فيما بينها، وأن لا تركز على الحصول على الشهادة فهي تحصيل حاصل في حال درست جيدا وأتممت الشروط واجتزت الاختبار النهائي بنجاح.
  7. السلام عليكم ورحمة الله تعالى وبركاته، بالنسبة للحصول على الشهادة أرجو الاطلاع على هذه المقالة ويجب أن تحرص على تحقيق جميع الشروط الموجودة لكي تستطيع اجتياز الامتحان النهائي من أجل الحصول على الشهادة: الامتحان والحصول على الشهادة وأرجو الاطلاع على الإجابات التالية أيضا:
  8. السلام عليكم ورحمة الله تعالى وبركاته، أهنئك على إتمام الدورة، عمل ممتاز، كما تعلم فإنّ للتقدم للامتحان يجب أن تحرص على تحقيق الشروط التالية: إتمام أربعة مسارات تعليمية على الأقل التطبيق العملي مع المدرب، والاحتفاظ بالمشاريع العملية الناتجة لإرسالها للمراجعة رفع المشاريع على حسابك على GitHub أولا بأول لمشاركتها معنا الخطوة الأولى من خطوات الامتحان هي التواصل مع مركز مساعدة أكاديمية حسوب مع تزويدهم بروابط مشاريعك. بعد ذلك تمر بثلاث خطوات إضافية: محادثة صوتية مع المدرب (30 دقيقة) تنفيذ مشروع التخرج ثم مراجعة المشروع بخصوص مشكلة حجم الملفات الكبير نقوم بتجنب رفع الملفات الثقيلة على GitHub بواسطة .gitignore فلا نرفع مجلدات مثل: node_modules/ dist/ build/ يمكنك رفع الكود المصدري فقط دون الملفات المولدة مما يقلل الحجم بشكل كبير جدا.
  9. وعليكم السلام ورحمة الله تعالى وبركاته، أنصحك بالاطلاع على مواقع التحديات البرمجية والتي توفر مشاكل برمجية وتساعدك على حلها بشكل تدرّجي، مثل موقع LeetCode فه يعتبر المرجع الأساسي للتحضير للمقابلات التقنية في الشركات الكبرى لكنه فعلا يتطلب معرفة قوية بالخوارزميات وهياكل البيانات قبل البدء والمشاكل تتدرج من Easy إلى Hard لكن حتى المستوى السهل قد يكون تحديا للمبتدئين. وأيضا موقع HackerRank وهو أكثر ملاءمة للمبتدئين لأنه يوفر تدرجا أفضل في الصعوبة ويغطي مجالات متنوعة من البرمجة الأساسية إلى الذكاء الاصطناعي وأما المنصات الأخرى مثل CodeWars وCodeforces تركز على المسابقات البرمجية والتحديات المنطقية لكن يمكنك الاعتماد عليها أيضا.
  10. وعليكم السلام ورحمة الله تعالى وبركاته، نعم توجد نماذج وخوارزميات OCR دقيقة وفعّالة لقراءة لوحات السيارات لكنها قد تواجه صعوبات حسب جودة الصور واختلاف الخطوط واتجاه اللوحة لذا فالمنهجية الأفضل تعتمد على مرحلتين: أولا استخدام نماذج كشف الأجسام مثل YOLOv5 أو YOLOv7 لتحديد موقع اللوحة بدقة ثم تطبيق نماذج OCR المتخصصة مثل EasyOCR الذي يدعم أكثر من 80 لغة بما فيها العربية أو Tesseract الذي يدعم أكثر من 100 لغة. هناك أيضا Mistral OCR الذي يتميز بدقة عالية في التعامل مع التشكيل العربي والصور منخفضة الجودة. أما بالنسبة للبيانات فالمفتاح الأساسي لتحسين الأداء هو تدريب النموذج على مجموعات بيانات خاصة باللوحات المستهدفة لأن النماذج الجاهزة غالبا ما تكون مدربة على بيانات لاتينية مما يقلل دقتها مع اللوحات العربية لذا ينصح أيضا بتدريب نموذج تعلم عميق مخصص يأخذ بعين الاعتبار خصائص اللوحات المحلية من أبعاد وخطوط وألوان، مع الحرص على جودة الصور لأن الإضاءة الضعيفة والغبار من أبرز أسباب فشل القراءة.
  11. السلام عليكم ورحمة الله تعالى وبركاته، تعلم UI/UX مهم جدا لمطوري الويب لأنه يحسن جودة المنتجات ويزيد رضا المستخدمين ويميزك في سوق العمل حيث أن المطورين الذين يفهمون التصميم يستطيعون سد الفجوة بين التصميم والتطوير وتحسين تجربة المستخدم ويكون لديهم تواصل بفعالية مع المصممين. وأفضل وقت لتعلمه هو بعد إتقان أساسيات الفرونتاند (HTML, CSS, JavaScript) وقبل أو أثناء العمل على مشاريع حقيقية حيث يمكنك تطبيق مبادئ التصميم مباشرة والأشياء الأساسية التي يجب تعلمها تشمل هي مبادئ ال UI كالألوان وال Typography والتخطيطات إضافة إلى مبادئ UX (User Research، Information Architecture، Usability) وأدوات Prototyping مثل Figma، Visual Design، User Testing.
  12. السلام عليكم ورحمة الله تعالى وبركاته، ليس خطأ، لكن استراتيجيا Node.js لا يزال هو المسيطر على سوق العمل في 2025 وأغلب الشركات 40.8% من المطورين عالميا تستخدمه، بينما Bun لا يزال في مرحلة النمو والتبني المحدود والشركات الكبيرة مثلا مثل Vercel وShopify وDiscord بدأت تستخدم Bun لكن كجزء من استراتيجية متعددة وليس كبديل كامل ل Node.js أي أنهم يستخدمونه في حالات محددة أين تحتاج سرعة عالية لكن الأنظمة الأساسية لا تزال على Node.js. وعمليا معرفة Node.js ضرورية للوظائف والعمل الحر لأن الطلب عليها أعلى بكثير وأغلب المشاريع الموجودة مبنية عليها، لكن Bun مهارة إضافية ممتازة أيضا وستعطيك ميزة تنافسية خصوصا في المشاريع الجديدة التي تحتاج إلى أداء عالي.
  13. السلام عليكم ورحمة الله تعالى وبركاته، الخوارزمية صحيحة بشكل عام وتحتوي على العناصر الأساسية للعبة لكنها تحتوي على بعض الأخطاء مثلا في الخطوات 8-13 يجب تصحيحه كالتالي فالخطوة 8 يجب أن تكون: "إذا تم الضغط على السهم العلوي يقفز اللاعب للأعلى" بدلا من: "توجه للأمام" لأن في الألعاب ثنائية الأبعاد السهم العلوي يستخدم للقفز وليس للحركة الأمامية، وأيضا الخطوة 9 يجب حذفها واستبدالها ب: "إذا تم الضغط على السهم السفلي يتوقف اللاعب عن الحركة" بدلا من: "توجه للخلف" لأن السهم السفلي في ألعاب المنصات يستخدم للتوقف أو النزول كما أنّ الخطوة 13 يجب تغييرها من: "إذا تم الضغط على زر المسافة توقف" إلى: "إذا تم الضغط على زر المسافة يقفز للأعلى" كبديل للسهم العلوي لأن زر المسافة هو الزر التقليدي للقفز في معظم الألعاب.
  14. السلام عليكم ورحمة الله تعالى وبركاته، أفضل طريقة لاستخراج العقد والعلاقات من JSON لبناء GraphRAG هي استخدام LLM مثل GPT-4 وذلك مع مكتبات مخصصة بدلا من كتابة أكواد يدوية معقدة والمكتبات الرئيسية الموثوقة هي: Neo4j GraphRAG Python Package وهي توفر SimpleKGPipeline لاستخراج تلقائي للعقد والعلاقات باستخدام prompts محددة مسبقا وتدعم تخصيص ال schema من خلال أنواع العقد والعلاقات المطلوبة وLlamaIndex التي تقدم GraphRAGExtractor مع دالة parsing جاهزة لتحويل استجابة LLM إلى EntityNode و Relation objects مباشرة. وكلا المكتبتين تستخدم LLM لقراءة النص/JSON وإرجاع العقد والعلاقات بصيغة JSON منظمة: {"nodes": [...], "relationships": [...]} ثم تحفظها مباشرة في Neo4j Graph Database لكن إذا كان JSON معقد ومتداخل يمكنك استخدام NetworkX لبناء ال graph بعد parsing بسيط باستعمال Python script لكن الطريقة الأكثر فعالية هي تمرير محتوى JSON لل LLM مع prompt واضح يحدد schema المطلوب ثم parsing النتيجة مباشرة لل graph database.
  15. السلام عليكم ورحمة الله تعالى وبركاته، هذا السؤال يندرج ضمن أسئلة الامتحانات والمسابقات، ونحن في أكاديمية حسوب لا نقوم بالإجابة على هذا النوع من الأسئلة. ومن الأفضل تعلم هذه المفاهيم بنفسك، ثم محاولة حلّ الأسئلة باجتهادك الخاص وفي حال لم تفهمي شيئا معينا أو واجهك خطأ في التشغيل يمكنك طرح سؤالك هنا في قسم الأسئلة العامة وسنجيبك عليه بكل صدر رحب. أنصحك بالاستعانة بالتوثيق الرسمي ل Access كمصدر تعلم رسمي ووموثوق من هنا: Access Docs
  16. السلام عليكم ورحمة الله تعالى وبركاته، هل المشكلة لا تزال مستمرة إلى الآن؟ في حال كان كذلك فهذه المشكلة قد تكون وقعت لأنّ الخادم المجاني على Render يتوقف تلقائيا بعد 15 دقيقة من عدم النشاط (inactivity) وليس نصف ساعة بالضبط لكن بعض المستخدمين يلاحظون التوقف في أوقات متقاربة وهذا السلوك مصمم ضمن سياسة الخطة المجانية (Free Tier) حيث يدخل الخادم في وضع Sleep عند عدم استقبال طلبات HTTP لمدة 15 دقيقة وعند أول طلب لاحق يستغرق إعادة التشغيل (spin up) حوالي 30-50 ثانية مما يسبب استجابة بطيئة جدا. يمكن حل المشكلة من خلال عمل Self-Ping من داخل الكود بحيث تقوم بإضافة دالة في index.js أو app.js تقوم بإرسال طلب GET لنفس عنوان خادمك كل 10إلى 14 دقيقة باستخدام setInterval مع مكتبة axios مما سيبقي الخادم مستيقظا باستمرار.
  17. السلام عليكم ورحمة الله تعالى وبركاته، هل تقصدين دورة الذكاء الاصطناعي؟ في حال ذلك فجهازك بمواصفاته الحالية: كاف تماما لإكمال دورة الذكاء الاصطناعي بنجاح لكن بشرط فهم التقسيم الوظيفي التالي فستستخدمين جهازك المحلي لكتابة الأكواد وتنفيذ مكتبات Python الأساسية (NumPy, Pandas, Matplotlib) وتشغيل نماذج صغيرة للتجربة 1B-3B parameters أي بأداء معقول وسرعة استجابة منخفضة بعض الشيء ومعالجة datasets صغيرة ومتوسطة الحجم بفضل ال 24GB RAM الممتازة بينما ستعتمد حصريا على Google Colab المجاني الذي يوفر GPU مثل Tesla T4 أو V100 لتدريب نماذج التعلم العميق الحقيقية (CNNs, RNNs, Transformers) لأن Intel HD 620 لا تعطي أي تسريع مقارنة بالمعالج CPU حتى مع TensorFlow-DirectML ويمكن أن تفشل في معماريات معقدة مثل ResNet بينما GPU مخصص مثل NVIDIA يكون أسرع بـ 12 ضعفا من DirectML على Intel. لكن الحد الأساسي في Colab المجاني هو 12 ساعة متواصلة للجلسة الواحدة مع قيود استخدام ديناميكية غير موثقة قد تمنعك مؤقتا من الوصول لل GPU إذا استهلكت موارد كثيرة لكنها كافية للتعلم والمشاريع التعليمية وليست لمشاريع production كبيرة ومعقدة.
  18. السلام عليكم ورحمة الله تعالى وبركاته، أكيد لا يمكن أن تتعلم كل هذه التقنيات والأدوات من خلال الإجابة على سؤالك، فيجب البحث عن العديد من المصادر ومتابعتها مع التطبيق العملي والاستمرارية للتمكن من ذلك، أو يمكنك الاستعانة بمستقل لينجز لك كل ما سبق. فلبناء نظام React + Laravel 11 بتعدد الأدوار والصلاحيات على نفس الرابط يمكنك استخدام Laravel Sanctum للمصادقة مع Spatie Laravel-Permission لإدارة الأدوار (roles) والصلاحيات (permissions) حيث يقوم React بإرسال token عند كل طلب API ويستجيب Laravel بالبيانات والصفحات حسب دور المستخدم المسجل في قاعدة البيانات. وللنشر على نفس الدومين يمكنك وضع Laravel في مجلد /api وReact في الجذر / عبر إعدادات Apache أو Nginx بحيث يوجه السيرفر طلبات /api/* إلى Laravel/public وباقي الطلبات إلى React build مع تفعيل HTTPS وتشفير البيانات الحساسة في قاعدة البيانات باستخدام دوال Laravel encrypt() وdecrypt() على حقول Models أو تفعيل MySQL encryption-at-rest للأمان الكامل. في حال كان هذا المشروع تعليميا وكنت في بداياتك فجميل أن تتعلم بنفسك خطوة بخطوة دون تسرع، أما إذا كان المشروع مهنيا فمن الأفضل أن تستعين بمستقل لينجزه على أكمل وجه.
  19. السلام عليكم ورحمة الله تعالى وبركاته، بالنسبة لمساري "التعامل مع البيانات" و"تحليل البيانات" فيجب أن يسبقا "تعلم الآلة" من الناحية المنطقية لأنك لا تستطيع تطبيق خوارزميات تعلم الآلة دون فهم كيفية التعامل مع البيانات وتحليلها وهذا موجود فعلا فمسار تعلم الآلة يأتي بعد مسار تحليل البيانات. كما أننا هنا نعتمد التدرج التعليمي ففي الدورة لم يتم وضع "تحليل البيانات" مباشرة قبل "تعلم الآلة" فقط بل تم وضعه بعد مسار "تطبيقات عملية على النماذج النصية الكبيرة LLMs" والسبب هو أن التطبيق العملي يأتي أولا فالفكرة هنا هي أن تتعلم كيف تستخدم النماذج الجاهزة (LLMs) في البداية، ثم تطبق ما تعلمته على تحليل البيانات الفعلي، وهذا يجعل التعلم أكثر تفاعلية وأقل جفافا من الناحية النظرية.
  20. السلام عليكم ورحمة الله تعالى وبركاته، تعلم لغة Golang قد يفيدك في المجتمع العربي هذا أمر ممكن، خاصة مع تزايد استخدامها في مشاريع تطوير البرمجيات السحابية والتطبيقات عالية الأداء وحتى الخدمات المصغرة لاحظت إقبالا عليها. كما أن هناك مجتمع متنامي من مطوري Go في الدول العربية ويتوفر دعم جيد للغة وللغة العربية في بعض المكتبات كما أن Golang تحظى بشعبية في مراكز التكنولوجيا في الشرق الأوسط وحجم الطلب على مطوريها يبقى في تزايد مما يجعل تعلمها مهارة قيمة قد تفتح فرص عمل وتقنيّة تنافسية.
  21. السلام عليكم ورحمة الله تعالى وبركاته، أولا مبارك عليك إنهاء الدورة وحصولك على الشهادة، وكما تعلم فإن أكاديمية حسوب تقدم دعما مميزا بعد حصولك على الشهادة من خلال منحة كتابة السيرة الذاتية المجانية على منصة بعيد بقيمة 99 دولار والتي تشمل مقابلة صوتية مع فريق أخصائي التوظيف لكتابة سيرة ذاتية مخصصة، بالإضافة إلى متابعة ضبط حسابك على منصات العمل الحر مثل مستقل وخمسات، مع تقديم نصائح مخصصة لمساعدتك في الحصول على عملك الأول. كما أن الأكاديمية لا تضمن لك وظيفة مباشرة، لكنها تقدم دعما قويا لزيادة فرصك في العثور على عمل عن طريق تحسين سيرتك الذاتية وتوجيهك لاختيار العملاء المناسبين، والنصائح حول التفاعل مع سوق العمل، مع ضمان استرداد كامل قيمة الدورة في حال لم تتحصل على عمل خلال 6 أشهر لذا لا يجب التوقف الآن، بل يجب العمل والمتابعة مع الفريق المسؤول عن ذلك.
  22. السلام عليكم ورحمة الله تعالى وبركاته، هذا التكرار يكون طبيعيا عند وجود عدة بنود في نفس الفاتورة ويجب التعامل معه إما بتلخيص البيانات أو بتصميم التقرير بشكل صحيح مثلا يمكن استخدام فيه تقسيم المجموعات (Grouping) داخل تقرير Crystal Report على أساس "invoice_number" لعرض بيانات الفاتورة مرة واحدة مع تكرار فقط تفاصيل البنود تحتها ولا تستخدم SELECT DISTINCT في الاستعلام لأنه سيحذف تفاصيل البنود الصحيحة أولا استعلم كل البيانات المفصلة كما في استعلامك الحالي بنحو: SELECT i.invoice_number, i.invoice_date, i.customer_name, d.item_name, d.quantity, d.unit_price, i.total_amount, i.total_ar, d.store_number FROM Invoices i INNER JOIN InvoiceDetails d ON i.invoice_number = d.invoice_number WHERE i.invoice_number = @invoice_number بعد تحميل البيانات في تقرير CrystalReport4 قم داخل برنامج Crystal Reports بإنشاء Group Based on "invoice_number" أو حسب العمود المناسب للفواتير ثم ضع بيانات الفاتورة (الرقم، التاريخ، الاسم، المجموع) في قسم Group Header ليظهر مرة واحدة لكل فاتورة. وضع بيانات البنود كاسم العنصر والكمية وسعر الوحدة ورقم المخزن في Detail Section ليظهر كل بند في صف منفصل لكن إذا لاحظت تكرار في بعض الحقول يمكنك تفعيل خاصية "Suppress Duplicates" على الحقول التي تريد إظهارها مرة واحدة فقط.
  23. وعليكم السلام ورحمة الله تعالى وبركاته، يفضل أن تعتمد استراتيجية متوازنة تجمع بين بناء وتطوير الشبكات العصبية العميقة وتجربة عدة خوارزميات تقليدية في تعلم الآلة، لماذا؟ لأن لكل منهما نقاط قوة ومجالات استخدام مميزة فالشبكات العصبية العميقة مناسبة جدا عندما تتعامل مع بيانات ضخمة ومعقدة وغير منظمة مثل الصور أو الصوت أو النصوص حيث تتميز بقدرتها على استخراج الخصائص تلقائيا وتحقيق دقة عالية في مشكلات نمط معقد. بالمقابل الخوارزميات التقليدية في تعلم الآلة مثل الانحدار اللوجستي، أشجار القرار، وآلات الدعم الناقل تتميز ببساطتها وسرعة التدريب على بيانات صغيرة أو متوسطة الحجم وقابليتها العالية للتفسير مما يجعلها أفضل في حالات حيث يكون حجم البيانات محدودا أو حيث تكون الشفافية في شرح النتائج ضرورية. وأضيف لك أن دقة النموذج وفعاليته تعتمد بشكل كبير على طبيعة المشكلة وحجم البيانات المستعملة ودرجة تعقيد العلاقات بين المتغيرات لذلك من الأفضل اختبار ومقارنة الخوارزميات المختلفة بناء على هذه العوامل.
  24. السلام عليكم ورحمة الله تعالى وبركاته، هل لا تزال المشكلة قائمة إلى الآن؟ في حال كانت كذلك أرجو الاطلاع على هاته الإجابة. المشكلة في الخطأ الذي ظهر لك: Cast to ObjectId failed for value 'cart' (type string) at path '_id' for model 'Book سببها أن لديك في ال Router endpoint /cart و /cart/:id وعند استدعاء GET /api/book/cart يمرر اسم "cart" كمعرّف بدل ObjectId في استعلام الكتاب وذلك بسبب ترتيب تعريف الروتس في الكود ففي الترتيب الحالي: bookRouter.get('/:id', getBookById); bookRouter.get('/cart', isAuthenticate, getCartUser); إذا جاء الطلب ل /cart بدون معرّف هنا Express يطابقه أولا مع /api/book/:id ويعتبر "cart" هو المعرف ويدخله ك param في getBookById، وبالتالي يبحث في قاعدة البيانات عن كتاب معرفه "cart" فيفشل ال cast إلى ObjectId لحل المشكلة يجب تغيير ترتيب تعريف الروتس بحيث تكون المسارات الثابتة مثل /cart قبل المتغيرة مثل /:id هكذا: bookRouter.get('/cart', isAuthenticate, getCartUser); bookRouter.get('/:id', getBookById); لتكون في النهاية هكذا: bookRouter.get('/', getAllBooks); bookRouter.get('/cart', isAuthenticate, getCartUser); bookRouter.post('/cart/:id', isAuthenticate, addToCart); bookRouter.delete('/cart/:id', isAuthenticate, deleteBookCart); bookRouter.get('/favorite', isAuthenticate, getFavoriteUser); bookRouter.post('/favorite/:id', isAuthenticate, addToFavorite); bookRouter.delete('/favorite/:id', isAuthenticate, deleteFavorite); bookRouter.get('/user', isAuthenticate, getBooksUser); bookRouter.put('/:id', isAuthenticate, updateBook); bookRouter.delete('/:id', isAuthenticate, deleteBook); bookRouter.get('/:id', getBookById); bookRouter.post('/upload', isAuthenticate, upload.single("image"), uploadBook); bookRouter.post('/profile', isAuthenticate, profileUser);
  25. السلام عليكم ورحمة الله تعالى وبركاته، شهادة أكاديمية حسوب عند طباعتها تكون الجهة الخلفية عادة بيضاء فارغة بدون تصميم خلفي مزخرف أو ملون فالشهادة تتميز بتصميم واضح وبسيط يركز على المعلومات المهمة في الجهة الأمامية فقط ولا تحتوي على تصميم خاص في الخلف. وهذا هو الشكل المتعارف عليه للشهادات الرقمية الخاصة بأكاديمية حسوب التي يمكن طباعتها أو حفظها بصيغة PDF بحيث تكون الجهة الخلفية خالية من أي تصميمات لكي لا تؤثر على وضوح واحترافية الشهادة عند الطباعة أو العرض الرقمي. وإذا كان لديك أستفسارات أخرى أو تريد مزيد من التفاصيل يرجى محادثة مركز مساعدة أكاديمية حسوب من خلال الرابط التالي: https://support.academy.hsoub.com/conversations
×
×
  • أضف...