Плейлист F.A.Q. ЧАстые ВОпросы в Anki 2.0

Перейти и подписаться на Youtube-канал Инструкции по Anki: goo.gl/B2EKq6

• F.A.Q.

Не думай.
Думаешь — не говори.
Думаешь и говоришь — не пиши.
Думаешь, говоришь и пишешь — не подписывай.
Думаешь, говоришь, пишешь и подписываешь — не удивляйся.
— Ф. Э. Дзержинский

Совсем просто

Например

Как сделать, чтобы в двусторонних карточках был третий пункт: примеры?

Которые показывались бы не сразу, а только после ответа на вопрос.

В свой тип записей, который создан, скажем, из Основная (+обратные карточки)

  • добавить поле Примеры

  • в Стиль (используется во всех карточках в записи) добавить:

div#samples {
    font-size: smaller;
    padding-top: 3em;
    color: grey;
}
  • шаблоны оборотных сторон Карточка 1 и Карточка 2
    дополнить текстом <div id='samples'>{{Примеры}}</div>

 

Без прокрутки

Как сделать,

чтобы когда показывало ответ — не прокручивалась страница вниз,
а оставалась вверху?

Дополнение для решения этой задачи изобретать не требуется.

Достаточно в шаблоне оборотной стороны удалить текст:

 <hr id=answer>

Если линия всё же нужна, то заменить на:

 <hr>

Побочка

Побочным эффектом от сего действа

Проявляется потеря работоспособности кнопки Перевернуть Flip в окне Карточки Cards

Предупреждение
Кстати говоря,

эта кнопочка реагирует строго на текст <hr id=answer>

Поэтому если вы запишите синтаксически эквивалентные с точки зрения HTML вещи:

 <HR id=answer>
 <hr id= answer >
 <hr id="answer">

и т.д. и т.п., то работоспособность кнопки переворота всё равно будет утрачена.

Ада, так не надо!

Если вы задались целью ВСЁ в Anki русифицировать,

то переводить <hr id=ответ> НЕ НАДО.

Мало того, что у вас перестанут работать кнопка переворота и промотка оборотной стороны до данной точки, так вы ещё тем, кто увидит ваш шаблон, показываете, что не ведаете, что творите.

Как это сделано

Тот же, кто любит присматриваться, наблюдать, замечать, запоминать, разбираться в деталях (анализировать), представлять картину в целом (синтезировать), легко заметит, как работает эта кнопка:

  • на оборотной весь текст до <hr id=answer>
    заменяется на {{FrontSide}}

  • меняются местами содержимое лицевой стороны карточки
    и весь текст после <hr id=answer>

Это просто заметить. Достаточно шаблон оборотной стороны основной карточки записать как:

{{FrontSide}}

<hr id=answer>a

d{{Ответ}}c

b

и пару раз кликнуть по кнопочке, внимательно глядя после каждого клика
что именно изменилось

  • в шаблоне лицевой стороны

  • в шаблоне оборотной стороны

Только прокрутка

Встречается и обратная задача:

линию убрать, но прокрутку до данной точки оставить.

 <br id="answer">

Думаю, идею вы уже подхватили:
любым доступным вам способом назначить id='answer'
любому доступному элементу HTML в нужной точке

Без черты

Если вам хочется сохранять работоспособность кнопки Перевернуть,
но при этом совсем не хочется видеть горизонтальную черту на своих карточках,
то вместо удаления текста <hr id=answer> из шаблонов оборотных сторон карточек
можно просто через стили с глаз долой скрывать черту из видимости:

hr#answer { visibility: hidden; }

Использование hr[id=answer]{display:none;} приведёт к тому,
что вопрос и ответ будут показаны рядом на одной строке
(разумеется, это для случая разметки по умолчанию,
в которой поля не заключены в блочные элементы).

 

+Buried

ПО-БЕДА

При интернационализации своих дополнений вновь вспомнил, что есть такая тема: неполнота перевода.

Скажем, для _('Suspended') есть перевод,
для _('Suspended+Buried') есть перевод,
а для _('Buried') перевода нет.
И когда он появится и что для этого надо сделать — непонятно.

Раньше делал так:

'Погребённые' if anki.lang.getLang() == 'ru' else _('Buried')

Типа на русском и английском нормально, ну а остальным — не повезло, уж когда появится — тогда появится, не от меня зависит. А сейчас понял, что можно выцепить перевод слова, как он уже есть:

_Buried = _('Suspended+Buried').split('+')
_Buried = (_Buried[1] if len(_Buried) == 2 else _('Buried')).capitalize()

Такие дела.

 

Вопросы, вопросы, вопросы

pyi_rth_win32comgenpy returned -1

кто знает, в чем проблема?

появляется при запуске Анки на компьютере

 { pyi_rth_win32comgenpy returned -1 }
возможно, версия не подходит для вашей системы

или потерян .dll файл — переустановите со стандартными настройками

 

Must Have и новый Replay buttons

Как-то где-то встречал на форумах жалобу,
что Must Have не работает с новой версией Replay buttons on card 498789867

Ну да, там поменялось имя скрипта, потому он и не видит.

Чтобы победить ситуацию, достаточно зайти
в Инструменты — Дополнения — Must Have настройки
и поставить нолик вместо двойки в строке 208:

'REPLAY_BUTTONS_ON_CARD': 0,

number: 1___

Поиск поля в Обзоре по "<" числовому сравнению

Интересная тема встретилась: Search field with "<" in browser

Суть проблемы: есть колода на 5 тыщ записей.

В них есть поле number, которое нумерует записи, скажем, по частотности слов в языке.
И есть острое желание присвоить метки каждой тысяче: 1-1000, 1000-2000 и т.д.

Автору вопроса интуитивно хочется искать number:>=1000 чтобы отобрать записи с номером 1000 или меньше. Но синтаксис Анки такие фокусы не поддерживает.

Я бы сказал, что такая запись ни разу не интуитивна.
Читаю её строго наоборот, как число больше или равно 1000.

Прежде чем приступить к поиску решения, хочется отметить нечёткую постановку задачи. 1000 должна принадлежать к первому диапазону или второму? Невнимание к подобным деталям порой сводит к нулю возможность благополучного исхода.

Решений просматривается три.

1-е. Оно же самое простое. Ходить по форумам и канючить, чтобы кто-то забесплатно написал для вас дополнение, которое будет делать такое сравнение. Типа это очень полезная идея и будет интересна многим. Хотя по факту аддон загрузят единицы.

2-ое. Тоже достаточно простое, но уже требует настойчивости в обретении знаний о возможностях Анки. Надо зайти в Поля…​ данного типа записей и назначить полю number Сортировать в Оборзевателе по этому полю Ну а далее кликнуть по первой карточке диапазона, мышкой за бегунок прокрутить до последней карточки диапазона и, удерживая Shift, кликнуть и по ней, затем на панели инструментов по Добавить метки

