Thursday, December 3, 2009

Oracle Returns Number Type with Comma as Decimal Separator

Php-er,

Pernah mengalami atau sdg mengalami Oracle
me-return nilai dari Number Type menjadi string
dan decimal separator nya adl koma? Pastinya
PHP lsg aneh, misalkan

“String (4) =>'1,4991'”
Pastinya jika,
$var = 1 + $retString;

maka output nya,
2

Hasil 2, tidak mengejutkan, krn PHP akan mem-
perlakukan '1,4991' menjadi 1. Nah, solusi nya
bagaimana? Jawabannya ada disini Oracle NLS

Semoga membantu...
Coding for life, coding with ethic.

Friday, November 27, 2009

Forcing Apache Case-Insensitive

Pernah mengalami masalah case-sensitive dlm coding?
Atau migrasi dari platform yg case-insensitive
ke case-sensitive, maka harus periksa seluruh code,
untuk memastikan semua dlm case yg benar? Saya pernah!
Dan sampai saat ini pun terkadang masih mengalaminya.
Saya mengalami ketika project awal mulanya dikerjakan
di Windows, dan skg saya hrs migrasi ke Linux.

Sungguh menjadi pekerjaan yg banyak. Anyway saya akan
memberikan tips utk menghindari ini. Dg mengaktifkan
mod_speling, agar kesalahan-kesalahan case seperti,
adesanto_php dg Adesanto_Php, dapat diabaikan.

Caranya, karena utk Windows adalah platform
case-insensitive maka saya hanya akan membahas,
mengaktifkan mod_speling di Linux. Pastikan di folder
apache modules blm ada mod_speling.so. Jikalau sudah
ada maka anda langsung ke step no.7-9.

1. Download tar/zip apache2 (source).
2. Unzip/Untar apache2.
3. Masuk ke direktori apache2 yg telah ter-Extract,
lalu masuk ke direktori modules.
4. Jadilah superuser (root),
(fedora) # apxs -c mod_speling.c
5. # apxs -i -a -n mod_speling mod_speling.la
6. setelah kompilasi berhasil,
vi httpd.conf
7. tambahkan ,
LoadModule mod_speling mod_speling.so

<ifModule>
CheckCaseOnly on
ChecSpelling on
</ifModule>
8. restart apache.
9. pastikan module sudah jalan dg ketikan ini di
shell,
apache -M

Setelah semua langkah diatas telah selesai,
saatnya kita test, misalkan ada file adesanto_php
maka cobalah utk memanggil nya dg Adesanto_Php,
langsung dari browser atau code anda. Hal yg harus
diingat, krn ada perbedaan case maka apache akan
mencoba mencari kesamaan yg berarti ada time
overheads. Utk tingkat scale medium ini tidaklah
menjadi masalah. Cek access_log, disana tercatat
ada 2-3 atau lebih request utk filename yg sama
tetapi beda case. Utk informasi lbh lanjut
langsung ke Apache Documentation.

Wednesday, November 18, 2009

PHP-EXCEL-XML

Reporting dalam Excel form? Kenapa tidak. Saya secara pribadi
udah ngalamin, hasil print out browser yg berantakan,
tidak sama antara 1 sama lain dimana dasar codingnya sama, dsb.
Nah... sempat terpikir gunakan FPDF aja atau TCPDF.
Alhasil, mungkin saya nya yg kurang bisa,
seharian berkutat dan memble juga.
Pada akhir nya saya melirik teknik XML-spreadsheet.
Dimana teknik nya mencakup:

1. XML-spreadsheet.
2. Force Download.

Oke, kita bedah satu-satu. XML, humm...
sounds familiar?
Saya akan coba mengenalkan apa itu XML,
melalui link-link ini:
1. w3school
2. tizag
3. ibm developerworks
Bagi pemula jangan melewati bagian ini, untuk
yg expert ada bagus nya utk mengunjungi link-link tsb
utk sekedar review.

