Pertanyaannya adalah: Mengapa…

Jadi yah… gw baru ngebuka koleksi drama korea gw yang dah gw donlot berbulan2 lalu… dan sekarang, lagi nonton drama “Blade Man”. Well, sebenernya ceritanya bikin gw enek. Tokoh antagonisnya keterlaluan banget soalnya… Akting mereka terlalu bagus, jadi bikin gw pengen mecahin layar monitor pas nge-shoot mereka. Paling gak itu menurut gw c yah.. tapi tetep ajah gw tonton. Masi ada komedi2nya dikit soalnya 😛

Tapiiii…. bukan cerita tuh drama yang mau gw bahas di mari. Gw lebih pengen nyeritain satu scene dengan potongan gambar kayak gini:

vlcsnap-2015-05-10-20h35m13s55

vlcsnap-2015-05-10-20h35m23s190

vlcsnap-2015-05-10-20h35m44s148

vlcsnap-2015-05-10-20h36m41s192

Scene di atas, ngingetin gw tentang masa sekolah gw… plus.. pembicaraan gw ma teteh yang menghasilkan tulisan di post sebelumnya. Oke, gw ceritain runut yak.. Jadi gini, dulu, gw punya guru les privat. Karena satu dan lain hal, mulai awal kelas 9 sampai akhir kelas 10, gw gak boleh lagi ngeles di lembaga bimbel ama Nyokap… tapi diajarin private ama sodara jauhnya tetangga. Beliau mahasiswi universitas berbasis pendidikan dengan major Kimia.

Yang paling keren dari beliau yaitu… passionnya… passion yang Kak Wid miliki untuk bidang keilmuan yang beliau ajarkan (o iya… namanya c Resi, tapi kita manggilnya Kak Wid). Walau majornya Kimia, tapi pas kelas 9 (3 SMP), gw diajarinnya Matematika ma Fisika. Kimia lum diajarin waktu itu di SMP. Dan… Matematika ma Fisika, kita gak cuma diajarin teori sama nyelesaiin masalah. Tapi juga cara belajar kedua mata pelajaran itu. Sebuah ilmu memiliki alasan untuk dipelajari, dan bagaimana ilmu tersebut dapat menyelesaikan masalah tersebut. Mungkin ini agak2 gak penting… plus, yang diajarin beliau bisa jadi agak2 melenceng… tapi metode yang beliau sampaikan semuanya masuk akal. Dan kita jadi tau cara untuk belajar. Bahkan, gak cuma terbatas di 2 mata pelajaran itu… tapi juga mata pelajaran lain kayak Bahasa atau Bahasa Inggris.

Oke, jadi kenapa gw kepikiran sama guru privat gw pas liat scene dari drama korea di atas?! Yaa… karena cara ngajar guru privat gw selalu diselingi penjelasan dari pertanyaan “kenapa”, “mengapa”, dan “bagaimana” yang bisa diajukan ketika menyelesaikan suatu soal, termasuk dalam memahami teori. Termasuk pas waktu gw ngerjain pembagian pecahan.

Sebagai anak yang kreatifitasnya enam koma (ini hasil pas class placement test di SMA), gw gak pernah kayak anak kecil di atas. Gw gak mempertanyakan ke guru gw kenapa bisa sebuah permasalahan dipecahkan dengan cara yang beliau ajarkan. Plus, gw juga gak pernah mempertanyakan cara mereka menilai gw. Anak baik2 lhah gw. Walo faktanya… kalo ama temen sendiri, gw bandelnya minta ampun. Di sinilah peran Kak Wid (guru privat gw tadi), berusaha untuk menurunkan passion yang beliau miliki ke gw (plus teteh gw). Jadi, beliau menjelaskan hal2 yang gak gw tanyain, tapi sepatutnya gw tanyain.

Contohnya ajah… pas waktu gw ngerjain satu soal yang butuh teori pembagian pecahan. Gw c gak nanya… tapi Kak Wid yang langsung nanya ke gw…

“Tau gak, Dek… kenapa harus dikali dengan cara dibalik?”

Karena gw gak tau… yaaa gw cuma jelasin, itu cara yang gw lakuin pas diajarin di kelas 5 dulu. Kalo udah gitu, gw dijelasin lah ama sang guru les asal datangnya. Dan gw… cuma manggut2. Awalnya c berasa gak meaning… tapi lama2, gw jadi paham bahwa satu materi emang terkait dengan materi lain. Dan… setiap materi memiliki definisinya masing-masing. Dari definisi tersebutlah sebaiknya kita memahami materi. Trus lama2… yaaa… gw jadi sukak ama mata pelajaran eksak. Walo yaaa… remedial di Fisika ama Matematika masih belum bisa gw hindari (tapi gw mau nyombong.. buat Kimia, gw kedua tertinggi satu sekolahan pas UAN, chuy! tampak passion Kimia beliau beneran diturunin ke gw).

Jadi begitulah… kadang yang kita butuhkan hanya pertanyaan “Mengapa”. Dan untuk orang2 tertentu, pertanyaan “Mengapa” memang tidak menjadi prioritas… Tapi bukan berarti hal itu tidak pantas ditanyakan. Karena, pencarian jawaban atas pertanyaan tersebut yang akan membuat kita memahami sesuatu.

