Perancangan 2013

Rasanya lama dah tak update blog ini dengan tutorial2 yang berkaitan dengan pengaturcaraan php & mysql. Alhamdulillah, sepanjang PakCu handling training utk Kursus PHP & mySQL (Asas & Pertengahan) serta Joomla, feeback yang diterima sangat menggalakan. Sampai hari ini masih ada peserta kursus yang call/email/msg bertanyakan persoalan berkaitan kandungan kursus yang diajar. Ini satu perkara yang positif antara pengajar dan pelajar. Oops! PakCu bukan nak mengajar.. cuma nak berkongsi ilmu sekerat-dua yang Allah berikan ini agar kita sama-sama dapat manfaat daripadanya.

Jadi untuk tahun 2013 ini, PakCu cadangan nak buat satu koleksi tutorial ilmu yang PakCu ada berkaitan dengan pengatucaraan dengan pengunjung semua. Sekurang-kurangnya ia boleh dijadikan rujukan kepada yang baru berjinak dengan dunia pengaturcaraan. Juga untuk peserta-peserta kursus refresh balik pembelajaran yang dikongsikan semasa dalam kelas/kursus yang telah dihadiri. Namun ingin PakCu menyatakan disini:

“Saya bukanlah pakar dalam bidang ini tapi saya amat minat dalam bidang ini dan tujuan saya menyediakan tutorial akan datang ini bukanlah untuk mengajar anda tentang cara terbaik (kerana ada yang lebih baik) tetapi sekadar berkongsi ilmu yang saya ada untuk manfaat kita semua”

Insyallah selain dari topik2 yang memang PakCu dah rancang nak buat, anda juga boleh usulkan topik2 yang berkaitan. Sekiranya topik tersebut dalam pengetahuan PakCu, insyallah PakCu akan buatkan tutorial.

PHP Meetup 2012

We are very excited to announce that, PHP Centre of Excellence and PHP.net.my community will team up again to organize PHP Malaysia Meetup 2012. The theme will be ‘API Mashup’. Expect Mashup experts, API enthusiasts and PHP lovers, exchanging ‘war’ of words, knowledge and what not in a very exciting and absolute fun environment. Mark your calendar and be there! Be yourself.. PHPeople PHPower!

Date : 3rd November 2012
Venue : Auditorium MIMOS Berhad, Technology Park Malaysia, Kuala Lumpur.
Registration : Free
Parking : Free
Wifi : Free
Knowledge : Free
Sponsors : AIST, Altfa Technologies, MIMOS, TM Applied Business
Supporters : Rynet Malaysia, Zend Technologies 

08.30 : Registration
09.00 : Opening remarks MIMOS Berhad
09.15 : Opening remarks php.net.my
09.30 : Coffee Break
10.00 : Enterprise PHP – Rama Yurindra (Rynet Malaysia Sdn Bhd)
10.45 : oAuth – Nurulazrad
11.30 : Twitter API – Muhammad Hamizi (TM Applied Bussiness)
12.15 : Facebook API – Mohd Izzairi (Xyiry Tech)
13.00 : Lunch
14.00 : Foursquare API – Ahmad Amran (AIST)
14.45 : Streaming Technology with AWS – Azril Nazli (CEA Resources)
15.30 : Paypal – Iszuddin Ismail (eSentral)
16.15 : MIMOS Mashup – Mary Ann Michael/Errazudin Ishak (MIMOS Berhad)
16.30 : Web API Best Practices – Prasant Kumar (Solution Engineer at Zend Technologies)
17.15 : Photoshoot session . End
Please register at : http://phpcoe.mimos.my/2012/10/php-malaysia-meetup-2012-api-mashup/

PHP : Menambah set array ke dalam set array yang sedia ada

Katakan anda telah mempunyai set array berikut:

$asal = ([10] => 1, [13] => 3, [27] => 1, [32] => 2);

Dan ingin menambah set array berikut:

$tambah = ([8] => 1, [10] => 1, [12] => 1, [20] => 2, [27] => 1);

Di dalam PHP 5.3, anda boleh menggunakan build-in function array_merge_recursive() untuk menggabungkan kedua-dua set array tersebut seperti berikut:

$baru = array_merge_recursive($asal,$tambah);
print_r($baru);

Anda juga boleh menggunakan function asort(), arsort(), ksort(), krsort(), rsort() untuk pilihan cara susunan array anda.

PHP: mysql_fetch_array() vs mysql_fetch_assoc()

Kebiasaanya mysql_fetch_array() akan menghasilkan output dalam dua bentuk iaitu nombor atau key (field)

Manakala mysql_fetch_assoc() hanya akan menghasilkan output dalam bentuk key (field) sahaja.

Walau bagaimanapun, mysql_fetch_array($query, MYSQL_ASSOC) juga adalah sama berfungsi seperti mysql_fetch_assoc()

