Cecil Dalam Banyak Ekspresi
Sabtu pagi tidak ada kerjaan, buka gimp, cari-cari poto yang pas, resize-crop-cut-paste, jadi deh
.
![]()
Stjerm: Gnome Quake Style Terminal
Sudah cukup lama saya pakai yakuake di KDE. Sekarang, setelah menggunakan ubuntu hardy dan mencoba untuk stick with gnome. Saya sebenarnya pengguna setia KDE, jadi setiap habis install ubuntu, selalu ganti ke KDE. Saya kesulitan menemukan pengganti yakuake. Saya senang yakuake karena feature transparansi-nya. Sebenarnya ada sih, tilda. Tapi, rasanya kok berat sekali ya setiap pakai transparansi. Akhirnya, setelah googling sana-sini, saya ketemu stjerm. Hihihi, namanya aneh. Coba-coba pakai apt-get, wah sudah ada di repository, asiiik. Tinggal wah, gak ada di repository. Meluncur ke get-deb, asik adaaa. Download, lalu sudo apt-get install stjermsudo dpkg -i stjerm_0.11-0~getdeb1_i386.deb.
Setelah mencoba sebentar, ternyata memang benar seperti yang di katakan developernya di forum compiz-fusion:
It's point is to be minimalistic, to look nice and to work well with Compiz.
Memang, stjerm ini benar2 minimalistic, bahkan window untuk configurasi pun tidak ada. Hanya disediakan halaman manual untuk keterangan command-line parameter dan konfigurasi di file ~/.Xdefaults. Sudah, itu saja. Tapi, gak masalah, yang penting RINGAN. Kalau bingung dengan konfigurasi, di Helpful Linux Tidbits ada tutorialnya.
Output Buffering Untuk Template
Ceritanya saya dikasih script sama client. Script tersebut punya header.php dan footer.php sebagai include untuk, well, template. Nah, oleh client saya, saya disuruh untuk mengimplementasikan template HTML yang dia buat. Lebih jauh, dia juga minta supaya ada interface admin untuk mengubah template tersebut kalau suatu saat sudah bosan. Hmm... buat interface admin sih mudah, yang jadi masalah, file header.php itu meng-include beberapa file berupa menu.php yang isinya berupa file PHP untuk meng-generate menu secara dinamis. Dari sini saya memakai solusi output buffering seperti pada posting sebelumnya tentang logging file transaksi. Potongan scriptnya seperti berikut:
//ini function:
function getHTMLFromInclude($thefile)
{
ob_start();
include($thefile);
$stream = ob_get_contents();
ob_end_clean();
return $stream;
}
//ini penggunaannya:
include('template_handler.php');
/*isinya template_handler.php gak usah dijelaskan ya, cuman beberapa baris code deklarasi untuk template saja kok*/
$arrTemplate['{TOPMENU}'] = getHTMLFromInclude('menu.php');
$arrTemplate['{SIDEMENU}'] = getHTMLFromInclude('menuleft.php');
$stream = stripslashes(file_get_contents('templates/t.fp.header.php'));
//ini bagian parsing template tag
foreach($arrTemplate as $template => $value)
{
$stream = str_replace($template, $value, $stream);
}
echo $stream;
Nah, sekarang di interface admin untuk template, tinggal taruh tag {TOPMENU} sesuai kebutuhan saja, tanpa harus repot-repot dengan include untuk menu.php.
Men-debug Script Transaksi IPN
Script IPN adalah script yang digunakan oleh online payment processor untuk mem-verifikasi suatu transaksi. Disini kan kita tidak tau apakah script tersebut berjalan dengan semestinya atau ada yang gagal di suatu bagian script. Cara yang biasa saya lakukan adalah dengan membuat log proses yang dilakukan. Apa input dari server, bagaimana script saya mengolah, query apa saja (kalau ada) yang dilakukan, apa response script saya kepada server.
Log yang biasa saya lakukan ada dua cara, pertama dengan menulis step by step proses ke file log dan yang kedua, dengan cara membuffer output dan menyimpan serta meng-echo hasilnya ke file dan output stream. Cara pertama, biasanya saya hanya menggunakan function sebagai berikut:
function writeLog($log)
{
$fl = fopen("IPN_logger.txt", "ab");
fwrite($fl, "$log\n");
fclose($fl);
}
//cara menggunakannya:
writeLog('=======PROCESS START=======');
writeLog('date:'.date('Y-m-d H:i:s'));
writeLog('=======PROCESS END=======');
Sedangkan untuk cara kedua, caranya sebagai berikut:
<?php
$file = "IPN_logger.txt";
ob_start();
//mulai tulis output
echo '=======PROCESS START=======';
echo 'date:'.date('Y-m-d H:i:s');
//lakukan proses
echo '=======PROCESS END=======';
//selesai, ambil outputnya
$saved_page = ob_get_contents();
$fl = fopen($file, 'ab');
fwrite($fl, $saved_page);
fclose($fl);
//clean up buffer;
ob_end_clean();
//outputkan HTML-nya.
echo $saved_page;
?>





