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

Тренажёрный зал

Здесь собраны все механики платформы — их можно запускать отдельно от глав, сколько угодно раз. У каждой карточки есть ссылка на главу, где механика встречается по программе. Результаты отсюда не влияют на прогресс глав: зал — это чистая тренировка.

Конструктор тренажёров

Любой движок зала можно запустить со своими данными: собери набор, сохрани его как пресет и поделись ссылкой — тот, кто её откроет, получит твой набор готовым к запуску.

Создать свой тренажёр

Печать

Слепая печатьвстречается в главе «Печать и клавиатура»
Открыть тренажёр
the quick brown fox jumps over the lazy dog
клавиша ``клавиша 11клавиша 22клавиша 33клавиша 44клавиша 55клавиша 66клавиша 77клавиша 88клавиша 99клавиша 00клавиша --клавиша ==клавиша ⌫клавиша TabTabклавиша QQклавиша WWклавиша EEклавиша RRклавиша TTклавиша YYклавиша UUклавиша IIклавиша OOклавиша PPклавиша [[клавиша ]]клавиша \\клавиша Caps LockCaps Lockклавиша AAклавиша SSклавиша DDклавиша FFклавиша GGклавиша HHклавиша JJклавиша KKклавиша LLклавиша ;;клавиша ''клавиша EnterEnterклавиша ShiftShiftклавиша ZZклавиша XXклавиша CCклавиша VVклавиша BBклавиша NNклавиша MMклавиша ,,клавиша ..клавиша //клавиша ShiftShiftклавиша CtrlCtrlклавиша WinWinклавиша AltAltклавиша ПробелПробелклавиша AltAltклавиша WinWinклавиша MenuMenuклавиша CtrlCtrl
следующая: T — указательный левой руки

Терминал

Терминал Linuxвстречается в главе «Linux и терминал»
Открыть тренажёр
Учебный терминал. Введите help, чтобы увидеть список команд.
student@pgk:~$
Как это устроено под капотом
Никакого настоящего Linux здесь нет: файловая система — обычный JS-объект в памяти браузера, где папка — это вложенный объект, а файл — строка с содержимым. Команды ls, cd, mkdir, rm и остальные — функции, которые читают и меняют этот объект, а cp -r — просто глубокое копирование куска JSON. После каждой команды проверка квеста проходит по требуемым путям и смотрит, существуют ли они в этом дереве. Перезагрузишь страницу — «диск» создастся заново с нуля, так что ломать тут можно безнаказанно.

Git

Git-тренажёрвстречается в главе «Git: первый коммит»
Открыть тренажёр
Пустая папка проекта. Начни с git init. Полный список команд — help.
project $
Команды: 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
prevHash0000000000…000000
hash
Блок 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)
}

Что напечатает этот код? Сначала ответь, потом проверяй.