Jumat, 18 Desember 2020

Generate Java Classes from XSD File

Hello, guys. This is my first time using English in my tutorial. Hope you guys do not miss any important stuff here hahahaha. Let's do it!

In this chance I'm gonna show you how to generate Java classes from XSD file with very detail steps. As we know, XSD is XML Schema Definition which is used to describes the structure of an XML document. For example, I have very simple XSD file that represents of the data of Employee as shown below.

 

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11 
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" >
  <xs:element name="Employee">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Name" type="xs:string"/>
        <xs:element name="Phone" type="xs:string"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

 

So, as I know, there are two ways to generate Java classes from XSD which are JAXB and Castor. JAXB is the Java Architecture XML Binding which is the part of Java itself. When you install JDK you have it all. While Castor is an open source data binding framework. That's it. Maybe if you know the other methods for XML Binding, you can put your comment below. Okay, don't take it too long. Let's start it! 

JAXB 

  • Prepare your XML Schema (XSD file). You can use my example as yours
  • Open the Command Prompt and point to the directory of your XSD file. In this demonstration, I put my XSD file at C:/Documents
  • Use the command below and press Enter. Notes: please command "xjc" to see all the xjc parameter options. -p option is to define the package of your java project.
    C:\Documents>xjc -p test.java.generation Employee.xs
  • Then the Java class of Employee is generated including ObjectFactory.java. ObjectFactory contains factory methods for each Java content interface and Java element interface generated in the com.test.xml package. An ObjectFactory allows you to programatically construct new instances of the Java representation for XML content
 
  • Now your Java classes are ready to use for your next development. Please refer to your defined package above to see the result of the generated java classes.
  • Simply copy and paste those classes to your Java project

 Castor

There's not much difference steps between JAXB and Castor. Just follow the steps above and change the command line below

C:\Documents>java -cp castor-0.9.5.3p3-xml.jar;xercesImpl-2.9.1.jar; org.exolab.castor.builder.SourceGenerator -i ../files/Employee.xsd -package com.xmlinclude.castor
Make sure that the castor-0.9.5.3p3-xml.jar and xercesImpl-2.9.1.jar are in the location where you execute that command line.

There's no results print out in our console. If your execution return no errors, it means your java classes generated successfully and your java classes are ready to use.

 Notes:

-i: option to define your file path

-package: option to define your class package


Hope this article helps you :)

In the next article I will give you a tutorial how to generate Java classes if your XSD file has include tag (xi:include)

Jumat, 26 April 2019

Who's Knocking My Door?

Sumber Gambar:
http://citizensjournal.us/oxnard-door-to-door-scam-advisory2/knocking-on-door/
Hello...
Aku mau cerita kejadian "aneh" yang aku alami sama teman sekamarku, Rike. Kejadian ini sebenernya aku alami di bulan Ramadlan tahun lalu pas habis sahur.

Ceritanya gini...
Jadi waktu itu kan aku sahur sama Devi di kamarku. Devi ini kamarnya sebelahan sama kamarku. Si Rike, karena dia lagi halangan, dia ga ikut sahur. Tapi dia ikutan bangun dan ikut ngobrol sama aku sama Devi. Setelah sahur selesai, seperti biasa, aku ga tidur lagi. Mumpung kamar mandi lagi sepi, akhirnya aku mandi aja waktu itu. Biar ngga ikutan ngantri pas paginya dan tinggal berangkat ke kantor. Waktu aku mandi, Devi masih di kamarku lagi ngobrol sama Rike. Pas aku selesai mandi dan balik ke kamar, Devi langsung balik ke kamarnya, terus aku lanjut sholat Tahajud.

Sehabis sholat ternyata masih ada waktu lagi sebelum adzan subuh. Akhirnya aku lanjut baca Al-Qur'an sambil nunggu adzan subuh. Pas menit terakhir mau adzan subuh, tiba-tiba kayak ada "seseorang" yang ngetuk pintu kamarku 3x, "tok tok tok". Aku jeda dulu baca Al-Qur'an-nya. Terus si Rike yang ternyata sudah tidur lagi, tiba-tiba kebangun gara-gara dia juga denger ada yang ngetuk pintu kamar kami.

"Fit, kamu denger ngga ada yang ngetuk pintu kamar kita?"
"Iya, Ke. Aku juga denger"

Habis itu aku ngintip keluar. Menariknya, di luar kamarku ngga ada siapa-siapa 😂 Padahal itu baru berjarak sekian detik dari munculnya suara orang ngetuk pintu tadi. At least kan harusnya dia masih ada di sekitaran kamarku, kan?. Tapi itu literally ngga ada orang sama sekali. Bener-bener sunyi sepi dong 😂 (Red: Jaksel Accent)

"Ke, ngga ada orang nih di luar"
"Eh yang bener aja, Fit"
"Serius, sumpah. Di luar ngga ada orang sama sekali. Apa tadi itu Devi, ya?"
"Ngapain juga si Devi ngetuk pintu kamar kita? Dia kan barusan balik dari sini?"
"April lagi di kosan, ngga?"
"April lagi ngga di kos, Fit"

"Lho caaakkk (Red: Surabaya Accent). Terus yang tadi itu siapa, dong? (Mulai takut). Soalnya yang biasanya ngetuk pintu kamar kita kan cuma Devi sama April. Aku coba panggil Devi deh. Dev...Dev...Dev..."
(Tidak ada jawaban setelah dipanggil 3x)
"Eh, Ke. Si Devi ngga jawab loh"
"Duh terus siapa ya, Fit? Tau ah! Aku mau bobo lagi"
(Si Rike balik tidur lagi)

Waktu itu karena adzan subuh sudah berkumandang dan Rike balik tidur lagi, akhirnya aku matiin lampu kamar. Pas lagi sholat qabliyah subuh bener-bener ngga khusyu', merasa kayak ada yang mengintai dari belakang gitu 😂 Aku coba tenangin pikiran bentar, habis itu lanjut sholat subuh. Setelah sholat subuh, aku balik ke kasurku. Sebelum tidur, aku tanya anak-anak kost dulu lewat chat grup di LINE, siapa yang habis ngetuk pintu kamarku barusan. Karena penghuni kamar 1 sama kamar 6 ngga ada (mungkin pulang kampung), jadi harusnya aku dapet tanggapan 6 orang dari penghuni kamar 2, 4, sama 5. Habis itu aku tidur lagi.

