gabung

Unique 1:1 Traffic Exchange

Selasa, 20 September 2011

puisi 6

andai
 
Andai kau tau berapa kadar garam dilautan

Maka kau kan tau berapa besar aku mencintamu

Andai kau tau berapa jumlah partikel air, 
maka kau kan tau pula berapa kali dlam sehari aku merindukanmu..

Tapi aku tak peduli kau sudi menyadari atau kah tidak

Yg ku tau, tak manusia terhebat yg menggatikan cintaku atas kamu...

puisi 5

' Dia...'

Dia lembut seperti kapas '
Dia indah bagaikan malaikat bersayap yang turun dari langit '
Dia anugerah terindah yang ada di hidupku '
...
Wajahnya meneduhkan jiwaku yang rapuh '
Tutur katanya menenangkan hatiku yang bimbang '
Senyumnya menghiasai hari – hariku '
Dan canda tawanya menghangatkan suasana di hidupku

puisi 5

Gadis Suciku

Kain suci menutupi auratmu….
Kebaikan menjadi perinsipmu...
Senyum senantiasa menghiasi bibirmu.
... Gadis suci itulah julukanmu.

Gadis berjilbab itulah panggilanmu.
Yang kan terus terukir dalam hatiku.
Kau sungguh makhluk terindah dalam bumiku.
Yang mampu menerangi gelap hatiku.

Kau telah merasuki relung hatiku.
Dengan kecantikan iman-mu.
Aku terpana kepadamu.
Sejak pertama ku memandangmu.

Engkaulah Gadis Suciku...!!

puisi 4

sadarkah
 
Sadarkah kamu... Tiada hariku terlewat tanpa bayangmu
. Tiada malamku berlalu tanpa memikirmu. 
Tiada tidurku terbangun tanpa memimpimu. 
Sadarkah sayang....... Cintamu tlah buat diriku mabuk kepayang. 
Lihat senyummu buatku serasa terbang
. Rayuanmu membuat anganku semakin melayang.
Oh..... Sadarkah kasih.... Cintaku untukmu tiada kan pernah mati.
Cintaku ini adalah cinta putih. Yang tercipta dari niat suci setulus hati.

puisi 3

 perih
terdengar lirih,,,,
dalam hati yg perih,,,
ingin teriakkan satu suara,,,
agar tercipta satu kebahagiaan,,,

... semua serasa tak mampu lagi,,,
seiring debtuman nafas kehidupan,,,

teronggok diam seorang diri,,,
tak tau,,,
menanti yg tak pasti,,,
wahai mentari pagi,,,
wahai bulan malam,,,
sanggupkah kau membantu,,,
sampaikan salam rinduku,,,

pungguk merindukan bulan,,,
embun merindukan mentari,,,
inilah aku yg sendiri,,,

puisi 2

Ceritakan padaku

Tentang pedihnya sebuah kehilangan
Yang terbang diatas awan senja merah saga
Dan menyisakan ngilu menikam didada
... Dalam derap waktu yg bergegas

Agar segera kubaluri hatimu
Dengan sejuk bening embun
Dan tulus cintaku
Ceritakan padaku tentang perihnya

Sebuah pengorbanan
Yg membakar habis segenap asa mu
Dan meninggalkan sepotong lara
Mengedap didasar kalbu

puisi 1

Demi Cinta

Memikirkn apa yg kan terjadi.
Kekasihku,engkau tahu.
Indahnya dirimu Menyakitkan aku.
... Kau bagaikan mawar yg berduri.

Semakin kugenggam smakin Perih.
Tak terbendung luka.
Apapun demi Cinta.
Tebaslah semua sayapku.

Bunuhlah dengan pedangmu.
Semua demi Cinta.
Kaulah pengusa hatiku.
Darah mengalir hanya untukmu.

puisi romantis

Sihir-Mu

Ketika mata ini mulai terbuka
Wajahmu melintas.
Sepintas ku berharap.
... Agar tak kau hantui lagi.

Tapi mustahil.
Nama dan pesna mu,
Melayang di hati ku.
Seiring pancaran mentari.

Senandung rindu pun mengalun,
Hati ku benar2 terjerat.
Berteriak histeris.
Memanggil cinta mu.

Hati ku sungguh2 tersihir.
Pikiran ku padamu.
Menunggu cintamu.

Kamis, 16 Juni 2011

CARA BUAT ANTIVIRUS SENDIRI

Pertama kita harus mengerti bagaimana cara kerja
sebuah AV sederhana, pada dasarnya sebuah software AV mempunyai
komponen-komponen :

1. Engine scanner, ini merupakan komponen utama AV
dalam mengenali sebuah pattern virus. Engine ini dapat dikelompokkan
menjadi statis dan dinamis. Statis dalam hal ini dapat disebut menjadi
spesifik terhadap pattern tertentu dari sebuah file virus. Checksum
merupakan salah satu contoh dari engine statis ini. Dinamis dalam
artian dia mengenali perilaku ‘umum’ sebuah virus. Heuristic menjadi
salah satu contohnya.

2. Database definition, menjadi sebuah referensi dari sebuah pattern
file virus. Engine statis sangat bergantung kepada komponen ini.

