Selasa, Maret 31, 2009

Pemfaktoran bilangan pecahan STRING

Di milis ada yang tanya,
Ada kasus rada aneh nih, pelajaran jaman SD sebenernya. Misalnya ada string 5/20 maka setelah diproses hasilnya adalah 1/4, dari 2/10 menjadi 1/5. Ada yang tau rumusnya? Thx. akhirnya semua pada coba-coba bikin fungsi untuk kasus ini.
Code 1: by Me <?php /* Pemfaktoran bilangan Cacah Jilid 1 by Stieven R. Kalengkian Untuk SD Kelas 6 cawu 2 (LOL) */ function test($x) { //Pisahkan String PEMBILANG dan PEMBAGI $d=explode('/',$x); //Kumpul nilai faktor pembagi dari PEMBILANG for ($i=1;$i<=$d[0];$i++) { if ($d[0]%$i == 0) { $akar[0][]=$i; } } //Kumpul nilai faktor pembagi dari PEMBAGI for ($i=1;$i<=$d[1];$i++) { if ($d[1]%$i == 0) { $akar[1][]=$i; } } //Tentukan paling banyak bilangan faktor //PEMBAGI atau PEMBILANG if (count($akar[1]) > count($akar[0])) { $a=1; $b=0; } else { $a=0; $b=1; } //Mencari Bilangan Faktor terbesar for($i=count($akar[$a]);$i>=0;$i--) { if (in_array($akar[$a][$i],$akar[$b])) { $k=$akar[$a][$i]; break; } } //Membagi PEMBILANG dan PEMBAGI dengan //Bilangan faktor terbesar $d[0]=$d[0]/$k; $d[1]=$d[1]/$k; //Satukan kembali menjadi string return join('/',$d); } echo test('12/36'); echo "\n"; ?> Code 2: by Arie W. Subagja <?php $x = '4/6'; function xx($str) { $s = explode('/', $str); if ($s[0] == 0 OR $s[1] == 0) { return $str; } if ($s[0] == $s[1]) { return '1/1'; } $pembagi = $s[0] > $s[1] ? $s[1] : $s[0]; $_p = 1; // ambil pembagi paling besar, // ada cara laen selain looping?? for ($i = 1; $i <= $pembagi; $i++) { if ((0 == ($s[0] % $i)) AND (0 == ($s[1] % $i))) { $_p = $i; } } return ( $s[0] / $_p ) . '/' . ( $s[1] / $_p ); } echo xx($x); ?> Code 3: by Youppie Arliansyah
Sekedar nambahin variasi dari yang udah dibuat sama Pak Stieven. Terus terang kasus ini jadi kepikiran bahkan ditengah jalan habis jemput istri pulang kantor. Nah, kuncinya sebenarnya adalah FPB (Faktor Persekutuan Terbesar) dari pembilang dan penyebut. Nantinya masing-masing pembilang dan penyebut dibagi dengan FPB tadi maka kita bisa dapatkan bentuk pecahan terkecilnya. Kode berikut hasil googling untuk mencari algoritma euclidean yang katannya paling efisien untuk mendapatkan FPB
<?php $rumus1='5/20'; function pecahan_terkecil($x){ $s=explode("/",$x); $faktorpersekutuanterbesar=fpb($s[1],$s[0]); $pembilang=$s[0]/$faktorpersekutuanterbesar; $penyebut=$s[1]/$faktorpersekutuanterbesar; return $pembilang."/".$penyebut; } function fpb($a, $b){ while ($b != 0){ $t = $b; $b = $a %$b; $a = $t; } return $a; } echo pecahan_terkecil($rumus1); ?> Nah semoga bermanfaat.

Minggu, Maret 29, 2009

Timebase vs Quotabase

Hari ini ada yang tanya mengenai gimana sih saya harus memilih paket internet? Timebase atau Quotabase? OK disini saya share untuk produk Telkom Speedy Paket Internet Telkom Speedy Personal perhitungan tagihan dibagi dua pilihan : 1. Time Base 2. Quota Base Untuk Time Base dihitung berdasarkan tagihan seperti telkomnet instan Rp. 165/menit Untuk Quota Base dihitung berdasarkan jumlah pemakaian upload+download Rp. 200,000/bln untuk Quota 1GByte kelebihannya Rp. 500/MB Banyak yang terkecoh dengan penggunaan Quota Base, kalo pake quota base sebaiknya selalu check jumlah pemakaiannya di http://www.telkomspeedy.com/ ada bill dan quota pemakaian gunakan username dan password telkom speedy anda atau hubungi 147 untuk username dan password jika anda tidak tahu. Tips memilih layanan telkom speedy, kalo sering browsing (Facebook, Friendster dll..), downloading, Chatting (IRC, YM, GTalk, MSN, Skype dll...) sangat disarankan menggunakan Time Base. Time base gampang di ukur jumlah pemakaian. kalo cuma check email, apalagi yg pake email client via POP/SMTP (Outlook, Thunderbird, dll..) sangat disarankan menggunakan Quota Base. Supaya lebih hemat, kalo mo baca email tinggal download dulu (disconnect) baru baca . Kalo mo kirim email ketik dulu, (connect) baru send. Ok, sedikit info perihutungan Quota Base. Kalo Time Base gampang mo di hitung. Saya punya situs di facebook. Dan pengin upload foto. Lets start... 1. Jalankan browser, ketik www.facebook.com...connecting.. waiting... page loading... halaman login di buka. Pada proses pertama ini quota yang sudah di pakai kurang lebih Upload 1KB + Download 100KB = 101KB 2. Setelah loading akan langsung masuk ke halaman depan profile anda. Dalam halaman itu ada berapa gambar/photo ? dari analisa saya satu foto kurang lebih 30KB - 50KB ok kita ambil yang paling besar nilainya 50KB dan jumlah foto di dalam ada 100. Berarti 50KB dikali 100 = 5000KB = 5MB. 3. Buka halaman photo pribadi atau teman. Satu foto ukuran normal view di face book mencapai 100KB itu pun sudah di kompres (dikecilkan ukurannya oleh facebook). Kalo 100 foto yang di liat (view) berarti 100KB x 100 = 10,000KB = 10MB 4. Upload foto.. hmmm ini yang paling krusial. Upload foto sebaiknya di edit di photo editor dulu (misalnya photoshop) walaupun facebook sendiri bisa melakukan kompresi. Saya anggap foto tidak di edit (dikecilkan di photo editor). Umumnya foto yang tidak di edit (langsung di copy dari kamera digital) biasanya ukurannya dari 700KB - 7MB. Sedikit informasi mengenai kamera digital. Anda punya kamera digital dengan kemampuan 3MB pixel, itu maksudnya 1 foto bisa menghasilkan resolusi sampai 3MB dan umumnya 1 file mencapai 3MB. Nah.. sekarang upload foto sebanyak 10. Berarti upload = 3MB dikali 10 = 30MB di tambah download hasil view dari upload foto (misalnya 1 foto dikompres oleh facebook 100KB) berarti download = 100KB dikali 10 = 1000KB = 1MB. Upload + Download = 30MB + 1MB = 31MB Dari empat proses diatas total quota yang anda gunakan 101KB + 5MB + 10MB + 31MB = 46,101 MB Ini baru perhitungan untuk facebook. Gimana kalo membuka friendster? atau browsing yang lain? apalagi downloading ? Nah kalo diasumsikan anda menggunakan 100MB / hari (ini sudah hemat sekali) berarti 30 hari = 100MB kali 30 = 3000MB = 3GB quota perbulan speedy cuma 1GB = Rp. 200,000 berarti ada kelebihan 2GB = 2000MB dikali Rp. 500/MB = Rp. 1,000,000 tagihan speedy anda = Rp. 1,200,000 (belum termasuk ppn) ok skarang kalo kompare dengan timebase ... dari 100MB / hari bisa berapa lama anda menggunakan internet ? 3 jam ? ok anggap 3 jam / hari 3jam x 60 = 180 mnt dikali Rp. 165/menit = 29,700/hari dikali 30 hari = Rp. 891,000 (belum termasuk ppn) Nah.. kalo pemakaian internet anda lebih dari 2 jam perhari atau quota anda lebih dari 50MB/hari mo pake speedy atau layanan internet yang lain... jangan gunakan time base atau quota base gunakan unlimited Dari contoh perhitungan diatas silahkan liat paket mana yang anda cocok, yang paling penting sebetulnya adalah kontrol penggunaan anda. Kalo ndak bisa kontrol mending gunakan paket unlimited untuk speedy tarfinya Rp. 750,000/bln (belum termasuk ppn)

Selasa, Maret 24, 2009

Telkom Speedy Suck!!!

Sudah dua minggu terhitung sampai hari ini koneksi internet saya di rumah sangat menyebalkan, saya menggunakan telkom speedy office unlimited. Kadang konek, lebih banyak putus-nya. Sucks!!! Lihat saja dari MRTG berikut: SUCKS!!!!!!!!!!! lebih banyak down-nya. Komputerku di rumah tidak pernah mati karena merupakan backup server dari beberapa project yang saya kerjakan. Ugh.... Note: Green = Download Blue = Upload TOPIK SERUPA (similiar link) http://www.plurk.com/p/kxfdy

Sorting array multi demensi

Sering terjadi pada aplikasi yang kompleks kita kerepotan dalam
mensorting array, terutama untuk array multi demensi. Dari forum id-php
pernah di bahas mengenai hal ini, saya melihat coding yang diberikan
sangat kompleks. Dalam pikiran saya apakah mungkin PHP memiliki fungsi
yang built-in ?

Setelah mengutak atik manual php, awalnya saya membuka fungsi asort().
Kemudian saya temukan fungsi array_multisort(). Menarik jadinya.

<?php
// Multi-Demensi Array assoc Items
$items = array
(
'januari' => array( 'qty' => 100, 'rp' => 10000),
'februari' => array( 'qty' => 120, 'rp' => 12000),
'maret' => array( 'qty' => 32, 'rp' => 3200),
'april' => array( 'qty' => 210, 'rp' => 22000),
'mei' => array( 'qty' => 150, 'rp' => 25000),
'juni' => array( 'qty' => 15, 'rp' => 15000),
);

echo '<pre>';
print_r($items);

function qty_sort($a) {
return $a['qty'];
}

function rp_sort($a) {
return $a['rp'];
}

// Mensortir berdasarkan Qty DESC
$array_sort = array_map('qty_sort', $items);
array_multisort($array_sort,SORT_DESC,$items);
print_r($items);

// Mensortir berdasarkan Rp DESC
$array_sort = array_map('rp_sort', $items);
array_multisort($array_sort,SORT_DESC,$items);
print_r($items);

echo '</pre>';
?>

Senin, Maret 02, 2009

3 week at Jakarta

Photo: lokasi grand indonesia (2 mar 09)

Hari ini 2 maret 2009 tepat 3 minggu saya tugas di jakarta.

------
Stieven K.
From Mobile

Aplikasi Pengenalan Wajah menggunakan PHP

Meskipun PHP bukanlah bahasa yang paling umum digunakan untuk pengenalan wajah (Python dengan pustaka seperti OpenCV dan face_recognition le...