Loading...

Geliat Cloud 2012, Tahunnya PaaS?

08:00PM Feb 11, 2012 in category Cloud by Dian Aditya

Bicara soal 2012 kembali kita dihadapkan pada topik paling hot di dunia, pasti gak akan jauh-jauh dari isu akhir dari peradaban manusia. Yah, mungkin saya akan berkata hal serupa juga andaikan saat ini saya adalah pengguna smarphone nokia, hehehe... Lupakan.

Kembali kita tarik mundur ke tahun lalu, tahun 2011 yang menurut saya jaman dimana meledaknya barang bernama Cloud. Sebuah infrastruktur/perangkat/informasi/servis/awan/-kabut/petir atau apalah namanya yang sulit dimengerti... Menjadi alasan yang saya anggap cukup kuat, kita tahu dengan populernya facebook, twitter, google, amazon youtube, dan masih banyak lagi web yang memposisikan dirinya sebagai Software as a Service (SaaS), yang secara tidak sadar telah membawa kita ke jaman sentralisasi data. Walauppun sulit untuk dijelaskan, kita dapat dengan mudah menyebut bahwa web-web tersebut adalah cloud.

Lanjut ke topik utama bahasan, PaaS, ya Platform as a Service, nama dan istilahnya masih nyambung-nyambung dengan SaaS, dan tahun 2012 sepertinya adalah tahunnya PaaS. Mengapa begitu, indikasi paling nyata adalah dengan mulai menjamurnya penyedia layanan cloud seperti Amazon dengan EC2, Google dengan Google App Engine (GAE) dan google eclipse plugin-nya, RedHat dengan Openshift, VMWare dengan Cloudfoundry yang didukung dengan Springsource Tool Suite untuk mempermudah development dan proses deploy, tidak ketinggalan ada Jelastic yang dapat melakukan checkout source code dan secara otomatis mengcompile diudara, dan masih banyak lagi. Dan kabar baiknya sebagian besar yang saya sebutkan diatas rata-rata masih bersifat gratis, maka nikmatilah sebelum masa itu berakhir (yang pasti akan terjadi).

Tidak dapat dipungkiri bahwa ini adalah trend, dan developer telah dihadapkan ke posisi yang lebih menyenangkan, menjauh dari model tradisional. Para pengembang aplikasi dapat lebih terfokus terhadap fungsionalitas dan dan kualitas aplikasi ketimbang memikirkan masalah struktur dibawahnya. Begitupun dengan penyedia layanan juga mendapatkan keuntungan dengan berfokus pada penyediaan dan pengelolaan terhadap suberdaya dan infrastrukturnya, kemudian menyediakannya sebagai produk PaaS yang diinginkan oleh user. Sama-sama untung bukan?


Dunia cloud semakin membesar, dan 2012 adalah tahunnya, yang membawa developer terbang jauh ke awan, pilihan kita hanya ikut serta, mendahului, atau tertinggal. Dengan dunia IT yang kecepatan lajunya sudah sangat kencang, mau kemana?

Yang Sering Dilakukan Siswa dan yang Sering Diabaikan oleh Pembimbing dalam Tugas Akhir

12:54AM Jan 16, 2012 in category Experience by Dian Aditya

Akhir Desember lalu saya berkesempatan untuk menjadi penguji eksternal (dari pihak industri) mewakili Meruvian di salah satu SMK swasta top di Kota Malang. Sangat istimewa karena kampung halaman saya berada di Kota Batu yang berdempetan dengan Malang, berasa seperti tiket mudik gratis dimana malamnya saya bisa ketemu teman-teman lama sambil ngopi bareng di pinggiran Jl. Diponegoro, bertemu hawa dingin dan pemandangan gunung di kiri kanan yang asri. #eaaa berasa makin lebay dan gak nyambung dengan judul.

Yap, setelah 2 hari mejeng di depan para siswa sebagai killer, disisi lain banyak diskusi menarik dengan para guru di setiap jeda dan seusai ujian mengenai kompetensi para siswa didiknya. Banyak point yang akhirnya disinggung, terutama masalah standart penyajian aplikasi seperti presentasi, pembuatan flow, DFD, ERD, laporan harcopy yang segepok dan banyak lagi hal-hal yang berbau teoritis yang menariknya belum pernah diajarkan sebelumnya kepada siswa, atau boleh juga dieja 'sudah diajarkan tapi sedikit', dimana point-point tersebut ada dalam lembar penilaian. Berbau menghakimi memang, yah tapi itu kenyataannya, dan saya yakin hal ini terjadi hampir di seluruh SMK (opini subjektif).

Maka dari itu sebagai rekanan industri yang baik #ceile disini saya akan membeberkan beberapa hal yang sering dilakukan siswa dalam tugas akhir yang menjadi point penilaian penguji yang sering luput dari bagian pengarahan pembimbing. Semoga dapat menjadi referensi untuk siswa SMK yang akan menghadapi tugas akhir agar tidak melakukan hal-hal di berikut.

