. Ndi …

They may forget Ur Good deeds, Just do Good…

Ada buruknya, Ada baiknya

leave a comment »

Tulisan ini dibuat setelah saya baca tulisan di blog temen, cuma saya ingin menambahkan saja karena ada beberapa hal yang saya kira juga cocot eh cocok dengan situasi yang terjadi.
Bagi yang sudah bekerja entah bekerja di bidang apa tentunya ada suka dukanya. Menurut saya dunia kerja yang sesuai dengan apa yang diinginkan tentunya akan banyak sukanya dibanding dukanya.

“Dunia kerja memang enjoy dan menyenangkan bagi saya, bisa fokus dan memang benar-benar fokus mana yang harus dikerjakan dan mana yang harus dipelajari. Entah kenapa semua pekerjaan yang dikerjakan merupakan kerjaan borongan, semuanya asal jadi, asal pakai, asal hidup tapi tidak sampai asal-asalan. Kenapa saya tidak berpikir membuat desain sistem dan perencanaan yang matang untuk pengerjaan sistem tersebut.
Kenapa sebagian orang berpikir “instant” dan tidak pernah berpikir “process”, segalanya siap saji, siap pakai,siap coba dan selalu siap. Gelap deh.. “.

Semuanya terkesan terburu-buru dan harus jadi seperti yang diminta. Seperti kata temen “pasal 1 : bahwa bos tidak pernah salah”.
Kenapa tidak ada rencana sebelumnya sehingga waktu pengerjaan jadi lebih tertata dan hasilnya bisa dimaksimalkan.

Mungkin ini berhubungan dengan segala bidang pekerjaan, namun saya sendiri memfokuskan tulisan pada bidang IT. Karena kebetulan pekerjaan saya ya ga jauh-jauh dari dunia IT.

Written by ndi

June 27, 2009 at 4:29 pm

Posted in Religi, What's On

Coding Standard

leave a comment »

Artikel ini sepenuhnya bukan milik saya, saya mendapatkan dari rekan Adi, saya share disini siapa tahu berguna bagi rekan-rekan yang lain.

Coding standard berikut merupakan terapan yang sama digunakan dengan Coding standard PHP-Pear dengan beberapa modifikasi.

1a. Nama Class, Fungsi & Metode
berdasarkan hirarki parent & child, Bisa menggunakan kombinasi huruf besar dan kecil. misal:
nama class = html
nama fungsi = html_print()
nama class = DBconnect
nama fungsi = DBconnect_FetchData()
nama fungsi = DBconnect_Close()

1b. Konstan

[php]
define(EMAIL_WEBMASTER, ‘webmaster@foo.com’);
define(EMAIL_SUPPORT, ‘support@foo.com’);
define(NL, ‘\n’);
[/php]

2. Indenting
indent/margin menggunakan spasi 4 karakter. TIDAK menggunakan tab

3. Struktur kontrol
struktur kontrol dipisahkan satu spasi sebelum keyword dan kurung kurawal buka. mis:

[php]
if ((condition1) || (condition2)) {
action1;
} elseif ((condition3) && (condition4)) {
action2;
} else {
defaultaction;
}
[/php]

4. memanggil fungsi
tidak ada spasi antara nama fungsi, kurung buka dan parameter pertama, spasi setelah koma diantara parameter, dan tidak ada spasi antara parameter terakhir dan kurung tutup.

[php]
$var = foo($bar, $baz, $quux);
[/php]

juga ada spasi diantara tanda “=”. atau jika ada beberapa assignment dalam satu blok, posisi tanda “=” bisa dibuat sama.

[php]
$short = foo($bar);
$long_variable = foo($baz);
[/php]

5. Deklarasi Fungsi
deklarasi fungsi menggunakan konvensi “one true brace”

[php]
function fooFunction($arg1, $arg2 = ”) {
if (condition) {
statement;
}
return $val;
}
[/php]

argumen dengan nilai default dimasukan di akhir argumen. selalu menghasilkan value yang berguna.

[php]
function connect(&$dsn, $persistent = false) {
if (is_array($dsn)) {
$dsninfo = &$dsn;
} else {
$dsninfo = DB::parseDSN($dsn);
}
if (!$dsninfo || !$dsninfo[‘phptype’]) {
return $this->raiseError();
}
return true;
}
[/php]

6. Comment
Untuk dokumentasi di dalam skrip, bisa menggunakan gaya C /* */ atau C++ //. Untuk lebih memudahkan pengaturan dokumentasi, bisa menggunakan aturan PHPDoc yang mirip dengan JavaDoc. Untuk detail silakan lihat http://www.phpdoc.de