3-ье. Если предыдущее решение — для настоящих пользователей, то данное — для настроящих программистов (пусть хотя бы в душе). Числа меньше тысячи содержат один, два или три знака:

number:___ or number:__ or number:_

Все остальные — 4етыре, но у них различается первый символ:

number:1___

т.е. единица и 3(три) подчёркивания для диапазона с 1000 по 1999 включительно.

Front:____

И как в развитие этой же темы: Find all notes containing exactly 4 characters or more

Найти все записи, содержащие в точности 4 символа или больше

О важности точных формулировок:

Во-первых, записи не могут содержать символы. Записи содержат только поля. А вот уже поля, в свою очередь, содержат символы. Точнее говоря, текст с тегами HTML.

Во-вторых, обязательно найдётся человек, который не дочитает вопрос до конца и будет решать задачу содержащие в точности 4 символа и только

Подсказка
Так что я бы этот вопрос переформулировал так:
Найти все записи с полем Вопрос, содержащем 4 или больше символов.
Ответ на такой вопрос :-) кажется простым:
Вопрос:____*

4етыре подчёркивания (одно подчёркивание == в точности один любой символ) и следом 1 звёздочка (любое количество любых символов либо совсем ничего)

Однако

Запрос "Центры субъектов РФ":____ найдёт не только Омск, но и Уфа́.

Всё правильно:

В коде HTML за буквой а идёт символ ударения ́
который и указывает веб-браузеру на необходимость нарисовать ударение
над предшествующей ему буквой.

Многие уже привыкли к тому, что пробелы между словами засчитываются в общее количество символов в тексте. А вот ударение — не столь частая ситуация.

Внимание, вопрос:

Какой запрос найдёт только Омск?

Да и вообще в поле может мешаться всякая разметка, скажем, выделение части слова полужирным или курсивом, случайные переводы строк и т.п.

Как одновременно в фильтрованной колоде отобразить две колоды или два тега?

(deck:N1 or deck:N2) or (tag:M1 or tag:M2)

or это или, мне нужно чтобы была и та и та одновременно

(deck:N1 or deck:N2) or (tag:M1 tag:M2)

Если же надо, чтобы метки отбирались не все вообще,
а только те, что есть в отобранных колодах, то:

(deck:N1 or deck:N2) (tag:M1 tag:M2)

Принцип понятен: либо указывается как or,
и не указывается вообще, достаточно перечисления через пробел.

(deck:N1 or deck:N2) (tag:M1 or tag:M2)
Последний из 4-х возможных вариантов читается так:

карточки из колоды N1 или N2,
но только если их записи с метками М1 или М2.


При этом надо понимать, что если в фильтр-колоду отбирается меньше карточек,
чем есть в колодах, подходящих под эти условия,
то в выборке вполне могут оказаться преимущественно карточки из одной колоды.

Если вы тут же кликните по кнопке Перестроить, то вполне вероятно,
что большинство карточек будут уже из другой колоды.

Ещё одно перестроение вполне может собрать из каждой примерно поровну.

А может и несколько перестроений подряд повторяться один и тот же расклад.

Случайность — она такая случайность.

Шаблоны Anki

Нашёл сообщение об очень интересных шаблонах Anki — GitHub

Даже если не учить грамматику или именно этот язык, всё равно очень интересно как кладезь идей.

 

Часто задаваемые вопросы

Решение любой проблемы под Windows очень полезно начинать с перезагрузки компьютера.

Подсказка
Скорее даже не с перезагрузки,
а с завершения работы и последующего полного запуска,
безо всяких там спящих режимов и гипбернации.

Правильное время

Программа анки требует изменить время.

Обычно хронологически это самая первая проблема,
с которой сталкивается человек, который только что установил себе Anki.

 { неправильное время }

Во избежание проблем при переносе коллекции между устройствами, Anki
требует, чтобы встроенные часы компьютера были настроены правильно.
Даже если система показывает точное местное время, настройки
встроенных часов могут быть неверны.

Пожалуйста, перейдите к настройкам времени Вашего компьютера и
проверьте следующее:

  • AM/PM,

  • Отставание/убегание вперёд,

  • Число, месяц и год,

  • Часовой пояс,

  • Настройки летнего времени.

Разница с правильным временем: …​ секунд.

In order to ensure your collection works correctly when moved between
devices, Anki requires your computer’s internal clock to be set correctly.
The internal clock can be wrong even if your system is showing the correct
local time.

Please go to the time settings on your computer and check the following:

  • AM/PM

  • Clock drift

  • Day, month and year

  • Timezone

  • Daylight savings

Difference to correct time: %s.

При получении данного сообщения

Проще всего пойти по адресу time.is/

Так понимаю, что основными психологическими барьерами в осуществлении пользователем таких простых действий являются:

  • нелицензионная винда, как следствие — нежелание делать обновления из опасений получить блокировку;

  • лимитированный интернет и нежелание, чтобы винда лезла к серверу времени, когда нет доступа к интернету.

От первой проблемы шлейфом идёт вторая — в имеющейся системе у правильного часового пояса может быть выставлен режим перехода на летнее/зимнее время, как бывало раньше, в старые добрые времена. Избавиться просто — достаточно подобрать часовой пояс другой страны, не переводившей часы никогда, но с тем же смещением от Гринвича.

Синхронизацию же с сервером времени достаточно сделать однократно и затем отменить режим еженедельной сверки, сняв галочку (как правило, в компьютере часы идут с достаточной для Anki точноcтью сами).

Если вкратце, то:

клик по часикам в трее (в области уведомлений)

 { либо Панель управления - Дата и время }

клик по ссылке в диалоговом окне

 { Изменение настроек даты и времени…​ }

Клик по вкладке Время по Интернету

Клик по кнопке Изменить параметры…​

Поставить галочку Синхронизировать с сервером времени в Интернете

Клик по кнопке Обновить сейчас

Время было успешно синхронизировано - ОК

Следующее выполнение синхронизации - ОК

Q&A

некоторые старые карточки мне предлагают повторить через 10 минут, 4,5 месяца, полтора года и 3,6 года. разброс, как вы видите очень широкий. я понимаю, что максимально предельное значение интервала повторения задается во второй вкладке "ответов" в нижнем поле "максимальній интервал", но если я выставляю туда скажем 60 дней, то программа тупо предлагает мне 10 минут и 2 месяца для остальных трех кнопок. помогите, пожалуйста, понять, как устанавливать более плавные интервалы (например 2 недели, месяц, два)

