Ячейки и общий документ

Тетрадь состоит из ячеек с Python-кодом и текстовых пояснений. Правки синхронизируются между участниками. Под ячейкой появляются результаты запуска: текст, таблицы, графики или ошибка Python. Доступные действия зависят от правил комнаты и состояния замка.

Клавиши в редакторе кодаДействие
Shift + EnterЗапустить и перейти дальше.
Ctrl / + EnterЗапустить текущую ячейку.
Alt + EnterЗапустить и добавить следующую ячейку.

Кнопки запуска подходят и для устройств без клавиатуры. Чтобы продолжить подготовленную тетрадь, загрузите .ipynb в файлы комнаты и откройте его: она станет тетрадью комнаты. Переносятся код, текст и вложенные картинки, сохранённые результаты запуска — нет. Файл тетради можно скачать из панели файлов, но в нём только код и текст ячеек, без результатов.

В комнате может быть несколько тетрадей: каждая — файл .ipynb в панели файлов, новую создаёт «Новая тетрадь». Все тетради комнаты работают с одним ядром. Лента версий и восстановление относятся только к основной тетради комнаты, имя которой показано в панели «История»; правки в других тетрадях там не видны.

Одно ядро на комнату

Все ячейки комнаты используют общую память Python. Выполните подготовку один раз, затем используйте значения в следующих ячейках:

# Подготовка преподавателя
numbers = [2, 4, 6]

# Следующая ячейка той же комнаты
sum(numbers) / len(numbers)

Порядок исполнения важнее положения ячейки в тетради. Если переменная не определена, выполните ячейку, где она создаётся. Повторный запуск может повторно записать данные или изменить уже изменённый объект.

Перезапуск ядра стирает переменные для всех. Текст тетради и файлы сохраняются. После перезапуска выполняйте подготовительные ячейки заново. Перезагрузка страницы и перезапуск Python — разные операции.

Работа с файлами

В панели файлов есть дерево каталогов. Файл можно загрузить с компьютера, открыть и скачать. Создание и редактирование определяются правилами; переименование, перемещение в другую папку и удаление доступны только преподавателю. Один файл — до 50 МБ, все файлы комнаты вместе — до 1 ГБ; владелец сервера меняет эти пределы переменными MAX_UPLOAD_MB и MAX_SESSION_MB. Текстовые файлы можно редактировать совместно.

Python видит рабочие файлы этой комнаты. Используйте относительные пути, чтобы тетрадь оставалась переносимой:

from pathlib import Path

Path("results").mkdir(exist_ok=True)
Path("results/answer.txt").write_text("42\n", encoding="utf-8")

Скачанный .ipynb не является резервной копией всех файлов сервера. Перед самостоятельной работой заберите также данные, изображения и другие зависимости кода.

Общий терминал

Терминал исполняет команды в среде комнаты и показывает общую историю вывода. Правило «Запускать код» распространяется и на него. Команда python analysis.py запускает отдельный процесс Python: переменные ноутбука туда автоматически не переходят, а файлы комнаты остаются общими. Кнопка «Запустить» в редакторе файла .py или .sh сохраняет последние правки и выполняет файл в этом же терминале.

Производственный образ имеет защищённую корневую файловую систему, а выход в сеть комнаты по умолчанию закрыт, кроме DNS. Установка пакетов из интернета во время занятия может не работать. Подготовьте библиотеки заранее через выпуск окружения.

Что переживает остановку

Ноутбук, файлы и сохранённые материалы хранятся на диске. Python-память и процессы зависят от жизни ядра. Обновление сервера или согласованная резервная копия останавливают ядра и теряют их память. Если в комнате два часа никого нет и ничего не выполняется, сервер сам останавливает её ядро: переменные пропадут, тетрадь и файлы останутся. Удаление диска сервера уничтожит и файлы, если нет внешней резервной копии.