Bukan cuma untuk hal2 eksak… tapi juga dalam kehidupan sehari-hari, seperti “Kenapa hobi banget ngumpulin batu akik”, “Kenapa gak mau masuk kerja hari ini”, “Kenapa ngerasa gak sukak ama bos sendiri”… Pertanyaan2 yang membutuhkan jawaban dalam bentuk alasan atau mungkin pembenaran… yang pada akhirnya membuat kita mencoba untuk mengerti, paling tidak untuk menumbuhkan rasa untuk memahami. Dan setelahnya… terdapat suatu aksi untuk mencoba menyelesaikannya dalam pertanyaan “Bagaimana”.

Begitulah… Karena pertanyaan yang pertama adalah… “Mengapa”.

Advertisements

Paspor

Paspor

Yaaaayyyy… ini lanjutan dari postingan sebelumnya. Jadiiiii… hari ini, walo abis bikin kisanak naek darah ke gw, tapi gw tetep bertekad buat mencari kebahagiaan… yaitu… melihat hasil perjuangan gw di postingan sebelumnya! Ngambil paspor!

Woohoooooo… jadi jugak nih tiket tanda keluar jatoh ke tangan gw. dan…. ternyata, walo gak nyasar jugak, gw tetep musti 4x naek transportasi publik. Kenapa gw ga nyasar sekarang?! Karena gw dah nanya2 orang sekitar. Dan well, gw tetep naek kendaraan umum 4x. Hmmm… Tapi, yang parahnya, gw di kantor imigrasinya cuma 15 menitan, padahal ke sananya butuh waktu ampir 1,5 jam. Walhasil, hari ini, butuh 3 jam buat bolak-balik ngambil tuh paspor.

Mungkin kamu bertanya2… kenapa gw gak naek mobil mewah gw, atau mungkin minta tumpangan Sun Go Kong biar naek awan kinton… Kenapa gak kayak gitu… Hmm, mungkin kerendahan hati gw lah yang bisa menjadi jawaban. Yaa… selain Si Tampan masih ngambeg, lum mau jalan. Jadi ya sudah…

Pas ngambil, ternyata… rasanya… gitu doank yah… Perjuangan panjang, penantian berminggu-minggu lamanya. Berbayar sebuah buku kecil berisi 48 halaman. Kyaaa~~ pasti petugas imigrasi tau kalo gw sukak banget ama JKT48. Jadi ngegenapin nih buku saku sebanyak 48 halaman! 😛 *iyain ajah lhah…*

Dan well, gw ngerasa biasa ajah pas di Kanim. Nah, pas balik kantor lagi… barulah gw agak seneng dikit. Karena pas gw liatin tante… tante gw iri gimanaaa gitu. Coz dia masi ga sempet ngurus pembaruan paspornya dia. Hihihihi…

Begitulah~~ yaaayyy… waktunya packing! XD

Paspor

Well, ternyata….. gitu yah rasanya bikin paspor! Rasanya…. yah, gitu deh…

Jadi yah, seperti yang gak kamu bayangin sebelumnya, kalo gw itu belum bikin passport walo sering ngaku2 punya abang yang jadi artis di luar negri. Yah, gw bisa aja tipe cowok yang family oriented, yang selalu ngusahain buat ketemu hyung gw walo cuma dalam mimpi. Tapi kalo urusan administratif (semacam usaha buat ketemu hyung secara legal di mata hukum), kayaknya gw lebih dengerin kalo itu datang sebagai anjuran senpai deh… Nih paspor juga dibikin gara2 sarannya dia kan. Legal?! Kamu nanyain maksudnya legal apa?? Yaa… maksudnya, selama ini gw kan selalu pake teleportasi…. dan ini gak banyak yang bisa nerima. Iya kan?! Iya! pasti iya! tuh… kamu ajah gak bisa nerima kalo gw bisa teleportasi.

Singkat cerita, akhirnya… setelah sekian lama, gw bikin paspor jugak. Tinggal ambil paspor 3 hari lagi, dan gw siap melanglang buana! Huwoooooo!! XD

Dan tau gak c…. bikin paspor itu gak susah2 amat kok! Mungkin yang dapat susahnya yang pasti ngerasa kesulitan. Tapi, kasus gw sekarang… kesulitan itu udah berlalu. Jadi panjang cerita gini… Tahun lalu, pas gw baru2 lulus gitu, gw sempet pergi ke imigrasi (Kelas I Bandung) buat bikin paspor. Tapi, karena kurang info, walo persyaratan dah gw bawa semua, ternyata masih ada ajah yang belum bisa gw penuhi. Belum lagi, waktu itu gw mangkir dari anjuran senpai yang nyuruh bikin paspor onlen ajah. Well, walopun gagal, gak masalah juga c… toh waktu itu aslinya gw nemenin temen gw, dan gw ngikut ajah. Emang gak niat. Awalnya karena gw ngira gak bakal bisa daftar, toh KTP gw Bogor… Tapi ternyata pas nyampe sana, kata pegawainya boleh2 ajah… walo akhirnya gw gak jadi daftar karena satu dan lain hal.

Terus, berbulan2 waktu berlalu… gw dah jadi pegawai 100%, ngerjain administratif dah gak pake ngeluh lagi, pegawai teladan lhah (guyz… akuin ajah napa?!!). Berbekal citra yang baik ini, akhirnya bulan kemaren gw minta surat pengantar dari kantor buat dikasi ke imigrasi. Ini juga atas anjuran senpai. Katanya siap2 ajah… karena ada kemungkinan diminta, tapi bisa juga enggak.