То есть вам просто хочется увидеть все эти карточки в ближайшие два месяца?

Так это просто. Выделите их в Обзревателе Anki, затем Редактирование → Изменить расписание…​

и Поместить в очередь на повторение с интервалом между: 0 ~ 60 дней

Результат не заставит себя долго ждать.

Questions and Answers

Как быстро переходить с одного поля на следующее при добавлении новой карточки? Ни Enter, ни Shift+Enter не работают.

а Tab?

Есть спо’соб поставить знак ударЕния прямо над буквой, не роясь в спецсимволах:

При редактировании нужного поля
нажатием Ctrl+Shift+X перейти в режим HTML-редактора
и после нужной гласной написа́ть &#769;

Как указать, чтобы при переходе в определённое поле на клавиатуре включался указанный язык?

К сожалению, в Anki 2.0 так не сделать. Лучшее, как тут можно поступить: поставить Punto Switcher, отключить автозамену (по вкусу) и выбрать включение англ. по левому Ctrl и русс. по правому Ctrl, например.

Можно ли добавить дополнительную кнопку "Учить завтра", при нажатии на которой время следующего повторения поставить на сутки вперёд, не зависимо от того, как ты отвечал до этого?

Правый нижний угол карточки, кнопка Ещё, строка Отложить карточку
или просто нажать   - минус на клавиатуре.
Если нужна именно кнопка для действия одним кликом,
то можно воспользоваться дополнением Colorful toolbars

Есть ли прямая ссылка откуда скачать можно? Ищу по поиску в интернете, но мне все время вылезают вирусные сайты. Откуда вы скачиваете программу?

apps.ankiweb.net/ официальный сайт Anki

Скачала карточки для программы с расширением .anki, но почему-то они не открыться в ankidroid. Можно ли их как-то конвертировать в .apkg?

Через программу на компе экспортируется в .apkg

Мне нужно сделать чтобы карточки из одной определенной колоды требовали повторения каждый день. Всегда. Т.е. для этой колоды мне не нужно интервальное повторение. Как это можно сделать, не вписывая вручную в поле "шаги" 1440 бесконечное количество раз?

В настройках колоды на вкладке Ответов параметр Максимальный интервал надо выставить в 1   Подробнее об этом

Удалил и синхронизировал

Я нечаянно удалил не ту колоду и синхронизировал! Возможно ли восстановить?

Да, конечно. Anki создаёт резервные копии

  • в каталоге backups перед каждой синхронизацией, явно запущенной пользователем кликом по иконке синхронизации,

  • и перед каждым завершением работы (при каждом выходе из профиля, точнее говоря).

По умолчанию хранятся последние 30 копий.

В этих копиях хранятся только карточки и их статистика, а также настройки их колод.

Осторожно!
Медиа-файлы (картинки, озвучка и видео)
должны сохранятся пользователем самостоятельно.

Но при случайном удалении колоды

  • фактически удаляются только карточки,

  • сами медиафайлы физически остаются на своих местах

    • в папке collection.media

Для их исчезновения оттуда от пользователя требуется явно выполнить команду меню ИнструментыПроверка медиа-файлов…​ и затем нажать кнопочку Удалить неиспользуемые — обычно пользователи такими вопросами не заморачиваются.

Примечание Синхронизация выполняется также в начале работы (при каждом открытии профиля, точнее говоря). Никакие резервные копии в этом случае не создаются.

Где искать

Директории backups и collection.media находятся в ваших документах в каталоге Anki в подкаталоге с названием профиля (обычно это что-то типа 1-й пользователь или User 1).

Полный путь к ним скорее всего будет выглядеть как-то так:

C:\Users\ имя пользователя Windows \Documents\Anki\1-й пользователь\backups\

Что делать

Первым делом
Подсказка
Прежде чем начинать
издеваться колдовать любые действия над коллекцией,
надо сохранить хотя бы то, что есть.

Чтобы было откуда восстановить хотя бы то состояние, которое есть сейчас, в случае, если окончательно запутаемся и загубим всё, до чего только дотянемся.

Самое простое — это экспортировать все колоды коллекции с расписанием и медиа-файлами на рабочий стол в файл collection.apkg Подробнее об этом

Дальше

В списке копий надо по времени создания/изменения файла найти ту, которая была создана самой последней по времени перед моментом удаления нужной колоды. И просто запустить этот файл.

Если Anki в момент запуска файла работает,

то в ней должен быть открыт именно тот профиль, который требуется восстановить.

Если Anki в момент запуска файла не работает,

то она будет запущена автоматически. Если у вас создано более одного профиля, то при запуске необходимо выбрать именно тот профиль, в который следует восстановить коллекцию. Это же логично. Если вы выберете другой профиль, то Anki всё равно попытается выполнить импорт коллекции в него.

В любом случае

Будет выдано предупреждающее сообщение
и потребуется подтвердить восстановление коллекции из копии.

 { Anki: Это действие удалит существующую коллекцию, заменив её данными из импортируемого файла. Вы уверены? }

Однако

не всё так просто.
Важно!
Внимание!
Все изменения, которые были выполнены в коллекции после момента создания копии, с которой выполняется восстановление, — будут утрачены!

То есть если вы после синхронизации учили карточки в других колодах или даже добавляли/изменяли их — всё, что нажито непосильным трудом всё погибнет!

Как быть

Чтобы этого не произошло, надо ещё до начала восстановления коллекции экспортировать только эти колоды самым обычным образом, с расписанием и медиа-файлами.

А затем, когда будет восстановлена вся коллекция (вместе с несчастной колодой, и вызывавшей, собственно говоря, все эти траблы), просто импортировать их обратно.

Загрузить на AnkiWeb

После всей этой движухи при ближайшей синхронизации с сервером будет выдано целая портянка простыня много букв мелким почерком, предупреждение, которые всё равно никто не читает.

Тут важно
  • не перепутать

  • и кликнуть именно по кнопочке Загрузить на AnkiWeb.

 { Anki: Загрузить на AnkiWeb }

Следующая синхронизация неизбежна, но неизвестно, когда ещё она там произойдёт автоматически. Может быть, в самый неподходящий момент. Скажем, вы открываете Anki утром и закрываете только поздно вечером, целый день периодически обращаясь к ней и отвечая на карточки. Тогда к вечеру вы можете просто забыть, что у вас была за ситуация и в каком направлении лучше синхронизироваться. Не исключено, что за это время могли возникнуть и другие ситуации, тогда возникает полная неопределённость в дальнейших действиях.

Подсказка
Поэтому следует самостоятельно запустить синхронизацию
как можно раньше после восстановления коллекции,
как только вы убедились, что вас всё устраивает.