Setelah anda mengunjungi link-link tsb,
buat file excel baru lalu di row 1 anda buat header.
Misalkan: col1 => Nama, col2 => Nim, col3=> Nilai.
Setelah itu row 2 anda masukan data,
sesuai dgn kolom. Misalkan: col1 => Adesanto,
col2 => 0911090001, col3=> 99 (tidak 100, krn manusia
tak ada yg sempurna).
Lalu File->"Save As"->XML-spreadsheet, beri nama
"my-xml-spreadsheet.xml".

Langkah berikut nya adalah menggunakan editor favorit anda,
untuk membuka "my-xml-spreadsheet.xml".
Saya menganjurkan Notepad++ windows, atau gedit linux,
untuk editor pilihan/rujukan dari saya.
Scroll down hingga anda menemukan tag
<Worksheet ss:Name="Sheet1"> <table ...>.
Perhatian, ss:Name="Sheet1" adalah nama worksheet default
excel/calc, akan tidak sama jika sebelumnya telah me-rename.
Dan interesting part nya, terletak di tag <table ...>.
Buang informasi tambahan dalam table utk mencegah
tidak konsistennya data, sehingga menjadi <table>,
setelah itu di-Save.

Kita akan membagi "my-xml-spreadsheet.xml" menjadi 3 bagian,
$excelHeader, $excelBody dan $excelFooter.
Lalu masih dari "my-xml-spreadsheet.xml",
copy paste dari awal data hingga akhir tag </Row> ke 1,
untuk menjadi data utk $excelHeader.
Dan copy paste dari tag </table> hingga paling akhir
menjadi data $excelFooter.
Data XML:
<?xml version="1.0"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">
<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
<Author>Adesanto Asman</Author>
<LastAuthor>Adesanto Asman</LastAuthor>
<Created>2009-11-18T13:37:59Z</Created>
<Company>DIGIKREASI INOVASINDO</Company>
<Version>10.2625</Version>
</DocumentProperties>
<OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office">
<DownloadComponents/>
<LocationOfComponents HRef="file:///F:\"/>
</OfficeDocumentSettings>
<ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
<WindowHeight>7935</WindowHeight>
<WindowWidth>19035</WindowWidth>
<WindowTopX>0</WindowTopX>
<WindowTopY>120</WindowTopY>
<ProtectStructure>False</ProtectStructure>
<ProtectWindows>False</ProtectWindows>
</ExcelWorkbook>
<Styles>
<Style ss:ID="Default" ss:Name="Normal">
<Alignment ss:Vertical="Bottom"/>
<Borders/>
<Font/>
<Interior/>
<NumberFormat/>
<Protection/>
</Style>
<Style ss:ID="s23">
<Alignment ss:Horizontal="Center" ss:Vertical="Bottom"/>
<Borders>
<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="2"/>
<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="2"/>
<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="2"/>
<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="2"/>
</Borders>
<Font x:Family="Swiss" ss:Bold="1"/>
</Style>
</Styles>
<Worksheet ss:Name="Sheet1">
<Table>
<Column ss:Width="46.5"/>
<Column ss:Width="52.5"/>
<Row ss:Height="13.5">
<Cell ss:StyleID="s23"><Data ss:Type="String">Nama</Data></Cell>
<Cell ss:StyleID="s23"><Data ss:Type="String">NIM</Data></Cell>
<Cell ss:StyleID="s23"><Data ss:Type="String">Nilai</Data></Cell>
</Row>
<Row>
<Cell><Data ss:Type="String">Adesanto</Data></Cell>
<Cell><Data ss:Type="Number">911090001</Data></Cell>
<Cell><Data ss:Type="Number">99</Data></Cell>
</Row>
</Table>
</Worksheet>
</Workbook>

