Exam Simulator Moln · Säkerhet · Linux · IT
Om · Teknik

Så är den byggd

En fallstudie i att leverera en riktig produkt på gratisnivåer och egen hårdvara: en provmotor i Rust/WebAssembly, en Cloudflare Worker med D1, egenhostad Git och CI, tester vid varje push, säkerhetskopior med återställningsövning och övervakning.

  • 18prov är redo (29 i katalogen)
  • 4 444frågor, varav 94 praktiska
  • 27fallstudier med 136 frågor
  • 1 475begrepp i 84 områden

Arkitektur

  1. KodForgejoegenhostad Git på en hemserver
  2. CI/CDWoodpecker CIserver och agenter på hårdvara i hemlabbet
  3. KantCloudflare Workersstatisk webbplats, WASM-motor och konto-API:t
  4. DataCloudflare D1SQLite på kanten: klasser, resultat, sessioner

Webbläsare: Rust → WebAssembly

Provmotorn, den adaptiva övningen och varje sida är Rust (Velvet-ramverket) kompilerat till WebAssembly. Sidorna förrenderas vid bygget, så de laddas och går att läsa utan JavaScript; tillståndet ligger i lokal lagring och fungerar offline (service worker).

Worker + D1

En liten JavaScript-Worker levererar de statiska filerna och klassens API: gå med via klasskod, passkeys eller återställningskod, signerade sessionskakor, synkning av resultat och inlärningsläge, lärar- och adminvyer. D1 har versionerade migreringar som Workern också kan köra själv.

Innehåll som data

Varje prov är en mapp med JSON (provguide, områden och vikter, frågebank, valfria praktiska uppgifter och fallstudier) som kompileras in i motorn. Ett nytt prov kräver ingen kodändring; varje siffra på sidan beräknas från samma data vid bygget.

Tester och leverans

Vid varje push

  1. Validera varje frågebank (schema, innehållsregler, katalogen i takt, kvalitetsspärr)
  2. Testa Rust-motorn (cargo test) och Workern mot en tillfällig lokal D1 (node:test), parallellt
  3. Bygg WASM, förrendera varje sida, optimera med wasm-opt
  4. Hela flödet i huvudlös Chromium (Playwright), dator och mobil
  5. Förhandsgranska varje gren på en egen URL, isolerad från produktionsdata
  6. Driftsätt main, kör migreringar och röktesta att kanten levererar exakt den committen

Egenhostad CI

Forgejo och Woodpecker körs i rootless Podman; agenterna cachar verktygskedjor, crates, npm-paket och webbläsare i en namngiven volym. En push är ute på kanten på ungefär två minuter. Inga CI-minuter att betala för – körarna är våra egna maskiner.

Så arbetar vi med kvalitet

Statiska kontroller

En kontroll körs vid varje bygge: trasiga referenser, felaktiga svarsnycklar och antal alternativ, saknade förklaringar och dubblettfrågor stoppar bygget. Nästan-dubbletter, bokstavsbias och svar som avslöjar sig genom sin längd rapporteras, och en spärr hindrar andelen ”rätt svar är det längsta alternativet” från att någonsin bli sämre per prov.

Körstatistik

Per fråga: andel rätt, val av alternativ, punktbiserial diskriminering och svarsfrekvens från provsimuleringar, plus elevrapporter. Frågor som verkar tvetydiga eller för lätta flaggas i adminvyn för granskning.

Ärliga siffror

Ingen uppskattning av godkänt visas förrän det finns tillräckligt underlag (20 svar, 3 per område, en fjärdedel av begreppen). Därefter är resultat och chans att bli godkänd intervall med ett ord för säkerheten, och varje resultat är märkt som en uppskattning.

Drift

Säkerhetskopior

Nattlig export av D1-databasen till vår egen disk (14 dagliga, 8 veckovisa, med kontrollsummor), en kopia på annan plats (30 dagliga, 26 veckovisa) och Cloudflares Time Travel som ett andra skyddsnät.

Återställningsövning

En gång i månaden återställer CI den senaste säkerhetskopian till en tillfällig lokal D1 och kontrollerar schemaversionen och antalet rader mot säkerhetskopians manifest.

Övervakning

En djup hälsokontroll (Worker, databas och den driftsatta committen) var 15:e minut; misslyckade driftsättningar, säkerhetskopior eller övningar skickar ett avduplicerat push-larm via egenhostad ntfy.

