Latihan 1: Feature Flags & Gradual Rollouts — DevOps
Latihan 1 dari materi Feature Flags & Gradual Rollouts di DevOps — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Lengkapi function evaluateFlag(flag, user) supaya mengembalikan true kalau fitur aktif untuk user itu, dan false kalau gak.
flag berbentuk { enabled, percentage, allowlist, blocklist }, dan user berbentuk { id, plan }. Cek aturannya berurutan, aturan pertama yang cocok langsung return:
flag.enabled false: kembalikan false (kill switch, menang dari semua aturan).
Selain itu, hitung bucket: mulai hash = 0, lalu untuk tiap karakter user.id, hash = (hash * 31 + char.charCodeAt(0)) % 100. Kembalikan hash < flag.percentage.
Yang dicek:
enabled: false dengan percentage: 100 mengembalikan false.
User u1 di blocklist dengan percentage: 100 mengembalikan false.
User u1 di allowlist dengan percentage: 0 mengembalikan true.
Dengan percentage: 50, user yang sama selalu dapat jawaban yang sama, dan dari user u0 sampai u99 sebagian dapat true, sebagian false (bukan semua sama).
Baris const flag = ... dan console.log(...) di kode awal sudah ada, biarkan saja. Dia mencetak true.
Hint
Flag dievaluasi dari atas ke bawah, dan aturan pertama yang cocok langsung menentukan jawabannya. Kill switch paling atas, persentase paling bawah. Untuk persentase, user yang sama harus selalu dapat angka bucket yang sama, jadi jangan pakai Math.random.
Tulis empat if dengan return: if (!flag.enabled) return false; lalu blocklist.includes(user.id), lalu allowlist.includes(user.id), lalu percentage >= 100 dan <= 0. Sesudahnya, loop tiap karakter user.id untuk menghitung hash.
Bagian terakhir: let hash = 0; for (const char of user.id) { hash = (hash * 31 + char.charCodeAt(0)) % 100; } return hash < flag.percentage;
</>{ }.css=>#idfn()
Versi baru
HyperSheets
bagian dari BelajarWeb.dev
0%
Membuka gerbang…
HyperSheets
Memperbarui Aplikasi
Versi baru tersedia. Halaman akan dimuat ulang otomatis...