الكشف التلقائي عن المعلم مقابل الطالب (اقرأ أولًا)
الميزة المميِّزة لـ cc-class هي أنك تثبّت الحزمة نفسها على كل جهاز. بعد التثبيت، يكتشف كل جهاز بنفسه ما إذا كان "معلمًا" أم "طالبًا" — ولا يحتاج المسؤولون إلى فعل أي شيء مختلف لكل جهاز.
يستند القرار إلى شيء واحد فقط: اسم الحاسوب (hostname).
1. القاعدة: أيّ الأسماء تُعدّ "معلمًا"
يُعامَل الجهاز على أنه معلم إذا طابق اسم حاسوبه أيًّا مما يلي (دون حساسية لحالة الأحرف)؛ وإلا فهو طالب.
- يحتوي على كلمة مفتاحية للمعلم: يتضمن الاسم
teacherأوjiaoshiأوlaoshiأو الكلمة الصينية老师.- مثال:
teacher-01،JiaoShi،lab1-老师
- مثال:
- يحتوي على وسم معلم
-t/_t: حرفtمستقل محدّد بحيث يكون الحرف قبله هو-أو_أو بداية الاسم، والحرف بعده هو-أو_أو رقم أو نهاية الاسم.- يطابق:
pc-t،lab-t-01،room1-t2،PC001-T - لا يُطلَق خطأً على:
-test(حرف t يتبعهe)،team(حرف t يتبعهe)،host-time(حرف t يتبعهi)
- يطابق:
للفنيين: القاعدة الدقيقة
يُطابَق وسم المعلم بواسطة التعبير النمطي (^|[-_])t([-_]|[0-9]|$) (بعد تحويل الأحرف إلى صغيرة). يتضمّن مثبّت Windows (installer.nsi) وخدمة Linux الخفية (StudentService) منطقًا متطابقًا، لذا يتفق دائمًا تطبيق المعلم وتطبيق الطالب والمثبّت.
التسمية الموصى بها
| الدور | مثال على اسم الحاسوب | ملاحظة |
|---|---|---|
| المعلم | teacher، teacher-01، PC-T، PC001-T | كلمة مفتاحية أو وسم -t |
| الطالب | PC001، PC002، stu-01، room1-15 | اسم عادي، بدون وسم معلم |
أبسط نظام
سمِّ جهاز المعلم PC001-T (ينتهي بـ -T)، والطلاب PC002، PC003، … تستخدم البيئة التجريبية في هذا الدليل ذلك تمامًا: المعلم PC001-T، الطلاب PC002 وPC003.
2. أولوية اسم سطح المكتب السحابي (مهم)
تستخدم العديد من المختبرات حلول سطح المكتب السحابي / بلا أقراص (IDV/VOI) حيث تُقلِع أجهزة كثيرة من الصورة نفسها، فقد يكون اسم مضيف نظام التشغيل متطابقًا عبر الأجهزة. للتعامل مع ذلك، يحلّ cc-class الاسم على النحو التالي:
- أولًا، يقرأ "اسم حاسوب سطح المكتب السحابي" الذي تدفعه المنصة:
- في Linux: من الجهاز
/dev/vdchardev؛ - في Windows: من الجهاز
\\.\vddsk.
- في Linux: من الجهاز
- لا يلجأ إلى اسم مضيف نظام التشغيل إلا إذا كان ذلك الجهاز غائبًا / غير قابل للقراءة / فارغًا.
بعبارة أخرى: اسم سطح المكتب السحابي > اسم مضيف نظام التشغيل. في بيئة سطح المكتب السحابي، اضبط اسم حاسوب سطح المكتب السحابي للجهاز (مثل PC001-T) على منصة الإدارة — وليس فقط اسم مضيف نظام التشغيل.
مزلق شائع
إذا كان اسم مضيف نظام التشغيل هو PC001-T (يبدو معلمًا) لكن اسم سطح المكتب السحابي المدفوع هو PC001 (طالب)، فسيستخدم cc-class الاسم السحابي PC001 ويعامله كطالب، فيرفض تطبيق المعلم العمل. عند استكشاف الأخطاء، ثِق بـ "اسم حاسوب سطح المكتب السحابي".
3. ما الذي يسبّبه القرار (السلوك التلقائي)
| إذا كان الجهاز… | TeacherApp | StudentApp | اختصار سطح المكتب |
|---|---|---|---|
| معلمًا | يعمل بشكل طبيعي | يخرج تلقائيًا (تطبيق الطالب لا يعمل على جهاز معلم) | ينشئ أيقونة المعلم فقط |
| طالبًا | يعرض "ليس جهاز معلم، لن يعمل" | يعمل ويتصل تلقائيًا بالمعلم | لا ينشئ أي أيقونة على سطح المكتب (يبقي سطح المكتب نظيفًا) |
- يخرج تطبيق الطالب بهدوء على جهاز المعلم (يُرجِع 0، دون إزعاج).
- يحذّر تطبيق المعلم ويخرج على جهاز الطالب. في الحالات الطارئة يمكنك إضافة وسيط سطر الأوامر
--no-host-checkلتخطّي الفحص (انظر الأسئلة الشائعة).
4. اختصارات سطح المكتب: تلقائية، دون عمل يدوي
أنت لا تنشئ الأيقونات يدويًا. يتولّى cc-class أمرها حسب الدور وينظّف أي أيقونات متبقّية بدور خاطئ:
- جهاز المعلم: تُوضَع أيقونة cc-class Teacher على سطح المكتب.
- في Linux، تعيد خدمة الطالب الخفية
StudentServiceبناءها عند كل إقلاع بناءً على اسم سطح المكتب السحابي، وتضبط تلقائيًا خاصيةmetadata::trustedفي GNOME حتى لا تظهر الأيقونة كـ"مشغّل تطبيقات غير موثوق" (وهو ما يجعل النقر المزدوج لا يفعل شيئًا). - في Windows، ينشئ المثبّت
…-Teacher.lnkبناءً على اسم الحاسوب.
- في Linux، تعيد خدمة الطالب الخفية
- جهاز الطالب: لا توجد أيقونة على سطح المكتب على الإطلاق (يبقى مدخل في قائمة التطبيقات لأغراض استكشاف الأخطاء).
النتيجة الفعلية في البيئة التجريبية (عند فحص مجلدات سطح المكتب):
# Teacher PC001-T desktop: has the teacher icon
~/Desktop/cc-class-teacher.desktop
# Student PC002 / PC003 desktops: empty (no cc-class icon)
(none)هل غيّرت اسم الحاسوب؟
فقط أعد التشغيل. عند الإقلاع تعيد الخدمة الخفية تقييم الدور بالاسم الجديد وتعيد بناء/تنظيف أيقونة سطح المكتب — تلقائيًا بالكامل.
5. مخطط القرار
┌─────────────────────────────┐
│ Read "cloud-desktop name" │
│ Linux: /dev/vdchardev │
│ Windows: \\.\vddsk │
└──────────────┬──────────────┘
non-empty │ otherwise fall back
┌──────────────▼──────────────┐
│ Use the OS hostname │
└──────────────┬──────────────┘
│
name contains teacher / jiaoshi / laoshi / 老师
or a -t / _t teacher tag?
┌───────┴───────┐
yes│ │no
┌──────▼──────┐ ┌──────▼──────┐
│ Teacher │ │ Student │
│ run teacher │ │ run student │
│ make icon │ │ no icon │
└─────────────┘ └─────────────┘بعد ذلك، اختر منصّتك 👉 التثبيت على Windows | التثبيت على Linux