В зависимости от размеров коллекции, возможно, потребуется изрядная доля терпения в ожидании завершения процесса выгрузки коллекции на сервер.

 { Anki: Прогресс загрузки (сколько медиафайлов загружено, сколько байт передано и получено). }

По завершении надо озаботиться и синхронизировать свои остальные устройства, которые связаны с этим профилем AnkiWeb.

 { Anki: Ваша коллекция успешно загружена в AnkiWeb. }

И дальше по жизни быть пессимистом хорошо информированным оптимистом стать внимательным и больше уже никогда-никогда не возвращаться в это проклятое место не наступать на эти же самые грабли.

 

Кириллица в пути к программе

Вместо некоторых изображений показывается синенький знак вопроса.

При этом они никак, ни по имени файла, ни по формату, ни по правам доступа не отличаются от тех, которые показываются нормально?!

Осторожно!
Путь для установки программы
Выбирайте тот, который предлагает инсталлятор.
Обычно это c:\Program Files (x86)\Anki
Иначе при попадании в этот путь русских букв, например,
D:\Новая папка (232)\Anki или E:\Мои программы\Anki
будут проблемы с отображением картинок
и воспроизведением видео и звука.

За место на диске C: не беспокойтесь,
установленная программа занимает всего 75Мб упс, уже 90Мб.

Подсказка
Как вариант
Если всё же устанавливаете на другой диск,
то обеспечьте отсутствие кириллицы в самом имени папки
и в пути к ней (во всех её родительских каталогах).
Путь к директории с профилями, записями, колодами и карточками пользователя

таких ограничений не имеет,
в нём вполне могут использоваться и русские слова.

ЧаВо — ЧАстые ВОпросы

Интересно, а с сайта-то apkg-файл оказывается сжат сильнее.

FAQ

  1. Подскажите, можно ли сделать такую карточку, в которой будет 2 поля для ввода текста?

    Можно, но проверка значения будет работать некорректно.

  2. Можно ли сделать многострочное поле для ввода текста?

    Стандартными средствами Anki – нельзя.

  3. Как полностью удалить метки (теги), которые больше не используются?

    Инструменты → Тест базы данных

  4. Как удалить (очистить) default колоду?

    Кликнуть Обзор, кликнуть по колоде в дереве слева, кликнуть по любой карточке,
    Ctrl+A, кликнуть по иконке Удалить на тулбаре.
     
    Колоду По умолчанию удалить нельзя, только переименовать можно.
      Она скрывается из списка колод, если не содержит ни одной карточки,
        и в коллекции есть хотя бы одна другая колода.

  5. Как создать демонстрационную колоду?

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

  6. как ко всем карточкам из одной колоды применить одну и ту же метку.
    (сделать это непосредственно в anki, не прибегая к помощи excel)

    • открыть Обозреватель Anki,

      • клик по имени колоды в дереве слева,

      • клик по любой карточке, Ctrl+A,

      • клик по Добавить Метки на панели инструментов,

      • начать вводить имя метки - если такая уже есть,

        • с первых букв выскочит подсказка

    • ОК

  7. Я полностью прочитал учебник, но не понял, как сделать бла-бла-бла то-то и то-то

    Просто прочитать мало. Вы в процессе чтения полностью выполняли
      все те действия, о которых шла речь?

  8. Мне очень понравилось приложение Anki, хочу поддержать развитие проекта, как это сделать?

    ПомощьПоддержать И действительно, как? Разве что купить приложение для iOS.
    Ещё можно спросить у Дамьена Элмса об этом лично.

Как сделать так, чтобы

Карточки повторялись не сразу

а через точно указанное количество минут?

Как сделать так, чтобы тут

 { над кнопками оценки правильности ответа }
было значение не меньше 10 минут, а чуть больше, например, 30 минут?

А то когда значение равно 10 минутам, карточку вновь показывает сразу
и эффекта никакого нету.

Важнее не интервал увеличивать, а Инструменты — Основная — Лимит на внеочередное изучение карточек поставить в 0 (ноль) минут.   Тогда карточка будет показана строго через 10 минут, а не прямо сейчас, как это порой бывает с установками по умолчанию.   В Самоучителе по Anki 2.0 есть подробнее об этом Вне очереди или Повторный показ карточек

Повторять каждый день

Как сделать, чтобы карточки из одной определенной колоды требовали повторения каждый день,

не вписывая вручную в поле "шаги" 1440 бесконечное количество раз?
В настройках колоды на вкладке Ответов параметр Максимальный интервал надо выставить в 1
Подробнее об этом Maximum interval

Связанные в разных колодах

Можно ли как-то развязать связанные карточки, чтоб при заполнении полей 1 раз создавались 2 карточки в разных колодах?

Можно в шаблоне второй карточки внизу в центре чуть правее — кнопочка Ещё,
в выпадающем списке Переопределить колоду (выкл.)
указать колоду, в которую должны падать новые Карточки 2
Но карточки связанными и останутся, и если в этот день была Карточка 1,
то Карточка 2 будет только назавтра.
 
Карточки 2, которые уже созданы и находятся в другой колоде,
надо перенести вручную через Обозреватель Anki.

И в один день
А если надо, чтобы эти связанные карточки в разных колодах показывались в один день без ограничений

Тогда зайти в настройки группы параметров этих колод (по клавише О) и снять галочки
Откладывать связанные новые карточки до следующего дня
 { на вкладке Новые карточки }
и
Откладывать повторения связанных карточек до следующего дня
 { на вкладке Ответов }

На карточку вывести метки

Как на карточке показать метки?

Когда много похожих карточек, не всегда понятно, к чему относится вопрос.

Подсказка Использовать спец. поле {{Tags}} в шаблоне карточки.

Может оказаться удобным загнать это поле куда-нибудь в угол карточки и отделить его оформлением от основного поля.

<div id=Tags>{{Tags}}</div>
#Tags {
    background-color: #dfd;
    color: darkgreen;
    font-size: 10pt;
    min-height: 20pt;
    line-height: 18pt;
    text-align: right;
    padding: 1px 1em;
    position: fixed;
    bottom: 0px;
    right: 0px;
    left: 0px;
}
.card {
    padding-bottom: 20pt;
}

При этом классу карточки снизу надо добавить пространство, равное высоте занятой строки,
чтобы при необходимости сторону карточки прокруткой можно было полностью вывести из-под этой строки.

Примечание Также при указании цвета текста надо обязательно указывать цвет фона,
иначе при включении ночного режима по Ctrl+N (дополнение Night Mode)
метки могут оказаться нечитаемыми.

Добавить переворот

Как в Обозревателе Anki выбрать записи типа Основная (обратные по выбору), у которых создана только прямая карточка?

"Добавить переворот:"
то есть строго говоря поле Добавить переворот содержит ничего
в смысле ничего оно не содержит, нет переворота на записи.

