Тренажёрный зал
Здесь собраны все механики платформы — их можно запускать отдельно от глав, сколько угодно раз. У каждой карточки есть ссылка на главу, где механика встречается по программе. Результаты отсюда не влияют на прогресс глав: зал — это чистая тренировка. Любой движок зала можно запустить со своими данными: собери набор, сохрани его как пресет и поделись ссылкой — тот, кто её откроет, получит твой набор готовым к запуску.Конструктор тренажёров
Создать свой тренажёр
Печать
Слепая печатьвстречается в главе «Печать и клавиатура»
Открыть тренажёр
the quick brown fox jumps over the lazy dog
следующая: T — указательный левой руки
Терминал
Терминал Linuxвстречается в главе «Linux и терминал»
Открыть тренажёр
Учебный терминал. Введите help, чтобы увидеть список команд.
student@pgk:~$
Как это устроено под капотом
Никакого настоящего Linux здесь нет: файловая система — обычный JS-объект в памяти браузера, где папка — это вложенный объект, а файл — строка с содержимым. Команды ls, cd, mkdir, rm и остальные — функции, которые читают и меняют этот объект, а cp -r — просто глубокое копирование куска JSON. После каждой команды проверка квеста проходит по требуемым путям и смотрит, существуют ли они в этом дереве. Перезагрузишь страницу — «диск» создастся заново с нуля, так что ломать тут можно безнаказанно.
Git
Git-тренажёрвстречается в главе «Git: первый коммит»
Открыть тренажёр
Пустая папка проекта. Начни с git init. Полный список команд — help.
Команды: git config · init · status · add · commit -m · diff · log · branch · switch · merge · restore · edit <файл> <текст> — изменить файл · help · clear
Файлы проекта
пока пусто — создай файл: edit README.md Привет
История коммитов
история пуста — сделай первый коммит
Как это устроено под капотом
Внутри — не настоящий git, а его модель в памяти: коммит — объект с хешем, сообщением, списком родителей и полным снимком файлов, а ветка — просто указатель на хеш коммита. Команды меняют этот граф объектов, при этом формулировки вывода сняты с настоящего git 2.x, чтобы глаз привыкал к реальному терминалу. Граф справа рисуется по тем же объектам: SVG-кружки — коммиты, линии — связи «родитель — потомок», а merge с расхождением создаёт коммит с двумя родителями, ровно как в настоящем git. Push и pull в режиме с origin — упрощённая пересылка недостающих коммитов между двумя такими репозиториями.
Крипто
Хеш-площадкавстречается в главе «Что такое блокчейн»
Открыть тренажёр
Текущий SHA-256
…Как это устроено под капотом
Хеш здесь считает не наш код, а встроенный в браузер WebCrypto: вызов crypto.subtle.digest('SHA-256', байты текста) возвращает 32 байта, которые мы переводим в 64 hex-символа. Это тот же самый SHA-256, что работает в настоящих блокчейнах — никакой упрощённой учебной версии. Подсветка отличий устроена просто: две hex-строки сравниваются посимвольно, совпадения остаются серыми, отличия подсвечиваются. Вся «магия» лавинного эффекта происходит внутри самой хеш-функции, компонент её только показывает.
Цепочка блоковвстречается в главе «Что такое блокчейн»
Открыть тренажёр
Измени данные в любом блоке — и посмотри, как рвётся цепь: hash блока пересчитается, а prevHash следующих блоков перестанет совпадать.
Блок 1…
prevHash
0000000000…000000hash
…Блок 2…
prevHash
…hash
…Блок 3…
prevHash
…hash
…Блок 4…
prevHash
…hash
…Цифровая подписьвстречается в главе «Что такое блокчейн»
Открыть тренажёр
Начни с кнопки «Создать ключи» — пара ключей сгенерируется прямо в твоём браузере.
Compose
Конструктор Compose-экранавстречается в главе «Первый экран Compose»
Открыть тренажёр
Тренажёрный залСобери экран самПоехали
Column(modifier = Modifier.fillMaxSize().padding(16.dp), verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally) {
Text("Тренажёрный зал", fontSize = 22.sp)
Text("Собери экран сам", fontSize = 14.sp)
Button(onClick = { }) { Text("Поехали") }
}Параметры — превью и код меняются вместе
Column · arrangement
Измени параметры 3 раза и посмотри, как меняется код: 0 из 3
Как это устроено под капотом
Телефон слева — это не Android и не Compose, а обычный HTML: вёрстка описана JSON-деревом, где Column и Row превращаются во flexbox-контейнеры (flex-direction: column / row), Box — в CSS grid с наложением слоёв, а dp — в пиксели один к одному. Код справа генерируется из того же самого JSON-дерева обходом в глубину, поэтому превью и код физически не могут разойтись. Двигаешь ползунок — меняется одно поле в дереве, и React перерисовывает обе стороны сразу. Кнопка копирования отдаёт именно этот сгенерированный текст — его можно вставить в Android Studio как основу настоящего экрана.
Права
Калькулятор chmodвстречается в главе «Файлы, пакеты, SSH»
Открыть тренажёр
Владелец6
пользователь, которому принадлежит файл
Группа4
участники группы файла
Остальные4
все прочие пользователи системы
rw-r--r--Задание: щёлкни любую галочку и введи число (например, 640) — увидишь связь в обе стороны
Клавиши
Горячие клавиши IDEвстречается в главе «Android Studio: знакомство с IDE»
Открыть тренажёр
Выполнено: 0 из 6
Нажми сочетание: Search Everywhere: найти файл, класс, действие — что угодно
Сочетание Shift, дважды перехватит браузер — здесь его не проверить. Потренируй его в той программе, где оно нужно.
Разное
Собери фразувстречается в главе «IT-английский: стартовый словарь»
Открыть тренажёр
Нажимай на слова внизу и собери фразу по порядку
Предскажи выводвстречается в главе «Переменные и типы»
Открыть тренажёр
fun main() {
var reps = 3
reps += 4
println(reps * 2)
}Что напечатает этот код? Сначала ответь, потом проверяй.