Launching the Prayers For Forgiveness Blogger Widget!

You can get it here.

Blessed with this idea after Ramadhan but hope everybody, and myself, find it especially useful for the next Ramadhan.

This blogger widget randomly displays one prayer (english translation) from the seventy prayers written down by Hasan Al-Basri, a respected scholar born in 21 AH and brought up in the house of Umm Salama (ra).

You can order the book at amazon. It’s right over here. Highly recommended!

As of writting, there’s about 5 prayers in the database. I’ll fill it up soonest. :) . (Update: All done.)

regards.

/** Update **/
I guess this stuff is done! Works fine so far.

jquery sebagai framework terbaik

Membina satu aplikasi web kini hampir mewajibkan penggunaan javascript. Ini disebabkan penggunaan konsep AJAX secara meluas. Rasanya selepas AJAX diperkenalkan, pelbagai framework javascript mula mendapat perhatian kerana AJAX itu pada dasarnya sedikit rumit terutama apabila mengambil kira bagaimana setiap browser meng-implementasi AJAX itu sendiri. Tambahan pula, framework-framework itu keluar dengan special effect untuk mencanggihkan(merumitkan?) lagi interface aplikasi kita.

Jquery adalah satu framework yang begitu popular kerana ia direka untuk memudahkan kita memasukkan AJAX, special effects serta pelbagai funtion-function lain melalui penggunaan plugin. Ianya mudah untuk mereka yang tidak biasa dengan javascript dan juga cukup solid untuk mereka yang sudah master.

Baru-baru ini jquery dipilih oleh Nokia dan Microsoft untuk disertakan dalam produk-produk mereka. Ini boleh dibaca pada blog jquery. Aplikasi mobile disertakan dengan javascript? :)

Dengan dua nama besar ini menggunakan jquery, rasanya sesiapa yang ingin mencari framework javascript yang mantap bolehlah memilih jquery dengan hati yang senang.

menggunakan cakephp’s beforeFind

I found out that on cakephp 1.2 RC3 you must use the new $Model->find() style or the query will break.

1
2
3
4
5
6
7
8
9
10
11
//in the controller use this...
$this->Post->find('first', $params);
 
//instead of the 'old' style...
$this->Post->find($conditions);
 
//so that in the model, you can do something like this...
function beforeFind($queryData) {
          $queryData['conditions']["`Post`.`post_type`"] = "personal";
          return($queryData);
}

Ada masanya kita perlu mengubah condition carian-carian kita pada satu-satu model. Selain meletakkan condition query itu setiap kali kita melakukan find, kita boleh menggunakan function callback pada model iaitu function beforeFind(). Ia menerima satu parameter iaitu $queryData, variable array yang menyimpan maklumat untuk find seperti ‘conditions’, ‘limit’, ‘joins’ dan sebagainya.

Tidak seperti tertera pada dokumentasi cakePHP, sebenarnya untuk beforeFind kita dapat memulangkan samada boolean (true/false) ataupun satu array . Jika kita memulangkan boolean, ia samada menjalankan query tersebut atau tidak: true untuk teruskan query, false untuk tidak membuat query.

Apa yang tidak disebut ialah jika kita mahu menukarkan apa2 pada syarat query itu, kita perlu buat perubahan pada $queryData dan pulangkan $queryData itu (return ($queryData)). Contoh…

1
2
3
4
5
6
7
/**
* ini contoh untuk menambahkan syarat pada find kita. Ini pada model AccomodationTravelBooking
**/
function beforeFind($queryData) {
     $queryData['conditions'][] = "`AccomodationTravelBooking.booking_type` = 'accomodation'";
     return($queryData);
}

Contoh diberi pada dokumentasi cakephp ialah jika kita tidak membenarkan query dilakukan mengikut syarat2 tertentu:

1
2
3
4
5
6
7
8
9
10
11
/**
* ini contoh untuk menambahkan syarat pada find kita. Ini pada model AccomodationTravelBooking
**/
function beforeFind($queryData) {
    //kononnya id 44 tu satu ID yang kita tak benarkan untuk diquery
    if($queryData['conditions']['AccomodationTravelBooking.id'] == 44) {
       return(false);
    }
 
    return(true);
 }

nota update: tak baca betul2, camtu la resultnya.

django 1.0