А те, у которых создана и обратная тоже?

"Добавить переворот:_*"
то есть поле Добавить переворот обязательно содержит один любой символ
и может быть к нему ещё 0 или более любых символов,
в итоге это — в поле 1 и более символов

А как читать такой фильтр?

"Добавить переворот:*"
поле Добавить переворот содержит 0 или более любых символов,
то есть оно или пустое, или в нём что угодно есть.
Тут главное, что это поле может что-нибудь содержать,
то есть оно в принципе есть в записи, это поле.
Записи, у которых нет данного поля, в выборку не попадут.

Если вы заполняли поле лишь одной буковкой, скажем, Y

то вы легко можете искать только её:
"Добавить переворот:Y"

Если вы заполняли поле только одной звёздочкой, *

то в стандартной Anki 2.0 вы не можете искать её совсем!
от слова никак

С дополнением

' Search an asterisk in Browse 1233315867
вы можете использовать такой фильтр:
"Добавить переворот:\*"
поле Добавить переворот содержит точно звёздочку.

Для упёртых упрямых:

если вы заполнили поле значением именно обратный слэш и звёздочка,
и хотите его найти, то вам следует искать три бэкслежа:
"Добавить переворот:\\\*"
это же железная логика (экранировать не только звёздочку, но и \).

Ссылка в поле

Как в поле вопроса или ответа вставить ссылку
(например на ролик, скачанный в Мои видео)?

В окне добавления/редактирования записи поставить текстовый курсор на нужное поле
и перейти в режим редактирования HTML нажатием Ctrl+Shift+X

В HTML редакторе указать:
другой текст <a href="адрес ссылки">текст ссылки</a> в этом же поле
Например, ссылка на видео:
Ералаш <a href="file:///c:\Users\Пользователь\Videos\Чалма и сковородка.mp4">Индийские йоги, кто они?</a> (1983 год Выпуск № 38 Сюжет № 3)

Почему путь к файлу именно в таком виде, можно подробно прочитать
в Википедии в статье Схема file в Windows

К сожалению, переменные среды окружения не используются :-(
Вот так не сработает:
<a href="file:///%HOMEDRIVE%%HOMEPATH%\Videos\Чалма и сковородка.mp4">посмо/3</a>
И так:
<a href="file:///Чалма и сковородка.mp4">Не работает!</a>

Любая такая ссылка откроется не в окне Anki,
а во внешней программе, связанной с указанным протоколом или расширением файла.

Frequently Asked Question

Условия в шаблонах

В шаблоне карточек некоторые поля требуется вывести с дополнительными символами.
Например, Вопрос (Доп поле).

Если добавить в шаблон ({{Доп поле}}), то скобки выводятся во всех карточках не зависимо от того заполнено поле или нет.

Можно ли настроить шаблон так, чтобы дополнительные символы выводились только если поле заполнено?
{{#Доп поле}}({{Доп поле}}){{/Доп поле}}

Карточки с одной стороной

Вопрос?

Я хочу составить колоду не из карточек "вопрос-ответ", а только с одним полем, и, желательно, без временного интервала.

Ответ!

Всё очень просто. Устанавливаете дополнение Handy Answer Keys Shortcuts — оно позволяет отвечать сразу на стороне вопроса, второе поле просто не заполняете, его можно даже не удалять.

И каждый день

Что касается без временного интервала, то надо установить в 1 (единицу) два параметра:

  • интервал для «легко» на вкладке Новые карточки

 { 1 день }
  • и максимальный интервал на вкладке Ответов

 { тоже 1 день }

Лимит времени

Как ограничить общее время разучивания карточек за день?

Скажем, позанимался сегодня полчаса, а на дальнейшие попытки
выходит сообщение «Ты устал, отдохни!» и программа завершает свою работу.

Нет, в Anki такого насилия над личностью нет. Этот вопрос отдан полностью пользователю на самоконтроль. Хочешь заниматься не более часа в день? Ради бога, через час просто закрой окно программы :-) То, что часть сегодняшних карточек при этом, скорее всего, осталась недоученной, ни на что не влияет: они просто будут показаны первыми при следующем запуске программы.

Есть похожий на эту тему параметр в настройках профиля:

Инструменты → Настройки…​ → Лимит ограничения времени

 { Например, 1 минута. }
timebox time limit

По прошествии указанного количества минут будет показано к сведению
всплывающее окно с количеством просмотренных карточек.

 { 7 карточек просмотрено за 1 минуту }
В этом окне следует принять решение:
  • либо продолжить учить карточки,

  • либо завершить этот процесс
    и перейти к списку колод.

Примечание Если сильно увлекаешься карточками, так, что буквально забываешь о времени, когда их учишь, то полезно выставить этот значение, скажем, на 30 минут, чтобы каждые полчаса получать напоминание: «Время! Помни о времени!»

Это должен знать каждый!

  1. Когда по Anki читаете статьи в блогах или смотрите видео на ютубе

    обязательно обращайте внимание на дату публикации.
     
    Дело в том, что многие авторы совершенно не упоминают версию программы,
    а между первой и второй перерывчик небольшой существуют значительные отличия,
    и многое из того, что и как делалось в первой — совершенно не сработает во второй.

  2. Версия программы Anki 2.0.0

    была выпущена 6 октября 2012 года.

Примечание
Грубо говоря
Практически всё, что написано в статьях и блогах
и выложено на ютуб до 2013 года,
относится к устаревшей версии Anki.

Как обнулить статистику пройденных карточек?

Чтобы учить их все с самого начала:
  • экспортировать без статистики,

  • удалить (именно карточки, не колоду)

  • и импортировать.

Если настройки колоды используются дефолтные (по умолчанию, группа настроек Default), то можно упростить процесс: после экспорта удалить колоду, а не рыться в Обозревателе Anki, выделяя карточки.

Если настройки у колоды свои, то при удалении колоды (а не карточек) может быть потеряна связь между колодой и её группой настроек, и придётся вновь указывать в настройках колоды эту группу настроек (выбирать из выпадающего списка).

Как отдать свою колоду с настройками?

Вопрос: Как поделиться своей колодой со своими настройками интервалов, но без своего прогресса (то есть без своего фактически выполненного расписания)?

Ответ: А вот так!

  • Экспортировать с расписанием и не отдавать.

  • Создать новый профиль.

  • Импортировать в него.

  • Сбросить факт перемещением в конец очереди (через Обозреватель Anki).

  • Экспортировать с расписанием и отдать.

  • Созданный профиль удалить.

Как поменять язык программы

Через настройки профиля

Начиная с версии 2.0.35 появилась возможность изменить язык оболочки через настройки профиля:

 { Tools - Preferences... - Basic - Interface language: English }

Чтобы изменение языка вступило в силу — необходимо перезапустить Anki:

 { Please, restart Anki to complete language change. }
Осторожно!
Надо знать и понимать:
Это единственный параметр в данном диалоговом окне,
который касается всех профилей (всей базы данных Anki),
а не только текущего.
Подсказка Именно поэтому для разных пользователей внутри одной учётной записи Windows надо создавать разные базы (через параметр командной строки -b), а не разные профили (открытие указанного профиля при запуске Anki задаётся параметром командной строк -p).

Через аргументы командной строки

Где вопрос: Друзья, помогите! Как поменять язык программы?
Хотя и изучаю китайский, но пока ничего не понимаю…​ Помогите, пожалуйста:)

А где ответ: кнопка Пуск в левом нижнем углу экрана

  • правой кнопкой мыши по ярлыку Anki

  • в контекстном меню Свойства

  • вкладка Ярлык

  • выбираешь поле Объект

  • курсор за закрывающими кавычками

  • и далее набираешь пробел -l пробел ru

  • и кнопку Применить

  • открываешь Anki, проверяешь.

Всё получится!

-l это строчная латинская буква эл, не единица и не прописная ай
(от англ. слова language [ˈlæŋgwɪʤ] — язык, речь, лексика, стиль, брань)

ru это РУ латиницей, а не эм и не тэ, и не эр эн, и не эн ай
(от англ. слова russian [rʌʃn] — русский, российский)

 { Объект: ... -l en }
ещё раз о параметре запуска Anki
-l ru

запуск с русским языком оболочки

-l en

запуск с английским языком оболочки

Для эстетов:

Таким образом можно ярлыком с рабочего стола запускать программу Anki
с русским языком оболочки, а через кнопку пуск — с английским
(если закрепить ярлык в меню Пуск).

 { Help - Guide... - F1 }
Примечание При этом если зайти в Пуск — Все программы и кликнуть по ярлыку Anki,
то запуск произойдёт с тем языком оболочки, который был указан при установке программы.
Например, украинским.

А можно вообще насоздавать ярлыков на запуск Anki с разными языками, собрать их в отдельную папочку (на рабочем столе Windows, скажем)

 { Anki.lnk Anki(2).lnk и тому подобные }
и сделать из неё свою панель инструментов

на панели задач Windows.

 

Через удаление каталога Anki

Можно пойти совсем формальным путём:
  • экспортировать все коллекции изо всех профилей,

    • соответственно переименовывая collection.apkg файлики на рабочем столе,

  • закрыть программу Anki,

  • сохранить где-нибудь каталог Anki\addons

  • удалить каталог Anki из папки документов пользователя,

  • запустить программу Anki,

  • указать требуемый язык оболочки,

  • создать нужные профили,

  • указать в них нужные Инструменты → Настройки…​

  • импортировать соответствующие коллекции;

  • закрыть программу Anki,

  • скопировать откуда-то каталог Anki\addons

  • запустить программу Anki,

  • радоваться жизни :-)