Pas bangun tidur, aku cek LINE dong. Ada tanggapan dari 3 orang (Desi, Ainun, sama Ani) dan mereka semua bilang kalau mereka bukan tersangka dari peristiwa ini. Habis itu aku main ke kamar 4, kamarnya Devi, orang yang pertama kali aku tuduh sebagai tersangka. Aku tanya langsung ke dia. Bahkan dia sampe berani sumpah kalau bukan dia yang ngetuk pintu kamarku tadi subuh 😂 *makin syerem doonggg* 😖 Dia cerita, waktu tadi subuh aku manggil-manggil dia, sebenernya dia denger, cuma diem aja. Dia mikirnya, "ngapain Fitri manggil-manggil aku subuh-subuh gini". Habis itu aku tanya Vita, temen sekamarnya Devi. Dia juga bilang kalau dia bukan pelakunya. Soalnya dia juga lagi halangan, jadi ngga ikutan sahur apalagi bangun subuh-subuh. Nah 1 orang lagi, temen sekamarnya Desi dari kamar 5, kayaknya juga ngga mungkin. Soalnya waktu selang beberapa detik dari peristiwa "ketuk pintu", aku sempet keluar kamar dan meriksain satu-persatu kamar anak-anak. Kira-kira siapa yang baru masuk kamar waktu itu. Pas aku intip ke kamar 5, temen sekamarnya Desi juga masih bobo cantik dong 😂
Jadi...
Terus...
Siapa dong yg ngetuk pintu kamarku?
Tikus?
Or something else that is invisible?
Ini masih menjadi sebuah misteri sampe detik ini, Ferguso 😅
Rabu, 24 April 2019

[Discount Hunter] Makan Banyak, Bayar Dikit?

Hi, Guys.
Kali ini aku mau berbagi pengalamanku berburu diskon kuliner biar bisa makan banyak, tapi banyarnya dikit. 
"Hah, emang ada ya?"
"Gimana caranya?"
"Mau dong! Aku anak kost yang lagi butuh donasi banyak makanan di akhir bulang nih!"

Jawabannya, "Ya jelas ada lah!"
Kalau ngga ada, aku ga mungkin cerita ke kalian semua. Hihihi :D

Caranya itu gampang banget. Kalian harus sering-sering memanfaatkan teknologi yang ada untuk berburu diskon kuliner. Kalian pasti punya akun Instagram, kan?. Nah, cara memanfaatkannya adalah kalian harus follow akun-akun yang berisi informasi tentang diskon-diskon/promo-promo. Itu wajib banget karena di situ kalian bakal nemuin banyak informasi tentang berbagai promo dari berbagai restoran/tempat makan. 

Selain Instagram, kalian pastinya juga punya aplikasi Ojol (Ojek Online), kan?. Buat kalian yang rata-rata tinggal di kota-kota besar pasti punya aplikasi Go-Jek atau Grab. Kedua aplikasi ini punya fitur delivery makanan, DAAAANNNNN..... Mereka sama-sama sering ngasih promo, guys. Sering banget nget nget nget!!! Biasanya mereka ngasih informasinya lewat akun sosial media mereka atau ngirim notifikasi di masing-masing aplikasi mereka. Baru-baru ini Grab ngasih promo Grab Food gila-gilaan pake kode voucher "AUTOGAMPANG" sama "DITRAKTIROVO". Jadi itu promo yang dikasih Grab dan bekerja sama dengan OVO dengan diskon sebesar 60% - 80%, gila ngga, tuh?

Si competitor Go-Jek juga ngga mau kalah nih. Bulan ini dia ngasih promo diskon Go Food mulai 25% - 50% + free delivery. Makin mantab, kaaannnn 💖💖💖 Bener-bener cocok buat karyawan yang tinggal jauh dari rumah (anak kost) dan waktunya pas di akhir bulan 😭 Jadi, buat makan siang tadi aku coba tuh buka aplikasi Go-Jek dan cari-cari promo menarik. Akhirnya nemu deh promo paket Combo Kriuk dari Texas Chicken hanya dengan harga Rp 24.500 yang kebetulan letaknya hanya 500 meter dari kantor 😍



Ya meskipun ngga jauh dari kantor dan bisa digapai dengan jalan kali, tapi kenapa harus pake cara yang ribet kalau ada cara yang lebih praktis dan murah? 😂 Dari harga awal Rp 35.000 jadi Rp 24.500 setelah diskon. Eits, ngga usah khawatir ya, itu sudah include PPn loh. Oke ngga, tuh? 😭

Awalnya aku ragu. Jangan-jangan itu permainan harga doang. Ya biasanya kan harga aslinya emang Rp 24.500 tapi di aplikasi dimodifikasi jadi Rp 35.000. Siapa tau, kan? Soalnya banyak kok yang model marketingnya kayak gitu biar minat pembelinya banyak. Tapi seletah aku searching, harga aslinya itu emang sekitaran Rp 30.000-an, jadi promonya itu ngga bo'ongan 🤩 Langsung deh aku pesen 1 paket Combo Kriuk Texas Chicken dan request ayam bagian dada. Oiya, sepaket ini tu isinya 1 Nasi + 1 Ayam + 1 Porsi Chicken Skin + 1 Small Drink, dapet banyak, kaaannn 😭 Setelah beberapa menit kemudian, akhirnya pesenanku dateng. Dan jeng jeeeenggggggg......
Ini dia penampakannya.....


Beneran dapet banyak. Uwuuuuuu

Ayamnya beneran di kasih dada :')

ini chicken skin-nya

Oke, sekian dulu ya ceritanya. Selamat berburu promo diskon 🎉🎉🎉 

Ps:
Ini aku bukan promosi ya, guys. Aku ngga dibayar ataupun diendorse sama vendor-vendor yang aku sebutin di atas. Cerita ini murni dari aku yang cuma ingin membantu anak kost nusantara 😂
Rabu, 25 Oktober 2017

Tutorial Sederhana Menambahkan Logger pada Java

Objek logger digunakan untuk men-log (menulis) pesan dari proses yang saat ini sedang dieksekusi oleh program menjadi sebuah log file. Logger sangat berguna untuk memberikan informasi tentang proses yang berlangsung pada program, sehingga kita dapat mengetahui bagian mana (ditampilkan dalam urutan line ke-n) yang berhasil di eksekusi dan yang gagal dieksekusi. Dengan begitu, kita akan lebih mudah memperbaiki kode program jika terjadi  error pada program kita. Logger memiliki 8 level hirarki antara lain:
ALL
TRACE
DEBUG
INFO
WARN
ERROR
FATAL
OFF

