انتقل إلى المحتوى الرئيسي

المراجعة والاختبار الختاميّ

عشر وحدات للانتقال من «pip install streamlit» إلى لوحة قيادة لتسجيل ترك العملاء منشورة، ومؤمَّنة، وقابلة للاستعمال من فريق مبيعات. فيما يلي الدورة مكثَّفة، ثمّ الخيوط التي تعبرها، ثمّ الاختبار الختاميّ.

الدورة بنظرة واحدة

الوحدةالجوهر الذي يجب حفظه
1. الخطوات الأولى والتنفيذالسكربت يُعاد تنفيذه من أعلى عند كلّ تفاعل؛ set_page_config أوّل سطر Streamlit في الملفّ
2. المكوّناتعشرة مكوّنات تكفي؛ delta_color="inverse" يمنع الإعلان عن خبر سيّئ باللون الأخضر
3. التخطيطخمس حاويات: أعمدة، تبويبات، موسِّعات، حاويات حرّة، شريط جانبيّ؛ التبويبات لا توفّر الحساب
4. الرسوم والجداولStreamlit الأصليّ للسريع، Plotly للتفاعليّ، Altair للإحصائيّ؛ use_container_width=True شبه دائم
5. التخزين المؤقّتcache_data ينسخ، cache_resource يتشارَك؛ نموذج مخزَّن بـcache_data مغالطة صريحة
6. الحالة والنماذجsession_state يُبقي القيم؛ form يؤجّل إعادة التنفيذ حتّى التسليم
7. الرفع والتنزيليُفحَص قبل المعالجة، st.stop() عند خطأ؛ الحدّ الافتراضيّ 200 ميغابايت
8. استدعاء النموذجtimeout إلزاميّ على كلّ طلب HTTP؛ cache_resource حول joblib.load
9. السمة وسهولة الاستخدامأربعة ألوان في config.toml تكفي؛ فعل رئيسيّ واحد لكلّ شاشة
10. النشر والتحكّمالأسرار في .streamlit/secrets.toml، أبدًا في الشيفرة؛ hmac.compare_digest لكلمة المرور

الخيوط التي تعبر الدورة

نموذج التنفيذ يُفسِّر كلّ شيء تقريبًا. عند كلّ تفاعل، السكربت يُعاد تنفيذه من أعلى. هذه الفكرة الوحيدة تشرح لماذا يبقى العدّاد الساذج عند 1، ولماذا تختفي الدرجة عند تحريك منزلقة، ولماذا يلزم تخزين مؤقّت لعدم إعادة قراءة النموذج مع كلّ نقرة، ولماذا وُجدت النماذج، ولماذا التبويبات لا تخفّض الحساب. من يفهم هذه الآليّة يمتلك نموذجًا ذهنيًّا يجعل بقيّة الوحدات استنتاجًا لا حفظًا.

ما يبقى وما يُعاد حسابه. التخزين المؤقّت وحالة الجلسة إجابتان على السؤال نفسه ــ ما الذي نُبقيه من تنفيذ إلى آخر. التخزين المؤقّت يخصّ نتائج الدوالّ، ويُتشارَك بين الجلسات، ويخدم الأداء. حالة الجلسة تخصّ قيم المستخدم الحاليّ، معزولة بجلسته، وتخدم سهولة الاستخدام. الخلط بينهما يقود إمّا إلى حسابات مكرَّرة بلا فائدة، وإمّا إلى تلوّث بين المستخدمين.

المدخلات غير المتحكَّم فيها تُفحَص قبل الاستعمال. ملفّ مرفوع، طلب HTTP، نموذج مُسلَّم ــ ثلاث أبواب مفتوحة على بيانات لم يُنتجها التطبيق. كلّ وحدة تلامس أحد هذه الأبواب تُذكّر بالقاعدة نفسها: افحص صراحةً، توقّف بأدب عند الفشل، اعرض رسالة نافعة. التطبيقات التي تجرّ علّات صعبة التشخيص هي غالبًا تلك التي أهملت هذه الخطوة.

التطوير يتوقّف عند الإطلاق، لا قبله. لوحة قيادة تعيش على حاسوب مطوّرها فحسب ليست تسليمة. الأسرار والسمة والتحكّم في الوصول وحدود التزامن ليست تزيينًا آخر المشروع: هي العناصر التي تجعل التطبيق يُتبنَّى أو يُرفَض. الوحدة 10 تُدمَج في التصميم منذ اليوم الأوّل، لا في اليوم الأخير.

الاختبار الختاميّ

الاختبار يتضمّن 40 سؤالًا تغطّي وحدات الدورة العشر: نموذج التنفيذ ونتائجه العمليّة، اختيار مكوّنات الإدخال والعرض، هيكلة الصفحة بالأعمدة والتبويبات، اختيار عائلة الرسم المناسبة، الفرق بين cache_data وcache_resource ومزالق الإبطال، الاستعمال السليم لـsession_state والنماذج، فحص ملفّ مرفوع والتسجيل بالجملة، استدعاء نموذج محلّيّ أو بعيد مع معالجة الأخطاء، السمة وسهولة الاستخدام، وأخيرًا النشر والتحكّم في الوصول.

عدّة أسئلة تعرض حالات للتشخيص: عدّاد يبقى عالقًا عند 1، ونموذج يُعاد تحميله مع كلّ نقرة، ودرجة تختفي، ومفتاح API يظهر في التزام Git، وواجهة API تُعلِّق التطبيق. الحُكم هو ما يُقاس، لا استظهار توقيعات الدوالّ.

في حال النجاح، تُسلَّم لك شهادة الإتمام فورًا؛ رقمها قابل للتحقّق من أيّ طرف على المنصّة.

قبل البدء

راجع الجدول أعلاه، ولكلّ سطر اسأل نفسك «كيف سأعرف أنّني أخطأت هنا؟». إن استطعت أن تشرح لماذا يبقى العدّاد الساذج عند 1، ولماذا نموذج مرَّر إلى cache_data ينسخ الذاكرة بلا فائدة، ولماذا timeout على requests.post غير قابل للتفاوض، وأين توضع كلمة مرور لا نريد أن نجدها على GitHub، فأنت جاهز. بالتوفيق!

الامتحان النهائي

هل أنت مستعدّ لاعتماد هذه الدورة؟

40 سؤالًا تُختار عشوائيًّا من بنك أسئلة الدورة · حدّ النجاح 70 % · شهادة PDF قابلة للتحقّق تُصدَر فورًا عند النجاح.

ابدأ الامتحان

يلزم تسجيل الدخول إلى حسابك في InSkillML مع اشتراك نشط. يمكنك أيضًا بدء الامتحان من دوراتي.