Sunday, November 8, 2009

Indonesia Bersatu di Bundaran HI

Minggu pagi 8 November 2009, aku sampai di stasiun Rawa Buntu jam 7 lebih, sebetulnya janjian sama Yanu teman sekantorku jam setengah tujuh di stasiun Serpong, tapi aku bangun kesiangan, hari-hari terakhir ini aku susah tidur, bisa tidurnya pas larut malam, solat subuh juga siangan, aku bilang ke Yanu aku ke stasiun Rawa Buntu saja karena lebih dekat, ngejar kereta ayam yang jam 7 pagi, nanti naik gerbong yang paling belakang ketemu disana. Rute rel kereta melintas dari stasiun Serpong ke Jakarta melewati stasiun rawa Buntu, kecuali kereta ekspres pasti berhenti dulu di stasiun Rawa Buntu, dari rumah ke stasiun Serpong kurang lebih 6 km, sedangkan ke stasiun Serpong 2 km, oleh karena itu aku parkir motorku di stasiun yg terdekat.

Ternyata sampai di stasiun sudah terlambat, Yanu sms aku kalo keretanya sudah berangkat, dia duduk di gerbong terakhir, lantas aku balas smsnya bilang maaf karena terlambat, dan beli tiket kereta selanjutnya jam setengah delapan kata penjual tiketnya. Aku beli tiket kereta Ciujung, ber-AC, Jakarta - Tanah Abang, 4500, kalo kereta ayam pemberhentian terakhir di Pasar Senen, 1500an, aku pernah naik kereta ayam waktu ke user karena ngejar jam pagi, turun di stasiun kemayoran. Aku dikasih tahu Yanu kalo nanti turun di stasiun Palmerah, sebelum stasiun Tanah Abang setelah stasiun Kebayoran, kalo naik kereta Ciujung lebih nyaman karena tidak perlu desak2an dan setiap keretanya berhenti aku selalu tahu nama stasiunnya, kalo naik kereta ayam selain was was karena takut dirampok, juga kesulitan sedang berhenti distasiun apa, karena desak2an dan tidak bisa melihat jelas papan nama stasiunnya.

Belum setengah delapan, keretaku sudah datang, aku naik di gerbong tengah pas ketika kereta berhenti di tempat aku menunggu, aku berhenti di stasiun Palmerah, ketemu Yanu, sepertinya dia kira aku naik di gerbong belakang soalnya dia datang menunggu dari arah gerbong yang belakang, kami lantas naik bus kota, jurusan Semanggi, aku lupa nama busnya, tapi kami jalan dulu agak jauh, tidak keluar di pintu stasiun tapi jalan menyusuri rel terlebih dulu, sampai di jalan raya pun masih lewat tangga setapak ke jalan raya yang diatas, Yanu hafal jalan-jalan itu soalnya dia di user di daerah Karet sekitar Semanggi. Di perjalanan bilang kalau angkatan 99 banyak aktivisnya, dia juga angaktan 99 ambil poltek kapal terus ke Elektro, abis itu ke Poltek Elka. Waktu kuliah dulu dia satu kos sama Budi Nugroho, sama Arie Shiddiq, aku bilang ke dia dulu Budi jadi Senator, sekarang dosen di UPN sudah punya anak satu, sedangkan Arie jadi dosen di TC, selain itu dulu anak TC yg mungkin Yanu kenal ada Arief Kemalsyah yang jadi kahima dua kali sama Rahmat Hidayat.

Kami naik bus kota turun di Semanggi, habis itu naik busway turun di bundaran HI, awalnya info yang aku dapat dari milis jurusan acaranya di Monas, aku dikasih tahu adik kelasku kalo ada acara demo Minggu pagi jam 8 di Monas, temannya dia ikut dan bilang ke dia untuk mengajak massa sebanyak banyaknya, tapi pas aku ketemu Yanu Sabtu kemarin dia bilang acaranya di HI, mungkin juga ada di Monas, soalnya bakal ada long march, awalnya dia bilang jam tujuh, dan rencananya berangkat naik kereta jam setengah enam, tapi aku bilang terlalu pagi, naik kereta yang jam tujuh saja, sampai disana jam delapanan, dan ternyata diamini sama Yanu soalnya dia lihat berita di Metro TV acaranya jam delapan tapi di HI bukan di Monas. Aku benar-benar ketinggalan berita, kerjaanku saat ini gila2an, selalu pulang larut berangkat pagi, yang lebih bikin capek tempatnya jauh di Kemayoran, dua jam perjalanan kalo pagi hari, sampai rumah aku biasanya sudah kecapekan langsung istirahat, aku ga begitu ngerti masalah persoalan KPK ini, hanya saja aku tertarik banget untuk ikut demo ini soalnya walau mengikuti sedikit beritanya aku merasa prihatin untuk pihak Bibit-Candra.