3. Decompress atau unpacking engine, khusus untuk pengecekan file-file
yang terkompresi (*.rar, *.zip, dll) atau kompresi atau packing untuk
file PE seperti UPX, MeW , dll.

Tidak jarang hasil dari pengecekan terhadap file
suspect virus menghasilkan false-positive bahkan false-negative (–
false-positive berarti file yang bersih dianggap thread oleh AV, dan
false-negative berarti file yang 100% thread akan dianggap bersih).
Semua itu dapat diakibatkan oleh ketidak-sempurnaan dari engine scanner
itu sendiri. Misal

pada contoh kasus Engine String scanner (–Engine scanner yang
menyeleksi string-string dari file text-based), bila diterapkan rule 3
out of 5 (– bila AV menemukan 3 dari daftar 5 string kategori
malicious) maka AV akan memberikan bahwa file terindikasi sebuah thread
yang positif. Padahal file tsb nyatanya tidak menimbulkan efek
berbahaya bila dijalankan atau dieksekusi. Kesalahan scanning macam ini
lazim ditemukan untuk file-file *.VBS, *.HTML, dll. Untuk penggunaan
engine checksum sangat banyak ditemui di beberapa software AV lokal.
Checksum yang lazim digunakan diantaranya CRC16, CRC32, MD5, dll.
Dikarenakan mudah untuk diimplementasikan. Engine ini sendiri bukannya
tanpa cacat, Checksum bekerja dengan memproses byte demi byte dari
sebuah file dengan sebuah algoritma tertenu (– tergantung dari jenis
checksum yang digunakan) sehingga menghasilkan sebuah format tertentu
dari file tsb. Contoh checksum menggunakan CRC32 dan MD5 :

* calCrc = CRC32(file_name_and_path)

* calMD5 = MD5(file_name_and_path)

Maka isi dari string calCrc adalah 7AF9E376,
sedangkan untuk MD5nya adalah 529CA8050A00180790CF88B63468826A. Perlu
diketahui bila virus menerapkan rutin yang mengubah byte tertentu dari
badan virus tsb setiap kali maka penggunaan engine checksum ini akan
kurang optimal karena bila 1 byte berubah dari file maka checksum juga
akan berubah.

Mari kita belajar membuat sebuah AV sederhana, yang diperlukan :

1. Software Visual Basic 6.0

2. Sedikit pemahaman akan pemograman Visual Basic 6.0

3. Sampel file bersih atau virus (– opsional)

First#

Sekarang kita akan belajar membuat sebuah rutin sederhana untuk :

- Memilih file yang akan dicek

- Membuka file tersebut dalam mode binary

- Memproses byte demi byte untuk menghasilkan Checksum

Buka MS-Visual Basic 6.0 anda, lalu buatlah sebuah
class module dan Form dengan menambahkan sebuah objek Textbox,
CommonDialog dan Command Button. (Objek CommonDialog dapat ditambahkan
dengan memilih Project -> COmponent atau Ctrl-T dan memilih
Microsoft Common Dialog Control 6.0) Ketikkan kode berikut pada class
module (kita beri nama class module tsb clsCrc) :

================= START HERE ====================

Private crcTable(0 To 255) As Long ‘crc32

Public Function CRC32(ByRef bArrayIn() As Byte, ByVal lLen As Long, Optional ByVal lcrc As Long = 0) As Long

‘bArrayIn adalah array byte dari file yang dibaca, lLen adalah ukuran atau size file

Dim lCurPos As Long ‘Current position untuk iterasi proses array bArrayIn

Dim lTemp As Long ‘variabel temp hasil perhitungan

If lLen = 0 Then Exit Function ‘keluar fungsi apabila ukuran file = 0

lTemp = lcrc Xor &HFFFFFFFF

For lCurPos = 0 To lLen

lTemp = (((lTemp And &HFFFFFF00) \\ &H100) And &HFFFFFF) Xor (crcTable((lTemp And 255) Xor bArrayIn(lCurPos)))

Next lCurPos

CRC32 = lTemp Xor &HFFFFFFFF

End Function

Private Function BuildTable() As Boolean

Dim i As Long, x As Long, crc As Long

Const Limit = &HEDB88320

For i = 0 To 255

crc = i

For x = 0 To 7

If crc And 1 Then

crc = (((crc And &HFFFFFFFE) \\ 2) And &H7FFFFFFF) Xor Limit

Else

crc = ((crc And &HFFFFFFFE) \\ 2) And &H7FFFFFFF

End If

Next x

crcTable(i) = crc

Next i

End Function

Private Sub Class_Initialize()

BuildTable

End Sub

================= END HERE ====================

Lalu ketikkan kode berikut dalam event Command1_Click :

================= START HERE ====================

Dim namaFileBuka As String, HasilCrc As String

Dim CCrc As New clsCrc ‘bikin objek baru dari class ClsCrc

Dim calCrc As Long

Dim tmp() As Byte ‘array buat file yang dibaca

Private Sub Command1_Click()

CommonDialog1.CancelError = True ‘error bila user mengklik cancel pada CommonDialog

CommonDialog1.DialogTitle = “Baca File” ‘Caption commondialog

On Error GoTo erorhandle ‘label error handle

CommonDialog1.ShowOpen

namafilbuka = CommonDialog1.FileName

