Follow Me!
-
Recent Posts
Archives
Categories
Meta
SMS Gratis di Android via Internet
01 Mei 2012
Kemaren lihat di salah satu forum yang saya ikuti, ada yang post mengenai website SMS Gateway yang dia buat. Lumayan juga bisa kirim SMS gratis dari web. Bahkan si pembuat juga menyediakan halaman khusus apabila diakses via mobile (handphone), yang mana akan menampilkan versi yang (lebih) sederhana dibandingkan apabila dibuka via komputer/desktop.
Saya sendiri setelah mengetahui adanya layanan tersebut, lumayan sering memanfaatkan servis yang diberikan untuk mengirimkan SMS secara gratis (tentunya, hehehe…) Lumayan, tinggal buka dari opera mini, dengan internet yang sudah langganan unlimited, atau bahkan Wifi kantor yang bener-bener free, bisa menghemat beberapa ratus rupiah untuk mengirim SMS ke nomer-nomer yang gak terlalu wajib menggunakan nomer handphone saya sendiri.
Membuat Tampilan Jadwal sesuai dengan durasi
10 April 2012
Berikut source codenya,
<?php global $schedules, $start, $leap, $duration, $leapWidth; $start = '00:00'; // waktu kolom pertama $leap = 60; // jumlah menit antar kolom $duration = 60 * 24; //jumlah menit total = 24 jam $leapWidth = 120; // pixel, lebar per kolom waktu $totalWidth = $leapWidth * (($duration / $leap) + 1); // format data, diasumsikan sudah jadi, tentunya data ini bisa diambil dari db atau apapun itu $schedules = array( 'stasiun 1' => array( array( 'duration' => '30', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '60', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '120', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '180', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '30', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '30', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '60', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '90', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '30', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '30', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '60', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '60', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '60', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '60', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '60', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '60', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '60', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '60', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '60', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '60', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '60', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '60', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '60', 'title' => 'Programme Name', 'description' => 'whatever...' ), ), 'stasiun 2' => array( array( 'duration' => '60', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '30', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '120', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '30', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '180', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '30', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '60', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '60', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '60', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '30', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '60', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '60', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '60', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '60', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '60', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '60', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '60', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '60', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '60', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '60', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '60', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '60', 'title' => 'Programme Name', 'description' => 'whatever...' ), array( 'duration' => '60', 'title' => 'Programme Name', 'description' => 'whatever...' ) ) ); function displayTime($start, $leapOver) { list($h, $m) = explode(':', $start); $hplus = floor($leapOver / 60); $mplus = $leapOver - ($hplus * 60); $h = sprintf("%02d", intval($h) + $hplus); $m = sprintf("%02d", intval($m) + $mplus); return "$h:$m"; } function renderHeaderCell() { global $start, $leap, $duration, $leapWidth; $cells = ""; $column = ""; $currentTime = 0; $cells .= "<div class='slotHeader' style='width:{$leapWidth}px'> </div>"; while($currentTime < $duration) { $cells .= "<div class='slotHeader' style='width:{$leapWidth}px'>" . displayTime($start, $currentTime). "</div>"; $currentTime += $leap; } $cells .= "</tr>"; return $cells; } function renderSchedule() { global $schedules, $start, $leap, $duration, $leapWidth; $rows = ""; $colspan = $duration / $leap; foreach($schedules as $channel => $detail) { $rows .= "<tr><td>"; $rows .= "<div class='show' style='width:{$leapWidth}px'>$channel</div>"; $totDur = 0; $oneDay = 24 * 60; // jumlah menit dalam satu hari foreach($detail as $show) { $dur = $show['duration']; $title = $show['title']; $desc = $show['description']; $totDur += $dur; if($totDur > $oneDay) { // terserah mau ngapain disini, validasi aja } $columnWidth = $dur / $leap * $leapWidth; $rows .= "<div class='show' style='width:{$columnWidth}px' title='$desc'>$title $dur</div>"; } $rows .= "</td></tr>"; } return $rows; } ?> <html> <head> <title>time table</title> <style type='text/css'> .slotHeader { position: relative; float: left; background-color: #000; color: #FFF; border: solid 1px; } .show { position: relative; float: left; border: solid 1px; -moz-border-radius: 5px; -webkit-border-radius: 5px; -o-border-radius: 5px; -ms-border-radius: 5px; border-radius: 5px; background-color: #DDD; height: 60px; } #headerCellWrapper { position: relative; /*60 ini angka asal aja, yang penting cukup untuk kelebihan space akibat border kiri-kanan*/ width: <?php echo $totalWidth + 60;?>px; } </style> </head> <body> <table border=1> <tr> <td> <div id='headerCellWrapper'> <?php echo renderHeaderCell();?> </div> </td> </tr> <?php echo renderSchedule();?> </table> </body> </html>
Konversi Basis Angka
24 Maret 2012
Salah satu mata kuliah di periode ini adalah Sistem Digital. Dan materi pembukanya adalah mengenai basis angka, dengan kuliah pembuka yang begitu “wah”, karena tanpa basa basi langsung mendapat tugas yang soalnya gak banyak, hanya 4 soal, tapi diharuskan menulis di kertas folio bergaris, dan ternyata 1 halaman bolak balik kertas folio tersebut full.
Parse File Aiken (moodle)
03 Februari 2012
Script berikut berguna untuk melakukan parsing terhadap file (plain text) dengan format aiken yang digunakan oleh moodle. Diharapkan script ini dapat menangani kondisi dimana terdapat kata “ANSWER: ” pada soal ataupun salah satu pilihan jawabannya. Script ini dibuat tanpa bermaksud menyinggung siapapun, hanya ingin berbagi saja.
Loop, mari berulang-ulang
12 Januari 2012
Hari ini ada tugas membuat laporan statistik untuk akses website client per bulan Januari. Berhubung tools-nya baru sempat di-setup sekarang. Sebenarnya sudah siap sejak kemarin, sekarang hanya perlu meng-update statistik tersebut dari log file yang lama, dari tanggal 1 sampai dengan 9 januari 2012.
SCD, raw translation
05 Januari 2012
Membuat Deretan Abjad dengan loop
15 November 2011
Dalam pemrograman, loop atau perulangan tentunya menjadi sesuatu yang boleh dikatakan pasti akan ditemui setiap kali seorang programmer melakukan coding. Bagaimana tidak, tentunya programmer tidak ingin mengetik berulang-ulang setiap pernyataan yang sekiranya bisa diulang, bisa dikarenakan efisiensi, atau bisa juga dikarena memang harus di-ulang, misalnya, menampilkan isi dari sebuah table dari database hingga benar-benar habis.
PHP: jumlah hari antara 2 tanggal
12 November 2011
Ada sebuah kasus dimana terdapat kebutuhan untuk menghitung jumlah hari di antara 2 tanggal. Dengan menggunakan PHP, hal ini bukanlah sesuatu yang sulit atau perlu dibesar-besarkan, banyak sekali fungsi-fungsi atau pendekatan yang bisa dilakukan dalam PHP untuk melakukan perhitungan ini.
Just for some testing
Post ini hanya untuk testing comment via Facebook. Komentar wordpress terlalu banyak spam, dan kurang “social”.