Waktu di busway, aku lihat sudah mulai banyak orang-orang berkumpul di sekitar air mancur bundaran HI, sebagian pake slayer "Tuntaskan Korupsi" atau kalimat sejenis, kain berukuran kira2 50cm*7cm yang dipotong2 pake gunting, ada yang berwarna putih, hijau tua, atau hitam, ada yang diikatkan di kepala ada juga yang diikatkan di lengan, disitu juga aku lihat ada panggung seperti konser musik kecil2an. Busway berhenti di halte bundaran HI, halte itu berada agak jauh letaknya setelah bundaran HI, waktu jalan kaki ke bundaran HI kami melewati Wisma Nusantara gedungnya TVOne, di depan ada juga panggung sepertinya sedang ada acara musik untuk tv, waktu itu sedang menyanyi group musik yang aku ga tahu namanya tapi lagunya sering dengar di radio "Aku tertipu, Aku terjebak, Aku terperangkap, Dalam gairahmu...". Aku sering dengar lagu itu soalnya tiap hari aku mendengarkan radio waktu dalam perjalanan ke user di Kemayoran.

Waktu aku sampai bundaran HI, sudah ada ada Adi Massardi yang tengah membacakan puisinya "Negeri Para Bedebah", aku tahu puisi itu dari milis, sepertinya acaranya sudah mulai dari tadi tapi orang2 masih tidak begitu banyak yang datang, aku sama Yanu bisa menerobos massa di depan dan dapat tempat yang cukup jelas kurang lebih sepuluh meteran dari panggung. Setelah membacakan puisinya gantian MC yang mengambil acara, MC-nya ada dua, Indra Bekti sama Sandrina Malakiano, dua-duanya pake kacamata hitam, Sandrina memakai baju hitam berjilbab, Indra pake topi yang khas dia pakai. Habis itu mereka panggil group band dari Yogyakarta, "Kill The DJ", samar aku pernah dengar nama band itu, mc-nya bilang kalo di internet pasti banyak denger lagu mereka, lagunya rap, syair awalnya "Ono cicak nguntal boyo, seragam cokelat gowo godo", dst... setelah menyanyi vokalisnya diminta menerjemahkan artinya, dia bilang artinya "Ada cicak melahap buaya hidup2 ada polisi bawa pentungan".

Setelah itu mereka panggil tiga orang untuk berpidato, ada Effendi Ghozali, bapak yang aku lupa namanya, sama Eeep Saefullah suami Sandrina, Pak Effendi Ghozali baca puisi awalnya berima i-i-i-i, aku lupa puisinya seperti apa, tapi ada kata2 Republik Mimpi, acara tv yang dia bawakan, sama "hihihi" bait terakhir yang dia bawakan seingatku seperti itu, selanjutnya Bapak yang kedua berorasi, aku lupa detilnya tapi mungkin dia bilang kalo jangan benci institusinya, tapi benci korupsinya, jangan benci kepolisian, DPR, apalagi KPK, tapi orang2 korup didalamnya, sedangkan bapak Eep Saefullah kasih yel yel baru, jika dia teriak "Cicak" kami jawab "Hidup", dia teriak "Koruptor" kami jawab "Mati", dan jika dia teriak "Presiden", kami jawab "Bangun", yel yel sebelumnya jika MC Indra/Sandrina tanya "Siapa Cicak", maka kami jawab "Saya", habis itu serentak kita bilang "Cinta Indonesia Anti Korupsi" aku lupa persisnya tapi kira2 seperti itu.

Setelah itu berurut-urut ada group musik KCP, atau KJP ya, awalnya aku kira para pemain film KCB, ternyata grup band dari gang pegangsaan sama ustadz siapa gitu dari gang pegangsaan yang juga menyanyi, terus ada group band "Efek Rumah Kaca". Mereka nyanyi lagu "Mosi Tidak Percaya" "Semua Bisa Jadi Presiden", atau apa gt aku lupa judul tapi lagunya enak2. Setelah itu ada Oppie yang menyanyikan lagu "Peter Pan", sama "Andai Aku Jadi Orang Kaya", Oppie ganti liriknya yg aslinya "Andai Aku jadi Orang kaya, Ga usah pake kerja" diganti dengan "Andai kita jadi orang kaya, Ga usah pake korupsi", habis itu ada Happy Salma yang membacakan puisi kemudian diiringi dengan Kill The DJ, Happy memakai baju hitam barangkali karena siang yang panas. Terakhir sepertinya penampilan Slank, sama Once juga datang tapi sepertinya ga nyanyi, aku ga tahu soalnya jam waktu itu 11an, perutku sakit, ternyata udah selesai, aku sama Yanu cari toilet, kami ke mall Grand Indonesia untuk buang air, fisikku benar2 lemah, kepalaku pusing selain emang benar2 panas, pasti ini gara2 kerja yang pulang larut terus.

Di tengah-tengah acara, Indra dan Sandrina juga mengundang Erry Eriansyah mantan ketua KPK kalo ga salah, yang meminta kepolisian untuk menahan dia jika menahan Bibit-Candra, Bpk Usman siapa gitu creator dukungan satu juta facebookers untuk Bibit-Chandra, sama ketua komnas HAM pengganti Munir untuk berorasi, ditengah-tengah pidato salah satu mereka ada yang membawakan foto besar Anggodo memakai seragam polisi, ada juga yang membawa boneka buaya berwarna biru.