NB! Если вместо экспорта коллекции выполните экспорт конкретных колод,
то надо обращать внимание на папку, в которую сохраняете.

Осторожно!
Обратите внимание!
Предлагаемая по умолчанию колода Anki
в документах пользователя не подходит в данном случае,
потому что именно её придётся удалять!!!

Через удаление …​\Anki\prefs.db

А можно немного уменьшить себе объёмы ручной работы:
  • закрыть программу Anki,

  • зайти в папку с документами пользователя,

  • зайти в подкаталог Anki,

  • удалить (или переименовать) файли prefs.db

  • запустить программу Anki.

При ближайшем запуске вопрос об языке оболочки будет задан вновь.

Придётся вновь создавать все свои профили, хотя на диске они есть,
в смысле подкаталоги и все содержащиеся в них файлики.

Примечание

Колоды, типы записей и карточки при таком «финте ушами» не страдают.

Группы настроек колод при этом способе не теряются.

Предупреждение А вот Инструменты → Настройки…​ да, будут потеряны,
их придётся указывать заново.

 

Как запускать с флэшки

Собственно, всё, что надо сделать для создания переносимой версии Anki:

  1. Скопировать C:\Program Files (x86)\Anki в H:\Anki
    ну или где вы там установили себе Anki

  2. Создать где вам удобно ярлык для H:\Anki\anki.exe и в поле Объект:
    в конце строки через пробел указать параметр -b /AnkiData

Вместо H: укажите букву вашего диска.

Вообще программы на флэшке удобно собирать в один общий каталог, например, portable.

Ярлык на флэшке неудобен тем, что на разных машинах она может монтироваться с разными буквами диска.

В таком случае следует создать командный файл anki.cmd
@start "Anki" \portable\Anki\anki.exe -b AnkiData
Обратите внимание, что

В случае указания относительного пути к каталогу с коллекциями он также вычисляется от папки, в которой находится командный файл, а не от директории, из которой фактически стартует Anki.

Осторожно!
В целом портабельная версия периодически может зависать при запуске.

Возможно, это антивирус на медленной флэшке.

Дополнения могут шалить.

Download audio, например, то иконки не показывает,
то на предпрослушивании полученные файлы не воспроизводит.

 

 

• Anki 2.0 Annotated Schema

Аннотированная схема на русском языке Формат Базы Данных Anki DataBase Format по-русски

Спасибо, люди! Хотел уже делать самостоятельно,
когда додумался погуглить anki ord mod usn и нашёл это!

Примечание

Краткое описание структуры базы данных Anki 2.0 из вики АнкиДроид

Взятое за основу: github.com/dae/anki/blob/master/anki/storage.py

Благодарности @sartak и @fasiha за то, что они и замутили всё это

Немного иначе оформленный перевод структуры в форматах SQL и JSON есть и на github wiki.
Поменьше шрифт, разная длина строки. Возможно, в каком-то варианте и проще покажется.

Anki 2.0 Структура базы данных

usn: Update Sequence Number

Во всех таблицах вы встретите это магическое поле: usn

Порядковый Номер Обновления

Из исходного кода появляется догадка, что Anki последовательно увеличивает этот номер каждый раз, когда выполняет синхронизацию с AnkiWeb, и применяет этот номер к карточкам, которые были синхронизированы.

Например, если в базе данных установлен максимальный usn 1230 для коллекции, то карточки будут иметь различные номера вплоть до 1229.

Используется, чтобы выяснить различия при синхронизации.

Значение -1 сигнализирует о необходимости
выгрузить изменения на сервер с компа.

Если локальный usn меньше < usn на сервере,
то это значит, что надо загрузить изменения с сервера на комп.

cards

Карточки суть то, что вы просматриваете.