Open namafilbuka For Binary Access Read As #1 ‘buka file yang dipilih dengan akses baca pada mode binary

ReDim tmp(LOF(1) – 1) As Byte ‘deklarasi ulang untuk array, # Bugs Fixed #

Get #1, , tmp()

Close #1

calCrc = UBound(tmp) ‘mengambil ukuran file dari array

calCrc = CCrc.CRC32(tmp, calCrc) ‘hitung CRC

HasilCrc = Hex(calCrc) ‘diubah ke format hexadesimal, karena hasil perhitungan dari class CRC masih berupa numeric

Text1.Text = HasilCrc ‘tampilkan hasilnya

Exit Sub

erorhandle:

If Err.Number <> 32755 Then MsgBox Err.Description ‘error number
32755 dalah bila user mengklik tombol cancel pada saat memilih file

================= END HERE ====================

COba anda jalankan program diatas dengan memencet
tombol F5, lalu klik Command1 untuk memilih dan membuka file. Maka
program akan menampilkan CRC32nya.

Second#

Kode diatas dapat kita buat menjadi sebuah rutin pengecekan file
suspect virus dengan antara membandingkan hasil CRC32nya dan database
CRC kita sendiri. Algoritmanya adalah :

- Memilih file yang akan dicek

- Membuka file tersebut dalam mode binary

- Memproses byte demi byte untuk menghasilkan Checksum

- Buka file database

- Ambil isi file baris demi baris

- Samakan Checksum hasil perhitungan dengan checksum dari file

Format file database dapat kita tentukan sendiri, misal :

- FluBurung.A=ABCDEFGH

- Diary.A=12345678

Dimana FluBurung.A adalah nama virus dan ABCDEFGH dalah Crc32nya. Jika
kita mempunyai format file seperti diatas, maka kita perlu membaca file
secara sekuensial per baris serta memisahkan antara nama virus dan
Crc32nya. Dalam hal ini yang menjadi pemisah adalah karakter ‘=’.

Buat 1 module baru (– diberi nama module1) lalu isi dengan kode :

================= START HERE ====================

Public namaVirus As String, CrcVirus As String
‘deklarasi variabel global untuk nama dan CRC virus Public pathExe as
String ‘deklarasi variabel penyimpan lokasi file EXE AV kita

Public Function cariDatabase(Crc As String, namaFileDB As String) As Boolean

Dim lineStr As String, tmp() As String ‘variabel penampung untuk isi file

Open namaFileDB For Input As #1 ‘buka file dengan mode input

Do

Line Input #1, lineStr

tmp = Split(lineStr, “=”) ‘pisahkan isi file bedasarkan pemisah karakter ‘=’

namaVirus = tmp(0) ‘masukkan namavirus ke variabel dari array

CrcVirus = tmp(1) ‘masukkan Crcvirus ke variabel dari array

If CrcVirus = Crc Then ‘bila CRC perhitungan cocok/match dengan database

cariDatabase = True ‘kembalikan nilai TRUE

Exit Do ‘keluar dari perulangan

End If

Loop Until EOF(1)

Close #1

End Function

================= END HERE ====================

Lalu tambahkan 1 objek baru kedalam Form, yaitu
Command button2. lalu ketikkan listing kode berikut kedalam event
Command2_Click :

================= START HERE ====================

If Len(App.Path) <= 3 Then ‘bila direktori kita adalah root direktori

pathEXE = App.Path

Else

pathEXE = App.Path & “\\”

End If

CommonDialog1.CancelError = True ‘error bila user mengklik cancel pada CommonDialog

CommonDialog1.DialogTitle = “Baca File” ‘Caption commondialog

On Error GoTo erorhandle ‘label error handle

CommonDialog1.ShowOpen

namafilbuka = CommonDialog1.FileName

Open namafilbuka For Binary Access Read As #1 ‘buka file yang dipilih dengan akses baca pada mode binary

ReDim tmp(LOF(1) – 1) As Byte ‘deklarasi ulang untuk array # Bugs Fixed #

Get #1, , tmp()

Close #1

calCrc = UBound(tmp) ‘mengambil ukuran file dari array

calCrc = CCrc.CRC32(tmp, calCrc) ‘hitung CRC

HasilCrc = Hex(calCrc) ‘diubah ke format hexadesimal, karena hasil perhitungan dari class CRC masih berupa numeric

If cariDatabase(HasilCrc, pathEXE & “DB.txt”) Then ‘bila fungsi bernilai TRUE

MsgBox “Virus ditemukan : ” & namaVirus ‘tampilkan message Box

End If

Exit Sub

erorhandle:

If Err.Number <> 32755 Then MsgBox Err.Description ‘error number
32755 dalah bila user mengklik tombol cancel pada saat memilih file

================= END HERE ====================

Fitur AV sederhana ini dapat ditambahkan dengan
fitur process scanner, akses registry, real-time protection (RTP) dan
lain lain. Untuk process scanner pada dasarnya adalah teknik enumerasi
seluruh proses yang sedang berjalan pada Sistem Operasi, lalu mencari
letak atau lokasi file dan melakukan proses scanning.

MENINGKATKAN KINERJA WINDOWS XP