Selain itu Indra dan Sandrina juga mengundang penonton keatas panggung, mereka panggil lima orang anak muda untuk teriak "Cicak", ada juga minta dua orang untuk berorasi, ada Charles dari Priuk, ada juga ibu rumah tangga, waktu ibu itu berorasi keliru apa gitu pokoknya menghujat KPK, sama Sandrina dikasih tahu kalo semua orang yang ada disitu mendukung pemberantasan korupsi dan mendukung sepenuhnya KPK, keseumua penonton itu dihadiahi kaos atas partisipasinya. Indra dan Sandrina juga mengundang dua orang mahasiswa yang melakukan aksi mogok makan, satu cowok, satu cewek, yang cewek mengunci mulutnya sama plester, yang cowok menaruh plesternya di kaosnya, ketika ditanyai sudah berapa lama melakukan aksi itu, dia bilang dua hari mereka mogok amkan, kemudian dia berteriak "Hapus Bersih Korupsi di Indonesia".

Aksi itu berakhir sebelum jam sebelas, memang cuacanya panas banget, kalaupun sampai sore aku sama yanu bakal pulang duluan ga ikut sampai akhir, kami pun pulang naik buswa turun Ratu Plaza kemudian menunggu transBsd yang datang jam 12an, sebelum ke halte busway kami beli es cendol dipinggir jalan, sambil melihat ada pembakaran boneka buaya di sebelah bundaran HI berseberangan dengan panggung.

Monday, October 26, 2009

Searching Menggunakan Limit Dengan Hibernate



Post ini melanjutkan catatan sebelumnya tentang membuat google wannabe paging.

Terdapat banyak cara untuk mendapatkan qury limit di hibernate, terdapat HQL (Hibernate Query Language), Criterion, atau native sql. Saya akan memberi tahu bagaimana caranya dengan menggunakan HQL. Bagi saya HQL itu sederhananya SQL menggunakan POJO (Plain Old Java Objetct) hibernate, Object yang merepresentaiskan tabel2. Misalnya jika tabel dengan nama LOG_ACIVITY maka POJO bisa berupa class dengan nama LogActivity. Jika SQL seperti : "SELECT * FROM LOG_ACTIVITY", maka HQL-nya cukup berupa: "FROM LogActivity", dan HQL memiliki banyak fungsi.

Dalam catatan ini saya tidak hanya memberitahu bagaimana mendapatkan record2 mulai 1 sampai 100, tapi juga pencarian yang menggunakan parameter, seperti mendapatkan record mulai kemarin sampai sekarang untuk seratus record yang pertama.
1. Dapatkan kriteria pencarian. Nilai defaultnya '*'. Misalnya field username, jika ada nilai dari input seperti "imam" maka username = "imam", selain itu username="*"
2. Hitung total record berdasarkan kriteria tadi
3. Miliki konstanta berapa record yang ditampilkan di tiap halaman, misalnya 10, dan jumlah record itu juga bisa disimpan dalam parameter.
4. Saya bagi total record dengan konstanta tadi sehingga saya dapatkan total halaman buat paging.
Saya lakukan query dengan sintaks yang samaketika saya mencari jumlah total record (sintaks itu saya jadikan menjadi method tersendiri), namun kali ini untuk mendapatkan record bukan jumlah record.
6. Saya lempar seluruh variable (page, totalPages, listPages, perPage, totRecord, recordList, qName, qDate, etc etc), dimana
- page = page yang diminta, misalnya page 13
- totalPage misalnya 5
- listPage misalnya 5
- perPage, berapa record yang ditampilkan di tiap page
- totRecord, karena akan dimunculkan di aplikasi
- recordList
- qName, qDate, dan variable lain sebagai parameter pencarian yang disimpan dalam session.

Berikut code snippednya, yang pertama metgod untuk mendapatkan jumlah record, yang kedua untuk mendapatkan record yang sebenarnya, sedangkan buildQueryString adalah methodd yang menghasilkan sintaks Hql dengan parameter criteria=nam dari field2 pencarian seperti username, dateFrom, dateTo, dan parameter kedua adalah nilai question dari field2 pencarian, saya set "*" jika null atau empty.

public Long getLogActivitiesSearchingPagingCount(String criteria, String
question) {
String queryString = "select count(*) " + buildQueryString(criteria, question);
Long total = (Long) getSession().createQuery(queryString).uniqueResult();

return total;
}

public List getLogActivitiesSearchingPaging(int start, int length, String
criteria, String question) {
List logActivities = getSession().createQuery(buildQueryString(criteria, question))
.setFirstResult(start)
.setMaxResults(length).list();
return logActivities;
}

Sunday, October 25, 2009

Cerita SE 2006

Teman2 ini ceritaku pas SE 2006 di Graha Wisata Kuningan.

Selasa, tgl 20 Oktober kemarin aku masih di user, Wom Finance, di MGK (Mega
Glodok Kemayoran), disana lagi UAT, aku ijin pulang sore, biasanya pulang malem,
tapi pas UAT gini ga terlalu malem paling jam 9 sudah pulang, tapi sampe BSD
bisa jam 10 atau jam 11an. Kl pulang biasanya barengan sama rekan2 kantor,
kadang2 travel kantor, taxi, atau ada rekan yg bawa mobil bareng dia terus di
reimburse.

