Selasa, 28 April 2015

Optimasi Database Dengan Menambahkan Index

Pada setiap program pasti biasanya membutuhkan suatu media penyimpanan untuk data, baik data itu dalam jumlah yang banyak maupun sedikit. Penyimpanan data tersebut disimpan ke dalam program di dalam sebuah database. Perfomance pada suatu program terkait pula dengan banyak sedikitnya data yang ada pada database. Pengolahan data pada database juga sangat diperlukan, mulai dari perancangan desain baik secara logic atau fisik sampai kepada implementasinya, karena database menyangkut skalabilitas program itu sendiri dan terkait pula pada mudah atau sulitnya program tersebut dipelihara (Maintenance).

Untuk database yang mengolah data berjumlah banyak, dibutuhkan kiat-kiat atau tips agar pada proses waktu retreive data maupun update data dapat lebih teroptimalkan. Berikut saya akan mencoba berbagi tips untuk mengoptimalisasi database dengan cara menambahkan index.

Sebuah indeks database adalah sebuah struktur data yang meningkatkan kecepatan operasi dalam sebuah tabel. Indeks dapat dibuat menggunakan satu atau lebih dari satu kolom. Indeks dapat dibayangkan sebagai indeks buku, sehingga melalui indeks buku tersebut dapat dicari letak item tertentu dalam buku dengan mudah. Keberadaan indeks dalam basis data antara lain adalah untuk mempercepat pencarian data berdasarkan kolom tertentu.

Berikut adalah cara membuat Index pada suatu table untuk database MySQL.
 CREATE UNIQUE INDEX index_name  
 ON table_name ( column1, column2,...);  

Untuk contohnya misalkan kita memiliki sebuah table bernama mhs, kemudian kita ingin membuat index pada kolom nama. Berikut adalah contohnya.

 CREATE UNIQUE INDEX nama_idx  
 ON mhs (nama)  

Setelah pembuatan index selesai. Silahkan coba lakukan SELECT Query, misal SELECT nim FROM mhs WHERE nama='Kasih'. Bandingkan dan perhatikan waktu eksekusinya saat belum ditambahkan index dan setelah ditambahkan index.

Sabtu, 18 April 2015

6 Kesalahan Umum Pada Pemrograman C++

Pada kesempatan kali ini, saya akan mencoba berbagi tentang kesalahan-kesalahan yang biasa terjadi pada seorang programmer pemula dalam menulis code C++. Saya akan menulis 6 hal yang sering biasanya terjadi. Berikut adalah ulasannya.
1. Variabel tidak dideklarasi
1:  int main()  
2:  {  
3:   cin>>a;  
4:   cout<<a;  
5:  }  
Apa yang salah pada program di atas? ya yang kurang adalah tidak dideklarasikannya variabel a, seharusnya program di atas seperti ini
1:  int main()  
2:  {  
3:   int x;  
4:   cin>>x;  
5:   cout<<x;  
6:  }  
2. Variabel tidak diinisialisasi
1:  int count;  
2:  while(count<100)  
3:  {  
4:   cout<<count;  
5:   count++;  
6:  }  
Kesalahan pada sepenggal program di atas adalah tidak diinisialisasinya variabel count. Kesalahan pada program di atas karena variabel count nilainya akan terisi secara acak sesuai jangkauan tipe data integer, program itu mungkin tidak error jika dijalankan, tetapi output dari program itu dipastikan tidak akan sesuai harapan si penulis program.

3. Mengisi variabel dengan nilai variabel lainnya
1:  int a, b;  
2:  int sum=a+b;  
3:  cout<<"Enter two numbers to add: ";  
4:  cin>>a;  
5:  cin>>b;  
6:  cout<<"The sum is: "<<sum;  
Pada sepenggal program di atas, hampir sama kasusnya dengan poin ke 2, sama-sama belum diinisialisasikan. Baris ke 2 untuk variabel sum inisialisasikan dengan penjumlahan 2 nilai variabel a dan b. Namun kedua nilai variabel tersebut belum diinisialisasikan terlebih dahulu, sehingga hasil dari nilai variabel sum akan acak nilainya. Berikut sepenggal program di atas yang seharusnya.
1:  int a, b;  
2:  int sum;  
3:  cout<<"Masukkan 2 angka untuk penambahan: ";  
4:  cin>>b;  
5:  cin>>a;  
6:  sum=a+b;  
7:  cout<<"Variabel sum : "<<sum;  
Seperti di atas ini seharusnya sepenggal program tersebut. Maka hasilnya akan indah, karena jika sesuatu sesuai harapan akan indah dan baik.

