Задание
1: darcs + ssh
Я надеюсь, что у каждого из вас есть доступ к компьютеру, кроме kodomo / kodomo-count / компьютеров класса: например, домашний компьютер или компьютер в лаборатории. Далее будем называть его me.
На компьютере me установите ssh-клиент (если его там ещё нет) и сгенерируйте пару ssh-ключей.
Внесите свой публичный ключ в ~/.ssh/authorized_keys на kodomo (иногда оказывается полезным после этого сказать chmod -R go-rwx ~/.ssh – иначе ssh-сервер будет считать ключи в этой директории скомпрометированными)
Запустите на me ssh-агента и загрузите в него приватный ключ
Убедитесь, что заход на kodomo теперь не требует от вас пароля
Подключитесь через darcs к Вашему репозиторию. (darcs get).
С этого момента вам будет, наверное, проще вместо того, чтобы копировать файлы на kodomo всякий раз вручную, просто редактировать локальную копию репозитория и после darcs rec не забывать отправлять изменения на kodomo: darcs push.
2*: Ханойские башни
Задача только для тех, кто решил все предшествующие задачи из всех предыдущих заданий.
Основная идея Ханойских башен. Есть n дисков разного диаметра и m шестов. Положим, что i-й диск имеет диаметр i. Изначально все диски сложены на одном шесте в порядке увеличения диаметра (сверху самый тонкий). За один ход можно переложить один (верхний) диск с одного шеста на другой. При этом диск можно класть только поверх диска большего диаметра.
Создайте в репозитории скрипт hanoi.py, который получает с коммандной строки число дисков и число шестов, и отображает на экране по шагам решение задачи перемещения дисков с первого шеста на второй. Если задача не решаема, программа сообщает об этом.
Советы: первым делом определите представление состояния ханойских башен; опишите и отладьте функцию, которая отображает состояние; только затем опишите функцию, которая решает задачу; проще всего задачу решать рекурсией.
Подсказки к заданию 1
Windows
Настройка доступа через SSH по ключу
Вам нужен полный дистрибутив PuTTY (включая: pageant, puttygen; лучше всего сказать "windows installer").
- Генерация ключа:
- запустите puttygen. Процесс генерации более-менее самоочевиден. В том случае, если вы _внимательно_ читаете то, что написано на экране.
- Когда ключ сгенерирован, вбейте в поля passphrase и повтор пассфразу.
Лучше всего в поле комментарий вбить что-нибудь имя@машина – когда ключей рядом становится много, так в них проще будет разобраться
- Скажите ему save private key.
- Публичный ключ, который нужен для UNIX, находится в окошке над сгенерированным ключом: скопируйте его. (Кнопочка save public key сохраняет лажу, которая никому не нужна)
- Использование агента:
- Запустите pageant.
- Когда он запустится ("компьютер в шляпе" в трее), добавьте в него приватный ключ (add key)
Настройка darcs
Годный дистрибутив отыскивается довольно просто: darcs.net -> download binaries -> darcs-*.zip.
Распакуйте его в подходящее место (e.g., Program Files\Darcs), пропишите это место в путь (т.е. дописать черзе точку-с-запятой в конец переменной среды PATH, см. ниже)
- Работать с darcs удобнее всего из FAR:
- Пишите ему в командной строке те же команды, как если бы вы работали на kodomo
Полезное свойство FAR: кнопкосочетание Ctrl+O прячет панели или показывает их обратно – таким образом можно смотреть, что же сказал darcs.
- После изменения пути FAR нужно перезапустить, чтобы он подхватил изменение.
- Может статься (и наверняка станется), что и после этого darcs всё равно не будет работать с удалёнными репозиториями. Тогда нужно сказать darcs, где брать SSH (см. ниже)
Как сказать darcs, где брать SSH
Есть два способа. Иногда один из них по непонятным мне причинам может не сработать.
Первый:
Этот способ несколько лучше, но он работает только в том случае, если у вас в пути к программам PuTTY нету пробелов (т.е. если PuTTY лежит у вас в C:\Program Files\PuTTY, этот способ не пройдёт, а если вдруг что-нибудь вроде C:\Programs\PuTTY, то получится).
Нужно прописать в несколько переменных среды для darcs пути к программам из дистрибутива PuTTY: в переменную DARCS_SSH – полный путь к plink.exe (включая сам plink.exe), в DARCS_SCP – к pscp.exe, в DARCS_SFTP – к psftp.exe
Второй:
Не прописывать никаких переменных среды, а скопировать в ту директорию, где лежит darcs, утилиты из семейства PuTTY. Скопировав, их нужно переименовать: plink.exe -> ssh.exe; pscp.exe -> scp.exe; psftp.exe -> sftp.exe.
Перменные среды
Правой кнопкой мыши по My Computer (Мой Компьютер) -> Properties (Свойства) -> Advanced (Дополнительно) -> Environment variables (Переменные среды).
Видим две таблички вида: слева имя переменной, справа – её значение. Переменную можно вписать в любую из них: если впишете в верхнюю, изменения будут касаться только вас, если в нижнюю, то всех пользователей
Отыскиваем имя переменной XXX и правим для неё значение (если её нет, говорим создать переменную). Жмём ОК.
Изменения переменных среды будет касаться только тех программ, которые запущены после изменения. Т.е., после изменения среды нужно будет, например, закрыть и запустить заново FAR.
Linux
- Вам нужно иметь установленными пакеты openssh-client (иногда называется просто ssh или ssh-client) и darcs.
- Генерация ключа:
- ssh-keygen -t dsa
- про путь соглашаемся
- пассфразу и повтор вводим
- публичный ключ оказывается в ~/.ssh/id_dsa.pub
SSH-агенты в Linux бывают графические – их довольно много разных (и хороших!), но у меня мало опыта их использования – и текстовые . Текстовый агент один, и пользоваться им просто: eval `ssh-agent`; ssh-add ~/.ssh/id_dsa
- Если darcs установлен, он уже умеет пользоваться ssh и ключом.