Erste Schritte und Oberfläche

Einführung

blunderDB ist eine Software zum Erstellen von Datenbanken mit Backgammon-Stellungen. Ihre größte Stärke besteht darin, einen einzigen Ort zu bieten, an dem ein Spieler die Stellungen sammeln kann, die ihm begegnet sind (online, im Turnier), und sie erneut studieren kann, indem er sie nach verschiedenen beliebig kombinierbaren Filtern filtert. blunderDB kann außerdem verwendet werden, um Kataloge von Referenzstellungen zu erstellen.

Die Stellungen werden in einer Datenbank gespeichert, die durch eine Datei .db dargestellt wird. Die Desktop-Anwendung öffnet diese Datei direkt, niemals eine Netzwerkadresse: Der Servermodus ist ein anderer Modus desselben Binärprogramms, und man wechselt von einem zum anderen durch Exportieren oder Migrieren der Datenbank, nicht indem man die Anwendung auf eine URL zeigen lässt.

Wichtigste Interaktionen

Die wichtigsten mit blunderDB möglichen Interaktionen sind:

  • eine neue Stellung hinzufügen,

  • eine bestehende Stellung bearbeiten,

  • das Brettbild über CTRL-X in die Zwischenablage kopieren (PNG) oder mit der vollständigen Analyse über CTRL-X CTRL-X,

  • eine bestehende Stellung löschen,

  • eine oder mehrere Stellungen suchen,

  • Matches aus verschiedenen Quellen importieren (XG, GNUbg, BGBlitz, Jellyfish, HedgeHog), einschließlich der Kommentare aus XG-Dateien,

  • durch die Züge eines importierten Matches navigieren,

  • Stellungen in Sammlungen organisieren,

  • Matches in Turnieren organisieren.

Der Benutzer kann Stellungen frei mit Tags versehen und sie mit Kommentaren annotieren.

Beschreibung der Benutzeroberfläche

Die Benutzeroberfläche von blunderDB besteht von oben nach unten aus:

  • [oben] der Werkzeugleiste, die alle wichtigen auf der Datenbank ausführbaren Operationen zusammenfasst,

  • [in der Mitte] dem Hauptanzeigebereich, der das Anzeigen oder Bearbeiten von Backgammon-Stellungen ermöglicht,

  • [unten] der Statusleiste, die verschiedene Informationen über die Datenbank oder die aktuelle Stellung anzeigt und die Befehlszeile integriert.

Es können Panels angezeigt werden, um:

  • die mit der aktuellen Stellung verknüpften Analysedaten aus eXtreme Gammon (XG), GNUbg oder BGBlitz anzuzeigen,

  • Kommentare anzuzeigen, hinzuzufügen oder zu bearbeiten,

  • Stellungen nach kombinierbaren Kriterien zu suchen und zu filtern,

  • Stellungssammlungen anzuzeigen und zu verwalten (Sammlungen-Panel),

  • die Liste der importierten Matches anzuzeigen und durch die Züge eines Matches zu navigieren (Matches-Panel),

  • Turniere anzuzeigen und zu verwalten (Turnier-Panel),

  • Leistungsstatistiken anzuzeigen (Stats-Panel),

  • den EPC (Effective Pip Count) einer Bearoff-Stellung zu berechnen (Eval-Panel),

  • an Rechenaufgaben üben (Trainings-Panel),

  • Stellungen durch verteiltes Wiederholen zu studieren (Anki-Panel),

  • ein Match von Hand transkribieren (Transkriptions-Panel),

  • die Metadaten der Datenbank anzuzeigen (Metadaten-Panel).

Die Höhe des Bereichs wird über seinen Griff eingestellt; sie bleibt von Reiter zu Reiter gleich.

Es können modale Fenster angezeigt werden, um:

  • die Hilfe von blunderDB anzeigen, deren Suchfeld (/ setzt den Cursor dorthin) die Vorkommen des eingegebenen Textes markiert, ohne Rücksicht auf Groß-/Kleinschreibung und Akzente (EINGABE springt zum nächsten, UMSCHALT-EINGABE zum vorherigen),

  • den Katalog der geführten Touren anzeigen (siehe Geführte Touren und Beispieldatenbank),

  • den Export der Datenbank zu konfigurieren,

  • blunderDB zu konfigurieren, insbesondere die Sprache der Benutzeroberfläche (siehe Konfiguration).

Der Hauptanzeigebereich stellt dem Benutzer Folgendes bereit:

  • ein Brett, um eine Backgammon-Stellung anzuzeigen oder zu bearbeiten,

  • den Wert und den Besitzer des Dopplers,

  • den Pip-Count jedes Spielers,

  • den Punktestand jedes Spielers,

  • die zu spielenden Würfel. Wenn auf den Würfeln keine Werte angezeigt werden, gibt die Position der Würfel an, welcher Spieler am Zug ist und dass die Stellung eine Doppler-Entscheidung ist. Wenn die Doppler-Entscheidung eine Antwort auf ein Doppel ist (Annehmen/Aufgeben), wird der angebotene Dopplerwürfel in der Mitte des Bretts mit dem angebotenen Wert angezeigt.

Ein Rechtsklick auf das Brett öffnet ein Kontextmenü mit: die angezeigte Stellung im Eval-Panel bewerten, ihr Spiegelbild bewerten, das Brettbild mit seiner Analyse in die Zwischenablage kopieren (das Äquivalent von STRG-X STRG-X, schwerer zu entdecken), das Bild in eine Datei speichern als SVG oder PNG, eine neue Ansicht auf diese Stellung öffnen und — wenn die Stellung schon aus der Datenbank kommt — sie einem Anki-Stapel hinzufügen (verteiltes Wiederholen) oder ihre benachbarten Stellungen ordnen (siehe Such-Panel). Während eines auf dem Brett gespielten Zugs (Quiz, Transkription) beginnt ein Rechtsklick auf das Brett den ganzen Zug von vorn, ohne die Stellung anzutasten; das Menü öffnet sich dort nur vor dem ersten Schritt. Im Bearbeitungsmodus und in Eval, wo ein Rechtsklick auf das Brett Steine setzt, öffnet sich das Menü durch einen Rechtsklick außerhalb des Bretts — außerhalb von Würfeln, Dopplerwürfel und Spielständen — und bietet nur Position löschen (wie RÜCKTASTE) und Startposition, die die Steine eines neuen Spiels setzt.

Die Zwischenablage ist die alltägliche Geste; Speichern ist das andere Bedürfnis — die Illustration für einen Artikel, einen Forumsbeitrag, eine Lektion. SVG wird angeboten, weil das Brett eines ist: es ist die Form, die eine Vergrößerung übersteht, die man ohne Unschärfe in ein Dokument setzt. PNG leitet sich daraus ab, ebenso wie die Kopie in die Zwischenablage: eine Darstellung, drei Ziele, also kann keines von den anderen abweichen. Dieses Menü erscheint nicht im Eval-Panel und nicht im Suchpanel, wo die rechte Taste schon die Steine der anderen Farbe setzt. Siehe Eine Stellung in das Eval-Panel bringen, um eine Stellung ins Eval-Panel zu bringen.

Die Statusleiste ist von links nach rechts mit den folgenden Informationen aufgebaut:

  • die Befehlszeile, erreichbar durch Drücken der Taste LEERTASTE,

  • eine Informationsmeldung zu einer vom Benutzer ausgeführten Operation,

  • den Index der aktuellen Stellung, gefolgt von der Zahl der Stellungen in der aktuellen Bibliothek (oder Zug-/Partieangaben beim Durchgehen eines Matches),

  • der Bibliothekszähler — „412 Positionen · 38 Blunders · 5 Matches“ — bei dem jede Zahl öffnet, was sie zählt: die Positionen, die Suche E> mit der Schwelle der Bibliothek (sofort gestartet, als wäre sie eingegeben worden, und im Suchverlauf abgelegt), oder die Liste der Matches. Ist die angezeigte Liste nicht die ganze Bibliothek (Suche, Sammlung, Match), lautet die Blunder-Zahl „12 / 340 Blunder“: die Blunder dieser Liste, dann die der Bibliothek, bei derselben Schwelle; eine Liste von mehr als 20 000 Positionen wird nicht gezählt und behält nur die Gesamtzahl. Eine Zahl, der man nicht folgen kann, ist eine Verzierung. Die Blunder-Schwelle ist die der Bibliothek, in der Registerkarte Bibliothek der Konfiguration eingestellt und mit den Statistiken geteilt: zwei Schwellenwerte würden dasselbe Wort zwei Dinge sagen lassen. Der Zähler verspricht genau das, was der Link öffnet, auch für eine Position, die auf mehrere Arten gespielt wurde und die ihre höchsten Kosten wert ist. Bei einer sehr großen Bibliothek (mehr als 200 000 Zeilen) durchsucht der Zähler die Tabellen nicht: eine Zahl mit vorangestelltem „≈“ ist eine Schätzung (eine obere Schranke, da gelöschte Zeilen Lücken hinterlassen). Sind die Positionen geschätzt, ist die Zahl der Blunders, für die es keine ehrliche Schätzung gibt, die letzte genaue Zählung, die gilt, solange kein Schreibvorgang sie ändern kann. Nach einem Import oder einer Änderung erscheint sie als „?“, während im Hintergrund neu gezählt wird, und kehrt dann von selbst zurück; eine schreibgeschützt geöffnete Bibliothek zählt nicht neu und zeigt „?“, bis die Instanz, die in sie schreibt, die Zählung wiederholt hat. Der Link startet die Suche, die die genaue Zahl liefert. Die beiden Blunder-Zahlen sind getrennte Links: die erste startet die Teilsuche ss E> in der angezeigten Liste, die zweite die Suche in der ganzen Bibliothek; wird nur die Gesamtzahl angezeigt, gibt es nur einen Link.