4. Menggunakan "=" untuk membandingkan nilai variabel
1:  char x='Y';  
2:  while(x='Y')  
3:  {  
4:   //...  
5:   cout<<"Lanjutkan? (Y/N)";  
6:   cin>>x;  
7:  }  
Pada sepenggal program di atas, program akan menghadapi looping yang tidak ada hentinya, karena pada baris kedua variabel x bukan dibandingkan dengan nilai Y, melainkan variabel x selalu diinisialisasikan dengan nilai Y. Sehingga selalu dianggap true meskipun user memasukkan nilai selain Y pada variabel x. Berikut adalah sepenggal program yang seharusnya.
1:  char x='Y';  
2:  while('Y'==x)  
3:  {  
4:   //...  
5:   cout<<"Continue? (Y/N)";  
6:   cin>>x;  
7:  }  
Sekedar sedikit tips untuk menghindari kesalahan logic pada program di atas, sebaiknya variabel yang akan dibandingkan diletakkan disebelah kanan dari operator "==" dan nilai pembandingnya diletakkan di sebelah kiri dari operator "==". Agar jika kita seandainya lupa atau typo untuk mengetik operator perbandingan menjadi operator assign ("="), saat program dijalankan atau dicompile akan menampilkan error.

5. Semicolon berlebih
1:  int x;  
2:  for(x=0; x<100; x++);  
3:   cout<<x;  
Semicolon atau titik koma memang paling sering menjadi penyebab errornya program, kali ini juga program akan error tidak hanya di saat tidak menambahkan semicolon, melainkan saat menambahkan semicolon pun program menjadi error, karena pada penulisan for tidaklah menggunakan semicolon seperti yang ada pada baris ke 2 di atas.

6. Index array berlebih
1:  int array[10];  
2:  //...  
3:  for(int x=1; x<=10; x++)  
4:   cout<<array[x];  
Pada pemrograman seperti C++, index terakhir adalah selalu dikurang satu dari jumlah seluruh element arraynya, jika element array berjumlah 10, maka index dari array tersebut maximal adalah 9. Program di atas jelas akan error karena pada saat program dijalankan, index array tersebut mencapai nilai 10, sedangkan jumlah element array pada program di atas adalah 10, seharusnya program di atas dibuat seperti berikut ini.
1:  int array[10];  
2:  //...  
3:  for(int x=0; x<10; x++)  
4:   cout<<array[x];  

Minggu, 05 April 2015

Mendapatkan Dollar Dari Android

Saya akan mencoba berbagi bagaimana caranya kita mendapatkan dollar setiap harinya hanya dengan memainkan gadget android kita. Kita hanya perlu mendownload aplikasi yang direkomendasikan dan melakukan beberapa task. Tasknya antara lain seperti memainkan aplikasi yang telah kita download minimal 3-5 menit perharinya. Untuk itu saya akan mencoba berbagi bagaimana caranya kepada teman-teman yang ingin mencobanya. Berikut adalah langkah-langkahnya.

1. Buka Google Playstore di Gadget Android teman-teman
2. Install aplikasi Whaff. Ukurannya hanya sekitar 14 MB saja
3. Setelah diinstall, maka kita akan diminta untuk melakukan login pada aplikasi Whaff tersebut dengan akun Facebook.
4. Kemudian kita akan diminta masukan kode invitation code, masukkan kode invitation code ini. BC69134
5. Setelah berhasil, maka dipojok kanan atas dari aplikasi tersebut akan tampil dollar yang telah kita dapat. Untuk awal daftar, kita mendapatkan 0.3 $.