Berbekal ketekadan diri biar bisa ngikut senpai ke luar negri, gw akhirnya memutuskan buat bikin paspor, dan pastinya… onlen! Gw ngikut aja ama saran senpai sekarang… Jadi, gw daftar di situs imigrasi, dan lancar2 ajah… karena bahasanya Indonesia. Jadi gak kesulitan lah, paling gak, gw tau gw harus ngisi apa di textfield yang mana. Biasanya, gw bingung musti ngisi apa kalo registrasi gini. Takut salah… Maklum, trauma… dulu pas SMA, dengan berbekal kemampuan bahasa Inggris yang standar, gw ngelamar kuliah ke SG, dan… well, gw gak mau cerita lebih banyak… intinya gw trauma ngisi formulir bahasa inggris.

Abis daftar, kekirim email kalo gw harus bayar ke Bank yang selalu gw asumsikan kalo tuh Bank sodaraan ama Nogizaka46. Gw bayar lah yah, kebetulan ada KCP-nya deket kantor. Terus, gw masuk lagi ke situs imigrasi buat konfirmasi pembayaran. Dan jreng jreng… gw diminta datang ke imigrasi. Tanggal kedatangan gw pilih pas waktu kosong gw. Pas ga ada rapat, gak ada kegiatan, dan kemungkinkan dipanggil sama atasan juga enggak ada. Dan tanggal itu, jatuh di hari ini… 2 minggu setelah konfirmasi pembayaran berlangsung.

Pagi2, gw dah niat buat bangun sebelum matahari terbit… musti jam 6 dari kosan, coz tuh kantor imigrasi jauuuuhhh banget dari tempat gw. Tapi, walhasil… tetep ajah jam setengah 8 gw baru keluar kosan, dan tauuuu gaaaa… motor gw gak bisa dipake! D**N!! Akhirnya gw seperti artis korea kebanyakan yang dapat hukuman buat naek kendaran umum, gw naekin lah itu transportasi publik. Berbekal pengetahuan yang gw dapat dari tetangga kubikel  di kantor tentang rute2nya, gw naekin tuh kendaraan umum atu2! Ternyata mahal, bro!!! Dan gw musti ganti2 sampe 4x! Hukzz Hukzzz… tapi… ini gak lebih karena gw nyasar! 😥

Walo gak nyasar pun, kayaknya tuh tarif angkot emang muaaahhhhaaalll banget dah!

Akhirnya, nyampe gw di kantor imigrasi… di sini, gw langsung ngantri… dan gw denger orang2 yang bilang kuota buat layanan pendaftaran udah abis sampe beberapa orang depan gw. Tapi well, kita masih berfikir harapan itu masih ada. Sampe 8 orang depan gw minta nomor antrian, satpam yang ngejagain pintu masuk pun meneriakkan kata maaf. Karena, dia harus ngusir kita semua… Tidaaaaaaaaakkkk!! Perjuangan gw ngangkot dan daftar onlen harus terbayar sia2??! Gakk… ini gak boleh terjadi! Dan berbekal kenekadan, gw bilang, “Pak, kalo saya udah daftar online, udah disuruh ke kantor imigrasi hari ini. Ini formulirnya!” Dan… jreng jreng jreng… ternyata yang dah daftar online, gak perlu ngantri, Bro! Dari tadi, udah boleh masuk ajah… Hhhhh… salah gw gak nanya2…

Abis mengatasi rasa penyesalan kenapa gw gak dari tadi2 masuknya, gw dapat nomor antrian angka favorit gw! 66! Hohohoho… kurang satu angka 6 lagi, lengkaplah sudah 😛 Trus gw nunggu deh… ada gitu sekitar 16 nomor di kategori yang sama (awalan 4), gw nunggu 2 jam-an. Gw c dah doa ajah… jangan sampe gw kebagian pas abis istirahat. Masalahnya, udah jam setengah 12, gw belum dipanggil jugak. Tapi, jam 12 kurang seperempat, nomor gw dipanggil. Wooooooohooooo…

Sama mas2 yang ada di counter, gw cuma ditanyain “Baru bikin paspor?”, “Kenapa bikin paspor”, “Bisa disebutin nama sama tanggal lahirnya?”. Kayaknya ini pertanyaan tipe standar deh… Terus abis itu, berkas gw langsung diambil, dibawa masuk… si Mas nya ninggalin gw 10 menitan, minta gw nunggu… Abis itu, foto trus ambil sidik jari… udah! Berkas asli gw gak dicek, surat rekomendasi kantor pun juga berakhir sama…. sama2 gak dicek! Huwwweee…

Gw ngerasa bersyukur banget, sekaligus ngerasa heran. Pas gw tanya2 orang2 di kantor apa mereka bernasib sama(?), dan gw pun berkesimpulan, kayaknya ini karena abang gw itu Lee Hyukjae deh. Gak percaya?! Ya udah, gw jugak gak nuntut kamu percaya ama yang gw bilang kok… Intinya, gw itu adeknya hyung.