Для каждой записи могут существовать несколько карточек,
если это определено шаблонами типа записей.

Карточки

CREATE TABLE cards (
    id              integer primary key,
      -- уникальный идентификатор карточки
      -- по сути это количество миллисекунд с 01.01.1970
      -- на момент, когда она была создана
    nid             integer not null,
      -- notes.id
      -- идентификатор записи данной карточки
    did             integer not null,
      -- deck id
      -- идентификатор колоды данной карточки
      -- (все колоды - в таблице коллекции col)
    ord             integer not null,
      -- ordinal
      -- порядковый номер карточки среди шаблонов типа записей
      -- допустимые номера от 0 до количества шаблонов - 1
    mod             integer not null,
      -- время изменения карточки
      -- по сути это количество миллисекунд с 01.01.1970
    usn             integer not null,
      -- Update Sequence Number: Порядковый Номер Обновления
    type            integer not null,
      -- 0=новая, 1=разучиваемая, 2=проверяемая, 3=переучиваемая
    queue           integer not null,
      -- 0=новая, 1=разучиваемая, 2=проверяемая, 3=переучиваемая
      -- -1=исключена, -2=отложена пользователем, -3=отложена программно(?)
    due             integer not null,
      -- Пора имеет различное значение для разных типов:
      --  новая: note.id или случайное целое
      --   разучиваемая: время следующего показа сегодня (вплоть до миллисекунд)
      --    проверяемая: номер дня относительно времени создания коллекции(?)
    ivl             integer not null,
      -- интервал: отрицательный = секунды, положительный = дни
    factor          integer not null,
      -- фактор (десятикратная лёгкость)
    reps            integer not null,
      -- количество просмотров
    lapses          integer not null,
      -- количество раз, когда повторяемая карточка переходила из состояния
      --  `последний раз отвечена верно` в состояние `последний раз ответ дан неверно`
    left            integer not null,
      -- количество повторов, которое осталось до завершения(?)
    odue            integer not null,
      -- original due: исходное место в очереди (только для фильтр-колод)
    odid            integer not null,
      -- original did: домашняя колода (только для фильтр-колод)
    flags           integer not null,
      -- в настоящее время не используется
    data            text not null
      -- в настоящее время не используется.
      -- Возможно от перехода с Anki1? Или данные для дополнений?
);

cards.odid и cards.odue сохраняют для карточек, находящихся в фильтрованной колоде, значения их полей cards.did и cards.due на момент перестроения фильтр-колоды (надо же знать, какая у карточки домашняя колода, куда её рано или поздно придётся возвращать, и какое у неё там место в очереди).

notes

То, что в Anki2 называется записи, в Anki1 называлось факты.
То, что называется типы записей, называлось модели.

Записи являются основой для создания карточек

и содержат исходную информацию, которая в отформатированном виде показывается на карточке.

Может быть, даже на нескольких карточках одновременно, если так определено в шаблонах карточек для данного типа записей.

Записи

CREATE TABLE notes (
    id              integer primary key,
      -- уникальный идентификатор записи
      -- по сути это количество миллисекунд с 01.01.1970
      -- на момент, когда она была создана
    guid            text not null,
      -- какой-то глобальный идентификатор,
      -- скорее всего используемый при синхронизации
    mid             integer not null,
      -- идентификатор типа записей (модели)
    mod             integer not null,
      -- время изменения записи
      -- по сути это количество миллисекунд с 01.01.1970
    usn             integer not null,
      -- update sequence number: для отыскания различий при синхронизации
    tags            text not null,
      -- метки, разделённые пробелом. похоже, содержит пробелы и в начале
      -- и в конце поля, так что можно делать так: LIKE "% tag %"
      -- что находить в точности метку и отсекать другие метки,
      -- где она является лишь частью.
    flds            text not null,
      -- значения полей в этой записи, разделены 0x1f (31).
    sfld            integer not null,
      -- поле сортировки: используется для ускорения поиска дубликатов
    csum            integer not null,
      -- контрольная сумма, используется при проверке на дубликаты.
      -- первые восемь цифр хэша sha1 первого поля
    flags           integer not null,
      -- не используется
    data            text not null
      -- не используется
);

col

Собрание. Полное собрание колод, настроек, типов записей и групп настроек колод.

И всё это изобилие в одной единственной строке, значение в поле — в формате JSON.

Коллекция

CREATE TABLE col (
    id              integer primary key,
      -- произвольное число, поскольку
      -- строка в этой таблице всегда одна
    crt             integer not null,
      -- штемпель времени создания коллекции
    mod             integer not null,
      -- последние изменения в миллисекундах
    scm             integer not null,
      -- schema mod time
      -- время последних изменений в схеме БД
      -- если поле на сервере отличается,
      -- то будет запрошена полная синхронизация.
    ver             integer not null,
      -- версия? у меня *11* (?)
    dty             integer not null,
      -- dirty: всегда 0. не используется(?)
    usn             integer not null,
      -- update sequence number: для синхронизации.
    ls              integer not null,
      -- "last sync time" - время последней синхронизации
    conf            text not null,
      -- json объект содержит опции, которые были синхронизированы
    models          text not null,
      -- json массив с типами записей
    decks           text not null,
      -- json массив с колодами
    dconf           text not null,
      -- json массив с группами настроек колод
    tags            text not null
      -- массив меток, которые используются в данной коллекции
);

revlog

revlog — это история просмотров.

содержит строку для каждого раза,

когда вы нажимали кнопку
Не помню, Трудно, В самый раз, Очень легко

Журнал просмотров карточек

CREATE TABLE revlog (
    id              integer primary key,
       -- момент времени, когда был дан ответ
    cid             integer not null,
       -- cards.id идентификатор карточки
    usn             integer not null,
       -- update sequence number: для синхронизации
    ease            integer not null,
       -- какой ответ был дан:
       -- значение зависит от количества кнопок,
       -- т.е. от состояния карточки на момент ответа
       -- (новая, обучение, пора, переучивание).
       --   1(Не помню), 2(Трудно), 3(В самый раз), 4(Очень легко)
       --   1(Не помню), 2(В самый раз), 3(Очень легко)
       --   1(Не помню), 2(В самый раз)
    ivl             integer not null,
       -- interval: интервал
    lastIvl         integer not null,
       -- last interval: предыдущий интервал
    factor          integer not null,
       -- десятикратная лёгкость
    time            integer not null,
       -- сколь долго вы смотрели на карточку, вплоть до 60000 (60s)
    type            integer not null
);

Спасибо, это очень полезно! Кстати, revlog.time в действительности может быть и больше 60e3, поскольку вы можете настроить Anki Не учитывать время ответа больше 0 секунд в Группе настроек колод на вкладке Общие.

