PHP, Enterprise Application dan Namespace/Package

PHP merupakan bahasa pemrograman yang memulai memanjat sebagai bahasa yang bisa digunakan untuk membuat Enterprise Application. Mulai PHP5 (PHP versi 5) konsep Object Oriented Programming telah ditingkatkan cukup banyak. Benarkah PHP siap menjadi Enterprise Language? Saya tidak menjawab ya atau tidak, tetapi keberadaan application framework semacam Zend Framework dan Prodo Framework paling tidak telah dipersiapkan untuk menjawab tantangan itu.

Tetapi ada sebuah hal yang cukup menggangu bagi pengembang dalam menggunakan PHP untuk membangun Enterprise Application, yaitu namespace. Sebuah Enterprice Application akan membutuhkan banyak kode sehingga membutuhkan pengorganisasian kode yang baik. Aplikasi akan terdiri dari banyak class, dimana class-class ini perlu dikelompokkan menjadi beberapa package. Sangat mungkin sebuah package berasal dari pihak ke tiga. Nah fungsi namespace adalah untuk mengidentifikasikan packege-packege supaya tidak terjadi benturan nama class yang disebabkan struktur aplikasi yang skala besar. (Untuk memahami konsep Namespace lebih lanjut, Anda dapat membaca bukunya Robert C. Martin, ‘Agile Software Development. Principles, Patterns, and Practice’ yang diterbitkan Prentice Hall, 2003.)

Dalam Java, namespace identik dengan package dan menggunakan keyword ‘package’ untuk mendefinisikannya. Sedangkan C# (.Net) menggunakan keyword dengan nama yang sama, yaitu ‘namespace’.

Contoh kasus manfaat namespace dalam java dapat ditemui package java.sql dan java.util. Kedua package tersebut sama-sama memiliki class Date. Jika Anda hanya menggunakan salah satu package saja, maka Anda dapat membuat object Date sebagai berikut:

Date now = new Date();

Tetapi jika kedua package tersebut Anda gunakan bersama-sama, maka kode di atas akan mengalami error karena ada dua (2) class yang bernama sama. Nah disinilah manfaat namespace, sehingga Anda dapat membuat object Date dari package java.util sebagai berikut:

java.util.Date now = new java.util.Date();

Nah bagaimana jika Anda menggunakan PHP, kemudian menggunakan dua buah package library yang mempunyai nama class yang sama? Konon PHP6 akan mempunyai fitur namespace, tapi kita belum bisa berharap banyak karena belum tahu kapan versi stabil nya keluar. Solusi yang disarankan adalah dengan melakukan perubahan tata-cara penamaan class. Kita dapat menamakan sebuah class seperti memberi nama namespace, sebagai berikut:

1. Nama class diawali dengan nama perusahaan pembuat
2. Setelah nama perusahaan dilanjutkan nama paket (package).
3. Jika ada sub-package, dilanjutkan dengan memberi nama sub-package
4. Terakhir adalah nama class sebenarnya (jika tidak diberi awalan namespace).
5. Antara nama perusahaan, package, sub-package dan ‘original class name’ dipisah dengan karakter “_” menggantikan karakter “.” yang lazim dipakai dalam menamakan namespace.

Contoh yang baik telah diterapkan pada Zend Framework. Zend memberi nama class untuk Lucene dalam package Search dengan Zend_Search_Lucene. Berikut petikan kodenya:

/**
* Zend Framework
*
* LICENSE
*
* This source file is subject to version 1.0 of the Zend Framework
* license, that is bundled with this package in the file LICENSE, and
* is available through the world-wide-web at the following URL:
* http://www.zend.com/license/framework/1_0.txt. If you did not receive
* a copy of the Zend Framework license and are unable to obtain it
* through the world-wide-web, please send a note to license@zend.com
* so we can mail you a copy immediately.
*
* @package Zend_Search_Lucene
* @copyright Copyright (c) 2005-2006 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://www.zend.com/license/framework/1_0.txt Zend Framework License version 1.0
*/

/** Zend_Search_Lucene_Exception */
require_once ‘Zend/Search/Lucene/Exception.php’;

/** Zend_Search_Lucene_Document */
require_once ‘Zend/Search/Lucene/Document.php’;

