printStackTrace()

percayakah anda, bahwa hal yang kelihatannya sepele kadang-kadang bisa meningkatkan coding speed? saya sih percaya. apalagi kalau hal tersebut berkaitan dengan ‘menemukan salah apa di mana’ dalam program yang panjangnya bisa sampai ratusan baris (atau bahkan bisa ribuan, kalau dihitung dari semua file yang ada). yah, pokoknya program yang bisa berlembar-lembar kalau di-print semuanya.

euh… anda yang tidak atau kurang familiar dengan programming mungkin agak bingung dengan judulnya yang ‘aneh’. jadi sebelumnya, mari kita bicarakan dulu apa yang akan saya tulis di sini.

dalam programming, seorang programmer menuliskan perintah-perintah dalam sebuah file. anggap saja file ini kayak daftar perintah yang harus dikerjakan oleh komputer, jadi sang komputer ini bisa bertindak sesuai kemauan kita. bahasa-bahasa yang digunakan bisa dibilang ‘kaku’ dan ‘aneh’ untuk ukuran manusia ‘normal’, jadi sebaiknya tidak usah dipikirkan kalau anda memang tidak berkepentingan dengan hal tersebut =P.

jadi, dalam program yang jumlahnya bisa sampai ratusan atau ribuan baris (yang sekarang sedang gw kerjakan sih 800an baris, dan ada file lain 200an baris, dan masih ada beberapa file lagi yang lain, jadi kayaknya 1000 baris lewat tuh =P), perlu ada suatu pengecekan per bagian: ada yang salah nggak sih?

nah, kadang-kadang, sebagian (besar?) programmer lebih suka untuk (atau secara tidak sadar) melakukan pengecekan error yang tidak menjelaskan error-nya ada di mana, misalnya dengan penggunaan kata-kata seperti “salah tuh” atau “hoiii” yang dicetak ke layar. atau ketika ada kesalahan query dalam input ke database, pesan error-nya hanya “query-nya salah tuh”.

dan sejujurnya, gw termasuk yang demikian juga… kadang-kadang =).

dan gw berakhir dengan bingung sendiri, karena akhirnya harus sering-sering ctrl+F (ini fungsi find , tahu kan, misalnya untuk mencari kata tertentu di notepad atau sejenisnya) untuk mencari kesalahan pada program yang sedang gw kerjakan.

yah, gw sih merasa lebih terbantu kalau misalnya query database yang bermasalah ditampilkan ke layar (soalnya mungkin saja gw kurang tanda kutip atau sejenisnya, jadi kan salah tuh).

dan yang lebih mengganggu lagi, kalau anda menggunakan try-catch dalam Java (ini salah satu bahasa pemrograman, banyak kok yang lain =) ). hal yang menyebalkan bisa terjadi, misalnya sebagai berikut.

try {

//…blok program

} catch (Exception e) { }

ada masalah kecil. ketika ada exception (yang biasanya terjadi karena kesalahan dalam programming, walaupun tidak selalu) yang terjadi di program tersebut. kenapa? jelas, kan. ketika terjadi exception, tidak ada pesan yang ditampilkan! mau NumberFormatException, IOException, atau NullPointerException juga akan terasa baik-baik saja… kecuali sebegitu fatalnya sampai program yang dibuat menjadi crash.

jadi mungkin ada baiknya kalau pesan yang diberikan lebih jelas. kalau query-nya salah, tuliskan query yang salah itu apa-adanya. kalau ada percabangan, tuliskan dengan jelas status dan variabel yang ada. pokoknya apapun yang ada sejelas mungkin, sehingga rekan programmer anda cukup terbantu untuk memperbaiki program yang anda kerjakan.

dan yang jelas, sebagai programmer, dengan demikian anda akan menguntungkan rekan anda yang bertugas untuk membenahi program yang anda buat. iyalah, rekan anda mungkin masih harus belajar dulu mengenai istilah “hoii” “wahh” atau “lewat sini” yang anda buat. dan percayalah, rekan anda mungkin akan sedikit frustrasi kalau harus membolak-balik ratusan baris program demi mengetahui arti dari ‘kata-kata sakti’ yang anda tuliskan =).

