Робоче середовище та резервна копія
Де зберігається робота
JupyterLite працює у браузері. Зміни notebook зберігаються у локальному сховищі поточного профілю. Після перезавантаження вкладки (F5 / Ctrl+R) має знову відкритися той самий зошит —
якщо ви перебуваєте в лабораторній, вас не повинно перекидати на головну сторінку або Launcher.
Відкриті документи й розташування панелей зберігаються у workspace браузера, а редаговані
.ipynb — окремо у contents storage. Автозбереження запускається кожні 15 секунд.
Перед перезавантаженням збережіть зміни (Ctrl+S / Cmd+S),
щоб не втратити ще не записаний текст. Ядро WebAssembly після F5 запускається заново, тож
значення змінних у пам'яті не зберігаються.
Локальне сховище не є резервною копією. Очищення даних сайту або зміна браузерного профілю може видалити роботу.
Як експортувати .ipynb
Після важливого етапу збережіть notebook і завантажте його як .ipynb. Після експорту перевірте, що файл з’явився у
звичайній папці завантажень.
Зберігайте резервну копію у власній папці або в навчальній системі. Вона потрібна для перенесення роботи між браузерами та пристроями.
Як імпортувати копію
Відкрийте File Browser у workbench. Завантажте раніше експортований .ipynb, а потім відкрийте його.
Після імпорту запустіть контрольну комірку. Вона підтвердить, що notebook відкрився коректно.
Чому після оновлення видно стару версію
Локальна копія може мати пріоритет над базовою версією курсу. Тому оновлення сайту інколи не змінює вже відкритий notebook.
Перед відновленням базової копії експортуйте власну роботу. Потім відкрийте чистий notebook і перенесіть лише потрібний код та пояснення.
Що робити зі зламаним notebook
- Експортуйте поточну копію, якщо вона містить корисну роботу.
- Відкрийте чисту базову версію.
- Перенесіть власний код і текст.
- Виконайте notebook з чистого стану.
- Повторно експортуйте робочу версію.
Чистий стан
Частина лабораторних перевіряє відтворюваність. Виконайте notebook від початку після перезапуску ядра. Результат має залежати від видимих комірок і даних, а не від попереднього випадкового запуску.
Якщо правильний результат з’являється лише після особливого порядку кліків, зафіксуйте це як проблему.
Кнопка PDF у верхній панелі notebook і Ctrl+P / Cmd+P відкривають друк поточного зошита. Повна інструкція зі
здачі знаходиться на сторінці «Як виконувати лабораторні».
Перед зміною браузера або пристрою
Експортуйте всі незавершені лабораторні. Перевірте наявність файлів у звичайній файловій системі пристрою. Локальний стан JupyterLite не переноситься автоматично між профілями.
Якщо викладач оновив завдання
Спочатку збережіть власну версію. Далі відкрийте чисту копію оновленого notebook і перенесіть тільки власні фрагменти. Так ви не повернете старі службові комірки або тести.
Повідомлення консолі та завантаження C++/Python
C++20 і Python запускаються всередині браузера через окремі ядра WebAssembly. Перший запуск після очищення кешу завантажує великі WASM-файли, зокрема компоненти компілятора C++. Наступні відкриття можуть використовувати HTTP-кеш.
Якщо завантаження здається повільним, у Chrome DevTools → Network вимкніть
Disable cache і встановіть No throttling замість режимів Slow 4G.
Перевірте тривалість першого та повторного запуску окремо. HTTP 200 сам по собі
не означає, що ресурс не кешується: дивіться Size, Cache-Control, ETag
і HTTP 304.
Повідомлення xcpp20 contents will be synced with Jupyter Contents —
інформаційне. Trying to send message on removed socket може з'являтися
під час закриття або перезапуску браузерного ядра й не є достатнім доказом
збою. Якщо воно повторюється разом з неможливістю виконати код, збережіть
ноутбук і перевірте запуск після перезавантаження сторінки.
У деяких збірках CppInterOp під час пошуку системного компілятора у WASM може
виводитися exec: : Function not implemented. Браузер не підтримує запуск
зовнішніх процесів як звичайна ОС; ядро може продовжити роботу, використовуючи
вбудовані шляхи Clang. Визначальним є результат виконання C++-комірки,
а не сам цей рядок. Не встановлюйте «відсутній системний Clang» на сервері:
він не надасть exec всередині браузерного WebAssembly.
Для діагностики справжнього збою надішліть Console разом з Network HAR,
HTTP-заголовками великого WASM-файлу й результатом мінімальних комірок
std::cout << 1; (C++) та print(1) (Python).
Як перевірити, що сервер віддає саме новий деплой
Відкрийте /workbench/alp-release.json. Поле revision повинно збігатися з SHA
коміту, який показує останній успішний Gitea Actions deploy. Endpoint має
Cache-Control: no-store; він не містить персональних даних. Якщо SHA не збігається,
перевіряйте доставку нового образу або проксі, а не очищуйте студентські notebooks.
Стан відкритих вкладок JupyterLab (workspace) не зберігається між перезавантаженнями для уникнення автоматичного повторного запуску великих WASM-kernels та повідомлень для закритого з'єднання. Файли зошитів не видаляються: вони залишаються у Contents storage.