Tampilkan postingan dengan label Simplify. Tampilkan semua postingan
Tampilkan postingan dengan label Simplify. Tampilkan semua postingan

HTML 5 Web Worker

Semakin berkembangnya dunia internet, developers semakin mengutamakan kecepatan proses data, sehingga semakin banyak coder melakukan proses data di client daripada di server.

Untuk melakukan suatu proses data besar atau proses yang membutuhkan resource besar, maka html5 telah menyediakan fitur web worker yang dapat melakukan proses tersebut tanpa menghentikan sementara UI perambah. Akan sangat mengganggu jika semuanya proses ini dilakukan oleh javascript melihat proses panjang dan besar oleh javascript bisa menghentikan UI perambah, atau lebih parah lagi dapat mengakibatkan perambah pengguna jadi crash.

Ini merupakan tutorial singkat untuk menjalankan web worker :

Buat sebuah berkas dengan nama worker.js yang berisi :
self.onmessage = function(e) {

 // mengambil data yang dikirim ke worker
 var dat = e.data;
 var ret = "";
 for(var i = 0;i<=100;i++)
  ret+= dat;

 // mengirim data ke pemanggil worker
 self.postMessage(ret);

 // mematikan worker
 self.close();
};
Buat sebuah berkas dengan nama index.html yang berisi :
<!DOCTYPE html><head><title>Web Worker Tester</title></head>

<script type="text/javascript">
 var worker = new Worker("worker.js");

 // mengambil data yang dikembalikan worker
 worker.addEventListener("message", function(e) {
  document.write(e.data);
 }, false);

 // mengirim data ke worker
 worker.postMessage("Syuaa");
</script>

</body></html>
Skrip diatas akan menulis teks "Syuaa" sebanyak 100 kali ke perambah.

Dikarenakan web worker baru digunakan di HTML5, maka perlu adanya pengecekan jika perambah pengguna sudah mendukung web worker atau belum.

Fungsi dibawah akan mengembalikan false jika perambah belum mendukung HTML5 Web Worker, dan true jika sudah.
function is_webworker() {
 return !window.Worker;
}

Mengganti Address Bar Setelah Ajax Request

Setelah melakukan ajax request, tentu saja Anda akan melihat address bar tidak berubah. Karena memang tidak ada reload halaman yang akan mengubah address bar.

