- Как пользоваться Anki-карточками
- Инструкции по установке
- Как установить
- Как добавить колоду
- Как установить
- Как добавить колоду
- На случай ошибки про целостность базы данных
- Установил, добавил колоды, а как пользоваться?
- Попробуйте бесплатные уроки по Python
- Ускорьте ежедневное запоминание с помощью Python и флэш-карт
- Один скрипт для создания флеш-карт
- 1. Установите необходимые внешние зависимости
- 2. Получить текущее содержимое буфера обмена.
- 3. Напишите код для диалогового окна, в котором будет записан вопрос, связанный с флэш-картой anki
- 4. Создайте флэш-карту anki с помощью genanki framework Python
- 5. Сохраните файл в указанную папку.
- 6. Напишите ярлык автоматизации для вызова сценария с помощью сочетания клавиш (в Linux, Windows и Mac).
- В машинах с Windows
- Для машин Mac
- Последнее замечание об автоматизации флеш-карт
- использованная литература
- Генерация карточек для ANKI с помощью ChatGPT
Как пользоваться Anki-карточками
Это карточки с фрагментами кода для запоминания. На каждой карточке небольшая задачка по питону: какую строчку дописать, где ошибка или “что выведется на экран”. Если ответите правильно, решаете следующую, если нет — скоро приложение покажет вам её снова.
Карточки помогают кодить быстрее. Мы заметили, что у учеников часто бывает проблема с тем, что написание пары стандартных строк кода может отнять много времени. Мы хотим с этим бороться. Карточки — одно из решений проблемы. Через карточки у вас выработаются автоматизмы в решении стандартных проблем в коде, они заставят читать ошибки питона и помогут в них разобраться.
Решать карточки можно в любое время: на работе или в дороге, с телефона. Для лучшего эффекта их стоит решать каждый день.
Инструкции по установке
Как установить
- Скачайте приложение AnkiDroid из PlayMarket
- Разрешите доступ к мультимедиа
- Нажмите на 2 стрелочки в правом верхнем углу (кнопка “синхронизировать”) Зачем? Это нужно, чтобы ваш прогресс на компьютере и в телефоне синхронизировался. Если захотите порешать их на компьютере, он уже будет знать ваш прогресс, не придётся начинать сначала
- Жмите “Войти”
- “Зарегистрироваться” внизу экрана
- Зарегистрируйтесь 🙂
- Войдите и нажмите “синхронизировать” ещё раз. Вы должны увидеть сообщение “синхронизация”…
Как добавить колоду
- Скачайте колоду по ссылке. Их вы найдёте в разделе “пока вы ждёте” или можете попросить у куратора курса.
- К вам скачается файл. Откройте его.
- Вы увидите вопрос от приложения: “добавить этот файл в коллекцию?” Жмите “добавить”.
- Зайдите в установленное приложение Anki. Там появится ваша колода.
Как установить
- Перейдите на сайт apps.ankiweb.net
- Жмите Download
- Выберите ОС, скачайте приложение, установите на компьютер.
Как добавить колоду
- Скачайте колоду по ссылке. Их вы найдёте в разделе “пока вы ждёте” или можете попросить у куратора курса.
- К вам скачается файл. Откройте его. Возможно, там выведется какое-то окно с текстом, просто закройте это окно.
- Зайдите в установленное приложение Anki. Там появится ваша колода.
На случай ошибки про целостность базы данных
Если вы получили такую ошибку:
Нужно переключить настройку “Legacy import/export handling”.
Зайдите в “Инструменты” > “Настройки”:
Где инструкция для Iphone?
Пока что они будут доступны только на Android и на компах, для Iphone приложение стоит 25$ . В будущем мы сделаем своё приложение, которое будет доступно бесплатно. Но сейчас советуем либо ограничиться версией для компьютеров, либо пользоваться AnkiWeb через Safari.
Установил, добавил колоды, а как пользоваться?
Выберите колоду и кликните по ней. Вам зададут вопрос по программированию. Нажмите на “Введите ответ” внизу и ответьте на вопрос
Когда вы ответите, вам выведется правильный ответ и покажут разницу между вашим ответом и правильным, если она есть. Разница будет выделена красным цветом. Вам нужно добиться того, чтобы разницы между вашими ответами и “правильными” не было совсем Да, даже если вы только поставили одинарные кавычки вместо двойных или добавили лишний пробел. Такой ответ всё равно считается неправильным. В Python это может сработать, но у питонистов есть что-то вроде своего “ГОСТа” по написанию кода, называется PEP8. Вот статья о нём. Все ответы составлены по PEP8 и вам тоже стоит к нему привыкать.
Чтобы получить следующий вопрос оцените насколько сложно вам дался ответ внизу экрана. Если тяжко, то скоро вам покажут эту карточку ещё раз. Если “Хорошо”, то чуть позже, а если совсем “Легко”, то аж через 4 дня. Так вы будете заучивать только сложные для вас карточки, а совсем простые будут появляться очень редко.
Попробуйте бесплатные уроки по Python
Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.
Переходите на страницу учебных модулей «Девмана» и выбирайте тему.
Ускорьте ежедневное запоминание с помощью Python и флэш-карт
Я большой поклонник флеш-карт anki, с тех пор, как я прочитал потрясающее эссе Майкла Нильсена под названием Увеличение долговременной памяти, я стал одержим ими, и недавно я начал экспериментировать с различными способами автоматизации их создания, чтобы облегчить мой учебный процесс.
В этой статье я покажу вам, как использовать Python для создания карточек анки прямо с помощью сочетания клавиш, не покидая своего цифрового рабочего пространства.
Один скрипт для создания флеш-карт
Основная идея состоит в том, чтобы использовать пакет Python с именем genanki для создания карточек из текущего содержимого вашего буфера обмена, используя это как ответ на вопрос, который вы будете вводить через простое диалоговое окно, написанное с помощью собственной Tkinter инфраструктуры Python.
Шаги для написания этой автоматизации будут:
- Установите необходимые внешние зависимости
- Получить содержимое буфера обмена
- Напишите код для диалогового окна, чтобы записать вопрос, связанный с флэш-картой anki
- Создайте флеш-карту anki с помощью Python genanki framework
- Сохраните файл
- Напишите автоматизацию для вызова сценария с помощью сочетания клавиш (в Linux и указания для соответствующих руководств в Windows и Mac)
Теперь давайте пройдемся по каждому шагу один за другим.
1. Установите необходимые внешние зависимости
Здесь мы устанавливаем tkinter package Python для написания графических интерфейсов пользователя и genanki , фреймворк Python для облегчения создания флэш-карт anki с кодом Python.
2. Получить текущее содержимое буфера обмена.
Чтобы написать код для получения содержимого буфера обмена, которое будет использоваться в качестве справочного ответа для рассматриваемой флэш-карты, мы будем использовать пакет Python clipboard .
import clipboard ankiAnswer = clipboard.paste().strip("\n")
3. Напишите код для диалогового окна, в котором будет записан вопрос, связанный с флэш-картой anki
Теперь, когда у нас есть содержимое буфера обмена, мы напишем код для создания диалогового окна для ввода вопроса.
import tkinter as tk ROOT = tk.Tk() ROOT.withdraw() # the input dialog question = tk.simpledialog.askstring(title="Anki question",prompt="What's your question?:")
Отлично, три строчки кода, и у нас есть диалоговое окно! Жизнь прекрасна!
4. Создайте флэш-карту anki с помощью genanki framework Python
Здесь мы будем использовать замечательный фреймворк Python под названием: genanki для создания флэш-карты anki, которую мы позже импортируем в приложение anki.
import random import genanki model_id = random.randrange(1 , , ], templates=[ < 'name': 'Card type 1', 'qfmt': '>', 'afmt': '>
>', >, ]) my_note = genanki.Note( model=my_model, fields=[f'', f'']) deck_id = random.randrange(1 1177550292 1864823949
Этот код состоит из трех основных частей:
- Сначала мы создаем модель, которая будет определять поля и карточки для типа заметки (флеш-карты).
- Затем мы создаем нашу флеш-карту с genanki.Note() , используя вопрос и ответ, которые были определены ранее из буфера обмена и диалогового окна.
- Наконец, мы создаем колоду под названием «Знание» и добавляем эту заметку.
Чтобы создать и модель, и колоду, нам пришлось создать идентификационные номера с помощью Python random package.
5. Сохраните файл в указанную папку.
from datetime import datetime anki_folder = "path/to/anki_questions"
date = datetime.now()
anki_questions_file = anki_folder + f"anki_question.apkg"
genanki.Package(my_deck).write_to_file(anki_questions_file)
Теперь мы определяем путь к папке, в которой будем хранить наши вопросы. Каждая флэш-карта будет представлять собой файл с именем anki_question_ плюс отметка времени, когда этот файл был создан, чтобы обеспечить лучшую организацию при импорте вопросов и, возможно, их удалении после.
6. Напишите ярлык автоматизации для вызова сценария с помощью сочетания клавиш (в Linux, Windows и Mac).
Теперь эта часть отличается в зависимости от используемой вами машины, поэтому давайте рассмотрим каждую ситуацию, начиная с Linux (мой случай):
В настоящее время я использую Pop! OS под управлением ubuntu 21.04, поэтому для создания ярлыка на моем компьютере необходимо выполнить следующие действия:
- Сохраните сценарий с именем файла, например: ankify.py
- Получите путь к этому сценарию, набрав realpath ankify.py на терминале.
- Go to Settings>Keyboard>Customize Shortcuts>Custom Shortcuts>click Add Shortcut
- Появится окно для установки вашего пользовательского ярлыка, дайте ярлыку имя, например ankify
- Под вводом имени вы вводите команду, которая в данном случае является путем к вашему исполняемому файлу python и путем к сценарию.
- Чтобы получить путь к исполняемому файлу Python, введите это в терминале: which python 2. Не забудьте находиться в правильной виртуальной среде, если вы ее используете!
- Введите в команду input как путь к исполняемому файлу Python, так и ваш скрипт: path/to/python path/to/ankify.py
- Установите сочетание клавиш для этой команды (в моем случае CTRL + F10
- Нажмите OK , и теперь все готово!
В машинах с Windows
Используйте этот учебник, чтобы создать ярлык с помощью Autohotkeys.
Для машин Mac
Мне было немного сложно найти простое решение для Mac, но эти два ресурса кажутся лучшими примерами, которые я смог найти:
И последнее замечание: вы также можете использовать genanki для создания карточек для мультимедийных файлов, таких как аудио и изображения, подробнее об исходном репозитории см. Здесь.
Последнее замечание об автоматизации флеш-карт
Флэш-карты - замечательный ресурс для использования, идея о том, что вы можете получить больший контроль и владение своей памятью, слишком сильна, чтобы ее оставлять в стороне. Использование подобных средств автоматизации может помочь вам ускорить рабочий процесс мышления и помочь вам сосредоточиться на своей работе, не беспокоясь о том, чтобы забыть важную информацию.
Если вам понравился этот пост, свяжитесь со мной в Twitter, LinkedIn, Instagram и подпишитесь на меня в Medium. Спасибо и увидимся в следующий раз! 🙂
использованная литература
Генерация карточек для ANKI с помощью ChatGPT
Который день экспериментирую с возможностями искусственного интеллекта от OpenAI (ChatGPT).
Сегодня вдруг вспомнил, что летом писал на python скрипт, который на входе получал список английских слов, а на выходе готовил данные для карточек в Anki. Транскрипцию он брал с одного сайта, “толкование” слова – с другого. Пришлось отлаживать все это, чтобы парсилось корректно. Обрабатывать странные ответы и …
В общем, позабыты хлопоты, остановлен бег. Пусть вкалывают роботы, а не человек. За какое-то количество итераций сформировал prompt для ChatGPT, которая сама все это делает. Причем, она еще и придумывает простой пример предложения, где это слово используется. И придумывает prompt для нейросети StableDiffusion/Dall-e, чтобы та придумала изображение, которое может подходить по смыслу.
Process these words one by one: vetch, . . тут список слов. alfalfa, legumes. Output as table with columns separator "|" . Each line represents word. Columns: 1) this word 2) meaning or definition of this word (do not include word, just like for quiz game) 3) phonetic transcription of this word in IPA format 4) simple short example sentence of word5) long detailed prompt for Dall-e, that will generate an image that represents this word meaning
Вот пример карточки, которая получается из этих данных для слова “legumes”. Все текстовые данные сгенерировала сама ChatGPT, а изображение я сгенерировал локально на Stable Diffusion (из предложенного prompt-а).
Word | Definition | Pronunciation | Example | Generate an Image |
---|---|---|---|---|
vetch | A plant of the pea family, grown as a forage crop or green manure | ˈvɛtʃ | Vetch is a popular legume for animal feed. | Generate an image of a field of vetch. |
fast | Moving or able to move quickly; quick | fæst | He is fast enough to win the race. | Generate an image of someone running quickly. |
today | This present day | təˈdeɪ | Today I’m going to the beach. | Generate an image of a sunny day. |
bright | Having or filled with light | braɪt | The room was bright with sunlight. | Generate an image of a room filled with light. |
Специально добавил на тест такие слова. Хотел посмотреть какие prompt-ы оно предложит для генерации изображения для “не-существительных”. В принципе, выглядит неплохо. Для слова “быстрый” оно предложило сгенерировать картинку, где кто-то очень быстро бежит.
Кстати, вот эту табличку выше в MarkDown мне разметила та же ChatGPT. Вот так вот на наших глазах сейчас меняется Интернет. В ближайшие несколько лет грядут огромные изменения.