Entries Categorized as 'Developer'
April 11, 2008
Waktu awal-awal saya memakai Macromedia Dreamweaver versi 8 yang merupakan generasi penerus Macromedia MX 2004, saya merasa bahwa software ini telah sampai pada titik state of the art-nya. Begitu mudah mendevelop sebuah website. Begitu cepat memindahkan desain tampilan ke dalam bentuk tag-tag HTML. Apalagi yang lebih saya perlukan selain alat sehebat ini?
Ternyata saya salah. Titik kesempuranaan masih jauh. Masih ada CSS Tableless Layout. Saya memimpikan Dreamweaver kelak bisa melakukan pembuatan web berbasis CSS semudah sekarang melakukan layouting dengan tabel. Saat ini, Dreamweaver telah mampu membaca dan menerjemahkan layout CSS dengan baik pada lembar kerja WYSYWG (What You See is What You Get)-nya. Tetapi untuk membuatnya, kita masih harus berkotor-kotor terjun ke editor teks dan mengetik baris demi baris kode. Memang telah ada template berbasis CSS yang telah disediakan oleh Dreamweaver, tetapi untuk pembuatan dari nol, ia belum mampu menyediakan. Saya membayangkan bisa membuat layout CSS dengan drag and drop seperti pembuatan layout tabel sekarang.
Ketika Macromedia diakuisisi Adobe, saya berpikir betapa hebatnya nanti gabungan dua software mainstream web ini: Adobe Photoshop dan Adobe Dreamweaver. Adobe Photoshop menyediakan fasilitas save-for-web dalam bentuk tableless layout. Hehe.. bukan tidak mungkin ini benar-benar akan dilakukan dalam versi-versi mendatang.
Versi pertama Dreamweaver setelah diakuisisi Adobe adalah Adobe Dreamweaver CS3 (CS merupakan kependekan dari Creative Suite). Dibundel dalam satu paket raksasa Adobe CS3 Design Premium yang terdiri dari:
- Adobe Flash CS3 (Macromedia Flash)
- Adobe Dreamweaver CS3 (Macromedia Dreamweaver)
- Adobe Illustrator CS3
- Adobe InDesign CS3
- Adobe Photoshop CS3
Waktu melakukan instalasi, saya tidak yakin ada perubahan signifikan di Dreamweaver CS3. Dugaan saya benar. Secara fungsionalitas, nyaris tidak ada yang berubah. Hanya beberapa template web yang ditambah. Ini merupakan produk lama yang dibungkus dengan brand baru di bawah bendera Adobe.
Semoga Dreamweaver bisa melakukan apa yang jadi impian saya ini di versi berikutnya. Dan tentu saja, semoga muncul software yang free yang bisa menyamai Dreamweaver. Hehehe…
Artikel terkait: Adobe Design Premium CS3 Quick Review
Posted in Developer
3 Comments »
March 26, 2008
CMS (Content Management System) adalah sebuah sistem (saya lebih suka menyebutnya framework – bingkai kerja) yang ditujukan untuk manajemen isi suatu situs, misalnya portal. CMS yang sudah jadi sendiri sudah sangat banyak, baik yang bersifat lisensi berbayar (propietary) maupun yang open source. CMS Open Source juga sangat banyak yang populer, diantaranya adalah Joomla dan Drupal.
Kemudahan memakai CMS tentu saja adalah kecepatan pengembangannya. Tinggal lakukan instalasi, set up database, lakukan penyesuaian (customize) sesuai kebutuhan, sesuaikan tampilan, dan selesai. Siap launching. Live. Ini sangat berguna ketika kita diminta untuk menyelesaikan sebuah situs portal dengan deadline yang hampir tidak masuk akal. Apa pasal? Dalam pengembangan sebuah situs, paling tidak kita memerlukan beberapa pekerjaan besar, yaitu:
- Desain tampilan, dan potong-potong (kawan saya yang pakai Adobe Photoshop pasti mengerti maksud potong-potong ini
) menjadi HTML
- Serahkan HTML mentah kepada tim programmer untuk membuatnya dinamis dan bisa memuat data dari database
- Tahap desain: database, site map, site flow
- Pembuatan halaman administrasi situs, lengkap dengan validasinya
- Set up database, set up webserver, set up DNS Server, dan lakukan proses deployment agar siap diluncurkan
Dalam waktu singkat, semua pekerjaan itu hampir mustahil dilakukan dengan sangat baik. Oleh karena itu, kemudahan dan kecepatan pengembangan situs dengan menggunakan CMS yang sudah jadi menjadi salah satu pilihan yang patut menjadi pertimbangan serius.
Namun demikian, memakai CMS yang sudah jadi apalagi open source mendatangkan masalah baru: sisi keamanan. Karena open source, semua orang menjadi tahu sudut-sudut terkecil dari infrastruktur CMS. Dengan demikian, semua orang (inilah contoh generalisasi hiperbolistik
) juga tahu kelemahan setiap CMS. Semua orang berpotensi menjadi penyerang sistem keamanan yang menggunakan CMS open source. Apalagi, dalam forum-forum terbuka, selalu ada saja kelemahan titik keamanan yang dipublikasikan, lengkap dengan cara penyerangannya.
Oleh karena itu, sebenarnya situs yang menggunakan CMS open source harus rajin-rajin dirawat, diteliti, dan diupdate agar celah-celah keamanan yang muncul dapat ditutup dengan cepat. Inilah yang jarang tidak pernah terjadi di sebagian besar portal yang memakai CMS open source. Biasanya memang pembuatan sebuah portal adalah outsourcing, dan kontrak yang ada tidak melibatkan proses perawatan. Sehingga tentu saja, portal-portal itu demikian mudah diserang oleh para script kiddies1.
Bagi saya, ini adalah pilihan yang dilematis. Kalau saya pakai CMS, saya harus merawatnya baik-baik. Kalau saya buat CMS sendiri, tentu saja saya lebih bisa mengendalikan infrastruktur keamanannya, tapi saya babak belur di waktu pembuatannya. Ironisnya, jika melihat bagaimana kontrak pembuatan sebuah website yang tidak menyertakan klausul perawatan, kebanyakan orang memilih memakai CMS yang jauh lebih cepat dan mengabaikan sisi keamanannya.
Catatan Kaki:
1: Penyuka kegiatan penyerangan sisi keamanan sistem dengan mencontek informasi yang sudah ada yang tersedia di forum-forum underground di internet atau IRC.
Posted in Desain Web, Developer, Internet
11 Comments »
February 11, 2008
Blog-Indonesia, mungkin adalah salah satu agregator blog terbesar di Indonesia. Blog ini memiliki sekitar 5500-an anggota yang terdaftar. Dari waktu ke waktu, agregator ini menyedot feed dari blog-blog anggota dan menampilkannya kembali dalam satu kesatuan.
Adanya RSS Feed dan datangnya Google Reader praktis mengubah cara saya dalam mengambil informasi dari internet. Sekarang, semua yang ada RSS-nya saya masukkan ke dalam Google Reader dan membacanya dari situ. Tapi tentunya malas juga kalau harus memasukkan satu per satu dari ribuan feed yang ada di internet. Oleh karena itu, saya lebih suka subscribe feed dari aggregator semacam Planet Terasi dan Merdeka. Maraknya komunitas blogger akhir-akhir ini juga cukup memberi harapan bagi saya. Tapi sayangnya hampir semua komunitas itu tidak menyediakan agregator untuk anggotanya. Komunitas ini mungkin lebih mirip dengan komunitas para breaker radio amatir dulu waktu saya aktif di jalur FM dan SW (ORARI registered user: yengki-delta-bla bla).
Blog-Indonesia sangat menjanjikan. Sayang beribu sayang, mereka tidak punya feed. Atau saya yang tidak tahu? Saya sudah ubek-ubek situs itu buat mencari sebuah file XML berspesifikasi RSS. RSS Feed yang saya dapatkan hanya berisi link yang menuju ke halaman web, bukan entrian posting seperti layaknya sebuah agregator. Ah!
Kebetulan, weekend ini saya memiliki waktu luang. Mau hunting foto… Jakarta sedang diguyur hujan lebat. Jadi saya berpikir, kenapa saya tidak buat sendiri saja RSS Feed-nya? Mengulang saat-saat saya masih memakai www.galihsatria.com yang berbasis JSF (Java Server Faces) sebagai situs utama saya. Saya tinggal ekstrak data-data yang saya perlukan dari blog-indonesia dan saya keluarkan kembali hasilnya sebagai feed. Karena saya tidak bisa memakai Java lagi di server ini, maka saya terpaksa memakai PHP. Agak sedikit aneh juga kalau sudah terbiasa dengan Java yang sangat kaku terhadap tipe data menghadapi PHP yang longgar.
Hasilnya? Daily entry bisa di-subscribe di sini, sedangkan untuk most popular bisa di-subscribe di sini. Namanya juga iseng-iseng, aplikasi ini sangat tidak stabil. Tapi lumayan lah buat saya, paling tidak saya bisa mengikuti apa yang terjadi di blog-indonesia via Google Reader saya.
*
Anyway, bagi saya, menulis baris-baris kode program adalah salah satu hal yang sangat menyenangkan. Apalagi jika ada hal-hal baru. Seperti kali ini, saya ingin memperdalam kungfu dalam hal Regular Expression. Saya sadar, regex sangat powerfull dalam hal pengenalan pola-pola teks, tetapi struktur kode-nya memang bikin putus asa. Saya biasanya lebih suka mengolah pola-pola teks dalam tumpukan prosedur-prosedur substring. Meskipun lebih panjang, tetapi jauh lebih santai. Kali ini, saya memaksakan diri untuk memakai regex yang lebih cepat. Walhasil, untuk parser RSS Blog-Indonesia, ada beberapa hal yang menarik:
- Langkah pertama, dapatkan file HTML-nya. Amati pola-polanya. Situs-situs yang memiliki sesuatu yang diulang seperti blog atau berita selalu memiliki pola yang mudah dilihat. Dari sini, definisikan pola tersebut dalam ekspresi regex. Meskipun memungkinkan mendapatkan semua yang kita butuhkan dalam satu pola regex, namun saya lebih suka melakukannya dalam beberapa langkah. Sekedar agar sedikit bisa dibaca kode regex-nya.