Pas rekam sidik jari, plus ngobrol ama si Mas2 yang di counter pelayanan, gw jadi tau kalo Akta Lahir itu dokumen yang lebih kuat pengakuannya dibandingkan ijazah yang gw bawa. Soalnya, gw gak tau akta gw itu gw taruh di mana… entah ketinggalan di rumah, ato di kosan… pas gw cari2 gak nemu. O iya, gw juga jadi tau, kalo jari kamu agak berkerut, ada kemungkinan sulit buat direkam ama mesinnya. Soalnya, jari kanan gw musti dilakuin percobaan berkali2. Sedangkan, jari kiri gw gak ada masalah.

Selesai foto dan wawancara, berakhir pula prosesi pendaftaran. Ini gak nyampe 15 menit, chuyy… Gw jadi heran… kenapa orang2 pada lama yah… Karena gw ada ngitungin orang sebelum gw, sampe 30 menit lebih di counter itu. Apa ini lagi2 karena gw adeknya hyung?! Hmm… gw yakin, ini pasti karena fakta itu!

Jadi begitulah, gw dah ngantongin tanda terima penyerahan SPRI. Sooo… kita tunggu beberapa hari ke depan, semoga gw bisa ngantongin ijin gw buat keliaran di negri orang.

Btw… gw juga udah nanyain lagi ke Bapak yang jaga di pintu masuk… Nanyain kalo gw musti ngantri lagi gak pas ngambil surat ijin gw… ternyata, kata si Bapak… gw tetep harus ngantri, tapi bukan buat ngambil nomor antrian. Cuma ngantri… dan itu gak lama… Wooww… ini pasti lagi2 keistimewaan gara2 gw adeknya hyung. Kyaaaa~~ gak nyesel gw bawa Kartu Keluarga yang nyantumin nama hyung di sana. Hohohoho 😀

PS: dan kamu tau??! Yang bikin paspor baru, gak ada yang seumuran gw… Rata2 lebih muda. Yang seumuran gw atau lebih tua (dari data yang gw curi liat di counter), adanya cuma mau perpanjang paspornya. Gyyaaaaa~~ Kayaknya emang gw ketinggalan banget yah yang gini2… Hhh… ya sudah lah… Sebaiknya gw emang nerima nasib ajah. Lain kali, gw bakal lebih cepet eksekusi dah kalo senpai dah nyaranin sesuatu.

Bahagia itu…

Jadi hari ini ceritanya gw lagi jalan-jalan ke super market dekat kosan. Kalo biasanya gw ngangkot atau make motor, sekarang c pengen beda… gw kesana… jalan kaki! Gak jauh c emang, tapi gak dekat jugak. Tapi pas di jalan, gw jadi kepikiran soal ini… Kalo dipikir2, kosan gw selalu dekat supermarket/minimarket gitu. Pas kuliah dulu, kosan gw deket alfamart, pas awal kerja di Jakarta, kosan gw dekat Pelangi, dan sekarang… ya sama ajah.

Singkat cerita, gw nyampe areal perbelanjaan, dan muter2 buat nyari kebutuhan bulanan. Daaann! pas gw mau bayar, gw ngeliat senpai juga lagi belanja di fast cashier (beneran gak ini istilahnya yah? yang cuma beli 6 item gitu). Abis gw nyapa, gw langsung beranjak nyari kasir yang agak kosong. Dan ternyata, senpai nungguin gw… dia nawarin mau pulang bareng atau enggak. Kyaaaa~~ tawaran yang sangat membuat hati kebat-kebit. Hyaaayaaalah! Gw kan jalan kaki tadinya, tapi pas pulangnya gw ditawarin tebengan. Gak perlu jalan lagi. Kyaaa! XD moment-nya pas! Yang gw rasain bisa dideskripsikan dengan 1 kata: B.A.H.A.G.I.A!! 😀

Ternyata senpai ke sana cuma iseng… dia lagi nungguin nyuci mobil di sekitaran sana. Bukan komplek areal pertokoan c… tapi di deket sana ada tempat nyuci mobil. Gw baru tau… Padahal itu kan jalur gw. Hhhh, ternyata sifat ignorant gw masih lum ilang2 jugak! Okeh, balik lagi ke topik awal… di sini, gw ngobrol2 sama senpai. Dan seperti biasanya, ngobrol dengan senpai selalu menyenangkan. Terlebih, yang kita obrolin sekarang bukan lagi masalah kerjaan, tapi lebih ke kehidupan pribadi masing-masing. Yap! Even dia senpai gw, gw gak tau apa2 tentang dia. Adanya dia yang tau tentang gw. Gw baru tau kalo senpai itu anak ke-6 dari 7 bersaudara dan jaraknya ama yang ketujuh, jauh banget. Ada 5 taun gitu… Hmmm… Intinya kita bicara banyak hal 😀

Dan begitulah… gw diantarin sampai kosan, walo itu artinya senpai harus ngelewatin jalan gang. Jalan gang itu bisa masuk 2 mobil c, tapi dempet2an. Terus yah, the most terrible thing happen! Mobilnya senpai ampir digores sama mobil lain yang kayaknya dikemudiin sama Ibu2 yang baru belajar mobil. Huwaaa… senpai berkorban demi gw. Gw terharu. Alasan senpai, dia takut gw nyasar kalo gak dianterin sampe kosan langsung, terus kalo udah gitu, gak tau caranya buat mempertanggungjawabkan itu ke orangtua gw.. Huweee, imajinasi yang berlebihan, senpai!
(-_-)

Walo beralasan banget c. Soalnya, gw dianugrahi dengan kemampuan spasial yang gak bisa dibilang normal, dan berdampak pada gw yang jadi sering kesasar… bahkan kalo ke Bogor. Gw sering banget nyasar 😦