Bemerkung

Bei Stellungen, die aus einer Suche des Benutzers stammen, entspricht die in der Statusleiste angegebene Anzahl der Stellungen der Anzahl der gefilterten Stellungen.

Der Reiter Anki trägt ein Abzeichen, wenn Karten fällig sind, über alle Stapel hinweg. Diese Zahl ist der Grund, den Reiter zu öffnen; sie hat nichts dahinter verloren. Null zeigt nichts: Ein Abzeichen mit „0“ ist Rauschen.

Der Befehl log öffnet das Aktivitätsprotokoll: die letzten zweihundert Zeilen der Protokolldatei, eine Schaltfläche zum Kopieren — das Nötige, um einer Meldung einen Bericht beizulegen — und eine weitere, um den Ordner zu öffnen. Das Protokoll wird weder gefiltert noch umformatiert: Ein aufgeräumtes Protokoll lässt sich nicht mehr zitieren.

Der Befehl grid öffnet den Kontaktbogen: die durchsuchte Liste — Suchergebnisse, Bibliothek, Sammlung — als Raster aus Mini-Brettern, gezeichnet wie das Brett, in Seiten zu vierundzwanzig. Er öffnet sich auf der Seite der aktuellen Position, deren Vorschaubild umrandet ist; ein Klick oder EINGABE auf ein Vorschaubild öffnet dessen Position auf dem Brett und schließt den Bogen, und er lässt sich vollständig mit der Tastatur durchlaufen (siehe Kontaktbogen). Er öffnet sich weder im Bearbeitungsmodus noch in einem Match, das man über seine Züge durchläuft.

In der Suchhistorie des Suchpanels erscheint jedes Token eines gespeicherten Befehls als benannter Chip — Kein Kontakt, Zugfehler — statt als nacktes Token. Der genaue Befehl bleibt im Tooltip, denn er ist es, der erneut ausgeführt wird; und ein Token, das blunderDB nicht kennt, erscheint so wie es ist, statt zum Nächstliegenden übersetzt zu werden.

Ansichts-Reiter

Unter der Werkzeugleiste ermöglicht eine Reiterleiste, mit mehreren Ansichten parallel zu arbeiten. Jede Ansicht ist ein unabhängiger Arbeitsbereich, der seine eigene Positionsliste, den Index der aktuellen Position, die angezeigte Position, die Analyse und den ausgewählten Zug, das aktive Panel, den aktuellen Kommentar sowie den Navigationskontext in einem Match behält. So ist es zum Beispiel möglich, eine Suche in einer Ansicht offen zu halten, während man in einer anderen ein Match durchgeht.

  • Eine Ansicht erstellen: auf die Schaltfläche + der Reiterleiste klicken (solange es nur eine Ansicht gibt, heißt sie + Neue Ansicht) oder STRG-T drücken. Die neue Ansicht startet als Kopie der aktuellen Ansicht.

  • Eine Ansicht schließen: auf das Kreuz des Reiters klicken oder CTRL-W drücken. Die letzte Ansicht kann nicht geschlossen werden.

  • Ansicht wechseln: einen Reiter anklicken, STRG-Bild auf / STRG-Bild ab (oder UMSCHALT-J / UMSCHALT-K) drücken, um zur vorherigen / nächsten Ansicht zu gehen, oder STRG-1 bis STRG-9, um direkt die n-te Ansicht der aktiven Bibliothek aufzurufen.

  • Eine Ansicht umbenennen: auf den Reiter doppelklicken, den neuen Namen eingeben und mit EINGABE bestätigen.

Eine im Eval-Panel verlassene Ansicht kehrt so dorthin zurück, wie sie verlassen wurde: mit ihrem Entwurfsbrett und, beim Verlassen des Panels, mit der Stellung, die sie untersuchte. Auch das letzte Entwurfsbrett des Eval-Panels gehört jeder Ansicht für sich.

Die Ansichten werden mit dem Sitzungszustand der Datenbank gespeichert und beim erneuten Öffnen wiederhergestellt.

Mehrere geöffnete Bibliotheken

Mehrere Datenbanken können gleichzeitig geöffnet bleiben. Jede bildet eine Gruppe von Tabs: In der Leiste trägt eine farbige Kopfzeile den Dateinamen, gefolgt von den Ansichten dieser Bibliothek, deren oberer Rand dieselbe Farbe aufgreift. Es ist immer nur eine Bibliothek aktiv: Sie wird von den Bereichen, der Suche, den Importen und dem Assistenten gelesen und beschrieben.

Ist nur eine Bibliothek geöffnet, zeigt die Leiste keine Kopfzeile: Nur der Fenstertitel nennt die Datenbank.

  • Eine Bibliothek in einer neuen Gruppe öffnen: Schaltfläche ⧉ Weitere Bibliothek rechts der Reiterleiste (nur ⧉, sobald zwei Gruppen geöffnet sind), STRG-UMSCHALT-O oder der Befehl open_group (og). Die bis dahin aktive Bibliothek bleibt in ihrer Gruppe geöffnet. STRG-O ersetzt dagegen die Bibliothek der aktiven Gruppe; der Tooltip der Schaltfläche Öffnen der Werkzeugleiste nennt beide Tastenkombinationen.

  • Bibliothek wechseln: Ein Klick auf einen Reiter einer anderen Gruppe aktiviert deren Bibliothek und diese Ansicht in einem Zug; ein Klick auf die Kopfzeile der Gruppe bringt sie zu der Ansicht zurück, in der sie verlassen wurde. STRG-UMSCHALT-Bild auf / STRG-UMSCHALT-Bild ab wechseln zur vorherigen / nächsten Bibliothek; STRG-Bild auf / STRG-Bild ab (oder UMSCHALT-J / UMSCHALT-K) durchlaufen die Ansichten aller Gruppen nacheinander.

  • Eine Gruppe schließen: Das Kreuz ihrer Kopfzeile schließt die Bibliothek und ihre Ansichten. Wird die aktive Gruppe geschlossen, erscheint ihre Nachbargruppe; die Statusleiste nennt die geschlossene und die angezeigte Bibliothek.

Die Kopfzeile der aktiven Gruppe zeigt den Namen in Weiß auf ihrer Farbe; die der anderen Gruppen zeigen den Namen auf dem Hintergrund der Leiste, oben in ihrer Farbe unterstrichen. Sechs Farben folgen aufeinander: Eine siebte Gruppe übernimmt wieder die erste. Die Ansichten sind innerhalb ihrer Bibliothek nummeriert: Eine in einer neuen Gruppe geöffnete Datenbank beginnt bei „#1“, und STRG-1 … STRG-9 wählen die Ansichten der aktiven Gruppe. Passen die Reiter nicht mehr in die Fensterbreite, scrollt die Leiste (Mausrad oder der Ansichtswechsel, der den angezeigten Reiter in den sichtbaren Bereich bringt), statt sie zu verkleinern.

Der Wechsel erfolgt sofort: Jede Gruppe behält im Speicher ihre Ansichten, ihre Positionsliste, die aktuelle Position, die Suchkriterien (auch während der Eingabe, ohne dass die Suche gestartet wurde), die Matchliste, die Zähler und die Scrollposition jeder Liste des Panels und erhält sie zurück, ohne die Datenbank neu zu lesen. Eine in einer neuen Gruppe geöffnete Bibliothek beginnt mit einem leeren Suchformular: Die in einer Gruppe gewählten Matches und Turniere gelten nie in einer anderen. Auch die laufende Arbeit folgt: Ein Transkriptionsentwurf, eine Lektion, eine Anki-Wiederholung, die Lernwarteschlange und die geöffnete Direction werden so vorgefunden, wie sie verlassen wurden. Was sich während der Abwesenheit geändert haben kann, wird direkt nach der Anzeige neu gelesen: die Zähler immer, die Matchliste, wenn sich ihre Anzahl geändert hat oder wenn eine Hintergrundaufgabe während der Abwesenheit in die Bibliothek geschrieben hat. Die für jede Datenbank eigenen Listen (Sammlungen, Turniere, Anki-Decks, Entwürfe, Duelle, Suchverlauf, gespeicherte Filter) werden in der angezeigten Bibliothek neu gelesen.

