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

ياسر مسكين

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

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

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

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

    6

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

  1. السلام عليكم ورحمة الله تعالى وبركاته، هذا السؤال يندرج ضمن أسئلة الامتحانات والمسابقات، ونحن في أكاديمية حسوب لا نقوم بالإجابة على هذا النوع من الأسئلة. ومن الأفضل تعلم هذه المفاهيم بنفسك، ثم محاولة حلّ الأسئلة باجتهادك الخاص وفي حال لم تفهمي شيئا معينا أو واجهك خطأ في التشغيل يمكنك طرح سؤالك هنا في قسم الأسئلة العامة وسنجيبك عليه بكل صدر رحب. أنصحك بالاستعانة بالتوثيق الرسمي ل Access كمصدر تعلم رسمي ووموثوق من هنا: Access Docs
  2. السلام عليكم ورحمة الله تعالى وبركاته، هل المشكلة لا تزال مستمرة إلى الآن؟ في حال كان كذلك فهذه المشكلة قد تكون وقعت لأنّ الخادم المجاني على Render يتوقف تلقائيا بعد 15 دقيقة من عدم النشاط (inactivity) وليس نصف ساعة بالضبط لكن بعض المستخدمين يلاحظون التوقف في أوقات متقاربة وهذا السلوك مصمم ضمن سياسة الخطة المجانية (Free Tier) حيث يدخل الخادم في وضع Sleep عند عدم استقبال طلبات HTTP لمدة 15 دقيقة وعند أول طلب لاحق يستغرق إعادة التشغيل (spin up) حوالي 30-50 ثانية مما يسبب استجابة بطيئة جدا. يمكن حل المشكلة من خلال عمل Self-Ping من داخل الكود بحيث تقوم بإضافة دالة في index.js أو app.js تقوم بإرسال طلب GET لنفس عنوان خادمك كل 10إلى 14 دقيقة باستخدام setInterval مع مكتبة axios مما سيبقي الخادم مستيقظا باستمرار.
  3. السلام عليكم ورحمة الله تعالى وبركاته، هل تقصدين دورة الذكاء الاصطناعي؟ في حال ذلك فجهازك بمواصفاته الحالية: كاف تماما لإكمال دورة الذكاء الاصطناعي بنجاح لكن بشرط فهم التقسيم الوظيفي التالي فستستخدمين جهازك المحلي لكتابة الأكواد وتنفيذ مكتبات 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 كبيرة ومعقدة.
  4. السلام عليكم ورحمة الله تعالى وبركاته، أكيد لا يمكن أن تتعلم كل هذه التقنيات والأدوات من خلال الإجابة على سؤالك، فيجب البحث عن العديد من المصادر ومتابعتها مع التطبيق العملي والاستمرارية للتمكن من ذلك، أو يمكنك الاستعانة بمستقل لينجز لك كل ما سبق. فلبناء نظام 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 للأمان الكامل. في حال كان هذا المشروع تعليميا وكنت في بداياتك فجميل أن تتعلم بنفسك خطوة بخطوة دون تسرع، أما إذا كان المشروع مهنيا فمن الأفضل أن تستعين بمستقل لينجزه على أكمل وجه.
  5. السلام عليكم ورحمة الله تعالى وبركاته، بالنسبة لمساري "التعامل مع البيانات" و"تحليل البيانات" فيجب أن يسبقا "تعلم الآلة" من الناحية المنطقية لأنك لا تستطيع تطبيق خوارزميات تعلم الآلة دون فهم كيفية التعامل مع البيانات وتحليلها وهذا موجود فعلا فمسار تعلم الآلة يأتي بعد مسار تحليل البيانات. كما أننا هنا نعتمد التدرج التعليمي ففي الدورة لم يتم وضع "تحليل البيانات" مباشرة قبل "تعلم الآلة" فقط بل تم وضعه بعد مسار "تطبيقات عملية على النماذج النصية الكبيرة LLMs" والسبب هو أن التطبيق العملي يأتي أولا فالفكرة هنا هي أن تتعلم كيف تستخدم النماذج الجاهزة (LLMs) في البداية، ثم تطبق ما تعلمته على تحليل البيانات الفعلي، وهذا يجعل التعلم أكثر تفاعلية وأقل جفافا من الناحية النظرية.
  6. السلام عليكم ورحمة الله تعالى وبركاته، تعلم لغة Golang قد يفيدك في المجتمع العربي هذا أمر ممكن، خاصة مع تزايد استخدامها في مشاريع تطوير البرمجيات السحابية والتطبيقات عالية الأداء وحتى الخدمات المصغرة لاحظت إقبالا عليها. كما أن هناك مجتمع متنامي من مطوري Go في الدول العربية ويتوفر دعم جيد للغة وللغة العربية في بعض المكتبات كما أن Golang تحظى بشعبية في مراكز التكنولوجيا في الشرق الأوسط وحجم الطلب على مطوريها يبقى في تزايد مما يجعل تعلمها مهارة قيمة قد تفتح فرص عمل وتقنيّة تنافسية.
  7. السلام عليكم ورحمة الله تعالى وبركاته، أولا مبارك عليك إنهاء الدورة وحصولك على الشهادة، وكما تعلم فإن أكاديمية حسوب تقدم دعما مميزا بعد حصولك على الشهادة من خلال منحة كتابة السيرة الذاتية المجانية على منصة بعيد بقيمة 99 دولار والتي تشمل مقابلة صوتية مع فريق أخصائي التوظيف لكتابة سيرة ذاتية مخصصة، بالإضافة إلى متابعة ضبط حسابك على منصات العمل الحر مثل مستقل وخمسات، مع تقديم نصائح مخصصة لمساعدتك في الحصول على عملك الأول. كما أن الأكاديمية لا تضمن لك وظيفة مباشرة، لكنها تقدم دعما قويا لزيادة فرصك في العثور على عمل عن طريق تحسين سيرتك الذاتية وتوجيهك لاختيار العملاء المناسبين، والنصائح حول التفاعل مع سوق العمل، مع ضمان استرداد كامل قيمة الدورة في حال لم تتحصل على عمل خلال 6 أشهر لذا لا يجب التوقف الآن، بل يجب العمل والمتابعة مع الفريق المسؤول عن ذلك.
  8. السلام عليكم ورحمة الله تعالى وبركاته، هذا التكرار يكون طبيعيا عند وجود عدة بنود في نفس الفاتورة ويجب التعامل معه إما بتلخيص البيانات أو بتصميم التقرير بشكل صحيح مثلا يمكن استخدام فيه تقسيم المجموعات (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" على الحقول التي تريد إظهارها مرة واحدة فقط.
  9. وعليكم السلام ورحمة الله تعالى وبركاته، يفضل أن تعتمد استراتيجية متوازنة تجمع بين بناء وتطوير الشبكات العصبية العميقة وتجربة عدة خوارزميات تقليدية في تعلم الآلة، لماذا؟ لأن لكل منهما نقاط قوة ومجالات استخدام مميزة فالشبكات العصبية العميقة مناسبة جدا عندما تتعامل مع بيانات ضخمة ومعقدة وغير منظمة مثل الصور أو الصوت أو النصوص حيث تتميز بقدرتها على استخراج الخصائص تلقائيا وتحقيق دقة عالية في مشكلات نمط معقد. بالمقابل الخوارزميات التقليدية في تعلم الآلة مثل الانحدار اللوجستي، أشجار القرار، وآلات الدعم الناقل تتميز ببساطتها وسرعة التدريب على بيانات صغيرة أو متوسطة الحجم وقابليتها العالية للتفسير مما يجعلها أفضل في حالات حيث يكون حجم البيانات محدودا أو حيث تكون الشفافية في شرح النتائج ضرورية. وأضيف لك أن دقة النموذج وفعاليته تعتمد بشكل كبير على طبيعة المشكلة وحجم البيانات المستعملة ودرجة تعقيد العلاقات بين المتغيرات لذلك من الأفضل اختبار ومقارنة الخوارزميات المختلفة بناء على هذه العوامل.
  10. السلام عليكم ورحمة الله تعالى وبركاته، هل لا تزال المشكلة قائمة إلى الآن؟ في حال كانت كذلك أرجو الاطلاع على هاته الإجابة. المشكلة في الخطأ الذي ظهر لك: 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);
  11. السلام عليكم ورحمة الله تعالى وبركاته، شهادة أكاديمية حسوب عند طباعتها تكون الجهة الخلفية عادة بيضاء فارغة بدون تصميم خلفي مزخرف أو ملون فالشهادة تتميز بتصميم واضح وبسيط يركز على المعلومات المهمة في الجهة الأمامية فقط ولا تحتوي على تصميم خاص في الخلف. وهذا هو الشكل المتعارف عليه للشهادات الرقمية الخاصة بأكاديمية حسوب التي يمكن طباعتها أو حفظها بصيغة PDF بحيث تكون الجهة الخلفية خالية من أي تصميمات لكي لا تؤثر على وضوح واحترافية الشهادة عند الطباعة أو العرض الرقمي. وإذا كان لديك أستفسارات أخرى أو تريد مزيد من التفاصيل يرجى محادثة مركز مساعدة أكاديمية حسوب من خلال الرابط التالي: https://support.academy.hsoub.com/conversations
  12. وعليكم السلام ورحمة الله تعالى وبركاته، ال Google TensorFlow Developer Certificate Exam هو امتحان رسمي من Google يهدف إلى تقييم مهارات المطورين في استخدام مكتبة TensorFlow لبناء وتدريب نماذج التعلم العميق والذكاء الاصطناعي، مع التركيز على تطبيقات عملية مثل الرؤية الحاسوبية، معالجة اللغة الطبيعية، وتحليل السلاسل الزمنية. ويتطلب الامتحان من المتقدمين حل خمسة تمارين عملية في بيئة PyCharm خلال خمس ساعات، حيث يتم تقييم النماذج المبنية بناء على دقتها وفعاليتها في مهام محددة مثل تصنيف الصور أو التنبؤ بالسلاسل الزمنية. كما أنّ النجاح في الامتحان يمنح شهادة معتمدة من Google تثبت الكفاءة في استخدام TensorFlow لحل مشكلات التعلم الآلي والذكاء لكن للأسف وعتبارا من فبراير 2024 تم إغلاق الامتحان رسميا من قبل فريق TensorFlow لإجراء تقييم وتحديث للبرنامج، وتم منح آخر فرصة للتقديم والامتحان قبل نهاية مايو 2024 لذلك لا يمكن حاليا التسجيل أو أداء هذا الامتحان، لكن الشهادة تظل معتمدة لمن نجحوا فيها خلال الفترة السابقة.
  13. بايثون هي لغة برمجة متعددة الاستخدامات وشائعة للغاية سواء في تطوير الويب أو الذكاء الاصطناعي لذا فإن تعلم بايثون سيفيدك خاصة إذا اخترت دورة تطوير تطبيقات الويب باستخدام بايثون لأن بايثون توفر بيئة سهلة وبسيطة وسريعة للتطوير، مع مكتبات قوية تدعم بناء المواقع وتطبيقات الويب وكذلك قواعد البيانات بطريقة فعالة وقابلة للصيانة. أما إذا كانت لديك أهداف في المستقبل تتجه نحو الذكاء الاصطناعي وتعلم النماذج والبرمجة الذكية، فدورة الذكاء الاصطناعي باستخدام بايثون ستمنحك معرفة عميقة بالموضوع مع تطبيقات عملية على التعلم الآلي وتقنيات الذكاء الاصطناعي (AI/ML) باستخدام بايثون التي تعتبر اللغة الأساسية لهذا المجال كما أن المسار الأول من دورة بايثون وجميع الدورات الأخرى سيكون مفتوحا لك ويمكنك دراسته قبل البدء في دورة الذكاء الاصطناعي.
  14. السلام عليكم ورحمة الله تعالى وبركاته، أرجو التأكد من أنك داخل مجلد المشروع في الطرفية ثم اكتب git status لمراجعة الملفات التي لم تتم إضافتها أو التي تم تجاهلها فإذا وجدت بعض الملفات باللون الرمادي أو عليها ملاحظة "ignored" فهذا يعني أنها مدرجة في ملفات .gitignore أو .git/info/exclude ولن يضيفها الأمر: git add . لذا لإضافة جميع الملفات دفعة واحدة أي بما فيها الملفات المحذوفة والمعدَلة والجديدة يجب استخدام الأمر: git add --all أو: git add -A بدلا من: git add . فهذا الأمر أكثر شمولاً في حالات كثيرة أما إذا وجدت ملفات مجلدات ما تزال غير مضافة فتحقق من ملف .gitignore في المشروع أو في ملفات الاستبعاد المحلية مثل .git/info/exclude وفي حال تريد إضافة ملفات تم تجاهلها اجباريا يمكنك استخدام الأمر: git add -f وبعد التأكد من إضافة جميع الملفات إلى منطقة staging يمكنك حينها تنفيذ الأمر: git commit -m "اسم التعديل" ثم: git push origin main لرفع كل الملفات إلى GitHub.
  15. دورة الذكاء الاصطناعي ليست مباشرة موجهة لتطوير الويب التقليدي لكنها قد تفيدك في مشاريع ويب متقدمة تتضمن تطبيقات مثل التعلم الآلي، تحليل البيانات، والتوصية الذكية داخل المواقع خصوصا إذا كنت تستخدم بايثون أو تقنيات يمكن دمجها مع الويب مثل APIs أو مكتبات الذكاء الاصطناعي لكن لتطوير ويب تقليدي وشامل تعلم بايثون أو جافاسكريبت يظل أكثر فائدة مباشرة من حيث بناء الوظائف الأساسية وتصميم المواقع.
  16. لا يوجد احتمال لانقراض لغة PHP في المستقبل القريب رغم الانتقادات حول بطئها وطبيعتها المتزامنة. فهي لا تزال تستخدم في أكثر من 70% من مواقع الويب منها WordPress الذي يشغل أكثر من 40% من مواقع الإنترنت. وصحيح أن جافاسكريبت خاصة مع Node.js تدعم البرمجة غير المتزامنة (Asynchronous) وتتفوق بالأداء في بعض السيناريوهات خصوصا في تطبيقات الويب التفاعلية أو في الخدمات التي تتطلب استجابة فورية. لكن مع ذلك فحتى PHP تطورت كثيرا بدخول ميزات Performance حديثة مثل PHP 7 وأطر العمل الحديثة وحتى تم دعم البرمجة غير المتزامنة عبر إضافات وأطر مثل Swoole ما يعني أن عيب التزامن أصبح أقل حدة اليوم.
  17. السلام عليكم ورحمة الله تعالى وبركاته، للحصول على اسم الخط المستخدم في أي موقع يمكنك استعمال خاصية inspect أو من خلال أدوات المطور في المتصفح وبالنسبة للاسم فهو Noto Kufi Arabic.
  18. هذا الخطأ يعني أن النموذج الذي استخدمته (gemini-pro) غير متاح في الإصدار الحالي من واجهة API أو أن Google غيرت مسار الوصول إليه في الإصدار الجديد لذا استبدل السطر التالي: model = genai.GenerativeModel('gemini-pro') ب: model = genai.GenerativeModel('gemini-1.5-pro') ثم نفّذ نفس الكود: response = model.generate_content("اشرح لي فكرة من مشاريع نوبل 2025") print(response.text)
  19. بعد إتمام أربعة مسارات على الأقل من الدورةأو إنهائها بالكامل يجب أن تقوم برفع المشاريع التي أنجزتها خلال الدورة إلى حسابك على GitHub بعد ذلك أرجو منك التواصل مع مركز المساعدة وإبلاغهم برغبتك في التقدم إلى الاختبار موضحا روابط المشاريع التي رفعتها على GitHub. بعد إرسال الطلب انتظر حتى تتم مراجعة مشاريعك، وسيتم الرد عليك لتحديد موعد المقابلة، والتي تتضمن: محادثة صوتية تتعلق بالدورة والمشاريع التي نفذتها. إنجاز مشروع جديد مرتبط بما تعلمته خلال الدورة. بعد تسليم المشروع تعقد محادثة صوتية ثانية مدتها 30 دقيقة لمناقشة ما نفذته والإجابة عن أسئلة المدرّب.
  20. السلام عليكم ورحمة الله تعالى وبركاته، أولا مرحبا بك مرة أخرى، بالنسبة لفترات الانقطاع فهي أمر طبيعي يواجه أيّ متعلم فلا أحد يمكنه التنبؤ بظروف حياته، ولكن من الأفضل عند تعلم البرمجة وخاصة في البداية أن نحرص على أن لا تتجاوز فترات الانقطاع أكثر من أسبوعين، فتعلم البرمجة السر الكبير فيها هو الاستمرارية والتطبيق العملي المستمر. بالنسبة لاستدراك ما تم نسيانه فذلك راجع إلى مدى نسيانك لما تعلمته في السابق وأيضا أين توقفت آخر مرة، فإن كنت في بداية الدورة فمن الأفضل أن تعيدها أحسن يمكنك أن تقوم بتسريع الفيديو ثم مشاهدة الدروس والتوقف عند تلك التي تواجهك فيها مشاكل ويمكنك طرح أسئلتك هناك أيضا وسنساعدك على تذكرها. أما إن كنت في منتصف الدورة أو نهايتها فهنا يمكنك الرجوع إلى بداية المسار فقط ثم تسريع الفيديو والتوقف عند الدرس الذي لم تفهمه جيدا. بالتوفيق.
  21. السلام عليكم ورحمة الله تعالى وبركاته، يمكنك تعديل الكود ليطلب من المستخدم إدخال اسم المدينة بدلاً من استخدام رابط ثابت. استبدل الجزء الخاص بالرابط والبحث بهذا الكود: city = input("أدخل اسم المدينة: ") url = f"https://www.timeanddate.com/worldclock/{city.lower()}" driver.get(url) مع إضافة معالجة للأخطاء في حالة عدم وجود المدينة: try: html = driver.page_source soup = BeautifulSoup(html, "html.parser") time_element = soup.find("span", {"id": "ct"}) if time_element: print(f"الوقت في {city}: {time_element.text}") else: print("لم يتم العثور على المدينة") except Exception as e: print("خطأ في الحصول على البيانات") finally: driver.quit()
  22. الانتقال من Create React App (CRA) إلى Vite ليس مسألة إلزامية عند تعلم React لأن جوهر المكتبة سيبقى كما هو فأنت ستتعامل مع المكونات، props، state وhooks بنفس الطريقة تماما لكن الفارق يكمن في أداة التطوير نفسها. ف CRA كان الأداة الرسمية سابقا لكنه أصبح بطيئا في تشغيل الخادم والبناء، ولم يعد يتلقى تحديثات مهمة، بينما Vite صُمم ببنية حديثة تعتمد على ES Modules وواجهة تطوير فائقة السرعة، ما يمنحك بدء تشغيل فوري تقريبا، تحديثات لحظية دون بطء مع حجم ملف build أصغر، وإمكانية تخصيص سهلة عبر ملف إعداد واحد.
  23. السلام عليكم ورحمة الله تعالى وبركاته، ال OOP في C# لا يلغي دور قواعد البيانات بل يكملها فقاعدة البيانات تهتم بتخزين البيانات وتنظيمها، بينما ال OOP يوفر لنا نموذج برمجي كائني للتعامل مع هذه البيانات داخل التطبيق فعلى سبيل المثال بدلا من التعامل مع جداول وأعمدة بشكل مباشر يمكنك تمثيل كل جدول ك class مثل User أو Product وكل صف ك object مما يسهل ربط منطق الأعمال (Business Logic) بالبيانات. وعبر ال OOP يمكنك استخدام Encapsulation لإخفاء تفاصيل الوصول للبيانات مثلا عبر Repository أو ORM مثل Entity Framework وInheritance/Polymorphism لتمثيل كيانات مترابطة مثلا Employee يرث من Person وهذا سيقلل التكرار ويجعل الكود أكثر وضوحا وقابلا للصيانة. عند الإضافة والتعديل أو الحذف من قاعدة البيانات. فالOOP يوفر الواجهات (Interfaces) والخدمات (Services) التي تفصل بين منطق التخزين ومنطق العمل، بحيث إذا غيرت قاعدة البيانات من SQL إلى NoSQL مثلا فلن تضطر لإعادة كتابة التطبيق بالكامل بل فقط تعدل طبقة الوصول للبيانات.
  24. وعليكم السلام ورحمة الله تعالى وبركاته، ال Kaggle Notebooks لا تحتوي دائما على أحدث نسخة من المكتبات لأن Kaggle تعطي الأولوية لاستقرار البيئة على التحديث الفوري للمكتبات لتجنب التعارضات التي قد تحدث وهذا النظام يهدف إلى ضمان الاستقرار والتوافق بين جميع المكتبات المثبتة، بدلا من التحديث الفوري الذي قد يسبب تعارضات كما أن Kaggle يختبر التحديثات قبل دمجها لتجنب كسر البيئة مما يعني وجود فجوة زمنية بين إطلاق النسخة الجديدة وتوفرها في Notebooks.
  25. السلام عليكم ورحمة الله تعالى وبركاته، أولا فإنّ ال image_dataset_from_directory لا تتجاهل الصور التالفة تلقائيا يمكنك رؤية ذلك في رسالة التحذير: Corrupt JPEG data والتي تشير إلى وجود صور JPEG تالفة في ال dataset ثم يحدث الخطأ الكامل InvalidArgumentError عندما تواجه TensorFlow صورة تالفة لا يمكن فك تشفيرها نهائيا وهنا المشكلة أن TensorFlow يحاول معالجة جميع الملفات في المجلد دون تصفية، وعندما يصل لصورة تالفة مثل الصورة التي تسبب الخطأ: Input size should match header_size يتوقف التدريب تماما والحل هو تنظيف البيانات مسبقا عبر إزالة الصور التالفة يدويا أو برمجيا أو استخدام كود مخصص لإنشاء dataset يتجاهل الصور التالفة باستخدام tf.data.Dataset.from_generator مع معالجة الأخطاء أو إضافة tf.data.AUTOTUNE مع dataset.map() و try-except للتعامل مع هذه الحالات.
×
×
  • أضف...