diff --git a/translations/ar/1-getting-started-lessons/1-intro-to-programming-languages/README.md b/translations/ar/1-getting-started-lessons/1-intro-to-programming-languages/README.md index e5b535f0c7..10282125ea 100644 --- a/translations/ar/1-getting-started-lessons/1-intro-to-programming-languages/README.md +++ b/translations/ar/1-getting-started-lessons/1-intro-to-programming-languages/README.md @@ -1,8 +1,8 @@ B{Choose Language Level} + + B -->|High-Level| C["🌟 JavaScript/Python
Easy to read and write"] + B -->|Low-Level| D["⚙️ Assembly/C
Direct hardware control"] + + C --> E["📝 Write: fibonacci(10)"] + D --> F["📝 Write: mov r0,#00
sub r0,r0,#01"] + + E --> G["🤖 Computer Understanding:
Translator handles complexity"] + F --> G + + G --> H["💻 Same Result:
0, 1, 1, 2, 3, 5, 8, 13..."] + + style C fill:#e1f5fe + style D fill:#fff3e0 + style H fill:#e8f5e8 +``` ### دعني أريك لماذا اللغات عالية المستوى أكثر ودية -حسنًا، سأريك شيئًا يوضح تمامًا لماذا وقعت في حب اللغات عالية المستوى، لكن أولاً – أحتاجك أن تعدني بشيء. عندما ترى المثال الأول للكود، لا تفزع! من المفترض أن يبدو مخيفًا. هذا هو النقطة التي أريد توضيحها! +حسنًا، سأريك شيئًا يوضح تمامًا لماذا وقعت في حب اللغات عالية المستوى، ولكن أولاً – أحتاجك أن تعدني بشيء. عندما ترى المثال الأول للكود، لا تفزع! من المفترض أن يبدو مخيفًا. هذا هو النقطة التي أريد توضيحها! -سننظر إلى نفس المهمة مكتوبة بأسلوبين مختلفين تمامًا. كلاهما ينشئ ما يسمى تسلسل فيبوناتشي – إنه نمط رياضي جميل حيث كل رقم هو مجموع الرقمين السابقين له: 0، 1، 1، 2، 3، 5، 8، 13... (معلومة ممتعة: ستجد هذا النمط في كل مكان في الطبيعة – دوامات بذور عباد الشمس، أنماط أكواز الصنوبر، حتى طريقة تشكيل المجرات!) +سننظر إلى نفس المهمة مكتوبة بأسلوبين مختلفين تمامًا. كلاهما ينشئ ما يسمى تسلسل فيبوناتشي – إنه نمط رياضي جميل حيث كل رقم هو مجموع الرقمين السابقين: 0، 1، 1، 2، 3، 5، 8، 13... (معلومة ممتعة: ستجد هذا النمط في كل مكان في الطبيعة – دوامات بذور عباد الشمس، أنماط مخروط الصنوبر، وحتى طريقة تشكل المجرات!) -مستعد لرؤية الفرق؟ لنبدأ! +جاهز لرؤية الفرق؟ لنبدأ! **لغة عالية المستوى (JavaScript) – صديقة للإنسان:** @@ -109,10 +195,10 @@ console.log('Fibonacci sequence:'); ``` **ما يفعله هذا الكود:** -- **تعريف** ثابت لتحديد عدد أرقام فيبوناتشي التي نريد إنشاؤها +- **تعريف** ثابت لتحديد عدد أرقام فيبوناتشي التي نريد إنشائها - **تهيئة** متغيرين لتتبع الرقم الحالي والرقم التالي في التسلسل -- **إعداد** القيم الابتدائية (0 و1) التي تحدد نمط فيبوناتشي -- **عرض** رسالة رأسية لتحديد الناتج الخاص بنا +- **إعداد** القيم الأولية (0 و1) التي تحدد نمط فيبوناتشي +- **عرض** رسالة تعريفية لتحديد الناتج ```javascript // Step 2: Generate the sequence with a loop @@ -129,7 +215,7 @@ for (let i = 0; i < fibonacciCount; i++) { **تفصيل ما يحدث هنا:** - **التكرار** عبر كل موقع في التسلسل باستخدام حلقة `for` - **عرض** كل رقم مع موقعه باستخدام تنسيق القالب النصي -- **حساب** الرقم التالي في فيبوناتشي بإضافة القيم الحالية والتالية +- **حساب** الرقم التالي في تسلسل فيبوناتشي بإضافة القيم الحالية والتالية - **تحديث** متغيرات التتبع للانتقال إلى التكرار التالي ```javascript @@ -149,11 +235,11 @@ const fibSequence = generateFibonacci(10); console.log(fibSequence); ``` -**فيما سبق، قمنا بـ:** -- **إنشاء** وظيفة قابلة لإعادة الاستخدام باستخدام صياغة السهم الحديثة -- **بناء** مصفوفة لتخزين التسلسل الكامل بدلاً من العرض واحدًا تلو الآخر +**في المثال أعلاه، قمنا بـ:** +- **إنشاء** وظيفة قابلة لإعادة الاستخدام باستخدام صياغة وظيفة السهم الحديثة +- **بناء** مصفوفة لتخزين التسلسل الكامل بدلاً من عرضه رقمًا برقم - **استخدام** فهرسة المصفوفة لحساب كل رقم جديد من القيم السابقة -- **إرجاع** التسلسل الكامل للاستخدام المرن في أجزاء أخرى من البرنامج +- **إرجاع** التسلسل الكامل لاستخدامه بشكل مرن في أجزاء أخرى من البرنامج **لغة منخفضة المستوى (ARM Assembly) – صديقة للكمبيوتر:** @@ -182,20 +268,21 @@ back add r0,r1 end ``` -لاحظ كيف أن نسخة JavaScript تقرأ تقريبًا كتعليمات باللغة الإنجليزية، بينما تستخدم نسخة Assembly أوامر غامضة تتحكم مباشرة في معالج الكمبيوتر. كلاهما ينجز نفس المهمة، لكن اللغة عالية المستوى أسهل بكثير لفهم البشر وكتابتها وصيانتها. +لاحظ كيف أن نسخة JavaScript تُقرأ تقريبًا كتعليمات باللغة الإنجليزية، بينما تستخدم نسخة Assembly أوامر غامضة تتحكم مباشرة في معالج الكمبيوتر. كلاهما ينجز نفس المهمة، لكن اللغة عالية المستوى أسهل بكثير للفهم والكتابة والصيانة. **الاختلافات الرئيسية التي ستلاحظها:** -- **الوضوح**: JavaScript تستخدم أسماء وصفية مثل `fibonacciCount` بينما Assembly تستخدم تسميات غامضة مثل `r0`، `r1` -- **التعليقات**: اللغات عالية المستوى تشجع على التعليقات التوضيحية التي تجعل الكود ذاتي التوثيق -- **الهيكل**: تدفق JavaScript المنطقي يتطابق مع كيفية تفكير البشر في المشكلات خطوة بخطوة -- **الصيانة**: تحديث نسخة JavaScript لمتطلبات مختلفة أمر بسيط وواضح -✅ **عن سلسلة فيبوناتشي**: هذا النمط الرقمي الرائع (حيث يساوي كل رقم مجموع الرقمين السابقين: 0، 1، 1، 2، 3، 5، 8...) يظهر حرفيًا *في كل مكان* في الطبيعة! ستجده في دوامات عباد الشمس، أنماط أكواز الصنوبر، طريقة انحناء أصداف النوتيلوس، وحتى في كيفية نمو فروع الأشجار. إنه أمر مذهل كيف يمكن للرياضيات والبرمجة مساعدتنا في فهم وإعادة إنشاء الأنماط التي تستخدمها الطبيعة لخلق الجمال! +- **الوضوح**: JavaScript تستخدم أسماء وصفية مثل `fibonacciCount` بينما Assembly تستخدم تسميات غامضة مثل `r0`, `r1` +- **التعليقات**: اللغات عالية المستوى تشجع على كتابة تعليقات توضيحية تجعل الكود واضحًا وسهل الفهم. +- **الهيكل**: التدفق المنطقي للغة JavaScript يتماشى مع الطريقة التي يفكر بها البشر في حل المشكلات خطوة بخطوة. +- **الصيانة**: تحديث إصدار JavaScript لتلبية متطلبات مختلفة أمر بسيط وواضح. + +✅ **حول تسلسل فيبوناتشي**: هذا النمط الرقمي الرائع (حيث يساوي كل رقم مجموع الرقمين السابقين له: 0، 1، 1، 2، 3، 5، 8...) يظهر حرفيًا *في كل مكان* في الطبيعة! ستجده في دوامات عباد الشمس، أنماط أكواز الصنوبر، طريقة انحناء أصداف النوتيلوس، وحتى في كيفية نمو فروع الأشجار. إنه أمر مذهل كيف يمكن للرياضيات والبرمجة مساعدتنا في فهم وإعادة إنشاء الأنماط التي تستخدمها الطبيعة لخلق الجمال! ## اللبنات الأساسية التي تصنع السحر -حسنًا، الآن بعد أن رأيت كيف تبدو لغات البرمجة أثناء العمل، دعنا نحلل العناصر الأساسية التي تشكل كل برنامج تم كتابته على الإطلاق. فكر في هذه العناصر كالمكونات الأساسية لوصفتك المفضلة – بمجرد أن تفهم ما يفعله كل عنصر، ستتمكن من قراءة وكتابة الكود في أي لغة تقريبًا! +حسنًا، الآن بعد أن رأيت كيف تبدو لغات البرمجة أثناء العمل، دعنا نحلل العناصر الأساسية التي تشكل كل برنامج تم كتابته على الإطلاق. فكر في هذه العناصر كالمكونات الأساسية لوصفتك المفضلة – بمجرد أن تفهم وظيفة كل منها، ستتمكن من قراءة وكتابة الكود في أي لغة تقريبًا! -هذا يشبه تعلم قواعد البرمجة. تذكر عندما كنت في المدرسة وتعلمت عن الأسماء والأفعال وكيفية تكوين الجمل؟ البرمجة لها نسختها الخاصة من القواعد، وبصراحة، إنها أكثر منطقية وتسامحًا من قواعد اللغة الإنجليزية! 😄 +هذا يشبه تعلم قواعد البرمجة. تذكر عندما كنت في المدرسة وتعلمت عن الأسماء والأفعال وكيفية تكوين الجمل؟ البرمجة لديها نسختها الخاصة من القواعد، وبصراحة، إنها أكثر منطقية وتسامحًا من قواعد اللغة الإنجليزية! 😄 ### العبارات: التعليمات خطوة بخطوة @@ -227,13 +314,13 @@ document.body.style.backgroundColor = "lightblue"; ### المتغيرات: نظام ذاكرة البرنامج الخاص بك -حسنًا، **المتغيرات** هي واحدة من مفاهيمي المفضلة على الإطلاق للتدريس لأنها تشبه الأشياء التي تستخدمها بالفعل كل يوم! +حسنًا، **المتغيرات** هي واحدة من مفاهيمي المفضلة للتدريس لأنها تشبه الأشياء التي تستخدمها بالفعل كل يوم! -فكر في قائمة جهات الاتصال على هاتفك للحظة. أنت لا تحفظ أرقام الجميع – بدلاً من ذلك، تحفظ "أمي"، "أفضل صديق"، أو "مكان البيتزا الذي يوصل حتى الساعة 2 صباحًا" وتترك هاتفك يتذكر الأرقام الفعلية. المتغيرات تعمل بنفس الطريقة تمامًا! إنها مثل حاويات ذات علامات حيث يمكن لبرنامجك تخزين المعلومات واسترجاعها لاحقًا باستخدام اسم منطقي. +فكر في قائمة جهات الاتصال على هاتفك للحظة. أنت لا تحفظ أرقام الجميع – بدلاً من ذلك، تحفظ "أمي"، "أفضل صديق"، أو "مطعم البيتزا الذي يوصل حتى الساعة 2 صباحًا" وتترك هاتفك يتذكر الأرقام الفعلية. المتغيرات تعمل بنفس الطريقة تمامًا! إنها مثل حاويات مُعلمة حيث يمكن لبرنامجك تخزين المعلومات واسترجاعها لاحقًا باستخدام اسم منطقي. -ما هو رائع حقًا: يمكن أن تتغير المتغيرات أثناء تشغيل البرنامج (ومن هنا جاء اسم "متغير" – هل ترى ما فعلوه هنا؟). تمامًا كما قد تقوم بتحديث جهة اتصال مكان البيتزا عندما تكتشف مكانًا أفضل، يمكن تحديث المتغيرات عندما يتعلم برنامجك معلومات جديدة أو عندما تتغير الظروف! +ما هو رائع حقًا: يمكن أن تتغير المتغيرات أثناء تشغيل البرنامج (ومن هنا جاء اسم "متغير" – هل ترى ما فعلوه هنا؟). تمامًا كما قد تقوم بتحديث جهة اتصال مطعم البيتزا عندما تكتشف مكانًا أفضل، يمكن تحديث المتغيرات عندما يتعلم برنامجك معلومات جديدة أو تتغير الظروف! -دعني أريك كيف يمكن أن يكون هذا بسيطًا بشكل جميل: +دعني أريك كيف يمكن أن يكون هذا بسيطًا وجميلًا: ```javascript // Step 1: Creating basic variables @@ -245,8 +332,8 @@ let isRaining = false; **فهم هذه المفاهيم:** - **تخزين** القيم الثابتة في متغيرات `const` (مثل اسم الموقع) -- **استخدام** `let` للقيم التي يمكن أن تتغير خلال البرنامج -- **تعيين** أنواع بيانات مختلفة: النصوص، الأرقام، والقيم المنطقية (صحيح/خطأ) +- **استخدام** `let` للقيم التي يمكن أن تتغير أثناء تشغيل البرنامج +- **تعيين** أنواع بيانات مختلفة: نصوص، أرقام، وقيم منطقية (صحيح/خطأ) - **اختيار** أسماء وصفية تشرح ما يحتويه كل متغير ```javascript @@ -260,8 +347,8 @@ const weatherData = { **في المثال أعلاه، قمنا بـ:** - **إنشاء** كائن لتجميع معلومات الطقس ذات الصلة معًا -- **تنظيم** قطع متعددة من البيانات تحت اسم متغير واحد -- **استخدام** أزواج المفتاح والقيمة لتسمية كل قطعة من المعلومات بوضوح +- **تنظيم** عدة أجزاء من البيانات تحت اسم متغير واحد +- **استخدام** أزواج المفتاح والقيمة لتسمية كل جزء من المعلومات بوضوح ```javascript // Step 3: Using and updating variables @@ -273,11 +360,11 @@ currentWeather = "cloudy"; temperature = 68; ``` -**لنقم بفهم كل جزء:** +**دعنا نفهم كل جزء:** - **عرض** المعلومات باستخدام القوالب النصية مع صيغة `${}` - **الوصول** إلى خصائص الكائن باستخدام التدوين النقطي (`weatherData.windSpeed`) - **تحديث** المتغيرات المعلنة باستخدام `let` لتعكس الظروف المتغيرة -- **دمج** متغيرات متعددة لإنشاء رسائل ذات معنى +- **دمج** عدة متغيرات لإنشاء رسائل ذات معنى ```javascript // Step 4: Modern destructuring for cleaner code @@ -286,7 +373,7 @@ console.log(`${location} humidity: ${humidity}%`); ``` **ما تحتاج إلى معرفته:** -- **استخراج** خصائص محددة من الكائنات باستخدام التعيين الهيكلي +- **استخراج** خصائص محددة من الكائنات باستخدام التعيين التفكيكي - **إنشاء** متغيرات جديدة تلقائيًا بنفس أسماء مفاتيح الكائن - **تبسيط** الكود عن طريق تجنب التدوين النقطي المتكرر @@ -296,7 +383,7 @@ console.log(`${location} humidity: ${humidity}%`); تخيل هذا: هذا الصباح ربما مررت بشيء مثل "إذا كان الجو ممطرًا، سأحمل مظلة. إذا كان الجو باردًا، سأرتدي معطفًا. إذا كنت متأخرًا، سأترك الإفطار وأحصل على قهوة في الطريق." عقلك يتبع هذه المنطقية الشرطية عشرات المرات كل يوم! -هذا ما يجعل البرامج تبدو ذكية وحيوية بدلاً من مجرد اتباع نص ممل ومتوقع. يمكنها بالفعل النظر إلى موقف، تقييم ما يحدث، والاستجابة بشكل مناسب. إنه مثل إعطاء برنامجك عقلًا يمكنه التكيف واتخاذ الخيارات! +هذا ما يجعل البرامج تبدو ذكية وحيوية بدلاً من مجرد اتباع نص ممل ومتوقع. يمكنها بالفعل النظر في الموقف، وتقييم ما يحدث، والاستجابة بشكل مناسب. إنه مثل إعطاء برنامجك عقلًا يمكنه التكيف واتخاذ الخيارات! هل تريد أن ترى كيف يعمل هذا بشكل جميل؟ دعني أريك: @@ -333,8 +420,8 @@ if (userAge >= 18 && hasPermission) { ``` **تفصيل ما يحدث هنا:** -- **دمج** شروط متعددة باستخدام عامل `&&` (و) -- **إنشاء** تسلسل هرمي للشروط باستخدام `else if` لسيناريوهات متعددة +- **دمج** شروط متعددة باستخدام المشغل `&&` (و) +- **إنشاء** تسلسل هرمي للشروط باستخدام `else if` لعدة سيناريوهات - **التعامل** مع جميع الحالات الممكنة باستخدام عبارة `else` النهائية - **تقديم** ملاحظات واضحة وقابلة للتنفيذ لكل حالة مختلفة @@ -344,8 +431,8 @@ const votingStatus = userAge >= 18 ? "Can vote" : "Cannot vote yet"; console.log(`Status: ${votingStatus}`); ``` -**ما تحتاج إلى تذكره:** -- **استخدام** العامل الثلاثي (`? :`) للشروط ذات الخيارين البسيطين +**ما يجب أن تتذكره:** +- **استخدام** المشغل الثلاثي (`? :`) للشروط ذات الخيارين البسيطين - **كتابة** الشرط أولاً، متبوعًا بـ `?`، ثم النتيجة الصحيحة، ثم `:`، ثم النتيجة الخاطئة - **تطبيق** هذا النمط عندما تحتاج إلى تعيين قيم بناءً على الشروط @@ -370,50 +457,87 @@ switch (dayOfWeek) { } ``` -**هذا الكود يحقق التالي:** -- **مطابقة** قيمة المتغير مع حالات محددة متعددة +**هذا الكود يحقق ما يلي:** +- **مطابقة** قيمة المتغير مع عدة حالات محددة - **تجميع** الحالات المتشابهة معًا (أيام الأسبوع مقابل عطلات نهاية الأسبوع) - **تنفيذ** كتلة الكود المناسبة عند العثور على تطابق - **تضمين** حالة `default` للتعامل مع القيم غير المتوقعة - **استخدام** عبارات `break` لمنع الكود من الاستمرار إلى الحالة التالية -> 💡 **تشبيه واقعي**: فكر في تدفق التحكم كأنك تمتلك نظام GPS الأكثر صبرًا في العالم يقدم لك التوجيهات. قد يقول "إذا كان هناك ازدحام في شارع الرئيسي، خذ الطريق السريع بدلاً من ذلك. إذا كان هناك بناء يحجب الطريق السريع، جرب الطريق ذو المناظر الخلابة." تستخدم البرامج نفس النوع من المنطق الشرطي للاستجابة بذكاء لمواقف مختلفة وتقديم أفضل تجربة ممكنة للمستخدمين. +> 💡 **تشبيه واقعي**: فكر في تدفق التحكم كأنك تمتلك نظام GPS الأكثر صبرًا في العالم يقدم لك التوجيهات. قد يقول "إذا كان هناك ازدحام في شارع رئيسي، خذ الطريق السريع بدلاً من ذلك. إذا كان البناء يغلق الطريق السريع، جرب الطريق ذو المناظر الخلابة." البرامج تستخدم نفس النوع من المنطق الشرطي للاستجابة بذكاء لمواقف مختلفة وتقديم أفضل تجربة ممكنة للمستخدمين. -✅ **ما القادم**: سنستمتع كثيرًا بالغوص أعمق في هذه المفاهيم بينما نواصل هذه الرحلة الرائعة معًا! الآن، ركز فقط على الشعور بالإثارة حول كل الإمكانيات المذهلة التي تنتظرك. المهارات والتقنيات المحددة ستترسخ بشكل طبيعي بينما نتدرب معًا – أعدك أن هذا سيكون أكثر متعة مما تتوقع! +### 🎯 **اختبار المفاهيم: إتقان اللبنات الأساسية** +**دعنا نرى كيف تسير الأمور مع الأساسيات:** +- هل يمكنك شرح الفرق بين المتغير والعبارة بكلماتك الخاصة؟ +- فكر في سيناريو واقعي حيث ستستخدم قرارًا إذا-ثم (مثل مثال التصويت لدينا) +- ما هو الشيء الذي فاجأك بشأن منطق البرمجة؟ -## أدوات العمل - -حسنًا، هذا هو الجزء الذي يجعلني متحمسًا لدرجة أنني بالكاد أستطيع التحكم في نفسي! 🚀 نحن على وشك الحديث عن الأدوات الرائعة التي ستجعلك تشعر وكأنك حصلت للتو على مفاتيح سفينة فضائية رقمية. +**تعزيز سريع للثقة:** +```mermaid +flowchart LR + A["📝 Statements
(Instructions)"] --> B["📦 Variables
(Storage)"] --> C["🔀 Control Flow
(Decisions)"] --> D["🎉 Working Program!"] + + style A fill:#ffeb3b + style B fill:#4caf50 + style C fill:#2196f3 + style D fill:#ff4081 +``` -تعرف كيف يمتلك الطاهي تلك السكاكين المتوازنة تمامًا التي تبدو وكأنها امتداد لأيديهم؟ أو كيف يمتلك الموسيقي تلك الجيتار التي تبدو وكأنها تغني بمجرد لمسها؟ حسنًا، المطورون لديهم نسختهم الخاصة من هذه الأدوات السحرية، وهنا ما سيذهلك تمامًا – معظمها مجاني تمامًا! +✅ **ما القادم**: سنستمتع كثيرًا بالغوص أعمق في هذه المفاهيم بينما نواصل هذه الرحلة الرائعة معًا! الآن، ركز فقط على الشعور بالإثارة بشأن كل الإمكانيات المذهلة التي تنتظرك. المهارات والتقنيات المحددة ستترسخ بشكل طبيعي مع الممارسة – أعدك أن هذا سيكون أكثر متعة مما تتوقع! -أنا متحمس جدًا لمشاركة هذه الأدوات معك لأنها غيرت تمامًا طريقة بناء البرمجيات. نحن نتحدث عن مساعدي البرمجة المدعومين بالذكاء الاصطناعي الذين يمكنهم المساعدة في كتابة الكود (أنا لا أمزح!)، بيئات السحابة حيث يمكنك بناء تطبيقات كاملة من أي مكان مع اتصال واي فاي، وأدوات تصحيح الأخطاء متطورة جدًا لدرجة أنها تشبه امتلاك رؤية بالأشعة السينية لبرامجك. +## أدوات العمل -وهنا الجزء الذي لا يزال يجعلني أشعر بالقشعريرة: هذه ليست "أدوات للمبتدئين" التي ستتجاوزها. هذه هي نفس الأدوات الاحترافية التي يستخدمها المطورون في Google وNetflix واستوديوهات التطبيقات المستقلة التي تحبها في هذه اللحظة. ستشعر وكأنك محترف حقيقي أثناء استخدامها! +حسنًا، هذا هو الجزء الذي يجعلني متحمسًا لدرجة أنني بالكاد أستطيع التحكم في نفسي! 🚀 نحن على وشك الحديث عن الأدوات الرائعة التي ستجعلك تشعر وكأنك حصلت للتو على مفاتيح سفينة فضائية رقمية. +تعرف كيف يمتلك الطاهي تلك السكاكين المتوازنة تمامًا التي تبدو وكأنها امتداد لأيديهم؟ أو كيف يمتلك الموسيقي تلك الجيتار التي تبدو وكأنها تغني بمجرد لمسها؟ حسنًا، المطورون لديهم نسختهم الخاصة من هذه الأدوات السحرية، وإليك ما سيذهلك تمامًا – معظمها مجاني تمامًا! + +أنا تقريبًا أقفز من الكرسي وأنا أفكر في مشاركة هذه الأدوات معك لأنها أحدثت ثورة كاملة في كيفية بناء البرمجيات. نحن نتحدث عن مساعدات برمجية مدعومة بالذكاء الاصطناعي يمكنها المساعدة في كتابة الكود الخاص بك (لست أمزح!)، بيئات سحابية حيث يمكنك بناء تطبيقات كاملة من أي مكان به اتصال واي فاي، وأدوات تصحيح الأخطاء متطورة لدرجة أنها تشبه امتلاك رؤية بالأشعة السينية لبرامجك. + +وهنا الجزء الذي لا يزال يجعلني أشعر بالقشعريرة: هذه ليست "أدوات للمبتدئين" التي ستتجاوزها. هذه هي نفس الأدوات الاحترافية التي يستخدمها المطورون في Google وNetflix واستوديو التطبيقات المستقل الذي تحبه في هذه اللحظة بالذات. ستشعر وكأنك محترف تمامًا أثناء استخدامها! + +```mermaid +graph TD + A["💡 Your Idea"] --> B["⌨️ Code Editor
(VS Code)"] + B --> C["🌐 Browser DevTools
(Testing & Debugging)"] + C --> D["⚡ Command Line
(Automation & Tools)"] + D --> E["📚 Documentation
(Learning & Reference)"] + E --> F["🚀 Amazing Web App!"] + + B -.-> G["🤖 AI Assistant
(GitHub Copilot)"] + C -.-> H["📱 Device Testing
(Responsive Design)"] + D -.-> I["📦 Package Managers
(npm, yarn)"] + E -.-> J["👥 Community
(Stack Overflow)"] + + style A fill:#fff59d + style F fill:#c8e6c9 + style G fill:#e1f5fe + style H fill:#f3e5f5 + style I fill:#ffccbc + style J fill:#e8eaf6 +``` ### محررات الكود وبيئات التطوير المتكاملة: أصدقاؤك الرقميون الجدد -دعنا نتحدث عن محررات الكود – هذه ستصبح حقًا أماكنك المفضلة للتواجد! فكر فيها كملاذك الشخصي للبرمجة حيث ستقضي معظم وقتك في صياغة وإتقان إبداعاتك الرقمية. +دعنا نتحدث عن محررات الكود – هذه ستصبح حقًا أماكنك المفضلة الجديدة! فكر فيها كملاذك الشخصي للبرمجة حيث ستقضي معظم وقتك في صياغة وإتقان إبداعاتك الرقمية. -لكن هنا ما هو سحري تمامًا بشأن المحررات الحديثة: إنها ليست مجرد محررات نصوص فاخرة. إنها مثل وجود أفضل مرشد برمجة بجانبك على مدار الساعة طوال أيام الأسبوع. إنها تلتقط أخطائك الإملائية قبل أن تلاحظها، تقترح تحسينات تجعلك تبدو وكأنك عبقري، تساعدك على فهم ما يفعله كل جزء من الكود، وبعضها يمكنه حتى التنبؤ بما ستكتبه وتعرض إنهاء أفكارك! +لكن إليك ما هو سحري تمامًا بشأن المحررات الحديثة: إنها ليست مجرد محررات نصوص فاخرة. إنها مثل وجود أفضل مرشد برمجة بجانبك على مدار الساعة طوال أيام الأسبوع. إنها تلتقط أخطائك الإملائية قبل أن تلاحظها، تقترح تحسينات تجعلك تبدو كعبقري، تساعدك على فهم ما يفعله كل جزء من الكود، وبعضها يمكنه حتى التنبؤ بما ستكتبه وتقديم اقتراحات لإكمال أفكارك! -أتذكر عندما اكتشفت الإكمال التلقائي لأول مرة – شعرت حرفيًا وكأنني أعيش في المستقبل. تبدأ بكتابة شيء، ويقول محررك، "مرحبًا، هل كنت تفكر في هذه الوظيفة التي تفعل بالضبط ما تحتاجه؟" إنه مثل وجود قارئ أفكار كرفيق برمجة! +أتذكر عندما اكتشفت الإكمال التلقائي لأول مرة – شعرت حرفيًا وكأنني أعيش في المستقبل. تبدأ بكتابة شيء، ومحررك يقول، "مرحبًا، هل كنت تفكر في هذه الوظيفة التي تفعل بالضبط ما تحتاجه؟" إنه مثل وجود قارئ أفكار كرفيق برمجة! **ما الذي يجعل هذه المحررات مذهلة للغاية؟** -محررات الكود الحديثة تقدم مجموعة مذهلة من الميزات المصممة لتعزيز إنتاجيتك: +محررات الكود الحديثة تقدم مجموعة رائعة من الميزات المصممة لتعزيز إنتاجيتك: | الميزة | ما تفعله | لماذا تساعد | -|--------|----------|-------------| +|---------|--------------|--------------| | **تمييز الصياغة** | تلوين أجزاء مختلفة من الكود | يجعل الكود أسهل للقراءة واكتشاف الأخطاء | -| **الإكمال التلقائي** | اقتراح الكود أثناء الكتابة | يسرع البرمجة ويقلل الأخطاء الإملائية | +| **الإكمال التلقائي** | اقتراح الكود أثناء الكتابة | يسرع البرمجة ويقلل الأخطاء | | **أدوات التصحيح** | تساعدك على العثور على الأخطاء وإصلاحها | توفر ساعات من وقت استكشاف الأخطاء | | **الإضافات** | إضافة ميزات متخصصة | تخصيص المحرر لأي تقنية | -| **مساعدي الذكاء الاصطناعي** | اقتراح الكود والتفسيرات | تسريع التعلم والإنتاجية | +| **مساعدات الذكاء الاصطناعي** | اقتراح الكود والتفسيرات | تسريع التعلم والإنتاجية | -> 🎥 **مصدر فيديو**: هل تريد رؤية هذه الأدوات أثناء العمل؟ تحقق من [فيديو أدوات العمل](https://youtube.com/watch?v=69WJeXGBdxg) للحصول على نظرة شاملة. +> 🎥 **مصدر فيديو**: هل تريد رؤية هذه الأدوات أثناء العمل؟ تحقق من هذا [فيديو أدوات العمل](https://youtube.com/watch?v=69WJeXGBdxg) للحصول على نظرة شاملة. #### المحررات الموصى بها لتطوير الويب @@ -421,7 +545,7 @@ switch (dayOfWeek) { - الأكثر شعبية بين مطوري الويب - نظام إضافات ممتاز - محطة مدمجة وتكامل Git -- **الإضافات الضرورية**: +- **الإضافات التي يجب أن تمتلكها**: - [GitHub Copilot](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot) - اقتراحات الكود المدعومة بالذكاء الاصطناعي - [Live Share](https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsliveshare) - التعاون في الوقت الفعلي - [Prettier](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) - تنسيق الكود تلقائيًا @@ -437,52 +561,50 @@ switch (dayOfWeek) { - [Replit](https://replit.com/) - رائع للتعلم ومشاركة الكود - [StackBlitz](https://stackblitz.com/) - تطوير ويب كامل وفوري -> 💡 **نصيحة للبدء**: ابدأ بـ Visual Studio Code – إنه مجاني، مستخدم على نطاق واسع في الصناعة، وله مجتمع ضخم يقدم دروسًا وإضافات مفيدة. - +> 💡 **نصيحة للبدء**: ابدأ بـ Visual Studio Code – إنه مجاني، يستخدم على نطاق واسع في الصناعة، ولديه مجتمع ضخم يقدم دروسًا وإضافات مفيدة. -### متصفحات الويب: مختبرك السري للتطوير +### متصفحات الويب: مختبرك السري لتطوير البرمجيات -حسنًا، استعد لتكون مذهولًا تمامًا! تعرف كيف كنت تستخدم المتصفحات لتصفح وسائل التواصل الاجتماعي ومشاهدة الفيديوهات؟ حسنًا، اتضح أنها كانت تخفي مختبرًا سريًا مذهلًا للمطورين طوال الوقت، فقط في انتظارك لاكتشافه! +حسنًا، استعد لتفاجأ تمامًا! هل تعلم كيف كنت تستخدم المتصفحات لتصفح وسائل التواصل الاجتماعي ومشاهدة الفيديوهات؟ حسنًا، اتضح أنها كانت تخفي مختبرًا سريًا للمطورين مذهلًا طوال الوقت، فقط في انتظار أن تكتشفه! -كل مرة تنقر بزر الماوس الأيمن على صفحة ويب وتختار "Inspect Element"، فإنك تفتح عالمًا مخفيًا من أدوات المطورين التي هي بصراحة أكثر قوة من بعض البرامج المكلفة التي كنت أدفع مئات الدولارات للحصول عليها. إنه مثل اكتشاف أن مطبخك العادي كان يخفي مختبرًا للطهاة المحترفين خلف لوحة سرية! +كل مرة تنقر بزر الفأرة الأيمن على صفحة ويب وتختار "Inspect Element"، فإنك تفتح عالمًا مخفيًا من أدوات المطورين التي هي بصراحة أكثر قوة من بعض البرامج المكلفة التي كنت أدفع مئات الدولارات للحصول عليها. إنه مثل اكتشاف أن مطبخك العادي كان يخفي مختبرًا للطهاة المحترفين خلف لوحة سرية! +أول مرة أظهر لي أحدهم أدوات المطور في المتصفح، قضيت حوالي ثلاث ساعات فقط أضغط هنا وهناك وأقول: "انتظر، هل يمكنها فعل ذلك أيضًا؟!" يمكنك حرفيًا تعديل أي موقع في الوقت الفعلي، رؤية مدى سرعة تحميل كل شيء، اختبار كيف يبدو موقعك على أجهزة مختلفة، وحتى تصحيح أخطاء JavaScript مثل محترف حقيقي. إنه أمر مذهل للغاية! -أول مرة أظهر لي أحدهم أدوات المطور في المتصفح، قضيت حوالي ثلاث ساعات فقط أنقر وأقول "انتظر، يمكنه فعل ذلك أيضًا؟!" يمكنك حرفيًا تعديل أي موقع في الوقت الفعلي، رؤية مدى سرعة تحميل كل شيء، اختبار كيف يبدو موقعك على أجهزة مختلفة، وحتى تصحيح JavaScript مثل محترف حقيقي. إنه مذهل تمامًا! - -**لماذا المتصفحات هي سلاحك السري:** +**إليك لماذا المتصفحات هي سلاحك السري:** عندما تنشئ موقعًا أو تطبيقًا ويب، تحتاج إلى رؤية كيف يبدو ويتصرف في العالم الحقيقي. المتصفحات لا تعرض عملك فقط، بل تقدم أيضًا ملاحظات تفصيلية حول الأداء، إمكانية الوصول، والمشكلات المحتملة. #### أدوات المطور في المتصفح (DevTools) -المتصفحات الحديثة تحتوي على مجموعات تطوير شاملة: +تتضمن المتصفحات الحديثة مجموعات تطوير شاملة: -| فئة الأدوات | ما تفعله | مثال على الاستخدام | -|-------------|----------|--------------------| +| فئة الأداة | ما تقوم به | مثال على الاستخدام | +|------------|------------|--------------------| | **مفتش العناصر** | عرض وتعديل HTML/CSS في الوقت الفعلي | تعديل التصميم لرؤية النتائج فورًا | -| **وحدة التحكم (Console)** | عرض رسائل الخطأ واختبار JavaScript | تصحيح المشكلات وتجربة الأكواد | -| **مراقب الشبكة (Network Monitor)** | تتبع كيفية تحميل الموارد | تحسين الأداء وأوقات التحميل | -| **مدقق الوصول (Accessibility Checker)** | اختبار التصميم الشامل | ضمان عمل موقعك لجميع المستخدمين | -| **محاكي الأجهزة (Device Simulator)** | معاينة على أحجام شاشات مختلفة | اختبار التصميم المتجاوب دون الحاجة إلى أجهزة متعددة | +| **الكونسول** | عرض رسائل الخطأ واختبار JavaScript | تصحيح المشكلات وتجربة الكود | +| **مراقب الشبكة** | تتبع كيفية تحميل الموارد | تحسين الأداء وأوقات التحميل | +| **مدقق إمكانية الوصول** | اختبار التصميم الشامل | ضمان عمل موقعك لجميع المستخدمين | +| **محاكي الأجهزة** | معاينة على أحجام شاشات مختلفة | اختبار التصميم المتجاوب دون الحاجة إلى أجهزة متعددة | #### المتصفحات الموصى بها للتطوير -- **[Chrome](https://developers.google.com/web/tools/chrome-devtools/)** - أدوات تطوير قياسية مع توثيق واسع النطاق +- **[Chrome](https://developers.google.com/web/tools/chrome-devtools/)** - أدوات DevTools معيار الصناعة مع وثائق شاملة - **[Firefox](https://developer.mozilla.org/docs/Tools)** - أدوات ممتازة لشبكة CSS وإمكانية الوصول - **[Edge](https://docs.microsoft.com/microsoft-edge/devtools-guide-chromium/?WT.mc_id=academic-77807-sagibbon)** - مبني على Chromium مع موارد تطوير من Microsoft -> ⚠️ **نصيحة مهمة للاختبار**: قم دائمًا باختبار مواقعك على متصفحات متعددة! ما يعمل بشكل مثالي في Chrome قد يبدو مختلفًا في Safari أو Firefox. المطورون المحترفون يختبرون عبر جميع المتصفحات الرئيسية لضمان تجربة مستخدم متسقة. +> ⚠️ **نصيحة اختبار مهمة**: اختبر دائمًا مواقعك في متصفحات متعددة! ما يعمل بشكل مثالي في Chrome قد يبدو مختلفًا في Safari أو Firefox. المطورون المحترفون يختبرون عبر جميع المتصفحات الرئيسية لضمان تجربة مستخدم متسقة. ### أدوات سطر الأوامر: بوابتك إلى قوى المطور الخارقة -حسنًا، دعونا نكون صادقين تمامًا هنا بشأن سطر الأوامر، لأنني أريدك أن تسمع هذا من شخص يفهمه حقًا. عندما رأيته لأول مرة – مجرد شاشة سوداء مخيفة مع نص يومض – فكرت حرفيًا، "لا، بالتأكيد لا! يبدو هذا وكأنه شيء من فيلم هاكرز من الثمانينيات، وأنا بالتأكيد لست ذكيًا بما يكفي لهذا!" 😅 +حسنًا، دعونا نكون صادقين تمامًا هنا بشأن سطر الأوامر، لأنني أريدك أن تسمع هذا من شخص يفهم الأمر حقًا. عندما رأيته لأول مرة – مجرد شاشة سوداء مخيفة مع نص يومض – فكرت حرفيًا: "لا، بالتأكيد لا! يبدو هذا وكأنه شيء من فيلم هاكرز في الثمانينيات، وأنا بالتأكيد لست ذكيًا بما يكفي لهذا!" 😅 -لكن إليك ما كنت أتمنى أن يخبرني به أحد في ذلك الوقت، وما أقوله لك الآن: سطر الأوامر ليس مخيفًا – إنه في الواقع مثل إجراء محادثة مباشرة مع جهاز الكمبيوتر الخاص بك. فكر فيه كالفارق بين طلب الطعام عبر تطبيق فاخر مع صور وقوائم (وهو أمر لطيف وسهل) مقابل الذهاب إلى مطعمك المحلي المفضل حيث يعرف الطاهي بالضبط ما تحب ويمكنه إعداد شيء مثالي بمجرد أن تقول "فاجئني بشيء رائع." +لكن إليك ما كنت أتمنى أن يخبرني به أحدهم حينها، وما سأخبرك به الآن: سطر الأوامر ليس مخيفًا – إنه في الواقع مثل إجراء محادثة مباشرة مع جهاز الكمبيوتر الخاص بك. فكر فيه كأنه الفرق بين طلب الطعام عبر تطبيق فاخر مع صور وقوائم (وهو لطيف وسهل) مقابل الدخول إلى مطعمك المحلي المفضل حيث يعرف الطاهي بالضبط ما تحب ويمكنه إعداد شيء مثالي بمجرد أن تقول "فاجئني بشيء رائع." -سطر الأوامر هو المكان الذي يذهب إليه المطورون ليشعروا وكأنهم سحرة حقيقيون. تكتب بضع كلمات تبدو سحرية (حسنًا، إنها مجرد أوامر، لكنها تبدو سحرية!)، تضغط على Enter، وها أنت ذا – لقد أنشأت هيكل مشروع كامل، أو قمت بتثبيت أدوات قوية من جميع أنحاء العالم، أو نشرت تطبيقك على الإنترنت ليشاهده الملايين. بمجرد أن تتذوق هذه القوة لأول مرة، يصبح الأمر إدمانيًا بصراحة! +سطر الأوامر هو المكان الذي يذهب إليه المطورون ليشعروا وكأنهم سحرة حقيقيون. تكتب بضع كلمات تبدو سحرية (حسنًا، إنها مجرد أوامر، لكنها تبدو سحرية!)، تضغط على Enter، وبوم – لقد أنشأت هياكل مشاريع كاملة، قمت بتثبيت أدوات قوية من جميع أنحاء العالم، أو نشرت تطبيقك على الإنترنت ليشاهده الملايين. بمجرد أن تحصل على أول طعم لهذه القوة، يصبح الأمر إدمانًا بصراحة! **لماذا سيصبح سطر الأوامر أداتك المفضلة:** -بينما تعد الواجهات الرسومية رائعة للعديد من المهام، يتفوق سطر الأوامر في الأتمتة والدقة والسرعة. تعمل العديد من أدوات التطوير بشكل أساسي من خلال واجهات سطر الأوامر، وتعلم استخدامها بكفاءة يمكن أن يحسن إنتاجيتك بشكل كبير. +بينما تعتبر الواجهات الرسومية رائعة للعديد من المهام، يتفوق سطر الأوامر في الأتمتة، الدقة، والسرعة. تعمل العديد من أدوات التطوير بشكل أساسي من خلال واجهات سطر الأوامر، وتعلم استخدامها بكفاءة يمكن أن يحسن إنتاجيتك بشكل كبير. ```bash # Step 1: Create and navigate to project directory @@ -491,7 +613,7 @@ cd my-awesome-website ``` **ما يفعله هذا الكود:** -- **إنشاء** دليل جديد باسم "my-awesome-website" لمشروعك +- **إنشاء** دليل جديد يسمى "my-awesome-website" لمشروعك - **التنقل** إلى الدليل الذي تم إنشاؤه حديثًا لبدء العمل ```bash @@ -504,10 +626,10 @@ npm install --save-dev @eslint/js ``` **خطوة بخطوة، ما يحدث هنا:** -- **تهيئة** مشروع جديد لـ Node.js بإعدادات افتراضية باستخدام `npm init -y` +- **تهيئة** مشروع Node.js جديد بإعدادات افتراضية باستخدام `npm init -y` - **تثبيت** Vite كأداة بناء حديثة للتطوير السريع وبناء الإنتاج -- **إضافة** Prettier لتنسيق الأكواد تلقائيًا وESLint لفحص جودة الأكواد -- **استخدام** العلامة `--save-dev` لتحديد هذه الأدوات كاعتماديات خاصة بالتطوير فقط +- **إضافة** Prettier لتنسيق الكود تلقائيًا وESLint لفحص جودة الكود +- **استخدام** العلامة `--save-dev` لتحديد هذه كاعتماديات خاصة بالتطوير فقط ```bash # Step 3: Create project structure and files @@ -518,85 +640,105 @@ echo 'My Site

Hello Wo npx vite ``` -**في المثال أعلاه، قمنا بـ:** +**في ما سبق، قمنا بـ:** - **تنظيم** مشروعنا بإنشاء مجلدات منفصلة للكود المصدري والموارد -- **إنشاء** ملف HTML أساسي مع هيكل وثيقة صحيح -- **تشغيل** خادم تطوير Vite لإعادة التحميل المباشر واستبدال الوحدات الساخنة +- **إنشاء** ملف HTML أساسي مع هيكل وثيقة مناسب +- **بدء** خادم تطوير Vite لإعادة التحميل المباشر واستبدال الوحدات الساخنة #### أدوات سطر الأوامر الأساسية لتطوير الويب | الأداة | الغرض | لماذا تحتاجها | -|-------|-------|---------------| -| **[Git](https://git-scm.com/)** | التحكم في الإصدارات | تتبع التغييرات، التعاون مع الآخرين، نسخ عملك احتياطيًا | +|--------|-------|---------------| +| **[Git](https://git-scm.com/)** | التحكم في الإصدارات | تتبع التغييرات، التعاون مع الآخرين، نسخ احتياطي لعملك | | **[Node.js & npm](https://nodejs.org/)** | بيئة تشغيل JavaScript وإدارة الحزم | تشغيل JavaScript خارج المتصفحات، تثبيت أدوات التطوير الحديثة | | **[Vite](https://vitejs.dev/)** | أداة بناء وخادم تطوير | تطوير سريع للغاية مع استبدال الوحدات الساخنة | -| **[ESLint](https://eslint.org/)** | جودة الأكواد | العثور على المشكلات في JavaScript وإصلاحها تلقائيًا | -| **[Prettier](https://prettier.io/)** | تنسيق الأكواد | الحفاظ على تنسيق الأكواد بشكل متسق وقابل للقراءة | +| **[ESLint](https://eslint.org/)** | جودة الكود | العثور على المشكلات في JavaScript وإصلاحها تلقائيًا | +| **[Prettier](https://prettier.io/)** | تنسيق الكود | الحفاظ على تنسيق الكود بشكل متسق وقابل للقراءة | -#### خيارات خاصة بالأنظمة +#### خيارات خاصة بالمنصات **Windows:** - **[Windows Terminal](https://docs.microsoft.com/windows/terminal/?WT.mc_id=academic-77807-sagibbon)** - محطة حديثة وغنية بالميزات -- **[PowerShell](https://docs.microsoft.com/powershell/?WT.mc_id=academic-77807-sagibbon)** 💻 - بيئة برمجة نصية قوية -- **[Command Prompt](https://docs.microsoft.com/windows-server/administration/windows-commands/?WT.mc_id=academic-77807-sagibbon)** 💻 - سطر الأوامر التقليدي لنظام Windows +- **[PowerShell](https://docs.microsoft.com/powershell/?WT.mc_id=academic-77807-sagibbon)** 💻 - بيئة برمجة قوية +- **[Command Prompt](https://docs.microsoft.com/windows-server/administration/windows-commands/?WT.mc_id=academic-77807-sagibbon)** 💻 - سطر أوامر Windows التقليدي **macOS:** - **[Terminal](https://support.apple.com/guide/terminal/)** 💻 - تطبيق المحطة المدمج -- **[iTerm2](https://iterm2.com/)** - محطة محسنة بميزات متقدمة +- **[iTerm2](https://iterm2.com/)** - محطة محسنة مع ميزات متقدمة **Linux:** -- **[Bash](https://www.gnu.org/software/bash/)** 💻 - القشرة القياسية لنظام Linux +- **[Bash](https://www.gnu.org/software/bash/)** 💻 - الصدفة القياسية لنظام Linux - **[KDE Konsole](https://docs.kde.org/trunk5/en/konsole/konsole/index.html)** - محاكي محطة متقدم > 💻 = مثبت مسبقًا على نظام التشغيل -> 🎯 **مسار التعلم**: ابدأ بالأوامر الأساسية مثل `cd` (تغيير الدليل)، `ls` أو `dir` (عرض الملفات)، و`mkdir` (إنشاء مجلد). تدرب على أوامر سير العمل الحديثة مثل `npm install`، `git status`، و`code .` (يفتح الدليل الحالي في VS Code). مع زيادة راحتك، ستتعلم بشكل طبيعي المزيد من الأوامر المتقدمة وتقنيات الأتمتة. +> 🎯 **مسار التعلم**: ابدأ بالأوامر الأساسية مثل `cd` (تغيير الدليل)، `ls` أو `dir` (عرض الملفات)، و`mkdir` (إنشاء مجلد). تدرب على أوامر سير العمل الحديثة مثل `npm install`، `git status`، و`code .` (يفتح الدليل الحالي في VS Code). مع تقدمك في الراحة، ستتعلم بشكل طبيعي المزيد من الأوامر المتقدمة وتقنيات الأتمتة. -### التوثيق: معلمك المتاح دائمًا +### الوثائق: معلمك المتاح دائمًا للتعلم -حسنًا، دعني أشاركك سرًا صغيرًا سيجعلك تشعر بتحسن كبير بشأن كونك مبتدئًا: حتى أكثر المطورين خبرة يقضون جزءًا كبيرًا من وقتهم في قراءة التوثيق. وهذا ليس لأنهم لا يعرفون ما يفعلونه – بل هو في الواقع علامة على الحكمة! +حسنًا، دعني أشاركك سرًا صغيرًا سيجعلك تشعر بتحسن كبير بشأن كونك مبتدئًا: حتى أكثر المطورين خبرة يقضون جزءًا كبيرًا من وقتهم في قراءة الوثائق. وليس لأنهم لا يعرفون ما يفعلونه – بل لأن ذلك علامة على الحكمة! -فكر في التوثيق كأنك تمتلك معلمين صبورين ومطلعين متاحين على مدار الساعة. عالق في مشكلة الساعة 2 صباحًا؟ التوثيق موجود ليمنحك عناقًا افتراضيًا دافئًا والإجابة التي تحتاجها بالضبط. تريد معرفة ميزة جديدة رائعة يتحدث عنها الجميع؟ التوثيق يدعمك بأمثلة خطوة بخطوة. تحاول فهم سبب عمل شيء ما بالطريقة التي يعمل بها؟ نعم، التوثيق جاهز لشرح ذلك بطريقة تجعلك تفهمها أخيرًا! +فكر في الوثائق كأنك تمتلك وصولًا إلى أكثر المعلمين صبرًا ومعرفة الذين يتوفرون على مدار الساعة. عالق في مشكلة الساعة 2 صباحًا؟ الوثائق موجودة مع عناق افتراضي دافئ والإجابة التي تحتاجها بالضبط. تريد تعلم ميزة جديدة رائعة يتحدث عنها الجميع؟ الوثائق تدعمك بأمثلة خطوة بخطوة. تحاول فهم لماذا يعمل شيء ما بالطريقة التي يعمل بها؟ نعم، الوثائق جاهزة لتشرح لك بطريقة تجعلك تفهمها أخيرًا! -**إليك المكان الذي يحدث فيه السحر الحقيقي:** +إليك شيء غير وجهة نظري تمامًا: عالم تطوير الويب يتحرك بسرعة كبيرة، ولا أحد (أعني لا أحد على الإطلاق!) يحتفظ بكل شيء في ذاكرته. لقد شاهدت مطورين كبار لديهم خبرة تزيد عن 15 عامًا يبحثون عن بناء جملة أساسي، وتعلم ماذا؟ هذا ليس محرجًا – إنه ذكي! الأمر لا يتعلق بامتلاك ذاكرة مثالية؛ بل يتعلق بمعرفة أين تجد الإجابات الموثوقة بسرعة وفهم كيفية تطبيقها. -يقضي المطورون المحترفون جزءًا كبيرًا من وقتهم في قراءة التوثيق – ليس لأنهم لا يعرفون ما يفعلونه، ولكن لأن عالم تطوير الويب يتطور بسرعة كبيرة لدرجة أن البقاء على اطلاع يتطلب تعلمًا مستمرًا. يساعدك التوثيق الجيد على فهم ليس فقط *كيفية* استخدام شيء ما، ولكن *لماذا* و*متى* تستخدمه. +**إليك أين يحدث السحر الحقيقي:** -#### موارد التوثيق الأساسية +يقضي المطورون المحترفون جزءًا كبيرًا من وقتهم في قراءة الوثائق – ليس لأنهم لا يعرفون ما يفعلونه، بل لأن مشهد تطوير الويب يتطور بسرعة كبيرة بحيث يتطلب البقاء على اطلاع مستمر التعلم المستمر. تساعدك الوثائق الجيدة على فهم ليس فقط *كيف* تستخدم شيئًا ما، بل *لماذا* و*متى* تستخدمه. + +#### موارد الوثائق الأساسية **[Mozilla Developer Network (MDN)](https://developer.mozilla.org/docs/Web)** -- المعيار الذهبي لتوثيق تقنيات الويب -- أدلة شاملة لـ HTML وCSS وJavaScript -- يتضمن معلومات توافق المتصفحات -- يحتوي على أمثلة عملية وعروض تفاعلية +- المعيار الذهبي لوثائق تقنيات الويب +- أدلة شاملة لـ HTML، CSS، وJavaScript +- تتضمن معلومات توافق المتصفح +- تحتوي على أمثلة عملية وعروض تفاعلية **[Web.dev](https://web.dev)** (من Google) - أفضل ممارسات تطوير الويب الحديث - أدلة تحسين الأداء - مبادئ التصميم الشامل وإمكانية الوصول -- دراسات حالة من مشاريع حقيقية +- دراسات حالة من مشاريع العالم الحقيقي **[Microsoft Developer Documentation](https://docs.microsoft.com/microsoft-edge/#microsoft-edge-for-developers)** - موارد تطوير متصفح Edge - أدلة تطبيقات الويب التقدمية -- رؤى حول التطوير عبر الأنظمة الأساسية +- رؤى تطوير عبر الأنظمة الأساسية **[Frontend Masters Learning Paths](https://frontendmasters.com/learn/)** - مناهج تعليمية منظمة - دورات فيديو من خبراء الصناعة - تمارين برمجة عملية -> 📚 **استراتيجية الدراسة**: لا تحاول حفظ التوثيق – بدلاً من ذلك، تعلم كيفية التنقل فيه بكفاءة. ضع إشارة مرجعية على المراجع التي تستخدمها بشكل متكرر وتدرب على استخدام وظائف البحث للعثور على معلومات محددة بسرعة. +> 📚 **استراتيجية الدراسة**: لا تحاول حفظ الوثائق – بدلاً من ذلك، تعلم كيفية التنقل فيها بكفاءة. ضع إشارات مرجعية للمراجع المستخدمة بشكل متكرر وتدرب على استخدام وظائف البحث للعثور على معلومات محددة بسرعة. + +### 🔧 **اختبار إتقان الأدوات: ما الذي يثير اهتمامك؟** + +**خذ لحظة للتفكير:** +- أي أداة أنت متحمس لتجربتها أولاً؟ (لا توجد إجابة خاطئة!) +- هل لا يزال سطر الأوامر يبدو مخيفًا، أم أنك فضولي بشأنه؟ +- هل يمكنك تخيل استخدام أدوات المطور في المتصفح لاستكشاف ما وراء الكواليس لمواقعك المفضلة؟ + +```mermaid +pie title "Developer Time Spent With Tools" + "Code Editor" : 40 + "Browser Testing" : 25 + "Command Line" : 15 + "Reading Docs" : 15 + "Debugging" : 5 +``` -✅ **فكرة للتفكير**: إليك شيء مثير للتفكير – كيف تعتقد أن الأدوات المستخدمة لبناء المواقع (التطوير) تختلف عن الأدوات المستخدمة لتصميم شكلها (التصميم)؟ إنه مثل الفرق بين أن تكون مهندسًا معماريًا يصمم منزلًا جميلًا والمقاول الذي يبنيه فعليًا. كلاهما ضروري، لكنهما يحتاجان إلى صناديق أدوات مختلفة! هذا النوع من التفكير سيساعدك حقًا على رؤية الصورة الأكبر لكيفية ظهور المواقع إلى الحياة. +> **معلومة ممتعة**: يقضي معظم المطورين حوالي 40% من وقتهم في محرر الكود الخاص بهم، لكن لاحظ كم من الوقت يُخصص للاختبار، التعلم، وحل المشكلات. البرمجة ليست فقط كتابة الكود – إنها صناعة تجارب! + +✅ **فكرة للتفكير**: إليك شيء مثير للتفكير – كيف تعتقد أن الأدوات لبناء المواقع (التطوير) قد تختلف عن الأدوات لتصميم كيف تبدو (التصميم)؟ إنه مثل الفرق بين أن تكون مهندسًا معماريًا يصمم منزلًا جميلًا والمقاول الذي يبنيه فعليًا. كلاهما ضروري، لكنهما يحتاجان إلى صناديق أدوات مختلفة! هذا النوع من التفكير سيساعدك حقًا على رؤية الصورة الأكبر لكيفية ظهور المواقع إلى الحياة. ## تحدي GitHub Copilot Agent 🚀 استخدم وضع الوكيل لإكمال التحدي التالي: -**الوصف:** استكشف ميزات محرر أكواد حديث أو بيئة تطوير متكاملة (IDE) ووضح كيف يمكن أن تحسن سير عملك كمطور ويب. +**الوصف:** استكشف ميزات محرر الكود الحديث أو بيئة التطوير المتكاملة (IDE) وأظهر كيف يمكن أن تحسن سير عملك كمطور ويب. -**المهمة:** اختر محرر أكواد أو بيئة تطوير متكاملة (مثل Visual Studio Code أو WebStorm أو IDE قائم على السحابة). قم بسرد ثلاث ميزات أو إضافات تساعدك على كتابة الأكواد أو تصحيحها أو صيانتها بكفاءة أكبر. لكل ميزة، قدم شرحًا موجزًا عن كيفية تحسينها لسير عملك. +**المهمة:** اختر محرر كود أو بيئة تطوير متكاملة (مثل Visual Studio Code، WebStorm، أو IDE قائم على السحابة). قم بتحديد ثلاث ميزات أو إضافات تساعدك على كتابة، تصحيح، أو صيانة الكود بكفاءة أكبر. لكل منها، قدم شرحًا موجزًا عن كيفية تحسينها لسير عملك. --- @@ -604,61 +746,118 @@ npx vite **حسنًا، أيها المحقق، هل أنت مستعد لأول قضية لك؟** -الآن بعد أن حصلت على هذه الأساسيات الرائعة، لدي مغامرة ستساعدك على رؤية مدى تنوع وروعة عالم البرمجة. وتذكر – هذا ليس عن كتابة الأكواد بعد، لذا لا ضغط هنا! فكر في نفسك كمحقق لغات برمجة في أول قضية مثيرة لك! +الآن بعد أن حصلت على هذه الأساسيات الرائعة، لدي مغامرة ستساعدك على رؤية مدى تنوع وجاذبية عالم البرمجة حقًا. واستمع – هذا ليس عن كتابة الكود بعد، لذا لا يوجد ضغط هنا! فكر في نفسك كمحقق لغات برمجة في أول قضية مثيرة لك! **مهمتك، إذا اخترت قبولها:** -1. **كن مستكشفًا للغات البرمجة**: اختر ثلاث لغات برمجة من عوالم مختلفة تمامًا – ربما واحدة تبني مواقع الويب، وأخرى تنشئ تطبيقات الجوال، وثالثة تحلل البيانات للعلماء. ابحث عن أمثلة لنفس المهمة البسيطة مكتوبة بكل لغة. أعدك أنك ستندهش تمامًا من مدى اختلافها أثناء القيام بنفس الشيء! +1. **كن مستكشفًا للغات**: اختر ثلاث لغات برمجة من عوالم مختلفة تمامًا – ربما واحدة تبني مواقع، واحدة تنشئ تطبيقات جوال، وواحدة تحلل البيانات للعلماء. ابحث عن أمثلة لنفس المهمة البسيطة مكتوبة بكل لغة. أعدك أنك ستندهش تمامًا من مدى اختلافها أثناء القيام بنفس الشيء! -2. **اكتشف قصص نشأتها**: ما الذي يجعل كل لغة مميزة؟ إليك حقيقة رائعة – كل لغة برمجة تم إنشاؤها لأن شخصًا ما فكر، "تعرف ماذا؟ يجب أن يكون هناك طريقة أفضل لحل هذه المشكلة المحددة." هل يمكنك معرفة ما كانت تلك المشكلات؟ بعض هذه القصص مثيرة للاهتمام حقًا! +2. **اكتشف قصص أصلها**: ما الذي يجعل كل لغة مميزة؟ إليك حقيقة رائعة – كل لغة برمجة تم إنشاؤها لأن شخصًا ما فكر، "تعرف ماذا؟ يجب أن يكون هناك طريقة أفضل لحل هذه المشكلة المحددة." هل يمكنك معرفة ما كانت تلك المشكلات؟ بعض هذه القصص مثيرة للاهتمام حقًا! -3. **تعرف على مجتمعاتها**: تحقق من مدى ترحيب وشغف مجتمع كل لغة. البعض لديه ملايين المطورين الذين يشاركون المعرفة ويساعدون بعضهم البعض، والبعض الآخر أصغر ولكنه مترابط وداعم للغاية. ستحب رؤية الشخصيات المختلفة لهذه المجتمعات! +3. **تعرف على المجتمعات**: تحقق من مدى ترحيب وشغف مجتمع كل لغة. البعض لديه ملايين المطورين الذين يشاركون المعرفة ويساعدون بعضهم البعض، والبعض الآخر أصغر ولكن مترابط للغاية وداعم. ستعجبك رؤية الشخصيات المختلفة لهذه المجتمعات! -4. **اتبع شعورك الداخلي**: أي لغة تبدو أكثر سهولة بالنسبة لك الآن؟ لا تقلق بشأن اتخاذ "الاختيار المثالي" – فقط استمع إلى غرائزك! لا توجد إجابة خاطئة هنا، ويمكنك دائمًا استكشاف لغات أخرى لاحقًا. +4. **اتبع شعورك الداخلي**: أي لغة تبدو أكثر سهولة بالنسبة لك الآن؟ لا تقلق بشأن اتخاذ الخيار "المثالي" – فقط استمع إلى حدسك! لا توجد إجابة خاطئة هنا، ويمكنك دائمًا استكشاف الآخرين لاحقًا. -**عمل تحري إضافي**: اكتشف ما إذا كان بإمكانك معرفة المواقع أو التطبيقات الرئيسية التي تم بناؤها بكل لغة. أضمن أنك ستتفاجأ عندما تعرف ما الذي يشغل Instagram أو Netflix أو تلك اللعبة التي لا تستطيع التوقف عن لعبها! +**عمل تحري إضافي**: حاول اكتشاف ما هي المواقع أو التطبيقات الرئيسية التي تم بناؤها بكل لغة. أضمن أنك ستُصدم عندما تعرف ما الذي يشغل Instagram، Netflix، أو تلك اللعبة الجوالة التي لا تستطيع التوقف عن لعبها! -> 💡 **تذكر**: لست بحاجة إلى أن تصبح خبيرًا في أي من هذه اللغات اليوم. أنت فقط تتعرف على الحي قبل أن تقرر أين تريد أن تستقر. خذ وقتك، استمتع بالأمر، ودع فضولك يقودك! +> 💡 **تذكر**: أنت لا تحاول أن تصبح خبيرًا في أي من هذه اللغات اليوم. أنت فقط تتعرف على الحي قبل أن تقرر أين تريد أن تستقر. خذ وقتك، استمتع بالأمر، ودع فضولك يقودك! ## لنحتفل بما اكتشفته! -يا إلهي، لقد استوعبت الكثير من المعلومات الرائعة اليوم! أنا متحمس حقًا لرؤية مدى استيعابك لهذه الرحلة المذهلة. وتذكر – هذا ليس اختبارًا تحتاج فيه إلى الحصول على كل شيء بشكل مثالي. هذا أشبه بالاحتفال بكل الأشياء الرائعة التي تعلمتها عن هذا العالم المثير الذي أنت على وشك الغوص فيه! +يا إلهي، لقد استوعبت الكثير من المعلومات الرائعة اليوم! أنا متحمس حقًا لرؤية مدى تأثير هذه الرحلة المذهلة عليك. وتذكر – هذا ليس اختبارًا تحتاج فيه إلى أن تكون مثاليًا. هذا أشبه بالاحتفال بكل الأشياء الرائعة التي تعلمتها عن هذا العالم المثير الذي أنت على وشك الغوص فيه! [خذ اختبار ما بعد الدرس](https://ff-quizzes.netlify.app/web/) - ## المراجعة والدراسة الذاتية -**خذ وقتك لاستكشاف الأمر واستمتع به!** +**خذ وقتك للاستكشاف واستمتع بذلك!** -لقد غطيت الكثير اليوم، وهذا شيء يجب أن تفخر به! الآن يأتي الجزء الممتع – استكشاف المواضيع التي أثارت فضولك. تذكر، هذا ليس واجبًا منزليًا – إنها مغامرة! +لقد قطعت شوطًا كبيرًا اليوم، وهذا شيء تفخر به! الآن يأتي الجزء الممتع – استكشاف المواضيع التي أثارت فضولك. تذكر، هذا ليس واجبًا منزليًا – إنها مغامرة! -**تعمق في ما يثير حماسك:** +**استكشف ما يثير حماسك بعمق:** **تفاعل مع لغات البرمجة:** -- قم بزيارة المواقع الرسمية لـ 2-3 لغات أثارت اهتمامك. لكل منها شخصيتها وقصتها! +- قم بزيارة المواقع الرسمية لـ 2-3 لغات أثارت اهتمامك. لكل منها شخصيتها وقصتها الخاصة! - جرب بعض منصات البرمجة عبر الإنترنت مثل [CodePen](https://codepen.io/)، [JSFiddle](https://jsfiddle.net/)، أو [Replit](https://replit.com/). لا تخف من التجربة – لن تكسر شيئًا! -- اقرأ عن كيفية نشأة لغتك المفضلة. بجدية، بعض هذه القصص مثيرة وستساعدك على فهم سبب عمل اللغات بالطريقة التي تعمل بها. +- اقرأ عن كيفية نشأة لغتك المفضلة. صدقني، بعض هذه القصص الأصلية مثيرة للاهتمام وستساعدك على فهم سبب عمل اللغات بالطريقة التي تعمل بها. **تعرف على أدواتك الجديدة:** -- قم بتنزيل Visual Studio Code إذا لم تكن قد فعلت ذلك بالفعل – إنه مجاني وستحبه! -- اقض بضع دقائق في تصفح سوق الإضافات. إنه مثل متجر التطبيقات لمحرر الأكواد الخاص بك! -- افتح أدوات المطور في متصفحك وانقر فقط. لا تقلق بشأن فهم كل شيء – فقط تعود على ما هو موجود. +- قم بتنزيل Visual Studio Code إذا لم تقم بذلك بالفعل – إنه مجاني وستحبه! +- اقضِ بضع دقائق في تصفح سوق الإضافات. إنه مثل متجر التطبيقات لمحرر الكود الخاص بك! +- افتح أدوات المطور في متصفحك وانقر هنا وهناك. لا تقلق بشأن فهم كل شيء – فقط تعرّف على ما هو موجود. **انضم إلى المجتمع:** - تابع بعض مجتمعات المطورين على [Dev.to](https://dev.to/)، [Stack Overflow](https://stackoverflow.com/)، أو [GitHub](https://github.com/). مجتمع البرمجة مرحب جدًا بالمبتدئين! -- شاهد بعض مقاطع الفيديو التعليمية للمبتدئين على YouTube. هناك العديد من المبدعين الرائعين الذين يتذكرون تمامًا كيف كان الأمر عندما بدأوا في تعلم البرمجة. +- شاهد بعض الفيديوهات التعليمية للمبتدئين على YouTube. هناك العديد من المبدعين الرائعين الذين يتذكرون كيف كان الأمر عندما بدأوا. - فكر في الانضمام إلى لقاءات محلية أو مجتمعات عبر الإنترنت. صدقني، المطورون يحبون مساعدة المبتدئين! -> 🎯 **اسمع، هذا ما أريدك أن تتذكره**: لا يُتوقع منك أن تصبح خبيرًا في البرمجة بين ليلة وضحاها! في الوقت الحالي، أنت فقط تتعرف على هذا العالم الجديد الرائع الذي ستصبح جزءًا منه. خذ وقتك، استمتع بالرحلة، وتذكر – كل مطور تعجب به كان يجلس في نفس مكانك الآن، يشعر بالحماس وربما ببعض التوتر. هذا أمر طبيعي تمامًا، ويعني أنك تسير في الطريق الصحيح! - - +> 🎯 **اسمع، هذا ما أريدك أن تتذكره**: لا يُتوقع منك أن تصبح خبيرًا في البرمجة بين ليلة وضحاها! الآن، أنت فقط تتعرف على هذا العالم الجديد الرائع الذي ستصبح جزءًا منه. خذ وقتك، استمتع بالرحلة، وتذكر – كل مطور تعجب به كان يجلس في مكانك تمامًا، يشعر بالحماس وربما قليلًا من الارتباك. هذا طبيعي تمامًا، ويعني أنك تسير في الطريق الصحيح. ## المهمة [قراءة الوثائق](assignment.md) -> 💡 **تلميح صغير لمهمتك**: سأكون سعيدًا جدًا برؤيتك تستكشف بعض الأدوات التي لم نتحدث عنها بعد! تجاوز المحررات، المتصفحات، وأدوات سطر الأوامر التي ناقشناها بالفعل – هناك عالم مذهل مليء بأدوات التطوير الرائعة ينتظر أن تكتشفه. ابحث عن الأدوات التي يتم تحديثها بانتظام ولديها مجتمعات نشطة وداعمة (هذه عادةً ما تحتوي على أفضل الشروحات وأشخاص داعمين جدًا عندما تواجه صعوبة وتحتاج إلى مساعدة ودية). +> 💡 **تلميح صغير لمهمتك**: سأكون سعيدًا جدًا برؤية أنك تستكشف بعض الأدوات التي لم نتحدث عنها بعد! تجاوز المحررات، المتصفحات، وأدوات سطر الأوامر التي تحدثنا عنها – هناك عالم مذهل من أدوات التطوير الرائعة ينتظر أن يتم اكتشافه. ابحث عن الأدوات التي يتم تحديثها بانتظام ولديها مجتمعات نشطة وداعمة (عادةً ما تكون هذه الأدوات لديها أفضل الشروحات وأكثر الأشخاص دعمًا عندما تواجه مشكلة وتحتاج إلى يد مساعدة ودية). + +--- + +## 🚀 جدول رحلتك البرمجية + +### ⚡ **ما يمكنك القيام به في الدقائق الخمس القادمة** +- [ ] ضع إشارة مرجعية على مواقع 2-3 لغات برمجة أثارت اهتمامك +- [ ] قم بتنزيل Visual Studio Code إذا لم تقم بذلك بالفعل +- [ ] افتح أدوات المطور في متصفحك (F12) وانقر هنا وهناك على أي موقع +- [ ] انضم إلى مجتمع برمجي واحد (Dev.to، Reddit r/webdev، أو Stack Overflow) + +### ⏰ **ما يمكنك إنجازه خلال الساعة القادمة** +- [ ] أكمل اختبار ما بعد الدرس وفكر في إجاباتك +- [ ] قم بإعداد VS Code مع إضافة GitHub Copilot +- [ ] جرب مثال "Hello World" في لغتين برمجيتين مختلفتين عبر الإنترنت +- [ ] شاهد فيديو "يوم في حياة مطور" على YouTube +- [ ] ابدأ تحقيقك في لغات البرمجة (من التحدي) + +### 📅 **مغامرتك لمدة أسبوع** +- [ ] أكمل المهمة واستكشف 3 أدوات تطوير جديدة +- [ ] تابع 5 مطورين أو حسابات برمجية على وسائل التواصل الاجتماعي +- [ ] حاول بناء شيء صغير على CodePen أو Replit (حتى لو كان مجرد "مرحبًا، [اسمك]!") +- [ ] اقرأ منشور مدونة لمطور عن رحلته البرمجية +- [ ] انضم إلى لقاء افتراضي أو شاهد حديثًا عن البرمجة +- [ ] ابدأ تعلم اللغة التي اخترتها من خلال الدروس عبر الإنترنت + +### 🗓️ **تحولك خلال شهر** +- [ ] قم ببناء أول مشروع صغير لك (حتى لو كان مجرد صفحة ويب بسيطة!) +- [ ] ساهم في مشروع مفتوح المصدر (ابدأ بإصلاحات الوثائق) +- [ ] قم بتوجيه شخص بدأ للتو رحلته البرمجية +- [ ] أنشئ موقع محفظة المطور الخاص بك +- [ ] تواصل مع مجتمعات المطورين المحلية أو مجموعات الدراسة +- [ ] ابدأ التخطيط لمرحلة التعلم التالية + +### 🎯 **التأمل النهائي** + +**قبل أن تنتقل، خذ لحظة للاحتفال:** +- ما الشيء الذي أثار حماسك بشأن البرمجة اليوم؟ +- ما الأداة أو المفهوم الذي تريد استكشافه أولاً؟ +- كيف تشعر بشأن بدء رحلتك البرمجية؟ +- ما السؤال الذي ترغب في طرحه على مطور الآن؟ + +```mermaid +journey + title Your Confidence Building Journey + section Today + Curious: 3: You + Overwhelmed: 4: You + Excited: 5: You + section This Week + Exploring: 4: You + Learning: 5: You + Connecting: 4: You + section Next Month + Building: 5: You + Confident: 5: You + Helping Others: 5: You +``` + +> 🌟 **تذكر**: كل خبير كان يومًا ما مبتدئًا. كل مطور كبير شعر تمامًا كما تشعر الآن – بالحماس، وربما قليلًا من الارتباك، وبالتأكيد فضوليًا بشأن ما هو ممكن. أنت في صحبة رائعة، وهذه الرحلة ستكون مذهلة. مرحبًا بك في عالم البرمجة الرائع! 🎉 --- **إخلاء المسؤولية**: -تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الموثوق. للحصول على معلومات حاسمة، يُوصى بالترجمة البشرية الاحترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة. \ No newline at end of file +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الرسمي. للحصول على معلومات حاسمة، يُوصى بالترجمة البشرية الاحترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/1-getting-started-lessons/2-github-basics/README.md b/translations/ar/1-getting-started-lessons/2-github-basics/README.md index 655fda9945..d8829ebd9e 100644 --- a/translations/ar/1-getting-started-lessons/2-github-basics/README.md +++ b/translations/ar/1-getting-started-lessons/2-github-basics/README.md @@ -1,33 +1,50 @@ # مقدمة إلى GitHub -مرحبًا أيها المطور المستقبلي! 👋 هل أنت مستعد للانضمام إلى ملايين المبرمجين حول العالم؟ أنا متحمس جدًا لتعريفك بـ GitHub – فكر فيه كمنصة التواصل الاجتماعي للمبرمجين، ولكن بدلاً من مشاركة صور الغداء، نحن نشارك الأكواد ونبني أشياء مذهلة معًا! +مرحبًا بك، أيها المطور المستقبلي! 👋 هل أنت مستعد للانضمام إلى ملايين المبرمجين حول العالم؟ أنا متحمس جدًا لتعريفك بـ GitHub – فكر فيه كأنه منصة التواصل الاجتماعي للمبرمجين، ولكن بدلاً من مشاركة صور الغداء، نحن نشارك الأكواد ونبني أشياء مذهلة معًا! -ما يذهلني حقًا هو أن كل تطبيق على هاتفك، وكل موقع تزوره، ومعظم الأدوات التي ستتعلم استخدامها تم بناؤها بواسطة فرق من المطورين الذين يتعاونون على منصات مثل GitHub. تطبيق الموسيقى الذي تحبه؟ شخص مثلك ساهم في بنائه. اللعبة التي لا تستطيع التوقف عن لعبها؟ نعم، ربما تم بناؤها بالتعاون عبر GitHub. والآن أنت ستتعلم كيف تكون جزءًا من هذه المجتمع الرائع! +ما يدهشني حقًا هو أن كل تطبيق على هاتفك، وكل موقع تزوره، ومعظم الأدوات التي ستتعلم استخدامها تم إنشاؤها بواسطة فرق من المطورين الذين يتعاونون على منصات مثل GitHub. تطبيق الموسيقى الذي تحبه؟ شخص مثلك ساهم فيه. اللعبة التي لا تستطيع التوقف عن لعبها؟ نعم، ربما تم بناؤها بالتعاون عبر GitHub. والآن ستتعلم كيف تكون جزءًا من هذا المجتمع الرائع! -أعلم أن هذا قد يبدو كثيرًا في البداية – أذكر تمامًا عندما نظرت لأول مرة إلى صفحة GitHub الخاصة بي وقلت "ما الذي يعنيه كل هذا؟" لكن إليك الأمر: كل مطور بدأ تمامًا من حيث أنت الآن. بنهاية هذا الدرس، سيكون لديك مستودع GitHub خاص بك (فكر فيه كعرض لمشاريعك الشخصية في السحابة)، وستعرف كيف تحفظ عملك، تشاركه مع الآخرين، وحتى تساهم في مشاريع يستخدمها الملايين من الناس. +أعلم أن هذا قد يبدو كثيرًا في البداية – أذكر تمامًا عندما نظرت إلى صفحتي الأولى على GitHub وقلت "ما هذا بحق السماء؟". ولكن إليك الأمر: كل مطور بدأ تمامًا من حيث أنت الآن. بنهاية هذا الدرس، سيكون لديك مستودع GitHub خاص بك (فكر فيه كأنه معرض مشاريعك الشخصي في السحابة)، وستعرف كيف تحفظ عملك، وتشاركه مع الآخرين، وحتى تساهم في مشاريع يستخدمها الملايين. سنخوض هذه الرحلة معًا، خطوة بخطوة. لا استعجال، لا ضغط – فقط أنت وأنا وبعض الأدوات الرائعة التي ستصبح أصدقائك الجدد! ![مقدمة إلى GitHub](../../../../translated_images/webdev101-github.8846d7971abef6f947909b4f9d343e2a23778aa716ca6b9d71df7174ee5009ac.ar.png) > رسم توضيحي بواسطة [Tomomi Imura](https://twitter.com/girlie_mac) +```mermaid +journey + title Your GitHub Adventure Today + section Setup + Install Git: 4: You + Create Account: 5: You + First Repository: 5: You + section Master Git + Local Changes: 4: You + Commits & Pushes: 5: You + Branching: 4: You + section Collaborate + Fork Projects: 4: You + Pull Requests: 5: You + Open Source: 5: You +``` + ## اختبار ما قبل المحاضرة [اختبار ما قبل المحاضرة](https://ff-quizzes.netlify.app) ## المقدمة -قبل أن نغوص في الأمور المثيرة حقًا، دعنا نجهز جهاز الكمبيوتر الخاص بك لبعض السحر مع GitHub! فكر في هذا كتنظيم أدواتك الفنية قبل إنشاء تحفة فنية – وجود الأدوات المناسبة يجعل كل شيء أكثر سلاسة ومتعة. +قبل أن نغوص في الأمور المثيرة حقًا، دعنا نجهز جهاز الكمبيوتر الخاص بك لبعض السحر مع GitHub! فكر في هذا كأنه تنظيم أدواتك الفنية قبل إنشاء تحفة فنية – وجود الأدوات المناسبة يجعل كل شيء أكثر سلاسة ومتعة. -سأرشدك خلال كل خطوة من خطوات الإعداد شخصيًا، وأعدك أنها ليست مخيفة كما قد تبدو في البداية. إذا لم تفهم شيئًا على الفور، فهذا طبيعي تمامًا! أذكر تمامًا عندما كنت أعد بيئة التطوير الأولى لي وشعرت وكأنني أحاول قراءة الهيروغليفية القديمة. كل مطور كان في نفس مكانك الآن، يتساءل إذا كان يفعل الأمور بشكل صحيح. مفاجأة: إذا كنت هنا تتعلم، فأنت بالفعل تفعل الأمور بشكل صحيح! 🌟 +سأرشدك شخصيًا خلال كل خطوة من خطوات الإعداد، وأعدك أن الأمر ليس مخيفًا كما قد يبدو للوهلة الأولى. إذا لم تفهم شيئًا على الفور، فهذا طبيعي تمامًا! أذكر عندما كنت أعد بيئة التطوير الأولى لي وشعرت وكأنني أحاول قراءة رموز هيروغليفية قديمة. كل مطور كان في مكانك تمامًا، يتساءل عما إذا كان يفعل ذلك بشكل صحيح. مفاجأة: إذا كنت هنا تتعلم، فأنت بالفعل تفعل ذلك بشكل صحيح! 🌟 في هذا الدرس، سنتناول: @@ -39,53 +56,53 @@ CO_OP_TRANSLATOR_METADATA: دعنا نجهز جهاز الكمبيوتر الخاص بك لبعض السحر مع GitHub! لا تقلق – هذا الإعداد شيء تحتاج إلى القيام به مرة واحدة فقط، وبعدها ستكون جاهزًا طوال رحلتك البرمجية. -حسنًا، لنبدأ بالأساسيات! أولاً، نحتاج إلى التحقق مما إذا كان Git موجودًا بالفعل على جهاز الكمبيوتر الخاص بك. Git يشبه وجود مساعد ذكي جدًا يتذكر كل تغيير تقوم به في الكود – أفضل بكثير من الضغط على Ctrl+S كل ثانيتين (كلنا مررنا بذلك!). +حسنًا، لنبدأ بالأساسيات! أولاً، نحتاج إلى التحقق مما إذا كان Git مثبتًا بالفعل على جهازك. Git يشبه وجود مساعد ذكي جدًا يتذكر كل تغيير تقوم به في الكود الخاص بك – أفضل بكثير من الضغط على Ctrl+S كل ثانيتين (كلنا كنا هناك!). -دعنا نرى إذا كان Git مثبتًا بالفعل عن طريق كتابة هذا الأمر السحري في الطرفية: +دعنا نرى ما إذا كان Git مثبتًا بالفعل عن طريق كتابة هذا الأمر السحري في الطرفية الخاصة بك: `git --version` -إذا لم يكن Git موجودًا بعد، لا تقلق! فقط توجه إلى [تحميل Git](https://git-scm.com/downloads) وقم بتنزيله. بمجرد تثبيته، نحتاج إلى تعريف Git بك بشكل صحيح: +إذا لم يكن Git موجودًا بعد، لا تقلق! فقط توجه إلى [تنزيل Git](https://git-scm.com/downloads) وقم بتحميله. بمجرد تثبيته، نحتاج إلى تعريف Git بك بشكل صحيح: -> 💡 **الإعداد لأول مرة**: هذه الأوامر تخبر Git من أنت. سيتم إرفاق هذه المعلومات بكل عملية حفظ تقوم بها، لذا اختر اسمًا وبريدًا إلكترونيًا تشعر بالراحة بمشاركته علنًا. +> 💡 **الإعداد لأول مرة**: هذه الأوامر تخبر Git من أنت. سيتم إرفاق هذه المعلومات بكل عملية حفظ تقوم بها، لذا اختر اسمًا وبريدًا إلكترونيًا تشعر بالراحة في مشاركتهما علنًا. ```bash git config --global user.name "your-name" git config --global user.email "your-email" ``` -للتحقق مما إذا كان Git قد تم تكوينه بالفعل يمكنك كتابة: +للتحقق مما إذا كان Git قد تم تكوينه بالفعل، يمكنك كتابة: ```bash git config --list ``` -ستحتاج أيضًا إلى حساب GitHub، محرر أكواد (مثل Visual Studio Code)، وستحتاج إلى فتح الطرفية (أو: موجه الأوامر). +ستحتاج أيضًا إلى حساب GitHub، ومحرر أكواد (مثل Visual Studio Code)، وستحتاج إلى فتح الطرفية (أو: موجه الأوامر). توجه إلى [github.com](https://github.com/) وأنشئ حسابًا إذا لم تكن قد فعلت ذلك بالفعل، أو قم بتسجيل الدخول واملأ ملفك الشخصي. 💡 **نصيحة حديثة**: فكر في إعداد [مفاتيح SSH](https://docs.github.com/en/authentication/connecting-to-github-with-ssh) أو استخدام [GitHub CLI](https://cli.github.com/) لتسهيل المصادقة بدون كلمات مرور. -✅ GitHub ليس مستودع الأكواد الوحيد في العالم؛ هناك آخرون، لكن GitHub هو الأكثر شهرة. +✅ GitHub ليس مستودع الأكواد الوحيد في العالم؛ هناك غيره، لكن GitHub هو الأكثر شهرة. ### التحضير -ستحتاج إلى مجلد يحتوي على مشروع كود على جهازك المحلي (اللاب توب أو الكمبيوتر الشخصي)، ومستودع عام على GitHub، والذي سيكون بمثابة مثال لكيفية المساهمة في مشاريع الآخرين. +ستحتاج إلى مجلد يحتوي على مشروع كود على جهازك المحلي (الكمبيوتر المحمول أو المكتبي)، ومستودع عام على GitHub، والذي سيعمل كمثال على كيفية المساهمة في مشاريع الآخرين. ### الحفاظ على أمان الكود الخاص بك -دعنا نتحدث عن الأمان للحظة – لكن لا تقلق، لن نغرقك بأشياء مخيفة! فكر في هذه الممارسات الأمنية مثل قفل سيارتك أو منزلك. إنها عادات بسيطة تصبح طبيعية وتحافظ على عملك الشاق محميًا. +دعنا نتحدث عن الأمان للحظة – ولكن لا تقلق، لن نثقل عليك بأشياء مخيفة! فكر في هذه الممارسات الأمنية كأنها قفل سيارتك أو منزلك. إنها عادات بسيطة تصبح طبيعية وتحافظ على عملك الشاق محميًا. -سنوضح لك الطرق الحديثة والآمنة للعمل مع GitHub من البداية. بهذه الطريقة، ستطور عادات جيدة ستخدمك جيدًا طوال حياتك البرمجية. +سنوضح لك الطرق الحديثة والآمنة للعمل مع GitHub منذ البداية. بهذه الطريقة، ستطور عادات جيدة ستخدمك طوال مسيرتك البرمجية. -عند العمل مع GitHub، من المهم اتباع أفضل الممارسات الأمنية: +عند العمل مع GitHub، من المهم اتباع أفضل ممارسات الأمان: -| مجال الأمان | أفضل ممارسة | لماذا يهم | -|-------------|-------------|-----------| +| مجال الأمان | أفضل الممارسات | لماذا هو مهم | +|-------------|----------------|---------------| | **المصادقة** | استخدم مفاتيح SSH أو رموز الوصول الشخصية | كلمات المرور أقل أمانًا ويتم التخلص منها تدريجيًا | -| **المصادقة الثنائية** | قم بتمكين المصادقة الثنائية على حساب GitHub الخاص بك | تضيف طبقة إضافية من حماية الحساب | -| **أمان المستودع** | لا تقم أبدًا بحفظ معلومات حساسة | يجب ألا تكون مفاتيح API وكلمات المرور في المستودعات العامة | +| **المصادقة الثنائية** | قم بتمكين المصادقة الثنائية (2FA) على حساب GitHub الخاص بك | تضيف طبقة إضافية من الحماية للحساب | +| **أمان المستودع** | لا تقم أبدًا بحفظ معلومات حساسة | لا يجب أن تكون مفاتيح API وكلمات المرور في المستودعات العامة | | **إدارة التبعيات** | قم بتمكين Dependabot للتحديثات | يحافظ على تبعياتك آمنة ومحدثة | -> ⚠️ **تذكير أمني مهم**: لا تقم أبدًا بحفظ مفاتيح API أو كلمات المرور أو أي معلومات حساسة في أي مستودع. استخدم المتغيرات البيئية وملفات `.gitignore` لحماية البيانات الحساسة. +> ⚠️ **تذكير أمني حرج**: لا تقم أبدًا بحفظ مفاتيح API أو كلمات المرور أو أي معلومات حساسة في أي مستودع. استخدم المتغيرات البيئية وملفات `.gitignore` لحماية البيانات الحساسة. **إعداد المصادقة الحديثة:** @@ -101,40 +118,64 @@ git remote set-url origin git@github.com:username/repository.git --- -## إدارة الكود الخاص بك مثل المحترفين - -حسنًا، هنا تبدأ الأمور في أن تصبح مثيرة حقًا! 🎉 نحن على وشك تعلم كيفية تتبع وإدارة الكود الخاص بك مثل المحترفين، وبصراحة، هذا أحد الأشياء المفضلة لدي لتعليمها لأنه يغير اللعبة تمامًا. - -تخيل هذا: أنت تكتب قصة مذهلة، وتريد تتبع كل مسودة، وكل تعديل رائع، وكل لحظة "انتظر، هذا عبقري!" على طول الطريق. هذا بالضبط ما يفعله Git لكودك! إنه مثل وجود دفتر ملاحظات مذهل يسافر عبر الزمن ويتذكر كل شيء – كل ضغطة مفتاح، كل تغيير، كل لحظة "أوه، هذا كسر كل شيء" التي يمكنك التراجع عنها فورًا. - -سأكون صادقًا – قد يبدو هذا مربكًا في البداية. عندما بدأت، كنت أفكر "لماذا لا يمكنني فقط حفظ ملفاتي بشكل طبيعي؟" لكن ثق بي في هذا: بمجرد أن تفهم Git (وستفهمه!)، ستحصل على تلك اللحظة المضيئة حيث تفكر "كيف كنت أبرمج بدون هذا؟" إنه مثل اكتشاف أنك تستطيع الطيران عندما كنت تمشي في كل مكان طوال حياتك! - -لنفترض أن لديك مجلدًا محليًا يحتوي على مشروع كود وتريد البدء في تتبع تقدمك باستخدام Git - نظام التحكم في الإصدارات. بعض الناس يقارنون استخدام Git بكتابة رسالة حب لنفسك المستقبلية. قراءة رسائل الحفظ الخاصة بك بعد أيام أو أسابيع أو أشهر ستتيح لك استرجاع سبب اتخاذك قرارًا معينًا، أو "التراجع" عن تغيير – هذا إذا كنت تكتب رسائل حفظ جيدة. +## إدارة الكود الخاص بك كمحترف + +حسنًا، هنا تبدأ الأمور في أن تصبح مثيرة حقًا! 🎉 نحن على وشك تعلم كيفية تتبع وإدارة الكود الخاص بك مثل المحترفين، وبصراحة، هذا أحد الأشياء المفضلة لدي لتعليمها لأنها تغير اللعبة تمامًا. + +تخيل هذا: أنت تكتب قصة مذهلة، وتريد تتبع كل مسودة، وكل تعديل رائع، وكل لحظة "انتظر، هذا عبقري!" على طول الطريق. هذا بالضبط ما يفعله Git لكودك! إنه مثل وجود دفتر ملاحظات مذهل يسافر عبر الزمن ويتذكر كل شيء – كل ضغطة مفتاح، كل تغيير، كل لحظة "أوه، لقد أفسدت كل شيء" التي يمكنك التراجع عنها فورًا. + +سأكون صريحًا – قد يبدو هذا مربكًا في البداية. عندما بدأت، كنت أفكر "لماذا لا يمكنني فقط حفظ ملفاتي بشكل طبيعي؟" ولكن ثق بي في هذا: بمجرد أن تفهم Git (وستفهمه!)، ستحصل على تلك اللحظة المضيئة حيث تفكر "كيف كنت أبرمج بدون هذا؟" إنه مثل اكتشاف أنك تستطيع الطيران بعد أن كنت تمشي طوال حياتك! + +لنفترض أن لديك مجلدًا محليًا يحتوي على مشروع كود وتريد البدء في تتبع تقدمك باستخدام Git - نظام التحكم في الإصدارات. بعض الناس يقارنون استخدام Git بكتابة رسالة حب لنفسك المستقبلية. عند قراءة رسائل الحفظ الخاصة بك بعد أيام أو أسابيع أو أشهر، ستتمكن من تذكر سبب اتخاذك لقرار معين، أو "التراجع" عن تغيير – بالطبع، عندما تكتب رسائل حفظ جيدة. + +```mermaid +flowchart TD + A[📁 Your Project Files] --> B{Is it a Git Repository?} + B -->|No| C[git init] + B -->|Yes| D[Make Changes] + C --> D + D --> E[git add .] + E --> F["git commit -m 'message'"] + F --> G[git push] + G --> H[🌟 Code on GitHub!] + + H --> I{Want to collaborate?} + I -->|Yes| J[Fork & Clone] + I -->|No| D + J --> K[Create Branch] + K --> L[Make Changes] + L --> M[Pull Request] + M --> N[🎉 Contributing!] + + style A fill:#fff59d + style H fill:#c8e6c9 + style N fill:#ff4081,color:#fff +``` -### المهمة: إنشاء أول مستودع لك! +### المهمة: إنشاء مستودعك الأول! -> 🎯 **مهمتك (وأنا متحمس جدًا لك!)**: سنقوم بإنشاء أول مستودع GitHub لك معًا! بحلول الوقت الذي ننتهي فيه هنا، سيكون لديك ركن صغير خاص بك على الإنترنت حيث يعيش كودك، وستكون قد قمت بأول "حفظ" (هذا هو مصطلح المطورين لحفظ عملك بطريقة ذكية جدًا). +> 🎯 **مهمتك (وأنا متحمس جدًا لك!)**: سنقوم بإنشاء مستودع GitHub الأول الخاص بك معًا! بحلول الوقت الذي ننتهي فيه هنا، سيكون لديك ركن صغير خاص بك على الإنترنت حيث يعيش كودك، وستكون قد قمت بأول "حفظ" (هذا هو المصطلح الذي يستخدمه المطورون لحفظ عملهم بطريقة ذكية جدًا). > -> هذه لحظة خاصة جدًا – أنت على وشك الانضمام رسميًا إلى مجتمع المطورين العالمي! لا زلت أتذكر الإثارة عند إنشاء أول مستودع لي والتفكير "واو، أنا أفعل هذا حقًا!" +> هذه لحظة خاصة جدًا – أنت على وشك الانضمام رسميًا إلى المجتمع العالمي للمطورين! ما زلت أتذكر الإثارة عند إنشاء مستودعي الأول والتفكير "واو، أنا أفعل هذا حقًا!" -دعنا نمر بهذه المغامرة معًا، خطوة بخطوة. خذ وقتك مع كل جزء – لا يوجد جائزة للسرعة، وأعدك أن كل خطوة ستصبح منطقية. تذكر، كل نجم برمجي تعجب به كان يجلس تمامًا حيث أنت الآن، على وشك إنشاء أول مستودع له. كم هذا رائع؟ +دعنا نخوض هذه المغامرة معًا، خطوة بخطوة. خذ وقتك مع كل جزء – لا توجد جائزة للاستعجال، وأعدك أن كل خطوة ستصبح منطقية. تذكر، كل نجم برمجي تعجب به كان يومًا ما جالسًا في مكانك تمامًا، على وشك إنشاء مستودعه الأول. كم هذا رائع؟ > شاهد الفيديو > -> [![فيديو أساسيات Git و GitHub](https://img.youtube.com/vi/9R31OUPpxU4/0.jpg)](https://www.youtube.com/watch?v=9R31OUPpxU4) +> [![فيديو أساسيات Git وGitHub](https://img.youtube.com/vi/9R31OUPpxU4/0.jpg)](https://www.youtube.com/watch?v=9R31OUPpxU4) **لنقم بذلك معًا:** -1. **إنشاء مستودعك على GitHub**. توجه إلى GitHub.com وابحث عن الزر الأخضر اللامع **جديد** (أو علامة **+** في الزاوية اليمنى العليا). اضغط عليه واختر **مستودع جديد**. +1. **إنشاء مستودعك على GitHub**. توجه إلى GitHub.com وابحث عن الزر الأخضر اللامع **جديد** (أو علامة **+** في الزاوية العلوية اليمنى). انقر عليه واختر **مستودع جديد**. إليك ما يجب فعله: 1. امنح مستودعك اسمًا – اجعله شيئًا ذا معنى بالنسبة لك! 1. أضف وصفًا إذا أردت (هذا يساعد الآخرين على فهم مشروعك) - 1. قرر إذا كنت تريد أن يكون عامًا (يمكن للجميع رؤيته) أو خاصًا (فقط لك) + 1. قرر ما إذا كنت تريد أن يكون عامًا (يمكن للجميع رؤيته) أو خاصًا (فقط لك) 1. أوصي بتحديد المربع لإضافة ملف README – إنه مثل الصفحة الأولى لمشروعك - 1. اضغط على **إنشاء مستودع** واحتفل – لقد أنشأت أول مستودع لك! 🎉 + 1. انقر على **إنشاء مستودع** واحتفل – لقد أنشأت مستودعك الأول! 🎉 -2. **انتقل إلى مجلد مشروعك**. الآن دعنا نفتح الطرفية (لا تقلق، إنها ليست مخيفة كما تبدو!). نحتاج إلى إخبار جهاز الكمبيوتر الخاص بك بمكان ملفات مشروعك. اكتب هذا الأمر: +2. **انتقل إلى مجلد مشروعك**. الآن دعنا نفتح الطرفية الخاصة بك (لا تقلق، ليست مخيفة كما تبدو!). نحتاج إلى إخبار جهاز الكمبيوتر الخاص بك بمكان ملفات مشروعك. اكتب هذا الأمر: ```bash cd [name of your folder] @@ -142,10 +183,10 @@ git remote set-url origin git@github.com:username/repository.git **ما الذي نفعله هنا:** - نحن نقول لجهاز الكمبيوتر "مرحبًا، خذني إلى مجلد مشروعي" - - هذا يشبه فتح مجلد معين على سطح المكتب، لكننا نفعل ذلك بأوامر نصية - - استبدل `[اسم مجلدك]` باسم مجلد مشروعك الفعلي + - هذا يشبه فتح مجلد معين على سطح المكتب، ولكننا نقوم بذلك باستخدام أوامر نصية + - استبدل `[name of your folder]` باسم مجلد مشروعك الفعلي -3. **حول مجلدك إلى مستودع Git**. هنا يحدث السحر! اكتب: +3. **حوّل مجلدك إلى مستودع Git**. هنا يحدث السحر! اكتب: ```bash git init @@ -154,7 +195,7 @@ git remote set-url origin git@github.com:username/repository.git **ما الذي حدث للتو (أشياء رائعة جدًا!):** - قام Git بإنشاء مجلد مخفي `.git` في مشروعك – لن تراه، لكنه موجود! - أصبح مجلدك العادي الآن "مستودعًا" يمكنه تتبع كل تغيير تقوم به - - فكر فيه كإعطاء مجلدك قوى خارقة لتذكر كل شيء + - فكر في الأمر كأنه يمنح مجلدك قوى خارقة لتذكر كل شيء 4. **تحقق مما يحدث**. دعنا نرى ما الذي يعتقده Git عن مشروعك الآن: @@ -162,9 +203,9 @@ git remote set-url origin git@github.com:username/repository.git git status ``` - **فهم ما يقوله Git لك:** + **فهم ما يقوله Git:** - قد ترى شيئًا يبدو مثل هذا: + قد ترى شيئًا يبدو هكذا: ```output Changes not staged for commit: @@ -175,14 +216,14 @@ git remote set-url origin git@github.com:username/repository.git modified: file2.txt ``` - **لا تقلق! إليك ما يعنيه هذا:** + **لا تقلق! هذا ما يعنيه:** - الملفات باللون **الأحمر** هي ملفات بها تغييرات لكنها ليست جاهزة للحفظ بعد - الملفات باللون **الأخضر** (عندما تراها) جاهزة للحفظ - Git يساعدك بإخبارك بالضبط بما يمكنك فعله بعد ذلك > 💡 **نصيحة احترافية**: أمر `git status` هو أفضل صديق لك! استخدمه في أي وقت تشعر فيه بالارتباك بشأن ما يحدث. إنه مثل سؤال Git "مرحبًا، ما الوضع الآن؟" -5. **جهز ملفاتك للحفظ** (هذا يسمى "التجهيز"): +5. **جهّز ملفاتك للحفظ** (هذا يسمى "التجهيز"): ```bash git add . @@ -190,10 +231,10 @@ git remote set-url origin git@github.com:username/repository.git **ما الذي فعلناه للتو:** - أخبرنا Git "مرحبًا، أريد تضمين جميع ملفاتي في الحفظ التالي" - - النقطة `.` تشبه قول "كل شيء في هذا المجلد" - - الآن ملفاتك "مجهزة" وجاهزة للخطوة التالية + - النقطة `.` تعني "كل شيء في هذا المجلد" + - الآن ملفاتك "جاهزة" للخطوة التالية - **هل تريد أن تكون أكثر انتقائية؟** يمكنك إضافة ملفات محددة فقط: + **تريد أن تكون أكثر انتقائية؟** يمكنك إضافة ملفات محددة فقط: ```bash git add [file or folder name] @@ -204,7 +245,7 @@ git remote set-url origin git@github.com:username/repository.git - يساعدك على تنظيم عملك في أجزاء منطقية - يجعل من السهل فهم ما تغير ومتى - **غيرت رأيك؟** لا تقلق! يمكنك إزالة تجهيز الملفات مثل هذا: + **غيرت رأيك؟** لا تقلق! يمكنك إزالة الملفات من التجهيز هكذا: ```bash # Unstage everything @@ -225,240 +266,309 @@ git remote set-url origin git@github.com:username/repository.git **🎉 تهانينا! لقد قمت بأول عملية حفظ!** **ما الذي حدث للتو:** - - قام Git بأخذ "لقطة" لجميع الملفات المجهزة في هذه اللحظة بالضبط - - رسالة الحفظ الخاصة بك "الحفظ الأول" تشرح ما يتعلق به نقطة الحفظ هذه - - أعطى Git هذه اللقطة معرفًا فريدًا حتى تتمكن دائمًا من العثور عليها لاحقًا + - أخذ Git "لقطة" لجميع الملفات الجاهزة في هذه اللحظة بالضبط + - رسالة الحفظ "first commit" تشرح ما يدور حوله هذا الحفظ + - أعطى Git لهذه اللقطة معرفًا فريدًا حتى تتمكن دائمًا من العثور عليها لاحقًا - لقد بدأت رسميًا في تتبع تاريخ مشروعك! - > 💡 **رسائل الحفظ المستقبلية**: بالنسبة لعمليات الحفظ القادمة، كن أكثر وصفًا! بدلًا من "تحديث الأشياء"، جرب "إضافة نموذج الاتصال إلى الصفحة الرئيسية" أو "إصلاح خطأ في قائمة التنقل". نفسك المستقبلية ستشكرك! + > 💡 **رسائل الحفظ المستقبلية**: بالنسبة للحفظات القادمة، كن أكثر وصفًا! بدلاً من "تحديث الأشياء"، جرب "إضافة نموذج الاتصال إلى الصفحة الرئيسية" أو "إصلاح خطأ في قائمة التنقل". ستشكر نفسك في المستقبل! 7. **ربط مشروعك المحلي بـ GitHub**. الآن، مشروعك موجود فقط على جهاز الكمبيوتر الخاص بك. دعنا نربطه بمستودع GitHub الخاص بك حتى تتمكن من مشاركته مع العالم! - أولاً، توجه إلى صفحة مستودع GitHub الخاص بك ونسخ الرابط. ثم عد إلى هنا واكتب: + أولاً، انتقل إلى صفحة مستودع GitHub الخاص بك ونسخ الرابط. ثم عد إلى هنا واكتب: ```bash git remote add origin https://github.com/username/repository_name.git ``` (استبدل هذا الرابط برابط مستودعك الفعلي!) +**ما قمنا به للتو:** +- أنشأنا اتصالاً بين مشروعك المحلي ومستودع GitHub الخاص بك. +- "Origin" هو مجرد اسم مستعار لمستودع GitHub الخاص بك – يشبه إضافة جهة اتصال إلى هاتفك. +- الآن يعرف Git المحلي الخاص بك أين يرسل الكود الخاص بك عندما تكون جاهزًا لمشاركته. - **ما الذي فعلناه للتو:** -- قمنا بإنشاء اتصال بين مشروعك المحلي ومستودع GitHub الخاص بك -- "Origin" هو مجرد اسم مستعار لمستودع GitHub الخاص بك – يشبه إضافة جهة اتصال إلى هاتفك -- الآن يعرف Git المحلي الخاص بك أين يرسل الكود الخاص بك عندما تكون جاهزًا لمشاركته - -💡 **طريقة أسهل**: إذا كان لديك GitHub CLI مثبتًا، يمكنك القيام بذلك بأمر واحد: +💡 **طريقة أسهل**: إذا كان لديك GitHub CLI مثبتًا، يمكنك القيام بذلك بأمر واحد: ```bash gh repo create my-repo --public --push --source=. ``` - -8. **أرسل الكود الخاص بك إلى GitHub** (اللحظة الكبيرة!): + +8. **أرسل الكود الخاص بك إلى GitHub** (اللحظة الحاسمة!): ```bash git push -u origin main ``` - -**🚀 هذه هي اللحظة! أنت تقوم برفع الكود الخاص بك إلى GitHub!** -**ما الذي يحدث:** -- التغييرات التي قمت بها تنتقل من جهاز الكمبيوتر الخاص بك إلى GitHub -- العلم `-u` يقوم بإعداد اتصال دائم لتسهيل عمليات الدفع المستقبلية -- "main" هو اسم الفرع الأساسي الخاص بك (مثل المجلد الرئيسي) -- بعد ذلك، يمكنك فقط كتابة `git push` للرفع في المستقبل! +**🚀 هذا هو! أنت تقوم برفع الكود الخاص بك إلى GitHub!** + +**ما يحدث:** +- تنتقل التغييرات التي أجريتها من جهاز الكمبيوتر الخاص بك إلى GitHub. +- العلم `-u` يقوم بإعداد اتصال دائم لتسهيل عمليات الدفع المستقبلية. +- "main" هو اسم الفرع الرئيسي الخاص بك (مثل المجلد الرئيسي). +- بعد ذلك، يمكنك فقط كتابة `git push` لعمليات الرفع المستقبلية! -💡 **ملاحظة سريعة**: إذا كان اسم الفرع الخاص بك مختلفًا (مثل "master")، استخدم هذا الاسم بدلاً من ذلك. يمكنك التحقق باستخدام `git branch --show-current`. +💡 **ملاحظة سريعة**: إذا كان اسم الفرع الخاص بك مختلفًا (مثل "master")، فاستخدم هذا الاسم بدلاً من ذلك. يمكنك التحقق باستخدام `git branch --show-current`. -9. **إيقاع البرمجة اليومي الجديد الخاص بك** (هنا يصبح الأمر ممتعًا!): +9. **إيقاعك اليومي الجديد في البرمجة** (هنا يصبح الأمر ممتعًا!): -من الآن فصاعدًا، كلما أجريت تغييرات على مشروعك، لديك هذه الخطوات الثلاث البسيطة: +من الآن فصاعدًا، كلما أجريت تغييرات على مشروعك، لديك هذه الخطوات الثلاث البسيطة: ```bash git add . git commit -m "describe what you changed" git push ``` - -**هذا يصبح نبض البرمجة الخاص بك:** -- قم بإجراء تغييرات رائعة على الكود الخاص بك ✨ -- قم بتجهيزها باستخدام `git add` ("مرحبًا Git، انتبه لهذه التغييرات!") -- احفظها باستخدام `git commit` ورسالة وصفية (ستشكر نفسك في المستقبل!) -- شاركها مع العالم باستخدام `git push` 🚀 -- كرر العملية – بجدية، هذا يصبح طبيعيًا مثل التنفس! - -أحب هذا التدفق لأنه يشبه وجود نقاط حفظ متعددة في لعبة فيديو. أجريت تغييرًا تحبه؟ قم بحفظه! تريد تجربة شيء محفوف بالمخاطر؟ لا مشكلة – يمكنك دائمًا العودة إلى آخر حفظ إذا ساءت الأمور! -> 💡 **نصيحة**: قد ترغب أيضًا في اعتماد ملف `.gitignore` لمنع ظهور الملفات التي لا تريد تتبعها على GitHub - مثل ملف الملاحظات الذي تخزنه في نفس المجلد ولكنه ليس له مكان في مستودع عام. يمكنك العثور على قوالب لملفات `.gitignore` في [.gitignore templates](https://github.com/github/gitignore) أو إنشاء واحد باستخدام [gitignore.io](https://www.toptal.com/developers/gitignore). +**هذا يصبح نبض البرمجة الخاص بك:** +- قم بإجراء تغييرات رائعة على الكود الخاص بك ✨ +- قم بتهيئتها باستخدام `git add` ("مرحبًا Git، انتبه لهذه التغييرات!") +- احفظها باستخدام `git commit` ورسالة وصفية (ستشكر نفسك في المستقبل!) +- شاركها مع العالم باستخدام `git push` 🚀 +- كرر العملية – بجدية، هذا يصبح طبيعيًا مثل التنفس! + +أحب هذا الأسلوب لأنه يشبه وجود نقاط حفظ متعددة في لعبة فيديو. أجريت تغييرًا تحبه؟ قم بحفظه! تريد تجربة شيء محفوف بالمخاطر؟ لا مشكلة – يمكنك دائمًا العودة إلى آخر حفظ إذا حدث خطأ ما! + +> 💡 **نصيحة**: قد ترغب أيضًا في اعتماد ملف `.gitignore` لمنع ظهور الملفات التي لا تريد تتبعها على GitHub - مثل ملف الملاحظات الذي تخزنه في نفس المجلد ولكنه ليس له مكان في مستودع عام. يمكنك العثور على قوالب لملفات `.gitignore` في [.gitignore templates](https://github.com/github/gitignore) أو إنشاء واحد باستخدام [gitignore.io](https://www.toptal.com/developers/gitignore). + +### 🧠 **أول تسجيل في المستودع: كيف كان شعورك؟** + +**خذ لحظة للاحتفال والتفكير:** +- كيف كان شعورك عندما رأيت الكود الخاص بك يظهر على GitHub لأول مرة؟ +- أي خطوة شعرت بأنها الأكثر إرباكًا، وأي خطوة كانت سهلة بشكل مفاجئ؟ +- هل يمكنك شرح الفرق بين `git add`، `git commit`، و `git push` بكلماتك الخاصة؟ + +```mermaid +stateDiagram-v2 + [*] --> LocalFiles: Create project + LocalFiles --> Staged: git add . + Staged --> Committed: git commit + Committed --> GitHub: git push + GitHub --> [*]: Success! 🎉 + + note right of Staged + Files ready to save + end note + + note right of Committed + Snapshot created + end note +``` -#### تدفقات Git الحديثة +> **تذكر**: حتى المطورين ذوي الخبرة ينسون أحيانًا الأوامر الدقيقة. جعل هذا الأسلوب يصبح ذاكرة عضلية يتطلب ممارسة - أنت تقوم بعمل رائع! -فكر في اعتماد هذه الممارسات الحديثة: +#### أساليب Git الحديثة -- **التزامات تقليدية**: استخدم تنسيقًا موحدًا لرسائل الالتزام مثل `feat:`، `fix:`، `docs:`، إلخ. تعرف على المزيد في [conventionalcommits.org](https://www.conventionalcommits.org/) -- **التزامات ذرية**: اجعل كل التزام يمثل تغييرًا منطقيًا واحدًا -- **التزامات متكررة**: قم بالالتزام بشكل متكرر مع رسائل وصفية بدلاً من الالتزامات الكبيرة وغير المتكررة +فكر في تبني هذه الممارسات الحديثة: -#### رسائل الالتزام +- **التزامات تقليدية**: استخدم تنسيقًا قياسيًا لرسائل الالتزام مثل `feat:`، `fix:`، `docs:`، إلخ. تعرف على المزيد في [conventionalcommits.org](https://www.conventionalcommits.org/) +- **التزامات ذرية**: اجعل كل التزام يمثل تغييرًا منطقيًا واحدًا. +- **التزامات متكررة**: قم بالالتزام بشكل متكرر مع رسائل وصفية بدلاً من الالتزامات الكبيرة وغير المتكررة. -سطر موضوع الالتزام الجيد يكمل الجملة التالية: -إذا تم تطبيقه، فإن هذا الالتزام سيقوم بـ <سطر الموضوع الخاص بك هنا> +#### رسائل الالتزام -استخدم صيغة الأمر، الزمن الحاضر: "تغيير" وليس "تم تغييره" ولا "يغير". -كما هو الحال في الموضوع، في النص (اختياري) أيضًا استخدم صيغة الأمر، الزمن الحاضر. يجب أن يتضمن النص الدافع للتغيير ويقارن ذلك بالسلوك السابق. أنت تشرح `لماذا`، وليس `كيف`. +سطر موضوع الالتزام الجيد يكمل الجملة التالية: +إذا تم تطبيقه، فإن هذا الالتزام سي <سطر الموضوع الخاص بك هنا> -✅ خذ بضع دقائق لتصفح GitHub. هل يمكنك العثور على رسالة التزام رائعة حقًا؟ هل يمكنك العثور على واحدة بسيطة جدًا؟ ما المعلومات التي تعتقد أنها الأكثر أهمية وفائدة لتوصيلها في رسالة الالتزام؟ +بالنسبة للموضوع، استخدم صيغة الأمر، الزمن الحاضر: "تغيير" وليس "تم تغييره" ولا "تغييرات". كما هو الحال في الموضوع، في النص (اختياري) استخدم أيضًا صيغة الأمر، الزمن الحاضر. يجب أن يتضمن النص الدافع للتغيير ويقارن ذلك بالسلوك السابق. أنت تشرح "لماذا"، وليس "كيف". -## العمل مع الآخرين (الجزء الممتع!) +✅ خذ بضع دقائق لتصفح GitHub. هل يمكنك العثور على رسالة التزام رائعة حقًا؟ هل يمكنك العثور على رسالة بسيطة جدًا؟ ما المعلومات التي تعتقد أنها الأكثر أهمية وفائدة لنقلها في رسالة الالتزام؟ -تمسك بقبعتك لأن هذا هو المكان الذي يصبح فيه GitHub سحريًا تمامًا! 🪄 لقد أتقنت إدارة الكود الخاص بك، ولكن الآن نحن نغوص في الجزء المفضل لدي – التعاون مع أشخاص رائعين من جميع أنحاء العالم. +## العمل مع الآخرين (الجزء الممتع!) -تخيل هذا: تستيقظ غدًا وترى أن شخصًا في طوكيو قد حسّن الكود الخاص بك أثناء نومك. ثم يقوم شخص في برلين بإصلاح خطأ كنت عالقًا فيه. وبحلول فترة الظهيرة، يضيف مطور في ساو باولو ميزة لم تفكر فيها أبدًا. هذا ليس خيالًا علميًا – هذا مجرد يوم عادي في عالم GitHub! +تمسك بقبعتك لأن هذا هو المكان الذي يصبح فيه GitHub سحريًا تمامًا! 🪄 لقد أتقنت إدارة الكود الخاص بك، ولكن الآن نحن نغوص في الجزء المفضل لدي – التعاون مع أشخاص رائعين من جميع أنحاء العالم. -ما يثيرني حقًا هو أن مهارات التعاون التي ستتعلمها؟ هذه هي نفس التدفقات التي تستخدمها الفرق في Google وMicrosoft وأفضل الشركات الناشئة كل يوم. أنت لا تتعلم مجرد أداة رائعة – أنت تتعلم اللغة السرية التي تجعل عالم البرمجيات بأكمله يعمل معًا. +تخيل هذا: تستيقظ غدًا وترى أن شخصًا في طوكيو قام بتحسين الكود الخاص بك أثناء نومك. ثم شخص في برلين يصلح خطأ كنت عالقًا فيه. بحلول فترة الظهيرة، يضيف مطور في ساو باولو ميزة لم تفكر فيها حتى. هذا ليس خيالًا علميًا – هذا مجرد يوم عادي في عالم GitHub! -بجدية، بمجرد أن تختبر شعور شخص ما بدمج أول طلب سحب لك، ستفهم لماذا يصبح المطورون متحمسين جدًا للمصادر المفتوحة. إنه مثل أن تكون جزءًا من أكبر مشروع فريق إبداعي في العالم! +ما يثيرني حقًا هو أن مهارات التعاون التي ستتعلمها؟ هذه هي نفس الأساليب التي تستخدمها الفرق في Google وMicrosoft وأفضل الشركات الناشئة كل يوم. أنت لا تتعلم مجرد أداة رائعة – أنت تتعلم اللغة السرية التي تجعل عالم البرمجيات بأكمله يعمل معًا. -> شاهد الفيديو -> -> [![فيديو أساسيات Git وGitHub](https://img.youtube.com/vi/bFCM-PC3cu8/0.jpg)](https://www.youtube.com/watch?v=bFCM-PC3cu8) +بجدية، بمجرد أن تختبر شعور أن يقوم شخص ما بدمج أول طلب سحب لك، ستفهم لماذا يصبح المطورون متحمسين جدًا للمصدر المفتوح. إنه مثل أن تكون جزءًا من أكبر مشروع فريق إبداعي في العالم! -السبب الرئيسي لوضع الأشياء على GitHub هو جعل التعاون مع المطورين الآخرين ممكنًا. +> شاهد الفيديو +> +> [![فيديو أساسيات Git وGitHub](https://img.youtube.com/vi/bFCM-PC3cu8/0.jpg)](https://www.youtube.com/watch?v=bFCM-PC3cu8) + +السبب الرئيسي لوضع الأشياء على GitHub هو جعل التعاون مع المطورين الآخرين ممكنًا. + +```mermaid +flowchart LR + A[🔍 Find Project] --> B[🍴 Fork Repository] + B --> C[📥 Clone to Local] + C --> D[🌿 Create Branch] + D --> E[✏️ Make Changes] + E --> F[💾 Commit Changes] + F --> G[📤 Push Branch] + G --> H[🔄 Create Pull Request] + H --> I{Maintainer Review} + I -->|✅ Approved| J[🎉 Merge!] + I -->|❓ Changes Requested| K[📝 Make Updates] + K --> F + J --> L[🧹 Clean Up Branches] + + style A fill:#e3f2fd + style J fill:#e8f5e8 + style L fill:#fff3e0 +``` -في مستودعك، انتقل إلى `Insights > Community` لترى كيف يقارن مشروعك بمعايير المجتمع الموصى بها. +في مستودعك، انتقل إلى `Insights > Community` لترى كيف يقارن مشروعك بمعايير المجتمع الموصى بها. -هل تريد أن يبدو مستودعك احترافيًا ومرحبًا؟ توجه إلى مستودعك وانقر على `Insights > Community`. هذه الميزة الرائعة تظهر لك كيف يقارن مشروعك بما يعتبره مجتمع GitHub "ممارسات مستودع جيدة". +هل تريد جعل مستودعك يبدو احترافيًا ومرحبًا؟ توجه إلى مستودعك وانقر على `Insights > Community`. هذه الميزة الرائعة تظهر لك كيف يقارن مشروعك بما يعتبره مجتمع GitHub "ممارسات مستودع جيدة". -> 🎯 **جعل مشروعك يلمع**: مستودع منظم جيدًا مع وثائق جيدة يشبه وجود واجهة متجر نظيفة ومرحبة. إنه يخبر الناس أنك تهتم بعملك ويجعل الآخرين يرغبون في المساهمة! +> 🎯 **جعل مشروعك يلمع**: المستودع المنظم جيدًا مع وثائق جيدة يشبه وجود واجهة متجر نظيفة ومرحبة. إنه يخبر الناس أنك تهتم بعملك ويجعل الآخرين يرغبون في المساهمة! -**إليك ما يجعل المستودع رائعًا:** +**إليك ما يجعل المستودع رائعًا:** -| ما يجب إضافته | لماذا هو مهم | ماذا يفعل لك | -|-------------|-------------------|---------------------| -| **الوصف** | الانطباع الأول مهم! | يعرف الناس فورًا ما يفعله مشروعك | -| **README** | الصفحة الرئيسية لمشروعك | مثل دليل سياحي ودود للزوار الجدد | -| **إرشادات المساهمة** | يظهر أنك ترحب بالمساعدة | يعرف الناس بالضبط كيف يمكنهم مساعدتك | -| **مدونة السلوك** | يخلق مساحة ودية | يشعر الجميع بالترحيب للمشاركة | -| **الرخصة** | وضوح قانوني | يعرف الآخرون كيف يمكنهم استخدام الكود الخاص بك | -| **سياسة الأمان** | يظهر أنك مسؤول | يوضح ممارسات احترافية | +| ما يجب إضافته | لماذا هو مهم | ماذا يفعل لك | +|-------------|-------------------|---------------------| +| **الوصف** | الانطباع الأول مهم! | يعرف الناس فورًا ما يفعله مشروعك | +| **README** | الصفحة الرئيسية لمشروعك | مثل دليل سياحي ودود للزوار الجدد | +| **إرشادات المساهمة** | يظهر أنك ترحب بالمساعدة | يعرف الناس بالضبط كيف يمكنهم مساعدتك | +| **مدونة السلوك** | يخلق بيئة ودية | يشعر الجميع بالترحيب للمشاركة | +| **الرخصة** | وضوح قانوني | يعرف الآخرون كيف يمكنهم استخدام الكود الخاص بك | +| **سياسة الأمان** | يظهر أنك مسؤول | يوضح الممارسات المهنية | -> 💡 **نصيحة احترافية**: يوفر GitHub قوالب لجميع هذه الملفات. عند إنشاء مستودع جديد، تحقق من المربعات لإنشاء هذه الملفات تلقائيًا. +> 💡 **نصيحة احترافية**: يوفر GitHub قوالب لجميع هذه الملفات. عند إنشاء مستودع جديد، تحقق من المربعات لإنشاء هذه الملفات تلقائيًا. -**ميزات GitHub الحديثة لاستكشافها:** +**ميزات GitHub الحديثة لاستكشافها:** -🤖 **الأتمتة وCI/CD:** -- **GitHub Actions** للاختبار والنشر التلقائي -- **Dependabot** لتحديث التبعيات تلقائيًا +🤖 **الأتمتة وCI/CD:** +- **GitHub Actions** للاختبار والنشر التلقائي. +- **Dependabot** لتحديث التبعيات تلقائيًا. -💬 **المجتمع وإدارة المشاريع:** -- **GitHub Discussions** للمحادثات المجتمعية خارج نطاق القضايا -- **GitHub Projects** لإدارة المشاريع بأسلوب كانبان -- **قواعد حماية الفروع** لفرض معايير جودة الكود +💬 **إدارة المجتمع والمشاريع:** +- **GitHub Discussions** للمحادثات المجتمعية خارج نطاق القضايا. +- **GitHub Projects** لإدارة المشاريع بأسلوب كانبان. +- **قواعد حماية الفروع** لفرض معايير جودة الكود. -كل هذه الموارد ستفيد في استيعاب أعضاء الفريق الجدد. وهذه هي عادةً الأشياء التي ينظر إليها المساهمون الجدد قبل حتى النظر إلى الكود الخاص بك، لمعرفة ما إذا كان مشروعك هو المكان المناسب لقضاء وقتهم. +كل هذه الموارد ستفيد في استيعاب أعضاء الفريق الجدد. وهذه هي عادةً الأشياء التي ينظر إليها المساهمون الجدد قبل حتى النظر إلى الكود الخاص بك، لمعرفة ما إذا كان مشروعك هو المكان المناسب لهم لقضاء وقتهم. -✅ ملفات README، على الرغم من أنها تستغرق وقتًا لإعدادها، غالبًا ما يتم تجاهلها من قبل المسؤولين المشغولين. هل يمكنك العثور على مثال لواحد وصفي بشكل خاص؟ ملاحظة: هناك بعض [الأدوات للمساعدة في إنشاء ملفات README جيدة](https://www.makeareadme.com/) قد ترغب في تجربتها. +✅ ملفات README، على الرغم من أنها تستغرق وقتًا للإعداد، غالبًا ما يتم تجاهلها من قبل المسؤولين المشغولين. هل يمكنك العثور على مثال لملف وصف مفصل بشكل خاص؟ ملاحظة: هناك بعض [الأدوات التي تساعد في إنشاء ملفات README جيدة](https://www.makeareadme.com/) قد ترغب في تجربتها. -### المهمة: دمج بعض الكود +### المهمة: دمج بعض الكود -تساعد وثائق المساهمة الأشخاص على المساهمة في المشروع. إنها تشرح أنواع المساهمات التي تبحث عنها وكيفية عمل العملية. سيحتاج المساهمون إلى المرور بسلسلة من الخطوات ليتمكنوا من المساهمة في مستودعك على GitHub: +تساعد وثائق المساهمة الأشخاص على المساهمة في المشروع. تشرح أنواع المساهمات التي تبحث عنها وكيفية عمل العملية. سيحتاج المساهمون إلى المرور بسلسلة من الخطوات ليتمكنوا من المساهمة في مستودعك على GitHub: -1. **تفرع مستودعك** ربما تريد أن يقوم الناس بـ _تفرع_ مشروعك. التفرع يعني إنشاء نسخة طبق الأصل من مستودعك على ملف تعريف GitHub الخاص بهم. -1. **الاستنساخ**. من هناك سيقومون باستنساخ المشروع إلى جهازهم المحلي. -1. **إنشاء فرع**. سترغب في أن تطلب منهم إنشاء _فرع_ لعملهم. -1. **تركيز التغيير على منطقة واحدة**. اطلب من المساهمين التركيز على مساهماتهم في شيء واحد في كل مرة - بهذه الطريقة تكون فرصك في _دمج_ عملهم أعلى. تخيل أنهم كتبوا إصلاح خطأ، أضافوا ميزة جديدة، وقاموا بتحديث عدة اختبارات - ماذا لو كنت تريد، أو يمكنك فقط تنفيذ 2 من 3، أو 1 من 3 تغييرات؟ +1. **نسخ مستودعك** ربما تريد أن يقوم الناس بـ _نسخ_ مشروعك. النسخ يعني إنشاء نسخة من مستودعك على ملف تعريف GitHub الخاص بهم. +1. **الاستنساخ**. من هناك سيقومون باستنساخ المشروع إلى جهازهم المحلي. +1. **إنشاء فرع**. ستطلب منهم إنشاء _فرع_ لعملهم. +1. **تركيز التغيير على منطقة واحدة**. اطلب من المساهمين التركيز على مساهماتهم في شيء واحد في كل مرة - بهذه الطريقة تكون فرص أن تتمكن من _دمج_ عملهم أعلى. تخيل أنهم كتبوا إصلاح خطأ، أضافوا ميزة جديدة، وقاموا بتحديث عدة اختبارات - ماذا لو كنت تريد، أو يمكنك فقط تنفيذ 2 من 3، أو 1 من 3 تغييرات؟ -✅ تخيل موقفًا تكون فيه الفروع مهمة بشكل خاص لكتابة الكود الجيد وشحنه. ما هي حالات الاستخدام التي يمكنك التفكير فيها؟ +✅ تخيل موقفًا تكون فيه الفروع ضرورية بشكل خاص لكتابة الكود الجيد وشحنه. ما هي حالات الاستخدام التي يمكنك التفكير فيها؟ -> ملاحظة، كن التغيير الذي تريد رؤيته في العالم، وقم بإنشاء فروع لعملك الخاص أيضًا. أي التزامات تقوم بها سيتم إجراؤها على الفرع الذي "تم التحقق منه" حاليًا. استخدم `git status` لمعرفة الفرع الذي تعمل عليه. +> ملاحظة، كن التغيير الذي تريد رؤيته في العالم، وقم بإنشاء فروع لعملك الخاص أيضًا. أي التزامات تقوم بها ستتم على الفرع الذي "تم التحقق منه" حاليًا. استخدم `git status` لمعرفة أي فرع هو. -لنمر عبر تدفق عمل المساهم. افترض أن المساهم قد قام بالفعل بـ _تفرع_ و _استنساخ_ المستودع بحيث يكون لديه مستودع Git جاهز للعمل عليه، على جهازه المحلي: +لنمر عبر سير عمل المساهم. افترض أن المساهم قد قام بالفعل بـ _نسخ_ و _استنساخ_ المستودع بحيث يكون لديه مستودع Git جاهز للعمل عليه، على جهازه المحلي: -1. **إنشاء فرع**. استخدم الأمر `git branch` لإنشاء فرع يحتوي على التغييرات التي يعتزم المساهمة بها: +1. **إنشاء فرع**. استخدم الأمر `git branch` لإنشاء فرع يحتوي على التغييرات التي يعتزم المساهمة بها: ```bash git branch [branch-name] ``` - - > 💡 **نهج حديث**: يمكنك أيضًا إنشاء الفرع الجديد والتبديل إليه في أمر واحد: + + > 💡 **نهج حديث**: يمكنك أيضًا إنشاء والتبديل إلى الفرع الجديد في أمر واحد: ```bash git switch -c [branch-name] ``` - -1. **التبديل إلى الفرع العامل**. قم بالتبديل إلى الفرع المحدد وقم بتحديث الدليل العامل باستخدام `git switch`: + +1. **التبديل إلى فرع العمل**. قم بالتبديل إلى الفرع المحدد وقم بتحديث الدليل العامل باستخدام `git switch`: ```bash git switch [branch-name] ``` - - > 💡 **ملاحظة حديثة**: `git switch` هو البديل الحديث لـ `git checkout` عند تغيير الفروع. إنه أكثر وضوحًا وأمانًا للمبتدئين. -1. **قم بالعمل**. في هذه المرحلة تريد إضافة تغييراتك. لا تنس إخبار Git عنها باستخدام الأوامر التالية: + > 💡 **ملاحظة حديثة**: `git switch` هو البديل الحديث لـ `git checkout` عند تغيير الفروع. إنه أكثر وضوحًا وأمانًا للمبتدئين. + +1. **قم بالعمل**. في هذه المرحلة، تريد إضافة تغييراتك. لا تنس إخبار Git بذلك باستخدام الأوامر التالية: ```bash git add . git commit -m "my changes" ``` - - > ⚠️ **جودة رسالة الالتزام**: تأكد من إعطاء الالتزام اسمًا جيدًا، سواء من أجلك أو من أجل المسؤول عن المستودع الذي تساعد فيه. كن محددًا بشأن ما قمت بتغييره! -1. **دمج عملك مع فرع `main`**. في مرحلة ما تكون قد انتهيت من العمل وتريد دمج عملك مع عمل فرع `main`. قد يكون فرع `main` قد تغير في هذه الأثناء لذا تأكد من تحديثه أولاً إلى أحدث إصدار باستخدام الأوامر التالية: + > ⚠️ **جودة رسالة الالتزام**: تأكد من إعطاء الالتزام اسمًا جيدًا، سواء من أجلك أو من أجل المسؤول عن المستودع الذي تساعد فيه. كن محددًا بشأن ما قمت بتغييره! + +1. **دمج عملك مع فرع `main`**. في مرحلة ما تكون قد انتهيت من العمل وتريد دمج عملك مع عمل فرع `main`. قد يكون فرع `main` قد تغير في هذه الأثناء لذا تأكد أولاً من تحديثه إلى أحدث إصدار باستخدام الأوامر التالية: ```bash git switch main git pull ``` - - في هذه المرحلة تريد التأكد من أن أي _تعارضات_، وهي حالات لا يستطيع Git بسهولة _دمج_ التغييرات، تحدث في فرع العمل الخاص بك. لذلك قم بتشغيل الأوامر التالية: + + في هذه المرحلة تريد التأكد من أن أي _تعارضات_، وهي الحالات التي لا يستطيع Git بسهولة _دمج_ التغييرات، تحدث في فرع العمل الخاص بك. لذلك قم بتشغيل الأوامر التالية: ```bash git switch [branch_name] git merge main ``` - - الأمر `git merge main` سيجلب جميع التغييرات من `main` إلى فرعك. نأمل أن تتمكن من المتابعة فقط. إذا لم يكن الأمر كذلك، سيخبرك VS Code بالمكان الذي يكون فيه Git _مرتبكًا_ وتقوم فقط بتعديل الملفات المتأثرة لتحديد المحتوى الأكثر دقة. - 💡 **بديل حديث**: فكر في استخدام `git rebase` للحصول على تاريخ أنظف: + أمر `git merge main` سيجلب جميع التغييرات من `main` إلى فرعك. نأمل أن تتمكن من المتابعة بسهولة. إذا لم يكن الأمر كذلك، سيخبرك VS Code بالمكان الذي يكون فيه Git _مرتبكًا_ وستقوم بتعديل الملفات المتأثرة لتحديد المحتوى الأكثر دقة. + + 💡 **بديل حديث**: فكر في استخدام `git rebase` للحصول على تاريخ أنظف: ```bash git rebase main ``` - - هذا يعيد تشغيل التزاماتك على أحدث فرع رئيسي، مما يخلق تاريخًا خطيًا. + هذا يعيد تشغيل التزاماتك على أحدث فرع رئيسي، مما يخلق تاريخًا خطيًا. -1. **أرسل عملك إلى GitHub**. إرسال عملك إلى GitHub يعني شيئين. دفع فرعك إلى مستودعك ثم فتح طلب سحب. +1. **أرسل عملك إلى GitHub**. إرسال عملك إلى GitHub يعني شيئين. دفع فرعك إلى مستودعك ثم فتح طلب سحب. ```bash git push --set-upstream origin [branch-name] ``` - - الأمر أعلاه ينشئ الفرع على مستودعك المتفرع. -1. **افتح طلب سحب**. بعد ذلك، تريد فتح طلب سحب. تقوم بذلك عن طريق الانتقال إلى المستودع المتفرع على GitHub. سترى مؤشرًا على GitHub يسألك ما إذا كنت تريد إنشاء طلب سحب جديد، تضغط عليه ويتم نقلك إلى واجهة حيث يمكنك تغيير عنوان رسالة الالتزام، وإعطائها وصفًا أكثر ملاءمة. الآن سيرى المسؤول عن المستودع الذي قمت بتفرعه هذا الطلب و _أصابعك متقاطعة_ سيقدرون ويقومون بـ _دمج_ طلب السحب الخاص بك. أنت الآن مساهم، ياي :) + الأمر أعلاه ينشئ الفرع على مستودعك المنسوخ. + +### 🤝 **اختبار مهارات التعاون: هل أنت جاهز للعمل مع الآخرين؟** + +**لنرى كيف تشعر بشأن التعاون:** +- هل فكرة النسخ وطلبات السحب أصبحت واضحة لك الآن؟ +- ما هو الشيء الذي تريد ممارسته أكثر بشأن العمل مع الفروع؟ +- ما مدى راحتك في المساهمة في مشروع شخص آخر؟ + +```mermaid +mindmap + root((Git Collaboration)) + Branching + Feature branches + Bug fix branches + Experimental work + Pull Requests + Code review + Discussion + Testing + Best Practices + Clear commit messages + Small focused changes + Good documentation +``` + +> **تعزيز الثقة**: كل مطور تعجب به كان يومًا ما متوترًا بشأن أول طلب سحب له. مجتمع GitHub مرحب جدًا بالمبتدئين! + +1. **افتح طلب سحب**. بعد ذلك، تريد فتح طلب سحب. تقوم بذلك عن طريق التنقل إلى المستودع المنسوخ على GitHub. سترى مؤشرًا على GitHub يسأل ما إذا كنت تريد إنشاء طلب سحب جديد، تضغط على ذلك وستنتقل إلى واجهة حيث يمكنك تغيير عنوان رسالة الالتزام، وإعطائها وصفًا أكثر ملاءمة. الآن سيرى المسؤول عن المستودع الذي نسخته هذا الطلب و _بإذن الله_ سيقدر ويقوم بـ _دمج_ طلب السحب الخاص بك. أنت الآن مساهم، تهانينا :) - 💡 **نصيحة حديثة**: يمكنك أيضًا إنشاء طلبات السحب باستخدام GitHub CLI: + 💡 **نصيحة حديثة**: يمكنك أيضًا إنشاء طلبات السحب باستخدام GitHub CLI: ```bash gh pr create --title "Your PR title" --body "Description of changes" ``` - - 🔧 **أفضل الممارسات لطلبات السحب**: - - قم بربط القضايا ذات الصلة باستخدام كلمات مثل "Fixes #123" - - أضف لقطات شاشة للتغييرات في واجهة المستخدم - - اطلب مراجعين محددين - - استخدم طلبات السحب المؤقتة للعمل الجاري - - تأكد من اجتياز جميع فحوصات CI قبل طلب المراجعة -1. **تنظيف**. يعتبر تنظيف الفروع بعد دمج طلب السحب بنجاح ممارسة جيدة. تريد تنظيف الفرع المحلي والفرع الذي دفعته إلى GitHub. أولاً دعنا نحذفه محليًا باستخدام الأمر التالي: + 🔧 **أفضل الممارسات لطلبات السحب**: + - قم بربط القضايا ذات الصلة باستخدام كلمات مثل "Fixes #123". + - أضف لقطات شاشة للتغييرات في واجهة المستخدم. + - اطلب مراجعين محددين. + - استخدم طلبات السحب المؤقتة للعمل الجاري. + - تأكد من اجتياز جميع فحوصات CI قبل طلب المراجعة. +1. **تنظيف العمل**. يُعتبر من الممارسات الجيدة أن تقوم بـ _تنظيف العمل_ بعد دمج طلب السحب بنجاح. يجب عليك تنظيف كل من الفرع المحلي والفرع الذي قمت بدفعه إلى GitHub. أولاً، دعنا نحذفه محليًا باستخدام الأمر التالي: ```bash git branch -d [branch-name] ``` - تأكد من الانتقال إلى صفحة GitHub للمستودع المتفرع بعد ذلك وإزالة الفرع البعيد الذي دفعته إليه. +تأكد من الذهاب إلى صفحة GitHub للمستودع المشتق بعد ذلك وإزالة الفرع البعيد الذي قمت بدفعه إليه. + +`طلب السحب` يبدو كأنه مصطلح غريب لأنك في الواقع تريد دفع تغييراتك إلى المشروع. ولكن يجب على المسؤول (مالك المشروع) أو الفريق الأساسي أن ينظر في تغييراتك قبل دمجها مع الفرع "الرئيسي" للمشروع، لذا فأنت في الواقع تطلب قرار تغيير من المسؤول. -`طلب السحب` يبدو وكأنه مصطلح غريب لأنك في الواقع تريد دفع تغييراتك إلى المشروع. لكن المسؤول (مالك المشروع) أو الفريق الأساسي يحتاج إلى النظر في تغييراتك قبل دمجها مع فرع "main" الخاص بالمشروع، لذا فأنت في الواقع تطلب قرار تغيير من المسؤول. +طلب السحب هو المكان الذي يتم فيه مقارنة ومناقشة الفروقات التي تم إدخالها على فرع معين مع المراجعات، التعليقات، الاختبارات المدمجة، والمزيد. طلب السحب الجيد يتبع تقريبًا نفس قواعد رسالة الالتزام. يمكنك إضافة مرجع إلى مشكلة في متتبع المشاكل، عندما يكون عملك على سبيل المثال يحل مشكلة. يتم ذلك باستخدام `#` متبوعًا برقم المشكلة. على سبيل المثال `#97`. -طلب السحب هو المكان الذي يتم فيه مقارنة ومناقشة الفروقات التي تم إدخالها على فرع مع المراجعات، التعليقات، الاختبارات المدمجة، والمزيد. يتبع طلب السحب الجيد تقريبًا نفس قواعد رسالة الالتزام. يمكنك إضافة مرجع إلى قضية في متتبع القضايا، عندما يكون عملك على سبيل المثال يحل قضية. يتم ذلك باستخدام `#` متبوعًا برقم القضية الخاصة بك. على سبيل المثال `#97`. -🤞أصابعك متشابكة على أمل أن تمر جميع الفحوصات ويتم دمج تغييراتك في المشروع من قبل مالكي المشروع🤞 +🤞نتمنى أن تمر جميع الفحوصات بنجاح وأن يقوم مالك المشروع بدمج تغييراتك في المشروع🤞 -قم بتحديث الفرع المحلي الحالي الخاص بك بجميع الالتزامات الجديدة من الفرع البعيد المقابل على GitHub: +قم بتحديث الفرع المحلي الحالي الذي تعمل عليه بجميع الالتزامات الجديدة من الفرع البعيد المقابل على GitHub: `git pull` @@ -466,23 +576,43 @@ git remote set-url origin git@github.com:username/repository.git هل أنت مستعد لشيء سيذهلك تمامًا؟ 🤯 دعنا نتحدث عن المساهمة في مشاريع المصادر المفتوحة – وأنا أشعر بالقشعريرة فقط من التفكير في مشاركة هذا معك! -هذه فرصتك لتكون جزءًا من شيء استثنائي حقًا. تخيل تحسين الأدوات التي يستخدمها ملايين المطورين يوميًا، أو إصلاح خطأ في تطبيق يحبه أصدقاؤك. هذا ليس مجرد حلم – هذا هو جوهر المساهمة في المصادر المفتوحة! - -ما يجعلني أشعر بالإثارة كل مرة أفكر في الأمر: كل أداة كنت تتعلم بها – محرر الكود الخاص بك، الأطر التي سنستكشفها، وحتى المتصفح الذي تقرأ فيه هذا – بدأت بشخص مثلك تمامًا يقوم بأول مساهمة له. ذلك المطور الرائع الذي أنشأ امتداد VS Code المفضل لديك؟ كان يومًا ما مبتدئًا ينقر على "إنشاء طلب سحب" بأيدٍ مرتجفة، تمامًا كما أنت على وشك القيام به. - -وهنا الجزء الأكثر جمالًا: مجتمع المصادر المفتوحة يشبه أكبر عناق جماعي على الإنترنت. معظم المشاريع تبحث بنشاط عن القادمين الجدد وتضع قضايا موسومة بـ "good first issue" خصيصًا لأشخاص مثلك! المشرفون يشعرون بالحماس عندما يرون مساهمين جدد لأنهم يتذكرون خطواتهم الأولى. - +هذه فرصتك لتكون جزءًا من شيء استثنائي حقًا. تخيل تحسين الأدوات التي يستخدمها ملايين المطورين يوميًا، أو إصلاح خطأ في تطبيق يحبه أصدقاؤك. هذا ليس مجرد حلم – هذا هو ما تدور حوله مساهمة المصادر المفتوحة! + +ما يجعلني أشعر بالإثارة في كل مرة أفكر في ذلك: كل أداة كنت تتعلم بها – محرر الكود الخاص بك، الأطر التي سنستكشفها، حتى المتصفح الذي تقرأ فيه هذا – بدأت بشخص مثلك تمامًا يقوم بأول مساهمة له. ذلك المطور الرائع الذي بنى امتداد VS Code المفضل لديك؟ كان يومًا ما مبتدئًا ينقر على "إنشاء طلب سحب" بأيدٍ مرتجفة، تمامًا كما أنت على وشك القيام به. + +وهنا الجزء الأكثر جمالًا: مجتمع المصادر المفتوحة يشبه أكبر عناق جماعي على الإنترنت. معظم المشاريع تبحث بنشاط عن القادمين الجدد ولديها مشاكل موسومة بـ "good first issue" خصيصًا للأشخاص مثلك! المسؤولون يشعرون بالحماس عندما يرون مساهمين جدد لأنهم يتذكرون خطواتهم الأولى. + +```mermaid +flowchart TD + A[🔍 Explore GitHub] --> B[🏷️ Find "good first issue"] + B --> C[📖 Read Contributing Guidelines] + C --> D[🍴 Fork Repository] + D --> E[💻 Set Up Local Environment] + E --> F[🌿 Create Feature Branch] + F --> G[✨ Make Your Contribution] + G --> H[🧪 Test Your Changes] + H --> I[📝 Write Clear Commit] + I --> J[📤 Push & Create PR] + J --> K[💬 Engage with Feedback] + K --> L[🎉 Merged! You're a Contributor!] + L --> M[🌟 Find Next Issue] + + style A fill:#e1f5fe + style L fill:#c8e6c9 + style M fill:#fff59d +``` + أنت لا تتعلم البرمجة فقط هنا – أنت تستعد للانضمام إلى عائلة عالمية من البنائين الذين يستيقظون كل يوم وهم يفكرون "كيف يمكننا جعل العالم الرقمي أفضل قليلاً؟" مرحبًا بك في النادي! 🌟 -أولاً، دعنا نجد مستودعًا (أو **repo**) على GitHub يثير اهتمامك وترغب في المساهمة فيه. ستحتاج إلى نسخ محتوياته إلى جهازك. +أولاً، دعنا نجد مستودعًا (أو **repo**) على GitHub يثير اهتمامك وترغب في المساهمة بتغيير فيه. ستحتاج إلى نسخ محتوياته إلى جهازك. -✅ طريقة جيدة للعثور على مستودعات "مناسبة للمبتدئين" هي [البحث باستخدام الوسم 'good-first-issue'](https://github.blog/2020-01-22-browse-good-first-issues-to-start-contributing-to-open-source/). +✅ طريقة جيدة للعثور على مستودعات مناسبة للمبتدئين هي [البحث باستخدام الوسم 'good-first-issue'](https://github.blog/2020-01-22-browse-good-first-issues-to-start-contributing-to-open-source/). ![نسخ مستودع محليًا](../../../../translated_images/clone_repo.5085c48d666ead57664f050d806e325d7f883be6838c821e08bc823ab7c66665.ar.png) -هناك عدة طرق لنسخ الكود. إحدى الطرق هي "استنساخ" محتويات المستودع باستخدام HTTPS أو SSH أو باستخدام GitHub CLI (واجهة سطر الأوامر). +هناك عدة طرق لنسخ الكود. إحدى الطرق هي "استنساخ" محتويات المستودع باستخدام HTTPS، SSH، أو باستخدام GitHub CLI (واجهة سطر الأوامر). -افتح الطرفية الخاصة بك واستنسخ المستودع كالتالي: +افتح الطرفية الخاصة بك واستنسخ المستودع كالتالي: ```bash # Using HTTPS git clone https://github.com/ProjectURL @@ -493,96 +623,155 @@ git clone git@github.com:username/repository.git # Using GitHub CLI gh repo clone username/repository ``` - -للعمل على المشروع، انتقل إلى المجلد الصحيح: + +للعمل على المشروع، انتقل إلى المجلد الصحيح: `cd ProjectURL` -يمكنك أيضًا فتح المشروع بالكامل باستخدام: -- **[GitHub Codespaces](https://github.com/features/codespaces)** - بيئة تطوير سحابية من GitHub مع VS Code في المتصفح -- **[GitHub Desktop](https://desktop.github.com/)** - تطبيق واجهة مستخدم لعمليات Git -- **[GitHub.dev](https://github.dev)** - اضغط على المفتاح `.` في أي مستودع GitHub لفتح VS Code في المتصفح -- **VS Code** مع امتداد طلبات السحب من GitHub +يمكنك أيضًا فتح المشروع بالكامل باستخدام: +- **[GitHub Codespaces](https://github.com/features/codespaces)** - بيئة تطوير سحابية من GitHub مع VS Code في المتصفح +- **[GitHub Desktop](https://desktop.github.com/)** - تطبيق واجهة المستخدم الرسومية لعمليات Git +- **[GitHub.dev](https://github.dev)** - اضغط على المفتاح `.` على أي مستودع GitHub لفتح VS Code في المتصفح +- **VS Code** مع امتداد طلبات السحب من GitHub أخيرًا، يمكنك تنزيل الكود في مجلد مضغوط. ### بعض الأشياء المثيرة للاهتمام حول GitHub -يمكنك وضع نجمة أو متابعة أو "استنساخ" أي مستودع عام على GitHub. يمكنك العثور على المستودعات التي وضعت لها نجمة في القائمة المنسدلة في الزاوية العلوية اليمنى. إنه مثل الإشارات المرجعية، ولكن للكود. +يمكنك وضع نجمة، متابعة و/أو "استنساخ" أي مستودع عام على GitHub. يمكنك العثور على المستودعات التي وضعت لها نجمة في القائمة المنسدلة في الزاوية العلوية اليمنى. إنه مثل الإشارات المرجعية، ولكن للكود. -المشاريع لديها متتبع قضايا، غالبًا على GitHub في علامة التبويب "Issues" ما لم يُذكر خلاف ذلك، حيث يناقش الناس القضايا المتعلقة بالمشروع. وعلامة التبويب Pull Requests هي المكان الذي يناقش فيه الناس ويستعرضون التغييرات التي قيد التنفيذ. +المشاريع لديها متتبع مشاكل، غالبًا على GitHub في علامة التبويب "Issues" ما لم يُذكر خلاف ذلك، حيث يناقش الناس المشاكل المتعلقة بالمشروع. وعلامة التبويب طلبات السحب هي المكان الذي يناقش فيه الناس ويستعرضون التغييرات التي قيد التنفيذ. -قد يكون للمشاريع أيضًا مناقشات في المنتديات أو قوائم البريد أو قنوات الدردشة مثل Slack أو Discord أو IRC. +قد يكون للمشاريع أيضًا مناقشات في المنتديات، قوائم البريد الإلكتروني، أو قنوات الدردشة مثل Slack، Discord أو IRC. -🔧 **ميزات GitHub الحديثة**: -- **GitHub Discussions** - منتدى مدمج للمحادثات المجتمعية -- **GitHub Sponsors** - دعم المشرفين ماليًا -- **علامة التبويب Security** - تقارير الثغرات والنصائح الأمنية -- **علامة التبويب Actions** - عرض سير العمل الآلي وخطوط CI/CD -- **علامة التبويب Insights** - تحليلات حول المساهمين والالتزامات وصحة المشروع -- **علامة التبويب Projects** - أدوات إدارة المشاريع المدمجة من GitHub +🔧 **ميزات GitHub الحديثة**: +- **GitHub Discussions** - منتدى مدمج للمحادثات المجتمعية +- **GitHub Sponsors** - دعم المسؤولين ماليًا +- **علامة التبويب الأمنية** - تقارير الثغرات والنصائح الأمنية +- **علامة التبويب الإجراءات** - عرض سير العمل الآلي وخطوط أنابيب CI/CD +- **علامة التبويب الإحصاءات** - تحليلات حول المساهمين، الالتزامات، وصحة المشروع +- **علامة التبويب المشاريع** - أدوات إدارة المشاريع المدمجة من GitHub -✅ ألقِ نظرة حول مستودع GitHub الجديد الخاص بك وجرب بعض الأشياء، مثل تعديل الإعدادات، إضافة معلومات إلى المستودع، إنشاء مشروع (مثل لوحة Kanban)، وإعداد GitHub Actions للتشغيل الآلي. هناك الكثير يمكنك القيام به! +✅ ألقِ نظرة حول مستودع GitHub الجديد الخاص بك وجرب بعض الأشياء، مثل تعديل الإعدادات، إضافة معلومات إلى المستودع، إنشاء مشروع (مثل لوحة Kanban)، وإعداد إجراءات GitHub للتشغيل الآلي. هناك الكثير مما يمكنك القيام به! --- -## 🚀 التحدي +## 🚀 التحدي حسنًا، حان الوقت لاختبار مهاراتك الجديدة في GitHub! 🚀 إليك تحديًا سيجعل كل شيء يتضح بطريقة مرضية للغاية: -اجلب صديقًا (أو أحد أفراد العائلة الذي يسأل دائمًا عما تفعله بكل هذا "الأشياء المتعلقة بالحاسوب") وانطلقا في مغامرة برمجية تعاونية معًا! هنا تحدث السحر الحقيقي – أنشئ مشروعًا، دعهم يستنسخونه، أنشئ بعض الفروع، وادمج التغييرات مثل المحترفين الذين أصبحتما عليه. +اجلب صديقًا (أو أحد أفراد العائلة الذي يسأل دائمًا عما تفعله بكل هذا "الأشياء المتعلقة بالحاسوب") وانطلقا في مغامرة برمجية تعاونية معًا! هنا حيث يحدث السحر الحقيقي – أنشئ مشروعًا، دعهم يستنسخونه، أنشئ بعض الفروع، وادمج التغييرات مثل المحترفين الذين أصبحتما عليه. -لن أكذب – ربما تضحكان في مرحلة ما (خاصة عندما تحاولان تغيير نفس السطر)، وربما تحكان رأسيكما في حيرة، لكن بالتأكيد ستحظيان بلحظات "آها!" المذهلة التي تجعل كل التعلم يستحق العناء. بالإضافة إلى ذلك، هناك شيء خاص حول مشاركة أول دمج ناجح مع شخص آخر – إنه مثل احتفال صغير بمدى تقدمكما! +لن أكذب – ربما ستضحكون في مرحلة ما (خاصة عندما تحاولان تغيير نفس السطر)، ربما تخدشان رأسيكما في حيرة، لكن بالتأكيد ستحصلان على تلك اللحظات الرائعة "آها!" التي تجعل كل التعلم يستحق العناء. بالإضافة إلى ذلك، هناك شيء خاص حول مشاركة أول دمج ناجح مع شخص آخر – إنه مثل احتفال صغير بمدى تقدمكما! ليس لديك شريك برمجة بعد؟ لا تقلق على الإطلاق! مجتمع GitHub مليء بأشخاص مرحبين للغاية يتذكرون كيف كان الأمر عندما كانوا جددًا. ابحث عن مستودعات تحمل وسوم "good first issue" – إنها تقول أساسًا "مرحبًا بالمبتدئين، تعالوا تعلموا معنا!" كم هذا رائع؟ -## اختبار ما بعد المحاضرة +## اختبار ما بعد المحاضرة [اختبار ما بعد المحاضرة](https://ff-quizzes.netlify.app/web/en/) ## المراجعة ومواصلة التعلم -واو! 🎉 انظر إليك – لقد تغلبت للتو على أساسيات GitHub مثل بطل حقيقي! إذا شعرت أن عقلك ممتلئ قليلاً الآن، فهذا طبيعي تمامًا وبصراحة علامة جيدة. لقد تعلمت للتو أدوات استغرقني أسابيع لأشعر بالراحة معها عندما بدأت. +واو! 🎉 انظر إليك – لقد تغلبت على أساسيات GitHub مثل بطل حقيقي! إذا شعرت أن عقلك ممتلئ قليلاً الآن، فهذا طبيعي تمامًا وبصراحة علامة جيدة. لقد تعلمت أدوات استغرقني أسابيع لأشعر بالراحة معها عندما بدأت. -Git وGitHub قويان للغاية (بجدية، قويان جدًا)، وكل مطور أعرفه – بما في ذلك أولئك الذين يبدو أنهم سحرة الآن – كان عليهم أن يمارسوا ويتعثروا قليلاً قبل أن يتضح كل شيء. حقيقة أنك اجتزت هذا الدرس تعني أنك بالفعل في طريقك لإتقان بعض من أهم الأدوات في مجموعة أدوات المطور. +Git وGitHub قويان للغاية (بجدية قويان)، وكل مطور أعرفه – بما في ذلك أولئك الذين يبدو أنهم سحرة الآن – كان عليهم أن يمارسوا ويتعثروا قليلاً قبل أن ينقر كل شيء. حقيقة أنك أكملت هذا الدرس تعني أنك بالفعل في طريقك لإتقان بعض من أهم الأدوات في مجموعة أدوات المطور. -إليك بعض الموارد الرائعة لمساعدتك على الممارسة وتصبح أكثر روعة: +إليك بعض الموارد الرائعة لمساعدتك على الممارسة وتصبح أكثر روعة: +- [دليل المساهمة في برامج المصادر المفتوحة](https://opensource.guide/how-to-contribute/#how-to-submit-a-contribution) – خارطة طريقك لإحداث فرق +- [ورقة الغش لـ Git](https://training.github.com/downloads/github-git-cheat-sheet/) – احتفظ بها في متناول يدك للرجوع السريع! -- [دليل المساهمة في برامج المصادر المفتوحة](https://opensource.guide/how-to-contribute/#how-to-submit-a-contribution) – خارطة طريقك لإحداث فرق -- [ورقة غش Git](https://training.github.com/downloads/github-git-cheat-sheet/) – احتفظ بها في متناول يدك للرجوع السريع! +وتذكر: الممارسة تصنع التقدم، وليس الكمال! كلما استخدمت Git وGitHub، أصبح الأمر طبيعيًا أكثر. لقد أنشأت GitHub بعض الدورات التفاعلية الرائعة التي تتيح لك الممارسة في بيئة آمنة: -وتذكر: الممارسة تصنع التقدم، وليس الكمال! كلما استخدمت Git وGitHub، أصبح الأمر طبيعيًا أكثر. لقد أنشأت GitHub بعض الدورات التفاعلية المذهلة التي تتيح لك الممارسة في بيئة آمنة: - -- [مقدمة إلى GitHub](https://github.com/skills/introduction-to-github) +- [مقدمة إلى GitHub](https://github.com/skills/introduction-to-github) - [التواصل باستخدام Markdown](https://github.com/skills/communicate-using-markdown) -- [صفحات GitHub](https://github.com/skills/github-pages) -- [إدارة تعارضات الدمج](https://github.com/skills/resolve-merge-conflicts) +- [صفحات GitHub](https://github.com/skills/github-pages) +- [إدارة تعارضات الدمج](https://github.com/skills/resolve-merge-conflicts) -**تشعر بالمغامرة؟ تحقق من هذه الأدوات الحديثة:** -- [وثائق GitHub CLI](https://cli.github.com/manual/) – عندما تريد أن تشعر وكأنك ساحر سطر الأوامر -- [وثائق GitHub Codespaces](https://docs.github.com/en/codespaces) – البرمجة في السحابة! -- [وثائق GitHub Actions](https://docs.github.com/en/actions) – أتمتة كل شيء -- [أفضل ممارسات Git](https://www.atlassian.com/git/tutorials/comparing-workflows) – ارتقِ بمستوى سير العمل الخاص بك +**تشعر بالمغامرة؟ تحقق من هذه الأدوات الحديثة:** +- [وثائق GitHub CLI](https://cli.github.com/manual/) – عندما تريد أن تشعر وكأنك ساحر سطر الأوامر +- [وثائق GitHub Codespaces](https://docs.github.com/en/codespaces) – البرمجة في السحابة! +- [وثائق GitHub Actions](https://docs.github.com/en/actions) – أتمتة كل شيء +- [أفضل ممارسات Git](https://www.atlassian.com/git/tutorials/comparing-workflows) – ارتقِ بمستوى سير العمل الخاص بك ## تحدي GitHub Copilot Agent 🚀 -استخدم وضع Agent لإكمال التحدي التالي: +استخدم وضع الوكيل لإكمال التحدي التالي: + +**الوصف:** أنشئ مشروع تطوير ويب تعاوني يعرض سير العمل الكامل لـ GitHub الذي تعلمته في هذا الدرس. سيساعدك هذا التحدي على ممارسة إنشاء المستودعات، ميزات التعاون، وسير العمل الحديث لـ Git في سيناريو واقعي. + +**المهمة:** أنشئ مستودع GitHub عام جديد لمشروع بسيط "موارد تطوير الويب". يجب أن يتضمن المستودع ملف README.md منظمًا بشكل جيد يسرد أدوات وموارد تطوير الويب المفيدة، مصنفة حسب الفئات (HTML، CSS، JavaScript، إلخ). قم بإعداد المستودع بمعايير المجتمع المناسبة بما في ذلك الترخيص، إرشادات المساهمة، ومدونة السلوك. أنشئ على الأقل فرعين للميزات: واحد لإضافة موارد CSS وآخر لموارد JavaScript. قم بعمل التزامات لكل فرع مع رسائل التزام وصفية، ثم أنشئ طلبات سحب لدمج التغييرات مرة أخرى إلى الفرع الرئيسي. قم بتمكين ميزات GitHub مثل المشاكل، المناقشات، وقم بإعداد سير عمل أساسي لـ GitHub Actions لفحوصات تلقائية. -**الوصف:** أنشئ مشروع تطوير ويب تعاوني يوضح سير العمل الكامل لـ GitHub الذي تعلمته في هذا الدرس. سيساعدك هذا التحدي على ممارسة إنشاء المستودعات، ميزات التعاون، وسير العمل الحديث لـ Git في سيناريو واقعي. +## المهمة -**المهمة:** أنشئ مستودع GitHub عام جديد لمشروع بسيط بعنوان "موارد تطوير الويب". يجب أن يتضمن المستودع ملف README.md منظمًا جيدًا يسرد أدوات وموارد تطوير الويب المفيدة، مصنفة حسب الفئات (HTML، CSS، JavaScript، إلخ). قم بإعداد المستودع بمعايير المجتمع المناسبة بما في ذلك ترخيص، إرشادات المساهمة، ومدونة سلوك. أنشئ على الأقل فرعين للميزات: واحد لإضافة موارد CSS وآخر لموارد JavaScript. قم بعمل التزامات لكل فرع مع رسائل التزام وصفية، ثم أنشئ طلبات سحب لدمج التغييرات مرة أخرى إلى الفرع الرئيسي. قم بتمكين ميزات GitHub مثل القضايا، المناقشات، وإعداد سير عمل GitHub Actions الأساسي لفحوصات آلية. +مهمتك، إذا اخترت قبولها: أكمل دورة [مقدمة إلى GitHub](https://github.com/skills/introduction-to-github) على GitHub Skills. ستتيح لك هذه الدورة التفاعلية ممارسة كل ما تعلمته في بيئة آمنة وموجهة. بالإضافة إلى ذلك، ستحصل على شارة رائعة عند الانتهاء! 🏅 -## المهمة +**تشعر بالاستعداد لمزيد من التحديات؟** +- قم بإعداد مصادقة SSH لحساب GitHub الخاص بك (لا مزيد من كلمات المرور!) +- جرب استخدام GitHub CLI لعمليات Git اليومية +- أنشئ مستودعًا مع سير عمل GitHub Actions +- استكشف GitHub Codespaces بفتح هذا المستودع نفسه في محرر قائم على السحابة -مهمتك، إذا اخترت قبولها: أكمل دورة [مقدمة إلى GitHub](https://github.com/skills/introduction-to-github) على مهارات GitHub. ستتيح لك هذه الدورة التفاعلية ممارسة كل ما تعلمته في بيئة آمنة وموجهة. بالإضافة إلى ذلك، ستحصل على شارة رائعة عند الانتهاء! 🏅 +--- -**تشعر بالاستعداد لمزيد من التحديات؟** -- قم بإعداد مصادقة SSH لحساب GitHub الخاص بك (لا مزيد من كلمات المرور!) -- جرب استخدام GitHub CLI لعمليات Git اليومية الخاصة بك -- أنشئ مستودعًا مع سير عمل GitHub Actions -- استكشف GitHub Codespaces بفتح هذا المستودع نفسه في محرر قائم على السحابة +## 🚀 جدول زمني لإتقان GitHub الخاص بك + +### ⚡ **ما يمكنك القيام به في الدقائق الخمس القادمة** +- [ ] ضع نجمة لهذا المستودع و3 مشاريع أخرى تثير اهتمامك +- [ ] قم بإعداد المصادقة الثنائية على حساب GitHub الخاص بك +- [ ] أنشئ README بسيط لأول مستودع لك +- [ ] تابع 5 مطورين يلهمك عملهم + +### 🎯 **ما يمكنك إنجازه خلال هذه الساعة** +- [ ] أكمل اختبار ما بعد الدرس وفكر في رحلتك مع GitHub +- [ ] قم بإعداد مفاتيح SSH لمصادقة GitHub بدون كلمات مرور +- [ ] أنشئ أول التزام ذو معنى مع رسالة التزام رائعة +- [ ] استكشف علامة التبويب "استكشاف" في GitHub لاكتشاف المشاريع الرائجة +- [ ] مارس استنساخ مستودع وإجراء تغيير صغير + +### 📅 **مغامرتك الأسبوعية مع GitHub** +- [ ] أكمل دورات مهارات GitHub (مقدمة إلى GitHub، Markdown) +- [ ] قم بإنشاء أول طلب سحب لمشروع مفتوح المصدر +- [ ] أنشئ موقع GitHub Pages لعرض عملك +- [ ] انضم إلى مناقشات GitHub حول المشاريع التي تهمك +- [ ] أنشئ مستودعًا بمعايير المجتمع المناسبة (README، الترخيص، إلخ) +- [ ] جرب GitHub Codespaces للتطوير السحابي + +### 🌟 **تحولك خلال شهر** +- [ ] ساهم في 3 مشاريع مفتوحة المصدر مختلفة +- [ ] قم بتوجيه شخص جديد إلى GitHub (رد الجميل!) +- [ ] قم بإعداد سير عمل تلقائي باستخدام GitHub Actions +- [ ] أنشئ محفظة تعرض مساهماتك في GitHub +- [ ] شارك في Hacktoberfest أو أحداث مجتمعية مشابهة +- [ ] كن مسؤولًا عن مشروعك الخاص الذي يساهم فيه الآخرون + +### 🎓 **التحقق النهائي من إتقان GitHub** + +**احتفل بمدى تقدمك:** +- ما هو الشيء المفضل لديك في استخدام GitHub؟ +- ما هي ميزة التعاون التي تثير حماسك أكثر؟ +- ما مدى ثقتك في المساهمة في المصادر المفتوحة الآن؟ +- ما هو أول مشروع تريد المساهمة فيه؟ + +```mermaid +journey + title Your GitHub Confidence Journey + section Today + Nervous: 3: You + Curious: 4: You + Excited: 5: You + section This Week + Practicing: 4: You + Contributing: 5: You + Connecting: 5: You + section Next Month + Collaborating: 5: You + Leading: 5: You + Inspiring Others: 5: You +``` + +> 🌍 **مرحبًا بك في مجتمع المطورين العالمي!** لديك الآن الأدوات اللازمة للتعاون مع ملايين المطورين حول العالم. قد تبدو مساهمتك الأولى صغيرة، لكن تذكر - كل مشروع مفتوح المصدر كبير بدأ بشخص يقوم بأول التزام له. السؤال ليس إذا كنت ستحدث تأثيرًا، بل ما هو المشروع الرائع الذي سيستفيد من وجهة نظرك الفريدة أولاً! 🚀 تذكر: كل خبير كان يومًا ما مبتدئًا. أنت قادر على ذلك! 💪 --- **إخلاء المسؤولية**: -تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الموثوق. للحصول على معلومات حاسمة، يُوصى بالترجمة البشرية الاحترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسير خاطئ ينشأ عن استخدام هذه الترجمة. \ No newline at end of file +تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الرسمي. للحصول على معلومات حاسمة، يُوصى بالترجمة البشرية الاحترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. \ No newline at end of file diff --git a/translations/ar/1-getting-started-lessons/3-accessibility/README.md b/translations/ar/1-getting-started-lessons/3-accessibility/README.md index 672df9095f..3910315110 100644 --- a/translations/ar/1-getting-started-lessons/3-accessibility/README.md +++ b/translations/ar/1-getting-started-lessons/3-accessibility/README.md @@ -1,8 +1,8 @@ B{Keyboard Navigation} +flowchart TD + A[🚀 Start Testing] --> B{⌨️ Keyboard Navigation} B --> C[Tab through all interactive elements] - C --> D{Screen Reader Testing} + C --> D{🎧 Screen Reader Testing} D --> E[Test with NVDA/VoiceOver] - E --> F{Zoom Testing} + E --> F{🔍 Zoom Testing} F --> G[Zoom to 200% and test functionality] - G --> H{Color/Contrast Check} + G --> H{🎨 Color/Contrast Check} H --> I[Verify all text meets contrast ratios] - I --> J{Focus Management} + I --> J{👁️ Focus Management} J --> K[Ensure focus indicators are visible] - K --> L[Testing Complete] + K --> L[✅ Testing Complete] + + style A fill:#e3f2fd + style L fill:#e8f5e8 + style B fill:#fff3e0 + style D fill:#f3e5f5 + style F fill:#e0f2f1 + style H fill:#fce4ec + style J fill:#e8eaf6 ``` **قائمة التحقق خطوة بخطوة للاختبار:** 1. **التنقل باستخدام لوحة المفاتيح**: استخدم فقط Tab، Shift+Tab، Enter، Space، ومفاتيح الأسهم -2. **اختبار قارئ الشاشة**: قم بتفعيل NVDA أو VoiceOver أو Narrator وتصفح مع إغلاق عينيك +2. **اختبار قارئ الشاشة**: قم بتشغيل NVDA أو VoiceOver أو Narrator وتصفح مع إغلاق عينيك 3. **اختبار التكبير**: اختبر عند مستويات تكبير 200% و400% 4. **التحقق من تباين الألوان**: تحقق من جميع النصوص ومكونات واجهة المستخدم -5. **اختبار مؤشر التركيز**: تأكد من أن جميع العناصر التفاعلية لها حالات تركيز مرئية +5. **اختبار مؤشر التركيز**: تأكد من أن جميع العناصر التفاعلية لديها حالات تركيز مرئية -✅ **ابدأ بـ Lighthouse**: افتح أدوات المطور في متصفحك، قم بتشغيل تدقيق إمكانية الوصول في Lighthouse، ثم استخدم النتائج لتوجيه تركيزك في الاختبار اليدوي. +✅ **ابدأ بـ Lighthouse**: افتح أدوات المطور في متصفحك، قم بتشغيل تدقيق إمكانية الوصول في Lighthouse، ثم استخدم النتائج لتوجيه مناطق التركيز في الاختبار اليدوي. ### أدوات التكبير والتصغير -تعرف كيف تقوم أحيانًا بتكبير الشاشة على هاتفك عندما يكون النص صغيرًا جدًا، أو تحاول قراءة شاشة الكمبيوتر المحمول في ضوء الشمس الساطع؟ العديد من المستخدمين يعتمدون على أدوات التكبير لجعل المحتوى قابلاً للقراءة كل يوم. يشمل ذلك الأشخاص ذوي الرؤية الضعيفة، كبار السن، وأي شخص حاول قراءة موقع ويب في الهواء الطلق. +تعرف كيف تقوم أحيانًا بتكبير النص على هاتفك عندما يكون صغيرًا جدًا، أو تحاول قراءة شاشة الكمبيوتر المحمول في ضوء الشمس الساطع؟ يعتمد العديد من المستخدمين على أدوات التكبير لجعل المحتوى قابلاً للقراءة كل يوم. يشمل ذلك الأشخاص ذوي الرؤية الضعيفة، وكبار السن، وأي شخص حاول قراءة موقع ويب في الهواء الطلق. -تطورت تقنيات التكبير الحديثة لتتجاوز مجرد تكبير الأشياء. فهم كيفية عمل هذه الأدوات سيساعدك على إنشاء تصميمات متجاوبة تظل وظيفية وجذابة عند أي مستوى من التكبير. +تطورت تقنيات التكبير الحديثة إلى ما هو أبعد من مجرد جعل الأشياء أكبر. فهم كيفية عمل هذه الأدوات سيساعدك على إنشاء تصميمات متجاوبة تظل وظيفية وجذابة عند أي مستوى تكبير. **قدرات التكبير الحديثة في المتصفحات:** - **تكبير الصفحة**: يوسع كل المحتوى بشكل متناسب (النصوص، الصور، التخطيط) - هذه هي الطريقة المفضلة - **تكبير النص فقط**: يزيد حجم الخط مع الحفاظ على التخطيط الأصلي -- **التكبير بالقرص**: دعم إيماءات الهاتف المحمول للتكبير المؤقت -- **دعم المتصفح**: جميع المتصفحات الحديثة تدعم التكبير حتى 500% دون كسر الوظائف +- **التكبير بالقرص**: دعم الإيماءات على الأجهزة المحمولة للتكبير المؤقت +- **دعم المتصفحات**: جميع المتصفحات الحديثة تدعم التكبير حتى 500% دون كسر الوظائف **برامج التكبير المتخصصة:** - **Windows**: [Magnifier](https://support.microsoft.com/windows/use-magnifier-to-make-things-on-the-screen-easier-to-see-414948ba-8b1c-d3bd-8615-0e5e32204198) (مضمن)، [ZoomText](https://www.freedomscientific.com/training/zoomtext/getting-started/) - **macOS/iOS**: [Zoom](https://www.apple.com/accessibility/mac/vision/) (مضمن مع ميزات متقدمة) -> ⚠️ **اعتبار التصميم**: تتطلب WCAG أن يظل المحتوى وظيفيًا عند تكبيره إلى 200%. عند هذا المستوى، يجب أن يكون التمرير الأفقي محدودًا، ويجب أن تظل جميع العناصر التفاعلية قابلة للوصول. +> ⚠️ **اعتبار التصميم**: يتطلب WCAG أن يظل المحتوى وظيفيًا عند تكبيره إلى 200%. عند هذا المستوى، يجب أن يكون التمرير الأفقي محدودًا، ويجب أن تظل جميع العناصر التفاعلية قابلة للوصول. -✅ **اختبر تصميمك المتجاوب**: قم بتكبير متصفحك إلى 200% و400%. هل يتكيف تخطيطك بشكل جيد؟ هل لا يزال بإمكانك الوصول إلى جميع الوظائف دون تمرير مفرط؟ +✅ **اختبر تصميمك المتجاوب**: قم بتكبير متصفحك إلى 200% و400%. هل يتكيف التخطيط الخاص بك بشكل جيد؟ هل يمكنك الوصول إلى جميع الوظائف دون تمرير مفرط؟ ## أدوات اختبار إمكانية الوصول الحديثة الآن بعد أن فهمت كيف يتنقل الناس في الويب باستخدام تقنيات المساعدة، دعونا نستكشف الأدوات التي تساعدك في بناء واختبار مواقع ويب ميسرة. -فكر في الأمر بهذه الطريقة: الأدوات الآلية رائعة في اكتشاف المشكلات الواضحة (مثل النصوص البديلة المفقودة)، بينما يساعدك الاختبار اليدوي في ضمان أن موقعك يشعر بالراحة عند الاستخدام في العالم الحقيقي. معًا، يمنحك الثقة بأن مواقعك تعمل للجميع. +فكر في الأمر بهذه الطريقة: الأدوات الآلية رائعة في اكتشاف المشكلات الواضحة (مثل النصوص البديلة المفقودة)، بينما يساعدك الاختبار اليدوي في ضمان أن موقعك يشعر بالراحة في الاستخدام في العالم الحقيقي. معًا، يمنحك الثقة بأن مواقعك تعمل للجميع. ### اختبار تباين الألوان -إليك بعض الأخبار الجيدة: تباين الألوان هو أحد أكثر مشكلات إمكانية الوصول شيوعًا، ولكنه أيضًا من أسهل المشكلات التي يمكن حلها. التباين الجيد يفيد الجميع - من المستخدمين ذوي الإعاقات البصرية إلى الأشخاص الذين يحاولون قراءة هواتفهم على الشاطئ. +إليك بعض الأخبار الجيدة: تباين الألوان هو أحد أكثر مشكلات إمكانية الوصول شيوعًا، ولكنه أيضًا من أسهل المشكلات التي يمكن إصلاحها. التباين الجيد يفيد الجميع - من المستخدمين ذوي الإعاقات البصرية إلى الأشخاص الذين يحاولون قراءة هواتفهم على الشاطئ. **متطلبات تباين WCAG:** | نوع النص | WCAG AA (الحد الأدنى) | WCAG AAA (المعزز) | -|----------|-----------------------|-------------------| +|-----------|-------------------|---------------------| | **النص العادي** (أقل من 18pt) | نسبة تباين 4.5:1 | نسبة تباين 7:1 | | **النص الكبير** (18pt+ أو 14pt+ بخط عريض) | نسبة تباين 3:1 | نسبة تباين 4.5:1 | | **مكونات واجهة المستخدم** (الأزرار، حدود النماذج) | نسبة تباين 3:1 | نسبة تباين 3:1 | @@ -132,13 +182,13 @@ graph TD - [Stark](https://www.getstark.co/) - إضافة أدوات التصميم لـ Figma، Sketch، Adobe XD - [Accessible Colors](https://accessible-colors.com/) - العثور على لوحات ألوان ميسرة -✅ **قم ببناء لوحات ألوان أفضل**: ابدأ بألوان علامتك التجارية واستخدم أدوات التباين لإنشاء تنويعات ميسرة. وثق هذه كرموز ألوان ميسرة في نظام التصميم الخاص بك. +✅ **قم ببناء لوحات ألوان أفضل**: ابدأ بألوان العلامة التجارية الخاصة بك واستخدم أدوات التباين لإنشاء تنويعات ميسرة. قم بتوثيق هذه كرموز ألوان ميسرة لنظام التصميم الخاص بك. ### التدقيق الشامل لإمكانية الوصول أكثر طرق اختبار إمكانية الوصول فعالية تجمع بين عدة أساليب. لا توجد أداة واحدة تكتشف كل شيء، لذا فإن بناء روتين اختبار باستخدام طرق متنوعة يضمن تغطية شاملة. -**اختبار المستعرض (مضمن في أدوات المطور):** +**اختبار قائم على المتصفح (مضمن في أدوات المطور):** - **Chrome/Edge**: تدقيق إمكانية الوصول في Lighthouse + لوحة إمكانية الوصول - **Firefox**: مفتش إمكانية الوصول مع عرض شجرة مفصل - **Safari**: علامة التدقيق في Web Inspector مع محاكاة VoiceOver @@ -151,21 +201,54 @@ graph TD **التكامل مع سطر الأوامر وCI/CD:** - [axe-core](https://github.com/dequelabs/axe-core) - مكتبة JavaScript للاختبار الآلي - [Pa11y](https://pa11y.org/) - أداة اختبار إمكانية الوصول عبر سطر الأوامر -- [Lighthouse CI](https://github.com/GoogleChrome/lighthouse-ci) - تسجيل إمكانية الوصول الآلي +- [Lighthouse CI](https://github.com/GoogleChrome/lighthouse-ci) - تسجيل نقاط إمكانية الوصول تلقائيًا > 🎯 **هدف الاختبار**: استهدف الحصول على درجة إمكانية الوصول في Lighthouse تبلغ 95+ كخط أساس. تذكر، الأدوات الآلية تكتشف حوالي 30-40% فقط من مشكلات إمكانية الوصول - الاختبار اليدوي لا يزال ضروريًا! +### 🧠 **اختبار المهارات: هل أنت جاهز لاكتشاف المشكلات؟** + +**لنرى كيف تشعر بشأن اختبار إمكانية الوصول:** +- أي طريقة اختبار تبدو أكثر سهولة بالنسبة لك الآن؟ +- هل يمكنك تخيل استخدام التنقل بلوحة المفاتيح فقط ليوم كامل؟ +- ما هي إحدى حواجز إمكانية الوصول التي واجهتها شخصيًا عبر الإنترنت؟ + +```mermaid +pie title "Accessibility Issues Caught by Different Methods" + "Automated Tools" : 35 + "Manual Testing" : 40 + "User Feedback" : 25 +``` + +> **تعزيز الثقة**: يستخدم مختبرو إمكانية الوصول المحترفون هذا المزيج بالضبط من الأساليب. أنت تتعلم ممارسات قياسية في الصناعة! + ## بناء إمكانية الوصول من البداية -مفتاح النجاح في إمكانية الوصول هو تضمينه في الأساس منذ اليوم الأول. أعلم أنه من المغري التفكير "سأضيف إمكانية الوصول لاحقًا"، لكن هذا يشبه محاولة إضافة منحدر إلى منزل بعد بنائه بالفعل. هل يمكن؟ نعم. هل هو سهل؟ ليس حقًا. +المفتاح لنجاح إمكانية الوصول هو تضمينها في الأساس منذ اليوم الأول. أعلم أنه من المغري التفكير "سأضيف إمكانية الوصول لاحقًا"، لكن هذا يشبه محاولة إضافة منحدر إلى منزل بعد بنائه بالفعل. ممكن؟ نعم. سهل؟ ليس حقًا. فكر في إمكانية الوصول كالتخطيط لمنزل - من الأسهل بكثير تضمين إمكانية الوصول للكراسي المتحركة في خططك المعمارية الأولية بدلاً من تعديل كل شيء لاحقًا. ### مبادئ POUR: أساس إمكانية الوصول الخاص بك -تستند إرشادات محتوى الويب (WCAG) إلى أربعة مبادئ أساسية تُعرف باسم POUR. لا تقلق - هذه ليست مفاهيم أكاديمية مملة! إنها في الواقع إرشادات عملية لإنشاء محتوى يعمل للجميع. +تستند إرشادات محتوى الويب (WCAG) إلى أربعة مبادئ أساسية تُعرف بـ POUR. لا تقلق - هذه ليست مفاهيم أكاديمية مملة! إنها في الواقع إرشادات عملية لجعل المحتوى يعمل للجميع. -بمجرد أن تفهم POUR، يصبح اتخاذ قرارات إمكانية الوصول أكثر سهولة. إنه مثل وجود قائمة تحقق ذهنية توجه اختياراتك التصميمية. دعونا نوضحها: +بمجرد أن تتقن POUR، يصبح اتخاذ قرارات إمكانية الوصول أكثر سهولة. إنه مثل وجود قائمة تحقق ذهنية توجه اختياراتك التصميمية. دعونا نوضحها: + +```mermaid +flowchart LR + A[🔍 PERCEIVABLE
Can users sense it?] --> B[🎮 OPERABLE
Can users use it?] + B --> C[📖 UNDERSTANDABLE
Can users get it?] + C --> D[💪 ROBUST
Does it work everywhere?] + + A1[Alt text
Captions
Contrast] --> A + B1[Keyboard access
No seizures
Time limits] --> B + C1[Clear language
Predictable
Error help] --> C + D1[Valid code
Compatible
Future-proof] --> D + + style A fill:#e1f5fe + style B fill:#e8f5e8 + style C fill:#fff3e0 + style D fill:#f3e5f5 +``` **🔍 قابل للإدراك**: يجب تقديم المعلومات بطرق يمكن للمستخدمين إدراكها من خلال حواسهم المتاحة @@ -177,11 +260,11 @@ graph TD **🎮 قابل للتشغيل**: يجب أن تكون جميع مكونات الواجهة قابلة للتشغيل من خلال طرق الإدخال المتاحة -- جعل جميع الوظائف قابلة للوصول عبر التنقل باستخدام لوحة المفاتيح +- جعل جميع الوظائف قابلة للوصول عبر التنقل بلوحة المفاتيح - توفير وقت كافٍ للمستخدمين لقراءة والتفاعل مع المحتوى - تجنب المحتوى الذي يسبب نوبات أو اضطرابات في الجهاز الدهليزي - مساعدة المستخدمين على التنقل بكفاءة من خلال هيكل واضح ومعالم -- ضمان أن تكون العناصر التفاعلية ذات أحجام مستهدفة كافية (44px كحد أدنى) +- ضمان أن العناصر التفاعلية لديها أحجام أهداف كافية (44px كحد أدنى) **📖 مفهوم**: يجب أن تكون المعلومات وتشغيل واجهة المستخدم واضحة ومفهومة @@ -193,29 +276,57 @@ graph TD **💪 قوي**: يجب أن يعمل المحتوى بشكل موثوق عبر التقنيات المختلفة والأجهزة المساعدة -- استخدام HTML صالح ودلالي كأساس -- ضمان التوافق مع التقنيات المساعدة الحالية والمستقبلية -- اتباع معايير الويب وأفضل الممارسات للعلامات -- اختبار عبر المتصفحات المختلفة والأجهزة والأدوات المساعدة -- هيكلة المحتوى بحيث يتحلل بشكل جيد عندما لا تكون الميزات المتقدمة مدعومة +- **استخدام HTML صالح ودلالي كأساس** +- **ضمان التوافق مع التقنيات المساعدة الحالية والمستقبلية** +- **اتباع معايير الويب وأفضل الممارسات للترميز** +- **اختبر عبر متصفحات وأجهزة وأدوات مساعدة مختلفة** +- **هيكل المحتوى بحيث يتدهور بشكل سلس عندما لا تكون الميزات المتقدمة مدعومة** + +### 🎯 **مراجعة مبادئ POUR: اجعلها ثابتة** + +**تفكير سريع في الأساسيات:** +- هل يمكنك التفكير في ميزة موقع ويب تفشل في كل مبدأ من مبادئ POUR؟ +- أي مبدأ يبدو أكثر طبيعية بالنسبة لك كمطور؟ +- كيف يمكن لهذه المبادئ تحسين التصميم للجميع، وليس فقط للمستخدمين ذوي الإعاقة؟ + +```mermaid +quadrantChart + title POUR Principles Impact Matrix + x-axis Low Effort --> High Effort + y-axis Low Impact --> High Impact + quadrant-1 Quick Wins + quadrant-2 Major Projects + quadrant-3 Consider Later + quadrant-4 Strategic Focus + + Alt Text: [0.2, 0.9] + Color Contrast: [0.3, 0.8] + Semantic HTML: [0.4, 0.9] + Keyboard Nav: [0.6, 0.8] + ARIA Complex: [0.8, 0.7] + Screen Reader Testing: [0.7, 0.6] +``` + +> **تذكر**: ابدأ بتحسينات ذات تأثير كبير وجهد منخفض. يمنحك HTML الدلالي والنص البديل أكبر دفعة في إمكانية الوصول بأقل جهد! -## إنشاء تصميم بصري ميسر +## إنشاء تصميم بصري يمكن الوصول إليه التصميم البصري الجيد وإمكانية الوصول يسيران جنبًا إلى جنب. عندما تصمم مع مراعاة إمكانية الوصول، غالبًا ما تكتشف أن هذه القيود تؤدي إلى حلول أنظف وأكثر أناقة تفيد جميع المستخدمين. دعونا نستكشف كيفية إنشاء تصميمات جذابة بصريًا تعمل للجميع، بغض النظر عن قدراتهم البصرية أو الظروف التي يشاهدون فيها المحتوى الخاص بك. ### استراتيجيات اللون وإمكانية الوصول البصري -اللون أداة قوية للتواصل، لكنه لا يجب أن يكون الطريقة الوحيدة لنقل المعلومات المهمة. التصميم الذي يتجاوز اللون يخلق تجارب أكثر شمولية وقوة تعمل في مختلف الظروف. -**التصميم لمراعاة اختلافات رؤية الألوان:** +اللون قوي للتواصل، لكنه لا يجب أن يكون الطريقة الوحيدة التي تنقل بها المعلومات المهمة. التصميم بما يتجاوز اللون يخلق تجارب أكثر قوة وشمولية تعمل في المزيد من المواقف. + +**التصميم للاختلافات في رؤية الألوان:** -حوالي 8% من الرجال و0.5% من النساء يعانون من نوع من اختلافات رؤية الألوان (غالبًا ما يُطلق عليه "عمى الألوان"). الأنواع الأكثر شيوعًا هي: +حوالي 8% من الرجال و0.5% من النساء لديهم نوع من اختلاف رؤية الألوان (غالبًا ما يُطلق عليه "عمى الألوان"). الأنواع الأكثر شيوعًا هي: - **Deuteranopia**: صعوبة في التمييز بين الأحمر والأخضر -- **Protanopia**: يظهر اللون الأحمر بشكل باهت -- **Tritanopia**: صعوبة في التمييز بين الأزرق والأصفر (نادر) +- **Protanopia**: يظهر اللون الأحمر أكثر خفوتًا +- **Tritanopia**: صعوبة مع الأزرق والأصفر (نادر) -**استراتيجيات شاملة للألوان:** +**استراتيجيات اللون الشاملة:** ```css /* ❌ Bad: Using only color to indicate status */ @@ -242,17 +353,17 @@ graph TD } ``` -**ما يتجاوز متطلبات التباين الأساسية:** +**ما وراء متطلبات التباين الأساسية:** - اختبر اختياراتك للألوان باستخدام محاكيات عمى الألوان -- استخدم الأنماط أو القوام أو الأشكال بجانب الترميز اللوني -- تأكد من أن الحالات التفاعلية تظل مميزة بدون الاعتماد على اللون +- استخدم الأنماط أو القوام أو الأشكال بجانب ترميز الألوان +- تأكد من أن الحالات التفاعلية تظل قابلة للتمييز بدون اللون - فكر في كيفية ظهور تصميمك في وضع التباين العالي -✅ **اختبر إمكانية الوصول للألوان**: استخدم أدوات مثل [Coblis](https://www.color-blindness.com/coblis-color-blindness-simulator/) لمعرفة كيف يظهر موقعك للمستخدمين الذين يعانون من أنواع مختلفة من رؤية الألوان. +✅ **اختبر إمكانية الوصول للألوان**: استخدم أدوات مثل [Coblis](https://www.color-blindness.com/coblis-color-blindness-simulator/) لترى كيف يظهر موقعك للمستخدمين الذين لديهم أنواع مختلفة من رؤية الألوان. ### مؤشرات التركيز وتصميم التفاعل -مؤشرات التركيز هي المكافئ الرقمي للمؤشر—تُظهر لمستخدمي لوحة المفاتيح مكان وجودهم على الصفحة. مؤشرات التركيز المصممة جيدًا تعزز التجربة للجميع من خلال جعل التفاعلات واضحة وقابلة للتنبؤ. +مؤشرات التركيز هي المكافئ الرقمي للمؤشر - فهي تظهر للمستخدمين الذين يستخدمون لوحة المفاتيح مكان وجودهم على الصفحة. تعزز مؤشرات التركيز المصممة جيدًا التجربة للجميع من خلال جعل التفاعلات واضحة ويمكن التنبؤ بها. **أفضل ممارسات مؤشرات التركيز الحديثة:** @@ -285,19 +396,41 @@ button:focus:not(:focus-visible) { **متطلبات مؤشرات التركيز:** - **الرؤية**: يجب أن يكون لها نسبة تباين لا تقل عن 3:1 مع العناصر المحيطة -- **العرض**: سمك لا يقل عن 2px حول العنصر بالكامل +- **العرض**: سمك لا يقل عن 2 بكسل حول العنصر بالكامل - **الاستمرارية**: يجب أن تظل مرئية حتى ينتقل التركيز إلى مكان آخر - **التمييز**: يجب أن تكون مختلفة بصريًا عن حالات واجهة المستخدم الأخرى -> 💡 **نصيحة تصميم**: غالبًا ما تستخدم مؤشرات التركيز الرائعة مزيجًا من الخطوط الخارجية، الظلال، وتغييرات اللون لضمان الرؤية عبر خلفيات وسياقات مختلفة. +> 💡 **نصيحة تصميم**: غالبًا ما تستخدم مؤشرات التركيز الرائعة مزيجًا من الخطوط الخارجية، الظل، وتغييرات اللون لضمان الرؤية عبر خلفيات وسياقات مختلفة. -✅ **راجع مؤشرات التركيز**: تنقل عبر موقعك باستخدام لوحة المفاتيح ولاحظ العناصر التي تحتوي على مؤشرات تركيز واضحة. هل هناك أي عناصر يصعب رؤيتها أو مفقودة تمامًا؟ +✅ **قم بمراجعة مؤشرات التركيز**: تنقل عبر موقعك باستخدام لوحة المفاتيح ولاحظ العناصر التي تحتوي على مؤشرات تركيز واضحة. هل هناك أي عناصر يصعب رؤيتها أو مفقودة تمامًا؟ -### HTML الدلالي: أساس الوصول +### HTML الدلالي: أساس إمكانية الوصول -HTML الدلالي يشبه إعطاء تقنيات المساعدة نظام GPS لموقعك. عندما تستخدم عناصر HTML الصحيحة لغرضها المقصود، فإنك تقدم لقارئات الشاشة ولوحات المفاتيح وغيرها من الأدوات خارطة طريق مفصلة لمساعدة المستخدمين على التنقل بفعالية. +HTML الدلالي يشبه إعطاء تقنيات المساعدة نظام GPS لموقعك على الويب. عندما تستخدم العناصر الصحيحة لـ HTML لغرضها المقصود، فإنك تقدم للقراء الشاشة ولوحات المفاتيح والأدوات الأخرى خارطة طريق مفصلة لمساعدة المستخدمين على التنقل بفعالية. -إليك تشبيهًا أحببته: HTML الدلالي هو الفرق بين مكتبة منظمة جيدًا بها فئات واضحة ولافتات مفيدة مقابل مستودع حيث الكتب متناثرة بشكل عشوائي. كلا المكانين يحتويان على نفس الكتب، لكن أيهما تفضل البحث فيه؟ بالضبط! +إليك تشبيهًا حقًا أثر فيني: HTML الدلالي هو الفرق بين مكتبة منظمة جيدًا مع فئات واضحة ولافتات مفيدة مقابل مستودع حيث الكتب متناثرة بشكل عشوائي. كلا المكانين يحتويان على نفس الكتب، ولكن أيهما تفضل أن تحاول العثور على شيء فيه؟ بالضبط! + +```mermaid +flowchart TD + A[🏠 HTML Document] --> B[📰 header] + A --> C[🧭 nav] + A --> D[📄 main] + A --> E[📋 footer] + + B --> B1[h1: Site Name
Logo & branding] + C --> C1[ul: Navigation
Primary links] + D --> D1[article: Content
section: Subsections] + D --> D2[aside: Sidebar
Related content] + E --> E1[nav: Footer links
Copyright info] + + D1 --> D1a[h1: Page title
h2: Major sections
h3: Subsections] + + style A fill:#e3f2fd + style B fill:#e8f5e8 + style C fill:#fff3e0 + style D fill:#f3e5f5 + style E fill:#e0f2f1 +``` **أسس هيكل الصفحة القابل للوصول:** @@ -356,14 +489,14 @@ HTML الدلالي يشبه إعطاء تقنيات المساعدة نظام G **لماذا يحول HTML الدلالي إمكانية الوصول:** -| العنصر الدلالي | الغرض | فائدة لقارئ الشاشة | +| العنصر الدلالي | الغرض | فائدة قارئ الشاشة | |------------------|---------|----------------------| | `
` | رأس الصفحة أو القسم | "معلم البانر" - التنقل السريع إلى الأعلى | | `