Dan mysql_fetch_array($query, MYSQL_NUM) juga berfungsi sama seperti mysql_fetch_row()

Ini kerana secara defaultnya type mysql_fetch_array() adalah MYSQL_BOTH.

GIT (Version Control System)

Apabila kita membangunkan sesuatu aplikasi secara berkumpulan, secara tidak langsung akan berlaku perkongsian penggunaan fail. Pada saat ini, kita memerlukan suatu aplikasi yang boleh mengawal versi fail yang kita gunakan sama ada fail konfigurasi, fail teks atau sebagainya. Apabila berlaku perubahan kandungan dalam fail tersebut, maka aplikasi ini akan memudahkan pengguna/kumpulan tadi mengenalpasti perubahan yang berlaku.

Salah satu aplikasi yang sedang meluas digunakan pada masa ini adalah Git.  Walaupun terdapat beberapa protokol lain seperti CVS dan SVN, tetapi GIT lebih popular digunakan kerana kelajuan dan kecekapannya, mudah digunakan serta dapat digunakan dalam berbagai Sistem Operasi (OS).

Git adalah software (open source) yang direka untuk mengendalikan segala-galanya, dari pembangunan projek yang kecil sehingga projek yang sangat besar dengan kelajuan dan kecekapan yang sangat optimum. Git adalah mudah dipelajari dan  mempunyai tiny footprint with lightning fast performance. Antara kelebihan lain yang ada pada Git adalah:

  • support main and local repository
  • tidak memerlukan network connection untuk melakukan git commit
  • branching adalah local dan local repository adalah tanggungjawab programmer itu sendiri

Insyallah pada post yang akan datang PakCu akan tunjukkan pemasangan Git pada OS Windows 7 serta GUI yang boleh dipasang bersama untuk memudahkan pengguna menggunakan GIT.

JomWeb @ KPTMKL

First of all, PakCu nak ucapkan berbanyak terima kasih kepada Saudara Iszuddin Ismail (Senior Web Developer at Kengkawan IT Solutions) kerana sudi menjemput PakCu utk turut hadir sama bersama-sama beberapa lagi Pakar IT antaranya Akmal Fikri, Mior Muhammad Zaki, Haezal Musa, Muhamad Hanafiah, Nurhanna Aziz, Ashikin Asraf, Izwan Robotys, Azree Hanifiah, Muhammad Hamizi dan Nurul Azrad; pada yg tak sebut nama jangan marah ye… Tak lupa juga kepada Pihak Pengajur Program dan tuan rumah (KPTMKL)

Walaupun program diadakan pada Hari Jumaat tapi pengisiaannya sgt bagus. Bermula dengan topik “Apa yg perlu anda tahu untuk menjadi seorang programmer” oleh Saudara Iszuddin. Kemudiannya disusuli dengan topik “Kehidupan sebagai seorang programmer” oleh Saudara Zaki. Sebelum berehat tengahari utk solat Jumaat, pelajar diberi lagi pengetahuan oleh Saudara Izwan dengan tajuk “MVC – Code Igniter”. Selepas solat Jumaat, program diteruskan dengan pembentangan oleh Saudara Hamizi dengan tajuk “GIT” serta diakhiri dengan tajuk “JQuery” oleh Saudara Nurul Azrad.

Tak sia2 bos PakCu bagi pelepasan untuk menghadiri program ini. Banyak ilmu baru yg memberi manfaat serta tambahan /pemantapan ilmu yang telah ada. Memang PakCu setuju dengan kata2 Saudara Zaki, Programmer has no life!! Tapi kalo kita pandai manage masa, insyallah kita tidak akan jadi hamba kepada kerja. Apa yg PakCu dpt simpulkan pada program tadi:

1. Better use div drp table. Pakai table hanya utk paparkan senarai data sahaja. Kenapa? Sebab apabila kita pakai div, maka kita akan belajar CSS. Kenapa nak pakai CSS? CSS memudahkan kita utk mengawal UI (User Interface) agar mendapatkan feedback yg positif utk UX (User Experience). Selain itu CSS juga memudahkan kita apabila kita hendak menggunakan JQuery

2. Setkan benchmarking/target setting dlm sesuatu tempoh, apa yg akan kita perolehi (ilmu/kepakaran). Contohnya katakan dalam tempoh 2 bulan kita nak mahir dengan Code Igniter. So kita kena berusaha untuk mencapai target kita tu. Kalo selepas tempoh tersebut kita masih tak capai target tadi. Lihat balik kelemahan diri. Adakah kita kena beralih kpd framework yg lain atau programming memang bukan bidang kita 🙂

