Saturday, October 24, 2009

PHP Linux, log file.

PHP-er,

Kali ini gw mau share ttg pengalaman logging PHP error di linux. Bbrp hari ini gw
terpaksa buta error applikasi gw apa, krn display error di php.ini gw off.
Dan di dlm php.ini gw udah set log_error=On dan
log_file=/usr/local/apache/logs/php_error.log, file php_error.log udah di chmod
jadi 755 pula. Tapi kenapa ga ada yg di log? Nah jawaban dari paman Google adalah
file php_error.log ga boleh berada di /usr/... krn hanya root yg bisa modify.

Jadi solusi nya adalah:

1. mkdir /home/user/applications/php/logs/
2. echo > /home/user/applications/php/logs/php_error.log
3. rubah log_file=/home/user/applications/php/logs/php_error.log di php.ini
4. restart apache.

Boomm!!! jalan...

Sunday, October 18, 2009

Reference Magic[2]

PHP-er,

Nah baru ketemu lagi nehh, kasus dimana reference itu jadi kunci utama, key player. Kasus nya adalah tampilin stock report,
dimana saya tidak menyimpan beginning balance nya (walaupun ini salah),
saya mengakali nya dengan stock akhir dikurang dengan mutasi dari tanggal hari ini
hingga tanggal sebelum nya. Contoh: 01-01-2009 s/d saat ini,
maka stock saat ini dikurang atau ditambah sesuai dengan kode mutasi, hingga tanggal
01-01-2009, mudah bukan?

Masalah nya adalah report generator saya mengharuskan data yg ditampilkan seblumnya
harus di array_push. Kebayangkan kalau saya menampilkan data beginning balance
diharuskan utk menghitung terlebih dahulu brp beginning balance nya. Dan catatan
mutasi adalah setelah nya. Terbalik? iya krn rumus kita adalah akhir - mutasi = awal.
Maka solusi nya adalah,

$data = array();
$awal = 0;
$akhir = $warehouse->getEndingBalanceOfThis($modelId);
$saatIni = $akhir;

/* awal */
array_push($data, &$awal);

/* Loop sebyk mutasi */
foreach($mutasiX as $mutasi){

if($kodeTransaksi == _MASUK){

$saatIni -= $mutasi->qty;
}else{

$saatIni += $mutasi->qty;
}
array_push($data, $mutasi->qty);
}

/* Ending */
array_push($data, $akhir);

/* maka awal adalah */
$awal = $current;

Hasil Output:
35 |<-- awal
20 |
35 |
23 | Mutasi
77 |
11 |
102|<-- akhir


Kondisi diatas akan berbeda jika $awal tidak pass-by-reference,
krn pasti value $awal adalah 0, ini adalah value inisialisasi awal.
Happy coding.

Design Pattern

PHP-er,

Mau bagi2 neh ttg yg 1 ini. Pattern/pola, cara yg kita gunakan berulang kali yg membentuk suatu urutan sistematis, pendapat saya pribadi. Pernahkah kita menulis
program yg scr kita tidak sadar kita melakukan dg cara yg sama scr terus menerus,
sampai2 kita bisa buat template nya? Dimana ktika ada project baru kita tinggal
copy paste template nya dan edit bbrp variable dan logikanya dan BOOM!! selesai.
Tinggal testing dan trial&error.

Begitu pun saya, misalkan contoh yg paling sederhana,

if($variable){

// XXX...
}else{

// XXX...
}

Alangkah mudah dan cepat nya jika saya cukup ketik if maka code yg diatas lsg
keluar. Nah ini kan urusan nya di editor :D, betul, kan contoh...
Kalau dalam coding.

class Transaksi{

public $tanggal,
$noBon,
$mataUang,
$kurs,
$pembuat,
$pendaftar,
$penghapus;
}

class TransaksiPembelian extends Transaksi{

public $namaSupplier,
$kodeSupplier,
$noSuratJalan;
}

Dari contoh diatas kita sudah menerapkan suatu pola yg dinamakan Template Method. Sesuai dengan nama nya template Transaksi akan banyak di gunakan oleh transaksi lainnya, dimana TransaksiPembelian membutuhkan tanggal transaksi, mata uang, kurs dll. Begitupun transaksiPenjualan, jurnal umum, konsinyasi, dll. Sehingga transaksi2 yg spesifik hanya menambahkan kekurangannya saja, contoh disini TransaksiPembelian cukup menambahkan nama dan kode supplier, no surat jalan, dll. Mudah bukan? Dan yg menjadi point nya adalah kita lbh cepat dan
mudah membuat suatu object baru. Mengurangi waktu ketik, dan code kita menjadi lbh
ramping. Saya pribadi suka melihat rentetan code yg pendek ktimbang yg panjang.

Kebayang kan kalau lihat code yg banyaknya 5000 line (ok lah dg comment juga) dgn code yg banyak nya 200 line dlm 1 file? Upcoming Article is about one-to-many pattern, khusus pola ini 80% ada dalam code saya.

SqlDeveloper

PHP-er,

Dengan ada nya 1 tool ini, pekerjaan yg berhubungan dg DB terasa ringan. Walaupun terkadang loading dan lain sbg nya lambat yg dikarenakan di intepreter oleh java.
Dan MySQL terkadang masih kombinasi dg phpMyAdmin, sisanya postgre, dll, tinggal
download driver utk sqlDeveloper connect jalan.

Nah utk tambahan aja cuba download disini. Have fun...

Friday, October 16, 2009

PHP go green

PHP-er,

Hello, lama ga nulis jadi bingung mau nulis apa. Anyway gw lagi kepikiran bagaimana seorang programmer bisa "GO GREEN" juga. Secara pribadi gw ada tips nya:

1. Perencanaan program baik nya di lakukan diatas kertas dulu sblm berhadapan dgn
komputer atau laptop.
2. Kertas yg akan dipakai di usahakan semaksimal mungkin cukup menampung semua ide.
3. Mungkin Konsep mind map dan UML dapat membantu sekali.
4. Jika perencanaan ini dilakukan di siang hari, ada baiknya menggunakan penerangan
dari sinar matahari.
5. Ketika sedang ingin keluar makan siang ada baik nya komputer/laptop di stand-by
atau kalau cukup memungkinkan di matikan/hybernate.
6. Berhentilah merokok, ngemil & ngopi. Beralihlah ke yg lbh "hijau" misalkan
yoghurt, susu & teh. Mungkin Biskuit ringan utk yg menderita maag.
7. Sisihkan 10.000 - 30.000 yg dulunya utk membeli rokok (no mean to offense) atau
dari penghasilan utk membeli tanaman pot, slain utk estetika ruangan/rumah,
berguna juga sbg penghasil udara bersih dan penahan panasnya paparan sinar
matahari (sumber nya gw lupa) shg suhu ruangan bs di turunkan 1-2 derajat.

Sekiranya pembaca ada tambahan silahkan.