Sunday, December 23, 2012

semuda aplikasi menua

assalamu'alaykum

akhir tahun enaknya sih nulis, dan kebeneran dapet ide dari eksplorasi yg baru dilakukan. oke dah langsung saja!

waktu liburan sih enaknya jangan kerja kan ya, tapi ga untuk coder di akhir tahun. kenapa dengan akhir tahun?  biasanya sih, yg punya duit pada menghabiskan anggaran gitu deh haha, termasuk yg satu ini. tadi malam, tiba-tiba ada yg menelpon saya. ternyata kenalan dari teman saya, dan dia menawarkan kerjaan singkat: bugfinder, bugtracker, bugfixer. saya ga perlu tau kliennya siapa, harga proyeknya berapa, dan siapa yang mengerjakan sebelumnya. saya cuma dikasih link ke aplikasinya, dokumen bug-nya, dan basis data-nya. juga pastinya saya dikasih tau honor yg akan dikasih lah haha. lalu saya pun mengiyakan, menimbang karena cukup menantang, dan honornya pastinya haha. kenapa cukup menantang?

ternyata teknologi yg dipakai di aplikasi ada yg ga familiar buat saya. PHP-nya oke --that's my hellish highest skill by the way--. basis data-nya postgre, oke juga. nah, yg terakhir ini, framework-nya postnuke. hah? saya emang tau ada framework namanya postnuke, tapi rasanya ada yg janggal dengan framework ini. ternyata benar, framework ini udah obsolete! tua! ga di-support! mati! ga dikembangin lagi, karena udah ada penerusnya, zikula namanya. waduh, saya langsung cemas. dan ternyata benar saja, ketika aplikasi tersebut saya jalankan di lingkungan yg cukup update (xampp 1.8.1, postgresql 9.2), boom! ga jalan. error dimana-mana. ketika mau import dump file sql-nya aja error. entah versi postgre berapa dulu mereka waktu buat pertama kalinya -_-.

lalu saya benerin query di dump file-nya. import basis data alhamdulillah akhirnya berhasil, dan konfigurasi di postnuke-nya juga bisa karena ga keluar lagi halaman error karena koneksi basis data salah. tapi ternyata yg keluar malah error yg lain. fungsi ga terdefinisi lah, modul ga ke-load lah -_-. akhirnya hingga detik ini saya menyatakan menyerah, gatau kalau nanti berubah pikiran. karena dalam hal ini udah masalah kekadaluarsaan teknologi, jadi kita sebagai coder ga bisa berbuat banyak, apalagi dipaksa untuk benerin dan mengerti, dan parahnya malah disalahkan. intinya mah, pakailah teknologi yg paling update ketika membuat aplikasi, dan upgrade-lah aplikasi ketika ada perubahan yg signifikan pada teknologi yg digunakan. atau lebih kasarnya mah, buat aja aplikasi yg baru, toh buat menghabiskan anggaran kan haha. yasud segitu aja racauan stres saya di liburan kali ini, semoga saya menjadi lebih sabar, lebih jago, dan dapet istri yg bisa mengerti pekerjaan saya sebagai coder --amin! eh apa ini tiba-tiba nyambungnya kesana haha--. ciao! 

wassalamu'alaykum

lampiran (yg ga mau baca teknis, silakan skip):
  • saya menemukan bahwa xampp 1.8.1 memerlukan perlakuan khusus agar dapat menggunakan basis data postgresql 9.2. berbeda dengan xampp 1.7.3 yg tinggal meng-uncomment baris di php.ini bagian 'extension=php_pgsql.dll', di xampp 1.8.1 selain men-uncomment ternyata kita juga harus meng-copy file pendukung postgresql 9.2 yg berada di '..\Program Files\PostgreSQL\9.2\bin' ke folder 'xampp\apache\bin', yaitu libiconv.dll, libintl.dll, dan libpq.dll. selamat mencoba!
  • saya lebih senang memakai phpPgAdmin daripada pgAdmin-nya si postgre, mungkin karena saya sering memakai phpMyAdmin kali ya haha. nah, ternyata postgresql 9.2 tidak kompatibel penuh dengan phpPgAdmin 5.0.4, jadi harus diperlakukan secara khusus juga haha. caranya seperti ini:
    • copy file Postgres84.php di 'phpPgAdmin\classes\database' ke folder itu sendiri dan rename menjadi Postgres92.php. intinya kita ingin membuat sebuah kelas driver baru untuk versi postgresql 9.2
    • pada file Postgres92.php itu ganti nama kelas dan fungsi konstruktor (84 ke 92), juga atribut 'major_version' (8.4 ke 9.2)
    • copy fungsi 'getTablespaces' dan 'getTablespace' dari file Postgres.php ke file Postgres92.php. intinya kita ingin meng-override dua fungsi ini dari versi sebelumnya (9.0), karena terdapat error ketika menjalankan fungsi ini untuk versi 9.2
    • pada file Postgres92.php, ganti kata 'spclocation' pada kedua fungsi yg baru di-copy tadi dengan 'pg_tablespace_location(oid) AS spclocation'
    • terakhir, tambahkan kode "case '9.2': return 'Postgres92'; break" pada file Connection.php di folder yg sama pada bagian 'Detect version and choose appropriate database driver'. intinya ini untuk regist
    • voila! sekarang phpPgAdmin udah bisa jalan di postgresql 9.2!