/** Zend_Search_Lucene_Storage_Directory */
require_once ‘Zend/Search/Lucene/Storage/Directory/Filesystem.php’;

/** Zend_Search_Lucene_Index_Term */
require_once ‘Zend/Search/Lucene/Index/Term.php’;

/** Zend_Search_Lucene_Index_TermInfo */
require_once ‘Zend/Search/Lucene/Index/TermInfo.php’;

/** Zend_Search_Lucene_Index_SegmentInfo */
require_once ‘Zend/Search/Lucene/Index/SegmentInfo.php’;

/** Zend_Search_Lucene_Index_FieldInfo */
require_once ‘Zend/Search/Lucene/Index/FieldInfo.php’;

/** Zend_Search_Lucene_Index_Writer */
require_once ‘Zend/Search/Lucene/Index/Writer.php’;

/** Zend_Search_Lucene_Search_QueryParser */
require_once ‘Zend/Search/Lucene/Search/QueryParser.php’;

/** Zend_Search_Lucene_Search_QueryHit */
require_once ‘Zend/Search/Lucene/Search/QueryHit.php’;

/** Zend_Search_Lucene_Search_Similarity */
require_once ‘Zend/Search/Lucene/Search/Similarity.php’;

class Zend_Search_Lucene
{



}

?>

Nah apakah Anda sudah siap dengan PHP Enterprise?

Jabat erat selalu,

Agus Suhartono

Messanger Anywhere, Mengapa Tidak?

Jika Anda suka ber-chatting ria
dengan messanger
seperti MSN Messanger,
Yahoo Messanger,
IRC atau GTalk.

Sementara Anda sering
berpindah-pindah komputer.
Sementara setiap komputer
belum tentu punya aplikasi
yang Anda butuhkan.

Maka gunakanlah
Web Based Messanger Client.
Maka gunakanlah Meebo atau
gunakanlah e-Messenger

Kini masalah Anda
terselesaikan sudah

:P

Agus Suhartono

Dzikir: Tanaman di kebun syurga

Hai orang-orang yang beriman, berdzikirlah (dengan menyebut nama) Allah, dzikir yang sebanyak-banyaknya.Dan bertasbihlah kepada-Nya di waktu pagi dan petang”. (QS.Al Ahzab:41-42)

Lebih dari dua ratus kali dzikir dosebutkan dalam Al Qur’an.Baik berupa perintah, fadhilah maupun ancaman bagi yang meninggalkannya. Tentu ini menunjukkan betapa pentingnya dzikir bagi manusia

Dzikir bisa menghidupkan hati dan membuatnya sehat. Bahkan Ibnu Taimiyah berkata,” Dzikir bagi hati bagai air bagi ikan, maka bagaimana keadaan ikan jika di keluarkan dari air?” Hanya ikan sekarat yang ingin hidup di luar air, begitupun hati yang jenuh untuk berdzikir adalah alamat ajalnya telah dekat. Read the rest of this entry »

Belajar dari Acer : Mempersatukan Masyarakat dan Technology

Pada umumnya pengelola perusahaan-perusahaan Hi-Tech mempunya latar belakang keahlian teknik. Hal ini menyebabkan gaya manajemen mereka adalah fokus pada produk. Berbeda dengan perusahaan yang dikelola oleh orang yang berlatar belakang pemasaran, mereka akan berfokus pada kunsumen. Sta Shin dari Acer menyebut mereka yang berlatar belakang teknis ini sebagai “Technology Centric“, berlawanan dengan “Customer Centric“. Nah yang menarik Acer berusaha menggabungkan keduanya.

Sta Shin dalam pengantarnya pada buku “Branding in Asia” mengatakan: “Memang benar bahwa hanya produk, teknologi, dan jasa inovatif yang dapat memberikan kualitas dan nilai yang tinggi kepada pelanggan yang akan dapat mempertahankan usaha di era baru yang kompetitif ini. Akan tetapi, faktor yang tidak bisa dihindari adalah kenyataan bahwa merek menjual“.

