Fisika komputasi Cara Kerja App Zip/Unzip Compress File
Konsep Kompressi
Konsep kompressi mirip dengan konsep mencontek. Kok bisa??? Jangan khawatir, ini hanya illustrasi. Bayangkan saat ujian, murid A menuliskan jawaban pada selembar kertas, melipat-lipat kertas tersebut, lalu melemparnya kepada murid B. Murid B menangkapnya, membuka lipatan kertas, dan membaca jawaban yang tertera.
Konsep kompressi mirip dengan konsep mencontek. Kok bisa??? Jangan khawatir, ini hanya illustrasi. Bayangkan saat ujian, murid A menuliskan jawaban pada selembar kertas, melipat-lipat kertas tersebut, lalu melemparnya kepada murid B. Murid B menangkapnya, membuka lipatan kertas, dan membaca jawaban yang tertera.
Perhatikan, kertas yang terlipat
bisa dibayangkan sebagai sebuah file/berkas yang dimampatkan atau dikompress,
ukurannya yang lebih kecil membuatnya untuk berpindah tangan. Tetapi untuk
mendapatkan ukuran yang lebih kecil dan kecepatan transfer, ada yang harus
dibayar sebagai konsekuensinya. Sang penerima (Murid B), harus membuka lipatan
kertas tersebut sebelum
dapat membaca jawaban ujian. Kita
dapat membayangkan proses ini sebagai proses dekompressi, diperlukan waktu dan
resource untuk melakukannya.
Algoritma dan Rasio
Konsepnya terdengar mudah, bagaimana
dengan algoritmanya? Salah satu algoritma yang sederhana ditunjukkan dengan
algoritma yang dikenal denga Run-length encoding (RLE). Contohnya, terdapat
string input sebagai berikut:
AAAAAAAABBCCCCDDDDDD
String tersebut dapat dikompressi
menjadi:
8A2B4C6D
Terlihat, angka di dipan huruf
mempresentasikan beberapa banyak hurufyang sama terulang secara berentet. 8A
berarti AAAAAAAA, 2B berarti BB, dan seterusnya. Prosees ini juga disebut
proses encoding, dengan mentransformasikan informasi ke format lain. Contoh
yang cukup dikenal adalah encoding dari format WAV ke MP3, proses kebalikannya
disebut decoding. Karena tujuannya untuk mengecilkan ukuran, maka perhitungan
rasio menjadi suatu tolak ukur keberhasilan sebuah algoritma kompressi. Rasio
kompressi dapat dihitung dengan rumus:
Rasio kompressi = ukuran data
sebelum terkompressi/ukuran data setelah terkompressi
Dari contoh sederhana tadi, ukuran
sebelum terkompressi adalah 20 karakter, sementara ukuran setelah terkompressi
adalah 8 karakter. Maka diperoleh 20/8 yang menghasilkan rasio kompressi
sebesar 2.5, dinotasikan dengan 2,5:1. dan dapat diterjemahkan dalam kalimat:
setiap 2,5 karakter pada contoh string tersebut dapat di kompressi hanya 1
karakter. Beberapa aplikasi seperti Winzip pada Windows, menuliskan rasio
kompressi dengan persentase, melalui rumus:
% rasio kompressi = (ukuran data
setelah terkompressi/ukuran data sebelum terkompressi) x 100.
Masukkan angka dari contoh yang
sama, yaitu (8/20) x 100 sehingga diperoleh persentase rasio kompressi sebesar
40%. Artinya, hasil kompressi adalah sebesar 40% dibandingkan ukuran aslinya.
Dalam hal ini, semakin kecil tentu semakin baik.
Tetapi jangan kecewa jika Anda
mencoba kompressi ZIP/RAR pada file teks berisi 20 karakter seperti contoh
(yang berarti berukuran 20 byte). Karena Anda akan mendapatkan hasil kompressi
yang justru hasilnya membengkak, bisa jadi berukuran diatas 100 byte! Hal ini
terjadi karena file kompressi ZIP/RAR menyimpan informasi header atau format
tertentu, dan memang bukan ditujukan untuk mengompress file dengan ukuran
kecil.
Algoritama RLE yang ditunjukkan
diatas masih sangat sederhana, dan terlihat baru efektif jika terjadi banya
pengulangan data. Jika data merupakan file teks/tulisan dalam kalimat berbahasa
Indonesia/Inggris , relative tidak terdapat banyak rentetan pengulangan
karakter. Tetapi data berupa grafik sederhana berupa icon atau gamba yang
memiliki banyak warna area yang sama (seperti gambar garis hitam dibidang
putih),cenderung memiliki banya pengulangan byte.
Mari melihat contoh algoritma
kompressi lainnya yang merupakan dasar algoritma yang disebut predictive
coding, data awal secara sederhana dicontohkan dengan variable array.
Kompressi Executable
Jika Anda melihat file ZIP dan
membandingkan dengan file JPEG atau MP3, mungkin timbul pertanyaan mengapa file
ZIP harus diektrak terlebih dahulu, sementara MP3 dapat diakses langsung oleh
media player yang mendukung format tersebut? Sebenarnya yang terjadi adalah
file MP3 itupun di-ektrak secara real-time oleh aplikasi audio player sebelum
data itu dijalankan. Tentunya proses tersebut berasa dibackground aplikasi.
Jadi, aplikasi player tersebut harus memiliki engine decode untuk format MP3,
demikian juga untuk format kompressi lainnya.
Konsep yang sama berlaku jika Anda
file kompressi executable, yaitu sebuah file EXE yang dikompressi, tetapi masih
ber ekstensi EXE (dengan ukuran lebih kecil), dan siap dijalankan. Engine atau
kode untuk maelakukan dekompressi ditamamkan pada file yang sama. Untuk membuat
file kompressi executable ini, diperlukan software yang berfungsi sebagai
executable compressor (atau packer), yang khusus didesain untuk mengkompressi
file executable.
Keuntungan dari kompressi executable
adalah:
Anda tidak membutuhkan aplikasi lain
untuk melakukan dekompressi, bandingkan jika Anda mengompress sebuah file EXE
kedalam ekstensi ZIP/RAR, untuk menjalankan file EXE tersebut, Anda memerlukan
aplikasi seperti Winzip untuk melakukan dekompressi.
Dari segi keamanan, kompressi executable dapat menyulitkan usaha reverse engineering atau proses pengodean ulang file tersebut untuk dianalisi oleh pihak lain. Bagaimana dari segi kecepatan? Walaupun teap dibutuhkan waktu untuk proses dekompressi sebelum dieksekusi, dilain sisi ukuran file yang lebih kecil akan mempercepat waktu transfer data ke memory. Karena itu, umumnya file kompressi executable tidak bermasalah dalam hal kecepatan untuk penggunaan yang umum, kompressi executable tidak terlalu popular mengingat kapasitas media storage yang relatif besar untuk menyimpan file executablae. Tetapi kompressi executable sering digunakan oleh malware, dengan tujuan agar program malware tersebut lebih cepat terdistribusi, dan lebih sulit dianalisi. Beberapah contoh adalah UPX, NeoLite, eXPressor, dan seterusnya.
Dari segi keamanan, kompressi executable dapat menyulitkan usaha reverse engineering atau proses pengodean ulang file tersebut untuk dianalisi oleh pihak lain. Bagaimana dari segi kecepatan? Walaupun teap dibutuhkan waktu untuk proses dekompressi sebelum dieksekusi, dilain sisi ukuran file yang lebih kecil akan mempercepat waktu transfer data ke memory. Karena itu, umumnya file kompressi executable tidak bermasalah dalam hal kecepatan untuk penggunaan yang umum, kompressi executable tidak terlalu popular mengingat kapasitas media storage yang relatif besar untuk menyimpan file executablae. Tetapi kompressi executable sering digunakan oleh malware, dengan tujuan agar program malware tersebut lebih cepat terdistribusi, dan lebih sulit dianalisi. Beberapah contoh adalah UPX, NeoLite, eXPressor, dan seterusnya.

Tidak ada komentar:
Posting Komentar