Tampilkan postingan dengan label Function. Tampilkan semua postingan
Tampilkan postingan dengan label Function. 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

Reset Auto Increment Pada MySQL dan PostgreSQL

Jika dalam suatu kondisi Anda perlu reset, atau menentukan sendiri nilai auto increment yang ada pada column auto increment database MySQL dan PostgreSQL, makadapat menggunakan cara berikut ini.

Untuk MySQL
mysql> ALTER TABLE t_table AUTO_INCREMENT = x;
x : nilai auto increment selanjutnya.
Jika Anda memiliki data didalam table dan mengeksekusi query diatas dengan memberikan nilai x lebih kecil dari id terakhir di table, maka nilai x akan tetap di set 1 angka setelah angka terakhir id data pada database Anda.

Untuk PostgreSQL
Untuk PostgreSQL memiliki cara sendiri. Anda mungkin perlu tahu dulu nama seq nya sebelum bisa melakukan reset.
Jika Anda menggunakan type data SERIAL untuk id auto increment, maka untuk mendapatkan nama seq nya bisa menggunakan query berikut :
test=# SELECT pg_get_serial_sequence('t_table', 'id');
t_table : adalah nama table
id : adalah column yang diberi type data SERIAL.

Setelah mendapatkan nama seq nya, selanjutnya bisa di reset dengan menggunakan fungsi SETVAL
test=# SELECT SETVAL((SELECT pg_get_serial_sequence('t_table', 'id')), 1, false);
Atau cara yang lebih mudah lagi adalah dengan menggunakan fungsi RESTART IDENTITY jika Anda ingin mereset nilai auto increment berbarengan dengan TRUNCATE
test=# TRUNCATE t_table RESTART IDENTITY CASCADE

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";

Penggunaan Fungsi Timer Pada Javascript

Pada kesempatan kali ini Syuaa akan memberikan tips trik penggunaan fungsi timer pada JavaScript.

Ada dua fungsi Timer pada JavaScript yang umum digunakan saat ini, yaitu setTimeout(), dan setInterval().

1. Timer setTimeout

Fungsi ini akan menunda eksekusi suatu fungsi dalam waktu yang telah ditentukan, contoh penggunaanya :

function TimeOut() {
	setTimeout(function() { alert("Yay,,, i get you"); }, 5000);
}

Klik dan tunggu 5 detik

Jika dalam suatu kondisi Anda ingin menghentikan timer yang sedang berjalan untuk fungsi setTimeout, maka bisa dilakukan dengan cara sebagai berikut :

_to = null;
function TimeOut() {
	_to = setTimeout(function() { alert("Yay,,, i get you"); }, 5000);
}
function clearTimeOut() {
	clearTimeout(_to);
}

Klik dan tunggu 5 detik
Klik untuk mematikan timer, (cancel alert)

2. Timer setInterval

Fungsi setInterval merupakan fungsi timer javascript yang akan selalu melakukan pengulangan sampai fungsi ini dimatikan, untuk setiap kurun waktu yang ditentukan. Contoh penggunaan :

_si = null;
_gn = 0;
function Interval() {
	_si = setInterval(function() {
		var btn = document.getElementById("buttonIn");
		_gn++
		btn.value = "Interval ("+_gn+")";
	}, 1000);
}
function clearInter() {
	clearInterval(_si);
}

Klik dan tunggu setiap 1 detik
Klik untuk menghentikan timer



Membuat Header PDF Dengan Haru PHP Library

Kali ini syuaa akan memberikan sedikit contoh membuat header pdf dengan bahasa PHP Haru Library. Silahkan copy dan paste script berikut dan simpan dengan nama apa saja yang Anda inginkan, kemudian jalankan dari browser Anda. Jangan lupa buat sebuah file di folder Anda dengan nama logo.jpg.
<?php

/* Preparation Information */
$docPaddingTop = 40;
$docPaddingLeft = 50;
$docPaddingRight = 50;
$docPaddingBottom = 50;

$compName = "Google Inc";
$compAddress = "1600 Amphitheatre Parkway Mountain View, CA 94043.";
$compAddress2 = "Telepon: +1 650-253-0000, Faks: +1 650-253-0001.";

/* Create PDF Document */
$doc = new HaruDoc;
$doc->setPageMode(HaruDoc::PAGE_MODE_USE_THUMBS);

/* Preparation Font */
$timesNormal = $doc->getFont('Times-Roman');
$timesBold = $doc->getFont('Times-Bold');

/* Preparation Logo */
$logo = $doc->loadJPEG('google.jpg');
$lWidth = $logo->getWidth();
$lHeight = $logo->getHeight();

/* Create New Page */
$page = $doc->addPage();
$page->setSize(HaruPage::SIZE_A4, HaruPage::PORTRAIT);

$pWidth=$page->getWidth();
$pHeight=$page->getHeight();

