Learn the Rules, Break The Rules, and Create the New Ones...

Hi... My name is Rizky Prihanto. You can call me RQ, or Rizky either. I am currently living on Bandung, Indonesia. Had a lot of works and research about Enterprise Information Systems (majoring on education and e-governments). I have bunch of interests (some friends call it 'freakz') about MySQL Opensource Database and now I am one of the administrator of MySQL Indonesia User Group - the opensource community initialized by Sun Microsystems Indonesia.

My Company PT Cinox Media Insani, Bandung, Indonesia. I work here since 2008 and I take responsibility as Chief of Software Architect. My job is about planning, imaginating, fantasy-ing, concepting, and build the infrastructure of the new information systems (or app engines) which going to be implemented.

This blog This is my blog that represent my current opinion, research and experiences about anything in Software Engineering. Written since 2007 (actually) and has been vaccum for a lot of while. And now I wanna ressurrect this blog (optimistically) from the long-long-hibernation with something fresh and new ideas -- still about MySQL, software engineering, development, and may be something managerial here.

About the tagline I've learned the statement above from some paper written by Kent Beck about Extreme Programming (XP) methodology -- some sort of practical software development methods which have no boundaries. That's very inspiring me a lot. I have written some article on this blog that tell my interpretation about that statement here.

My Another Blogs I have classifying my blogs into some sort of genre. The blog that you read here right now is my primary blog that tell you (majoring) about IT stuff. But if you wanna look another side of me, you can visit here, here, here,or here. Hope it'll be interesting for some of you.

Credits I would thanks to Blogger for this great blog platform. Skinpress who designed this Wordpress template (which is bloggerized by Free Blogger Templates). My appreciate is also going to you who give your generously time for visiting my blog.

4
Cara-Cara Membuka Windows Explorer

Sekian cara membuka Windows Explorer:
  1. Start Menu -> Accessories -> Windows Explorer
  2. Bikin shortcut Windows Explorer di desktop atau di Quick Launch trus buka dari sana
  3. Win Key + E
  4. Klik Kanan Start Menu trus pilih Explore
  5. Klik Kanan My Computer trus pilih Explore
  6. Klik Kanan Recycle Bin trus pilih Explore
  7. Win Key + R trus ketik explorer
  8. Dobel klik My Computer trus setelah muncul window, aktifkan navigation pane
  9. Pakae Internet Explorer trus tulis path file kita seperti biasa
  10. Klik menu menu "My Document" atau "My Pictures" di start menu, toh semuanya juga bakal nge-launching Windows Explorer
  11. Win Key + R trus ketik cmd trus ketik explorer
  12. Start Menu -> Accessories -> Command Prompt trus ketik explorer
  13. Lupakan Windows Explorer, aku lebih suka nge-browse file pakai ACDSee
  14. Tambahkan windows explorer di start-up program trus untuk membuka windows explorer lakukan dengan cara restart komputer!
Yang manakah Anda?

4
Batch Script Generator untuk Backup Database

Jalankan ini di console query mysql client kesayangan anda:

set @path_backup = 'D:\\backup\\';
set @sv_host = '192.168.10.121';
set @sv_port = '3306';
set @sv_uname = 'root';
set @sv_pwd = '123123';

select * into outfile 'D:\\script_batch_mysqldump.bat'
lines terminated by '\n'
from
(
select concat('mysqldump --host=',@sv_host,' --port=',@sv_port,' -u',@sv_uname,' -p',@sv_pwd,' --add-drop-table --max_allowed_packet=1GB --routines --triggers --quote-names -E --no-data ', db.schema_name ,' > ',@path_backup, 'structure_',db.schema_name,'.sql') as syntax from information_schema.schemata as db where db.schema_name not in ('information_schema','mysql','test')

union

select concat('mysqldump --host=',@sv_host,' --port=',@sv_port,' -u',@sv_uname,' -p',@sv_pwd,' --add-drop-table --extended-insert --hex-blob --max_allowed_packet=16GB --lock-tables --no-create-db --no-create-info --quote-names --order-by-primary --dump-date ',db.schema_name,' > ',@path_backup, 'data_', db.schema_name,'.sql') as syntax from information_schema.schemata as db where db.schema_name not in ('information_schema','mysql','test')
) as script;


sesuaikan value dari variabel-variabel yang ada di SET itu dengan informasi koneksi yang benar.
trus sesuaikan juga OUTPUT PATH dari file bat yang akan di-processing (yg gw kasih font warna merah di atas)