Saya beberapa kali menjumpai komputer (PC) atau Laptop dengan spesifikasi komputer yang relatif menengah keatas, tetapi ketika menjalankan program / browsing di windows explorer, sering terasa lambat. Setelah diperiksa, seringkali pengguna kurang memperhatikan bagaimana [tip] meningkatkan kinerja windows XP yang digunakan.

Sebenarnya banyak cara/tips untuk meningkatkan kinerja Windows, bisa dilakukan secara software maupu hardware. Yang akan dibahas disini adalah meningkatkan kinerja Windows (secara software) dengan 3 langkah sederhana.

1. Mengatur Seting “Performance Options”

Klik kanan My Computer pilih tab Advanced dan Klik Setting pada bagian Performance

Agar komputer berkerja lebih cepat, maka bisa dipilih Adjust for best performance, tetapi jika ingin tetap menggunakan tampilan XP, pilih saja (beri tanda cek) pada pilihan :

Use visual styles on windows and buttons
Smooth edges of screen fonts
Use drop shadows for icon labels on the desktop (jika icon desktop diaktifkan)

Animasi lainnya tidak begitu penting, jadi di hilangkan tanda cek-nya.

2. Mengatur aplikasi yang berjalan dengan windows

Ini mungkin akan banyak berpengaruh ke kinerja dan penggunaan Memori. Sebagian pengguna tidak begitu memperhatikan apa saja aplikasi yang otomatis berjalan bersama windows ketika start up. Padahal banyak aplikasi yang tidak penting, tetapi selalu berjalan di backround, sehingga ikut memakan Memory (RAM) komputer dan kadang memperberat kinerja.

Jika anda menggunakan laptop, maka biasanya aplikasi yang otomatis berjalan dengan windows akan semakin banyak. Salah satu indikasinya adalah banyaknya icon yang ada di sistem tray. Bagaimana mengatur dan memeriksa aplikasi-aplikasi yang berjalan dengan windwos ini ?

Cara paling mudah dan disarankan adalah menggunakan software gratis Autorun, bisa di download di http://technet.microsoft.com/en-us/sysinternals/bb963902.aspx atau Download langsung (zip) Autorun

Selain ukuran yang kecil, software ini bersifat portable. Tetapi mungkin ini adalah aplikasi autorun terbaik yang ada selama ini. Setelah di download, jalankan dan pilih tab Logon. Nah daftar yang ditampilkan adalah daftar aplikasi yang otomatis berjalan bersama windows. Hilangkan tanda cek agar aplikasi tidak otomatis berjalan.

Aplikasi yang tidak penting misalnya fasilitas auto update / registration dari program-program seperti Printer, Adobe acrobat, CorelDraw dan lainnya. Selain itu berikut beberapa aplikasi yang sering ikut berjalan bersama windows, tetapi tidak begitu penting :

Adobe Acrobat SpeedLauncher
Alcmtr ( Realtek Azalia Audio – Event Monitor)
EPSON Status Monitor ( jika menggunakan printer lain, seperti HP, Canon dan lainnya biasanya juga ada )
RTHDCPL (Realtek HD Audio Control Panel)
Skytel (Realtek Voice Manager)
SunJavaUpdSched ( Java(TM) Platform SE binary)
dan lain-lainnya

Tip ini seharusnya juga akan mempercepat proses booting komputer. Jika masih lambat, coba baga juga artikel Tips mengatasi booting/loading komputer yang lambat

Perhatian..!! Jangan menghilangkan tanda chek (centang) di 2 komponen yang berada atas, yaitu userinit.exe dan explorer.exe, karena bisa menyebabkan windows tidak ada bisa masuk (login).. Jika hal ini terjadi, maka ketika booting (setelah restart) tekan-tekan tombol F8 sampai muncul pilihan booting, untuk selanjutnya pilih Safe Mode. Kemudian login dengan user seperti yang dipakai sebelumnya. Setelah masuk safe Mode, buka/jalankan Autoruns dan aktifkan kembali 2 komponen diatas, kemudian restart ulang.

3. Mematikan Indexing Service

Indexing service merupakan fasilitas windows untuk membuat dan mengupdate index file/folder secara berkala, sehingga ketika menggunakan fasilitas Search di explorer, maka pencarian bisa lebih cepat. Kadang fitur ini sering membuat kinerja PC menjadi lambat, apalagi jika jarang menggunakan fasilitas Search/Find. Untuk menon aktifkannya melalui langkah berikut :

Buka Control Panel > Add or Remove Programs
Pilih Add/ Remove Windows Components
Hlangkan tanda cek pada Indexing Service klik saja next
Tunggu proses sampai selesai

Yang jelas maih banyak tips yang lain untuk meningkatkan kinerja windows [XP], tetapi minimal dengan dua langkah pertama tersebut, akan terasa perbedaannya.

MENINGKATKAN KINERJA PC(KOMPUTER)

Seiring dengan banyaknya software/program yang di install di komputer, sering kita merasa kinerja komputer kita menjadi semakin lambat. Atau kadang kita tahunya komputer kita semakin lambat kinerjanya. Hal ini wajar apalagi dengan semakin lamanya penggunaan komputer dengan berbagai program didalamnya.

Sebenarnya kinerja komputer bisa dipengaruhi oleh banyak faktor, baik software maupun hardware. Ada berbagai tips yang dapat dilakukan agar kinerja komputer menjadi lebih baik. Berikut beberapa tips yang mungkin dapat dilakukan dan mungkin sebagian sudah umum kita lakukan atau kita dengar.