Aku pulang jam setengah 6an, sebetulnya ijin jam 5an tp ternyata tiba2 ada
kerjaan jadi pulang jam segitu, aku naik bajaj, soalnya ga tau kalo ke halte
busway naik angkot apa, kl naik ojek kebetulan gada, abis itu aku turun di halte
busway pasar baru. Disana aku tanya2 kl mau ke kuningan lewat mana, petugasnya
bilang turun halte Matraman, abis itu ke Dukuh Atas. Ketika menuju ke Matraman
aku bawannnya was-was aja takut2 kl nyasar, soalnya lewat Salemba UI, dsb, yg
aku lihat Salemba itu di Jakarta Pusat, padahal Kuningan di Selatan. Tapi aku
bawa santai aja kalopun kesasar ya tinggal pulang. Tapi akhirnya sampe juga di
Dukuh Atas.

Sampe dukuh atas aku inget soalnya dulu juga lewat rute yang sama, tapi sekarang
sudah beda, seingatku dulu kl udah sampe dukuh atas aku jalan panjang dan antri
panjang di jalan koridor gt, sekarang ga lagi aku ga perlu naik tangga terus
antri gt soalnya pintu buswaynya sekarang ada di bawah, bus yang ke Ragunan ada
di pintu paling pojok belakang. Sampe di bus aku masih keliru tak kirain ada
halte Pasar Festival deket halte GOR Soemantri, ternyata ga ada jadinya
kelewatan, aku turun di Mampang terus naik balik busway turun GOR Soemantri, aku
sampe tempat kira2 setengah delapanan, aku ga solat Maghrib.

Di pintu masuk aku ketemu sama Wahib, mas Wongky, Bawenang, Galih01, sama yg
lain, aku ngobrol sama Bawenang, dia bilang ntar pulangnya bareng aja, soalnya
kaya tahun kemarin aku pulangnya bareng Bawenang, aku bilang oke tapi nanti kl
eli dateng ntar pulangnya bertigaan. Habis itu aku masuk ruangan, didalam semua
pada pake batik, terus aku duduk deket sama dua anak 2006, ngobrol2, mereka
tanya angaktan berapa kerja dimana, aku terus bilang ke mereka kl temen
angkatanku yg jadi dosen tuh ada Anny, Siddiq, sama dulu Medi, trus temen yg
jadi dosen SI ada Rully. Mereka bilang kl adiknya Anny itu angkatan 2006 juga,
ikut SE juga, abis itu kl Siddiq sekarang sudah pulang ga di Australia lagi,
abis itu dulu sempat diajar grafika sama Medi. Mereka bilang kl Medi ikut
suaminya di Jakarta ga ngajar lagi, aku bilang ke mereka kl sekarang Medi masih
ngajar tapi di Binus.

Habis itu semua dipersilahkan duduk di depan, aku cari ruang yang kosong, duduk
di deret ketiga di belakangnya wahib, Wahib duduk dekat mas Lucky Esa, deret
ketiga masih kosong, sedangkan sebelah kiriku banyak anak2 2002 dsb, aku ga gt
apal. Kursi2 di susun mirip ruang kuliah, ada 4 kolom masing2 kolom ada 6-7
barisan, berbentuk U ditengah depannya ada meja panjang buat nara sumber. Aku
duduk di kolom sebelah kanan yg menghadap meja panjang tadi. Habis itu ada mas
Wongky, mas Deku, sama mas Abi duduk di belakangku, aku salaman, bilang minta
maaf sekalian lebaran, habis itu eli datang duduk sebelah mas Aby.

Habis itu panitia mempersilahkan beberapa orang untuk menjadi nara sumber, ada
mas Lucky Esa 85, Aris Kumara 2002, mas Wongky 98 sama dosen cewe angkatan 2004.
Habis itu ada 2 anak 2006 yang bertanya, salah satunya dia tanya tentang
pentingnya ilmu berkomunikasi di dunia kerja.

Mas Lucky cerita kalo dia angkatan pertama, kuliah 8 tahun, habis lulus sempat
jobless lama di surabaya, abis itu ditawari sama orang BP untuk bekerja di BP
tapi di pedalaman kalimantan, dia di BP selama 8 tahun habis itu ketrima di
Microsoft dan bekerja di sana selama 8 tahun, dia putuskan untuk keluar, ambil
S2 dan jadi pembicara di banyak tempat, dia cerita Microsoft sendiri minta dia
balik tapi dia tidak mau, waktu mau pulang dia juga cerita kalo ada orang google
dari Amerika datang ke dia buat konsultasi, dia juga pernah diajak ke kantornya
google di luar negeri, dia juga berencana mau ambil S3.

Aris bercerita kalo dia tidak sempat bertemu sama angkatan 2006 karena sudah
lulus, dia juga bercerita enaknya kalo kerja di IBM, kerjaan bisa dikerjakan di
rumah asal tanggung jawab, jam kerja juga fleksibel, dia cerita kalo anak TC yg
di IBM ada Amiril Muknimin2002, Roy2002, Eddie Tjandra, mbak Dewi, sama
Januar00. Dia cerita kerjaan dia banyak presentasi, dia juga cerita kalo harus
percaya diri, dia bilang waktu di training di Hong Kong, bertemu sama anak2 IBM
dari negara lain, dia bilang yg dari India yang pinter2 malah tidak lulus
trainingnya. Dia bilang IBM mau ada rekruitmen buat karyawan kaya dia dia minta
anak2 2006 mendaftar karena IBM punya list universitas2 yg sudah diakui dan ITS
ada didalamnya.