Dokumentasi/catatan di dlm skrip sangat dianjurkan untuk memudahkan kita mengetahui jalan dan alur skrip.

7. Including Code
Jika ingin memasukkan file lain, mis: file-file class/library sebaiknya menggunakan statement require_once() atau include_once() untuk memastikan bahwa file tsb hanya dipanggil sekali.

8. Header Comment
Dianjurkan utk setiap file terdapat informasi header, menggunakan struktur berikut:

[php]
/* —————————————————————————
Copyright (C) 2002 by IDE Development Team.
http://www.ide.or.id
——————————————————————————
File Name: db.lib.php
Author: Slamet
——————————————————————————
Purpose of File:
class for database abstraction layer. currently only support MySQL.
——————————————————————————
Requirement:
PHP 4.02 or later version
——————————————————————————
License
To read the license please visit
http://www.gnu.org/copyleft/gpl.html
——————————————————————————
Changelog
2002/05/05:Slamet – minor fix
————————————————————————— */
[/php]

Written by ndi

March 26, 2009 at 8:28 pm

Posted in PHP

Trik kamuflase ekstensi .php

leave a comment »

Anda pernah mengunjungi situs http://techscape.co.id/home.ts (maap nih, bukan iklan dan bukan karyawan disana)? Disitu kita akan sulit untuk mengidentifikasi bahasa pemrograman yang digunakan untuk membangun situs tersebut. Begitu juga seperti situs http://koni-sumut.or.id kita tidak dapat mengidentifikasinya dengan mudah. Hal itu dikarenakan ekstensi dari script tersebut disembunyikan.
Berikut ini salah satu tip dan trik untuk menyembunyikannya:

Cara Pertama:
1. Pastikan hosting di tempat anda support penggunaan .htaccess
2. Buat file .htaccess dan letakkan file tersebut di root direktori
3. Isikan file .htaccess dengan script seperti ini:
AddType application/x-httpd-php .alias
4. Simpan file .htaccess tersebut.

Cara Kedua:
Tambahkan mime pada cpanel (seperti dalam gambar)

add mime

Setelah salah satu cara tersebut dilakukan maka Anda dapat mengubah eksetensi dari .php menjadi .alias. Pengubahan ekstensi ini boleh seluruhnya atau sebagian saja, itu terserah Anda.

Setelah hal-hal tersebut selesai maka Anda dapat mengakses script php Anda dengan cara seperti ini http://alamat.url.nya/namafile.alias
Selamat mencoba.

Written by ndi

March 26, 2009 at 8:26 pm

Posted in PHP

PHP for Lazy Programmer #6

leave a comment »

Menyelesaikan masalah. Sesuaikan saja.

#1
Terhadap sebuah persoalan, buatlah solusi anda sesederhana mungkin.
Jika anda tak dapat menciptakan solusi yang sederhana,
maka sederhanakalah persoalan tersebut.

#2
Anda dua cara menyelesaikan persoalan:
1. Anda buat solusi berdasarkan persoalan yang ada, atau
2. Anda punya solusi, dan persoalan dipaksa nurut mengikuti solusi
anda.

Contoh dalam hal entri data:
– Seekor ular dapat menelan “data” sebesar apa saja. Mulut dan
rahangnya memberikan “solusi” sesuai data yang masuk.

– Seekor harimau akan mencabik-cabik “data” menjadi ukuran yang
lebih kecil, karena ukuran “solusi”-nya yg limited.

Menyelesaikan masalah tanpa masalah.

Slogan kantor pegadaian tersebut sangat bagus dan harus menjadi pegangan The Lazy Programmer. Untuk menghindari tugas yang tidak ada habisnya, karena anda abadi mengabdi dalam memperbaiki masalah baru akibat memperbaiki masalah lama.

Walau pada kenyataannya, dalam software development hal tersebut senantiasa terjadi, karenanya selalu ada versi baru. Sebelum akhirnya software mengalami kematian.

Huda M Elmatsani
http://lentera.web.id

Written by ndi

March 26, 2009 at 8:21 pm

Posted in PHP

PHP for Lazy Programmer #5

leave a comment »

Seorang programmer apakah itu ia ber-title Software Developer,
Software Analyst, atau Software Engineer, akan selalu
mengatakan “bisa” ketika ia diberikan sebuah “persoalan”.

Seorang programmer selalu bisa menyelesaikan persoalan dalam
kerangka tugasnya.

Seseorang bertanya, “kemampuan programmer itu seperti apa?”