1. Uninstall program yang tidak dipakai

Meskipun tidak dijalankan, program yang jarang atau tidak pernah digunakan bisa ikut mempengaruhi kinerja komputer. Terutama program yang menyimpan seting-setingnya di registry. Mengapa ? karena setiap kali komputer dijalankan, registry windows akan di load di memory, sehingga semakin besar ukurannya, memori yang digunakan akan semakin besar pula.

2. Periksa program-program yang otomatis berjalan dengan Windows

Hal ini bisa di cek dengan program seperti autoruns. Biasanya ada beberapa program yang selalu berjalan yang sebenarnya tidak begitu penting atau kurang penting.

3. Defragment hardisk

Ini bisa dilakukan melalui menu Properties > System Tools > Disk Defragment. Yang tujuannya untuk menata kembali file-file sesuai prioritasnya.

4. Mematikan service yang tidak terpakai

Hal ini memerlukan sedikit pengetahuan tentang komputer. Services merupakan program/library juga yang dijalankan (di load) setiap komputer hidup. Bisa dilihat melalui Control Panel > Administrative Tools > Services. Jika komputer tidak pernah digunakan online (internet), ada beberapa service yang bisa di non aktifkan. Misalnya Windows Time dan beberapa service lainnya ( bisa di cek keterangannya). Tapi hal ini juga perlu berhati-hati, jika salah bisa menyebabkan beberapa fungsi windows tidak berjalan.

5. Hindari penggunakan Skin windows

Kadang penggunaan tampilan/skin tambahan windows bisa mempengaruhi kinerja cukup signifikan. Terutama penggunaan software tambahan. Sebaiknya jika ingin tampilan yang berbeda gunakan saja Windows Themes (bawaan windows).

6. Matikan beberapa efek Visual Windows

Selain itu beberapa efek windows [xp] yang tidak begitu penting bisa di matikan. Bisa di dilakukan melalui klik kanan di My Computer pilih Properties. Di tab Advanced di bagian Performance klik tombol Settings. Bisa di non aktifkan Visual efek yang tidak begitu penting.

7. Batasi tambahan jumlah font

Ini berpengaruh ke aplikasi yang menggunakan Pilihan font seperti Microsoft Office. Dengan banyaknya font tambahan akan mempengaruhi ke memori yang digunakan dan loading akan terasa lebih lambat.

8. Hapus icon di desktop yang tidak penting

Sering program yang di install di komputer akan membuat shortcut baru (icon) di desktop. Jika kita jarang menggunakan icon-icon ini, lebih baik di hapus saja, bisa sedikit mengurangi pemakaian memori.

9. Scan komputer dari Virus, Spyware, trojan dan sejenisnya

Jika komputer terinfeksi virus, sebagian besar kinerjanya akan menurun, bahkan bisa-bisa komputer menjadi sangat lambat. Oleh karena itu sebaiknya selalu dijaga agar komputer bebas virus. kemudian jika komputer sering terkoneksi ke Internet, maka sebaiknya sekitar sebulan sekali komputer di scan dari spyware, mallware dan sejenisnya.

10. Gunakan alternatif software yang lebih ringan

Beberapa software kandang hanya digunakan untuk beberapa hal yang sederhana. Misalnya menggunakan ACDSee hanya untuk melihat-lihat gambar atau foto saja. Jika hanya ingin melihatl lihat gambar dengan format standard, maka bisa menggunakan Fasilitas bawaan windows, karena ACDSee cukup berat terutama versi-versi terbaru.

11. Menggunakan Software TuneUp, defragment dan sejenisnya.

Jika kita kesulitan dengan optimalisasi sistem manual dan ingin cara mudah, maka kita bisa menggunakan program-program TuneUp, Defragment registry, dan sejenisnya.

12. Upgrade hardware

Jika memiliki dana tambahan dan spesifikasi komputer masih pas-pasan maka bisa di upgrade hardwarenya seperti Memory, CPU atau VGA. Yang paling berpengaruh biasanya Memory dan CPU.

13. Install Ulang

Kadang sistem yang sangat lama dan penuh dengan program yang banyak tidak/jarang terpakai, meski sudah di optimalisasi masih saja lambat. Jika seperti itu, mungkin install ulang adalah solusi yang terbaik, karena biasanya dengan system yang lebih “fresh” kinerja bisa maksimal.

Cara-cara diatas mungkin hanya sebagian tips yang bisa dilakukan dan saya yakin masih banyak tips lain termasuk optimalisasi setting hardware. Jika ada tambahan tips lainnya,

Kamis, 09 Juni 2011

kasus normalisasi

CONTOH KASUS NORMALISASI
  1. 1.     STUDI  KASUS TOKO ABC

1.Dokumen

No. Faktur :
Tanggal :
Kepada :
No.
Nama
Jumlah
Harga
Total






Total Bayar


Diskon


Jumlah Bayar

Petugas : …………………………..

2. Data Dictionary

- No.Faktur - Jumlah - Diskon
- Tanggal - Harga - Jumlah Bayar
- Kepada - Total
- Nama - Total bayar