Habis itu ada mas Jayus atau siapa lupa ku namanya yg duduk di belakang yg
pernah kerja di IBM selama 7 tahun, dia angkatan 85 temennya mas Lucky, dia
dateng sama istrinya mbak Sri yg 5 tahun dibawahnya berarti angkatan 90 sama
anak putrinya, dia dipersilahkan bicara sama mas Lucky, dia cerita kl IBM tuh
perusahaan gila karena mau terima karyawan kaya dia, dia juga kuliah 8 tahun,
waktu interview dia ditanyain sama bosnya mau ngga dateng tanggal sekian buat
tes atau apa gt, dia bilang ga mau, terus ditanyain lagi kenapa, dia bilang
soalnya mau naik gunung, habis itu dia langsun diterima. Sedangkan mbak Sri
cerita kalo dia itu dalam angkatan yang beruntung karena waktu itu masih sedikit
anak Informatika, tidak seperti sekarang yang banyak sarjana informatika, dia
juga bilang kalo kelebihannya ITs tuh tidak ada ITS connection, kl ITB UI khan
ada, kl di ITS ga ada, dia bliang dia terapkan sama dia sendiri, dia bilang
waktu ngetes karyawan masuk dia tidak peduli apa anak ITS apa bukan, kalo bagus
ya diterima. Dia juga cerita bagi yang pengen kerja di Singapura ada Singapore
Connection, kaena Singapura tuh cari karyawan2 yang berpengalaman, Singapore
Connection tuh memfasilitasi tempat selama 6 bulan untuk cari kerja di
Singapura.

Mas Wongky cerita kalo dia waktu lulus juga daftar di IBM, tapi dia telat buka
email yang ternyata dia dapat email ketrima di IBM, sebelumnya anak2 2006
kunjungan ke Mandiri dan memperkanalkan ulang posisinya di Mandiri, dia cerita
di Mandiri tahun 2005, dia bilang awal dia masuk masih sedikit anak ITS,
sekarang sudah banyak, dia bilang kalo sejak ada pejabat Mandiri yg dari ITS,
aku lupa namanya sekarang Mandiri punya kepercayaan lah sama ITS. Dia juga
bilang tentang pentingnya networking, dia bilang bahwa di Mandii, pas dia ketemu
sama permasalahan banking dia tanya2 sama temen2nya yang kerja di banking untuk
pecahin masalah itu, jadinya dia bisa menyelesaikan masalah itu. Waktu makan
bersama juga mas Wongky cerita kalo anak 99 yg di Mandiri itu ada Liga sama
Firstiar, Roy di Singapura, Maman mau ke Kalimantan.

Habis itu mas Aby unjuk jari, dia malah ngobrol yg paling panjang, suasana malah
jadi kaya Format, dia bilang abis ini mau pulang, ga ikut makan malam, dia
bilang banyak hal, dia bilang di dunia kerja harus PD, belajar menghadapi orang,
dia bilang dulu mana berani pidato seperti itu, dia juga bilang jangan terlalu
idealis, di kantornya saja dia bilang pekerjaannya bukan sebagai software
engineer tapi excel engineer, habis itu dia bilang kalo yg didepan itu khan
success story semua, barangkali perlu juga fail story, dia juga bilang kalo di
bidang dia yaitu mining khan top2nya kalo diterima di Halliburton atau
Schlumberger, padahal khan belum tentu ketrima disana.

Habis itu aku beranikan diri juga untuk bicara, aku bilang ke mereka kalo
karirku tuh jelek, aku kerja di vendor lokal, itu pun sebagai programmer,
sebelumnya juga pindah2 kantor terus, aku juga sebetulnya tidak ada bahan untuk
dibicarakan, tapi melihat mas wongky sama mas aby bicara, maka aku beranikan
untuk bicara, aku bilang ke mereka kalo sebelumnya pikirku mau datang apa ngga,
wis akhirnya aku dateng aja kali aja nanti bisa bertemu sama kakak2 kelas, abis
itu aku bilang ke mereka sebetulnya aku tidak punya kompetensi yg bagus tentang dunia kerja la wong karirku juga jelek, tapi aku ceritakan ke mereka pidato pak mushonif dulu pas pembekalan wisuda kl di dunia kerja tuh yg penting attitude, dia bilang attitude 99%, skill cuma 1%, abis ituaku juga bilang kl mau sukses tuh agamanya harus kuat, terus aku bandingkan pakaiannya anak2 2006 sama anak2 SGU, aku
memuji pakaiannya anak 2006 bagus pake batik, aku bilang jika kuat tidaknya agama seseorang direpresentasikan sama pakaiannya maka aku seneng sama anak2 2006 karena pakaiannya bagus berarti agamanya juga kuat.

Habis itu acara ramah tamah sama makan malam, aku diem tok sepeti biasanya, tapi
aku bawa santai aja, aku semeja sama Eli, mas Wongky sama anak 2004 yang ketrima
di Mandiri. Wahib ada di meja depanku. Habis itu foto bersama terus pulang, aku
pulang bareng eli naik taxi tarif bawah ke stasiun terus naik kereta jam 11
malam, sampe di stasiun Rawa Buntu aku naik ojek ke German Center karena aku
parkir motor disana.