setelah itu di-eksekusi, NISCAYA akan di-hasilkan sebuah file BAT di directory di server untuk langsung segera di-eksekusi untuk nge-generate script backup SEMUA DATABASE kita ke dalam 2 file utk masing-masing database, yaitu struktur saja atau data saja.

Kalo yang "struktur" saja, itu isinya:
  1. DDL untuk create table
  2. script stored procedure/function, kalo ada
  3. script pembentuk trigger, kalo ada
  4. script pembentuk events, kalo ada
Sedangkan kalo yang "data" saja, itu isinya dump-dump-an isi data dalam database kita. Sengaja dipisah karena mungkin kita ingin merubah struktur entah create table/routines/dll (mengedit file *.sql -nya menggunakan notepad/text editor) tanpa perlu merubah data. Tentunya beban untuk meng-edit script struktur saja akan lebih ringan ketimbang kalo dicampur dengan script data.

Masalah lainnya yang bisa dicegah dengan memisahkan dump2an data dengan struktur ini adalah RUSAKNYA DATA. Kalo data kita berbentuk binary, atau dibentuk dengan character set khusus (memakai tulisan arab, misalnya) -- seandainya dibuka di editor yang sifatnya nggak I18N-aware (notepad, contohnya), InsyaAllah script dump2an data tersebut akan rusak. Dengan memisahkan script dump2an struktur dan data secara terpisah, setidaknya kita nggak perlu ngebuka data.sql kalo emang nggak penting2 amat untuk menjaga eksistensi data tersebut.

oke, silakan dicoba.


atau kalo mau, adopsi query-query select gw utk nge-build generator sendiri pake bahasa-bahasa pemrograman andalan anda...

0
Mengintip Cara Perhitungan Klasemen pada PSB Solok 2009