kembali ke contoh tadi, sebenarnya lebih efisien dengan menggunakan printStackTrace(). iyalah, dengan demikian anda langsung tahu anda salah apa, di mana, bahkan sampai ke baris berapa. jauh lebih informatif dibandingkan dengan contoh pertama tadi.

try {

//…blok program

} catch (Exception e) { e.printStackTrace(); }

jadi sebenarnya, hidup itu bisa dibuat mudah. setidaknya, lebih mudah untuk rekan anda yang mungkin masih harus memperbaiki program yang masih harus di-debug, dengan atau tanpa ‘kata-kata sakti’ yang anda tuliskan.

___

footnote:

  • bug – kesalahan pada program, mengakibatkan hasil yang dikerjakan komputer tidak sesuai harapan programmer.
  • query – perintah yang dimasukkan pada database, misalnya untuk mencari data dengan kriteria yang diinginkan.
  • exception – hal yang terjadi karena perintah yang tidak dapat di-handle oleh komputer, misalnya input alfabet atau huruf untuk variabel yang diolah secara numerik.

___

pengalaman pribadi. mari kita budayakan programming yang bertenggang-rasa =)

Kamen Rider Kabuto OST — NEXT LEVEL

dari serial Kamen Rider Kabuto yang review-nya sempat gw tulis beberapa waktu yang lalu, kali ini gw akan menuliskan mengenai opening theme-nya yang dibawakan oleh Yu-Ki, yang diberi judul NEXT LEVEL.

lagu ini mengisi opening theme dari serial tersebut sejak episode pertama, dan sampai saat ini masih belum tergantikan di serial yang sejauh ini masih running di negara asalnya tersebut. nuansanya yang upbeat dengan gaya yang agak-agak techno sebenarnya cukup pas untuk opening theme dari serial Kamen Rider modern, dan menurut gw cukup enak untuk didengarkan… tapi ini sifatnya subjektif, sih. anda yang agak kurang suka lagu yang upbeat dengan tempo tinggi dan gaya yang agak techno mungkin akan berpendapat lain.

oh, iya. yang gw tulis di sini adalah versi aslinya, jadi ada bagian-bagian yang tidak ada di TV-version-nya. lyrics dengan huruf italic, dan translation-nya dengan huruf plain. mohon koreksi kalau ada salah translate, berhubung gw mencoba menerjemahkannya sendiri.

NEXT LEVEL
Yu-Ki

kimi ga negau koto nara
subete ga genjitsu ni naru darou
erabareshi mono naraba
bousou wo hajimeteru
sekai wo moto ni modosu ni wa mou
jikan ga nai

if you wish for it,
then everything will come true
if you are the chosen one
things are getting out of control,
but the world is already back to normal
there is no time

MOVING FAST kokoro no tokei hashirase
ashita no sono saki e

moving fast, run the clock in your heart [1]
go past tomorrow [2]

kimi no tonari tatakau tabi umarekawaru
me ni mieru SPEED koeteku MOTION
ittai jibun igai, dare no tsuyosa
shinjirareru

everytime I’m fighting by your side, I’m reborn
seen in my eyes, a speed-exceeding motion
unless yourself, the strength of the others
can you trust them?

kousoku no VISION minogasu na
tsuite koreru nara

don’t miss the light-speed vision
if you can follow it

hikari ga sagashiteiru
atsui kumo no aida kagayaku
erabareshi mono dake wo
kimi ga souzou shiteta
mirai ga arukidashita michi ni
mirai wa nai

looking for the light
with the glowing space of the warm cloud
you are the only chosen one
as I saw your figure [3]
walking the path of future,
there is no tomorrow