Untuk dapat mengubah address bar setelah ajax request, Anda bisa menambahkan fungsi javascript ini setelah melakukan ajax request :
window.history.pushState("object or string", "Title", "/url-baru");
Berikut ini contoh implementasi nya pada jQuery ajax request :
$.ajax({
 "type":"get",
 "url":"http://same-site/a/b/c/",
 "success":function(html) {
  $("body").html(html);
  if("http://same-site/a/b/c" != window.location) {
    window.history.pushState({path: "http://same-site/a/b/c"}, "", "http://same-site/a/b/c/");
 });
Selanjutnya, ketika user klik back pada browser mereka, untuk sementara tidak ada aksi yang terjadi. Untuk ini kita perlu menambahkan event popstate pada window.
$(window).bind("popstate", function() {
  $.ajax({
    "type": "get",
    "url": location.pathname,
    "success": function(html) {
        $("body").html(html);
    }
  });
});

Konversi MySQL Timestamp ke PHP Date Format

Ketika kita membuat kolom di MySQL dengan tipe kolom timestamp dan meng-set default current_timestamp, maka data yang tersimpan adalah dalam bentuk seperti :
mysql> select fdate from t_feed;
+---------------------+
| fdate               |
+---------------------+
| 2012-03-02 07:14:59 |
| 2012-03-02 07:15:29 |
| 2012-03-02 07:16:29 |
+---------------------+
3 rows in set (0.00 sec)

Dan bentuk tersebut juga lah yang akan muncul ketika kita mengambil dengan PHP. Untuk menampilkan bentuk tanggal di PHP sesuai dengan format yang kita inginkan, PHP sudah menyediakan fungsi strtotime yang bisa mengubah timestamp MySQL menjadi Unix Timestamp.
<php
 $dat = $date_from_mysql_timestamp;
 $fdat = date('g:i d M Y', strtotime($dat));
 echo $fdat; // => 7:15 02 Mar 2012

Konversi PNG ke XPM

Pada windows, file dengan extensi ico adalah file icon, sedangkan pada Linux, file icon default-nya berformat xpm.

Untuk membuat file icon di Linux bisa dengan menggunakan program GIMP atau KolourPaint, atau image editor lainnya dengan format akhir png.

Kemudian, untuk mengubahnya menjadi file xpm, cukup dengan menjalankan perintah
convert nama_file.png nama_tujuan.xpm di console.

Perintah convert merupakan perintah dari Imagemagick yang secara default sudah terinstall pada mesin.
[syuaa@localhost cvr]$ ls
same_image.png

[syuaa@localhost cvr]$ convert same_image.png same_icon.xpm

[syuaa@localhost cvr]$ ls
same_icon.xpm  same_image.png

Membuat View pada PostgreSQL atau MySQL

Sekarang syuaa akan memberikan contoh kecil cara membuat view pada query PostgreSQL atau MySQL, pada dasarnya kedua database ini memiliki bentuk query yang sama.

View digunakan untuk mempersimple penggunaan query yang panjang jika query yang panjang tersebut akan digunakan berulang-ulang kali. Hal ini tentu akan mempermudah programmer untuk melakukan query yang panjang tersebut dan meminimalisir kesalahan.

Sebagai contoh, saya memiliki table seperti ini :

1. t_murit
mysql> create table t_murit ( mid integer not null auto_increment, mname varchar(150), primary key ( mid ));

mysql> desc t_murit;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| mid   | int(11)      | NO   | PRI | NULL    | auto_increment |
| mname | varchar(150) | YES  |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
2. t_kelas
mysql> create table t_kelas ( id integer not null auto_increment, mid integer, fval varchar(10), primary key ( id ));

mysql> desc t_kelas;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| mid   | int(11)     | YES  |     | NULL    |                |
| fval  | varchar(10) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
3. t_jenis_kelamin
mysql> create table t_jenis_kelamin ( id integer not null auto_increment, mid integer, fval integer, primary key ( id ));

mysql> desc t_jenis_kelamin;
+-------+---------+------+-----+---------+----------------+
| Field | Type    | Null | Key | Default | Extra          |
+-------+---------+------+-----+---------+----------------+
| id    | int(11) | NO   | PRI | NULL    | auto_increment |
| mid   | int(11) | YES  |     | NULL    |                |
| fval  | int(11) | YES  |     | NULL    |                |
+-------+---------+------+-----+---------+----------------+
4. t_point
mysql> create table t_nilai ( id integer not null auto_increment, mid integer, fval integer, primary key ( id ));

mysql> desc t_nilai;
+-------+---------+------+-----+---------+----------------+
| Field | Type    | Null | Key | Default | Extra          |
+-------+---------+------+-----+---------+----------------+
| id    | int(11) | NO   | PRI | NULL    | auto_increment |
| mid   | int(11) | YES  |     | NULL    |                |
| fval  | int(11) | YES  |     | NULL    |                |
+-------+---------+------+-----+---------+----------------+
Selanjutnya, silahkan eksekusi query berikut untuk menambahkan value pada masing-masing tabel.
insert into t_murit (mname) values ('Syuaa'), ('Gadis'), ('Agus'), ('Indah'), ('Sobari');
insert into t_kelas (mid,fval) values(1,'1.5'), (2,'1.6'), (3,'1.1'), (4,'1.2'), (5,'1.1');
insert into t_jenis_kelamin (mid,fval) values(1,1), (2,2), (3,1), (4,2), (5,1);
insert into t_nilai (mid,fval) values(1,10), (2,9), (3,6), (4,8), (5,9);
Sehingga isi dalam tabel kita nanti jadi seperti ini :
mysql> select * from t_murit;
+-----+--------+
| mid | mname  |
+-----+--------+
|   1 | Syuaa  |
|   2 | Gadis  |
|   3 | Agus   |
|   4 | Indah  |
|   5 | Sobari |
+-----+--------+

mysql> select * from t_kelas;
+----+------+------+
| id | mid  | fval |
+----+------+------+
|  1 |    1 | 1.5  |
|  2 |    2 | 1.6  |
|  3 |    3 | 1.1  |
|  4 |    4 | 1.2  |
|  5 |    5 | 1.1  |
+----+------+------+

mysql> select * from t_jenis_kelamin;
+----+------+------+
| id | mid  | fval |
+----+------+------+
|  1 |    1 |    1 |
|  2 |    2 |    2 |
|  3 |    3 |    1 |
|  4 |    4 |    2 |
|  5 |    5 |    1 |
+----+------+------+

mysql> select * from t_nilai;
+----+------+------+
| id | mid  | fval |
+----+------+------+
|  1 |    1 |   10 |
|  2 |    2 |    9 |
|  3 |    3 |    6 |
|  4 |    4 |    8 |
|  5 |    5 |    9 |
+----+------+------+
Secara umumnya, ketika kita ingin mengambil seluruh siswa beserta datanya, maka setidaknya kita harus mengekseskusi query sepanjang ini :
mysql> select t_murit.mid as mid, t_murit.mname as mname, t_kelas.fval as kelas, t_jenis_kelamin.fval as jenis_kelamin, t_nilai.fval as nilai from t_murit, t_kelas, t_jenis_kelamin, t_nilai where t_murit.mid = t_kelas.mid and t_murit.mid = t_jenis_kelamin.mid and t_murit.mid = t_nilai.mid;
+-----+--------+-------+---------------+-------+
| mid | mname  | kelas | jenis_kelamin | nilai |
+-----+--------+-------+---------------+-------+
|   1 | Syuaa  | 1.5   |             1 |    10 |
|   2 | Gadis  | 1.6   |             2 |     9 |
|   3 | Agus   | 1.1   |             1 |     6 |
|   4 | Indah  | 1.2   |             2 |     8 |
|   5 | Sobari | 1.1   |             1 |     9 |
+-----+--------+-------+---------------+-------+
Dan tentu saja bisa terjadi kesalahan dalam pengetikan jika programmer harus mengetikkan query sepanjang itu setiap kali membutuhkan data siswa.

Untuk mengantisipasi terjadinya kesalahan dalam pengetikan berulang-ulang untuk query tersebut, maka view adalah solusi yang tepat untuk masalah ini.

Sekarang kita akan membuat sebuah view yang mewakili query panjang tersebut. Silahkan eksekusi query berikut :
mysql> create view v_murit as select t_murit.mid as mid, t_murit.mname as mname, t_kelas.fval as kelas, t_jenis_kelamin.fval as jenis_kelamin, t_nilai.fval as nilai from t_murit, t_kelas, t_jenis_kelamin, t_nilai where t_murit.mid = t_kelas.mid and t_murit.mid = t_jenis_kelamin.mid and t_murit.mid = t_nilai.mid;
Dengan bermodalkan view ini, akan cukup mudah untuk melakukan pencarian data siswa keseluruhan atau dengan kriteria tertentu.

Selanjutnya, untuk menampilkan data siswa secara keseluruhan, kita bisa menggunakan query berikut :
mysql> select * from v_murit;
+-----+--------+-------+---------------+-------+
| mid | mname  | kelas | jenis_kelamin | nilai |
+-----+--------+-------+---------------+-------+
|   1 | Syuaa  | 1.5   |             1 |    10 |
|   2 | Gadis  | 1.6   |             2 |     9 |
|   3 | Agus   | 1.1   |             1 |     6 |
|   4 | Indah  | 1.2   |             2 |     8 |
|   5 | Sobari | 1.1   |             1 |     9 |
+-----+--------+-------+---------------+-------+
Untuk menampilkan data siswa dengan id 4, bisa dengan menggunakan query berikut :
mysql> select * from v_murit where mid = 4;
+-----+-------+-------+---------------+-------+
| mid | mname | kelas | jenis_kelamin | nilai |
+-----+-------+-------+---------------+-------+
|   4 | Indah | 1.2   |             2 |     8 |
+-----+-------+-------+---------------+-------+

Mengecheck Keberadaan Table MySQL

Dalam trik query ini, syuaa ingin menjelaskan bagaimana cara untuk mengetahui keberadaan suatu table dalam database mysql.

Hal ini mungkin perlu jika Anda membuat suatu kondisi dimana user bisa membuatkan table tambahan.

Untuk melakukannya cukup dengan menjalankan perintah berikut :

$table_name = "nama_table";
$sql = mysql_query("DESC $table_name");
if(mysql_errno()==1146)
    echo "Table belum ada";
elseif(!mysql_errno())
    echo "Table sudah ada";

Fungsi Pengganti If Else pada PHP Bagian 2

Sebelumnya pernah dijelaskan cara penulisan If Else yang lebih simpel dengan menggunakan (condition) ? (action if true) : (action if false);.
Dan kali ini Syuaa akan memberikan sebuah cara penulisan If Else dalam bentuk yang lain. Pada umumnya penulisan If Else yang benar adalah sebagai berikut:
if(condition) {
   "condition if true;"
}else{
   "condition if false;"
}

Untuk menggantinya bisa menggunakan struktur If Else seperti dibawah. Lebih simpel, dan tanpa tanda "{" dan "}".
if(condition)
   "condition if true;"
else
   "condition if false;"

Tentu saja dengan ketentuan bahwa condition if true/false nya harus hanya berisi satu aksi. Jika aksinya lebih dari satu, dan berada dalam kondisi if true, maka browser akan mengembalikan nilai error.
Parse error: syntax error, unexpected T_ELSE in /var/www/html/syuaa/index.php on line [line error]

Hal itu terjadi karena struktur If Else diatas hanya bisa mengeksekusi satu aksi. Begitu juga jika aksi pada else ditambah satu aksi baru, maka aksi tersebut akan dianggap diluar dari fungsi If Else.

Untuk aplikasinya bisa dilihat pada contoh dibawah :
$x = "Syuaa";

if($x == "Syuaa") {
   echo "Selamat datang Syuaa";
}else{
   echo "Maaf, Anda tidak dikenali";
}

Setelah dikonversi maka hasilnya seperti ini :
$x = "Syuaa";

if($x=="Syuaa")
   echo "Selamat datang Syuaa";
else
   echo "Maaf, Anda tidak dikenali";

Escaping PHP Code

Dalam kondisi tertentu mungkin akan lebih mudah escape sebentar dari PHP code untuk menulis code HTML yang komplikasi.
contohnya :
$cond = 1;

if($cond) {
   echo "I know the condition show that is true,
      buat should you use this command to me?
      will try to know it.";
}else{
   echo "I now know that conditionb is set to false.
      That's why this code shown here\".
      i think i get it.";
}


Untuk mempermudah penulisan code HTML diantara code PHP, ada baiknya menggunakan cara escaping code seperti ini :
$cond = 1;

if($cond) {
   echo <<<SYUAA 
      "i know the condition show that is buat should you use this command to b
      I will try to know it."
SYUAA;
}else{
   echo <<<END
      "I now know that conditionb is set to
      false. That's why this code shown here".
      i think i get it."
END;
}


<<<[TEXT] bisa saja Anda ganti menjadi apa saja yang Anda inginkan, dengan ketentuan ditutup oleh [TEXT]; yang sama.

Pemaksaan Return Function PHP

Secara default suatu function bisa mengembalikan hasil dengan cara seperti ini :
function prf($value) {
   if($value) {
      return "This is true";
   }else{
      return "This is false";
   }
}


Dalam contoh diatas ada 2 kemungkinan value yang direturn. Function diatas dapat dipersimpel dengen penulisan code seperti ini :
function prf($value) {
   if($value) 
      return "This is true";
   return "This is false";
}


Kedua contoh diatas akan menghasilkan return yang sama.

Pada contoh kedua, function akan menguji kebenaran $value, jika benar, maka akan mengembalikan nilai "This is true". Dikarenakan satu function hanya bisa mengembalikan satu nilai, maka nilai return yang kedua tidak akan dijalankan.

Tetapi jika $value tidak benar, maka return yang pertama akan dilewati, dan return yang kedua akan dikembalikan kepada function.

Fungsi Pengganti If Else pada PHP

Secara standar, fungsi If Else dapat dilihat sebagai berikut :
if(condition) {
   "condition if true";
}else{
   "condition if false";
}

Untuk menggantinya, bisa menggunakan operator ? dan : sehingga code diatas bisa dipersingkat menjadi seperti ini:
condition ? "condition if true" : "condition if false";

Untuk penggunaannya bisa dilihat pada contoh dibawah :
$x = "Syuaa";
if($x == "Syuaa") {
   echo "Selamat datang Syuaa"; 
}else{
   echo "Maaf, Anda tidak di kenal"; 
}

Setelah di konversi, maka hasilnya seperti ini :
$x = "Syuaa";
echo $x=="Syuaa" ? "Selamat datang Syuaa" : "Maaf, Anda tidak dikenal";