tag:blogger.com,1999:blog-19335743431021845142024-03-06T00:40:17.335-08:00Keutamaan IlmuMari berbagi berbagai ilmu dan pengalamanAnonymoushttp://www.blogger.com/profile/04691754460123169304noreply@blogger.comBlogger17125tag:blogger.com,1999:blog-1933574343102184514.post-63775497748533651012013-06-26T19:37:00.000-07:002013-06-26T19:37:32.556-07:00Menggunakan SMSLib di LinuxJumpa lagi setelah sekian lama kita tidak bersua, umur semakin tua dan waktu kita bersama semakin tersita, apa daya manusia? Hanyalah seonggok daging dan tulang belaka, takkan bisa apa-apa tanpa bantuan yang Maha Kuasa.
Cukup puisinya mari kita belajar bersama lagi ;-p
Tantangan kali ini adalah kita membuat suatu aplikasi berkaitan dengan sms, penerapannya bisa untuk SMS Gateway, dsb. Bisa juga untuk membuat aplikasi "smart sms auto replay", wuiissh aplikasi apa itu? Entahlah cuman biar keliatan keren saja hehehe..
Pertama download dulu library untuk <a href="http://smslib.org/download/">smslib</a>. Menurut <a href="http://smslib.org/doc/installation/">dokumentasinya</a>, smslib ini memerlukan beberapa komponen, silahkan dibaca sendiri, salah satu komponennya adalah Java Communications Library, bisa menggunakan SUN Java Comm v2 atau v3, atau menggunakan RXTX, mari kita menggunakan RXTX saja karena RXTX bisa digunakan di sistem operasi secara luas, beda dengan Java Comm yang hanya berjalan di SO Windows saja. Silahkan download dulu komponen dari <a href="http://rxtx.qbang.org/pub/rxtx/rxtx-2.1-7-bins-r2.zip">RXTX</a>. Extract hasil dari downloadnya, kemudian kita buka directory linux dan copykan file .so sesuai dengan arsitektur linux yang kita gunakan, apakah 32bit atau 64bit, copy ke <JAVA_HOME>/jre/lib/i386/ untuk 32bit atau <JAVA_HOME>/jre/lib/x86_64/ untuk 64bit. Untuk mencoba apakah RXTX sudah berjalan mari kita buat Project Java, silahkan menggunakan IDE favorit, bisa menggunakan NetBeans, Eclipse, dsb. Buat class bernama SimpleRead dan tambahkan library RXTXcomm.jar. Isi dari class SimpleRead adalah sebagai berikut :
<pre>
import gnu.io.CommPortIdentifier;
import java.util.Enumeration;
public class SimpleRead {
public static void main(String[] ap) {
Enumeration pList = CommPortIdentifier.getPortIdentifiers();
while (pList.hasMoreElements()) {
CommPortIdentifier cpi = (CommPortIdentifier) pList.nextElement();
System.out.print("Port " + cpi.getName() + " ");
if (cpi.getPortType() == CommPortIdentifier.PORT_SERIAL) {
System.out.println("is a Serial Port: " + cpi);
} else if (cpi.getPortType() == CommPortIdentifier.PORT_PARALLEL) {
System.out.println("is a Parallel Port: " + cpi);
} else {
System.out.println("is an Unknown Port: " + cpi);
}
}
}
}
</pre>
Kelas diatas bertujuan menampilkan port serial maupun parallel yang aktif dalam komputer kita, jalankan perintah tersebut, apabila ada error kemungkinan karena masalah hak akses, kelas tersebut berusaha menulis pada folder /var/lock/, solusinya kita tambahkan user kita pada group uucp. Tambahkan dengan mengedit file /etc/group atau dengan menggunakan perintah :
<pre>
usermod -a -G uucp dicky
</pre>
Perintah tersebut menambahkan user bernama dicky dalam group uucp sehingga memiliki hak akses write ke directory /var/lock/.
Jalankan kelas SimpleRead, jika tidak ada error berarti RXTX sudah berjalan lancar. Selamat anda layak dapan pujian ;-p
Sekarang saatnya kita membuat kelas untuk membaca sms dari perangkat yang kita gunakan, tambahkan komponen lainnya dalam project kita yaitu, smslib.jar tentu saja, <a href="http://logging.apache.org/log4j/1.2/download.html">Apache log4j</a>, <a href="http://commons.apache.org/downloads/download_net.cgi">Apache Jakarta Commons - Net</a>, dan <a href="http://code.google.com/p/jsmpp">JSMPP</a>. Buat file log4j.properties di source directory dari Project kita dengan isi :
<pre>
log4j.logger.smslib=DEBUG, smslib
log4j.appender.smslib=org.apache.log4j.ConsoleAppender
log4j.appender.smslib.layout=org.apache.log4j.PatternLayout
log4j.appender.smslib.layout.ConversionPattern=%-6r %d [%t] %-5p %C %x - %m%n
</pre>
Kemudian dari hasil download smslib, kita bisa melihat sample dari cara membaca sms di kelas ReadMessages dari package examples.modem. Kita tinggal melihat contoh dari kelas itu kemudian sesuaikan dengan perangkat yang kita gunakan, karena saya menggunakan HP Sony Ericsson W550i maka saya ganti konfigurasi dengan :
<pre>
SerialModemGateway gateway = new SerialModemGateway("modem.com7", "COM3", 115200, "Sony Ericsson", "W550i");
</pre>Anonymoushttp://www.blogger.com/profile/04691754460123169304noreply@blogger.comtag:blogger.com,1999:blog-1933574343102184514.post-14379909831571722622012-03-18T23:43:00.001-07:002012-03-18T23:44:21.157-07:00Instalasi Apache, PHP, dan MySQL di LinuxSesuai janji saya pada waktu di posting <a href="http://deeqee.blogspot.com/2009/09/konfigurasi-apache-web-server-php-dan.html">Konfigurasi Apache, PHP, dan MySQL di Windows</a>, maka kali ini saya ingin memposting untuk instalasi di Linux. Berhubung saya menggunakan Distro Mandriva 2011, maka untuk pengguna Distro lain silahkan buat artikel sendiri ya! Emang harus gitu? Ya ga juga sih, tapi daripada kalian keluyuran ga jelas, ato ngelamun sendirian mending melakukan sesuatu yang berguna(emg ada ngelamun berjamaah? Ada donk coba kalian perhatikan di kemacetan lalu lintas, orang2 pada ngelamaun berjamaah tuh). Oke sampai mana tadi? Kebanyakan pembicaraan ga penting intisari pembicaraan jadi ga dapet. Oh iya tadi sampai melamun, langsung saja kita mulai pengaturannya.<br />
<br />
Hal pertama sebelum dilakukan pengaturan, adalah install aplikasi terlebih dahulu. Enaknya apa dulu ya? Apache dulu deh. Oke langkah pertama buka <b>Mandriva Linux Control Center -> Install and Remove Software</b> Pada query ketikkan apache-base dan pilih apache-base untuk diinstall pada komputer. Ikuti langkah instalasi dan kebutuhan library. Jika proses instalasi sudah selesai silahkan jalankan servicenya dengan mengetikkan di console sebagai root :<br />
<pre>/etc/init.d/httpd start
</pre>Documen Root defaultnya ada di var/www/html ini adalah tempat untuk meletakkan aplikasi kita. Untuk konfigurasinya ada di file /etc/httpd/conf/httpd.conf dan konfigurasi tambahannya ada id direktory /etc/http/conf.d. Untuk mengecek apakah apache sudah berjalan, buka browser kemudian coba ketikkan <b>http://localhost</b> pada address bar browser favorit. Jika muncul halaman bertuliskan It's Work berarti instalasi Apache sudah berhasil. Langkah selanjutnya kita instal PHP. Masuk pada <b>Mandriva Linux Control Center -> Install and Remove Software</b> installah apache-mod_php. Kemudian untuk mysql ya tinggal install mysql aja disitu. Jangan lupa install pula php-mysql. Simpel banget ya?Anonymoushttp://www.blogger.com/profile/04691754460123169304noreply@blogger.comtag:blogger.com,1999:blog-1933574343102184514.post-1621552673754262352011-12-14T17:40:00.000-08:002011-12-14T17:40:56.500-08:00Unordinary Love StoryKetemu lagi dengan saya, setelah beberapa kali posting agak berat mengenai pemrograman mungkin kali ini agak rileks dulu ya, saya ingin posting suatu cerita, hmmm cerita apa ya? Yang paling laku aja deh, di Indonesia cerita yang laku kalo tidak cerita cinta ya cerita misteri :-p<br />
Oke untuk cerita misteri lain kali saja, sekarang saya mau cerita tentang cinta dulu, kenapa saya yang basisnya programmer koq tiba2 pengin cerita tentang cinta? Apakah saya sedang dilanda mabuk cinta (hmm setiap hari itu mah). Tapi alasan sebenarnya saya penasaran ato bisa dibilang muak ya? Melihat acara FTV bertema cinta di "dunia pertelevisian" kita, kalo kita lihat alurnya monoton sekali, saya memang tidak pernah menonton sih, tapi kalo pas kebetulan menonton pas gonta-ganti chanel pasti FTV bertema cinta itu memiliki alur yang monoton, pertama perkenalan, trus PDKT, ntar ada konflik (biasanya salah paham), penyelesaian trus jadian dech (ending). Mungkin masalah rating dan kepopuleran bermain disini, tp apa ya harus segitunyaaa??<br />
<br />
Mungkin ada diantara yang bilang, "Loe jangan cuman omdo, coba lu buat cerita sendiri!!", Oke saya akan buat cerita sendiri, mungkin cerita ini ga lebih bagus, tapi paling tidak bisa memberi warna pada negeri ini dengan warna yang berbeda.<br />
<blockquote>Cerita ini hanya fiktif belaka, apabila ada kesamaan dengan dunia nyata itu hanya kebetulan semata.</blockquote><br />
<b>WHAT IS LOVE?</b><br />
Anto mengumpulkan keberaniannya, dia berdiri menatap Jessica yang sedang berbincang dengan Robbie di kantin kampus, tampaknya mereka baru saja menyelesaikan makan siang mereka. Anto menarik nafas panjang, kemudian berjalan menghampiri mereka. "Hi Jess, aku mau ngomong bentar ganggu ga?", "Emang mo ngomong apa? Ngomong aja lagi napa harus nanya segala?". Anto melihat Robbie dan terdiam beberapa saat, Robbie yang paham langsung bilang, "Eh Jess, kalian ngobrol dulu aja ya, aku mo ke perpus dulu. Ayo To, aku duluan ya? Jangan lupa aku pinjem catatan kuliahnya Pak Marco ya?". Anto mengangguk, kemudian setelah Robbie pergi Anto mulai bertanya kepada Jessica, cewek yang dikenalnya secara tidak sengaja di jalan, saat cewe itu kebingungan karena bannya bocor, sedangkan dia sedang terburu-buru karena ada ujian Mata Kuliah penting, dan Anto dengan sukarela meminjamkan sepeda motornya. <br />
<br />
"Emm ntar weekend ada acara ga? Ini aku punya voucher dari Steack Cafe yang baru buka, kalo kosong nti aku jemput". Jessica menatap Anto kemudian memegang gelas yang sudah kosong, dia memainkan sedotan di gelas tersebut, "Sorry ya To, aku lagi diet nih, ga makan daging gitu, eh tapi kamu bisa ajak Lina tuh? Katanya dari kemaren dia ngidam pengin makan banana split". "Ooh lagi diet ya, gimana kalo ke restoran yang lain aja?", Anto berusaha tersenyum. "Eh tapi kayanya malem minggu aku ga bisa dech To, ada acara apa gitu, eh udah dulu ya aku ke kelas dulu, ada kuliah", kata Jessica sambil membereskan tasnya. Sepeninggal Jessica, Anto memandang voucher discount di tangannya, pikirannya menerawang jauh.<br />
<br />
"Eh koq cepet banget ngobrolnya Jess?", tanya Robbie melihat Jessica menyusulnya di perpus, "Tadi Anto pengin ngajakin aku jalan weekend ini, tapi aku males sih" jawab Jessika seperti sedang memikirkan sesuatu. "Anto tuh suka ama kamu, dia kan orangnya baik, kamu ga suka ya?". "Iya sih dia baik, pengertian, and bisa jadi pacar yang baik and setia juga. Tapi ga tau ya kenapa aku ga ada rasa ama dia, aku juga bingung", Jessica melihat Robbie dan melanjutkan, "Sebenernya aku pengen juga punya pacar yang baek seperti kamu, seperti Anto, tau sendiri kan gimana mantan-mantan aku? Mereka semua brengsek semua, kalo ga diselingkuhin, mereka kasar juga ama aku, tapi anehnya kenapa aku selalu jatuh cinta dengan cowo-cowo seperti itu? Kenapa aku tidak jatuh cinta aja dengan cowo-cowo seperti kalian Rob? Btw ginama kabar cewe kamu di luar kota? Koq bisa sih kamu pacaran jarak jauh gitu?". Robbie tersenyum, "Kami sudah memiliki komitmen Jess, cinta berdasarkan emosi pasti ga bakal langgeng, siapa yang menjamin emosi kamu bisa stabil? Bagaimana bisa kamu menahan godaan untuk selingkuh kalau ga ada komitmen yang kuat? Kami sudah sepakat bahwa cinta kami adalah cinta yang dianugerahkan Allah untuk kami, saat kami semakin menua dan menjadi tak secakap sekarang, cinta itu tetap ada di hati kami, karena Allah maha abadi bukan? Begitulah cinta kami". Jessica mengangguk-angguk, dalam hatinya ada kebimbangan sekarang.<br />
<br />
Anto berjalan menelusuri trotoar bersama keponakannya, Sisca, putri kakaknya yang baru berusia 10 tahun, sambil menggenggam voucher dia mengamati sekeliling, malam minggu jalan selalu ramai, orang-orang keluar untuk menghilangkan kepenatan setelah seminggu ini bekerja atau sekolah. Makan malam bersama, nonton film, atau sekedar jalan-jalan menikmati udara malam. "Bener ya Oom, kita makan steak yang enaaak??" tanya Sisca dengan mata berbinar. "Iya, makanya kamu jangan nakal ya? Kalau ga nakal nanti Oom Anto akan sering-sering ajak kamu makan atau jalan-jalan". Sisca berjalan ceria digandeng oleh Anto.<br />
Saat melewati Restoran Steak yang lumayan terkenal disitu jantung Anto seakan terhenti untuk 0.12 detik. Di bangku luar Restoran tersebut dia melihat Jessica, berdua dengan Albert, cowo yang terkenal sebagai geng motor di kampusnya. Mereka terlihat asyik bercanda dan makan steak, terlihat begitu mesra. Saat pandangan Anto melihat Jessica, Jessica merasa ada yang mengawasi, dia segera menyapu pandangan ke luar, saat tatapan mereka bertemu, Jessica terkejut, dia segera menunduk dan terdiam. "Ayooo Oom jalan, napa siih malah berhenti disini?", ajakan Sisca membuyarkan lamunannya, dia segera menggendong Sisca dan mencium pipinya, "Iya, iyaa, ayo sekarang cepet nanti keburu habis hahahahaa..". Anto berjalan menggendong Sisca, mereka tertawa bersama, ya, Anto sudah melepaskan sesuatu yang tidak seharusnya dia bawa, hidup ini terlalu indah untuk memanggul sesuatu yang akan jadi beban, Anto menyadari bahwa dia berhak untuk bahagia, dan dia akan membagi kebahagian itu bersama orang-orang yang dia sayangi. Sementara itu Jessica tidak melepaskan pandangannya dari Anto, sampai dia berbelok di perempatan jalan dan hilang dari pandangan. Jessica merasa emosi dan logikanya beradu di dalam dirinya.<br />
--END--<br />
<br />
Naaah.. begitulah cerita yang aku buat, bagaimana? hah lebih jelek? Ya gapapa yang penting beda gitu, dunia akan berwarna saat perbedaan itu saling mengisi. Ayo ditunggu tanggapannya! ^_^Anonymoushttp://www.blogger.com/profile/04691754460123169304noreply@blogger.comtag:blogger.com,1999:blog-1933574343102184514.post-17649475598212468802011-10-16T20:08:00.001-07:002011-12-13T17:01:06.214-08:00Berbagai Pemikiran Saya Tentang Misteri IllahiLama ga update blog, maklum (sok) sibuk :-D<br />
Mumpung hari Jumat (sok religius) pengen sekali mengeluarkan unek2 tentang apa yang terjadi dibalik kejadian di dunia ini. Tapi karena apa yang saya tulis ini mungkih hal yang <b>sensitif sekali</b> jadi sebelumnya perhatikan dulu ketentuan yang saya buat berikut :<br />
<blockquote>Semua yang saya tulis di bawah murni dari pemikiran saya sendiri, jadi apa yang saya tulis ini mungkin tidak ada rujukannya yang valid, saya tidak bertanggung jawab apabila ada yang mengambil tulisan saya ini sebagai sumber informasi. Karena berdasarkan pemikiran saya, mungkin (bisa jadi malah pasti) <b>SALAH</b>. Jadi saya mohon mungkin ada yang lebih berkompeten dengan ilmu ini bisa berbagi atau mengoreksi. Kita berdiskusi disini. :-)</blockquote>Oke kita mulai saja, sejak kecil saya selalu terpikirkan dengan pertanyaan2 seperti ini :<br />
<ol><li>Apakah takdir manusia bisa diubah? Bukankah takdir manusia sudah ditetapkan sejak ruh manusia diciptakan?</li>
<li>Kenapa kadang orang jahat mendapatkan kehidupan yang lebih baik dari orang baik? Dimana keadilan ini?</li>
<li>Dan pertanyaan lain yang saya lupa, mungkin kalo inget saya update lagi nanti ;-p</li>
</ol>Pertanyaan-pertanyaan seperti itu saya selalu diskusikan dengan teman-teman dan sampai beberapa tahun belakangan belum bisa memuaskan rasa penasaran ini. Kita tahu kuasa Allah Maha Besar, saya sebagai manusia tidak akan bisa mengetahui rahasia-rahasia-Nya. Dijelaskan seperti apapun tidak akan mengerti karena kemampuan otak manusia mungkin cuma seperti debu di luasnya alam semesta jika dibandingkan dengan ilmu-Nya.<br />
Jadi agar saya bisa memuaskan rasa penasaran itu, saya membuat pemikiran sederhana yang bisa diterima oleh otak saya ini. Oke begini pemikiran saya atas pertanyaan-pertanyaan itu, saya jabarkan satu-satu ya :<br />
<a name='more'></a><br />
<b>1. Apakah takdir manusia bisa diubah? Bukankah takdir manusia sudah sejak ruh manusia diciptakan?</b><br />
Hal ini yang kadang bikin manusia ga berusaha, kadang mereka berpikir, "Buat apa aku kerja keras, jika takdirku jadi miskin, ya udah miskin aja". Jadi begini pemikiran saya, Allah itu maha mengetahui, maha mengetahui apa yang sudah dan belum terjadi, bila diibaratkan Allah adalah sutradara dan penulis cerita dari kehidupan kita, semua yang akan kita pikirkan dan akan kita kerjakan saat ini, besok, atau bertahun-tahun kemudian sudah tentu Allah mengetahui, karena itulah Allah bisa menuliskan semua takdir kehidupan kita. Sebagai contoh sebagai manusia tidak lepas dari cobaan, saat Allah menuliskan takdir akan adanya cobaan yang akan kita terima, Allah sudah tahu apa yang akan kita lakukan dalam menyikapi cobaan tersebut, apakah kita akan sabar? Apakah kita akan menghujat-Nya? Apakah kita akan terus istiqomah? Allah tahu itu dan menuliskan takdir kita selanjutnya. Jadi jika saat ini kita semua diberikan suatu cobaan, takdir apa yang kita terima sesudahnya adalah apa yang kita sikapi dari cobaan tersebut, dan itu sudah dituliskan pada takdir kita.<b> </b>Jadi memang benar takdir kita sudah ditulis dengan tinta dan sudah kering, tapi hal itu tergantung pada sikap kita sendiri dalam menjalani hidup ini. Yang penting dalam hidup ini kita harus melakukan hal yang terbaik dan selalu ada dalam jalan-Nya. Masalah hasil apa yang kita terima itu urusan-Nya. Bisa jadi Allah menunda hadiah untuk kita atau mungkin mengganti dengan hal yang lebih baik, kita tidak akan pernah tahu mana yang lebih baik bagi kita. :-)<br />
<b><br />
UPDATE :<br />
Beberapa waktu lalu saya mengikuti sebuah seminar, didalam seminar tersebut juga disinggung sedikit mengenai takdir, apakah ini cara Allah untuk "membereskan" pemikirian saya? Wallahualam.<br />
Jadi menurut pembicara dalam seminar tersebut (maaf lupa namanya), selain <i>takdir</i> ada juga <i>qada</i>, takdir telah dituliskan sejak ruh diciptakan, tetepi takdir ini masi bisa berubah, qada atau ketetapan inilah yang akan terjadi pada kita. Jadi misal kita ditakdirkan pada umur 28 mendapat uang satu milyar, tapi takdir ini belum menjadi qada (ketetapan), bisa juga kita cuman dapat setengahnya atau malah lebih banyak lagi, tergantung bagaimana perbuatan kita. So jangan menyerah atau menyalahkan takdir, selama belum menjadi qada kita masih bisa mengubahnya. ;-)<br />
</b><br />
<br />
<b>2. Kenapa kadang orang jahat mendapatkan kehidupan yang lebih baik dari orang baik? Dimana keadilan ini?</b><br />
Kalau jawaban ini sudah saya terima saat mendengarkan khotbah jumat bulan puasa kemarin, bahwa Allah itu tidak mau berhutang apapun pada hambaNya. Kita tahu sejahat-jahatnya manusia pasti pernah berbuat baik dan sebaik-baiknya manusia pasti pernah berbuat kesalahan. Jika ada orang jahat yang hidupnya begitu nyaman bisa jadi Allah sedang membalas semua kebaikan yang telah dilakukannya. Sehingga saat orang itu mati kelak, Allah sudah tidak punya hutang apa-apa dan bisa menyiksa habis-habisan. Jadi misal ada koruptor yang hidup begitu nyaman, rumah megah, mobil mewah, meninggalpun enak sekali di Rumah Sakit Singapura dengan tenang, hmmmm tunggu aja apa yang akan dia dapatkan kelak di akherat.<br />
Begitupun dengan orang baik yang hidup begitu susah, mau meninggal begitu menderita mendapatkan sakit yang menyiksa, bisa jadi Allah sedang menghapus dosa-dosanya dengan memberikan cobaan tersebut. Jadi dia bisa pergi ke akhirat dengan "bersih" :-)<br />
<br />
Demikian beberapa pemikiran saya, saran saya sih sebaiknya kita ga usah memikirkan hal-hal seperti ini. Terlalu sibuk memikirkan hal seperti ini bisa jadi malah disusupi pemikiran-pemikiran dari setan, Yakinlah Allah maha penyayang bagi hambanya. Apa yang menjadi perintahNya pastilah demi kebaikan kita dan apa yang menjadi laranganNya adalah untuk menjauhkan kita dari hal buruk. Mana yang lebih dicintai Allah, hambanya yang selalu bertanya ini itu saat menerima perintahNya, atau hambaNya yang selalu patuh dan taat dalam menjalankan perintahNya tanpa harus bertanya-tanya karena sudah tahu bahwa hal itu demi kebaikan diri sendiri?? Mari kita putuskan jadi hamba yang bagaimana di hadapanNya^_^Anonymoushttp://www.blogger.com/profile/04691754460123169304noreply@blogger.com0tag:blogger.com,1999:blog-1933574343102184514.post-2999162226839441262011-10-16T19:24:00.000-07:002011-10-16T19:53:07.004-07:00Pengenalan Ant Bagian 3Setelah kita belajar bagaimana menambahkan library dan fungsi unit testing pada posting <a href="http://deeqee.blogspot.com/2011/10/pengenalan-ant-bagian-2.html">pengenalan ant terdahulu</a>, kini kita coba berlatih lagi, kali ini kita belajar membuat file war, jadi latihan kali ini kita akan belajar ant dengan membuat web yang akan diupload ke server (bisa tomcat, glassfish, dsb) sehingga bisa diakses user melalui browser.<br />
<a name='more'></a><br />
Untuk struktur java web sedikit berbeda dengan java desktop, dengan memodifikasi project dari latihan terdahulu, buat struktur direktory project seperti di bawah ini :<br />
<pre>+Latihan
| |
|--+web
| |
| index.jsp
| |
| +WEB-INF
| |
| web.xml
|
|--+src
| |
| +conf
| |
| +java
| |
| log4j.properties
| |
| +com
| |
| +dicky
| |
| Main.java
|
|--+lib
| |
| +source
| | |
| | log4j-1.2.16.jar
| | |
| | spiffy-all-0.05.jar
| |
| +test
| |
| junit-4.5.jar
|
|--+test
| |
| +com
| |
| +dicky
| |
| MainTest.java
|
|--+reports
|
|--build.xml
</pre>Ada beberapa perubahan dalam susunan file-file dan directory dibanding dengan project jar di post terdahulu. Pertama kita edit dulu file web.xml menjadi seperti berikut :<br />
<pre><?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
</pre>Dapat dilihat di web.xml di atas, halaman awal yang akan ditampilkan pertama kali adalah file index.jsp, makan kita edit dulu file index.jsp sebagai berikut :<br />
<pre><%--
Document : index
Created on : Aug 1, 2005, 12:10:12 AM
Author : Dicky
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="com.dicky.Main" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Halaman awal</title>
</head>
<body>
<%
Main main = new Main();
%>
<h1>Nilai pangkat 3 dari 5 adalah :<%=main.triple(5)%></h1>
</body>
</html>
</pre>File index.jsp menampilkan fungsi yang ada dalam code Main.java, maka kita perlu mengubah file Main.java sebagai berikut :<br />
<pre>package com.dicky;
import org.apache.log4j.Logger;
import spiffy.log4j.LoggerHelper;
public class Main {
private static final Logger logger = LoggerHelper.getLogger();
public int triple(int x) {
logger.info("Menghitung nilai pangkat 3 dari " + x);
return x*x*x;
}
}
</pre>Setelah persiapan sudah selesai kita buat, konfigurasi ant, ubah file build.xml seperti berikut :<br />
<pre><project name="PengenalanAnt" default="war" basedir=".">
<description>
Latihan nyoba build .war dengan ant.
</description>
<!-- Mendeklarasikan nama-nama property yang akan dipakai -->
<property name="app.name" value="pengenalanant" />
<property name="warfile.name" value="${app.name}.war" />
<property name="web.dir" value="${basedir}/web" />
<property name="src.dir" location="src" />
<property name="src.test.dir" location="test" />
<property name="webxml.file" value="${web.dir}/WEB-INF/web.xml" />
<property name="lib.dir" location="lib" />
<property name="lib.source.dir" value="${lib.dir}/source" />
<property name="lib.test.dir" value="${lib.dir}/test" />
<property name="lib.compile.dir" value="${lib.dir}/compile" />
<property name="build.dir" location="build" />
<property name="classes.dir" location="${build.dir}/classes" />
<property name="classes.test.dir" location="${build.dir}/test" />
<property name="target.dir" location="dist" />
<property name="report.dir" value="reports" />
<property name="test.report.dir" value="${report.dir}/tests" />
<property name="test.pattern" value="**/**Test.java" />
<!-- setting kompilasi -->
<property name="compile.debug" value="true" />
<property name="compile.deprecation" value="true" />
<property name="compile.optimize" value="true" />
<!-- paths untuk dependensi source code java -->
<path id="build.classpath">
<fileset dir="${lib.source.dir}">
<include name="**/*.jar" />
</fileset>
</path>
<!-- paths untuk dependensi source code test java -->
<path id="build.test.classpath">
<fileset dir="${lib.test.dir}">
<include name="**/*.jar" />
</fileset>
</path>
<target name="clean" description="menghapus direktory hasil kompilasi" >
<delete dir="${target.dir}"/>
<delete dir="${classes.dir}"/>
<delete dir="${classes.test.dir}"/>
<delete dir="${build.dir}"/>
<delete dir="${test.report.dir}"/>
</target>
<target name="-init">
<mkdir dir="${build.dir}" />
<mkdir dir="${classes.dir}" />
<mkdir dir="${classes.test.dir}" />
<mkdir dir="${target.dir}" />
<mkdir dir="${test.report.dir}"/>
</target>
<target name="build" depends="-init" description="Mengkompilasi source code " >
<javac debug="${compile.debug}" deprecation="${compile.deprecation}" optimize="${compile.optimize}" srcdir="${src.dir}" destdir="${classes.dir}">
<classpath>
<path refid="build.classpath" />
</classpath>
</javac>
<copy todir="${classes.dir}" filtering="off">
<flattenmapper />
<fileset dir="${src.dir}">
<include name="*.*"/>
</fileset>
</copy>
</target>
<target name="build-test" depends="build" description="Mengkompilasi source code test" >
<javac debug="${compile.debug}" deprecation="${compile.deprecation}" optimize="${compile.optimize}" srcdir="${src.test.dir}" destdir="${classes.test.dir}">
<classpath>
<path refid="build.test.classpath" />
<path refid="build.classpath" />
<pathelement path="${classes.dir}" />
</classpath>
</javac>
<copy todir="${classes.test.dir}" filtering="off">
<flattenmapper />
<fileset dir="${src.test.dir}">
<include name="*.*"/>
</fileset>
</copy>
</target>
<target name="clean-build" depends="clean, build" description="kompilasi dengan menghapus file" />
<target name="test" depends="build-test" description="jalankan semua test (unit)">
<junit dir="${basedir}" printsummary="on" fork="true" haltonfailure="false" errorProperty="test.failed" failureProperty="test.failed">
<sysproperty key="basedir" value="${basedir}" />
<formatter type="xml" />
<classpath>
<path refid="build.test.classpath" />
<path refid="build.classpath" />
<pathelement path="${classes.dir}" />
<pathelement path="${classes.test.dir}" />
</classpath>
<batchtest todir="${test.report.dir}">
<fileset dir="${src.test.dir}">
<include name="${test.pattern}" />
</fileset>
</batchtest>
</junit>
</target>
<target name="war" depends="build" description="Menggabungkan distribusi" >
<delete file="${target.dir}/${warfile.name}" />
<war destfile="${target.dir}/${warfile.name}" webxml="${webxml.file}">
<fileset dir="${web.dir}">
<include name="**/*.jsp" />
</fileset>
<mappedresources>
<restrict>
<path refid="build.classpath"/>
<type type="file"/>
</restrict>
<chainedmapper>
<flattenmapper/>
<globmapper from="*.jar" to="WEB-INF/lib/*.jar"/>
</chainedmapper>
</mappedresources>
<classes dir="${classes.dir}" />
<zipfileset dir="${web.dir}/WEB-INF" prefix="WEB-INF/classes">
<include name="*.properties" />
</zipfileset>
</war>
</target>
</project>
</pre>Sudah, silahkan dicoba! Untuk Unit Testing jalankan perintah dalam console :<br />
<pre>ant test
</pre>Untuk mengkompilasi menjadi file war jalankan perintah :<br />
<pre>ant war
</pre>Untuk melihat tampilan, file war ini perlu dideploy ke server agar bisa dilihat dari browser (Firefox atau Chrome browser), posting berikutnya kita akan belajar mendeploy file war ke server (bisa Tomcat, Glassfish, dsb). Jika masih kesulitan silahkan <a href="http://code.google.com/p/pengenalan-ant/downloads/list">download</a> source codenya.Anonymoushttp://www.blogger.com/profile/04691754460123169304noreply@blogger.comtag:blogger.com,1999:blog-1933574343102184514.post-20559838739958720662011-10-10T18:56:00.000-07:002011-10-10T18:59:27.911-07:00Pengenalan Ant Bagian 2Hai hai semuaa.. siap dengan hari yang menantang lagi? Kalo pak Mario Teguh punya"Salam Super" maka mari kita buat salam sendiri,, "Salam Petualang"^_^<br />
Oke setelah pada <a href="http://deeqee.blogspot.com/2011/10/pengenalan-ant-bagian-1.html">posting terdahulu</a> kita belajar menggunakan Ant, sekarang kita lanjut dengan materi yang agak sedikit lebih rumit lagi. Pada posting terdahulu kita hanya memiliki satu sumber kode java yang menampilkan pesan yang kita tulis pada console, tanpa adanya dependency dengan library lain. Sekarang kita akan menambahkan suatu baris kode sehingga memiliki dependency, dan kita akan menyertakan library tersebut pada paket distribusinya agar terlihat lebih rumit ;-p<br />
Untuk itu kita perlu menambahkan fitur pada program terdahulu, diantaranya :<br />
<ol><li>Fitur logging.</li>
<li>Fitur Unit Test.</li>
</ol><a name='more'></a><br />
Pertama agar kita punya dependensi dengan library lain kita tambahkan fitur logging, kita akan memakai <a href="http://logging.apache.org/">log4j</a> dari apache, kemudian agar project kita memiliki efisiensi kita gunakan library <a href="spiffyframework.sourceforge.net/">spiffy framework</a>, penjelasan mengenai library2 tersebut bisa dibaca di website-nya. Kita perlu menambah direktory untuk menempatkan library dan kode test, tambahkan direktory test, lib, dan reports. Tambahkan file library yang dibutuhkan, kemudian buat code untuk melakukan testing yaitu MainTest.java direktory test, jangan lupa buat file pengaturan logging (log4j.properties) di folder source, sehingga didapat susunan di bawah ini :<br />
<pre>+Latihan
| |
|--+src
| |
| log4j.properties
| |
| +com
| |
| +dicky
| |
| Main.java
|
|--+lib
| |
| +source
| | |
| | log4j-1.2.16.jar
| | |
| | spiffy-all-0.05.jar
| |
| +test
| |
| junit-4.5.jar
|
|--+test
| |
| +com
| |
| +dicky
| |
| MainTest.java
|
|--+reports
|
|--build.xml
</pre>kemudian setelah struktur project siap, kita perlu mengubah code dari Main java menjadi seperti ini :<br />
<pre>package com.dicky;
import org.apache.log4j.Logger;
import spiffy.log4j.LoggerHelper;
public class Main {
private static final Logger logger = LoggerHelper.getLogger();
public int triple(int x) {
logger.info("Menghitung nilai pangkat 3 dari " + x);
return x*x*x;
}
public static void main(String[] args) {
Main main = new Main();
System.out.println("Pangkat 3 dari 6 adalah = " + main.triple(6));
}
}
</pre>Edit file log4j.properties di folder src yang contoh isinya seperti ini, berguna sebagai pengaturan loggingnya :<br />
<pre>log4j.rootLogger=debug, stdout, R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log
log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
</pre>Setelah semua siap kita perlu "mengaitkan" source code dengan library-library tersebut, untuk itu kita perlu mengubah file build.xml seperti ini :<br />
<pre><project name="PengenalanAnt" default="jar" basedir=".">
<description>
Latihan nyoba build dengan ant.
</description>
<!-- Mendeklarasikan nama-nama property yang akan dipakai -->
<property name="app.name" value="pengenalanant" />
<property name="src.dir" location="src" />
<property name="src.test.dir" location="test" />
<property name="lib.dir" location="lib" />
<property name="lib.source.dir" value="&{lib.dir}/source" />
<property name="lib.test.dir" value="&{lib.dir}/test" />
<property name="build.dir" location="build" />
<property name="classes.dir" location="&{build.dir}/classes" />
<property name="classes.test.dir" location="&{build.dir}/test" />
<property name="target.dir" location="dist" />
<property name="target.lib.dir" location="dist/lib" />
<property name="report.dir" value="reports" />
<property name="test.report.dir" value="&{report.dir}/tests" />
<property name="test.pattern" value="**/**Test.java" />
<!-- setting kompilasi -->
<property name="compile.debug" value="true" />
<property name="compile.deprecation" value="true" />
<property name="comiple.optimize" value="true" />
<!-- paths untuk dependensi source code java -->
<path id="build.classpath">
<fileset dir="&{lib.source.dir}">
<include name="**/*.jar" />
</fileset>
</path>
<!-- paths untuk dependensi source code test java -->
<path id="build.test.classpath">
<fileset dir="&{lib.test.dir}">
<include name="**/*.jar" />
</fileset>
</path>
<!--
hilangkan hierarky folder sumber, semua disimpan dalam folder lib
ini digunakan sebagai distribusi, sebagai library dari pengenalanant.jar
-->
<pathconvert property="manifest.classpath" pathsep=" ">
<path refid="build.classpath"/>
<mapper>
<chainedmapper>
<flattenmapper/>
<globmapper from="*.jar" to="lib/*.jar"/>
</chainedmapper>
</mapper>
</pathconvert>
<target name="clean" description="menghapus direktory hasil kompilasi" >
<delete dir="&{target.lib.dir}"/>
<delete dir="&{target.dir}"/>
<delete dir="&{classes.dir}"/>
<delete dir="&{classes.test.dir}"/>
<delete dir="&{build.dir}"/>
<delete dir="&{test.report.dir}"/>
</target>
<target name="-init">
<mkdir dir="&{build.dir}" />
<mkdir dir="&{classes.dir}" />
<mkdir dir="&{classes.test.dir}" />
<mkdir dir="&{target.dir}" />
<mkdir dir="&{target.lib.dir}"/>
<mkdir dir="&{test.report.dir}"/>
</target>
<target name="build" depends="-init" description="Mengkompilasi source code " >
<javac debug="&{compile.debug}" deprecation="&{compile.deprecation}" optimize="&{comiple.optimize}" srcdir="&{src.dir}" destdir="&{classes.dir}">
<classpath>
<path refid="build.classpath" />
</classpath>
</javac>
<copy todir="&{classes.dir}" filtering="off">
<flattenmapper />
<fileset dir="&{src.dir}">
<include name="*.*"/>
</fileset>
</copy>
</target>
<target name="build-test" depends="build" description="Mengkompilasi source code test" >
<javac debug="&{compile.debug}" deprecation="&{compile.deprecation}" optimize="&{comiple.optimize}" srcdir="&{src.test.dir}" destdir="&{classes.test.dir}">
<classpath>
<path refid="build.test.classpath" />
<path refid="build.classpath" />
<pathelement path="&{classes.dir}" />
</classpath>
</javac>
<copy todir="&{classes.test.dir}" filtering="off">
<flattenmapper />
<fileset dir="&{src.test.dir}">
<include name="*.*"/>
</fileset>
</copy>
</target>
<target name="clean-build" depends="clean, build" description="kompilasi dengan menghapus file" />
<target name="test" depends="build-test" description="jalankan semua test (unit)">
<junit dir="&{basedir}" printsummary="on" fork="true" haltonfailure="false" errorProperty="test.failed" failureProperty="test.failed">
<sysproperty key="basedir" value="&{basedir}" />
<formatter type="xml" />
<classpath>
<path refid="build.test.classpath" />
<path refid="build.classpath" />
<pathelement path="&{classes.dir}" />
<pathelement path="&{classes.test.dir}" />
</classpath>
<batchtest todir="&{test.report.dir}">
<fileset dir="&{src.test.dir}">
<include name="&{test.pattern}" />
</fileset>
</batchtest>
</junit>
</target>
<target name="jar" depends="build" description="Menggabungkan distribusi" >
<delete file="&{target.dir}/&{app.name}.jar" />
<jar jarfile="&{target.dir}/&{app.name}.jar" basedir="&{classes.dir}">
<manifest>
<attribute name="Main-Class" value="com.dicky.Main"/>
<attribute name="Class-Path" value="&{manifest.classpath}"/>
</manifest>
</jar>
<copy todir="&{target.lib.dir}" filtering="off">
<flattenmapper />
<fileset dir="&{lib.dir}">
<include name="**/*.jar"/>
</fileset>
</copy>
</target>
</project>
</pre>jalankan test dengan perintah :<br />
<pre>ant test
</pre>bisa dilihat hasil test di folder reports, cobalah dengan mengubah nilainya sehingga didapat test yang gagal!<br />
Demikian lanjutan dari <a href="http://deeqee.blogspot.com/2011/10/pengenalan-ant-bagian-1.html">Pengenalan Ant</a>, jika masih bingung bisa mendownload source code yang telah saya upload di <a href="http://code.google.com/p/pengenalan-ant/">google code</a>. Selamat belajar!Anonymoushttp://www.blogger.com/profile/04691754460123169304noreply@blogger.comtag:blogger.com,1999:blog-1933574343102184514.post-31167124271582392532011-10-04T23:34:00.000-07:002011-10-10T18:23:33.807-07:00Pengenalan Ant Bagian 1Halo para penyuka tantangan semuanya! Sekarang saya akan mengajak untuk mengenal "Ant", emg perlu kenalan ama semut? Udah aku pites tadi hehehe.. Kalo kalian sering menggunakan NetBeans untuk coding paling tidak mengerti kalo buildnya menggunakan Ant suatu program build-tool dari Apache. Dengan fitur otomatis di IDE kita tidak perlu mengerti script Ant untuk mendistribusikan code-code Java yang kita buat. Tinggal menekan tombol, jadi deh file .jar atau .war yang akan kita berikan ke client. Tapi sekarang bagi yang belum kenal dengan Ant mari kita belajar bersama untuk mengenal Ant ini. <br />
<a name='more'></a><br />
Kita coba dengan membuat program sederhana yang akan menampilkan suatu kalimat di console. Pertama pastikan JDK dan Ant sudah terinstall dalam komputer. Kemudian buat suatu folder untuk project kita, misal kita namakan folder tersebut "Latihan", buat directory "src" sebagai tempat meletakkan kode java kita dan file "build.xml" sebagai file untuk menuliskan script Ant yang akan membuat file .jar. Kemudian kita tuliskan kode Java dan kita beri nama Main.java kemudian tempatkan sesuai package-nya di dalam folder src. Misal kode java-nya berisi seperti di bawah ini :<br />
<br />
<pre>package com.dicky;
public class Main {
public static void main(String[] args) {
System.out.println("Yuhuuu Ant!!");
}
}
</pre><br />
Karena package-nya com.dicky maka tampilan susunan file dan foldernya seperti ini :<br />
<br />
<pre>+Latihan
| |
| +src
| | |
|--|--+com
| | |
|--|----+dicky
| | |
|--|-------Main.java
|--build.xml
</pre><br />
Kemudian kita edit file build.xml seperti di bawah ini :<br />
<pre><project name="PengenalanAnt" basedir=".">
<description>
Latihan nyoba build dengan ant.
</description>
<!-- Mendeklarasikan nama-nama property yang akan dipakai -->
<property name="app.name" value="pengenalanant" />
<property name="src.dir" location="src" />
<property name="build.dir" location="build" />
<property name="classes.dir" location="${build.dir}/classes" />
<property name="target.dir" location="dist" />
<target name="clean" description="menghapus direktory hasil kompilasi" >
<echo>
Menghapus direktory ${build.dir} dan ${target.dir}
</echo>
<delete dir="${target.dir}"/>
<delete dir="${classes.dir}"/>
<delete dir="${build.dir}"/>
</target>
<target name="-init">
<echo>
Membuat struktur proyek untuk ${ant.project.name}
</echo>
<mkdir dir="${build.dir}" />
<mkdir dir="${classes.dir}" />
<mkdir dir="${target.dir}" />
</target>
<target name="build" depends="-init" description="Mengkompilasi source code " >
<echo> Mengkompilasi kode java dari ${src.dir} ke ${classes.dir} </echo>
<javac srcdir="${src.dir}" destdir="${classes.dir}"/>
</target>
<target name="clean-build" depends="clean, build" description="kompilasi dengan menghapus file" >
<echo>Menghapus direktory dan mengkopilasi kode java</echo>
</target>
<target name="jar" depends="build" description="Menggabungkan distribusi" >
<echo>
Menyatukan semua file project ke dalam file ${app.name}.jar
</echo>
<delete file="${target.dir}/${app.name}.jar" />
<jar jarfile="${target.dir}/${app.name}.jar" basedir="${classes.dir}">
<manifest>
<attribute name="Main-Class" value="com.dicky.Main"/>
</manifest>
</jar>
</target>
</project>
</pre>kemudian dengan command prompt masuk ke direktory Latihan dan jalankan perintah :<br />
<pre>ant jar
</pre><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2cSMjXEyzd7uIFwGDwOj3m4ffGiw3GSpN7U8pWfYiX2624jsrJJ5CS2AGE_wHyrkR2tRt7s-0-TtumbbDeTMsBesHP5-nWBR9725R6LmOYx7eZqcKOc1qqCxiV5CsWEEDHAznysHaKlQ/s1600/antjar.PNG" imageanchor="1" style="margin-left:1em; margin-right:1em"><img border="0" height="185" width="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2cSMjXEyzd7uIFwGDwOj3m4ffGiw3GSpN7U8pWfYiX2624jsrJJ5CS2AGE_wHyrkR2tRt7s-0-TtumbbDeTMsBesHP5-nWBR9725R6LmOYx7eZqcKOc1qqCxiV5CsWEEDHAznysHaKlQ/s320/antjar.PNG" /></a></div>jika tidak ada kesalahan maka akan terbentuk file pengenalant.jar di folder dist, masih di command prompt, pindah direktory dist dan jalankan perintah :<br />
<pre>java -jar pengenalanjar.jar
</pre>Akan tampil tulisan sesuai dengan code Java yang kita buat, oke post berikutnya kita coba latihan Ant dengan project yang lebih kompleks, stay tune!Anonymoushttp://www.blogger.com/profile/04691754460123169304noreply@blogger.comtag:blogger.com,1999:blog-1933574343102184514.post-38879682114981259052011-03-27T19:00:00.000-07:002011-03-27T19:00:07.127-07:00Bermain Virtual HostOke teman2 lama tidak bertemu sekarang mari kita bermain virtual host. Background dari saya membuat posting ini adalah karena membutuhkan suatu server yang bisa menampung banyak aplikasi web, sedangkan framework yang digunakan adalah symfony yang merekomendasikan agar jangan menaruh aplikasi di web root, terpaksa menggunakan virtual host.<br />
<br />
Langkah pertama edit file httpd.conf sebagai berikut :<br />
<pre>NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.latihan.com
DocumentRoot "C:/latihan/web"
DirectoryIndex index.php
<Directory "C:/latihan/web">
AllowOverride All
Allow from All
</Directory>
Alias /sf C:/latihan/lib/vendor/symfony/data/web/sf
<Directory "C:/latihan/lib/vendor/symfony/data/web/sf">
AllowOverride All
Allow from All
</Directory>
</VirtualHost>
</pre>Keterangan : baris Alias s/d terakhir adalah konfigurasi pada symfony, jika tidak menggunakan symfony bisa dihilangkan.<br />
<br />
Untuk windows edit file "C:\WINDOWS\system32\drivers\etc\host", sedangkan di linux pada /etc/hosts, tambahkan :<br />
<br />
<pre>
127.0.0.1 localhost
127.0.0.1 www.latihan.com
</pre>Anonymoushttp://www.blogger.com/profile/04691754460123169304noreply@blogger.comtag:blogger.com,1999:blog-1933574343102184514.post-6854015864729815112010-12-11T06:24:00.000-08:002011-09-29T23:44:12.596-07:00Pengenalan Spring SecuritySuatu hari Ciplus ditelefon Pak Paijo, manager PT XXX, salah seorang client yang telah meneken kontrak mengembangkan aplikasi berbasis web pada sistem akuntansi di perusahaannya, bulan lalu aplikasi tersebut telah diinstall pada komputer2 di perusahannya. "Halo saya mau komplain ini!" kata beliau di seberang telefon, "Busyet mo komplain aja pake ngrokok segala, mana rokok murahan lagi!" batin Ciplus menahan batuk karena asap yang keluar dari gagang telepon, "Maaf pak tolong rokoknya dimatikan dulu", kata Ciplus dengan sopan. "Oke, saya matikan, tapi tolong kamu kesini sebentar, ini kenapa data pembukuan perusahaan bisa kacau gini? Kamu kesini sekarang, benerin ini program kamu!", kata beliau dengan tegas. "Tapi pak ini kan hari minggu, ini juga baru jam 2 pagi, bagaimana kalau nanti agak siang kira pas jam makan siang bapak, jadi saya bisa nebeng makan gratis?", kata Ciplus. "Yaudah nanti jam 13.00 kamu kesini, nanti saya minta Jessica, pembantu saya, untuk masak tempe goreng dan sambal saja seperti makanan kamu sehari-hari", "Oalah niat mo makan enak saja susah bener, gimana tubuh bisa berisi kalau makanan kurang gizi terus begini". <br />
<br />
Jam 12.30 akhirnya Ciplus berangkat, "Bisa abis makan siang kalo berangkat telat", batin Ciplus sambil lari ngejar angkot, soalnya sopir angkotnya rada gokil, suka mainin penumpang, dicegat disini eh berhentinya 50 meter didepan, terus dikasih waktu 5 detik kalau ga naik bakal ditinggal. Singkat cerita sampailah Ciplus di kantor Pak Paijo dengan terengah-engah, maklum harus oper angkot tiga kali. Aplikasi tersebut ditrace ga ada errornya, sepertinya aplikasinya baik2 saja, kenapa datanya bisa berubah? Akhirnya setelah menyewa detektif swasta diketahui bahwa penyebabnya adalah Steven, OB di kantor tersebut, yang sering bermain-main dengan komputer perusahaan. Bagaimana bisa Steven, Office Boy, bisa mengubah data-data seenaknya? Ternyata aplikasi tersebut tidak diberi modul hak akses, jadi semua orang bisa menggunakan aplikasi tersebut.<br />
<br />
Panjang banget ya ceritanya? Intinya apa sih? Ya intinya security itu penting dalam sebuah aplikasi yang dikembangkan, bisa juga diberikan tingkatan hak akses, sehingga user yang tidak berhak tidak bisa mengakses modul atau mengubah data. Kalau intinya cuma itu kenapa harus dikasih prolog yang panjang? Blog saya ini mengusung tema cerita dalam segala hal, jadi intinya biar beda lah ama blog-blog pada umumnya hehehehe... Satu lagi pertanyaan, kenapa itu nama pembantu dan OB keren-keren begitu? Pak Paijo ini orang kaya dia ga mau cari pembantu orang lokal, maunya pembantu import. Cerita ini fiktif belaka, nama pemeran pun diubah juga biar lebih fiktif lagi.<br />
<br />
Kita bisa mengembangkan modul keamanan kita sendiri, tapi bagi para pengguna Spring, kita bisa menggunakan framework Spring Security untuk mempermudah pekerjaan kita. Kali ini saya ingin berbagi pengalaman menggunakan Spring Security, jadi posting kali ini adalah pengenalan Spring Security. Lain kali saya akan berbagi pengalaman untuk menggunakan Spring Security ini di tingat yang lebih lanjut. Kalo ada teman-teman yang sudah master, boleh lah berbagi ilmunya. Oke saatnya kita serius :-p<br />
<a name='more'></a><br />
Biar up to date, kita menggunakan Spring versi 3.0.x. Bagi yang belum familiar dengan Spring sebaiknya kunjungi blog Bung Endy. ( Nice Blog Sir, I learned a lot from your blog, thx). Saya juga menggunakan NetBeans sebagai IDE-nya. Bagi pengguna IDE lain tidak masalah tinggal menyesuaikan saja. Berikutnya download dulu Spring Security. Extract semua library dan kaitkan dengan NetBeans.<br />
<br />
Buat Project Baru, kategori web.<br />
<br />
Beri nama project, misal LatihanSecurity.<br />
<br />
Selanjutnya tambahkan library yang diperlukan. Edit web.xml seperti di bawah ini.<br />
<br />
<pre><?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name>Latihan Security</display-name>
<!--
- Lokasi dari file XML yang mendefinisikan root application context
- Diaplikasikan oleh ContextLoaderListener.
-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext-security.xml
</param-value>
</context-param>
<!-- Nothing below here needs to be modified -->
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/classes/log4j.properties</param-value>
</context-param>
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>latihan.root</param-value>
</context-param>
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<!--
- MVC application controller. Lihat latihan-servlet.xml.
-->
<servlet>
<servlet-name>latihan</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>latihan</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
</pre><br />
Tambahkan applicationContext-security.xml di folder WEB-INF. Isinya sebagai berikut :<br />
<pre><?xml version="1.0" encoding="UTF-8"?>
<!--
- Application context containing authentication, channel
- security and web URI beans.
-
- Only used by "filter" artifact.
-
-->
<b:beans xmlns="http://www.springframework.org/schema/security"
xmlns:b="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd">
<global-method-security pre-post-annotations="disabled">
<!--<expression-handler ref="expressionHandler"/>-->
</global-method-security>
<http auto-config="true">
<intercept-url pattern="/login.jsp" filters="none" />
<intercept-url pattern="/**" access="ROLE_USER" />
</http>
<authentication-manager>
<authentication-provider>
<user-service id="userDetailsService">
<user name="username" password="password" authorities="ROLE_USER, ROLE_ADMIN" />
<user name="test" password="test" authorities="ROLE_USER" />
</user-service>
</authentication-provider>
</authentication-manager>
</b:beans>
</pre><br />
Tambahkan latihan-servlet.xml di folder WEB-INF. Isinya sebagai berikut :<br />
<pre><?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<value>/*.htm=urlController</value>
</property>
</bean>
<bean id="urlController"
class="org.springframework.web.servlet.mvc.UrlFilenameViewController" />
<!--
untuk contoh kali ini kita pakai jsp saja, simpan semua file jsp ke /WEB-INF/jsp/
sehinggan resolver akan mengarahkan ke sana.
-->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
</pre><br />
Buat file home.jsp di folder /WEB-INF/jsp/ jadi hanya user yang login yang nantinya bisa mengakses halaman ini. Contoh isinya seperti ini :<br />
<pre><%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Home : Latihan Security</title>
</head>
<body>
<h1>Hanya User yang bisa masuk ke sini!</h1>
</body>
</html>
</pre><br />
Selanjutnya coba build dan deploy project tersebut. bila halaman diarahkan ke halaman login, berarti Spring security sudah bekerja. Selamat dan sukses. Jangan lupa syukuran :-D. Posting berikutnya saya akan mencoba mengulas lebih dalam lagi. Kritik dan saran saya tunggu.Anonymoushttp://www.blogger.com/profile/04691754460123169304noreply@blogger.com4tag:blogger.com,1999:blog-1933574343102184514.post-28382447101933100422010-03-03T02:32:00.000-08:002011-09-29T21:06:45.888-07:00Koneksi Internet dengan Modem USB dan SMART di Linux [RESOLVED]Hmm mau curhat lagi nich, lg seneng2nya beli modem baru nich^_^ Bundle dgn kartu SMART, Modem ZTE 2627. Sayang sekali produsennya cuma memberi support pada OS Windows dan Mac. Sedih juga padahal aku kan pemakai Mandriva, pengin juga kan internetan dengan OS kesayangan, apalagi internet broadband dari SMART ini lumayan cepet, murah lagi, cuman signalnya ga begitu stabil. Dari promosinya yang mencapai 3.1 Mbps pengalaman aku paling banter kisaran 900 Mbps itupun jarang banget, tapi keseluruhan aku sangat puas, trims SMART semoga pelayananmu lebih baik lagi.<br />
<br />
OK cukup promosinya skrg kembali ke masalah awal, gimana cara menggunakan modem ini pada Linux ya? Bantuan dari teman-teman semua sangat berarti buat aku, plis bantu aku. Dari googling sana-sini sudah kucoba semampu aku cara mengkoneksikan modem ini. Berikut langkah2 yang telah aku lakukan.<br />
<a name='more'></a><br />
<br />
Pertama-tama modem ini harus dikenali dulu oleh OS-nya dalam hal ini aku memakai Mandriva, masuk ke console login menggunakan user root, tancapkan modem ZTE 2627 ketik :<br />
<pre>lsusb
</pre><br />
<br />
Dari situ didapat :<br />
<pre>[root@localhost dicky]# lsusb
Bus 001 Device 004: ID 0951:1607 Kingston Technology
Bus 001 Device 002: ID 0402:5602 ALi Corp. Video Camera Controller
Bus 001 Device 001: ID 0000:0000
Bus 005 Device 001: ID 0000:0000
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 002: ID 19d2:fff5
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000
</pre><br />
ternyata modem tersebut dikenali sebagai CD-Rom, hal itu bisa dilihat dari kode produknya yaitu fff5. Modem ZTE 2627 ini atau modem sejenis lainnya memiliki driver MS Windows/Mac OS onboard, artinya ketika modem ini pertama kali ditancapkan modem ini berperan sebagai media penyimpanan (flash storage) dan otomatis menginstall driver dari situ. Setelah itu modem itu setiap dihubungkan/ditancapkan akan berpindah mode dari dalam, sehingga dikenali sebagai modem. Fitur ini biasa disebut "ZeroCD".<br />
<br />
Bagaimana kita menerapkan pendekatan ini pada Linux sehingga kita bisa mengganti modem ini secara internal? Dalam hal ini kita harus mengganti kode produk dari fff5 menjadi fff1 yang artinya adalah modem. Kita bisa menggunakan <b>usb switchusb</b>. Tool ini adalah tool untuk mengubah mode dari modem tersebut. Dari keterangan tersebut aku langsung download <a href="http://www.draisberghof.de/usb_modeswitch/">usb_modeswitch</a>. Langsung install saja. Jangan lupa download juga usb_modeswitch.conf dan copy ke directory /etc/. Modifikasi file tersebut, cari konfigurasi untuk modem ZTE 2627, hilangkan tanda ";", berikut configurasi dari aku:<br />
<pre>########################################################
# ZTE AC8710
# ZTE AC2726
# and others
#
# Many new ZTE devices use this sequence. There are
# several ID combinations; check your default
#
# Contributor: Michael Khurtsiya, Amit Pundir and others
;DefaultVendor= 0x19d2
;DefaultProduct= 0xfff5
;TargetVendor= 0x19d2
;TargetProduct= 0xffff
# No. 2
;DefaultVendor= 0x19d2
;DefaultProduct= 0xfff6
;TargetVendor= 0x19d2
;TargetProduct= 0xfff1
# No. 3
DefaultVendor= 0x19d2
DefaultProduct= 0xfff5
TargetVendor= 0x19d2
TargetProduct= 0xfff1
# only for reference and 0.x versions
# MessageEndpoint=0x05
MessageContent="5553424312345678c00000008000069f030000000000000000000000000000"
</pre><br />
Simpan modifikasi, selanjutnya kita harus menambahkan rules/aturan untuk udev, buat file /etc/udev/rules.d/99-zte-ac2726.rules dan masukkan script berikut :<br />
<pre># Smart ZTE AC2726 (EVDO)
SUBSYSTEM==”usb”, SYSFS{idVendor}==”19d2″, SYSFS{idProduct}==”fff5″, RUN+=”/usr/sbin/usb_modeswitch –default-vendor 0×19d2 –default-product 0xfff5 –target-vendor 0×19d2 –target-product 0xfff1 –message-content 5553424312345678c00000008000069f030000000000000000000000000000
</pre><br />
Jika sudah ketikkan perintah <br />
<pre>usb_modeswitch -W</pre>lihat perubahan dengan lsusb, maka seharusnya device tersebut sudah berubah menjadi kode produk fff1. <br />
<br />
Sekarang setelah modem dikenali kita bisa mencoba mengkoneksikan, bisa dengan kppp, wvdial, atau melalui Mandriva Linux Control Center > Setup a new network Interface > GPRS\EDGE\3G.<br />
Misal dengan wvdial, pertama aku buat file /etc/wvdial.conf dengan script :<br />
<pre>[Dialer smart]
Init1 = ATZ
Init2 = [Dialer smart]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Modem Type = USB Modem
ISDN = 0
New PPPD = yes
Phone = #777
Modem = /dev/ttyUSB0
Username = smart
Password = smart
Baud = 460800
</pre><br />
ketik perintah <br />
<pre>wvdial smart</pre><br />
atau dengan kppp. Tapi dari semua cara yang kucoba belum bisa terkoneksi juga, kira2 ada yang tahu penyebabnya?<br />
<br />
<b>UPDATE 30 SEPTEMBER 2011</b><br />
Setelah malalui perjuangan panjang akhirnya aku menyerah, menyerah bukan berarti kalah teman, menyerah untuk berganti strategi yang lebih mumpuni, and strategi yang aku lakukan adalah.....<br />
<br />
<b>Mengupdate Distro Mandriva ke Mandrive 2011 :-D</b><br />
<b> </b>Dengan versi baru modem langsung dikenali bravooo.. tinggal setting aja ke pilihan operator smart yang ada disitu.. udah gitu aja.. simple :-(<br />
Kalo mau yang ada interface seperti di Windows bisa dilihat di <a href="http://mopheat.blogspot.com/2010/08/modem-zte-ac2726-for-mandriva-fedora.html">blog teman ini</a> cuman mungkin ada sedikit masalah dengan hak akses di serial portnya. Solusinya dengan mengganti hak akses dengan perintah :<br />
<pre>chmod +rw /dev/ttyS*
</pre>Good luck^_^Anonymoushttp://www.blogger.com/profile/04691754460123169304noreply@blogger.com4tag:blogger.com,1999:blog-1933574343102184514.post-73553896180872894872010-02-21T06:45:00.000-08:002010-03-03T02:24:55.978-08:00Menggunakan Framework Code IgniterHai semua, setelah berbagai kesibukan yang saya lakukan maka saatnya meluangkan waktu untuk sharing pengalaman dalam blog saya ini. Hmm kali ini saya mau sharing pengalaman aja belajar php dengan Code Igniter. Setelah berhasil <a href="http://deeqee.blogspot.com/2009/09/konfigurasi-apache-web-server-php-dan.html">menginstall apache server</a> dalam komputer saatnya kita manfaatkan ya. Apa gunanya diinstall kalo tidak dipakai hehe ;-p.<br /><br />Pertama kita download dulu <a href="http://codeigniter.com/">Code Igniter</a> disitus resminya. Baca dulu penjelasan disitu mengenai apa itu Code Igniter, MVC, dan istilah2 lainnya. <!-- read more -->Download compressed file-nya dan extract di folder "htdocs". Namai ulang sesuai keinginan, hmm kasih nama "dicky" saja (narsis mode on hehe), sehingga bisa diakses melalui url "http://localhost/dicky". Buka dulu file konfigurasi config.php dalam folder "dicky/system/aplikasi/config" dan ubah nilai dari $config['base_url'] sehingga menjadi :<br /><pre><br />$config['base_url'] = "http://localhost/dicky";<br /></pre><br />Simpan perubahan, jalankan apache server, buka browser, dan pergi ke urll "http://localhost/dicky", jika berhasil maka akan tampil seperti gambar di bawah ini :<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXG2WE59S4ziVZLf6svYrtOHLN6t0WXzyZq1ptgRvvL-8sVXSzZZk13oO5VcvnzFliu3UwbzbzT8bsqod23BZBWZLK7Us0nAGyVj1oi-0ww-QvPtRPejyo_sj9ZpybEBgWHfbYCy-DHdw/s1600-h/succsess.PNG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 103px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXG2WE59S4ziVZLf6svYrtOHLN6t0WXzyZq1ptgRvvL-8sVXSzZZk13oO5VcvnzFliu3UwbzbzT8bsqod23BZBWZLK7Us0nAGyVj1oi-0ww-QvPtRPejyo_sj9ZpybEBgWHfbYCy-DHdw/s200/succsess.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5440713871781374082" /></a><br /><br />OK sekarang framework sudah berjalan dengan baik, saatnya membuat modul sendiri. Code Igniter menggunakan arsitektur MVC, lain kali saya akan bahas arsitektur ini, atau kalian bisa cari2 dulu artikel tentang MVC yang tersebar dimana-mana hehe. Pada posting ini kita belum menggunan model, jadi kita buat dulu controllernya. Buat file dengan nama "coba.php" dan simpan dalam folder "dicky/application/controllers/". Isikan file tersebut seperti dibawah ini :<br /><pre><br /><?php<br />class Coba extends Controller { <br /> function Coba() {<br /> parent::Controller();<br /> }<br /><br /> function tampil($nama) {<br /> $data['nama_kamu'] = $nama;<br /> $this->load->view("coba", $data);<br /> }<br />}<br />?><br /></pre><br /><br />Untuk viewnya buat file dengan nama "coba.php" dan simpan dalam folder "dicky/system/application/views". Isikan seperti dibawah ini :<br /><pre><br /><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><br /><html><br /> <head><br /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><br /> <title>Start Of Web</title> <br /> </head><br /> <body><br /> <h1>Hai <?php echo $nama_kamu; ?>, selamat belajar CI.</h1><br /> </body><br /></html><br /></pre><br /><br />Oke sekarang buka browser dan ketikkan url "http://localhost/dicky/index.php/coba/tampil/Siti". Jika berhasil maka akan tampil halaman dengan tampilan "Hai Siti, selamat belajar CI".<br /><br />Jika kita perhatikan ada hal yang mengganggu di url tersebut, yaitu adanya index.php dalam penulisan url. Saya heran kenapa Developer CI tidak menghilangkan saja ya? Ada yang tahu jawabannya? ;-)<br />Untuk menyingkirkan string "index.php" tersebut biar enak untuk dilihat silahkan tunggu posting berikutnya.Anonymoushttp://www.blogger.com/profile/04691754460123169304noreply@blogger.com0tag:blogger.com,1999:blog-1933574343102184514.post-56514725099263909382009-11-20T01:31:00.000-08:002010-01-28T03:13:31.412-08:00AspectJ di Netbeans 6.7Aku kali ga posting aneh2 lagi, tapi mo sharing aja nich, sapa tau ada temen2 yang bisa bantu, bantuannya makasih banget dech.<br /><br />Ceritanya aku lagi belajar AspectJ nich, lumayan dapat mainan baru Aspect Oriented Programming, masalahnya aku pake IDE NetBeans 6.7, plugin AspectJ buat seri ini ga ada, adanya versi sebelumnya, kalaupun nekat di pake ga bakalan mau. Mungkin ada yang punya solusi?<br /><br />Nah sambil nunggu solusi dari temen2 sekalian aku coba buat manual aja dari IDE NetBeans tersebut, gimana biar mau aku obrak-abrik aja ant scriptnya, setelah beberapa jam baca sana baca sini, googling, akhirnya lumayan dapat pencerahan<a name='more'></a>, pertama aku cari script yang seperti ini :<br /><br /><pre><br /><target depends="init,deps-jar,-pre-pre-compile,-pre-compile,-compile-depend" if="have.sources" name="-do-compile"><br /> <j2seproject3:javac gensrcdir="${build.generated.sources.dir}"/><br /> <copy todir="${build.classes.dir}"><br /> <fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/><br /> </copy><br /></target><br /></pre><br /><br />modifikasi menjadi seperti di bawah ini :<br /><br /><pre><br /><taskdef classpath="lib/aspectjtools.jar" resource="org/aspectj/tools/ant/taskdefs/aspectjTaskdefs.properties" /><br /><target depends="init,deps-jar,-pre-pre-compile,-pre-compile,-compile-depend" if="have.sources" name="-do-compile"><br /> <iajc destdir="${build.classes.dir}" source="1.5" sourceroots="${src.dir}"><br /> <classpath><br /> <pathelement location="lib/aspectjrt.jar"/><br /> </classpath><br /> </iajc><br /></target><br /></pre><br /><br />tidak lupa masukkan library yang dibutuhkan, hmm akhirnya bisa sih eksekusi dari jar filenya, masalahnya kalo di run dari netbeansnya ga mau, jadi compile di netbeans, trus running applicationnya pake ant script tadi atau di luar netbeans alias eksekusi jar filenya. Hmm ada yang tau gimana modifikasi ant scriptnya agar bisa di-run dari netbeans???Anonymoushttp://www.blogger.com/profile/04691754460123169304noreply@blogger.com2tag:blogger.com,1999:blog-1933574343102184514.post-91673472100663210672009-11-16T23:15:00.000-08:002010-01-28T03:15:50.300-08:00Pengantar Java Web StartAlkisah ada seorang programmer di suatu perusahaan yang ditugaskan untuk membuat suatu aplikasi desktop berbasis multi user. Dengan gagah berani programmer itu menjalankan tugasnya dengan penuh tanggung jawab demi perusahaan yang telah membayarnya. Setelah selesai aplikasi tersebut ditunjukkan kepada manager bagian. "Hmmm bagus-bagus, OK sekarang silahkan diinstall pada seluruh karyawan.", "OK boss 36 computer client dalam waktu sehari semua beres". Akhirnya Programmer itu menjalankan tugasnya dan kembali untuk mengerjakan tugas berikutnya.<br /><br />Beberapa minggu kemudian saat sedang sibuknya mengerjakan tugas dari client, programmer tersebut mendapat telefon dari bagian marketing. "Mas Programmer, ini tolong programnya ditambah ini, trus yang ini kalau bisa begini, begitu dan seterusnya...", "OK segera dikerjakan", mas programmer melakukan modifikasi sourcenya meng-compile, kemudian didistribusikan ke 36 client tersebut satu-persatu. Besoknya lagi ditelfon lagi, "Maaaas programmer ini tolong tambahkan modul buat menghitung bla bla bla...". Modifikasi lagi, compile, pergi ke ke 36 client satu-satu diinstall lagi. Mending kalo usernya cantik-cantik, lha ini galak-galak gini, "Gimana sich loe, gua lagi sibuk nich, installnya besok aja, lagian gua juga hari ini ga make!!", Programmer menjawab, "Lah mumpung saya disini mbak, besok saya harus balik lagi, jadi ini sekalian", "Halah itu mah derita loe.. kacian dech jadi programmer!!". Cape deeech.. inilah derita jadi satu-satunya programmer di perusahaan, "Ya Tuhan berilah kesabaran dan solusi", setelah berdoa dia<br />browsing2 di internet dan menemukan Java Web Start. "Ya Tuhan engkau benar-benar mengabulkan doa orang yang teraniaya.."<br /><br />Kisah diatas hanya fiktif belaka, jika ada kemiripan ya itu urusan loe hehe.. Ga usah protes ga usah didebat, yang penting kita ambil hikmah dari cerita dia atas aja.<br /><br />Dari cerita dia atas, kita butuh solusi gimana ya biar kita bisa menciptakan aplikasi yang <a href="http://en.wikipedia.org/wiki/Agile_software_development">agile</a> tanpa harus bersusah payah bolak-balik ke client. Kalau berbasis web sih kita tinggal modifikasi di sisi server, client yang tinggal menggunakan web browser, ga masalah biarpun client ada di ujung dunia sekalipun. Pendekatan ini bisa diterapkan dengan Java Web Start.<a name='more'></a><br /><br /><blockquote>Java Web Start atau dikenal juga dengan JavaWS adalah framework yang dikembangkan oleh Sun Microsystems untuk memulai aplikasi berbasis platform java langsung dari internet menggunakan web browser. (wikipedia.org)</blockquote><br /><br />Tetapi framework ini tidak harus melalui internet (yang mana kita harus menginstall web server), bisa juga melalui jaringan yang menggunkan file server, sehingga aplikasi bisa diletakkan di file server, dan client bisa mendownloadnya.<br /><br />OK langsung saja kita terapkan ga perlu banyak teori. Misalkan kita sudah membuat aplikasi yang siap di distribusikan dengan nama file Application.jar dan beberapa library, misal saja mysql-connector-java-5.1.7-bin.jar, jika kita akan menggunakan web server, maka masukkan di folder misal "jnlp_app" dan letakkan folder tersebut ke default web server host, misal kalau apache di "var/www/" apabila di linux atau "di "$APACHE_BASE_DIR/htdocs/" kalau di windows. Buat file .jnlp dalam folder tersebut misal mulai.jnlp sehingga bisa kita panggil melalui browser dengan alamat<br /><pre>http://namasitus/jnlp_app/mulai.jnlp</pre><br />atau bisa melalui console dengan perintah<br /><pre>javaws http://namasitus/jnlp_app/mulai.jnlp</pre><br />Lah lalu apa isi dari file .jnlp tersebut. Sabar, berikut isi minimal file .jnlp. Untuk konfigurasi yang lebih lengkap silahkan lihat-lihat and coba-coba sendiri di <a href="http://java.sun.com/javase/6/docs/technotes/guides/javaws/developersguide/syntax.html">sun's javaws guides</a><br /><pre><br /><?xml version="1.0" encoding="UTF-8"?><br /><jnlp spec="1.0+" codebase="http://namasitus/jnlp_app/"<br />href="mulai.jnlp"><br /><information><br /><title>JNLP Test</title><br /><vendor>Dicky Inc.</vendor><br /><homepage href="http://www.dickyaw.com" /><br /><description>Test JNLP Application</description><br /></information><br /><resources><br /><j2se version="1.6+" /><br /><jar eager="true" href="Application.jar"/><br /><jar href="mysql-connector-java-5.1.7-bin.jar" /><br /></resources><br /><application-desc main-class="coba.Main" /><br /></jnlp><br /></pre><br /><br />Lalu katanya tadi bisa lewat file server, gimana caranya. File server kan intinya sama dengan file local saja, jika fileserver kita mempunyai alamat IP "192.168.0.3" dan kita letakkan pada folder jnlp_app maka file .jnlp perlu kita rubah pada bagian :<br /><pre><br /><jnlp spec="1.0+" codebase="http://namasitus/jnlp_app/" href="mulai.jnlp"><br /></pre><br />menjadi<br /><pre><br /><jnlp spec="1.0+" codebase="file:////192.168.0.3/jnlp_app/" href="mulai.jnlp"><br /></pre><br />dan kita panggil melalui command prompt :<br /><pre><br />javaws //192.168.0.3/jnlp_app/mulai.jnlp<br /></pre><br /><br />Ada kalanya aplikasi yang kita buat membutuhkan access file ke dalam sistem file workstation client, secara default java akan menolak demi keamanan. Untuk itu kita perlu menambahkan tag security pada file .jnlp agar nantinya ada konfirmasi bagi user apakah aplikasi diijinkan untuk mengakses file system pada workstation-nya.<br /><pre><br /><security><br /><all-permissions/><br /></security><br /></pre><br />Apakah ini cukup, belum, bila ini dijalankan maka akan terdapat error bahwa file2 jar is not signed. Maka kita perlu men-sign semua file jar termasuk librarynya. Langkah pertama kita buat file kunci, masuk ke console ketikkan :<br /><pre><br />keytool -genkey -keystore myKeys -alias jdc<br /></pre><br />Maka akan keluar perintah yang mengharuskan kita mengisi beberapa isian misal nama, password, dsb. Setelah file kunci tersebut berhasil dibuat maka kita sign-kan semua file jar dengan kunci tersebut :<br /><pre><br />jarsigner -keystore myKeys Application.jar jdc<br /></pre><br />Jangan lupa semua library juga kita sign:<br /><pre><br />jarsigner -keystore myKeys mysql-connector-java-5.1.7-bin.jar jdc<br /></pre><br />Demikian seterusnya sampai semua file jar berhasil di-sign.<br /><br />Demikian tutorial ini semoga membantu, jika ada salah mohon kritik dan sarannya.Anonymoushttp://www.blogger.com/profile/04691754460123169304noreply@blogger.com9tag:blogger.com,1999:blog-1933574343102184514.post-79999972611118562252009-09-29T01:22:00.000-07:002010-01-28T03:16:56.032-08:00Makna Cinta SejatiBila telapak tanganmu berkeringat, jantungmu berdetak cepat, suaramu bagai tersangkut, <b>itu bukan cinta tapi suka</b>.<br /><br />Bila tanganmu tak dapat berhenti memegang dan menyentuhnya, <b>itu bukan cinta tapi nafsu.</b><br /><br />Bila kamu menginginkannya karena kamu tau dia akan selalu ada disampingmu, <b>itu bukan cinta tapi kesepian.</b><br /><br />Bila kamu menerima cintanya karena tidak mau menyakiti hatinya, <b>itu bukan cinta tapi kasihan.<br /></b><br />Bila kamu bersedia memberi semua yg kamu sukai demi dia, <b>itu bukan cinta tapi kemurahan hati.<br /></b><br />Bila kamu bangga dan ingin memamerkan ke semua orang, <b>itu bukan cinta tapi kemujuran.<br /></b><br />Bila kamu mengatakan pada dia bahwa ia satu-satunya hal yang kamu pikirkan, <b>itu bukan cinta tapi gombal.</b><br /><br />Kamu mencintai dia...ketika kamu menerima kesalahan dia, karena itu adalah bagian dari kepribadiannya...ketika kamu rela memberikan hatimu, kehidupanmu, bahkan kematianmu.<br />Cinta adalah pengorbanan, mencintai berarti memberi diri.<br />Cinta adalah kematian egoisme dan egosentrisme.<br />Kadang menyakitkan, tapi itulah cinta.<br />Itulah harga yang harus dibayar untuk sebuah cinta.<br /><br /><b>Cinta yang sebenarnya adalah ketika kamu menitikkan air mata...masih peduli terhadapnya adalah ketika dia tak mempedulikanmu dan kamu masih menunggunya dengan setia....adalah ketika dia mulai mencintai orang lain dan kamu masih bisa tersenyum dan berkata 'aku turut berbahagia utkmu'.<a name='more'></a><br />Bila cinta tidak bertemu, bebaskan dirimu, biarkan dirimu ke alam bebas lagi.<br />Kamu mungkin menyadari bahwa kamu menemukan cinta dan kehilangannya.<br />Tapi ketika cinta itu mati, kamu tidak perlu mati bersama cinta itu.</b><br /><br />Namun bila kita benar2 mencintai seseorang, jangan lepaskan dia!!!<br />Bila dia tidak membalasmu, barangkali dia tengah ragu dan mencari.<br />Jangan percaya bahwa melepaskan berarti kamu benar-benar mencintai tanpa suatu balasan.<br />Mengapa tak berjuang demi cintamu?<br />Mungkin itulah cinta sejatimu.<br />Mungkin akan tiba saatnya dimana kamu harus berhenti mencintai seseorang, bukan karena kita menyerah melainkan karena kita menyadari bahwa <b>orang itu akan lebih bahagia bila kita melepaskannya.</b><br /><br />Kadang kala orang yang mencintaimu adalah orang yang tak pernah menyatakan cintanya padamu, karena takut kau berpaling dan memberi jarak.<br />Dan bila suatu saat dia pergi, kau akan menyadari bahwa dialah cinta yg tak kau sadari.<br />Maka, mengapa kau tak mengungkapkan cintamu???<br />Bila memang kau mencitainya, meskipun kau tidak tau apakah cinta itu ada padanya.<br /><br />Lebih menyakitkan menangis dalam hati dari pada menangis tersedu-sedu.<br />Air mata yg keluar dapat dihapus sementara air mata yg tersembunyi menggoreskan luka di hatimu yg takkan pernah hilang.<br />Sayangnya dalam cinta kita jarang peduli.<br />Tapi ketika cinta itu tulus, meskipun kau acuhkan, cinta itu tetap mulia.<br />Dan kamu harusnya bahagia, hatimu dapat mencintai seseorang yang kamu sayangi.<br /><br /><b>Mencintai adalah...bukan bagaimana kau melupakan, tapi bagaimana kau memaafkan...bukan bagaimana kau mendengarkan, melainkan bagaimana kau merasakan...bukanlah apa yg kau lihat, melainkan apa yg kau rasa...bukanlah bagaimana kau melepaskan, tapi bagaimana kau bertahan.</b><br /><br />Dikutip dari berbagai sumber.Anonymoushttp://www.blogger.com/profile/04691754460123169304noreply@blogger.com9tag:blogger.com,1999:blog-1933574343102184514.post-12758569125279714562009-09-27T19:19:00.000-07:002010-01-28T03:17:26.962-08:00Menulis Java Code dan HTML di BloggerArtikel ini menjelaskan cara menuliskan tulisan atau syntax html atau code lain dalam Blogger. Sebab jika kita ingin menuliskan karakter-karakter misal > atau tanda petik maka akan dianggap sebagai script HTML. Jika kamu sudah membaca tulisan saya di posting sebelumnya yaitu <a href="http://deeqee.blogspot.com/2009/09/konfigurasi-apache-web-server-php-dan.html">Konfigurasi Apache Web Server, PHP, dan MyS</a><a href="http://deeqee.blogspot.com/2009/09/konfigurasi-apache-web-server-php-dan.html">QL</a>, dapat dilihat bahwa ada kotak dalam saya menjelaskan penulisan konfigurasi. Bagaimana cara membuatnya? Mari kita ikuti bersama hehe...<br /><br />Sesuai dengan prinsip saya, kalau bisa susah kenapa harus cari yang mudah, hehe.. Prinsip ini dapat dilihat pada postingan saya <a href="http://deeqee.blogspot.com/2009/09/konfigurasi-apache-web-server-php-dan.html">sebelumnya</a>, ini prinsip dalam belajar loch.. tapi kalo untuk pelayanan masyarakat ataupun berhubungan dengan keefektifan bekerja jangan menggunakan prinsip ini. Ingat Itu!!<a name='more'></a><br /><br />OK lanjut dari tujuan semula, pertama kita login dulu ke account blogger kita, masuk ke Dashboard, klik Layout, dan pilih Edit HTML. Cari script :<br /><pre><br />]]></b:skin><br /></pre><br />Tambahkan baris sript ini diatas script tersebut :<br /><pre><br />pre<br />{<br />background:#efefef;<br />border:1px solid #A6B0BF;<br />font-size:120%;<br />line-height:100%;<br />overflow:auto;<br />padding:10px;<br />color:#000000 }<br />pre:hover {<br />border:1px solid #efefef;<br />}<br />code {<br />font-size:120%;<br />text-align:left;<br />margin:0;padding:0;<br />color: #000000;}<br />.clear { clear:both;<br />overflow:hidden;<br />}<br /></pre><br /><br />Sekarang jika kita ingin menuliskan syntax atau script HTML mulailah dengan tag <pre> dan diakhiri dengan </pre>. Ingat bahwa karakter-karakter harus di encode supaya bisa tampil sesuai dengan apa yang kita ha rapkan. Misal jika kita ingin menuliskan <a href="deeqee.blogspot.com">Dicky</a> maka tiap karakter harus diencode, misal karakter < harus dituliskan &lt;, kemudian karakter " harus dituliskan &quot;, dan seterusnya sehingga harus di tuliskan seperti ini :<br /><pre><br /> <pre><br /> &lt;a href="deeqee.blogspot.com"&gt;Dicky&lt;/a&gt;<br /> </pre><br /></pre><br />Pusing mikirin karakter encodenya, bila belum hapal coba link <a href="http://centricle.com/tools/html-entities/">ini</a> atau <a href="http://www.eblogtemplates.com/blogger-ad-code-converter/">ini</a>. Masukkan script kemudian encode, hasil dari script yang diencode kemudian di copy di draft kamu, jangan lupa mulailah dengan tag <pre> dan diakhiri dengan </pre>.<br /><br />Jika temen-temen ada solusi yang lebih gampang mohon di share ke temen-temen yang lain. Ingat untuk belajar jika ada cara yang sulit kenapa harus dengan cara yang mudah?Anonymoushttp://www.blogger.com/profile/04691754460123169304noreply@blogger.com2tag:blogger.com,1999:blog-1933574343102184514.post-23034436133769903462009-09-27T19:17:00.000-07:002010-01-28T03:17:56.768-08:00Konfigurasi Apache Web Server, PHP, dan MySQLBagi yang tertarik belajar bahasa pemrograman <a href="http://php.net/">PHP</a>, tool utama yang harus disiapkan adalah menginstall webserver terlebih dahulu, sekarang ada tool yang bernama <a href="http://www.apachefriends.org/en/xampp.html">XAMPP</a> yang bisa didownload dengan gratis. <a href="http://www.apachefriends.org/en/xampp.html">XAMPP</a> ini merupakan paket yang terdiri dari Apache Webserver, PHP, dan MySQL. Tool ini sangat praktis karena kita bisa langsung menginstall ketiga software tersebut dan langsung bisa digunakan tanpa harus berpusing ria memikirkan konfigurasi untuk mengintegrasiskan ketiga software tersebut.<br /><br />Tapi bagi kita yang mungkin ingin menginstall sendiri ketiga software tersebut, butuh kerja lebih agar dapat berhasil, kali aja kita kan butuh tantangan, bukankah hidup ini perjuangan? hehe..(quote from Dewa), jadi jangan asal enak aja, bisa juga kita ingin mengupgrade salah satu software ke seri yang terbaru, misal kita ingin mengganti MySQL dengan versi yang lebih baru, maka kita cukup mengupgrade MySQL-nya saja tanpa harus mengganti semuanya dengan menginstall <a href="http://www.apachefriends.org/en/xampp.html">XAMPP</a> yang lebih baru. Keuntungan lain dengan menginstall sendiri adalah kita bisa belajar konfigurasi dari masing-masing software tersebut, hal ini berguna jika kita ingin menambahkan konfigurasi lanjutan jika kita sudah semakin mahir.<a name='more'></a><br /><br />OK langsung saja bagi yang ingin bersusah payah silahkan baca artikel saya ini, bagi yang pengin cara mudah silahkan download XAMPP ato tools lain. Artikel yang saya buat ini diperuntukkan untuk pengguna Windows, untuk pengguna Linux saya akan ulas dilain kesempatan.<br /><br />Pertama kita download dahulu installer dari <a href="http://windows.php.net/download/">Apache Web Server</a>. Setelah file berhasil didownload maka eksekusi file tersebut dan lanjutkan proses penginstallan sampai selesai, jika sudah selesai coba test pada browser dengan mengetikkan "localhost" (tanpa tanda petik). Jika muncul tulisan "It's Works! " berarti instalasi Web Server berhasil, tapi jika yang kelura koq malah situs XXX hmmm... berarti ada yang salah pada diri anda wkwkwkwk...<br /><br />OK instalasi Web Server sudah, sekarang apa selanjutnya? Sabaar.. kita sarapan dulu, ga usah terburu-buru ntar keselek... Hmm udah selesai sarapannya? Sekarang kita instal <a href="http://windows.php.net/download/">PHP</a>-nya. Download versi terbaru dari <a href="http://windows.php.net/download/">PHP</a>. Jika sudah selesai file yang terdownload berupa file kompresi dengan ekstensi .zip. Extract file zip tersebut ke directory yang anda mau, misal di C:\Program Files\PHP. Jika sudah download <a href="http://www.blogger.com/www.mysql.com">MySQL</a> dan lanjutkan hingga tahap instalasi selesai.<br /><br />Berikutnya tahap yang agak sulit, kita harus mengkonfigurasikan Apache dengan PHP. Pertama kita konfigurasikan dahulu Apache-nya. Cari file httpd.conf pada folder instalasi atau buka shortcut pada Windows Start --> All Programs --> Apache HTTP Server --> Configure Apache Server --> Edit the Apache httpd.conf Configuration File.<br />Cari tulisan LoadModule kemudian tambahkan 2 baris berikut pada bagian terbawah LoadModule :<br /><pre><br /> LoadModule php5_module "C:/Program Files/php/php5apache2_2.dll"<br /> AddType application/x-httpd-php .php<br /><br /> PHPIniDir "C:/Program Files/php"<br /></pre><br /><br />Tambahkan pada Windows Classpath C:/Program Files/php dan C:/Program Files/php/ext.<br />Selanjutnya buka pada folder instalasi PHP, yaitu C:\Program Files\PHP cari File php.ini-recommended kemudian copykan ke directory yg sama dan rename atau ubah namanya menjadi php.ini kemudian buka file php.ini tersebut. Cari tulisan extension=php_mysql.dll, hilangkan tanda semicolon (;) di depannya. Kemudian cari tulisan extension_dir dan ganti dengan extension_dir = "C:/Program Files/php/ext". Langkah terakhir adalah copy libmysql.dll ke dalam folder c:\windows\system32.<br /><br />Sampai sini seharusnya konfigurasi sudah bisa, restart Apache Server caranya buka Windows Start --> All Programs --> Apache HTTP Server --> Control Apache Server --> Restart. Jika tidak ada peringatan berarti konfigurasi tidak ada kesalahan, sekarang saatnya kita mengetes dengan browser.<br /><br />Buka folder instalasi Apache, masuk ke dalam folder htdocs, rename file index.html dengan index.php. Buka dan hapus semuanya kemudian ganti isinya dengan :<br /><br /><pre><br /> <?php<br /> echo "BERHASIL HOREE!!";<br /> ?><br /></pre><br /><br />Kemudian buka browser ketikkan localhost pada address bar, jika muncul tulisan "BERHASIL HOREE!!" maka instalasi dan konfigurasi kita telah berhasil, selamat.<br /><br />Silahkan tulis comment jika ada komentar, cacian, tanggapan, pujian, atau pertanyaan.Anonymoushttp://www.blogger.com/profile/04691754460123169304noreply@blogger.com2tag:blogger.com,1999:blog-1933574343102184514.post-41024964130304166372009-09-25T00:58:00.000-07:002009-09-25T01:16:40.817-07:00MukadimahPertama-tama saya mengucapkan Selamat Idul Fitri 1430 H Mohon Maap Lahir dan Batin. Lebaran kali ini saya ingin memanage blog ini dengan lebih serius (emg maksudnya serius gmn?hehe), paling enggak blog ini berguna buat saya pribadi, misalnya ada rekan-rekan yang mau berbagi pengalaman dan mau berteman dengan saya melalui blog maka saya mengucapkan terima kasih yang sebesar-besarnya.<br /><br />Sekian dulu kata pengantar ini, saatnya mencari topik buat ngisi ni blog, umm ada saran???Anonymoushttp://www.blogger.com/profile/04691754460123169304noreply@blogger.com0