Melihat kenyataan ini Acer kemudian mengarahkan haluannya untuk menjadi lebih berorientasi konsumen dan karena itu bekerja keras untuk merubah kerangka pemikiran manajemennya dari bentuk semula yang Technology Centric menjadi Costumer Centric. Menyadari bahwa industri komputer selama ini selalu memfokuskan perhatian pada teknologi, lebih memberi tekanan pada produk dari pada masyarakat. Acer mereposisikan diri untuk menjadi sebuah perusahaan hak milik intelektual dan perusahaan pemberi jasa yang Customer Centric. Upaya ini dicerminkan pada slogannya : “Acer: Mempersatukan Masyarakan dan Technologi

Maka Anda sekarang akan sering melihat slogan-slogan Empoweing People dan Empowering Technology.

Agus Suhartono

Referensi:

Disarikan secara bebas dari Hi-Tech Hi-Touch Branding karya Paul Temporal dan KC Lee

Cegah Spammer menggunakan server Anda!!

Saat ini seoarang penjaga server tidah hanya disibukkan dengan datangnya penyusup yang kemungkinan bisa melakukan perusakan. Walaupun tidak semua penyusup melakukan itu. Ada beberapa penyusup yang hanya menempelkan identitasnya, dan kita justru patut berterima kasih kepada penyusup model begini.

Ada hal lain yang harus diperhatikan, yaitu jangan biarkan spammer menggunakan server Anda. Saat ini Data Center telah menerapkan kebijakan tegas, yaitu jika Anda tidak segera menangani masalah spammer ini, maka server Anda bisa dimatikan. Read the rest of this entry »

Mengenal ‘Module Template’ di Mambo/joomla

System template di Mambo/Joomla cukup simple, hanya membutuhkan sebuah file layout. Tetapi kalau Anda amati, mengapa tampilan situs yang menggunakan Mambo dan Joomla bisa hebat?

Salah dua rahasianya adalah penggunaan layout module bawaan Mambo/Joomla yang dikombinasikan dengan CSS (cascading style sheet). Module di Mambo/Joomla tidak mempunyai file tempale tersendiri, melainkan Mambo/Joomla telah menyediakan beberapa template di dalam Core-nya. Read the rest of this entry »

Akankah .Net mengejar Java

Net merupakan application framework yang dikembangkan oleh Microsoft. .Net memiliki konsep seperti Java, yaitu menggunakan virtual machine. Yang perlu diketahui oleh banyak orang adalah bahwa .Net adalah free. Yang dijual oleh Microsoft sebenarnya Visual Studio .Net, yang menjadi tools pengembangan berbasis .Net.

Yang menarik, .Net ternyata juga menggunakan Open Standart, sehingga orang lain bisa membuat .Net framework untuk system yang berbeda. Mono adalah contoh nyata dari implementasi .Net, jadi mono juga gratis. Berbeda dengan MS .Net yang hanya jalan MS Windows, Mono dibuat untuk bisa dijalakan di banyak platform.

Nah dengan konsep seperti itu, .Net telah menjadi pesaing utama Java. Seperti halnya Java, saat ini telah bermunculan IDE gratis untuk membuat aplikasi berbasis .Net framework, misalnya : ISSharpCode (ic#code) dan MonoDevelop. Kedua IDE ini jadi mirip Eclipse dan NetBeans di Java.

Yang jadi masalah disini adalah saat ini belum banyak yang mengimplementasikan .Net framework di system/platform lain. Konon Mono pun belum sempurna dalam mengimplementasikan .Net.

Nah, mungkinkah .Net mengejar Java. Kalau mungkin kapankah? Haruskah menunggu sampai saya ubanan? Oh ya, saya lupa, saat ini uban saya sudah banyak kok.

Agus Suhartono

Ikhwan Apa Bakwan

Sedang asyik baca-baca email di milis keadilan4all, mata saya melihat judul menarik “Puisinya Ikhwan :)”. Setelah saya buka, isinya memang menarik, sebuah puisi yang indah, lucu, dan penuh makna, layak Anda baca jika Anda termasuk yang disebut ikhwan (atau yang sedang mencari ikhwan?) :P.

Kristiningsih
PT **** (Indonesia)
Phone. (+6221) ******
Fax. (+6221) *****

—–Original Message—–
From: Kosi

IKHWAN APA BAKWAN

