Peduli

Di jaman now.. pas kondisi serba kekinian dan keterbukaan merupakan hal yang diagungkan, kepedulian menjadi satu hal yang bisa menyakitkan. Well, ga jaman now juga c.. Udah dari lama, ada kondisi yang nyebabin kepedulian malah jadi bumerang untuk mengabaikan sesuatu.

Contohnya, di filem2 Korea, ada ibu rumah tangga yang peduli buat keluarga nya.. melakukan segala sesuatu, merencanakan apapun demi kepentingan keluarga. Tapi, kepedulian ini mendapat pertentangan dari anggota keluarga. Terlebih, cara menyampaikan yang membuat sang ibu tidak dihargai, menimbulkan kekecewaan yang mendalam dan membuat sang ibu jadi marah, kesal, dan bahkan ga peduli lagi.

Contoh lain, di filem drama.. seorang guru yang peduli akan siswanya, mencoba mengajar dengan baik. Mengatur materi agar mudah dipahami.. dan memberikan contoh-contoh yang nyata agar siswanya belajar dengan baik. Para siswa mendengar.. tapi tidak memperhatikan. Akan tetapi, saat evaluasi langsung, para siswa tidak dapat menjawab soal yang persis sama saat latihan. Sehingga sang guru menegur siswanya, memberi nasihat untuk lebih giat belajar dan memberi atensi di kelas. Dan di luar kelas, sang siswa bergosip dengan kakak kelas kalau gurunya galak dan kerjanya marah2. Sang guru yang tidak sengaja mendengar hal tersebut merasa “hancur” dan pastinya kecewa.. simply, karena dia ga ngerasa dihargai atas kepedulian yang mereka berikan.

Intinya.. Usaha keras yang dibentuk atas dasar kepedulian selalu punya resiko menimbulkan kekecewaan yang berakibat pada aksi ketidakpedulian. Resiko yang muncul ketika seseorang merasa tidak dihargai atas usahanya.

Gw ga tau seberapa nyata filem2 bertopik ini di real life. Karena gw tipe yang terlalu peduli ama diri sendiri, gw c jarang yah ngelihat hal itu.. tapi itu semua kayaknya nyata banget (buat gw). Sedih banget c.. kalo kepedulian justru menghasilkan sifat yang berlawanan dari sifat dasarnya. Mungkin ini alasan kenapa budaya timur menganggap keterbukaan menjadi hal yang menjatuhkan. Mungkin nantinya khawatir timbul rasa tidak dihargai.. dan ini bikin down banget pastinya. Tapi ini baru sekedar mungkin dari gw (which is gw jarang bersosialisasi di kehidupan nyata).

Terkait hal ini, gw pernah baca.. kalau aksi yang dilakukan, sebaiknya memiliki pegangan2. Bukan karena kepedulian, tapi karena hal itu adalah prinsip2 yang kita percaya untuk diamalkan. Contohnya, seorang guru merasa tidak dihargai dan malah dibilang pemarah walau sudah berusaha keras mengatur materi dan mencoba untuk peduli. Ketika guru tersebut memang mempunyai prinsip bahwa seorang guru harus peduli pada siswanya dan harus mengatur materi dengan baik, maka hal itu yang harus dilakukan.

Guru bertindak bukan karena 1 orang siswanya (atau bahkan puluhan dan ratusan).. tapi guru bertindak dan berlaku sebaik mungkin karena guru adalah seorang guru. Memang hal itulah yang harus dilakukan. Guru berusaha sebaik mungkin bukan untuk mendapatkan “balasan” penghargaan dari siswanya secara langsung. Tapi karena memang itulah profesi pilihannya akan prinsip yang dimiliki. Terkait prinsip ini.. sebenarnya prinsip ini bisa berbentuk apapun. Bisa kode etik guru, bisa undang2, bisa peraturan sekolah.. atau bahkan, agama.

Memang saat bersikap, selalu ada batasnya. Jika ada hal2 yang melanggar batas tersebut, maka tindaklanjuti lah sesuai prinsip2 yang dijadikan acuan. Begitupula dengan perasaan searah. Lakukanlah sesuai prinsip2.

Faktanya.. Sangat berat untuk mencintai tanpa dicintai. Begitupula dengan kepedulian. Sangat berat untuk bersikap peduli jika diacuhkan. Tapi.. kembalikan semuanya pada prinsip-prinsip. Jika memang timbul rasa kecewa dan tidak ingin lagi merasa peduli. Mungkin dari awal, kita lah yang melanggar prinsip-prinsip itu dari awal. Ketika ketulusan dan keikhlasan yang menjadi pegangan sudah beriring dengan harapan lain.. well, sangat mungkin untuk kecewa ketika harapan itu tidak terwujud.

Jadi.. buat kamu yang tiba2 jadi ga pedulian, coba dicek lagi.. apa kamu benar-benar peduli awalnya? Atau kamu punya motivasi lain? Dan kebetulan aja ga berbalas?

PS: tulisan yang dibuat karena gw lagi ngambek dan bikin gw abai ama tugas gw. Dan tiba-tiba nyadar kalau gw ternyata udah “ga bener” sekarang. Bisa2nya gw abai ama tugas gw gara2 masalah sepele. Hufff.. nyesel banget.