Java sendiri sudah memiliki paket Logger, tetapi yang paling umum digunakan yaitu Logger dari apache. Kalian bisa download Logger apache . jar (versi 1.2.17) di sini. Kemudian kalian bisa extract dan simpan di directory yang kalian inginkan.

Untuk implementasi ke program, silakan simak langkah-langkah di bawah ini:

1. Membuat Project Baru
*Di sini saya menggunakan Eclipse untuk demo contohnya.
Seperti biasa, untuk membuat project baru di eclipse pastikan kalian sudah menginstall eclipse dan membukanya. Kemudia arahkan kursor ke menu File -> New -> Java Project. Atau menggunakan keyboard shortcut ALT+SHIFT+N.

Kemudian isi pada bagian kolom Project Name sesuai keinginan kalian. Lalu klik tombol "Finish".

2. Membuat Class Baru
Setelah project LoggerDemo berhasil dibuat, langkah selanjutnya yaitu membuat Class baru. Klik kanan pada src > New >  Class.

Kemudian akan muncul dialog baru seperti di bawah ini. Isi Nama class yang akan dibuat dan centang "public static void main(String[] args)" pada bagian "Which method stubs would you like to create?". Setelah itu klik tombol "Finish".

3. Konfigurasi Build Path
Masukkan log4j.jar ke dalam library project kalian dengan cara klik kanan pada bagian JRE System Library -> Build Path -> Configure Build Path. Maka akan muncul dialog baru seperti di bawah ini.

Klik tombol "Add Externl JARs...". Cari lokasi log4j.jar yang sudah kalian extract. Kemudian klik tombol "Open". Lalu klik tombol "OK".

4. Membuat log4j.properties
File properties ini diperlukan untuk mendefinisikan setup Logger yang akan digunakan sehingga output bisa sesuai dengan keinginan.
Klik kanan pada project (ingat, project. bukan src :D). Pilih New -> Folder. Lalu akan muncul dialog seperti di bawah ini. 

Isi kolom Folder Name dengan "properties" (misal). Kemudian klik tombol "OK". Folder ini digunakan untuk menyimpan file properties sehingga terlihat lebih rapi dan tidak jadi 1 dengan package Class file. Setelah berhasil membuat folder properties, langkah selanjutnya yaitu klik kanan pada folder tersebut, pilih New -> Other -> File.


Pada bagian File Name isi dengan "log4j.properties". Kemudian klik tombol "Finish".



File log4j.properties secara otomatis akan terbuka di halaman kerja Eclipse. Setelah itu masukkan kode seperti di bawah ini.

log4j.rootCategory = ALL,GUIDE
log4j.appender.GUIDE=org.apache.log4j.ConsoleAppender
log4j.appender.GUIDE.layout=org.apache.log4j.PatternLayout
log4j.appender.GUIDE.layout.ConversionPattern=%d [%t] %-5p %c{1} %m%n

kode tersebut dipakai jika kalian ingin menampilkan Logger di dalam console, fungsinya mirip dengan System.out.println();. Namun, jika kalian ingin menampilkannya dalam bentuk file.log, kalian gunakan kode di bawah ini.

log4j.rootCategory = ALL,GUIDE
log4j.appender.GUIDE=org.apache.log4j.RollingFileAppender
log4j.appender.GUIDE.File=./log/demologger.log
log4j.appender.GUIDE.MaxFileSize=1MB
log4j.appender.GUIDE.MaxBackupIndex=5
log4j.appender.GUIDE.layout=org.apache.log4j.PatternLayout
log4j.appender.GUIDE.layout.ConversionPattern=%d [%t] %-5p %c{1} %m%n

Pada bagian ini log4j.appender.GUIDE.File=./log/demologger.log merupakan definisi direktori untuk menyimpan file.log serta nama file .log yang akan digunakan untuk menuliskan sederetan logger. Sehingga kalian harus membuat folder yang bernama "log" terlebih dahulu di project kalian dengan langkah-langkah yang sama seperti membuat folder "properties". Kemudian tambahkan juga file baru yang bernama "demologger.log" dengan cara yang sama seperti membuat file "log4j.properties". Jika kalian menambahkan dua properties di atas (pertama dan kedua) maka properties yang org.apache.log4j.ConsoleAppender (pertama) diabaikan oleh program dan mengeksekusi properties yang org.apache.log4j.RollingFileAppender (kedua). Sehingga file "demologger.log" akan menyetak Logger yang kalian definisikan pada program. Agar kalian tidak bingung, sebagai demo, saya gunakan properties yang pertama pada file "log4j.properties". Sehingga Logger akan ditulis di console.

5. Menulis Kode untuk Logger
Sebagai contoh, tuliskan kode program pada file LoggerTest.java seperti di bawah ini:
import org.apache.log4j.Logger;

public class LoggerTest {

 private static final Logger logger = Logger.getLogger(LoggerTest.class);

 public static void main(String[] args) {
  logger.info("**********Program Start**********");
  try {
   String word = "Hello World!";
   logger.debug("Value of word: " + word);
   // cast the variable Sting word into int number
   int number = Integer.parseInt(word);
  } catch (Exception e) {
   logger.error(e.getMessage(), e);
   logger.error(""); //$NON-NLS-1$
  }
  logger.info("**********Program Finish**********");
 }
}

6. Run Configuration
Sebelum program dieksekusi (di-run), kalian harus mengonfigurasi run terlebih dahulu seperti pada gambar di bawah ini:

Masukkan kode ini "-Dlog4j.configuration=file:\" pada Tab Arguments - Kolom VM Arguments seperti pada gambar di bawah ini:

Isi VM Arguments: -Dlog4j.configuration=file:.\properties\log4j.properties.

7. Run Program
Setelah semua konfigurasi selesai, klin tombol Run. Maka Logger akan muncul pada console dan menghasilkan Log seperti di bawah ini:

Dari Log tersebut kita ketahui bahwa terjadi error saat mengonversi variabel String ke variabel Integer (java.lang.NumberFormatException: For input string: "Hello world!"). Pada baris ke-8 dari Log juga ditunjukkan bahwa error terjadi di class LoggerTest.java baris ke-13.