Dieselbe Datei wird nicht in zwei Gruppen geöffnet: Wer sie erneut öffnet, bekommt die Gruppe angezeigt, die sie bereits hält.

Hintergrundaufgaben bleiben an ihre Bibliothek gebunden: Ein Import von Match-Dateien, der überwachte Ordner und die GammonNet-Stapelanalyse laufen in der Gruppe weiter, in der sie begonnen haben, wenn eine andere angezeigt wird, und schreiben nie in die angezeigte Bibliothek. Ihr Fortschritt und ihr Bericht bleiben in ihrer Gruppe: Solange sie nicht angezeigt wird, trägt ihre Kopfzeile eine Markierung, die blinkt, solange die Aufgabe arbeitet, und dauerhaft leuchtet, sobald sie beendet ist. Bei der Rückkehr zur Gruppe verschwindet die Markierung, die Statusleiste nennt, was die Aufgabe getan hat, und die Matchliste wird neu gelesen. Die automatische Analyse, die auf einen Import folgt, startet in der Bibliothek des Imports. Der überwachte Ordner gehört zu der Gruppe, in der er gestartet wurde: Match-Dateien werden dort im Hintergrund importiert, während eine zusammenzuführende Datenbank oder ein Stellungstext wartet, bis diese Gruppe wieder angezeigt wird. Das Schließen einer Gruppe beendet ihre Aufgaben und ihre Überwachung.

Von einer Bibliothek in eine andere kopieren. Eine Zeile, die auf die Kopfzeile einer anderen Gruppe gezogen wird, wird dorthin kopiert, in beide Richtungen: ein Match aus der Matchliste, eine Sammlung aus der Sammlungsliste, eine Position aus einer geöffneten Sammlung, die angezeigte Position (man greift sie an ihrem Zähler „n / N“ in der Statusleiste) oder die gerade gelesene Lektion (an ihrem Namen in der Lektionsleiste). Die Ziel-Kopfzeile erhält einen gepunkteten Rahmen. Die Kopie ist die des Befehls transfer: die Auswahl eines Exports, zusammengeführt durch den nativen Import, mit Analysen, Kommentaren und gespielten Zügen; eine Sammlung nimmt ihre Positionen mit, ein Match seine Transkription. Was die Zielbibliothek bereits enthält, wird nicht erneut kopiert: von A nach B und dann von B nach A zu kopieren erzeugt kein Duplikat, und nichts dort verrät, woher die Kopie stammt. Die Kopie läuft im Hintergrund, an die Zielgruppe gebunden: ihre Kopfzeile trägt die Plakette, und bei der Rückkehr sagt die Statusleiste, wie viele Positionen und Matches neu sind und wie viele schon vorhanden waren.

Der Korb sammelt Zeilen aus mehreren Bibliotheken, um sie in einem Zug auszuleeren. UMSCHALT-B legt die angezeigte Position hinein oder nimmt sie heraus, wie b für den Stapel; eine auf den Korb gezogene Zeile kommt ebenfalls hinein. Der Korb rechts in der Registerleiste zeigt seine Anzahl; ein Klick öffnet sein Menü (In … ausleeren für jede Gruppe, Korb leeren), und ihn auf die Kopfzeile einer Gruppe zu ziehen leert ihn dort aus. Er lebt im Speicher, nie in einer Datenbank: das Schließen einer Gruppe entfernt ihre Zeilen, und er verschwindet beim Beenden von blunderDB. Eine Position, die noch ein Entwurf ist, muss zuerst gespeichert werden.

Das Vorhängeschloss einer Kopfzeile sperrt ihre Gruppe: nichts wird mehr hineinkopiert, weder durch Ziehen noch aus dem Korb, und die Statusleiste sagt es. Die Sperre betrifft weder Importe noch die in der Gruppe vorgenommenen Änderungen; ein zweiter Klick hebt sie auf.

Der Gruppenwechsel bleibt verweigert, per Klick wie per Tastatur, mit einer Meldung in der Statusleiste, die die Ursache nennt und sagt, wo man sie beendet, wenn das, was läuft, dem Bildschirm folgt: ein Rollout, dessen Ergebnis auf der Stellung des Bretts angezeigt wird (rollout stop); die Anzeige eines Turniers, die die angezeigte Bibliothek im Netzwerk des Clubs bereitstellt (man beendet sie in der Direction); ein laufendes Duell, das das Brett und seine Ansichten belegt; eine Trainingssitzung, deren Stoppuhr und Protokoll keiner Gruppe folgen; schließlich, solange er dauert, der Import von Dateien, die nur die Oberfläche lesen kann (Stellungstexte, einzeln importiert), oder die Zusammenführung einer Datenbank. Beim Schließen von blunderDB wird nur die Sitzung der aktiven Bibliothek gespeichert, nicht die Liste der Gruppen: Beim nächsten Start öffnet blunderDB die zuletzt aktive Datenbank wieder.

Was die anderen Bibliotheken wissen: der Reiter Anderswo

Der Reiter Anderswo (STRG-UMSCHALT-A) zeigt für die angezeigte Stellung, was die anderen in Gruppen geöffneten Bibliotheken darüber wissen. Die Stellung wird dort anhand ihrer Brettidentität (ihres Hashs) gefunden, nicht anhand ihrer Nummer: Dieselbe Nummer bezeichnet in zwei Datenbanken zwei verschiedene Stellungen. Jede Bibliothek hat ihren eigenen Block, der in der Farbe ihrer Gruppe umrandet ist:

  • ihre Analyse: der beste Zug oder die beste Würfelaktion und die Engine, die ihn gefunden hat. Eine Analyse, die mit einer anderen Match-Equity-Tabelle als der der aktiven Bibliothek bewertet wurde, trägt den Vermerk andere MET;

  • ihre Kommentare, jeweils mit ihrem Autor oder ihrem Unterzeichner und dem Zustand der Signatur wie im Kommentarbereich;

  • die Matches, in denen die Stellung gespielt wurde: Spieler, Turnier, Datum, Zugnummer, gespielter Zug oder gespielte Entscheidung und deren Kosten. Das Urteil (gut, Fehler, Patzer) wird mit den Schwellenwerten der aktiven Bibliothek gefällt, nicht mit denen der anderen; Kosten, die mit einer anderen MET berechnet wurden, werden nicht verglichen und bleiben mit andere MET gekennzeichnet. Ab 50 Matches werden die 50 zuletzt importierten aufgelistet und die Gesamtzahl angegeben;

  • ihre benachbarten Stellungen, die fünf nächstgelegenen, als Miniaturen mit ihrem Abstand.

Eine Bibliothek, die die Stellung nicht enthält, sagt dies und zeigt trotzdem ihre Nachbarn. Dort öffnen, ein Klick auf ein Match oder eine Miniatur, aktiviert die Gruppe dieser Bibliothek und zeigt dort die Stellung an. Es wird nichts in eine Datenbank geschrieben. Die Schaltfläche ⟳ liest die anderen Bibliotheken neu ein.

Der Tausch an Ort und Stelle. Die Taste x zeigt anstelle des Bretts, am selben Ort und in derselben Größe, die Stellung der anderen Bibliothek, unter einem Banner in ihrer Farbe, das an ihren Namen, ihren besten Zug und die Zahl ihrer Kommentare erinnert. Gedrückt gehalten, bringt die Taste beim Loslassen das Brett zurück; kurz gedrückt, bleibt der Tausch bis zum nächsten Druck angezeigt. Auch ein Wechsel der Stellung oder des Fensters bringt das Brett zurück. Die aktive Gruppe, die Ansicht und die Liste ändern sich nicht. Die gezeigte Stellung ist standardmäßig dieselbe Stellung in der ersten anderen Bibliothek, die sie enthält; die Schaltfläche Anheften unter einer Miniatur des Reiters Anderswo wählt stattdessen diesen Nachbarn, bis zu Lösen oder einem Gruppenwechsel.