Advertisements

Watch “Guests: Super Junior-Yesung, Shindong, Eunhyuk, Donghae[Hello Counselor/SUB : ENG,THAI / 2018.01.29]” on YouTube

Yeaaayyy.. super junior jadi guest di Hello Conseulor. Jadi kemarin gw sibuk nge-fanboy man teman.. jadilah gw ga sentuh project tulisan yang gw janjiin di-update. Maafkaaaaaann gw yang ingkar janji inih.

Nontonnya c cuma sejam.. cuma after effect-nya itu. Bertahan seharian. Jadi aja gw baca2 fanfic plus nostalgia abis nonton variety show nya. Hohohoho..

Btw.. Hyung gw jadi sorotan di acara ini. Kyaaaaa.. 😍😍😘 well, keliatan banget ambisiusnya (I know he is.. walo banyak fans yang ga setuju). Tapi paling ga dia tau cara berinteraksi sama fans biar tetap didukung selalu ama fans. Hehe..

Mengenang

Beberapa hari yang lalu, “temen” gw bilang gini ke gw:

Gw c yah, sakit c kalau keingetan moment2 itu.. orang2 sekitar gw support gw buat ngelupain hal itu, tapi gw lebih baik ngerasa sakit daripada ngelupain semua itu. Gw ga belajar apapun memang, tapi gw tahu gw pernah ngalamin masa2 terberat sampai sejauh ini.

Well, agak drama c memang yah kata2 di atas.. tapi berhubung gw tau konteks pembicaraan waktu itu, gw ga jadi menghakimi yang bilang kalo dia lebay (fyi, dia lebay banget emang.. tapi gw tau itu ga akan pernah terjadi kalo lagi ngomong ama gw).

Dari pembicaraan itu, gw c pengen jadiin itu kata2 sebagai post gw di kategori “quote of the day”. Tapi.. kayaknya c ga etis yak. Berhubung cerita di balik kata2 di atas memang penuh luka.

Terkait kata2 di atas, gw jadi kepikiran.. ada yah kondisi pas kita pengen mengenang sesuatu, dan kenangan itu ga manis sama sekali. Temen gw yang lain bilang kalo itu tuh semacam persecution complex (uhhmmm, di-googling Aja yah, gw juga ga tau kalo ini ada sampe temen gw yang bilangin ke gw).

Intinya, gw pengen bilang, kalau kenangan yang Lo rasa bisa jadi terkait sama seberapa bisa Lo nerima kondisi yang pernah Lo alami.

Dalam kondisi temen gw ini, mungkin dia dalam kondisi terpaksa menerima kondisi yang sekarang dia rasain. Tapi dia ga menuntut apapun, karena dia tau, segalanya yang sekarang dia terima adalah yang terbaik. Rasa sakit yang dia kenang, semacam “Remedy” buat diri sendiri sebagai keyakinan semuanya bakal jadi lebih baik.

Uhmmm.. nangkep kan maksud gw?!

Apapun itu.. ternyata ga semua kenangan manis itu bisa dikenang gitu aja tanpa mengingat pahit yang dirasa. Yah.. kayak kata pepatah lama.. rasa manis ga akan terasa “lebih manis” kalo ga ngerasain pahit. Well, gw bilang pahit yah.. bukan pedas. Kalo rasa pedas c bikin emosi jiwa.. (lagi Curcol).

Oiya, biar Lo ga nge-judge temen gw, yang temen gw itu maksud, kenangan pas dia harus ditinggal ibu, dan dia nya sendiri dalam kondisi sakit (sakitnya jangan bayangin pilek gitu ya guyz.. tapi yang musti kontrol plus tindakan gitu). Sepeninggal beliau, kakaknya juga dalam kondisi putus asa minta bantuan sang adik. Walo sang kakak tau sang adik juga ga bisa nolong apapun. Bokapnya juga sibuk nyalahin dia sebagai pelampiasan rasa putus asa dan ga terima ama kondisi anaknya yang penyakitan (kalo ini c perspektif dia c yah).

Sampai puncaknya.. dia berantem sama sang ayah gara2 sepupunya dari sisi bokap. Parahnya, situasi ini kejadian beberapa hari sebelum jadwal tindakan/operasinya. Tapi semua akhirnya baik2 aja. Operasinya Alhamdulillah berhasil. Dia nya balik ngantor dengan ceria plus disambut antusias ama rekan yang lain juga. Walo ama keluarganya sendiri, datar2 aja. Mereka idup masing2 sekarang.

Bukan berarti ga ada komunikasi. Cuma idup masing2 aja. Sepupunya masih ngerecokin sang bokap. Beruntung kakaknya masih ada di sisi bokap. Dan dia.. cendrung ga peduli (temen gw ini tipe selfish yang musti dibilangin gitu soalnya–salah gaul kayaknya). Yah.. gitu deh.

Apapun itu.. gw jadi tahu kalau ada juga kemungkinan gitu yah.. dan kalau kamu bertanya2 apa gapapa gw publish kisah itu di mari.. jawabannya……….. We’ll see..

Suara

Ketika suara di balik kubikel membangkitkan rindu yang ga mungkin, senjata satu2nya cuma membangkitkan rindu lain yang lebih ga mungkin.