Wednesday, September 30, 2009

Membuat Google Wannabe Paging



Alhamdulillah, aplikasi Tunas Unggul Bangsa sudah live dan bisa diakses lewat internet melalui http://donatur.yayasan-tunas-bangsa.com.

Appfuse menggunakan displaytag untuk menampilkan data2nya per halaman, misalnya 10 record perhalaman, hanya saja displaytag mengambil keseluruhan data meskipun yg ditampilkan hanya 10 record, hal ini dikarenakan displaytag memiliki fasilitas utk sorting per kolom, ataupun download data dalam bentuk excel atau pdf. Hal ini tentu saja tidak hemat resource karena hanya untuk menampilkan 10 record saja, sistim harus query seluruh record.

Oleh karena itu saya menggunakan cara sendiri untuk menampilkan data sesuai kebutuhan, saya hanya melakukan query sebanyak record yang butuh ditampilkan, dan sebagai penanda tampilan record keberapa, diperlukan penanda halaman (paging), misalnya halaman 2 menampilkan record mulai 11 sampai 20, dst. Dalam post ini saya jelaskan bagaimana membuat paging seperti yang ada di google.

Jika Anda googling, akan ada daftar halaman (paging) jika hasil pencariannya banyak, seperti : "Previous 1 2 3 4 5 6 7 8 9 10 Next". Untuk membuatnya sangat mudah dan saya hanya bermain dengan beberapa if-else di jsp dengan beberapa parameter, dan ini bisa diaplikasikan dengan bahasa2 lain.

Aplikasi Tunas Unggul Bangsa menggunakan spring MVC wannabe (karena ternyata tidak benar2 MVC), oleh karena itu bermain dengan banyak controller, dengan kata lain untuk menampilkan suatu halaman maka dubutuhkan controller. Saya butuh tiga parameter untuk controller paging:
1. page, halaman yang direquest user, misalnya 5
2. totalPages, banyak halaman, didapatkan dengan cara query "Select Count" dibagi perPage, dimana perPage adalah total record tiap halaman.
Misalnya total record = 100, perPage = 10 record, maka totalPage = 10.
3. listPages, daftar halaman yang muncul di aplikasi.
Misalnya kita menampilkan 5 halaman, maka yg muncul adalah "3 4 5 6 7"

Sementara itu di jsp-nya algoritmanya sebagai berikut:
1. jika page != 1 maka cetak "Awal", link ke halaman 1
2. cetak semua nilai listPages, jika sama dengan requestedPage maka tidak ada link, selain itu link ke halaman yg sesuai
3. jika totalPages != 0 dan requestedPage != totalPages maka cetak "Akhir", link ke halaman terakhir
Hasil dari contoh kita adalah "Awal 3 4 5 6 7 Akhir"

Tulis semua langkah diatas kedalam file jsp terpisah, misalnya paging.jsp, maka kita hanya tinggal include diatas table record.

Sebagai perbandingan dengan google, google memiliki 20 listPages, jika total halaman yg kita miliki bukan 5 tapi 20, maka kita memiliki listPages yang sama dengan google, dan itu bisa saja diubah karena saya jadikan Constant, hanya saja nantinya malah jelek tampilannya soalnya akan sangat melebar. Perbedaan yg lain adalah google menampilan "Prev" dan "Next", dimana link-nya menuju halaman sebelum atau halaman berikutnya, sedangkan yg kita miliki "Awal" dan "Akhir" menuju halaman awal dan akhir.

Saturday, September 19, 2009

Redirect Default Page Bukan ke Login.jsp



Aplikasi Appfuse menggunakan acegi security, setting defaultnya dia akan selalu minta username untuk bisa membuka halaman2 didalam aplikasi, padahal nantinya aplikasi yang saya buat seharusnya bisa dibuka semua orang, tanpa perlu login terlebih dahulu, meskipun ada halaman2 yang harus login dulu untuk bisa mengaksesnya. Dalam benak saya halaman seperti profile yayasan, daftar nama2 donatur, detil masing2 donatur bisa dilihat semua pengunjung web.

Sebetulnya default page appfuse ketika membuka dari address page misalnya http://localhost:8080/tunasbangsa bukan ke login.jsp tapi ke mainMenu.html, tapi karena setting acegi security meminta username maka aplikasi ketika pertama kali dibuka senantiasa masuk ke halaman login terlebih dahulu.

Settingan yang perlu dirubah adalah berikut:
1. security.xml
Di bean=filterInvocationInterceptor, ubah/hapus semua halaman2 yang disetting hanya bisa dibuka untuk role tertentu, misalnya
/users.html*=admin
Di security.xml sudah didaftarkan role2 user pada aplikasi, kebetulan diaplikasi ini ada 2 role, "admin" dan "user", sebelumnya halaman users.html hanya bisa dibuka untuk pengunjung dengan role=admin saja, jadi selain admin maka tidak halaman tersebut bisa dibuka dg error semacam akses denied, maksudnya misalnya ada pengunjung yg sudah login tapi rolenya selain admin dan meminta halaman itu maka dia tidak bisa mengkases, apalagi apabila belum login, maka aplikasi akan redirect ke halaman login.

