Wednesday, August 18, 2010

Query Optimization

Penggunaan Query dalam aplikasi yang memanfaatkan database merupakan suatu hal yang tak terelekkan. Meskipun saat ini banyak digunakan berbagai teknologi yang melakukan wrapping terhadap query secara langsung dan lebih menekankan paradigma Object dalam akses database, Namun seringkali penggunaan native query masih tetap dibutuhkan. Beberapa hal yang sering kita lupakan adalah penggunaan query yang asal jadi, sehingga seringkali performansi menjadi drop karena kurang bijak dalam menyusun query secara langsung.

Dari beberapa pengalaman, hal-hal yang sering kurang diperhatikan atau terlupa dalam penggunaan query sebagai berikut :

1. Klausa where belum memanfaatkan kolom yang memiliki index.

akan lebih optimal apabila kolom yang sering digunakan dalam kriteria pencarian merupakan kolom yang menjadi index dalam tabel yang bersangkutan.

2. Klausa where tidak disusun berdasarkan urutan filter yang menghasilkan data lebih sedikit

Apabila dalam kriteria pencarian, terdapat beberapa kondisi yang harus dipenuhi, maka usahakan melakukan ordering urutan kondisi yang diperkirakan menghasilkan data yang lebih kecil.
Misalkan :
select NIM, name from A where name like '%yulius%' and substr(NIM,1,3)='135'
akan lebih optimal bila diubah menjadi
select NIM, name from A where substr(NIM,1,3)='135' and name like '%yulius%'

3. Penggunaan Like

Jika melakukan pencarian yang melibatkan string, maka minimalisir penggunaan “Like”. Penggunaan fungsi / operator String seperti Substring akan lebih baik jika memungkinkan.

4. Select All (*)

Usahakan hanya melakukan select terhadap kolom yang diperlukan saja.

5. Cross Join

Usahakan digunakan Inner Join atau Outer Join daripada Penggunaan Cross Join
Contoh :
select A.id, B.name from A, B where A.id=B.a_id
akan lebih baik jika digunakan
select A.id, B.name from A inner join B on A.id=B.a_id

Pemanfaatan Join juga akan lebih optimal apabila kita hanya melakukan join terhadap table yang sudah diselect terlebih dahulu sesuai dengan kebutuhan (kolom maupun kriterianya)
contoh optimasi dari code diatas sebagai berikut :
select A.id, B.name from
(select id from A) A
inner join
(select name,a_id from B) B on A.id=B.a_id

6. Banyak memanfaatkan Sub Query

Pemanfaatan sub query bisa dialihkan menjadi penggunaan inner join. Contoh :
select A.id, (select B.name from B where B.id=A.b_id) from A
akan menjadi lebih baik bila diubah menjadi :
select A.id, B.name from A inner join
(select B.name from B) as B on B.a_id =A.id

7. Menggunakan mekanisme “in” list dalam klausa where

apabila kita melakukan filtering terhadap suatu kolom yang match terhadap suatu value yang didapat dari table lain, maka pemanfaatan fungsi exists akan lebih baik dibanding in
contoh:
select A.name from A where id in (select a_id from B where B.active=true)
bisa menjadi lebih baik apabila diubah menjadi
select A.name from A where exists (select a_id from B where A.id=B.a_id and B.active=true)

Demikian Beberapa hal yang sering digunakan dalam pemanfaatan suatu query dimana sedikit perubahan dalam query yang digunakan akan bisa memberikan performansi yang jauh lebih baik. Beberapa database biasa memberikan fungsi built in yang juga seharusnya bisa digunakan secara lebih optimal untuk mendukung pemanfaatan nativ query.
Read more »

Tuesday, August 17, 2010

Mengirim Email Menggunakan PHP

Peralatan yang diperlukan :

1. PHP 5.3
2. Integrated Development Environtment (NetBeans, Dreamweaver, dll)

Email sudah bukan sesuatu hal yang aneh lagi saat ini, hampir setiap website biasanya membutuhkan fitur email ini. Jika Anda menggunakan PHP, bagaimana cara mengirim email di PHP? Mudah saja caranya…

Pertama kita buat dulu sebuah kelas MailSender, hal ini dilakukan agar nanti kelas ini dapat digunakan lagi

php
/**
* Description of MailSender
*
* @author Yulius Alghifarrie
*/
class MailSender {

private $from;
private $to;
private $subject;
private $message;

public function get_subject() {
return $this->subject;
}

public function set_subject($subject) {
$this->subject = $subject;
}

public function get_from() {
return $this->from;
}

public function set_from($from) {
$this->from = $from;
}

public function get_to() {
return $this->to;
}

public function set_to($to) {
$this->to = $to;
}

public function get_message() {
return $this->message;
}

public function set_message($message) {
$this->message = $message;
}

public function send() {
$headers = "From: $this->from" . "\r\n" .
"Reply-To: $this->from" . "\r\n" .
"X-Mailer: PHP/" . phpversion();
mail($this->to, $this->subject, $this->message, $headers);
}

}
?>