Singkat cerita, gw ngerasa kalo bahagia itu… sederhana! Walo gak sesederhana itu jugak c yah. Butuh moment yang tepat buat itu semua. Sederhana, because, till now, I can’t keep this smile off my face… Just because senpai driving me home. Tapi gak sesimple itu jugak, karena ini semua kayak keajaiban… skenario yang udah disiapin, tanpa diketahui oleh siapa pun.

Sering-sering ajah gini… This moment is very make my day! 😀

Arigatou, senpai… Thanks God for making all of this happen to me 😀

jogjaaaa

You know what??!! Pergi ke jogja tapi nyasar ke Bali, cuma ada dalam iklan… Buktinya pas gw ke Jogja, gak nyasar ampe Bali nih :-/

Btw… sejauh ini, Jabar gak jauh beda lhah ya ma Yogya.. bedanya, pas belanja di indomaret, kamu dilayani ama mas2 dg dialek yg medok, dan bukan akang2 berdialek sunda 😛

Well, kita liat sampe sejauh apa gw bisa beradaptasi di “negara” keraton ini.. 😀

Membuat .jar File dari Kode Java

Jadi gini… lagi2 ada yang nanya… Kalo diliat polanya, pas mosting yang agak serius, itu pasti karena requirement dari seseorang. Entah itu temen, si Aa’, atau sapa lhah… Seolah gw gak bisa bikin sesuatu yang serius, kecuali berupa tanggapan. Huweeee….

Apapun itu, intinya ada yang nanya ke gw, gimana cara bikin file berekstensi jar dari codingan java yang udah dia bikin. Hmmm, gimana yah… Kalo gw biasanya nyuruh dia pake IDE, terus coding pake Netbeans, trus kalo dah selesai, klik kanan di project Netbeans-nya, pilih “Build”. Ntar bakal ada folder “dist” kebentuk dalam folder project, dan itu bisa dijalanin gitu ajah, asal mesinnya keinstal JRE. Tapi, requirement-nya dia lagi gak make Netbeans dan emang cuma pake editor sederhana, yang gak bisa generate IDE-nya langsung.

Okeh… permintaan di atas, mirip2 sama tugas kuliah… Tapi baiklah, berhubung gw baik… jadi gw jelasin aja di mari. Buat yang gak tau apa itu file berekstensi jar, gw jugak bakal jelasin di mari. Ekstensi jar merupakan file java archive. Jadi kayak kamu ngegabungin beberapa file menjadi sebuah file lain. Pernah nge-compress beberapa file jadi 1 file zip/rar? Kalo pernah, yaaa yang kamu lakuin mirip2 ama compress itu. Bedanya, file jar ini bukan berfungsi buat nge-compress, tapi buat ngegabungin semua file class (hasil compile file java) yang udah kamu buat supaya bisa jalan dan jadi sistem yang utuh, walau kesebar di beberapa file codingan. Intinya, file .jar itu merupakan executable file yang terdiri dari satu atau beberapa file yang kamu gunakan untuk membuat sebuah aplikasi berbasis java.

Cara gampang untuk meng-generate file jar yaitu dengan menggunakan editor IDE kayak Eclipse atau Netbeans. Caranya kayak yang udah gw jelasin di atas. Ada cara gampang, ada juga cara native pastinya… Cara native ini kemungkinan yang dilakukan banyak programmer sebelum IDE diciptakan oleh mereka. Cara native-nya pake command “jar” di terminal/console/command prompt. Berhubung sekarang lagi ngetik di komputer berbasis  Windows, jadi gw praktekkin di windows, yak. Yang linux sama ajah… gak ada beda.

Sebelumnya, gw bakal ngasi tau kalo command jar punya beberapa opsi, diantaranya c, m, f, x, t dll. Penjelasannya gini:

  1. c: buat “create” file jar
  2. m: buat memodifikasi file MANIFEST.MF yang ada di folder META-INF
  3. f: untuk merujuk ke sebuah file yang diberikan, jadi keluarannya bukan stdout gitu
  4. x: buat nge”eXtract” file jar
  5. t: buat melihat isi dari file jar yang dimaksud

Contoh? Oke.. gini, pertama, bikin dulu file java yang ada “public static void main(String args[])”-nya biar bisa di-running.

public class Main{
	public static void main(String args[]){
		System.out.println("Hello World");
	}
}

Kompile dan run file java itu…

1. Eksekusi dan Jalankan

Yang perlu kamu ketahui, setiap kamu nge-running java, sebenernya yang kamu jalanin adalah file .class-nya, dan bukan file java-nya. Jadi, dalam jar, kamu cukup masukin file .class yang kamu butuhin… gak usah semuanya jugak. Tapi kalo kamu mau masukin semuanya, juga gak masalah. Kamu tinggal pake command “*” ajah… Gak usah pilih2…

Jadi… langkah selanjutnya, kamu masukin file Main.class ke dalam sebuah file jar, pake command jar

2. Bentuk Jar

Command itu gak usah gw jelasin yah maksud “cf”-nya. Kan udah di atas… Kalo hai.jar, itu nama file jar yang kamu mau, dan setelahnya ada Main.class… itu file class yang mau dimasukin ke file jar-nya. File jar ini, seharusnya udah bisa kamu jalanin… tapi biasanya, yang terjadi c belum bisa dijalanin. Cobain deh gini:

3. Jalankan Jar

Bilangnya, belum ada “main” di manifest sebagai atribut. Mungkin kamu bingung, dan gw lebih bingung lagi ngejelasinnya. Tapi intinya, pas kamu bikin file jar tersebut, ada file MANIFEST.MF dari folder META-INF yang di-generate secara default oleh sistemnya, karena file ini emang dibutuhin sama si file jar-nya. Bentuk default-nya kayak gini:

Manifest-Version: 1.0
Created-By: 1.7.0_55 (Oracle Corporation)

Isi dari file MANIFEST.MF itu belum lengkap, karena kita gak specified class yang punya “public static void main(String args[])” tuh yang mana. Makanya error-nya gitu. Uhhmmm… nangkep kan maksud gw?! Okeh, nangkep atau enggak, gw bakal kasi tau solusinya. Kamu extract dulu file jar yang tadi pake command gini:

4. Jar Salah

Dan nanti, ada file tambahan di folder tempat kamu nge-ekstract file hai.jar.

5. Struktur File

Ada folder META-INF. Di dalamnya ada MANIFEST.MF. Ubah isi file MANIFEST.MF pake editor favorit kamu (bisa gedit/notepad++/notepad) jadi kayak gini:

Manifest-Version: 1.0
Created-By: 1.7.0_55 (Oracle Corporation)
Main-Class: Main

Yang gw merahin merupakan nama Class yang bisa di-running (ada public static void main(String args[])). Kalo Class gw kan namanya Main.class, jadi gw bikinnya “Main”. Save, dan tutup editornya. Gak ditutup juga gak papa c. Terus, kamu bikin lagi file jar pake MANIFEST yang udah kamu ubah isinya tadi dan running. Caranya gini:

6. Bentuk Jar

Yang perlu kamu perhatiin, kamu harus nambahin satu karakter kosong sehabis kamu ngubah file MANIFEST.MF, jangan kayak gini:

7. Manifest Salah

Kenapa?! karena kalo gak, yaaa bakal jadi kayak gini kalo kamu running, hal ini lah yang bakal kamu temuin:

8. Jar Salah

Jadi bikinnya, paling gak ada karakter space kayak gini (space lhoh yah… whitespace juga gak ngaruh):

9. Manifest Benar

Dan buat kamu yang bertanya-tanya, kenapa ngejalaninnya pake “java -jar”, bukannya klik dua kali… kan executable?? Gak ada yang bisa gw jawab kecuali “yaaa.. karena tipe aplikasi yang dibikin itu sifatnya console-based”. Jadi jalaninnya tetap di console/terminal/command prompt/cmd. Kalo kamu bikin aplikasi GUI, ntar juga bisa dijalanin pake klik 2x. Dan begitulaaahhhh…. Pertanyaan dan saran, boleh langsung di kotak komentar, yak…

PS: kalo ada yang nanya, buat library eksternal kayak JDBC kalo mau di-running, daftarinnya gimana… Jawabannya gini: “tinggal kamu tambahin atribut Class-Path di file MANIFEST.MF”. Contohnya gini:

10. Manifest dengan Path

Dan struktur folder-nya gini:

11. Bentuk Jar

Kalo library lain ada lagi yang mau ditambahin, tinggal dikasi spasi ajah kayak gini:

Manifest-Version: 1.0
Created-By: 1.7.0_55 (Oracle Corporation)
Main-Class: Main
Class-Path: lib1.jar lib2.jar lib3.jar

PPS: Kalo ada yang nanya lagi, “itu… file MANIFEST.MF sebenernya buat apa dan harus kayak di atas bikinnya? Generate dulu, extract, baru pake yang ada?” sebenernya enggak. Jawabannya: “gw gak tau yah buat apa sebenernya, tapi kayaknya buat spesifikasi pas nge-running java…kan ada atribut Main-Class gitu, terus kalo harus gitu bikinnya… enggak c yah. Kamu bisa bikin sendiri file MANIFEST.MF itu pake editor biasa, asalkan encoding-nya pake UTF-8”. Contohnya, gini.. gw bikin sendiri MANIFEST.MF kayak di atas, terus gw generate lagi kayak gini:

12. Akhir

Dan selesai… Begitulah caranya.. Moga membantu…

Valid: Iyap!
Kadaluarsa: Gak tau
Sumber: situs oracle, stackoverflow.com sama dok pribadi

Takut

Sejak gw jadi pegawai berstatus kurang 20 sampe sekarang yang syukur banget udah jadi full, kerjaan gw berkutat sekitar hal-hal administratif. Yaa, wajar c, yah. Gw kan di bagian manajemen. Walopun gw lulusan IT, tapi yaaa.. kondisinya gw gak pernah berkutat ama hal-hal teknis lagi sekarang. Ada jugak gw yang nyuruh2 orang buat ngerjain hal-hal teknis.

Tapi yah.. berhubung gw lulusan dari kampus berbasis IT, even gw ngurusin hal-hal administratif, tetep ajah ada harapan yang terselip di sana. Jadi ceritanya gw dapat titah buat ngerjain sesuatu yang berbau teknis. Iya! Bikin aplikasi gitu. Kata yang minta, ini udah mau dikasi ke vendor/subcont, tapi udah sebulan belum fix jugak em-o-yu nya… Makanya mereka mau bikin internal, dengan mempertimbangkan skala aplikasi jugak gak terlalu “Wahhh”. Katanya gitu.

