Pattern Singleton

Dalam sebuah aplikasi kadang diharapkan hanya ada satu instance suatu objek. Misalnya koneksi ke suatu database server. Nah intinya dalam implementasinya bagaimana kelas singleton nanti mengintersep ketika ada percobaan dalam membuat objek baru. Ok, here we go:

class DB{
	public static function Connect(){
		return mysql_connect("localhost","root","");
	}
}

class DatabaseConnection{

	static $state;

	public static function initiateConnection(){

		if (self::$state == null){
			self::$state = new DatabaseConnection();
			echo 'Database connection initiated';
		}else echo 'Failed initiating connection';

	}

	private function __construct(){
		DB::Connect();
	}

	public static function destroyConnection(){
		self::$state=null;
		echo 'Connection destroyed';
	}

}

DatabaseConnection::initiateConnection();
//DatabaseConnection::destroyConnection();
DatabaseConnection::initiateConnection();

Pada class di atas ketika pertama kali di akses nilai variabel state masih null, sehingga request untuk membuat objek diizinkan. Pemanggilan kedua sudah tidak diizinkan kembali karena nilai variabel state sudah tidak null lagi. Agar dapat terjadi inisiasi lagi di kelas tersebut anda harus merubah nilai variabel state menjadi null kembali, di atas sudah sediakan method static destroyConnection untuk merubahnya.

 

PHP array illegal offset

Ketika anda mencoba memasukan data ke array dengan menggunakan index dinamis berupa objek misalnya seperti ini:

$obj=new object;
$arr[$obj->index]=’value’;

Dengan menggunakan format seperti di atas akan menyebabkan error illegal offset. Untuk mengatasinya anda harus meng-cast ke string untuk index array. Contohnya seperti ini:

$obj=new object;
$index=(string)$obj->index;
$arr[$index]=’value’;

SRBAC dan permasalahannya.

SRBAC merupakan sistem module pada yii yang dibuat spyros untuk mengatur hak akses pada aplikasi. Sistem ini memiliki graphical web interface yang memudahkan kita untuk mengaturnya, sehingga user sama sekali tidak perlu mengkoding untuk mengatur hak akses. easy isn’t it?

Nah, di sini ada beberapa case yang menurut gw jadi permasalahan dan butuh sedikit work-around untuk mengatasinya. Seperti themes, themes pada srbac dia mengambil dari themes bawaan Yii, sehingga ketika anda merubah themesnya dengan themes yang ada diluar folder protected, dan ketika membuka srbac, tampilannya jadi berubah, rada2 ga enak sih sebenarnya…apalagi kalo menggunakan srbac sebagai core dari aplikasi kita.

Berikut solusi untuk masalah di atas

//dapatkan path dari themes yang sedang digunakan
$fullPath=Yii::app()->theme->getViewPath();
//path dipecah sehingga akan menghasilkan 
//kurang lebih seperti ini: /themes/current_themes/views
$layout=substr($fullPath,strpos($fullPath,'themes')); 

//replace string / menjadi \\
if (strpos($layout,'\\')){
	$layout=str_replace('\\','/',$layout);
}

//disini ditentukan layout yang digunakan srbac
$this->layout='/'.$layout.'/layouts/main';

Lalu case lainnya, yang gw temui belakangan adalah ketika anda menentukan sebuah perlakuan terhadap action, (misalnya actionIndex hanya bisa diakses oleh role tertentu), ketika action tersebut memiliki parameter(actionIndex($p)) parameter, maka action tersebut tidak akan bisa diakses. Anda akan mendapatkan pesan kesalahan sebagai berikut:

Error:403 ‘You are not authorized for this action’

Error while trying to access /page/index.

tapi ketika anda masuk ke file allow.php yang ada di dalam module srbac dan merubah ’PageIndex($p)’ , menjadi ‘PageIndex’ saja, maka akan berjalan normal. Hal ini akan menjadi masalah, karena yang tersimpan di dalam srbac adalah PageIndex$p.

Permasalahan yang terjadi adalah ketika beforeAction di dalam file SBaseController.php melakukan validasi, data yang diterima tidak match dengan data yang tersimpan. Misalnya data yang diterima seharusnya PageIndex$p, yang diterima dan kemudian dibandingkan dengan data yang ada pada srbac hanya PageIndex. Sehingga munculah error di atas. Untuk mengatasinya anda bisa menambahkan kode dibawah untuk mengatasinya, kode di bawah ini diletakkan di file SBaseController.php di module srbac di dalam folder components pada method beforeAction setelah baris $access = $mod . $controller . ucfirst($this->action->id). Berikut kodenya:

if (count($this->actionParams) > 0){
	$keys=array_keys($this->actionParams);
	foreach($keys as $key){
		$query=$query.','.'$'.$key;
	}

	$query=substr_replace($query, '',0,1);
	$access=$access.$query;
}

Google +1 Button

google +1 buttonGoogle kembali membuat terobosan, yakni menambahkan tombol +1(+1 button). Yang bisa diartikan sebagai sebuah persetujuan/rekomendasi anda terhadap hasil pencarian. Sehingga, teman, kontak, ataupun yang lainnya bisa mendapatkan hasil pencarian yang lebih relevan dan lebih cepat berdasarkan rekomendasi yang telah anda lakukan. +1 button bersifat publik, artinya rekomendasi anda juga akan menjadi acuan hasil pencarian yang dilakukan oleh orang lain.

