Nimbrung DPT…

Diambil dari salah satu berita detik.com .

“Masalah DPT, bagaimana mungkin menemukan kesalahan 10 juta dalam 24 jam hanya dengan cara manual menggunakan 80 komputer. Saya melihat adik-adik mahasiswa sudah teler. Perkiraan saya paling-paling 180.000 kesalahan dalam 24 jam,” paparnya.

Saya sendiri tidak mengetahui bagaimana sebenarnya metode kerja internal KPU beserta sistem komputerisasinya. Beberapa waktu yang lalu sempat terdengar kabar bahwa KPU melakukan upgrade hardware dari yang digunakan tahun 2004, sedangkan vendor software maupun bagaimana metode internalnya tidak terdengar, at least oleh saya yang kurang gaul ini.

Namun saya rasa walaupun terdapat migrasi database yang menyebabkan inkonsistensi data maka hal ini seharusnya bisa dilacak secara software. Yang menarik adalah pernyataan diatas, yang menurut hemat saya pencarian data yang ganda dilakukan secara manual oleh manusia. C’mon, harga sistem IT KPU bernilai trilyunan, masa’ iya tidak ada diantara para programmer ataupun pemegang IT tersebut yang bisa membuat aplikasi secara cepat untuk mendeteksi data DPT ganda?!

Saya memang tidak memahami parameter apa saja yang digunakan sebagai variable dalam objek data DPT. Namun seharusnya bisa segera diketahui informasi unik dari tiap pemilih yang dapat dijadikan point utama dalam hal sorting ataupun searching, salah satunya misalkan No KTP.

Proses searching dalam database tentu memiliki banyak tools tergantung software database apa yang kita gunakan, namun jika memang tidak memungkinkan masih tetap bisa melakukan export dari database ke dalam file .txt misalnya, ataupun data dalam bentuk CSV (Comma Separated Value). Selanjutnya tinggal menggunakan bahasa pemrograman favorite untuk dapat menemukan letak data ganda dari jutaan informasi DPT tersebut.

Proses searching ini bisa menggunakan beragam algoritma, salah satu contohnya:

[cc lang=”ruby”]


# Load MSUB
msub = []
puts “processing msub file…”
File.open(msub_file,”r”).each_line do |line|
if (line =~ /^(640)/)
line.strip!
msub.push(line)
end
end
msub.sort!
msub.uniq!
puts “msub loaded successfully”
puts “total msub: ” + msub.length.to_s
puts “finished on: ” + Time.now.to_s

# Load AC
acsub = []
puts “processing acmsub file…”
File.open(acmsub_file,”r”).each_line do |line|
if (line =~ /^640/)
line.strip!
acsub.push(line)
end
end
acsub.sort!
acsub.uniq!
puts “acmsub loaded successfully”
puts “total acmsub: ” + acsub.length.to_s
puts “finished on: ” + Time.now.to_s

puts “recon process starting…”
recon = acsub – msub
puts “total recon: ” + recon.length.to_s

puts “writing result to output file…”
result = File.open(result_file,”w”)
recon.each do |res|
result.write(res + “\n”)
end

# Clean up
result.close
acsub.clear
msub.clear

puts “++++++++++++++ finish! +++++++++++++++++++”
puts “recon process finish on : ” + Time.now.to_s

[/cc]

Code diatas menggunakan ruby, dan digunakan sebagai tools reconsiliation informasi dari AC dan MSUB pelanggan salah satu operator telekomunikasi. Intinya adalah menemukan data yang terdapat dalam daftar AC namun tidak terdapat dalam daftar MSUB, data yang dimaksud jika dimasukan kedalam file .txt masing-masing akan memakan space 450MB yang terdiri dari lebih kurang 6 juta pelanggan GSM. Hasil export berupa informasi UNIK yang disebut IMSI (International Mobile Subscriber Identity), dan IMSI inilah yang menjadi parameter utama proses reconciliation dengan ruby sebagai tools bantuan.

Pemrosesan terhadap data ~6juta memakan waktu kurang dari 5 menit, dan hasilnya langsung ditulis ke dalam suatu file untuk kemudian dilakukan rekonsiliasi antara AC dan MSUB berdasarkan data hasil tersebut.

Kaitannya dengan DPT?! tinggal kutak-katik algoritma diatas yang memanfaatkan kemudahan fasilitas Ruby dan Array-nya:

[cc lang=”ruby”]

irb(main):001:0> a = [“Noni”, “Nona”, “Nana”]
=> [“Noni”, “Nona”, “Nana”]
irb(main):002:0> b = [“Noni”, “Nani”, “Nuni”]
=> [“Noni”, “Nani”, “Nuni”]
irb(main):003:0> c = a + b
=> [“Noni”, “Nona”, “Nana”, “Noni”, “Nani”, “Nuni”]
irb(main):004:0> c.uniq
=> [“Noni”, “Nona”, “Nana”, “Nani”, “Nuni”]

[/cc]

Tentu saja pencarian data DPT tidak semudah itu, namun secara logic ditunjukan bahwa dengan sedikit sentuhan programming proses pencarian data ganda dapat di selesaikan secara efisien, dengan begitu tidak perlu melibatkan mahasiswa hingga teler ngurusin secara manual jutaan data DPT.

Just another ~2 cents 🙂

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s