Формат задаёт начальные правила
«Обычный», «Лекция» и «Консилиум» — наборы начальных значений. Правила задаются в форме нового занятия, а меняются в панели через «Настройки» в меню занятия и в самой комнате — кнопкой с замком «Что можно делать в комнате». Изменения применяются сразу, входить заново участникам не нужно; сервер проверяет правила для каждого действия. Преподаватель может открыть отдельную ячейку группе, сохранив остальную тетрадь закрытой.
Что можно настроить
| Настройка | Что она означает |
|---|---|
| Когда открываю ячейку студентам | «Пишут вместе» — одна общая ячейка на всех. «Каждый отвечает сам» — у каждого свой ответ, а преподаватель видит все ответы в пульте (консилиум). |
| Печатать в ячейках | Все или только преподаватель. |
| Запускать код | Все, «По одной» или преподаватель. «По одной» — у студента в тетради не больше одной ячейки: считающейся или в очереди; «Запустить всё» и запуск всех ячеек выше остаются преподавателю. Правило распространяется также на запуск файлов и терминал. |
| Ячейка останавливается сама | Через сколько секунд сервер прерывает выполнение ячейки; пусто — никогда, и так по умолчанию. Ядро у тетради одно, а очередь к нему общая: бесконечный цикл в одной ячейке держит и остальные ячейки, и попытки консилиума, которые считаются в этом ядре, — а в занятии, чей консилиум считается на машинах, попытки идут в пуле исполнителей и такой цикл их не держит. Предел касается и ячеек преподавателя. |
| Опасные команды | Исполнять ли в ячейках команды, которые гасят ядро или стирают состояние всей комнаты: exit(), quit(), os._exit(), os.abort(), смертельный сигнал самому ядру (os.kill, signal.raise_signal), %reset, %xdel, а из команд оболочки — kill, pkill и killall по ядру или по «всем», shutdown, reboot, halt, init 0 и rm -rf корня занятия. По умолчанию не исполняются — одна такая строка в общей тетради стоит переменных всему классу. Правило действует и на ячейки преподавателя: ядро одно на всех, а перезапустить его есть чем. sys.exit() не трогается: ядро его переживает. Внутри попытки консилиума эти команды не исполняются в любом случае. |
| Номера строк в коде | «Скрыты» или «Видны». Номера стоят слева от строк в ячейках с кодом и видны всем в комнате сразу — и преподавателю, и студентам, в том числе в личных тетрадях. На строку удобно сослаться вслух, а ошибка Python называет её номер — «line 7». По умолчанию скрыты. Это не право, а вид тетради: правило ничего не запрещает, и «Закончить занятие» его не меняет. |
| Добавлять и удалять ячейки | Все, только добавление или преподаватель. При «только добавлять» студент не может удалить даже свою ячейку. |
| Выводить документ на общий экран | Кто управляет общим экраном; листать у себя студенты могут всегда. |
| Загружать и править файлы | Все или преподаватель. Скачивание не ограничено этим правилом; удаление, переименование и замена существующего файла загрузкой остаются преподавателю. |
| Личные тетради студентов | Может ли студент завести в комнате свою тетрадь — пустую или внеся .ipynb из папки занятия. Своя тетрадь всегда личная: правят и запускают в ней автор и преподаватель, остальные смотрят. По умолчанию выключено. Это не то же, что строка выше: та — про общую папку занятия. Не больше трёх своих тетрадей на человека; свою тетрадь автор может и убрать. |
| Оракул в режиме «Сделать» | Для кого оракул сам читает и меняет файлы и запускает код: для всех, для преподавателя или ни для кого. |
| Действий на запрос | Предел действий оракула за один запрос в режиме «Сделать»: чтение, правка и запуск считаются отдельно. 0 — без лимита, пустое поле — как на сервере; если на сервере задан лимит, занятие может только уменьшить его. |
| Вопросов оракулу в час | Предел на участника, не выше серверного. Не ограничивает преподавателя. |
| Промежуток между вопросами | Не короче серверного интервала. Не ограничивает преподавателя. |
| Смотреть историю версий | Кто видит предыдущие версии тетради и авторов изменений. |
| Перезапускать ядро | Сброс переменных тетради у всех, кто в ней работает; текст ячеек и файлы сохраняются. В личной тетради ядро перезапускает её автор. |
| Очищать весь вывод | Вывод всех ячеек тетради, история терминала и лента оракула. Вывод отдельной ячейки чистит тот, кто может её править. |
Замок на ячейке
Преподаватель выбирает одно из трёх состояний: «Закрыта» — редактирует и запускает преподаватель; «Открыта всем» — группа печатает в этой ячейке и запускает её, даже если правила комнаты оставляют это преподавателю, но удалить или переставить её не может; «Консилиум» — отдельные ответы студентов. Настройка «Когда открываю ячейку студентам» определяет, что делает щелчок по замку; все три состояния доступны в меню, которое открывается удержанием кнопки замка или правым щелчком.
Доступ к отдельной тетради
Правила комнаты действуют на все тетради сразу, но у каждой тетради есть собственный доступ. Он меняется в меню «Доступ» на вкладке тетради — меню видит преподаватель.
| Доступ | Что он означает |
|---|---|
| Как в комнате | Правила занятия как есть. Значение по умолчанию у всех тетрадей, включая тетрадь комнаты. |
| Личная — автор | Печатают, меняют состав и запускают автор и преподаватель; остальные смотрят. Автором становится тот, кто завёл тетрадь на занятии; у тетради, созданной преподавателем, автора нет, и этот пункт недоступен. |
| Открыта всем | Печатать, менять состав и запускать может любой участник, даже если правила комнаты оставляют это преподавателю. |
| Только преподаватель | Печатает и запускает только преподаватель, даже если комната открыта. |
Доступ перекрывает ровно три правила — «Печатать в ячейках», «Запускать код» и «Добавлять и удалять ячейки» — и то, что из них следует: форматирование, «Применить» у оракула, очистку вывода своей ячейки, перестановку ячеек, «Запустить всё» и запуск ячеек выше в этой тетради. Остальные правила остаются общими для комнаты: файлы, терминал, общий экран, перезапуск ядра, история и оракул.
Доступ привязан к тетради, а не к файлу: переименование файла его сохраняет, удаление тетради из комнаты — снимает. Когда доступ не «как в комнате», на вкладке стоит короткая метка: «личная · имя», «моя», «открыта всем», «только преподаватель».
«Закончить занятие» сильнее доступа к тетради: после звонка личные и открытые всем тетради закрыты так же, как остальные. «Продолжить занятие» возвращает их обратно.
Правила действий и исполнение Python
Правило «Опасные команды» — лежачий полицейский, а не песочница. Оно закрывает команды, которые студент наберёт из любопытства, и не закрывает умысел: ctypes, перезагрузка модуля os через importlib, fork-бомба, segfault нативной библиотеки и globals().clear() проходят мимо. Терминал комнаты — настоящая оболочка, и защита его не касается вовсе: тот, кому правило «Запускать код» открывает терминал (по умолчанию в обычном занятии — вся комната, в лекции и консилиуме — только преподаватель), погасит ядро оттуда одной командой.
Запущенный Python имеет доступ к файлам комнаты. Запрет загрузки или редактирования через панель не мешает разрешённому коду записать файл через open(...). Правила интерфейса не создают отдельную файловую среду для каждого участника.
Завершение и модерация
«Закончить занятие» временно оставляет активные действия преподавателю, сохраняя настройки и материалы. «Продолжить занятие» возвращает прежние правила. Пустая комната означает отсутствие подключённых людей, а не завершённое занятие.
Участника удаляют с занятия в панели «Люди» командой «Удалить с занятия…». Доступ закрывается на 24 часа и привязан к отметке в браузере; другой браузер или приватное окно могут её обойти. Вопросы участника и ответы оракула удаляются, и история версий их не вернёт; его попытки и заявки на запуск в Консилиуме тоже удаляются. Досрочно снять ограничение можно кнопкой «Вернуть» в списке «Удалённые с занятия» — удалённое при этом не восстанавливается.
Это инструмент против срыва занятия, а не проверка личности или контроль экзамена.