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

عماد شيخ العشرة

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

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

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

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

    2

كل منشورات العضو عماد شيخ العشرة

  1. يمكنك تخطيه إن أردت لكن ينصح به حيث انه يعلم المنطق البرمجي خاصة لمن يتعلم لأول مرة المنطق حيث يبني اساسيات مما يسهل عليك عملية التعلم في المستقبل وقد يختصر عليك الوقت.
  2. أن HTML لا تحسب كلغة برمجية فهي لا تحتوي على الشروط والحلقات التكرارية وغيرها الكثير من المنطق البرمجي مما يشكل لنا برنامجا كاملا بل هي لغة لاستعراض بعض العناصر في الشاشة.
  3. ان كان ليس لديك اي خبرة في مجال البرمجة وعلوم الحاسوب فأنا انصح به لانه يعلمك التفكير المنطقي حيث انه يبدو تافها في بادئ الأمر لكن واقعيا هو يعلم الكثير ويجعل تفكيرنا المنطقي والخوارزمي أقوى بكثير. ان كان لديك خبرة في علوم الحاسوب او البرمجة يمكنك تخطي هذا المسار فالامتحان يتطلب مننا ان نكمل ٤ مسارات مع رفع المشاريع الخاص بها إلى GitHub واخبار فريق المساعدة بأنك تريد ان تمتحن ويتم امتحان وسؤالك واعطائك مهمة معينة لانجازها في وقت معين ان استطعت اجتيازها فسوف تحصل على الشهادة. ولا يتطلب مننا ان نكمل مسارات محددة كما يفضل إتمام الدورة كاملة حيث ان سوق العمل تنافسي وقوي ويحتاج إلى الكثير من الخبرة.
  4. بالنسبة لدوراتنا فهي مخصصة للتعلم بالتدريج اي انه لا يتم شرح شيء إلا ويتم شرح قبل ما يتطلب لفهم هذا الدرس اي يعني انه إذا مشيت في الدورس تدريجيا فلن تواجه اي مشكلة ومجال الذكاء الصناعي كبير جدا حيث يوجد فيه الكثير من الرياضيات ولو اردنا التركيز على الرياضيات فقط قبل دخول المجال فقد نحتاج الكثير من الوقت ولا نكتسب خبرة عملية يمكنك متابعة الدورة بشكل طبيعي في حال وصلت إلى مكان معين لا تفهمه واحتاج الرياضيات يمكنك السؤال عنه وسيتم شرحه لك وكما قلنا سابقا دوراتنا تعتمد على العملي اكثر من النظري حيث النظري قد يسبب ضياع الكثير من الوقت قبل التعود على المجال وأخذ خبرة فيه.
  5. دمج الكائنات سيجعلهم قابل للوصول بشكل اسرع ويجعل الكود اكثر نظافة مما يسهل علينا القرائة فالكائنات المتداخلة صعبة الفهم وقد يصبح سلوك غير متوقع في كودنا بسبب عدم معرفة كيفية الوصول للكائن.
  6. الرجاء الاطلاع على السؤال التالي حيث انه تم الإجابة على عمل هذه الدالتين في مثال آخر. فمنطق الشيفرتين نفس ولم يتغير لكن ما فرق هو الأسماء.
  7. نعم تم تنزيله بنجاح. يمكنك متابعة الفيديو الذي ارفقته لك فهو يعلم الاساسيات.
  8. يمكنك تنزيله عبر الرابط التالي: https://git-scm.com/downloads كما اني ارفقت لك فيديو ومقالة تشرح الاساسيات ويوجد فيديو ايضا يمكنك الاطلاع عليهم.
  9. تعلم Git ليس بمضيعة بالوقت بل يمكنك استخدامه فهو يستخدم في جميع المشاريع البرمجية الكبيرة كانت ام الصغيرة وهو مفيد جدا اثناء التقديم للاعمال حيث يجب عليك معرفة الاساسيات ولا يجب عليك التعمق فيه في البداية بل معرفة الاساسيات ستساعدك في عمل مشاريعك وتنظيمها واصلاحها وتضيف مميزة يمكنك استعمالها في جميع فروع البرمجة حيث يستخدمها اغلب المبرمجين سواء مطور واجهة مستخدم او مطور واجهة خلفية او اي نوع من المطورين.
  10. الGit هو نظام تتبع اصدارات يُستخدم لتتبع التغييرات في الملفات والمشاريع البرمجية، خصوصًا تلك التي يعمل عليها أكثر من شخص. تخيل أن لدينا تطوير نطوره سواء كنت لحالك او مع فريق ونحن بالتطوير عادة ما نعمل كل مميزة منفصلة عن الاخرى في التطبيق فبعد ان انهيت مميزة ما وبدانا بتطوير ميزة ثانية فحصل اثناء تطوير الثانية خلل في الكود وخرب المشروع كله واصبحت شيفرتنا غير جيدة. هل سنعيد كتابة التطبيق من جديد؟! هذا غير ممكن فلذلك نستخدم ادوات تتبع المصدر مثل Git فبعد اتمام كل ميزة نحفظ التغيرات التي حصلت في الكود وفي حال اثناء تطوير الميزة التي بعد هذه خرب المشروع او خرب الكثير من الشيفرة فبامكاننا الرجوع الى الميزة التي قبلها ونستطيع ان نرجع الى الوراء بقدر ما نستطيع وليس اخر مميزة فقط. يمكننا استخدامها كفريق ايضا وهذا يكون كالتالي: تخيل ان مشروعنا هو عبارة عن خط وهذا الخط هو الميزة بعد الأخرى فلدي انا فريق عمل فاجعل كل شخص من فريق العمل ياخذ خط فرعي من خطنا الرئيسي ونجعل كل مطور يعمل على مميزته بشكل منفصل وبعد ان ننهي مميزتنا ندمجها الى التطبيق الفرعي. تحيل ان المشروع هو الاخضر وانت تعمل مميزاتك بالازرق وشخص اخر هو البرتقالي ويمكنك ايضا الاثنين تاخذو خط فرعي من نفس المكان. ان موقع Github هو بالواقع من احد تطبيقات Git حيث ان Git يكون للجهاز المحلي و github خدمة سحابية حيث مثلا لو كنا عدة مطورين فيمكننا اخذ الكود بعد دمج الميزة من قبل شخص اخر ومواصلة بمميزة انت ستعملها. بالنسبة لك كمطور فلا تحتاج المميزات المتقدمة من Github بل اكثر من يحتاج المميزات المتقدمة منه هم مطورين DevOps لكن يجب عليك كمطور معرفة أساسياته. ومن ناحية تعلمه يوجد لدينا الكثير من المقالات فيه. كما يوجد فيديو الاساسيات الخاصة فيه:
  11. الرجاء وضع سؤالك تحت الدرس الخاص به فهنا مكان الاسئلة العامة حيث نضع الاسئلة اللتي لا علاقة لها بالدورة. ستجد اسفل الدرس صندوق يمكنك وضع سؤالك هنالك.
  12. قلت لك المواضيع المستخدمة بكثرة في اول تعليق لكن هنالك الكثير فالتعلم لا ينتهي لكن ما عليك فعله هو بعد تعلمك لهذه الاشياء وعمل تطبيق فعلي واستخدامك لكل شيء فحين مواجهتك لمشكلة في الحياة الواقعية فمن المستحيل ان نكون ملمين بكل شيء خصوصا كمبتدئ لكن بالبحث وقرائة التوثيق الرسمي نحل مشاكلنا.
  13. نصيحتي هي ان لا تضيع وقتك بالكثير من الفيديوهات نعم يمكنك فتح مقال او متابعة فيديو سريعا وذلك لفهم الفكرة العامة للموضوع بعد معرفة الفكرة العامة وبم ولم تستخدم ثم فكر كيف أوظف هذه المعلومة في مشروع حقيقي وطبق عليها اولاً تدريب بسيط وذلك للتأكد هل أنا فهمت الفكرة وأقدر استخدمها او لا واذا قدرت على عملها انتقل للموضوع الآخر ومن بعد فهم الكثير من المواضيع اعمل مشروع يجمع كل المعلومات التي درستها وهذا ما يسمى مشروعا.
  14. في الواقع Redux هي مكتبة متخصصة ب JS وليس ل React فقط وهدفها تبسيط ال Context المستخدم في رياكت حيث انه الكثير من ال Context المتداخل في بعضه قد يجعل الشيفرة صعبة القرائة مثال: function App() { return ( <AuthProvider> <ThemeProvider> <LanguageProvider> <Dashboard /> </LanguageProvider> </ThemeProvider> </AuthProvider> ); } لكن مكتبة Redux تجعل الشيفرة قابلة للقرائة وجعل الشيفرة نظيفة ويمكنك تقسيم الشيفرة الى اجزاء ببساطة. تم تطوير من Redux بعض المكتبات وهي React redux ومكتبة redux toolkit لاستخدامها في رياكت خصيصا. المكتبة كبيرة نوعا ما وتحتاج شرح كثير لدينا بعض المقالات ان اردت الاطلاع عليها:
  15. إن مكتبة رياكت مكتبة واسعة وكبيرة وفيها الكثير من المفاهيم ولا تقتصر على هذه الأشياء فقط فيوجد بها الكثير. المهم بالموضوع هو معرفة كتابة أكواد نظيفة واستخدام الصحيح لكل الأدوات. إن كنت مهتما أكثر يمكنك التعرف على مواضيع مثل: useContext أو بديلها مكتبة Redux وتستخدم لعمل state يمكنك استخدامها في جميع المكونات. memo useMemo وتستخدم لتحسين الأداء قليلا. يمكنك تعلم اطار عمل NextJS حيث يساعد في ال SSR وينفع للتحسين في محركات البحث SEO. يمكنك تعلم كيفية استخدام TypeScript بدلا من JS في اطار عمل رياكت. بعد اتمام هذا وعمل مشاريع عليها اطلع اكثر فهنالك مكتبات مساعدة مثل Tanstack وغيرها ان كنت تريد التعمق في عالم رياكت وتصبح مطور واجهة أمامية مختص في رياكت. وكما اخبرتك سابقا المهم هو الشيفرة النظيفة ومعرفة استخدام المعلومات التي تعلمتها في بناء مشاريع حقيقية.
  16. لا ليس ضعفا فهذا امر طبيعي لكل البشر فنحن ننسى كثيرا ومع الممارسة والتدريب المستمر تترسخ المعلومات بشكل اكثر وأقوى في حال احتجت معلومة يمكنك الرجاع اليها وتذكرها ونحن كمبرمجين لا نحفظ بل نفهم ما فعلناه.
  17. نعم من الطبيعي نسيان ما فعلته فهذا حال أغلب المبرمجين وتحصل بكثرة حيث أنه لا نحن نعمل بالمنطق ونستخدم التوثيقات الرسمية في كتابتنا للشيفرات مما يسبب نسيان ما عملناه. في حال كنت تريد أن تتذكر فيمكنك قراءة ما كتبته وسوف تتذكر بشكل سريع ولن يستغرق الكثير من الوقت.
  18. هذا هو شيء طبيعي في البدايات فجميعنا كنا في هذه المرحلة كل ما عليك فعله هو محاولة التمرين أكثر وهذا التمرين سيأتي مع الزمن حاول حل المشكلة بيدك إن لم تستطع بعد ربع او نص ساعة مثلا يمكنك السؤال او البحث في الانترنت وبعد معرفة الاجابة كرر التمرين بدون النظر للاجابة وحلها بنفسك. مع التقدم في الدروس سوف تتعرف على مفاهيم أكثر وتصبح قادرا أكثر على حل المشاكل كما أنه سوف يتم مراجعة ما تعلمته سابقا.
  19. وعليكم السلام ورحمة الله, إن ما تعمله في عمل تمارين فهذا شيء صحيح ولا يوجد فيه غلطات لكن أن تعتمد على حل الذكاء الصناعي في البدايات فهو شيء خاطئ فعندما تعتمد عليه بشكل كبير فإن مهارة المنطق البرمجي لا تتطور عندك وفي حال عدم تطور هذه المهارة فإنه من الصعب عمل مشاريع. حاول أن لا تحل تمارين الا في مستواك ولا تصعب جدا الاسئلة ولا تعتمد على الذكاء الصناعي إلى أن تصبح قادرا على حل المشاكل وهي مرحلة متقدمة نوعا ما.
  20. أولا يجب علينا ايزاح معلومة. في عالم البرمجة المهم هو كفائة المشاريع وليس عددها فما الفائدة من عشرات المشاريع ان كانت لا تعمل بشكل صحيح ولا تهدف لعمل شيء معين وحل مشكلة واقعية؟ بل نكتفي بعدة مشاريع لكن تكون كبيرة وقوية ومفيدة. أما بالنسبة للمشاريع الكثيرة التي نعملها بشكل عام فيمكن عمل مشاريع عديدة ان كنا نتدرب عن شيء معين ولا يحتسب هذا كمشروع بل يحتسب كتدريب والتعلم على جزئية معينة. نصيحتي هي البدء بالتدرج فمثلا: بمستواي الحالي ماذا يمكنني أن افعل من مشروع؟ فأحاول عمل هذا المشروع ولكن اضيف اليه مزايا صعبة وذلك لان عمل مشروع أقدر عليه وتكرر لا يقوي من مهاراتنا بل يجب أن أضيف عليه تحديات اليه وبمواجهة هذه الصعوبات والتحديات نتطور بشكل أكثر. ثانيا من الغير عقلاني عمل مشروع صعب علي جدا ولا نفقه فيه شيئا فسوف نتعقد ويصيبنا الاحباط لأننا عملنا مشروع ولم أقدر إكماله لصعوبته. الحل هو التدريج فنبدأ بمشروع أصعب من ما نعرفه لزيادة التحديات ولكي نتعلم لكن لا يكون مستحيل علينا . بعد انهاء هذا المشروع نعمل مشروع أكبر منه وأصعب بحكم أننا تعلمنا من المشروع السابق ونضيف اليه تحديات صعبة لنا لكي نتطور أكثر. وبعد عدة مشاريع سيكون لدينا قدرة أن نعمل المشروع الصعب والكبير جدا الذي لم نقدر عليه في البداية لأننا تطورنا من المشاريع السابقة. وهكذا نستمر في التعلم في عالم البرمجة.
  21. أولا فلنشرح الدوال: Promise.all() هي دالة تأخذ مصفوفة من الوعود (Promises) وتنتظر أن تكتمل كلها. ثم ترجع مصفوفة تحتوي على نتائجها بنفس الترتيب. Object.assign() هو دالة لدمج الكائنات في كائن واحد. results = [ { smartphones: [...] }, { laptops: [...] }, ... ] بعد استخدام Object.assign() سوف يكون كالتالي: { smartphones: [...], laptops: [...], ... } لاحظ انه تم دمج جميع الكائنات. فلنشرح الشيفرة: أولا لدينا معلومات أولية تحتوي على المعلومات الخاصة بانواع المنتجات categoryData وهي مصفوفة. ثم لدينا حالة product state وهو الكائن التي سيحتوي على البيانات التي سوف نأخذها من الواجهة البرمجية API وقيمته الاولية كائن فارغ. عملنا useEffect ولهذا لانه نريد أن نجلب البيانات وعادة عند جلب البيانات نستخدمها وهي تستخدم لانها سوف تنفذ مرة واحدة فقط عند جلب البيانات وهكذا نستعمل useEffect . لدينا دالة fetchPrduct مهمتها اخذ البيانات من ال API وتم استخدام map مع Promise.all لأنه لدينا اكثر من منتج وكل منتج نريد ان نأخذ معلوماته يتطلب طلب API خاص فيه. فلذلك اخذنا أسماء المنتجات وعملنا عليها mapping مما اخذنا اسم كل منتج منفصلا وعملنا عليه طلب API ووظيفة all هنا انها سوف ترجع المعلومات لنا واحدة تلو الأخرى. ومن ثم في Object.assign() دمجنا كل الكائنات المحتوية على المعلومات المرادة في كائن واحد ومن ثم: setProduct(productsData); عينا قيمة الكائن الذي سيحتوي على البيانات بالكائن الذي دمجناه أي يعني المعلومات المرادة. ومن ثم طبعنا الناتج.
  22. يكون الامتحان هو بعد إنهاء 4 مسارات من الدورة على الأقل، أو الدورة بالكامل عليك رفع المشاريع التي قمت بها الدورة على حسابك في github، ثم التحدث لمركز المساعدة وإخبارهم أنك تريد التقدم للإختبار وتوفير روابط المشاريع على github. ثم ستنتظر الى ان يعطوك رد. الاجرائات هي: إجراء محادثة صوتية لمدة 30 دقيقة يطرح المدرب عليك أسئلة متعلقة بالدورة والأمور التي نفذتها خلالها. يحدد لك المدرب مشروعا مرتبطا بما قمت به أثناء الدورة لتنفيذه خلال فترة محددة. إجراء محادثة صوتية أخرى لمدة 30 دقيقة يناقش بها مشروعك وما نفذته وتطرح أسئلة خلالها. إن كانت الخطوات السابقة صحيحة، تحصل على الشهادة أو يصحح لك المدرب اخطائك ويطلب منك تعديلات. بالنسبة للدورة فمن الأفضل اكمالها كامل لان سوق العمل تنافسي جدا.
  23. وعليكم السلام, ان كنت بحاجة الى عمل في اقرب وقت فنعم يمكنك الانتقال من دورة علوم الحاسوب الى دورة واجهات المستخدم فحيث انه بعد تعلم الدورة والامتحان والحصول على الشهادة فان فريق حسوب يساعدك في العثور على عمل خلال ست اشهر ودورة واجهة تطوير المستخدم سوف نركز كثيرا على التصميم وتطبيقات ال Front-end. لكن ان كنت لست في عجلة من امرك فانا انصحك بالاستمرار لان دورة علوم الحاسوب تقويك في المجال وتجعلك متميز عن الاخرين حيث ان الشخص الذي لديه أساسيات وقوي في مجاله فإن لديه فرص أكبر في السوق فبعض الأشخاص يكون فاهم لغة معينة واطار عمل معين ولكنه ليس فاهم الأساسيات القوية مما تساعده على الإنتقال من تكنولوجية الى الاخرى او من لغة الى لغة أخرى وهذا شيء سيء.
  24. في الواقع لا فالمشاريع الصغيرة جدا ان المنطقي هو استخدام الDOM وذلك لعدة اسباب: ان كانت صفحتي هي عبارة عن صفحة هبوط فقط مثلا أي يعني انها تحتوي على بعض المعلومات فقط فلا تحتاج الى تعقيدات رياكت. في الصفحات التي لا تتطلب Backend ايضا فلا يوجد في صفحتنا الى عبارة عن HTML و CSS والقليل من جافاسكريبت. قد يختصر علينا الوقت بدل من تنصيب React. قد يكون ارخص في الاستضافة فيمكنك استضافة ملفات ال JS حتى في github pages ولا داعي للتعاقيد الزائدة. فالأمر يعتمد على الموقع وعلى ما تخطط أن تفعله وعلى اساس موقعك نختار ما نريد. خاصية الاختيار لا تنطبق على اختيار رياكت من DOM فقط بل في عالم تطوير البرمجيات تستخدم بكثة مثل إختيار اي لغة لل Backend. فقد تكون بعض اللغات مناسبة اكثر من بعض اللغات على حسب نوعية المشروع وعلى ما نريد تحقيقه فغالبا بعض اللغات تحتوي على مكتبات جاهزة تساعدنا على التطوير اسرع بينما بعضها تكون امنة اكثر وعليها يستخدم على حسب نوع مشروعنا. مثال بسيط: في الصفحات البسيطة جدا في ال Frontend يتم استخدام Wordpress ولذلك لتقليل العمل والجهد.
  25. إن اصدار بايثون قد لا يفرق كثيرا لكن الأمر يعتمد على ما تريد فعله. فان كنت مبتدئ فيجب عليك تحميل اخر نسخة ثابتة موجودة في موقع تنزيل بايثون: يمكنك الضغط هنا. لكن ان كان لديك هدف اخر فسوف تضطر الى تحميل حسب رغبتك وحسب ما تريد استعماله والسبب الذي تريد أن تحمل فيه اصدار أٌقدم.
×
×
  • أضف...