-bukan Arby, 2x tahun, hobi ngegalaw sambil denger JKT48-

Array List

 

Array List, dalam hal ini array list java, merupakan “struktur data” yang udah disediakan Java dalam package java.util. Untuk beberapa dari kamu yang udah belajar Collections, array list merupakan salah satu dari mereka. Kayak yang udah gw jabarin sebelumnya, yang namanya struktur data, pastinya tentang cara mengorganisasikan/menyimpan data. Dan Array List merupakan “tempat” menyimpan data… jadi dapat disimpulkan array list merupakan salah satu bentuk struktur data.

Dari segi penamaan, array list punya karakteristik seperti array… kumpulan data dengan tipe data yang seragam, terus disimpan dalam 1 variabel tertentu. Plus, isi array list juga diakses melalui indeksnya. Terus bedanya apa?! Bedanya… array list ga usah dideklarasikan dengan jumlah elemen. Kamu bisa menambah jumlah elemen seberapapun yang kamu inginkan… batasnya adalah nilai integer yang jadi indeks, atau kapasitas memori mesin kamu.

Untuk membuat objek array list, kita pakai syntax gini:

ArrayList<T> nama_array_list = new ArrayList<>();

Penulisan di atas, maksudnya, kita mendeklarasikan sebuah array list of T (T ini bisa diganti dengan tipe TypeWrapper yang kamu mau kayak Integer, String, Double, dll). Konstruktornya dapat berisi nilai kapasitas awal, tapi ini sifatnya optional. Secara kode dan pemrosesan pastinya beda, tapi ga terlalu ngaruh buat penggunaannya. Buat kamu yang ngegunain Java 6 ke bawah (gw lupa versi berapa), diamond di belakang ArrayList di ruas kanan juga harus kamu isi dengan tipe T. Tapi, kalau kamu gunain versi 8 atau 9 kayak gw, ikutin aja kode di atas. Oiya, jangan lupa juga import package “java.util.ArrayList” di awal kode sebelum nulisin class.

Langsung ke operasi aja ya… Array List, atau sebagai class Java, dia dinamakan ArrayList, punya beberapa operasi. Untuk semua operasinya, kamu bisa cek Javadoc dari si ArrayList. Di sini, gw Cuma tampilin beberapa operasi yang sering dipakai aja. Dan berikut daftar operasinya:

  1. Method add(E): untuk menambahkan elemen ke array list. E merupakan objek dengan tipe T tertentu (T ditentukan pas deklarasi array list).
  2. Method add(indeks,E): untuk menambahkan elemen E ke array list pada indeks yang ditunjuk oleh parameter masukan “indeks”.
  3. Method remove(indeks): untuk melakukan remove melalui nilai indeks.
  4. Method remove(objek): untuk melakukan remove dengan acuan objek yang jadi parameter masukan.
  5. Method set(indeks, E): untuk mengganti nilai elemen indeks ke-“indeks” dengan nilai parameter masukan berupa objek element E.
  6. Method get(indeks): Method yang mengembalikan berupa objek E pada indeks ke-“indeks”.
  7. Method toArray(): untuk beberapa alasan, diperlukan konversi dari array list ke dalam bentuk array biasa. Hal ini ditangani oleh method toArray(). Kembalian method ini berupa array of Object (Object[]).
  8. Method size(): mengembalikan jumlah elemen dari array list.

Yap… dan itu aja c yang sering dipakai/diajarin di kelas pemrograman.

Untuk kasusnya, ada sebuah cerita gini…

Buatlah sebuah array list of String dengan isi: “Belajar”, “Pemrograman”, “Sangat”, “Menyenangkan”. Tampilkan isi dari array list of string tersebut (tidak menggunakan loop). Lalu tambahkan objek “Algoritma” di antara elemen “Belajar” dan “Pemrograman”. Tampilkan isi array list (menggunakan for-loop). Ubah nilai “Pemrograman” menjadi “Programming”, dan tampilkan isi dari array list kembali (menggunakan enhanced for-loop).

Dari kasus di atas, gini kode yang bisa dibuat:

package newpackage;

import java.util.ArrayList;

