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

Kais Hasan

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

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

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

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

    24

كل منشورات العضو Kais Hasan

  1. في البداية من الجيد توضيح أن الكود الخاص بك لا يقوم بجلب صورة كل ثانية، و إنما يقوم في كل مرة بجلب frame من الفيديو، و بالتالي الوقت بين كل صورتين كزمن يتحدد حسب ال fps الخاص بالفيديو، حالياً أنت تقومين بجلب كافة الصور في الفيديو. حتى يمكنك جلب الصور كل فترة معينة من الزمن يمكنك الانتقال يدوياً إلى اللحظة المناسبة في الفيديو، مثلاً نبدأ عن اللحظة 0 ثم ننتقل إلى 30 ثانية لاحقة و هكذا. يمكنك استعمال الطريقة set على الغرض vs للقيام بذلك، كما يلي: vs.set(cv2.CAP_PROP_POS_MSEC, 30*1000) طبعاً هنا الوقت يمثل بالميلي ثانية لذلك قمت بالضرب ب 1000. لذلك يمكنك كتابة حلقة for للقيام بالانتقال كل مرة إلى النقطة التي تبعد عن النقطة الحالية 30 ثانية زمنياً. بعد الانتقال إلى اللحظة الزمنية المناسبة يمكنك فقط قراءة الفريم عن طريق التابع read. يمكنك الإطلاع أكثر على التابع المذكور من هنا.
  2. هذه المشكلة من ال vscode، فهو لم يتعرف على المكتبة pygame. سبب المشكلة غالباً هو أنك لم تضع البيئة المناسبة في ال vscode. يمكنك اختيار البيئة بالضغط على ما هو موضح في الصورة، ستظهر لك خيارات البيئة حتى يمكنك اختيار البيئة الصحيحة: في حال لم ينجح الأمر جرب إغلاق vscode و إعادة فتحه. في حال استمرت المشكلة بالظهور فغالباً السبب مشاكل في ال vscode، هذا يحدث في بعض الأحيان و لكنه لا يؤثر على عمل الكود، لذلك يمكنك متابعة العمل بشكل طبيعي. تحياتي.
  3. لا أحد يمكنه أن يعطيك معلومات مؤكدة عن المستقبل، لكن حالياً التقدم الذي يحدث في الذكاء الاصطناعي هو مجرد مساعدة للإنسان لتسريع العمليات الروتينية البسيطة، بالتالي تطبيقات بسيطة و مكررة مثلاً المتاجر الالكترونية و غيرها فعاجلاً أم آجلاً سيمكن أتمتتها عن طريق الذكاء الاصطناعي. لكن التطبيقات الكبيرة و التي غالباً تتضمن الكثير من التعامل مع الزبون و فهم متطلباته التي قد تكون فريدة، أو تحتاج إلى تفكير فهذا حالياً غير ممكن بواسطة الذكاء الاصطناعي. بالتالي يمكنك توقع ارتفاع الحد الأدنى من المهارات التي تسمح للشخص بالعمل في هذا المجال، هذا طبيعي في أي فترة زمنية، فعند اختراع الحاسوب بالطبع تخلصنا من الكثير من العمليات التي تأخذ وقتاً طويلاً، و أصبحت مهارة استعمال الحاسوب شيء لا يمكن الاستغناء عنه، حالياً نفس الأمر مع الذكاء الاصطناعي، عليك تعلم كيفية استعمال هذه الأدوات بشكل جيد لتسريع عملك و جعله أكثر جودة. طبعاً هذا يأتي بعد تعلمك لأساسيات بناء هكذا تطبيقات، حتى يمكنك تصحيح أي أخطاء قد تحدث بسبب أنظمة الذكاء الاصطناعي.
  4. لقد نسيت أن تقوم بكتابة التابع الرئيسي main. أي يجب أن يكون الكود الخاص بك ضمن تابع بالشكل التالي: int main() { return 0; } هذا التابع هو ما يتم تنفيذه عند تشغيل الكود، و عدم وجوده سيسبب أخطاء كثيرة و أحياناً أخطاء غير مفهومة كالخطأ الذي تظهره.
  5. هناك طريقة أفضل لكتابة هذا الكود بما يتوافق مع النمط العام في بايثون أو الكود الذي يطلق عليه Pythonic. الكود الخاص بك يمكن كتابته بحيث يقوم بطباعة كل سطر بتعليمة واحدة فقط بدلاً من استعمال حلقة، بالطبع يجب علينا استعمال حلقة للأسطر و لكن عندها سنكون اختصرنا حلقة. يمكن كتابة ذلك كما يلي: num = 1 for i in range(3): row = map(lambda x: str(x), range(num, num + i + 1)) num += i + 1 print(' '.join(row)) قد تبدو هذه الطريقة معقدة بالنسبة للأشخاص الذين تعلموا لغات برمجة أخرى مسبقاً، حيث أن أغلب اللغات تعتمد على الشكل التقليدي، و لكن في بايثون هذه الطريقة أفضل بكثير. لاحظ هنا كيف أننا استعملنا map و التي تقوم بتطبيق تابع معين على كل عنصر من عناصر كائن قابل للتكرار، بشكل أساسي الهدف من map هنا هو تحويل الأرقام إلى سلسلة نصية بحيث يمكننا دمجهم لاحقاً. لاحظ كيف أننا استعملنا range لاستبدال الحلقة بشكل كامل، فهي ببساطة ستعيد لنا كافة الأرقام التي نريدها. و استعملنا التابع join على الفراغ و ذلك لجمع عناصر السطر عن طريق وضع فراغ بينهم.
  6. يبدو أنك لم تقم بعملية build للكود الخاص بك، هذه العملية تقوم بإنشاء الملفات الخاصة بالتطبيق (ولو كان تطبيق بسيط) و تقوم بإنشاء ملف exe لها أيضاً. التعامل مع الكومبايلرات و بناء الكود بنفسك ليس أمراً سهلاً، أنصحك بتجربة استعمال تطبيقات تقوم بذلك تلقائياً، مثلاً استعمل CodeBlocks. و عندما تنتهي من تعلم اللغة و ما تريده يمكنك تخصيص وقت لتعلم هذه الأمور.
  7. أغلب اللغات تغنيك عن بعضها بعض في حال كان هدفك هو مجرد كتابة كود يقوم بعمل ما. لكن عليك أن تعرف أن هنالك فروق بين اللغات، و إلا كان الجميع قام باستعمال لغة واحدة بدلاً من كل هذه اللغات المتوفرة. يمكنك القيام بأي شيء في بايثون، و لكن هنالك بعض الأمور التي لا يتم استعمالها فيها، مثلاً في حال كان همك السرعة الكبيرة للبرنامج، في حال كان البرنامج الخاص بك سيعمل على نظام مدمج، مثلاً على drone، لا يمكنك استعمال بايثون، عليك استعمال c++. في حال كنت تريد الوصول إلى الهاردوير يجب عليك أيضاً استعمال لغة مثل ال c++. أما في حال كان همك سرعة كتابة الكود فبايثون هي الأفضل، كما أنها ليست بطيئة جداً، و بالتالي في حال لم يكن هدفك العمل على أنظمة مدمجة فيمكنك استعمالها في كافة الأمور.
  8. ليس من الجيد الإكثار من مشاهدة المشاريع التي يقوم أشخاص آخرون بتنفيذها في بداية تعلمك، من الأفضل أن تركز في ما تتعلمه و تحاول التطبيق بنفسك، أي فكر بفكرة تعتقد أنها قابلة للتطبيق بواسطة ما تعلمته حتى الآن و قم بتطبيقها. حتى في حال كان هناك بعض الأمور البسيطة التي لا تعلمها يمكنك البحث عنها، هكذا تطور مهاراتك و في نفس الوقت تزيد معلوماتك.
  9. في حال كان ذلك يحدث ضمن أحد برامج محررات النصوص فقد يكون ذلك بسبب الترميز المحدد بشكل افتراضي للتطبيق، فقد لا يكون UTF-8 مما يسبب لك تلك المشاكل، بشكل عام كافة التطبيقات الخاصة بتحرير النصوص أو الأكواد تدعم تغيير الترميز إلى UTF-8 أو غيره من الترميزات التي تدعم اللغة العربية. الترميزات هي ما يمكن تمثيله، لنفرض أن الترميز يمكنه تمثيل 256 محرفاً، و لديك مجموعة لغات مجموع محارفها أكبر من ذلك، بالتالي ستوجد حروف لن يتمكن هذا الترميز من تمثيلها، هذا أبسط شرح ممكن لهذا المفهوم. يمكنك مشاركة اسم البرنامج الذي تستعمله معنا حتى نخبرك كيفية القيام بذلك في حال كان ذلك ممكناً.
  10. و عليكم السلام، بالطبع من المحبذ أن تقوم بمشاريع من عندك، هذا له عدة جوانب إيجابية و هي: زيادة عدد المشاريع التي قمت بها، مما يزيد من المشاريع التي يمكنك عرضها عند التقديم على عمل ما، كما أن ذلك يزيد من خبرتك. إنشاء مشروع بنفسك يعلمك كيفية التخطيط و تنظيم خطوات بناء مشروع. تطبيق كل شيء بنفسك من الصفر يساعدك على كشف أي ثغرات لديك في فهم فكرة ما. إن البايثون تعتبر ضرورية للتطبيق العملي على الذكاء الصنعي، بينما تعد الرياضيات ضرورية لتعلم النظريات المتعلقة بالذكاء الصنعي و فهم مختلف الخوارزميات فيه. بالتالي يمكنك تعلمهما سوية، كما أنهما أمرين مختلفين من الناحية الفكرية و لذلك لا مشكلة في تعلمهما في نفس الوقت، فلن يسبب ذلك أي إرهاق. في حال أنهيت أحدهما قبل الآخر يمكنك الانتقال إلى المرحلة التي تليها، أي في حال أنهيت بايثون يمكنك الانتقال إلى المرحلة التطبيقية بدون تعلم الكثير من النظريات، أو تعلمها بشكل سطحي، و عندما تنهي الرياضيات المطلوبة يمكنك التعمق في الأفكار النظرية.
  11. النسيان هو أمر طبيعي، حاول ألا تجبر حالك على حفظ تعليمات أو أي شيء، فقط افهم طريقة القيام بأمر ما، أي الخطوات الأساسية و لاحقاً في حال كنت لا تذكر تماماً كيفية القيام بشيء يمكنك ببساطة الاستعانة بغوغل، هذا ليس أمراً سيئاً حيث لا أحد يمكنه حفظ كل شيء. لاحقاً مع الخبرة و تكرار كتابة أكواد معينة قد تحفظ بعض الأمور بشكل تلقائي. لذلك حاول دائماً التطبيق كثيراً. أي كود أو دالة لا تفهمها أو لا تفهم الغاية من استعمالها يمكنك التعليق أسفل الدرس و سنقوم بمساعدتك على فهمها.
  12. يبدو أنك كتبت الاسم بشكل خاطئ، عليك الانتباه إلى حالة الأحرف. لحل المشكلة في البداية يفضل أن تقوم بإنشاء بيئة افتراضيةـ فتنزيل كل المكتبات سوية أمر غير جيد و حتماً سيسبب لك مشاكل في المستقبل، لذلك قم بتنزيل pipenv كما يلي: pip install pipenv من بعدها توجه إلى المجلد الخاص بالمشروع ضمن سطر الأوامر و قم بكتابة التعليمة التالية لإنشاء بيئة افتراضية و الدخول إليها: pipenv shell الآن قم بتنزيل كافة المكتبات التي تحتاجها عن طريق كتابة pipenv install، لاحظ أنه يجب عليك استعمال pipenv و ليس pip، مثلاً لتنزيل المكتبة التي تحدثت عنها يمكنك كتابة ما يلي: pipenv install PyPDF2 في حال لم ينجح الأمر من فضلك قم بإرفاق لقطات شاشة توضح كيف قمت باستدعاء كل تعليمة مما ذكرته و ما الخرج الناتج عنها، غالبا ستحتاج إلى أكثر من لقطة شاشة حيث أن إرفاق كامل الخرج مهم جداً و جزء منه قد لا يدلنا على المشكلة.
  13. إن str هو اختصار ل string و التي هي النمط الخاص بالسلاسل النصية في لغة بايثون. تابع str يقوم بتحويل ما تعطيه إلى سلسلة نصية، أي في حالتك هذه يحول الرقم إلى سلسلة نصية لطباعته، طبعاً في هذه الحالة لست مضطراً إلى تحويل الرقم إلى سلسلة نصية فأنت لا تقوم بأي عملية لها علاقة بالسلاسل النصية عليه، فقط تقوم بطباعته، و لذلك يمكنك إزالة هذه الدالة و سيبقى الكود يعطي نفس الناتج.
  14. من أفضل المواقع التي تعتبر جيدة للبداية حيث أنها سهلة نسبياً هي: HackerRank HackerEarth أنصحك بقضاء بعض الوقت عليهما و لكن الانتقال بعدها إلى مواقع أفضل، حالياً أفضل موقعين في هذا المجال هما: CodeForces AtCoder في هذين الموقعين يمكنك ترتيب المسائل حسب الصعوبة كما يمكنك فرز المسائل حسب نمط المسألة، و هناك الكثير من الأنماط مثل graph theory, greedy, dynamic programming, math و الكثير من المواضيع الأخرى، كما يوفر موقع codeforces الكثير من المحتوى التعليمي في قسم Edu ضمن الموقع، حيث أنه يعطيك بعض المعلومات عن طريق فيديوهات ثم يعطيك مجموعة من المسائل مرتبطة بالمحتوى المقدم. كما أن كل مسألة في codeforces لها شرح مرافق لحلها في حال لم تستطع حلها بمفردك.
  15. من فضلك قومي بطرح السؤال في التعليقات أسفل الدرس الذي له علاقة بالسؤال المطروح.
  16. هل يمكنك مشاركة بعض التفاصيل حول المشكلة؟ مثلاً هل تحدث عند محاولتك تنزيل أي فيديو؟ أو القيام بأي عملية؟ أو منذ فتحك للبرنامج قبل القيام بأي شي؟ أيضاً قد يكون من المفيد ذكر أي عملية تحديث قمت بها للمكاتب أو للكود خلال هذه الفترة. و في حال كان من الممكن إرفاق ملفات الكود على شكل ملف مضغوط فسيكون ذلك جيداً. تحياتي.
  17. العمر ليس عائقاً بالطبع طالما أنه لديك الخلفية المناسبة لتعلم ذلك و فضول التعلم و اكتشاف المزيد حول هذا المجال. أما في حال كان هدفك الربح المادي فلا أنصحك بذلك حيث أن هناك الكثير من الأعمال التي تدر لك ربحاً أكبر و التي لها سوق أكبر في مجال العمل الحر، مثلاً تصميم الويب، و هو مجال أسرع في التعلم و بالتالي يمكنك البدء بجني الأرباح بشكل أسرع من مجال تحليل البيانات. ما قيل لك ليس صحيحاً بشكل كامل، هو صحيح بالنسبة للشركات الكبيرة التي تحوي على معلومات حساسة و ضخمة جداً، حيث أن هذه الشركات ستحتاج فريق عمل كامل و ليس فقط شخص للقيام بهذه الأعمال، كما أنها تحتاج عقد صريح لضمان السرية و هذا ما لا يمكن الحصول عليه في العمل الحر. و لكن أغلب الشركات محدودة الحجم لا ينطبق عليها ما سبق و بالتالي من الممكن أن يتم توظيف شخص مستقل للقيام بعمل ما، و لكن هذا الأمر ليس موجود في كثير من الشركات، و الأمر لا يتعلق بالسبب الذي ذكرته و إنما بأن الشركات بشكل عام تتعامل بعقود و بكادر تفضل أن يكون ثابتاً، و ليس بالعمل الحر. بالتالي أغلب العمل الذي يمكن أن تتوقعه سيأتي من أفراد، و قد لا تجد الكثير، لا أريد إحباطك طبعاً و لكن عليك أن تعرف أن هذا المجال ليس من السهل الحصول على عمل له، يمكنك الإطلاع على العروض الموجودة على مستقل مثلاً و سترى فعلياً أن أغلب الأعمال لها علاقة بالويب و أن الأعمال المتعلقة بتحليل البيانات أقل بكثير، بالطبع ستجد بعض الأعمال و لكن كما سبق و ذكرت ليست بالكثيرة. لذلك لتلخيص ما سبق، في حال كان هدفك الربح المادي السريع فهذا ليس خيار جيد، أما في حال كان هدفك التعلم و الربح البسيط فمن الجيد الدخول في هذا المجال.
  18. يمكنك التقدم إلى امتحان الدورة، من خلال التواصل مع مركز مساعدة أكاديمية حسوب، مع مراعاة الشروط التالية: إتمام أربعة مسارات تعليمية على الأقل. التطبيق العملي مع المدرب، والاحتفاظ بالمشاريع العملية الناتجة لإرسالها للمراجعة. رفع المشاريع على حسابك على GitHub أولًا بأول لمشاركتها معنا.
  19. مرحباً محمد، سأذكر لك مثال حتى يمكن شرح الطرق. لنفترض أننا نريد كتابة برنامج يقوم بالتحقق فيما إذا كان عدد أكبر من الصفر، و في تلك الحالة يقوم بطباعة جملة معينة، عند ذلك يمكننا كتابة ما يلي: let x = 10; if (x > 0) { console.log("positive"); } أما في حال كنا نريد كتابة برنامج يقوم بالتحقق فيما إذا كان العدد أكبر من الصفر و طباعة جملة، أما إذا كان يساوي الصفر نطبع جملة أخرى، عندها يمكننا كتابة ذلك كما يلي: let x = 0; if (x > 0) { console.log("positive"); } else if (x === 0) { console.log("zero"); } و في النهاية إذا كنا نريد طباعة كافة الحالات و هي إذا كان أكبر من صفر، يساوي الصفر، أو أصغر من الصفر، يمكننا كتابة ذلك كما يلي: let x = -10; if (x > 0) { console.log("positive"); } else if (x === 0) { console.log("zero"); } else { console.log("negative"); } أتمنى أن تكون وصلت الفكرة. تحياتي.
  20. في حال كان سؤالك متعلقاً بأحد دروس الدورات من فضلك قم بنشر سؤالك في التعليقات أسفل الدرس. أيضاً قم بإضافة بعض التفاصيل، ليس واضحاً ما هو المشروع ولا حتى الخطأ الذي يظهر معك، من الجيد أخذ لقطة شاشة لرسالة الخطأ بشكل كامل و مشاركة ملفات المشروع على شكل ملف مضغوط حتى يمكننا مساعدتك. و لكن كما سبق و ذكرت قم بذلك في التعليقات أسفل الدرس في حال كان السؤال متعلقاً بدرس ما.
  21. تخرجك من الدورة يجعلك تملك كافة المعلومات اللازمة لبدء العمل في هذا المجال، كما أنه يضيف بعض المشاريع إلى معرض أعمالك. لكن هذا ليس كاف كبداية، أي أنك ستواجه قليل من الصعوبة حتى تبدأ العمل الحر، و السبب في ذلك ليس نقص مهارات أو معلومات، و إنما أنه لن يكون لك تقييم في مستقل، و بالتالي أصحاب المشاريع قد يفضلون حساب يحوي على تقييمات سابقة فهذا مثل ضمان لهم. و بالتالي في البداية ستعاني قليلاً من قلة المشاريع ريثما يصبح لديك تقييم، نصيحتي هي أن تحاول أن تكون أول من يقدم على المشاريع و تضع سعر منخفض قليلاً و ذلك لتجذب انتباه أصحاب المشاريع و بعد أن يصبح لديك عدة تقييمات يمكنك رفع السعر قليلاً. في حال أصبحت لديك خبرة و سمعة جيدة في الموقع فقد تتمكن من العيش من العمل الحر فقط، و لكن هذا ليس مضموناً فالعمل الحر ليس شيئاً ثابتاً، و بالتالي من الجيد لو تحاول إيجاد عمل ثابت بالإضافة إلى عملك الحر، في حال أردت ضمانات، كما أن العمل بشركة بشكل عام يعطيك خبرة أكبر من العمل الحر و ذلك ﻷن حجم المشاريع سيكون أكبر بشكل عام.
  22. يبدو أنك نسيت إضافة مكتبة Popper اللازمة لعمل ال bootstrap، و نقوم بإضافتها قبل ال script الخاص بال bootstrap كما يلي: <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/umd/popper.min.js" integrity="sha384-I7E8VVD/ismYTF4hNIPjVp/Zjvgyol6VFvRkX/vR+Vc4jQkC+hVqc2pM8ODewa9r" crossorigin="anonymous"></script> تحياتي.
  23. من الجملة التي تذكرينها يبدو أنك ذاكرت الدروس بشكل غير صحيح، و إلا كنت نشرت سؤالاً بخصوص ما لم تفهميه بشكل مسبق. أي ما أقصده هو أنه يجب التدريب على كل درس و عدم الانتقال إلى ما يليه بدون فهمه بشكل كامل، و إلا فإن عدم فهم أول درس سيؤدي إلى عدم فهم ما يليه. ما يجب القيام به حالياً هو إعادة الدرس الأول و محاولة تطبيق ما يحويه، و في حال وجود أي مشاكل في فهم الدرس أو في تطبيقه يمكنك التعليق أسفل الدرس و سنقوم بالمساعدة، و لا يجب الانتقال إلى الدرس الثالي قبل فهم الدرس الحالي بشكل كامل.
  24. دائماً مرحب بأن تضيف تعليق تحت الشرح. لكن في حال أردت معرفة ذلك لوحدك فإنه يجب عليك دائماً الاستعانة بغوغل للبحث عن أي دالة، مثلاً لنفترض أنك تريد دالة أو أي طريقة لتحويل عدد صحيح إلى سلسلة نصيةـ فإنك تقوم بالبحث int to string js فسيظهر لك نتائج تدلك على كيفية القيام بذلك. بالطبع من الأفضل أن تبحث باللغة الانكليزية و ذلك ﻷن المصادر العربية أقل، في حال كنت تريد مصدر عربي يمكنك البحث داخل أكاديمية حسوب فهي أفضل مكان لذلك، بحيث تضمن جواب علمي صحيح.
  25. بعد التخرج من دورة علوم الحاسوب سيكون لديك المعلومات النظرية الكافية اللازمة ﻷي مبرمج حول الحاسوب و كيفية عمله و كيفية التفكير البرمجي، و لكنها بالطبع لن تضمن لك وظيفة و لكنها ضرورية من أجل باقي الدورات التطبيقية التي تقوم بشرح إطار عمل. أما عند التخرج من دورة تطوير واجهة المستخدم سيصبح لديك كافة المعلومات اللازمة للدخول في مجال تطوير واجهات المستخدم و العمل في هذا المجال، و لكن هذا وحده غير كافٍ، فعليك محاولة القيام ببعض المشاريع لوحدك حتى تضعها في ال CV الخاص بك عند التقديم، حيث أن مشروع واحد فقط لا يكفي للقبول بشكل عام. و لذلك قم بإنهاء هذه الدورات و القيام ببعض المشاريع لتضعها في ال CV ثم حاول التقديم على بعض الشركات، كما يمكنك محاولة التقديم على مشاريع العمل الحر على مستقل مثلاً.
×
×
  • أضف...