-
المساهمات
20373 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
495
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Mustafa Suleiman
-
ما قصدته هو إختبار الخادم الذي قمت برفعه على الاستضافة وليس الخادم المحلي، أي إرسال طلب لعنوان الخادم على الاستضافة وليس localhost في حال ظهرت مشكلة cors قم بتعديل الكود للسماح بجميع الطلبات من أي مصدر مؤقتًا لتفقد ما المشكلة: app.use(cors()); app.use(cors()) تضع رأس الاستجابة Access-Control-Allow-Origin: * لإخبار المتصفح أن أي موقع ويب مسموح له بالوصول إلى الخادم.
-
ستحتاج إلى بعض الوقت لاكتساب خبرة نشر المشاريع على الاستضافة، ستواجهك مثل تلك المشاكل في البداية وستتعلم منها. قبل أي شيء، هل الخادم يعمل بشكل سليم؟ قم بإختباره عن طريق postman بإرسال طلب إلى رابط الاستضافة، وفي حال لم يعمل تفقد رسائل الخطأ التي تظهر على الاستضافة من خلال لوحة التحكم
-
مدة الإنقطاع كبيرة، ستحتاج إلى المراجعة من البداية وستكون سريعة في تلك المرة لأنك قمت بالدراسة من قبل، ثم يجب مباشرًة التطبيق على مشروع عملي لتثبيت ما تعلمته ولا مشكلة في إعادة المشروع الخاص بالمسار أو مشروع غيره. وفي حال الإنشغال مرة أخرى، حاول تخصيص ساعتين على الأقل للدراسة بشكل شبه يومي، تنظيم الوقت هو الأهم أثناء الدراسة الجامعية. ولا تقم بدراسة الدورة من البداية في كل مرة تنقطع بها، مثلاً أنهيت نصفها، هنا تستطيع إعادة تنفيذ مشروع عملي قمت به بالدورة وإعادة مراجعة النقاط التي لا تتذكرها جيدًا.
- 6 اجابة
-
- 1
-
-
ما هي مدة الإنقطاع وما هي الدورة التي كنت تدرسها؟ وما هو الوقت المتاح لك للدراسة بشكل يومي؟ في البداية الاستمرارية هامة جدًا، وذلك حال تعلم أي شيء في الحياة، في البداية تحتاج إلى الاستمرارية لاكتساب المهارة، كالطفل الذي يتعلم المشي يحاول باستمرار ويفشل ويحاول، لو توقف عن المحاولة وظل قاعدًا لن يتعلم المشي، أيضًا أصل الإنسان النسيان ويوجد ما يسمى منحنى النسيان. بداية تخزين المعلومات، يكون الاسترجاع سهلًا، ولكن مع مرور الوقت، يتلاشى الاسترجاع ويصبح أصعب، ويعني منحنى النسيان أن هناك فترة تتلاشى خلالها المعلومات بشكل سريع في البداية، ولكن مع مرور الوقت، يصبح معدل النسيان أقل وأقل، ويتم الحفاظ على الجوهر الأساسي للمعلومات المهمة. فبعد مرور يوم واحد من التعلم، هناك انخفاض في الاسترجاع الدقيق للمعلومات، ويعتمد مدى النسيان على عوامل مثل طبيعة المعلومات ومدى تكرارها وأهميتها بالنسبة للشخص تتراوح نسبة النسيان بعد مرور يوم واحد بين 20% إلى 40% من المعلومات. وبعد 3 أيام من 50% إلى 70% وبعد مرور أسبوع ترتفع النسبة إلى 70% وحتى 90%، وذلك في حال لم تقم بإعادة تكرار ما تعلمته وذلك من خلال تنفيذ مشاريع للتطبيق على ما تعلمته وتثبيت المعلومات واستخدام ما سبق وتعلم أمور جديدة. لذا تحتاج إلى إعادة الدراسة من البداية والإنتظام قدر الإمكان بتخصيص وقت كل أسبوع لو كنت مشغولاً، أو يوميًا لو لديك القدرة على ذلك بحد أدنى ساعتان. في حال انشغلت وتوقفت، فعلى الأقل حاول أسبوعيًا إعادة كتابة التمارين التي قمت بها في الدورة أو تنفيذ تمارين جديدة، أو محاولة استرجاع ما تعلمته في كل مسار لكي لا تنسى، ثم استكمال الدورة عند القدرة على ذلك.
- 6 اجابة
-
- 1
-
-
الأمر ليس متعلق بجوجل، بل بلغات البرمجة الأساسية المشتق منها أغلب لغات البرمجة وهي Java، وC#، وC++ والتي اعتمدت ذلك التنسيق منذ بداياتها، وبالتبعية جوجل تستخدم تلك اللغات بكثافة، لذا تبنت الـ Style Guides أو الأسلوب الخاص بتلك اللغات، لكونها الممارسات الأفضل التي أثبتت فعاليتها على مر السنين. وبالطبع ليس فرضًا على الجميع استخدامه، فالأمر يعتمد بشكل أساسي على اللغة المستخدمة في المشروع، حيث كل لغة برمجية لها مجتمعها واصطلاحاتها الخاصة، واتباع اصطلاحات اللغة هو الممارسة الأفضل. فبايثون مثلاً لديها style guide خاص بها وهو PEP والذي يوصي بـ CapWords أي CamelCase لأسماء الأصناف، وsnake_case للمتغيرات والدوال. ولغتي Java و C# تعتمد على CamelCase لأسماء الأصناف هو قاعدة شبه مقدسة ولا يُنصح بخرقها، بينما Ruby تستخدم CamelCase للأصناف والوحدات، وsnake_case للدوال والمتغيرات. Rust أيضًا تستخدم CamelCase للأنواع (structs, enums) وsnake_case للدوال والمتغيرات.
- 4 اجابة
-
- 1
-
-
لا يوجد أي شرح للرياضيات بالدورة، لذا ستحتاج إلى دراسة أساسيات الرياضيات من أجل استيعاب الشرح بشكل أفضل، أرجو التوجه لليوتيوب ودراسة الأساسيات وتستطيع دراسة الدورة بدونها لا مشكلة، لكن ستواجه صعوبة في استيعاب المفاهيم وما يحدث في الخلفية، لكن الأساسيات فقط، فالتعمق سيستغرق وقت وستفقد الحماس والدافع، والكثير من المفاهيم الرياضية لن تحتاجها فعليًا. لذا في البداية خصص شهر لدراسة الرياضيات، ودراسة التالي: ابدء بالجبر الخطي ودراسة المصفوفات، العمليات الأساسية، الضرب النقطي. ثم التفاضل ودراسة المشتقات، قاعدة السلسلة، التدرج. ثم الإحصاء ودراسة المتوسط، الانحراف المعياري، التوزيعات الأساسية بعد ذلك كلما واجهتك مفاهيم رياضية، توقف وادرسها، ففي درس التصنيف باستخدام أشجار القرار Decision Trees مثلاً، ستحتاج إلى دراسة أساسيات الاحتمالات البسيطة واللوغاريتمات ومفهوم المجموع Summation Notation. ستجد تفصيل هنا:
- 7 اجابة
-
- 1
-
-
الفكرة الأفضل هي النابعة من مشكلة حولك في بيئتك، سواء واجهتيها أنتي أو أفراد آخرين، حتى لو كانت الفكرة بسيطة، المهم في مشروع التخرج هو تحقيق إفادة مجتمعية وليس تكرار نفس المشاريع المستهلكة والقوالب الجاهزة، في حال لم تصلي لفكرة اسألي من حولك سواء زملائك أو أصدقاءك. حتى لو كانت الفكرة بسيطة، المهم أنها فريدة وتخدم مشكلة موجودة بالفعل، ستجدي أنها لاقت قبول واهتمام على عكس المشاريع التي ستجديها في كل مكان كأفكار. ولا مشكلة في توظيف الذكاء الاصطناعي بالمشروع.
-
الدورة ليس تخصصها مجال تحليل البيانات، ما ستتعلمه بها هو جزء كبير من الأساسيات اللازمة لذلك المجال، بعد ذلك ستحتاج تعلم أساسيات برنامج الـ Excel، وبالأخص دوال ومعادلات SUM, AVERAGE, VLOOKUP, INDEX, و MATCH. ثم دورة لتعلم الإحصاء والإحتمالات، سواء من Khan Academy أو من مصادر أخرى، ثم دورة أخرى متخصصة في تحليل البيانات باستخدام برنامج الـ Excel. ثم تعلم قواعد البيانات ولغة الـ SQL وقد تعلمت ذلك بالدورة بالفعل، لكن ستحتاج إلى تعلم SQL for Data Analytics للتعمق قليلاً والتعرف على مفاهيم متقدمة منها JOINs بأنواعها، GROUP BY, Window Functions, Subqueries, CTEs، وللعلم معظم مقابلات العمل لمحللي البيانات تتضمن أسئلة SQL متقدمة. الخطوة التالية هي تعلم أحد برامج التحليل والتصوير المرئي للبيانات مثل Power BI أو Tableau أو Google Looker Studio، وبالطبع الأفضل برنامج Power BI فهو المطلوب في سوق العمل. كما أنه يجب عليكِ الاستمرار في التطبيق بكثافة على بيانات حقيقية لتحليلها كلما تقدمت في المسار التعليمي، ومن أشهر المواقع التي يمكنك الحصول منها على بيانات لتقم بتحليلها هو موقع Kaggle الشهير، ولديك أيضًا Data.gov. للتبسيط الصورة التالية جيدة: وفي المرحلة المتقدمة ستحتاج إلى دراسة تعلم الآلة، وذلك ما ستتعلمه بالدورة بالفعل، بالتالي تحتاج إلى دراسة القليل خارج الدورة فيما يخص الأساسيات. ستجد هنا تفصيل لما تحتاجه: https://roadmap.sh/data-analyst
-
لا حاجة إلى ذلك، في حال الجهاز ضعيف جدًا فمن الأفضل تحسينه حال الاستطاعة، لكن لو مواصفاته جيدة لا مشكلة، للتطبيقات التي تطلب كرت شاشة قوي أو معالج قوي استخدم منصة جوجل كولاب التي استخدمناها بالدروس، ولديك منصة Kaggle أيضًا. فالبرمجة لا تحتاج إلى إلى مواصفات مرتفعة، فحاسوب أو لابتوب بمواصفات حديثة سيفي بالغرض والأفضل حاسوب، ما تحتاج إلى التركيز عليه، هو رامات بحجم 16 جيجابايت على الأقل،فالنظام يستهلك ما بين 3 إلى 4 جيجا، والبقية للبرامج وخلافه، لذا حاليًا 8 جيجابايت للرامات غير كافية، كذلك ستحتاج إلى هارد NVMe SSD بحجم 256 جيجابايت على الأقل وتثبيت النظام عليه، فحاليًا HDD لم يعد مناسب لأنظمة التشغيل، فحتى لو مواصفات الحاسوب لديك مرتفعة ستجد بطيء بسبب وحدة التخزين القديمة وسرعة الكتابة والقراءة المنخفضة. وبالنسبة للمعالج ركز على معالج متعدد الأنوية وبمعمارية حديثة، وكرت الشاشة NVIDIA RTX 3060 إن استطعت ولا مشكلة في كرت شاشة أقل مناسب لميزانيتك واعتمد على جوجل كولاب.
- 2 اجابة
-
- 1
-
-
ستجد ضمن شروط استخدام المنصة ما يلي: رفع نماذج أعمال منسوخة من بائع أو موقع آخر، أو مولدة بالذكاء الاصطناعي، حيث يجب على البائع إضافة نماذج أعمال من تصميمه حصراً في الخدمات التي تتطلب ذلك مثل خدمات التصميم بكافة أنواعه. يجب أن تكون الخدمة ووصفها ونماذج الأعمال من إبداع البائع وغير منسوخة من أي مكان آخر لذا يجب إضافة أعمال نابعة من إبداعك أنت وتجنب استخدام القوالب الجاهزة. الأفضل قراءة التالي: https://khamsat.com/terms
-
دائمًا يجب إجراء تقسيم التدريب والاختبار على مستوى السجل ككل بمعنى العميل، الزلزال، المريض، المنتج، وليس على مستوى السجل الفرعي. فخلط وتقسيم جميع التسجيلات 1000 زلزال * 3 تسجيلات على الأقل = 3000+ تسجيل، سيؤدي إلى أن تسجيلات نفس الزلزال ستكون في التدريب والاختبار، وسيتعلم النموذج الخصائص الفريدة لزلزال معين، الأمر الذي يسمح له بالغش، وسيحقق أداء جيد بشكل مصطنع عند اختباره على تسجيل آخر لنفس الزلزال. بينما الصحيح هو، لدينا قائمة بـ 1000 زلزال فريد، نقوم بتقسيمها إلى 800 زلزال للتدريب و 200 زلزال للاختبار، ثم نضع التسجيلات المرتبطة بـ 800 زلزال في مجموعة التدريب. وجميع التسجيلات المرتبطة بـ 200 زلزال نضعها في مجموعة الاختبار. لذا طالما البيانات هرمية أو مجمعة، فيجب أن يكون التقسيم على مستوى المجموعة ككل لضمان عدم وجود أي تداخل للمعلومات بين مجموعتي التدريب والاختبار.
- 4 اجابة
-
- 1
-
-
ليس هو الأساس بالطبع، لكن يجب أن يكون المشروع بتصميم مقبول قابل للاستخدام من قبل أشخاص آخرين، فأنت في النهاية مطور واجهة أمامية أو Full-stack حسب التخصص الذي اخترته، لذا الواجهة الأمامية من اختصاصك وبالطبع التصميم ليس من اختصاصك لكن على الأقل استخدم مكونات جاهزة أو قم بالاستلهام من تصاميم جاهزة. أنصحك بالإطلاع على المقالات التالية: ثم نأتي لخطوة استلهام التصميم، والتي تتطلب تغذية بصرية لإختيار أشكال الأقسام في موقعك من عدة تصاميم مختلفة أي تجميع التصميم من خلال عدة تصاميمـ، وقد تصادف تصميم مناسب للفكرة التي تريد تنفيذها ولا مشكلة في ذلك لكن حاول التعديل عليه قليلاً أو ذكر أنك لم تقم بتصميم الجزء الخاص بالـ UI/UX بل كتبت الكود فقط لحفظ الحقوق، وستجد مواقع كثيرة لاستلهام التصميم هنا: وبخصوص الألوان أنصحك بالإعتماد على الموقع التالي في البداية فهو يوفر لك قوالب للألوان لتختار من بينها: https://www.happyhues.co/ والموقع التالي أيضًا: https://coolors.co/palettes/trending وبالنسبة للمكونات: https://ui.shadcn.com/ https://www.hyperui.dev/ https://flowbite.com/docs/getting-started/introduction/ ومع الوقت ستتحسن لديك مهارة التصميم من خلال التغذية البصرية والتطبيق، ولكن أنصحك بتعلم أساسيات تصميم واجهة المستخدم فيما بعد فهو أمر ضروري لمطور الواجهات الأمامية، وذلك من خلال القنوات التالية: Ahmad Sekmani Anas Rafaat | أنس رأفت وستجد معلومات مفيدة هنا أيضًا:
-
اسم المجال الذي تقصده هو robotics engineering، وبرمجة عقل الروبوت تعني التركيز على الجزء البرمجي الذي يتحكم في اتخاذ القرارات، التعلم، التفاعل مع البيئة، وتنفيذ المهام، وذلك يشمل مجالات مثل الذكاء الاصطناعي AI، تعلم الآلة Machine Learning، الرؤية الحاسوبية Computer Vision، ومعالجة اللغة الطبيعية NLP، وهي كلها جزء من الدورة بالأكاديمية. ستجد هنا تفصيل بخصوص الـ Roadmap اللازمة لذلك المجال: https://github.com/h9-tect/AI-Roadmaps/blob/main/robotics-ai-roadmap.md أي هندسة الروبوتات في جوهرها هي هندسة عملية بناء وتصميم نظام معقد، لذا يجب أن تصبح Software Engineering في المقام الأول وذلك بدراسة أساسيات الـ Computer Science ثم تعلم لغة بايثون وC++ ثم دراسة أساسيات الرياضيات. ثم دراسة متعمقة في الذكاء الاصطناعي فيما بعد.
-
أرجو الاستفسار أسفل الدرس في التعليقات عن الطريقة المماثلة في نظامك وسيتم توضيحها لك، فالأمر يختلف حسب المطلوب تنفيذه في كل درس. ستجد صندوق تعليقات كما هنا أسفل كل درس في نهاية الصفحة.
-
هل تظهر الصور بصيغة JSON عند التوجه للرابط: https://image-gallery-llmy3g4pa-zen-allahams-projects.vercel.app/api/images في حال لم تظهر، فيجب استخدام useEffect لجلب الصور، ولكن في حال المكون هو Server Component فتستخدم دالة غير متزامنة async لجلب الصور من الـ api كذلك في next.config.js أضف التالي: /** @type {import('next').NextConfig} */ const nextConfig = { images: { domains: ['res.cloudinary.com'], }, } module.exports = nextConfig للسماح لمكون Image من Next.js لتحميل صور من مصادر خارجية مثل Cloudinary.
-
محتوى المسار تم استبداله في التحديثات الجديدة التي طرأت على الدورة لذا لم يعد حاجة إليه، حيث مسار تطبيق تعلم اللغات باستخدام Next.js وتقنيات الذكاء الاصطناعي يشرح أيضًا أساسيات Next.js
-
أتفهم ما الصعوبات التي تواجهها عند تنفيذ أول مشروع واقعي لك بدون توجيه، وما تمر به حاليًا هو ما ستتعلم منه لاحقًا، أي ذلك الشعور بعدم الأريحية والقلق حاول عدم الإنزعاج منه ولا داعي للقلق ما تمر به طبيعي، عند مواجهة مشكلة لا تقوم بالتركيز عليها فقط، بل دعك منها وفكر في الأسباب أي اعتنق عقلية التفكير المنطقي عند حدوث مشكلة، اعزل الكود الخاص بتلك الميزة وتفقد ما الذي يسبب تلك المشكلة واعمل على جزء جزء كما ذكرت لك هنا: بخصوص الذكاء الاصطناعي، لا يهم ما هي الأداة التي ستستخدمها، المهم هو أن تستوعب ما تقوم به وليس مجرد نسخ ولصق ومحاكاة لما تشاهده دون استيعاب، بحيث تصبح قادر على تنفيذ مشاريع بنفسك أو التطوير على مشروع قائم أو حل المشاكل التي ستواجهك، لذا وظف أي أداة في متناول يديك لتصبح مبرمج أفضل وليس مجرد مستخدم آخر للأداة.
-
مشروع التخرج يتم اسناده إليك لتنفيذه من قبلك فقط، وذلك لقياس مدى استيعابك لما تم تنفيذه في الدورة وأيضًا للحصول على مزايا ما بعد الدورة نتيجة اجتيازك للإختبار كما هو موضح في وصف الدورة، والأمر محاكاة للواقع العملي بحيث يُسند إليك عميل مشروع ويطلب منك تنفيذه، لذا ستكون بمفردك. عند مواجهة مشكلة، توقف عن التفكير بالمشكلة نفسها، وفكر في المنطق المختص بتنفيذ تلك الميزة التي يظهر بها مشكلة، بحيث تعود للبداية: بدءًا من إرسال الطلب لتتفقد المسار هل هو صحيح؟ هل يوجد مشكلة في الملفات أو المجلدات والأسماء الخاصة بها أو مساراتها؟ أو هل الملفات أو المجلدات التي تستخدمها في الكود موجودة بالفعل؟ هل المتحكم يُعالج الطلب بشكل صحيح؟ وهل يوجد مشكلة في المصادقة؟ هل يوجد مشكلة في الاستيرادات؟ سواء غير صحيحة أو مكررة؟ هل قمت بكتابة ميثود أو متغير بشكل غير صحيح أي خطأ في الـ syntax؟ هل مررت قيم غير صحيحة؟ استخدم console.log لتفقد القيم والنتائج ،كذلك try catch وطباعة الخطا في catch من خلال console.log
-
بإمكانك استخدام قالب notion التالي من أجل تنظيم ومتابعة تقدمك الدراسي بالدورات: Course Planner, Schedule & Learning Progress ستقوم بتعديل أسماءء الـ topics بأسماء المسارات الخاصة بالدورة هنا، ثم إضافة الدروس وعند الإنتهاء من درس تُحدده كمُنتهي. أو تستطيع استخدام google keep أو Todoist لتنفيذ نفس الأمر. وبخصوص نصائح لدراسة الدورة، فلم تقم بذكر ما هي الدورة التي قمت بدراستها، وما الغرض من تعلمك للبرمجة؟ وما هو الوقت المتاح لك وما هو عمرك الحالي؟
-
المشكلة ليست في فكرة الـ Hash Table نفسها، بل في دالة التجزئة التي استخدمتها وحجم الجدول الصغير، فالدالة ليست جيدة: short hash = toupper(vocabulary[0]) - 'A'; لأنها تعتمد فقط على الحرف الأول من الكلمة، بالتالي كل الكلمات التي تبدأ بنفس الحرف مثل Apple, Ant, Art, Around وستذهب إلى نفس الـ Bucket أي نفس الخانة في المصفوفة dictionary، وفي اللغة الإنجليزية، هناك حروف تبدأ بها كلمات كثيرة جداً مثل S, T, A وحروف أخرى نادرة كـ X, Z, Q، لذا سيحدث تكتل أي Clustering فبعض الـ Buckets ستحتوي على Linked Lists طويلة جدًا. وعند البحث عن كلمة تبدأ بحرف شائع، ستضطر للمرور على قائمة طويلة، ويصبح أداء البحث يقترب من O(n) في أسوأ الحالات، ويلغي الفائدة من استخدام الـ Hash Table. أيضًا حجم الجدول صغير، فلديك 26 Bucket فقط، وهو عدد قليل جدًا بالنسبة لقاموس ضخم يحتوي على آلاف الكلمات. وبالنسبة للتقسيم فالأفضل للكلمات يعتمد بشكل مباشر على العملية التي تتم على الكلمات أي دالة التجزئة، والجيد منها يعمل على توزيع الكلمات بشكل عشوائي ومتساوٍا قدر الإمكان على جميع الـ Buckets المتاحة، ولفعل ذلك يجب أن تضع في الاعتبار الكلمة بأكملها، وليس فقط الحرف الأول. بيحث نفس الكلمة يجب أن تعطي نفس قيمة الـ Hash في كل مرة، وتعتمد على كل حروف الكلمة وأي تغيير بسيط في الكلمة مثل cat و car يؤدي إلى قيمة Hash مختلفة. وأن توزع الكلمات بشكل متساوٍا على الـ Buckets المتاحة لتجنب التكتل. مثال بسيط للتوضيح مع الوضع في الإعتبار ما سبق، وهي دالة تستقبل مجموع قيم ASCII لكل الحروف في الكلمة. unsigned int hash(const char* word, unsigned int N) { unsigned int sum = 0; for (int i = 0; word[i] != '\0'; i++) { sum += word[i]; } return sum % N; } لكن ما زالت ليس جيدة كفاية، فالكلمتان cat و act لهما نفس الحروف وبالتالي ستحصلان على نفس قيمة الـ Hash وذاك يسمى تصادم - Collision. وذلك ما تم تحسينه في الدالة التالية: unsigned int hash_djb2(const char *word, unsigned int N) { unsigned long hash_value = 5381; int c; while ((c = *word++)) { hash_value = ((hash_value << 5) + hash_value) + c; } return hash_value % N; } توفر قيم مختلفة لكلمتي cat و act، وستوزع الكلمات بشكل ممتاز. بعد الدالة السابقة لم يعد من المنطقي استخدام جدول بحجم 26 فقط، فلو القاموس يحتوي على 140,000 كلمة، فالأفضل استخدام جدول بحجم كبير لتقليل احتمالية التصادمات وجعل القوائم المتصلة قصيرة جدًا. أي بدلاً من تعريف الجدول هكذا: #define ALPHABETS 26 node* dictionary[ALPHABETS] = {NULL}; نقوم بتعريفه بحجم أكبر بكثير، وكقاعدة عامة حجم الجدول يكون عدد أولي قريب من عدد العناصر التي تتوقع تخزينها أو أكبر، لأنّ استخدام عدد أولي يساعد في تحسين التوزيع عند استخدام عملية باقي القسمة %. #define N_BUCKETS 10007 node* dictionary[N_BUCKETS] = {NULL}; وبالتالي بدلاً من حساب الـ Hash بناءًا على الحرف الأول، نستخدم الدالة الجديدة: for (int i = 0; i < n_of_words; i++) { string vocabulary = get_string("Word: "); // بدلاً من // short hash = toupper(vocabulary[0]) - 'A'; unsigned int hash_index = hash_djb2(vocabulary, N_BUCKETS); insert_node(&dictionary[hash_index], vocabulary); }
- 3 اجابة
-
- 1
-
-
في البداية كل ما تحتاجه بخصوص github هي الأساسيات، والأمر ليس بالصعوبة التي تتصورها، فالأمر يبدوا أنه معقد لكن على العكس تمامًا بعد أن تستوعب الأساسيات. ببساطة، Git نظام للتحكم في الإصدارات Version Control أي هو التقنية أو النظام نفسه، بينما GitHub منصة سحابية أي استضافة للمشاريع باستخدام Git أي منصة سحابية لاستضافة المشاريع. وستقوم بإنشاء مستودع Git محلي على حاسوبك، ثم دفع أي رفع المشروع إلى المستودع البعيد remote على github. وهناك مصطلحات ضرورية وهي: Repository مستودع والمقصود به هو مجلد المشروع. Commit يعني حفظ التغييرات مع رسالة تصف ما قمت به. Branch فرع وهو نسخة موازية لمستودع المشروع تستطيع به إنشاء نسخة منفصلة عن المشروع. Pull Request يعني طلب دمج التغييرات مع ما هو موجود في مستودع المشروع. Clone نسخ المشروع من مستودلجهازك Fork: نسخ مشروع شخص آخر لحسابك وخطوات التثبيت والإعداد لـ GIT على حاسوبك، وستجدها هنا: بجانب الأوامر الأساسية،وهي إنشاء مستودع جديد محلي على حاسوبك: git init git add . git commit -m "first commit" و git push لرفع التغييرات للسحابة على منصة github. وهناك أوامر أخرى من الأفضل الإلمام بها لحين الحاجة:
-
كمطور واجهة أمامية فذلك الجزء ليس من اختصاصك بل من اختصاص مصمم واجهات المستخدم، لكن يجب الإلمام بالأساسيات الخاصة به لتصبح قادر على التعديل متى أردت وإبداء رأيك في التصميم واقتراح أمر ما على المصمم من وجهة نظرك، أو حتى تصميم واجهة جيدة عند العمل على مشاريعك، ستفاجيء بمقدار التحسن في تصميم الواجهة الذي تقوم به في مشروع خاص بك عند الإلمام بالأساسيات أي على دراية بما تقوم به وليس بشكل عشوائي. أيضًا عند العمل على مواقع العمل الحر، ستضطر أحيانًا إلى تصميم وتطوير المشروع بنفسك، لذا يجب أن تكون على جاهزية لتنفيذ المطلوب وبالطبع هناك تكلفة إضافية بجانب البرمجة. على الأقل تعلم ما يلي: التسلسل الهرمي البصري Visual Hierarchy وهو ترتيب العناصر لتوجيه عين المستخدم إلى الأهم أولاً. التباين Contrast الخاص باستخدام الألوان والأحجام والأوزان لجعل العناصر قابلة للقراءة والتمييز. المساحة البيضاء White Space وNegative Space لاستخدام الفراغ لتنظيم المحتوى وتجنب ازدحام الواجهة. المحاذاة Alignment لتنظيم العناصر على شبكة Grid وهمية لجعل التصميم يبدو مرتب ومنظم. التكرار أي إعادة استخدام نفس الأنماط (الألوان، الخطوط، الأزرار) للحفاظ على الاتساق. نظرية الألوان Color Theory لاستيعاب أساسيات تناسق الألوان وكيفية استخدامها للتأثير على شعور المستخدم. Typography لاختيار الخطوط وأحجامها وأوزانها لضمان سهولة القراءة وتحسين تجربة المستخدم. وإليك مصادر لتعلم الأساسيات: وتعلم Figma وأساسيات الـ UI/UX من القنوات التالية: Ahmad Sekmani Anas Rafaat | أنس رأفت
-
في الواقع العملي لا يتم استخدام المصطلحات العربية بالفعل، اللغة الإنجليزية هي لغة البرمجة، لكن الدارسين بالأكاديمية لغتهم الأولى هي العربية لذا المحتوى موجه لهم في المقام الأول ويتم في معظم الدروس توضيح المصطلح بالإنجليزية أيضًا، وفي حال لم يتم ذكر ذلك، أرجو الاستعانة بموسوعة حسوب وابحث عن المصطلح وستجده بالعربية والإنجليزية. وفي حال واجهت صعوبة في استيعاب مصطلح ما، تستطيع الاستفسار أسفل الدروس وسيتم توضيحه لك، ويجب معرفة المصطلح بالعريبة والإنجليزية حتى تتمكن من البحث عنه بالرغم من أنّ الإنجليزية أهم بالطبع لكون المصادر أغلبها بالإنجليزية ولن تحتاج العربية إلا في حال شرح أمر ما لشخص آخر أو للفريق وحتى في تلك الحالة يتم استخدام المصطلحات الإنجليزية. وعامًة ستجد مصطلحات متكررة ومستخدمة في أغلب البرمجة ها هي: متغير - Variable: مكان في الذاكرة لتخزين البيانات. نوع البيانات - Data Type: يحدد نوع البيانات التي يمكن تخزينها في المتغير (مثل: نص، عدد صحيح، عدد عشري). عامل - Operator: رمز أو كلمة تستخدم لتنفيذ عملية على البيانات (مثل: + للجمع، - للطرح). تعبير - Expression: مجموعة من المتغيرات والعوامل التي تُرجع قيمة. شرط - Condition: تعبير منطقي يُرجع إما صحيح أو خطأ. جملة - Statement: سطر من التعليمات البرمجية التي تُنفذ مهمة محددة. كتلة - Block: مجموعة من الجمل التي تُنفذ معًا. دالة - Function: مجموعة من التعليمات البرمجية التي تُنفذ مهمة محددة وتُعيد قيمة. معامل - Parameter: قيمة تُمرر إلى دالة عند استدعائها. مصفوفة - Array: مجموعة من البيانات من نفس النوع مخزنة في مكان واحد. حلقة - Loop: تُستخدم لتكرار مجموعة من التعليمات البرمجية عدة مرات. مصفوفة ترابطية - Associative Array / Dictionary: مجموعة من البيانات مخزنة كأزواج من المفتاح والقيمة. كائن - Object: كيان يجمع بين البيانات والوظائف التي تعمل على هذه البيانات. فئة - Class: قالب لإنشاء الكائنات. وراثة - Inheritance: آلية تسمح لفئة ما بوراثة خصائص وصفات فئة أخرى. تعدد الأشكال - Polymorphism: القدرة على استخدام نفس الاسم لوظائف مختلفة في سياقات مختلفة. ملف - File: مجموعة من البيانات المخزنة على وسيط تخزين دائم. استثناء - Exception: حدث غير طبيعي يحدث أثناء تنفيذ البرنامج. معالجة الاستثناءات - Exception Handling: آلية للتعامل مع الاستثناءات ومنع تعطل البرنامج. وبالنسبة للمصطلحات الخاصة ببايثون: وحدة - Module: ملف يحتوي على تعليمات برمجية بايثون يمكن استخدامه في برامج أخرى. حزمة - Package: مجموعة من الوحدات النمطية. قائمة - List: مجموعة مرتبة من العناصر قابلة للتغيير. مجموعة - Tuple: مجموعة مرتبة من العناصر غير قابلة للتغيير. مجموعة - Set: مجموعة غير مرتبة من العناصر الفريدة. قاموس - Dictionary: مجموعة غير مرتبة من أزواج المفتاح والقيمة. تعليمة استيراد - Import Statement: تُستخدم لاستيراد وحدات أو حزم في البرنامج. ديكوريتور - Decorator: دالة تُعدل سلوك دالة أخرى. مولد - Generator: دالة تُعيد سلسلة من القيم. استدعاء ذاتي - Recursion: عندما تستدعي الدالة نفسها داخل تعريفها. تعبير لامبدا - Lambda Expression: دالة مجهولة تُعرّف وتُستخدم في سطر واحد. استيعاب القائمة - List Comprehension: طريقة لإنشاء قائمة جديدة من قائمة موجودة في سطر واحد. استيعاب المجموعة - Set Comprehension: طريقة لإنشاء مجموعة جديدة من مجموعة موجودة في سطر واحد. استيعاب القاموس - Dictionary Comprehension: طريقة لإنشاء قاموس جديد من قاموس موجود في سطر واحد. إدارة الحزم - Package Management: عملية تثبيت وتحديث وإزالة الحزم. بيئة افتراضية - Virtual Environment: بيئة معزولة لتشغيل مشروع بايثون بتبعياته الخاصة.
- 2 اجابة
-
- 1
-