TAKE A CHANCE kokoro ga motometsuzuketa
shunkan koko ni aru

take a chance, keep on searching for a heart
which has been here by the moment

dare mo inai jikuu hitori shinkashiteku
mitaiken AREA de hajimaru REAL
zettai jibun dake ga kono jidai wo
kaete yukeru

there is no one, I’m alone in this silent space
this area is beginning to become real
you are absolutely the only one in this era
who is changing it

saikyou no LEGEND minogasu na
tsuite koreru nara

don’t miss the ultimate legend [4]
if you can follow it

kimi no tonari tatakau tabi umarekawaru
me ni mieru SPEED koeteku MOTION
ittai jibun igai dare no tsuyosa
shinjirareru

everytime I’m fighting by your side, I’m reborn
seen in my eyes, a speed-exceeding motion
unless you, the strength of the others
can you trust them?

kousoku no VISION minogasu na
tsuite koreru nara

don’t miss the light-speed vision
if you can follow it

dare mo inai jikuu hitori shinkashiteku
mitaiken AREA de hajimaru REAL
zettai jibun dake ga kono jidai wo
kaete yukeru

there is no one, I’m alone in this silent space
this area is beginning to become real
you are absolutely the only one in this era
who is changing it

saikyou no LEGEND minogasu na
tsuite koreru nara

don’t miss the ultimate legend
if you can follow it

 

 

___

footnote:

[1] bisa juga diartikan ‘speed up the clock in your heart’, tapi gw lebih suka menuliskan arti harfiahnya saja di sini.

[2] saki artinya ‘destination’, jadi seharusnya ‘go to tomorrow’s destination’ tapi supaya lebih enak gw tulis sebagai ‘go past tomorrow’. sama saja, sih.

[3] souzu artinya ‘illustration’. di sini gw menuliskannya sebagai ‘figure’. seperti halnya [2], konteksnya tidak jauh berbeda.

[4] sempat bingung mau mengartikannya sebagai ‘strongest’ (ini arti harfiah dari saikyou) atau ‘ultimate’. berdasarkan pertimbangan penerjemahan bahasa Inggris yang enak, akhirnya jadi seperti itu.

___

dedicated to: those who seek the lyrics and translation
message: go check it (and tell me if you find any mistake) =)

lag of update… due to course stuffs

coba perhatikan sebuah kalender yang ada di sidebar di sebelah kanan website ini. ada suatu hal yang ‘tidak biasa’ di sana.

iyaa, ada dua baris dari kalender yang nyaris kosong-melompong, yang berarti nyaris tidak ada update dalam dua minggu terakhir. hal yang tidak biasa karena biasanya gw hampir selalu meng-update content dari website ini dalam interval 2-3 kali per minggu. yah, itu dalam kesibukan yang normal. masalahnya, tampaknya hari-hari ini memang ‘agak kurang normal’, setidaknya untuk gw.

jadi begini. sebenarnya, hal ini juga bukanlah sesuatu yang akan gw lakukan dengan sukarela, mengingat gw sendiri bukannya tidak punya bahan untuk ditulis di sini (sudah ada banyak banget bahan yang mengantri di kepala gw untuk ditulis, to tell the truth =) ). tapi tampaknya, berbagai macam kesibukan memang turut mengganggu keasyikan gw untuk menulis di sini.

jadi ada hal menyebalkan khas akhir semester yang lazimnya disebut sebagai ‘ujian akhir semester’. hal yang masih wajar kalau dilaksanakan dalam cara yang biasa: dua minggu ujian untuk enam kuliah dengan bentuk ujian normal. masalahnya, untuk semester ini ujian yang ada tidak bisa dikatakan ‘normal’.

ada satu minggu ujian dengan lima kuliah yang diujikan, dan minggu berikutnya (setelah libur hari Natal pada 25 Desember) satu kuliah lagi. belum selesai, karena dari enam kuliah, hanya tiga buah yang berbentuk ujian normal alias tulis-jawaban-di-kertas. tiga lagi berupa proyek dan presentasi.