Dan begitulah katanya… tapi kamu tau ajah kan, setiap project yang dibikin sendiri, selalu over confidence tawarannya dari segi waktu, bahkan kadang2 dari segi biaya (over confidence kalo dana yang dipake bakal kecil). Makanya, gw jadi bingung sendiri. Belum lagi, gw bener2 gak pede ama kemampuan programming gw yang sekarang. Pas anak kuliahan udah ngasah kemampuan buat bikin robot yang bisa diprogram, gw malah ngasah kemampuan buat make aplikasi office. Huweeee….

Asli! gw takut. Ada perasaan bakal ada gap antara harapan dan kenyataan. Orang2 terlalu berharap banyak, dengan hasil yang yah… begitulah… Makanya, gw takut. Huwaaa… gw musti ngapain nih?! Bisa ajah c nolak, tapi gw kan orangnya paling gak bisa kasi penolakan. Takut gak dihargain de el el de es be. Belum lagi, gw udah konsultasi ama senior di sini, katanya c diambil ajah… Katanya juga, hal yang bakal gw kerjain ini bakal bisa diberesin seminggu. Tapi kan sang senior belum tau kemampuan gw sebagai juniornya dia. Belum lagi gw kondisinya lagi gak pede ama kemampuan sendiri. Selama gak pede, gak bakal ada yang bisa dijalanin, kan?! Iya! Pasti gitu!

Begitulah…..

Intinya… Gw…. takut…

Set Classpath Library JDBC

Kemaren si Aa’ nanya ke gw tentang koneksi dari java ke oracle. Sebenernya inih gampang c yah. Tinggal pake IDE terus tambahin library, trus bikin class buat buka koneksi. Sayangnya rekuesan yang gw terima, gak boleh pake IDE. Gak tau apa maunya si Aa’, tapi ya sudahlah… Sebagai adek yang baek, gw kasih tau caranya. Dan ternyata, gw juga gagal!

Kesalahan yang gw lakukan adalah, gw gak tau caranya nge-set classpath jdbc di library java. Dan kalo udah berhasil nge-set classpath, nanti juga berhasil.

Sebenernya ada beberapa cara yang gw lakukan terkait hal ini… yaitu:

1. Download jdbc di situs oracle.

Downloadnya di situs ini. Sebenernya, kalo windows, ini bisa diambil langsung… di tempat instal oracle, terus ke direktori tertentu. Anggap kamu nginstall oracle 11g rilis 2 di drive D:, alamat library-nya ada di D:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib. Di folder tersebut, ada 2 versi ojdbc. Satunya ojdbc6.jar, satunya lagi ojdbc6_g.jar. Sebenernya 2 itu sama ajah c, cuma ada bedanya… gw juga lupa apa. Masalah compile gitu? Entah apapun itu, gw pakenya yang gak pake huruf g. Kalo di linux, gw gak tau… Makanya gw download, bukan nyari di tempat nginstallnya.

2. Bikin class koneksi sebagai berikut:

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 
 
public class Koneksi{ 
   private final String JDBC_DRIVER = "oracle.jdbc.driver.OracleDriver"; 
   private final String DB_URL="jdbc:oracle:thin:@//localhost:1521/XE"; 
   private final String USER ="uname"; 
   private final String PASSWORD="pwd"; 
   private Connection conn = null; 
   
   public void bukaKoneksi(){ 
       boolean flag = false; 
       try{ 
	  Class.forName(JDBC_DRIVER); 
       }catch(Exception e){ 
	  System.out.println("Error: "+e); 
          flag = true; 
       } 
       /*if(!flag){ 
	  try{ 
	     conn = DriverManager.getConnection(DB_URL,USER,PASSWORD); 
	  }catch(Exception e){ 
	     System.out.println(e.getMessage()); 
          } 
	  
       }*/ 
   } 
   public Connection getConn(){ 
	return conn; 
   } 
}

Standar kan yah?! Iya! Standar… Jadi gw coba compile, terus bikin class buat ngejalanin gini:

public class Main{ 
   public static void main(String args[]){ 
      Koneksi k = new Koneksi(); 
      k.bukaKoneksi(); 
   } 
}

Dan ternyata, yang gw dapetin adalah Error… ClassNotFoundException! Driver-nya gak kebaca, sodara2! Gw nyari2, kalo di windows, ternyata bisa copy-in di bagian lib\ext dari direktori penginstalan Java. Jadi kalo kamu punya java 64 bit di mesin kamu (Windows 7), kemungkinan letaknya di “C:\Program Files\Java\jdk1.7.0_55\jre\lib\ext“. Kalo udah gini, program kamu bakal berhasil dijalanin tanpa error. Tapi… sayangnya, ini gak berlaku di linux. Gw gak ngerti kenapa.

Walopun gitu, terlepas dari bisa atau gak, cara di atas sebaiknya gak kamu lakuin yah… Karena library dari compiler sebaiknya gak kamu tambahin apapun. Yang perlu dilakukan yaitu nambahin classpath dengan value berupa path direktori tempat peletakan library jdbc-nya (ojdbc6.jar yang tadi). Kalo di linux yang gw lakukan gini:

di terminal, ketikin:

sudo gedit ~/.bash_profile

dan kebuka sebuah file, tambahin baris gini