Jika kalian ingin mempraktikkan properties Logger yang ke dua, kalian buka file log4j.properties lagi. Hapus properties yang lama, kemudian ganti dengan properties yang ke dua. Setelah itu run ulang programnya. Maka file demologger.log yang ada di folder log akan berisi hasil Log.
Jumat, 11 Agustus 2017

Metode Pengembangan Perangkat Lunak (Software Development)

Dalam dunia pengembangan perangkat lunak atau istilah asingnya Software Development, tidak lepas dari tahapan-tahapan yang harus dilalui agar software yang dikembangkan dapat diselesaikan sesuai harapan. Ada banyak metode software development yang saya temukan di berbagai sumber di internet. Namun yang paling sering diimplementasikan di perusahaan-perusahan besar yaitu metode Waterfall, Agile, Scrum, dan RAD. Masing-masing perusahaan perangkat lunak memiliki alasan dan pertimbangan mengapa mereka memilih metode software development yang saat ini mereka gunakan.

Ada 12 metode Softwate Development yang saya rangkum dari beberapa sumber di internet, antara lain:
1. Waterfall Model
2. Agile Methodology
3. Scrum Development Methodology
4. RAD (Rapid Application Development)
5. Prototype Methodology
6. Dynamic Systems Development Model (DSDM)
7. Spiral Model
8. Extreme programming
9. Feature Driven Development
10. Joint Application Development
11. Lean Development
12. Rational Unified Process

Selain 12 metode di atas, masih ada metode lain yang tidak saya sebutkan. Saya hanya mengambil top 12 metode Software Development berdasarkan sumber www.tatvasoft.com. Berikut ini penjelasan dari masing-masing metode.

1. Waterfall Model
waterfall_model_software_development_methodologies

Waterfall juga sering disebut sebagi metode tradisional dan merupakan metode yang paling sering digunakan dalam pengembangan perangkat lunak. Siklus dalam metode ini sering dainggap sebagai metode pengembangan perangkat lunak klasik. Tahap pada metode waterfall digambarkan dengan urutan aliran proses dimana setiap tahap akan dimulai/dilakukan jika tahap sebelumnya sudah 100% diselesaikan. Sehingga tidak memungkinkan untuk kembali ke tahap sebelumnya untuk melakukan beberapa perubahan. 

Kelebihan:
  • Waterfall sangat sederhana, mudah dipahami dan digunakan untuk para pengembang pemula.
  • Mudah dimanage, karena setiap tahap memiliki tugas-tugas spesifik.
  • Sangat menghemat waktu karena setiap tahap diproses dan diselesaikan sekaligus.
  • Waterfall sangat efektif untuk mengembangkan perangkat lunak dalam skala kecil dengan beberapa kebutuhan perangkat lunak yang mudah dipahami.
  • Testing (pengujian) mudah dilakukan karena mengacu pada skenario pengujian yang sudah didefinisikan dalam spesifikasi fungsional sebelumnya.

Kekurangan:
  • Model ini hanya dapat digunakan ketika tersedia requirement (kebutuhan) yang sangat tepat.
  • Model ini tidak dapat diterapkan untuk pemeliharaan sistem (hanya untuk pengembangan sistem baru).
  • kelemahan utama model ini adalah sekalinya berada di tahap pengujian, tidak ada kemungkinan untuk kembali ke tahap sebelumnya untuk melakukan suatu perubahan.
  • Tidak ada kemungkinan untuk menghasilkan beberapa perangkat lunak lain sampai dengan tahap terakhir dari siklus terselesaikan.
  • Tidak ada pilihan untuk mengetahui hasil akhir dari proyek secara keseluruhan.
  •  Model ini cocok digunakan untuk proyek kecil tetapi tidak cocok untuk proyek lama dan berkelanjutan.
  • Kurang ideal untuk proyek yang requirement-nya sangat moderat dan ada ruang lingkup yang besar untuk modifikasi.

2. Agile Methodology
 agile_software_development_software_development_methodologies

Metode Agile merupakan pendekatan yang digunakan untuk merancang sebuah disiplin proses manajemen perangkat lunak yang juga memungkinkan beberapa perubahan dalam pengembangan proyek. Metode ini merupakan suatu kerangka kerja konseptual untuk melakukan berbagai proyek rekayasa perangkat lunak yang digunakan untuk meminimalkan risiko dengan mengembarangkan perangkat lunak dalam waktu yang singkat yang disebut iterasi yang umumnya berlangsung selama satu minggu sampai satu bulan.

Kelebihan :

  • Memiliki pendekatan adaptif yang dapat merespon perubahan kebutuhan-kebutuhan dari klien.
  • Komunikasi secara langsung dan umpan balik konstan dari klien yang tidak meninggalkan celah untuk beberapa dugaan dalam sistem.
Kelemahan:
  • Hanya fokus pada perangkat lunak yang dikembangan daripada dokumentasi, sehingga dapat menyebabkan kurangnya dokumentasi.
  • Proyek yang sedang dikembangkan dapat keluar dari jalur (tidak sesuai rencana) jika klien tidak menjelaskan secara rinci tentang hasil akhir dari proyek yang diinginkan.

3. SCRUM Development Methodology
scrum_development_methodology

Metode SCRUM dapat diterapkan ke berbagai macam proyek yang memiliki perubahan yang sangat cepat atau memiliki kebutuhan yang mendesak. Metode SCRUM dimulai dengan perencanaan singkat, meeting, dan diakhiri dengan review akhir. Metode ini digunakan untuk pengembangan perangkat lunak secara cepat yang didalamnya terdapat sekumpulan iterasi untuk membuat perangkat lunak yang dibutuhkan. Metode ini merupakan metode yang ideal karena mudah dibawa ke dalam jalur proyek yang memiliki progress yang lambat.

Kelebihan:
  • Semua keputusan berada di tangan tim.
  • Dapat digunakan untuk proyek yang tidak mempertimbangkan dokumentasi kebutuhan bisnis.
  • Meeting yang dilakukan setiap hari secara mudah dapat membantu pengembang untuk membuat kemungkinan untuk mengukur produktivitas individu. Hal ini dapat menyebabkan peningkatan produktivitas masing-masing anggota tim.