sebentar. sebelum anda pembaca bertambah bingung, mari kita perjelas dulu. gw kuliah di jurusan Computer Science, dengan 18 SKS di semester ini. dan kuliah yang ada adalah sebagai berikut.

  1. Analisis Numerik — matematika tingkat lanjut untuk penerapan di bidang Computer Science. persamaan linear dan non-linear, interpolasi, dan sebagainya. tidak usah dipedulikan kalau anda tidak mendalami Computer Science atau matematika, hidup sudah cukup menyenangkan kok tanpa itu =). 18 Desember.
  2. Prinsip-Prinsip Sistem Informasi — atau disingkat sebagai PPSI, dan lebih sering lagi disebut sebagai ‘PePSI’ oleh peserta kuliahnya. tidak ada hubungannya dengan softdrink. kuliah mengenai dasar-dasar pembangunan Computer-Based Information System. 19 Desember.
  3. Teori Bahasa dan Automata — lebih banyak membicarakan soal logika dan konsep-konsep Finite-State Machine untuk melaksanakan algoritma. kira-kira sih soal bangun-membangun konsep mesin sederhana. ujian kali ini open notes. 20 Desember.
  4. Manajemen Proyek — kuliah yang khusus mempelajari mengenai Project Management. ujian dalam bentuk presentasi Project Plan, dengan dewan penguji adalah pak dosen sebagai pengajar (yang sudah sangat berpengalaman di berbagai proyek skala besar), dan asisten-asisten yang juga sudah berpengalaman soal beginian. 21 Desember.
  5. Proyek Perangkat Lunak — kuliah dengan bentuk penyelenggaraan proyek software engineering yang bersifat real project. ujian dengan bentuk presentasi final dengan menjelaskan mengenai proses pengembangan, stakeholder atau klien-klien yang terlibat, dokumentasi dari sistem, dan sebagainya. kuliah ini terutama menyita waktu karena harus mengelola proyek betulan. 22 Desember.
  6. Sistem Interaksi — kuliah yang membahas mengenai perancangan interface, khususnya Graphical User Interface. tahu kan, kalau di sistem operasi Windows misalnya ada tombol ’start’, kalau di Mac OS ada dock, dan sebagainya soal itu. ujian akhir berupa presentasi proyek perancangan sistem interaksi. 28 Desember.

hal ini agak berbeda dengan semester sebelumnya di mana ujian yang diberikan relatif lebih santai, dua minggu ujian untuk enam mata kuliah (jadi 3 di awal, 3 di akhir) dengan bentuk ujian yang ‘normal’. sekarang, satu minggu diisi 5 ujian, dengan dua ujian berupa task yang harus dipersiapkan sebelumnya (baca: presentasi dan proyek).

dan akhirnya, masa ujian kali ini sukses membuat gw hanya sempat tidur di kos satu hari saja dalam seminggu terakhir. sisanya? gw menggelandang ke berbagai tempat… untuk mengerjakan berbagai hal sehubungan dengan ujian kali ini. dan terima kasih untuk kebaikan rekan-rekan yang bersedia menerima gelandangan ini di tempat mereka.

no pain, no gain. but not all pain is gain. masalahnya, yang manakah yang akan terjadi pada gw?

___

special thanks:

  • Albert untuk tempat yang gw singgahi menjelang UAS Anum – TBA. terima kasih sangat banyak untuk anak ini.
  • Michael untuk kesediaannya menunggu kiriman dokumen yang masih gw proofread sampai lewat jam 0100.

fungsi cinta yang invertible

sebenarnya, gw tidak terlalu suka membicarakan hal seperti ini… tapi mungkin, kali ini akan jadi sedikit perkecualian. kenapa begitu, sebenarnya lebih karena beberapa orang di sekitar gw tampaknya menjadi ‘korban infotainment’ dengan membahas masalah seperti ini, yang menurut gw sudah jelas sekali masalahnya, setidaknya untuk gw.

