Was eine Frage hier enthält
Zu jeder Frage steht, warum die richtige Antwort richtig ist und warum die anderen es nicht sind. Die Begründung erklärt den Mechanismus statt die Antwort zu wiederholen: warum ein Frame beim falschen Native VLAN das VLAN wechselt, warum zwei passive LACP-Seiten nie anfangen, warum ein einfacher Ping vom Router die eigentliche Frage gar nicht stellt. Bei den Fehlersuche-Fragen gibt es ein dreiteiliges Laborrezept: kaputt bauen, finden, beheben.
Die Fragen sind selbst geschrieben, entlang der veröffentlichten Prüfungsthemen des Blueprints 2.0. Jeden Befehl habe ich gegen die offizielle Cisco-Dokumentation geprüft. Wo eine Ausgabe noch nicht an einem laufenden Gerät nachgestellt wurde, steht das offen auf der Seite.
Lernen
Runde mit Frage, Antwort, Begründung und Laborrezept, danach eine Auswertung.
Themen
Alle 29 Themen einzeln an- und abwählbar, mit der Zahl der Fragen je Thema.
Fortschritt
Trefferquote je Bereich und Thema. Der Lernstand bleibt im Browser.
Am Gerät geprüft, nicht nur am Papier
Die ersten 100 Fragen habe ich auf virtuellen Cisco-Geräten durchgespielt, Befehl für Befehl. Das hat einen Fehler gefunden, den keine Durchsicht gefunden hätte: Die Laborrezepte waren gegen einen Catalyst 2960 geschrieben, im Labor laufen aber Geräte mit anderen Portnamen. Am Gerät belegt: FastEthernet0/1 gibt es dort nicht.
| Ergebnis über 100 Fragen | Fragen |
|---|---|
| am Gerät gelaufen | 87 |
| im Labor nicht nachbaubar (WLAN, EtherChannel mit zwei Leitungen) | 7 |
| ohne Befehle für Cisco-Geräte | 6 |
Korrigiert habe ich unter anderem 147 Portangaben in 21 Fragen. Die Ersetzung lief nach dem Prinzip alles oder nichts, mit drei Gegenproben. Der erste Durchlauf hat nichts geschrieben, weil er drei Kurzformen fand, die meine Zählung übersehen hatte.
Die richtige Antwort stand fast immer vorn
Beim Durcharbeiten fiel mir auf, dass oft die erste Antwort die richtige war. Gezählt über alle 100 Fragen war es schlimmer als gedacht: 83-mal an erster Stelle, 17-mal an zweiter, nie an dritter oder vierter. Wer das merkt, muss die Frage nicht mehr lesen. Für einen Trainer ist das der schlimmste denkbare Fehler.
Einfach mischen ging nicht, denn jede Begründung verweist auf Buchstaben. Jetzt bekommt jede Frage beim Anzeigen eine eigene Reihenfolge, und die Buchstaben in der Begründung werden im selben Schritt umgeschrieben. Geprüft habe ich das mit den echten Funktionen aus der Anwendung, nicht mit einem Nachbau.
Ein Commit ist keine Auslieferung
Der Katalog wuchs über Wochen von 103 auf 143 Fragen. Der Server stand die ganze Zeit bei 103, ohne dass es jemand merkte. Jeder Commit war grün, das Übertragungsskript meldete jedes Mal „Fertig“. Nachgesehen hatte niemand.
Das Skript zählt nach dem Übertragen die Fragen auf dem Server nach und meldet erst dann „Fertig“, wenn die Zahl mit dem lokalen Stand übereinstimmt. Geprüft wird, was ankommt, nicht was abgeschickt wurde.
Betrieb
Der Trainer läuft auf meinem eigenen Server unter eigener Adresse mit eigenem Zertifikat. Es gibt keine Anmeldung und keine Statistik. Der Lernstand bleibt im Browser und lässt sich als Datei sichern, die Schrift kommt vom eigenen Server statt von Google. Damit braucht die Seite kein Einwilligungsbanner. KI-Crawler und Scanner sperrt der Server am User-Agent aus, nachdem einer den ganzen Katalog abgeholt hatte.
Automatische Tests rufen die echten Funktionen der Seite auf: Runden spielen, Themen wählen, Lernstand sichern und laden, auch mit kaputten Dateien. Eine Prüfung stellt außerdem sicher, dass keine privaten Adressen, Pfade oder Benutzernamen in der ausgelieferten Datei stehen.
Technik
| Teil | Womit |
|---|---|
| Anwendung | eine HTML-Seite mit JavaScript, ohne Framework. Inhalt und Logik getrennt, die Fragen liegen in eigenen Dateien je Prüfungsbereich |
| Datenmodell | Thema und Bereich ergeben sich aus der Fragennummer, gespeichert wird, was abgewählt ist. Neue Themen sind damit automatisch dabei |
| Labor | virtuelle Cisco-Router und -Switches, Packet Tracer für die Gegenprobe |
| Betrieb | nginx auf dem Raspberry Pi 5, Let's Encrypt, Crawler-Sperre |