Perl 5.11 telah dikeluarkan (release)

Posted by mkhairul

Bagi sesiapa yang menggunakan perl, keluaran baru Perl, iaitu versi 5.11 kini boleh diperolehi. Ianya adalah ‘development release’ dimana pengguna perl boleh menggunakannya untuk menyesuaikan aplikasi-aplikasi ataupun skrip skrip supaya serasi dengan keluaran 5.12 yang akan datang.

Saya kini bekerja disyarikat yang menggunakan perl sebagai pelantar (platform) pembangunan aplikasi web, jadi perkembangannya harus saya ikuti untuk mengelakkan diri daripada terperangkap didalam jerangkap (pitfalls) didalam pembangunan perisian menggunakan perl.

Sumber:

Bersihkan input menggunakan Perl

Posted by mkhairul

Dalam pos ni, saya akan pos contoh kod untuk membersihkan input menggunakan perl. Mungkin ada module dalam CPAN yang dapat melakukannya tetapi saya tidak jumpa, mungkinkah ianya HTML::Scrubber? Saya pun tak pasti (dah lama tak buat perl).

Kod dibawah agak ringkas.

use HTML::Entities ();
use CGI qw/:standard/;

$query = new CGI;

$username	= $query -> param('username');
$password	= $query -> param('password');

$sql = qq~
	SELECT somefields
	FROM user
	WHERE username = ?
	AND password = ?
~;

$ok_chars = 'a-zA-Z0-9 ,-';
$c_username = HTML::Entities::decode( $username);
$c_username =~ s/[^$ok_chars]//go;

$dbquery = $conn->prepare($sqlstatement);
$dbquery->execute("$c_username", "$password" ) or &error("SQL&Couldn't execute statement: $DBI::errstr");

Jika ada cara lain, silalah kongsi! Terima kasih.

Pertandingan Pembangunan Aplikasi Web Sumber Terbuka 24 Jam di MyGOSSCON 2009

Posted by mkhairul

Terdapat pertandingan yang akan diadakan oleh Kerajaan Malaysia sempena MyGOSSCON 2009 (Malaysian Government Open Source Software Conference).

Keterangan lanjut boleh didapati pada laman web acara tersebut.

Nampak macam menarik, tetapi jika saya memasuki pertandingan tersebut, aplikasi yang dibina rasanya tidak secanggih mana, kerana saya akan banyak fokus pada kebolehgunaan. Benda yang remeh-remeh seperti menu bantuan (help), tooltip, on-the-fly editable content (dengan menggunakan ajax), penerangan penggunaan aplikasi dan juga dokumentasi (yang memadai untuk pengguna).

Dengan kata lain, bergantung pada skop aplikasi web yang hendak dibangunkan, aplikasi yang dibangunkan dapat dijual setelah berlalu 24 jam pertandingan tersebut. Saya tidak tahu bagaimana pemarkahan akan diberi (ada tak info pada laman web mereka? Rasanya tiada), tetapi itulah yang akan saya lakukan. Sehaluan dengan matlamat pertandingan tersebut:

  • Promote high level open source web application development skills in Malaysia.
  • Enable local OSS web application development communities to grow and establish themselves.
  • Encourage students to get involve in open source web application development and be well prepared for industry need.

Menggunakan notepad sebagai diari

Posted by mkhairul

Bagi seseorang yang nak benda paling simple sekali untuk buat diari, takyah install apa apa, anda hanya perlu notepad.

Bagaimana?

  1. Buka notepad (Start->Run->notepad.exe)
  2. Taip “.LOG” pada baris pertama.
  3. Save (namakan apa apa pun tak kisah) dan tutup fail. Bila anda bukanya semula, secara automatik ia akan menulis tarikh dan masa.



Sumber

Kepentingan penggunaan framework didalam pembangunan aplikasi

Posted by mkhairul

Apa itu framework?
Framework adalah suatu koleksi teknik dan cara yang diambil daripada aktiviti dalam pembangunan sistem seperti DAL (Database Abstraction Layer), ORM, input validation, caching, templating, dan sebagainya.

Berikut adalah senarai framework untuk pembangunan web.