Berikut step by step menggunakan +1 button:

+1 button sebelum diklik

Dibutuhkan konfirmasi setelah +1 button diklik pertama kali

+1 button sesudah anda klik

Hasil pencarian yang telah direkomendasi

Untuk memunculkan +1 button dalam hasil pencarian anda, anda bisa melakukannya dengan mengunjungi google experimental dan klik button Join This Experiment dan pastikan anda telah login ke google account anda sebelumnya. Untuk sekarang(2011/03/30),+1 button hanya ada di google.com(english). Tombol tersebut masih butuh waktu untuk dimunculkan di seluruh dunia. Terkadang muncul, terkadang hilang dikarenakan masih dilakukan pengembangan. Google sendiri menjanjikan +1 button akan muncul dalam beberapa minggu ke depan di seluruh produk google.

Nih videonya, enjoy it:

Konversi Data dari MySQL ke Excel dengan PHP

Gara2 pertanyaan si Alfian nih gw jadi kepikiran cara konversi data ke Excel dengan menggunakan PHP. hahahah….thanks anyway bro… Setelah sedikit googling ketemu juga caranya, dengan menggunakan PHPExcel yang bisa didapatkan disini nih http://phpexcel.codeplex.com/ extensionnya gede juga, 131MB setelah di extract. Padahal dari ukuran downloadnya cuma 18MB di tar.gz. wheww…ok, enough about chit chat, yang mau langsung eksekusi aja gan. Jadi untuk menggunakannya silahkan download dulu ya extensionnya di phpexcel. Konfigurasi filenya kurang lebih kek gini nih:

root/

-phptoexcel/

–Classes/     —-> tempat extensionnya, nanti dari extensionnya ambil yang folder Classes aja trus copas dibawah folder phptoexcel

–phptoexcel.php

Trus jangan lupa, karena data yang akan dimasukan ke excel dari mysql jadi siapin juga databasenya. Disini gw ambil contoh tabel user dari Read more…

Print alphabet dengan PHP

Ternyata ada cara buat mencetak huruf secara alphabet dengan PHP tanpa harus mendeklarasikan seluruh alphabet terlebih dahulu. Cukup dengan menggunakan fungsi range(), hadeehh…ketinggalan gua…hahhaha,

Ok, here is the code:

private function getAlphabet(){

return range(‘A’,'Z’);

}

over and out…

Alhamdulillah release lagi

Alhamdulillah cd tutorial gw yang ke-2 release lagi, kali ini tentang VB.Net 2010. Ada 2 cd, cd 1 berisi tentang tutorialnya, cd2 berisi master program vb.net 2010 express edition, sql server, dan sql server management studio express edition. CD Tutorial ini bisa didapatkan di garudamedia.co.id/cd-tutorial-visual-basic-net-2010.html

cara submit comment di facebook

Cara comment di facebook baru2 ini berubah, kalo dulu kita harus tekan tombol untuk mensubmitnya. Sekarang kita cukup tekan enter pada keyboard dan comment-pun tersubmit. Well, memudahkan memang, tapi gimana caranya kalo mau submit comment kek gini:
Hello….
World…

Ternyata caranya kombinasi, shift + enter. Good job guys…

Memulai Framework Yii

Yii merupakan sebuah framework yang masih sangat baru(versi terbaru 1.1.6), bisa langsung cek ke TKP untuk lebih jelasnya. Disini akan dijelaskan cara pemasangan Yii di windows dengan menggunakan XAMPP.

UPDATE PEAR

Sebelumnya harus dipastikan PEAR sudah diupdate ke versi yang terbaru untuk dukungan PHPUnit untuk melakukan testing selama masa produksi.

Untuk melakukan update PEAR, anda dapat mengaksesnya dari command prompt dengan memanggil Pear, namun sebelumnya anda harus mendaftarkan Pear ke environment variable Read more…

Chrome extensions: Switch to Tab

Ada satu extensions yang asik yang baru – baru ini saya temukan di webstorenya chrome. Yaitu extensions Switch to Tab, extensions ini memudahkan kita untuk berpindah antar tab di dalam browser chrome. Kalau biasanya kita berpindah tab dengan menggunakan mouse atau dengen menekan kombinasi ctrl+tab. Dengan adanya extensions ini, kita cukup ketikan di address bar sw, kemudian pilih Switch to Tab dengan menekan tombol panah bawah. Selanjutnya ketikan web title yang telah anda buka di browser chrome, secara otomatis akan muncul tab – tab yang web titlenya sesuai dengan apa yang anda ketikan. Tekan enter dan voila, anda sudah berpindah ke tab yang anda pilih. Namun ada sedikit kekurangan dalam extensions ini, yaitu ketika anda menekan enter untuk membuka tab yang telah anda pilih, jendela chrome mengecil (Bukan minimize). Mudah – mudahan developernya bisa cepat memperbaiki extension ini.

Untuk mendapatkan extensionnya silahkan download di sini:

https://chrome.google.com/webstore/detail/gbfhhcljihbgcobpfnceegfmooomhhli#

Follow

Get every new post delivered to your Inbox.