Saya menjawab, “Programmer itu seperti Pelukis”.

Seorang pelukis bisa melukis apa saja.
Kecuali melukis yang dilarang.

Seorang pelukis bisa melukis apa saja sesuai alirannya. Dan seorang
pelukis akan mengerahkan segala kemampuanya untuk menghasilkan karya
terbaiknya.

Anda sudah seperti pelukis? Jadilah pelukis maestro.

Huda M Elmatsani

Written by ndi

March 26, 2009 at 8:19 pm

Posted in PHP

PHP for Lazy Programmer #4

leave a comment »

Menulis nama variable, function, class, table … dsb.

NAMA UNTUK VARIABLE
0. Biasakan nama dalam bahasa Inggris. Kalau anda menggunakan bahasa
Turki, kesulitannya adalah: pertama anda sulit membuat nama, kedua
anda sulit memahaminya, ketiga anda menyulitkan orang lain.

contoh:
$açýklama
$baþkanlarýmýz

baru mengetik, anda sudah kehilangan pekerjaan, karna anda nggak
menemukan character ç di keyboard anda.

1. Nama adalah sesuatu yang membuat kita mengenali, saling mengenal,
memulai perkenalan, dan membuat kita jadi ingat dan jadi lupa.

2. Namun berbeda dengan pemberian nama untuk anak, yang banyak
dijual bukunya, nama untuk elemen-elemen dalam bahasa pemrograman,
tidak dijual secara khusus dalam bentuk buku atau CD. Hanyasaja, di
setiap buku programming tingkat dasar, biasanya disajikan saran-
saran pemberian nama.

2. Prosedur pembuatan nama yang umum adalah:

a. buatlah nama yang singkat dan menjelaskan dirinya sendiri.

contoh:

$client
$customer

contoh buruk:

$clnt
$xyz
$dodol

b. konsistenlah dalam pemberian nama, dalam hal ini anda bisa
menciptakan aturan pemberian nama.

dalam aturan pemberian nama, berilah PREFIX untuk menandai kelompok-
kelompok variable.

sebagai contoh:
nama-nama varible yang berkaitan dengan client:

$clientname
$clientphone
$clientfax
$clientemail … dst.

dan konsisten!

contoh yang tidak konsisten:

$clientname
$client_phone
$clientFax
$ClientEmail

Keuntungan dengan konsistensi dalam pemberian nama adalah:

– jika anda bekerja di perusahaan, anda akan mudah mengelola code-
code programming yang dikerjakan oleh berbeda-beda orang
– jika anda freelancer, anda akan mudah mengelola code-code
programming yang anda kerjakan untuk berbagai client dari tahun ke
tahun

NAMA UNTUK FUNCTION
0. Aturan dasar penamaan variable berlaku disini. Namun untuk nama
function, anda nggak perlu peduli dengan hurup besar dan kecil,
nggak ada artinya membedakannya di php.

1. PHP sendiri hadir dengan cara pemberian nama yg kurang konsisten,
dimana ada nama yg menggunakan underscore dan ada juga yang nggak.

contoh:
nama-nama function berkaitan dg image, tidak menggunakan “_”
seperti: imagecolorat, imagejpeg, …

nama-nama function berkaitan dg swf, selalu diawal dg “swf_”
seperti: swf_actiongeturl, swf_actionstop, …

semenara nama-nama function yg berkaitan dg string tidak konsisten.

2. Namun demikian, anda sebaiknya konsisten dalam memberikan nama
function. Ikuti sedikit gaya penamaan seperti function2 untuk SWF,
yakni diawali dengan nama kelompok/kategori function diikuti
underscore, lalu diikuti dengan katakerja.

contoh:
thumbnail_create()
thumbnail_getsize()
thumbnail_resize() … dsb

Untuk nama-nama function di dalam ruang lingkup terbatas atau di
dalam sebuah CLASS, tidak perlu pake prefix.

NAMA CLASS
Konsensus penamaannya adalah menggunakan kata benda dan diawali
dengan hurup kapital.

NAMA TABLE
1. Ada yang membiasakan diri menamai table dengan prefix “tbl_”
atau “table_”, hal ini dimaksudkan untuk memudahkan mengenalinya
ketika menulis script yg melibatkan query. Namun hal seperti ini
tidak menjadi kenizcayaan.

2. Lebih penting lagi adalah ketika menamai field, usahakan
prefixnya adalah nama tablenya.

Contoh:
nama table: clients
nama fields: clientname, clientphone, clientfax, …

