Langsung ke konten

Arsip

Rekayasa Perangkat Lunak

127 artikel
Rekayasa Perangkat Lunak 16 Sep 2026 6 min read

HTTP Stale-While-Revalidate Memindahkan Refresh Cache dari Request Path

Cache dapat langsung mengembalikan stored response yang sudah expired dan memulai validation secara paralel ketika stale-while-revalidate mengizinkan reuse tersebut. Request yang menemukan stale entry karena itu tidak harus ikut menanggung origin validation latency, tetapi dapat menerima representation data yang lebih lama daripada normal freshness lifetime. Ini adalah pergeseran yang disengaja dalam cache contract. Freshness tetap berakhir pada boundary yang dikonfigurasi. Extension menambahkan interval terpisah tempat stale reuse diizinkan sementara validation berlangsung, sehingga response age dan request latency menjadi sebagian terpisah.

Rekayasa Perangkat Lunak 16 Sep 2026 8 min read

HTTP If-Range Mengikat Pengambilan Parsial pada Identitas Representasi

Client yang hanya memiliki sebagian dari sebuah representasi HTTP menghadapi masalah konsistensi ketika kemudian meminta byte yang belum diterima. Offset byte hanya bermakna terhadap representasi yang byte-nya menjadi dasar offset tersebut. Jika representasi terpilih berubah di antara request, menggabungkan prefix lama dengan suffix baru dapat menghasilkan data yang tidak pernah dikirim server mana pun. If-Range mengikat identitas representasi pada boundary pengambilan parsial tersebut. Ketika validator-nya cocok, server dapat memproses field Range yang menyertainya. Ketika tidak cocok, server mengabaikan Range dan mengirim representasi terpilih secara lengkap melalui jalur response sukses biasa, alih-alih mengembalikan response failed-precondition.

Rekayasa Perangkat Lunak 16 Sep 2026 7 min read

HTTP If-Match Mengubah State Representasi Menjadi Write Precondition

Origin HTTP dapat menolak PUT atau DELETE sebelum menerapkannya ketika request membawa If-Match dan representasi yang dipilih tidak lagi memiliki entity tag yang diterima. Kondisi ini mengubah representation validator menjadi write precondition: client dapat menyatakan bahwa mutasi hanya valid terhadap state yang masih cocok dengan versi yang sebelumnya diamati. Mekanisme ini menangani boundary konkurensi tertentu. Ia dapat mencegah satu client diam-diam mengganti resource state setelah client lain mengubah representasi yang dipilih. Namun ia tidak mengubah HTTP menjadi transaction protocol, tidak mengunci resource antar-request, dan tidak menjamin bahwa entity tag mewakili setiap bagian application state yang terlibat dalam mutasi.

Rekayasa Perangkat Lunak 16 Sep 2026 6 min read

HTTP 421 Misdirected Request Menandai Batas Authority Koneksi

Client HTTP/2 dapat menggunakan ulang satu secured connection untuk request ke lebih dari satu origin ketika server authoritative untuk origin-origin tersebut. Namun, sebuah request tetap dapat mencapai server instance yang connection context-nya tidak sesuai dengan target URI. 421 Misdirected Request ada untuk boundary ini: server menolak routing context, bukan memperlakukan target resource itu sendiri sebagai tidak ada. Perbedaan ini memisahkan resource semantics dari connection authority. Response 421 berarti server ini, pada path atau connection context ini, tidak mampu atau tidak bersedia menghasilkan authoritative response untuk target URI. Itu tidak berarti resource telah dihapus, method-nya dilarang, atau request representation tidak valid.

Rekayasa Perangkat Lunak 16 Sep 2026 6 min read

HTTP 103 Early Hints Memisahkan Spekulasi dari Semantik Response Final

Server HTTP dapat mengirim response informasional 103 Early Hints sebelum response final selesai dibuat. Client dapat bertindak atas field yang sesuai pada interim message tersebut, misalnya memulai preload yang disebut oleh Link, walaupun status code, header field, dan representasi final masih belum tersedia. Hal ini sengaja memisahkan speculative work dari authoritative response semantics. Interim response dapat memindahkan sebagian preparation lebih awal, tetapi tidak dapat menggantikan final response atau menentukan maknanya.

Rekayasa Perangkat Lunak 16 Sep 2026 7 min read

File Descriptor Duplikat Berbagi Offset tetapi Tidak Descriptor Flag

Memanggil dup() tidak membuat posisi stream yang independen. Descriptor yang dikembalikan mengacu pada open file description yang sama dengan descriptor sumber, sehingga seek melalui salah satu descriptor mengubah offset yang terlihat melalui keduanya. Pada saat yang sama, state lokal descriptor seperti flag close-on-exec tetap melekat pada masing-masing descriptor secara terpisah. Pemisahan ini mudah terlewat karena kedua jenis state dimanipulasi melalui file descriptor berupa integer. Integer tersebut hanyalah referensi lokal milik proses. Beberapa descriptor dapat menunjuk ke satu open file description, dan objek bersama itulah yang membawa state yang memengaruhi read, write, seek, serta perubahan status flag.

Rekayasa Perangkat Lunak 09 Sep 2026 8 min read

Mengubah Input Mentah Menjadi Nilai Domain Tepercaya

Sebuah nilai sering masuk ke program sebagai string, angka, atau objek dengan struktur longgar, lalu bergerak melewati beberapa layer. Jika setiap layer harus menanyakan apakah nilai itu kosong, malformed, atau berada di luar rentang yang diizinkan, logika validasi akan menyebar ke seluruh codebase. Sebagian caller mengulang pemeriksaan, sebagian melupakannya, dan sebagian lain diam-diam membuat asumsi yang berbeda. Alternatif yang berguna adalah memperlakukan input eksternal sebagai representasi yang tidak tepercaya dan mengubahnya pada sebuah boundary menjadi nilai yang merepresentasikan fakta domain. Setelah konversi berhasil, kode downstream dapat mengandalkan jaminan yang diberikan nilai baru tersebut alih-alih berulang kali memvalidasi representasi awal.