$excelHeader = '<?xml version="1.0"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">
<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
<Author>Adesanto Asman</Author>
<LastAuthor>Adesanto Asman</LastAuthor>
<Created>2009-11-18T13:37:59Z</Created>
<Company>DIGIKREASI INOVASINDO</Company>
<Version>10.2625</Version>
</DocumentProperties>
<OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office">
<DownloadComponents/>
<LocationOfComponents HRef="file:///F:\"/>
</OfficeDocumentSettings>
<ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
<WindowHeight>7935</WindowHeight>
<WindowWidth>19035</WindowWidth>
<WindowTopX>0</WindowTopX>
<WindowTopY>120</WindowTopY>
<ProtectStructure>False</ProtectStructure>
<ProtectWindows>False</ProtectWindows>
</ExcelWorkbook>
<Styles>
<Style ss:ID="Default" ss:Name="Normal">
<Alignment ss:Vertical="Bottom"/>
<Borders/>
<Font/>
<Interior/>
<NumberFormat/>
<Protection/>
</Style>
<Style ss:ID="s23">
<Alignment ss:Horizontal="Center" ss:Vertical="Bottom"/>
<Borders>
<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="2"/>
<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="2"/>
<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="2"/>
<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="2"/>
</Borders>
<Font x:Family="Swiss" ss:Bold="1"/>
</Style>
</Styles>
<Worksheet ss:Name="Sheet1">
<Table>
<Column ss:Width="46.5"/>
<Column ss:Width="52.5"/>
<Row ss:Height="13.5">
<Cell ss:StyleID="s23"><Data ss:Type="String">Nama</Data></Cell>
<Cell ss:StyleID="s23"><Data ss:Type="String">NIM</Data></Cell>
<Cell ss:StyleID="s23"><Data ss:Type="String">Nilai</Data></Cell>
</Row>';

$excelFooter = '</Table>
</Worksheet>
</Workbook>';

Data yg akan kita tampilkan/sisipkan,
akan kita assign ke $excelBody.
Caranya copy paste dari tag <Row>
hingga </Row> ke 2, ke dalam coding kita.

...
for($iRow = 0; $iRow < 10; $iRow++){

$excelBody = "<Row>
<Cell><Data ss:Type=\"String\">Adesanto</Data></Cell>
<Cell><Data ss:Type=\"Number\">911090001</Data></Cell>
<Cell><Data ss:Type=\"Number\">".$iRow."</Data></Cell>
</Row>";
}
...

Ok kita sudah selesai dg file XML kita.
Sekarang user harus diberi kemudahan, utk dapat melihat
hasil dlm bentuk excel format. Cukup taruh
code ini diawal:

$archiveName = 'php-excel-xml.xml';
$length = 2000000; // utk kelengkapan code force download, saya beri value statis
$contentType = "text/plain";
$option = 'inline';

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Type: application/".$contentType."");
header("Content-Disposition: ".$option."; filename=".basename($archiveName).";" );
header("Content-Transfer-Encoding: binary;");
header("Content-Length: ".$length);

Disambung dengan

echo $excelHeader.
$excelBody.
$excelFooter;

Seharus nya setelah code di execute di browser,
akan muncul pop-up download,
pilih open with: excel, atau, scalc (open office excel).

Sebagai catatan, ketika kita membentuk $excelBody
pastikan utk meng-"escape" karakter ini, '&' dan '"'.
Khusus karakter tanda kutip 1, ada perlakuan khusus yaitu,
<Data ss:Type="String" x:Ticked="1"></Data>

Happy Coding.

Tuesday, November 3, 2009

PHP eAccelerator

Php-er,

Mau sharing lagi nehh... Skg tentang ph-eaccelerator, wuih stl pake ini, applikasi
jalannya terasa lbh cepat. Link-link ini mungkin bisa menjadi referensi,
1. http://www.techiecorner.com/111/install-eaccelerator-optimize-php-performance-reduce-server-load/
2. http://sakafi.wordpress.com/2008/07/07/installing-eaccelerator-on-linux-machines/.

Setelah pakai eaccelerator nya jgn lupa di benchmark jadi tau "Gain"nya berapa.
Ini ref nya http://www.ipersec.com/index.php/2006/05/30/benchmarking-php-accelerators/

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.