Teman-teman tidak perlu banyak menghabiskan banyak waktu untuk mendapatkan dollar perharinya, hanya cukup menghabiskan waktu beberapa menit saja untuk melakukan task demi task yang ada perharinya. Dollar yang telah dikumpulkan akan dapat ditukar (payout) antara lain ke Paypal, Google Play Giftcard, Facebook Giftcard, Amazon Giftcard, Xbox Giftcard, Steam Giftcard, Itunes dan lain-lain. Masing-masing memiliki minimum dollar yang baru akan bisa diambil (withdraw). Misal jika ingin ditukarkan ke Paypal, harus memiliki dollar yang telah terkumpul minimal 10.50 $.

Demikian dari saya, semoga bermanfaat dan selamat mengumpulkan dollarnya.

Jumat, 03 April 2015

Akses Website Dengan Java Library

Kembali lagi dengan saya, kali ini saya akan mencoba membahas tentang bagaimana kita mengakses sebuah website mulai dari login dari website tersebut, kemudian mengambil data atau konten yang terdapat dari website tersebut dengan menggunakan Selenium Library di Java. Selenium Library adalah sebuah library yang awalnya diperuntukan untuk Java. Namun sekarang sudah mulai dikembangkan tidak hanya dipakai oleh Java, melainkan bisa oleh C#, Ruby, Python dan Javascript. Selenium ini juga sering disebut sebagai API's Webdriver, teman-teman dapat mendownloadnya di sini Selenium Webdriver.

Pada tutorial kali ini, saya akan menggunakan Java dalam penggunaan Selenium Library ini. Saya akan membuat simulasi mulai dari login sampai mengambil konten yang ada ketika sudah login. Website yang saya gunakan adalah website local buatan saya sendiri yang hanya sekedar untuk login saja. Mekanisme dari bagaimana kita bisa login adalah kita harus tahu dulu tag, id, class, atau name pada HTML, sesuai kebutuhan saja, tergantung element yang tersedia dari website tersebut.

Berikut adalah source dari halaman web saat akan login.

 <!DOCTYPE html>  
 <html>  
   <head>  
     <title>Reservasi/Login</title>  
     <link rel="stylesheet" type="text/css" href="http://localhost/reservasi/assets/bootstrap/css/bootstrap.min.css" />  
     <link rel="stylesheet" type="text/css" href="http://localhost/reservasi/assets/jquery-ui/css/redmond/jquery-ui-1.9.0.custom.css" />  
     <link rel="stylesheet" type="text/css" href="http://localhost/reservasi/assets/main.css" />    
   </head>  
   <body>   
     <div class="layout">  
       <div class="top_side">  
       </div>  
       <div class="left_side">  
       </div>  
       <div id="center_side">        
         <form method="POST" action="http://localhost/reservasi/login/sign" id="frm_login" name="frm_login">  
   <h3>  
     Login  
   </h3>  
   <label for="username">Username</label>  
   <input type="text" name="username" id="username" class="span3" />                
   <label for="password">Password</label>  
   <input type="password" name="password" id="password" class="span3" /> <br />  
   <input type="submit" class="btn" value="LOGIN" id="btnlogin" name="btnlogin" />  
   <input type="reset" class="btn" value="RESET" id="btnreset" name="btnreset" />  
 </form>  
       </div>  
       <div class="left_side">  
       </div>  
       <div class="bottom_side">  
         <h5>&COPY; Copyright by Satrio Wicaksono</h5>  
       </div>  
     </div>      
   </body>  
 </html>  

URL dari halaman tersebut adalah http://localhost/reservasi/login. Perlu kita perhatikan dari source halaman web login tersebut adalah element input yang ada pada element form, kita akan menggunakan tag id untuk setiap element input. Kita menggunakan id username, password dan btnlogin yang nantinya akan kita panggil pada program Java kita. Berikut adalah code dari program Java dengan penggunaan Selenium Library.