- Pola untuk mendapatkan kotak bloglist:
/(<div class=”bloglist[alternate]*”>
+(<([a-z0-9]+)[^>]*>.*?<\/\3>
*<\/div>/
- Setelah mendapatkan kotak itu, ekstrak data-data yang kita perlukan seperti judul posting, link, nama penulis, dan waktu publikasi.
- Ini pola untuk mendapatkan isi didalam kotak bloglist: /(<([a-z0-9]+)[^>]*>
+(.*?)</
- Mendapatkan link posting memakai pola ini: /<a\starget=”_blank”\shref=”(.*?&.*?)”/
- Dan akhirnya, memecah tanggal posting dengan pola: /([0-9]{1,2})\s(\w+)\s([0-9]{1,2})\s-\s([0-9]{1,2})
[0-9]{1,2})/
Kode yang rumit. Regex adalah hal yang paling saya benci setelah Javascript. Andai dulu saya tidak tidur waktu kuliah Teori Bahasa dan Otomata-nya Bu Chastine Fatichah, mungkin saya tidak selambat ini dalam belajar regex. Sekarang, saya mulai mengerti kekuatan regex yang tersembunyi dalam kode yang rumit itu.
Posted in Catatan Harian, Developer
8 Comments »
February 8, 2008
SERI MEMBANGUN APLIKASI WEB-BASED DENGAN JAVA ENTERPRISE
Dalam sesi tutorial kali ini, kita akan membuat servlet sederhana dalam langkah demi langkah dengan tujuan memahami bagaimana gaya Java menangani sebuah mekanisme website (request dan response) dalam mekanisme protokol HTTP. Seperti yang telah saya tulis di panduan ini, Java Servlet memiliki beberapa kelemahan yang sangat signifikan. Tetapi saya tetap mengantarkan konsep ini daripada saya memperkenalkan cara yang lebih mudah seperti JSP. Alasan utama saya, untuk memperkenalkan kepada Anda konsep sistem Java Enterprise dengan bertumpuk-tumpuk servlet, Anda harus mengerti konsep servlet terlebih dahulu karena framework-framework tersebut sebenarnya juga tersusun dari servlet.
Tutorial ini membahas mengenai pembuatan servlet sangat sederhana dengan menggunakan IDE Eclipse Europa versi 3.3. IDE ini sangat memudahkan kita dalam melakukan development sistem Java Enterprise. Servlet yang akan kita buat hanya menampilkan form, meminta pengunjung memasukkan nama, dan menyapanya kembali dengan nama yang telah dimasukkan tersebut.
Pada bagian akhir tutorial, kita melakukan deployment pada server production dengan menggunakan Apache Tomcat.
Silakan mendownload panduan ini (dalam format PDF) di sini: Membuat Java Servlet.
Jika Anda memerlukan source code lengkap beserta hirarki directory-directory-nya, silakan download di sini (dalam format ZIP): Source Code Lengkap.
Selamat mencoba. 
Link yang mungkin terkait:
Posted in Java
8 Comments »
January 23, 2008
Setelah sekian lama berada di alam fotografi, ada rasa rindu juga untuk menulis di dunia programming. 
Ada yang kenal Crystal Report? Itu lho, reporting tool yang saya kenal dia berjaya di saat Visual Basic 6 di puncak popularitasnya. Pernah memakainya? Biasanya kita memakai reporting tool untuk memproduksi sebuah laporan yang outputnya secara fleksibel dalam berbagai format seperti PDF, dokumen MS-Word, dokumen MS-Excel, dsb.
Java memiliki banyak reporting tool, baik yang berlisensi free maupun yang propietary. Saya akan membahasnya beberapa — tentu saja, menurut subjektivitas dan sedikit pengalaman saya.
Oracle Report
Produk dari Oracle ini propietary. Anda harus membayar lisensi jika ingin menggunakannya dalam lingkungan produksi. Keunggulan utama Oracle Report adalah manajemen data source-nya. Karena produk Oracle, maka Oracle Report adalah report standar semua hal yang berbasis Oracle. Hal yang menjengkelkan dari Oracle Report adalah lembar kerja desain layout-nya. Tidak fleksibel. Sulit memindahkan sebuah field di section tertentu ke section yang lain. Salah-salah yang keluar adalah error dan celakanya, kita tidak bisa melakukan undo banyak-banyak. Karena tidak bisa kembali, seringkali solusi satu-satunya adalah memulai dari awal (hapus semua, dan buat lagi) 
Homepage: Oracle Report.
Actuate e.Report Designer
Produk dari Actuate corp. ini bersifat propietary. Saya mengenalnya karena IBM Maximo (dulu milik MRO) memakai ini sebagai report standar-nya. Sangat fleksibel. Lembar kerja actuate memakai slot-slot yang bisa diibaratkan rak-rak kosong yang bisa diisi macam-macam, mulai dari koneksi, SQL Query terpisah, bahkan SubReport yang berisi slot-slot kosong lagi. Setiap Report Section memiliki blok-blok Before Section, After Section, Page Header, Column Header, Detail, dll yang masing-masing menandakan dimana report akan ditampilkan, apakah sebagai header setiap halaman, apakah sebagai footer, tergantung penempatannya. Actuate adalah report tool yang menurut saya paling nyaman dan paling enak dipakai.
Homepage: Actuate e.Report Designer
Jasper Report
Jasper mungkin adalah reporting tool open source yang paling populer. Memiliki IDE designer terpisah yang dinamakan iReport, Jasper merupakan tool yang fleksibel, utamanya dalam hal data source. Banyak sumber data yang didukung Jasper selain database relasional via SQL, salah satunya bisa bersumber dari prosedur-prosedur Java. Jadi, Jasper bisa menerima sebuah java.util.List untuk dijadikan data source-nya. Hal ini dimungkinkan, karena Jasper bersifat embedded dan dikompilasi menjadi kode binari Java juga.
iReport Designer juga sangat mudah. iReport memperkenalkan istilah yang disebut band sebagai container dari field-field report. Ada band title, pageHeader, columnHeader, detail, columnFooter, lastPageFooter, dan summary. Meskipun fleksibel, sayangnya masih banyak hal yang tidak bisa dilakukan oleh Jasper. Misalnya dukungan terhadap format HTML. Meskipun mendukung format HTML lewat StyledText-nya, tetapi tag HTML yang didukung sangat-sangat sedikit dan jika Jasper menemukan tag yang tidak ia kenal, ia langsung mereset diri menjadi unformated text sehingga semua tag HTML akan ditampilkan seluruhnya, bukan dalam kondisi terformat. Selain itu, dalam beberapa kasus, Jasper tidak bisa mengatur data memanjang ke kanan. Ia hanya bisa scrolling down ke bawah, tapi tidak ke kanan. Kita kadang perlu membuat susunan yang memanjang ke kanan dan sayangnya hal itu tidak didukung oleh Jasper.
Dan seperti produk-produk open source lainnya, Jasper miskin dokumentasi. Sebagian besar pengetahuan saya tentang Jasper berasal dari source code-nya, bukan dokumentasi. Dokumentasi yang buruk yang tidak tersedia bebas cukup menyulitkan developer. Hanya developer yang geek yang mau membongkar kode sumber. Dan untungnya, hampir semua developer relatif geek dengan tingkat geek yang berbeda-beda. 
Homepage: Jasper Report dan iReport
Eclipse Bussiness Intelligence Reporting Tool (Eclipse BIRT)
Di bawah proyek Eclipse Foundation, BIRT yang disponsori langsung oleh Actuate corp. (pemilik Actuate e.Designer) muncul dengan pendekatan yang berbeda dan menjanjikan. Ada kemiripan dengan Actuate meskipun tidak persis sama. BIRT menggunakan IDE berbasis Eclipse dan memiliki pendekatan pendesainan seperti ketika kita mendesain halaman HTML dengan Macromedia Adobe Dreamweaver. Jadi kita diberi lembar kerja kosong, tanpa slot (istilah Actuate) atau band (istilah Jasper). Kita bebas menaruh sebuah field di mana saja.
Cukup menjanjikan. Sangat menjanjikan bahkan. Kekurangan Jasper yang tidak bisa merender HTML dan tidak bisa memanjang ke kanan diatasi oleh BIRT. Apalagi produk ini bersifat open source. Namun sayangnya, ketika saya mencoba membuat report dengan SQL yang sederhana, — tidak terlalu banyak nested SQL, hanya menampilkan 75 kolom yang dijoin dari 2 tabel –BIRT cukup terengah-engah dengan responnya yang begitu lambat. Harus melakukan beberapa kali tuning viewer (bongkar source code) baru BIRT bereaksi dengan cepat. Kalau query sederhana saja begitu lambat, apalagi query yang rumit?
Tetapi mungkin saya yang masih perlu banyak belajar tentang BIRT. Tool ini sangat menjanjikan dan bisa jadi menaklukkan popularitas Jasper Report di dunia open source reporting tool.
Homepage: Eclipse BIRT.
Posted in Java, Review
2 Comments »