Friday, June 26, 2009

When You Down

PHP-er,

Yeah masih rentetan dari artikel "Just 5 Minutes". Have you ever felt down? Well I do and yes I am now in this situation.
One Family see me with my job well... I don't know, they just see no future. And my heart says differently. I see future with the thing am doing, coding in PHP. But sometimes people just want to see what they wanted to see and think what they wanted to think.

They don't see money, indeed, but to me, am investing my time and hard work. And the worst thing is when we have to face the real world, it seems that we are totally lost.
I have just not there yet...

I just wish am still can hold this longer, struggle more, fight more, encouraged more... and in the end they will see that all my hard work and time are not in vain.
Not whissing but trying... Though i feel walking alone...

At the end of this article i just wanted to say,"Hey great success, money, and prosperity I am coming, prepared yourself to welcome me", thx.
Coding with ethic, coding for life. And yes to live this life you need code, code of life. Not easy as spoken but worth to try.

Tuesday, June 23, 2009

Just 5 Minutes

PHP-er,

Hanya 5 menit? Iya hanya 5 menit. Anda pejamkan mata anda dan pikirkan kembali hal-hal positif yg anda pernah raih sebelum nya. Dan lihat perbedaan kemampuan anda. Saya percaya sebelum 5 menit anda sudah kembali sampai ke masa kecil anda.

Nah pelajaran apa yg anda dapat dalam 5 menit? Mudah dlm 5 menit anda telah mereview betapa anda memiliki potensi yang besar, kemampuan otak utk berpikir cepat krn kejadian yg anda lalui bertahun2 anda dapat review kurang dari 5 menit. Jadi secara kemampuan berpikir anda amat sangat hebat.

Anda dapat melihat perbedaan dari segi kemampuan dan hal2 yg telah anda raih, ini menandakan tidak ada yg tidak bisa anda lakukan. Dan secara otak anda mampu untuk belajar utk menyelesaikan masalah.

Anda dapat melihat hal2 positif yg telah anda raih dan capai dalam hidup sampai sekarang, maka dari itu jgn berpikir negatif ttg diri anda. Dan dari semua itu 1 hal yg perlu ditekankan, kenapa kita baru sadar ketika kita pejamkan mata dan mengikuti intruksi singkat ini, yg pada nyatanya tidak perlu sampai 5 menit?

Itulah kadang kesibukan, kekhawatiran dan kekecewaan menutupi hal2 positif dan indah yg pernah anda raih sebelum nya. Tapi ada yg pernah bertanya kepada saya, pak Ade kenapa ketika saya pejamkan mata saya tidak merasakan, memikirkan dan melihat apapun dibenak saya. Jawab saya, bagus! setidak nya anda telah memulai utk mencoba, maka dari itu anda akan berusaha (setidak nya).

"Karena lebih baik mencoba dan gagal seumur hidup, daripada diam", Anonymous

Thx, coding with ethics, coding for life

Tuesday, June 16, 2009

PHP include_once class not found

PHP-er,

Ada yg pernah menghadapi situasi seperti judul diatas?
Ikuti link ini dan temukan solusi nya. Gw pakai

include_once dirname(__FILE__).("/../Account/AccountCustom.php");

Artikel ini tidak terlalu panjang berhubung, sekali nya gw ketemu kasus ini lsg gw post aja. Siapa tahu ada yg mengalami hal yg sama.

Thx, coding with ethic coding for life...

Friday, June 12, 2009

Going VirtualBox 2

PHP-er,

Baru-baru ini gw sedang menggiatkan diri utk menghindari software bajakan. Nah biasa nya gw pake VMWare yg jauh lebih enak utk masalah virtualisasi ktimbang Virtualbox.
Kenapa gw bilang lbh enak, krn masalah settingan network ga seribet pake virtualbox, dan utk masalah bridge nya apalagi wuih pokok nya mantap, easy setup, itu aja.

