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

Для чего нужен blunderDB?

blunderDB позволяет создать персонализированную базу данных позиций. Его сила в том, что он не предполагает никакой классификации a priori. Таким образом, пользователь свободен запрашивать позиции с большой гибкостью, комбинируя по своему усмотрению различные критерии (гонка, структура, куб, счёт, отставшие шашки, шашки в зоне, шансы на выигрыш/гаммон/бэкгаммон, …).

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

Что побудило создать blunderDB?

Раньше я хранил интересные позиции или ошибки (blunders) в разных папках. Однако мне было трудно находить позиции по критериям, изначально не предусмотренным моим выбором тематических категорий. Например, если позиции были отсортированы по типу игры (гонка, holding game, блиц, backgame, …), как найти все позиции при определённом счёте? или при определённом уровне куба? Наконец, некоторые старые позиции имели тенденцию забываться. Я хотел инструмент, который объединяет все мои позиции и не предполагает a priori тематических категорий, а затем позволяет задавать вопросы базе данных. При таком гибком подходе новые фильтры можно добавлять, не нарушая организацию позиций. Такое программное обеспечение довольно распространено в шахматах, например ChessBase.

Как сохранить текущую базу данных?

База данных изменяется немедленно после выполнения запросов. Явного сохранения не требуется.

Нужно ли создавать разные базы данных для разных категорий позиций?

За исключением хорошо обоснованных причин, важно не распределять позиции по отдельным базам данных, рискуя не суметь связать их в будущих поисках. Философия blunderDB состоит в том, чтобы не предполагать категории позиций a priori и позволять пользователю запрашивать их гибко. Когда позиции встречались в особых условиях или по конкретным причинам, может быть разумно хранить их в отдельных базах данных. Можно, например, создать отдельные базы данных позиций для:

  • эталонных позиций,

  • бландеров на реальных турнирах,

  • бландеров в онлайн-игре.

Как объединить несколько баз данных?

Если у вас несколько баз blunderDB, которые вы хотите свести вместе, используйте кнопку Объединить базу данных (CTRL-SHIFT-I):

  1. Откройте основную базу (ту, которая примет позиции)

  2. Нажмите Объединить базу данных на панели инструментов

  3. Выберите базу для объединения

  4. blunderDB объединяет позиции

При слиянии blunderDB избегает дубликатов: уже имеющаяся позиция не дублируется, а анализы разных движков сосуществуют, вместо того чтобы затирать друг друга (см. Импорт: что записывается, а что — никогда).

Примечание

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

Какие форматы файлов матчей поддерживаются?

blunderDB поддерживает следующие форматы матчей:

  • eXtreme Gammon (XG): файлы .xg с полным анализом ходов, решениями по кубу, сыгранными ходами и поддержкой нескольких движков. Файлы .xgp для импорта отдельных позиций с анализом.

  • GNUbg: файлы .sgf (Smart Game Format) с анализом.

  • Jellyfish: файлы .mat и .txt.

  • BGBlitz: файлы .bgf и текстовые позиции.

  • HedgeHog (OpenGammon): файлы .ogxm с анализом.

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

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

Можно ли импортировать матчи, сыгранные онлайн?

Да, окольным путём: Backgammon Studio (Heroes), Backgammon Galaxy и GammonSpace — все три производят файлы, которые умеет читать eXtreme Gammon; Studio даже поставляет пакет интеграции, который кладётся в папку XG. Эти матчи попадают в blunderDB по существующему пути .xg, и отдельный читатель не нужен.

Примечание

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

Более старые текстовые форматы, которые GNU Backgammon уже читает — .sgg (GridGammon), .tmg, .gam, .txt Snowie — находятся в том же положении: путь через GNU Backgammon делает их импортируемыми уже сегодня.

Можно ли синхронизировать базу между несколькими машинами?

База blunderDB — это один-единственный файл. Это делает резервное копирование и копирование тривиальными, и это решает ответ:

  • Dropbox, Syncthing, iCloud, OneDrive: они работают при одном условии — не открывать базу с обеих сторон одновременно. Они синхронизируют файлы, а не одновременные записи: два экземпляра, пишущие параллельно, порождают конфликт, который служба разрешает, оставляя одну версию и переименовывая другую. blunderDB ставит блокировку записи на открытый файл, что защищает одну машину, но ни одна блокировка не проходит через службу синхронизации.

  • Несколько машин одновременно: на это отвечает режим serve (см. Безголовый режим (сервер)). База принадлежит демону, машины подключаются к нему, и пишущий всегда один.

  • Две разошедшиеся базы: они объединяются, а не синхронизируются — см. «Как объединить несколько баз данных?» выше. Дедупликация по отпечатку Зобриста делает работу: общие позиции не дублируются, а их анализы и комментарии объединяются. Это объединение, а не согласование: ничто не удаляется с одной стороны потому, что другая это удалила.