Kekurangan:


  • Metode ini akan memakan biaya dan waktu lebih jika tidak diperkirakan secara akurat.
  • Tidak cocok untuk proyek dalam lingkup besar, tetapi cocok untuk proyek kecil dan proyek yang bergerak cepat.
  • Setiap anggota tim harus memiliki pengalaman. Jika tim terdiri dari orang-orang pemula, proyek tidak dapat diselesaikan dalam waktu yang sudah ditentukan.

4. RAD (Rapid Application Development)
rapid_application_development_software_development_methodologies

RAD merupakan metode yang efektif untuk memberikan pengembangan yang lebih cepat dan kualitas yang dihasilkan lebih tinggi daripada metode lain. Tujuan utama dari metode ini adalah untuk mengakselerasikan seluruh proses pengembangan perangkat lunak. Tujuan dapat mudah dicapai karena metode ini memungkinkan user untuk berpartisipasi dalam pengembangan perangkat lunak.

Kelebihan:
  • Membantu mengurangi risiko dan tenaga yang dibutuhkan pada bagian pengembangan perangkat lunak.
  • Membantu klien untuk mengambil review singkat untuk proyek.
  • Mendorong umpan balik customer yang selalu memberikan ruang lingkup perbaikan untuk berbagai proyek pengembangan perangkat lunak.
Kekurangan:
  • Bergantung pada tim yang kuat dan kinerja individu untuk mengidentifikasi secara jelas kebutuhan bisnis yang tepat.
  • Hanya akan berhasil pada sistem yang dapat dimodularisasi.
  • Pendekatan ini membutuhkan pengembang dan tim desainer yang berskil tinggi yang bisa jadi tidak memungkinkan untuk setiap organisasi.
  • Tidak dapat diterapkan untuk pengembang yang menggunakan budget rendah karena biaya pemodelan dan pembuatan kode sangat tinggi.

5. Prototype Methodology
prototype_methodology_software_development_methodologies

Metode prototype merupakan metode pengembangan perangkat lunak yang memungkinkan developer untuk hanya membuat prototype dari solusi yang ditawarkan untuk mendemonstrasikan fungsi-fungsi perangkat lunak pada klien dan membuat modifikasi yang dibutuhkan sebelum dikembangkan pada aplikasi yang sesungguhnya. Fitur terbaik dari metode ini adalah dapat menyelesaikan beberapa isu yang mungkin terjadi pada model waterfall.

Kelebihan:
  • Ketika prototype ditunjukkan pada klien, mereka dapat memahami secara jelas fungsi-fungsi dari perangkat lunak.
  • Mengurangi risiko kegagalan secara signifikan, karena risiko potensial dapat diindentifikasi pada tahap awal dan tahap moderasi dapat dilakukan dengan cepat.
  • Komunikasi antara tim pengembang perangkat lunak dan klien dapat menjadikan lingkungan yang sangat baik dan kondusif selama pengembangan.
  • Membantu dalam mengumpulkan kebutuhan dan analisis kebutuhan ketika kurangnya dokumentasi tentang kebutuhan sistem.
Kekurangan:
  • Metode prototype biasanya menggunakan biaya pengembang, sehingga sebaiknya dilakukan dengan menggunakan sumber daya minimal jika biaya pengembangan organisasi terlalu tinggi.
  • Terlalu banyak keterlibatan klien biasanya tidak disukai oleh pengembang.
  • Terlalu banyak modifikasi mungkin tidak bagus untuk proyek, karena hal ini dapat mengganggu aliran kerja dari seluruh tim pengembangan perangkat lunak.

6. Dynamic Systems Development Model (DSDM)
dynamic_systems_development_model_methodology

DSDM merupakan metode pengembangan perangkaat lunak yang didasarkan metode RAD dengan pendekatan iteratif dan inkremental yang menekan keterlibatan pengguna secara terus-menerus. Tujuan utamanya adalah untuk menyerahkan sistem dengan tepat waktu dan sesuai budget. Metode ini bekerja sesuai dengan filosofi "tak ada yang dikembangkan secara sempurna pada percobaan pertama dan dianggap sebagai proses yang selalu berubah".

Kelebihan:

  • Pengguna sangat terlibat dalam pengembangan sistem, sehingga mereka lebih cenderung mendapatkan pegangan pada proyek pengembangan perangkat lunak.
  • Fungsionalitas dasarnya adalah sistem  diserahkan dengan cepat, dengan lebih banyak fungsi yang disampaikan secara sering.
  • Meberikan kemudahan akses oleh pengembang ke end-user.
  • Proyek diserahkan tepat waktu dengan budget yang spesifik.
Kekurangan:
  • DSDM mahal untuk diimplementasikan, karena mengharuskan user dan pengembang dilatih untuk menerapkannya secara efektif. Tidak cocok untuk organisasi kecil atau one-time project.
  • Merupakan model relatif baru, oleh karena itu tidak umum dan tidak mudah dimengerti.

7. Spiral Model
spiral_model_software_development_methodologies

Model Spiral merupakan model mutakhir yang berfokus pada identifikasi awal dan pengurangan risiko terhadap proyek.

Kelebihan:


Kekurangan:

8. Extreme Programming Methodology
extreme_programming_methodology


Sabtu, 25 Februari 2017

Random Stories before My Journey Begins

Saat ini tu kalau hidup tanpa internet bener-bener mati gaya, mati komunikasi, kutu pun juga ikut mati. Awal bulan Februari kemarin kuota inernetku habis, tapi ga bisa langsung isi ulang gara-gara aku demam + batuk. Tanggal 2 sakitku udah mulai mereda, akhirnya aku sempetin beli kartu internet di Counter deket rumah. Ketika nyampe rumah buru-buru aku pasang ke Hp biar bisa segera membuka aplikasi chatting dimana aku bisa mendapakan update informasi terbaru. Ternyata di LINE temen-temen yang ikut program Telkom Talent Scout rame banget, bahkan mereka udah bikin grup dan mulai bahas proses seleksi tahap akhir. Yup... aku diinvite di conversation mereka, itu artinya aku juga lolos seleksi. Namun untuk lebih meyakinkan, aku buru-buru buka email dan ternyata memang bener. Horeee... Alhamdulillah aku dapet undangan langsung dari Telkom Indonesia untuk hadir di tahap assessment day (interview, psikotes, business game) dan medical check up (MCU). Ternyata Telkom udah ngirim email ke aku sejak 2 hari yang lalu dan aku baru buka. Syukur alhamdulillah assessment day dan MCU dilakukan minggu depan pada tanggal 9 - 10 Februari 2017.