Der geteilte Bildschirm. Auf einem großen Bildschirm teilt die Schaltfläche ◫ der Registerleiste (STRG-UMSCHALT-X) das Fenster in zwei gleich breite Bereiche. Der eine trägt die aktive Gruppe, vollständig; der andere einen schreibgeschützten Betrachter einer anderen geöffneten Bibliothek (derselben, wenn nur eine geöffnet ist): ihr Brett, die Analyse der Stellung und ihren Kommentar. Der Betrachter durchläuft die ganze Bibliothek, ein Match Zug für Zug (Spiel, Zug und das Gespielte stehen über dem Brett) oder eine Sammlung, nach Wahl in seiner Auswahlliste, mit seinen Schaltflächen ⏮ ◀ ▶ ⏭. Er öffnet sich dort, wo diese Bibliothek verlassen wurde. Nichts von dem, was er zeigt, wird irgendwo geschrieben. Ein Klick auf den Betrachter, außerhalb seiner Schaltflächen, aktiviert seine Bibliothek: Die beiden Bereiche tauschen ihre Rollen und jede Bibliothek behält ihre Seite; STRG-UMSCHALT-BILD AUF / BILD AB tut dasselbe per Tastatur. Unter 1280 Pixel Breite wird der geteilte Bildschirm abgelehnt und stattdessen der Tausch an Ort und Stelle (x) angeboten; er schließt sich, wenn das Fenster zu schmal wird.

Konfiguration

Die Konfigurationsschaltfläche (Zahnradsymbol) in der Werkzeugleiste, links neben der Hilfeschaltfläche, öffnet das Konfigurationsfenster von blunderDB. Es ist in zehn Registerkarten gegliedert:

  • Oberfläche — Design, Sprache, Anzeigeskalierung, Position des Panels, Schrittweite von PageUp / PageDown (10, 50, 100, 500 oder 1 000 Positionen oder 10 % der Liste), Protokolle, Update-Prüfung, Ihr Name und benachbarte Stellungen;

  • Brettfarben — die Farben des Bretts;

  • Bibliothek — was zur geöffneten Datenbank gehört: die Fehler- und die Blunder-Schwelle, weiter unten beschrieben;

  • Wartung — der Gesundheitszustand der Datenbank, eine Zeile pro Vorgang, weiter unten beschrieben;

  • Korpus — die Duplikate beim Import, die Aliasse von Spielern und Veranstaltungen und die Suche nach wahrscheinlichen Duplikaten (siehe Import von Matches);

  • Bearoff — die vom Eval-Panel verwendeten Bearoff-Tabellen;

  • gammonNet — die Einstellungen des eingebetteten Evaluators, unten beschrieben;

  • Überwachter Ordner — der automatische Import von Matches, die in einem Ordner eintreffen, unten beschrieben;

  • Assistent und MCP — der lokale MCP-Server und der interne Assistent, unten beschrieben;

  • Ausstelleridentität — der Schlüssel, mit dem Ihre Wasserzeichen signiert werden; beschrieben im Abschnitt Eine Datenbank weitergeben: Herkunft und Passwort.

Der Reiter Oberfläche beginnt mit einem Thema: dem System folgen, hell, dunkel, hoher Kontrast oder druckbar. Das Thema legt die Farben der Oberfläche fest und schlägt eine Brettpalette vor — eine dunkle Oberfläche um ein helles Brett ist kein dunkles Thema, sondern ein halbes, denn das Brett nimmt den Großteil des Fensters ein.

Sie behalten das letzte Wort, und der Mechanismus garantiert es, statt es zu versprechen: der Reiter Farben stellt das Brett weiterhin direkt ein, und eine nach dem Thema gewählte Farbe ist Ihre. Beim Start werden nur die Oberflächen-Token angewendet, nie die Brettpalette — die von Ihnen eingestellte ist bereits geladen, und sie bei jedem Start zu überschreiben würde Ihre Arbeit Sitzung für Sitzung löschen. Siehe ADR-0038.

Dem System folgen ist die Voreinstellung: es folgt der Hell/Dunkel-Vorgabe des Desktops, auch wenn sie sich mitten in der Sitzung ändert. Ein Werkzeug drängt einem Desktop, der schon entschieden hat, nicht sein Hell oder sein Dunkel auf.

Der Reiter Oberfläche erlaubt außerdem die Sprachwahl unter Englisch, Französisch, Deutsch, Italienisch, Spanisch, Finnisch, Japanisch, Griechisch und Russisch. Die gesamte Oberfläche (Symbolleiste, Panels, Meldungen, Hilfe) wird in die gewählte Sprache übersetzt. Die Sprachwahl wird gespeichert und von Sitzung zu Sitzung beibehalten.

Die Registerkarte Bibliothek vereint das, was zur geöffneten Datei gehört und nicht zum Rechner. Sie ist leer, solange keine Datenbank geöffnet ist, und sie sagt es.

Sie trägt zunächst die beiden Schwellenwerte, die über das Vokabular der gesamten Anwendung entscheiden: Eine Entscheidung ist ein Fehler, sobald ihre Kosten die Fehlerschwelle erreichen, und dieser Fehler ist ein Blunder, sobald sie die Blunder-Schwelle erreichen. Jeder Blunder ist ein Fehler, deshalb kann die erste Schwelle die zweite nicht überschreiten, und blunderDB lehnt das umgekehrte Paar ab. Die Werte werden in Equity eingegeben — „0,080“ — der Einheit aller Tabellen; die Befehlszeile hingegen spricht in Millipunkten, sodass die Schwelle 0,080 in einer Suche E>80 geschrieben wird.

Diese Schwellenwerte folgen der Datei, nicht dem Computer: Dieselbe Datenbank zählt überall, wo sie geöffnet wird, dieselben Blunders, blunderdb info zeigt sie an, und blunderdb edit --error-threshold / --blunder-threshold stellt sie ein. Sie reisen nicht in einem Export mit: Eine Schwelle ist eine Lesegewohnheit, keine Tatsache der Positionen.

Drei Voreinstellungen werden mit einem Klick angeboten, jede unter dem Namen des Programms, das diese Linie gezogen hat: blunderDB (0,050 / 0,100), XG (0,020 / 0,080) und gnubg (0,040 / 0,080). Standardmäßig liest eine Bibliothek 0,050 und 0,100.

Was sie auf dem Bildschirm ändern: die Anzahl der Blunders im Zähler der Statusleiste und die Suche, die dessen Link vorbereitet, die Spalten „Fehler“ und „Blunders“ der Statistiken und der Spielertabelle, die Markierungen der Züge in der Detailansicht eines Matches (Matches-Panel) sowie die Liste der Positionen, die blunderDB nach einem Import zur Durchsicht vorschlägt.

Die Zeile Rückgewinnbarer Speicher der Registerkarte Wartung enthält die Schaltfläche Komprimieren, die den durch Löschungen (Matches, Turniere, Bereinigungen) freigewordenen Speicherplatz zurückgewinnt: Die Datenbank schrumpft beim Löschen von Daten nie von selbst, dieses Komprimieren muss ausdrücklich angefordert werden. Bei einer großen Datenbank kann der Vorgang einige Zeit dauern. Die komprimierte Kopie wird neben der Datei geschrieben und ersetzt sie dann: Vorübergehend wird auf deren Laufwerk etwa die Größe der Datenbank an freiem Speicherplatz benötigt, nicht an Arbeitsspeicher. Hat ein anderes Programm die Datenbank geöffnet (etwa eine zweite schreibgeschützte Instanz), wird die Datei nicht ersetzt: Die Datenbank wird an Ort und Stelle komprimiert, was etwa das Doppelte ihrer Größe an freiem Speicherplatz erfordert, und eine temporäre Datei landet im temporären Ordner des Systems oder in dem, den die Umgebungsvariable SQLITE_TMPDIR angibt: Bei einem kleinen /tmp zeigen Sie sie auf das Laufwerk der Datenbank. blunderDB startet den Vorgang nicht und nennt in einer Meldung, was fehlt (Speicherplatz oder weniger als 512 MB verfügbarer Arbeitsspeicher), statt ein unterbrochenes Komprimieren zu riskieren. Vor dem Start des Vorgangs wird eine Bestätigung verlangt. Das Ergebnis — der gewonnene Speicherplatz in Megabyte — erscheint anschließend in der Statusleiste. Derselbe Vorgang steht auf der Kommandozeile über blunderdb vacuum zur Verfügung (siehe Befehlszeilenschnittstelle (CLI)).

Nach einer Komprimierung an Ort und Stelle prüft blunderDB, ob die Datei tatsächlich kleiner geworden ist. Unter Windows verweigert das System das Verkürzen einer Datei, die ein anderes Programm auf bestimmte Weise geöffnet hält: Die Komprimierung endet dann mit einer Meldung, die das sagt — schließen Sie das andere Programm und starten Sie sie erneut —, statt einen Gewinn zu melden, den es nicht gab.

Die Schaltfläche Protokollordner öffnen im Reiter Oberfläche öffnet den Ordner mit dem Anwendungsprotokoll — nützlich, um einer Fehlermeldung Details beizulegen, besonders wenn blunderDB über eine Verknüpfung oder einen Doppelklick gestartet wurde, ohne angehängtes Terminal, das irgendetwas anzeigen könnte.

