Перейти к основному содержимому

Запуск практики

Практика работает целиком на вашей машине: браузер, Postgres и проверки — всё локально, интернет после скачивания образа не нужен.

Что нужно​

Docker с docker compose. Больше ничего: Python, Node и клиент Postgres ставить не надо.

в каталоге практики
docker compose pull && docker compose up

Открыть localhost:8766. Первый запуск дольше — образ скачивается и накатывается схема базы.

pull нужен на каждом новом комплекте: версия образа закреплена подвижным тегом :1, и без него docker поднимет тот образ, что уже лежит на диске, даже если он месячной давности.

Слева задания по темам с прогрессом и поиском; справа условие, редактор и панель результата.
приложение студентаСлева задания по темам с прогрессом и поиском; справа условие, редактор и панель результата.

Первый вход​

В первый раз приложение открывается на странице «Как всё устроено» и спрашивает, показать ли, что где находится. «Да» запускает показ по экрану: два десятка шагов с подсветкой — список заданий, условие, редактор, меню живой базы, вкладки панели, проверка. Показ ничего не нажимает за вас и не трогает базу: он только переключает вид и возвращает его как было.

«Нет, я уже работал» — и следующие домашки открываются сразу на задании. Ответ запоминается в браузере, поэтому вопрос не повторяется от пака к паку. Сама страница остаётся первым пунктом в списке слева: там же кнопка запустить показ заново.

Две базы, и это важно​

БазаЧто в нейКто её меняет
живаяваши эксперименты: любые SELECT, INSERT, CREATE, загруженные примеры данныхвы, кнопкой «Выполнить»
проверочнаячистая копия схемы, куда наливаются варианты данных заданиятолько проверка, автоматически

Поэтому сломать себе проверку экспериментами невозможно: «Проверить решение» не смотрит на живую базу вообще. И наоборот — то, что запрос «отработал» в живой базе с одним набором строк, ещё не значит, что задание решено.

Открываете задание — в живой базе сразу его первый пример данных, можно писать SELECT и видеть строки. Что сейчас в базе, показывает меню «База: …» рядом с «Выполнить»: там же другие примеры задания, «Перезагрузить текущие данные» (после DELETE и UPDATE) и «Очистить до пустой схемы». Если вы меняли данные сами, при переходе к другому заданию они не затираются — приложение предложит загрузить пример, но решать вам. Решения все эти кнопки не трогают.

Папка solutions/​

Рядом с docker-compose.yml создаётся папка solutions/ — по файлу на задание:

solutions/
t01_active_shops_with_seats.sql
t02_espresso_available.sql
.status.json что и когда проходило проверку
.history/ история запросов и закладки, в git не попадает

Это и есть ваша сдача: коммитьте solutions/ в свой репозиторий. Раннер сам дописывает .history/ в solutions/.gitignore, чтобы черновики не попали в коммит. Как проверяет преподаватель

Обновление практики​

Практику раздаёт преподаватель — файлом pack.enc в каталоге комплекта; раннер монтирует его только на чтение и распаковывает в память. Когда преподаватель прислал новый pack.enc, достаточно перезапустить раннер:

docker compose up -d --force-recreate runner

Сам раннер обновляется отдельно, и без pull новая версия не приедет:

docker compose pull && docker compose up -d

Комплект собран на версии новее вашего образа — в списке заданий появится «Обновите практику» с этой же командой: раннер сверяет свою версию с той, что записана в паке.

Данные живой базы переживают перезапуск: они лежат в томе pgdata. Ваши решения тоже — они на диске рядом, а не в контейнере.

Оформление курса

Если преподаватель положил в пак тему, приложение возьмёт из неё цвета, шрифты, логотип и название курса. Светлую или тёмную схему выбираете вы кнопкой в списке заданий — если тема не зафиксировала одну из них. Посмотреть оформление по умолчанию: localhost:8766/?theme=off.