Langkah selanjutnya yaitu nyiapin berkas-berkas yang dibutuhkan saat assessment day. Semua udah siap kecuali legalisir ijazah, transkrip, dan ELPT (English Language Proviency Test). Setelah nyiapin dokumen-dokumen, saatnya pesen tiket kereta api. Niatnya sih naik kereta ekonomi yang murah (Probowangi). Kalau naik Probowangi selain harganya jauh lebih murah (Rp 67.500) aku juga bisa lebih lama di rumah, soalnya Probowangi berangkat dari rumah sekitar jam 2 siang. Tapi ekspektasi memang sering berlawanan dengan realita gengs. Tiket untuk kereta Probowangi sudah kandas. Ya sudah pasti lah, aku pesen hari jumat sedangkan keberangkatanku hari minggu, udah pasti ludes. KZL bat dah gua T_T Akhirnya aku terpaksa pesen tiket kereta Ekonomi Sri Tanjung seharga Rp 101.500 yang berangkat jam 7 pagi.

Hari minggu pun tiba. Hiks sumpah w masih belum bisa meninggalkan rumah seisinya :( Pagi itu sekitar setengah 5 aku baru bangun. Itu udah kesiangan menurutku. Belum juga mandi, poop, sama sholat. Akhirnya aku putusin sholat dulu, kebetulan pas itu aku juga belum kebelet poop. Habis sholat aku langsung ambil handuk. Ternyata rasa untuk mengeluarkan isi perut belum juga muncul. Wah payah nih, bisa-bisa kebelet poop pas di kereta. Ya udah lah, akhirnya aku mandi. Takut keburu siang soalnya. Habis aku mandi seperti biasa dandan tipis-tipis terus lanjut sarapan. Bisanya aku sarapan banyak banget, cuma karena belum poop jadinya aku sarapat dikit banget. Lagian Ibu juga bawain bekal buat di kereta.

Jam menunjukkan pukul 5.45. Kakak iparku sudah datang menjemputku. Sehabis sarapan, aku masukin barang-barangku ke mobil. Sumpah bawaannya kayak orang mau pindahan -_- Maklum, orang desa mau merantau ke kota. Setelah semua barang masuk ke mobil, giliran aku pamit ke orang tua mohon doa restu dan kemudian aku masuk mobil bareng kakak iparku. Oke, ini saatnya the first unexpected moment terjadi. Pas kakakku mau nyetarter mobil, ternyata mobilnya ga bisa hidup. Masya Allah... cobaan apa lagi ini :'D Setelah diperiksa kakakku, ternyata akinya mati gara-gara tadi pas baru nyampe rumah lupa ga matiin lampu :'D Akhirnya aku keluarin lagi semua barang-barangku dan aku berangkat ke stasiun diantar pake motor, untung ga hujan :')

Setelah kurang lebih 40 menit kami nyampe di stasiun. Aku turun dari motor dan langsung masuk ke stasiun buat check in tiket. Setelah nunggu beberapa menit kemudian, kereta Sri Tanjung pun datang. Aku masuk ke kereta dan mencari tempat dudukku nomor 11 D. Cerita dikit ya, aku lebih suka duduk di kursi yang sebangku isi 2 orang biar ga sumpek. Eh ternyata ekspektasi kembali bertolak belakang dengan realita. Pas aku udah nemu tempat dudukku ternyata di sana udah ada orangnya, 2 Ibu-Ibu dan 1 anak. Ketika aku mau duduk, w diusir sama anaknya :'D Hello please ya dek, w udah bayar. Main usir aja :') Dengan terpaksa akhirnya aku duduk di tempat yang sebangku isi 3 orang. Berhubung masih kosong, aku duduk di deket jendela. Tempat duduk deket jendela itu tempat paling enak buat tidur. Setelah semua penumpang naik, kereta pun akhirnya berangkat. Kemudian aku siapin alat-alat buat bobo (sorry, w masih ngantuk bets). Headset, Hp, dan kain ajaib penutup aib (Masker). Jujur, aku sering nganga kalau tidur di kereta. Makanya aku pake masker biar ga keliatan kalau tidurku sambil nganga wkwkwkwk.

Setelah 2 jam perjalanan, kereta nyampe di Stasiun Jember. Set dah!! Banyak bener yak penumpangnya. Rejeki, gerbongku yang tadinya longgar langsung penuh sesak oleh orang Jember. Disebelahku ketambahan 2 Ibu-Ibu paruh baya. Setelah say hello, aku tinggal tidur lagi. Setelah beberapa lama perjalanan aku bangun. Bukan karena ngantukku ilang. Tapi karena sesuatu. Yup... Apa yang aku khawatirkan sejak di rumah akhirnya terjadi juga :') Aku kebelet poop. Haduh males banget ga sih poop di kereta. Toilet di kereta ekonomi tu ga seenak kereta bisnis/eksekutif. Ya iyalah, rego gowo rupo vrooh. Air yang buat nyiram tu kecil, terus sering bau pesing. Akhirnya aku tahan. Tapi semakin lama kok semakin pengen keluar ya dedek gue. Aku tetep nahan sambil sesekali kentut wkwkwk. Untung ga ngeluarin aroma terapi wkwkwk. Lagian males banget mau ke toilet. Ibu sebelahku tu kan ngecharge hp, tapi hpnya ga ditaruh coba. Dia ngecharge hp sambil asik mainan hp. Aku kan jadi kehalang kabel chargernya -_- Ibunya asyik banget lagi main hpnya. Sebenernya ga masalah sih kalau aku bilang permisi, tapi ya udah lah. Aku udah males duluan. Sesekali aku paksa tidur biar ga terlalu kebelet. Tapi selalu kebangun. Ketika mulai nyampe Stasiun Bangil aku bener-bener udah ga bisa tidur. Sumpah tersiksa rasanya. Mau kentut susah keluar, sekalinya keluar dikit dan ga plong rasanya. Akhirnya aku nikmatin aja siksaan itu sampe nanti nyampe stasiun Gubeng. Sekitar 1.5 jam kemudian kereta nyampe di stasiun Wonokromo. Aku coba LINE Manja (roommateku) buat siap-siap jemput aku. Ternyata no respon. Oh man, mampus! Kan ga lucu kalau aku harus nunggu dia lama di stasiun sedangkan kondisiku udah kayak orang mau melahirkan. Akhirnya aku nyampe di Gubeng dan aku juga masih belum dapet balesan dari Manja. Dedekku udah nendang-nendang minta keluar. Mau ke Toilet takut ga ada yang jagain barang-barangku. Akhirnya tahan lagi sambil mencoba hubungi orang-orang kosan. Aku telfon Lusi 2x ga diangkat, mau telfon Manja langsung aku ga ada nomernya. Akhirnya aku tefon Hana dan langsung diangkat. Ternyata beneran, Manja lupa :'D Masya Allah... paringi sabar marang isun iki :') Aku nunggu Manja di depan stasiun hampir setengah jam. Sumpah ni orang ngapain aja yak lama bets. Ga tau apa dedek gue udah mau keluar. Tapi mau gimana lagi, aku harus tetap bersabar. Namanya orang minta tolong ya harus sabar. Setelah hampir setengah jam, Manja pun datang. Akhirnya cussss kita langsung menuju kosan. Setelah nyampe kosan, tanpa basa-basi aku langsung menuju tempat tongkrongan buat ngeluarin dedek. Eh ternyata dedek gue udah terlanjur ngambek :') Dia ga mau keluar dan terpaksa aku minum obat pencahar buat ngelancarin proses pengeluaran dedek. Eh ternyata malah kebabalasan. Subhanallah... :)