Das Kontrollkästchen Beim Start nach Updates suchen im selben Reiter, standardmäßig aus, fragt bei jedem Start einmal die Releases-Seite des GitHub-Repositorys ab und zeigt in der Statusleiste eine Meldung, wenn eine neuere Version verfügbar ist — nie ein Fenster, das die Arbeit blockiert. Bei einer Installation über einen Paketmanager (Flatpak, Homebrew, ein Distributionspaket …) bleibt diese Prüfung automatisch deaktiviert: dann kümmert sich dieser Kanal um die Updates, nicht blunderDB selbst.

Zwei Einstellungen des Reiters Oberfläche steuern die Ordnung der benachbarten Stellungen (Token like, siehe Such-Panel): die Anzahl der gelieferten Nachbarn und die maximale Entfernung, jenseits derer eine Stellung keine mehr ist. Diese Entfernung ist standardmäßig null, also keine Obergrenze: Der Maßstab hängt von der Spielphase ab, und ein hier gewählter Wert läse sich als Messung. Das Token like<12 setzt für eine Suche seine eigene, ohne die Einstellung anzurühren.

Auf der Registerkarte Brettfarben lassen sich die Farben des Bretts anpassen. Jedes Element besitzt einen eigenen Farbwähler: der Hintergrund, der Rahmen, die hellen und dunklen Zungen, die Steine von Spieler 1 und Spieler 2, die Würfel, die Würfelaugen und der Dopplerwürfel. Die Schaltfläche Zurücksetzen stellt alle Standardfarben wieder her. Wie die Sprache bleiben auch die gewählten Farben von einer Sitzung zur nächsten erhalten.

Der Reiter Bearoff verwaltet die Ausspieltabellen des Eval-Panels (siehe Eval-Panel). Sie sind weder in die ausführbare Datei eingebettet noch heruntergeladen: blunderDB berechnet sie auf der Maschine, die sie braucht, und das Ergebnis ist Byte für Byte dasselbe, das gnubg erzeugt — der SHA-256-Fingerabdruck wird geprüft, bevor eine Tabelle angenommen wird.

Die beiden gewöhnlichen Tabellen (TS-06-06 für das Verdopplungsurteil, OS-06 für den EPC) werden beim ersten Start im Hintergrund und ohne Nachfrage berechnet: etwa sechs Sekunden auf einem Kern, während derer die Anwendung normal benutzt wird. Das Eval-Panel erwähnt es nur, wenn dort eine Stellung gelegt wird, die eine noch nicht fertige Tabelle braucht.

Der Reiter zeigt den aktiven Bereich und seine Herkunft, den Zustand der einseitigen Tabelle, die der EPC liest, den Ordner, in dem das alles liegt, und die Liste der vorhandenen Tabellen mit ihrer Größe und ihrem Urteil. Jede Zeile lässt sich einzeln löschen, nach Bestätigung.

Geprüft oder ungeprüft. Eine geprüfte Tabelle hat genau die Bytes, die gnubg für ihren Bereich erzeugt: ihr SHA-256-Fingerabdruck steht in blunderDB und wurde wiedergefunden. Die für die einseitigen Tabellen (OS-06 bis OS-10) hinterlegten Fingerabdrücke sind die, die das Werkzeug makebearoff von GNUbg 1.08 erzeugt. Eine ungeprüfte Tabelle ist wohlgeformt, aber für ihren Bereich ist kein Fingerabdruck hinterlegt — ihr wird nichts vorgeworfen, es hat sie nur niemand mit der Referenz verglichen. Eine beschädigte Tabelle widerspricht sich selbst und wird nie gelesen; sie wird neu berechnet.

Eine breitere Tabelle berechnen. Der Bereich wird aus einer Liste zweier Familien gewählt, zusammen mit der Zahl der Kerne (standardmäßig alle bis auf einen, damit die Maschine benutzbar bleibt):

  • exaktes Doppler-Urteil (zweiseitig), von TS-06-06 bis TS-06-15: erweitert den Bereich, in dem Gewinnwahrscheinlichkeit und Doppler-Urteil gelesen statt geschätzt werden;

  • EPC außerhalb des Heimfelds (einseitig), von OS-06 bis OS-10: erweitert, wie weit von zu Hause ein Stein stehen darf, ohne dass der EPC-Block verstummt. Dieser Durchlauf liest nur Stellungen, die kleiner sind als die berechnete, ist also von Natur aus sequentiell, und die Kernzahl bringt ihm nichts — der Auswähler sagt es, indem er ausgraut.

Bevor irgendetwas beginnt, nennt der Reiter drei Zahlen für den gewählten Bereich: die Größe auf der Platte, den Speicher während der Berechnung und die Dauer auf dieser Maschine. Letztere beginnt als Schätzung und wird zur Messung: jeder ausreichend breite Lauf erfasst seine eigene Geschwindigkeit und behält sie. Ein Bereich, den der verfügbare Speicher nicht zulässt, wird ausgegraut angeboten, mit der Begründung — „nötig wären 24 GB, verfügbar sind 12“ ist eine Antwort, eine fehlende Zeile wäre keine.

Als Größenordnung, auf einer Maschine mit sechzehn Threads: TS-06-09 wiegt 191 MB und dauert etwa zehn Sekunden, TS-06-11 wiegt 1,2 GB und einige Minuten, TS-06-13 übersteigt, was die meisten Maschinen im Speicher halten können. Auf der einseitigen Seite, auf einem Kern: OS-07 wiegt 4,9 MB und dauert 17 s, OS-08 15 MB und 1 min 20, OS-10 117 MB und eine halbe Stunde.

Pause und Fortsetzung. Während der Berechnung zeigt der Fortschritt die gemessene Restzeit und zwei getrennte Schaltflächen: Pause und Abbrechen. Die Pause schreibt den Zustand der Berechnung neben die Tabelle; ein erneuter Start setzt dort fort, statt von vorn zu beginnen. Abbrechen behält nichts. Das Schließen des Konfigurationsfensters unterbricht nichts — die Berechnung läuft im Hintergrund weiter.

Eine pausierte Berechnung findet sich beim nächsten Start wieder, benannt und beziffert („TS-06-09 bei 43 % unterbrochen“), mit Fortsetzen und Löschen. Nichts startet von selbst neu: der Benutzer hat um den Halt gebeten.

Der Reiter erlaubt schließlich, auf eine externe zweiseitige .bd-Datei zu zeigen, etwa eine von gnubg selbst erzeugte Datenbank: die Tabelle mit dem breitesten Bereich gewinnt.

Der Reiter Wartung zeigt den Zustand der Datenbank: eine Zeile pro Vorgang, mit ihrer Anzahl, ihrer letzten Ausführung (Datum und Ergebnis: abgeschlossen, abgebrochen oder fehlgeschlagen) und ihrer Aktion. Nur die Berechnung der Matches ohne Statistiken startet von selbst, beim Öffnen.

  • Positionen ohne Analyse — die Positionen, die keine Analyse tragen; die Aktion ist die weiter unten beschriebene gammonNet-Analyse. Positionen, die gammonNet nicht bewerten will (ein Tanz, ein Stand außerhalb der Match-Tabelle), bleiben in dieser Anzahl, die daher nicht unbedingt null erreicht.

  • Veraltete gammonNet-Analysen — weiter unten beschrieben.

  • Matches ohne Statistiken — die Matches, deren Statistiken noch nicht berechnet sind; die Aktion berechnet sie alle. Eine zum Schreiben geöffnete Datenbank, die solche enthält, berechnet sie von selbst im Hintergrund, in Stapeln: die Statusleiste zeigt den Fortschritt dieser Zeile und ihre Abbrechen-Schaltfläche, die Turnier-Plaketten und der Reiter Spieler des Statistik-Panels warten auf das Ende der Berechnung, und der Rest der Anwendung bleibt benutzbar. Das Öffnen einer anderen Datenbank beendet sie. Schreibgeschützt oder auf der Kommandozeile berechnet das erste Lesen der Statistiken sie, was bei einer großen Datenbank lange dauern kann: das Statistik-Panel zeigt dann diese Anzahl, die diesen Reiter öffnet.

  • Analysespalten — die Spalten, die Suche und Statistik abfragen, sind eine Projektion der gespeicherten Analysen, die unangetastet bleiben: Die Aktion berechnet sie neu, ohne etwas erneut zu importieren.

  • Fehler der gespielten Züge — bewertet die gespielten Züge, die noch keinen Fehler haben.

  • Analysen im alten Format — schreibt die Analysen, die eine frühere Version als JSON gespeichert hat, im Binärformat neu.

  • Papierkorb — die Anzahl der Einträge im Papierkorb; ein Klick öffnet ihn.

  • Rückgewinnbarer Speicher — der freie Platz in der Datei, den das oben beschriebene Komprimieren dem Datenträger zurückgibt.