3. Tahap Normalisasi
TAHAP-TAHAP NORMALISASI DATA
Mendasar pada faktur yang tertera di atas, maka gambaran database yang belum ternormalisasi adalah sebagai berikut :
  1. Tabel yang memiliki field dengan banyak data / tidak tungga

No_Faktur
Tanggal
Nama_pelanggan
Daftar_Belanja
05070101
29/05/07
Pitoyo
Bedak, Beras, Minyak Tanah, Buku
05070102
29/05/07
Bowo
Baby Oil, Garam, Gula, Pensil
05070103
30/05/07
Erlina
Sikat gigi, Sabun, Odol, Sampo
06070001
01/06/07
Dayat
Beras

2. Tabel dengan field yang mengalami repeating groups

No_Faktur
Tanggal
Nama_pelanggan
Belanja1
Harga1
Belanja2
Harga2
Belanja3
Harga3
Belanja4
Harga4
05070101
29/05/07
Pitoyo
Bedak
1500
Beras
10000
Minyak Tanah
3500
Buku
2000
05070102
29/05/07
Bowo
Baby Oil
5600
Garam
2500
Gula
4000
Pensil
1500
05070103
30/05/07
Erlina
Sikat gigi
12000
Sabun
2500
Odol
13000
Sampo
16000
06070001
01/06/07
Dayat
Beras
25000







First Normal form (1-NF)
Implementasi 1-NF dari table data yang belum ternormalisasi di atas adalah dengan cara mengeliminasi keberadaan repeating groups dan dekomposisi relasi menjadi dua atau lebih dengan syarat “tidak boleh ada informasi yang hilang karena proses dekomposisi”
Adapun caranya adalah :
1. Membuat 3 tabel yang memiliki fungsi sebagai berikut :
  • TBFaktur, berfungsi untuk menyediakan atribut-atribut yang bersifat atomic dari tiap nomor faktur (ID_Faktur), seperti : Tanggal, Nama_Pelanggan, Total_Bayar, Diskon dan Nama_Petugas
  • TBProduk, berfungsi untuk menyediakan atribut-atribut yang berulang atau tidak bernilai tunggal pada tiap nomor faktur (ID_Faktur), seperti : Nama_Barang dan harga
  • TBTransaksiDetail, berfungsi sebagai penghubung antara nomor faktur (ID_Faktur) dengan kode barang (ID_Barang) agar proses dekomposisi tidak menyebabkan kerusakan informasi.
  1. Menentukan type data dari tiap atribut dan membuat digram relasional sebagai berikut
Tabel Transaksi Detail
Id_Transaksi
Id_Faktur
Id_Barang
Harga
Jumlah
01
05070101
A01 1.500 1
01
05070101
A02 10.000 1
01
05070101
S02 3.500 1
01
05070101
B01 2.000 1
02
05070102
S01 5.600 1
02
05070102
S03 2.500 1
02
05070102
B02 4.000 1
02
05070102
B03 1.500 1
03
05070103
C01 12.000 1
03
05070103
C02 2.500 1
03
05070103
C03 13.000 1
03
05070103
D02 16.000 1
04
06070001
D03 25.000 1

Tabel Produk

Id_Barang
Nama_Barang
Harga_default
A01 Bedak 1.500
A02 Beras 10.000
S01 Baby Oil 5.600
S02 Minyak tanah 3.500
S03 Garam 2.500
B01 Buku 2.000
B02 Gula 4.000
B03 Pensil 1.500
C01 Sikat Gigi 12.000
C02 Sabun 2.500
C03 Odol 13.000
D02 Sampo 16.000
D03 Beras01 25.000

Table Faktur

Id_faktur
Tanggal
Id_Pelanggan
Nama_Pelanggan
Total_Bayar
Diskon
Id_Petugas
Nama_Petugas
05070101
29/05/07
P01 Pitoyo 20.600 0% K01 Didin
05070102
29/05/07
B01 Bowo 11.000 0% J01 Rina
05070103
30/05/07
E01 Erlina 41.500 0% L02 Rudi
06070001
01/06/07
D01 Dayat 25.000 0% X02 Amelia


3. Pada table TBTransaksiDetail terdapat atribut “Harga”yang berfungsi untuk menyimpan harga per transaksi, sedangkan atribut “Harga_Default” yang terdapat pada table TBProduk adalah atribut yang berfungsi untuk menyimpan harga barang terbaru dari tiap jenis barang.Hal ini berguna untuk mengantisipasi adanya perubahan harga barang dari waktu ke waktu.
4. Primary key yang digunakan pada TBTransaksiDetail adalah “ID_Transaksi”. Atribut kunci tersebut merupakan candidate key yang dibentuk dari superkey hasil penggabungan 2 atribut yaitu : ID_Faktur dan ID_Barang
Second Normal form (2-NF)
Suatu relasi berada dalam 2nd normal form jika dan hanya jika :
<–>Berada dalam bentuk first normal form (1-NF)
<–>Semua atribut bukan kunci memiliki dependensi sepenuhnya dengan kunci primer (Primary Key)
Jika ditelaah kembali relasi bentuk 1-NF yang telah dibuat sebelumnya, maka atribut bukan kunci pada table TBFaktur yang tidak memiliki dependensi sepenuhnya dengan primary key (ID_Faktur), yaitu : “Nama_Petugas”.
Oleh sebab itu dekomposisi relasi perlu dilakukan kembali dengan cara :
  1. Mengeliminasi atribut “Nama_Petugas” dari table TBFaktur
  2. Membuat tabel TBPetugas, menyediakan atribut-atribut yang terkait dengan identitas dan data pelanggan