Oops.. Sorry.. Kayaknya terlalu banyak oot (out of topic deh) hehehe. Langsung ke cerita hari pertama seleksi aja yak. Hari pertama seleksi di gedung Learning Event Telkom yang terletak di jalan Gayungan. Menurut jadwal, tes dimulai dari jam 06.30 WIB. Aku berangkat 05.30 dan nyampe sana sekitar jam 06.15. Dalam benakku orang-orang pasti sudah banyak yang datang. Ternyata aku salah, ketika aku masuk gedung Learning Event hanya ada 4 peserta yang sudah datang. Kami pun ngobrol cukup lama di Loby sambil nunggu peserta yang lain. Kira-kira jam 8 kurang kami mendapat perintah dari panitia untuk registrasi di lantai 2 sambil menyerahkan persyaratan dokumen. Alhamdulillah semua persyaratanku terpenuhi dan aku bisa masuk ke ruang tes. Tes yang pertama dilakukan yaitu psikotes. Psikotes terdiri dari tes wartegg (bukan warung tegal ya), tes gambar pohon, tes gambar orang, serta tes bidang (tes bidang itu tes tentang materi yang sesuai dengan jurusan/program studi peserta). Kemudian business game, business game itu semacam permainan monopoli. Peserta dibagi menjadi beberapa kelompok, ada juga yang sendiri karena waktu itu pesertanya sedikit. Masing-masing kelompok diibaratkan sebuah perusahaan. Nah, perusahaan tersebut memiliki hutang kepada bank. Jumlah hutang yang ditanggung perusahaan sesuai dengan jumlah karyawan. Misal perusahaan A memiliki hutang 18.000, jumlah karyawan perusahaan tersebut 2. Maka besar hutang perusahaan A sebesar 36.000. Permainannya yaitu bagaimana cara masing-masing perusahaan tersebut melunasi hutang bank sedangkan uang yang dipegang masing-masing perusahaan hanya sebesar 11.000. Ngga usah aku ceritain ya, males ngetik soalnya wkwkwkkw. Oke lanjut ke tes yang terakhir yaitu wawancara. Setelah wawancara, serangkaian Assessment Day pun berakhir dan dilanjutkan MCU di keesokan harinya. Kalau MCU yang dites ada tinggi dan berat badan, darah, fisik, paru-paru, telinga, jantung, sama mata. Habis itu selesai deh, tinggal nunggu pengumuman di bulan maret.

Hari demi hari pun berganti. Senin, tanggal 13 Februari aku baru dapat informasi lowongan kerja di bpjs dari Hana. Serunya tanggal 14 terakhir pengumpulan lamaran. Akhirnya hari itu juga (tanggal 13) aku, manja, sama hana sepakat untuk nyiapin lamaran untuk di kirim di kantor cabang di masing-masing kota asal kami. Salah satu dokumen yang harus disertakan yaitu SKCK. Aku mengambil fotocopy SKCK yang ada di tas. Kemudian aku baru sadar setelah aku mendapatkan fotocopy SKCK, ternyata SKCKku yang asli tidak ada. Aku periksa map yang aku bawa ketika tes di Telkom. Di dalam map tersebut ada KTP sama fotocopy SKCK. Aku berpikir sejenak, mungkin saat itu yang diambil memang SKCK yang asli. Soalnya di email tidak ada keterangan untuk menyerahkan fotocopy SKCK. Saat itu memang aku siapkan dua file, SKCK asli sama fotocopy. Ternyata yang diambil SKCK yang asli. Keesokan harinya aku tanya 2 temanku yang ikut tes di Telkom. Jawaban mereka kompak, mereka hanya menyerahkan fotocopy SKCK. Oh man!! Kenapa aku doang yang nyerahin SKCK asli T_T Akhirnya hari jumat aku memutuskan untuk datang ke Learning Event Telkom bersama Hana. Aku tanya petugas di sana, ternyata semua dokumen rekrutmen sudah dibawa ke Bandung bersama para panitia rekrutmen. Yeah, this is my second unexpected moment. Subhanallah... Ujian apa lagi ini?? Alhamdulillah petugas di Learning Event Telkom mau membantuku dengan memberikan nomor salah satu panitia rekrutmen. Dengan perasaan kecewa aku pergi meninggalkan Telkom. Kebetulan saat itu Hana juga mau ngambil passportnya di Maspion Square yang ada di daerah A. Yani. Karena ketika berangkat Hana sudah bonceng aku, akhirnya pas mau ke Maspion Square aku yang bonceng. Jalan menuju Maspion Square harus muter balik. Dan di sepanjang jalan A. Yani yang dari arah selatan tidak aku temukan putaran balik sampai di depan Royal Plaza. Pas udah mau muter balik, tiba-tiba ada Pak Pol yang melambaikan tangannya ke arahku. Dengan perasaan PeDe aku mendatangi Pak Pol karena aku merasa tidak melanggar apa-apa. Ternyata aku salah. Pak Pol ngeliat kalau aku ngelanggar marka jalan. Alhasil SIM baruku disita dan aku harus mendekam dipenjara. Ngga lah, SIMku disita dan aku harus sidang di Pengadilan Negeri Surabaya tanggal 3 Maret. Yup... that is my third unexpected moment. Bener-bener dah SIM baruku beneran kepake. Waktu itu bener-bener kayak orang ngga sadar. Kena tilang ngga deg-degan sama sekali, terus pas disuruh sidang iya-iya aja, padahal bisa jalur damai. Disuruh sidang tanggal 3 Maret juga nurut aja, padahal bisa dinego biar dicepetin T_T Bener-bener dah hari itu kesabaranku diuji sama Allah. SKCK ngga dapet, pulang malah kena tilang. Semoga pertanda baik buat nasibku. Aamiin ya Allah...

