Автоопределение преподавателя и ученика (прочитать первым)
Определяющая особенность 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, чтобы пропустить проверку (см. FAQ).
4. Ярлыки на рабочем столе: автоматически, без ручной работы
Вы не создаёте значки вручную. cc-class обрабатывает их в зависимости от роли и очищает любые оставшиеся значки неверной роли:
- Машина преподавателя: на рабочий стол помещается значок cc-class Преподаватель.
- В 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. Схема принятия решения
┌─────────────────────────────┐
│ Чтение «облачного имени» │
│ Linux: /dev/vdchardev │
│ Windows: \\.\vddsk │
└──────────────┬──────────────┘
не пусто │ иначе откат
┌──────────────▼──────────────┐
│ Использовать имя хоста ОС │
└──────────────┬──────────────┘
│
имя содержит teacher / jiaoshi / laoshi / 老师
или метку преподавателя -t / _t?
┌───────┴───────┐
да │ │нет
┌──────▼──────┐ ┌──────▼──────┐
│ Преподаватель│ │ Ученик │
│ запуск преп. │ │ запуск учен.│
│ создать знач.│ │ нет значка │
└─────────────┘ └─────────────┘Далее выберите вашу платформу 👉 Установка на Windows | Установка на Linux