/* Start Creating Header */
    /* Create Logo */
    $page->drawImage($logo, $docPaddingLeft, $pHeight-$lHeight-$docPaddingTop, $lWidth, $lHeight);

    /* Show Title Company */
    $page->setFontandSize($timesBold, 14);
    $page->beginText();
    $page->textOut($lWidth+$docPaddingLeft+10, $pHeight-$docPaddingTop-14, $compName);
    $page->setFontandSize($timesNormal, 12);
    $page->textOut($lWidth+$docPaddingLeft+10, $pHeight-$docPaddingTop-26, $compAddress);
    $page->textOut($lWidth+$docPaddingLeft+10, $pHeight-$docPaddingTop-38, $compAddress2);
    $page->endText();

    /* Create Horizontal Line */
    $page->setRGBStroke(0,0,0);
    $page->setRGBFill(1,1,1);
    $page->moveTo($docPaddingLeft, $pHeight-$lHeight-$docPaddingTop-2);
    $page->lineTo($pWidth-$docPaddingRight, $pHeight-$lHeight-$docPaddingTop-2);
    $page->fillStroke();

/* Save and Show it to download */
$doc->save('header.pdf');
header('Content-Type: application/pdf');
$showit = file_get_contents('header.pdf');
echo $showit;

Penjelasan :
Line 4-7 : Membuat variable untuk padding halaman
Line 9-11 : Membuat informasi dasar Header
Line 14 : Membuat dokumen pdf baru
Line 15 : Membuat tampilan utama halaman pada saat dibuka user
Line 18-19 : Membaut varibale yang akan menyimpan informasi font yang digunakan
Line 22-24 : Membuat variable yang akan menyimpan informasi logo
Line 27 : Membuat halam baru
Line 28 : Menentukan halaman baru tersebut berukuran A4, dan berpenampilan Portait
Line 30-31 : Mengambil informasi halaman baru tersebut
Line 35 : Menempel logo di bagian atas kiri halaman
Line 38-44 : Menempel informasi yang di set pada line 9-11
Line 47-51 : Membuat garis horizontal tepat dibawah logo
Line 54 : Menyimpan file tersebut kedalam direktori dengan nama header.pdf
Line 55-57 : Memberikan pilihan kepada user untuk mendownload file tersebut.

Aplikasi SOAP Pertama, Hello World SOAP Tutorial

Bagi yang sudah terbiasa dengan WSDL (Web Service Definition Language) pasti sudah terbiasa menggunakan SOAP (Simple Object Access Protocol). Kali ini Syuaa akan memberikan sedikit contoh aplikasi SOAP Hello World agar lebih mudah memahami belajar SOAP.

Hal yang pertama dilakukan adalah membuat Script Server Side, Script yang akan menangani Request Client Side.
<?php
function HelloWorld($MyName) {
     return 'Hello World, and Hello '.$MyName;
}

$server = new SoapServer(NULL, array(
          'soap_version'=>SOAP_1_2,
          'encoding'=>'ISO-8859-1',
          'uri'=>'http://www.w3.org/2001/12/soap-encoding'
          ));

$server->addFunction("HelloWorld");
$server->handle();
?>

Nilai NULL pertama dari class SoapServer akan bernilai lain jika SOAP menggunakan WSDL Server Side Script.
SoapServer : Membentuk sebuah SOAP Server baru.
soap_version : versi SOAP yang kita gunakan, saat ini ada pilihan (SOAP_1_1, dan SOAP_1_2).
encoding : Encoding yang digunakan, harus di set karena SOAP tidak memiliki nilai encoding default.
uri : Kurang lebih sama dengan encoding, nilai default nya adalah 'http://www.w3.org/2001/12/soap-encoding'.

Simpan script tersebut dengan nama server.php di htdocs Anda. Misal di http://localhost/server.php

Selanjutnya adalah membuat sebuah script untuk client side, yang akan menjalankan function Hello World yang ada pada Server Side.

<?PHP
$client = new SoapClient(NULL, array(
          'location'=>'http://localhost/server.php',
          'uri'=>'http://localhost/',
          'trace'=>1
          ));

     $return = $client->__soapCall("HelloWorld", array('Syuaa'));
     echo $client->__getLastResponse();
?>

Simpan script tersebut dengan nama index.php di htdocs Anda. Misal di http://localhost/index.php

Maka nilai pengembalian dengan menjalankan script index.php diatas adalah :



     
          
               
                    Hello World, and Hello Syuaa
               
          
     

Mengecek Keberadaan Teks Pada Webside Orang

Dalam kasus ini, Syuaa akan memberikan contoh memastikan keberadaan suatu teks atau string pada
sebuah website orang lain. Hal ini tentu bisa digunakan untuk mengetahui sudahkah mereka memasang link Anda di website nya? sebelum Anda memasang backlink di blog/website Anda.

Langkah pertama adalah dengan mengambil keseluruhan teks HTML pada website tersebut.
<?php
$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, "http://syuaa.blogspot.com");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

$insideit = curl_exec($curl);
curl_close($curl);
...
Penjelasan
Baris 1 : Membentuk curl session.
Baris 3 : Menentukan URL yang akan diambil.
Baris 4 : Memberikan perintah kepada PHP agar menyimpan skript HTML yang diambil kedalam suatu variable.
Baris 6 : Memberikan perintah kepada PHP agar menjalankan semua option curl yang di tentukan diatasnya.
Baris 7 : Menutup sesi curl dan mengosongkan semua resource.