PS:
Setelah aku baca lagi, pertanyaan pun muncul di benakku. SEBENERNYA GUE NULIS APA SIH NEEEHHHH??? GAJELAS BANGET. ENDINGNYA JUGA NGEGANTUNG WQWQWQWQW. Gapapa, penulisnya emang seglek. Semoga yang baca lebih seglek, karena mau baca cerita ini. Peace ;)
Sabtu, 02 Mei 2015

Just Call Us "The Rumpicks"

Malam ini pukul 23.30 normalnya dimanfaatkan orang untuk tidur, tetapi tidak untuk aku. Kali ini aku akan bercerita tentang 4makhluk istimewa, bisa dikatakan sebagai malaikat yang dikirimkan Tuhan untuk selalu menemani dan berada di sisiku. Pertama kali Tuhan memepertemukan Aku dengan mereka sekitar 3 tahun lalu saat aku baru duduk di bangku perkuliahan semester 1. Aku sempat takut dan khawatir kalau ternyata di tempat perantauan ini aku tidak memiliki teman. Namun, ternyata ketakutanku itu sirna setelah aku mengenal sosok makhluk unik yang selalu jatuh cinta sama Anime Jepang dan suka meninggalkan jejak berupa gambar-gambar Anime. Tidak hanya dibukunya atau bukuku, bahkan bangku kuliah pun juga menjadi saksi bisu pelampiasan hobi satu makhluk unik ini. Makhluk itu bernama Ni Made Ayu Karina Wiraswari. Ya, namanya memang sangat panjang, tetapi cukup dipanggil Karina saja. Dengan membaca namanya sudah pasti bisa ditebak darimana asalnya. Dia berasal dari Sidoarjo, tetapi kedua orang tuanya asli dari Bali. Entah apa yang membuat aku nyaman berada di dekatnya. Berawal dari mengobrolkan hal-hal yang tidak penting sampai sharing masalah pribadi pun sering kita lakukan. Saat kuliah mulai membosankan kami selalu melakukan hal-hal konyol untuk mengusir rasa bosan itu. Namun, kita senang melakukannya, kita bisa tertawa lepas di samping tugas-tugas kuliah yang begitu mengerikan. Mungkin kekonyolan itulah yang bisa mempererat persahabatan kami.

Beberapa bulan setelahnya, Tuhan kembali mengirimkan 2 makhluk istimewa untuk menemani hari-hariku di kampus. Aku sangat berterima kasih kepada Dosen Kalkulusku, Bu Rini, berkat tugas Kalkulus mengerikan yang beliau berikan, kami bertemu 2 makhluk istimewa itu. Kedua makhluk istimewa itu berotak genius, dia master hampir di segala mata kuliah dan memiliki kemampuan berkomunikasi yang bagus. Entah makanan apa yang mereka makan hingga berotak encer seperti itu. Makhluk yang berbadan tinggi dan berbehel itu (sekarang sudah dilepas) bernama Kusumanigtyas Aditya Putri yang masa kecilnya sempat pindah rumah dari Tarakan - Kalimantan ke Tulungagung dan akhirnya menetap di sana. Sedangkan makhluk mungil tetapi energik dan ekspresif itu bernama Tiara Ratna Sari, orang aseli Suroboyo. Sejak kejadian menegangkan bersama Kalkulus itu kami menjadi dekat satu sama lain. Mulai dari belajar bersama di Student Center Fakultas, makan siang di kantin, sampai sekarang hal yang wajib kami lakukan adalah  nongkrong di Markas Besar kami (Laboratorium Komputer 4). 

 
eits, asal kalian tau. ini foto pertama kami berempat :D

Kami memang lain dari yang yang lain. Pada umumnya orang suka nongkrong di tempat-tempat kece, tetapi kami tidak. Kami lebih senang menghabiskan waktu bersama untuk belajar di Mabes kami, tetapi itu hanya 15% kami lakukan. Sisanya kami sering ngerumpi hal-hal tabu yang memang harus dikupas agar tidak tabu lagi. Ya, ngomongin teman dan dosen yang kami bumbui dengan candaan-candaan konyol. Itulah mengapa oraganisasi kami ini bernama "The Rumpicks" yang berdiri sejak tanggal berapa aku lupa, tetapi tidak selama Nyonya Menir yang berdiri sejak 1982. Sesekali kami mencoba bergaya sedikit untuk nongkrong di Mc Donald atau melampiaskan suara merdu kami yang sudah tertanam sejak lahir di tempat Karaoke. 


Ini foto kami saat nongkrong di Mc D. Mungkin saat itu banyak orang mengira kami aneh atau "Alay", tetapi kami memang alay, jadi abaikan saja mereka. Kalau tidak alay, bukan kami. And here we are


Kalau ini adalah foto saat kita rekaman buat album perdana kami di depan tempat Karaoke. Alhamdulillah tidak ada satupun CD kami yang laku karena memang kami tidak menyimpannya dalam CD, tetapi kami simpan di telinga masing-masing.

Ya itulah 3 makhluk istimewa yang selalu mewarnai hari-hariku. Mereka semua orang baik, sangat peduli satu sama lain. Ada 1 hal kebaikan besar mereka yang tidak bisa aku ceritakan. Untuk saat ini hanya doa yang bisa aku panjatkan. Semoga Tuhan membalas kebaikan mereka. Dan semoga persahabatanku dengan mereka tidak akan pernah putus hingga ajal yang memisahkan. Satu lagi harapan yang kami berempat yaitu semoga kami bisa lulus bersama tahun depan. Aamiin.. aamiin.. aamiin.. I Love You, guys <3 :*