CLASSPATH=$CLASSPATH:/home/user/Documents/jdbc/ojdbc6.jar 
export CLASSPATH

Yang “/home/user/Documents/jdbc/ojdbc6.jar”, itu merupakan path tempat peletakan si library jdbc. Terus save, keluar deh… Kalo di windows, bisa pake:

set classpath=E:\JDBC\ojdbc6.jar;.

Jangan lupa buat nambahin titik koma sama titik di akhirnya, yah. Gw coba di komputer Aa’, dan kelupaan ngasi titik, jadinya gak bisaan gitu. Lebih jelasnya, kamu bisa liat di link video ini. Kalo dah ngatur kayak gitu, kamu bisa compile kode java kamu dengan nyaman… Kayak biasa ajah compile sama nge-run Nya.

PS: Pastiin classpath-nya bener pake command “echo $CLASSPATH”. Untuk nama variabel, sifatnya case sensitive lhoh yah.. Jadi jangan sampe salah.

Menampilkan 2 Angka Belakang Koma dengan Java

Beberapa hari yang lalu, ada yang nanyain ke gw tentang cara nampilin sebuah hasil pembagian biar jadi 2 angka belakang koma di java. Well, sebenernya ini hal dasar yang musti diketahui pas pertama kali belajar java. Minimal nyentuh bahasa pemrograman java lhah… Tapi tampak para dosen jaman sekarang lebih focus berkutat sama logika dan proses pembelajaran dibandingkan hasil akhir, jadilah akhirnya pas nemu kasus beneran, ada ajah pertanyaan “lucu” kayak gitu.

Eh tapi gw gak maksud memojokkan dosen jaman sekarang lhoh yah… Buktinya masih ada kok yang gak gitu. Contoh aja senpai gw yang baru lulus S2. Kata senpai gw, di era digital dengan keberadaan internet di mana semua  source bisa didapatin dengan gampang, yang diperluin ama mahasiswanya itu skill buat ngebaca dokumentasi atau paling gak, tahu keyword buat nyari di stackoverflow atau google.

Balik lagi ke kasus awal kita… Sebenernya ada beberapa cara buat nampilin 2 angka belakang koma. Beberapa di antaranya yaitu:

1. Menggunakan decimal format

import java.text.DecimalFormat;

public class NewClass1 {
    public static void main(String[] args) {
        double x = 0.92837;
        DecimalFormat df = new DecimalFormat("#.##");
        System.out.println(df.format(x));
    }
}

Hasil akhir:

1. Hasil Decimal Format

Angka signifikan di belakang koma bisa kamu ganti di parameter dalam konstruktor DecimalFormat (yang ada karate pagar—baris warna merah). Contohnya, kalo kamu mau ganti 3 angka belakang koma, bisa pake format (#.###).

2. Menggunakan format String (String.format).

Contoh:

public class NewClass1 {
    public static void main(String[] args) {
        double x = 0.92837;
        System.out.println(String.format("%.2f", x));
    }
}

Hasil akhir bakal sama kayak di atas, dan kalo kamu butuh penambahan angka signifikan, tinggal ganti parameter di method format dari class String. Jadi kalo butuh 3 angka belakang koma, ubah baris buat nampilin jadi kayak gini: “System.out.println(String.format(“%.3f”, x));”. Parameter %.2f itu maksudnya, tampilkan sebuah float dengan angka belakang koma sebanyak 2, dan ikutin aja polanya. Seandainya butuh 5 angka belakang koma, kamu bisa kasih parameter %.5f.

3. System.out.printf (Favorit gw)

Contoh:

public class NewClass1 {
    public static void main(String[] args) {
        double x = 0.92837;
        System.out.printf("%.2f",x);
    }
}

Hasilnya sama ama kayak di atas, dan pola parameter juga sama. Kalo mau digabung sama string lain juga gampang. Anggap kamu mau nampilin variabel x jadi gini: “Hasil: 0.928”, kamu bisa ubah baris printf jadi kayak gini: “System.out.printf(“Hasil: %.3f \n”,x);”. Kalo karakter \n itu maksudnya buat nambah baris baru.

4. Membulatkan isi/nilai variabel

Hal-hal sebelumnya dimaksudkan biar kita bisa nampilin bilangan berkoma banyak jadi tampil dengan beberapa angka signifikan belakang koma. Tapi, kalo ternyata yang kamu mau itu gak cuma sekedar menampilkan, tapi juga mengubah isi variabel menjadi bentuk pembulatan, kamu bisa ngelakuin trik semacam ini:

public class NewClass1 {
    public static void main(String[] args) {
        double x = 0.92837;
        int angkaSignifikan = 2;
        double temp = Math.pow(10, angkaSignifikan);
        double y = (double) Math.round(x*temp)/temp;
        System.out.println("Sebelum Pembulatan: "+x);
        System.out.println("Setelah Pembulatan: "+y);
    }
}

Hasilnya jadi kayak gini:

2. Pembulatan

Kalo kamu mau ngubah jumlah angka signifikan belakang koma, kamu bisa ubah2 nilai di variabel angkaSignifikan.

Valid: Yap
Masa Kadaluarsa: Teruji di Java 1.7.0_55
Sumber:
– http://stackoverflow.com/questions/153724/how-to-round-a-number-to-n-decimal-places-in-java
– http://stackoverflow.com/questions/16408253/rounding-off-2-decimal-places-in-java-for-whole-number