Eine aufwendige Zählung (sie liest eine ganze Tabelle) wartet auf die Schaltfläche Zählen. Eine Positionszahl öffnet diese Positionen in der Liste; die der Matches ohne Statistik öffnet diese Matches im Match-Panel. Ein Vorgang läuft im Hintergrund: Sein Fortschritt und eine Abbrechen-Schaltfläche erscheinen in der Statusleiste, und es läuft immer nur ein Vorgang, der in die Datenbank schreibt — eine laufende gammonNet-Analyse, ein Rollout oder ein anderer Wartungsvorgang lässt den nächsten ablehnen, mit dem Namen desjenigen, der die Datenbank belegt. Bei einer schreibgeschützt geöffneten Datenbank sind die Aktionen deaktiviert. Dieselben Vorgänge gibt es auf der Kommandozeile (blunderdb maintenance).

Der Reiter gammonNet stellt den eingebetteten Evaluator ein (siehe ADR-0011). Zwei Suchtiefen sind dort einstellbar, getrennt benannt und getrennt gespeichert — die eine abzusenken ändert nie die andere:

  • Anzeigetiefe — der interaktive Komfort während der Bearbeitung des Bretts; wird nie in die Datenbank geschrieben.

  • Analysetiefe — das, was der Analyselauf nach dem Import in die Analyse einer Stellung schreibt.

Beide stehen standardmäßig auf 2-Ply, der kanonischen Konfiguration. Das Menü kennzeichnet die Tiefen 3-Ply und 4-Ply mit einem ⚠, deren Kosten pro Stellung die von 2-Ply bei Weitem übersteigen. Der Reiter bietet außerdem die Beschneidung (standardmäßig k=12) und die Anzahl der angezeigten Kandidatenzüge (standardmäßig 10) sowie ein Kontrollkästchen nach dem Import automatisch analysieren, das, einmal aktiviert, nach jedem Import prüft, ob Stellungen ohne jede Analyse übrig sind (weder gammonNet noch XG, GNUbg oder BGBlitz — die Regel lautet „eine Bewertung füllt nur eine Lücke“, nie ein Ersatz), und gegebenenfalls im Hintergrund eine gammonNet-Analyse in der konfigurierten Analysetiefe startet. Die Zeile Positionen ohne Analyse der Registerkarte Wartung startet dasselbe Nachholen manuell erneut, nützlich für eine Bibliothek, die vor dieser Funktion aufgebaut wurde.

Ein Take oder ein Pass wird von gammonNet anhand der Entscheidung des Doppelnden bewertet, vor dem Doppeln. Ein gammonNet-Urteil, das eine frühere Version von blunderDB auf eine solche Antwort geschrieben hat, beurteilte das Redoppeln des Empfängers: Es wird beim Öffnen der Bibliothek oder beim Import einer Datenbank, die es enthält, gelöscht. Der Take oder Pass wird wieder zu einer Stellung ohne Analyse, die in den Statistiken fehlt, bis die Zeile Positionen ohne Analyse der Registerkarte Wartung (oder die automatische Analyse nach dem Import) sie erneut bewertet.

Die Zeile Veraltete gammonNet-Analysen der Registerkarte Wartung deckt den umgekehrten Fall ab: Eine Stellung, die bereits von gammonNet analysiert wurde, deren gespeicherte Analyse aber von einer älteren Engine-Version als der laufenden oder in einer anderen als der oben konfigurierten Analysetiefe geschrieben wurde, wird dort als veraltet gemeldet und neu bewertet. Eine Stellung, die zusätzlich eine XG-, GNUbg- oder BGBlitz-Analyse trägt, wird von diesem Durchlauf nie angetastet, gleich welchen gammonNet-Inhalt sie hat — der Schutz von ADR-0013 bleibt bedingungslos. Die Zahl der veralteten Stellungen liest jede gammonNet-Analyse der Datenbank: Sie wartet auf die Schaltfläche Zählen. Der Durchlauf berechnet seine eigene Liste beim Start neu.

Beide Stapel sind begrenzt, sichtbar und abbrechbar, nie ein stiller Daemon: Ihre Tiefe, ihr Fortschritt (analysierte Stellungen / gesamt, ab 0 beim Start) und eine Abbrechen-Schaltfläche erscheinen während ihrer gesamten Dauer in der Statusleiste und verschwinden nach Abschluss zugunsten einer Meldung, die das Ergebnis zusammenfasst — wie viele Stellungen analysiert, wie viele abgelehnt (eine Stellung, die gammonNet zu bewerten ablehnt, etwa ein Spielstand außerhalb der Reichweite seiner Tabelle, was nie ein Fehler ist) und wie viele fehlgeschlagen sind (beim nächsten Lauf unverändert erneut versucht). Das Schließen der Anwendung während des einen oder anderen verliert nichts: Jede analysierte Stellung wird laufend geschrieben, und der nächste Lauf setzt genau dort fort, wo die Analyse stehen geblieben war, ohne dass ein Journal zu führen wäre. Das Abbrechen wie das Schließen unterbricht auch die gerade berechnete Stellung, die ohne Analyse bleibt.

Nur ein Auftrag schreibt gleichzeitig in die Bibliothek: ein gammonNet-Lauf, ein gespeicherter Rollout oder ein Wartungsvorgang. Ein Lauf oder Vorgang, der aus der Registerkarte Wartung gestartet wird, wird abgelehnt, solange ein anderer Auftrag läuft, und die Statusleiste nennt diesen Auftrag; der Lauf, den ein Import, eine Transkription oder ein Duell startet, wartet dagegen auf dessen Ende, und die Statusleiste zeigt ihn als „wartend“ an, bis er beginnt.

Dieselbe Registerkarte enthält die Einstellung der Rollouts, die vom Panel Analyse aus gestartet werden (siehe Rollouts) und von einer Sitzung zur nächsten erhalten bleibt: Schnell (216 Partien, bei 7 Halbzügen abgebrochen), Standard (1296 Partien, bei 11 Halbzügen abgebrochen) oder Frei, wo sich alle Parameter bearbeiten lassen — Abbruchtiefe, minimale und maximale Partienzahl (Vielfache von 36), JSD-Grenze, Tiefe (Ply), Zahl der Kandidaten, Startwert und Zahl der Prozesse.

Match-Equity-Tabelle der Datenbank. Am unteren Rand des Tabs wählt die Liste Match-Equity-Tabelle (MET) der Datenbank die Tabelle, mit der gammonNet Matchstände bewertet: Kazaross-XG2, eingebaut und Standard, oder eine aus einer GNUbg-.xml-Datei importierte Tabelle über die Schaltfläche MET aus .xml importieren…. Die Wahl gehört zur Datenbank, nicht zur Anwendung: Wer eine andere Datenbank öffnet, findet deren Tabelle wieder. Gelesen werden nur explizite Tabellen (nicht die parametrischen Tabellen zadeh oder mec); jenseits der Länge einer importierten Tabelle übernimmt die eingebaute Tabelle. Eine Tabelle wird an ihren Werten erkannt, nicht an ihrem Namen: Der Import der Kazaross-XG2.xml von GNUbg fügt nichts hinzu, es ist die eingebaute Tabelle. Jede von gammonNet berechnete Analyse speichert die Tabelle, mit der sie berechnet wurde; importierte Analysen (XG, GNUbg, BGBlitz) gelten als mit Kazaross-XG2 berechnet. Eine Analyse bei einem Matchstand, die mit einer anderen als der aktuellen Tabelle berechnet wurde, wird im Analysefenster als Andere MET markiert und aus den Statistiken ausgenommen (Fehlerdurchschnitte, PR, Ranglisten, Direktvergleiche); eine Money-Game-Analyse nie. Ein Tabellenwechsel schreibt keine Analyse um: Es ändert sich nur, was die Vergleiche berücksichtigen.

Die Live-Bewertung des Panels und die Doppel-Matrix werden mit der Tabelle der Datenbank bewertet, wie die Analysen, die sie speichert. Eine Tabelle reist mit den Analysen, die sich auf sie beziehen: Der Export einer Datenbank nimmt sie mit, und der Import einer Datenbank fügt sie der empfangenden Datenbank hinzu, ohne Duplikat (eine bereits vorhandene Tabelle wird an ihren Werten erkannt) und ohne sie zur aktuellen zu machen. Eine gammonNet-Analyse, die durch die einer anderen Engine (XG, GNUbg) ersetzt wird, gilt wieder als mit Kazaross-XG2 berechnet.

Ein ohne Analyse importiertes Match erhält damit ein Performance Rating. Das betrifft ein online gespieltes Match oder eine Jellyfish-.mat-Datei, die niemand durch XG geschickt hat: blunderDB kannte die Stellungen und die gespielten Züge, aber keine Analyse sagte, was sie wert waren. Nach dem Lauf wird der tatsächlich gespielte Zug mit gammonNets Rangfolge verglichen, und die Differenz fließt in das PR, die Fehlerquote, die schlimmsten Entscheidungen und alle übrigen Kennzahlen ein, genau wie bei einem von XG analysierten Match. Der Vergleich erfindet nichts: der gespielte Zug stammt aus der Zugtabelle des Matches, beim Import geschrieben, ob die Datei nun eine Analyse trug oder nicht.