Mengapa perlu menggunakan framework?
Ia mengelakkan anda daripada perlu mengulangi aktiviti mengkod (ataupun menyelesaikan masalah yang telahpun anda selesaikan) yang berulang dengan menggunakan prinsip DRY (Don’t Repeat Yourself).

Framework menggalakkan anda supaya memisahkan kod persembahan, kod kawalan, dan logik perniagaan. Memudahkan penyelenggaraan pada masa akan datang, memudahkan aktiviti pengayahpijat (debug) dan pelbagai lagi bergantung pada objektif-objektif framework tersebut (contohnya CakePHP, salah satu kebolehannya adalah ianya dapat mempercepatkan pembangunan CRUD aplikasi web).

Framework juga mempercepatkan pembangunan perisian kerana ia menyediakan ‘helper’ dan ‘library’ yang biasa digunapakai dalam pembangunan perisian seperti ORM, Date Manipulation, Upload, Profiling, Unicode, etc (seperti yang saya nyatakan diatas).

Framework mana yang bagus?
Tiada satu framework yang bagus untuk semua. Semua mempunyai kelemahan dan kelebihan. Untuk mengetahui dengan lebih tentang kelebihannya adalah dengan memahami objektif framework tersebut, feature-feature dan juga dengan mencubanya.

Kesimpulannya, kepentingan framework adalah kerana ianya..

  • menggalakkan ‘best practices
  • mempercepatkan pembangunan aplikasi
  • menyediakan modul, library dan helper untuk menyelesaikan permasalahan umum
  • memisahkan kod persembahan daripada kod pemprosesan (logik perniagaan, akses pangkalan data, etc)
  • memudahkan komunikasi (penggunaan istilah) diantara pengaturcara lain jika mereka menggunakan framework yang lebih kurang sama
  • mempunyai komuniti untuk membantu anda (jika anda menggunakan framework sendiri, maka tiada komuniti)
  • mempunyai pengaturcara khas untuk pembangunan framework tersebut maka anda tak perlu membangunkannya sendiri, hanya fokus pada aplikasi yang hendak dibangunkan

Itu adalah diantara yang dapat saya fikirkan buat masa ini, mungkin ada lebih lagi.

Dari sudut perniagaan, mengapa perlu menggunakan framework? Mempercepatkan prototaip, memudahkan penyelenggaran (mengurangkan error dan jika ada error lebih mudah untuk menjejakinya), memudahkan integrasi dengan aplikasi 3rd party (SAP, Peoplesoft, Facebook, Google Apps, Google Single Sign-on (SSO), dan bermacam lagi) bermaksud anda dapat melakukan lebih dalam masa yang singkat (berbanding tanpa menggunakan framework).

Masih kurang faham? Pilih satu framework, pilih satu projek (contohnya Pengurusan Tugasan (task management), Guestbook, Blog, etc) dan mula mengkod (berpandukan dokumentasi ataupun tutorial framework tersebut). Anda akan mendapat gambaran yang lebih jelas mengenainya apabila anda menggunakannya.

Selamat programming!

Sumber

Rekabentuk dan Kebolehgunaan Antaramuka Pengguna

Posted by mkhairul

Rekabentuk dan Kebolehgunaan, bagi yang keliru, dalam bahasa inggeris ianya adalah Design and Usability. Pos ini hanyalah coretan mengenai rekabentuk dan kebolehgunaan pada aplikasi-aplikasi web.

usability

Gambar yang terakhir banyak dilihat pada web aplikasi kerajaan. Seboleh-boleh nak sumbat semua benda, dan kadang-kadang pengaturcara terpaksa akur pada permintaan pengguna (ye lah, tak akur nanti tak nak sign UAT, hehe). Antara cara yang boleh dilakukan adalah menerangkan secara rasional dan saintifik tentang keputusan yang diambil dan impak daripada permintaan pengguna dengan harapan dapat memberi pilihan yang lebih baik daripada kehendaknya dan juga dapat meyakinkan pengguna akan keputusan dan kepakaran perekabentuk sistem.

