Die neue Version bringt abgesehen von einem neuen Versionierungsschema vor allem die Möglichkeit mit, mehrere Rechner für die Anmeldung und Auswertung per LAN oder WLAN zu vernetzen, was vor allem für große Turniere eine deutliche Erleichterung bedeutet.
Muckturnier kann jetzt Netzwerk
Die 1. Oberfränkische Muckmeisterschaft auf dem letztjährigen Hofer Volksfest war bis dahin das mit einigem Abstand größte Muckturnier, was mit dem Muckturnier-Programm ausgewertet wurde. Auch bedingt durch die vielen Karter ging es nicht mehr nur um die Auswertung, sondern vor allem auch um die Anmeldung: Mehr als 100 Voranmeldungen und zusätzlich die Anmeldungen vor Ort wollten organisiert werden.
Es wurden zwei Rechner zur Anmeldung benutzt, um lange Schlangen zu vermeiden. Dank der kurz vorher eingeführten Markierungen klappte die Anmeldung und auch das Zusammenführen der beiden Datenbanken – aber nicht Endbenutzer-geeignet. Auch der Vergleich der Ranglisten der beiden Rechner (doppelte Buchführung um Eingabefehler zu finden) funktionierte dank der Prüfsummen-Funktion; auch hier eröffnete sich aber defintiv noch Raum nach oben.
Sowas gehört sich mit Netzwerk gemacht. Nur wie?! Mit Netzwerk hatte ich programmiertechnisch noch nie zu tun … asynchrone Kommunikation zwischen mehreren Teilnehmern? Aber so schlimm war es gar nicht ;-) Nach etwas (und etwas mehr) Einarbeitung und viele, viele Zeilen Code später gibt es nunmehr zwei Server-Client-Funktionen:
Anmeldungsnetzwerk: Ein Rechner fungiert als Server, an dem sich mehrere Clients anmelden können. So können mehrere Rechner für die Anmeldung genutzt werden, und alle Änderungen an der Paar- bzw. Spielerliste werden immer automatisch an alle Rechner geschickt. Alle Beteiligten sehen immer den aktuellen Stand.
Ranglistennetzwerk: Ein Rechner ist der Server, mehrere Clients können die Server-Rangliste anfragen. Ein Client vergleicht dann die Server-Rangliste mit seiner eigenen und zeigt etwaige Unterschiede an.
Verbesserungen am Windows-Installer
Der Windows-Installer legt jetzt Registry-Einträge an, mit denen die Deinstallation über die Windows-Softwareverwaltung möglich wird. Bei einem Upgrade wird die vorher installierte Version jetzt automatisch deinstalliert, damit keine veralteten Dateien übrigbleiben. Weiterhin wird bei einem Downgrade eine Warnung angezeigt.
Es wird jetzt automatisch das Installations-Zielverzeichnis der zuletzt installierten Version ausgewählt, sofern es eine alte Installation gibt.
Installer und Uninstaller sind jetzt mit eigenen Icons, Bildern und Willkommensseiten deutlich schicker :-)
Weitere Änderungen
Verbesserung: Wenn jetzt eine Spielstand-Spin-Box angeklickt wird, dann wird der bisher eingegebene Text (also der aktuelle Spielstand) komplett markiert, so dass eine Eingabe den bisherigen Spielstand überschreibt (und man den alten nicht erst löschen muss).
Neu: Es kann jetzt eine Standardmarkierung („Automatische Markierung“) ausgewählt werden, mit der alle neuen Paare/Spieler nach dem Anmelden markiert werden. Standardmäßig ist keine Markierung, also „(unmarkiert)“ gesetzt.
Bugfix: Wenn markierte Anmeldungen ausgeblendet sind und dann die ganze Paar-/Spielerliste gelöscht wird, dann werden die entsprechenden Markierungen jetzt automatisch wieder eingeblendet, damit beim nächsten Benutzen die jeweilige Markierung nicht (unerwarteterweise) auf „ausgeblendet“ gesetzt ist und der oder die markierte(n) Eintrag/Einträge „verschwinden“.
Bugfix: Das Programm konnte zum Absturz gebracht werden, wenn man in der „Markierung“-Spalte auf der Paare- bzw. Spielerseite den Namen einer Markierung editiert hat. Die ganze Spalte sollte natürlich gar nicht erst editierbar sein, und das ist jetzt der Fall.
Bugfix: Wenn man ein Paar bzw. einen Spieler umbenennt oder löscht, dann wird ein evtl. angezeigtes Suchergebnis wieder korrekt wiederhergestellt und aktualisiert, anstatt die Suche zu beenden und wieder die komplette Liste anzuzeigen.
Neu/Bugfix: Es gibt jetzt unter Windows einen „Kontexthilfe“-Menüeintrag, da Windows es nicht zulässt, das Kontexthilfe-Fragezeichen neben Minimier- und Maximier-Buttons in der Fenstertitelleiste anzuzeigen. Damit kann die Kontexthilfe jetzt auch unter Windows aufgerufen werden.
Das Muckturnier der JU Leupoldsgrün ist die Wiege des Muckturnier-Programms. Hier wurde die Idee dafür geboren, hier kam 2011 die erste Beta-Version zum Einsatz, und 2012 dann Version 0.1 – und auch jetzt wird das Turnier nach wie vor mit dem Muckturnier-Programm ausgewertet.
Am Freitag, den 22. März ist es wieder so weit: Die JU Leupoldsgrün veranstaltet ihr alljährliches Muckturnier im Schützenhaus in Leupoldsgrün. Die Anmeldung startet um 18.00 Uhr, los geht es um 19.00 Uhr. Für 100 Karter ist Platz. Das ist immer eine sehr schöne Veranstaltung, die man sich nicht entgehen lassen sollte!
Die Versionierung von Muckturnier bedarf einer Überarbeitung. Ein durchdachtes und auch oft benutztes System zur Versionierung ist das Semantic Versioning. An das wird die Versionierung von Muckturnier ab dem nächsten Release angelehnt (nicht ganz so, wie es da steht, aber prinzipiell).
Die Sache ist eigentlich ganz einfach: Der erste Teil der Versionsnummer („Major“) wird hochgezählt, wenn es grundlegende Änderungen gibt. Der zweite Teil („Minor“) bei Funktionserweiterungen bzw- änderungen, und der dritte („Patch“) bei Bugfixes und ansonsten unverändertem Funktionsumfang.
Schluss mit „Null Punkt“
Seit fast sieben Jahren hat das Muckturnier-Programm jetzt die Versionsnummer „0.“, obwohl es einige grundlegende Änderungen gab, und das Programm seit Jahren produktiv eingesetzt wird.
Laut dem „Semantic Versioning“ ist Version Null für die initiale Entwicklungsphase gedacht. Sobald ein Programm produktiv eingesetzt wird, sollte es als Version 1.0 (oder wie die coolen Kids heutzutage sagen: „1.0.0“) vorliegen. Das hätte also schon längst passieren sollen, denn abgesehen vom Produktiveinsatz mag man es vermutlich mittlerweile durchaus als „stabil“ bezeichnen.
Wenn das nächste Release noch die neue Netzwerkfunktionaliät mitbringt (Anmeldung der Spieler an beliebig vielen Rechnern gleichzeitig und Vergleich von Ranglisten übers Netzwerk, bereits zu bestaunen in git master), kann man denke ich auch langsam von „Feature Completeness“ sprechen.
Die Null muss also weg. Da es aber zum einen da draußen durchaus Entwickler gibt, die mit dem Brustton der Überzeugung ihren ersten einigermaßen lauffähigen Brocken Code mit dem Titel „1.0“ ins Internet schmeißen und zum anderen schon sehr, sehr viel Entwicklungsarbeit in das Muckturnier-Programm eingeflossen ist, denke ich, dass „Version 1.0“ für das nächste Release nicht unbebdingt angemessen wäre.
Lassen wir einfach zwei Versionsnummern aus
Es gab seit Version 0.1 zwei fundamentale Codebasis-Änderungen: Die ersten Versionen waren in PHP, JavaScript und HTML programmiert und wurden mittels eines HTTP-Servers und Webbrowsers angezeigt. Dann gab es ein komplettes Rewrite nach Python und PyQt, und schließlich ein weiteres Rewrite für die jetzt aktuelle C++/Qt-Version.
Hätte ich damals (dem „Semantic Versioning“ folgend) eine „für den Produktiveinsatz bereite“ Version 1.0 getaggt, dann wären wir jetzt folgerichtig bei Version 3.0, oder – wenn man den Sprung von Qt 4 zu Qt 5 während der Python-Phase mitzählt – sogar schon bei Version 4.0. Aber man muss es ja nicht übertreiben.
Um dem Muckturnier-Programm nicht den „ungetestete, neue Software“-Anstrich der Version 1.0 zu verpassen, und der tatsächlichen Entwicklungshistorie Rechnung zu tragen, wird auf die Version 0.7.7 von Muckturnier jetzt einfach Version 3.0 folgen, und ab dann wird die Versionsnummer vernünftig hochgezählt.
Nur für den Fall, dass sich einer wundert, wo die Versionen 1.0 und 2.0 abgeblieben sind ;-)
Über der Auswertung der 1. Oberfränkischen Muckmeisterschaft sind ein paar Sachen aufgefallen, die besser/schöner/schneller hätten gehen können – worauf man nie gekommen wäre, wenn man kein Turnier mit 118 teilnehmenden Paaren ausgewertet hätte und dabei teilweise fast schon ins Schwitzen gekommen wäre.
Muckturnier 0.7.7 bringt ein paar substanzielle Verbesserungen für große Muckturniere, aber „kleine“ oder besser gesagt „normale“ (also welche in der Größenordnung von ≤ 100 Teilnehmern bzw. 50 Paaren) profitieren davon natürlich gleichermaßen.
Namentlich:
Bessere Suchfunktion, Paar-/Spielerauswahl ist jetzt durchsuchbar
Die letzte Version brachte eine „unscharfe“ Suche mit, womit man nicht nur ungeachtet der Groß- und Kleinschreibung suchen konnte, sondern auch das Schreiben oder Weglassen von z. B. Akzenten etc. egal war. So weit, so gut, aber das ist nicht genug: Die Teilnehmer schreiben nicht brav „Nachname 1 Vorname 1 / Nachname 2 Vorname 2“ auf den Ergebniszettel. Wenn „Meier Bernd / Müller Peter“ angemeldet sind, dann bekommt man einen Zettel mit „Müller P. / Meier“ oder sowas, und das Geschmiere kann man kaum lesen.
Das Heraussuchen der Paare aus einer anfangs 118 Einträge langen Liste, teilweise die Namen in einer anderen Reihenfolge, sorgte für Stress. Das musste komfortabler gehen!
Der neuen Suchfunktion jetzt auch die Reihenfolge der Eingabe egal. Um beim obigen Beispiel zu bleiben: „Meier Bernd / Müller Peter“ findet man jetzt auch, wenn man nach „peter mueller bernd meier“ sucht. Oder nach Teilen davon. Allein das Eingeben von „me mü“ (oder auch „me mu“ oder „Be Pe“) listet den Eintrag als Treffer – und mit hoher Wahrscheinlichkeit als einzigen oder als einem einer Handvoll:
Getestet am Original-Datensatz der 1. Oberfränkischen Muckmeisterschaft ergab das Eingeben der ersten zwei Buchstanden jedes Nachnamens der Spieler in einem Paar in der guten Hälfte der Fälle nur noch einen einzigen Treffer.
Aber die eigentlich relevante Neuerung ist: Die Auswahlfelder bei der Ergebniseingabe sind jetzt genauso durchsuchbar, wie die Anmelde- und die Ergebnisse-Seite (was erstaulich schwierig zu implementieren war …).
Das beschleunigt das Eingeben (der 1. Runde) – auch bei wenigen Spielern – ganz erheblich, da man nicht mehr die ganze Liste absuchen muss, um das jeweilige Paar bzw. den jeweiligen Spieler zu finden!
Besserer Abgleich der Ranglisten mehrerer Rechner
Die letzte Version brachte sog. „Prüfsummen“ mit, mit denen man auf einen Blick abgleichen konnte, ob die Ranglisten von zwei Rechnern identisch sind, also alle Ergebnisse gleich eingegeben wurden.
Die Idee war gut, aber das Problem bei der Muckmeisterschaft war, dass natürlich nicht alle Ergebnisse auf Anhieb korrekt eingegeben wurden (bis auf ein einziges Mal in Runde 5), so dass diese Funktion uns in vier von fünf Fällen nicht ersparte, trotzdem die ganze Rangliste durchzugehen und nach den falschen Punkten zu suchen (und das dauert bei 118 Paaren seine Zeit …)
Jetzt gibt es einen eigenen Dialog für Prüfsummen. Oben steht die komplette Prüfsumme der Rangliste. Wenn diese nicht übereinstimmt, dann kann man folgendes machen: Die Rangliste wird halbiert, und für jede Hälfte wird die jeweilige Prüfsumme berechnet. Jetzt schaut man sich die Teil-Prüfsummen an. Weichen beide ab, dann teilt man die erste Hälfte wieder in zwei Hälften. Wenn nur die zweite abweicht, dann sind alle Plätze in der ersten Hälfte korrekt, und man teilt die zweite Hälfte weiter auf, weil da der Fehler liegt.
So kann man schnell den oder die falschen Ranglistenplatz/-plätze eingrenzen, ohne die ganze Liste kontrollieren zu müssen. Um beim Beispiel der Muckmeisterschaft zu bleiben: Halbiert man bei 118 Paaren einen Ranglistenabschnitt drei mal weiter, dann gibt es schon bloß noch acht Plätze zur Auswahl, die falsch sein können.
„Richtige“ Markierungen
Die bisherige Implementierung der Markierungen war etwas unorthodox: Es wurde entweder vor oder nach dem Namen des Paars/Spielers ein zusätzliches Zeichen gesetzt (Unicode-Zeichen 200B), und dann wurde geschaut, ob dieses Zeichen da ist, oder nicht. Für das Anmeldekonzept auf dem Volksfest hat’s gereicht :-P aber das war wohl doch eher ein Hack als eine vernünftige Implementierung.
Jetzt gibt es „richtige“ Markierungen. Und zwar beliebig viele in beliebigen Farben mit beliebigen Namen. Pro Markierung kann man auswählen, ob so markierte Namen fortlaufend (ohne ihre Position zu verändern) in der Liste bleiben, oder einen eigenen, sortierten, Block erzeugen sollen.
Damit kann man jetzt beispielsweise Markierungen für „Vorangemeldet“, „Auslosung fehlt noch“, „Allein gekommen“ oder was auch immer erstellen. Das ist jetzt auch wirklich die Implementierung des seit Äonen geforderten Features, die Möglichkeit zu schaffen, Paare als „Startgeld bezahlt“ zu markieren.
Weitere Änderungen
Änderung: Es wird jetzt mindestens Qt 5.7 benötigt. Das betrifft aber nur die, die selbst kompilieren, und das dürften nicht allzu viele sein ;-)
Neu: Bei der Spielstandeingabe wird jetzt angezeigt, wie viele Ergebnisse (also Tische) bereits eingegeben wurden, und wie viele noch fehlen.
Verbesserung: Der Spielstand-Eingabedialog kann jetzt auch in abgebrochenen Bobbeln per Rechtsklick auf die Eingabefelder aufgerufen werden.
Änderung: Die Eingabe von abgebrochenen Bobbeln wurde überarbeitet: Einen Haken für die Runde gibt es jetzt nicht mehr (die Zettel kommen eh nicht in der richtigen Reihenfolge), stattdessen gibt es jetzt immer pro Bobbl einen „Als abgebrochen markieren“-Knopf, der auch alle folgenden Bobbl als abgebrochen markiert.
Bugfix: Beim Editieren (Löschen und neu Eingeben) von Spielständen werden bei als abgebrochen eingegebenen Bobbeln die gespeicherten Punktwerte jetzt korrekt voreingestellt und der jeweilige Bobbl auch als abgebrochen markiert.
Bugfix: Die Anzeigeoptionen („Gegenerische Tore berücksichtigen“ etc.) werden jetzt wieder korrekt gespeichert.
Neu: Der Turnierdatenbank-Dateityp „.mtdb“ wird jetzt mit dem Muckturnier-Programm verknüpft. Damit kann eine Turnierdatenbank z. B. per (Doppel-)Klick aus einem Dateimanager heraus geöffnet werden.
Neu/Verbesserung: Es gibt jetzt einen eigenen Dialog für den Import von Paar- bzw- Spielerlisten. Hier wird eine Vorschau des zu importierenden Datensatzes vor dem eigentlichen Import angezeigt. Etwaige Duplikate werden gesondert gelistet und können vom Import ausgeschlossen bzw. als potenzielles Duplikat markiert werden.
Verbesserung/Bugfix: Für hohe Punktzahlen werden jetzt beim Punktestand-Dialog Scrollbars angezeigt, und der Dialog wird nicht mehr abgeschnitten.
Eine Liste aller Änderungen enthält – wie immer – der ChangeLog. Viel Spaß mit der neuen Version!