Java
Linus Torvalds, Dari Tugas Kuliah Mengubah Dunia
0Ini posting blog saya setelah 100+ hari tanpa posting
. Menikah itu memang mengubah seseorang, dari single dan nyaris 100% waktu untuk diri sendiri, menjadi nyaris 100% waktu dihabiskan berdua, semuanya serasa lebih seru karena tidak sendirian lagi. Tapi itu bukanya tanpa konsekuensi,
, ya salah satunya saya jadi lebih malas ngeblog ataupun melanjutkan hobi-hobi pribadi seperti dulu.
Ok cukup deh prolognya, saya mau cerita tentang Linus Torvalds deh. Tiba tiba terbetik di pikiran saya untuk menulis tentang satu orang ini, satu orang yang jenius dan mengubah cara kita hidup dalam nyaris 15 belas tahun terakhir, walaupun sebenarnya sejarah itu dimulai beberapa tahun lebih awal. Kata “Kita” di sini lebih saya tekankan kepada “kita” manusia yang terhubungkan di jalur internet, atau mungkin malah orang-orang yang mencari hidup dari boomingnya internet, seperti saya.
Diawali cerita yang menurut saya sangat mirip telenovela atau kisah klasik, seorang mahasiswa master nun jauh di helsinki mencoba menulis kode sederhana untuk membuat kernel OS yang sangat sederhana. Ternyata setelah ditekuni, kernel yang dibuatnya menjadi satu puzzle terakhir dari sebuah proyek besar. Richard Stallman dan kawan-kawan sudah puluhan tahun memulai proyek GNU untuk membuat sistem operasi alternatif yang bersifat terbuka, tetapi GNU project sangat kesulitan membuat kernel OS yang efisien dan berjalan dengan sangat baik. Maka, Linux ini menjadi tambahan terakhir dari proyek GNU menjai satu sistem operasi yang lengkap.
Linux pada awal tahun 90an masih menjadi proyek pribadi Linus, hingga beberapa tahun kemudian lewat usaha kerasnya memperkenalkan linux lewat banyak sekali konferensi, linux mulai banyak digunakan oleh perusahaan di dunia. Awal tahun 2000an menjadi gerakan yang panas sekali, dimana pendukung linux menjadi sangat fanatik memperkenalkan linux ke khalayak. Tetapi sebenarnya linux sudah digunakan banyak sekali orang secara tidak langsung.
Di belahan dunia lain, ada seorang yang sangat murah hati bernama Tim Berners Lee yang mengumumkan kepada khalayak dunia bahwa protokol yang disusunya WWW (world wide web), dilisensikan secara gratis dan dibuka untuk dimanfaatkan semuaaa orang yang tertarik. Protokol ini bisa menghubungkan banyak sekali server, dan memberikan akses informasi dalam bentuk html kepada semua orang. Tetapi sayangnya OS yang digunakan Tim adalah OS yang berbayar dan web servernya pun masih sangat sederhana. Internet yang pada dasarnya perlu pengunjung besar, informasi yang banyak dan tentu saja resource yang sangat besar tidak mungkin dibangun dengan menggunakan software-software yang berbayar, karena biaya yang diperlukan akan menjadi sangat besar.
Kedua peristiwa yang berjalan beriringan ini menjadi satu momentum yang tinggi, di satu sisi industri Internet perlu sever yang berbiaya murah di sisi lain Linux menyediakan apa yang dibutuhkan oleh internet. Momentum ini begiiitu besarnya sehingga tahun 2000 menjadi salah satu tahun bubble paling spektakuler dalam sejarah. Banyak bermunculan perusahaan-perusahaan yang menawarkan service Linux menjadi sangat besar, bahkan beberapa perusahaan berhasil mendaftarkan diri di Bursa Efek, istilahnya Initial Public Offering (IPO). Internet plus Linux mengguncang dunia dan mendorong pertukaran informasi yang sangat cepat dan gratis, dikenal dengan era informasi, bahkan mendorong evolusi sistem operasi.
Pada titik ini, banyak orang-orang mulai memikirkan kembali hakekat software dan lisensinya, karena sekarang software tidak lagi menjadi barang jualan, tetapi lebih menjadi alat untuk mendapatkan nilai yang lebih tinggi, yaitu layanan internet. Maka mulailah didengung-dengunkan Open Source agar orang, perusahaan dan siapapun yang berminat menggunakan software dengan lisensi tertentu untuk membuat layanan dengan nilai yang sangat tinggi di atas software tadi. Google, facebook dan nyaris sebagian besar perusahaan internet sekarang ini menggunakan Linux di server-server mereka. Bayangkan jika OS dengan lisensi open source seperti linux tidak tersedia? layanan seperti google search dan facebook yang beegiitu bagusnya dan memerlukan banyak sekali resource tidak akan mungkin bisa dibuat semurah ini kalau OS dan softwarenya harus berbayar.
Kita balik lagi ke personal dari Linus Torvalds dan kejeniusanya. Linux adalah monolitic software, dimana semua proses dijalankan dari satu single file. Berbeda dengan kepercayaan ahli kernel OS waktu itu, model paling ideal untuk sebuah kernel adalah model node-node kecil yang berjalan secara independen dan bertukar data dengan sistem messaging. Sistem ini dalam prakteknya sangat susah untuk diperbaiki kalau ada masalah, karena masalah bisa saja muncul dari sekenario yang sangat susah untuk direkonstruksi, dimana setiap node punya keadaan yang berbeda-beda dan pesan yang dikirim antar node juga bisa sangat berbeda. Sistem monolitic yang digunakan Linus dalam Linux pada awalnya dikritik habis-habisan oleh dosen pembimbingnya, dan disarankan untuk segera diakhiri saja karena membuang-buang waktu. Tetapi linus bergeming, sistemnya jauh lebih stabil dan tahan terhadap berbagai macam kesalahan yang muncul karena aplikasi maupun hardware tidak berlaku selayaknya.
Hiruk pikuk Linux sedikit mereda beberapa tahun terakhir ini, ditandai dengan evangelist linux yang tidak segencar misalnya 10 tahun lalu, dikarenakan linux sudah menjadi semacam komoditas yang semua orang sudah tahu kehandalanya sehingga tidak lagi diperlukan banyak sekali edukasi. Hiruk pikuk berpindah ke cara bagaimana menggunakan linux sebagai alat untuk menghasilkan produk atau layanan yang lebih menyentuk pengguna secara langsung. Misalnya membuat ecomerce atau layanan internet yang ciamik. Tetapi linus tidak berhenti berkarya, satu produk ditelurkanya setelah sebal dengan software Source Code Management system yang ada, seperti CVS atau SVN. Git lahir dari tanganya yang jenius, dengan sangat yakin linus bilang bahwa dia bisa membuat SCM yang jauh lebih bagus dari semua yang ada di luar sana dalam waktu 2 minggu!, dan ternyata berhasil.
Dalam satu sisi Git merevolusi bagaimana seorang programmer menggunakan kodenya untuk berinteraksi dengan orang lain, hal ini dimungkinkan dengan adanya layanan github.com yang membuat coding menjadi kegiatan sosial layaknya seseorang membagi status wallnya kepada orang lain. Satu pengguna bisa mengikuti pengguna yang lain, berteman dan mengambil proyeknya untuk dibuat branch. Sekarang coding tidak lagi menjadi kegiatan personal, tetapi sudah bisa menjadi kegiatan sosial. Seseorang tidak lagi merasa terpencil dan tidak ada keterikatan dengan kode yang dibikinya, dengan github, kode bisa menjadi pengikat antara seorang programmer dan kode yang ditulisnya.
Nah segitu dulu cerita saya tentang Linus Torvalds, semoga memberi inspirasi kepada kita, bahwa sesuatu hal kecil yang kita mulai dengan sungguh-sungguh bisa mempunyai dampak yang begitu serius kepada sekeliling kita. Jangan ragu-ragu memulai, jangan merasa sia-sia, lakukan, bagi dan kamu akan sadar bahwa apapun yang kita bagi, selama itu adalah pengetahuan, pada satu titik akan menjadi inspirasi bagi orang lain.
Development Environment dan Methodology di Industri Perbankan
8Hari ini di milis it-project-indonesia@googlegroups.com ada Joshua Partogi dari Scrum Indonesia yang kenalan, kemudian terjadi diskusi yang cukup seru tentang Scrum Vs Waterfall. Nah di salah satu thread ada yang menanyakan gimana sih development di banking kepada saya
> Buat Ifnu, bisa ceritain nu development di banking kaya gimana dan
> kenapa waterfall itu yang terbaik?
Nah karena jawaban saya panjang lebar, sepertinya cocok diletakkan di dalam blog agar lebih banyak yang bisa baca. Hmm, oke gw ceritain agak panjang yah tentang topik ini.
(more…)
Performance Tuning Guidelines
0Udah lama sekali ga ngeblog yah, ga kerasa udah beberapa bulan ga ada entry. Mungkin karena ramadan ini badan jadi terasa lebih seger, atau karena ramadhan bisa pulang tenggo dan ga terlalu cape sesampainya di rumah? yang manapun ga masalah deh, asal ngeblognya jalan lagi.
Barusan saya posting di JUG tentang performance tuning guidlines, nah karena pentingnya topik ini saya pikir lebih baik diletakkan di blog untuk pengingat kalau suatu saat perlu.
Blog entry ini akan saya terus edit untuk agar lebih lengkap dan ada contoh-contoh kongkritnya, sekarang cukup kerangka umumnya dulu yah.
(more…)
Indo Java Podcast #14 : Data warehouse, data mining dan bussiness intelligent bareng Ferish Thia
0Hi pendengarnya indo java podcast. Lagi-lagi kita perlu waktu 3 bulan untuk menerbitkan episode baru
, setelah awal tahun kemaren saya yang sibuk, gantian 3 bulan terakhir Dito yang sibuk, jadi mohon maaf atas ketidaklancaran penerbitan episode Indo Java Podcast. Kali ini kita kedatangan tamu, Feris Thia, dari PHI-Integration. Kita ngomongin Data Warehouse, Data Mining dan Bussiness Intelligent dari awal sampai akhir bahkan sampai beberapa topik diluar teknis seperti lowongan kerja, karir di area ini hingga pengalaman implementasi PHI di berbagai perusahaan.
Kita mulai membahas tentang apa itu Data Warehouse dan dua mahzab yaitu : Ralph Kimball dan Bill Inmon (http://en.wikipedia.org/wiki/Data_warehouse). Kemudian dilanjutkan dengan membahas lebih lanjut teori aliran Kimballites, di dalamnya ada teori tentang snowflake schema dan star schema. Saya sendiri cukup mendapat banyak penerangan tentang istilah-istilah penting dalam DW, misalnya apa itu fact table dan dimension table yang sebenernya adalah nama lain dari master table dan transaction table di OLTP.
Setelah puas membahas DW, kita lanjut ke tema yang lebih seru, yaitu Data Mining dan Bussiness Intelligent. Nah di sini ada istilah yang disebut dengan active reporting, dimana report yang ditampilkan kepada pengguna sudah mengandung “kecerdasan”, bukan lagi pasif reporting yang cuma menampilkan data dalam bentuk table, diagram atau malah cuma angka-angka gak bermakna. Singkatnya, Data Mining dan Bussiness Intelligent itu membuat data bisa ngomong dengan bahasa manusia
. Data Mining dan Bussiness Intelligent bisa membuat management melihat keadaan perusahaan dengan lebih jelas dan dengan persepsi yang sama, kalau cuma data pasif yang disajikan, maka setiap orang dalam managerial bisa punya asumsi yang berbeda tentang keadaan perusahaan, ada yang bilang oh penjualan kita OK nih, nah ini parameter OK dilihat dari mana? Bussiness Intelligent bisa menterjemahkan data yang dikumpulkan oleh Data warehouse menjadi laporan-laporan aktif seperti ini.
#14 : http://indo-java-podcast.googlecode.com/files/indo-java-podcast 14.mp3
- Data Warehouse
– Ralph Kimball dan Bill Inmon
– Snowflake schema dan Star schema
– Dimension dan Fact schema
– Slowly changing dimension
- Bussiness Intelligent dan Data Mining
Buku Java Desktop
49Akhirnya setelah 10 bulan menulis, mengedit dan menyiapkan website, buku Java Desktop bisa anda unduh dengan gratis dari URL di bawah ini :
http://tanyajava.com/download/javadesktop
Buku ini berisi intisari pengetahuan dasar bahasa pemrograman Java hingga pengetahuan tentang bagaimana membuat aplikasi dekstop menggunakan Java. Intisari tersebut saya kumpulkan selama 3 tahun terakhir. Buku ini terdiri dari 8 bab, antara lain :
Bab 1 kita akan membahas tentang Java Fundamental, bab ini dibagi menjadi dua bagian besar: belajar sintaks java dan belajar OOP menggunakan java. Di dalam bab ini juga dibahas tentang java 5 language enhancement yang mencakup beberapa perubahan fundamental di dalam sintaks java. Bab ini cukup panjang dan mangambil porsi hingga 1/3 dari buku ini.
Bab 2 membahas tentang tools yang kita gunakan, NetBeans. Bagaimana membuat project, menambahkan library, menambahkan library ke pallete, menggunakan editor dan debugger, dan seterusnya. Penguasaan akan IDE diperlukan untuk menaikkan produktiftas, tanpa penguasaan IDE yang baik, produktiftas tinggi susah untuk dicapai.
Bab 3 membahas tentang koneksi ke database menggunakan JDBC. Di bab ini mulai dibahas tentang design-pattern dalam membuat kode. DAO dan Service adalah design-pattern sangat penting dalam akses database. Dilanjutkan dengan membahas ORM, Hibernate dan Spring untuk akses data. Dengan menggunakan Hibernate, produktiftas programmer menjadi meningkat drastis dibanding menggunakan JDBC murni. Spring digunakan sebagai “lem” untuk merekatkan berbagai macam komponen aplikasi, termasuk nanti digunakan sebagai tulang punggung arsitektur three tier
Bab 4 membahas tentang Swing dan komponen-komponenya. Dibahas juga pattern MVC yang digunakan komponen Swing dalam mengolah dan menampilkan data.
Bab 5 membahas bagaimana membuat aplikasi POS. Dimulai dari membuat halaman master, dilanjutkan dengan membuat halaman pembelian dan penjualan.
Bab 6 membahas bagaimana membuat report dengan JasperReport. Di dalamnya termasuk juga teknik mengcompile report yang dibuat secara otomatis menggunakan ant script bawaan dari NetBeans.
Bab 7 membahas bagaimana mengimplentasikan arsitektur three tier menggunakan Spring Remoting.
Bab 8 merupakan bab terakhir yang membahas bagaimana membuat installer menggunakan IzPack, sehingga aplikasi mudah didistribusikan dengan adanya fle installer.
Menggunakan Hibernate Validator di Spring MVC 3
0Form Validation adalah topik yang cukup hangat, feature ini sangat penting diimplementasikan di dalam aplikasi web, tanpa ada form validation yang baik, aplikasi web kita bisa berantakan, tidak hanya dari sisi datanya tapi dari sisi keamanan juga. Hacker bisa menggunakan celah ini untuk menginput data yang bisa membuat error aplikasi, misalnya mengisi kolom dengan panjang melebihi kolom database dan seterusnya.
Form validation juga merupakan topik hangat dari sisi seberapa elegan form validation ini bisa dilaksanakan. Kalau tanpa framework pun form validation bisa dengan gampang dilakukan, tinggal gunakan request.getAttribute kemudian isinya divalidasi secara manual. Validasi secara manual ini tidak bersifat “deklaratif” artinya kita tidak bisa melihat aturan validasi dengan gampang, harus dilihat kode validasi.
Hibernate validation menawarkan form validation yang sangat elegan dengan memanfaatkan annotation.
(more…)
Indo Java Podcast 13 : Migrasi EJB2.0 ke EJB3.0, Spring Integration di EJB3.0, Buku Java Desktop
3Hai, pendengarnya indo java podcast. Udah 3 bulan berlalu tanpa episode baru, banyak hal terjadi dalam 3 bulan kemaren, terutama karena saya ganti status, jadi waktu weekend kebanyakan pulang ke indonesia untuk mempersiapkan acaranya. Nah akhirnya minggu kemaren ada waktu luang lagi untuk rekaman indo java podcast episode 13.
Episode kali ini kita (saya dan dito) membahas tentang kerjaanya dito di kantor, yaitu migrasi dari EJB2 ke EJB3 dan bagaimana mengintegrasikan EJB3 menggunakan Spring. Kesimpulanya, Spring bisa digunakan bersama-sama dengan EJB3 maupun EJB2 dengan sangat baik, Spring mempunyai peran cukup signifikan untuk mengurangi kode untuk menjembatani antara MVC framework (Struts dalam hal ini) dengan backedn (EJB3).
Bagian berikutnya kita membahas buku saya yang segera terbit, judul bukunya “Java Desktop : Membuat Aplikasi POS menggunakan Swing, Spring dan Hibernate”. Buku ini saya tulis di sela-sela kesibukan sehari-hari, makanya waktu penulisanya menjadi cukup panjang, 8 bulan. Buku ini sebenernya adalah penjelasan dari project-template yang saya buat, jadi nantinya setiap template yang saya buat di project-template.googlecode.com ada buku pendampingnya. Tentu saja ini bukan perkara instant, karena menulis buku itu ternyata memerlukan waktu jauh lebih lama daripada menulis kode.
#13 : http://indo-java-podcast.googlecode.com/files/indo-java-podcast%2313.mp3
– Migrasi EJB2.0 ke EJB3.0
– Integrasi Spring dan EJB3.0
– Buku Java Desktop
Happy Podcasting
Menjalankan Debug di NetBeans dengan Maven Jetty Plugin
0Maven sudah menjadi favorit saya untuk development aplikasi Java Web, Jetty plugin saya gunakan untuk menjalankan aplikasi. Jetty sangat ringan dan cepat sekali loadingnya, development cycle menjadi sangat cepat. Nah masalahnya saya juga perlu mendebug aplikasi yang dijalankan dengan Maven Jetty Plugin.
Ternyata caranya sangat gampang, kita hanya perlu mengeset Environment Variabel MAVEN_OPTS dengan debug parameter. Kalau di mac/linux caranya dengan menggunakan perintah export :
$ export MAVEN_OPTS=”-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000″
Kemudian jalankan maven jetty plugin
$ mvn jetty:run
Setelah itu di NetBeans jalankan menu Debug > Attach Debugger … isikan informasi berikut ini di popup yang tampil :

Selamat mencoba
Tuning Performance Aplikasi dengan Hibernate
1Di milis Netbeans-indonesia ada yang bertanya bagaimana caranya mentuning performance aplikasi, terutama database kalau menggunakan Hibernate sebagai backend. Proses tuning dengan menambahkan index di database dan melakukan cache untuk data statis seperti master data dan data transaksi yang sering dibaca akan menaikkan performance aplikasi hingga beberapa kali lebih cepat. Dari komponen-komponen aplikasi, database dan koneksi antara database dan aplikasi selalu menjadi bottleneck performance aplikasi, sehingga usaha untuk mempercepat query dengan menambahkan index dan mengurangi hit ke database dengan melakukan caching akan sangat signifikan hasil tuningnya.
Salah satu episode dari software engineering radio (se-radio.net eposode #95) membahas bagaimana guardian.co.uk mengubah arsitektur lama yang status (html) menjadi dinamis menggunakan Hibernate sebagai beck-end. Dengan hit puluhan juta kali setiap harinya, hibernate harus di-cache agar hit ke database menjadi minimal, kalau tidak dicache RDBMS apapun pasti kewalahan melayani segitu besarnya request.
SOP dan Pembagian Kerja di Software House
5Beberapa hari ini ada diskusi seru di milis JUG-indonesia, ada salah satu member JUG yang bertanya bagaimana membuat software house dan melakukan pembagian kerja. Dari satu posting berkembang menjadi panjang lebar sampai puluhan email dalam thread ini. Saya tergelitik untuk merangkup thread tersebut menjadi satu sesi QA agar lebih terurut informasinya.
Nah silahkan menyimak serunya thread ini….
Komentar Terbaru