3. Mula cari framework yg sesuai dengan keperluan anda. Penerangan yg menarik daripada Saudara Izwan tentang MVC dan kelebihan CI telah menarik minat PakCu untuk mencuba Code Igniter (CI) sebagai framework utk projek2 akan datang. Jika sebelum ini PakCu pernah mencuba CakePHP dan PHPHyppo jadi sekarang ini, mula nak mencuba CI pula. CI nampak lebih flexible dan mudah difahami.

4. GIT adalah satu apps yg memudahkan kita untuk mengawal versi sistem kita. Kalo sebelum ini kita terpaksa membuat folder/fail xxxx_latest.php. Kemudiannya xxxx_latest_paling.php tapi kita dengan penggunaan GIT akan lebih memudahkan kita menguruskan fail2 code kita dengan lebih sistematik dan teratur. Terdapat 2 jenis GIT iaitu GIT dan juga GITHUB. Perbezaannya adalah GitHub adalah utk public (dikongsikan dengan org lain melalui portal github iaitu http://www.github.com. Manakala GIT pula lebih baik digunakan sekiranya kita membangunkan aplikasi secara berkumpulan di organisasi kita.

5. Masanya telah tiba dimana web kini lebih berbentuk dinamik dan interaktif serta mesra pengguna. Jika dulu kita terpaksa refresh/load page apabila kita menghantar sesuatu input melalui form. Tapi dengan adanya JQuery dan Ajax, page tidak lagi perlu direload. Saudara Nurul Azrad telah menunjukkan contoh2 yg menarik dlm pembentangan beliau.

Syabas kepada pihak penganjur dan Penceramah/Fasilitator yg turut hadir bagi menjayakan program ini.

Jenis-Jenis Hash dan Ciri-Cirinya

Setakat apa yang kami tahu, sekurang2nya ada 25 jenis hash.. mungkin ada lebih banyak lagi.
dibawah adalah jenis dan ciri-ciri hash yang kebiasaan kita nampak.

1. DES (Unix)

Digunakan di Linux dan sejenisnya.
Panjang : 13 Karakter.
Deskripsi : Dua karakter pertama adalah salt (Karakter rambang, di contoh kita saltnya adalah string “Iv.”) kemudian diikuti oleh Hashnya.
Contoh : IvS7aeT4NzQPM

2. Domain Cached Credentials

Digunakan untuk mencache password-password domain windows.
Panjang : 16 bytes (32 Karakter)
Algorithm : MD4(MD4(Unicode($pass)).Unicode(strtolower($userna me)))
Contoh : Admin:b474d48cdfc4974d86ef4d24904cdd91

3. MD5 (Unix)

Digunakan di Linux dan sejenisnya.
Panjang : 34 Karakter.
Deskripsi : Hash dimulai dengan tanda $1$ kemudian dilanjutkan dengan salt (sampai dengan 8 karakter rambang, di contoh kita saltnya adalah string “12345678″)
kemudian dilanjutkan dengan satu karakter lagi $ , kemudian diikuti oleh Hashnya.
Algorithm : Sebenarnya ini adalah loop yang memanggil algoritma md5 sebanyak 2000 kali.
Contoh : $1$12345678$XM4P3PrKBgKNnTaqG9P0T/

4. MD5 (APR)

Digunakan di Linux dan sejenisnya.
Panjang : 37 Karakter.
Deskripsi : Hash dimulai dengan tanda $apr1$ , kemudian dilanjutkan dengan salt (sampai dengan 8 karakter acak, di contoh kita saltnya adalah string “12345678″), kemudian dilanjutkan dengan satu karakter lagi $ ,
kemudian diikuti oleh Hashnya.
Algorithm : Sebenarnya ini adalah loop yang memanggil algoritma md5 sebanyak 2000 kali.
Contoh : $apr1$12345678$auQSX8Mvzt.tdBi4y6Xgj.

5. MD5 (phpBB3)

Digunakan di phpBB 3.x.x.
Panjang : 37 Karakter.
Dekripsi : Hash dimulai dengan tanda $H$ kemudian diikuti dengan satu karakter (selalunya dengan angka “9″) kemudian diikuti dengan salt (8 karakter rambang, contoh saltnya adalah string “12345678″), kemudian diikuti oleh Hashnya.
Algorithm : Sebenarnya ini adalah loop yang memanggil algoritma md5 sebanyak 2048 kali.
Contoh : $H$9123456785DAERgALpsri.D9z3ht120

6. MD5 (WordPress)

Digunakan di WordPress.
Panjang : 34 Karakter.
Deskripsi : Hash dimulai dengan tanda $P$ , kemudian diikuti dengan satu karakter (selalunya dengan huruf “B”), kemudian diikuti dengan salt (8 karakter rambang, contoh kita adalah string “12345678″), kemudian diikuti oleh Hashnya.
Algorithm : Sebenarnya ini adalah loop yang memanggil algoritma md5 sebanyak 8192 kali.
Contoh : $P$B123456780BhGFYSlUqGyE6ErKErL01

7. MySQL

Digunakan di MySQL versi lama.
Panjang : 8 bytes.
Deskripsi : Hash yang terdiri dari dua DWORD, masing-masing tidak melebihi nilai 0x7fffffff.
Contoh : 606717496665bcba

8. MySQL5

Digunakan di MySQL Versi baru.
Panjang : 20 bytes.
Algorithm : SHA-1(SHA-1($pass))
Contoh : *E6CC90B878B948C35E92B003C792C46C58C4AF40
Catatan : Hash harus dimuat ke program tanpa tanda bintang yang terdapat di awal setiap hash.

9. RAdmin v2.x

Digunakan di Aplikasi Remote Administrator v2.x.
Panjang : 16 bytes.
Algorithm : Password diisi dengan nol dengan panjang 100 bytes, kemudian seluruh string dihash dengan algoritma MD5.
Contoh : 5e32cceaafed5cc80866737dfb212d7f

10. MD5

Digunakan di phpBB v2.x, Joomla versi di bawah 1.0.13 dan banyak forum dan CMS.
Panjang : 16 bytes.
Algorithm : sama seperti fungsi md5() di php.
Contoh : c4ca4238a0b923820dcc509a6f75849b

11. md5($pass.$salt)

Digunakan di WB News, Joomla Versi 1.0.13 keatas.
Panjang : 16 bytes
contoh : 6f04f0d75f6870858bae14ac0b6d9f73:1234

12. md5 ($salt.$pass)

Digunakan di osCommerce, AEF, Gallery dan beberapa CMS.
Panjang : 16 bytes.
Contoh : f190ce9ac8445d249747cab7be43f7d5:12

13. md5(md5($pass))

Digunakan di e107, DLE, AVE, Diferior, Koobi dan beberapa CMS.
Panjang : 16 bytes.
Contoh : 28c8edde3d61a0411511d3b1866f0636

14. md5(md5($pass).$salt)

Digunakan di vBulletin, IceBB.
Panjang ; 16 bytes.
Contoh : 6011527690eddca23580955c216b1fd2:wQ6

15. md5(md5($salt).md5($pass))

Digunakan di IPB.
Panjang : 16 bytes.
Contoh : 81f87275dd805aa018df8befe09fe9f8:wH6_S

16. md5(md5($salt).$pass)

Digunakan di MyBB.
Panjang : 16 bytes.
Contoh : 816a14db44578f516cbaef25bd8d8296:1234

17. md5($salt.$pass.$salt)

Digunakan di TBDev.
Panjang : 16 bytes.
Contoh : a3bc9e11fddf4fef4deea11e33668eab:1234

18. md5($salt.md5($salt.$pass))

Digunakan di DLP.
Panjang : 16 bytes.
Contoh : 1d715e52285e5a6b546e442792652c8a:1234

19. SHA-1

Digunakan dibanyak Forum dan CMS.
Panjang : 20 bytes
Algorithm: Sama dengan sha1() fungsi di PHP.
Contoh : 356a192b7913b04c54574d18c28d46e6395428ab

20. sha1(strtolower($username).$pass)

Digunakan di SMF
Panjang : 20 bytes.
Contoh : Admin:6c7ca345f63f835cb353ff15bd6c5e052ec08e7a

21. sha1($salt.sha1($salt.sha1($pass)))

Digunakan di Woltlab BB
Panjang : 20 bytes
Contoh : cd37bfbf68d198d11d39a67158c0c9cddf34573b:1234

22. SHA-256(Unix)

Digunakan di Linux dan sejenisnya.
Panjang : 55 Karakter.
Deskripsi : Hash dimulai dengan tanda $5$, kemudian diikuti salt (sampai dengan 8 karakter rambang, di contoh kita saltnya adalah string “12345678″), kemudian dilanjutkan dengan satu karakter lagi $, kemudian diikuti hash sebenarnya.
Algorithm : Sebenarnya ini adalah loop yang memanggil algoritma SHA-256 5000 kali.
Contoh : $5$12345678$jBWLgeYZbSvREnuBr5s3gp13vqi…

23. SHA-512(Unix)

Digunakan di Linux dan sejenisnya.
Panjang : 98 Karakter.
Deskripsi : Hash dimulai dengan tanda $6$, kemudian diikuti dengan salt (sampai dengan 8 karakter rambang, dicontoh kita saltnya adalah string “12345678″), kemudian dilanjutkan dengan satu karakter lagi $, kemudian diikuti hash sebenarnya.
Algorithm : Sebenarnya ini adalah loop yang memanggil algoritma SHA-512 5000 kali.
contoh : $6$12345678$U6Yv5E1lWn6mEESzKen42o6rbEm…

Sumber : Dragon Force