Eine mit einer älteren Version analysierte Datenbank muss nicht neu bewertet werden: blunderdb repair berechnet die Spalten aus den bereits gespeicherten Analysen und Zügen neu und gibt diesen Matches ihr PR zurück (siehe repair).

Ein ehrlicher Vorbehalt: eine Stellung wird durch ihre Struktur identifiziert, also trägt eine zweimal angetroffene Stellung — einmal gut, einmal schlecht gespielt — nur eine Differenz, die ihres ersten aufgezeichneten Vorkommens. Das ist nicht dieser Berechnung eigen: eine XG-Bibliothek hat genau dieselbe Form.

Überwachter Ordner

Der Reiter Überwachter Ordner weist blunderDB an, während des Betriebs einen Ordner zu beobachten und jede Matchdatei zu importieren, die darin erscheint. Eine Sitzung in eXtreme Gammon spielen, zu blunderDB zurückkehren, und die Matches sind schon da.

Nichts wird geraten. Solange kein Ordner benannt ist, gibt es keine Überwachung: blunderDB beginnt nicht, ein Verzeichnis zu lesen, weil es vermutet hat, wo Ihre Matches liegen. Die Schaltfläche Vorschlagen sieht an den üblichen Stellen dieses Rechners nach und schlägt eine nur vor, wenn sie wirklich existiert; sonst sagt sie es, und den Ordner zu benennen ist Ihre Sache.

Drei Dinge sollte man wissen, bevor man das Kästchen aktiviert:

  • Nur erscheinende Dateien werden importiert. Was der Ordner beim Start der Überwachung bereits enthält, wird als bekannt vermerkt und in Ruhe gelassen: eine Überwachung auf vier Jahre Matches zu richten darf nicht alle importieren. Um das Vorhandene zu importieren, gibt es den Ordnerimport — und beide ergänzen sich bestens, erst der Import, dann die Überwachung.

  • Eine Datei wird erst importiert, wenn ihre Größe sich gesetzt hat. Ein Match, das ein anderes Programm gerade schreibt, wächst von einem Blick zum nächsten; es halb geschrieben zu importieren ergäbe einen Parserfehler, mit dem niemand etwas anfangen kann. blunderDB wartet daher, bis es dieselbe Datei zweimal unverändert gesehen hat.

  • Der Import ist still. Sie waren gerade dabei, eine Stellung zu studieren, als Ihre Matches eintrafen: Ihnen den Bildschirm wegzunehmen wäre der ungünstigste Moment. Modus, aktive Suche, Registerkarte und angezeigte Stellung bleiben unverändert; die Stellungsliste wird nicht neu geladen und zeigt die neuen Matches beim nächsten Neuladen. Der Import läuft ohne Fenster, und die Statusleiste zeigt ein Banner mit der Anzahl importierter, übersprungener (Duplikate) und fehlgeschlagener Matches, mit einer Schaltfläche, die auf Wunsch den vollständigen Bericht öffnet. Alles Übrige entspricht einem manuellen Import: dieselben erkannten Duplikate, derselbe Import-Stapel, dieselbe automatische Analyse, falls aktiviert.

Das Standardintervall beträgt zehn Sekunden; die Untergrenze zwei. Der Ordner wird nicht rekursiv durchlaufen: ein überwachter Ordner ist der Ort, an dem ein Werkzeug seine Matches ablegt, kein Baum zum Durchsuchen. Eine ausgehängte Netzwerkfreigabe beendet die Überwachung nicht und lässt ihren Inhalt bei der Rückkehr auch nicht als neu erscheinen.

Dieselbe Überwachung gibt es auf der Kommandozeile, mit blunderdb import --type batch --dir <Ordner> --watch (siehe Befehlszeilenschnittstelle (CLI)): es ist die Form, die ein Server, eine geplante Aufgabe oder ein Skript verwenden kann.

Zwei Rechner synchronisieren

Seine .db-Datenbank von einem Rechner auf den anderen zu kopieren oder in einem synchronisierten Ordner (Syncthing, Dropbox…) abzulegen, beschädigt sie früher oder später: SQLite schreibt neben die Datenbank Journaldateien, die eine Dateisynchronisation in falscher Reihenfolge kopiert. blunderDB synchronisiert stattdessen zwei Bibliotheken über inkrementelle Exporte, die in einem Ordner abgelegt werden, den der andere Rechner überwacht. Der Transport ist Ihnen überlassen — Syncthing, USB-Stick, E-Mail: Es gibt weder Server noch Konto.

  • Wählen Sie auf Rechner A im Exportfenster Gesamte Bibliothek, aktivieren Sie Nur Neues seit dem letzten Export in diesen Ordner und bestimmen Sie den Ordner mit Ordner wählen…. Jeder Export schreibt dort eine Datei sync-<machine>-<date>.db, die nur enthält, was seit dem vorherigen Export in denselben Ordner in die Bibliothek gelangt ist; der erste enthält alles.

  • Machen Sie auf Rechner B diesen Ordner zum Überwachter Ordner. Jede dort erscheinende .db-Datei wird ohne Vorschau zusammengeführt, wie beim Import einer Datenbank: Eine bereits bekannte Position wird nicht dupliziert, ein bereits bekanntes Match wird erkannt, Sammlungen und Lektionen werden über ihren Namen zusammengeführt.

  • Gehen Sie in die andere Richtung genauso vor, mit einem zweiten Ordner.

Was man wissen muss:

  • Die Markierung „letzte Synchronisierung“ liegt bei dem, der exportiert, eine pro Zielordner, und rückt nur vor, wenn die Datei vollständig ist. Der empfangende Rechner speichert nichts. Ein fehlgeschlagener Export lässt die Markierung unverändert: Der nächste enthält dieselben Zeilen.

  • Die Synchronisierung erfolgt nur durch Hinzufügen. Ein Löschen wird nicht übertragen: Ein Match auf A zu löschen, löscht es nicht auf B. Eine direkte Änderung ebenso wenig: ein umgeschriebener Kommentar, ein umbenanntes Match, eine neu erstellte Analyse einer bereits gesendeten Position. Übertragen werden die seit dem letzten Export hinzugekommenen Positionen, Matches, Turniere, Sammlungen, Lektionen und Kommentare; eine Sammlung wird auch erneut übertragen, wenn ihr eine Position hinzugefügt wurde, und eine Position, wenn ihr ein Kommentar hinzugefügt wurde. Ein umgeschriebener Kommentar wird nicht erneut übertragen, denn der empfangende Rechner ersetzt nie einen Text, den er schon hat: Um eine Korrektur weiterzugeben, fügen Sie sie als neuen Kommentar hinzu. Gespeicherte Filter und Anki-Stapel gehören nicht dazu: Ein Export von Gesamte Bibliothek ohne das Kontrollkästchen enthält sie.

  • Was ein Rechner empfangen hat, geht einmal zum anderen zurück, da es in seiner Bibliothek neu ist; der andere erkennt es, ohne etwas hinzuzufügen, und der nächste Austausch ist leer.

  • Eine Datei, die ankam, während blunderDB geschlossen war, geht nicht verloren: Beim Start der Überwachung wird jede bereits im Ordner liegende .db zusammengeführt, anders als Match-Dateien. Der empfangende Rechner merkt sich nicht, was er gelesen hat; er führt daher bei jedem Start alle Dateien, die der Ordner noch enthält, erneut zusammen, ohne etwas hinzuzufügen, aber um den Preis der Zeit für das erneute Einlesen. Löschen Sie von Zeit zu Zeit die bereits empfangenen sync-…-Dateien, damit dieser Start schnell bleibt.

  • Ein inkrementeller Export überschreibt nie eine Datei. Die vorige Datei enthält vielleicht Zeilen, die der andere Rechner noch nicht erhalten hat: Ein Export unter einem bereits vergebenen Dateinamen wird abgelehnt. Wählen Sie den Ordner, und jeder Export erhält dort einen neuen Namen.

  • Eine unter einem bereits gesehenen Namen neu geschriebene Datei wird erneut zusammengeführt: Die Überwachung erkennt eine Datei an Name, Größe und Änderungsdatum.

  • Die geöffnete Bibliothek wird nie mit sich selbst zusammengeführt: Liegt sie im überwachten Ordner, übergeht die Überwachung sie.

  • Ein Export, der Zeilen zurückstellen musste (im Protokoll gemeldet), rückt die Markierung nicht vor: Der nächste versucht sie erneut, samt allem, was ihnen folgt.

  • Ein Export wird nie halb geschrieben gesehen: Er wird unter einem versteckten Namen geschrieben und dann in einem Schritt umbenannt. Eine passwortgeschützte Datei (.dbx) wird von der Überwachung nicht aufgenommen, da sie das Passwort nicht erfragen kann.