Нужен ли мне eXtreme Gammon для использования blunderDB?

Нет. blunderDB также читает файлы GNUbg, BGBlitz и Jellyfish, а его встроенный оценщик (gammonNet) анализирует любую позицию без зависимости от стороннего программного обеспечения — см. «Чего стоит встроенный оценщик?» ниже. Однако импорт из XG даёт наиболее полный анализ (ходы, решения по кубу, отметки, удача броска): это формат, наиболее полно используемый статистикой.

Я уже пользуюсь eXtreme Gammon: зачем мне blunderDB?

blunderDB не переигрывает ваши матчи, он их собирает вместе. Три конкретных отличия:

  • собрать в одном файле матчи из XG, GNUbg, BGBlitz и Jellyfish, устранив дубликаты позиция за позицией;

  • искать по структуре шашек и по ошибке: «взятия при этом счёте, где я потерял более 50 миллипоинтов» записывается одной командной строкой (см. Список команд);

  • повторять отобранные позиции методом интервального повторения, в колодах Anki (см. Панель Anki).

Ваши анализы XG остаются анализами XG: blunderDB импортирует их как есть и никогда не пересчитывает (см. Импорт: что записывается, а что — никогда).

Импортируются ли роллауты XG? Делает ли blunderDB роллауты?

Нет, в обе стороны. Из анализа XG импорт сохраняет метку уровня («3-ply», «XG Roller++», «Book»), эквити, ошибки и вероятности; он не вскрывает данные роллаута в файле .xg и потому не сохраняет ни числа попыток, ни стандартного отклонения. Анализ XG, вставленный текстом, напротив, сохраняет свою метку буквально, включая «Rollout». Встроенный оценщик, со своей стороны, роллаутов не делает: он отвечает поиском на 0 или 2 броска вперёд.

Что измерено у встроенного оценщика, а что не измерено?

Опубликовано одно измерение — по рассчитанному режиму панели Eval: 4000 money-решений в гонке, сравненных с точной таблицей выброса, — совпадение вердикта 93,4 % (3735/4000), но лишь 61,1 % ближе 1 % от точки тейка против 94,4 % дальше 20 %; расхождение вероятности выигрыша в среднем 0,85 %, максимум 8,30 %. Что не измерено: вердикт по кубу при счёте матча и контактные позиции, по которым не опубликовано ни одной цифры. Подробности допущений — в Методология и допущения панели Eval.

Что такое коллекция?

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

Что такое EPC?

EPC (Effective Pip Count) — более точная мера, чем простой пипкаунт, для оценки позиций bearoff. Панель Eval в blunderDB использует таблицу bearoff на 6 пунктов, идентичную таблице GNUbg и вычисляемую на самой машине при первом запуске, и в реальном времени вычисляет EPC, среднее число бросков, стандартное отклонение, пипкаунт и wastage.

На позициях чистого bearoff панель также отображает вероятность выигрыша игрока на ходу и, когда позиция покрыта two-sided базой (таблица TS-06-06, вычисляемая при первом запуске, или расширенная таблица TS-06-11, вычисляемая во вкладке Bearoff настроек), точный money-вердикт по кубу. Вне этой области вероятность оценивается с указанием погрешности, а вердикт намеренно не отображается. Подробности допущений см. в разделе «Методология и допущения панели Eval» руководства.

Чего стоит встроенный оценщик (gammonNet)?

gammonNet — это нейронная сеть, обученная третьей стороной (см. Благодарности), портированная на Go и скомпилированная в blunderDB: никакого внешнего ПО, никакого сетевого подключения. Она играет роль XG или GNUbg для неимпортированных позиций — поиск на глубину 0 или 2 бросков вперёд, решение по кубу по Яновскому и таблице эквити матча blunderDB, с учётом счёта. Это не единственный и не обязательно лучший движок на рынке: это тот, который работает офлайн, без учётной записи и подписки, для позиции, на которую вы смотрите. При этом ничто не мешает также импортировать анализы XG или GNUbg, когда они существуют — оба источника сосуществуют, и колонка указывает происхождение каждого анализа. См. раздел «Панель Eval» и «Методология и допущения панели Eval» в руководстве.

Чего это стоит, в цифрах. На позициях снятия, которые покрывает встроенная точная таблица — единственное место, где есть оракул, — gammonNet на 2 плая даёт тот же вердикт по кубу в 93,4 % случаев, и расхождение сосредоточено ровно в точке приёма (61 % совпадений ближе 1 % от точки приёма, 94 % дальше 10 %): именно там два законных метода сильнее всего расходятся в тесном решении, а не рассеянная ошибка. Подробности и метод — в «Методика и допущения панели Eval».

На тот же вопрос, заданный о вашей базе, а не об эталонном корпусе, отвечает blunderdb analyze --compare: он сравнивает встроенный движок с анализами, пришедшими из ваших файлов XG или GNUbg — совпадение по лучшему ответу, стоимость расхождений, разбивка по фазе игры — ничего не записывая.

