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

حمزة عباد

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

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

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

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

  1. وعليكم السلام، حسب ما فهمته أنت تقصد charts، أي الرسوم البيانية. توجد مكتبات في Python لإنشاءها، وأشهرها هي Matplotlib. لكن بما أنه يجب إظهارها في الواجهة الأمامية، فالآن لم يعد هذا عمل Python بل صار عمل JavaScript. لذلك، يجب الآن استخدام مكتبات JavaScript تساعد في إنشاء هذه المخططات. من بين هذه المكتبات: Chart.js. ما يجب أن تقوم به من الواجهة الخلفية هي أن تنشئ واجهة برمجة تطبيقات (API) بسيطة، ثم من الواجهة الأمامية تحضر البيانات وترسم المخططات باستخدام المكتبة التي ذكرتها. بالمناسبة، إذا كان الهدف من مشروعك هو فقط عرض بيانات في داشبورد، فقد لا تحتاج إلى مشروع Django، بل قد يكون الأنسب لك هو استخدام مكتبة Streamlit، فهي مكتبة Python تساعدك على إنشاء مخططات وعرض بيانات تفاعلية بسرعة حتى لو لم تكن تعرف شيئا في تقنيات الويب!
  2. أهلا. يرجى طرح الأسئلة المتعلقة بدروس الدورات في قسم التعليقات الموجود أسفل الفيديو الخاص بالدرس. هذا قسم الأسئلة العامة. لذلك نحن هنا لا نعرف ما هو الدرس الذي تقصده بسؤالك. شكرا.
  3. وعليكم السلام، لغة Python هي لغة برمجة عامة تصلح للكثير من الأمور، مثل الحسابات العلمية، الذكاء الاصطناعي، معالجة الصور، الواجهات الخلفية للمواقع، تطبيقات سطح المكتب، وأحيانا تستخدم حتى لتطبيقات الهاتف الذكي. عندما تم إنشاء مفسر Python لأول مرة، لم يكن كل هذا في الحسبان من البداية، لكن انتشارها بين المبرمجين بسبب سهولة تعلمها وتطبيقها هو ما جعل كثيرا منهم يقومون بإنشاء مكتبات لهذه الوظائف على هذه اللغة. وبمرور السنوات، وصلت Python إلى ما وصلت إليه حاليا. لا يمكنني حصر جميع مكتبات Python المستخدمة في كل المجالات، فلو بقيت ساعات أذكرها لما أكملت. لكن سوف أنتقي بعض المكتبات من بعض المجالات: التشغيل التفاعلي: Jupyter و IPython. معالجة البيانات المجدولة: Pandas. الجبر والتحليل والعمليات الرياضية: Numpy و Scipy. التعلم الآلي: Scikit-learn. التعلم العميق: Tensorflow و .PyTorch نماذج اللغة الكبيرة: LangChain. معالجة الصور: OpenCV (Python) و Pillow. كشط الويب: Scrapy. الواجهات الخلفية للمواقع: Django و Flask. واجهة برمجة التطبيقات: FastAPI. تطبيقات سطح المكتب: PySide. وغير ذلك الكثير... لذلك بالفعل يمكنك استخدام Python في كل المجالات تقريبا، بما في ذلك المجالات العلمية والحوسبة.
  4. وعليكم السلام، لا مشكلة. في الواقع، أنا في الصباح الآن، بل قد اقترب موعد الغداء عندنا. فنحن متفرقون في أنحاء العالم وليس لدينا نفس التوقيت! هذه حالة نفسية معروفة وتحدث دائما في بدايات التعلم، لأنه في البداية يكون لديك مقدار مرتفع جدا من الحماس يجعلك تشعر أن كل شيء سهل. لكن مشكلة هذا الحماس أنه يبقى معك لأيام قليلة فقط ويبدأ بالذبول إلى أن أن ينتهي تماما. وهذا هو السبب الذي يجعل أغلب الناس في العالم يفشلون بسرعة ولا يتحولون جميعا إلى إيلون ماسك! لذلك، لا يمكن الاعتماد عليه في أي مسار تعليمي أو وظيفي أو أي شيء من الحياة. لذلك، تحتاج إلى "نفس طويل" وصبر في التعلم. وما يساعدك في هذا الأمر هو أن تعلم أنه لا يوجد علم يمكن أن يأتيك بسهولة، فكل من نجحوا في حياتهم قد صرفوا سنوات طويلة من حياتهم في التعلم والتجريب وكذلك في الفشل، مرات ومرات كثيرة، حتى وصلوا إلى ما وصلوا إليه. لذلك، يجب أن لا تعتقد أنك استثناء عن هذه القاعدة، حتى لو شعرت أنك كذلك. الاستثناءات قليلة جدا في العالم ولا يمكن أن يعتبر كل شخص منا نفسه استثناء. للأسف لا يوجد كما قلت في الجواب السابق. البحث عن بديل لـCSS في مجال الويب هو مثل البحث عن بديل للحديد في الصناعات الثقيلة، أو بديل للإسمنت في البناء. CSS هي اللغة التي تحدد كيف يظهر عناصر HTML، فبدون CSS، لا توجد ألوان، لا توجد حدود، لا يوجد تموضع، لا يمكن تحديد الأحجام، ولا يمكن القيام بأي شيء لعرض العناصر بطريقة مقبولة. كل ما تقوم به الـHTML هو وضع المحتوى أسفل بعضه البعض، بلون أسود فوق خلفية بيضاء مملة، ولا يمكن أن تكون أية صفحة ويب محترمة بهذا الشكل. هذه المفاهيم كلها أساسية وسوف يظهر لك فائدتها مع التقدم في التعلم. لكن إذا كان ما يتم تدريسه في الدورة ليس مفهوما لك بشكل كاف، فما يمكنك فعله هو الإطلاع على المقالات الموجودة في أكاديمية حسوب بخصوص CSS. فبعض الناس (وأنا منهم) يفهمون من الدروس المكتوبة أكثر بكثير من الدروس المرئية، لأن الدروس المرئية تتطلب متابعة المدرب لحظة بلحظة، بينما الدروس المكتوبة متاحة بين يديك ويمكنك أن تقلبها ذهابا وإيابا كيفما شئت، لذلك أشعر أن التعامل معها أسهل. إليك سلسلة الدروس هذه التي يتم استخدام CSS فيها في إنشاء موقع معين. حاول متابعتها فربما سوف تساعدك أكثر في فهم الموضوع: بالتوفيق.
  5. نعم هذا ممكن، لأن Bootstrap في أصله هو مجموعة من عناصر HTML التي تم إضافة أنماط لها باستخدام CSS، مع القليل من JavaScript في العناصر التفاعلية (مثل collapse و modal و popover...). لذلك، عدم معرفة JavaScript لا يؤثر بشكل كبير على دراستك لـBootstrap إذا كنت لا تقوم بإنشاء مواقع تعتمد على العناصر التفاعلية. هنا للأسف سوف أخالفكما الرأي. Bootstrap هو إطار عمل يختصر عليك وقت التطوير ويمكنك من إنشاء واجهات جميلة في وقت قصير. ما يفعله Bootstrap هو أنه يقوم بإخفاء بعض CSS عنك، لكنه ليس بديلا لـCSS أبدا ولا يمكن أن يكون هناك بديل لها. استخدام Bootstrap في إنشاء الواجهات مثل استخدام الآلة الحاسبة للتاجر. التاجر يجب أن يعرف الحساب بدون استخدامها، لكن بدل أن يضيع وقته بالحساب ببطء فإنه يختصر الوقت باستخدام آلة حاسبة لكي يستثمر وقته في أعمال أخرى. لكن عندما يصادف مسألة لا تصلح فيها الآلة الحاسبة، فإنه يجب عليه أن يستطيع الاعتماد على عقله. لذلك، استخدام Bootstrap بدون معرفة CSS هو مثل أن تعطي آلة حاسبة لطفل في المدرسة الابتدائية وتقول هل: لا داعي لتعلم الحساب، يمكنك الاعتماد على هذه الآلة الحاسبة في حياتك! ما رأيك بهذا التصرف؟ هل هو تصرف عقلاني؟ من الطبيعي أن تكون الأخطاء كثيرة وأن يكون منحنى التعلم هكذا في البداية. كلنا مررنا بهذه المرحلة في لحظة ما من حياتنا. لذلك تحتاج في البداية إلى بذل جهد أكبر مما سيكون عليك فعله لاحقا. سوف تصبح الأمور أبسط مع تقدم الوقت. يمكنك أن تسأل أي مبرمج متقدم عن صعوبة HTML و CSS، سوف يقول لك أن هذه أسهل لغات البرمجة التي تعلمها في حياته! (بل في الواقع، هي ليست لغات برمجة بالمعنى الدقيق للكلمة، بل هي لغات توصيف فقط). لذلك، بالمثابرة سوف تصل بعد مدة إلى هذه المرحلة وسوف تنظر إلى الماضي وتقول مثلما نقول نحن الآن إن شاء الله.
  6. إذا كنت تقصد ملفات تعريف الارتباط (cookies) فهي ملفات صغيرة يتم إرسالها من الخادم لحفظ معلومات معينة على جهاز المستخدم. هذه المعلومات قد تكون مثلا اللغة التي يفضلها المستخدم في المواقع التي تحوي عدة لغات، وقد تكون العملة المفضلة للمستخدم في مواقع الشراء التي تتيح استخدام عدّة عملات. والأشهر من ذلك كله أنها قد تكون معرفا للجلسة (Session) الحالية، والتي عن طريقها يتم تذكر أن المستخدم قد قام بتسجيل الدخول أم لا. فعندما يقوم المستخدم بتسجيل دخوله تقوم الواجهة الخلفية للموقع بتوليد ملف تعريف ارتباط (cookie) ويتم إرساله إلى المستخدم. المتصفح يقوم بدوره بحفظ هذا الملف ويعيد إرساله في جميع الطلبات اللاحقة. عندما تقرأ الواجهة الخلفية للموقع هذا الملف فإنها تعرف أن هذا يخص مستخدما محددا وتعرض له الموقع بالطريقة المناسبة له (مثلا، تسمح له بكتابة تعليقات وتعرض له اسمه وصورته، خلافا للزائر الذي لم يسجل الدخول). ملفات تعريف الارتباط هي ملفات مؤقتة لها مدة صلاحية معينة وتختلف باختلاف وظيفتها. بعض ملفات تعريف الارتباط لا تصلح سوى لدقائق معدودة ويتم مسحها بمجرد إغلاق المتصفح (هذا النوع يستخدم عادة في المواقع البنكية)، وبعضها الآخر قد يبقى صالحا لمدة سنة كاملة. كما أن المستخدم يمكنه أن يحذف ملفات تعريف الارتباط في أي وقت يريد، وجميع المتصفحات لديها هذه الميزة. ملفات تعريف الارتباط ليست خاصة بلغة PHP، بل هي من أساسيات الويب وبروتوكولات HTTP/HTTPS، وجميع التطبيقات التي تستخدم هذه البروتوكولات يمكنها أن تتعامل مع ملفات تعريف الارتباط.
  7. الذكاء الاصطناعي و تحليل البيانات هما فرعان من المجال الأكبر "علم البيانات"، وهما شيئان مختلفان من ناحية المبدأ إلّا أن العلاقة بين هاذين المجالين هي أن كليهما يُستخدمان لاستخراج نتائج انطلاقا من البيانات. في تحليل البيانات، يقوم الخبير بدراسة البيانات واستخراج معلومات وأنماط منها بالاعتماد على دوال وحسابات وخوارزميات معينة. باستخدام هذه الطرق، يتمكن الخبير من توقع شكل البيانات المستقبلية انطلاقا من البيانات التي لديه حاليا، وكذلك يمكنه إنجاز تقارير حول صفات البيانات ورسم رسوم بيانية تلخص خصائصها وتجعلها أكثر قابلية للفهم. أمّا في الذكاء الاصطناعي، فالهدف هو إنشاء برامج وخوارزميات تقوم بمحاكاة قدرة الإنسان في حل مشاكل معينة. يعني أن هدف الذكاء الاصطناعي هو تعويض الإنسان (أو مساعدته مساعدة كبيرة) في حل المشاكل، فهو شيء أكثر تقدما من تحليل البيانات. من أمثلة الذكاء الاصطناعي نجد: الترجمة الآلية، التعرف على النص من الصورة، تصنيف النصوص والصور حسب موضوعها، تحويل النص إلى صوت... وغير ذلك من عشرات التطبيقات الموجودة حاليا. ذكاء الأعمال هو مصطلح عام يعني استخدام تقنيات تحليل البيانات في مجال الأعمال. هذا يعني استخدام بيانات حقيقية وتحليلها بطرق تحليل البيانات المعروفة وحساب القيم ورسم المخططات وإعداد التقارير بما يتناسب مع احتياجات العمل المقصود. لذلك، يمكن القول أن دورة الذكاء الاصطناعي بالفعل مفيدة في ذكاء الأعمال، لأن طرق تحليل البيانات المستخدمة في ذكاء الأعمال هي نفسها التي يتم تدريسها في دورة الذكاء الاصطناعي.
  8. لغة البرمجة PHP تستخدم في برمجة الواجهات الخلفية للكثير من المواقع الإلكترونية، ومنها موقع أكاديمية حسوب هذا الذي نحن فيه. في دورة PHP سوف تتعلم أساسيات هذه اللغة أوّلا، بحيث تصبح قادرا على فهم كيفية عملها وعمل لغات البرمجة عموما. بعد ذلك سوف تتعلم كيف تربطها مع قواعد البيانات MySQL ,وأيضا كيف تقوم بإعداد الخادم (السيرفر) حتى تجعل الموقع يعمل. بعد ذلك سوف تنتقل إلى تعلّم إطار العمل الشهير Laravel الذي يمكنك من بناء المواقع الإلكترونية بشكل أسرع وأكثر كفاءة. بعد هذه الأساسيات، سوف تنتقل إلى بناء مشاريع حقيقية باستخدام Laravel مثل شبكة تواصل اجتماعي تشبه Instagram، متجر كتب إلكتروني، نظام إدارة محتوى، تطبيق تقييم الأماكن على الخريطة، تطبيق مشاركة فيديوهات مع لوحة للإدارة والتحكم، وغير ذلك. أثناء بناء هذه المشاريع سوف تتعلم أيضا تقنيات REST API و Websockets وكذلك أطر العمل Wordpress و WooCommerce وغير ذلك. لذلك، إذا كنت متشوقا لتعلم كل ما له علاقة ببرمجة المواقع فسوف تجد الكثير لتتعلمه في هذه الدورة وسوف تخرج منها بفائدة كبيرة.
  9. وعليكم السلام، منصة Google Cloud لديها الكثير من الخدمات الفرعية، وليس واضحا لي ما هي الخدمة التي تقصدها، لأن هناك الكثير من الخدمات يمكن استعمالها في نماذج الذكاء الاصطناعي، فهناك Colab، وهناك Compute، وهناك خدمات جاهزة لتدريب النماذج أو استخدام نماذج مدربة، وهناك أيضا الصدفة Shell الخاصة بهم. لكن على العموم إذا كانت الخدمة التي تستخدمها تعطيك آلى افتراضية (مثل Compute) وكنت تنوي أن تستخدم هذه الآلة لعدّة تطبيقات Python (يعني تستخدمها وكأنها حاسوبك الشخصي) فهذه هي الحالة التي قد تحتاج فيها إلى إنشاء بيئة افتراضية من أجل تجنّب أيّة مشاكل قد تحصل بسبب تضارب اعتماديات التطبيقات. ولكن في معظم الخدمات، مثل Colab و AppEngine وأشباههم، أنت تستخدم الخدمة من أجل مشروع Python واحد فقط، لذلك هنا يمكنك أن تفترض أنه لن يحصل أي مشكل بدون استخدام البيئة الافتراضية، لذلك في هذه الحالة يمكنك تجاوز خطوة إنشاء البيئة الافتراضية. القاعدة العامة باختصار: يستحسن إنشاء بيئة افتراضية فقط عندما تستخدم أكثر من مشروع أو تطبيق Python على نفس النظام، فيما عدا ذلك لا فائدة من إضافة بيئة افتراضية ويمكنك الاعتماد على البيئة الأصلية التي تأتي مع Python.
  10. بالنسبة لأسئلة دروس الدورات، يرجى طرحها في قسم التعليقات أسفل الفيديو الخاص بالدرس، هكذا حتى نعرف ما هو الدرس الذي أنت فيه.
  11. تماما. في المشاريع الكبيرة والشركات المتخصصة في تطوير التطبيقات، من المفروض أن يوجد شخص أو أكثر مكلّف بتصميم الواجهات، حيث يقوم بذلك باستخدام البرامج المذكورة. عند الانتهاء من التصميم، يتم تمرير النتيجة إلى فريق المطوّرين كي يقوموا ببرمجة الفرونتأند والباكند حسب التصميم المعطى لهم. يعني أن الأشخاص المصممين يختلفون عن المبرمجين في الحقيقة. ومع ذلك، يجب أن يكون كلّ فريق منهم قادرا على فهم عمل الآخر حتى يستطيعوا التواصل فيما بينهم والاتفاق على الأمور. لكن بالطبع، هذا الشكل الصحيح من العمل قد لا يكون متوفرا دائما، خاصّة في الشركات الصغيرة أو عندما يعمل الواحد كمستقل، حيث يجب عليه أن يكون مصمما ومبرمجا في آن واحد، وهذا هو الأمر الذي يجعل الناس يخلطون بين هاتين الوظيفتين. بالطبع، المبرمج عندما يحاول أن يكون مصمما أيضا فهو لن يكون بكفاءة المصمم الحقيقي، والعكس كذلك صحيح.
  12. تصميم واجهات المستخدم (التصميم بمعنى الرسم وليس بناؤها فعليا) هو تصميم للفرونتأند فقط ولا يأخذ بعين الإعتبار الباكند. هذا لأن الهدف من التصميم هو عرض كيف يجب أن يظهر التطبيق، وليس إنشاء التطبيق. لذلك لا معنى لتصميم الباكند، لأن الباكند ليس شيئا ظاهرا للمستخدم. كما قلت، التصميم بمعنى الرسم لا يتناول الباكند. لكن إن كنت تقصد بناء الموقع فهذا يعتمد على طبيعة الموقع. بعض المواقع لا تحتاج باكند وبعضها الآخر يحتاج. لكن هنا نتحدث عن بناء الموقع وليس عن رسمه. كما قلنا، إذا كنت تقصد بالتصميم رسم الواجهة وما يظهر للمستخدم، فهذه لا تتم بلغات برمجة بل تتم ببرامج التصميم التي ذكرتها.
  13. يرجى وضع سؤالك في في قسم التعليقات أسفل فيديو الدرس، حتى نعرف عن أي درس تتحدث وما الذي تحاول فعله. هذا القسم مخصص للأسئلة العامة الغير متعلقة بالدورات.
  14. في دورة الذكاء الإصطناعي، المسار الأول مخصص لتعلّم لغة Python، لأنّها اللغة التي سيتم العمل بها في كامل الدورة. لذلك، هل درستي هذا المسار قبل الدخول إلى مواضيع الذكاء الاصطناعي؟ هل تعلمتي لغة Python قبل هذه الدورة أم أنت تتعلمينها خلال الدورة؟ إذا لم تكوني تعلمتي هذه اللغة من قبل فالمسار الأوّل ضروري ولا يمكن تجاوزه. ففي دورة الذكاء الاصطناعي هنا، تقوم أكاديمية حسوب بتخريج مهندسين في الذكاء الاصطناعي، وهؤلاء يجب أن يكون لديهم معرفة جيدة جدا في البرمجة. فليس المقصود تعليم الشخص كيف يتعامل مع ChatGPT أو Midjourney أو غيرها من الأدوات التي يستخدمها عموم الناس، بل المطلوب هو أن يستطيع المتعلّم فهم ما يجري خلف الكواليس ويساهم في استخدام تقنيات الذكاء الاصطناعي لبناء تطبيقات حقيقية. لذلك تعلّم البرمجة بلغة Python ضروري قبل كل شيء. بعد تعلّم لغة Python، ينتقل الطالب بعدها إلى تعلّم كيفية التعامل مع البيانات أيّا كان مصدرها. وهذا أيضا شيء ضروري جدا، فلا يوجد ذكاء اصطناعي بدون بيانات. لذلك، ينبغي أن يكون الطالب متمكنا من التعامل مع البيانات استخراجا وحفظا ومعالجة قبل أن يبدأ أوّل برنامج له بالذكاء الاصطناعي. بعد ذلك، يمكن الدخول في أمور الذكاء الاصطناعي انطلاقا من المسار الثالث وما بعده. أتمنى أن يكون هذا توضيحا لك للانطلاق في الدورة. أمّا إذا كنت تريدين التعرف على المجال بشكل عام ونظري قبل البدأ في العمل فسوف تجدين تفاصيلا في مقالات أكاديمية حسوب، ومنها:
  15. بداية، في مجال الصور الحاسوبية، هناك نوعان من الصور: الصور النقطية (bitmap images) والرسومات المتجهية (vector graphics). الصور النقطية هي الصور التي يتم تمثيلها عن طريق تحديد لون كل بكسل. هذه هي أغلب أنواع الصور وأكثرها شهرة، لأنّها الصور التي تنتجها آلات التصوير والماسحات الضوئية وغيرها من أجهزة التقاط الصور. من أكثر صيغ الصور النقطية شهرة نجد JPEG، PNG، و GIF. أمّا الرسومات المتجهية، فهي رسوم يتم تعريفها عن طريق وضع نقاط على المستوى وتحديد الخطوط بينها كدوال رياضية. ميزة هذه الرسومات أنّها أصغر بكثير من ناحية الحجم، وأنّه يمكن تكبيرها إلى ما لانهاية بدون خسارة جودتها (نعم أقصد ذلك حرفيا، يمكن تكبيرها إلى ما لانهاية!). الرسوم المتجهية رائعة في كل شيء باستثناء شيء واحد وهو الشيء الذي يعيق استخدامها: أنّه يجب رسمها يدويا ولا يمكن توليدها من أجهزة الحصول على الصور مثل الصور النقطية. أشهر صيغة من صيغ الرسوم المتجهية هي SVG. لذلك، فالرسوم المتجهية تجدها مستخدمة دائما في الأيقونات والخطوط والشعارات. أمّا الصور النقطية فتستخدم للصور الفوتوغرافية عموما، التي يتم الحصول عليها عن طريق أحد أجهزة التقاط الصور، وكذلك الصور المعدّلة بعد الالتقاط. والآن بعد أن فهمنا الفرق بين الرسوم المتجهية والصور النقطية، حان الوقت للعودة إلى HTML. إذا كانت لديك صورة نقطية، فالطريقة الصحيحة لإدخالها في صفحة ويب هي باستخدام الوسم <img>. إذا كانت لديك رسمة متجهية بصيغة SVG، فلديك عدّة خيارات: إما أن تستخدم الوسم <img> في الملفات البسيطة، لكن يفترض تجنّب هذه الطريقة لأنّها ليست الطريقة الصحيحة لفعل ذلك. أو استخدام الوسم <object> لتضمينها: <object data="image.svg" type="image/svg+xml"></object> أو تضمين محتوى الصورة مباشرة داخل HTML عن طريق الوسم <svg>. هذا الأمر ممكن لأن صيغة SVG ما هي في الواقع إلا ملف XML، يمكنك نسخ محتواه ووضعه داخل HTML بدون مشاكل: <svg width="100" height="100"> <rect x="10" y="10" width="80" height="80" fill="blue" /> <!-- محتوى SVG --> </svg> حسنا ماذا عن <canvas>؟ هذا الوسم يعطيك مساحة فارغة يمكنك الرسم فيها باستخدام JavaScript. يعني أنّه طريقة أخرى لرسم الرسومات المتجهية، لكن بدل إحضار رسم جاهز وتضمينه، يسمح لك هذا الوسم بالرسم مباشرة على الصفحة.
  16. وعليكم السلام، كلمّا كانت التقنيات التي تعرفها أكثر كلّما استطعت العمل على مشاريع أكثر، لكن هذا أيضا يأتي على حساب الوقت وكذلك الخبرة. فالخبرة في لغة برمجة واحدة تتطلب وقتا أقل من الخبرة في أكثر من لغة. اختيارك لـJavaScript هو اختيار موفق بالفعل، إذ أنّها في الوقت الحالي هي اللغة التي يمكنك بها إنشاء أيّ شيء، من تطبيقات الويب إلى الهاتف إلى سطح المكتب (ربّما باستثناء العمل على نماذج الذكاء الاصطناعي التقليدية، حيث لا يزال Python أساسيا). أنا أقول هذا مع أنّي مبرمج Python ولست متقدّما كثيرا في JavaScript. أمّا بالنسبة لـPHP، فتقريبا لا يمكنك إنشاء شيء بها ما عدا الواجهة الخلفية للموقع، ومع ذلك فهذه اللغة لا تزال مدعومة بكثرة لأسباب تاريخية، كونها من أوّل لغات برمجة المواقع ظهورا. في رأيي الشخصي، من الأحسن أن لا تتفرّع في العديد من لغات البرمجة حاليا، بل ركز على تحسين نفسك في JavaScript وأطر العمل الكثيرة المتعلّقة بها. أمّا بالنسبة لإرسال العروض، فيمكنك أن ترسل لمن لا يطلبون لغة برمجة محددة. فهم موجودون. فقط عليك بالصبر واقتناص الفرص عند ظهورها. مثلا أنا حاليا أعمل على موقع باستخدام Python وإطار العمل Django، لأن صاحب المشروع لا يهتم بلغة البرمجة المستخدمة، فمادام العمل يتم بشكل صحيح فهو راض.
  17. صراحة أنصحك بأن تبدأ بمستقل أو ربما خمسات في البداية، لأن الحصول على عملاء عليهما أسهل بكثير من Upwork (أتحدث عن تجربة شخصية، قد يخالفني البعض الرأي) وهذا بسبب أن المنافسة في السوق العربي أكثر رحمة منها في السوق العالمي، فعلى الرغم من أن الأعمال على Upwork أكثر، لكن فرصة أن ينظر إليك صاحب المشروع (فضلا عن أن يتكلم معك!) ضعيفة بسبب كثرة المتقدّمين. من الطبيعي أن تكون معظم المشاريع في غير تخصصك، لكن مع الوقت سوف تجد مشاريعا في تخصصك ويمكنك إرسال عروضك إليها. هذا الأمر لن يتم بين ليلة وضحاها بالطبع. سوف تحتاج إلى المحاولة عدّة أسابيع قبل أن يقبلك أحد أصحاب المشاريع. في البداية لا تتوجه نحو المشاريع الكبيرة والمرتفعة الثمن، بل نحو المشاريع البسيطة قدر الإمكان، حتى تزيد فرصة قبولك وحتى لا تتسبب بمشاكل كبيرة مع صاحب المشروع بسبب نقص خبرتك في البداية. عند إرسال عرضك، تجنّب مدح نفسك بل اعرض ما قمت بعمله سابقا مما يشبه ما يطلبه صاحب المشروع، أو على الأقل إشرح لصاحب المشروع ما فهمته من طلبه واعرض له خطتك بشكل مختصر لكيفية العمل على مشروعه. هذا سيزيد فرصة قبولك كثيرا.
  18. أهلا، بالنسبة للأسئلة المتعلّقة بدروس الدورات فيرجى طرح السؤال في قسم التعليقات أسفل الفيديو. أيضا عند طرح السؤال هناك، يرجى أخذ لقطة شاشة (screenshot) أو نسخ الخطأ الذي يظهر. لأن مشاكل البيئة الافتراضية لا تعتمد على المشروع بل على الأوامر التي نفّذتها. لذلك يرجى تصويرها حتى نعرف ما الذي قمت به.
  19. الخطأ عندك بسيط وهو ظاهر في السطر 19، إذ أن كتبت /script خارج العلامتين <>، والصحيح أن تكون هذه الكتابة بينما. لذلك قم بتعديل السطر 19 كالتالي: <script src="index.js"></script> أيضا تحقق من وجود الملف بالإسم index.js لأنه ضروري لكي يتم تشغيله. وفي المرة القادمة، يرجى طرح الأسئلة المتعلّقة بالدورات في قسم التعليقات أسفل فيديو كل درس.
  20. وعليكم السلام ورحمة الله، نعم تبدو لي أنّ هذه فكرة جيّدة لتعلّم البرمجة بـJavaScript. من الجيد أن تأتي بمواضيع مميزة كهذه وتحاول تطبيقها. في حالة البرنامج الذي تريد إنشاءه، عليك أوّلا تحديد ما هي الحروف العربية القابلة للتمديد (نرى في مثالك أنّ "ه" و "ن" و "ت" و "ج" هي حروف قابلة للتمديد، بينما "ذ" و "ر" مثلا ليست حروفا قابلة للتمديد). بعد ذلك، يجب كتابة خوارزمية تحدد الحروف الواجب تمديدها والمقدار الذي يجب تمديدها به حتى يصبح الطول الكلّي للكلمة موافقا للطول المطلوب. حسب ما يظهر في مثالك، فيمكن أن يكون هناك أكثر من حرف قابل للتمديد في نفس الكلمة (مثل "تجريبي") ويجب تمديدها بنفس المقدار، أو بطريقة تراها أكثر مناسبة. بالطبع أشجعك على القيام بهذا المشروع. وبالمناسبة، ذكّرتني بأوّل مشروع برمجي قمت به أنا قبل حوالي 12 سنة، ولا أزال أحتفظ به. وهو صفحة ويب تقوم بالتحويل بين سلاسل DNA و RNA (أو كما ترمز لها بالفرنسية ADN و ARN) وكذلك سلاسل الأحماض الأمينية. كانت فكرة المشروع مستوحاة من دروس العلوم الطبيعية التي درسناها أيّام الثانوية، حيث تعلّمت لغة JavaScript في ذلك الوقت. إذا أردت الإطلاع على ذلك المشروع فلعله يفيدك، فلقد رفعته على هذا الرابط: https://hamza5.github.io/DNA-translator_AR/ وإذا أردت رؤية الكود الذي كتبته في ذلك الوقت لإنشاء هذه الصفحة، فيمكنك إيجاده هنا: https://github.com/Hamza5/DNA-translator_AR بالتوفيق لك في مسيرتك البرمجية!
  21. وعليكم السلام ورحمة الله، التوثيق (Documentation) هو مجموعة الصفحات (المعروضة عادة على الموقع الرسمي) التي تشرح كل تفاصيل لغة البرمجة أو المكتبة أو إطار العمل (أو أي شيء آخر، حتّى لو كان غير متعلّق بالبرمجة). ميزة التوثيق أنّه يتضمّن كلّ شيء متعلّق بالموضوع المدروس (أو على الأقل، هذا هو المفروض). مثلا، في توثيق لغة Python، تجد كل عرضا (مع بعض الشرح) لكلّ وحدات المكتبة الرئيسية التي تأتي مع مفسّر هذه اللغة. فمثلا، توجد وحدة pickle لتخزين جميع هياكل بيانات Python في ملفات، وتوجد وحدة zipfile للتعامل مع الأرشيف، وتوجد وحدة wave لمعالجة الصوت، وهكذا... التوثيق هو جزء ضروري من أي مشروع. لا يمكن أن تكون هناك لغة برمجة أو إطار عمل أو حتى مكتبة صغيرة من دون توثيق (إذا كان هناك مشروع بدون توثيق فلا تنظر إليه أصلا!). أمّا الدروس التعليمية، سواء كانت مقروءة أم مشاهدة، فهذه ليست أساسية. بالطبع، كل لغات البرمجة وأطر العمل الشهيرة سوف تجد لها دروسا تعليمية، لكن هذا الأمر ليس دائما. سوف تتعامل في مسيرتك البرمجية مع مكتبات غير مشهورة، وهذه لن تجد لها دروسا تعليمية لكن سيكون عليك الاعتماد على نفسك من خلال الاستعانة بالتوثيق. بالطبع لا، وهذه فائدة التوثيق، فهو يمثّل مرجعا تعود إليه كلّما احتجت إلى مراجعة ما نسيته أو تعلّم إمكانيات إضافية للمكتبة من التي لم تكن تعرفها بعد. شخصيا، استخدمت Numpy في كثير من المشاريع ومع ذلك لم أستخدم منها سوى مميزات قليلة منها، أمّا أغلب مميزات المكتبة فلا أحسن استخدامها، لكن يمكنني دائما العودة إلى التوثيق والبحث في الأنترنت من أجل التعلم أكثر.
  22. لفعل ذلك يجب عليك معالجة الحدث beforeunload في window: function onBeforeUnload(e) { if (thereAreUnsavedChanges()) { e.preventDefault(); e.returnValue = ''; return; } delete e['returnValue']; } window.addEventListener('beforeunload', onBeforeUnload); بالنسبة لـthereAreUnsavedChanges() فهذه دالّة يجب عليك برمجتها لتوافق الشرط الذي تريد عنده منع المستخدم من مغادرة الصفحة. لكن للأسف، في المتصفّحات الجديدة، لا يمكن تعديل النص الذي يظهره المتصفّح للمستخدم, نصّ التأكيد يختاره المتصفّح نفسه. لكن ما يمكنك فعله هو إظهار الرسالة على الصفحة مباشرة في من خلال الدالّة السابقة. يمكن الإطلاع أكثر عن كيفية معالجة هذا الحدث من توثيق شبكة موزيلا للمطورين: https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event
  23. طول أو قصر وقت الفيديوهات وعددها شيء غير مؤثر بشكل كبير في مقارنة الدورات. الأهم هو المحتوى الموجود فيها والأهم منه هو استيعاب الطالب لما يدرسه فيها. في الفيديوهات الأولى مثلا قد يكون عدد الفيديوهات كثيرا ووقتها قصير نسبيا، لأنها تتناول مفاهيم بسيطة يمكن دراستها في وقت قصير، كما أنّ عدد هذه المفاهيم يكون كبيرا (كل شيء يبدو هكذا في البداية) لذلك تكون عدد الفيديوهات كثيرة. لكن مع التقدّم في الدروس تصبح عدد الفيديوهات أقل ويزداد طولها (وتعقيدها)، وسوف تصبح الدروس مترابطة فيما بينها بشكل كبير، والطالب عندما يحاول تطبيق كل ما يدرسه فيها (وربّما يزيد إبداعا من عنده، فهذا أحسن) سوف يكلّفه هذا وقتا كثيرا ويقع في مشاكل وسيحتاج إلى طلب المساعدة من المشرفين وغير ذلك. لذلك لا يمكن حساب وقت الدورة بناء على عدد الفيديوهات أو مجموع وقتها، بل إن الأمر يختلف من طالب لآخر، فكلّ طالب له قدراته الخاصّة في الدراسة واهتماماته وأشغاله. يمكنك إيجاد إجابات مشابهة عن كيفية تقدير مدّة الدورة وآلية الامتحان في هذا السؤال:
  24. كتابة الكود غير مرتبطة بالمحرر الذي تختارينه. يمكن أن تختاري أي محرر تريدين. في دورة تطوير التطبيقات باستخدام Python يستخدم المدرّب عادة برنامج PyCharm لأن هذا هو خياره الشخصي، لكن هذا ليس شرطا. إذا كنت متمكّنة أكثر في VS Code أو تشعرين بأنه يريحك أكثر أو متوافق مع جهازك بشكل أحسن فيمكنك استخدامه. وفي حالة لم تستطيعي متابعة المدرّب في جزئية محددة بسبب اختلاف البرامج، فيمكنك طرح سؤال في قسم التعليقات أسفل الدرس وسوف يقوم أعضاء الإشراف الذين يستخدمون VS Code بمساعدتك.
  25. الاحتفاظ بالمشاريع يعني الإبقاء على الملفات التي تمّ العمل عليها عند متابعة المدرّب. في الدروس المتقدّمة تكون المشاريع مجلّدات تحوي عدّة ملفّات كثيرة وكبيرة، وهذه يجب الاحتفاظ بها. سوف يتم رفع هذه المشاريع على GitHub في وقت لاحق قبل التقدّم للامتحان. في الدروس الابتدائية تكون المشاريع متكوّنة من ملف واحد، فمن الأحسن الاحتفاظ بها هي أيضا. في بعض الدروس الابتدائية لا توجد أصلا ملفّات لحفظها. في هذه الحالة يمكنك نسخ الأوامر التي تم إدخالها في ملف نصّي مثلا. لا أعتقد أن أخذ لقطات الشاشة أمر ضروري لكنها فكرة جيّدة ويمكنك إضافتها.
×
×
  • أضف...