Archive for the 'Information Technology' Category

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

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

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.

Implemented WebFX-TabPane on Xaraya Block

Joomla dan Mambo adalah CMS yang mudah digunakan. Contoh kemudahannya adalah penggunaan tabpane yang dinamis dimana kita bisa berpindah antar tap tanpa harus me-refresh halaman. Setelah bedah core Joomla dan Mambo ternya kedua CMS ini menggunakan pustaka JavaScript yang disebut WebFX-TabPane.

Akhirnya saya berfikir untuk mengimplementasikan pustaka ini dalam Xaraya Block. Hal ini dimungkin kan karena Block Layout (theme engine dari Xaraya) sangat fleksible. Bagi Anda yang ingin melihat bagaimana cara mengimplementasikannya silahkan kunjungi link berikut :

http://www.xaraya.com/index.php/xarbb/topic/1570

Melihat Semua Directori yang di CHMOD 777

Banyak dari aplikasi web yang mengharuskan CHMOD 777 ke direktori tertentu, padahal pada kasus tertentu penataan ini sangat riskan. Untuk mengetahui directori apa saja yang di CHMOD 777 silahkan jalankan perintah berikut:

find / -perm 777 > output.txt

selanjutnya Anda tinggal mengecek isi dari file output.txt.

Agus Suhartono