Satu kes terpencil yang saya jumpa adalah pada waktu saya membuat demonstrasi aplikasi pada sebuah GLC. Ketua Pegawai Eksekutifnya (seorang ekspatriat UK) meminta supaya aplikasi tersebut mempunyai ciri-ciri yang digunapakai oleh Google (rujuk pada Google Apps). Minimalist pada antaramuka tapi kaya dengan fungsi disebalik tabir walaupun pada pendapat saya aplikasi yang saya demo itu agak bagus antaramukanya.

Motifnya adalah untuk mengurangkan click untuk melaksanakan sesuatu objektif kerana majoriti pelanggannya adalah ahli perniagaan, direktor dan orang-orang korporat. Saya amat memahami kehendaknya dan seringkali hendak mengutarakan dalam pembangunan aplikasi web di tempat saya bekerja tetapi tidak berkesampaian kerana selalunya kesuntukan masa (dan kekurangan orang).

Saya memang gemar minimalisme, tetapi bukan semua tempat boleh digunakan dan kadangkala agak sukar meyakinkan orang. Kerana ianya seperti lapang, tiada apa apa, seboleh-bolehnya orang nak sumbat sesuatu di setiap pelosok ruang pada antaramuka tersebut.

Contoh terdekat minimalisme yang boleh saya berikan adalah pada aplikasi yang saya siapkan baru baru ini (bukan untuk GLC yang saya ceritakan diatas).
Continue reading »

Membuat penganggaran masa untuk tugasan

Posted by mkhairul

Salah satu daripada aktiviti yang selalu dilakukan pada masa kerja ialah membuat penganggaran masa yang diperlukan untuk menyiapkan tugasan tersebut. Melainkan anda mempunyai pengalaman membuat tugasan yang diberikan, elakkan daripada memberi anggaran secara spontan (kerana ianya akan kembali menyusahkan hidup anda kelak).

Jika berada dalam situasi dimana anda diminta membuat penganggaran spontan, maka anda perlu minta sedikit masa untuk membuat penganggaran tersebut dan anda akan kembali memberikan jawapan setelah anda selesai membuat penganggaran dalam 30 minit ke satu jam. Ini juga bergantung pada situasi, jika bos anda mendesak anda memberi anggaran kerana beliau harus memberi jawapan dalam meeting sebentar lagi (ini silap bos anda juga kerana last minute), maka pada masa itu terpaksalah memberi anggaran yang tidak bersandarkan fakta (dan kemungkinan besar anda tidak dapat memenuhinya).

Tapi jangan pula tugasan macam tukar warna teks dan mengubah saiz ruangan teks mengambil masa. Itu benda remeh, dan dapat diselesaikan dengan cepat. Yang dimaksudkan adalah tugasan yang mempunyai impak terhadap fungsi aplikasi ataupun projek secara keseluruhan.

Contoh yang boleh saya berikan adalah membuat suatu borang web (form) untuk permohonan yang ringkas.

  • Borang web, mempunyai ruangan teks seperti Nama, Alamat, No. Telefon, Email, dsbnya.
  • Mempunyai antaramuka admin yang dapat melihat maklumat-maklumat pengguna daripada penghantaran borang tersebut
  • Menghantar mesej kepada pengguna melalui email bahawa permohonannya telahpun diproses dan jadual ujian percubaan akan diberikan pada mereka. Mesej email mengandungi kata pengguna, laluan, masa dan laman web untuk mengambil ujian tersebut.

Agak mudah? Mungkin ya mungkin tidak. Bergantung pada pengalaman anda. Daripada keperluan pengguna tersebut, saya diminta untuk membuat anggaran. Anggaran yang dimaksudkan adalah borang dan antaramuka admin tersebut siap dan boleh dipakai.

Sebelum anda teruskan membaca, cuba anda membuat anggaran.

*tengok jam*

….. ok, sudah? Anda yakin?
Teruskan membaca untuk mendapat gambaran disebalik tabir membuat anggaran.

schedulereview13

Continue reading »

jQuery: Perbezaan diantara $(document).ready dan $(window).load

Posted by mkhairul

logo_jquery_215x53
Disini saya akan post mengenai sesuatu lebih teknikal. Anda pernah menggunakan jQuery? Jika tak, maka anda perlu mencubanya :D