Di acegi security ada ROLE_ANONYMOUS role yang didefinisikan acegi untuk pengunjung yang tidak login terlebih dahulu, oleh karena itu, kita bisa menghapus line diatas atau mengubah menjadi:
/users.html*=ROLE_ANONYMOUS

di bean=methodSecurityInterceptor yang mendefinisikan method2 yg bisa diakses, modify/hapus pula line berikut:
org.ikaits.service.UserManager.getUsers=admin
Line itu mengharuskan pengunjung bertipe admin untuk bisa mengakses method getUsers, padahal method itu dipanggil ketika aplikasi meload halaman /users.html

2. action-servlet.xml
Di bean adminUrlMapping, pindahkan statement berikut ke bean urlMapping,
<prop key="/users.html">userController</prop>

Jika security.xml itu menyetting buat acegi security-nya maka action-servlet.xml menyetting request halaman2 yg di minta pengunjung, aplikasi ini menggunakan framework SpringMVC, sehingga halaman2 yg akan diminta diatur menggunakan controller, pendaftaran page apa ke controller apa ditaruh di file ini.

bean adminUrlMapping, mendaftarkan url2 yangg bisa diakses oleh admin, sedangkan urlMapping mendaftarkan url2 yang bisa diakses semua pengunjung, oleh karena itu perlu dipindahkan url /users.html tidak hanya untuk pengunjung dengan role admin.

3. menu.jsp
Melist menu2 yang muncul diaplikasi, yang letaknya ada dibawah header, saya hapus menu yang tidak perlu yaitu:
<menu:displayMenu name="FileUpload"/>
Menu ini untuk menampilkan halaman upload file

4. menu-config.xml
Hapus item berikut, item tersebut sebelumnya menjadi sub-menu dari menu "Administrasi", yang mana menu tersebut hanya diperuntukkan bagi role admin, padahal sekarang bisa dibuka untuk semua pengunjung.
<Item name="ViewUsers" title="menu.admin.users" page="/users.html"/>
Tambahkan
<Menu name="ViewUsers" title="menu.admin.users" page="/users.html" />
Sekarang url users.html menjadi menu utama seperti login, home, dsb, bukan menjadi submenu dari menu Administrasi.

Untuk halaman utama (home), saat ini aplikasi hanya menampilkan logo dan cerita singkat profile yayasan, no rekening sementara dan link untuk mendaftarkan diri sebagai donatur, yang mana setelah mendaftar tidak bisa login terlebih dahulu karena menunggu persetujuan dari admin, logo itu juga masih sementara dibuat dari memodifikasi logo yang dirasa mirip dengan tema yayasan, diambil dari john clements, Untuk situs internet yang menggunakan teknologi yang sama (appfuse) yang dibuat kantor saya adalah:
https://ib.bprks.co.id
http://careers.johnclements.com/

Awalnya mock up pertama kali akan dibuat seperti bprks, menggunakan frame, ada header, footer, leftFrame, rightFrame, dan mainFrame, sehingga untuk operasi aplikasi selanjutnya hanya meload mainFrame saja, tanpa perlu meload ulang gambar header dsb, hanya saja screen aplikasi akan terbatas luas layar saja, mainFrame akan seluas kecil karena footer senantiasa berada dibawah layar, scroll akan berada ditengah2 aplikasi, mock up seperti itu lebih cocok untuk aplikasi database yang kompleks saja tanpa terlalu memperhatikan tampilan, sedangkan aplikasi untuk yayasan ini juga berfungsi sebagai official site jadi perlu UI yang lebih bagus.

Sunday, September 13, 2009

Continuing Appfuse Application Using Eclipse



We already have the application
, it's all inside the folder tunasbangsa, but it's hard if we maintain and updating files scratch, we use eclipse for the IDE, just download eclipse, get the latest version, the Galileo version. after extract in the preferred folder, just run eclipse by double click eclipse.exe.

Adding Project
Add new project -> Java Project -> Create from existing source, point to folder tunasbangsa. At first, we gonna an error sign in our folder in project explorer, something like cannot find ant.jar or junit.jar. To resolve this error. Go to Project -> Properties -> Java Build Path, set the missing jar into the right path, I add New Variable, the button is right of list, I set into my Ant folder "D:/Java/apache-ant-1.7.0", and then I fix the missing jar into "ANT_HOME/lib/ant.jar". There should be no error anymore.


Setting Ant From Eclipse

Window -> Show View -> Ant, and then add buildfiles, point it into tunasbangsa build.xml, collapse the icon and there will be list of command we can call, we need only to double click it, for example for clean or deploy. We call deploy every we made a change into our application.
In appfuse, the default if we deploy, we also drop the database and create new again, so we don't need that again, just comment the value of db-drop and db-load, db-drop is for drop the database, db-load is for loading value from sample-data.xml. Do not comment everything, but comment the value in case of both of that command called by other command.
<target name="db-drop" depends="hibernatedoclet" description="drops database tables">
<!-- <taskdef name="schemaexport", ....

Setting Tomcat From Eclipse
We can debug altough it is a web application by setting tomcat inside eclipse, Window -> Show View -> Servers, add new server -> Tomcat 5.5, set the installation Directory into the appropriate folder, e.x in "C:\apache-tomcat-5.5.28", And then press finish, so in the Server view there will our new tomcat server, double click it. In the server locations, choose "Use Custom Location", if the radio disabled, just create new Tomcat Server, usually it is disabled if we already used the server. And browse Server path into our tomcat folder, and then choose radio Use Tomcat Installation, and save. And also set the Timeouts into 90 seconds, sometimes it needs more than 45 second for starting tomcat via eclipse.

