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

Mustafa Suleiman

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

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

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

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

    472

كل منشورات العضو Mustafa Suleiman

  1. ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم أسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.
  2. لم يتم التوضيح هل تريدين مشروع مفتوح المصدر جاهز مثلاً للإطلاع عليه؟ أم تريدين فكرة مشروع؟ في حال الأول، فلا يوجد مشروع جاهز مفتوح المصدر لذلك، ستحتاجين إلى تنفيذه بنفسك، وكنقطة إنطلاق ألقي نظرة على بيئة التطوير ARCore لأندرويد أو ARKit لـ iOS. وبأبسط طريقة كبداية ستحتاجين إلى OpenCV لمعالجة الفيديو بجانب ArUco markers لتحديد المواقع، التتبع، أو معايرة الكاميرا. وبالطبع يجب تعلم أساسيات Computer Vision ودراسة Camera Calibration، وبعد ذلك قومي بتجربة تقنية SLAM من خلال مكتبة OpenCV، أو من خلال وحدة VisualSLAM من مكتبة pyslam، والأمر بحاجة إلى بحث ودراسة.
  3. هل المقصود عند الإشتراك في الدورة؟ تستطيع إذن وضع سؤال أسفل الدرس في حال السؤال متعلق به وسيتم مساعدتك في الحال وتوضيح الأمر لك. أما لو تقصد سؤال عام خارج الدورة، فتستطيع وضعه هنا في قسم أسئلة البرمجة في التصنيف المناسب له، وتفصيل ما تريده وسيتم مساعدتك بالطبع، وبإمكانك إرفاق ملفات المشروع.
  4. الأسئلة الإختبارية لا يتم الإجابة عليها بشكل مباشر، لكن للتوضيح المطلوب منك هو أن تقومي بكتابة كود بايثون لتنفيذ مجموعة من العمليات على هياكل البيانات من نوع قائمة List و مجموعة Set. وبخصوص القوائم ستحتاجين إلى إنشاء قائمة باسم fruits تحتوي على العناصر "Apple", "Banana", "Cherry", "Apple"، ثم طباعة اطبع القائمة وطولها أيضًا. ثم كتابة كود للوصول إلى العنصر الثاني في قائمة fruits وطباعته، وإلى العنصر الأخير في القائمة باستخدام الفهرسة السالبة وطباعة العنصر، ثم الوصول إلى أول عنصرين في القائمة باستخدام مفهوم الـ slicing واطبعيهما. ثم تعديل القوائم بتغيير قيمة العنصر الثاني في قائمة fruits ليصبح "Blueberry"، وأضيفي العنصر "Orange" إلى نهاية القائمة باستخدام دالة append()، ثم أدرجي العنصر "Mango" في بداية القائمة عند الفهرس 0 باستخدام دالة insert(). ثم احذفي العنصر "Cherry" من القائمة باستخدام دالة remove()، ثم احذفي العنصر الأخير من القائمة باستخدام دالة pop(). بعد ذلك استخدمي دوال القوائم، أولاً دالة count() لمعرفة عدد مرات ظهور العنصر "Apple" في قائمة fruits، ثم رتبي عناصر قائمة fruits أبجديًا باستخدام دالة sort()، ثم اعكسي ترتيب عناصر قائمة fruits باستخدام دالة reverse(). ثم تطبيق مفهوم List Comprehension لإنشاء قائمة جديدة باسم long_fruits تحتوي فقط على الفواكه من قائمة fruits التي يزيد عدد أحرف اسمها عن 5 أحرف. والجزء الثاني في التمرين هو إنشاء المجموعات حيث عليكِ إنشاء مجموعة باسم colors تحتوي على العناصر "Red", "Blue", "Green", "Red"، واطبعي المجموعة وطولها. ثم تحققي هل العنصر "Blue" موجود ضمن مجموعة colors واطبعي نتيجة التحقق True أو False، ثم استخدمي حلقة تكرار للمرور على جميع عناصر مجموعة colors وطباعة كل عنصر. بعد ذلك أضيفي العنصر "Yellow" إلى مجموعة colors باستخدام دالة add()، واحذف العنصر "Green" من المجموعة باستخدام دالة remove(). وحاول حذف العنصر "Purple"(وهو غير موجود في المجموعة باستخدام دالة discard()، ثم اشرحي الفرق بين دالة remove() ودالة discard() عند محاولة حذف عنصر غير موجود. ثم التطبيق على دوال المجموعات، من خلال إنشاء مجموعة أخرى باسم new_colors تحتوي على العناصر "Blue", "Purple", "Orange". واستخدم دالة union() لدمج عناصر المجموعتين colors و new_colors واطبعي المجموعة الناتجة، ثم دالة difference() لإيجاد العناصر الموجودة في مجموعة colors وليست موجودة في new_colors، واطبعي المجموعة الناتجة. ثم دالة symmetric_difference() لإيجاد العناصر الموجودة في إحدى المجموعتين ولكن ليس في كلتيهما، واطبعي المجموعة الناتجة. ثم دالة intersection() لإيجاد العناصر المشتركة بين المجموعتين colors و new_colors، واطبعي المجموعة الناتجة. المجموعات set في بايثون
  5. الدورة ستوفر لك كل ما تحتاجه في البداية، لكن دورة جافاسكريبت دورة ضخمة، وبها الكثير من التقنيات المتعلقة بجافاسكريبت، فمنها ما هو خاص بـ Front-End ومنها ما هو متعلق بـ Back-End ومنها ما هو خاص بتطوير تطبيقات الهاتف، وبها أيضًا شرح لتقنيات تطوير برامج سطح المكتب. فتعلم كل ما بالدورة ليس عملي وذلك ليس المطلوب في سوق العمل، والدورة متاحة لك مدى الحياة تستطيع العودة إليها ودراسة ما تبقى منها بعد اكتساب خبرة في تخصص معين فلا مشكلة في ذلك. لذا يجب تحديد التخصص الذي تنوي دراسته قبل دراسة الدورة، وفي حال لم تقرر بعد، إذن أنصحك بتخصص Full-Stack وبه ستتعلم كل من الواجهة الأمامية Front-End والخلفية Back-End. أي تحتاج إلى دراسة المسارات التالية: أساسيات لغة JavaScript أساسيات React.js أساسيات Node.js تطبيق دردشة يشبه WhatsApp إنشاء تطبيق أسئلة وأجوبة باستخدام Next.js أساسيات TypeScript تطبيق تعلم اللغات باستخدام Next.js وتقنيات الذكاء الاصطناعي تطبيق حجز مناسبات باستخدام GraphQL تطبيقات الويب التقدمية PWA
  6. فكرة عمل مثل تلك الأدوات هي التعلم من الأنماط عن طريق جميع البيانات من مصادر متعددة سواء سجلات النظام، حركة الشبكة أو الملفات، ثم تبدأ بتحليلها لتتعلم السلوك الطبيعي للنظام لكي تتمكن من تحديد أي سلوك يخرج عن النمط المعتاد، وفي مرحلة التحليل ستجد اعتماد بنسبة 80 إلى 90% على خوارزميات تعلم الآلة Isolation Forest, One-Class SVM, Autoencoders. وكذلك التحليل السلوكي من خلال التحليل تتبع سلوك البرامج والعمليات، فهم تسلسل الأحداث والأوامر، ثم إنشاء بصمات للسلوك الخبيث، ومعالجة اللغة الطبيعية NLP بتحليل رسائل البريد الإلكتروني للكشف عن التصيد، فهم محتوى الملفات النصية والوثائق وتحليل أكواد البرمجيات الخبيثة. ثم الإعتماد على الشبكات العصبية Random Forest, Deep Neural Networks بنسبة 70 إلى 85% في تحديد نوع وخطورة التهديد أي تصنيف التهديد، وكذلك التنبؤ بالهجمات المستقبلية عن طريق خوارزميات LSTM, Time Series Analysis. والأفضل في ذلك المجال هي أداة Wazuh لكونها شاملة SIEM + XDR + Compliance وسهلة الاستخدام ووظيفتها الكشف والتنبيه، وبجانبها يوجد أداة Suricata لتحليل حركة الشبكة وهي متوافقة مع Wazuh. ويوجد TheHive و Cortex ويستخدمان معًا لتحليل البرمجيات الخبيثة وأتمتة الاستجابة، والتحليل العميق، لكن كلاهما أدوات متقدمة وليست مناسبة للاستخدام البسيط.
  7. كل شخص له ظروفه، لكن بشكل عام فترة 7 شهور لإتمام نصف الكورس مدة كبيرة وليس من الجيد إطالة مدة تعلم أساسيات بايثون أو أي لغة كل تلك المدة، من المفترض تحديد إطار زمني لا تتخطيه وعليكِ الإلتزام به وتحديد وقت يومي للدراسة على الأقل ساعتان في حال ليس لديكِ وقت فراغ أكثر من ذلك. المدة المناسبة تختلف من شخص لآخر، لكن فترة 3 أشهر كافية على أقصى تقدير، وبعدها تنتقلين إلى تعلم التقنيات الخاصة باللغة حسب التخصص الذي تريدينه، وفي حال واجهتي ظروف خاصة فلا تنقطعي بالكلية بل حاولي القيام بتمارين أو مشروع بسيط بشكل أسبوعي على الأقل لتجنب فقد ما تعلمتيه، ففي بداية التعلم الاستمرار مهم جدًا لتثبيت وتوطيد ما تم تعلمه. ولمعرفة نسبة الفقد لديكِ، ستحتاجين إلى إعادة التمارين والمشاريع التي جاءت بالدروس بمفردك كمراجعة، ولا تنزعجي من ذلك فالمراجعة أمر أساسي لابد منه سواء انقطعتي أم لا، حاولي قدر الإمكان استرجاع ما استوعبتيه من خلال التطبيق العملي وبالطبع بإمكانك الرجوع للدروس بعد المحاولة وليس قبلها لتنشيط ذهنك، وذلك سيتم خلال أيام قليلة لتنشيط الذاكرة. في حال تواجهين صعوبة في أغلب التطبيقات العملية بنسبة كبيرة أي في 50% من التمرين، فالأفضل إذن إعادة الدراسة من البداية. وبالطبع لو لديكِ مُلخصات أو ملاحظات قمتي بكتابتها، فذلك من شأنه تسريع عملية تنشيط الذاكرة، ولا تبحثي عن مصادر جديدة حاليًا، فقط الدروس بالدورة.
  8. الدورة ممنهجة بشكل مُتدرج، ففي البداية يتم شرح أساسيات لغات الويب HTML, CSS, JS بدون التعمق بها، أي ما يكفي لإنشاء موقع شخصي بسيط في النهاية بعد دراسة ما سبق، ثم التوسع لاحقًا في المسارات التالية من خلال مشاريع عملية كاملة متدرجة التعقيد، فأول مشروع هو بناء واجهة مستخدم تشبه موقع YouTube، ثم مسار بناء صفحات هبوط والذي سنقوم به بتطوير 5 مشاريع. ويلي ذلك مسارات أخرى بمشاريع مختلفة، يتم من خلالها توضيح كيف يتم تطوير واجهة المستخدم من خلال واجهات مستخدم مختلفة التعقيد. وفي الواقع العملي لا يتم الإعتماد فقط على CSS، بل هناك أُطر عمل لتسريع عملية التطوير وتنظيمها سواء عن طريق بوتستراب أو Tailwind، والأخير أصبح الإطار الرسمي لتطوير واجهات المستخدم حاليًا. عامًة في أي دورة من أي مصدر لا تكتفي بما يتم شرحه بها، ستجد تفصيل هنا:
  9. يوجد PyTorch (torchvision.models) و TensorFlow (tf.keras.applications) فكلاهما إطاري العمل الرئيسيين للتعلم العميق ويأتيان مع مجموعة من النماذج المُدربة مسبقًا لمهام تصنيف الصور مثل ResNet، VGG، Inception، MobileNet، EfficientNet، Vision Transformer (ViT)، Swin Transformer. أيضًا كشف الكائنات من خلال Faster R-CNN، RetinaNet، SSD، ويوجد مكتبات جاهزة تعتمد عليها وهي Detectron2. كذلك التجزئة الدلالية Semantic Segmentation عن طريق FCN، DeepLabv3، U-Net. أيضًا يتوفر نماذج Hugging Face Transformers for Vision ومنها Vision Transformer (ViT)، DeiT، BEiT، Swin Transformer لتصنيف الصور. ونماذج DETR، YOLOS لكشف الكائنات باستخدام معماريات الترانسفورمر. ونماذج CLIP، DINO، DINOv2 للتعلم الذاتي الموجه ، والتصنيف بدون أمثلة، ومطابقة الصور بالنصوص، وللعلم نموذج DINOv2 قوي بشكل خاص لاستخراج الميزات من الصور.
  10. الكثير من المنصات تقوم بذلك، مثلاً استضافة Netlify تقوم بمنح كل مشروع نطاق فرعي خاص به في حال لا تمتلك أنت دومين، والدومين الرئيسي للاستضافة هو netlify.app. وهناك أمور يجب توضيحها فالنطاق أو الـ Domain هو النطاق الرئيسي الذي تشتريه من أحد مزودي الخدمة مثل Name Cheap، وليكن shreef.com وعند التسجيل تحصل على سجل DNS أو DNS Record مجانًا في حال Name Cheap، والتكلفة 10 إلى 15 دولار في السنة للدومين الواحد. ويوجد مزودي خدمة آخرين مثل: Cloudflare Amazon Route 53 Google Cloud DNS DigitalOcean DNS ما تحتاجه هو سجل DNS واحد فقط لجميع النطاقات الفرعية، وذلك بسبب رمز * أو الـ Wildcard أي بدلاً من إضافة التالي: ahmed > 123.45.67.89 sara > 123.45.67.89 ali > 123.45.67.89 fatima > 123.45.67.89 ... 1000 سجل لـ 1000 مستخدم ستضيف سجل واحد فقط: * > 123.45.67.89 وذلك في إعدادات حسابك في لوحة التحكم على Name Cheap وغيره، ستحد خيار باسم Manage DNS وبه يوجد Add لإضافة سجل جديد، ولاحظ الـ IP السابق استبدله بعنوان IP خادم الاستضافة. والسجل يجب أن يكون من نوع A أي عند الإضافة ستجد type اختر A ثم في الـ Name أضف * وفي الـ Value قم بإضافة عنوان الـ IP الخاص بالاستضافة. وبذلك السجل يخدم ملايين المستخدمين.
  11. ذلك مشروع نهائي كإختبار لك، المطلوب به تطوير نظام توصية كتب لمكتبة رقمية، لتحسين تجربة المستخدم من خلال اقتراح كتب تناسب اهتماماته بناءً على بيانات معينة، والبيانات تشمل: عناوين الكتب. أنواع الكتب (التصنيفات مثل رواية، خيال علمي، تاريخ، وخلافه). ملخصات الكتب. تقييمات الكتب. وبعد البحث عن مجموعة بيانات مناسبة أي Dataset، عليك معالجة النصوص من خلال مكتبات مثل NLTK أو spaCy، والنظام يجب أن يستخدم تقنيات الذكاء الاصطناعي، وبالأخص المحولات Transformers، لتحليل النصوص وإنشاء توصيات دقيقة بناءًا على تفضيلات المستخدم، ويتوفر Sentence Transformers من Hugging Face. بالتالي عليك فهم تفضيلات المستخدم، حيث تستقبل مدخلات من المستخدم، كنوع الكتب المفضل لديه أو وصف لما يبحث عنه، واعتمادًا على تلك المدخلات، ستقترح كتبًا مناسبة. أيضًا معالجة النصوص بتحليل ملخصات الكتب مثلاً، وذلك باستخدام تقنيات معالجة اللغة الطبيعية NLP، وستحولها إلى Text Embeddings، وهي تمثيلات رقمية للنصوص يمكن للكمبيوتر فهمها. ثم إنشاء نظام التوصية من خلال استخدام التضمينات النصية لقياس التشابه بين تفضيلات المستخدم وبين الكتب في قاعدة البيانات، ولديك أدوات مثل FAISS أو Annoy للبحث بسرعة عن الكتب الأكثر تشابهًا. وتفقد مكتبة scikit-learn لتجربة مقاييس تشابه إضافية مثل Cosine Similarity أو لتطبيق تقنيات التجميع Clustering.
  12. الأفضل إنشاء دالة شاملة لتحليل القيم المفقودة: def analyze_missing_values(df): missing_df = pd.DataFrame({ 'Column': df.columns, 'Missing_Count': df.isna().sum().values, 'Missing_Percentage': (df.isna().sum().values / len(df) * 100).round(2), 'Data_Type': df.dtypes.values }) ثم الترتيب حسب عدد القيم المفقودة: missing_df = missing_df.sort_values('Missing_Count', ascending=False) ثم عرض الملخص: print(f"Total columns: {len(df.columns)}") print(f"Columns with no missing values: {len(missing_df[missing_df['Missing_Count'] == 0])}") print(f"Columns with missing values: {len(missing_df[missing_df['Missing_Count'] > 0])}") print("\n" + "="*60) ثم عرض جميع النتائج: with pd.option_context('display.max_rows', None, 'display.max_columns', None): print(missing_df.to_string(index=False)) return missing_df ولا تنسى استدعاء الدالة: missing_analysis = analyze_missing_values(data_train)
  13. حسب نوع البيانات، فلو رقمية ستحتاج معالجة مبكرة للعمليات الحسابية، ولو فئوية بإمكانك اعتبار "مفقود" كفئة منفصلة، ولو نصية فاستخراج الميزات يتعامل مع القيم المفقودة تلقائيًا. الأفضل الدمج بين الطريقتين، بمعنى تحليل القيم المفقودة وفهم نمطها ثم إنشاء مؤشرات للقيم المفقودة في حال كانت مفيدة، ثم معالجة بعض القيم المفقودة الضرورية، ثم استخراج الميزات وبعد ذلك معالجة أي قيم مفقودة متبقية. ولو أردت تنفيذ أحد الطريقتين، فمعالجة القيم المفقودة أولاً ثم استخراج الميزات مناسبة في حال الميزات المستخرجة تعتمد على قيم كاملة، ومع العمليات الحسابية مثل المتوسطات أو الانحرافات المعيارية، وعند استخدام تقنيات تتطلب بيانات كاملة. أما استخراج الميزات أولاً ثم معالجة القيم المفقودة مناسبة للحفاظ على معلومات القيم المفقودة، وإنشاء ميزات تشير إلى وجود قيم مفقودة، ومع البيانات الفئوية حيث "مفقود" أحيانًا تصبح فئة مهمة.
  14. الأسئلة تختلف بإختلاف التخصص البرمجي وأيضًا سنوات الخبرة وأيضًا حسب طبيعة الشركة، لكن بشكل عام في البداية الأسئلة شخصية أي عليك تقديم نفسك بالإنجليزية وملخص خبراتك وربما بضعة أسئلة أخرى، ثم يتم مواصلة الحديث بالعربية. عامًة سأفترض أنك Front-End، المقابلة الأولى تكون من قبل مسؤول الـ HR وهي مقابلة تمهيدية لمدة 30 دقيقة أو أقل، هدفها التحقق من الملاءمة العامة، الدوافع، الراتب المتوقع، ومستوى اللغة، وأحيانًا تتضمّن أسئلة تقنية سطحية للتأكد من صحة السيرة الذاتية، وأيضًا سؤالك عن الراتب المتوقع. ثم يليها مقابلة أخرى في حال اجتزت الأولى، وذلك في يوم مختلف لمدة 60 إلى 90 دقيقة، مع Tech Lead أو Senior Front-End وهي مقابلة تقنية، وسيت سؤالك عن هياكل البيانات، والأسئلة المفاهيمية عن الأساسيات DOM, Event Loop, CSS Specificity وخلافه، أنماط التصميم، والأداء. وأحيانًا يُطلب منك شرح كود سابق أو مراجعة مقتطف كود، وغالب الأسئلة تكون عن اللغة البرمجية جافاسكريبت وأيضًا عن التقنية التي تستخدمها مثل React. وسيتم إجراء اختبار عملي إما Live Coding عبر منصة مثل CodeSandbox/CodePair، أو مشروع منزلي صغير تُسلمه خلال 24–48 ساعة، ويتم تقييمه على أساس نظافة الكود، المعمارية، الاختبارات، والأداء. بعد ذلك مقابلة ثقافة وفريق لمدة 30–45 دقيقة مع المدير المباشر أو أحد المؤسسين وتلك المرحلة فائدتها التركيز على القيم، أسلوب العمل، إدارة الوقت، والتعاون. وأحيانًا يوجد مقابلة نهائية للمفاوضات والعرض الوظيفي أي الـ Offer، وبالطبع أحيانًا يتم دمجها مع المرحلة 4 في الشركات الصغيرة، أيضًا في الشركات الناشئة الصغيرة جدًا تُدمج المرحلتان 1 و 2 معاً وعليك تسليم المشروع العملي لاحقاً، لكن غالبية الشركات المتوسطة والكبيرة تفضل مرحلتين إلى أربع مراحل لضمان الاختيار الصحيح وتقليل معدل الدوران.
  15. تلك الخطوة تطلب منك إدخال دومين تمتلكه بالفعل وذلك لربطه بموقعك، وتلك ليست الطريقة الصحيحة، ما تريده هو تغيير اسم الـ subdomain أو الدومين الفرعي الذي يكون قبل netlify.app هنا.netlify.app من القائمة الجانبية اختر projects وسيظهر لك المواقع التي قمت برفعها اضغط على الموقع الذي تريده. ثم ستجد في القائمة الجانبية domain management اضغط عليها ثم ستجد رابط موقعك وبجانبه كلمة options اضغط عليها ثم اختر edit project name وقم بتغييره إلى ما تريد ثم اختر save.
  16. معنى ذلك أنكِ تمتلكين ثُلث الشركة وهي نسبة مؤثرة تمنحك القدرة على التحكم في الأمور وتنفيذ رؤيتك. لكن هناك أمور غير واضحة وبدونها فالإجابة ستكون عامة، هل المبلغ هو مساهمتك في رأس المال فقط؟ أم هل جزء منه مقابل جهدك الإداري المستقبلي علاوة على راتبك؟ ومن هم الشركاء الذين ساهموا بالـ 6 ملايين المتبقية؟ وما هي توقعاتهم ودورهم؟ هل سيكونون شركاء صامتين أم لهم دور استشاري أو إشرافي؟ وهل يوجد عقد تأسيس شركة واضح ومفصل؟ هذا هو أهم شيء. عامًة بما أنك ستديرين المكان، يجب أن تحصل على راتب شهري ثابت مقابل مجهودك الإداري، ويُخصم من إيرادات الشركة كأي مصروف تشغيلي آخر، قبل توزيع أي أرباح على الشركاء، بالطبع يجب أن يكون معقولًا ومتناسب مع حجم العمل، مسؤولياتك، وخبرتك، ومتوافقًا مع رواتب المديرين في شركات مشابهة، وبالإمكان الاتفاق على مكافآت أداء مرتبطة بتحقيق أهداف معينة مثل نسبة أرباح معينة، نمو معين وغيره. كذلك تحديد صلاحياتك كمدير بوضوح في عقد الشركة أو في اتفاقية إدارة منفصلة، أي ما هي القرارات التي يمكنك اتخاذها بمفردك؟ وما هي القرارات التي تحتاج لموافقة الشركاء الآخرين مثلاً، استثمارات كبيرة، تغيير نشاط الشركة، تعيينات في مناصب عليا؟ بجانب تقدم تقارير دورية شهرية أو ربع سنوية للشركاء الآخرين توضح أداء الشركة المالي والتشغيلي. بالنسبة للأرباح التي يتم توزيعها هي صافي الربح بعد خصم جميع المصروفات التشغيلية بما في ذلك راتبك كمدير، الضرائب، وأي مخصصات أخرى كاحتياطي للتوسع أو للطوارئ. وبما أن نسبتك هي 1/3 ستحصلين على 33.33% من صافي الأرباح، والشركاء الآخرون 66.67% من صافي الأرباح، وليس بالضرورة توزيع كل الأرباح، فمن الأفضل احتجاز جزء من الأرباح لإعادة استثماره في الشركة وتنميتها.
  17. المطلوب منك في الدورات، هو دراسة المسارات بالترتيب الموجود في الدورة ثم تنفيذ المشروع العملي في نهاية كل مسار تقريبًا، ثم رفع ذلك المشروع على مستودع GitHub خاص به، وتسليم روابط تلك المستودعات عند التقدم للإختبار بعد الإنتهاء من الدورة. بالنسبة لمنصة أنا ليست خاصة بالدورة، إلا في حال اشتركت بدورة إدارة تطوير المنتجات حيث سيتم الإعتماد عليها في تنظيم وإدارة المشاريع. عدا ذلك، تستطيع استخدامها بشكل شخصي لتنظيم المهام اليومية والسنوية وتعزيز الإنتاجية لكونها توفر أدوات مرنة لإدارة الأهداف والمشاريع وفرق العمل.
  18. لغة البرمجة بايثون ليس بتلك الصعوبة التي تتخيلها، بالعكس بتعلمها ستُفتح لك الكثير من الفرص وستكتسب مهارة هامة جدًا، في البداية ستجد صعوبة في استيعاب المفاهيم البرمجية، ولا مشكلة في ذلك، الأفضل الإشتراك في دورة علوم الحاسوب بجانب دورة الذكاء الاصطناعي، حيث ستؤهلك لتعلم مجال البرمجة بشكل أسهل وعلى أساس سليم. وبالطبع لا تحتاج إلى دراسة كامل مسارات الدورة طالما أنك تريد تعلم جزئية معينة، لذا ما تحتاجه هو دراسة المسارات التالية بها: أساسيات بايثون تطبيقات عملية على النماذج النصية الكبيرة LLMs التعامل مع البيانات تحليل البيانات Data Analysis تعلم الآلة Machine Learning ثم ستحتاج إلى تعلم أساسيات برنامج Excel ثم تعلم أحد برامج التحليل والتصوير المرئي للبيانات مثل Bower BI أو Tableau أو Google Looker Studio، وأنصحك ببرنامج Bower BI. للتبسيط الصورة التالية جيدة:
  19. ما هي الدورة التي اشتركت بها، هل هي بايثون أم الذكاء الاصطناعي؟ وهل تنوي التخصص بمجال تحليل البيانات؟ وما هو تخصصك الحالي؟
  20. تلك هي المسارات القديمة أو المحتوى القديم للدورة، بمعنى كل فترة يتم تحديث مسار معين من الدورة ليتناسب مع التحديثات التي حدثت في مجال البرمجة، بالتالي يتم إضافة المسار القديم "لأرشيف المسارات الأقدم" واستبداله بالمحتوى الجديد. لذا تستطيع مشاهدة المحتوى القديم لو أردت في أرشيف المسارات الأقدم، لكن لا أنصحك بذلك، عليك بمشاهدة المحتوى الحديث فهو أفضل.
  21. الأمر سيتم من خلال جافاسكريبت عن طريق تحديد النموذج form من خلال querySelector للاستماع لحدث submit: const form = document.querySelector('.news-col form'); const input = document.getElementById('input'); if (form && input) { form.addEventListener('submit', function(event) { event.preventDefault(); const email = input.value.trim(); if (email) { alert(`مرحباً بك في المنصة!\n${email}`); input.value = ''; } else { alert('يرجى إدخال البريد الإلكتروني.'); } }); } ثم الحصول على القيمة الخاصة بالإيميل من خلال input.value وعرضها في رسالة منبثقة عن طريق دالة alert الخاصة بذلك، وفي حال لم يقم بإدخال بريد نعرض رسالة يريجى إدخال البريد.
  22. ما تقصده هو line-height وهي لتحديد المسافة العمودية بين أسطر النص في عنصر ما، أي تتحكم في الارتفاع أو المسافة بين الأسطر في النص، وذلك لتسهيل القراءة أو التحكم في شكل النص حسب التصميم. p { font-size: 16px; line-height: 1.5; } لاحظ وضعت قيمة 1.5 وتعني مرة ونص حجم الخط وهو 16، بالتالي قيمة 1.5 ستصبح 24px في خاصية line-height، مع العلم القيمة الإفتراضية التي يُحددها المتصفح هي 1.2 وتستطيع كتابتها مباشرًة لا مشكلة: p { font-size: 16px; line-height: 24px; } الخاصية line-height
  23. الأمر بحاجة إلى خبرة بسوق العملات الرقمية وليس بالسهل تنفيذه، البحث الذي قمت جيد، ابدأ بـ FinRL فهو ممتاز كبداية لكونه يحتوي أمثلة جاهزة على: DDPG (Deep Deterministic Policy Gradient) PPO (Proximal Policy Optimization) A2C (Advantage Actor-Critic) SAC (Soft Actor-Critic) بالإضافة إلى بيئات مشابهة لـ Gym تحاكي سوق الأسهم والعملات الرقمية، وتحتوي الـ Checkpoints المدربة على بيانات تاريخية تستطيع إعادة استخدامها من خلال نقل التعلم Transfer Learning، بالتالي هو مناسب جدًا للعملات الرقمية، لكونه قادر على التقاط علاقات غير خطية لا تكتشفها الاستراتيجيات الكلاسيكية، ويتكيف مع السوق عن طريق Online Learning والـ Fine-tuning بشكل دوري. لكن ستواجه صعوبة بالطبع فالمجال ليس بالسهل على حتى من لديهم خبرة، فتقلب العملات الرقمية شديد بسبب توزيع العوائد fat-tails أي الأحداث المتطرفة وهي ارتفاع وانهيار 10-20٪ في وقت قصير، بالتالي أي نموذج قد ينهار في Flash-Crash وهو انهيار خاطف ثم ارتداد سريع الذي يحدث في سوق العملات الرقمية وستبيع الخوارزمية بالسعر المنهار وتشتري مجدداً بسعر أعلى، فتخسر الكثير في ثوانٍ. أيضًا مشكلة الـ Overfitting ستحتاج إلى العمل على حلها، لأنّ النموذج يتعلم من بيانات الماضي ولا يُعمّم، بمعنى عند تغير السوق الحقيقي يفشل لأن القواعد التي حفظها لم تعد موجودة. كذلك رسوم التداول، الانزلاق السعري، حدود API كلها تقلص الهامش، بشكل مُبسط كل عملية بيع وشراء تقتطع البورصة جزء صغير من الأرباح مثل عمولة البنك، ولانزلاق يعني أردت الشراء بسعر 100، لكن عند تنفيذ الأمر أصبح السعر 101 وذلك الفرق يأكل الأرباح. وحدود الـ API أقصد بها البورصة تسمح بعدد معين من الأوامر أو طلبات البيانات في الثانية لو تجاوزتها تُرفض أو تتأخر الأوامر، فتضيع فرصة السعر الجيد. والأخبار الكلية أي اللوائح والاختراقات لا يلتقطها النموذج إلا إذا أضفت Sentiment Sources ودربته عليها، بمعنى لو أعلنت دولة كبرى حظر التشفير، أو تم اختراق منصة، سيهبط السوق فورًا، فأي نموذج يعتمد فقط على الأسعار التاريخية وهو أعمى عن تلك الأحداث ويحتاج إلى تغذية إضافية مثل تحليلات تويتر، مواقع الأخبار، أو تدريب خاص على بيانات معنويات السوق حتى يفهم تأثيرها. أيضًا كل بورصة تختلف في السيولة وسرعة التنفيذ، مما يُسقِط أداء النموذج عند النقل لبورصة أخرى. وللعلم التداول النشط بالذكاء الاصطناعي لا يضمن أداء أفضل من الشراء والإحتفاظ لمدة، ما لم ينجح في واحد من أمرين توليد أرباح كبيرة تكفي لتغطية الرسوم، وتجنب الخسائر الكبيرة أو الربح منها أثناء فترات هبوط السوق. عامًة بعد ضبط جيد وإدارة مخاطر صارمة، ستحصل على بوت تداول دقته مقبولة فقط، أي نصف الصفقات تربح وذلك كافي لتحقيق نمو سنوي محترم مع ضبط الخسائر بسرعة وترك الأرباح تكبر، بشرط أن تتحمّل هبوط مؤقّت قد يصل إلى 20 ٪.
  24. يوجد تطبيقات عملية في كل مسار لتوظيف ما تعلمناه بشكل عملي لا تقلق بخصوص تلك النقطة، وفي حال يوجد جزئية تريد التطبيق بشكل عملي عليها ولم يتوفر ذلك في المسار، تستطيع السؤال أسفل الدرس وسيتم توفير لك تمرين أو مشروع للتطبيق عليه. بخصوص المشاريع العملية المطلوبة منك، فستجد تفصيل هنا:
  25. ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم أسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.
×
×
  • أضف...