BAB II LANDASAN TEORI
2.1 Data Data adalah catatan dari fakta yang di peroleh dan dikumpulkan dari survey penelitian. Dalam keilmuan (ilmiah), fakta dikumpulkan untuk menjadi data. Data tersebut kemudian dapat diolah menjadi sedemikian rupa hingga menjadi sebuah informasi yang dapat di klasifikasi berdasarkan data-data yang diperoleh sebelumnya. 2.1.1 Informasi Informasi adalah pengetahuan yang diperoleh dari pembelajaran atau pengalaman. Namun, Dalam beberapa hal
pengetahuan tentang peristiwa-
peristiwa tertentu atau situasi yang telah dikumpulkan atau diterima melalui proses komunikasi. Informasi yang diperoleh dari data dan fakta seringkali dinamakan informasi statistik. Dalam ilmu komputer, informasi di dapatkan dari pembelajaran dan pengalaman dari percobaan yang dilakukan berdasarkan data ilmiah. 2.1.2 Database Basis data (database) merupakan kumpulan dari data yang saling berhubungan dengan yang lainnya, tersimpan di perangkat keras komputer dan digunakan perangkat lunak untuk memanupulasi. Database merupakan salah satu komponen penting dalam sistem informasi, karena merupakan basis dalam menyediakan dan pengelolaan informasi bagi para pengguna. Penerapan database dalam sistem informasi yaitu dengan sistem database. Sistem basis data (sistem database) merupakan suatu sistem informasi yang mengintegrasikan kumpulan dari data yang saling berhubungan satu dengan lainnya dan membuatnya tersedia untuk beberapa aplikasi yang bermacam-macam di dalam suatu organisasi. Dengan sistem basis data ini setiap orang memiliki sudut pandang yang berbeda dalam penggunaanya.
10
Bagian bank misalnya, mengelola data nasabah atau kredit, bagian personalia mengelola data gaji karyawan dan kontrak karyawan, bagian gudang mengelola data stok barang. Semuanya saling terintegrasi ke dalam sebuah data yang umum. 2.1.3 Naive Bayes Algorithm Algoritma naive bayes adalah algoritma untuk pengklasifikasian yang menggunakan teorema bayes sebagai dasarnya. Algoritma ini termasuk dalam kategori classical technique. Algoritma ini memprediksi nilai suatu dependent variabel
berdasarkan
independent-independent
variabel
lain. Salah
satu
keuntungan dari algoritma ini adalah kecepatanntya. Algoritma ini merupakan salah satu yang tercepat dibandingkan dengan algoritma-algoritma lain. Algoritma ini sudah diterapkan pada aplikasi yang sudah pernah dibangun sebelumnya. Dan saat ini hanya akan membahas definisi naive beyes secara singkat sebagai pengetahuan untuk pengembangan aplikasi yang akan dikembangkan selanjutnya. Keuntungan lain dari algoritma ini adalah model prediksi yang dihasilkan dapat langsung dicerna oleh end-use, tidak seperti misalnya neural network yang membutuhkan translator terlebih dahulu. Setidaknya ada dua kelemahan dari algoritma ini, yaitu yang pertama adalah asumsi naive yang dilakukan ini menganggap bahwa atribut-atribut yang digunakan untuk membuat suatu model prediksi bersifat independence satu sama lain. Hal ini sering kali berlawanan dengan data di dunia nyata. Namun berdasarkan penelitian lebih lanjut oleh Domingos dan Pazani (On the Optimaly of the simple Bayesian Classifier under Zero one Loss) bahkan jika asumsi ini dilanggar dibawah zero one loss, algoritma ini masih menampilkan performa yang baik, bahkan melebihi performa beberapa algoritma lain yang lebih kompleks. Kelemahan kedua adalah atribut-atribut yang akan dibuat model hanya dapat menampung nilai diskrit (nominal). Dengan kata lain, nilai continous (kelanjutan) harus diubah dahulu menjadi nilai diskrit.
11
2.2 HTML dan CSS Hypertext Mark up Language atau biasa dikenal dengan HTML merupakan suatu metode untuk mengimplementasikan konsep hypertext dalam suatu naskah atau dokumen. HTML sendiri bukan tergolong pada suatu bahasa pemrograman karena sifatnya yang hanya memberikan tanda (marking up) pada suatu naskah teks dan bukan sebagai program. HTML merupakan protokol yang digunakan untuk mentransfer data atau dokumen dari web server ke dalam browser (Internet Explorer atau Netscape Navigator). Pengertian HTML sendiri bila dijabarkan berdasarkan kata-kata penyusunannya HTML dapat diartikan lebih dalam lagi menjadi: 2.2.1 Hypertext Link hypertext adalah kata atau frase yang dapat menunjukkan hubungan suatu naskah dokumen dengan naskah-naskah lainnya. Jika kita klik pada kata atau frase untuk mengikuti link ini maka web browser akan memindahkan tampilan pada bagian lain dari naskah atau dokumen yang kita tuju. 2.2.2 Markup Pada pengertiannya disini “markup” menunjukan bahwa pada file HTML berisi suatu intruksi tertentu yang dapat memberikan suatu format pada dokumen yang akan ditampilkan pada WWW. 2.2.3 Language Meski HTML sendiri bukan merupakan bahasa pemrograman, HTML merupakan kumpulan dari beberapa intruksi atau tag “<”, ”/>” yang dapat digunakan untuk mengubah-ubah format suatu naskah atau dokumen. Pada awalnya HTML dikembangkan sebagi subset SGML (Standard Generalized
Mark-up
Language).
Karena
HTML
didedikasikan
untuk
ditransmisikan melalui media Internet, maka HTML relatif lebih sederhana dari pada SGML yang lebih di tekankan pada format dokumen yang berorientasi pada aplikasi.
12
HTML sendiri memiliki banyak versi dan versi terbaru saat ini yaitu HTML5. HTML5 adalah versi terbaru teknologi hypertext/web yang sekarang ini masih dalam tahap pengembangan. HTML5 ini akan menjadi trend teknologi internet masa depan karena sudah diperkaya dengan fitur-fitur ungulan yang tentunya akan menjadi standard pengembangan media informasi berbasis web. Tujuan dibuatnya HTML5 antara lain: a) Fitur baru harus didasarkan pada HTML, CSS, DOM , dan Javascript. b) Mengurangi kebutuhan untuk plugin eksternal (seperti Flash). c) Penanganan kesalahan yang lebih baik. d) Lebih banyak MARKUP untuk menggantikan scripting. e) HTML5 merupakan perangkat mandiri. Sekarang HTML5 sudah mulai digunakan pada beberapa situs-situs besar sebagai uji coba kelayakan fitur serta teknologi baru yang masih terus dikembangkan dari versi sebelumnya yaitu HTML 4.01. Fitur serta perbaikan yang ditanamkan dalam teknologi ini dintaranya adalah video dan audio, database lokal dan css3. Ada beberapa tambahan elemen serta atribut yang memungkinkan HTML5 ini lebih baik dari sebelumnya, walaupun secara mendasar perintahperintah yang digunakan sangat mirip dengan HTML versi 4.01. Berikut adalah beberapa browser yang dapat mendukung HTML yaitu: - OPERA Web Browser (mulai dari OPERA 9.2 sampai yang terbaru saat ini yaitu OPERA 10) - Safari (mulai dari versi 3.1) - Firefox (Mulai dari Firefox 3 ) - Google Chrome (Mulai dari versi 3) - Internet Explorer (Mulai dari versi 8)
13
Namun sebelum mengenal lebih jauh mengenai HTML5 alangkah baiknya perlu diketahui beberapa hal tentang HTML5, diantaranya : HTML5 menawarkan elemen-elemen yang umum digunakan dalam sebuah struktur halaman website. Sehingga, penulisan tag setiap elemen dapat terlihat lebih semantic dan mudah dibaca, seperti pada gambar. Terdapat banyak manfaat jika menggunakan struktur seperti ini. Elemen “header” merepresentasikan header dari suatu section. Elemen “footer” juga merepresentasikan footer dari suatu section. Elemen “nav” cocok digunakan untuk merepresentasikan link navigasi. Sedangkan elemen “section” merepresentasikan suatu bagian generic dari dokumen. Struktur semantic. Pada XHTML, programmer HTML bisa saja menjadi pembuat stress programmer CSS karena struktur halaman yang dibuatnya. Harus ada kesepakatan penamaan yang solid antara kedua pihak agar tidak ada masalah pembacaan struktur halaman. Biasanya, dalam XHTML akan dibuat sebuah “div” dengan id-nya masing-masing. Deklarasi doctype baru. Dalam membuat sebuah halaman dengan HTML5, tentu saja doctype yang digunakan juga harus benar. Doctype pada HTML5 jauh lebih sederhana daripada XHTML, sehingga Anda tidak perlu menghafalnya. Pada doctype untuk XHTML 1.0, Anda harus menuliskannya dengan panjang. Validasi email. Dengan validasi langsung di tampilan, maka dapat mencegah seseorang user untuk memanggil script website dengan input yang salah. Ini dapat mengurangi jumlah request yang tidak valid terhadap script program Anda. HTML5 menawarkan fitur validasi email secara langsung dengan mengubay type dari elemen input menjadi “email”. Namun hal ini sangat disanyangkan karena masih belum semua browser memberikan support untuk fitur ini. Contenteditable. Yaitu atribut baru dari HTML5 yang memungkinkan sebuah elemen untuk dimodifikasi langsung pada tampilan. Jika dikombinasikan dengan sedikit Javascript, fitur ini bisa menghasilkan sebuah mekanisme input yang cukup powerful namun mudah untuk dibuat.
14
Internet Explorer Hack. Seperti biasanya, Internet Explorer selalu terlambat dalam mengimplementasikan teknologi website terbaru, meski Microsoft selalu memiliki teknologi sendiri seperti silverlight untuk browsernya tersebut. Pada IE, secara default semua elemen akan ditampilkan secara “inline”. Untuk itu, Anda harus mendeklarasikan style tersendiri agar tampilan dapat seperti seharusnya. Atribut required. Satu lagi untuk input pada HTML5, memungkinkan validasi pada sisi client terhadap input yang harus diisi. Dengan demikian, tidak diperlukannya lagi membuat fungsi javascript untuk melakukannya. Cukup menambahkan atribut “required” pada elemen “input”. Jika tombol submit ditekan, akan muncul pesan error. Masih banyak elemen HTML5 lainnya seperti canvas, video, audio, mark, dan sebagainya. Setiap elemen akan berperilaku berbeda di setiap browser, karena memang standart resminya belum dikeluarkan oleh W3C. 2.2.4 Fungsi dan Kegunaan HTML5 HTML sendiri memiliki fungsi umum yakni untuk mengelola serangkaian data dan informasi sehingga suatu dokumen dapat diakses dan ditampilkan di Internet melalui layanan web. Selain fungsi umum diatas ada beberapa fungsi lain dari dari HTML yaitu: - Membuat halaman web. - Menampilkan berbagai informasi di dalam sebuah browser Internet. - Membuat link menuju halaman web lain dengan kode tertentu (hypertext). - Membentuk tata letak dokumen, dalam hal ini menentukan jenis huruf, gambar, dan komponen dokumen lainnya. - Menentukan hubungan ke dokumen lain, HTML merupakan suatu bahasa komputer yang termasuk dalam katagori SGML (Standard Generalized Markup Language) dimana bentuknya merupakan file standar ASCII yang berisi kodekode untuk mengatur dokumen. - Menentukan ukuran dan alur tulisan. - Mengintegerasikan gambar dengan tulisan.
15
- Membuat Pranala. - Mengintegerasikan berkas suara dan rekaman gambar hidup. - Membuat form interaktif. - Menampilkan suatu kelompok kata dalam beberapa ukuran yang dapat digunakan untuk judul, heading dan sebagainya. - Menampilkan tulisan dalam bentuk cetakan tebal - Menampilkan sekelompok kata dalam bentuk miring. - Menampilkan naskah dalam bentuk huruf yang miring dengan hasil ketikan mesin ketik. - Mengubah-ubah ukuran tulisan untuk suatu karakter tertentu. Selain memiliki fungsi-fungsi yang telah disebutkan diatas HTML juga memiliki beberapa kegunaan, antara lain: a. Membuat link Konsep hypertext pada HTML memungkinkan kita untuk membuat link pada suatu kelompok kata atau frase untuk menuju ke bagian manapun dalam World Wide Web. Ada tiga macam link yang dapat kita gunakan : - Link menuju bagian lain dari page - Link menuju page lain dalam satu web site - Link menuju resource atau web site yang berbeda b. Memodifikasi format teks Penggunaan HTML memungkinkan kita untuk memodifikasi tampilan atau format dokumen yang akan kita transmisikan melalui media Internet. Beberapa hal yang dapat dilakukan dalam menentukan format dokumen ini yaitu: - Dapat menampilkan suatu kelompok kata dalam beberapa ukuran yang dapat digunakan untuk judul, heading dan sebagainya. - Dapat menampilkan teks dalam bentuk cetakan tebal - Dapat menampilkan sekelompok kata dalam bentuk miring - Dapat menampilkan naskah dalam bentuk huruf yang mirip dengan hasil ketikan mesin ketik 16
- Dapat mengubah-ubah ukuran font untuk suatu karakter tertentu. c. Menampilkan daftar sesuatu dalam bentuk point-point (item) Dengan HTML kita dapat menampilkan daftar atau deretan informasi dalam bentuk point-point sehingga lebih mudah dibaca dan dipahami Membuat link.Konsep hypertext pada HTML memungkinkan kita untuk membuat link pada suatu kelompok kata atau frase untuk menuju ke bagian manapun dalam World Wide Web.
Ada tiga macam link yang dapat kita gunakan : - Link menuju bagian lain dari page - Link menuju page lain dalam satu web site - Link menuju resource atau web site yang berbeda d. Menyisipkan citra Dengan menyisipkan citra maka tampilan page kita akan lebih menarik, interaktif dan informatif untuk mendukung data-data lainnya dalam bentuk teks. e. Menampilkan informasi dalam bentuk tabel Penampilan informasi dalam bentuk tabel ini akan mempermudah pembaca untuk memahami informasi yang kita tawarkan. Penggunaan tabel ini juga dapat dilakukan untuk menambah nilai estetika dari page yang akan kita rancang.
17
2.2.5 CSS (Cascading Style Sheet ) CSS merupakan aturan untuk mengendalikan beberapa komponen dalam sebuah web, sehingga mendesain web akan lebih terstruktur dan seragam tentunya, tanpa CSS website tidak akan memiliki desain tampilan yang rapi dan menarik. CSS bukan merupakan bahasa pemograman. Sama halnya styles dalam aplikasi pengolahan kata seperti Microsoft Word yang dapat mengatur beberapa style, misalnya heading, subbab, bodytext, footer, images, dan style lainnya untuk dapat digunakan bersama-sama dalam beberapa berkas (file). Pada umumnya CSS dipakai untuk memformat tampilan halaman web yang dibuat dengan bahasa HTML dan XHTML. CSS dapat mengendalikan ukuran gambar, warna bagian tubuh pada teks, warna tabel, ukuran border, warna border, warna hyperlink, warna mouse over, spasi antar paragraf, spasi antar teks, margin kiri, kanan, atas, bawah, dan parameter lainnya. CSS adalah bahasa style sheet yang digunakan untuk mengatur tampilan dokumen. Dengan adanya CSS memungkinkan kita untuk menampilkan halaman yang sama dengan format yang berbeda. 2.2.6 Sejarah CSS Nama CSS didapat dari fakta bahwa setiap deklarasi style yang berbeda dapat diletakkan secara berurutan, yang kemudian membentuk hubungan ayahanak (parent-child) pada setiap style. CSS sendiri merupakan sebuah teknologi internet yang direkomendasikan oleh World Wide Web Consortium atau W3C pada tahun 1996. Setelah CSS distandarisasikan, Internet Explorer dan Netscape melepas browser terbaru mereka yang telah sesuai atau paling tidak hampir mendekati dengan standar CSS.
Versi Untuk saat ini terdapat tiga versi CSS, yaitu CSS1, CSS2, dan CSS3. CSS1 dikembangkan berpusat pada pemformatan dokumen HTML, CSS2 dikembangkan untuk memenuhi kebutuhan terhadap format dokumen agar bisa ditampilkan di printer, sedangkan CSS3 adalah versi terbaru dari CSS yang mampu melakukan banyak hal dalam desain website.
18
CSS2 mendukung penentuan posisi konten, downloadable, huruf font, tampilan pada tabel /table layout dan media tipe untuk printer. Kehadiran versi CSS yang kedua diharapkan lebih baik dari versi pertama dan kedua. CSS3 juga dapat melakukan atau menampilkan animasi pada halaman website / blog, diantaranya animasi warna hingga animasi 3D. Dengan CSS3 desainer lebih dimudahkan dalam hal kompatibilitas websitenya pada smartphone dengan dukungan fitur baru yakni media query. Selain itu, banyak fitur baru pada CSS3 seperti: multiple background, border-radius, drop-shadow, border-image, CSS Math, dan CSS Object Model. Berikut ini contoh potongan dari Code CSS /*Selector body yang memiliki properties seperti merubah warna background, ukuran huruf dan warna huruf */ body { background-color:#d0e4fe; font-size:12px; color:#000000; } h1 { color:orange; text-align:center; } p{ font-family:"Times New Roman"; font-size:20px; }
19
2.3 PHP 5 PHP (Hypertext Preprocessor) adalah bahasa skrip yang dapat ditanamkan atau disisipkan ke dalam HTML. PHP banyak dipakai untuk memprogram situs web yang bersifat dinamis. PHP dapat digunakan untuk membangun sebuah sistem CMS mau pun MVC modular. PHP dewasa ini sudah beralih ke versi terbarunya, yaitu PHP versi 5 dimana sebelumnya PHP masih menggunakan versi 4. Perbedaanya terletak pada struktur dan syntaxnya, jika di PHP 4 program masih bersifat struktural variabel, sedangkan di PHP versi 5, sistem mengadopsi object oriented programming diantaranya terdapat fungsi kelas (class), pewarisan sifat (inheritance) dan aturan baru dalam penulisan syntaxnya untuk konfigurasi dengan SQL Database, sehingga banyak sekali yang berbeda. Contoh dari PHP versi 5 dalam penggunaan method yaitu __set dan __get: Method __set digunakan untuk men-set (menetapkan) nilai suatu property yg dimiliki suatu class. Sedangkan method __get digunakan untuk menget (mengambil) nilai suatu property yg dimiliki suatu class. Tapi ingat! Methodmethod ini tidak untuk dipanggil secara langsung melainkan PHP secara background yang memanggil nya ketika kita men-set atau men-get nilai suatu property tersebut. Berikut adalah contoh penggunaan magic method __set dan __get :
class Mahasiswa{ private $nim; private $nama;
function __get($property){ //mengembalikan dalam bentuk array if($property == "biodata") return array('nim'=>$this->nim, 'nama'=>$this->nama);
20
//mengembalikan property satu-satu if(property_exists($this, $property)) /*pengecekan : ada apa tidak property yg diminta*/ return __CLASS__."::{$property} : ".$this->$property; //klo property ada else echo "Maaf property ({$property}) tidak ada dalam class : ".__CLASS__;
//klo property tidak ada
} function __set($property, $value){ //pengecekan lagi if(property_exists($this, $property)) $this->$property = $value; //jika property ada }} $mhs = new Mahasiswa(); //object mahasiswa $mhs->nim = 10002; //ini akan memanggil method __set() $mhs->nama = "Adi"; $mhs->kelas = "A"; //ini akan dihiraukan karena property 'kelas' tidak ada echo $mhs->nim; //ini akana memanggil method __get() echo "
"; echo $mhs->nama; echo "
"; echo $mhs->kelas; echo "
"; echo "<pre>"; print_r($mhs->biodata); //dikembalikan dalam bentuk array ?>
21
2.4 SQL (Structured Query Language) SQL adalah bahasa pemrograman database yang mendukung bahasa scripting server side (PHP) dalam proses pembangunan dan pengaturan database untuk suatu sistem. Mysql merupakan sebuah perangkat lunak sistem manajemen basis data (database management system) atau DBMS yang sering digunakan oleh programmer dalam membangun database, karena kelebihannya yang multithread dan multi-user, dengan sekitar 6 juta instalasi di seluruh dunia. Mysql tersedia sebagai perangkat lunak gratis dibawah lisensi GNU General Public License (GPL), MySQL sudah mengeluarkan versi terbarunya yaitu Mysql Versi 5, menyesuaikan dengan perkembangan bahasa scripting server side seperti PHP 5. Dan Hal paling utama yang harus dipahami dalam menggunakan SQL yaitu adalah konsep CRUD (Create, Read, Update, Delete). Dibawah ini kita akan membahas hal itu dengan beberapa contoh yang sederhana. 2.4.1 Beberapa Istilah Database Table Sebuah tabel merupakan kumpulan data (nilai) yang diorganisasikan ke dalam baris (record) dan kolom (field). Masing-masing kolom memiliki nama yang spesifik dan unik. Field Field merupakan kolom dari sebuah table. Field memiliki ukuran type data tertentu yang menentukan bagaimana data nantinya tersimpan. Record Field merupakan sebuah kumpulan nilai yang saling terkait. Key Key merupakan suatu field yang dapat dijadikan kunci dalam operasi tabel. Dalam konsep database, key memiliki banyak jenis diantaranya Primary Key, Foreign Key, Composite Key dan masih banyak lagi jenis yang lainnya.
22
SQL SQL atau Structured Query Language merupakan suatu bahasa (language) yang digunakan untuk mengakses database. SQL sering disebut juga sebagai query.
2.4.2 Hierarki Database Dalam konsep database, urutan atau hierarki database sangatlah penting. Urutan atau hierarki database digambarkan dalam gambar sbb :
Gambar 2.0 : Hierarki Database Sumber : http://slideplayer.info/slide/2001602/, 2015
2.4.3 Fitur-fitur MySQL antara lain : 1. Relational Database System. Seperti halnya software database lain yang ada di pasaran, MySQL termasuk RDBMS. 2. Arsitektur Client-Server. MySQL memiliki arsitektur client-server dimanaserver database MySQL terinstal di server. Client MySQL dapat berada di komputer yang sama dengan server, dan dapat juga di komputer lain yang berkomunikasi dengan server melalui jaringan bahkan internet. 3. Mengenal
perintah
SQL
standar. SQL (Structured Query
Language) merupakan suatu bahasa standar yang berlaku di hampir semua software database. MySQL mendukung SQL versi SQL:2003.
23
4. Mendukung Sub Select. Mulai versi 4.1 MySQL telah mendukung select dalam select (sub select). 5. Mendukung Views. MySQL mendukung views sejak versi 5.0 6. Mendukung Stored Prosedured (SP). MySQL mendukung SP sejak versi 5.0. 7. Mendukung Triggers. MySQL mendukung trigger pada versi 5.0 namun masih terbatas. Pengembang MySQL berjanji akan meningkatkan kemampuan trigger pada versi 5.1. 8. Mendukung Mendukung foreign key. 9. Tersedia fungsi GIS. 10. Free (bebas didownload) 11. Stabil dan tangguh 12. Fleksibel dengan berbagai pemrograman 13. Security yang baik 14. Dukungan dari banyak komunitas 15. Perkembangan software yang cukup cepat. 16. replication. 17. Mendukung transaksi.
2.4.4 Terdapat 3 (tiga) jenis perintah SQL, yaitu : 1. DDL atau Data Definition Language DDL merupakan perintah SQL yang berhubungan dengan pendefinisian suatu struktur database, dalam hal ini database dan table. Beberapa perintah dasar yang termasuk DDL ini antara lain : CREATE ALTER RENAME DROP
24
2. DML atau Data Manipulation Language DML merupakan perintah SQL yang berhubungan dengan manipulasi atau pengolahan data atau record dalam table. Perintah SQL yang termasuk dalam DML antara lain : SELECT INSERT UPDATE DELETE
3. DCL atau Data Control Language DCL merupakan perintah SQL yang berhubungan dengan manipulasi user dan hak akses (priviledges). Perintah SQL yang termasuk dalam DCL antara lain : GRANT REVOKE
Membuat Database Berikut ini contoh perintah untuk membuat database baru, misal dengan nama database “transfers” : CREATE DATABASE transfers;
Membuka Database Sebelum melakukan manipulasi tabel dan record yang berada di dalamnya, kita harus membuka atau mengaktifkan databasenya terlebih dahulu. Untuk membuka database "transfers" berikut ini querynya : USE transfers; Jika perintah atau query di atas berhasil, maka akan ditampilkan pesan sebagai berikut : Database changed
25
Menghapus Database Untuk menghapus suatu database, sintaks pada umumnya adalah : DROP DATABASE transfers;
Membuat, Mengubah dan Menghapus Table Bentuk umum SQL untuk membuat suatu table secara sederhana sebagai berikut : CREATE TABLE nama_tabel ( field1 tipe(panjang), field2 tipe(panjang), ... fieldn tipe(panjang), PRIMARY KEY (field_key) ); Bentuk umum di atas merupakan bentuk umum pembuatan tabel yang sudah disederhanakan. Penamaan tabel dan field memiliki aturan yang sama dengan penamaan database. Sebagai contoh, kita akan membuat tabel baru dengan struktur sebagai berikut : CREATE TABLE player ( id_player varchar(5) NOT NULL, player_name varchar(30) NOT NULL, club text, phone varchar (20), email varchar (50), PRIMARY KEY(id_player) );
Selanjutnya untuk mengecek tabel player apakah benar-benar sudah ada atau belum, dapat melihatnya dengan mengetikan query berikut : SHOW TABLES;
26
Mengubah Struktur Table dengan ALTER Untuk mengubah struktur suatu tabel, bentuk umum perintah SQL-nya sebagai berikut : ALTER TABLE nama_tabel alter_options; dimana : ALTER TABLE merupakan perintah dasar untuk mengubah tabel. Nama_tabel merupakan nama tabel yang akan diubah strukturnya. Alter_options merupakan pilihan perubahan tabel. Option yang bisa digunakan, beberapa di antaranya sebagai berikut : » ADD definisi_field_baru Option ini digunakan untuk menambahkan field baru dengan “definisi_field_baru” (nama field, tipe dan option lain). » ADD INDEX nama_index Option ini digunakan untuk menambahkan index dengan nama “nama_index” pada tabel. » ADD PRIMARY KEY (field_kunci) Option untuk menambahkan primary key pada tabel » CHANGE field_yang_diubah definisi_field_baru Option untuk mengubah field_yang_diubah menjadi definisi_field_baru » MODIFY definisi_field Option untuk mengubah suatu field menjadi definisi_field » DROP nama_field Option untuk menghapus field nama_field » RENAME TO nama_tabel_baru Option untuk mengganti nama tabel
27
Menghapus Tabel Untuk menghapus sebuah tabel, bentuk umum dari perintah SQL adalah sebagai berikut : DROP TABLE nama_tabel; Contohnya kita akan menghapus tabel dengan nama “seri_b” maka perintah SQL-nya adalah : DROP TABLE seri_b; Menambah Record dengan INSERT Bentuk umum perintah SQL untuk menambahkan record atau data ke dalam suatu tabel adalah sebagai berikut : INSERT INTO nama_tabel VALUES („nilai1‟,‟nilai2‟,...); atau INSERT INTO nama_tabel(field1,field2,...) VALUES („nilai1‟,‟nilai2‟,...); atau dapat juga dengan bentuk sebagai berikut : INSERT INTO nama_tabel SET field1=‟nilai1‟, field2=‟nilai2‟,...; Sebagai contoh, kita akan menambahkan sebuah record ke dalam tabel pelanggan yang telah kita buat sebelumnya. Berikut ini perintah SQL untuk menambahkan sebuah record ke dalam tabel pelanggan : INSERT INTO seri_b VALUES ('P0001', Adi Aja, 'Tangerang', '021234567', '
[email protected]');
28
Mengedit Record dengan UPDATE Proses update bisa sewaktu-waktu dilakukan jika terdapat data atau record dalam suatu tabel yang perlu diperbaiki. Proses update ini tidak menambahkan data (record) baru, tetapi memperbaiki data yang lama. Perubahan yang terjadi dalam proses update bersifat permanen, artinya setelah perintah dijalankan tidak dapat di-cancel (undo). Bentuk umum perintah SQL untuk mengedit suatu record atau data dari suatu tabel adalah sebagai berikut : UPDATE nama_tabel SET field1=‟nilaibaru‟ [WHERE kondisi]; Pada perintah untuk update di atas : UPDATE merupakan perintah dasar untuk mengubah record tabel. Nama tabel merupakan nama_tabel yang akan diubah recordnya. Perintah
SET
diikuti
dengan field-field yang akan diubah yang mana diikuti juga dengan perubahan isi dari masing-masing field. Untuk mengubah nilai dari beberapa field sekaligus, gunakan koma (,) untuk memisahkan masing-masing field. Perintah WHERE diikuti oleh kondisi tertentu yang menentukan record mana yang akan diedit (diubah). Perintah WHERE ini boleh ada boleh juga tidak. Jika WHERE tidak ditambahkan pada perintah update maka semua record dalam tabel bersangkutan akan berubah.
Perhatikan beberapa contoh perintah UPDATE tabel pelanggan berikut ini : 1. Mengubah alamat menjadi “Tangerang” untuk pelanggan yang mempunyai id „P0001‟ UPDATE pelanggan SET alamat='Tangerang' WHERE id_pelanggan='P0001';
29
Mengubah email menjadi “
[email protected]” dan alamat menjadi “Bandung” untuk pelanggan yang mempunyai id_pelanggan „P0002‟ . UPDATE pelanggan SET email='
[email protected]', alamat='Bandung' WHERE id_pelanggan='P0002';
Menghapus Record dengan DELETE Proses DELETE dilakukan jika terdapat data atau record dalam suatu tabel yang perlu dihapus atau dihilangkan. Perubahan yang terjadi dalam proses delete bersifat permanen, artinya setelah perintah dijalankan tidak dapat di-cancel (undo). Bentuk umum perintah SQL untuk menghapus suatu record atau data dari tabel adalah sebagai berikut : DELETE FROM nama_tabel [WHERE kondisi]; Pada perintah untuk delete di atas : DELETE FROM merupakan perintah dasar untuk menghapus suatu record dari tabel. Nama tabel merupakan tabel yang akan dihapus recordnya. Perintah WHERE diikuti oleh kondisi tertentu yang menentukan record mana yang akan dihapus (didelete). Perintah WHERE ini boleh ada boleh juga tidak. Namun demikian, jika WHERE tidak ditambahkan pada perintah delete maka semua record dalam tabel bersangkutan akan terhapus. Jadi jangan lupa menambahkan WHERE jika kita tidak bermaksud mengosongkan tabel contoh perintah DELETE dari tabel pelanggan berikut ini: 1. Menghapus data pelanggan yang mempunyai id_pelanggan P0005 DELETE FROM player WHERE id_player='P0005'; 2. Menghapus semua pelanggan yang beralamat di “Bandung” DELETE FROM player WHERE alamat='Bandung';
30
Menampilkan Record dengan SELECT Perintah SELECT digunakan untuk menampilkan sesuatu. Sesuatu di sini bisa berupa sejumlah data dari tabel dan bisa juga berupa suatu ekspresi. Dengan SELECT kita bisa mengatur tampilan atau keluaran sesuai tampilan yang diinginkan.
Bentuk dasar perintah SELECT data dari tabel adalah sebagai berikut : SELECT [field | *] FROM nama_tabel [WHERE kondisi];
Contoh perintah SELECT dari tabel player berikut : 1. Menampilkan seluruh data atau record (*) dari tabel player
SELECT * FROM player;
2. Menampilkan field id_pelanggan dan nm_pelanggan dari seluruh pelanggan dalam tabel player SELECT id_player, nm_player FROM player;
3. Menampilkan id, nama dan alamat dari data player yang mempunyai id P0006 SELECT id_player, nm_player, alamat FROM player WHERE id_player = 'P0006';
4. Menampilkan id, nama dan email data semua player yang mempunyai email di yahoo
SELECT id_player, nm_player, email FROM player WHERE email LIKE '%yahoo%';
31
Berikut
ini
operator
perbandingan
yang
dapat
digunakan
untuk
membandingkan dua buah nilai dalam MySQL : Operator =, akan bernilai TRUE jika nilai yang dibandingkan sama. Operator != atau <>, akan bernilai TRUE jika nilai yang dibandingkan TIDAK SAMA (berbeda). Operator >, akan bernilai TRUE jika nilai yang pertama lebih besar dari nilai kedua. Operator >=, akan bernilai TRUE jika nilai yang pertama lebih besar atau sama dengan nilai kedua. Operator <, akan bernilai TRUE jika nilai yang pertama lebih kecil dari nilai kedua. Operator <=, akan bernilai TRUE jika nilai yang pertama lebih kecil atau sama dengan nilai kedua.
5. Menampilkan data semua player yang beralamat di Tangerang dan mempunyai email di gmail.
SELECT id_player, nm_player, alamat, email FROM player WHERE alamat = Tangerang && email LIKE '%gmail.com';
6. Menampilkan semua data player secara urut berdasarkan nama player dengan perintah ORDER BY .
SELECT id_player, nm_player FROM player ORDER BY nm_player;
7. Menampilkan semua data player secara urut berdasarkan nama player secara DESCENDING SELECT id_player, nm_player FROM player ORDER BY nm_player DESC;
32
8. Menampilkan 3 record (data) pertama dari tabel player secara urut berdasarkan nama player dengan LIMIT . SELECT id_player, nm_player FROM player ORDER BY nm_player LIMIT 0,3; 9. Menampilkan jumlah record yang ada di tabel player. SELECT COUNT(*)FROM player; 2.5 AJAX Ajax
(asynchronous
javascript
and
XML)
merupakan
bahasa
pemrogramman web yang tergabung dari beberapa teknik penggabungan bahasa pemrogramman web seperti Cascading styele sheet (CSS), Javascript, XML dan PHP. Teknologi ini memberikan aplikasi web bertindak layaknya aplikasi desktop. Pada website tradisional, biasa terjadi jika mengklik suatu tombol/link tertentu maka browser dan layar browser akan menjadi blank sesaat karena pada saat itu browser sedang meminta/merequest data dari web server dan hal itulah yang membuat aplikasi web menjadi kurang interaktif dan responsif. Oleh karena itu, Ajax digunakan untuk memecah masalah tersebut, Ajax membuat aplikasi website menjadi lebih interaktif dan responsif serta memiliki kecepatan dalam memproses request ke server. Saat ini Ajax sudah menjadi teknologi yang wajib di terapkan bagi websitewebsite modern seperti teknologi web versi 2.0
Gambar 2.1 : Cara kerja Ajax Sumber : http://goo.gl/pA1HMu
33
Pada aplikasi javascript konvensional, jika user menginginkan data dari server, biasanya harus menggunakan form dan memanggilnya dengan method GET atau POST. Sehingga pengunjung perlu mengklik tombol dan kemudian halaman akan merefresh utuk menampilkan hasil dari request tersebut. Di Ajax, Javascript berkomunikasi langsung ke server dengan sebuah fungsi XMLHttpRequest. Dengan XMLHttpRequest suatu halaman web dapat di request dari server dan diterima hasilnya tanpa perlu terjadi refresh pada halaman web tersebut. XMLHttpRequest telah di support oleh browser IE 5 ke atas, Safari 1.2 keatas, Mozila Firefox keatas, dan OPERA 8 keatas. Ajax merupakan penggabungan teknologi Javascript, HTML/XHTML, XML, CSS dan Server Side Client. Agar mudah dalam menggunakan Ajax, maka sangat di rekomendasikan untuk pemula mempelajari hal tersebut, sebelum melanjutkan pemahaman tentang Ajax.
2.5.1 XML XML (Extensible Markup Language) adalah bahasa markup untuk keperluan umum yang disarankan oleh W3C untuk membuat dokumen markup keperluan pertukaran data antar sistem yang beraneka ragam.[1] XML merupakan kelanjutan dari HTML (HyperText Markup Language) yang merupakan bahasa standar untuk melacak Internet. XML didesain untuk mempu menyimpan data secara ringkas dan mudah diatur. Kata kunci utama XML adalah data (jamak dari datum) yang jika diolah bisa memberikan informasi. XML menyediakan suatu cara terstandarisasi namun bisa dimodifikasi untuk menggambarkan isi dari dokumen. Dengan sendirinya, XML dapat digunakan untuk menggambarkan sembarang view database, tetapi dengan suatu cara yang standar.
34
Contoh dokumen XML :
<judul>Roti tawar tepung ragi air hangat garam Campur semua bahan dan uleni adonan sampai merata. Tutup dengan kain lembap dan biarkan selama satu jam di ruangan yang hangat. Ulangi lagi, letakkan di loyang dan panggang di oven. Keluarkan, hidangkan 2.5.2 Mobile Web (Web Client) Dalam implementasinya, Webview mempunyai dua buah klien yang dapat digunakan untuk me-render halaman web, dan tiap-tiap klien tersebut mempunyai fungsionalitas yang berbeda-beda. Kedua klien tersebut adalah Webview Client dan Web Chrome Client. Webview Client adalah sebuah browser klien yang menyediakan fungsifungsi dasar dalam menampilkan halaman web. Sedangkan, Web Chrome Client adalah browser klien yang menyediakan fitur-fitur advanced dalam rendering halaman web, kebanyakan berhubungan dengan interaksi antara browser dengan javascript, menampilkan objek seperti video, dan fitur-fitur advanced lainnya. Developer dapat menggunakan kedua klien tersebut, namun apabila hanya ingin me-render halaman web yang tidak membutuhkan banyak fitur (misal berisi HTML saja, tanpa javascript) maka cukup menggunakan WebviewClient.
35
2.5.3 Representational State Transfer of Application Programming Interface (REST API) Antarmuka pemrograman aplikasi (application programming interface atau disingkat API) adalah sekumpulan perintah, fungsi, serta protokol yang dapat digunakan oleh programmer saat membangun perangkat lunak untuk sistem tertentu. API memungkinkan programmer untuk menggunakan fungsi standar untuk berinteraksi dengan sistem. API dapat menjelaskan cara sebuah tugas (task) tertentu dilakukan. Dalam pemrograman prosedural seperti bahasa C, aksi biasanya dilakukan dengan media pemanggilan fungsi. Karena itu, API biasanya menyertakan penjelasan dari fungsi/sub rutin yang disediakannya. REST adalah web service yang menerapkan konsep perpindahan antar state dimana dalam bernavigasi REST melalui link HTTP untuk melakukan aktivitas tertentu. Dalam pengaplikasiannya REST banyak digunakan untuk web service yang berorientasi pada resource. Maksud orientasi pada resource adalah orientasi yang menyediakan resource sebagai layanannya dan bukan kumpulan dari aktifitas yang mengolah resource itu. Response dari web service REST dapat berupa XML atau JSON.` Link-link http yang disediakan sama halnya dengan mengganti state dari halaman web. Begitu pula REST bekerja, dengan bernavigasi melalui link-link HTTP untuk melakukan aktivitas tertentu, seakan-akan terjadi perpindahan state satu sama lain. Perintah HTTP yang bisa digunakan adalah fungsi GET, POST, PUT atau DELETE. Balasan yang dikirimkan adalah dalam bentuk XML atau JSON secara sederhana tanpa ada protokol paket data khusus, sehingga informasi yang diterima lebih mudah dibaca dan diparsing disisi client.
36
Dengan kata lain, REST adalah salah satu jenis web service yang menerapkan konsep perpindahan antar state. State disini dapat digambarkan seperti sebuah browser yang meminta suatu data ke halaman web, maka server akan mengirimkan state ke halaman web yang sekarang adalah browser secara realtime, tanpa melakukan refresh dan memuat keseluruhan isi konten . Selain itu, karena standarnya yang kurang sehingga tidak begitu cocok diterapkan dalam aplikasi yang membutuhkan kerjasama antar aplikasi lain, dimana standar yang baik akan sangat berguna karena berbicara dalam satu bahasa yang sama. Beberapa contoh web service yang menggunakan REST adalah: Flickr API, YouTube API, Amazon API dan Google API.
Gambar 2.2 : Cara kerja Rest API Client Sumber : gambar telah diolah kembali
Dalam proses pengembangan aplikasi native berbasis mobile, biasanya diperlukan sebuah sistem pendukung pihak ketiga yang berfungsi sebagai media penyedia data dan pemroses pertukaran data antar sistem yang berbeda. Sistem itu biasanya disebut dengan web service API. Web service API adalah sebuah sofware aplikasi yang tidak terpengaruh oleh platform, ia akan menyediakan sekumpulan fungsi/method yang dapat diakses oleh network dan aplikasi lain.
37
Sistem tersebut dapat menggunakan format extensible markup language (XML), simple object access Protocol (SOAP), atau Javascript Object Notation (JSON). Pada kasus aplikasi bolakoe, proses pengembangan akan menggunakan format JSON, karena terbilang teknologi baru yang memiliki beberapa kelebihan. JSON merupakan format pertukaran data yang ringan, mudah dibaca dan ditulis oleh manusia, serta mudah diterjemahkan dan dibuat (generate) oleh komputer. Format ini dibuat berdasarkan bagian dari bahasa pemprograman java script mekanisme untuk pertukaran data. Perlu diketahui bahwa hanya PHP versi 5.2 keatas yang sudah mempunyai atau di dukung fungsi json_encode dan json_decode, json_encode adalah fungsi yang mengubah format data Array menjadi JSON, sedangkan json_decode berfungsi sebaliknya, mengubah JSON menjadi PHP Array. Berikut adalah langkah-langkah pengembangan aplikasi webservices untuk mendukung pengembangan aplikasi mobile bolakoe: 1. Persiapkan list data dari database yang sudah dibuat sebelumnya, kemudian buatlah list data apa saja yang ingin digunakan dan ditampilkan untuk aplikasi
mobile nanti, misalnya: data_user,
data_training, data_performance, data_country dan lainnya. 2. Data-data yang sudah di list tersebut nantinya akan digunakan dan dibuat sebagai sekumpulan fungsi/method yang dirubah menjadi format JSON. Berikut ini contoh dasar dalam membuat API, yaitu dengan cara merubah (parsing) sebuah data array/object menjadi data JSON dengan PHP: 3. Mempersiapkan Aplikasi kode editor seperti sublime, notepad++, eclipse atau yang lainnya //Format PHP :
38
$e = new ID_card(); $e->nama = "Adi"; $e->hobi = "Fotografi"; $e->birthdate = date('m/d/Y h:i:s a', "6/14/1991 12:20:03 p"); $e->birthdate = date('m/d/Y h:i:s a', strtotime("6/14/1991 12:20:03")); echo json_encode($e); ?> //Setelah di encode, maka keluarannya menjadi Format JSON seperti dibawah ini : {"nama":"Adi","hobi":"Fotografi","birthdate":"06\/014\/1991 12:20:03 pm"} 4. Berikut ini contoh langkah-langkah pembuatan web service, Setelah data-data yang akan digunakan selesai di list, kemudian persiapkan tools sebagai kode editor-nya untuk menulis program atau kode php. Pada pengembangan aplikasi ini, akan digunakan aplikasi kode editor bernama sublime_text versi 2 sebagai development tools. Terdapat sebuah file yang sangat penting pada file project web yaitu file database.php berfungsi
sebagai koneksi data web API ke database server.
Sebelum membuat sebuah API, pastikan terlebih dahulu kode file database.php sebagai koneksi ke database server tidak ada masalah. Apabila sudah dilakukan uji coba bahwa koneksi tidak ada masalah, maka langkah selanjutnya adalah persiapan penulisan kode php dari data list yang pernah dibuat sebelumnya dan implementasi parsing data menggunakan kode php dengan fungsi json_encode. Sebenarnya proses pengembangan aplikasi lebih ditekankan dan difokuskan ke arah aplikasi mobile, namun karena aplikasi native membutuhkan dukungan webservice jadi setidaknya akan dibahas secara ringkas dan sederhana cara membuat method-nya bekerja dibelakang sistem.
39
Oleh sebab itu agar memungkinkan developer untuk mengelola data yang besar dan secara berkesinambungan, proses pengembangan perlu memanfaatkan tools untuk mendesain API, mendokumentasikan API, mengelola data API dan juga menguji komunikasi data API (request/respon) dengan database server yang dituju. Tools tersebut bernama APIARY, fungsinya adalah selain untuk mendesain API, apiary dapat juga mendokumentasikan dan menguji/testing keluaran data yang di parsing dari php menjadi format json atau sebaliknya. Untuk dapat menggunakan tools APIARY kita dapat mengakes websitenya melalui link berikut https://apiary.io, namun pada saat pertama kali mengaksesnya, penggunaa harus melakukan pendaftaran terlebih dahulu, pendaftaran bisa dilakukan menggunakan email atau menggunakan akun github, jika sudah berhasil mendaftar kemudian cobalah untuk masuk ke sistem login sesuai informasi user id pada saat melakukan pendaftaran. Berikut tampilan dari akun bolakoe API seperti gambar di bawah ini :
Gambar 2.3 : Halaman Editor Apiary Sumber : http://docs.bollakoeapi.apiary.io/#
Pada
gambar 2.3
menampilkan halaman editor dari server apiary.
Sebagai contoh kita akan mulai menuliskan kode JSON, kode yang akan ditulis tidak akan ditampilkan disini, kecuali mengaksesnya via browser dari alamat sumber yang tertera pada gambar 2.3.
40
Penulisan API harus mengikuti aturan dan format dari APIARY tools, pengembang perlu menyesuaikan untuk melakukan pengujian, mengetahui apakah cara penulisan kode tersebut sudah benar dan berjalan dengan baik dengan cara mengakses fitur-fitur yang tertera pada APIARY seperti fungsi call untuk mocking server. Dokumentasi lengkap dapat dilihat di website APIARY untuk memahami struktur penulisan kodenya dan aturannya lebih lanjut. Berikut
ini
link
dari
dokumentasi
APIARY
https://help.apiary.io/tools/interactive-documentation dan cara penulisan API Blueprint di APIARY https://help.apiary.io/api_101/api_blueprint_tutorial. Dalam penulisan kode abaikan penulisan komen sepert simbol “//” garis miring ganda, karena penulisan tersebut hanya berlaku digunakan dalam implementasi penulisan laporan ini sebagai komentar atau informasi, jika pada format APIARY sebenarnya tanda garis miring tersebut tidak berlaku atau tidak ditulis, karena bisa menyebabkan galat. Setelah mengetahui informasi dari dokumentasi APIARY, kemudian dilanjut dengan penulisan kodenya pada menu editor seperti pada gambar 2.7. Berikut ini kode yang dituliskan beserta penjelasannya: FORMAT: 1A //informasi tentang standar format yang digunakan untuk APIARY HOST: http://bolakoe.mindidea.net/home //Alamat server yang kita tuju untuk mengambil data json # Bolakoe API //Simbol hashtag berfungsi sebagai Header judul dari kode Dokumentasi ini bertujuan untuk mendeskripsikan request dan response dari API yang tersedia pada Bolakoe ## User Registration //Format untuk melakukan aksi request data dari database server [/?act=register&role={role}&username={username}&email={email}&password={password}] ### Register [POST] // Method POST merupakan method yang digunakan untuk mengambil/menarik data dari API // [ POST ] http://bolakoe.mindidea.net/home/?act=register&role=role&username=username&email=email&password=password
//Sebuah nilai-nilai parameter fungsi yang digunakan untuk request data ke database server /*Untuk mengetahui value berupa data json dari parameter fungsi tersebut, caranya adalah dengan melakukan mock server pada halaman dokumentasi apiary*/ + Parameters + role (required, string, `player`) ... + username (required, string, `budi`) ...
41
+ email (required, string, `
[email protected]`) ... + password (required, string, `budipassword`) ... //Hasil respon jika data yang dicari dan dicek bernilai benar + Response 200 (plain/text) ok //Hasil respon jika data yang dicari tidak ada atau bernilai salah + Response 200 (plain/text) error messages //Contoh lain login menggunakan akun budi ## User Login [/?act=login&username={username}&password={password}] ### Login [POST] + Parameters + username (required, string, `budi`) ... + password (required, string, `budipassword`) ... + Response 200 (application/json) { "status": "success", "uid": "115", "username": "budi", "session": "23eaee6837d922fd35236f169586e7f5", "level": "player", "image": "default_user.jpg", "friend_request": 0, "ver_request": 0 } + Response 200 (application/json) { "status": "error", "msg": "wrong username or password " } ## Post/Update Status [/?act=poststatus&username={username}&content={content}] ### Post/Update Status [POST] + Parameters + username (required, string, `budi`) ... + content (required, string, `Halo semuanya`) ... + Response 200 (plain/text) ok + Response 200 (plain/text) error message ## Delete Post/Status [/?act=deletepost&username={username}&id={post_id}] ### Delete Post/Status [POST] + Parameters
42
+ username (required, string, `budi`) ... + post_id (required, number, `20`) ... + Response 200 (plain/text) ok + Response 200 (plain/text) error message ## Home Feed [/?act=homefeed&user={user}] ### Show User Home Feed [POST] + Parameters + user (required, string, `budi`) ... + Response 200 (application/json) [ { "username": "budi", "id_post": 42, "content": "", "date_created": "1458806751", "time_created": "08:05:51", "id_user": "115", "pass": "00dfc53ee86af02e742515cdcf075ed3", "email": "
[email protected]", "session": "23eaee6837d922fd35236f169586e7f5", "ver": "Y", "blok": "n", "level": "player", "id_detail": "151", "name": "Budi", "gender": "", "address": "", "id_city": "0", "country": "", "id_card": "", "phone": "", "birth": "0000-00-00", "bio": "", "position": "", "fav_team": "", "weight": "0", "height": "0", "foot": "", "image": "/gallery/default_user.jpg", "license": "", "url_license": "", "TimeSpent": "11" } ]
43
## User Profile [/?act=profile&username={username}] ### Show User Profile [POST] + Parameters + username (required, string, `budi`) ... + Response 200 (application/json) { "biodata": { "id_detail": "151", "username": null, "name": "Budi", "gender": "", "address": "", "id_city": "0", "country": "", "id_card": "", "phone": "", "birth": "0000-00-00", "bio": "", "position": "", "fav_team": "", "weight": "0", "height": "0", "foot": "", "image": "default_user.jpg", "license": "", "url_license": "", "id_user": "115", "pass": "00dfc53ee86af02e742515cdcf075ed3", "email": "
[email protected]", "session": "23eaee6837d922fd35236f169586e7f5", "ver": "Y", "blok": "n", "level": "player", "update_performance": null, "strength": null, "stamina": null, "speed": null, "power": null, "flexibility": null, "agility": null, "passing": null, "dribbling": null, "shooting": null, "validasi": null, "class": null, "id_country": null, "name_country": null, "id_position": null,
44
"name_position": null, "id_club": null, "name_club": null, "nation": null, "id_foot": null, "name_foot": null, "des_foot": null, "id_classification": null, "name_classification": null, "dess_classification": null, "age": "2016" }, "profile": { "id_user": "115", "username": "budi", "pass": "00dfc53ee86af02e742515cdcf075ed3", "email": "
[email protected]", "session": "23eaee6837d922fd35236f169586e7f5", "ver": "Y", "blok": "n", "level": "player", "id_detail": "151", "name": "Budi", "gender": "", "address": "", "id_city": "0", "country": "", "id_card": "", "phone": "", "birth": "0000-00-00", "bio": "", "position": "", "fav_team": "", "weight": "0", "height": "0", "foot": "", "image": "default_user.jpg", "license": "", "url_license": "" }, "performance": null }
## Player Profile [/?act=playerprofile&username={username}&people={people}] ### Show Player Profile as Another User [POST] + Parameters + username (required, string, `budi`) ...
45
+ people (required, string, `oky`) ... + Response 200 (application/json) { "biodata": { "id_detail": "5", "username": "oky", "name": "Rizky Ajie Oktora", "gender": "M", "address": "Jl. Binong", "id_city": "24", "country": "ID", "id_card": "12345678910", "phone": "08123", "birth": "1989-10-23", "bio": "asd", "position": "AMC", "fav_team": "92", "weight": "56", "height": "163", "foot": "R", "image": "1919260764_1616305902_1847640628_n.jpg", "license": "", "url_license": "", "id_user": "5", "pass": "21232f297a57a5a743894a0e4a801fc3", "email": "
[email protected]", "session": "8ea4da98babc9e7f049be8ef88646d90", "ver": "Y", "blok": "n", "level": "player", "update_performance": "2015-12-16", "strength": "5", "stamina": "20", "speed": "20", "power": "4", "flexibility": "4", "agility": "20", "passing": "8", "dribbling": "20", "shooting": "4", "validasi": "Mandiri-1", "class": "senior", "id_country": "ID", "name_country": "INDONESIA", "id_position": "AMC", "name_position": "Attacking Midfielder Centre", "id_club": "92", "name_club": "Persib Bandung ",
46
"nation": "INDONESIA", "id_foot": "R", "name_foot": "Right", "des_foot": "Right Only", "id_classification": "senior", "name_classification": "Senior", "dess_classification": "", "age": "26" }, "friend_status": "notfriend", "squad_status": "0", "profile": { "id_user": "5", "username": "oky", "pass": "21232f297a57a5a743894a0e4a801fc3", "email": "
[email protected]", "session": "8ea4da98babc9e7f049be8ef88646d90", "ver": "Y", "blok": "n", "level": "player", "id_detail": "5", "name": "Rizky Ajie Oktora", "gender": "M", "address": "Jl. Binong", "id_city": "24", "country": "ID", "id_card": "12345678910", "phone": "08123", "birth": "1989-10-23", "bio": "asd", "position": "AMC", "fav_team": "92", "weight": "56", "height": "163", "foot": "R", "image": "1919260764_1616305902_1847640628_n.jpg", "license": "", "url_license": "" }, "performance": { "username": "oky", "update_performance": "2015-12-16", "strength": "5", "stamina": "20", "speed": "20", "power": "4", "flexibility": "4", "agility": "20",
47
"passing": "8", "dribbling": "20", "shooting": "4", "validasi": "Mandiri-1", "class": "senior" }, "progress": [{ "username": "oky", "update_performance": "2015-12-16", "strength": "5", "stamina": "20", "speed": "20", "power": "4", "flexibility": "4", "agility": "20", "passing": "8", "dribbling": "20", "shooting": "4", "validasi": "Mandiri-1", "class": "senior", "update_trainning": "2015-12-16", "balke": "680", "passacc": "4", "passspeed": "6", "pushup": "0", "run30m": "0", "run300m": "0", "runball30m": "0", "shootball": "0", "shuttle": "0", "sitreach": "0", "situp": "0", "verjump": "0", "image": "", "video": "", "coach": "", "video_path": "", "ver_status": "requesting" }, { "username": "oky", "update_performance": "2015-12-14", "strength": "4", "stamina": "20", "speed": "20", "power": "20", "flexibility": "4", "agility": "20", "passing": "8",
48
"dribbling": "20", "shooting": "4", "validasi": "Mandiri-1", "class": "senior", "update_trainning": "2015-12-14", "balke": "0", "passacc": "0", "passspeed": "9", "pushup": "0", "run30m": "0", "run300m": "0", "runball30m": "0", "shootball": "0", "shuttle": "0", "sitreach": "0", "situp": "0", "verjump": "66", "image": "", "video": "", "coach": "", "video_path": "20151214000933-File0101.mp4", "ver_status": "" }, { "username": "oky", "update_performance": "2015-12-13", "strength": "5", "stamina": "20", "speed": "20", "power": "4", "flexibility": "4", "agility": "20", "passing": "8", "dribbling": "20", "shooting": "4", "validasi": "Mandiri-1", "class": "senior", "update_trainning": "2015-12-13", "balke": "550", "passacc": "5", "passspeed": "0", "pushup": "0", "run30m": "0", "run300m": "0", "runball30m": "0", "shootball": "0", "shuttle": "0", "sitreach": "0", "situp": "0",
49
"verjump": "0", "image": "", "video": "", "coach": "", "video_path": "20151213045842-File0101.mp4", "ver_status": "requesting" }, { "username": "oky", "update_performance": "2015-11-20", "strength": "4", "stamina": "20", "speed": "20", "power": "4", "flexibility": "4", "agility": "20", "passing": "4", "dribbling": "20", "shooting": "4", "validasi": "Mandiri-1", "class": "senior", "update_trainning": "2015-11-20", "balke": "0", "passacc": "0", "passspeed": "0", "pushup": "0", "run30m": "0", "run300m": "0", "runball30m": "0", "shootball": "0", "shuttle": "0", "sitreach": "0", "situp": "0", "verjump": "0", "image": "", "video": "", "coach": "", "video_path": "", "ver_status": "requesting" }, { "username": "oky", "update_performance": "2015-11-04", "strength": "12", "stamina": "4", "speed": "4", "power": "12", "flexibility": "8", "agility": "20", "passing": "8",
50
"dribbling": "4", "shooting": "12", "validasi": "Coach-C", "class": "senior", "update_trainning": "2015-11-04", "balke": "890", "passacc": "5", "passspeed": "8", "pushup": "93", "run30m": "11", "run300m": "111", "runball30m": "8", "shootball": "7", "shuttle": "0", "sitreach": "14", "situp": "58", "verjump": "40", "image": "", "video": "", "coach": "", "video_path": "", "ver_status": "requesting" }], "average": { "username": "oky", "agility": "11.6923", "passing": "7.5385", "dribbling": "10.1538", "shooting": "8.3077", "strength": "7.4615", "stamina": "10.1538", "speed": "9.8462", "power": "8.9231", "flexibility": "6.4615" } } ## Player Video [/?act=showplayervideo&username={username}] ### Show List Player Video [POST] + Parameters + username (required, string, `oky`) ... + Response 200 (application/json) [{ "id": "18", "username": "oky", "title": "h", "desc": "j",
51
"path": "20151213152705-File0101.mp4", "created_at": "2015-12-13 22:27:05" }, { "id": "19", "username": "oky", "title": "aa", "desc": "aa", "path": "20151214000837-File0101.mp4", "created_at": "2015-12-14 07:08:40" }]
Kode yang dituliskan pada paragraf sebelumnya merupakan kode yang akan digunakan sebagai kode testing yang akan memperlihatkan data json yang diperoleh dari httpRequest dan/atau httpClient berdasarkan data pengguna yang valid dan terdaftar sebagai pengguna aplikasi bolakoe. Pada halaman dokumentasi tersebut hanya akan menampilkan beberapa fungsi/method dari URL httpRequest dan/atau httpClient untuk mengakses data json yang telah di encode oleh server. Tapi sebagian fungsi/method lainnya tidak dituliskan karena alasan keamanan, meskipun hanya beberapa bagian API yang penting saja yang dituliskan dan ditampilkan kepada developer, seperti URL untuk melakukan aksi request registration, login, dan yang lainnya. Tampilan setelah kode testing ditulis kira-kira akan seperti gambar berikut :
Gambar 2.4 : Menulis fungsi (method) kode API Sumber : http://goo.gl/LB1CXc , 2016
52
Apabila ingin melihat output dari penulisan dokumentasi API yang ditulis sebelumya, bisa dilakukan dengan cara menggeser tombol off ke on pada sebuah preview panel, seperti gambar berikut:
Gambar 2.5 : Preview tampilan dokumentasi API Sumber : http://docs.bollakoeapi.apiary.io/#
Kemudian selain daripada itu, developer juga dapat melakukan pengujian seperti pemanggilan data json ke server dengan cara mocking server dan pemanggilan data tersebut menggunakan method POST, namun untuk tahapan implementasi pengujian ini akan dibahas pada bab selanjutnya yang membahas implementasi dan pengujian. Berikut salah satu contoh format penulisan standar yang akan dituliskan dalam pengembangan aplikasi mobile, URL berikut berfungsi untuk melakukan request data json yang telah di encode dari server bolakoe api, berikut ini implementasinya: Format HttpRequest/Client : http://bolakoe.mindidea.net/api/?act=playerprofile&username=username&peopl e=people Edit nilai dari parameter di HttpURL: http://bolakoe.mindidea.net/api/?act=playerprofile&username=adiernes&people =adiernes
53
Format data standar untuk akses data json bolakoe pada halaman sebelumnya menjelaskan bahwa jika kita ingin melakukan request (meminta) data profile dari pengguna yang memiliki username “adiernes”, httpRequest tersebut yang bertindak sebagai link yang mengirim data dan menampilkan data keseluruhan ke aplikasi client baik itu web browser atau pun mobile. keseluruhan data tersebut jika dipanggil menggunakan URL yang berbeda dari API maka akan menampilkani data-data lainnya seperti data training, performance, biodata,
friend_status, performance, profile, progress, squad
status, video dan yang lainnya. Berikut adalah contoh untuk melakukan request data dari server dan menampilkannya via web browser tanpa menggunakan tools mock server dari APIARY, karena pada dasarnya proses pemanggilan data di aplikasi itu sama, yang membedakan hanya fungsi/method yang digunakan: 1. Copy link URL yang diatas, lalu paste di address box web browser 2. Tekan enter, jika tampil data json sesuai username yang di inputkan, berarti request data berhasil dan jika datanya hanya berupa array/object seperti “[]” kosong berarti benar, namun itu hanya menandakan bahwa data masih kosong /belum terisi. Contoh: {"biodata":null,"friend_status":"notfriend","squad_status":"0","profil e":null,"performance":null,"average":{"username":null,"agility":null, "passing":null,"dribbling":null,"shooting":null,"strength":null,"stamin a":null,"speed":null,"power":null,"flexibility":null}} 3. Jika data error berarti ada yang salah dalam penulisan kode API-nya. 5. Jika data benar, maka akan muncul kode JSON seperti tampilan di bawah ini dan agar data bisa dilihat lebih terstruktur lakukan copy dan paste kode tersebut di website http://jsonformat.com, kemudian klik proses dan lihat hasilnya seperti berikut : { "average" : { "agility" : "4.0000", "dribbling" : "4.0000", "flexibility" : "20.0000", "passing" : "18.0000", "power" : "18.0000",
54
"shooting" : "20.0000", "speed" : "4.0000", "stamina" : "4.0000", "strength" : "20.0000", "username" : "adiernes" }, "biodata" : { "address" : "Kabembem", "age" : "25", "agility" : "4", "bio" : "Im newbie player", "birth" : "1991-06-14", "blok" : "n", "class" : "senior", "country" : "ID", "des_foot" : "Right Only", "dess_classification" : "", "dribbling" : "4", "email" : "
[email protected]", "fav_team" : "46", "flexibility" : "20", "foot" : "R", "gender" : "M", "height" : "175", "id_card" : "7", "id_city" : "38", "id_classification" : "senior", "id_club" : "46", "id_country" : "ID", "id_detail" : "160", "id_foot" : "R", "id_position" : "ST", "id_user" : "124", "image" : "14CYMERA_20151215_014843.jpg", "level" : "player", "license" : "", "name" : "Adi Ernes", "name_classification" : "Senior", "name_club" : "AC Milan ", "name_country" : "INDONESIA", "name_foot" : "Right", "name_position" : "Striker", "nation" : "ITALY", "pass" : "21232f297a57a5a743894a0e4a801fc3", "passing" : "20", "phone" : "+6282218629590", "position" : "ST", "power" : "20", "session" : "8b6b4df570a30b0c8547ad4c33da9ace", "shooting" : "20", "speed" : "4", "stamina" : "4", "strength" : "20", "update_performance" : "2016-07-28", "url_license" : "", "username" : "adiernes",
55
"validasi" : "Mandiri-1", "ver" : "Y", "weight" : "65" }, "friend_status" : "requesting", "performance" : { "agility" : "4", "class" : "senior", "dribbling" : "4", "flexibility" : "20", "passing" : "20", "power" : "20", "shooting" : "20", "speed" : "4", "stamina" : "4", "strength" : "20", "update_performance" : "2016-07-28", "username" : "adiernes", "validasi" : "Mandiri-1" }, "profile" : { "address" : "Kabembem", "bio" : "Im newbie player", "birth" : "1991-06-14", "blok" : "n", "country" : "ID", "email" : "
[email protected]", "fav_team" : "46", "foot" : "R", "gender" : "M", "height" : "175", "id_card" : "7", "id_city" : "38", "id_detail" : "160", "id_user" : "124", "image" : "14CYMERA_20151215_014843.jpg", "level" : "player", "license" : "", "name" : "Adi Ernes", "pass" : "21232f297a57a5a743894a0e4a801fc3", "phone" : "+6282218629590", "position" : "ST", "session" : "8b6b4df570a30b0c8547ad4c33da9ace", "url_license" : "", "username" : "adiernes", "ver" : "Y", "weight" : "65" }, "progress" : [ { "agility" : "4", "balke" : "1700", "class" : "senior", "coach" : "", "dribbling" : "4", "flexibility" : "20", "image" : "", "passacc" : "10", "passing" : "20",
56
"passspeed" : "20", "power" : "20", "pushup" : "150", "run300m" : "250", "run30m" : "20", "runball30m" : "19", "shootball" : "20", "shooting" : "20", "shuttle" : "20", "sitreach" : "27", "situp" : "124", "speed" : "4", "stamina" : "4", "strength" : "20", "update_performance" : "2016-07-28", "update_trainning" : "2016-07-28", "username" : "adiernes", "validasi" : "Mandiri-1", "ver_status" : "", "verjump" : "100", "video" : "", "video_path" : "" }, { "agility" : "4", "balke" : "1520", "class" : "senior", "coach" : "", "dribbling" : "4", "flexibility" : "20", "image" : "", "passacc" : "7", "passing" : "16", "passspeed" : "18", "power" : "16", "pushup" : "150", "run300m" : "175", "run30m" : "18", "runball30m" : "15", "shootball" : "18", "shooting" : "20", "shuttle" : "17", "sitreach" : "23", "situp" : "123", "speed" : "4", "stamina" : "4", "strength" : "20", "update_performance" : "2016-06-23", "update_trainning" : "2016-06-23", "username" : "adiernes", "validasi" : "Mandiri-1", "ver_status" : "", "verjump" : "57", "video" : "", "video_path" : "20160623055628-20151214000837-File0101.mp4" } ], "squad_status" : "0"}
57
Kesimpulannya adalah kode JSON yang terdapat pada paragraf sebelumnya, merupakan
salah satu bagian dari metode komunikasi data dan
pertukaran data antara server dengan aplikasi klien. Komunikasi tersebut sebagai gambaran fungsi-fungsi dari aplikasi web bolakoe secara keseluruhan yang sudah di parsing menjadi data JSON agar data tersebut dapat digunakan dan dikirimkan ke aplikasi mobile, khususnya native android. Dan karena dalam pengembangan aplikasi bolakoe fungsi/method yang digunakan sebelumnya adalah POST, maka proses pengiriman dan pertukaran data dilakukan secara tidak terlihat atau dibelakang layar oleh server, dan untuk mengaskes link dan menampilkan data JSON hanya dapat dilakukan dengan cara mengetikan link httpURL beserta parameter API-nya melalui web browser. Agar kode tersebut bisa lebih mudah dikelola dan dilihat, maka URL dan kode tersebut akan dibuatkan dokumentasinya menggunakan tools API Designer/Prototyping yaitu APIARY. Berbeda halnya dengan fungsi/method GET yaitu proses pengiriman data akan disimpan dan ditampilkan secara otomatis di web browser berupa link httpURL beserta parameter keluarannya tanpa perlu mengetik URL pada web browser. 2.6 Mobile Native Application Mobile native application atau biasa disebut dengan Native Apps adalah aplikasi mobile yang dibuat khusus untuk suatu
platform tertentu misalnya
android, iOS atau blackberry. Biasanya pusat developer aplikasi menyediakan tools dan API khusus bagi para developer untuk pembuatan aplikasi. Berikut tools dan software pendukung yang dapat digunakan untuk membuat aplikasi android adalah sebagai berikut: 1.Android Studio (Android Developmet Tools), 2. Kabel Usb port, 3. Koneksi Internet, 4. Hosting Website. 5. APIARY Tools for API Documentation and Testing,
58
Android Studio merupakan software yang dibangun untuk proses pengembangan aplikasi android, sistem operasi android berbasis linux sehingga aplikasi tersebut bersifat open source yang dibawahi oleh lisensi apache. Android studio dapat di download secara online dan gratis di alamat berikut https://developer.android.com/studio/index.html. Namun sekarang Android sudah di akusisi dan di danai oleh Perusahaan search engine ternama yaitu Google inc. Pada penelitian ini, akan dilakukan pengembangan aplikasi android berbasis native yang menggunakan Android Studio sebagai aplikasi development tools, alasanya karena Android Studio merupakan platform keluaran terbaru dari google sehingga telah di dukung secara berkesinambungan oleh google dari sisi pemanfaatan library (pustaka) dan fitur-fitur terbaru yang disediakan google. Kelebihan native apps dibandingkan dengan aplikasi web app biasa adalah memiliki akses lebih cepat terhadap fungsi yang dimilikinya dan bisa mengakses semua komponen dan sensor yang ada pada mobile seperti GPS, gyroscope, barometer, termometer,magnetometer, alarm, camera dan masih banyak lagi. Perlu diketahui bahwa aplikasi yang membutuhkan fitur GPS, gyroscope, alarm dan camera ini tidak bisa digunakan pada Web app (Kecuali dengan bantuan framework tertentu seperti Sencha Touch dan Phonegap) ada beberapa komponen sensor yang dapat diakses dan digunakan oleh framework tersebut.
Gambar 2.6 : Perbedaan Aplikasi mobile native dengan Aplikasi non native (web app) Sumber : http://goo.gl/Pz2Ah1
59
Pada gambar 2.6 menampilkan gambaran perbandingan dari aplikasi native mobile dengan aplikasi non-native mobile atau bisa disebut dengan mobile web app. Native app juga bisa dikatakan sebagai aplikasi yang biasa digunakan pada perangkat smartphone, tablet dan yang lainnya. Aplikasi tersebut umumnya dapat di install secara langsung pada sebuah perangkat tersebut. Dalam mendapatkan aplikasi pengguna biasanya cenderung memerlukan akses ke sebuah situs toko online yang menyediakan dan menjual aplikasi android baik yang berbayar maupun yang tidak berbayar (gratis) seperti di beberapa marketplace terkenal yaitu Appstore, Google Play dan Uptoide. Contoh aplikasi native yaitu digital mobile payment, fingerprint apps. Sedangkan jika menjelaskan tentang aplikasi web mobile (mobile web apps), kita akan lebih merasakan fungsionalitas dari aplikasi web browser yang kita gunakan dalam mencoba menjalankan kegunaan seluruh aplikasi sepenuhnya disisi web browser. Aplikasi tidak dapat melakukan akses ke fitur atau sensorsensor seperti kamera, gps maupun sensor lainnya yang ada di sebuah perangkat smartphone.
2.7 Android Platform Android adalah sistem operasi yang digunakan di smartphone dan juga tablet PC. Fungsinya sama seperti sistem operasi Symbian di Nokia, iOS di Apple dan BlackBerry OS. Android tidak terikat ke satu merek handphone saja, beberapa vendor terkenal yang sudah memakai Android antara lain Samsung , Sony Ericsson, HTC, Nexus, Motorolla dan lain-lain. Android pertama kali dikembangkan oleh perusahaan bernama Android Inc., dan pada tahun 2005 di akuisisi oleh raksasa Internet Google. Android dibuat dengan basis kernel Linux yang telah dimodifikasi, dan untuk setiap release-nya diberi kode nama berdasarkan nama makanan. Keunggulan utama Android adalah gratis dan open source, yang membuat smartphone Android dijual lebih murah dibandingkan dengan Blackberry atau iPhone meski fitur (hardware) yang ditawarkan Android lebih baik.
60
Beberapa fitur utama dari Android antara lain WiFi hotspot, Multi-touch, Multitasking, GPS, accelerometers, support java, mendukung banyak jaringan (GSM/EDGE, IDEN, CDMA, EV-DO, UMTS, Bluetooth, Wi-Fi, LTE & WiMAX) serta juga kemampuan dasar handphone pada umumnya. 2.7.1 Versi Android yang beredar saat ini diantaranya: Eclair (2.0 / 2.1) Versi Android awal yang mulai dipakai oleh banyak smartphone, fitur utama Eclair yaitu perubahan total struktur dan tampilan user interface dan merupakan versi Android yang pertama kali mendukung format HTML5. Froyo / Frozen Yogurt (2.2) Android 2.2 dirilis dengan 20 fitur baru, antara lain peningkatan kecepatan, fitur Wi-Fi hotspot tethering dan dukungan terhadap Adobe Flash. Gingerbread (2.3) Perubahan utama di versi 2.3 ini termasuk update UI, peningkatan fitur soft keyboard & copy/paste, power management, dan support Near Field Communication. Honeycomb (3.0, 3.1 dan 3.2) Merupakan versi Android yang ditujukan untuk gadget / device dengan layar besar seperti Tablet PC; Fitur baru Honeycomb yaitu dukungan terhadap prosessor multicore dan grafis dengan hardware acceleration (Tablet pertama yang memakai Honeycomb adalah Motorola Xoom yang dirilis bulan Februari 2011). Tablet Android Google memutuskan untuk menutup sementara akses ke source code Honeycomb, hal ini dilakukan untuk mencegah vendor pembuat handphone menginstall Honeycomb pada smartphone. Karena di versi sebelumnya banyak perusahaan menginstall Android ke dalam tablet PC, yang menyebabkan user tidak puas dan akhirnya membuat citra Android tidak bagus. 61
Ice Cream Sandwich (4.0) Android Ice Cream Sandwich diumumkan pada 10 Mei 2011 di ajang Google I/O Developer Conference (San Francisco) dan resmi dirilis pada tanggal 19 Oktober 2011 di Hongkong. “Android Ice Cream Sandwich” dapat digunakan baik di smartphone ataupun tablet. Fitur utama Android ICS 4.0 ialah Face Unlock, Android Beam (NFC), perubahan major User Interface, dan ukuran layar standar (native screen) beresolusi 720p (high definition). Android Jelly Bean (4.1, 4.2 dan 4.3) Android Jelly Bean lebih menfokuskan fiturnya ke peningkatan User Interface yang lebih lancar dan responsif. Di versi ini juga menandai hadirnya fitur Google Now yang memberikan saran dan rekomendasi berdasarkan data-data yang tersimpan (kontak, kalender, lokasi, dll) di handphone. Android KitKat (4.4) Android KitKat menfokuskan pada manajemen memory sehingga device low-end yang memiliki memory rendah tetap dapat berjalan lancar dan minim lagg. Selain itu hadir beberapa fitur lain seperti kemampuan untuk menggunakan semua tampilan layar (immersive mode), dukungan Mobile Printing, penambahan dukungan sensor baru dan hingga sekarang yang terbaru adalah versi lolipop. Android Lolipop (5.1) Android Lollipop menfokuskan pada manajemen memory dan peningkatan di sisi user interface yang flat. Sehingga device low-end yang memiliki memory rendah tetap dapat berjalan lancar dan minim lag. Tampilan layar (immersive mode), dukungan Mobile & Cloud Printing, Quick Start, 3 finger Screen Shot dan penambahan dukungan sensor baru, hingga sekarang yang terbaru adalah versi nauget yang masih terus dikembangkan.
62
2.8 JSON JSON (dilafalkan "Jason"), singkatan dari JavaScript Object Notation (notasi objek JavaScript) adalah suatu format ringkas pertukaran data komputer. Formatnya berbasis teks dan terbaca oleh manusia serta digunakan untuk merepresentasikan struktur data sederhana dan larik asosiatif (disebut objek). Format JSON sering digunakan untuk mentransmisikan data terstruktur melalui suatu koneksi jaringan pada suatu proses yang disebut serialisasi. Aplikasi utamanya adalah pada pemrograman aplikasi web AJAX dengan berperan sebagai alternatif terhadap penggunaan tradisional format XML. Walaupun JSON didasarkan pada subset bahasa pemrograman JavaScript (secara spesifik, edisi ketiga standar ECMA-262, Desember 1999 [1]) dan umumnya digunakan dengan bahasa tersebut, JSON dianggap sebagai format data yang tak tergantung pada suatu bahasa. Kode untuk pengolahan dan pembuatan data JSON telah tersedia untuk banyak jenis bahasa pemrograman. Situs json.org menyediakan daftar komprehensif pengikatan JSON yang tersedia, disusun menurut bahasa. Format JSON dispesifikasikan di RFC 4627 oleh Douglas Crockford. Tipe media Internet resmi JSON adalah application/json sedangkan ekstensi berkasnya adalah .json. Pada Desember 2005, Yahoo! mulai menawarkan opsi format JSON untuk layanan web-nya [2]. Google mulai menyediakan umpan JSON untuk protokol data-data web nya pada Desember 2006. Contoh berikut menunjukkan representasi JSON untuk suatu objek yang mendeskripsikan seseorang. { "namaDepan": "Adi", "namaBelakang": "Ahmad", "alamat": { "namaJalan": "Jl. Sudirman 15A", "kota": "Jakarta Selatan", "provinsi": "DKI Jakarta", "kodePos": 11111 }, "nomerTelepon": [ "021 555-1234", "021 555-4567" ] }
63
Contoh penggunaan JSON dengan HTML menggunakan Javascript :
JSON <script type="text/javascript"> var person={ "phonebook" : { "contact":[ { "fname":"Rian Ariona", "phone":"+628572182XXXX", "address":"bandung" },{ "fname":"John Doe", "phone":"+169572582XXXX", "address":"Los Angeles" },{ "fname":"George", "phone":"+196252145XXXX", "address":"Kanada" }] } } for(i=0;i
"); document.writeln(person.phonebook.contact[i].phone +"
"); document.writeln(person.phonebook.contact[i].address+"
"); }
2.9 JAVA (Programming Language) Java merupakan suatu teknologi perangkat lunak yang di dalamnya mencakup bahasa pemrograman. Selain itu Java juga merupakan suatu platform yang memiliki virtual machine dan library yang diperlukan untuk menulis dan menjalankan suatu program. Java sendiri pada awalnya dikembangkan pada lingkungan komputer oleh Sun Microsystem Inc. dengan tujuan untuk menghasilkan suatu bahasa komputer sederhana tanpa harus terikat pada arsitektur tertentu. Maka tak heran jika dalam perkembangannya Java dapat dijalankan pada berbagai platform sistem operasi seperti Linux, Windows maupun Unix. Karena keunikan dan kehandalannya, Java pun semakin banyak dikenal.
64
Pada tahun 1995 Sun meluncurkan sebuah browser berbasis Java dengan julukan Hot Java, kemudian diikuti Netscape yang memutuskan untuk membuat browser dengan dilengkapi bahasa Java di dalamnya. Setelahnya ikut bergabung pula berbagai pengembang ternama diantaranya IBM dan Microsoft. Pada tahun berikutnya, Sun Microsystem Inc. merilis Java Software Development Kit (JDK) pertamanya, JDK 1.1. Dan terus berkembang dari pemrograman applet yang berjalan di browser menjadi pemrograman kelas dunia yang banyak digunakan untuk pengembangan aneka ragam aplikasi. Tidak hanya pada komputer, Java juga dapat berjalan pada bermacam-macam perangkat, mulai telepon genggam sampai aplikasi berskala enterprise pada komputer server. Lingkungan Java, seperti yang disebutkan pada paragraf sebelumnya, Java merupakan bahasa pemrograman yang dapat diimplementasikan pada berbagai lingkungan, seperti internet, telepon genggam maupun komputer. Bahasa pemrograman Java secara garis besar dikelompokan menjadi tiga edisi, yaitu, Java 2 Standar Edition (J2SE), Java 2 Enterprise Edition (J2EE) dan Java 2 Micro Edition (J2ME). J2SE digunakan untuk mengembangkan aplikasi-aplikasi desktop dan applet, J2EE dipergunakan untuk mengembangkan aplikasi-aplikasi berbasis client/server berskala enterprise, sedangkan J2ME diaplikasikan pada berbagai perangkat kecil dengan jumlah memory, kapasitas penyimpan dan user interface terbatas, seperti ponsel dan PDA. J2ME Seperti paket-paket Java lainnya yang menggunakan Java Virtual Machine (JVM) sebagai interpreter, dalam J2ME digunakan pula virtual machine yang disebut K Virtual Machine (KVM) yang memiliki keunggulan tersendiri dimana hanya memerlukan memori kecil. Huruf K pada K Virtual Machine sendiri merupakan singkatan dari kilobyte, untuk menggambarkan betapa virtual machine ini bekerja pada memory yang demikian kecilnya.
KVM memungkinkan para software developer independen untuk bermain-main pada berbagai platform handset menjadi terbuka tanpa perlu melakukan perubahan berarti dalam hal programnya. Dengan J2ME yang berbasis C++, sebuah aplikasi akan memiliki portabilitas untuk dijalankan pada berbagai jenis telepon genggam.
65
MIDIlet adalah aplikasi yang dibuat menggunakan J2ME dengan profile Mobile Information Device Profile (MIDP) yang dikhususkan untuk digunakan pada handset dengan kemampuan prosessor, memori dan layar yang terbatas, misalnya ponsel, pager, PDA, Pocket PC dan sebagainya. Hingga saat ini ada dua versi platform Java J2ME yang umum digunakan pada telepon genggam yaitu MIDP 1.0 yang masih memiliki spesifikasi sederhana dan menyediakan fungsi dasar untuk aplikasi mobile, diantaranya basic user interface dan kemanan jaringan. Satu lagi MIDP 2.0, yang sudah ditambahkan berbagai fasilitas seperti game, multimedia, dukungan berbagai jenis konektivitas, maupun OTA. Meski aplikasi Java telah banyak digunakan pada telepon nirkabel, namun sudah menjadi hal umum bagi pengembang, bahwa Java tidak sepenuhnya dapat berjalan pada semua tipe ponsel meski pada telepon genggam tersebut sudah ditanamkan suatu platform Java. Penyebabnya, yaitu implementasi Java oleh masing-masing vendor telepon seluler tidaklah sama terutama pada fragmentasi API (Application Programming Interface). Maka untuk mengatasi perbedaan tersebut berbagai perusahaan teknologi di dunia seperti Nokia, Motorola, NTT DoCoMo, Sprint dan lainnya membentuk suatu kolaborasi guna menyusun spesifikasi Java yang lebih jelas bagi vendor telepon genggam, operator seluler, serta pengembang aplikasi. Spesifikasi tersebut dinamakan Java Technology for Wireless Industry (JTWI). Tujuan JTWI sendiri adalah untuk memperbaiki kompatibilitas, interoperabilitas, dan kelangkapan implementasi Java pada telepon genggam. Spesifikasi JTWI sendiri yaitu untuk meminimasi fragmentasi API serta memaksimalkan fungsionalitas pada telepon genggam sehingga dapat memperluas penerapan aplikasi Java. JTWI mendefinisikan tiga kategori spesifikasi yaitu mandatory, conditional required, dan minimum configuration. Spesifikasi mandatory yaitu MIDP 2.0, conditional required adalah MMAPI 1.1, dan minimum configuration adalah CLDC 1.0. CLDC (Connected Limited Device Configuration) adalah spesifikasi yang ditujukan pada perangkat elektronik yang memiliki sumber daya terbatas yang dikembangkan untuk keperluan teknologi wireless Java, dimana memungkinkan pengguna ponsel untuk menginstallkan aplikasi Java (MIDIlet) ke telepon genggam mereka.
66
MIDP (Mobile Information Device Profile) merupakan suatu spesifikasi untuk memperkaya fitur pada CLDC dengan menyediakan tambahan kelas yang lebih spesifik pada tipe perangkat. Sedangkan MMAPI (Mobile Media API) merupakan suatu spesifikasi yang ditujukan untuk menangani kemampuan multimedia pada telepon bergerak yang berbasis Java. Pada JTWI dikenal juga istilah WMA (Wireless Messaging API) yaitu spesifikasi yang ditujukan untuk menangani pengiriman dan penerimaan pesan singkat pada platform Java.
2.9.1 Diagram Unified Model Language (UML) Unified Modeling Language (UML) adalah himpunan struktur kasus dan teknik untuk pemodelan suatu sistem yang dibuat menggunakan sebuah program berorientasi objek (OOP). UML mulai diperkenalkan oleh Object Management Group, sebuah organisasi yang telah mengembangkan model, teknologi, dan standar OOP sejak tahun 1980-an. UML versi terbaru sudah mulai banyak digunakan oleh para praktisi OOP yaitu mendesain sistem dengan menggunakan diagram. Bahasa pemrograman java memiliki hubungan erat dengan UML, terkait sistemnya yang sudah berorientasi objek. Pada pemrograman java kebutuhan akan UML sangat diperlukan untuk memudahkan developer dalam membangun alur suatu sistem. UML juga dapat digunakan untuk memahami dan mendokumentasikan setiap sistem informasi atau software yang dibuat. Penggunaan UML dalam industri pembangunan perangkat lunak terus meningkat. Ini merupakan standar terbuka yang menjadikannya sebagai bahasa pemodelan yang umum dalam industri perangkat lunak dan pengembangan sistem. 2.9.2 Definisi Object dan Class Pemrograman java terdapat komponen yang tidak dapat dipisahkan satu sama lain dengan sebuah object dan class. Komponen tersebut merupakan gambaran dari suatu entity, baik di dunia nyata atau konsep dengan batasan-batasan dan pengertian yang tepat.
Objek bisa mewakili sesuatu yang nyata seperti komputer,mobil atau dapat berupa konsep seperti proses kimia, transaksi bank, permintaan pembelian dan lain-lain. Setiap objek dalam sistem memiliki tiga karakteristik yaitu State(Status), Behaviour(Sifat) dan Indentity(identitas).
67
Class adalah deskripsi sekelompok objek dari property(atribut), sifat (operasi), relasi antar objek dan sematik yang umum. Class merupakan template untuk membentuk objek. Setiap objek merupakan contoh dari beberapa class dan objeck tidak dapat menjadi contoh lebih dari satu class. Penamaan class menggunakan kata benda tunggal yang merupakan abstraksi yang terbaik. Pada UML Class digambarkan dengan segi empat yang dibagi. Bagian atas merupakan nama dari class. Bagian yang tengah merupakan struktur dari class(atribut) dan bagian bawah merupakan sifat dari class(operasi). 2.9.3 Jenis-jenis Diagram UML menyediakan 10 macam bentuk diagram untuk memodelkan perangkat lunak yang berorientasi objek, yaitu sebagai berikut: 1. Use Case Diagram untuk memodelkan proses bisnis. 2. Sequence Diagram untuk memodelkan pengiriman pesan (message) antar objects. 3. Activity Diagram untuk memodelkan perilaku Use Cases dan objects di dalam system. 4. Class Diagram untuk memodelkan struktur kelas. 5. Conceptual Diagram untuk memodelkan konsep-konsep yang ada di dalam aplikasi. 6. Object Diagram untuk memodelkan struktur object. 7. Collaboration Diagram untuk memodelkan interaksi antar objects. 8. State Diagram untuk memodelkan perilaku objects di dalam sistem. 9. Component Diagram untuk memodelkan komponen object. 10. Deployment Diagram untuk memodelkan distribusi aplikasi. Berikut akan dijelaskan 4 macam diagram yang paling sering digunakan dalam pembangunan aplikasi berorientasi object, yaitu use case diagram, sequence diagram, collaboration diagram, dan class diagram. 1. Use Case Diagram Use case diagram digunakan untuk memodelkan bisnis proses berdasarkan perspektif pengguna sistem. Use case diagram terdiri atas diagram untuk use case dan actor. Actor merepresentasikan orang yang akan mengoperasikan atau orang yang berinteraksi dengan sistem aplikasi. Use case merepresentasikan operasi-operasi yang dilakukan oleh actor. Use case digambarkan berbentuk elips dengan nama operasi dituliskan di dalamnya. Actor yang melakukan operasi dihubungkan dengan garis lurus ke use case.
68
2. Sequence Diagram Diagram Class dan diagram Object merupakan suatu gambaran model statis. Namun ada juga yang bersifat dinamis, seperti Diagram Interaction. Diagram sequence merupakan salah satu diagram Interaction yang menjelaskan bagaimana suatu operasi itu dilakukan message (pesan) apa yang dikirim dan kapan pelaksanaannya. Diagram ini diatur berdasarkan waktu. Obyek-obyek yang berkaitan dengan proses berjalannya operasi diurutkan dari kiri ke kanan berdasarkan waktu terjadinya dalam pesan yang terurut.
3. Collaboration Diagram Collaboration diagram dipakai untuk memodelkan interaksi antar object di dalam sistem. Berbeda dengan sequence diagram yang lebih menonjolkan kronologis dari operasioperasi yang dilakukan, collaboration diagram lebih fokus pada pemahaman atas keseluruhan operasi yang dilakukan oleh object.
4. Class diagram Class diagram menggambarkan struktur statis class di dalam sistem. class merepresentasikan sesuatu yang ditangani oleh sistem. class dapat berhubungan dengan yang lain melalui berbagai cara seperti associated (terhubung satu sama lain), dependent (satu class tergantung/menggunakan class yang lain), specialed (satu class merupakan spesialisasi dari class lainnya), atau package (group bersama sebagai satu unit). sebuah sistem biasanya mempunyai beberapa class diagram.
Pada bab berikutnya akan disampaikan informasi terkait hasil analisis sistem, yaitu dari sistem yang sudah ada sampai sistem yang akan dibangun atau dikembangkan kembali. Analisis sistem meliputi proses identifikasi masalah, analisis model sistem yang berjalan, analisa sistem yang akan diterapkan, dan kesimpulan hasil dari analisis. Hasil tersebut yang akan menentukan bentuk dari suatu perancangan sistem yang akan dibuat oleh pengembang perangkat lunak.
69