Setelah itu coba buat sebuah halaman untuk mengirim email tersebut

set_from($_POST['from']);
$sender->set_to($_POST['to']);
$sender->set_subject($_POST['subject']);
$sender->set_message($_POST['message']);

// send email
$sender->send();
}
?>
html>
head>
meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
title>Send Email/title>
/head>
body>
form action="index.php" method="post">
table>
tr> td>From :/td> td>input type="text" name="from"/>/td> /tr>
tr> td>To :/td> td>input type="text" name="to"/>/td> /tr>
tr> td>Subject :/td> td>input type="text" name="subject"/>/td> /tr>
tr> td>Message :/td> td>
textarea name="message" cols="20" rows="5">
/td> /tr>
tr> td>/td> td>input type="submit" name="send" value="Send"/>/td> /tr>
/table>
/form>
/body>
/html>"

selamat mencoba… :D
Read more »

Monday, August 16, 2010

Download MP3 Al Ma'tsurat

Banyak ayat ataupun hadits yang menerangkan keutamaan berdzikir kepada Allah. Bahkan Allah dan Rasul-Nya telah memerintahkan dan menganjurkan kepada kita agar senantiasa berdzikir dan mengingat-Nya. Diantara dalam Surat Al-Munafiquun:9 :
يَاأَيُّهَا الَّذِينَ ءَامَنُوا لاَ تُلْهِكُمْ أَمْوَالُكُمْ وَلاَ أَوْلاَدُكُمْ عَنْ ذِكْرِ اللهِ وَمَنْ يَفْعَلْ ذَلِكَ فَأُولَئِكَ هُمُ الْخَاسِرُونَ
“ Hai orang-orang yang beriman, janganlah harta-harta kalian dan anak-anak kalian melalaikan kalian dari mengingat Allah. Barangsiapa yang berbuat demikian maka mereka itulah orang-orang yang rugi. ”
Di antara dzikir-dzikir yang disunnahkan untuk dibaca dan diamalkan adalah dzikir pagi dan sore.
Dzikir pagi dilakukan setelah shalat shubuh sampai terbit matahari atau sampai matahari meninggi saat waktu dhuha, kira-kira jam tujuh atau jam delapan.
Dzikir sore dilakukan setelah shalat ‘ashar sampai terbenam matahari atau sampai menjelang waktu ‘isya.
Dan untuk memudahkan berikut Dzikir Pagi dan Sore dalam format MP3 sehingga bisa kita dengarkan lewat Handphone maupun player yang lain baik dimobil ketika dalam perjalaan maupun ketika kita sudah berada dirumah.
Caranya dengan meng” klik ” Dzikir yang di maksud.
Semoga bermanfaat.
Sumber : http://kajian.net
Read more »

Bandung Student CodeCamp

JUG Bandung dan OSUM Bandung bekerja sama mengadakan acara berjudul
"Bandung Student CodeCamp": sebuah acara bagi kamu mahasiswa Bandung
untuk bertemu dengan rekan-rekan mahasiswa dari berbagai universitas
di Bandung dan bersama-sama membangun perangkat lunak impianmu
selama 3 hari 2 malam.
Acara akan diadakan mulai dari Senin 23 Agustus 2010 sampai Rabu
25 Agustus 2010 di kota Bandung.
Acara ini terbatas untuk 30 orang dan TIDAK DIPUNGUT BIAYA!
Tapi ada syarat pendaftaran:

1. Masih berstatus mahasiswa pada bulan September.
2. Mempunyai kemampuan dasar mengembangkan perangkat lunak meng-
gunakan teknologi open source seperti Java, PHP, dll.
3. Memiliki ide perangkat lunak yang sangat cemerlang.
4. Membawa laptop sendiri pada saat acara berlangsung. Laptop
harus ber-wifi dan berisi perkakas pengembangan favoritmu.
5. Mau membayar uang jaminan sebesar Rp.50.000,- (yang akan dikem-
balikan jika mengikuti acara 3 hari secara penuh)
Yang kamu dapatkan di acara ini:

1. Akomodasi 3 hari 2 malam serta makanan untuk sahur dan berbuka.
2. Kesempatan berbagi dan mengembangkan perangkat lunak impianmu.
3. Kesempatan bertemu dan mengembangkan jaringan antara mahasiswa-
mahasiswa informatika/komputer Bandung.
4. Sharing ilmu dan pengalaman dari komunitas-komunitas pengembang
dan para IT Entrepreneur muda.
5. Belajar untuk mengembangkan perangkat lunak pada sebuah tim.

http://groups.google.com/group/jug-bandung/browse_thread/thread/9d0976985eefd69b
Read more »