Apabila kita nak sesuatu fungsi dalam javascript dilaksanakan apabila web telah dimuat turun, kita akan menggunakan samada $(document).ready ataupun $(window).load. Jadi apakah perbezaannya?

$(document).ready(function(){
  // kod disini
})

Fungsi didalam $(document).ready dilaksanakan apabila Document Object Model (DOM) siap sedia digunakan, dengan erti kata lain, apabila semua element HTML (semua isi kandungan didalam ) telahpun dimuat turun.

$(window).load(function(){
 // kod disini
})

Manakala fungsi didalam $(window).load dilaksanakan apabila kesemua element DOM dan juga imej-imej telahpun dimuat turun.

Jadi jika anda hendak mengubahsuai imej-imej (crop, resize, alignment, dsbnya) anda perlu menggunakan $(window).load. Jika anda hendak membuat skrin preload untuk aplikasi web anda, maka perlu menggunakan $(document).load. Guna dua-dua pun tidak mengapa, satu untuk preload dan satu lagi untuk manipulasi imej.

Itu saja setakat ini, selamat programming!

Sumber

Penghasilan kata laluan (password) di dalam perisian

Posted by mkhairul

Bagaimana anda menghasilkan kata laluan pengguna apabila akaunnya dihasilkan? Menggunakan MD5? SHA-1? Ok, bagus kerana encrypt kata laluan kerana kebanyakan orang menggunakan kata laluan yang sama untuk pelbagai perkhidmatan (services).

Apa akan jadi kalau tak encrypt kata laluan?

Tak jadi ape ape pun dari segi fungsi aplikasi, tetapi akibatnya adalah dari segi perundangan (link menerangkan Data Protection Act di UK, tak pasti di Malaysia ada ke tak). Kalau orang dapat masuk server melalui exploit OS ataupun perisian lain kemudian dump database, mereka terpaksa lalui lagi satu halangan, encrypted password. Kalau tak encrypt (istilah ‘tak encrypt’ selalu digunakan sebagai ‘plain-text’)? Larian tanpa halangan la jawabnya.

Ok, dah encrypt? Cukupkah?

Tak cukup! Kena tambah garam (salt) sikit, sebagai penambah perisa. Kenapa? Sebab teks yang telah encrypt tu boleh dipadankan dengan menggunakan pengkalan data seperti GData: An Online MD5 Hash Database. Bahayakan?

Bila tambah garam sikit, agak sukar untuk teks tersebut ditukar kembali (reverse lookup) kerana ia takkan jumpa walaupun anda menggunakan kata laluan generic seperti qwe123.

Jadi, macam mana nak tambah garam?

$salt = substr($password, 1, 3);
$e_password = md5($password . $salt);

Macam tu je. Mudah. Harap maklumat ni dapat membantu sedikit sebanyak.

Edit: Menggunakan $salt pada $e_password = md5($password . $salt)

Cengkerang Interaktif untuk PHP

Posted by mkhairul

Salah satu benda yang pertama sekali seorang pengaturcara jumpa apabila mencuba sesuatu bahasa pengaturcaraan adalah cengkerang interaktif (interactive shell). Kalau python, dia akan terus run shell ini apabila anda menaip python (itupun jika dah register pada System variables pada Windows kalau tidak, harus taip laluan penuhnya mungkin di C:\Python2.5\python.exe),

python_cmd

jika Perl anda perlu menaip arahannya iaitu perl -d -e 1.

perl_cmd

Tetapi, jika untuk PHP, saya menggunakan PHPInteractive (install di local sahaja, jangan install di server, merbahaya :D ). Aplikasi ini digunakan untuk memudahkan anda menguji idea baru dan sebagainya. Boleh ke function ini berbuat sebegini? cuba sahaja di PHPInteractive. Tetapi untuk menguji data didalam database, anda harus menaip semula connectionnya. Agak tidak sesuai (saya tak test database melalui phpinteractive, cuma function dan idea yang kurang pasti seperti menguji snippet yang diambil dari internet, fungsi recursive dan sebagainya).

phpinteractive

Apakah yang anda gunakan sebagai cengkerang interaktif anda?