kamulupa |
Aku akan menyederhanakan ini sejauh yang aku bisa, namun ini mungkin akan rumit dijelaskan karena ini akan membahas soal pemrograman Android dan color-space. Jadi pegangan, dan siapkan obat sakit kepala.
Oke, bersiap, mulai.
Lampu LED yang ada di ponselmu memiliki tiga warna dasar:
Merah, hijau, dan biru. Dan kekuatan warnanya diatur oleh nilai 0–255.
Jadi jika ada nilai 255, 0, 0; maka keluar warna merah,
Dan 152, 255, 152 akan menghasilkan mint green.
Tapi apa yang terjadi kalau ada nominal di atas yang lebih
dari 255?
Ini disebut dengan integer overflow. Karena maksimum yang
bisa diterima adalah 255, ketika kamu memberinya nilai 256, dia akan kembali ke
nilai 0, seperti odometer yang akan kembali ke berputar ke 0 ketika jarak
tempuh sudah melebihi kemampuan pencatatannya.
kamulupa |
(Ini bukan gambar aslinya. Gambar ini sudah
terkompresi, sehingga nilainya sudah berubah dan tidak membuat galat.
Namun untuk keamanan ponsel Anda sendiri, jangan memasang ini sebagai
wallpaper).
Pemandangan yang indah, aku menyukai cahaya yang berhasil ia
tangkap pada awan di atas pegunungan itu. Namun pada gambar aslinya, ada sebuah
kendala: Di salah satu pixelnya ada nilai yang melebihi 255.
Dan pada SystemUI, aplikasi sistem yang bekerja untuk
mengurus user interface seperti lock screen, notification bar, navigation bar,
dsb; kaget ketika melihat ada nilai 256 ketika maksimumnya hanya 255. Dia
memberikan peringatan bernama Array Index Out Of Bounds. Dan karena itu dia
memulai ulang dirinya sendiri saking kebingungannya, berharap itu hanya
gangguan sederhana saja. Namun karena setiap boot wallpaper akan dimuat
kembali, SystemUI kaget, "Loh kok ini kampret masih ada?" dan dia
kembali memuat ulang lagi, lagi, dan lagi.
Hasilnya? Bootloop.