Presentasi

Software: Siswa selalu update, jaman semakin berkembang, tidak salah kalau presentasi harus pakai barang canggih. Maka dipakailah software yang bernama MS Office dengan versi keluaran minimal tahun 2007 (yang kita semua tahu sebagian bersar pasti bajakan).

Estetika: Banyak gambar-gambar bertebaran di slide yang akhirnya berkesan kurang profesional. Ada yang full manga, ada yang suka warna biru sampai semua tulisan dikasih biru dengan backgroundnya laut (mana kelihatan), yang ngefans ayu tingting juga gak mau kalah gitu juga, gak lah.

ERD: Sebagian besar menggunakan entity-relationship model

sebagian kecil lainnya menggunakan object-relational model

Saya juga baru tahu kalau ERD ada macam-macam modelnya :) tetapi object-relational model yang paling lazim digunakan dalam pembuatan aplikasi, ini yang bikin heran kenapa sebagian besar pakai entity-relational model.

Detail teknologi: hampir semua hanya menulis, "Java Web + MySql", "PHP", atau "Java Web + XAMPP" (gak paham yang ini), tanpa dijelaskan secara detail pustaka apa saja yang digunakan, padahal untuk java pasti buanyak pustaka yang dicomot.

Pembatasan Kasus

Ini yang paling suka saya bahas, pengalaman saya juga sebagai siswa biasanya minim ide. Banyak ide yang dibuat seolah berbeda padahal isinya sama, seperti Aplikasi Toko, ada yang membuat Toko Bola online, Toko Musik onlie, dan toko-toko yang lainnya. Disinilah 'seharusnya' peran pembimbing untuk mengarahkan siswa dalam hal kreatifitas yang sering luput.

Ketuntasan aplikasi: ada cerita menarik ketika saya berhadapan dengan siswa yang membuat sebuah aplikasi pemesanan lapangan futsal online.

Siswa : (sambil mendemokan aplikasi) "Berikut ini adalah form pemesanan. User yang akan menyewa lapangan harus mengisi form disini."

Penguji : "Tidak ada register/login? Jadi orang tidak dikenal bisa langsung pesan?"

Siswa : "Mmmm, iya."

Penguji : "Oke silakan dilanjutkan."

Siswa : (Masuk halaman admin) "Kemudian orang yang pesan tadi datanya masuk ke halaman admin."

Penguji : "Kalau ada orang yang mau pesan di jam yang sama?"

Siswa : "Tidak bisa."

Penguji : "Untuk pembayarannya bagaimana?"

Siswa : "Ya... dibayar di tempat."

Penguji : "Kalau yang pesan tidak hadir di hari H?"

Siswa : (hening)

Penguji : "Kalau yang pesan gitu semua gimana hayo?"

Siswa : (hening)

Penguji : (pasang muka baik) "Kan seharusnya ada konfirmasi pembayaran, biar gak bangkrut usahanya."

Siswa : (meringis)

Penguji : "Jadi aplikasi kamu gak tuntas dong, mmm dikasih nilai berapa yah..."

Siswa : (mewek)

Sedikit percakapan diatas bisa menjadi sedikit gambaran bagaimana membuat aplikasi seharusnya tuntas, yah lagi-lagi peran pembimbing untuk melakukan check terhadap aplikasi siswa sebelum datang hari akhir (tugas akhir maksudnya).

Untuk sementara itu saja pengamatan saya tentang pelaksanaan tugas akhir kemarin, inti dari permasalahan yang saya angkat sebetulnya adalah kritikan untuk pembimbing sekolah yang terkadang (mohon maaf) kurang kejam untuk masalah lolos-meloloskan laporan akhir siswa, sehingga siswa seolah menjadi objek penyiksaan penguji eksternal, yang padahal memang sebetulnya aplikasinya belum layak untuk dijadikan tugas akhir. Tetapi terkadang malah diloloskan dengan alasan kasih sayang yang tanpa pandang bulu (opini subjektif). Masih banyak curahat yang belum sempat tersampaikan, mungkin lain kali bakal lebih panjang lagi bahasannya.

Semoga SMK makin maju. Salam "SMK Sakti Mandraguna, gak cuma bisa-bisaan..."


Criteria Query, Hibernate dan JPA 2.0 (JPA2 part 1)

04:27AM Nov 12, 2011 in category Java by Dian Aditya

Deploy Cimande pada Weblogic 10.3

02:40AM Nov 08, 2011 in category Java by Dian Aditya