Tabel Transaksi Detail
Id_Faktur
Id_Barang
Harga
Jumlah
05070101
A01 1.500 1
05070101
A02 10.000 1
05070101
S02 3.500 1
05070101
B01 2.000 1
05070102
S01 5.600 1
05070102
S03 2.500 1
05070102
B02 4.000 1
05070102
B03 1.500 1
05070103
C01 12.000 1
05070103
C02 2.500 1
05070103
C03 13.000 1
05070103
D02 16.000 1
06070001
D03 25.000 1


Table Faktur

Id_faktur
Id_pelanggan
Nama_pelanggan
Id_petugas
tanggal
Total_bayar
Diskon
05070101
P01 Pitoyo K01
29/05/07
20.600 0%
05070102
B01 Bowo J01
29/05/07
11.000 0%
05070103
E01 Erlina L02
30/05/07
41.500 0%
06070001
D01 Dayat X02
01/06/07
25.000 0%

Table Petugas
Id_petugas
Nama_petugas
Alamat
Telp
K01 Didin Jl.aceh 12bandung 0853335555
L02 Rudi Jl.Kiircon 23bandung 0816334466
J01 Rina Jl.Buah batu 04 bandung 022778652
X02 Amelia Jl.Jakarta 45bandung 022998776









Tabel Produk

Id_Barang
Nama_Barang
Harga_default
A01 Bedak 1.500
A02 Beras 10.000
S01 Baby Oil 5.600
S02 Minyak tanah 3.500
S03 Garam 2.500
B01 Buku 2.000
B02 Gula 4.000
B03 Pensil 1.500
C01 Sikat Gigi 12.000
C02 Sabun 2.500
C03 Odol 13.000
D02 Sampo 16.000
D03 Beras01 25.000

Third Normal form (3-NF)
Pada Second Normal Form (2-NF) atribut yang terkait dengan “Nama_Pelanggan” tidak didekomposisi dari table TBFaktur karena atribut tersebut masih memiliki dependensi fungsional dengan primary key (ID_Faktur) karena tiap nomor faktur akan berbeda untuk tiap pembeli/pelanggan.
Tetapi pada tahap 3-NF (Third Normal Form), atribut “Nama_Pelanggan” harus didekomposisi relasi karena pada tahap ini atribut bukan kunci tidak boleh ada yang berdependensi transitif dengan kunci primer.
Atribut “Nama_Pelanggan” dikatakan berdependensi transitif terhadap primary key (ID_Faktur) karena :
  1. ID_Pelanggan  Nama_Pelanggan (Nama_Pelanggan berdependensi fungsional terhadap ID_Pelanggan)
  2. ID_Faktur  ID_Pelanggan (ID_Pelanggan berdependensi fungsional terhadap ID_Faktur, karena tiap nomor faktur akan dikeluarkan untuk suatu ID_Pelanggan tertentu)
  3. Sehingga dikatakan bahwa ID_Faktur memiliki dependensi transitif terhadap atribut Nama_Pelanggan
Berdasarkan analisa di atas maka diagram relational hasil penerapan Third Normal Form adalah sebagai berikut :

Tabel Transaksi Detail

Id_Faktur
Id_Barang
Harga
Jumlah
05070101
A01 1.500 1
05070101
A02 10.000 1
05070101
S02 3.500 1
05070101
B01 2.000 1
05070102
S01 5.600 1
05070102
S03 2.500 1
05070102
B02 4.000 1
05070102
B03 1.500 1
05070103
C01 12.000 1
05070103
C02 2.500 1
05070103
C03 13.000 1
05070103
D02 16.000 1
06070001
D03 25.000 1

Table Faktur

Id_faktur
Id_pelanggan
Id_petugas
tanggal
Total_bayar
Diskon
05070101
P01 K01
29/05/07
20.600 0%
05070102
B01 J01
29/05/07
11.000 0%
05070103
E01 L02
30/05/07
41.500 0%
06070001
D01 X02
01/06/07
25.000 0%

















Table petugas
Id_petugas
Nama_petugas
Alamat
Telp
K01 Didin Jl.aceh 12bandung 0853335555
L02 Rudi Jl.Kiircon 23bandung 0816334466
J01 Rina Jl.Buah batu 04 bandung 022778652
X02 Amelia Jl.Jakarta 45bandung 022998776

Tabel produk

Id_Barang
Nama_Barang
Harga_default
A01 Bedak 1.500
A02 Beras 10.000
S01 Baby Oil 5.600
S02 Minyak tanah 3.500
S03 Garam 2.500
B01 Buku 2.000
B02 Gula 4.000
B03 Pensil 1.500
C01 Sikat Gigi 12.000
C02 Sabun 2.500
C03 Odol 13.000
D02 Sampo 16.000
D03 Beras01 25.000

