Loading...

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"

Cimande 2.0-RC2 Release

09:07AM Jul 14, 2011 in category Java by Dian Aditya

Hampir tidak terasa sudah satu tahun sejak rencana major release BlueOxygen Workspace (Cimande) versi 2.0 dicetuskan dengan mengusung konsep Representational State Transfer (ReST). Diawali dengan lahirnya versi Release Candidate 1 (RC1) akhir tahun lalu, yang juga merupakan awal dari dimulainya mobilisasi terhadap beberapa produk BlueOxygen yang secara keseluruhan berjalan diatas platform Cimande. Dengan dukungan multiple representational yang masih dan terus disempurnakan hingga saat ini diharapkan dalam major release mendatang Blueoxygen Workspace benar-benar menjadi platform yang ramah akan perangkat mobile, baik itu mobile web maupun native (Android, iPhone, Blackberry, dll).

Prototype Cimande versi tablet dengan jQuery Mobile SplitView

Berbeda dengan versi sebelumnya, banyak hal spesial yang terjadi dalam pengembangan RC2 ini yang membuat waktu release sempat mundur dari jadwal yang sudah direncanakan. Sedikit bocoran, banyak diantaranya yang belum dituliskan pada roadmap dan tiba-tiba ada pada RC2 ini. Secara teknis, berikut beberapa perubahan dan fitur terbaru yang telah ditambahkan :

Full ajax support

Dengan dukungan ajax secara penuh, semua proses request dan response telah ditangani pada background sehingga membuat aplikasi berjalan lebih cepat. Modul-modul yang berjalan diatas Cimande Platform juga secara otomatis akan terintegrasi dengan fitur ajax ini sehingga aplikasi yang sudah berjalan sebelumnya tidak perlu ditulis ulang untuk menyesuaikan dengan versi Cimande ini. Penggunaan http method diluar POST dan GET dalam tag <form> seperti PUT, HEAD, DELETE juga dimunggkinkan dengan ketentuan browser mendukung XMLHttpRequest.

Layout dan tema baru

Setelah hampir satu dekade setia dengan tema lama, dalam rangkaian major release ini Cimande v2 telah berganti kulit dengan tema berlatar biru tua, warna khas BlueOxygen, serta dengan logo Blueoxygen terbaru.

Maven Build Tool & Archetype

Yang paling menarik dari versi 2 ini adalah perubahan build tool yang selama ini menggunakan Ant menjadi Maven dengan plugin dan dependency managementnya yang sangat powerfull. Hal ini sedikit banyak juga telah membuang kesan Cimande yang kurang akur dengan IDE selain Eclipse. Sehingga developer yang akan mengembangkan aplikasi dia atas Platform Cimande dapat memilih menggunakan IDE sesuai dengan selera yang dikehendaki. Saat ini Cimande telah di-host di java.net, dengan Nexus yang telah termirror dengan Maven Central membuat para pengembang cukup menggenerate archetype untuk membuat sebuah workspace yang siap pakai. Langkah untuk melakukan generate archetype berada pada artikel berikut.

Hingga saat ini tim pengembang masih terus melakukan optimasi untuk relesase berikutnya.

Hal yang tak pernah lupa untuk disebutkan, BlueOxygen Cimande merupakan produk OpenSource dibawah Lisensi Apache. Seluruh source code berada pada cimande.java.net.