1:  package grabweb;  
2:  import org.openqa.selenium.By;  
3:  import org.openqa.selenium.WebDriver;  
4:  import org.openqa.selenium.WebElement;  
5:  import org.openqa.selenium.htmlunit.HtmlUnitDriver;  
6:  public class GrabWeb {  
7:    public static void main(String[] args) {  
8:       WebDriver driver = new HtmlUnitDriver();  
9:       driver.get("http://localhost/reservasi/login");  
10:      WebElement eUsername = driver.findElement(By.id("username"));  
11:      WebElement ePassword = driver.findElement(By.id("password"));  
12:      WebElement eLogin = driver.findElement(By.id("btnlogin"));  
13:      eUsername.sendKeys("admin");  
14:      ePassword.sendKeys("admin");  
15:      eLogin.submit();  
16:      WebElement eMessage = driver.findElement(By.tagName("h3"));  
17:      System.out.println(eMessage.getText());  
18:      driver.quit();  
19:    }  
20:  }  

Pada baris 8 adalah inisialisasi pembuatan object webdriver, kemudian baris 9 untuk menyambungkan program kita untuk bisa mengakses sebuah halaman website yang kita inginkan, pada tutorial ini halaman website yang kita akan coba adalah http://localhost/reservasi/login. Pada baris 10-12 adalah pengambilan element berdasarkan id dari web tersebut. Baris 13 adalah menginputkan element input yang memiliki id username dengan string "admin", begitu juga dengan baris 14. Lalu pada baris 15 adalah seolah-olah kita melakukan klik button submit dengan id yaitu btnlogin tadi. Kemudian setelah login entah berhasil atau gagal, akan melanjutkan ke baris 16 dengan mengambil element yang ada pada halaman selanjutnya setelah login. Element yang diambil kali ini berdasarkan tag name, yaitu tag name H3. Untuk lebih jelasnya, berikut adalah source halaman web setelah login berhasil

 <!DOCTYPE html>  
 <html>  
   <head>  
     <title>Reservasi/Login</title>  
     <link rel="stylesheet" type="text/css" href="http://localhost/reservasi/assets/bootstrap/css/bootstrap.min.css" />  
     <link rel="stylesheet" type="text/css" href="http://localhost/reservasi/assets/jquery-ui/css/redmond/jquery-ui-1.9.0.custom.css" />  
     <link rel="stylesheet" type="text/css" href="http://localhost/reservasi/assets/main.css" />    
   </head>  
   <body>   
     <div class="layout">  
       <div class="top_side">  
       </div>  
       <div class="left_side">  
       </div>  
       <div id="center_side">        
         <h3><marquee> Selamat datang admin</marquee></h3><form method="POST" action="http://localhost/reservasi/login/signout" id="frm_logout" name="frm_logout">    
   <input type="submit" class="btn" value="LOGOUT" id="btnlogout" name="btnlogout" />    
 </form>      </div>  
       <div class="left_side">  
       </div>  
       <div class="bottom_side">  
         <h5>&COPY; Copyright by Satrio Wicaksono</h5>  
       </div>  
     </div>      
   </body>  
 </html>  

Jika login berhasil, maka akan mengambil konten element dengan tag name H3 dari halaman tersebut. Maka program akan menghasilkan output "Selamat datang admin". Namun jika login gagal, maka saya membuat halaman web tersebut redirect kembali ke halaman login lagi dan program akan menghasilkan output "Login".

Kenapa saya memilih menggunakan Selenium Library ini, padahal Java sendiri sebenarnya memiliki fungsi atau kelas yang serupa dengan library ini, itu karena menurut saya penggunaannya lebih mudah dan Selenium ini juga dapat mengambil sebuah element html seperti button yang mana button tersebut tidak memiliki id atau name atau class, melainkan hanya memiliki sebuah value tag dari element input, namun Selenium dapat mengakses atau mengambil button tersebut. Syntaxnya kurang lebih seperti ini : WebElement eSubmit = driver.findElement(By.xpath("//input[@value='LOGIN']"));  Itulah salah satu kedahsyatan Selenium Library.

Cukup sekian dari saya, semoga bermanfaat dan terimakasih.