SMS Gratis di Android via Internet

01 Mei 2012

ikon aplikasi unOFFSG, aplikasi Android untuk mengirim SMS GratisKemaren 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.

Kisah Nyata, aplikasi, pemrograman | Tagged , , , | Beri Komentar

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'>&nbsp;</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>
pemrograman | Tagged , , , , | Beri Komentar

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.

Kisah Nyata, aplikasi, pemrograman | Tagged , , , , | Beri Komentar

Slideshow (sangat) Sederhana

18 Februari 2012

Banyak sekali plugin jQuery untuk membuat slideshow dengan animasi yang terbilang “wah”. Tetapi adakalanya, misalnya saya sendiri kemarin, membutuhkan animasi untuk slideshow yang ringan, dan (sangat) sederhana. Tentu saja, plugin yang “wah” untuk jQuery yang bertebaran di internet tersebut juga menyediakan opsi untuk hanya menggunakan animasi yang sederhana, tapi dalam kasus yang saya alami, saya harus membuat animasi tersebut dengan script yang sependek-pendeknya.

aplikasi, pemrograman | Tagged , , , , | Beri Komentar

Just for some testing

14 Februari 2012

Post ini hanya untuk testing comment via Facebook. Komentar wordpress terlalu banyak spam, dan kurang “social”.

Kisah Nyata, pemrograman, wordpress | Tagged , , | Beri Komentar

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.

aplikasi, pemrograman | Tagged , , | Beri Komentar

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.

Kisah Nyata, Linux, pemrograman | Tagged , , , | 1 Komentar

SCD, raw translation

05 Januari 2012

Tugas DATA WAREHOUSE

Kisah Nyata | Beri Komentar

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.

Uncategorized, pemrograman | Tagged , , , , | Beri Komentar

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.

Kisah Nyata, Uncategorized, pemrograman | Tagged , , | Beri Komentar