Baru hangat-hangat nih, berbarengan dengan Release Blueoxygen Cimande versi 2.0, ada request untuk menjalankannya pada Weblogic Middleware versi 10.3. Semula saya pikir gak akan jauh beda dengan server-server enterprise lain yang pernah saya coba seperti Glassfish (saja). Dengan bermodal pede (tempe kedele) saya coba jalankan dengan menggunakan Cargo Maven Plugin dengan menambahkan konfigurasi seperti ini:

<plugin>
    <groupId>org.codehaus.cargo</groupId>
    <artifactId>cargo-maven2-plugin</artifactId>
    <version>1.1.3</version>
    <configuration>
        <container>
            <containerId>weblogic103x</containerId>
            <home>/home/dian/Oracle/Middleware/wlserver_10.3/</home>
        </container>
        <cargo.protocol>http</cargo.protocol>
        <cargo.hostname>localhost</cargo.hostname>
        <cargo.servlet.port>7001</cargo.servlet.port>
        <cargo.weblogic.administrator.user>default</cargo.weblogic.administrator.user>
        <cargo.weblogic.administrator.password>guecakep</cargo.weblogic.administrator.password>
        <context>cimande</context>
    </configuration>
</plugin>

Dan benar ketika saya jalankan dengan perintah clean verify cargo:run, mantra yang tidak diharapkan muncul

  

Caused By: java.lang.ClassNotFoundException: org.apache.struts2.views.JspSupportServlet

   at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:297)

   at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:270)

   at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:64)

   at java.lang.ClassLoader.loadClass(ClassLoader.java:307)

   at java.lang.ClassLoader.loadClass(ClassLoader.java:248)

   at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:179)

   ...

