Latihan 1: Debugging Production Incidents — Debugging
Latihan 1 dari materi Debugging Production Incidents di Debugging — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Lengkapi dua function untuk menganalisis incident.
analyzeErrorRate(events, windowMs = 60000): events berisi { type: 'error' | 'success', timestamp } (timestamp dalam milidetik).
Cari timestamp terbaru di events, lalu ambil event yang terbaru - timestamp <= windowMs. Jendelanya diukur dari event terbaru, bukan dari Date.now().
Kembalikan { errorRate, total, errors }: total = jumlah event di jendela, errors = jumlah yang type === 'error', errorRate = persen error, dibulatkan dengan Math.round (0 sampai 100).
detectAnomalies(rates): rates adalah array error rate per menit.
Hitung rata-ratanya, lalu kembalikan array { index, rate, isAnomaly }, dengan isAnomaly: true kalau rate > 2 * rata-rata (lebih dari, bukan sama dengan).
Kode awal sudah berisi data dan lima console.log, biarkan begitu. Output-nya harus persis lima baris ini, berurutan:
5
2
40
1
true
Ada juga satu cek dengan data lain: analyzeErrorRate untuk event di 1000, 2000, dan 90000 ms dengan window 5000 harus punya total 1, dan anomali pertama dari detectAnomalies([1, 1, 10]) harus di index 2. Hasil gabungannya "1|2".
Hint
Error rate itu bagian error dari semua event di jendela waktu, dalam persen. Jendelanya dihitung mundur dari event yang paling baru. Anomali dinilai dibanding rata-rata semua rate.
Di analyzeErrorRate: terbaru = Math.max(...events.map(e => e.timestamp)), lalu filter yang terbaru - e.timestamp <= windowMs, lalu hitung yang type === 'error'. Di detectAnomalies: hitung rata dengan reduce, lalu map tiap rate.
errorRate: Math.round((errors / dalamWindow.length) * 100); detectAnomalies: const rata = rates.reduce((a, b) => a + b, 0) / rates.length; return rates.map((rate, index) => ({ index, rate, isAnomaly: rate > 2 * rata }));
</>{ }.css=>#idfn()
Versi baru
HyperSheets
bagian dari BelajarWeb.dev
0%
Membuka gerbang…
HyperSheets
Memperbarui Aplikasi
Versi baru tersedia. Halaman akan dimuat ulang otomatis...