Учась на курсе MCITP, я, как и многие другие айтишники, столкнулся с дампами экзаменов, по которым можно вызубрить конкретные вопросы и правильные ответы на них. Даже хорошо зная теорию, дампы сильно повышают шанс пройти сам экзамен, ну и по ходу дела закрепить в памяти детали самой темы. Это, само собой, и так все знают.
Собственно процесс подготовки обычно выглядит как многократное прохождение одного и того же экзамена раз за разом в Visual CertExam. У этого подхода есть, на мой взгляд, большой минус: программа не учитывает, насколько хорошо я знаю конкретный вопрос, и при каждом проходе мне приходится раз за разом тратить время на те вопросы, которые я уже хорошо выучил, чтобы перейти к тем, которые еще нет.
Я уже довольно давно использую Anki, в которой используется алгоритм интервального повторения(Spaced Repetition).
Перевод, на мой взгляд, слишком буквальный, но не суть важно. Сама система подробно описана по ссылке, но вкратце ее можно описать примерно так: формируются карточки с вопросом и ответом. Во время повторения материала показывается вопрос, и нужно вспомнить правильный ответ. Ответ сравнивается с ответом на карточке, и если ответ совпадает, то программа покажет карточку чуть позже. При правильных ответах интервалы выглядят примерно так: день, два, неделя, две недели, месяц, ну и т.д. Если ответ неправильный, то программа сбрасывает интервал и все начинается по новой. Таким образом, используя эту систему ежедневно (желательно), материал откладывается в долговременную память.
У этого подхода есть много плюсов:
- Хорошо выученный материал показывается реже, следовательно, не нужно тратить на него время
- Новый/забытый материал повторяется чаще
- Anki есть для всех платформ (Windows, Linux, Mac)
- Есть клиенты Anki для Android, iOS и прочих мобильных платформ. То есть можно учить материал на своем мобильнике, стоя в очереди, в автобусе и т.д.
- Еще в Anki есть режим зубрежки, в котором можно пройтись по всему материалу, игнорируя интервалы, чтобы, скажем, повторить материал перед экзаменом
Это очень краткое описание Anki. В программе есть очень много настроек, поддержка многих языков и все такое.
Anki можно скачать вот здесь.
Поэтому я решил написать скрипт, который экспортирует дамп из формата Visual CertExam в колоду Anki. Он еще довольно сырой и ограничен, но он работает и уже помог мне сдать экзамены, сильно экономя время.
Скрипт написан на Python и его можно скачать вот здесь.
Работает он примерно так. Экзамен экспортируется из VCE Designer в текстовый формат, после чего скрипт из этого текстового файла создает готовую колоду Anki.
Вопрос и список ответов идет на лицевую сторону карточки, а правильный ответ (или ответы, если их несколько) идет на заднюю сторону. Если к ответу есть заметки или дополнительное объяснение, они тоже добавляются на заднюю сторону карточки.
Текущая версия скрипта заточена под работу с ankimini. В основном потому, что в этой сборке есть все необходимые зависимости.
Я лично проверял его только на Windows, но теоретически он должен сработать и на других системах.
Как пользоваться скриптом:
- Качаем Python 2.7(32 bit) (Python 3 и 64бит опять же не тестировал).
- Качаем ankimini отсюда.
- Распаковываем ankimini.
- В Visual CertExam Designer открываем экзамен .vce .
- Нажимаем File->Export to, и экспортируем в папку с ankimini. Файл зовем test.txt (важно выбрать формат .txt — с rtf скрипт не работает).
- Открываем файл test.txt в Notepad++.
- Жмем Encoding->Convert to utf-8 и сохраняем файл. (теоретически должен подойти любой редактор, который сможет сохранить файл в формате utf-8).
- Копируем скрипт vcetoanki.py в папку ankimini.
- Запускаем vcetoanki.py
Все. Если все прошло успешно, в папке ankimini должен появиться файл test.anki, который можно открыть в Anki и начать по нему учиться.
Минус скрипта в том, что он не сохраняет картинки, если они есть в дампе. Их, к счастью, обычно очень немного. Я начал интереса ради разбирать бинарный формат .vce, чтобы можно было конвертировать напрямую, без экспорта в txt, и с минимальными потерями данных (как картинки), но я зашел недалеко и всего лишь успел расшифровать название экзамена и первый вопрос. Если кому-то это интересно, я могу выложить то, что успел разобрать на gist.github или pastebin.
Надеюсь, этот маленький скрипт поможет кому-нибудь так же, как он помог мне.
Автор: Irwin1138