В чём разница между PR и Snowie Error Rate?

PR (Performance Rating) — это средняя ошибка эквити на засчитанное решение, умноженная на 500, как это делают eXtreme Gammon и GNUbg; чем он ниже, тем лучше игра. Snowie Error Rate относит то же среднее к числу ходов, а не решений, — поэтому более длинный матч механически не ухудшает SER. blunderDB показывает оба показателя на панели Stats, согласованными с соглашениями eXtreme Gammon и GNUbg (см. Приложение: Модель статистики — выравнивание XG / gnuBG / blunderDB для подробностей правил подсчёта).

Есть ли у blunderDB интерфейс командной строки?

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

Предлагает ли blunderDB серверный режим?

Да, опциональный «headless»-режим: тот же самый бинарный файл, запущенный с serve, предоставляет движок blunderDB по HTTP + JSON за аутентифицирующим обратным прокси (сам blunderDB не выполняет никакой аутентификации). Он может работать на SQLite или на многопользовательском (multi-tenant) PostgreSQL и служит для управления blunderDB из ваших собственных сценариев или самодельного приложения по HTTP + JSON — веб-интерфейса нет — либо для совместного использования базы несколькими игроками. Обычным способом использования остаётся настольное приложение; см. Безголовый режим (сервер) для подробностей (включая готовый образ Docker) и руководство «Развёртывание серверного режима за прокси» в руководстве пользователя.

Можно ли изменять, копировать, распространять blunderDB?

Да, конечно (и это даже приветствуется!). blunderDB распространяется по лицензии MIT.

Где хранятся мои данные?

На вашем диске, в файле .db, который вы выбрали при создании базы данных: никакой учётной записи, никакого сервера, никакой синхронизации по умолчанию. Настольное приложение открывает этот файл напрямую; только опциональный серверный режим (см. выше) запускает blunderDB удалённо, и в этом случае именно вы размещаете этот сервер.

Могу ли я поделиться базой данных с другим игроком?

Да: база данных blunderDB — это обычный файл, достаточно скопировать его или отправить. Для распространения базы данных третьей стороне два опциональных механизма, выбираемых при экспорте, превращают это в контролируемое распространение, а не простое копирование: водяной знак происхождения подписывает файл вашей идентичностью издателя (неподделываемый, читаемый на панели Метаданные или через blunderdb info, никогда ничего не фиксируя на стороне получателя), а защита паролем создаёт зашифрованный файл .dbx. См. Распространение базы: происхождение и пароль в руководстве.

Какой формат данных использует blunderDB?

База данных — это простой файл SQLite. В отсутствие blunderDB его можно открыть любым редактором файлов SQLite.

Каковы были принципы проектирования blunderDB?

Я хотел, чтобы интерфейс оставался доступным, но прежде всего продумывал его для продвинутой и интенсивной работы, когда позиции и запросы идут одна за другой. Командная строка, открываемая нажатием клавиши ПРОБЕЛ, и сочетания клавиш служат такой работе, но не являются обязательными.

Кроме того, я хотел, чтобы blunderDB был лёгким, автономным, не требующим установки и доступным для разных платформ, отсюда мой выбор языка Go и библиотеки Svelte. Для сериализации базы данных формат файлов должен быть кроссплатформенным и подходящим для хранения базы данных. Формат файлов SQLite оказался как нельзя кстати.

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

Наконец, blunderDB больше не ограничивается настольным приложением: тот же исполняемый файл предоставляет интерфейс командной строки и необязательный серверный режим, который может опираться на PostgreSQL для многопользовательских развёртываний. Тем не менее обычным способом использования остаётся настольное приложение. См. Интерфейс командной строки (CLI) и Безголовый режим (сервер).

Какова программная архитектура blunderDB?

  • Бэкенд написан на Go. Он отвечает за все операции с базой данных SQLite, в которой хранятся позиции.

  • Фронтенд написан на Svelte. Он отвечает за отображение графического интерфейса и доски для нард.

  • Приложение упаковано с помощью Wails, что позволяет создавать нативные настольные приложения для Windows, Linux и macOS.

  • База данных управляется SQLite.

  • Необязательный серверный режим может опираться на PostgreSQL вместо SQLite для многопользовательских развёртываний.

  • Встроенный оценщик (gammonNet, MIT) — это нейронная сеть, портированная на Go и скомпилированная в blunderDB: она оценивает любую позицию офлайн, без XG или GNUbg. См. «Чего стоит встроенный оценщик?» ниже.

Для получения дополнительной информации см. репозиторий blunderDB на GitHub.

На каких платформах работает blunderDB?

blunderDB работает на Windows, Linux и Mac.

Откуда взята иконка blunderDB?

Иконка blunderDB — это смайлик «goggling» из серии SMirC.