We are finally at the 1.0 era.

I’m not even over 0.96.1 yet.

Exciting times :)

Cakephp Talk di veryimportantprogrammer.com

Saya akan bagi talk mengenai cakephp di event veryimportantprogrammer.com hari ini. Ini akan menumpu kepada cakephp secara am dengan harapan pendengar dapat melihat macam mana membina aplikasi cakephp.

Kebetulan terjumpa coding lama yang boleh saya guna untuk demo.

Files dan slides akan saya letakkan di sini selepas talk. Coding lama tu perlu kepada sedikit comments untuk memudahkan orang faham apa yang ada di situ.

django dan mysql.sock

Semasa bermula mempelajari django, masalah pertama yang saya hadapi ialah setup database pada file settings.py. Saya menggunakan MySql server yang di-install bersama xampp (http://apachefriends.org). Xampp mempunyai configuration sendiri yang cuba memastikan kesemua file xampp berada pada satu folder (kebiasaannya /opt/lampp pada linux dan c://xampp untuk windox). File-file ini termasuklah file setting untuk MySql. Kebiasaan linux, mysql.sock berada pada /var/run/mysqld/mysqld.sock dan terdapat library/framework mencari file mysql.sock ini di lokasi /tmp/ ini.

Xampp menyimpan file mysql.sock pada /opt/lampp/var/mysql/mysql.sock jadi kita perlu memberitahu django untuk mencari file mysql.sock di sana. Caranya mudah sahaja iaitu dengan membuka settings.py dan meletakkan DATABASE_HOST = ‘/opt/lampp/var/mysql/mysql.sock’.

Apabila anda memulakan aplikasi django ini, sepatutnya tiada masalah timbul.

Contoh penggunaan find dalam cakephp 1.2

Cakephp v1.2 memperkenalkan lebih banyak pilihan untuk model::find() iaitu samada mahu mendapatkan satu rekod sahaja (‘first’), mendapatkan kesemua rekod (‘all’), kiraan jumlah rekod yang dicapai (‘count’) ataupun dalam bentuk list untuk dimasukkan digunakan dalam dropdown list contohnya.

Berikut beberapa contoh penggunaannya.

1
2
3
4
//first. mendapatkan satu rekod sahaja (yang pertama dicapai oleh database)
$condition = array('Post.user_id' => 3 ); //capai blog-post yang dibuat oleh user 3
$posts_by_user =  $this->Post->find('first', $condition);
echo $posts_by_user['Post']['title']; //memaparkan title post berkenaan.
1
2
3
4
//all. mendapatkan semua rekod mengikut syarat yang kita tetapkan dalam $condition
$condition = array('Post.user_id' => 3 ); //capai blog-post yang dibuat oleh user 3
$posts_by_user =  $this->Post->find('all', $condition);
pr($posts_by_user); //ini akan memaparkan kandungan array iaitu kesemua rekod kepunyaan user 3

model::findAll() akan dibuang (deprecated) dalam versi akhir 1.2 jadi kita patut menggunakan model::find untuk mencapai rekod-rekod dalam cakephp.

1
2
3
4
//count. mengira berapa rekod yang dicapai
$condition = array('Post.user_id' => 3 ); //capai blog-post yang dibuat oleh user 3
$count_posts_by_user =  $this->Post->find('count', $condition); //ini memulangkan integer
echo $posts_by_user; //akan terpapar jumlah rekod ie 6
1
2
3
4
5
6
7
8
9
10
//list. mendapatkan senarai rekod
//dalam bentuk yang sesuai untuk diguna dalam $form->input jenis 'select' (contohnya)
//+++++++++++++++ controller +++++++++++++++++++++++++++//
 
$states =  $this->State->find('list');
$this->set('states', $states); //hantarkan kepada view...
//+++++++++++++++ view +++++++++++++++++++++++++++//
 
//di view pula...
echo $form->input('negeri', array('options'=>$states)); //ini akan paparkan dropdown senarai negeri.

Hello World

Akan dibuat tutorial-tutorial berkenaan coding untuk web application. Kebanyakan tutorial ini akan menggunakan PHP, javascript dan mungkin juga sedikit sebanyak bahasa lain seperti python.

Mungkin juga menumpu kepada penggunaan cakephp sebagai framework pilihan.

RSS for Posts RSS for Comments