Changing the Template of TunasBangsa
In appfuse we used sitemesh decorator to handle the UI, the styles are in folder "tunasbangsa\web\styles" there are three styles already, the default that we used so far is simplicity, to change the style, modify file web.xml in folder "tunasbangsa\web\WEB-INF\", there are a lot of context parameters, goes to the param-name=csstheme, the value=simplicity, change into "puzzlewithstyle", deploy it, run tomcat, I try to make it simple but not as simple as simplicity.

And also change the name of the application, in the web.xml changse the property of display-name into "Tunas Bangsa" and in the ApplicationResources.properties change "webapp.name=Tunas Bangsa".

I inspired by my campus site, I use the similar header and footer, I save the sites, I modify the header, add "Tunas Bangsa IKA ITS Jakarta Raya" in the right of the header. The template is similar with puzzlewithstyle, there are menu in header, so I copy folder puzzlewithstyle inside folder styles, I name it tunassimple, and inside the folder I paste the new header and footer. I change many things in .css files specially the color of the fonts, I just change and deploy to get my preferred stile. On thing important I met is I shuld add property height inside body, to make an html <table> tag using css.
body {
...
height:100%;
}
and inside header and footer I add property height
div#header {
...
height: 147px;
}
So, it similar with table and tr height, I did not use table because it not recommended nowadays, people recommend using style or css.

For the application's icon, I go to ITS logo site, I copy ITS logo, and modify using photoshop, I'm not using gimp anymore, but the first header of this application I use gimp on my laptop. I only take the ITS name because I only need to show small icon that shows in the tab of my application. Deploy again and run tomcat, the result shows in the capture above.

Friday, September 11, 2009

Creating Simple Java Web Application



I join milist of alumny of my bachelor, the newest event is we gonna have scholarship for students and high school teacher, I want make a java sites for it, so I build the simple one, I create this document as if as you also want to create a simple java web application.

First I build in Ubuntu on my laptop, but I need internet for browsing, so I use on my office computer which is using Windows nowadays, infact last few months some pcs in my office re-using XP rather Ubuntu. So Im documenting my work on Windows and trying to write it as easier as I can. Contrary actually I prefer working on Ubuntu because of terminal and repository for downloading everything needed.

I use Appfuse 1.9.4 as wizard for creating java web application, I actually already made a start using Appfuse 2.0 with Maven rather Ant but it will need time for me for learning, so I decide it to use the older version, I already use this version on my previous project, so I will get the faster result, and it is much easier.

Here the list of needed things before working on this application:
1. java 1.6
2. mySql 5.1
3. appfuse 1.9.4
4. ant 1.7
5. tomcat 5.5

Here the steps:
1. Download them and install java and mysql, and extract for others in the prefer place.
2. When installing MySql server you gonna asked for root password, just type it as necessary, e.x: username=root, password=root
3. Open command prompt, write "java -version" and "ant -version", if the result is "is not recognized as an internal or external command," then we need do this things:
- open explorer, point to My Computer
- right click, Properties
- choose Advanced tab
- click Environment Variables
- in the System Variables box, the below one, click New
- Write Variable Name = ANT_HOME, Variable Value = D:\Java\apache-ant-1.7.0 (Or the prefered extracted path)
- Edit variable Path, copy the value into notepad, so we gonna have some line like this: C:\Program Files\.... it mention shortcut for the commands that our computer have, and then add this line : ";%ANT_HOME%\bin" for adding ANT_HOME
- restart computer
- for checking if we already have ant command in our computer type: "ant -version", and it should return some like this: "Apache Ant version 1.7.0 compiled on December 13 2006"
above steps set ANT_HOME and add "ant command" so we can call it from any place via command prompt.

4. Using command prompt, enter the extracted appfuse folder, for example on D:\Java\appfuse, and then type "ant new"
5. We gonna asked some questions:
[input] What would you like to name your application [myapp]? [myapp]
tunasbangsa
[input] What would you like to name your database [mydb]? [mydb]
tunasbangsa
[input] What package name would you like to use [org.appfuse]? [org.appfuse]
org.alits
It means I create new application named tunasbangsa, with database named tunasbangsa, and package named org.alits

6. System will do some operations, it needs some seconds, and if everything is correct, there will be a BUILD SUCCESFULL messages
7. Now you should be able to cd to your application and run: "ant setup test-all"
8. cd into the new application folder, type "cd ../tunasbangsa"
9. we already inside our application just type: "ant setup test-all", and it should be BUILD SUCCESFULL messages, if we got error something like username and password into mySql, change the password in properties.xml, by default the password is empty, we need to change same with our password, it's on line 53,
<property name="database.admin.password" value=""/>, set the password value = "root"

10. For viewing the result, run tomcat, enter into our extracted tomcat, for example in "C:\apache-tomcat-5.5.28", enter the bin folder, and run or double click startup.bat.
11. Goes to explorer, ie or firefox, type http://localhost:8080/tunasbangsa, it should shows the result same as in the capture above.