Πρώτα βήματα και διεπαφή
Εισαγωγή
Το blunderDB είναι ένα λογισμικό για τη δημιουργία βάσεων δεδομένων με θέσεις τάβλι (backgammon). Η κύρια δύναμή του είναι να παρέχει έναν ενιαίο χώρο για τη συγκέντρωση των θέσεων που έχει συναντήσει ένας παίκτης (στο διαδίκτυο, σε τουρνουά) και τη δυνατότητα να τις μελετήσει ξανά φιλτράροντάς τις σύμφωνα με διάφορα φίλτρα που μπορούν να συνδυαστούν αυθαίρετα. Το blunderDB μπορεί επίσης να χρησιμοποιηθεί για τη δημιουργία καταλόγων θέσεων αναφοράς.
Οι θέσεις αποθηκεύονται σε μια βάση δεδομένων που αντιπροσωπεύεται από ένα αρχείο .db. Η εφαρμογή γραφείου ανοίγει αυτό το αρχείο απευθείας, ποτέ μια διεύθυνση δικτύου: η λειτουργία διακομιστή είναι μια άλλη λειτουργία του ίδιου εκτελέσιμου, και περνάμε από τη μία στην άλλη εξάγοντας ή μεταναστεύοντας τη βάση, όχι στρέφοντας την εφαρμογή προς ένα URL.
Κύριες αλληλεπιδράσεις
Οι κύριες δυνατές αλληλεπιδράσεις με το blunderDB είναι:
προσθήκη μιας νέας θέσης,
τροποποίηση μιας υπάρχουσας θέσης,
αντιγραφή της εικόνας του ταμπλό στο πρόχειρο (PNG) μέσω CTRL-X, ή μαζί με την πλήρη ανάλυση μέσω CTRL-X CTRL-X,
διαγραφή μιας υπάρχουσας θέσης,
αναζήτηση μίας ή περισσότερων θέσεων,
εισαγωγή αγώνων από διάφορες πηγές (XG, GNUbg, BGBlitz, Jellyfish, HedgeHog), συμπεριλαμβανομένων των σχολίων από τα αρχεία XG,
πλοήγηση στις κινήσεις ενός εισηγμένου αγώνα,
οργάνωση των θέσεων σε συλλογές,
οργάνωση των αγώνων σε τουρνουά.
Ο χρήστης μπορεί να επισημάνει ελεύθερα τις θέσεις με ετικέτες (tags) και να τις σχολιάσει μέσω σχολίων.
Περιγραφή της διεπαφής
Η διεπαφή του blunderDB αποτελείται, από πάνω προς τα κάτω, από:
[επάνω] τη γραμμή εργαλείων, η οποία συγκεντρώνει το σύνολο των κύριων λειτουργιών που μπορούν να εκτελεστούν στη βάση δεδομένων,
[στη μέση] την κύρια περιοχή προβολής, η οποία επιτρέπει την εμφάνιση ή την επεξεργασία θέσεων τάβλι,
[κάτω] τη γραμμή κατάστασης, η οποία παρουσιάζει διάφορες πληροφορίες σχετικά με τη βάση δεδομένων ή την τρέχουσα θέση και ενσωματώνει τη γραμμή εντολών.
Μπορούν να εμφανιστούν πίνακες για:
εμφάνιση των δεδομένων ανάλυσης που σχετίζονται με την τρέχουσα θέση, προερχόμενων από το eXtreme Gammon (XG), το GNUbg ή το BGBlitz,
εμφάνιση, προσθήκη ή τροποποίηση σχολίων,
αναζήτηση και φιλτράρισμα θέσεων με βάση συνδυάσιμα κριτήρια,
εμφάνιση και διαχείριση των συλλογών θέσεων (πίνακας συλλογών),
εμφάνιση της λίστας των εισηγμένων αγώνων και πλοήγηση στις κινήσεις ενός αγώνα (πίνακας αγώνων),
εμφάνιση και διαχείριση των τουρνουά (πίνακας τουρνουά),
εμφάνιση των στατιστικών απόδοσης (πίνακας Stats),
υπολογισμός του EPC (Effective Pip Count) μιας θέσης μαζέματος (bearoff) (πίνακας Eval),
εξάσκηση σε ασκήσεις υπολογισμού (πάνελ Προπόνηση),
μελέτη των θέσεων με διαστήματα επανάληψης (πίνακας Anki),
μεταγραφή ενός αγώνα με το χέρι (πάνελ Μεταγραφή),
την προβολή των μεταδεδομένων της βάσης δεδομένων (πίνακας Μεταδεδομένα).
Το ύψος του πάνελ ρυθμίζεται σύροντας τη λαβή του· παραμένει το ίδιο σε όλες τις καρτέλες.
Μπορούν να εμφανιστούν παράθυρα διαλόγου για:
εμφάνιση της βοήθειας του blunderDB, της οποίας το πεδίο αναζήτησης (το / τοποθετεί εκεί τον δρομέα) επιλέγει τις εμφανίσεις του πληκτρολογημένου κειμένου, χωρίς διάκριση πεζών/κεφαλαίων ή τόνων (το ENTER πηγαίνει στην επόμενη, το SHIFT-ENTER στην προηγούμενη),
εμφάνιση του καταλόγου των ξεναγήσεων (βλ. Ξεναγήσεις και βάση δείγματος),
ρύθμιση της εξαγωγής της βάσης δεδομένων,
ρύθμιση του blunderDB, και ιδίως της γλώσσας της διεπαφής (βλ. Ρυθμίσεις).
Η κύρια περιοχή προβολής παρέχει στον χρήστη:
ένα ταμπλό για την εμφάνιση ή την επεξεργασία μιας θέσης τάβλι,
το επίπεδο και τον κάτοχο του ζαριού (cube),
το pip count κάθε παίκτη,
το σκορ κάθε παίκτη,
τα ζάρια προς παίξιμο. Αν δεν εμφανίζεται καμία τιμή στα ζάρια, η θέση των ζαριών υποδεικνύει ποιος παίκτης έχει τη σειρά και ότι η θέση είναι μια απόφαση κύβου. Όταν η απόφαση κύβου είναι απάντηση σε διπλασιασμό (αποδοχή/πάσο), ο προσφερόμενος κύβος εμφανίζεται στο κέντρο του ταμπλό, στην προσφερόμενη τιμή.
Το πρόχειρο είναι η καθημερινή κίνηση· η αποθήκευση είναι η άλλη ανάγκη — η εικονογράφηση ενός άρθρου, ενός μηνύματος σε φόρουμ, ενός μαθήματος. Το SVG προσφέρεται επειδή το ταμπλό είναι SVG: είναι η μορφή που αντέχει τη μεγέθυνση, αυτή που βάζεις σε ένα έγγραφο χωρίς να θολώσει. Το PNG παράγεται από αυτό, όπως και η αντιγραφή στο πρόχειρο: μία απόδοση, τρεις προορισμοί, άρα κανένας δεν μπορεί να αποκλίνει από τους άλλους. Αυτό το μενού δεν εμφανίζεται στον πίνακα Eval ούτε στον πίνακα Αναζήτησης, όπου το δεξί κουμπί χρησιμεύει ήδη για να τοποθετείς τα πούλια του άλλου χρώματος. Δείτε Μεταφορά μιας θέσης στον πίνακα Eval για να φέρετε μια θέση στον πίνακα Eval.
Η γραμμή κατάστασης είναι δομημένη από αριστερά προς τα δεξιά με τις ακόλουθες πληροφορίες:
τη γραμμή εντολών, προσβάσιμη πατώντας το πλήκτρο SPACE,
ένα ενημερωτικό μήνυμα σχετικό με μια λειτουργία που εκτελέστηκε από τον χρήστη,
τον δείκτη της τρέχουσας θέσης, ακολουθούμενο από τον αριθμό των θέσεων στην τρέχουσα βιβλιοθήκη (ή τις πληροφορίες κίνησης/παρτίδας κατά την πλοήγηση σε αγώνα),
τον μετρητή βιβλιοθήκης — «412 θέσεις · 38 blunders · 5 αγώνες» — όπου κάθε αριθμός ανοίγει αυτό που μετρά: τις θέσεις, την αναζήτηση
E>με το κατώφλι της βιβλιοθήκης (εκτελείται αμέσως, σαν να είχε πληκτρολογηθεί, και καταχωρίζεται στο ιστορικό αναζητήσεων), ή τη λίστα αγώνων. Όταν η λίστα στην οθόνη δεν είναι ολόκληρη η βιβλιοθήκη (αναζήτηση, συλλογή, αγώνας), ο αριθμός των blunders γράφεται «12 / 340 blunders»: τα blunders αυτής της λίστας, μετά της βιβλιοθήκης, με το ίδιο κατώφλι· μια λίστα με πάνω από 20 000 θέσεις δεν μετριέται και κρατά μόνο το σύνολο. Ένας αριθμός που δεν μπορείς να ακολουθήσεις είναι διακόσμηση. Το κατώφλι των blunders είναι αυτό της βιβλιοθήκης, ρυθμισμένο στην καρτέλα Βιβλιοθήκη των ρυθμίσεων και κοινό με τα στατιστικά: δύο κατώφλια θα έκαναν την ίδια λέξη να σημαίνει δύο πράγματα. Ο μετρητής υπόσχεται ακριβώς αυτό που ανοίγει ο σύνδεσμος, ακόμη και για μια θέση που παίχτηκε με πολλούς τρόπους, η οποία αξίζει το μεγαλύτερο κόστος της. Σε πολύ μεγάλη βιβλιοθήκη (πάνω από 200 000 γραμμές) ο μετρητής δεν σαρώνει τους πίνακες: ένας αριθμός με πρόθεμα «≈» είναι εκτίμηση (άνω όριο, αφού οι διαγραμμένες γραμμές αφήνουν κενά). Αν οι θέσεις είναι εκτιμώμενες, ο αριθμός των blunders, που δεν έχει έντιμη εκτίμηση, είναι η τελευταία ακριβής καταμέτρηση, που διατηρείται όσο καμία εγγραφή δεν μπορεί να την αλλάξει. Μετά από εισαγωγή ή τροποποίηση εμφανίζεται ως «?» όσο γίνεται νέα καταμέτρηση στο παρασκήνιο, και έπειτα επανέρχεται μόνος του· μια βιβλιοθήκη ανοιγμένη μόνο για ανάγνωση δεν ξαναμετρά και κρατά το «?» έως ότου η εφαρμογή που γράφει σε αυτήν ξανακάνει την καταμέτρηση. Ο σύνδεσμος εκτελεί την αναζήτηση, που δίνει τον ακριβή αριθμό. Οι δύο αριθμοί blunders είναι ξεχωριστοί σύνδεσμοι: ο πρώτος εκτελεί την υποαναζήτησηss E>στη λίστα στην οθόνη, ο δεύτερος την αναζήτηση σε ολόκληρη τη βιβλιοθήκη· όταν εμφανίζεται μόνο το σύνολο, υπάρχει ένας μόνο σύνδεσμος.
Σημείωση
Στην περίπτωση θέσεων που προκύπτουν από μια αναζήτηση του χρήστη, ο αριθμός των θέσεων που υποδεικνύεται στη γραμμή κατάστασης αντιστοιχεί στον αριθμό των φιλτραρισμένων θέσεων.
Η καρτέλα Anki φέρει σήμα όταν υπάρχουν κάρτες προς επανάληψη, σε όλες τις τράπουλες. Αυτός ο αριθμός είναι ο λόγος να ανοίξεις την καρτέλα· δεν έχει θέση πίσω της. Το μηδέν δεν εμφανίζει τίποτα: ένα σήμα που λέει «0» είναι θόρυβος.
Η εντολή log ανοίγει το αρχείο δραστηριότητας: τις τελευταίες διακόσιες γραμμές του αρχείου καταγραφής, ένα κουμπί για να τις αντιγράψετε — ό,τι χρειάζεται για να επισυνάψετε μια αναφορά — και ένα άλλο για να ανοίξετε τον φάκελο. Το αρχείο δεν φιλτράρεται ούτε αναμορφώνεται: ένα αρχείο που ωραιοποιείς δεν μπορείς πια να το επικαλεστείς.
Η εντολή grid ανοίγει το φύλλο επαφής: τη λίστα που περιηγείστε — αποτελέσματα αναζήτησης, βιβλιοθήκη, συλλογή — ως πλέγμα μικρών ταμπλό, σχεδιασμένων όπως το ταμπλό, σε σελίδες των είκοσι τεσσάρων. Ανοίγει στη σελίδα της τρέχουσας θέσης, της οποίας η μικρογραφία πλαισιώνεται· ένα κλικ ή ENTER σε μια μικρογραφία ανοίγει τη θέση της στο ταμπλό και κλείνει το φύλλο, και η περιήγηση γίνεται εξ ολοκλήρου από το πληκτρολόγιο (βλ. Φύλλο επαφής). Δεν ανοίγει ούτε σε λειτουργία επεξεργασίας ούτε μέσα σε ένα ματς, το οποίο περιηγείται κανείς με τις κινήσεις του.
Στο ιστορικό αναζητήσεων του πίνακα Αναζήτηση, κάθε σύμβολο μιας αποθηκευμένης εντολής εμφανίζεται ως ονομασμένη πινακίδα — Χωρίς επαφή, Σφάλμα κίνησης — αντί για γυμνό σύμβολο. Η ακριβής εντολή μένει στην υπόδειξη, αφού αυτή ξανατρέχει· και ένα σύμβολο που το blunderDB δεν αναγνωρίζει εμφανίζεται όπως είναι, όχι μεταφρασμένο στο πλησιέστερο.
Καρτέλες προβολών
Κάτω από τη γραμμή εργαλείων, μια γραμμή καρτελών επιτρέπει την εργασία με πολλές προβολές παράλληλα. Κάθε προβολή είναι ένας ανεξάρτητος χώρος εργασίας που διατηρεί τη δική του λίστα θέσεων, τον δείκτη της τρέχουσας θέσης, την εμφανιζόμενη θέση, την ανάλυση και την επιλεγμένη κίνηση, τον ενεργό πίνακα, το τρέχον σχόλιο καθώς και το πλαίσιο περιήγησης σε έναν αγώνα. Έτσι είναι δυνατόν, για παράδειγμα, να κρατήσετε μια αναζήτηση ανοιχτή σε μια προβολή ενώ περιηγείστε σε έναν αγώνα σε μια άλλη.
Δημιουργία προβολής: κάντε κλικ στο κουμπί + της γραμμής καρτελών (ονομάζεται + Νέα προβολή όσο υπάρχει μία μόνο προβολή) ή πατήστε CTRL-T. Η νέα προβολή ξεκινά ως αντίγραφο της τρέχουσας προβολής.
Κλείσιμο προβολής: κάντε κλικ στο σταυρό της καρτέλας ή πατήστε CTRL-W. Η τελευταία προβολή δεν μπορεί να κλείσει.
Αλλαγή προβολής: κάντε κλικ σε μια καρτέλα, πατήστε CTRL-PageUp / CTRL-PageDown (ή SHIFT-J / SHIFT-K) για να μεταβείτε στην προηγούμενη / επόμενη προβολή, ή CTRL-1 έως CTRL-9 για να μεταβείτε απευθείας στη n-οστή προβολή της ενεργής βιβλιοθήκης.
Μετονομασία προβολής: κάντε διπλό κλικ στην καρτέλα, εισαγάγετε το νέο όνομα και επιβεβαιώστε με ENTER.
Μια προβολή που αφέθηκε στο πάνελ Eval επιστρέφει σε αυτό όπως αφέθηκε: με το πρόχειρο ταμπλό της και, κατά την έξοδο από το πάνελ, με τη θέση που μελετούσε. Και το τελευταίο πρόχειρο ταμπλό του πάνελ Eval ανήκει σε κάθε προβολή χωριστά.
Οι προβολές αποθηκεύονται μαζί με την κατάσταση συνεδρίας της βάσης δεδομένων και επαναφέρονται κατά το επόμενο άνοιγμά της.
Πολλές ανοιχτές βιβλιοθήκες
Πολλές βάσεις δεδομένων μπορούν να μένουν ανοιχτές ταυτόχρονα. Κάθε μία σχηματίζει μια ομάδα καρτελών: στη γραμμή, μια έγχρωμη κεφαλίδα φέρει το όνομα του αρχείου, ακολουθούμενη από τις προβολές αυτής της βιβλιοθήκης, των οποίων το πάνω άκρο επαναλαμβάνει το ίδιο χρώμα. Μόνο μία βιβλιοθήκη είναι ενεργή κάθε φορά: αυτήν διαβάζουν και γράφουν τα πάνελ, η αναζήτηση, οι εισαγωγές και ο βοηθός.
Με μία μόνο ανοιχτή βιβλιοθήκη, η γραμμή δεν εμφανίζει κεφαλίδα: μόνο ο τίτλος του παραθύρου κατονομάζει τη βάση.
Άνοιγμα βιβλιοθήκης σε νέα ομάδα: κουμπί ⧉ Άλλη βιβλιοθήκη στα δεξιά της γραμμής καρτελών (μόνο ⧉ μόλις ανοιχτούν δύο ομάδες), CTRL-SHIFT-O, ή η εντολή
open_group(og). Η μέχρι τότε ενεργή βιβλιοθήκη παραμένει ανοιχτή στην ομάδα της. Το CTRL-O, αντίθετα, αντικαθιστά τη βιβλιοθήκη της ενεργής ομάδας· η συμβουλή του κουμπιού Άνοιγμα της γραμμής εργαλείων υπενθυμίζει και τις δύο συντομεύσεις.Αλλαγή βιβλιοθήκης: το κλικ σε μια καρτέλα άλλης ομάδας ενεργοποιεί τη βιβλιοθήκη της και αυτή την προβολή με μία κίνηση· το κλικ στην κεφαλίδα της ομάδας την επαναφέρει στην προβολή όπου είχε μείνει. Τα CTRL-SHIFT-PageUp / CTRL-SHIFT-PageDown μεταβαίνουν στην προηγούμενη / επόμενη βιβλιοθήκη· τα CTRL-PageUp / CTRL-PageDown (ή SHIFT-J / SHIFT-K) διατρέχουν τις προβολές όλων των ομάδων διαδοχικά.
Κλείσιμο ομάδας: ο σταυρός της κεφαλίδας της κλείνει τη βιβλιοθήκη και τις προβολές της. Το κλείσιμο της ενεργής ομάδας εμφανίζει τη γειτονική της· η γραμμή κατάστασης κατονομάζει τη βιβλιοθήκη που έκλεισε και αυτήν που εμφανίζεται.
Η κεφαλίδα της ενεργής ομάδας φέρει το όνομα σε λευκό πάνω στο χρώμα της· αυτές των άλλων ομάδων, το όνομα πάνω στο φόντο της γραμμής, υπογραμμισμένο στο πάνω μέρος με το χρώμα τους. Εναλλάσσονται έξι χρώματα: μια έβδομη ομάδα παίρνει ξανά το πρώτο. Οι προβολές αριθμούνται μέσα στη βιβλιοθήκη τους: μια βάση που ανοίγει σε νέα ομάδα ξεκινά από «#1», και τα CTRL-1 … CTRL-9 στοχεύουν τις προβολές της ενεργής ομάδας. Όταν οι καρτέλες δεν χωρούν πλέον στο πλάτος του παραθύρου, η γραμμή κυλά (τροχός του ποντικιού, ή η αλλαγή προβολής που φέρνει την εμφανιζόμενη καρτέλα στην οθόνη) αντί να τις συρρικνώνει.
Η εναλλαγή είναι άμεση: κάθε ομάδα κρατά στη μνήμη τις προβολές της, τη λίστα θέσεών της, την τρέχουσα θέση, τα κριτήρια αναζήτησης (ακόμη και κατά την πληκτρολόγηση, χωρίς να έχει εκτελεστεί η αναζήτηση), τη λίστα αγώνων, τους μετρητές και την κύλιση κάθε λίστας του πίνακα, και τα ανακτά χωρίς να ξαναδιαβάσει τη βάση. Μια βιβλιοθήκη που ανοίγει σε νέα ομάδα ξεκινά από κενή φόρμα αναζήτησης: οι αγώνες και τα τουρνουά που επιλέχθηκαν σε μια ομάδα δεν εφαρμόζονται ποτέ σε άλλη. Η εργασία σε εξέλιξη την ακολουθεί επίσης: ένα προσχέδιο μεταγραφής, ένα μάθημα, μια επανάληψη Anki, η ουρά μελέτης και η ανοιχτή Διεύθυνση βρίσκονται όπως αφέθηκαν. Ό,τι μπορεί να άλλαξε κατά την απουσία ξαναδιαβάζεται αμέσως μετά την εμφάνιση: οι μετρητές πάντα, η λίστα αγώνων αν άλλαξε ο αριθμός τους ή αν μια εργασία παρασκηνίου έγραψε στη βιβλιοθήκη κατά την απουσία. Οι λίστες που ανήκουν σε κάθε βάση (συλλογές, τουρνουά, τράπουλες Anki, προσχέδια, Μονομαχίες, ιστορικό αναζήτησης, αποθηκευμένα φίλτρα) ξαναδιαβάζονται στη βιβλιοθήκη που εμφανίζεται.
Το ίδιο αρχείο δεν ανοίγει σε δύο ομάδες: αν το ανοίξετε ξανά, εμφανίζεται η ομάδα που το κρατά ήδη.
Οι εργασίες παρασκηνίου παραμένουν συνδεδεμένες με τη βιβλιοθήκη τους: μια εισαγωγή αρχείων αγώνων, ο παρακολουθούμενος φάκελος και η μαζική ανάλυση GammonNet συνεχίζονται στην ομάδα όπου ξεκίνησαν όταν εμφανίζεται άλλη ομάδα, και δεν γράφουν ποτέ στη βιβλιοθήκη που εμφανίζεται. Η πρόοδος και η αναφορά τους μένουν στην ομάδα τους: όσο αυτή δεν εμφανίζεται, η κεφαλίδα της φέρει μια κουκκίδα, που αναβοσβήνει όσο η εργασία δουλεύει και γίνεται σταθερή όταν τελειώσει. Στην επιστροφή στην ομάδα, η κουκκίδα εξαφανίζεται, η γραμμή κατάστασης λέει τι έκανε η εργασία και η λίστα αγώνων ξαναδιαβάζεται. Η αυτόματη ανάλυση που ακολουθεί μια εισαγωγή ξεκινά στη βιβλιοθήκη της εισαγωγής. Ο παρακολουθούμενος φάκελος ανήκει στην ομάδα όπου ξεκίνησε: τα αρχεία αγώνων εισάγονται εκεί στο παρασκήνιο, ενώ μια βάση προς συγχώνευση ή ένα κείμενο θέσης περιμένει να εμφανιστεί ξανά αυτή η ομάδα. Το κλείσιμο μιας ομάδας σταματά τις εργασίες και την παρακολούθησή της.
Αντιγραφή από μια βιβλιοθήκη σε άλλη. Μια γραμμή που σύρεται στην κεφαλίδα άλλης ομάδας αντιγράφεται εκεί, προς οποιαδήποτε κατεύθυνση: ένα ματς από τη λίστα ματς, μια συλλογή από τη λίστα συλλογών, μια θέση από ανοιχτή συλλογή, η εμφανιζόμενη θέση (την πιάνετε από τον μετρητή της «n / N» στη γραμμή κατάστασης) ή το μάθημα που διαβάζεται (από το όνομά του στη γραμμή του μαθήματος). Η κεφαλίδα-στόχος περιβάλλεται από διακεκομμένο περίγραμμα. Η αντιγραφή είναι εκείνη της εντολής transfer: η επιλογή μιας εξαγωγής, συγχωνευμένη από την εγγενή εισαγωγή, με αναλύσεις, σχόλια και παιγμένες κινήσεις· μια συλλογή παίρνει μαζί τις θέσεις της, ένα ματς τη μεταγραφή του. Ό,τι ήδη περιέχει η βιβλιοθήκη προορισμού δεν ξαναντιγράφεται: η αντιγραφή από A σε B και μετά από B σε A δεν δημιουργεί διπλότυπο, και τίποτα εκεί δεν λέει από πού ήρθε το αντίγραφο. Η αντιγραφή τρέχει στο παρασκήνιο, δεμένη με την ομάδα προορισμού: η κεφαλίδα της φέρει το σήμα, και κατά την επιστροφή η γραμμή κατάστασης λέει πόσες θέσεις και πόσα ματς είναι νέα και πόσα υπήρχαν ήδη.
Το καλάθι συγκεντρώνει γραμμές από πολλές βιβλιοθήκες για να τις αδειάσει μονομιάς. Το SHIFT-B βάζει μέσα την εμφανιζόμενη θέση ή τη βγάζει, όπως το b για τη Στοίβα· μια γραμμή που σύρεται στο καλάθι μπαίνει επίσης. Το καλάθι, δεξιά στη γραμμή καρτελών, δείχνει το πλήθος του· ένα κλικ ανοίγει το μενού του (Άδειασμα στο … για κάθε ομάδα, Άδειασμα καλαθιού), και αν το σύρετε στην κεφαλίδα μιας ομάδας αδειάζει εκεί. Ζει στη μνήμη, ποτέ σε βάση: το κλείσιμο μιας ομάδας αφαιρεί τις γραμμές της, και χάνεται όταν κλείνει το blunderDB. Μια θέση που είναι ακόμη πρόχειρη πρέπει πρώτα να αποθηκευτεί.
Το λουκέτο μιας κεφαλίδας κλειδώνει την ομάδα της: τίποτα δεν αδειάζεται πια εκεί, ούτε με σύρσιμο ούτε από το καλάθι, και η γραμμή κατάστασης το λέει. Το κλείδωμα δεν αγγίζει ούτε τις εισαγωγές ούτε τις αλλαγές που γίνονται στην ομάδα· ένα δεύτερο κλικ το αίρει.
Η αλλαγή ομάδας εξακολουθεί να απορρίπτεται, με κλικ όπως και με πληκτρολόγιο, με ένα μήνυμα στη γραμμή κατάστασης που κατονομάζει την αιτία και λέει πού να τη σταματήσετε, όταν ό,τι τρέχει ακολουθεί την οθόνη: ένα rollout, το αποτέλεσμα του οποίου εμφανίζεται στη θέση του ταμπλό (rollout stop)· η προβολή ενός τουρνουά, που εξυπηρετεί τη βιβλιοθήκη που εμφανίζεται στο δίκτυο του συλλόγου (σταματά στη Διεύθυνση)· μια Μονομαχία σε εξέλιξη, που κρατά το ταμπλό και τις προβολές του· μια συνεδρία προπόνησης, της οποίας το χρονόμετρο και το ημερολόγιο δεν ακολουθούν καμία ομάδα· τέλος, για όσο διαρκεί, η εισαγωγή αρχείων που μόνο η διεπαφή μπορεί να διαβάσει (κείμενα θέσεων, που εισάγονται ένα ένα) ή η συγχώνευση μιας βάσης. Κατά το κλείσιμο του blunderDB, αποθηκεύεται μόνο η συνεδρία της ενεργής βιβλιοθήκης και όχι η λίστα των ομάδων: στην επόμενη εκκίνηση, το blunderDB ανοίγει ξανά την τελευταία ενεργή βάση.
Τι γνωρίζουν οι άλλες βιβλιοθήκες: η καρτέλα Αλλού
Η καρτέλα Αλλού (CTRL-SHIFT-A) δείχνει, για τη θέση που εμφανίζεται, τι γνωρίζουν γι” αυτήν οι άλλες βιβλιοθήκες που είναι ανοιχτές σε ομάδες. Η θέση βρίσκεται εκεί με την ταυτότητα του ταμπλό της (το hash της), όχι με τον αριθμό της: ο ίδιος αριθμός δηλώνει δύο διαφορετικές θέσεις σε δύο βάσεις. Κάθε βιβλιοθήκη έχει το δικό της μπλοκ, με περίγραμμα στο χρώμα της ομάδας της:
η ανάλυσή της: η καλύτερη κίνηση, ή η καλύτερη ενέργεια κύβου, και η μηχανή που την βρήκε. Μια ανάλυση που έχει αξιολογηθεί με πίνακα ισοδυναμίας αγώνα διαφορετικό από της ενεργής βιβλιοθήκης φέρει την ένδειξη άλλος MET;
τα σχόλιά της, καθένα με τον συντάκτη του, ή τον υπογράφοντα και την κατάσταση της υπογραφής, όπως στο πάνελ σχολίων;
οι αγώνες στους οποίους παίχτηκε η θέση: παίκτες, τουρνουά, ημερομηνία, αριθμός κίνησης, κίνηση ή απόφαση που παίχτηκε και το κόστος τους. Η κρίση (καλή, λάθος, γκάφα) δίνεται με τα όρια της ενεργής βιβλιοθήκης, όχι της άλλης· ένα κόστος που υπολογίστηκε με άλλο MET δεν συγκρίνεται και παραμένει σημειωμένο άλλος MET. Πέρα από 50 αγώνες, εμφανίζονται οι 50 πιο πρόσφατα εισαχθέντες και δηλώνεται το σύνολο;
οι γειτονικές της θέσεις, οι πέντε πλησιέστερες, ως μικρογραφίες με την απόστασή τους.
Μια βιβλιοθήκη που δεν περιέχει τη θέση το δηλώνει και δείχνει παρ” όλα αυτά τις γειτονικές της. Το Άνοιγμα εκεί, ένα κλικ σε έναν αγώνα ή σε μια μικρογραφία, ενεργοποιεί την ομάδα αυτής της βιβλιοθήκης και εμφανίζει εκεί τη θέση. Τίποτα δεν γράφεται σε καμία βάση. Το κουμπί ⟳ ξαναδιαβάζει τις άλλες βιβλιοθήκες.
Η ανταλλαγή επιτόπου. Το πλήκτρο x δείχνει, στη θέση του ταμπλό, στο ίδιο σημείο και με το ίδιο μέγεθος, τη θέση της άλλης βιβλιοθήκης, κάτω από ένα banner στο χρώμα της που θυμίζει το όνομά της, την καλύτερη κίνησή της και τον αριθμό των σχολίων της. Όταν κρατιέται πατημένο, το πλήκτρο επαναφέρει το ταμπλό όταν αφεθεί· όταν πατιέται σύντομα, η ανταλλαγή παραμένει εμφανής μέχρι το επόμενο πάτημα. Η αλλαγή θέσης ή παραθύρου επαναφέρει επίσης το ταμπλό. Η ενεργή ομάδα, η προβολή και η λίστα δεν αλλάζουν. Η θέση που εμφανίζεται είναι, από προεπιλογή, η ίδια θέση στην πρώτη άλλη βιβλιοθήκη που την περιέχει· το κουμπί Καρφίτσωμα κάτω από μια μικρογραφία της καρτέλας Αλλού επιλέγει αντ” αυτού τη γειτονική αυτή θέση, μέχρι το Ξεκαρφίτσωμα ή μια αλλαγή ομάδας.
Η διαιρεμένη οθόνη. Σε μεγάλη οθόνη, το κουμπί ◫ της γραμμής καρτελών (CTRL-SHIFT-X) χωρίζει το παράθυρο σε δύο τμήματα ίδιου πλάτους. Το ένα φέρει την ενεργή ομάδα, ολόκληρη· το άλλο έναν προβολέα μόνο ανάγνωσης μιας άλλης ανοιχτής βιβλιοθήκης (της ίδιας, αν είναι ανοιχτή μόνο μία): το ταμπλό της, την ανάλυση της θέσης και το σχόλιό της. Ο προβολέας διατρέχει όλη τη βιβλιοθήκη, έναν αγώνα κίνηση προς κίνηση (το παιχνίδι, η κίνηση και ό,τι παίχτηκε εμφανίζονται πάνω από το ταμπλό) ή μια συλλογή, κατ” επιλογή από την πτυσσόμενη λίστα του, με τα κουμπιά του ⏮ ◀ ▶ ⏭. Ανοίγει εκεί όπου αφέθηκε αυτή η βιβλιοθήκη. Τίποτα από όσα δείχνει δεν γράφεται πουθενά. Ένα κλικ στον προβολέα, εκτός των κουμπιών του, ενεργοποιεί τη βιβλιοθήκη του: τα δύο τμήματα ανταλλάσσουν ρόλους και κάθε βιβλιοθήκη κρατά την πλευρά της· το CTRL-SHIFT-PAGE UP / PAGE DOWN κάνει το ίδιο από το πληκτρολόγιο. Κάτω από 1280 pixel πλάτος, η διαιρεμένη οθόνη απορρίπτεται και προτείνεται η επί τόπου εναλλαγή (x)· κλείνει αν το παράθυρο γίνει πολύ στενό.
Ρυθμίσεις
Το κουμπί ρυθμίσεων (εικονίδιο γραναζιού) στη γραμμή εργαλείων, αριστερά από το κουμπί βοήθειας, ανοίγει το παράθυρο ρυθμίσεων του blunderDB. Είναι οργανωμένο σε δέκα καρτέλες:
Διεπαφή — θέμα, γλώσσα, κλίμακα εμφάνισης, θέση του πάνελ, βήμα PageUp / PageDown (10, 50, 100, 500 ή 1 000 θέσεις, ή 10 % της λίστας), αρχεία καταγραφής, έλεγχος ενημερώσεων, το όνομά σας και γειτονικές θέσεις·
Χρώματα ταμπλό — τα χρώματα του ταμπλό·
Βιβλιοθήκη — ό,τι ανήκει στην ανοιχτή βάση: τα κατώφλια σφάλματος και blunder, που περιγράφονται παρακάτω·
Συντήρηση — η κατάσταση υγείας της βάσης, μία γραμμή ανά λειτουργία, που περιγράφεται παρακάτω·
Σώμα αγώνων — τα διπλότυπα κατά την εισαγωγή, τα ψευδώνυμα παικτών και διοργανώσεων και η αναζήτηση πιθανών διπλοτύπων (βλ. εισαγωγή αγώνων)·
Bearoff — οι πίνακες μαζέματος που χρησιμοποιεί ο πίνακας Eval·
gammonNet — οι ρυθμίσεις του ενσωματωμένου αξιολογητή, που περιγράφονται παρακάτω·
Παρακολουθούμενος φάκελος — η αυτόματη εισαγωγή των αγώνων που φτάνουν σε έναν φάκελο, που περιγράφεται παρακάτω·
Βοηθός και MCP — ο τοπικός διακομιστής MCP και ο εσωτερικός βοηθός, που περιγράφονται παρακάτω·
Ταυτότητα εκδότη — το κλειδί που υπογράφει τις σημάνσεις προέλευσής σας, το οποίο περιγράφεται στην ενότητα Διανομή μιας βάσης: προέλευση και κωδικός πρόσβασης.
Η καρτέλα Διεπαφή ξεκινά με ένα θέμα: ακολούθησε το σύστημα, φωτεινό, σκοτεινό, υψηλή αντίθεση ή εκτυπώσιμο. Το θέμα ρυθμίζει τα χρώματα της διεπαφής και προτείνει μια παλέτα ταμπλό — μια σκοτεινή διεπαφή γύρω από ένα φωτεινό ταμπλό δεν είναι σκοτεινό θέμα, είναι το μισό, αφού το ταμπλό καταλαμβάνει το μεγαλύτερο μέρος του παραθύρου.
Κρατάτε τον τελευταίο λόγο, και ο μηχανισμός το εγγυάται αντί να το υπόσχεται: η καρτέλα Χρώματα εξακολουθεί να ρυθμίζει το ταμπλό απευθείας, και ένα χρώμα που επιλέξατε μετά το θέμα είναι δικό σας. Στην εκκίνηση εφαρμόζονται μόνο τα σύμβολα της διεπαφής, ποτέ η παλέτα του ταμπλό — αυτή που ρυθμίσατε είναι ήδη φορτωμένη, και το να την ξαναγράφαμε σε κάθε εκκίνηση θα έσβηνε τη δουλειά σας μια συνεδρία τη φορά. Δείτε ADR-0038.
Το ακολούθησε το σύστημα είναι η προεπιλογή: υπακούει στην προτίμηση φωτεινού/σκοτεινού της επιφάνειας εργασίας, ακόμη και όταν αυτή αλλάζει στη μέση της συνεδρίας. Ένα εργαλείο δεν επιβάλλει το φωτεινό ή το σκοτεινό του σε μια επιφάνεια εργασίας που έχει ήδη αποφασίσει.
Η καρτέλα Διεπαφή επιτρέπει επίσης την επιλογή γλώσσας ανάμεσα σε αγγλικά, γαλλικά, γερμανικά, ιταλικά, ισπανικά, φινλανδικά, ιαπωνικά, ελληνικά και ρωσικά. Ολόκληρη η διεπαφή (γραμμή εργαλείων, πίνακες, μηνύματα, βοήθεια) μεταφράζεται στην επιλεγμένη γλώσσα. Η επιλογή γλώσσας αποθηκεύεται και διατηρείται από συνεδρία σε συνεδρία.
Η καρτέλα Βιβλιοθήκη συγκεντρώνει ό,τι ανήκει στο ανοιχτό αρχείο και όχι στο μηχάνημα. Είναι κενή όσο δεν υπάρχει ανοιχτή βάση, και το λέει.
Φέρει καταρχάς τα δύο κατώφλια που καθορίζουν το λεξιλόγιο ολόκληρης της εφαρμογής: μια απόφαση είναι σφάλμα μόλις το κόστος της φτάσει το κατώφλι σφάλματος, και αυτό το σφάλμα είναι blunder μόλις φτάσει το κατώφλι blunder. Κάθε blunder είναι σφάλμα, οπότε το πρώτο κατώφλι δεν μπορεί να ξεπερνά το δεύτερο, και το blunderDB απορρίπτει το αντεστραμμένο ζεύγος. Οι τιμές εισάγονται σε equity — «0,080» — τη μονάδα όλων των πινάκων· η γραμμή εντολών, από την πλευρά της, μιλά σε χιλιοστά του πόντου, ώστε το κατώφλι 0,080 γράφεται E>80 σε μια αναζήτηση.
Αυτά τα κατώφλια ακολουθούν το αρχείο, όχι τον υπολογιστή: η ίδια βάση μετρά τα ίδια blunders όπου κι αν ανοιχτεί, το blunderdb info τα εμφανίζει και το blunderdb edit --error-threshold / --blunder-threshold τα ρυθμίζει. Δεν ταξιδεύουν σε μια εξαγωγή: ένα κατώφλι είναι συνήθεια ανάγνωσης, όχι γεγονός των θέσεων.
Τρεις προκαθορισμένες ρυθμίσεις προσφέρονται με ένα κλικ, καθεμιά με το όνομα του προγράμματος που χάραξε αυτή τη γραμμή: blunderDB (0,050 / 0,100), XG (0,020 / 0,080) και gnubg (0,040 / 0,080). Εξ ορισμού, μια βιβλιοθήκη διαβάζει 0,050 και 0,100.
Τι αλλάζουν, στην οθόνη: το πλήθος των blunders στον μετρητή της γραμμής κατάστασης και την αναζήτηση που ετοιμάζει ο σύνδεσμός του, τις στήλες «Σφάλματα» και «Blunders» των στατιστικών και του πίνακα των παικτών, τις σημάνσεις των κινήσεων στην καρτέλα ενός αγώνα (Πίνακας Αγώνων), και τη λίστα των θέσεων που το blunderDB προτείνει για επανεξέταση μετά από μια εισαγωγή.
Η γραμμή Ανακτήσιμος χώρος της καρτέλας Συντήρηση φέρει το κουμπί Συμπίεση, που ανακτά τον χώρο δίσκου που αφήνουν οι διαγραφές (αγώνες, τουρνουά, εκκαθαρίσεις): η βάση δεν συρρικνώνεται ποτέ από μόνη της όταν διαγράφονται δεδομένα, πρέπει να ζητηθεί ρητά αυτή η συμπίεση. Η λειτουργία μπορεί να διαρκέσει σε μεγάλη βάση. Το συμπιεσμένο αντίγραφο γράφεται δίπλα στο αρχείο και μετά το αντικαθιστά: χρειάζεται, προσωρινά, περίπου το μέγεθος της βάσης σε ελεύθερο χώρο δίσκου στον τόμο της, και όχι σε μνήμη RAM. Αν άλλο πρόγραμμα έχει ανοιχτή τη βάση (π.χ. ένα δεύτερο στιγμιότυπο μόνο για ανάγνωση), το αρχείο δεν αντικαθίσταται: η βάση συμπιέζεται επί τόπου, κάτι που απαιτεί περίπου το διπλάσιο του μεγέθους της σε ελεύθερο χώρο, και ένα προσωρινό αρχείο πηγαίνει στον προσωρινό φάκελο του συστήματος ή σε αυτόν που ορίζει η μεταβλητή περιβάλλοντος SQLITE_TMPDIR: με ένα μικρό /tmp, κατευθύνετέ την στον τόμο της βάσης. Το blunderDB αρνείται να ξεκινήσει, με ένα μήνυμα που λέει τι λείπει (χώρος δίσκου ή λιγότερα από 512 MB διαθέσιμης μνήμης), αντί να διακινδυνεύσει μια διακοπτόμενη συμπίεση. Ζητείται επιβεβαίωση πριν από την έναρξη της λειτουργίας. Το αποτέλεσμα — ο χώρος που κερδήθηκε, σε μεγαμπάιτ — εμφανίζεται έπειτα στη γραμμή κατάστασης. Η ίδια λειτουργία διατίθεται στη γραμμή εντολών μέσω blunderdb vacuum (βλ. Διεπαφή γραμμής εντολών (CLI)).
Μετά από συμπίεση επί τόπου, το blunderDB ελέγχει ότι το αρχείο πράγματι μίκρυνε. Στα Windows, το σύστημα αρνείται να μικρύνει ένα αρχείο που ένα άλλο πρόγραμμα κρατά ανοιχτό με ορισμένους τρόπους: η συμπίεση τότε τελειώνει με ένα μήνυμα που το λέει — κλείστε το άλλο πρόγραμμα και ξανατρέξτε τη — αντί να ανακοινώσει ένα κέρδος που δεν έγινε.
Το κουμπί Άνοιγμα του φακέλου καταγραφών, στην καρτέλα Διεπαφή, ανοίγει τον φάκελο που περιέχει το αρχείο καταγραφής της εφαρμογής — χρήσιμο για να επισυνάψετε λεπτομέρειες σε μια αναφορά προβλήματος, ιδίως όταν το blunderDB έχει εκκινηθεί από συντόμευση ή διπλό κλικ, χωρίς συνδεδεμένο τερματικό που να εμφανίζει οτιδήποτε.
Το πλαίσιο Έλεγχος ενημερώσεων κατά την εκκίνηση, της ίδιας καρτέλας, απενεργοποιημένο από προεπιλογή, ρωτά μία φορά σε κάθε εκκίνηση τη σελίδα των τελευταίων εκδόσεων του αποθετηρίου GitHub και εμφανίζει στη γραμμή κατάστασης ένα μήνυμα αν υπάρχει νεότερη έκδοση — ποτέ ένα παράθυρο που εμποδίζει τη χρήση. Ο έλεγχος αυτός παραμένει αυτόματα απενεργοποιημένος σε εγκατάσταση που έγινε μέσω διαχειριστή πακέτων (Flatpak, Homebrew, πακέτο διανομής…): τότε αυτό το κανάλι διαχειρίζεται τις ενημερώσεις, όχι το ίδιο το blunderDB.
Δύο ρυθμίσεις της καρτέλας Διεπαφή διέπουν την κατάταξη των γειτονικών θέσεων (σύμβολο like, δείτε Πίνακας Αναζήτησης): το πλήθος των γειτονικών θέσεων που επιστρέφονται, και η μέγιστη απόσταση πέρα από την οποία μια θέση παύει να είναι γειτονική. Η απόσταση αυτή είναι μηδέν από προεπιλογή, δηλαδή χωρίς κανένα όριο: η κλίμακα εξαρτάται από τη φάση του παιχνιδιού, και μια τιμή επιλεγμένη εδώ θα διαβαζόταν ως μέτρηση. Το σύμβολο like<12 επιβάλλει τη δική του για μία αναζήτηση, χωρίς να θίγει τη ρύθμιση.
Η καρτέλα Χρώματα ταμπλό επιτρέπει την προσαρμογή των χρωμάτων του ταμπλό. Κάθε στοιχείο διαθέτει τον δικό του επιλογέα χρώματος: το φόντο, το περίγραμμα, οι ανοιχτόχρωμες και σκουρόχρωμες γλώσσες, τα πούλια του παίκτη 1 και του παίκτη 2, τα ζάρια, οι βούλες των ζαριών και ο κύβος. Το κουμπί Επαναφορά επαναφέρει όλα τα προεπιλεγμένα χρώματα. Όπως και η γλώσσα, τα επιλεγμένα χρώματα διατηρούνται από τη μία συνεδρία στην άλλη.
Η καρτέλα Bearoff διαχειρίζεται τους πίνακες μαζέματος του πίνακα Eval (βλ. Πίνακας Eval). Δεν είναι ούτε ενσωματωμένοι στο εκτελέσιμο ούτε μεταφορτωμένοι: το blunderDB τους υπολογίζει στο μηχάνημα που τους χρησιμοποιεί, και το αποτέλεσμα είναι πανομοιότυπο byte προς byte με ό,τι παράγει το gnubg — το αποτύπωμα SHA-256 ελέγχεται πριν γίνει δεκτός ένας πίνακας.
Οι δύο συνηθισμένοι πίνακες (TS-06-06 για την απόφαση ντάμπλου, OS-06 για το EPC) υπολογίζονται στην πρώτη εκκίνηση, στο παρασκήνιο και χωρίς ερώτηση: περίπου έξι δευτερόλεπτα σε έναν πυρήνα, κατά τη διάρκεια των οποίων η εφαρμογή χρησιμοποιείται κανονικά. Ο πίνακας Eval το αναφέρει μόνο αν τοποθετηθεί εκεί θέση που χρειάζεται πίνακα που δεν είναι ακόμη έτοιμος.
Η καρτέλα δείχνει τον ενεργό τομέα και την προέλευσή του, την κατάσταση του μονόπλευρου πίνακα που διαβάζει το EPC, τον φάκελο όπου ζουν όλα αυτά, και τον κατάλογο των υπαρχόντων πινάκων με το μέγεθος και την ετυμηγορία τους. Κάθε γραμμή διαγράφεται ξεχωριστά, μετά από επιβεβαίωση.
Επαληθευμένος ή μη επαληθευμένος. Ένας επαληθευμένος πίνακας έχει ακριβώς τα byte που παράγει το gnubg για τον τομέα του: το αποτύπωμά του SHA-256 υπάρχει στο blunderDB και βρέθηκε ξανά. Τα αποτυπώματα που έχουν καταγραφεί για τους μονόπλευρους πίνακες (OS-06 έως OS-10) είναι αυτά που παράγει το εργαλείο makebearoff του GNUbg 1.08. Ένας μη επαληθευμένος πίνακας είναι καλοσχηματισμένος αλλά ο τομέας του δεν έχει καταγεγραμμένο αποτύπωμα — δεν του καταλογίζεται τίποτα, απλώς κανείς δεν τον συνέκρινε με την αναφορά. Ένας κατεστραμμένος πίνακας αντιφάσκει με τον εαυτό του και δεν διαβάζεται ποτέ· ξαναϋπολογίζεται.
Υπολογισμός ευρύτερου πίνακα. Ο τομέας επιλέγεται από μια λίστα δύο οικογενειών, μαζί με τον αριθμό πυρήνων που θα του αφιερωθούν (εξ ορισμού όλοι εκτός από έναν, ώστε το μηχάνημα να παραμένει χρησιμοποιήσιμο):
ακριβής κύβος (αμφίπλευρος), από TS-06-06 έως TS-06-15: διευρύνει τον τομέα όπου η πιθανότητα νίκης και η ετυμηγορία κύβου διαβάζονται αντί να εκτιμώνται·
EPC εκτός του σπιτιού (μονόπλευρος), από OS-06 έως OS-10: διευρύνει την απόσταση στην οποία μπορεί να βρίσκεται ένα πούλι χωρίς να σωπάσει το μπλοκ EPC. Αυτή η σάρωση διαβάζει μόνο θέσεις μικρότερες από αυτήν που υπολογίζει, άρα είναι σειριακή εκ κατασκευής και ο αριθμός πυρήνων δεν της χρησιμεύει — ο επιλογέας το λέει γκριζάροντας.
Πριν ξεκινήσει οτιδήποτε, η καρτέλα δηλώνει τρία μεγέθη για τον επιλεγμένο τομέα: το μέγεθος στον δίσκο, τη μνήμη που απαιτείται κατά τον υπολογισμό, και τον χρόνο που θα έπρεπε να πάρει σε αυτό το μηχάνημα. Το τελευταίο ξεκινά ως εκτίμηση και γίνεται μέτρηση: κάθε αρκετά ευρύς υπολογισμός καταγράφει τη δική του ταχύτητα και τη διατηρεί. Ένας τομέας που δεν επιτρέπει η διαθέσιμη μνήμη προσφέρεται σε γκρίζο, με την αιτία — «θα χρειάζονταν 24 GB, απομένουν 12» είναι απάντηση, μια απούσα γραμμή δεν θα ήταν.
Ως τάξη μεγέθους, σε μηχάνημα δεκαέξι νημάτων: ο TS-06-09 ζυγίζει 191 MB και θέλει καμιά δεκαριά δευτερόλεπτα, ο TS-06-11 ζυγίζει 1,2 GB και μερικά λεπτά, ο TS-06-13 ξεπερνά ό,τι μπορούν να κρατήσουν στη μνήμη τα περισσότερα μηχανήματα. Από τη μονόπλευρη πλευρά, σε έναν πυρήνα: ο OS-07 ζυγίζει 4,9 MB και θέλει 17 δ, ο OS-08 15 MB και 1 λ 20, ο OS-10 117 MB και μισή ώρα.
Παύση και συνέχιση. Κατά τον υπολογισμό, η πρόοδος δείχνει τον μετρημένο υπολειπόμενο χρόνο και δύο ξεχωριστά κουμπιά: Παύση και Ακύρωση. Η παύση γράφει την κατάσταση του υπολογισμού δίπλα στον πίνακα· η επανεκκίνησή του συνεχίζει από εκεί που σταμάτησε αντί να ξεκινήσει από την αρχή. Η ακύρωση δεν κρατά τίποτα. Το κλείσιμο του παραθύρου ρυθμίσεων δεν διακόπτει τίποτα — ο υπολογισμός συνεχίζεται στο παρασκήνιο.
Ένας υπολογισμός σε παύση βρίσκεται ξανά στην επόμενη εκκίνηση, ονομασμένος και με ποσοστό («ο TS-06-09 διακόπηκε στο 43 %»), με Συνέχιση και Διαγραφή. Τίποτα δεν ξεκινά μόνο του: ο χρήστης ζήτησε τη διακοπή.
Η καρτέλα επιτρέπει τέλος να δείξετε ένα εξωτερικό αμφίπλευρο αρχείο .bd, για παράδειγμα μια βάση που παρήγαγε το ίδιο το gnubg: κερδίζει ο πίνακας με τον ευρύτερο τομέα.
Η καρτέλα Συντήρηση δείχνει την κατάσταση της βάσης: μία γραμμή ανά λειτουργία, με το πλήθος της, την τελευταία της εκτέλεση (ημερομηνία και έκβαση: ολοκληρώθηκε, ακυρώθηκε ή απέτυχε) και την ενέργειά της. Μόνο ο υπολογισμός των αγώνων χωρίς στατιστικά ξεκινά μόνος του, κατά το άνοιγμα.
Θέσεις χωρίς ανάλυση — οι θέσεις που δεν φέρουν καμία ανάλυση· η ενέργεια είναι η ανάλυση gammonNet που περιγράφεται παρακάτω. Οι θέσεις που το gammonNet αρνείται να αξιολογήσει (ένας χορός, μια βαθμολογία εκτός του πίνακα αγώνα) παραμένουν σε αυτό το πλήθος, που επομένως δεν φτάνει απαραίτητα στο μηδέν.
Παρωχημένες αναλύσεις gammonNet — περιγράφονται παρακάτω.
Αγώνες χωρίς στατιστικά — οι αγώνες των οποίων τα στατιστικά δεν έχουν υπολογιστεί ακόμη· η ενέργεια τα υπολογίζει όλα. Μια βάση ανοιγμένη για εγγραφή που έχει τέτοιους τους υπολογίζει μόνη της στο παρασκήνιο, κατά παρτίδες: η γραμμή κατάστασης δείχνει την πρόοδο αυτής της γραμμής και το κουμπί ακύρωσής της, τα σήματα των τουρνουά και η καρτέλα Παίκτες του πίνακα Στατιστικών περιμένουν το τέλος του υπολογισμού, και η υπόλοιπη εφαρμογή παραμένει χρησιμοποιήσιμη. Το άνοιγμα άλλης βάσης τον σταματά. Σε μόνο ανάγνωση, ή στη γραμμή εντολών, η πρώτη ανάγνωση των στατιστικών τα υπολογίζει, κάτι που μπορεί να διαρκέσει σε μεγάλη βάση: ο πίνακας Στατιστικών δείχνει τότε αυτόν τον αριθμό, που ανοίγει αυτή την καρτέλα.
Στήλες ανάλυσης — οι στήλες που ερωτούν η αναζήτηση και τα στατιστικά είναι προβολή των αποθηκευμένων αναλύσεων, οι οποίες μένουν άθικτες: η ενέργεια τις υπολογίζει εκ νέου χωρίς να εισαγάγει ξανά τίποτα.
Σφάλματα παιγμένων κινήσεων — βαθμολογεί τις παιγμένες κινήσεις που δεν έχουν ακόμη σφάλμα.
Αναλύσεις παλαιάς μορφής — ξαναγράφει σε δυαδική μορφή τις αναλύσεις που μια προηγούμενη έκδοση αποθήκευε σε JSON.
Κάδος — το πλήθος των καταχωρίσεων του κάδου, τον οποίο ανοίγει.
Ανακτήσιμος χώρος — ο ελεύθερος χώρος του αρχείου, τον οποίο η συμπίεση που περιγράφεται παραπάνω επιστρέφει στον δίσκο.
Μια δαπανηρή μέτρηση (διαβάζει έναν ολόκληρο πίνακα) περιμένει το κουμπί Μέτρηση. Ένα πλήθος θέσεων ανοίγει αυτές τις θέσεις στη λίστα· το πλήθος των αγώνων χωρίς στατιστικά ανοίγει αυτούς τους αγώνες στο πάνελ αγώνων. Μια λειτουργία εκτελείται στο παρασκήνιο: η πρόοδός της και ένα κουμπί ακύρωσης εμφανίζονται στη γραμμή κατάστασης, και εκτελείται μία μόνο λειτουργία που γράφει στη βάση κάθε φορά — μια ανάλυση gammonNet, ένα rollout ή άλλη λειτουργία συντήρησης σε εξέλιξη κάνει την επόμενη να απορριφθεί, με το όνομα εκείνης που κατέχει τη βάση. Σε βάση ανοιγμένη μόνο για ανάγνωση, οι ενέργειες είναι απενεργοποιημένες. Οι ίδιες λειτουργίες υπάρχουν στη γραμμή εντολών (blunderdb maintenance).
Η καρτέλα gammonNet ρυθμίζει τον ενσωματωμένο αξιολογητή (βλ. ADR-0011). Δύο βάθη αναζήτησης ρυθμίζονται εκεί, ονομασμένα και αποθηκευμένα ξεχωριστά — η μείωση του ενός δεν τροποποιεί ποτέ το άλλο:
Βάθος εμφάνισης — η διαδραστική άνεση κατά την επεξεργασία του ταμπλό· δεν γράφεται ποτέ στη βάση.
Βάθος ανάλυσης — αυτό που η δέσμη ανάλυσης μετά την εισαγωγή γράφει στην Ανάλυση μιας θέσης.
Και τα δύο έχουν προεπιλογή 2-ply, την κανονική διαμόρφωση. Το μενού επισημαίνει με ⚠ τα βάθη 3-ply και 4-ply, των οποίων το κόστος ανά θέση υπερβαίνει κατά πολύ εκείνο του 2-ply. Η καρτέλα προσφέρει επίσης το κλάδεμα (προεπιλογή k=12) και τον αριθμό των εμφανιζόμενων υποψήφιων κινήσεων (προεπιλογή 10), καθώς και ένα πλαίσιο επιλογής αυτόματη ανάλυση μετά την εισαγωγή το οποίο, μόλις ενεργοποιηθεί, ελέγχει μετά από κάθε εισαγωγή αν απομένουν θέσεις χωρίς καμία ανάλυση (ούτε gammonNet, ούτε XG, ούτε GNUbg, ούτε BGBlitz — ο κανόνας είναι «μια αξιολόγηση συμπληρώνει μόνο ένα κενό», ποτέ αντικατάσταση) και, αν χρειάζεται, ξεκινά στο παρασκήνιο μια ανάλυση gammonNet στο ρυθμισμένο βάθος ανάλυσης. Η γραμμή Θέσεις χωρίς ανάλυση της καρτέλας Συντήρηση επανεκκινεί χειροκίνητα την ίδια συμπλήρωση, χρήσιμη για μια βιβλιοθήκη που δημιουργήθηκε πριν από την ύπαρξη αυτής της λειτουργίας.
Μια αποδοχή ή μια άρνηση αξιολογείται από το gammonNet πάνω στην απόφαση αυτού που διπλασιάζει, πριν από το διπλασιασμό. Μια κρίση gammonNet που είχε γραφτεί σε μια τέτοια απάντηση από προηγούμενη έκδοση του blunderDB έκρινε τον επαναδιπλασιασμό του παραλήπτη: διαγράφεται κατά το άνοιγμα της βιβλιοθήκης ή κατά την εισαγωγή μιας βάσης που τη φέρει. Η αποδοχή ή η άρνηση γίνεται ξανά θέση χωρίς ανάλυση, απούσα από τα στατιστικά μέχρι να την αξιολογήσει εκ νέου η γραμμή Θέσεις χωρίς ανάλυση της καρτέλας Συντήρηση (ή η αυτόματη ανάλυση μετά την εισαγωγή).
Η γραμμή Παρωχημένες αναλύσεις gammonNet της καρτέλας Συντήρηση καλύπτει την αντίστροφη περίπτωση: μια θέση ήδη αναλυμένη από το gammonNet, της οποίας όμως η αποθηκευμένη ανάλυση γράφτηκε από παλαιότερη έκδοση μηχανής από αυτή που τρέχει, ή σε βάθος διαφορετικό από το βάθος ανάλυσης που ρυθμίστηκε παραπάνω, επισημαίνεται εκεί ως παρωχημένη και αξιολογείται εκ νέου. Μια θέση που φέρει επιπλέον ανάλυση XG, GNUbg ή BGBlitz δεν θίγεται ποτέ από αυτή τη δέσμη, ανεξάρτητα από το περιεχόμενό της σε gammonNet — η προστασία του ADR-0013 παραμένει άνευ όρων. Το πλήθος των παρωχημένων θέσεων διαβάζει κάθε ανάλυση gammonNet της βάσης: περιμένει το κουμπί Μέτρηση. Η δέσμη υπολογίζει εκ νέου τη δική της λίστα τη στιγμή που ξεκινά.
Και οι δύο δέσμες είναι οριοθετημένες, ορατές και ακυρώσιμες, ποτέ ένας σιωπηλός δαίμονας: το βάθος τους, η πρόοδός τους (αναλυμένες θέσεις / σύνολο, από 0 κατά την εκκίνηση) και ένα κουμπί ακύρωσης εμφανίζονται στη γραμμή κατάστασης καθ” όλη τη διάρκειά τους, και εξαφανίζονται μόλις ολοκληρωθούν, δίνοντας τη θέση τους σε ένα μήνυμα που συνοψίζει το αποτέλεσμα — πόσες θέσεις αναλύθηκαν, πόσες απορρίφθηκαν (μια θέση που το gammonNet αρνείται να αξιολογήσει, όπως ένα σκορ αγώνα εκτός του εύρους του πίνακά του, κάτι που δεν είναι ποτέ βλάβη) και πόσες απέτυχαν (επαναλαμβάνονται, αμετάβλητες, στην επόμενη εκτέλεση). Το κλείσιμο της εφαρμογής κατά τη διάρκεια της μιας ή της άλλης δεν χάνει τίποτα: κάθε αναλυμένη θέση γράφεται σταδιακά, και η επόμενη εκτέλεση συνεχίζει ακριβώς από εκεί που είχε σταματήσει η ανάλυση, χωρίς κανένα ημερολόγιο να τηρείται. Η ακύρωση όπως και το κλείσιμο διακόπτουν επίσης τη θέση που βρίσκεται υπό υπολογισμό, η οποία παραμένει χωρίς ανάλυση.
Μόνο μία εργασία γράφει στη βιβλιοθήκη κάθε φορά: μια δέσμη gammonNet, ένα αποθηκευμένο rollout ή μια λειτουργία συντήρησης. Μια δέσμη ή λειτουργία που ξεκινά από την καρτέλα Συντήρηση απορρίπτεται όσο εκτελείται άλλη εργασία, και η γραμμή κατάστασης κατονομάζει αυτήν την εργασία· η δέσμη που ξεκινά μια εισαγωγή, μια μεταγραφή ή ένα duel περιμένει αντίθετα να τελειώσει εκείνη, και η γραμμή κατάστασης την εμφανίζει ως «σε αναμονή» μέχρι να ξεκινήσει.
Η ίδια καρτέλα περιέχει τη ρύθμιση των rollout που ξεκινούν από το πάνελ Ανάλυση (βλ. Rollouts), η οποία διατηρείται από συνεδρία σε συνεδρία: Γρήγορο (216 παρτίδες, περικομμένες στις 7 μισές κινήσεις), Στάνταρ (1296 παρτίδες, περικομμένες στις 11 μισές κινήσεις) ή Ελεύθερο, όπου όλες οι παράμετροι επεξεργάζονται — περικοπή, ελάχιστες και μέγιστες παρτίδες (πολλαπλάσια του 36), όριο JSD, βάθος (ply), αριθμός υποψηφίων, σπόρος και αριθμός διεργασιών.
Πίνακας ισοτιμίας αγώνα της βάσης. Στο κάτω μέρος της καρτέλας, η λίστα Πίνακας ισοτιμίας αγώνα (MET) της βάσης επιλέγει τον πίνακα με τον οποίο το gammonNet αξιολογεί τα σκορ αγώνα: Kazaross-XG2, ενσωματωμένος και προεπιλεγμένος, ή πίνακας που εισάγεται από αρχείο .xml του GNUbg με το κουμπί Εισαγωγή MET .xml…. Η επιλογή ανήκει στη βάση, όχι στην εφαρμογή: ανοίγοντας άλλη βάση, βρίσκετε τον πίνακά της. Διαβάζονται μόνο οι ρητοί πίνακες (όχι οι παραμετρικοί πίνακες zadeh ή mec)· πέρα από το μήκος ενός εισαγόμενου πίνακα, αναλαμβάνει ο ενσωματωμένος πίνακας. Ένας πίνακας αναγνωρίζεται από τις τιμές του, όχι από το όνομά του: η εισαγωγή του Kazaross-XG2.xml του GNUbg δεν προσθέτει τίποτα, είναι ο ενσωματωμένος πίνακας. Κάθε ανάλυση που υπολογίζεται από το gammonNet καταγράφει τον πίνακα με τον οποίο υπολογίστηκε· οι εισαγόμενες αναλύσεις (XG, GNUbg, BGBlitz) θεωρούνται υπολογισμένες με Kazaross-XG2. Μια ανάλυση σε σκορ αγώνα που υπολογίστηκε με πίνακα διαφορετικό από τον τρέχοντα επισημαίνεται ως Διαφορετικός MET στο πλαίσιο ανάλυσης και εξαιρείται από τα στατιστικά (μέσοι όροι σφαλμάτων, PR, κατατάξεις, αντιπαραθέσεις)· μια ανάλυση σε money game δεν εξαιρείται ποτέ. Η αλλαγή πίνακα δεν ξαναγράφει καμία ανάλυση: αλλάζει μόνο ό,τι διατηρούν οι συγκρίσεις.
Η ζωντανή αξιολόγηση του πάνελ και ο πίνακας κύβου αποτιμώνται με τον πίνακα της βάσης, όπως και οι αναλύσεις που αποθηκεύει. Ένας πίνακας ταξιδεύει μαζί με τις αναλύσεις που τον αναφέρουν: η εξαγωγή μιας βάσης τον παίρνει μαζί της, και η εισαγωγή μιας βάσης τον προσθέτει στη βάση που τη δέχεται, χωρίς διπλότυπο (ένας πίνακας που υπάρχει ήδη αναγνωρίζεται από τις τιμές του) και χωρίς να τον κάνει τρέχοντα. Μια ανάλυση gammonNet που αντικαθίσταται από ανάλυση άλλης μηχανής (XG, GNUbg) θεωρείται ξανά υπολογισμένη με τον Kazaross-XG2.
Ένας αγώνας που εισήχθη χωρίς ανάλυση αποκτά έτσι PR. Είναι η περίπτωση ενός αγώνα που παίχτηκε διαδικτυακά, ή ενός αρχείου Jellyfish .mat που κανείς δεν πέρασε από το XG: το blunderDB γνώριζε τις θέσεις και τις κινήσεις που παίχτηκαν, αλλά καμία ανάλυση δεν έλεγε τι άξιζαν. Μόλις τρέξει η παρτίδα, η κίνηση που όντως παίχτηκε συγκρίνεται με την κατάταξη του gammonNet και η διαφορά τροφοδοτεί το PR, το ποσοστό σφάλματος, τις χειρότερες αποφάσεις και όλους τους άλλους δείκτες, ακριβώς όπως σε έναν αγώνα αναλυμένο από το XG. Η σύγκριση δεν επινοεί τίποτα: η κίνηση που παίχτηκε προέρχεται από τον πίνακα κινήσεων του αγώνα, γραμμένο κατά την εισαγωγή, είτε το αρχείο έφερε ανάλυση είτε όχι.
Μια βάση που αναλύθηκε με παλαιότερη έκδοση δεν χρειάζεται επανεκτίμηση: το blunderdb repair ξαναϋπολογίζει τις στήλες από τις αναλύσεις και τις κινήσεις που υπάρχουν ήδη και επιστρέφει το PR σε αυτούς τους αγώνες (δείτε repair).
Μια ειλικρινής επιφύλαξη: μια θέση αναγνωρίζεται από τη δομή της, οπότε μια θέση που συναντήθηκε δύο φορές — παιγμένη καλά τη μία και άσχημα την άλλη — φέρει μία μόνο διαφορά, εκείνη της πρώτης καταγεγραμμένης εμφάνισής της. Δεν είναι ιδιαιτερότητα αυτού του υπολογισμού: μια βιβλιοθήκη XG έχει ακριβώς την ίδια μορφή.
Παρακολουθούμενος φάκελος
Η καρτέλα Παρακολουθούμενος φάκελος ζητά από το blunderDB να κοιτάζει έναν φάκελο όσο τρέχει και να εισάγει κάθε αρχείο αγώνα που εμφανίζεται εκεί. Παίζεις μια συνεδρία στο eXtreme Gammon, γυρνάς στο blunderDB, και βρίσκεις τους αγώνες ήδη εκεί.
Τίποτα δεν μαντεύεται. Όσο δεν έχει οριστεί φάκελος, δεν υπάρχει παρακολούθηση: το blunderDB δεν αρχίζει να διαβάζει έναν κατάλογο επειδή υπέθεσε πού ζουν οι αγώνες σας. Το κουμπί Πρόταση κοιτάζει τις συνηθισμένες θέσεις αυτού του μηχανήματος και προτείνει μία μόνο αν υπάρχει πραγματικά· αλλιώς το λέει, και ο ορισμός του φακέλου είναι δική σας δουλειά.
Τρία πράγματα αξίζει να ξέρετε πριν τσεκάρετε το κουτί:
Εισάγονται μόνο τα αρχεία που εμφανίζονται. Ό,τι περιέχει ήδη ο φάκελος τη στιγμή που ξεκινά η παρακολούθηση καταγράφεται ως γνωστό και αφήνεται ήσυχο: το να στρέψεις μια παρακολούθηση σε τέσσερα χρόνια αγώνων δεν πρέπει να τους εισαγάγει όλους. Για να εισαγάγετε ό,τι υπάρχει, χρησιμοποιήστε την εισαγωγή φακέλου, που υπάρχει γι” αυτό — και οι δύο συνδυάζονται πολύ καλά, πρώτα η εισαγωγή, μετά η παρακολούθηση.
Ένα αρχείο εισάγεται μόνο αφού σταθεροποιηθεί το μέγεθός του. Ένας αγώνας που γράφει ένα άλλο πρόγραμμα μεγαλώνει από τη μια ματιά στην άλλη· το να τον εισαγάγεις μισογραμμένο θα έδινε ένα σφάλμα ανάλυσης με το οποίο κανείς δεν μπορεί να κάνει τίποτα. Το blunderDB περιμένει λοιπόν να δει δύο φορές το ίδιο αρχείο αμετάβλητο.
Η εισαγωγή είναι αθόρυβη. Μελετούσατε μια θέση όταν έφτασαν οι αγώνες σας: το να σας πάρει την οθόνη θα ήταν η χειρότερη στιγμή. Η λειτουργία, η ενεργή αναζήτηση, η καρτέλα και η θέση που εμφανίζεται δεν αλλάζουν· η λίστα θέσεων δεν επαναφορτώνεται και δείχνει τους νέους αγώνες στην επόμενη επαναφόρτωση. Η εισαγωγή γίνεται χωρίς παράθυρο και η γραμμή κατάστασης εμφανίζει ένα banner με τον αριθμό των αγώνων που εισήχθησαν, παραλείφθηκαν (διπλότυπα) και απέτυχαν, με ένα κουμπί που ανοίγει την πλήρη αναφορά αν το επιθυμείτε. Όλα τα υπόλοιπα είναι ίδια με μια χειροκίνητη εισαγωγή: τα ίδια διπλότυπα εντοπίζονται, η ίδια δέσμη εισαγωγής, η ίδια αυτόματη ανάλυση αν είναι ενεργοποιημένη.
Το προεπιλεγμένο διάστημα είναι δέκα δευτερόλεπτα· το κατώτατο όριο δύο. Ο φάκελος δεν διατρέχεται αναδρομικά: ένας παρακολουθούμενος φάκελος είναι εκεί όπου ένα εργαλείο αφήνει τους αγώνες του, όχι ένα δέντρο προς εξερεύνηση. Ένα αποπροσαρτημένο δικτυακό κοινόχρηστο δεν σταματά την παρακολούθηση, ούτε κάνει το περιεχόμενό του να περάσει για νέο όταν επιστρέψει.
Η ίδια παρακολούθηση υπάρχει στη γραμμή εντολών, με blunderdb import --type batch --dir <φάκελος> --watch (δείτε Διεπαφή γραμμής εντολών (CLI)): είναι η μορφή που μπορεί να χρησιμοποιήσει ένας διακομιστής, μια προγραμματισμένη εργασία ή ένα σενάριο.
Συγχρονισμός δύο υπολογιστών
Η αντιγραφή της βάσης .db από τον έναν υπολογιστή στον άλλο, ή η τοποθέτησή της σε συγχρονισμένο φάκελο (Syncthing, Dropbox…), καταλήγει να την καταστρέψει: η SQLite γράφει δίπλα στη βάση αρχεία ημερολογίου που ο συγχρονισμός αρχείων αντιγράφει με λάθος σειρά. Το blunderDB συγχρονίζει αντίθετα δύο βιβλιοθήκες με σταδιακές εξαγωγές που αποθέτονται σε έναν φάκελο τον οποίο ο άλλος υπολογιστής παρακολουθεί. Η μεταφορά είναι δική σας επιλογή — Syncthing, USB stick, ηλεκτρονικό ταχυδρομείο: δεν υπάρχει ούτε διακομιστής ούτε λογαριασμός.
Στον υπολογιστή Α, στο παράθυρο εξαγωγής, επιλέξτε Ολόκληρη η βιβλιοθήκη, τσεκάρετε Μόνο ό,τι είναι νέο από την τελευταία εξαγωγή σε αυτόν τον φάκελο και ορίστε τον φάκελο με Επιλογή φακέλου…. Κάθε εξαγωγή γράφει εκεί ένα αρχείο
sync-<machine>-<date>.dbπου περιέχει μόνο ό,τι έχει μπει στη βιβλιοθήκη από την προηγούμενη εξαγωγή προς τον ίδιο φάκελο· η πρώτη περιέχει τα πάντα.Στον υπολογιστή Β, ορίστε αυτόν τον φάκελο ως Παρακολουθούμενος φάκελος. Κάθε αρχείο
.dbπου εμφανίζεται εκεί συγχωνεύεται χωρίς προεπισκόπηση, όπως με την εισαγωγή μιας βάσης: μια ήδη γνωστή θέση δεν διπλασιάζεται, ένας ήδη γνωστός αγώνας αναγνωρίζεται, οι συλλογές και τα μαθήματα συγχωνεύονται με βάση το όνομά τους.Κάντε το ίδιο και προς την αντίθετη κατεύθυνση, με δεύτερο φάκελο.
Τι πρέπει να γνωρίζετε:
Το σημάδι «τελευταίος συγχρονισμός» βρίσκεται σε όποιον εξάγει, ένα ανά φάκελο προορισμού, και προχωρά μόνο όταν το αρχείο είναι πλήρες. Ο υπολογιστής που λαμβάνει δεν καταγράφει τίποτα. Μια εξαγωγή που αποτυγχάνει αφήνει το σημάδι στη θέση του: η επόμενη μεταφέρει τις ίδιες γραμμές.
Ο συγχρονισμός γίνεται μόνο με προσθήκη. Μια διαγραφή δεν διαδίδεται: η διαγραφή ενός αγώνα στον Α δεν τον διαγράφει στον Β. Ούτε μια αλλαγή επί τόπου: ένα ξαναγραμμένο σχόλιο, ένας μετονομασμένος αγώνας, μια ανάλυση που ξαναέγινε σε θέση που έχει ήδη σταλεί. Φεύγουν οι θέσεις, οι αγώνες, τα τουρνουά, οι συλλογές, τα μαθήματα και τα σχόλια που μπήκαν από την τελευταία εξαγωγή· μια συλλογή φεύγει ξανά και όταν της έχει προστεθεί μια θέση, και μια θέση όταν της έχει προστεθεί ένα σχόλιο. Ένα ξαναγραμμένο σχόλιο δεν φεύγει ξανά, γιατί ο υπολογιστής που λαμβάνει δεν αντικαθιστά ποτέ ένα κείμενο που ήδη έχει: για να περάσει μια διόρθωση, προσθέστε την ως νέο σχόλιο. Τα αποθηκευμένα φίλτρα και οι τράπουλες Anki δεν περιλαμβάνονται: μια εξαγωγή του Ολόκληρη η βιβλιοθήκη χωρίς το πλαίσιο τα περιλαμβάνει.
Ό,τι έχει λάβει ένας υπολογιστής ξαναφεύγει μία φορά προς τον άλλον, αφού είναι νέο στη βιβλιοθήκη του· ο άλλος το αναγνωρίζει χωρίς να προσθέσει τίποτα, και η επόμενη ανταλλαγή είναι κενή.
Ένα αρχείο που έφτασε ενώ το blunderDB ήταν κλειστό δεν χάνεται: κατά την εκκίνηση της παρακολούθησης, κάθε
.dbπου υπάρχει ήδη στον φάκελο συγχωνεύεται, σε αντίθεση με τα αρχεία αγώνων. Ο υπολογιστής που λαμβάνει δεν σημειώνει τι έχει διαβάσει· συγχωνεύει λοιπόν ξανά, σε κάθε εκκίνηση, όλα τα αρχεία που ο φάκελος περιέχει ακόμη, χωρίς να προσθέτει τίποτα, αλλά με το κόστος του χρόνου για να τα διαβάσει ξανά. Διαγράφετε κατά διαστήματα τα ήδη ληφθέντα αρχείαsync-…ώστε η εκκίνηση αυτή να παραμένει γρήγορη.Μια σταδιακή εξαγωγή δεν αντικαθιστά ποτέ ένα αρχείο. Το προηγούμενο αρχείο ίσως περιέχει γραμμές που ο άλλος υπολογιστής δεν έχει λάβει ακόμη: μια εξαγωγή σε όνομα αρχείου που υπάρχει ήδη απορρίπτεται. Ορίστε τον φάκελο, και κάθε εξαγωγή παίρνει εκεί νέο όνομα.
Ένα αρχείο που ξαναγράφτηκε με όνομα που έχει ήδη εμφανιστεί συγχωνεύεται ξανά: η παρακολούθηση αναγνωρίζει ένα αρχείο από το όνομα, το μέγεθος και την ημερομηνία τροποποίησής του.
Η ανοιχτή βιβλιοθήκη δεν συγχωνεύεται ποτέ με τον εαυτό της: αν βρίσκεται στον παρακολουθούμενο φάκελο, η παρακολούθηση την παρακάμπτει.
Μια εξαγωγή που χρειάστηκε να παραμερίσει γραμμές (αναφέρονται στο ημερολόγιο) δεν προωθεί το σημάδι: η επόμενη τις ξαναδοκιμάζει, μαζί με ό,τι ακολουθεί.
Μια εξαγωγή δεν φαίνεται ποτέ μισογραμμένη: γράφεται με κρυφό όνομα και μετά μετονομάζεται με μιας. Ένα αρχείο προστατευμένο με κωδικό (
.dbx) δεν λαμβάνεται από την παρακολούθηση, που δεν μπορεί να ζητήσει τον κωδικό.
Στη γραμμή εντολών, blunderdb export --type database --incremental --file <φάκελος> από τη μία πλευρά και blunderdb import --type batch --dir <φάκελος> --watch από την άλλη (βλ. Διεπαφή γραμμής εντολών (CLI)). Ο διακομιστής δέχεται "incremental": true στο /v1/exports.sqlite (βλ. Λειτουργία χωρίς γραφικό περιβάλλον (διακομιστής)).
Βοηθός και MCP
Η καρτέλα Βοηθός και MCP ρυθμίζει δύο πράγματα, και τα δύο απενεργοποιημένα από προεπιλογή.
Ο τοπικός διακομιστής MCP προσφέρει τα εργαλεία του blunderDB (αναζήτηση, ανάγνωση μιας θέσης και της ανάλυσής της, στατιστικά ενός παίκτη, κουίζ…) σε έναν βοηθό που μιλά το Model Context Protocol, όπως το Claude Desktop ή το Claude Code, όσο το παράθυρο είναι ανοιχτό. Ακούει μόνο σε αυτό το μηχάνημα, στη διεύθυνση http://127.0.0.1:<port>/mcp (θύρα 8765 από προεπιλογή), και απορρίπτει ένα αίτημα που προέρχεται από ιστοσελίδα. Προσθέτει δύο εργαλεία εμφάνισης: το άνοιγμα μιας προβολής πάνω σε μια αναζήτηση και την εμφάνιση μιας θέσης. Τα εργαλεία απλώς διαβάζουν, εκτός αν είναι επιλεγμένο το Να επιτρέπεται η εγγραφή: τότε μπορούν να αποθηκεύσουν μια θέση, να τη σχολιάσουν, να δημιουργήσουν και να γεμίσουν μια συλλογή, να βαθμολογήσουν μια κάρτα Anki και να καταγράψουν ένα rollout δίπλα στην ανάλυση μιας θέσης· τίποτα δεν διαγράφεται. Χωρίς ανοιχτό παράθυρο, η εντολή blunderdb mcp εξυπηρετεί τα ίδια εργαλεία (βλ. Διεπαφή γραμμής εντολών (CLI)).
Ο εσωτερικός βοηθός είναι πελάτης των ίδιων αυτών εργαλείων. Δεν περιλαμβάνεται κανένα μοντέλο: απευθύνεται σε έναν πάροχο συμβατό με το OpenAI — από προεπιλογή το Ollama σε αυτό το μηχάνημα, ή το Groq, το OpenRouter, το Gemini, το Anthropic ή άλλη διεύθυνση. Απομακρυσμένη είναι κάθε διεύθυνση εκτός αυτού του μηχανήματος, όποιος κι αν είναι ο πάροχος που επιλέχθηκε: οι προτάσεις σας και τα αποτελέσματα των εργαλείων φεύγουν τότε από το μηχάνημα, η καρτέλα το αναφέρει και περιμένει τη συγκατάθεσή σας για αυτή ακριβώς τη διεύθυνση· μια άλλη διεύθυνση τη ζητά ξανά. Το κλειδί API αποθηκεύεται στην κλειδοθήκη του συστήματος, ποτέ στη βάση δεδομένων ή στο αρχείο ρυθμίσεων. Το μοντέλο που προτείνεται από προεπιλογή για το Ollama, qwen2.5:7b, είναι ένα σημείο εκκίνησης, όχι σύσταση: καμία σύσταση μοντέλου δεν γίνεται χωρίς βαθμολογία από το πρόγραμμα μέτρησης που διανέμεται με τον πηγαίο κώδικα.
Μόλις ενεργοποιηθεί, ο βοηθός είναι μια υποκαρτέλα Βοηθός του πάνελ Αναζήτησης. Μια πρόταση — «τα λάθη μου άνω των 50 χιλιοστοπόντων στο τρέξιμο» — ανοίγει μια νέα προβολή με το όνομά της, εκτελεί εκεί την αναζήτηση και μεταβαίνει σε αυτήν· τα διακριτικά της παραμένουν στο ιστορικό αναζητήσεων. Όσα επιστρέφουν τα εργαλεία προέρχονται από τη βάση· όσα γράφει το μοντέλο επισημαίνονται ως Ελεύθερο κείμενο του μοντέλου. Ο βοηθός προτείνει τροποποίηση μόνο αν είναι επιλεγμένο το πλαίσιο Να μπορεί ο βοηθός να προτείνει αλλαγές (καθεμία επιβεβαιωμένη) — μια ρύθμιση ξεχωριστή από την εγγραφή του τοπικού διακομιστή MCP — και κάθε τροποποίηση που προετοιμάζει εμφανίζεται και γίνεται μόνο μετά το Επιβεβαίωση.
Το παράθυρο διαμόρφωσης παρέχει επίσης ρυθμίσεις εμφάνισης της διεπαφής. Ένα ρυθμιστικό κλίμακας διεπαφής σας επιτρέπει να μεγεθύνετε ή να σμικρύνετε όλα τα στοιχεία της διεπαφής, κάτι που είναι χρήσιμο σε οθόνες υψηλής πυκνότητας ή για τη βελτίωση της αναγνωσιμότητας. Οι συντομεύσεις CTRL-+, CTRL– και CTRL-0 ρυθμίζουν την ίδια κλίμακα, όπως σε έναν περιηγητή. Ένα μενού θέσης των πλαισίων καθορίζει πού εμφανίζονται τα πλαίσια (αναζήτηση, ματς, ανάλυση) σε σχέση με το ταμπλό: κάτω, στο πλάι ή αυτόματα (το πλάι επιλέγεται τότε σε πλατιές οθόνες για την καλύτερη αξιοποίηση του διαθέσιμου χώρου). Όπως και οι άλλες ρυθμίσεις, αυτές οι επιλογές διατηρούνται από τη μία συνεδρία στην άλλη.
Ξεναγήσεις και βάση δείγματος
Για να διευκολυνθεί η εξοικείωση, το blunderDB προσφέρει ξεναγήσεις του περιβάλλοντος. Ο κατάλογος των ξεναγήσεων ανοίγει από τη γραμμή εργαλείων ή με την εντολή tutorial (ψευδώνυμο tour). Είναι διαθέσιμες επτά ξεναγήσεις: μια γενική ξενάγηση του περιβάλλοντος, και ξεναγήσεις αφιερωμένες στην αναζήτηση θέσεων, στην ανασκόπηση αγώνων, στην ανασκόπηση τουρνουά, στον πίνακα Eval, στην επανάληψη Anki και στα στατιστικά. Κάθε ξενάγηση επισημαίνει τα σχετικά στοιχεία του περιβάλλοντος, βήμα προς βήμα, ανοίγει τον πίνακα για τον οποίο μιλά, και μπορεί να επαναληφθεί ανά πάσα στιγμή. Κατά την πρώτη εκκίνηση, η γενική ξενάγηση προτείνεται αυτόματα.
Η εντολή demo φορτώνει μια βάση δείγματος που επιτρέπει την εξερεύνηση των λειτουργιών του εργαλείου χωρίς εισαγωγή δικών σας παρτίδων: τρεις αγώνες (δύο από τους οποίους ομαδοποιημένοι σε ένα τουρνουά) αναλυμένους από τα eXtreme Gammon, BGBlitz και gammonNet, τρεις θεματικές συλλογές, σχόλια με ετικέτες (#blunder, #cube) και μια τράπουλα Anki με το ημερολόγιο επαναλήψεών της. Οι παίκτες, το τουρνουά και ο τόπος είναι φανταστικοί. Οι καθοδηγούμενες περιηγήσεις βασίζονται σε αυτή τη βάση όταν καμία βάση δεν είναι ανοιχτή.
Επεξεργασία θέσεων
Το πάτημα του πλήκτρου TAB ανοίγει τον πίνακα αναζήτησης και επιτρέπει την επεξεργασία μιας θέσης στο ταμπλό για την προσθήκή της στη βάση δεδομένων ή τον ορισμό μιας δομής θέσης προς αναζήτηση. Η κατανομή των πουλιών, ο κύβος (cube), το σκορ και η σειρά μπορούν να τροποποιηθούν με τη βοήθεια του ποντικιού (βλ. Επεξεργασία θέσης).
Πρακτική συμβουλή
Ανατρέξτε στο Συντομεύσεις πληκτρολογίου για τις διαθέσιμες συντομεύσεις.
Η γραμμή εντολών
Η γραμμή εντολών, ενσωματωμένη στη γραμμή κατάστασης, επιτρέπει την εκτέλεση του συνόλου των λειτουργιών του blunderDB που είναι διαθέσιμες στη γραφική διεπαφή: γενικές λειτουργίες στη βάση δεδομένων, πλοήγηση θέσεων, εμφάνιση της ανάλυσης ή/και των σχολίων, αναζήτηση θέσεων με βάση φίλτρα… Μετά την πρώτη εξοικείωση με τη διεπαφή, συνιστάται η σταδιακή χρήση της γραμμής εντολών, η οποία επιτρέπει μια ισχυρή και ομαλή χρήση του blunderDB, ιδίως για τις λειτουργίες αναζήτησης θέσεων.
Για να ανοίξετε τη γραμμή εντολών, πατήστε το πλήκτρο SPACE. Για να υποβάλετε ένα ερώτημα και να κλείσετε τη γραμμή εντολών, πατήστε το πλήκτρο ENTER.
Το blunderDB εκτελεί τα ερωτήματα που αποστέλλονται από τον χρήστη υπό την προϋπόθεση ότι είναι έγκυρα και τροποποιεί αμέσως την κατάσταση της βάσης δεδομένων εφόσον χρειάζεται. Δεν απαιτούνται ρητές ενέργειες αποθήκευσης από την πλευρά του χρήστη.
Πρακτική συμβουλή
Ανατρέξτε στο λίστα εντολών για τη λίστα των διαθέσιμων εντολών στη γραμμή εντολών.
Η παλέτα εντολών
Η παλέτα εντολών (CTRL-SHIFT-P) βρίσκει με ένα κατά προσέγγιση όνομα ό,τι δεν ξέρετε πια πού να αναζητήσετε: μια εντολή της γραμμής εντολών, μια καρτέλα, ένα φίλτρο της βιβλιοθήκης ή έναν αγώνα. Τα γράμματα που πληκτρολογείτε πρέπει να εμφανίζονται με τη σειρά, όχι απαραίτητα το ένα δίπλα στο άλλο, χωρίς διάκριση πεζών-κεφαλαίων και τόνων: το «μτρκβ» βρίσκει τη μήτρα του κύβου, το «lyon» τους αγώνες ενός τουρνουά στη Λυών.
Τα βέλη επιλέγουν, το ENTER εκτελεί, το ESC κλείνει. Μια εντολή εκτελείται σαν να είχε πληκτρολογηθεί· τα s και ss ανοίγουν τη γραμμή εντολών για να γράψετε εκεί τα φίλτρα· ένα φίλτρο εκτελείται όπως με διπλό κλικ στη βιβλιοθήκη· ένας αγώνας ανοίγει όπως με διπλό κλικ στο πάνελ Αγώνων.
Όταν είναι ανοιχτή μια Direction, η παλέτα προσθέτει το τουρνουά: παίκτες, τραπέζια, αγώνες σε εξέλιξη και αγωνίσματα (βλ. γρήγορη αναζήτηση).