NAMA FIELD-FIELD FORM
1. Namai form anda dengan katakerja diikuti kata benda.

contoh: addclient, …

2. Namai field-field dengan prefix yg sesuai.

contoh: clientname, clientphone, clientfax, … dst

NAMA FILE
1. Mencari file di seribu tumpukan file dalam folder anda bukanlah
perkerjaan mudah. File akan mudah ditemukan kalo mempunyai ciri-ciri.

2. Sebaiknya, namai file-file anda seperti anda menamai function,
karena umumnya file-file anda adanya adalah karena melakukan suatu
proses.

Huda M Elmatsani

Written by ndi

March 26, 2009 at 8:17 pm

Posted in PHP

PHP for Lazy Programmer #3

leave a comment »

Memahami Persoalan dan Menyusun Algoritma

1. Sebelum anda memulai pekerjaan anda, hal pertama yang harus anda ketahui adalah “permasalahan yang akan diselesaikan”.

2. Tanpa mengetahui permasalahan yang akan anda selesaikan dengan program anda, anda akan seakan seseorang yang pergi berbelanja ke sebuah mall, anda hanya punya keinginan berbelanja, tanpa mengetahui apa yang akan dibeli, maka yang terjadi adalah anda berputar-putar mengarungi mall, berbelanja entah apa dan entah seberapa banyak dan entah berapa lama waktu dihabiskan, setiap anda melihat barang, anda tertarik dan membelinya, atau anda merasa itu perlu dan membelinya, atau anda merasa nampaknya ponakan tetangga sebelah akan senang dan anda membelinya, atau anda membelinya dengan harapan bisa disimpan untuk suatu ketika diperlukan. Maka ketika keluar dari mall, anda pulang dengan segunung belanjaan … sementara anda masih tidak mengerti belanjaan apa yang benar-benar berguna bagi anda, sementara anda sudah kelelahan untuk memahami belanjaan anda.

3. Cerita di atas mungkin pernah terjadi pada diri anda, apakah sebagai tukang belanja atau sebagai tukang web.

4. Sekarang lihatlah seorang programmer yang terlebih dahulu memahami persoalan sebelum bertindak lebih lanjut, skenarionya seperti ini:

4.a. Pertama dia mendefinisikan persoalan terlebih dahulu.
4.b. Kemudian dia membuat algoritma paling efisien.
4.c. Lalu baru menulis program

5. Analogi tukang belanja dengan keuangan terbatas:

5.a. Mencatat apa yang mau dibeli.
5.b. Merencanakan dan melakukan perjalanan paling efisien (urutan pembelian).
5.c. Lalu baru membeli.

6. Kadang-kadang kita menemukan bahwa seorang programmer terjebak macet di salah satu item skenario di atas.

Kemlading6.a. Programmer yang gagal mendefinisikan masalah, akan semakin gagal menemukan algoritma yang tepat untuk persoalan yang ingin diselesaikannya.

6.b. Kadang ditemukan dalam milis ini, seseorang yang gagal dalam membuat program, namun dia tidak mengungkapkan latar belakang masalahnya, dan ketika latar belakang masalahnya diungkapkan, ternyata banyak alternatif untuk menyelesaikan masalah dia, nggak hanya satu cara, anda tinggal memilih mana yang paling sesuai.

6.c. Menyusun algoritma yang efisien dan sederhana juga penting. Di sini anda akan menemukan susunan struktur program, variable dan array, function-function apa saja yang mungkin terbentuk, dan ke mana harus mencari library yang diperlukan, atau bertanya ke milis. Meskipun kadang ada beberapa programmer minta contoh atau bahkan script yang sudah jadi, tanpa algoritma. No problem, itulah manisnya jadi pemalas.

6.d. Ada baiknya jika anda sudah berkali-kali tanya ke milis ini, tetapi nggak ada yang jawab, cobalah anda bikin algoritma kemudian diteruskan dengan menyusun pseudo-code, mungkin jawabannya sudah anda bikin sendiri.

6.e. Dengan mengetahui persoalan anda dan mendesain algoritma, akan mudah bagi anda dalam mengadopsi atau memodifikasi script-script yang sudah jadi yang bertebaran di Internet tanpa henti dan terus menjadi-jadi.

6.f. Kenapa anda pernah mengalami hal di mana anda kesulitan memahami program yang dibuat orang lain, kunci kesalahan anda adalah karena anda tidak tahu bagaimana program itu bekerja, bagaimana algoritma program tersebut.

Huda M Elmatsani

Written by ndi

March 26, 2009 at 8:11 pm

Posted in PHP