Tabel pelanggan
Id_pelanggan
Nama_pelanggan
Alamat
Telp
P01 Pitoyo Jl.Cibiru 12bandung 0852222702382
B01 Bowo Jl.Ciwastra 02bandung 081395210395
E01 Erlina Jl.Stasiun lama kircon 03bandung 085722028127
D01 Dayat Jl.suci 24bandung 02233445

  1. 2.     STUDI KASUS NORMALISASI  PENJUALAN BARANG PT. ALAMANDA
Data diperoleh dari hasil survey di lapangan pada Faktur Penjualan Barang.



Membuat Bentuk Tidak Ternormalisasi
Bentuk tidak ternormalisasi dari kasus mengenai faktur penjualan barang, adalah sebagai berikut:
Nomor Faktur
Kode Pelanggan
Nama Pelanggan
Nama Barang
Kode Barang
Tanggal
Pelunasan
Jml
Harga
Total
Total Faktur
F101
P002
Ir. Anjani
B001
B002
Kulkas JVC
TV Sony
06/10/07
20/10/07
3
5
1.500.000
1.000.000
4.500.000
5.000.000
9.500.000
F106
P004
Ir. Adi Susanto
B001
B004
Kulkas JVC
TV Sharp
08/10/07
22/10/07
4
5
1.500.000
800.000
6.000.000
4.000.000
10.000.000
Bentuk Normal Pertama
Yaitu suatu tabel dikatakan dalam bentuk normal pertama hanya jika setiap kolom bernilai tunggal untuk setiap baris (Abdul kadir, 2003).
Bentuk normal pertama mempunyai cirri bahwa setiap data dibentuk dalam flat tabel (tabel datar/rata). Data dibentuk dalam satu record demi satu record dan nilai dari field-field.
Bentuk Normal Pertama dari kasus mengenai faktur penjualan barang, adalah sebagai berikut :
Nomor Faktur
Kode Pelanggan
Nama Pelanggan
Nama Barang
Kode Barang
Tanggal
Pelunasan
Jml
Harga
Total
Total Faktur
F101
P002
Ir. Anjani
B001
Kulkas JVC
06/10/07
20/10/07
3
1.500.000
4.500.000
9.500.000
F101
P002
Ir. Anjani
B002
TV Sony
06/10/07
20/10/07
5
1.000.000
4.500.000
9.500.000
F106
P004
Ir. Adi Susanto
B001
Kulkas JVC
08/10/07
22/10/07
4
1.500.000
5.000.000
10.000.000
F106
P004
Ir. Adi Susanto
B004
TV Sharp
08/10/07
22/10/07
5
800.000
4.000.000
10.000.000


Bentuk Normal Kedua
Suatu tabel berada dalam bentuk normal kedua jika :
  • Tabel berada dalam bentuk normal pertama
  • Semua kolom bukan-kunci-primer tergantung sepenuhnya terhadap kunci primer.
Tergantung sepenuhnya jika suatu kolom selalu bernilai sama untuk nilai kunci primer yang sama.
Bentuk Normal Kedua dari kasus mengenai faktur penjualan barang, adalah sebagai berikut :
Tabel Barang
Kode_Barang(*)
Nama_Barang
B001 Kulkas JVC
B002 TV Sony
B004 TV Sharp
Tabel Pelanggan
Kode_Pelaggan(*)
Nama_Pelanggan
P002 Ir. Anjani
P004 Ir. Adi Sumanto
Tabel Faktur
Nomor Faktur(*)
Kode Pelanggan(**)
Tanggal
Pelunasan
Jml
Harga
Total Faktur
F101 P001
06/10/07
20/10/07
3
1.500.000
9.500.000
F101 P001
06/10/07
20/10/07
5
1.000.000
9.500.000
F106 P004
08/10/07
22/10/07
4
1.500.000
10.000.000
F106 P004
08/10/07
22/10/07
5
800.000
10.000.000
Keterangan :
*: kunci Primer dari tabel
**:kunci tamu/foreign key

Bentuk Normal Ketiga
Suatu tabel dikatakan dalam bentuk normal ketiga, apabila :
ü  Berada dalam bentuk normal kedua,
ü  Setiap kolom bukan kunci primer yang tidak memiliki ketergantungan secara transitif terhadap kunci primer
Bentuk Normal Ketiga dari kasus mengenai faktur penjualan barang, adalah sebagai berikut :
Tabel Barang
Kode_Barang(*)
Nama_Barang
B001 Kulkas JVC
B002 TV Sony
B004 TV Sharp
Tabel Pelanggan
Kode_Pelaggan(*)
Nama_Pelanggan
P002 Ir. Anjani
P004 Ir. Adi Sumanto
Tabel Faktur
Nomor Faktur(*)
Kode Pelanggan(**)
Tanggal
Pelunasan
Total Faktur
F101 P001 06/10/07 20/10/07 9.500.000
F101 P001 06/10/07 20/10/07 9.500.000
F106 P004 08/10/07 22/10/07 10.000.000
F106 P004 08/10/07 22/10/07 10.000.000
Tabel Item Faktur
Nomor Faktur(*)
Kode Barang(**)
Jml
Harga
F101 B001 3 1.500.000
F101 B002 5 1.000.000
F106 B001 4 1.500.000
F106 B004 5    800.000


Keterangan :
*:kunci Primer dari tabel
**:kunci tamu/foreign keyilmu92.blogspot.com