Avvägningar

  • Gratisnivåer, hårda gränser. Cloudflares gratisplan (100 000 Worker-anrop och 5 miljoner D1-radläsningar per dag) räcker gott för en klass men begränsar tillväxten; koden håller D1-läsningarna indexerade och små.
  • Egenhostat betyder egen drifttid. 0 kr i avgifter för moln och CI, men hårdvaran, dess el och dess underhåll är verkliga kostnader, och ett avbrott i hemlabbet stoppar driftsättningar (aldrig den publika sidan).
  • Offline först. Övningen fungerar utan nätverk och synkar senare; priset är sammanslagningslogik för inlärningsläget och en service worker som måste hållas i takt.
  • Uppskattningar, inte riktiga resultat. En linjär skalpoäng är genomskinlig och testbar men kan inte utjämna provversioner som leverantörerna gör – därför är den alltid märkt som en uppskattning.
  • Innehållet i binären. När frågebankerna kompileras in i WASM blir varje sida omedelbar och fungerar offline, till priset av en större första nedladdning (cachas sedan).

Kostnad

DelPlanPrenumerationsavgift
Workers + statiska filerCloudflare Free0 kr
D1-databasCloudflare Free0 kr
Git-hosting + CI-körareegenhostad0 kr
Larm + säkerhetskopioregenhostad0 kr
Avgifter för moln och CI0 kr/månad

Inte medräknat: den egenhostade hårdvaran, dess el och tiden det tar att sköta den.

Teknikstack

Rust + Velvet-ramverket → WebAssembly · Cloudflare Workers (JavaScript) + D1 (SQLite) · passkeys (WebAuthn) och signerade sessionskakor · Forgejo + Woodpecker CI i rootless Podman · Playwright, node:test, cargo test och skaltestade driftskript · ntfy-larm och systemd-timers.

Byggd av Marko Svensson.

Oberoende. Simulatorn är inte knuten till, godkänd av eller sponsrad av Amazon Web Services, Linux Professional Institute, CompTIA, Microsoft, HashiCorp, Google Cloud, CNCF / Linux Foundation, ISC2 och PeopleCert (ITIL) eller något annat certifieringsorgan. Alla varumärken tillhör sina ägare; provnamnen används bara för att identifiera proven. Frågorna är egenskrivet övningsmaterial, inte riktigt provinnehåll.

AWS and the AWS exam names are trademarks of Amazon.com, Inc. or its affiliates. LPI, Linux Essentials and LPIC are trademarks of the Linux Professional Institute. Linux is a registered trademark of Linus Torvalds. CompTIA, A+, Network+, Security+, CySA+ and Linux+ are trademarks of CompTIA, Inc. Microsoft, Azure, Microsoft Entra, Microsoft Defender, Microsoft Sentinel, Microsoft Purview and Microsoft Foundry are trademarks of the Microsoft group of companies. HashiCorp, Terraform and HCP are trademarks of HashiCorp, an IBM company. Google Cloud, Gemini and Vertex AI are trademarks of Google LLC. Kubernetes, KCNA and CNCF are trademarks of The Linux Foundation. ISC2, CC and Certified in Cybersecurity are trademarks of ISC2, Inc. ITIL and PRINCE2 are registered trademarks of PeopleCert. Practice questions are original and not endorsed by PeopleCert.

Exam Simulator

Oberoende övningsprov för certifieringar inom moln, säkerhet, Linux och IT, byggda för klassrummet. Ingen e-post, inga annonser, inga tredjepartsspårare.

English
Integritet: resultaten stannar i den här webbläsaren om du inte går med i en klass; då sparas ditt visningsnamn, dina resultat och enkla användningsloggar (aldrig råa IP-adresser) för din lärare.
Varumärken

Inte knutet till, godkänt av eller sponsrat av Amazon Web Services, Linux Professional Institute, CompTIA, Microsoft, HashiCorp, Google Cloud, CNCF / Linux Foundation, ISC2, PeopleCert (ITIL). AWS and the AWS exam names are trademarks of Amazon.com, Inc. or its affiliates. LPI, Linux Essentials and LPIC are trademarks of the Linux Professional Institute. Linux is a registered trademark of Linus Torvalds. CompTIA, A+, Network+, Security+, CySA+ and Linux+ are trademarks of CompTIA, Inc. Microsoft, Azure, Microsoft Entra, Microsoft Defender, Microsoft Sentinel, Microsoft Purview and Microsoft Foundry are trademarks of the Microsoft group of companies. HashiCorp, Terraform and HCP are trademarks of HashiCorp, an IBM company. Google Cloud, Gemini and Vertex AI are trademarks of Google LLC. Kubernetes, KCNA and CNCF are trademarks of The Linux Foundation. ISC2, CC and Certified in Cybersecurity are trademarks of ISC2, Inc. ITIL and PRINCE2 are registered trademarks of PeopleCert. Practice questions are original and not endorsed by PeopleCert. Provnamnen används här bara för att identifiera proven. Frågorna är eget övningsmaterial, inte riktigt provinnehåll.