Dan akhir nya gw beralih ke virtualbox 2.2.4. Walaupun ga banyak gw ulas di article ini, anyway gw fokusin utk masalah setting network dan artikel selanjut nya utk setup PHP+Apache+ORACLE.

Langsung aja, masalah yg akan gw bahas 2 point aja, oyah gw anggap utk nambahin network card vbox (virtualbox 2.2.4) dan basic settings nya lo org udah pada ngerti:
1. NAT (supaya bisa di akses oleh network)
2. Local Network (supaya bisa akses shared document dari Host)

(**Point #2 perlu ketika network kita tidak tersambung ke switch atau host lain nya)

NAT,
Utk konfigurasi ini silahkan ke sini. Nah yg mau gw bahas adalah setiap konfigurasi itu arti nya apa dan apa aja yg terjadi, krn jujur ketika gw ikutin ga lsg jalan semulus itu.

contoh
VBoxManage setextradata "VBoxFedora9” “VBoxInternal/Devices/pcnet/0/LUN#0/Config/Apache/Protocol” TCP

VBoxManage setextradata “VBoxFedora9” “VBoxInternal/Devices/pcnet/0/LUN#0/Config/Apache/GuestPort” 80

VBoxManage setextradata “VBoxFedora9” “VBoxInternal/Devices/pcnet/0/LUN#0/Config/Apache/HostPort” 8880

VBoxFedora9 nama guest elo.

Apache sebenernya ini bisa apa aja, tapi utk memudahkan kita ktika kita liat lagi settingan ini. Untuk keperluan apa forwarding ini.

buka directory virtual machine kalian, dan cari Guestname.XML dicontoh ini maka cari nya di /machine/VBoxFedora9.xml. Buka XML nya dan cari

<ExtraDataItem name="VBoxInternal/Devices/pcnet/0/LUN#0/Config/Apache/Protocol" value="TCP"/>

<ExtraDataItem name="VBoxInternal/Devices/pcnet/0/LUN#0/Config/Apache/GuestPort" value="80"/>

<ExtraDataItem name="VBoxInternal/Devices/pcnet/0/LUN#0/Config/Apache/HostPort" value="8880"/>

Nah jelas kan ternyata settingan yg tadi kalian exec via CMD, VBoxManage setextradata... menambahkan settingan baru. Nah hubungan nya ini
<span style="font-style:italic;">../pcnet/0/LUN#0/..</span> ke

<Adapter slot="0" enabled="true" MACAddress="08002737EB42" cable="true" speed="0" type="Am79C973">
<HostOnlyInterface name="VirtualBox Host-Only Ethernet Adapter"/>

slot 0 dan pcnet/<span style="font-weight:bold;">0</span>/LUN..
jadi kalo elo ada lets say 2 network yg mau lo port forward ato mau yg device ke 2 yg di forward maka set pcnet/<span style="font-weight:bold;">slotYgLoMauPake</span>/LUN..

Dan sebagai tambahan utk slot ato device yg digunakan sebagai NAT diakhiri dengan <NAT/> dari contoh konfigurasi guest diatas seperti ini

<Adapter slot="1" enabled="true" MACAddress="0800271F8854" cable="true" speed="0" type="Am79C973"> <span style="font-weight:bold;"><NAT/></span> </Adapter>

Tips jgn lupa ganti DNS di client (win ato linux) krn terakhir yg tau guest virtualbox ga bisa di set DNS nya ke gateway host, kecuali lo kasih alamat DNS nya 10.0.2.2, utk yg ini gw blm cobain. Yang pasti gw set DNS nya yg dari free DNS server, silahkan gw google aja, ato cuba pake DNS telkomsel 202.152.0.2/202.155.14.151.

Local Network,
Ga banyak yg gw ulas utk yg ini krn intinya lo harus aktifin 2 network ini ketika pc lo ga konek ke pc atau switch lain nya.. jadi lo bisa saling komunikasi ke guest dan krn NAT lo aktif dan lo juga ada sambungan 3G pake HSDPA modem maka guest elo bisa akses ke internet.

Semoga artikel ini bisa membantu.
Thx, coding with ethic coding for life...

Tuesday, June 2, 2009

How Significant is CI

Php-er,

Sampai sekarang gw masih blm melihat signifikansi dari penggunaan CI.
Gw yg skg lagi devel OSales sedikit banyak nya masih mengalami "benturan2".
Lain hal nya kl lsg coding pake cara lama.

Kalo boleh di shared disini...

Thursday, May 28, 2009

My PHP being Frustated

Php-er,

Ini artikel PHP yg lbh ke curhat... Bbrp waktu ini project yg udah gw develope, terpaksa bongkar pasang dan edit sana sini... Karena client yg minta utk di sesuaikan.
Mau minta masukan nehh dari coder2 lain yg lbh pengalaman adakah cara yg bisa menyiasati hal2 ini. Misalkan codingan udah terlanjur berantakan...

Refactoring dan Agile Coding udah gw cuba terapin... tapi alhasil masih berat...
So mohon petunjuk nya...

Thx, coding with ethic coding for life...

Tuesday, May 26, 2009

Portofolio with Codeigniter

Php-er,

Ini salah satu project pribadi, untuk buat portofolio.
Anyway project ini masih minimalis sekedar kerangka utama ato menu scr global aja.
Langsung aja, oyah ada bbrp requirements:

1. Project ini menggunakan MySQL.
2. Buat Database beri nama CI.
3. Gw anggep dasar2 CI misalkan bbrp konfigurasi dasar kalian udah ngerti.
Misal nya : routes.php, database.php, dll. Dan application managing
4. Cukup copy directory portofolio gw ke dlm directory application CI kalian
5. Kalo ga jalan atau error di trace dolo, kl masih ga bisa post di comment aja,
gw cuba bantu sebisa mungkin.

File nya di download di sini

bbrp konfigurasi nya,

root CI berisi index.php lalu rubah line of code yg berisi
$application_folder = "application";
menjadi
$application_folder = "application/portofolio";

khusus bbrp konfigurasi di dalam dir portofolio:
routes.php
$route['default_controller'] = "Portofolio";

Dan kl anda bener2 telusurin code gw, ada pic yg bisa taruh di template, so have fun...

Sunday, May 24, 2009

CodeIgniter 1st attempt

Php-er,

Akhir nya setelah sekian lama hanya bisa mendengar apa itu CI, gw ikutan ber-CI.
Applikasi pertama gw adalah Open Sales, yg masih gw godok, krn ada bbrp syntax query yg harus di sesuaikan untuk MySQL (selama ini pake Oracle).

Lagi nyari2 hostingan untuk upload codingan gw juga. Sekalian mau buat portofolio.
Ok... mungkin 1 bulan dari sekarang OSales bisa di rilis dlm bentuk beta.
Oyah nanti salah satu applikasi yg akan di upload, Portofolio, source nya akan gw buka dan bisa di download dari google code. So ditunggu tanggal main nya

Thursday, May 14, 2009

FeedBurner

Php-er,

Bbrp waktu yg lalu baru mulai kegandrungan feeds reader dgn google. Terkesima akan mudah nya menyantap berita2 terbaru tanpa harus bersusah payah googling atau apalah...
Intinya Blog gw ini juga mulai ada fitur utk itu... hehehe maklum rada telat utk make nya.

So subscribe utk feeds/rss/atom ke reader kalian yahhh...

Wednesday, April 29, 2009

Excel To DB

Php-er,

Setelah di sodorin terus-menerus permintaan client utk upload data dari excel. Akhir nya gw putusin utk buat applikasi utk automatic generate query sql. Applikasi ini baru tahap awal, pengembangannya di harap kan bisa lsg upload masuk ke database.

Tanpa panjang lebar silahkan unduh file nya dari sini excel2Db . Rencananya mau upload ke google code, sehingga terbuka kesempatan untuk saya dgn kalian memoles code ini menjadi lbh baik.