public class DemoArrayList {
    public static void main(String[] args) {
        //membuat array list of string dengan nama x
        ArrayList<String> x = new ArrayList<>();
        //mengisi nilai array list
        x.add("Belajar");x.add("Pemrograman");x.add("Sangat");
        x.add("Menyenangkan");

        //tampilkan isi array list
        System.out.println("Menampilkan isi array list");
        System.out.println("Elemen 1: "+x.get(0));
        System.out.println("Elemen 2: "+x.get(1));
        System.out.println("Elemen 3: "+x.get(2));
        System.out.println("Elemen 4: "+x.get(3));

        //tambah data "algoritma" antara "belajar" & "pemrograman"
        x.add(1,"Algoritma");

        //tampilkan isi array list menggunakan for-loop
        System.out.println("\nMenampilkan isi array list setelah ditambah");
        for (int i = 0; i  programming
        x.set(2,"Programming");

        //tampilkan isi array menggunakan enhanced for-loop
        System.out.println("\nMenampilkan isi array list setelah diubah nilainya");
        for(String s:x){
            System.out.println("Elemen: "+s);
        }
    }
}

Keliatan yah… ada berbagai macam cara buat nampilin array list ini. Sama seperti array… Silahkan pilih yang sesuai ama kondisi masing-masing.

Untuk info tambahan, array list yang kamu buat, ga terbatas kemungkinannya untuk menyimpan tipe data bawaan dari java aja. Tapi Kamu juga dapat menyimpan objek dari tipe data bentukan kamu sendiri….

Okeh… cukup sekian tulisan tentang array list. Moga ngebantu pemahaman kamu tentang array list.

 

Struktur Data Konkrit: Array

Array dapat didefenisikan sebagai kumpulan data dengan tipe data sejenis, yang disimpan dengan nama yang sama. Intinya pengelompokan c… Bayangin, seandainya kita punya kumpulan 15 angka yang mewakili nilai umur manager di suatu perusahaan. Nilai ini, dalam program harus kita simpan dalam 15 variabel berbeda…. Bisa jadi ribet kan. Karena musti deklarasi 15 kali, mulai dari umur1 sampai umur15. Terus inisialisasi pastinya juga 15x.  Array memudahkan kita untuk mengatur hal ini dengan mengatur 1 nama bisa menyimpan banyak nilai. Tapi ada syaratnya… semua nilai punya tipe data yang sama. Jadi kalau tipe numerik tanpa koma yang jadi acuan syarat, maka di 1 tempat/nama variable, Cuma nilai numerik tanpa koma itu yang bisa disimpan dan diakses. Yap! Seperti halnya variable, nilai dapat disimpan, diakses, dan diubah nilainya. Cuma, karena nilainya banyak, semua operasi ini diakses melalui satu hal yang biasa kita sebut indeks (para programmer biasanya menyingkat penulisannya jadi “i”, dan kalau i udah kepake, dipakailah penulisan j, k, dan seterusnya). Oiya, ada juga yang bilang i itu punya kepanjangan dari iterator. Tapi apapun itu, i ini ga lebih dari sekedar variable aja c. Array, diilustrasikan di situs oracle (https://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html)

array-java

Tipe array, memiliki bentuk deklarasi dan inisialisasi penulisan yang berbeda tergantung Bahasa pemrograman yang digunakan. Cuma, karena gw udah sertifikasi OCA, jadi kita pake Bahasa Java ajah yak (sombong ceritanya) 😛

Untuk menggunakan array, ada 2 langkah yang harus dilakukan:

  1. Deklarasi
  2. Inisialisasi

Deklarasi sendiri artinya yaaa… deklarasi. Kayak mengukuhkan atau memberi pemberitahuan sesuatu gitu. Jadi, array sebagai variable harus diberitahukan keberadaannya. Untuk mendeklarasikan array dengan menggunakan Bahasa pemrograman Java, digunakan syntax umum berikut:

modifier tipe_data_array nama_array[];

Atau

modifier tipe_data_array[] nama_array;

Modifier, dapat diisi dengan public, private, atau protected sesuai kebutuhan. Buat yang bingung apa itu modifier, boleh banget ngecek materi Pemrograman Berorientasi Objek. Modifier Cuma dapat dituliskan kalau deklarasi ada di daerah deklarasi atribut. Kalau aja deklarasi dilakukan untuk variable local (dituliskan dalam body method), penulisan modifier ini bakal munculin error “illegal start of expression”.

Perbedaan syntax atas ama bawah, cuma dari peletakan penanda array yang mau dibuat (letak kurung siku). Setelah deklarasi, berikutnya inisialisasi. Inisialisasi, seperti namanya…. Inisial! Suatu hal yang dilakukan di depan. Di bidang pemrograman, inisialisasi adalah pemberian nilai pertama kali. Untuk array (khususnya java), artinya, me-reserved tempat di memori, plus kasih nilai default untuk arraynya (contohnya, 0 untuk tipe data int, atau null untuk tipe data objek bentukan/string). Syntaxnya gini:

variable = new tipe_data_array[ukuran];

Hal yang perlu diperhatikan adalah tipe_data_array yang dituliskan di bagian inisialisasi ini, harus sama dengan tipe_data_array di bagian deklarasi. Selain itu, ukuran harus bernilai bulat. Jangan masukin nilai koma, bahkan huruf di bagian ukuran.

Untuk array, inisialisasi dan deklarasi dapat juga dituliskan bersamaan dengan syntax:

tipe_data_array nama_var_array[] = new tipe_data_array[ukuran];

Array di atas akan diisi dengan nilai default. Kalau saja ingin diinisialisasi dengan nilai yang sudah ditentukan, contohnya array of integer dengan nilai 3, 4, 5. Array tersebut dapat dibuat dengan kode:

int varArray[] = {3,4,5};

Atau bentuk umumnya:

tipe_data_array nama_array[] = {nilai1, nilai2, nilai3};

Hal di atas, masih bicara tentang deklarasi & inisialisasi. Untuk melakukan modifikasi terhadap nilai array, maka hal tersebut dilakukan dari indeks array tersebut. Hal ini juga berlaku untuk mengambil isi atau nilai dari array. Bentuk umum modifikasi nilai array:

nama_array[indeks_array_yang_ingin_diubah] = nilai baru;

Sedangkan untuk mendapatkan nilai array dan menampilkan ke layar, digunakan syntax berikut:

System.out.print(nama_array[indeks_array_yang_diakses]);

Okeh… semua hal di atas terkait teori dari array. Berikutnya contoh! Contohnya, kalau ada kasus seperti ini.

Buatlah sebuah array of string dengan content yang ditentukan. Bentuk array dengan 2 cara:

  • Array dengan isi konten “Saya” “Suka” “Belajar” “Struktur” “Data” “dan” “Pemrograman”. Deklarasi-inisialisasi dipisah, dan
  • Array dengan isi konten “Senangnya” “Belajar” “Struktur” “Data”. Deklarasi-inisialisasi digabung

Tampilkan nilai array tersebut ke layar dengan menggunakan 2 cara:

  • Array pertama ditampilkan dengan mengakses indeks satu per satu
  • Array kedua ditampilkan dengan menggunakan perulangan

Ubah nilai konten berikut dari array pertama, dan tampilkan isinya ke layar.

  • Struktur –> Data
  • Data –> Structure
  • Dan –> And
  • Pemrograman –> Programming

Berawal dari kasus di atas, berikut kode yang dapat dituliskan:

public class DemoArray {
    public static void main(String[] args) {
        //Array bernama daftarKata dengan isi konten
        //“Saya” “Suka” “Belajar” “Struktur” “Data” “dan” “Pemrograman”.
        //Deklarasi-inisialisasi dipisah
        String[] daftarKata = new String[7];
        daftarKata[0] = "Saya"; daftarKata[1] = "Suka";
        daftarKata[2] = "Belajar"; daftarKata[3] = "Struktur";
        daftarKata[4] = "Data"; daftarKata[5] = "dan";
        daftarKata[6] = "Pemrograman";

        //Array bernama daftarKata2
        //dengan isi konten “Senangnya” “Belajar” “Struktur” “Data”.
        //Deklarasi-inisialisasi digabung
        String[] daftarKata2 = {"Senangnya","Belajar","Struktur","Data"};

        //Array pertama ditampilkan dengan mengakses indeks satu per satu
        System.out.println("Isi Array Pertama: ");
        System.out.println("Elemen 1 - Indeks 0: "+daftarKata[0]);
        System.out.println("Elemen 2 - Indeks 1: "+daftarKata[1]);
        System.out.println("Elemen 3 - Indeks 2: "+daftarKata[2]);
        System.out.println("Elemen 4 - Indeks 3: "+daftarKata[3]);
        System.out.println("Elemen 5 - Indeks 4: "+daftarKata[4]);
        System.out.println("Elemen 6 - Indeks 5: "+daftarKata[5]);
        System.out.println("Elemen 7 - Indeks 6: "+daftarKata[6]);

        //Array kedua ditampilkan dengan menggunakan perulangan
        System.out.println("\nIsi Array Kedua");
        for (int i = 0; i < daftarKata2.length; i++) {
            System.out.println("Elemen "+(i+1)+" - Indeks "+i+": "+daftarKata2[i]);
        }

        //pengubahan konten array pertama
        daftarKata[3] = "Data"; daftarKata[4] = "Structure";
        daftarKata[5] = "And"; daftarKata[6] = "Programming";

        //tampilkan array pertama
        System.out.println("\nIsi array pertama setelah perubahan");
        for (int i = 0; i <span 				data-mce-type="bookmark" 				id="mce_SELREST_start" 				data-mce-style="overflow:hidden;line-height:0" 				style="overflow:hidden;line-height:0" 			></span>< daftarKata.length; i++) {
            System.out.println("Elemen "+(i+1)+" - Indeks "+i+": "+daftarKata[i]);
        }
    }
}

Dan… yah, gitu aja c tentang array. Next, tentang array list yak.

Beruntung

Pernah kepikiran ga, buat ngitung seberapa besar keberuntungan kamu? Gw.. sering banget kepikiran hal2 ga meaning kayak gitu. Soalnya, pas kecil, gw suka baca Donal Bebek.. dan salah satu tokoh yang gw favoritkan itu, Si Untung yang selalu beruntung. Belum lagi, filem2 mulai holiwut sampai drama Asia jaman gw, ada scene2 tentang judi plus kasino. Bahkan, pas gw sekolah, kita bicara tentang nilai peluang cobaa.. peluang itu kan terkait ama kesempatan, dan kesempatan yang datang itu.. tentang keberuntungan. Jadi gw kepengaruh gitu kalau udah bicara keberuntungan. Gw jadi pengen yang beruntung jugak. Parahnya, kalo gw ga ngerasa bisa gitu.. gw jadi iri. Beruntung banget anak sekarang yang tontonannya super Hero. Jadi kalian ga ada rasa iri2an gitu. Atau kalian malah ngiri kenapa ga bisa jadi mutan kayak X-Men?

Lanjut cerita, pas kecil gw kan udah lihat tuh fakta2 keberuntungan di sekitar gw.. trus waktu agak gede, gw juga melihat keberuntungan di sekitar gw. Almarhumah Nyokap contohnya.. kalau ada undian dari supermarket atau bank atau hal2 kecil, beliau suka Nerima hadiah2 gitu. Ga gede c nilainya.. tapi beruntung, tetap aja beruntung. Pas gede, gw ngelihat Nyokap emang penuh keberuntungan c yah. Soalnya, pas lagi butuh sesuatu.. biasanya langsung Nemu jalan keluar ga berapa lama abis itu. Memang semuanya harus diusahain, tapi hasilnya maksimal banget. Dan bokap gw.. uhmm.. keberuntungan beliau ada hubungannya ama motor yang gw warisi (walo udah gw balikin), tapi yaa udah itu aja. Gw ga tau banyak c, soalnya gw tinggal ama nyokap dari kecil.

Tapi bukan bokap ama Nyokap gw fokusnya sekarang. Fokus gw adalah.. tentang keberuntungan. Dari filosofi trend kekinian yang dianut generasi muda jaman now, keberuntungan adalah hasil dari kerja keras. Karena “usaha keras itu tak akan mengkhianati” (ring a bell, anyone?–must be lhah ya. Itu kan lirik lagu JKT48).

Walaupun filosofi trend kekinian itu begitu masuk akal, tapi faktanya.. gw ngeliat kalo ini ga sepenuhnya benar. Soalnya, orang2 di sekitar gw benar2 penuh keberuntungan. Mereka yang beruntung itu, biasanya saling “menemukan” dan menularkan keberuntungannya pada.. well, ga pada siapapun. Yaaa.. mereka lahir dengan keberuntungan.. dan faktanya berhenti sampai di sana. Kalau aja mereka punya anak, mungkin keberuntungan itu bakal diwariskan ke anak2nya.

Terkait kelahiran dan keberuntungan itu, gw yang sempat ngalamin jamannya Avatar Aang, kayaknya c pernah dengar hal sejenis dari kata2 Zuko, si pangeran negara api. Gw lupa kata2nya gimana, tapi intinya gini.. adiknya Zuko dilahirkan dengan keberuntungan, sedangkan Zuko beruntung karena dilahirkan. Memang kata2nya ga berhenti sampai di sana. Zuko kalau ga salah juga bilang, dia ga perlu keberuntungan, dan itu yang membuat dia bisa bertahan hidup. Put it simply, Zuko adalah pekerja keras yang terbiasa untuk selalu berusaha sebaik mungkin.

Terlepas dari opini2 populer gitu.. gw tetap ngerasa kalo yang beruntung itu termasuk golongan yang.. memang beruntung (hyaayaalah yaa). Dan gw diliputi rasa iri ama mereka.

Banyak banget gw ngirinya. Contohnya, pas ada yang Nerima dorprize abis jalan santai, gw iri.. pas liat ada yang dapat diskon Ampe 50% karena “ngambil” 1 hal random dengan benar, gw iri.. pas liat ada yang pinter, gw iri.. liat yang Sholeh trus rajin ke mesjid, gw ngiri (bukannya ikutan ibadah–gw malah ngiri sendiri), liat yang ganteng, gw iri..(seriously, guyz.. dilahirkan dengan nilai plus dari segi look, artinya keberuntungan yang tidak terhingga di society jaman old dan now) tapi pas lihat yang cantik, Alhamdulillah gw ga ngiri (Heu.. wajar lah ya).

Melihat dari fenomena itu.. Gw ngerasa kalo gw tuh ga mampu. Gw ga bisa ada di posisi mereka. Karena, buat gw, mereka gitu karena mereka beruntung. Cuma dengan sedikit usaha, hasilnya maksimal. At least itu penilaian gw. Sedangkan gw.. gw musti kerja keras banget dulu buat mencapai hasil maksimal, dan maksimalnya ini yaaa.. maksimal gw.

Buat beberapa orang, kerja keras merupakan cara tergampang buat nyiptain keberuntungan. Beberapa lainnya, bahkan menambah dengan doa. Banyak omongan2 bijak tentang hal ini. Tapi gw c tetap yakin.. orang2 yang sukses itu, mereka bukan kerja keras untuk menciptakan keberuntungan.. tapi keberuntungan lah yang membuat mereka harus bekerja keras maksimal.. dan mendapat hasil yang maksimal pula. Well, yang gw barusan tulis itu.. didefinisikan sebagai “kesempatan” kalo Lo ga tau. Mereka beruntung, maka kesempatan datang. Terus mereka mengusahakan kesempatan itu, yang akan mendatangkan kesempatan lainnya. Beruntung banget ga c orang2 kayak gini??!

Well.. gw iri.

Uhmm.. jadi.. simpulannya apa dari tulisan ini?! Well, ga ada simpulan c. Kita bahkan belum sampai ke tahap rumusan masalah.

Sebenarnya, tulisan ini gw tulis karena abis denger “sepupu gw”–well, dia ponakan c jatoh2nya, soalnya yang kita bicarain ini anak mantan majikan gw.. Tapi gw masih lum rela dianggap paman–yang baru pulang main dari tim*zone trus pas main pencet2 jam keluar “angka cantik” yang bikin mesinnya keluarin tiket banyak banget, trus jadi dapet hadiah bando gitu. Dan gw harus rela ngebandingin ama ponakan gw yang main mesin boneka, baru bisa dapetin bonekanya di usahanya yang ketiga. Yahh gitu deh. Intinya gw iri ama orang2 yang beruntung itu. Gitu aja..

Ga ada simpulan kali ini. Sorry.. gw terlalu sibuk berkutat ama rasa iri dan ga mampu..

Pengenalan Struktur Data

Kira2… apa yang kamu pikirin kalau ada yang bilang “struktur data”? Biasanya, jawabannya adalah “ga tau” buat yang belum pernah belajar “formal” di bidang informatika dan sejenisnya (mulai teknik informatika, system informasi, manajemen informatika, ilmu komputer, system komputer dll). Soalnya kalau belajar formal, kemungkinan jawabannya adalah “lupa” atau kita diem aja (walaupun jawaban ini ga berlaku kalau kamu emang tipe straight A student yang berani ngomong). Jawaban itu biasanya kita kasih karena pembelajaran “formal” di bidang informatika, biasanya Algoritma & Struktur Data merupakan satu mata kuliah wajib ama mahasiswa tahun 1 atau 2. Intinya, ini hal baru buat kita. Dan seperti kebanyakan hal baru, struktur data itu menantang sekaligus menjemukan. Menantang untuk dipahami karena hal baru. Itu pasti! Tapi juga menjemukan… karena faktanya (sesuai opini yang berkembang kebanyakan jaman sekarang), kamu memang ga musti tahu hal ini kalo mau ngebangun satu aplikasi “standar”. Contoh, kamu mau bikin blog pribadi, ga usah lhah ngerti struktur data. Cukup pakai engine wordpress selesai. Mau bikin aplikasi web yang standar buat reservasi, ada form input (yang kayak kasus di mata kuliah pemrograman web), kamu juga ga butuh pengetahuan tentang struktur data. Karena itu struktur data biasanya jadi ngebingungin mahasiswa dan bikin bosen (yah… ada banyak faktor emang, tapi hal itu yang biasanya jadi alasan).

Oke… cukup pengantarnya, kita lanjut ke penjelasan sebenarnya dari struktur data. Sebenarnya apa itu struktur data? Well… jawabannya udah tercantum di kata2 itu sendiri. Strukur data terdiri dari 2 kata: struktur dan data. Jelas kan?! Intinya bagaimana struktur dari penyimpanan data. Bedakan sama tipe data, kalau tipe data, kamu nentuin jenis data yang disimpan (apa tipe numerik/karakter/kata). Sedangkan stuktur data menjelaskan bagaimana cara data yang disimpan itu disusun (terurut terhadap indeks/konten/aturan tertentu). Kalau kamu mau ngehubung2in di antara keduanya, sebenarnya ada beberapa tutorial yang ngebagi susunan hubungan dalam diagram berikut:

Tapi ingat aja, struktur data yang kita maksud di sini ga bisa disamakan ama gambar di atas, karena konteks pembelajarannya sesuai dengan definisi yang berlaku di sebagian besar kurikulum perguruan tinggi di Indonesia. Struktur data, lebih mengacu ke bentuk definisi cara pengelolaan data. Kenapa bisa beda2?! Ga lain ga bukan karena ini semuanya terkait teori. Teori ini merupakan ciptaan dari intelek di jamannya. Dan yang namanya pemikiran tiap orang untuk menjelaskan sesuatu kan beda2 walau sebenarnya mengacu ke hal yang sama.

Secara teoritis dan definitive, dosen di kelas bakal bilang kalau sebuah program/aplikasi terdiri dari 2 hal: algoritma & data. Hal ini masuk akal banget. Karena algoritma itu memperlihatkan proses pengolahan dan keterurutan prosesnya. Sedangkan data yang diolah ada di struktur data. Salah satu alasan untuk belajar struktur data yaitu tentang suatu efisiensi proses penyimpanan data. Pas belajar desain analisis algoritma, bakal kelihatan kalo struktur data yang dipakai berpengaruh ama kecepatan eksekusi program. Plus, ada beberapa algoritma yang menggunakan struktur data tertentu. Contohnya, untuk membuat timetable/schedule mata kuliah, digunakan graph coloring… dan sesuai namanya, kita butuh membuat bentuk graf untuk menyimpan “data” yang diolah. Atau contoh lain, pas mau melakukan backtrack (menelusuri jalur dari tujuan ke titik awal), butuh algoritma dengan tipe data stack. Dan berbagai contoh lain untuk algoritma games.

Sebenarnya, struktur data udah digunain di kelas-kelas pemrograman secara ga sadar. Kenapa gw bilang gitu?! Karena di kelas pemrograman kebanyakan, pasti ngebahas yang namanya array! Dan array adalah salah satu bentuk struktur data. Nama jenis khususnya di beberapa referensi yaitu “concrete data structure”. Dan kalau ada yang namanya “concrete”, pasti ada lawannya juga… yaitu “abstract”! Jadi, ada istilah baru lagi, yaitu Abstract Data Type. Yap… karena dia ga punya struktur (bentuk konkret), makanya data structure diganti jadi data type…. Ya memang dia cuma punya “tipe” aja. Tipe… semacam bentuk gitu. Dan bentuknya berupa model matematis.

Okeh… sekarang, kita bicarain ADT sebagai pengantar struktur data itu…

Struktur data mempunyai kaitan erat dengan ADT (Abstract Data Type). ADT sesuai namanya, merupakan bentuk abstrak dari cara penyimpanan data. ADT memiliki prosedur abstrak bagaimana data nantinya disimpan. Sedangkan struktur data merupakan bentuk konkrit (hasil implementasi) dari ADT. Karena, kenyataannya, untuk mengimplementasikan ADT, hal yang perlu dilakukan ada cukup banyak juga. Contohnya nih, untuk ADT List, kita perlu menentukan ada yang namanya head, node, pointer, dan beberapa hal lain yang kita temukan di single linked list.

Dan begitulah pengantar dari struktur data itu.

Berhubung kid jaman now (katanya) males baca yang panjang2, resumenya gini dalam sesi Q/A:

Q: Apa itu struktur data?

A: Pelengkap algoritma dalam membentuk program/aplikasi, berupa data dan cara mengoperasikannya.

Q: Apa itu Abstract Data Type (ADT)?

A: Model matematis dari tipe data, yang mempunyai behavior dilihat dari sudut pandang pengguna data.

Q: Apa perbedaan ADT dan data structure (struktur data)?

A: Perbedaan dilihat dari sudut pandang “pengguna data” dan “pembuat/implementator data”. Struktur data merupakan bentuk konkrit dari ADT. Pengguna data melihat sebuah data (ADT) dioperasikan dengan fungsi2 tertentu untuk menyimpannya. Sedangkan implementator data (data structure) memikirkan bagaimana agar operasi tersebut mencapai outputnya, memperhitungkan hal yang harus ada dan kondisi lainnya.

Q: Kenapa anak informatika dan temen2nya harus belajar struktur data?

A: Struktur data akan mempelajari sebuah karakteristik penyimpanan dari data dengan sifat-sifat, keunggulan, dan kekurangannya. Hal ini membantu efisiensi penggunaan algoritma pada kasus tertentu.

Dan begitulah tulisan ini diakhiri. Next, kita bahas concrete data structure: yaitu array plus temennya, array list.

New Year Project

Yeaaaayyy.. tahun baruuuuuuuu.. well, udah lewat emang. Yah sudahlah, terompetnya juga udah ke mana juga gitu yah.. atau kamu malah install aplikasi buat keluarin suara terompet karena beli terompet kesandung isu difteri?

Apapun itu.. gw mau cerita tentang beberapa project tulisan gw di tahun ini. Emang kesannya gaya beut yak. Padahal nulis blog kisah sehari2 aja sekali 2 bulan plus mood2an. Yah, namanya juga kisah hidup. Gw pilih2 juga keuleus mana yang mau diumbar atau ga. Lagian, beberapa tahun terakhir, gw sibuk bolak-balik rumah sakit. Entah masuk IGD atau sekedar checkup rutin. Puji syukur buat Yang Kuasa.. Alhamdulillah gw udah dinyatain sembuh ama dokter (hasil tes darah sama ekg c belum normal tulisannya di hasil lab, tapi kalo udah di-judge normal yaaa selesai kan). Gejala yang gw rasain dari beberapa tahun yang lalu juga Alhamdulillah ga muncul lagi. Jadi yah gitu deh.

Sejak dinyatakan sembuh beberapa bulan lalu, sampai sekarang, sebenarnya gw udah menyandang status full time writer. Gw udah ga ada kerjaan. Yap! Gw ga jadi “staff” lagi yang ngurusin perekrutan, ngatur ini itu, kerjain itu ini, dll. Hidup gw tergantung si Aa’ yang kasih gw kerjaan ajah. Hehehehe.

Berawal dari sana.. gw mengukuhkan diri jadi full-time writer. Penulis penuh waktu! Aa’ sebagai pihak pemberi kerja gw, cari nafkah di bidang akademik. Berhubung yang kita bicarain ini agak2 malesan orangnya, kegiatan persiapan materi, tulis2 jurnal (bahkan baca jurnal), diserahkan ke gw. Jadi.. untuk sekarang (dan entah sampai kapan), gw bakal nulisin artikel berhubungan sama hal2 akademik itu. Tenang.. insya Allah ga bentrok ama copyright dan sejenisnya. Karena nanti gw bikin 2 versi. Versi light & formal. Versi formal buat si Aa’. Versi light buat kita nikmati bersama di blog ini.

Dan sekarang, gw bakal tulisin beberapa pesanan yang seharusnya nanti gw tulis di mari juga. Jadi daftarnya adalah.. jreng jreng jreng.

  1. Terkait struktur data.
  2. Cara membuat web pakai framework Codeigniter.
  3. Nulis jurnal pakai latex 2 versi: tanpa template, sama pakai template IEEE.
  4. Bahasa pemrograman Java dasar.
  5. Membangun aplikasi database Oracle pakai Java.

Dan beberapa project gw tentang apa yang gw alami beberapa tahun lalu.. yaitu:

  1. WPW syndrome
  2. GBS syndrome
  3. Hepatitis virus A

Di sela2 nulis hal di atas, gw mungkin juga publish tentang review buku (as always), sama traveling gw (gw diajakin ikut project sama temen mantan majikan gw which is jadiiii pembicara di berbagai kota).

Begitulah.. moga2 lancar yak nulisinnya. Gw bakal usahain update 2x seminggu (Kamis plus Sabtu) untuk tiap topik, dan master post-nya bakal gw masukin ke tiap page. Doain yah guyzzzz..