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

عبد الوهاب بومعراف

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

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

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

كل منشورات العضو عبد الوهاب بومعراف

  1. الدورة موجهة لكل الفئات و لا تحتاج إلى خبرة سابقة أو أي تهيئة قبل بدءها لأن تمس كامل الجوانب من الأساسيات إلى إحتراف لغة جافاسكريبت و أطر العمل الخاصة بها، فالمسار الأول كله حول أساسيات جافاسكريبت و تدرس من خلاله حلقات التكرار، الدوال، المصفوفات، الكائنات، الأصناف و غيرها من الأمور. بالنسبة لكونك تريد أن تكون مطور خلفية فقط، يمكنك الإكتفاء بأساسيات CSS كبداية لكن مع مرور الوقت أنصحك بالعودة لدروس CSS و مشاهدتها لأنه من المهم أن يكون لديك خلفية حول كيفية بناء صفحات الويب و يمكنك أن تعدل عليها و لو قليلا في حالة لزم الأمر.
  2. الخطأ "Hydration failed" في Next.js يعني أن HTML المنشئ على جانب الخادم (SSR) لا يتطابق مع HTML الذي تم إنشاؤه على جانب العميل وهذا عادة ما يكون بسبب اختلاف في البيانات أو الحالة أما في حالتك فالمشكلة في استخدام ubuntu.className داخل RootLayout لأن ubuntu.className هي خاصية ديناميكية، أي أنها تحسب في كل مرة يعاد تجميع المكون (React component) وبما أن Next.js يقوم بتحميل صفحة React من الخادم (SSR) ثم يحييها على جانب العميل (Client-side hydration)، فالتغييرات الديناميكية على الخادم قد لا تتطابق مع العميل، وبالتالي يحدث الخطأ "Hydration failed" لذا يمكن حل المشكلة عن طريق تخزين قيمة ubuntu.className في متغير ثابت داخل RootLayout ثم استخدامه في body: import {NextIntlClientProvider} from 'next-intl'; import {getLocale, getMessages} from 'next-intl/server'; import { AppProvider } from "@/context/AppContext"; import { Tajawal } from "next/font/google"; const ubuntu = Tajawal({ subsets: ["arabic"], weight: ["300", "400", "500", "700"] }); export default async function RootLayout({ children }) { const locale = await getLocale(); const messages = await getMessages(); const direction = locale === "ar" ? "rtl" : "ltr"; const fontClassName = ubuntu.className; return ( <html lang={locale} dir={direction}> <body className={fontClassName}> <NextIntlClientProvider messages={messages}> <AppProvider> {children} </AppProvider> </NextIntlClientProvider> </body> </html> ); } هنا نقوم بحساب ubuntu.className مرة واحدة على جانب الخادم ثم React يقوم بحفظ هذه القيمة في fontClassName بعدها نستخدم القيمة الثابتة fontClassName داخل className في body و رياكت سيستخدم هذه القيمة المخزنة على جانب الخادم.
  3. يمكنني أن أنصحك بالعديد من المواقع التي يمكنك من خلالها الحصول على البيانات والعمل عليها باحترافية تامة فالعديد من المصادر توفر مجموعات بيانات مفتوحة وسهلة للمبتدئين كموقع Kaggle الذي يحتوي على آلاف مجموعات البيانات المجانية، يمكنك تصفح مجموعات بيانات جاهزة لاستخدامها في التحليل، مثل بيانات الطقس، المبيعات، وسجلات المرضى ويمكنك الوصول إليها عبر Kaggle Datasets. كما توجد خدمة بحث من جوجل اسمها Google Dataset Search ستساعدك على العثور على مجموعات بيانات منشورة في الإنترنت يمكنك البحث عن مجموعات بيانات تتعلق بمواضيع معينة ترغب في العمل أو البحث عليها. كما توجد قائمة على موقع GitHub اسمها Awesome Public Datasets فهي تجمع العديد من مجموعات البيانات المفتوحة، يمكنك استخدامها في تحليل البيانات في مجالات متعددة مثل العلوم الاجتماعية، الاقتصاد، الرياضيات وغيرها كما يمكنك الاطلاع على الإجابات المشابهة لسؤالك هنا:
  4. هذا الكود يعرض عدد تكرار كل قيمة فريدة في العمود، إذا كنت تريد عرض جميع القيم بما في ذلك القيم التي قد لا تظهر لأنها غير متكررة، يمكنك استخدام sort_index() لضمان عرض جميع القيم بترتيب معين: # حساب عدد تكرار كل قيمة في عمود Insulin value_counts = diabetes['Insulin'].value_counts().sort_index() # عرض جميع القيم وعدد تكرارها print(value_counts) بهذا الشكل ستتمكن من رؤية جميع القيم في العمود Insulin مع عدد مرات تكرار كل قيمة.
  5. حاليا بايثون تعتبر واحدة من أفضل اللغات في مجال الأتمتة وهذا لأنها تتميز ببساطتها وسهولة قراءتها، مما يسهل على المبرمجين الجدد والمتمرسين استخدامها في الأتمتة، توفر بايثون مكتبات قوية لأتمتة واجهات الويب، أو واجهات سطح المكتب، كما يمكن دمج بايثون بسهولة مع لغات وأدوات أخرى، مما يزيد من مرونتها وقوتها في مشاريع الأتمتة الكبيرة والمعقدة.
  6. بالتأكيد يمكن استخدام لغة برمجة مثل بايثون أو R بشكل كاف في مجال تحليل البيانات، فكلتا اللغتين توفران مجموعة قوية من المكتبات والأدوات التي تسهل تحليل البيانات ومعالجتها، فبايثون سهلة التعلم ولها مجتمع دعم كبير، و متعددة الاستخدامات، حيث يمكن استخدامها في تطوير الويب، الأتمتة، وغيرها، و كذلك R مصممة خصيصا للتحليل الإحصائي، و قوية في التصور البياني وتحليل البيانات الإحصائية، و يبقى اختيار اللغة يعتمد على احتياجاتك الخاصة والمجال الذي تعمل فيه، ولكن كلتا اللغتين تعتبران خيارين ممتازين لتحليل البيانات.
  7. الفرق الرئيسي بين recursion وloop يكمن في كيفية تنفيذ التكرار فالحلقات تستخدم بنية تحكم لتكرار كتلة من التعليمات البرمجية بشكل مباشر، بينما recursion يحقق التكرار عن طريق استدعاء الدالة نفسها من داخلها. هذا يؤدي إلى اختلافات مهمة في الأداء واستهلاك الذاكرة. الحلقات يمكن اعتبارها مناسبة للمهام التكرارية البسيطة حيث يكون الأداء هو الاعتبار الرئيسي أما recursion فهو مناسب للمشاكل التي يمكن تقسيمها إلى نسخ أصغر من نفسها مثل عمليات البحث في الأشجار مثلا لكن الاعتماد على أيّ منها يعتمد على طبيعة المشكلة والمتطلبات الخاصة بالمشروع ففي كثير من الأحيان يمكن تحويل recursion إلى حلقات والعكس صحيح، ولكن يجب مراعاة تأثير ذلك على الأداء واستهلاك الذاكرة.
  8. الكثيرون يجهلون أهمية الدروس الأساسية من اللغة، وللأسف دراسة الدروس نفسها وحدها لا يكفي للتعلم والاحتراف فما بالك بتخطيها لذا أنصحك بدروس المسارات بالترتيب المعلوم به فذلك الترتيب مدروس وبالطبع مع الأخذ بعين الاعتبار المجهود الذاتي في التعلم من خلال التطبيق العملي، يمكنك تصفح عدة نصائح من هنا:
  9. أعتقد أنّ الانتقال مباشرة من قسم أساسيات لغة بايثون إلى دجانغو سيكون صعبا قليلا إن لم تترسخّ تلك المفاهيم بشكل جيد من خلال التطبيقات العملية، ومسار تطبيق إدارة المهام هو مسار مهم وتم إعداده لهذا الغرض وهو تطبيق أغلب المفاهيم النظرية التي تم التطرق لها، لذا أنصحك بإتمام المسار كاملا ثم الانتقال بعد ذلك إلى إطار العمل دجانغو.
  10. بالنسبة للأسئلة الاختبارية وأسئلة الامتحانات فنحن لا نجيب عليها هنا في الأكاديمية لذا يمكنك المحاولة بنفسك وفي حال وجدت أي مشكلة في الفهم أو الحل يمكنك إرسال لقطة شاشة للخطأ الذي يظهر لك أو أي مفهوم لم تفهمه وسنشرحه لك، يمكن أن تنفعك بعض هذه المصادر للتعلم الجيد: لغة بايثون Python
  11. من الصعب أن تكون مصمما لكلّ شيء فالتصميم له مجالات عديدة يمكن التخصص فيها لكن هذا لا يعني استحالة ذلك، المهم أن تركز أولا على دراسة مبادئ التصميم الأساسية ونظرية الألوان والدراسة النظرية لهذا المجال لأنه وللأسف يتم تجاهل تعلمها والانتقال مباشرة إلى تعلم الأدوات ك Photoshop و Illustarator وهذا الأمر هو المرحلة الثانية من التعلم وليست الأولى فالأدوات يمكن تعلمها بسهولة لكن الصعب هو فهم المجال واحترافه. بالنسبة للمشاريع الأغلب يلجأ لاختيار مواضيع ذاتية عشوائية ثم إنشاء سلسلة تصميمات لغرض وضعها في معرض الأعمال والترويج لمهاراتهم مثل تصميم هوية بصرية متكاملة لعلامة تجارية وهمية، أو تصميمات مختلفة لنفس المنتج بأسلوب مختلف.
  12. يمكنك الاستعانة بمسارات الدورة ودروسها في مشاريعك، فبالنسبة لتصنيف الشكاوى يمكن استخدام نماذج التعلم الآلي (Machine Learning) لتصنيف الشكاوى تلقائيا إلى فئات محددة مثلا خدمة العملاء، المشاكل التقنية، التسليم يمكن تدريب هذه النماذج على بياناتك الحالية لتصنيف الشكاوى بدقة عالية. فمثلا معالجة اللغة الطبيعية (NLP) سيساعدك تعلم هذا المجال في تحليل النصوص ومعرفة ما يدور في ذهن العميل بالتحديد يمكنك استخدام تقنيات NLP مثل معالجة النصوص وتصنيف المشاعر (Sentiment Analysis) لمعرفة رأي العملاء من خلال شكواهم. كما أنه يمكن استخدام الشبكات العصبية (Neural Networks) لإنشاء نماذج أكثر تعقيدا للتصنيف، خاصة إذا كانت تصنيفات الشكاوى متنوعة أو تحتوي على معلومات غامضة. بالنسبة لاستخراج الأنماط يمكن استخدام أدوات تحليل البيانات لتحديد الأنماط في الشكاوى مثلا إذا كانت هنالك مشكلة متكررة في منتج معين، أو زيادة في عدد الشكاوى في وقت محدد كما أنصحك بالمتابعة من البداية مع التركيز على هذه المسارات في الدورة: معالجة البيانات (Data Processing): لفهم كيفية تحضير بياناتك وتحويلها إلى شكل مناسب للتعلم الآلي مهم جدا. معالجة اللغة الطبيعية (Natural Language Processing): ستكون أساسا لتحليل نصوص الشكاوى ومعرفة الأنماط اللغوية فيها. التعلم الآلي (Machine Learning): تعد أساسا للعديد من التطبيقات التي تريد تنفيذها، مثل تصنيف الشكاوى وتحديد الأنماط. التحليل الزمني (Time Series Analysis): سيساعدك على فهم كيفية التعامل مع البيانات مع مرور الوقت و التنبؤ بالمستقبل.
  13. لا توجد طريقة سحرية يتم اتباعها لاحتراف البرمجة فمسألة الاحتراف تأتي بالتدريج وبالاستمرارية والمحافظة على المكتسبات التي تتعلمينها مع التطبيق الجيد من خلال المشاريع، بالنسبة للدورات تمت الإجابة من قبل على نفس التساؤل وأدعوك لمراجعتها من هنا ستسفيدين أكثر: كما توجد مقالة تشرح طرق دراسة البرمجة من الصفر حتى الاحتراف يمكنك الوصول إليها من هنا: الدورات تحتاج إلى تركيز مع المدرب والتطبيق معه من خلال المشاريع وإن حافظت على الاستمرارية والتطبيق وإعادة التطبيق بنفسك ستجدين نفسك تتطورين في هذا المجال بسرعة.
  14. يمكنك تثبيت بيئة تطوير متكاملة (IDE) على نظام الويندوز، هناك عدة خيارات شائعة مثل Visual Studio Code وPyCharm وIntelliJ IDEA سأوضح لك خطوات تثبيت Visual Studio Code، كونه مجانيا ومناسبا لمجموعة واسعة من لغات البرمجة يمكنك تحميل VSCode من خلال الذهاب إلى صفحة Visual Studio Code واختيار إصدار الويندوز لتحميله (ويندوز 64 بت أو 32 بت). وبعد تحميل الملف نفتح ملف التثبيت (عادة يكون اسمه VSCodeSetup.exe) واتبعي التعليمات على الشاشة لتثبيت البرنامج وتفعيل المسار (PATH) مباشرة. ثم يمكنك تحميل وتثبيت الإضافات الخاصة ببايثون من خلال قسم الإضافات المدمج في البيئة لكن يجب أولا أن تثبتي بايثون تحميل بايثون.
  15. هذا الأمر يتطلب تخطيط دقيق لتحقيق التوازن بين جميع المهام والتسليم في الوقت المناسب، فمن الضروري أولا تقسيم المشروع إلى مراحل واضحة والتواصل بوضوح مع العميل، خاصة إذا لم يكن تقنيا، و يمكن استخدام الأدوات المساعدة مثل جداول إدارة المهام و يوجد العديد من البرامج التي تساعدك على هذا الأمر شخصيا أستخدم برنامج TickTick لتنظيم مهامي، و يمكنك الإعتماد على المنهجيات المرنة لتقسيم المهام وترتيب الأولويات، بحيث تكون لديك رؤية واضحة حول ما يمكن تحقيقه في إطار زمني محدد، و عند تحديد الأسعار خذ بعين الاعتبار حجم وتعقيد المشروع، ومدى جاهزية العميل في توضيح متطلباته، بالإضافة إلى الوقت المتوقع للإنجاز، من المهم أن تضع أسعار تعكس الجهد الكبير المبذول، دون الإضرار بالميزانية المتاحة للعميل. و مع مرور الوقت ستعتاد على هذا الأمر و تصبح لديك خبرة في التعامل مع هذه المشاريع و الضغوطات الناجمة عنها.
  16. يمكن ذلك من خلال اتباع عدة خطوات، أولا يجب إنشاء دالة رئيسية هي التي ستتولى إدارة البرنامج وفي داخل هذه الدالة يمكنك استخدام دالة input() لطلب عدد المواد الدراسية من الطالب، مع التأكد من أن المدخل هو عدد صحيح أكبر من صفر باستخدام حلقة while للتحقق من صحة المدخلات الخطوة التالية هي إنشاء قاموس لتخزين معلومات كل مادة، حيث سيكون لكل مادة مفتاح فريد يمثل رقم المادة وقيمة تتضمن درجة المادة وعدد ساعاتها وهنا سيخطر ببالك استخدام حلقة for لطلب الدرجات وعدد الساعات لكل مادة، مع التحقق من صحة إدخالات الساعات باستخدام try-except للتأكد من أنها أرقام صحيحة أم لا وبعد إدخال جميع البيانات، يمكنك طباعة المعلومات المدخلة. يمكنك إيجاد ما ترغب فيه وأكثر من خلال دروس موسوعة حسوب في بايثون: لغة بايثون Python.
  17. العفو، خذ في بالك أنّ الانتقال من MongoDB إلى PostgreSQL قد يكون معقدا لاحقا، خاصة إذا كانت بياناتك مترابطة بشكل معقد أو إذا اعتمدت على بعض الميزات الخاصة بـ MongoDB (مثل التكرارات أو التجميعات المعقدة) فعملية التحويل قد تتطلب إعادة هيكلة البيانات بالكامل، مما قد يضيف تكلفة زمنية وجهود إضافية. في حال كنت مركزا على السرعة والأمان أكثر فدجانغو نفسه يوفر نظاما متكاملا لبناء الواجهات بسرعة عبر Django Templates مما يسهل عليك إنشاء صفحات واجهة المستخدم بدون الحاجة إلى بنية معقدة.
  18. يمكنك الاطلاع حول كيفية عمل المصادقة ب SMS OTP باستخدام إطار عمل بايثون دجانغو من خلال هذه المقالة:
  19. اختياراتك بشكل عام جيدة، ولكن هناك بعض التحسينات سأقترحها عليك بالنسبة لاستخدام Next.js للواجهة الأمامية مع Tailwind CSS و TypeScript هو اختيار ممتاز خاصة بالنسبة لعاملي الأمان وسرعة الأداء، كما أنه يوفر تقديما سريعا للصفحات أما بالنسبة للواجهة الخلفية، فإن دجانغو مناسب جدا بفضل الأمان المدمج وسرعته في التطوير بينما PostgreSQL فهو خيار قوي لقاعدة البيانات لأنه قابل للتوسع ويعمل جيدا مع إطار العمل دجانغو. أما بالنسبة لفصل قواعد البيانات أعتقد أنه من الأفضل استخدام قاعدة بيانات PostgreSQL واحدة للموقع بأكمله ف PostgreSQL قوي بما يكفي لإدارة كل البيانات بسهولة، ويضمن لك ذلك سهولة الإدارة والتكامل بين مختلف أجزاء الموقع في حين أنّ استخدام SQLite في لوحة تحكم المسؤول قد يحد من قابلية التوسع مع زيادة حجم البيانات والمستخدمين.
  20. الرجاء طرح سؤالك واستفسارك أسفل الدرس في صندوق التعليقات، فهذا القسم مخصص للأسئلة العامة، وهذا لمساعدتك بالشكل الأفضل والمناسب.
  21. هذا الرمز ليس موجودا في لوحة المفاتيح لكن يمكنك كتابته من خلال التوجه إلى VSCode ثم إلى File بعدها انزل واختر Settings وفي خانة البحث قم بكتابة Font Ligatures بعدها سيظهر لك مثل الصورة: قم بالضغط على Edit in settings.json ثم سيظهر لك الملف وفي الجزء الأخير التالي: }, "terminal.integrated.defaultProfile.windows": "Command Prompt", "github.copilot.editor.enableAutoCompletions": true, "git.autofetch": true, "javascript.validate.enable": false, "github.copilot.enable": { "*": false, "plaintext": false, "markdown": false, "scminput": false, "javascript": false }, "files.autoSave": "afterDelay", "editor.fontLigatures": false } نقوم بتغيير قيمة editor.fontLigatures من False إلى True، لذا استبدل السطر التالي: "editor.fontLigatures": false بهذا السطر: "editor.fontLigatures": true هكذا سيتم استبدال الرمز != تلقائيا عند كتابتك له بالرمز هذا ≠ في VSCode. في حال كان السؤال متعلقا بإحدى الدروس في إحدى الدورات أرجو في المرة القادمة كتابة سؤالك أسفل صندوق التعليقات هناك وليس هنا في قسم الأسئلة العامة.
  22. حسب التشفير فهو نصّ طويل جدا ويتكون من مجموعة من الأحرف (A-Z, a-z, 0-9) بالإضافة إلى الرموز + و / وهي الرموز التي تستخدم عادة في ترميز Base64 كما أنّ ترميز Base64 غالبا ما يستخدم في ترميز البيانات الثنائية مثل المفاتيح أو الرسائل المشفرة، وهو يعطي مخرجات قابلة للقراءة ولكنها غير مفهومة في حال تم عرضها بشكل مباشر كما أرسلتها، فهذا النوع من الترميز لا يستخدم للتشفير بحد ذاته فهو ترميز يستخدم لتحويل البيانات الثنائية إلى نص يمكن نقله بسهولة عبر أنظمة أو بروتوكولات تحتاج لنصوص فقط مثل البريد الإلكتروني أو النصوص في JSON أو XML وهو عادة ما يكون الجزء الأخير بعد التشفير الثنائي مثل AES أو RSA، إذ يتم تحويل الناتج النهائي من التشفير إلى Base64 لنقله بشكل آمن ولهذه الأسباب يمكن معرفة أن النص قد يكون نتيجة تشفير باستخدام خوارزمية مثل AES أو RSA ثم تم تحويل الناتج إلى Base64.
  23. يتم تغيير الصورة بشكل تلقائي في حال قمت بتتبّع الخطوات الصحيحة لذلك، فأرجو اتباع الخطوات في هذه المقالة: تعديل الملف الشخصي. وفي حال استمرت المشكلة لا تتردّد في طرح المشكلة على مركز مساعدة أكاديمية حسوب من هنا: مركز المساعدة.
  24. لا تحلّ مشكلة واحدة فقط، بل العديد من المشاكل، كما أنها توفر حلولا للمشاكل الشائعة في البرمجة ممّا يسمح أيضا بإعادة استخدام الأكواد بسهولة، كما تجعل الكود أكثر تنظيما وسهل الفهم، مما يسهل صيانته وتطويره وتسمح بإضافة وظائف جديدة دون تغيير الكود الموجود بشكل كبير أعتبر أنها توفر لغة مشتركة للمطورين لوصف حلول البرمجة كما تقدم حلولا مجربة للمشاكل المعقدة في تصميم البرامج. لذا وبغض النظر عن التخصص أو اللغة التي تختارها كمبرمج، فإن تعلم Design patterns مفيد جدا وأنصح بها لأنها ستساعدك على: فهم أفضل لهيكلة البرامج. حل المشاكل بطريقة أكثر فعالية. كتابة كود أفضل وأكثر قابلية للصيانة. التواصل بشكل أفضل مع المطورين الآخرين. تحسين مهاراتك في تصميم البرمجيات. فعلى الرغم من أنه قد يكون ممكنا البرمجة دون معرفة عميقة بها إلا أن تعلمها يمكن أن يحسن مهاراتك بشكل كبير ويجعلك مبرمجا أفضل، بغض النظر عن مجال تخصصك أو اللغة التي تستخدمها.
  25. التعلم المعزز هو فرع من فروع تعلم الآلة حيث يتعلم نظام يطلق عليه "الوكيل" كيفية اتخاذ قرارات من خلال التفاعل مع بيئة معينة والهدف من هذا النوع من التعلم هو تعظيم المكافآت على المدى الطويل. أهم الجزئيات الأساسية فيه هي: الوكيل (Agent): هو الكيان الذي يتخذ القرارات بناءً على المعلومات المتاحة لديه. البيئة (Environment): هي السياق الذي يتفاعل معه الوكيل، وتتأثر حالته بالقرارات التي يتخذها الوكيل. الإجراءات (Actions): هي الخيارات المتاحة للوكيل في كل حالة. الحالة (State): هي المعلومات المتاحة للوكيل في لحظة معينة، والتي تحدد كيف يتفاعل مع البيئة. المكافأة (Reward): وهي القيمة التي يحصل عليها الوكيل نتيجة لإجراء معين، والتي تحدد مدى جودة هذا الإجراء. عند بدأ عملية التعلم نركز على هذه الخطوات: الاختيار: يبدأ الوكيل في حالة معينة ويختار إجراء بناء على استراتيجية أو سياسة معينة. التنفيذ: يتم تنفيذ الإجراء، مما يؤدي إلى تغيير في حالة البيئة. الحصول على المكافأة: بعد تنفيذ الإجراء، يحصل الوكيل على مكافأة تعكس جودة الإجراء المتخذ. التحديث: يستخدم الوكيل المعلومات المكتسبة (الحالة الجديدة والمكافأة) لتحديث استراتيجيته في اتخاذ القرارات المستقبلية. التكرار: يكرر الوكيل هذه العملية لتحسين أدائه مع مرور الوقت. والهدف هو تحقيق أقصى قدر من المكافآت عبر الزمن، مما يعني تحسين استراتيجيات الوكيل مع تزايد التجارب فالتعلم المعزز هو إطار تعلم يعتمد على التجربة والاختبار، حيث يتعلم الوكيل كيفية اتخاذ قرارات أفضل بناء على المعلومات التي يجمعها من تفاعلاته مع البيئة.
×
×
  • أضف...