Penerimaan Siswa Baru (PSB) Solok 2009 sudah dimulai sejak beberapa hari yang lalu. Antusiasme positif dari siswa sangat tinggi terhadap sistem online yang ditawarkan oleh Dinas Pendidikan Kota Solok tahun ini dengan memberikan fasilitas pendaftaran siswa baru melalui beragam media interaktif seperti web (http://psb.solokcerdas.com) dan SMS Server dengan mengirimkan sms menggunakan format tertentu ke nomor 0811665540.

Banyak feedback yang diterima oleh Dinas Pendidikan Kota Solok mengenai sistem PSB Online ini, terutama pertanyaan mengenai bagaimana sesungguhnya cara perhitungan klasemen pada PSB Solok 2009. Hal ini sebenarnya telah dijelaskan secara detail oleh Team ICT Dinas Pendidikan Kota Solok pada roadshow sosialisasi PSB Online 2009 yang telah dilakukan di semua sekolah di Kota Solok sejak bulan lalu. Namun ada baiknya jika kami jelaskan ulang melalui website ini.


Perhitungan dan penentuan peringkat dalam klasemen untuk setiap sekolah secara mendasar mengacu pada :
  1. Jumlah kuota yang disediakan masing-masing sekolah, meliputi:
    • kuota dalam rayon
    • kuota luar rayon (untuk siswa yang berasal dari sekolah luar rayon dan dari luar kota)
  2. Batas minimal Nilai UN yang ditetapkan oleh masing-masing sekolah
Adapun mekanisme pengurutan (sorting) untuk menentukan posisi siswa dalam tabel klasemen per masing-masing sekolah adalah berdasarkan :
  1. Nilai UN Total
  2. Nilai Bhs Indonesia
  3. Nilai Matematika
  4. Nilai IPA
  5. Nilai Bahasa Inggris
  6. Tanggal & Jam Melakukan Pendaftaran
Jika seorang siswa memiliki nilai UN total yang sama besar dengan siswa lain, maka sebagai komparasi akan dibandingkan lagi nilai UN per mata pelajaran dengan urutan nilai Bahasa Indonesia dilakukan perbandingan terlebih dahulu, baru setelah itu Matematika, dan seterusnya. Jika nilai-nilai mata pelajaran antara siswa tersebut masih sama -- yang mana hal ini kecil kemungkinannya untuk terjadi -- pengurutan untuk memperoleh peringkat yang lebih tinggi antara kedua siswa tersebut akan dilakukan berdasarkan tanggal dan jam siswa tersebut melakukan pendaftaran ke sekolah tersebut.

Peringkat dalam klasemen ini akan terus bergeser mengikuti dinamika jumlah siswa pendaftar yang telah terverifikasi oleh Panitia PSB sampai batas waktu terakhir klasemen memasuki tanggal penutupan.

Untuk siswa-siswa yang sudah berada di luar kuota dari tabel klasemen di masing-masing sekolah, disarankan untuk segera mengganti pilihan sekolahnya ke sekolah lain. Penggantian sekolah pilihan ini hanya bisa dilakukan untuk siswa yang sudah melaporkan nilai DANUN-nya ke Panitia PSB di posko-posko PSB yang tersebar di semua sekolah peserta PSB Online ini.

Untuk siswa-siswa yang saat ini sudah berada di "zona degradasi" alias di papan bawah klasemen masing-masing sekolah, juga amat disarankan untuk mengganti pilihan sekolahnya, dengan harapan kemungkinan di tabel klasemen sekolah lain siswa tersebut masih memiliki posisi aman untuk menempati papan atas atau papan tengah klasemen.

PSB Solok 2009 ini diselenggarakan dalam 2 gelombang klasemen, yaitu :
  • Gelombang 1, dilaksanakan pada tanggal 22 Juni 2009 hingga 30 Juni 2009
  • Gelombang 2, dilaksanakan pada tanggal 8 Juli 2009 hingga 9 Juli 2009
Mekanisme perhitungan dan pengurutan pada kedua gelombang klasemen itu adalah sama dan mengikuti pola perhitungan yang sama seperti yang telah dijelaskan di atas. Sedangkan ketika Klasemen Gelombang 2 berakhir, proses penerimaan siswa baru bagi siswa-siswa yang masih berada di luar kuota akan dilakukan oleh Dinas Pendidikan Kota Solok bekerjasama dengan seluruh sekolah peserta PSB di Kota Solok melalui proses Bursa Calon Siswa.

Demikian penjelasan dari Team ICT Diknas Kota Solok mengenai 'dapur' sistem PSB Online 2009 ini, semoga dapat dipahami oleh segenap siswa di Kota Solok yang tengah berjuang meraih mimpi dan harapan di calon sekolah baru. Kami ucapkan selamat melaksanakan PSB Online 2009 ini, semoga sukses!


_______________________


Rizky Prihanto
Software Architect PT Cinox Media Insani

3
Mendistribusikan MyODBC dalam Installer Aplikasi

Ada yang nanya di milis mysql-indonesia@googlegroups.com tentang bagaimana caranya nginstall MyODBC secara otomatis dalam mendistribusikan aplikasi kita. Kadang, ketika kita memaketkan produk software kita (platform desktop, windows) -- kita ngga bisa menjamin apakah di komputer client sudah terinstall MyODBC yang diperlukan supaya aplikasi kita bisa connect ke database MySQL (tentunya bagi yang mempergunakan ODBC sebagai bridge koneksi. Kalo yang makae native API seperti vbmysqldirect, MyDAC, dbExpress, atau MySQL Connector yang lain -- ya ngga perlu MyODBC).
Gw jadi ingat jaman-jaman kelam dulu, pas masih develop pakae VB6, ribet bangedd rasanya 'menginstallkan' pre-requisites aplikasi kita ke client macam OCX, DLL, flash player plugins, dan tentu saja.. MyODBC. Tapi sejak gw mulai bosan ama keribetan itu -- gw akhirnya riset mengenai teknik-teknik membuat instalasi yang membuat gw sempet terjerembab 'sedikit alih profesi' jadi Deployment Engineer di tim gw dulu. Tentu saja gw musti memastikan bahwa aplikasi gw ketika di-distribusikan ngga bakal gagal di-execute selain di kompie gw sendiri, termasuk diantaranya menjalin koneksi dengan MySQL melalui MyODBC.
Di artikel kali ini gw mencoba mengupas mengenai teknik-teknik 'memaksakan' client menginstall secara otomatis MyODBC supaya program kita bisa running well.



caranya (gw asumsikan kita akan redistribute-kan MyODBC 5.1) :

1. di installer loe, u copy-kan file2 berikut ke %SYSDIR% (terserah sih mo dimana sebenarnya):
    a) libmysql.dll
    b) myodbc5.dll
    c) myodbc5.lib
    d) myodbc5S.dll
    e) myodbc5S.lib