well, anggap saja ada seorang tokoh x yang tampaknya cukup populer tiba-tiba melakukan sesuatu, dan tampaknya beberapa orang di sekitar gw agak terguncang-begitu-deh. dan sejujurnya, gw agak sebal juga melihat kenyataan bahwa orang-orang di sekitar gw ini begitu mudah terguncang hanya karena masalah sepele seperti ini.

hmm. gw malah tidak terlalu peduli soal itu. menurut gw, ini cuma soal perbedaan prinsip saja, tidak ada yang perlu dikhawatirkan =).

jadi begini. sebenarnya, masalahnya sederhana saja. menurut gw, cinta (atau secara formal: komitmen) adalah hal yang seharusnya bersifat sebagai fungsi yang invertible. dalam matematika, hal tersebut dinyatakan sebagai fungsi yang memiliki fungsi invers di mana fungsi invers tersebut akan menghasilkan nilai variabel yang sama ketika hasil dari fungsi pertama dimasukkan.

definisi fungsi invers ini lebih enak kalau ditulis saja. lupakan bagian ini kalau anda sudah cukup memahami matematika masa SMU.

misalnya gw punya fungsi f(x), maka bila fungsi tersebut invertible gw akan memiliki fungsi f'(x) yang merupakan invers dari f(x).

jadi, misalkan f(yud1) = seseorang, maka f'(seseorang) = yud1. kira-kira seperti itu. yud1 dan seseorang adalah variabel di sini.

jadi kalau f(yud1) memiliki hasil lebih dari satu, maka fungsi tersebut tidak valid, dan sebaliknya, f'(seseorang) seharusnya menghasilkan nilai yud1, sesuai definisi fungsi invers di atas.

…perhatikan bahwa gw menulis f'(x) bukan f[pangkat-minus-satu](x) karena gw malas mengetik superscript. jangan anggap itu turunan, definisinya itu invers.

dan dengan demikian, gw sangat tidak menghargai orang-orang yang melakukan poligami atau selingkuh atau apalah-sebagainya, tidak peduli laki-laki atau perempuan, karena menurut gw hal seperti itu sangat menyedihkan. iyalah, apa yang bisa diharapkan dari seseorang yang memegang komitmennya sendiri saja tidak bisa?

kembali ke masalah. jadi sebenarnya, masalah fungsi cinta yang invertible ini tampaknya tidak berlaku dalam banyak contoh dalam kehidupan di dunia ini. kalau dipikir-pikir, hal ini mungkin sebenarnya sejalan juga dengan materi yang gw terima dalam kuliah Aljabar Linear dan Analisis Numerik, di mana fungsi-fungsi yang berupa sistem persamaan seringkali tidak invertible alias singular.

tapi ada hal yang sedikit kontradiksi di sini. orang-orang yang mendalami psikologi mungkin sudah agak lama memahami bahwa proses memandang manusia dan perbuatannya tidak bisa dimodelkan sesederhana persamaan matematis, karena pada dasarnya persamaan matematis sendiri hanyalah sebuah model yang mencoba memetakan fenomena yang lebih kompleks.

…yah, gw sih nggak peduli, pokoknya gw lebih suka memandang cinta sebagai fungsi yang seharusnya invertible =).

ngomong-ngomong, ada quote dari kuliah Teori Bahasa dan Automata yang sudah cukup terkenal di kalangan mahasiswa yang telah mengambil kuliah tersebut:

“setiap pekerjaan algoritmik yang dapat dilakukan oleh manusia dapat dilakukan oleh mesin Turing”

tidak ada yang membantah. tapi ada quote lain yang juga cukup terkenal.

“salah satu masalah yang tidak dapat diselesaikan oleh mesin Turing adalah masalah percintaan.”

oh, iya. untuk anda yang mungkin belum pernah mendengar mengenai mesin Turing, definisinya sebagai berikut.

