Artikel untuk developer
Penjelasan format enkode, cara kerja dengan JSON, dan topik lain yang berguna bagi developer, dengan tautan ke alat online tulzy yang sesuai.
Enkode
Base64: untuk apa enkode dan bagaimana cara kerjanya
Bagaimana Base64 mengubah data biner menjadi teks ASCII dan kapan ini benar-benar diperlukan.
Base32: bedanya dengan Base64 dan kapan lebih praktis
Alfabet Base32 yang tidak membedakan huruf besar/kecil, dan kasus di mana ia lebih praktis daripada Base64.
URL Encode/Decode: percent-encoding dalam tautan
Bagaimana karakter khusus dalam alamat dan parameter berubah menjadi urutan %XX.
HTML Entities: cara menampilkan karakter khusus dengan aman
Mengapa karakter < > & perlu di-escape dan bagaimana ini mencegah markup rusak.
JWT: struktur token dan arti "mendekode" JWT
Header, payload, dan signature dari JWT, serta mengapa mendekode bukan hal yang sama dengan memverifikasi tanda tangan.
Unicode Escape: arti urutan \uXXXX
Dari mana asal urutan seperti \u0041 dalam JSON dan string JS, serta artinya.
ROT13 dan sandi Caesar: substitusi karakter sederhana
Mengapa pergeseran 13 huruf membuat ROT13 mengoreksi dirinya sendiri, dan mengapa masih digunakan sekarang.
Punycode: bagaimana domain internasional bekerja di DNS
Bagaimana domain dengan karakter non-Latin menjadi bentuk ASCII dengan awalan xn--.
Kode Morse: bagaimana teks berubah menjadi titik dan garis
Prinsip pengenkodean huruf menjadi titik dan garis, serta di mana kode Morse masih digunakan sekarang.
Data URI: kapan menyematkan gambar langsung ke dalam kode
Bagaimana Data URI menyematkan isi berkas langsung ke HTML atau CSS, dan kapan hal ini sepadan.
Gzip + Base64: mengompresi data untuk dikirim sebagai teks
Mengapa data biner terkompresi juga dienkode Base64 sebelum dimasukkan ke bidang teks.
XML Entities: meng-escape karakter dalam dokumen XML
Lima entity XML wajib, tanpanya dokumen rusak saat diuraikan.
JSON
JSON Formatter: memformat, meminifikasi, dan memvalidasi
Memformat untuk keterbacaan, meminifikasi untuk ukuran, memvalidasi untuk kebenaran — tiga tugas JSON yang berbeda.
JSONPath: mengkueri data JSON tanpa parsing manual
Bagaimana JSONPath memungkinkan mengambil nilai yang dibutuhkan dari JSON besar dengan satu ekspresi tanpa penelusuran manual.
JSON Diff: perbedaan perbandingan struktural dengan perbandingan teks
Mengapa urutan kunci seharusnya tidak memengaruhi perbandingan dua dokumen JSON.
JSON Schema: cara mendeskripsikan dan memvalidasi struktur JSON
Bagaimana JSON Schema memungkinkan pemeriksaan otomatis apakah data sesuai dengan kontrak yang diharapkan.
JSON Flatten: mengubah struktur bersarang menjadi daftar datar
Bagaimana JSON yang bersarang dalam berubah menjadi daftar datar kunci seperti user.address.city.
JSON Sort Keys: mengapa mengurutkan kunci objek
Mengapa urutan kunci JSON tidak ditentukan, tetapi pengurutan tetap berguna dalam praktiknya.
JSON Repair: mengapa JSON rusak dan cara memperbaikinya
Penyebab umum JSON "rusak" dan apa yang bisa dan tidak bisa diperbaiki oleh perbaikan otomatis.
Mock JSON Generator: untuk apa data palsu berguna
Bagaimana data tiruan memungkinkan memulai membangun UI sebelum backend siap.
JSON ↔ YAML/CSV/XML/TOML: kapan dan mengapa perlu dikonversi
Data apa yang hilang saat mengonversi JSON ke CSV, dan mengapa YAML serta TOML populer untuk berkas konfigurasi.
Teks
Case Converter: mengapa ada gaya penamaan yang berbeda
Mengapa dalam satu proyek variabel ditulis camelCase tapi berkas kebab-case, dan dari mana aturan ini berasal.
Text Diff: bagaimana algoritma menemukan perbedaan antara dua teks
Bagaimana algoritma diff menemukan kumpulan perubahan minimal antara dua versi teks.
Ekspresi reguler: sintaks dasar dan pola umum
Cara membaca ekspresi reguler, dan bagaimana pencocokan greedy berbeda dari lazy.
Mengurutkan dan menghapus duplikat baris: untuk apa gunanya
Mengapa pengurutan numerik yang menempatkan "10" sebelum "9" adalah kesalahan, dan cara menghindarinya.
String Escape: mengapa teks yang sama perlu di-escape secara berbeda
Mengapa tanda kutip yang sama di-escape secara berbeda dalam string JS, JSON, dan perintah shell.
CRLF vs LF: mengapa karakter akhir baris masih penting
Mengapa berkas yang ditulis di Windows bisa terlihat "seluruhnya berubah" di git pada Linux.
Menghitung karakter dan kata: mengapa tidak selalu sepele
Mengapa emoji atau huruf beraksen bisa terhitung sebagai beberapa karakter sekaligus.
Lorem Ipsum: dari mana teks pengganti ini berasal dan untuk apa
Mengapa desainer sengaja menggunakan teks "tanpa arti" alih-alih konten sungguhan dalam mockup.
Slugify: mengubah teks apa pun menjadi URL
Bagaimana judul seperti "Halo, Dunia! Apa kabar?" menjadi string kompatibel URL seperti halo-dunia-apa-kabar.
Markdown: mengapa sintaks teks sederhana mengalahkan editor teks kaya
Mengapa developer memilih menulis dokumentasi dalam Markdown alih-alih editor teks kaya.
Spasi dan karakter tak terlihat: penyebab tersembunyi bug aneh
Mengapa dua string yang terlihat identik bisa tidak cocok karena karakter tak terlihat.
Text Reverse: mengapa "membalik teks" lebih sulit dari kelihatannya
Mengapa pembalikan string yang naif bisa mengubah emoji menjadi byte yang tidak dapat digunakan.
Analisis frekuensi teks: untuk apa menghitung pengulangan kata
Bagaimana frekuensi huruf dalam teks terenkripsi membantu memecahkan sandi substitusi paling sederhana.
Hash/Kripto
Hash Generator: apa perbedaan MD5, SHA-1, dan SHA-256
Mengapa MD5 masih digunakan untuk memverifikasi integritas file, tapi tidak untuk kata sandi.
Checksum Verifier: cara memeriksa apakah file tidak rusak
Mengapa checksum yang cocok mengonfirmasi integritas file, tapi bukan siapa yang membuatnya.
HMAC: apa bedanya hash dengan kunci dan hash biasa
Mengapa SHA-256 biasa tidak melindungi dari pemalsuan pesan, tapi HMAC melindungi.
Bcrypt: mengapa kata sandi di-hash secara lambat, bukan cepat
Mengapa SHA-256 yang cepat adalah pilihan buruk untuk kata sandi, dan bcrypt yang lambat adalah pilihan yang tepat.
UUID: bagaimana identifier yang hampir tidak pernah berulang dibuat
Mengapa UUID v4 bisa dibuat secara independen di jutaan mesin tanpa risiko tabrakan.
Generator Kata Sandi: apa yang sebenarnya membuat kata sandi kuat
Mengapa kata sandi panjang dari kata-kata kamus lebih kuat daripada kata sandi pendek dengan simbol dan angka.
AES: bagaimana enkripsi simetris bekerja
Mengapa kunci yang sama mengenkripsi dan mendekripsi data di AES, dan bagaimana ini berbeda dari enkripsi asimetris.
Argon2: mengapa algoritma ini memenangkan kompetisi hashing kata sandi
Bagaimana Argon2 bertahan lebih baik terhadap serangan menggunakan GPU dibandingkan algoritma hashing kata sandi yang lebih lama.
Scrypt: mengapa algoritma ini membutuhkan begitu banyak memori
Mengapa scrypt sengaja membutuhkan banyak memori untuk mempersulit pembobolan di perangkat ASIC.
TOTP: bagaimana kode sekali pakai di aplikasi autentikator bekerja
Mengapa kode di Google Authenticator bekerja tanpa internet dan hanya sinkron dengan server melalui waktu.
PBKDF2: standar peregangan kunci tertua
Mengapa jumlah iterasi PBKDF2 yang direkomendasikan terus bertambah setiap tahun.
X.509: apa yang ada di dalam sertifikat SSL
Apa sebenarnya yang diperiksa browser pada sertifikat sebuah situs sebelum menampilkan gembok hijau.
PGP: bagaimana enkripsi kunci publik dan privat bekerja
Mengapa kunci publik PGP bisa dibagikan secara bebas, tapi kunci privat tidak pernah.
Waktu/Angka
Waktu Unix: mengapa komputer menghitung waktu sejak 1970
Mengapa 1 Januari 1970 menjadi titik referensi waktu untuk sebagian besar sistem komputer.
Ekspresi cron: cara memecahkan jadwal tugas
Cara memecahkan ekspresi seperti */15 * * * * dan mengetahui persis kapan tugas akan berjalan.
Sistem bilangan: untuk apa biner, oktal, dan heksadesimal
Mengapa warna #FF5733 di CSS ditulis dengan digit heksadesimal, bukan desimal.
Operasi bitwise: cara kerja AND, OR, dan XOR di level bit
Bagaimana AND bitwise berbeda dari AND logis, dan mengapa perlu mengoperasikan bit individual sebuah angka.
Selisih tanggal: mengapa menghitung hari lebih rumit dari kelihatannya
Mengapa mengurangi tanggal secara naif bisa memberi hasil salah karena tahun kabisat.
Menghitung usia: mengapa bukan sekadar pengurangan tahun
Mengapa mengurangi tahun lahir secara sederhana bisa memberi usia satu tahun lebih besar dari yang sebenarnya.
Zona waktu: mengapa UTC bukan hal yang sama dengan GMT
Mengapa UTC tidak pernah berubah dua kali setahun, sementara waktu London (GMT/BST) berubah.
Kalkulator durasi: cara menjumlahkan jam, menit, dan detik dengan benar
Mengapa saat menjumlahkan menit dan detik perlu "menyimpan" sisa ke posisi berikutnya, sama seperti penjumlahan desimal.
ISO 8601 Duration: cara menulis durasi dalam format standar
Mengapa PT1H30M berarti "1 jam 30 menit", bukan "1 menit 30 jam".
Nomor minggu: mengapa negara berbeda menghitung minggu secara berbeda
Mengapa 1 Januari kadang termasuk minggu ke-52 atau ke-53 tahun sebelumnya menurut standar ISO 8601.
Angka Romawi: bagaimana sistem tanpa nol dan nilai tempat bekerja
Mengapa IV berarti 4, bukan 6, dan bagaimana aturan pengurangan bekerja dalam angka Romawi.
IEEE 754: mengapa 0.1 + 0.2 tidak sama dengan 0.3 dalam kode
Mengapa hampir semua bahasa pemrograman menampilkan 0.1 + 0.2 sebagai 0.30000000000000004.
Angka menjadi kata: mengapa perlu mengubah digit menjadi kata
Mengapa dokumen bank menulis jumlah uang baik dalam angka maupun kata sekaligus.
Jaringan/HTTP
Penguraian URL: bagian apa saja yang membentuk alamat web
Mengapa URL memiliki bagian setelah simbol # yang bahkan tidak pernah diterima server.
Query String vs JSON: mengapa parameter GET begitu terbatas
Mengapa mengirim array atau objek bersarang lewat query string URL tidak sesederhana lewat JSON.
User-Agent: mengapa string ini begitu berantakan
Mengapa Chrome, Safari, dan Edge semuanya mencantumkan kata "Mozilla" dan "Safari" sekaligus dalam User-Agent mereka.
Basic Authentication: cara kerja metode paling sederhana untuk melindungi resource HTTP
Mengapa Basic Auth wajib menggunakan HTTPS, karena Base64 adalah pengkodean, bukan enkripsi.
Header HTTP: apa yang tersembunyi di setiap request dan response
Mengapa header Content-Type menentukan bagaimana browser menginterpretasikan body respons server.
Cookie: bagaimana sepotong kecil teks menyimpan status sesi
Mengapa atribut HttpOnly melindungi cookie dari pencurian lewat kode JavaScript berbahaya.
CORS: mengapa browser memblokir request "biasa" ke domain lain
Mengapa error CORS terjadi di browser, bukan di server, dan siapa yang sebenarnya memblokir request.
Header email: cara melacak perjalanan pesan dari pengirim hingga ke Anda
Mengapa header Received harus dibaca dari bawah ke atas untuk melacak perjalanan sebuah pesan.
SEO
Meta tag: mana yang benar-benar memengaruhi pencarian dan media sosial
Mengapa mesin pencari terkadang mengabaikan meta description Anda dan membuat sendiri cuplikan dari teks halaman.
robots.txt: bagaimana bot pencari memutuskan apa yang boleh dijelajahi
Mengapa aturan Disallow di robots.txt tidak menyembunyikan halaman dari hasil pencarian jika ada tautan ke halaman itu di tempat lain.
Sitemap.xml: mengapa mesin pencari butuh peta situs
Mengapa terdaftar di sitemap.xml tidak menjamin mesin pencari akan mengindeks sebuah halaman.
Favicon: mengapa satu ikon butuh begitu banyak ukuran dan format
Mengapa satu favicon.ico saja sudah tidak cukup untuk tampil benar di semua perangkat.
Membuat sitemap.xml: cara menyusun peta situs secara otomatis
Mengapa mesin pencari sebagian besar mengabaikan field priority di sitemap.xml meski itu bagian dari spesifikasi.
Pengembangan Web
HEX, RGB, HSL: mengapa ada begitu banyak cara menuliskan warna
Mengapa desainer sering memilih HSL alih-alih HEX saat memilih corak warna secara manual.
Minifikasi CSS: apa sebenarnya yang dihapus dari file, dan mengapa
Mengapa CSS yang diminifikasi bekerja persis sama di browser, meski menjadi tidak terbaca bagi manusia.
Minifikasi JavaScript: perbedaan antara minifikasi dan obfuskasi
Mengapa kode yang diminifikasi masih bisa dibaca kalau mau, sedangkan kode yang diobfuskasi tidak bisa.
Minifikasi HTML: mengapa spasi dalam markup sebenarnya penting
Mengapa menghapus spasi di dalam <pre> atau textarea bisa merusak tampilan halaman, tidak seperti hampir semua tempat lain.
Gradien CSS: perbedaan linear dari radial dan conic
Mengapa conic-gradient cocok untuk diagram lingkaran, sedangkan radial-gradient menghasilkan efek titik cahaya.
Algoritma Luhn: cara memeriksa kebenaran nomor kartu
Mengapa nomor kartu yang lolos pemeriksaan Luhn tidak berarti kartu tersebut benar-benar ada.
IBAN: bagaimana struktur nomor rekening bank internasional
Mengapa dua huruf pertama pada IBAN adalah kode negara, bukan bagian dari nomor rekening itu sendiri.
Kode QR: bagaimana sebuah tautan muat dalam kotak piksel
Mengapa kode QR dengan logo di tengah tetap bisa dipindai meski sebagian pola tertutup.
Barcode: perbedaan Code 128 dari EAN-13
Mengapa produk di rak toko hampir selalu menggunakan EAN-13, bukan Code 128.
Gambar placeholder: mengapa gambar palsu penting selama pengembangan
Mengapa pengembang sengaja menaruh kotak abu-abu, bukan foto asli, saat sebuah layout masih dibangun.