المراجعة والاختبار الختاميّ
عشر وحدات للانتقال من «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 مع اشتراك نشط. يمكنك أيضًا بدء الامتحان من دوراتي.