Setelah berhasil menyimpan keseluruhan skrip HTML kedalam variable $insideit. Maka selanjutnya adalah mengecek keberadaan text tertentu dalam sekumpulan teks tersebut. Caranya adalah dengan menggunakan function PHP preg_match.
...
$urlonsearch = "http://syuaa.blogspot.com";
$ifexists = "Text tersebut telah ada di ".$urlonsearch;
$ifnotexists = "Text tersebut belum ada di ".$urlonsearch;

echo preg_match('!linkexchange.syuaa.net/!i', $insideit) ? $ifexists : $ifnotexists;
?>

Skrip lengkap nya bisa dilihat dibawah, telah dimodifikasi agar lebih simpel.
<?php
$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, "http://syuaa.blogspot.com");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

$insideit = curl_exec($curl);
curl_close($curl);

echo preg_match('!linkexchange.syuaa.net/!i', $insideit) 
   ? "Text tersebut telah ada di " 
   : "Text tersebut belum ada di ";
echo "http://syuaa.blogspot.com";
?>

Setelah melakukan sedikit percobaan, skrip di bawah juga akan menghasilkan nilai yang sama. Lebih simpel, dan lebih pendek, tetapi belum terlalu mengerti apakah memiliki nilai yang sama untuk semua kondisi atau tidak.
<?php
$insideit = file_get_contents('http://syuaa.blogspot.com');

echo preg_match('!linkexchange.syuaa.net/!i', $insideit) 
   ? "Text tersebut telah ada di " 
   : "Text tersebut belum ada di ";
echo "http://syuaa.blogspot.com";
?>

Menampilkan Gabungan Table MySQL/PgSQL

Dalam kasus ini, Syuaa akan menunjukan bagaimana menggabungkan tabel yang memiliki relasi atau kesamaan value dan menampilkannya.
Contohnya saya memiliki tabel seperti berikut :

1. tabel [username]
dbsyuaa=# select * from username;
 uid |  uname
-----+---------
   2 | fery
   3 | andi
   4 | budy
   5 | kucing
   6 | gstar
   7 | bing
   8 | bigbang
(7 rows)

2. tabel [usermail]
dbsyuaa=# select * from usermail;
 uid |        umail
-----+---------------------
   2 | fery@yahoo.com
   3 | andi@yahoo.com
   4 | budy@yahoo.com
   5 | kucing@aol.com
   6 | me@gstar.com
   7 | bing@microsoft.com
   8 | bigbang@yahoo.co.id
(7 rows)

3. tabel [usercity]
dbsyuaa=# select * from usercity;
 uid |  ucity
-----+---------
   2 | bandung
   3 | jakarta
   4 | depok
   5 | bali
   6 | jakarta
   7 | Bandung
   8 | Bandung
(7 rows)

Tujuan utama saya adalah mengambil seluruh data dengan ketentuan masing-masing tabel digabung berdasarkan column [uid]. Untuk penyelesaiannya saya menggunakan inner join. Sehingga bentuk query saya akan menjadi seperti ini :
select * from username inner join usermail using("uid") inner join usercity using("uid");

Dan akan menghasilkan tabel seperti ini :
select * from username inner join usermail using("uid") inner join usercity using("uid");
 uid |  uname  |        umail        |  ucity
-----+---------+---------------------+---------
   2 | fery    | fery@yahoo.com      | bandung
   3 | andi    | andi@yahoo.com      | jakarta
   4 | budy    | budy@yahoo.com      | depok
   5 | kucing  | kucing@aol.com      | bali
   6 | gstar   | me@gstar.com        | jakarta
   7 | bing    | bing@microsoft.com  | Bandung
   8 | bigbang | bigbang@yahoo.co.id | Bandung

Dalam kondisi lain, mungkin juga menggunakan bentuk query seperti dibawah :
select * from username, usermail, usercity where username.uid=usercity.uid and username.uid=usermail.uid;

Hanya saja akan menghasilkan tabel yang tidak sesuai dengan keinginan semula :
dbsyuaa=# select * from username, usermail, usercity where username.uid=usercity.uid and username.uid=usermail.uid;
 uid |  uname  | uid |        umail        | uid |  ucity
-----+---------+-----+---------------------+-----+---------
   2 | fery    |   2 | fery@yahoo.com      |   2 | bandung
   3 | andi    |   3 | andi@yahoo.com      |   3 | jakarta
   4 | budy    |   4 | budy@yahoo.com      |   4 | depok
   5 | kucing  |   5 | kucing@aol.com      |   5 | bali
   6 | gstar   |   6 | me@gstar.com        |   6 | jakarta
   7 | bing    |   7 | bing@microsoft.com  |   7 | Bandung
   8 | bigbang |   8 | bigbang@yahoo.co.id |   8 | Bandung
(7 rows)

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";

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.