2. Lakukan install driver manual dengan nge-add registry berikut ini :
  classkey = HKEY_LOCAL_MACHINE
  sectionkey = "SOFTWARE\ODBC\ODBCINST.INI\MySQL ODBC 5.1 Driver"
    trus bikin beberapa key yaitu :
  a) nama key = "Driver"
     tipe = REG_SZ
     value = "C:\WINDOWS\System32\myodbc5.dll" --> sesuaikan ini dgn tempat di mana u nge-extract (step 1)
  b) nama key = "Setup"
     tipe = REG_SZ
     value = "C:\WINDOWS\System32\myodbc5S.dll"
  c) nama key = "UsageCount"
     tipe = REG_DWORD
     value = 1

3. Langkah terakhir, lakukan register driver ke ODBC driver, juga dgn maen-maen registry berikut :
    classkey = HKEY_LOCAL_MACHINE
    sectionkey = "SOFTWARE\ODBC\ODBCINST.INI\ODBC Driver"
    bikin key :
    nama = "MySQL ODBC 5.1 Driver"
    tipe = REG_SZ
    value = "installed"

udah. itu cara bikin installer sendiri utk MyODBC 5.1
kalo utk versi MyODBC 3.51, silakan sesuaikan sendiri (tapi buat apa makae 3.51 hare gene?)

bisa loe adopsi di :

  1. jalankan ntu script di setiap app.initialization (tentu cek dulu, execute cuman kalo if not exists)
  2. atau embedd ke dalam script installer loe (semua installer pastinya bisa nge-manipulate registry kan?)
  3. atau bikin program exe sendiri yang akan menjalankan "silent-install" ntu proses, trus masukin ke script installer loe n loe program supaya ntar installer akan jalanin otomatis ntu myodbc-silent-installer setelah proses nginstall aplikasi loe selesai.
mau cara gampang?
Bikin installer-nya pakae NSIS (Nullsoft Scriptable Install System). Berhubung output installer dia bukan berbasis *.msi, loe bisa lakukan proses instalasi paralel (installer dalam installer) dengan file-file setup laen (pre-requisites software) yg mungkin elo butuhkan dalam redistribute aplikasi loe (misal : driver, connector, plugins, codec, bahkan automatic-install server mysql sendiri!).

Cara :
1. siapkan installer MySQL ODBC 5.1 terbaru (anggap namanya : mysql-connector-odbc-5.1.5-win32.msi)
2. sisipkan di script NSIS loe begini :
  SetOutPath "$TEMP"
  SetOverwrite On
  File "..\resources\mysql-connector-odbc-5.1.5-win32.msi"
  ExecWait 'msiexec /i "$TEMP\mysql-connector-odbc-5.1.5-win32.msi"' $0
3. compile script installer loe untuk menghasilkan 1 file installer (aplikasi loe + prerequisites-nya)

Penjelasan Script NSIS:
baris pertama, itu akan melakukan change-dir ke direktori tujuan ekstrak sebuah file (dalam hal ini TEMP DIR)
baris kedua, itu akan melakukan flagging kalo file yg akan di-ekstrak udah ada, dia akan di-overwrite
baris ketiga, itu meng-copy-kan dari installer berupa file setup mysql-connector-odbc-5.1.5-win32.msi ke TEMP DIR. parameter dari File itu adalah alamat dari paket instalan mysql-connector-odbc-5.1.5-win32.msi ketika installer sedang dibentuk
baris keempat, itu akan melakukan eksekusi file installer mysql-connector-odbc-5.1.5-win32.msi -- efeknya, ntar user pas nginstall aplikasi loe, dia akan "dipaksa" masuk ke installer MyODBC. ExecWait adalah sebuah mekanisme shell-execute yang akan menunggu proses sampai proses instalasi MyODBC selesai dijalanin user, baru kemudian lanjut ke proses install sisanya.

kelebihan dari cara gampang ini?
  • loe gag perlu pusing2 ria maen2 registry (seperti cara "manual" gw di atas -- walo ada kelebihannya juga cara manual ini : loe jadi ngerti struktur registrasi ODBC Driver di sistem operasi loe. Jadi klo mo pakae connector apapun utk connect ke DBMS apapun: mudah!)
  • loe bisa replace source install-an mysql odbc versi berapapun dgn mudah
  • file installer yang kelak akan di-distribusikan ke user cuman 1 doank. udah all in one.
Kira-kira begitu...
Happy exploring...
_______________________


Rizky Prihanto
Software Architect PT Cinox Media Insani