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

حمزة عباد

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

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

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

كل منشورات العضو حمزة عباد

  1. أهلا، يرجى طرح السؤال في قسم التعليقات أسفل فيديو الدرس، حتى نعرف ما هو الدرس الذي تتحدث عنه. فهذا قسم للأسئلة العامة التي ليس لها علاقة بدروس الدورات. شكرا.
  2. بما أنك تستخدم Kaggle للحصول على البيانات، فلماذا لا تستخدم منصة Kaggle Notebook أيضا لتشغيل الكود؟ فتلك المنصة أيضا توفر GPU مجاني لمدة معينة، وأعتقد أن المدة التي توفرها أكثر من Colab. هذا لأن Colab يتم استخدامه بكثرة، لذلك فالطلب عليه شديد، بينما Kaggle Notebooks لا يتم استخدامها بنفس الشدة. بالمناسبة، Kaggle أيضا مدعومة من Google لذلك يفترض أن تعمل عليه مشاريعك بنفس الكفاءة. ما يمكنك استخدام المنصتين معا وليس واحدة منهما فقط، بحيث تستخدم حقك المجاني في واحدة منهما ثم تنقل النماذج والبيانات إلى الأخرى وتستمر بالعمل مستفيدا من حقك المجاني على الأخرى أيضا!
  3. توجد نسخ قام بسحبها بعض الأشخاص، منها هذا التطبيق على موقع تطبيقات ماكروسوفت: https://apps.microsoft.com/detail/9nblggh5792k?launch=true&mode=full&hl=en-us&gl=au&ocid=bingwebsearch ومنها هذا المستودع على GitHub: https://github.com/Ja7ad/W3Schools المشكلة أن هذه النسخ قديمة ولا يبدو أن أصحابها يهتمون بتحديثها. إذا أردت موقعا يحوي توثيقات لغة البرمجة والمكتبات المختلفة، ويمكن استخدامه بدون اتصال بالأنترنت، فعليك بموقع DevDocs: https://devdocs.io/ هذا الذي أستخدمه شخصيا. في هذا الموقع يتم تحديث التوثيقات باستمرار، ويمكن تنزيل أي توثيق ليعمل بدون أنترنت، وهذا كله من خلال الموقع نفسه، وما تنزله يتم حفظه داخل التخزين المحلي للمتصفح، بدون الحاجة إلى أن تحفظه في أي مكان مختلف على جهازك. كما أن الموقع يحوي ميزة بحث سريعة وتقريبية تسمح لك بإيجاد ما تريده فيه بسرعة.
  4. كانت أول لغة برمجة تعلمتها في حياتي هي لغة JavaScript. وكان ذلك بالطبع بعد تعلم لغات التوصيف HTML و CSS (يجب أن لا يقفز الواحد إلى دراسة لغات البرمجة قبل لغات التوصيف Markup languages، لأن لغات التوصيف أبسط وهي ضرورية على كل حال وسوف تحتاجها عاجلا أم آجلا). عندما تعلمت لغة JavaScript قديما (أعتقد كان ذلك سنة 2009-2010) لم تكن هذه اللغة قبل هذه السنوات مستخدمة سوى داخل المتصفح لإضافة تفاعلات وتحريكات تظهر للمستخدم. لذلك لم تكن لغة JavaScript كافية لإنشاء تطبيقات حقيقية واضطررت بعدها للانتقال إلى Python. لكن حاليا، JavaScript تعمل في كل مكان حرفيا بفضل مشغلات مثل Node.js و Electron و Expo، وقد وصلت إلى مستوى لم تصل إليه أية لغة برمجة أخرى في الدعم والانتشار. لذلك، دائما ما أقول للمبرمجين الجدد: إذا أردت أن تتعلم لغة برمجة واحدة في حياتك فلتكن إذن JavaScript. بالإضافة إلى ذلك، البدء بالبرمجة بـJavaScript بسيط للغاية، حتى وإن كانت اللغة تحوي الكثير من الأمور التي يصعب فهم كيفية عملها بدقة، وفيها كثير من الكتابات المختلفة التي تقوم بنفس الشيء. لكن على العموم، تبقى جيدة لكي تبدأ بها وتستمر بها طوال السنين القادمة، خصوصا أن فرص العمل التي تطلبها آخذة في الازدياد يوما بعد يوم.
  5. أهلا. بالنسبة للأسئلة المتعلقة بالدورة، يرجى طرح السؤال في قسم التعليقات أسفل الفيديو، حتى نعرف ما هو الدرس الذي تتحدث عنه. وكذلك أثناء طرح السؤال يرجى إرفاق الكود الذي كتبته حتى نتمكن من معرفة أين أخطأت. شكرا.
  6. وعليكم السلام، يوجد في Django وحدة تطبيق مدمجة تسمى django.contrib.auth، وهي المسؤولة عن إدارة حسابات المستخدمين. هذه الوحدة يتم إدراجها تلقائيا عند إنشاء أي مشروع Django باستخدام الأمر: django-admin startproject project_name حيث أنك إن فتحت ملف settings.py يجب أن تجدها في INSTALLED_APPS و MIDDLEWARE: INSTALLED_APPS = [ # … 'django.contrib.auth', # … ] MIDDLEWARE = [ # … 'django.contrib.auth.middleware.AuthenticationMiddleware', # … ] هذا يعني أنه بإمكانك إنشاء المستخدمين وتسجيل الدخول. أسرع طريقة لإنشاء مستخدم هي إنشاء مستخدم فائق عن طريق الأمر: python manage.py createsuperuser لكن هذا فقط للمستخدمين الفائقين. لإنشاء مستخدم عادي يجب استخدام البرمجة من خلال Django Shell مثلا: python manage.py shell from django.contrib.auth.models import User user = User.objects.create_user('username', 'address@email.net', 'password') أو عن طريق Django Admin الذي يمكن الوصول إليه بعد تشغيل الموقع على /admin في معظم المشاريع (طبعا هذا يعتمد على ما يوجد في urls.py في المجلد الخاص بالمشروع): python manage.py runserver ثم الذهاب بالمتصفح إلى: http://127.0.0.1:8000/admin/ وهنا يجب استخدام اسم وكلمة سر المستخدم الفائق الذي يتم إنشاؤه بالأمر createsuperuser. هذه خطوات عامة للتعامل مع المستخدمين، لكن هذا اختصار شديد يصلح فقط للتذكير. إذا كنت تريد دليلا خطوة بخطوة لتطوير موقع يدعم عمدة مستخدمين، فيمكنك الاطلاع على الجزء السابع من سلسلة دروس تطبيق عملي لتعلم جانغو الموجودة في أكاديمية حسوب لأنها تشرح كيفية إنشاء الحسابات وتسجيل الدخول. إذا لم تستطع المتابعة من هذا الدرس، فيستحسن أن تبدأ من أول درس من السلسلة، فهي سلسة مفيدة بالفعل. وإذا كنت قد اشتريت دورة تطوير التطبيقات باستخدام Python، فيمكنك أن تدرس سلسلة دروس تطوير تطبيق مشاريع، ففي هذا التطبيق يتم إنشاء موقع يتعامل مع حسابات المستخدمين. وكذلك المشروع الأكبر منه الموجود في مشار منفصل تطوير متجر إلكتروني.
  7. وعليكم السلام، تحديد هل البيانات قليلة أو كثيرة لا يتم عبر قياس حجمها. لأن البيانات القليلة عندما تكون على شكل فيديوهات فسوف يكون حجمها ضخما، بينما البيانات النصية عادة ما يكون حجمها صغيرا حتى بوجود الكثير منها. لذلك، في مجال التعلم الآلي والعميق، لا نقيس البيانات بالمساحة الذي تأخذها من الذاكرة، بل بعدد وحدات البيانات (Data instances). ومع معرفة عدد وحدات البيانات، لا يمكن القول بدقة هل هو عدد قليل أم كثير، إلا إذا قارناها مع مجموعات البيانات المشابهة لها (يعني التي تستخدم في نفس الأمر أو في أمر مشابه)، ويتم كذلك قياس حجم البيانات بكفايتها لتدريب النماذج للقيام بالمهمة المطلوبة. فمثلا، مجموعة البيانات الشهيرة MNIST تحوي 60,000 صورة للأعداد المكتوبة بخط اليد، وهذا الكم كاف لتدريب نموذج تعلم آلة والتحقق من كفائته، لذلك نقول أنها مجموعة بيانات ذات حجم جيد للقيام بهذه المهمة. هذا يعتمد على من يوفر هذه البيانات. بعض المؤسسات تقوم بتحديث بياناتها باستمرار، بينما أغلب البيانات، خاصة التي يرفعها أشخاص عاديون، يتم جمعها مرة واحدة وتبقى نفسها بدون تغيير إلى الأبد. يمكنك أن تجد هذا الأمر مذكورا على الصفحة التي حملت البيانات منها. إذا لم تجد شيئا بخصوص هذا الأمر، فهذا على الأغلب يعني أن هذه البيانات لن يتم تحديثها في المستقبل. لا يمكنك أن تبقى على اطلاع على كل البيانات الموجودة على الساحة وتحديثاتها، فهذا شيء متعب. لكن يمكنك متابعة فقط البيانات التي أنت مهتم بها. عندما تقوم بإنشاء نموذج تعلم آلة\عميق، فقد تحتاج إلى إعادة تدريبه كل فترة إذا كان نوع البيانات الذي تعمل عليه يتغير بتغير الزمن (مثل بيانات أسعار السوق)، لكن إذا كانت البيانات ثابتة نسبيا (مثل صور الأشخاص أو الأشياء) فهذه قد لا تحتاج تحديثا مستمرا ويمكنك أن تبقى بنفس النسخة لمدة طويلة من الزمن. يمكنك أيضا أن تستخدم البيانات الجديدة لاختبار نموذجك وترى إن كان لا يزال بنفس كفائته أم أن البيانات الجديدة صارت صعبة عليه. من غير الممكن أن تكون خبيرا في كل شيء، فمهندس الذكاء الاصطناعي يضطر إلى العمل في عدة مجالات تختلف عما درسه. لذلك، إذا كان هذا المشروع سيكون بالشراكة مع شخص متخصص في المجال، فهنا يمكنك أن تستعين به. وإذا لم يكن متوفرا، فيمكنك أن تتعلم الحد الأدنى الذي يسمح لك باستغلال البيانات بشكل صحيح وفهم المطلوب.
  8. لا يوجد شيء يسمى احتراف برمجة بشكل عام، بل الاحتراف يكون بالنسبة للغة ولإطار العمل الذي تستخدمه. يعني لو درست HTML و Bootstrap لمدة كافية وطبقت بها مشاريع معقدة وتمكنت من إنجازها بنجاح، فهنا يمكن أن تسمي نفسك محترفا في هذه الأمور. يمكن أن تستخدمها في إنشاء المواقع التعريفية وصفحات الهبوط وغير ذلك من المواقع الساكنة (static websites). هناك أمر آخر، المحترف يجب أن يكون قادرا على حل معظم مشاكل الكود التي تواجهه بمفرده. يمكنه الاستعانة بالبحث على الأنترنت، لكنه في النهاية لا يعطي الكود لشخص غيره لكي يحل له مشكلته. إذا كان لا يستطيع بعد حل معظم مشاكله بنفسه فهذا لم يصل إلى الاحتراف بعد في الأمر الذي يستخدمه. أما المبرمج الخبير فهو من يستطيع حل مشاكل الآخرين وليس فقط مشاكله.
  9. وعليكم السلام، كل نسخة من نسخ بايثون تأتي ومعها بيئة نظام افتراضية خاصة بها. لذلك، إذا ثبتت Python 3.11 مثلا و كذلك Python 3.12، فأنت لديك الآن مكانان مختلفان في كل مكان هناك نسخة محددة من Python (لا أنصح بتثبيت نسختين مختلفتين على نفس النظام، هذا قد يتسبب في مشاكل مزعجة أثناء الاستخدام). هذا يعني أن لديك برنامجين يسميان python، وكذلك برنامجين من pip التي تستخدمها لتثبيت المكتبات الأخرى. لذلك، عند ترقية نسخة Python (يعني حذف النسخة السابقة وتثبيت الجديدة) فسوف تفقد كل المكتبات التي كانت تستخدمه، وسوف تحتاج إلى تثبيتها مرة أخرى مجددا. ونفس الشيء ينطبق على البيئات الافتراضية التي تنشؤها باستخدام venv. لأن ما يقوم به هذا الأمر هو مجرد إنشاء نسخة من مفسر Python مع كل الملفات الضرورية ووضعها في المكان الذي تحدده أنت. لذلك فعندما تقوم بالترقية فإن هذه النسخة ليست معنية بهذا الأمر وسوف تبقى تستخدم نسخة Python قديمة. في الواقع، في الأنظمة التي تدعم الروابط الرمزية (Symbolic links) (يعني أشباه Unix، كل الأنظمة تقريبا ما عدا Windows) لا تتم عملية النسخ بالشكل المبسط بل يتم -بشكل افتراضي- القيام بربط رمزي بين الملفات التنفيذية الخاصة بالمفسر في البيئة الافتراضية التي تنشؤها بحيث تصير تشير إلى النسخة المثبتى على النظام. وهذا يعني أن البيئات الافتراضية تتأثر بالترقية، وقد يتسبب هذا في مشاكل إذا كانت الاعتماديات التي مشروعك لا تدعم النسخة الجديدة من المفسر. حسنا بعد كل هذا الكلام الطويل خذ نصيحة واحدة من أجل أن نختصر: لا تقم بالترقية إلى نسخة جديدة من بايثون في كل مرة تظهر نسخة. هذا شيء متعب بدون فائدة. يجب أن يكون لديك سبب مقنع للترقية. وفي حالة ما قمت بالترقية، احذف البيئات الافتراضية السابقة وأعد إنشائها من البداية. إعادة إنشاء البيئة الافتراضية ليس شيئا مزعجا (باستثناء ما يتعلق باستهلاك الأنترنت والوقت) إذا كنت تحفظ اعتماديات مشروعك باستخدام ملف requirements.txt أو كنت تستخدم أداة أكثر فعالية مثل Pipenv أو Poetry. بالمناسبة، إذا كنت لا تحفظ اعتماديات مشروعك، فيجب البدأ فورا بفعل ذلك، لأن هذا هو التصرف الصحيح الذي يجب أن يقوم به كل مبرمجي Python.
  10. إذا كان برنامجك لن يحفظ شيئا يدخله المستخدم، فهنا لا حاجة إلى قاعدة بيانات. وبما أن البيانات عندك هي صور وسوف تستخدم فقط لتعليم النموذج، أي أنها للاستخدام الداخلي فقط، فهذا يؤكد الأمر. لكن سوف تحتاج إلى قاعدة بيانات بمجرد أن تريد إنشاء شيء إضافي، مثل نظام تسجيل للمستخدمين مثلا. أمّا بخصوص إضافة API أو لا، فهذا يعتمد على شكل مشروعك. هل سيكون مشروعك على شكل موقع إلكتروني بحيث يقوم المستخدم بزيارته وإدخال البيانات عليه؟إذا كان كذلك فلا حاجة لأن أن ننشئ API، لأنه في مشاريع Flask يمكن إنشاء قوالب لصفحات HTML، وهذه الصفحات يتم عرضها على المستخدم، بحيث منها يتمكن من إرسال البيانات اللازمة للبرنامج. إذا أردت مثالا، فهذا موقع أنشأته لأحد العملاء باستخدام Flask وهو يستخدم إحدى تقنيات تعلم آلة للتحقق من URL يدخله المستخدم. هذا الموقع لا يملك أي API لكنه يقوم بالمطلوب. أمّا إذا كان مشروعك يتضمن تطبيق Android مثلا أو أي تطبيق مختلف عن صفحات HTML، فهنا أنت بحاجة لطريقة لإرسال البيانات من واجهة التطبيق إلى مشروعك المبني على Flask. في هذه الحالة سيكون عليك إنشاء API لاستقبال البيانات الضرورية. للمزيد من المعلومات حول استخدامات API: وهذا درس لكيفية استخدام قوالب HTML في Flask (مثل التي يستخدمها الموقع المعروض أعلاه):
  11. أهلا، أوَلا أهنئك على هدفك السامي، الفكرة من الدورات عموما بما في ذلك هذه الدورة هي تخريج طالب قادر إلى الدخول إلى سوق العمل والمنافسة فيه بناء على معارفه الذي يتعلمها خلال الدورة وكذلك من خلال توسعه بعد ذلك، لأن هناك الكثير من الأمور التي لم تكن قد سمعت بها من قبل، والدورة تفتح لك بابا إليها وتعطيك الأساسيات فيها، ثم تجد نفسك صرت قادرا على التوسع في دراستها بعد ذلك. هذا يعتمد على كيفية تشغيله. إذا كان داخل المتصفح أو كتطبيق هاتف ذكي، فهنا Python ليست الخيار الأمثل وستحتاج إلى لغة برمجة أخرى مثل JavaScript. إذا كان تطبيقا على الحاسوب فهنا Python ستكون كافية في معظم الأمور. بصراحة، هذا البرنامج الذي تريد إنشاؤه ضخم ومعقد وفيه الكثير من التفاصيل، وكثير من هذه التفاصيل ليست متعلقة أصلا بالذكاء الاصطناعي. كونه يفحص الجهاز هذا يعني أنه عليه أن يتصفح محتوى الملفات. يعني أن البرنامج يجب أن يكون قادرا على قراءة الصور والفيديوهات، ثم بعد ذلك يجب تمريرها إلى نماذج الذكاء الاصطناعي، والتي بدورها يجب أن تكون قادرة على معالجة الصور والفيديو. إذا كان المطلوب فقط عرض تنبيه فهذا هو أبسط شيء في هذا المشروع. هذا يعني أن البرنامج يجب أن يعمل كجدار ناري Firewall أو مانع إعلانات Ad blocker. هنا يجب أن تكون لديك خبرة في الشبكات وكيفية عمل الإتصالات، خصوصا المشفرة منها مثل بروتوكول HTTPS والذي جميع المواقع والتطبيقات تقريبا تستخدمه. إذا كان البرنامج يجب أن يعمل خارج المتصفح، فسوف يحتاج إلى إلغاء تشفير HTTPS، وهذا ليس أمرا بسيطا، إذ أنه يجب على البرنامج تعديل إعدادات الجهاز وأن يقوم بإنشاء وإدخال شهادة HTTPS مزورة في الجهاز ويتم استخدامها للتشفير وإلغاء التشفير، لكي تسمح له (معظم) البرامج بأن يقرأ محتوى اتصالها. ما تقوم به هنا معقد لأن هذا في حقيقته "محاولة اختراق" و "تنصت" على بيانات المستخدم! لذلك لن يكون هذا التصرف مرحبا به. في الواقع، معظم الجدران النارية ومانعي الإعلانات لا تتصرف بهذه الطريقة ولا تحاول قراءة محتوى الاتصال لأن هذا شيء غير طبيعي كما ترى، بل تكتفي بمعرفة مصدر الاتصال أو وجهته فقط وتحكم بناء على ذلك. هنا أيضا البرنامج يحتاج صلاحيات كبيرة لكي يستطيع القيام بهذه الأمور. بالنسبة لتصوير الشاشة فهذا شيء عادي على أنظمة الحاسوب. لكن محاولة إيقاف برنامج (فضلا عن محاولة حذفه) تحتاج صلاحية تشغيل البرنامج كمدير للنظام. وكذلك الأمر بالنسبة لإقفال الشاشة، إذ أنه توجد لا توجد طريقة واحدة تسمى "إقفال الشاشة"، فربما تريد تسجيل الخروج من الجلسة الحالية، أو حجب ظهور البرنامج عن طريق فتح نافذة فوقه، أو حتى إطفاء تشغيل النظام. الأمر يختلف باختلاف الفكرة. أما إرسال بلاغات للموقع، فهذا يعتمد على API الخاصة بكل موقع ولا توجد طريقة موحدة. هنا تحتاج إلى دراسة كل موقع مستهدف على حدة وبرمجة طريقة الإبلاغ لكل واحد منهم. طبعا منذ أن بدأت وأنا أتحدث في جوانب النظام والشبكة وما إلى ذلك، لكن إلى الآن لم أتحدّث أصلا عن جانب اكتشاف هل الصورة أو الفيديو إباحي أم لا! لأن هذا بحد ذاته مشروع كبير آخر! بل إن هذا الموضوع تحديدا من أكثر المواضيع ضبابية ولا توجد فيه أجوبة واضحة. فقبل أن تبدأ العمل أصلا، ما المقصود بالصورة أو الفيديو الإباحي؟ هل مجرد ظهور امرأة فيه؟ هل إذا ظهر شعرها ورقبتها؟ هل إذا ظهرت بلباس الإدارة أو لباس المذيعات؟ هل إذا ظهرت بلباس النزهة الصيفي الخفيف؟ ماذا عن التي تضع مستحضرات التجميل؟ ماذا عن اللباس التقليدي الذي يحوي الكثير من الألوان؟... طيب وماذا عن الرجال؟ ماذا لو أظهر الرجل صدره؟ ماذا لو ظهر فخذه؟ ماذا لو وضع مستحضرات التجميل أو صبغ شعره؟ ما هي المحددات التي تشملهم أيضا؟ وماذا لو ظهرت امرأة أو رجل توافق هذه المحددات مرة واحدة في فيديو طويل، هل الفيديو صار إباحيا؟ وماذا عن الحركات أو أوضاع الجسد في الصورة أو الفيديو؟ هناك عشرات أو مئات الأمور التي تجعلنا نحن البشر لا نتفق على تصنيف المشهد فيما إذا كان إباحيا أم لا. فكيف نعلم البرنامج شيئا نحن لا ندري ما هو؟ والآن بافتراض أننا تجاوزنا كل هذه الأسئلة وحددنا موقفنا، الآن علينا البحث عن هذه البيانات التي توافق هذا المطلوب وكذلك تلك التي لا توافقه، حتى يتم إنشاء مجموعتين، واحدة خاصة بالإباحية والأخرى لا. في هذه الأثناء، الشخص الذي يقوم بهذه العملية عليه أن يشاهد هذه البيانات (وزيادة) بعينية حتى يتم فرزها. يعني أن هناك شخصا (بل ربما أكثر) سوف نعرضه لقدر هائل من الإباحية ونضحي به من أجل أن نجمع البيانات! طبعا حتى الآن لم نتحدث عن شيء في كيفية إنجاز نماذج ذكاء اصطناعي تفهم محتوى الصور وكيفية تدريبها والمشاكل التي تحصل أثناء وبعد ذلك، فهذه دروس طويلة أخرى، نحن إلى الآن لا زلنا في دراسة مقدمات العمل! لكن ما يجب أن تعرفه حتى بعد إنجاز العمل، أن الذكاء الاصطناعي في التعامل مع الصور (خاصة في موضوع غير مفهوم مثل هذا) غير دقيق. فقد يتم اعتبار أن صورة ذراع رجل أبيض مشهد إباحي لأن لون الجلد فيه ظاهر جدا، بينما قد لا ينتبه إلى صورة امرأة ترتدي ملابس ضيقة سوداء. لذلك، من المستحسن عدم المغامرة ببداية مشروع كهذا من الصفر، فهذه ليست فكرة جديدة بل هي موجودة من سنوات، وسوف تجد تطبيقات لها سابقة لك. قد لا تكون بالتعقيد الذي تريده، لكن يمكنك استخدام الأدوات الموجودة ودمجها مع بعضها حتى تصل إلى أحسن نتيجة ممكنة. يمكنك البحث في الأنترنت مثلا عن Adult content blocking tools وانظر ماذا يمكن أن تجد وكيف يمكن أن تستفيد منها. بالتوفيق.
  12. وعليكم السلام، حسب ما فهمته أنت تقصد charts، أي الرسوم البيانية. توجد مكتبات في Python لإنشاءها، وأشهرها هي Matplotlib. لكن بما أنه يجب إظهارها في الواجهة الأمامية، فالآن لم يعد هذا عمل Python بل صار عمل JavaScript. لذلك، يجب الآن استخدام مكتبات JavaScript تساعد في إنشاء هذه المخططات. من بين هذه المكتبات: Chart.js. ما يجب أن تقوم به من الواجهة الخلفية هي أن تنشئ واجهة برمجة تطبيقات (API) بسيطة، ثم من الواجهة الأمامية تحضر البيانات وترسم المخططات باستخدام المكتبة التي ذكرتها. بالمناسبة، إذا كان الهدف من مشروعك هو فقط عرض بيانات في داشبورد، فقد لا تحتاج إلى مشروع Django، بل قد يكون الأنسب لك هو استخدام مكتبة Streamlit، فهي مكتبة Python تساعدك على إنشاء مخططات وعرض بيانات تفاعلية بسرعة حتى لو لم تكن تعرف شيئا في تقنيات الويب!
  13. أهلا. يرجى طرح الأسئلة المتعلقة بدروس الدورات في قسم التعليقات الموجود أسفل الفيديو الخاص بالدرس. هذا قسم الأسئلة العامة. لذلك نحن هنا لا نعرف ما هو الدرس الذي تقصده بسؤالك. شكرا.
  14. وعليكم السلام، لغة Python هي لغة برمجة عامة تصلح للكثير من الأمور، مثل الحسابات العلمية، الذكاء الاصطناعي، معالجة الصور، الواجهات الخلفية للمواقع، تطبيقات سطح المكتب، وأحيانا تستخدم حتى لتطبيقات الهاتف الذكي. عندما تم إنشاء مفسر Python لأول مرة، لم يكن كل هذا في الحسبان من البداية، لكن انتشارها بين المبرمجين بسبب سهولة تعلمها وتطبيقها هو ما جعل كثيرا منهم يقومون بإنشاء مكتبات لهذه الوظائف على هذه اللغة. وبمرور السنوات، وصلت Python إلى ما وصلت إليه حاليا. لا يمكنني حصر جميع مكتبات Python المستخدمة في كل المجالات، فلو بقيت ساعات أذكرها لما أكملت. لكن سوف أنتقي بعض المكتبات من بعض المجالات: التشغيل التفاعلي: Jupyter و IPython. معالجة البيانات المجدولة: Pandas. الجبر والتحليل والعمليات الرياضية: Numpy و Scipy. التعلم الآلي: Scikit-learn. التعلم العميق: Tensorflow و .PyTorch نماذج اللغة الكبيرة: LangChain. معالجة الصور: OpenCV (Python) و Pillow. كشط الويب: Scrapy. الواجهات الخلفية للمواقع: Django و Flask. واجهة برمجة التطبيقات: FastAPI. تطبيقات سطح المكتب: PySide. وغير ذلك الكثير... لذلك بالفعل يمكنك استخدام Python في كل المجالات تقريبا، بما في ذلك المجالات العلمية والحوسبة.
  15. وعليكم السلام، لا مشكلة. في الواقع، أنا في الصباح الآن، بل قد اقترب موعد الغداء عندنا. فنحن متفرقون في أنحاء العالم وليس لدينا نفس التوقيت! هذه حالة نفسية معروفة وتحدث دائما في بدايات التعلم، لأنه في البداية يكون لديك مقدار مرتفع جدا من الحماس يجعلك تشعر أن كل شيء سهل. لكن مشكلة هذا الحماس أنه يبقى معك لأيام قليلة فقط ويبدأ بالذبول إلى أن أن ينتهي تماما. وهذا هو السبب الذي يجعل أغلب الناس في العالم يفشلون بسرعة ولا يتحولون جميعا إلى إيلون ماسك! لذلك، لا يمكن الاعتماد عليه في أي مسار تعليمي أو وظيفي أو أي شيء من الحياة. لذلك، تحتاج إلى "نفس طويل" وصبر في التعلم. وما يساعدك في هذا الأمر هو أن تعلم أنه لا يوجد علم يمكن أن يأتيك بسهولة، فكل من نجحوا في حياتهم قد صرفوا سنوات طويلة من حياتهم في التعلم والتجريب وكذلك في الفشل، مرات ومرات كثيرة، حتى وصلوا إلى ما وصلوا إليه. لذلك، يجب أن لا تعتقد أنك استثناء عن هذه القاعدة، حتى لو شعرت أنك كذلك. الاستثناءات قليلة جدا في العالم ولا يمكن أن يعتبر كل شخص منا نفسه استثناء. للأسف لا يوجد كما قلت في الجواب السابق. البحث عن بديل لـCSS في مجال الويب هو مثل البحث عن بديل للحديد في الصناعات الثقيلة، أو بديل للإسمنت في البناء. CSS هي اللغة التي تحدد كيف يظهر عناصر HTML، فبدون CSS، لا توجد ألوان، لا توجد حدود، لا يوجد تموضع، لا يمكن تحديد الأحجام، ولا يمكن القيام بأي شيء لعرض العناصر بطريقة مقبولة. كل ما تقوم به الـHTML هو وضع المحتوى أسفل بعضه البعض، بلون أسود فوق خلفية بيضاء مملة، ولا يمكن أن تكون أية صفحة ويب محترمة بهذا الشكل. هذه المفاهيم كلها أساسية وسوف يظهر لك فائدتها مع التقدم في التعلم. لكن إذا كان ما يتم تدريسه في الدورة ليس مفهوما لك بشكل كاف، فما يمكنك فعله هو الإطلاع على المقالات الموجودة في أكاديمية حسوب بخصوص CSS. فبعض الناس (وأنا منهم) يفهمون من الدروس المكتوبة أكثر بكثير من الدروس المرئية، لأن الدروس المرئية تتطلب متابعة المدرب لحظة بلحظة، بينما الدروس المكتوبة متاحة بين يديك ويمكنك أن تقلبها ذهابا وإيابا كيفما شئت، لذلك أشعر أن التعامل معها أسهل. إليك سلسلة الدروس هذه التي يتم استخدام CSS فيها في إنشاء موقع معين. حاول متابعتها فربما سوف تساعدك أكثر في فهم الموضوع: بالتوفيق.
  16. نعم هذا ممكن، لأن Bootstrap في أصله هو مجموعة من عناصر HTML التي تم إضافة أنماط لها باستخدام CSS، مع القليل من JavaScript في العناصر التفاعلية (مثل collapse و modal و popover...). لذلك، عدم معرفة JavaScript لا يؤثر بشكل كبير على دراستك لـBootstrap إذا كنت لا تقوم بإنشاء مواقع تعتمد على العناصر التفاعلية. هنا للأسف سوف أخالفكما الرأي. Bootstrap هو إطار عمل يختصر عليك وقت التطوير ويمكنك من إنشاء واجهات جميلة في وقت قصير. ما يفعله Bootstrap هو أنه يقوم بإخفاء بعض CSS عنك، لكنه ليس بديلا لـCSS أبدا ولا يمكن أن يكون هناك بديل لها. استخدام Bootstrap في إنشاء الواجهات مثل استخدام الآلة الحاسبة للتاجر. التاجر يجب أن يعرف الحساب بدون استخدامها، لكن بدل أن يضيع وقته بالحساب ببطء فإنه يختصر الوقت باستخدام آلة حاسبة لكي يستثمر وقته في أعمال أخرى. لكن عندما يصادف مسألة لا تصلح فيها الآلة الحاسبة، فإنه يجب عليه أن يستطيع الاعتماد على عقله. لذلك، استخدام Bootstrap بدون معرفة CSS هو مثل أن تعطي آلة حاسبة لطفل في المدرسة الابتدائية وتقول هل: لا داعي لتعلم الحساب، يمكنك الاعتماد على هذه الآلة الحاسبة في حياتك! ما رأيك بهذا التصرف؟ هل هو تصرف عقلاني؟ من الطبيعي أن تكون الأخطاء كثيرة وأن يكون منحنى التعلم هكذا في البداية. كلنا مررنا بهذه المرحلة في لحظة ما من حياتنا. لذلك تحتاج في البداية إلى بذل جهد أكبر مما سيكون عليك فعله لاحقا. سوف تصبح الأمور أبسط مع تقدم الوقت. يمكنك أن تسأل أي مبرمج متقدم عن صعوبة HTML و CSS، سوف يقول لك أن هذه أسهل لغات البرمجة التي تعلمها في حياته! (بل في الواقع، هي ليست لغات برمجة بالمعنى الدقيق للكلمة، بل هي لغات توصيف فقط). لذلك، بالمثابرة سوف تصل بعد مدة إلى هذه المرحلة وسوف تنظر إلى الماضي وتقول مثلما نقول نحن الآن إن شاء الله.
  17. إذا كنت تقصد ملفات تعريف الارتباط (cookies) فهي ملفات صغيرة يتم إرسالها من الخادم لحفظ معلومات معينة على جهاز المستخدم. هذه المعلومات قد تكون مثلا اللغة التي يفضلها المستخدم في المواقع التي تحوي عدة لغات، وقد تكون العملة المفضلة للمستخدم في مواقع الشراء التي تتيح استخدام عدّة عملات. والأشهر من ذلك كله أنها قد تكون معرفا للجلسة (Session) الحالية، والتي عن طريقها يتم تذكر أن المستخدم قد قام بتسجيل الدخول أم لا. فعندما يقوم المستخدم بتسجيل دخوله تقوم الواجهة الخلفية للموقع بتوليد ملف تعريف ارتباط (cookie) ويتم إرساله إلى المستخدم. المتصفح يقوم بدوره بحفظ هذا الملف ويعيد إرساله في جميع الطلبات اللاحقة. عندما تقرأ الواجهة الخلفية للموقع هذا الملف فإنها تعرف أن هذا يخص مستخدما محددا وتعرض له الموقع بالطريقة المناسبة له (مثلا، تسمح له بكتابة تعليقات وتعرض له اسمه وصورته، خلافا للزائر الذي لم يسجل الدخول). ملفات تعريف الارتباط هي ملفات مؤقتة لها مدة صلاحية معينة وتختلف باختلاف وظيفتها. بعض ملفات تعريف الارتباط لا تصلح سوى لدقائق معدودة ويتم مسحها بمجرد إغلاق المتصفح (هذا النوع يستخدم عادة في المواقع البنكية)، وبعضها الآخر قد يبقى صالحا لمدة سنة كاملة. كما أن المستخدم يمكنه أن يحذف ملفات تعريف الارتباط في أي وقت يريد، وجميع المتصفحات لديها هذه الميزة. ملفات تعريف الارتباط ليست خاصة بلغة PHP، بل هي من أساسيات الويب وبروتوكولات HTTP/HTTPS، وجميع التطبيقات التي تستخدم هذه البروتوكولات يمكنها أن تتعامل مع ملفات تعريف الارتباط.
  18. الذكاء الاصطناعي و تحليل البيانات هما فرعان من المجال الأكبر "علم البيانات"، وهما شيئان مختلفان من ناحية المبدأ إلّا أن العلاقة بين هاذين المجالين هي أن كليهما يُستخدمان لاستخراج نتائج انطلاقا من البيانات. في تحليل البيانات، يقوم الخبير بدراسة البيانات واستخراج معلومات وأنماط منها بالاعتماد على دوال وحسابات وخوارزميات معينة. باستخدام هذه الطرق، يتمكن الخبير من توقع شكل البيانات المستقبلية انطلاقا من البيانات التي لديه حاليا، وكذلك يمكنه إنجاز تقارير حول صفات البيانات ورسم رسوم بيانية تلخص خصائصها وتجعلها أكثر قابلية للفهم. أمّا في الذكاء الاصطناعي، فالهدف هو إنشاء برامج وخوارزميات تقوم بمحاكاة قدرة الإنسان في حل مشاكل معينة. يعني أن هدف الذكاء الاصطناعي هو تعويض الإنسان (أو مساعدته مساعدة كبيرة) في حل المشاكل، فهو شيء أكثر تقدما من تحليل البيانات. من أمثلة الذكاء الاصطناعي نجد: الترجمة الآلية، التعرف على النص من الصورة، تصنيف النصوص والصور حسب موضوعها، تحويل النص إلى صوت... وغير ذلك من عشرات التطبيقات الموجودة حاليا. ذكاء الأعمال هو مصطلح عام يعني استخدام تقنيات تحليل البيانات في مجال الأعمال. هذا يعني استخدام بيانات حقيقية وتحليلها بطرق تحليل البيانات المعروفة وحساب القيم ورسم المخططات وإعداد التقارير بما يتناسب مع احتياجات العمل المقصود. لذلك، يمكن القول أن دورة الذكاء الاصطناعي بالفعل مفيدة في ذكاء الأعمال، لأن طرق تحليل البيانات المستخدمة في ذكاء الأعمال هي نفسها التي يتم تدريسها في دورة الذكاء الاصطناعي.
  19. لغة البرمجة PHP تستخدم في برمجة الواجهات الخلفية للكثير من المواقع الإلكترونية، ومنها موقع أكاديمية حسوب هذا الذي نحن فيه. في دورة PHP سوف تتعلم أساسيات هذه اللغة أوّلا، بحيث تصبح قادرا على فهم كيفية عملها وعمل لغات البرمجة عموما. بعد ذلك سوف تتعلم كيف تربطها مع قواعد البيانات MySQL ,وأيضا كيف تقوم بإعداد الخادم (السيرفر) حتى تجعل الموقع يعمل. بعد ذلك سوف تنتقل إلى تعلّم إطار العمل الشهير Laravel الذي يمكنك من بناء المواقع الإلكترونية بشكل أسرع وأكثر كفاءة. بعد هذه الأساسيات، سوف تنتقل إلى بناء مشاريع حقيقية باستخدام Laravel مثل شبكة تواصل اجتماعي تشبه Instagram، متجر كتب إلكتروني، نظام إدارة محتوى، تطبيق تقييم الأماكن على الخريطة، تطبيق مشاركة فيديوهات مع لوحة للإدارة والتحكم، وغير ذلك. أثناء بناء هذه المشاريع سوف تتعلم أيضا تقنيات REST API و Websockets وكذلك أطر العمل Wordpress و WooCommerce وغير ذلك. لذلك، إذا كنت متشوقا لتعلم كل ما له علاقة ببرمجة المواقع فسوف تجد الكثير لتتعلمه في هذه الدورة وسوف تخرج منها بفائدة كبيرة.
  20. وعليكم السلام، منصة Google Cloud لديها الكثير من الخدمات الفرعية، وليس واضحا لي ما هي الخدمة التي تقصدها، لأن هناك الكثير من الخدمات يمكن استعمالها في نماذج الذكاء الاصطناعي، فهناك Colab، وهناك Compute، وهناك خدمات جاهزة لتدريب النماذج أو استخدام نماذج مدربة، وهناك أيضا الصدفة Shell الخاصة بهم. لكن على العموم إذا كانت الخدمة التي تستخدمها تعطيك آلى افتراضية (مثل Compute) وكنت تنوي أن تستخدم هذه الآلة لعدّة تطبيقات Python (يعني تستخدمها وكأنها حاسوبك الشخصي) فهذه هي الحالة التي قد تحتاج فيها إلى إنشاء بيئة افتراضية من أجل تجنّب أيّة مشاكل قد تحصل بسبب تضارب اعتماديات التطبيقات. ولكن في معظم الخدمات، مثل Colab و AppEngine وأشباههم، أنت تستخدم الخدمة من أجل مشروع Python واحد فقط، لذلك هنا يمكنك أن تفترض أنه لن يحصل أي مشكل بدون استخدام البيئة الافتراضية، لذلك في هذه الحالة يمكنك تجاوز خطوة إنشاء البيئة الافتراضية. القاعدة العامة باختصار: يستحسن إنشاء بيئة افتراضية فقط عندما تستخدم أكثر من مشروع أو تطبيق Python على نفس النظام، فيما عدا ذلك لا فائدة من إضافة بيئة افتراضية ويمكنك الاعتماد على البيئة الأصلية التي تأتي مع Python.
  21. بالنسبة لأسئلة دروس الدورات، يرجى طرحها في قسم التعليقات أسفل الفيديو الخاص بالدرس، هكذا حتى نعرف ما هو الدرس الذي أنت فيه.
  22. تماما. في المشاريع الكبيرة والشركات المتخصصة في تطوير التطبيقات، من المفروض أن يوجد شخص أو أكثر مكلّف بتصميم الواجهات، حيث يقوم بذلك باستخدام البرامج المذكورة. عند الانتهاء من التصميم، يتم تمرير النتيجة إلى فريق المطوّرين كي يقوموا ببرمجة الفرونتأند والباكند حسب التصميم المعطى لهم. يعني أن الأشخاص المصممين يختلفون عن المبرمجين في الحقيقة. ومع ذلك، يجب أن يكون كلّ فريق منهم قادرا على فهم عمل الآخر حتى يستطيعوا التواصل فيما بينهم والاتفاق على الأمور. لكن بالطبع، هذا الشكل الصحيح من العمل قد لا يكون متوفرا دائما، خاصّة في الشركات الصغيرة أو عندما يعمل الواحد كمستقل، حيث يجب عليه أن يكون مصمما ومبرمجا في آن واحد، وهذا هو الأمر الذي يجعل الناس يخلطون بين هاتين الوظيفتين. بالطبع، المبرمج عندما يحاول أن يكون مصمما أيضا فهو لن يكون بكفاءة المصمم الحقيقي، والعكس كذلك صحيح.
  23. تصميم واجهات المستخدم (التصميم بمعنى الرسم وليس بناؤها فعليا) هو تصميم للفرونتأند فقط ولا يأخذ بعين الإعتبار الباكند. هذا لأن الهدف من التصميم هو عرض كيف يجب أن يظهر التطبيق، وليس إنشاء التطبيق. لذلك لا معنى لتصميم الباكند، لأن الباكند ليس شيئا ظاهرا للمستخدم. كما قلت، التصميم بمعنى الرسم لا يتناول الباكند. لكن إن كنت تقصد بناء الموقع فهذا يعتمد على طبيعة الموقع. بعض المواقع لا تحتاج باكند وبعضها الآخر يحتاج. لكن هنا نتحدث عن بناء الموقع وليس عن رسمه. كما قلنا، إذا كنت تقصد بالتصميم رسم الواجهة وما يظهر للمستخدم، فهذه لا تتم بلغات برمجة بل تتم ببرامج التصميم التي ذكرتها.
  24. يرجى وضع سؤالك في في قسم التعليقات أسفل فيديو الدرس، حتى نعرف عن أي درس تتحدث وما الذي تحاول فعله. هذا القسم مخصص للأسئلة العامة الغير متعلقة بالدورات.
  25. في دورة الذكاء الإصطناعي، المسار الأول مخصص لتعلّم لغة Python، لأنّها اللغة التي سيتم العمل بها في كامل الدورة. لذلك، هل درستي هذا المسار قبل الدخول إلى مواضيع الذكاء الاصطناعي؟ هل تعلمتي لغة Python قبل هذه الدورة أم أنت تتعلمينها خلال الدورة؟ إذا لم تكوني تعلمتي هذه اللغة من قبل فالمسار الأوّل ضروري ولا يمكن تجاوزه. ففي دورة الذكاء الاصطناعي هنا، تقوم أكاديمية حسوب بتخريج مهندسين في الذكاء الاصطناعي، وهؤلاء يجب أن يكون لديهم معرفة جيدة جدا في البرمجة. فليس المقصود تعليم الشخص كيف يتعامل مع ChatGPT أو Midjourney أو غيرها من الأدوات التي يستخدمها عموم الناس، بل المطلوب هو أن يستطيع المتعلّم فهم ما يجري خلف الكواليس ويساهم في استخدام تقنيات الذكاء الاصطناعي لبناء تطبيقات حقيقية. لذلك تعلّم البرمجة بلغة Python ضروري قبل كل شيء. بعد تعلّم لغة Python، ينتقل الطالب بعدها إلى تعلّم كيفية التعامل مع البيانات أيّا كان مصدرها. وهذا أيضا شيء ضروري جدا، فلا يوجد ذكاء اصطناعي بدون بيانات. لذلك، ينبغي أن يكون الطالب متمكنا من التعامل مع البيانات استخراجا وحفظا ومعالجة قبل أن يبدأ أوّل برنامج له بالذكاء الاصطناعي. بعد ذلك، يمكن الدخول في أمور الذكاء الاصطناعي انطلاقا من المسار الثالث وما بعده. أتمنى أن يكون هذا توضيحا لك للانطلاق في الدورة. أمّا إذا كنت تريدين التعرف على المجال بشكل عام ونظري قبل البدأ في العمل فسوف تجدين تفاصيلا في مقالات أكاديمية حسوب، ومنها:
×
×
  • أضف...