In der Befehlszeile: blunderdb export --type database --incremental --file <Ordner> auf der einen Seite und blunderdb import --type batch --dir <Ordner> --watch auf der anderen (siehe Befehlszeilenschnittstelle (CLI)). Der Server akzeptiert "incremental": true auf /v1/exports.sqlite (siehe Headless-Modus (Server)).

Assistent und MCP

Der Reiter Assistent und MCP steuert zwei Dinge, die beide standardmäßig deaktiviert sind.

Der lokale MCP-Server stellt die Werkzeuge von blunderDB (Suche, Lesen einer Stellung und ihrer Analyse, Statistiken eines Spielers, Quiz …) einem Assistenten zur Verfügung, der das Model Context Protocol spricht, etwa Claude Desktop oder Claude Code, solange das Fenster geöffnet ist. Er lauscht nur auf diesem Rechner unter http://127.0.0.1:<port>/mcp (standardmäßig Port 8765) und weist eine Anfrage von einer Webseite ab. Er fügt zwei Anzeigewerkzeuge hinzu: eine Ansicht zu einer Suche öffnen und eine Stellung zeigen. Die Werkzeuge lesen nur, außer wenn Schreiben erlauben angehakt ist: Dann können sie eine Stellung speichern, kommentieren, eine Sammlung anlegen und füllen, eine Anki-Karte bewerten und einen Rollout neben der Analyse einer Stellung speichern; nichts wird gelöscht. Ohne geöffnetes Fenster stellt blunderdb mcp dieselben Werkzeuge bereit (siehe Befehlszeilenschnittstelle (CLI)).

Der interne Assistent ist ein Client dieser Werkzeuge. Es ist kein Modell eingebaut: Er wendet sich an einen OpenAI-kompatiblen Anbieter — standardmäßig Ollama auf diesem Rechner, oder Groq, OpenRouter, Gemini, Anthropic oder eine andere Adresse. Entfernt ist jede Adresse außerhalb dieses Rechners, unabhängig vom gewählten Anbieter: Ihre Sätze und die Ergebnisse der Werkzeuge verlassen dann den Rechner, der Reiter weist darauf hin und wartet auf Ihre Zustimmung für genau diese Adresse; eine andere Adresse fragt erneut. Der API-Schlüssel kommt in den Schlüsselbund des Systems, nie in die Datenbank oder die Einstellungsdatei. Das für Ollama standardmäßig vorgeschlagene Modell, qwen2.5:7b, ist ein Ausgangspunkt, keine Empfehlung: Ohne einen Wert aus dem mit dem Quellcode gelieferten Messstand wird keine Modellempfehlung ausgesprochen.

Nach der Aktivierung ist der Assistent ein Unterreiter Assistent des Suchbereichs. Ein Satz — „meine Fehler von mehr als 50 Millipunkten im Rennen“ — öffnet eine neue, nach ihm benannte Ansicht, startet dort die Suche und wechselt dorthin; seine Token bleiben im Suchverlauf. Was die Werkzeuge zurückgeben, stammt aus der Datenbank; was das Modell schreibt, ist als Freier Text des Modells gekennzeichnet. Der Assistent schlägt nur dann eine Änderung vor, wenn das Kästchen Den Assistenten Änderungen vorschlagen lassen angehakt ist — eine vom Schreiben des lokalen MCP-Servers getrennte Einstellung — und jede Änderung, die er vorbereitet, wird angezeigt und erst nach Bestätigen ausgeführt.

Das Konfigurationsfenster enthält außerdem Anzeigeeinstellungen für die Oberfläche. Ein Schieberegler für die Oberflächenskalierung ermöglicht es, alle Oberflächenelemente zu vergrößern oder zu verkleinern, was auf hochauflösenden Bildschirmen oder zur Verbesserung der Lesbarkeit nützlich ist. Die Tastenkürzel STRG-+, STRG– und STRG-0 stellen dieselbe Skalierung ein, wie in einem Browser. Ein Menü Panel-Position legt fest, wo die Panels (Suche, Matchs, Analyse) relativ zum Brett angezeigt werden: unten, seitlich oder automatisch (auf breiten Bildschirmen wird dann die seitliche Anordnung gewählt, um den verfügbaren Platz besser auszunutzen). Wie die anderen Einstellungen werden auch diese Festlegungen von einer Sitzung zur nächsten beibehalten.

Geführte Touren und Beispieldatenbank

Um den Einstieg zu erleichtern, bietet blunderDB geführte Touren durch die Oberfläche an. Der Katalog der Touren öffnet sich über die Symbolleiste oder mit dem Befehl tutorial (Alias tour). Es stehen sieben Touren zur Verfügung: eine allgemeine Tour durch die Oberfläche sowie Touren zur Stellungssuche, zur Durchsicht der Matches, zur Durchsicht der Turniere, zum Eval-Panel, zur Anki-Wiederholung und zu den Statistiken. Jede Tour hebt Schritt für Schritt die betreffenden Elemente der Oberfläche hervor, öffnet dabei das Panel, von dem sie spricht, und kann jederzeit wiederholt werden. Beim ersten Start wird die allgemeine Tour automatisch angeboten.

Der Befehl demo lädt eine Beispieldatenbank, mit der sich die Funktionen des Werkzeugs erkunden lassen, ohne eigene Partien zu importieren: drei Matches (zwei davon in einem Turnier zusammengefasst), analysiert von eXtreme Gammon, BGBlitz und gammonNet, drei thematische Sammlungen, mit Tags versehene Kommentare (#blunder, #cube) und ein Anki-Stapel mit seinem Wiederholungsprotokoll. Spieler, Turnier und Ort sind fiktiv. Die geführten Touren stützen sich auf diese Datenbank, wenn keine Datenbank geöffnet ist.

Stellungen bearbeiten

Das Drücken der Taste TAB öffnet das Suchpanel und ermöglicht es, eine Stellung auf dem Brett zu bearbeiten, um sie der Datenbank hinzuzufügen oder eine zu suchende Stellungsstruktur zu definieren. Die Verteilung der Steine, des Dopplers, des Punktestands und des Zugrechts können mit der Maus geändert werden (siehe Eine Position bearbeiten).

Tipp

Siehe Tastenkürzel für die verfügbaren Tastenkürzel.

Die Befehlszeile

Die in die Statusleiste integrierte Befehlszeile ermöglicht es, alle in der grafischen Oberfläche verfügbaren Funktionen von blunderDB auszuführen: allgemeine Operationen auf der Datenbank, Stellungsnavigation, Anzeige der Analyse und/oder Kommentare, Suche nach Stellungen mittels Filtern … Nach einer ersten Einarbeitung in die Oberfläche empfiehlt es sich, allmählich die Befehlszeile zu verwenden, die eine leistungsfähige und flüssige Nutzung von blunderDB ermöglicht, insbesondere für die Funktionen zur Stellungssuche.

Um die Befehlszeile zu öffnen, drücken Sie die Taste LEERTASTE. Um eine Abfrage abzuschicken und die Befehlszeile zu schließen, drücken Sie die Taste EINGABE.

blunderDB führt die vom Benutzer gesendeten Abfragen aus, sofern sie gültig sind, und ändert gegebenenfalls sofort den Zustand der Datenbank. Es sind keine expliziten Speichervorgänge seitens des Benutzers erforderlich.

Tipp

Siehe Liste der Befehle für die Liste der in der Befehlszeile verfügbaren Befehle.

Die Befehlspalette

Die Befehlspalette (STRG-UMSCHALT-P) findet über einen ungefähren Namen, wonach man nicht mehr zu suchen weiß: einen Befehl der Befehlszeile, einen Reiter, einen Filter der Bibliothek oder ein Match. Die getippten Buchstaben müssen in der richtigen Reihenfolge vorkommen, nicht unbedingt nebeneinander, ohne Rücksicht auf Groß- und Kleinschreibung oder Akzente: „dpmtx“ findet die Doppelwürfel-Matrix, „lyon“ die Matches eines Turniers in Lyon.

Die Pfeiltasten wählen, EINGABE führt aus, ESC schließt. Ein Befehl läuft, als wäre er getippt worden; s und ss öffnen die Befehlszeile, um die Filter dort einzugeben; ein Filter läuft wie nach einem Doppelklick in der Bibliothek; ein Match öffnet sich wie nach einem Doppelklick im Match-Bereich.

Ist eine Direction geöffnet, ergänzt die Palette das Turnier: Spieler, Tische, laufende Matches und Wettbewerbe (siehe Schnellsuche).