Mesin Turing: model mesin sederhana yang mampu melakukan pekerjaan-pekerjaan yang bersifat algoritmik. digambarkan sebagai sebuah konsep mesin, dan dikenal juga sebagai cikal-bakal sistem komputer.

hmm. jadi kesimpulannya, sesuatu yang bernama ‘cinta’ itu bukanlah hal yang dapat diselesaikan oleh mesin Turing, karena tidak ada algoritmanya. demikian juga hal tersebut tidak bisa dimodelkan sesederhana persamaan matematika… walaupun bisa dipetakan, walaupun tidak persis benar.

…tapi entah kenapa, gw masih lebih suka memandang cinta sebagai fungsi yang seharusnya invertible =).

jadi dengan demikian, pesan moral yang gw pelajari dari kuliah-kuliah tersebut adalah bahwa ada hal-hal dalam kehidupan ini yang tidak bisa diduga dan diprediksi dalam sudut pandang yang sedikit-kaku seperti itu. dan mungkin saja dalam kehidupan ini gw menemukan banyak sekali fungsi-fungsi — beberapa yang disebut sebagai ‘cinta’ — yang sayang sekali sifatnya non-invertible alias singular. dan kenyataannya, tampaknya demikianlah yang terjadi.

…yah, selamat datang di dunia nyata.

hari itu hujan

hari itu juga hujan.

suatu saat di mana lampu-lampu tampak kabur dan kurang-jelas, sudah menyala namun langit juga tampak belum gelap benar. suatu hari di masa lalu yang jauh, dan sudah begitu lama seolah hendak kulupakan saja — dan dengan menyebalkannya datang kembali setiap kali aku berjalan di malam hari yang sedikit berhujan.

dan hari ini, setiap langkah yang ada menjadi begitu menyiksa seiring dengan titik-titik hujan yang jatuh di kepala, menyisakan rambut basah dan pandangan buram padaku — dan kenangan akan masa yang dulu itu.

lampu-lampu jalan tampak tidak bersemangat, menyinari kampus dengan ogah-ogahan: beberapa malah mati sama-sekali, menyisakan jalanan temaram dan masih dengan hujan yang menimpa kepala dan membuatku sedikit-pusing — entah karena hujan itu sendiri… atau masih ada yang lainnya, aku tidak terlalu peduli.

semua orang punya kenangan; semua orang punya masa lalu. tapi tidak ada yang bisa dilakukan dengan hal itu; dan seketika letupan emosi menggelegak, menyisakan sekat tak kasat mata yang kurasa menohok tenggorokan dan dadaku — pelan, tapi telak dan mengganggu.

hari itu juga hujan.

saat-saat pandangan terasa kabur — entah karena hujan itu sendiri… atau masih ada yang lainnya, aku tidak terlalu peduli. air mata hanya akan pergi bersama tetes hujan, lepas dari peduli yang ada… seandainya hal tersebut memang demikian adanya.

aku mencoba memandang, dan terasa buram; hujan rintik-rintik menghalangi pandangan, menyisakan kilau dan cercah cahaya di yang tak tampak jelas di ujung mata. dan pijakan con-block yang basah dan terasa sedikit-licin di trotoar yang semakin sepi setelah gelap. dan sedikit gelegak ketidaknyamanan yang seolah mencoba menyiksa perlahan-lahan.

hujan tidak bisa menghapus kenangan; dan hal itu mungkin akan sedikit baik — tidak, kurasa itu menyebalkan. dan hujan turun, mengembalikan kenangan yang seharusnya sudah terkubur lama dan tak kembali lagi.

di hari itu, hujan turun. meninggalkan kenangan layaknya paku di pintu kayu. dan pandangan buram entah oleh hujan atau yang lainnya.

hari ini, hujan turun. membuka kembali kenangan akan masa lalu yang terharap untuk tidak pernah kembali. dan pandangan buram entah oleh hujan atau yang lainnya.