Oh…. Ikhwan
Apa bedanya dengan si Marwan
Si Ali, Paijo atau si Iwan
Oh ternyata cuma sebutan

Oh…. Ikhwan
Walaupun tidak rupawan
Alias modal tampang pas-pasan
Tetep aja tebar senyuman

Oh…. Ikhwan
Gayanya sih bisa ketebak & kelihatan
Jenggot melambai,baju koko & sendal jepit usang Sesekali komat-kamit
sambil jalan

Oh…. Ikhwan
Nyarinya susah-susah gampang
Kadang di masjid, kampus or sekolahan
Mungkin juga lagi nyari sampingan
Nggak taunya buat biaya walimahan :)

Oh…. Ikhwan
Ngomonginnya masalah aksi dan kepartaian Juga Liqo’an and hapalan Kata
orang “Nggak ada bahasan yang lain, wan ?”

Oh…. Ikhwan
Anehnya kalo lagi jalan
Ngukurin tanah apa ngitung lantai sih, wan?
Oh….. ternyata dia jaga pandangan !!!

Ikhwan… Ikhwan…
Lucunya kalo akhwat sedang berpapasan
Langsung minggir, acuh tak acuh kaya’ musuhan (Gubrak…!!!!! apaan tuh,
wan?) Eh…. dia jatuh, kagak ngeliat ada selokan :))

Oh…. Ikhwan, apa semuanya begitu, wan ?
Ada nggak yang masih tebar pesona & jelalatan ?
Berarti itu bukan ikhwan, (kan cuma sebutan ?!!) Nah para akhwat,
hati-hati mungkin dia nyari pasangan

(he2, cuma intermezzo, jangan pade marah lo, wan)

Biografi Syaikhul Islam Ibnu Taimiyah

Ibnu Taimiyah adalah seorang ulama terkenal dan mumpuni sehingga dijuluki sebagai Syaikhul Islam.

Dalam syairnya yang terkenal beliau juga berkata:
“Apakah yang diperbuat musuh padaku !!!!
Aku, taman dan dikebunku ada dalam dadaku
Kemanapun ku pergi, ia selalu bersamaku
dan tiada pernah tinggalkan aku.
Aku, terpenjaraku adalah khalwat
Kematianku adalah mati syahid
Terusirku dari negeriku adalah rekreasi.

“Demi Allah, tidaklah benci kepada Ibnu Taimiyah melainkah orang yang bodoh atau pengikut hawa nafsu.”1) Qodhinya para qadhi Abdul Bar As-Subky. Read the rest of this entry »

Web Service dan Transaction

Ketika saya memulai belajar web service hal yang paling mengganjal adalah masalah transaction. Saya belum bisa membayangkan bagaimana transaction dalam web services bisa dijalankan.

Hal ini terkait dengan masalah session managemen serta pemeliharaan status koneksi. Dalam web application, yang saya tahu, hanya diproses saat diakses. Jadi client application dengan webservice bersifat stateless. Koneksi web service dengan database hanya terjadi saat client application dijalankan.

Client application dengan web service bisa berhubungan dengan session. Lalu bagaimana dengan koneksi antara web service dengan database? Bagaimana memeriksa/memelihara status koneksi antara webservice dengan database?

Setelah saya mencari informasi sana-sini akhirnya saya menemukan bahwa dengan web service kita bisa melakukan transaction. Salah satu cara (saya belum tahu apakah ada cara yang lain) yang digunakan adalah dengan melakukan integrasi antara web service dengan distributed transaction manager (DTM), semacam Java Transaction API (JTA) dalam java application server.

Kalau di platform non-Java maka web service di-integrasi-kan dengan DTM native di platform tersebut. Contohnya kalau di platform Microsoft maka web service-nya di-integrasi-kan dengan DTM dari MS SQL Server.

Di platform java heavy-lifting-nya dilakukan oleh JTA Service. Dan JTA service adalah teknologi yang sudah sangat mature dan works.

Thank You Samuel Franklyn for Your info.

REF : http://ws.apache.org/kandula/

Agus Suhartono

Catatan : beberapa kalimat di atas ada yang berasal dari Samuel Franklyn dengan perubahan seperlunya.