-
المساهمات
9382 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
134
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو محمد_عاطف
-
وعليكم السلام ورحمة الله وبركاته : في لغة البرمجة بايثون نتستخدم كلمة pass كتعليمات فارغة حيث أن وظيفتها الأساسية هي أنها تعطي مكانا في الكود حيث يتطلب الكود وجود أكواد يجب توفيرها لكنك لا ترغب في تنفيذ أي شيء في هذه المرحلة. وهي مفيده بشكل خاص عند تخطيط الوظائف أو الفئات (Classes) أو الحلقات (Loops) والدوال (functions) . def function_to_implement_later(): pass class MyClass: def method_to_implement_later(self): pass for i in range(10): if i % 2 == 0: pass # لا تفعل شيئاً مع الأرقام الزوجية لاحظ فى المثال الأول قمنا بإنشاء دالة حاليا ولكننا لم ننشئ الكود الخاص بها فبدلا من مسحها نقوم بكتابة pass حيث إذا لم نقم بكتابة أى شئ سيحدث خطأ ولن يعمل البرنامج . وأيضا في الأصناف فمثلا من الممكن أن يرث صنف دالة من صنف أخر ويجب تعديلها أو كتابتها ولكننا لا نريد كتابتها الآن وبهذا نقوم بكتابة pass. وفي الكود الأخير في حلقة for قمنا بكتابة pass في مكان لا نريد تنفيذ شئ فيه
- 3 اجابة
-
- 1
-
-
الخطوات الأساسية اللازمة لدخول أي مجال هي غالبا تتعلق بتعلم الأساسيات وفهما قبل التخصص في مجال معين و البدأ فيه مباشرة ، وهذا لأهميتها الكبيرة في ذلك. فهي ما تساعدك على فهم الكثير من جزئيات البرمجة وتعينك على حل المشكلات وتكسبك خبرة التفكير المنطقي وتحليل وحل المشكلات. وتلك الأساسيات مثل : التفكير المنطقي الخوارزميات بعض أساسيات الرياضيات أساسيات البرمجيات هياكل البيانات ويمكنك قراءة المقال التالي لمزيد من المعلومات : وأنصحك بدراسة كورس CS50 المقدم من جامعة هارفرد أما إذا كنت مشترك هنا في دورة علوم الحاسب فهي كافية ويمكنك قراءة الأجوبة التالية حول نصائح دخول المجال وعن كورس CS50 :
-
نعم التحديث الجديد جيد هو لم يتم التغير كثيرا هو فقط تم تغير أماكن العناصر ولكن هذا الترتيب حيث يعطيك تفاصيل اليوم كاملة أولا وواضحه وهو ما يريده المستخدم وأصبح متجاوب أكثر للشاشات المختلفة . ولكن توجد مشكلة في الحواسيب ستجد scroll bar في أسفل الصفحة لذلك أنصحك بوضع التنسيق التالي لحذفه : body { overflow-x: hidden; } وأيضا جزء الطقس ل يوما ليس أفضل شئ في الهواتف والشاشات الصغيرة حيث النصوص تكون بجوار بعض متداخلة وصغيرة ويفضل تغير تصميمها وإليك الكود التالي : .weather-slider { display: flex; flex-direction: column; } .weather-day { flex-direction: column; align-items: center; overflow: hidden; } .weather-day img { max-width: 25%; } ويمكنك وضعك الأكواد السابقة داخل media حتي يتم تطبيقها فقط على الشاشات الصغيرة لتصبح شكلها كالتالي : ويمكنك تنسيقها كما تشاء .
- 5 اجابة
-
- 1
-
-
نعم يجب حذفها ولكن هكذا لن تقوم بإعادة تحميل الصفحة لذلك هذا الكود لن يتم طباعته حيث أن هذا الكود يقرأ الرقم من الرابط وليس من قاعدة البيانات . فإذا كان هذا الكود في نفس الملف الذي فيه الرابط الذى ستقوم بحذفه إذا قم بطباعة الجملة مكانه . أما إذا كان في ملف أخر إذا يفضل وضعه في ال session هكذا : session_start(); $_SESSION['saved_id'] = mysqli_insert_id($conn); header("Location: index.php"); حيث هذا الكود يتم وضعه مكان الرابط ولاحظ أن أخر سطر يقوم بالتوجيه للملف index.php . والآن في ملف index.php نكتب التالي : session_start(); if (isset($_SESSION['saved_id'])) { echo "تم الإرسال رقم الكود المدخل هو " . $_SESSION['saved_id']; unset($_SESSION['saved_id']); } وهكذا يجب أن تحل المشكلة .
- 7 اجابة
-
- 1
-
-
إذا المشكلة ليست هنا المشكلة أنك ترسله في الرابط هنا : وهكذا يظهر لديك في الرابط . لهذا لا تقوم بإرساله في الرابط فقط قم بطباعته بعد رجوعة من قاعدة البيانات مباشرة
-
المشكلة لديك أنك تقوم بإرسال ال form عن طريق method التي تسمى get و هذا لا يجب أن يتم حيث أن هذه الطريقة تفضل فقط في جلب البيانات حيث ستجد أن كل شئ تم إرساله في ال form تظهر في العنوان . ولكن في حال إرسال بيانات لإضافتها فأفضل شئ في ال form هو جعلها ترسل الطلب عبر post وذلك للأمان حيث لا يتم إرسال البيانات في الرابط. فتخيل لو هناك form لتسجيل مستخدم جديد وقام بكتابة كلمة مرور فستظهر في العنوان إن كانت من توع get ومن الممكن أن يرى أي شخص هذا الرمز بعدة طرق . أما في ال post فيتم إرسال البيانات في جسم الطلب ومن الصعب رؤيتها لذلك هي طريقة آمنه . لهذا في الواجهة الأمامية عند كل form قم بإضافة التالي : <form action="action.php" method="post"> لاحظ كيف أضفنا خاصية method="post" وهكذا سيتم إرسال الطلب عبر post وليس get حيث أن القيمة الإفتراضية هي get . لذلك فقط قم بإضافة method="post" في أى form لديك ترسل البيانات . وفي الواجهة الخلفية قم بتغير أى $_GET إلى $_POST . $_GET // قم بتغيرها إلى $_POST
-
أعتقد أن البرنامج الذي تتحدث عنه من الممكن أن يكون Adobe XD (Adobe Experience Design)، وهو برنامج لتصميم واجهات المستخدم وتجربة المستخدم (UI/UX) وهو خاص بشركة Adobe . يستخدم Adobe XD لتصميم صفحات التطبيقات والمواقع بشكل بصري حيث يمكنك إضافة عناصر مثل الأيقونات وربطها بصفحات أخرى لإنشاء تجربة تفاعلية . ولكن حاليا أفضل برنامج موجود هو Figma حيث هو منتشرا كثيرا ومجاني و أفضل من حيث الإستخدام
-
لنشرح أولا الكود الذى أرفقته : هذا الرمز هو عبارة عن عنصر <meta> في HTML وهو يستخدم لتعيين العرض الأولي للصفحة ومستوى التكبير الإفتراضي على الأجهزة المختلفة وهو يتكون من عدة أجزاء : <meta>: هذا العنصر يستخدم في HTML لتوفير معلومات عن الصفحة التي لا تظهر على المتصفح و للمستخدم مثل الوصف والكلمات الرئيسية (meta tags). name="viewport": هذا هو الخاصية التي تحدد نوع المعلومة التي يحتويها العنصر <meta> وهنا هو يشير إلى أننا نعرف عرض ال viewport. content="width=device-width, initial-scale=1.0": هذه هي القيم التي تحدد كيف ينبغي للمتصفح توسيع الصفحة لتلائم شاشة الجهاز حيث أن : width=device-width: يعني أن عرض الصفحة يجب أن تكون هي عرض الجهاز الذي يعرض عليه الصفحة. initial-scale=1.0: يحدد مستوى التكبير الإفتراضي للصفحة عندما يتم تحميلها. وتلخيصا للسابق فإن هذا الكود يساعد في جعل الصفحة تكون متجاوبة وتظهر بشكل صحيح على مختلف أحجام الشاشات ويجعل عرض الصفحة مثل عرض الشاشة تماما . ولكن ما تقوله بأنك تريد كود يجعل الموقع ثابت مع جميع الشاشات فهو مستحيل فلا يوجد شئ مثل هذا فإذا كان يوجد هذا الكود الذى تبحث عن فلن يكون هناك حاجة إلى التصميمات وإلى تعلم لغة css حيث هي المسؤولة عن التنسيقات . لذلك لا يوجد كود يتم تنفيذه على الموقع ليجعله ثابت بل يجب أن يكون كل موقع له التنسيقات الخاصة به فكل موقع يختلف من حيث الهيكل و العناصر . ولكن يمكنك إستخدام flex box في css فهي من أفضل الخصائص وأقواها في css لجعل العناصر متجاوبة . يمكنك قراءة الدرس التالي على موقع موسوعة حسوب عن flex box
-
هذا يعتمد على ما الذي تقصده . هل تقصد إذا قام بإرسال بيانات لا يحق له إرسالها مرة أخري ؟ أم يحق له إرسال بيانات أكثر من مرة ولكن لا تتكرر ؟ على العموم يوجد أكثر من حل من خلال ال Session أو من خلال قاعدة البيانات . استخدام الجلسات (Sessions): عندما يتم إرسال البيانات لأول مرة من خلال الفورم قم بتخزين متغير والذى يدل على أنه تم إرسال البيانات في جلسة المستخدم. عندما يحاول المستخدم إرسال البيانات مرة أخرى تحقق إذا كانت هذه المعلومة موجودة في الجلسة؛ إذا كانت موجودة، فلا تسمح بإعادة إرسال البيانات. // في صفحة إرسال الفورم session_start(); if (isset($_SESSION['form_submitted'])) { // لا تسمح بإرسال البيانات مرة أخرى // يمكنك عرض رسالة خطأ أو إعادة توجيه المستخدم إلى صفحة أخرى } else { // معالجة البيانات هنا // ... $_SESSION['form_submitted'] = true; } استخدام من قاعدة البيانات: قم بإنشاء جدول يحوي على ال id الخاص بالمستخدم و عند إرسال البيانات تأكد هل هذا ال id موجود في الجدول أم لا إذا كان موجود فلا تقم بإضافة البيانات وإذا لم يكن موجود قم بإضافة البيانات و أيضا أضف ال id لخاص بالمستخدم في قاعدة البيانات .
- 4 اجابة
-
- 1
-
-
إن ال CSRF TOKEN يتم إرساله في ال Session من خلال لارافيل وأنت لا تقوم بإرسال ال Session في axios لذلك يحدث هذا الخطأ. أما المطورين الأخرين يرسلون ال Session لهذا لا يحدث أي خطأ لديهم . لهذا يجب إرسال ال Session والطريقة كما أخبرتك بها في الحل السابق.
-
هل ال api يتم إرساله إلى إطار عمل Laravel ؟ الخطأ الذى يظهر هو 419 وهذا الخطأ بسبب عدم إرسال ال CSRF TOKEN إلي الخادم لذلك يجب إرسالها . وال CSRF token هو عبارة عن token يتم توليده من خلال الخادم وإرساله إلى الواجهة الأمامية في بداية الطلب حتي عندما يتم إرسال طلب post أو delete أو put وهي الطلبات التي تقوم بتعديل البيانات فيجب إرسالها حتي يتم التأكد من أن الطلب موثوق منه. ولحل تلك المشكلة يجب تضمين ال cookies في الطلب حتي يتم إرساله إلى الخادم : axios.defaults.withCredentials = true; وتوجد طريقة أخري وهي إرسال ال token عن طريق ال headers هكذا ولكن يجب عليك الحصول على ال token وهو غالبا ما يكون في الصفحة من خلال عنصر input يحوي الإسم _token : axios.post('api', { data: { // بيانات الطلب } }, { headers: { 'X-CSRF-TOKEN': 'هنا يتم وضع ال token ويفضل وضعه من خلال جافاسكريبت' } }) .then(response => { // التعامل مع الاستجابة هنا }) .catch(error => { // التعامل مع الخطأ هنا }); وهنا مكان X-CSRF-TOKEN يجب وضع ال token وهذا من خلال الحصول عليه من جافاسكريب إذا كان بداخل عنصر فيتم إستدعاء العنصر هكذا مثلا : document.getElementById('csrf').value
-
يجب التفرقة بين عدد الإسكريبتات التي توجد على السيرفر و عدد الإسكريبتات التي يتم تشغيلها في ذات الوقت عن إرسال الطلب للخادم . فمن الممكن أن الخادم يحوي على آلاف من الإسكريبتات والأكواد و لكن يعتمد على الطلب الحالي كم إسكريبت يعمل . فإن كانت الأربع إسكريبتات تعمل منفصلة أو حتي معا فهما ليسو بالشئ الكبير الذى سيؤثر على الخادم والسرعة ولكن العامل الرئيسى هو مدي البيانات التي يتم معالجتها . فإن كان يوجد سكريبت منهم مثلا يقوم بتحميل بيانات من قاعدة البيانات ووضعها في ملف excel وتحميله أو حتي عمل تعديلات على هذه البيانات والبيانات كبيرة تتخطى عدة آلاف من البيانات فحينها ستجد مشاكل تحدث وبطئ وهذا سيزيد في حالة كان يوجد أكثر من مستخدم يستخدم الموقع والإسكريبت في ذات الوقت . ولكن خلاف ذلك كل شئ جيد لا تقلق
- 6 اجابة
-
- 1
-
-
نعم بالظبط ما تقوله صحيح ولنوضح معا أكثر . دور كل لغة: HTML (HyperText Markup Language): تستخدم لبناء هيكل الصفحات وإنشاء العناصر وتحديد المحتوى، مثل النصوص والصور والروابط. CSS (Cascading Style Sheets): تستخدم لتنسيق وتصميم الموقع مثل تحديد الألوان والخطوط و أماكن العناصر وأشكالها وحجهما. PHP: هي لغة برمجة تستخدم في جانب الخادم (server-side) تتيح بك بناء موقع متفاعل و ديناميكي من خلال حفظ وإظهار البيانات من قواعد البيانات والمعالجة الديناميكية للمحتوى. أما بالنسبة لجزء معالجة وتخزين البيانات : فكثرة البيانات المستلمة وسعة التخزين تعتمد في الغالب على الخادم الذي يتم استضافة الموقع عليه بما في ذلك سرعة وأمان الخادم وسعته التخزينية وأيضا يعتمد على الإسكريبت الخاص ب php الذى قمت ببناءه فمن الممكن أنك قمت ببناء سكريبت بطئ حيث يستخدم موارد كثيرة ويحتوي على منطق معقد الذى يحتاج إلى وقت طويل لمعالجته لذلك حتي لو كان الخادم سريع ولديه موارد كثيرة ولكن الإسكريبت الخاص بك بطئ ويعالج بيانات كثيرة فستجد بطئ في الإستخدام. أما بالنسبة إلى الأمان وحفظ البيانات: الأمان وحفظ البيانات يعتمدان على تنفيذ صحيح للبرمجة فمن الممكن أن الإسكريبت الخاص بك يحتوي على ثغرات مثل أشهر الثغرات وهى SQL Injection و الثغرات الأخري فإذا الأمان لا يقتصر فقط على الخادم بل على الإسكريبت الخاص بك وطريقة كتابته. أم بالنسبة إلى المسؤولية عن الأداء والسرعة: فكما وضحت لك الأداء والسرعة في التحميل تعتمد على كيفية بناء الإسكريبت الخاص بك والموارد الخاصة بالخادم.
- 6 اجابة
-
- 1
-
-
مرحبا عبدالرحمن . لا داعي للقلق ونعتذر لك عن أى تأخير فهو حاليا هنا ضغط على قسم الدعم ومن المحتمل حاليا أنه يتم مراجعة الأكواد والمشاريع الخاصة بك وبمجرد الإنتهاء سيتم الرد عليك إن شاء الله . وحاليا أنصحك بمراجعة الأساسيات سريعا و الدروس وذلك حتي تكون جاهزا للإختبار . بالتوفيق لك إن شاء الله
- 2 اجابة
-
- 1
-
-
وعليكم السلام ورحمة الله وبركاته. لا بالفعل ليس هناك حاجه لأن يحترف الشخص التقنيات الأساسية في تطوير الويب بشكل كامل قبل أن يبدأ في تعلم أطر العمل. يمكن أن يبدأ الشخص بالتعلم عندما يكون لديه أساسيات بلغات البرمجة مثل JavaScript وPHP وCSS، ومن ثم يمكنه الانتقال إلى دراسة أطر العمل المختلفة. وأيضا سؤالك خاطئ قليلا حيث أن إطار العمل يكون مبنى بناء على اللغة التي يوفر الإطار لها فليس هناك إطار عمل واحد فيه جميع اللغات . فمثلا في css فإطار عمل مثل bootstrap و tailwind مبنيان على css ولجعل العناصر متفاعلة في الموقع فهما يستخدمان javascript و يستخدمان مكتبة jquery . لذلك من يريد إستعمال bootstrap و tailwind فيجب ان تكون لديه الأساسيات الخاص ب css حتي يستطيع إستخدامهم بشكل جيد وإذا ما واجهته اى مشكلة يستطيع حلها. وأيضا في javascript فإطار عمل jquery او حتي react او غيرهم فيجب ان تكون ملما بأساسيات javascript. وكذلك الامر بالنسبة ل php فيوجد أطر عمل مثل laravel ولإستخدام اطر عمل php يجب على الاقل ان تكون لديك اساسيات لغة php ولكن لتصبح متمكنا في إطا العمل فيجب عليك ان تكون ملما بكل شئ في php حتي تستطيع ان تعرف كيف تم إنشاء لارافيل وهكذا ستستطيع العمل بكفاءة عليه وإستخدامه بافضل شئ ممكن . لهذا إذا كنت تريد العمل على إطار للغة php فلا بئس إذا لم تكن ملما ب css وjavascript حيث أطر عمل php خاصة فقط بالواجهة الخلفية ويمكن إستعمال قوالب جاهزة دون الحاجه إلى معرفة css و وjavascript . ويمكنك قراءة الاجوبة التالية لمزيد من التفاصيل:
- 4 اجابة
-
- 1
-
-
نعم من الممكن أن تحدث مشكلة إذا كانت البيانات كبيرة فحينها سيكون الملف كبيرا ومن الممكن إذا كان الخادم الذاكرة الخاصة به قليلة أو إستهلاك الموارد كبير ومتبقى موارد قليلة فقط . ولكن هذا يحدث إذا كانت البيانات بالآلاف و أعتقد أنك لن تصل لتلك الكمية الكبيرة من البيانات.
- 12 اجابة
-
- 1
-
-
نعم كما أخبرتك المكتبة PhpSpreadsheet تمكنك من إنشاء ملفات excel لذلك يمكنك إنشاء الملفات من خلال البيانات القادمة من ال form أو القادمة من قاعدة البيانات .
- 12 اجابة
-
- 1
-
-
ماذا تقصد بتحميلها على الإكسل ؟ إذا كنت تقصد أن تحضر البيانات من القاعدة ومن قم وضعها بداخل ملف إكسل و إرساله للمستخدم فنعم يمكنك إستخدام مكتبة PhpSpreadsheet لتحقيق ذلك حيث تمكنك من إنشاء ملفات excel وملئها بالبيانات التي تريدها
- 12 اجابة
-
- 1
-
-
نعم لا مشكلة في وضعهم بداخل div ولكن يفضل إستخدام class ووضعه في جميع عناصر ال select حيث هذا أكثر تحديدا من وضعهم جميعا بداخل div . ولا كثرة ال select لا تؤثر على الموقع ما يؤثر على الموقع هو أكواد جافا سكريبت إذا كانت كثيرة وتقوم بإمور معقدة فستجد أن الموقع أصبح بطيئا و أيضا الذى يؤثر على الموقع هو كثرة ال nodes أى توجد أبناء كثيرة داخل بعضها البعض أى تخيل معي لو 1000 عنصر div بجوار بعضهم لن يؤثروا على الصفحة ولكن لو كانو بداخل بعض ستجد أن الصفحة أصبحت بطيئة وثقيله و لكن 8 select ليست بالشئ الكبير فلا تقلق . أما بالنسبة لسؤال الثاني فإذا كنت تقصد أن الأكواد ليست مرتبة أى منسقة بداخل الملف فلا مشكلة في ذلك فالتنسيق ليس مهما في تنفيذ الكود المهم هو ترتيب الأكواد وتنظيمها فقط ولكن يفضل تنسيق الأكواد لسهولة القراءة و سهولة تصحيح المشاكل إن وجدت. والإستضافة ستكون مثل الخادم المحلي لديك تمام بل وممكن أفضل منه لذلك لا تقلق من تلك الناحية
- 12 اجابة
-
- 1
-
-
أولا يجب عليك إختيار لغة مناسبة لمشروعك للـعمل عليها ك Back-end مثل: Node.js مع Express لـ JavaScript، أو Django/Flask لـ Python، أو Spring Boot لـ Java أو php مع laravel . ثانيا قم بإعداد المشروع بالتقنية واللغة التي اخترتهاو قم بتهيئته . ثالثا قم بإعداد قاعدة البيانات إن كان التطبيق يعتمد على حفظ وإسترجاع البيانات. رابعا قم بإنشاء ال API Endpoints لتمكين التواصل بين الـ front-end والـ back-end .يمكنك استخدام RESTful APIs . إذا كانت تطبيقك يتطلب قاعدة بيانات، قم بإعداد قاعدة بيانات وربطها مع تطبيقك الـ back-end. وأخيرا تكامل وترابط الـ Back-end مع الـ Front-end بعد الإنتهاء من ال backend سيتوجب عليط في الـ front-end بإرسال الطلبات إلي الـ API endpoints الذين سترتبط معهم لإحضار البيانات من الـ back-end وإرسال البيانات له. أيضا إذا كنت فقط قد قمت بإنشاء ال front-end بإستخدام HTML و css فقط إذا ستجد صعوبة في الربط حيث ستقوم أنت بإنشاء كل شئ من حيث إرسال الطلبات و إنشاء العناصر وإظهار البيانات لذلك يفضل إستخدام إطار عمل مناسب مثل react أو angular
-
percentages = [85, 90, 102, 101, 58, 77, 103, 100, 99] new_percentages = [i if i <= 100 else 100 for i in percentages] print(new_percentages) لنشرح معا الكود بالتفصيل . أولا هذه الطريقة تسمى في بايثون بانية القوائم (List Comprehensions) حيث هذه طريقة مختصرة لبناء وترشيح قائمة عوضا عن إستخدام الحلقات التكرارية مثل for و while . الآن السطر الأول هو عبارة عن متغير percentages من نوع قائمة تحتوي على قيم . السطر الثاني نقوم بإنشاء متغير جديد يسمى new_percentages وهو عبارة عن قائمة وبداخل القائمة نقوم بتعريف بانية القوائم وهي تحتوي على ثلاثة أقسام أول قسم وهو تعريف الرقم الذى سيتم وضعه بداخل القائمة وفي هذه الحالة هو i . في القسم الثاني وهو الشرط وهو عبارة عن الشرط الذة نريد التحقق منه قبل وضع القيمة في القائمة وهو هنا نتأكد من أن الرقم أصغر من أو يساوى 100 . والقسم الثالث وهو حلقة التكرار وهو في هذه الحالية نقوم بالتكرار حول المتغير percentages. إذا هذا الكود يقوم بالتكرار حول القائمة percentages و يرى العناصر التي بداخلها إذا كان العنصر أقل من أو يساوى 100 نقوم بوضعه في القائمة الجديدة وأما إذا كان أكبر من 100 نقوم بوضع 100. ويمكنك قراءة المزيد حول بانية القوائم في موسوعة حاسوب : https://wiki.hsoub.com/Python/list#List_Comprehensions
-
إذا رسبت يمكنك التقدم مرة أخري حتي تنجح وبمجرد حصولك على الشهادة لن تستطيع الإمتحان مرة أخرى . ويمكنك قراءة المزيد حول التقدم للإمتحان من خلال الرابط التالي : https://support.academy.hsoub.com/exams
-
يجب على الأقل إتمام 4 مسارات كاملة فقط من الدورة ومن ثم تستطيع التقدم للإختبار والإمتحان بها فقط وليس الدورة كاملة ، ويتم التقدم للإختبار مرة واحدة فقط والحصول على الشهادة مرة واحدة. لكن نصيحتي لك عدم دراسة 4 مسارات فقط فالشهادة ليست مهمة فالمهم هو فهمك وإستيعابك وبالتالي من الأفضل لك إنهاء كامل مسارات الدورة. ولكن بالطبع إذا إجتزت الإختبار ستحصل على الشهادة. ستجد تفاصيل أكثر في الاجابة التالية :