Yap, class yang diinginkan tidak ditemukan, dan ajaibnya seluruh library yang dibutuhkan (termasuk struts2-core-2.x.jar dimana terdapat class (org.apache.struts2.views.JspSupportServlet) sudah ada di folder webapp library (WEB-INF/lib) di dalam WAR yang telah dicompile. Googling punya googling ada sedikit pencerahan, dimana seluruh library yang dibutuhkan oleh webapp harus diletakkan di root EAR project. Ya benar, agak aneh, ada pemaksaan untuk menjadikan project saya menjadi enterprise archive, walaupun didalamnya tidak ada EJB-nya. Sehingga untuk struktur maven-nya pun berubah menjadi seperti ini.

Ada satu parent project yang memiliki 2 module yaitu berupa webapp (dengan packaging WAR) dan ear (dengan packaging EAR).

Karena semua library akan diletakkan pada EAR maka untuk menghindari duplikasi file jar, maka ada sedikit perubahan scope cimande-core pada webapp dari compile menjadi provided, artinya library tidak akan ikut disertakan ketika webapp di package menjadi WAR.

<dependency>
    <groupId>org.blueoxygen.cimande</groupId>
    <artifactId>cimande-core</artifactId>
    <version>${cimande.sdk.version}</version>
    <scope>provided</scope>
</dependency>

Berikut isi dari konfigurasi pom.xml pada parent project

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.blueoxygen.cimande</groupId>
    <version>1.0</version>
    <artifactId>cimande-enterprise-parent</artifactId>
    <packaging>pom</packaging>
    <name>Cimande Enterprise Parent</name>
    <properties>
        <cimande.sdk.version>2.0</cimande.sdk.version>
    </properties>
    <modules>
        <module>ear</module>
        <module>webapp</module>
    </modules>
    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-site-plugin</artifactId>
                    <configuration>
                        <unzipCommand>/usr/bin/unzip -o > err.txt</unzipCommand>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
    <dependencies>
        <dependency>
            <groupId>org.blueoxygen.cimande</groupId>
            <artifactId>cimande-core</artifactId>
            <version>${cimande.sdk.version}</version>
        </dependency>
    </dependencies>
</project>

Dan Cargo Maven Plugin untuk menjalankan Weblogic saya letakkan pada pom.xml module ear, untuk mendeploy aplikasi dalam bentuk EAR.

<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.blueoxygen.cimande</groupId>
    <artifactId>cimande-enterprise</artifactId>
    <packaging>ear</packaging>
    <version>1.0</version>
    <name>Cimande Enterprise</name>
    <parent>
        <groupId>org.blueoxygen.cimande</groupId>
        <artifactId>cimande-enterprise-parent</artifactId>
        <version>1.0</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.blueoxygen.cimande</groupId>
            <artifactId>cimande-webapp</artifactId>
            <version>1.0</version>
            <type>war</type>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-ear-plugin</artifactId>
                <configuration>
                    <generateApplicationXml>true</generateApplicationXml>
                    <defaultLibBundleDir>lib/</defaultLibBundleDir>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.cargo</groupId>
                <artifactId>cargo-maven2-plugin</artifactId>
                <version>1.1.3</version>
                <configuration>
                    <container>
                        <containerId>weblogic103x</containerId>
                        <home>/home/dian/Oracle/Middleware/wlserver_10.3/</home>
                    </container>
                    <cargo.protocol>http</cargo.protocol>
                    <cargo.hostname>localhost</cargo.hostname>
                    <cargo.servlet.port>7001</cargo.servlet.port>
                    <cargo.weblogic.administrator.user>default</cargo.weblogic.administrator.user>
                    <cargo.weblogic.administrator.password>tulalit13</cargo.weblogic.administrator.password>
                    <context>cimande</context>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <properties>
        <cimande.sdk.version>2.0</cimande.sdk.version>
    </properties>
</project>

Tak lupa yang terakhir (juga hasil googling) buat file weblogic-application.xml pada direktori {ear.home}/src/main/application/META-INF/, yang merupakan file deployment descriptor spesifik Weblogic server untuk application.xml dari Sun Microsystem. Dalam file ini konfigurasi yang dibutuhkan seperti shared library dideskripsikan.

<?xml version="1.0" encoding="UTF-8"?>
<weblogic-application
    xmlns="http://www.bea.com/ns/weblogic/weblogic-application">
    <application-param>
        <param-name>webapp.encoding.default</param-name>
        <param-value>UTF-8</param-value>
    </application-param>
    <prefer-application-packages>
        <package-name>antlr.*</package-name>
        <package-name>javax.persistence.*</package-name>
        <package-name>org.apache.commons.*</package-name>
        <package-name>org.springframework.*</package-name>
        <package-name>org.hibernate.*</package-name>
    </prefer-application-packages>
</weblogic-application>

Dan akhirnya setelah semua mantra yang dituliskan diatas dijalankan satu per satu secara berurutan, maka tibalah saat-saat yang mendebarkan yaitu menjalankan aplikasi. Berikut langkah-langkah untuk menjalankannya.

  • masuk ke dalam direktori parent-project, kemudian masukkan perintah mvn clean install untuk menginstal ear dan webapp pada repository lokal.
  • masuk ke dalam direktori ear kemudian jalankan perintah mvn cargo:run
  • buka browser, pada contoh konfigurasi diatas Cimande dapat diakses melalui http://localhost:7001/cimande-webapp

Dan akhirnya dengan modal pede + googling saya berhasil menjalankan BlueOxygen Cimande pada Weblogic Server.

NB: mengingat konfigurasi diatas cukup rumit, tim developer saat ini sedang mempersiapkan Maven archetype untuk mempermudah user mengembangkan Cimande project diatas Weblogic dengan cukup menggenerate archetype yang akan segera tersedia di maven central.

Menginstall Maven 3 pada Ubuntu

02:30PM Oct 07, 2011 in category Java by Dian Aditya

Sekedar mengembalikan postingan yang sempat hilang ditelan bumi :D

Posted on August 03, 2011 by Dian Aditya

Hari ini saya telah berhasil mengupgrade versi Maven pada ubuntu 10.04 saya dari versi 2.x ke versi 3.x. Berbeda dengan versi sebelumnya, Maven 3 tidak tersedia pada paket update Ubuntu, sehingga cara instalasinya berbeda pula dengan Maven 2.

Ilustrasi

$sudo apt-get install maven3

Mungkin akan terasa nikmat jika perintah diatas berjalan dengan mulus :D

Ok, saya rasa semuanya sudah mengerti. Berikut proses instalasi Maven 3 pada Ubuntu secara manual. Sebelumnya pastikan java telah terinstal terlebih dahulu.

  1. Download paket Maven 3 di sini. Kemudian extract paket yang sudah didownload.
    Pada kasus ini paket saya extract pada /opt
  2. $tar -xzvf apache-maven-3.0.3-bin.tar.gz

  3. Tambahkan PATH variable pada environtment file.
  4. $sudo gedit /etc/environment

    JAVA_HOME="/opt/jdk1.6.0_21"
    M3_HOME="/opt/apache-maven-3.0.3"
    MAVEN_HOME="/opt/apache-maven-3.0.3"
    M3="/opt/apache-maven-3.0.3/bin"

  5. Rubah PATH, biasanya seperti ini
  6. PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"

    Menjadi seperti berikut

    PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/apache-maven-3.0.3/bin"

  7. Logout

Setelah proses diata selesai, login kembali, kemudian lakukan cek versi maven.

$mvn -version

jika berhasil seharusnya konsol mengembalikan hasil seperti berikut

Apache Maven 3.0.3 (r1075438; 2011-03-01 00:31:09+0700)

Maven home: /opt/apache-maven-3.0.3

Java version: 1.6.0_21, vendor: Sun Microsystems Inc.

Java home: /opt/jdk1.6.0_21/jre

Default locale: en_US, platform encoding: UTF-8

OS name: "linux", version: "2.6.32-33-generic", arch: "i386", family: "unix"