graves

Информация об удалённых объектах

для их последующего удаления
на другой стороне при синхронизации (?)

Могилы

CREATE TABLE graves (
    usn             integer not null,
    oid             integer not null,
    type            integer not null
);

usn должен быть установлен в -1

oid оригинальный идентификатор удалённого объекта

graves.type обозначает тип данных, которые были удалены:

  • 0 выставляется для карточек,

  • 1 для записей,

  • 2 для колод.

Об этом нам говорят константы REM_CARD, REM_NOTE и REM_DECK
определённые в github.com/dae/anki/blob/master/anki/consts.py
и используемые в github.com/dae/anki/blob/master/anki/sync.py

indexes

Индексы

CREATE INDEX ix_cards_nid on cards (nid);
CREATE INDEX ix_cards_sched on cards (did, queue, due);
CREATE INDEX ix_cards_usn on cards (usn);
CREATE INDEX ix_notes_csum on notes (csum);
CREATE INDEX ix_notes_usn on notes (usn);
CREATE INDEX ix_revlog_cid on revlog (cid);
CREATE INDEX ix_revlog_usn on revlog (usn);

Типы записей в JSON

col.models описывает специфическую конфигурацию типа записей в формате JSON

Каждый объект суть величина ключа, который есть идентификатор модели
ключи — это идентификаторы типов записей (миллисекунды с начала эпохи 01.01.1970)

Модель — так в первой версии Anki назывались типы записей.

И вот описание этих полей:

{
    css : "CSS, единый для всех шаблонов карточек",
    did :
        "идентификатор предпочитаемой колоды, 1 для колоды по умолчанию",
    flds : [
             "Для каждого поля данного типа записей",
             {
               font : "отображаемый шрифт",
               size : "размер шрифта",
               media : "? массив медиа-файлов, ? не используется ?",
               name : "имя поля",
               ord : "как и cards.ord: порядковый номер поля -1",
               rtl : "ложь/истина (булеан), шрифт справа налево",
               sticky : "Помнить последние введённые данные"

             }
           ],
    id : "cards.mid",
    latexPost : "послесловие для LaTeX",
    latexPre : "предисловие для LaTeX",
    mod : "? число",
    name : "имя типа записей",
    req : [
            "Массив из трёх элементов:",
            [
              "индекс массива, 0, 1, ...",
              "? строка, all",
              "ещё один массив",
              ["кажется, стова индекс массива"]
            ]
          ],
    sortf : "номер поля с 0, используемого для сортировки в Обзоре",
    tags : "сохраняются метки, использованные последними для данного типа записей",
    tmpls : [
              "массив шаблонов",
              {
                qfmt : "строка формата вопроса",
                afmt : "строка формата ответа",
                bafmt : "?",
                bqfmt : "?",
                did : "? null",
                name : "имя шаблонов",
                ord : "номер шаблонов"
              }
            ],
    type : "0 для Основных, 1 для Пропусков",
    usn : "порядковый номер обновления",
    vers : "Номер устаревшей версии (неиспользуемый), пустой массив"
}

cards.ord в действительности, кажется, является
индексом макета карточки в типе записей, стартующим с 0

Скажем, для карточки с пропуском To be{{c6::,}} or not to be
значением cards.ord будёт 5(пятёрочка).

Якобы(?) Найдено в исходном коде Anki:

  • cards.lapses сколько раз была забыта повторяемая карточка (количество попаданий в очередь переучиваемых).

    • Факты забывания новых и разучиваемых (обучение) карточек сюда НЕ суммируются.

  • cards.type кажется, так:

    • learning = 0,

    • review = 1,

    • lapse/relearn = 2,

    • filtered = 3

  • cards.queue кажется, так:

    • suspended = -1

    • new = 0,

    • learn = 1,

    • review = 2,

    • relearn = 3

Нашёл такое пояснение в github.com/dae/anki/blob/master/anki/cards.py:

# Type: 0=new, 1=learning, 2=due
# Queue: same as above, and:
#        -1=suspended, -2=user buried, -3=sched buried
# Due is used differently for different queues.
# - new queue: note id or random int
# - rev queue: integer day
# - lrn queue: integer timestamp
Type тип
  • 0 новые

  • 1 обучение

  • 2 пора проверить

Queue очередь
  • 0 новые

  • 1 обучение

  • 2 пора проверить

  • -1 исключённые

  • -2 отложенные пользователем

  • -3 отложенные как связанные(?)

Due используется по-разному для разных типов
  • новые: идентификатор записи или случайное целое?

  • обучение: целое - отметка времени

  • пора проверить: целое - номер дня

Колоды в JSONObjects

Аннотированное описание объектов JSON в поле decks таблицы col:

{
    id:		"идентификатор колоды (автоматически генерируемое длинное целое)",
    name:	"имя колоды",
    desc:	"описание колоды"
    usn:	"Update Sequence Number: Порядковый Номер Обновления",
    mod:	"время последней модификации",
    collapsed:	"правда, когда колода свёрнута",
    browserCollapsed: "правда, когда колода свёрнута в Обозревателе",
    dyn:	"1 если динамическая колода (больше известная как фильтрованная)",
    conf:	"id of option group from dconf in `col` table",
    extendNew:	"увеличенный лимит новых карточек (для дополнительного обучения)",
    extendRev:	"увеличенный лимит просмотров карточек (для дополнительного обучения)",
    newToday:	"Двухчисловой массив, как-то используемый для дополнительного обучения",
    timeToday:	"Двухчисловой массив, как-то используемый для дополнительного обучения",
    lrnToday:	"Двухчисловой массив, как-то используемый для дополнительного обучения",
    revToday:	"Двухчисловой массив, как-то используемый для дополнительного обучения",
}

Примечания

Не уверен за каждую букву, поскольку эти имена придумал Дамиен Элмс, но:

crt

created time / время создания

ver

collection version / версия коллекции

scm

schema version / версия схемы

dty

dirty flag?

usn

universal serial number / используется при синхронизации

Примечание
прим. перев. — не знаю, что делать со всем этим

как ни пытаюсь улучшить — ощущение какой-то каши
Есть идеи, что можно сделать?

Ссылки по теме

 

¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиЖ

 

© 2018-05-28
Несмотря на то, что текст опубликован в свободном доступе, все права на него оставляю за собой.
Если вам необходимо где-то использовать весь текст или его часть — напишите мне и мы обсудим.

P.S. Все имена и события вымышлены. Все совпадения случайны.
Все торговые марки принадлежат их владельцам,
случайные упоминания в тексте не являются покушением на их использование.

И вообще, вам это всё привиделось. Было сном.

Немедленно сотрите у себя этот файл и забудьте то, что прочитали :-)

.

.