Archive for November, 2007



20
Nov
07

JavaME is *not* dead!

It’s growing up. Sheesh. Some folks are far too eager to misinterpret statements and put words in my mouth. The early versions of JavaME were very simple and limited, a direct reflection of the fact that early phones themselves were simple and limited: we had to work with what we had. But as time has passed, and cell phones have become more powerful and capable, JavaME has grown up too. Cell phones are becoming the new desktop. We’ve been saying this for years. Over time, it’s pretty clear that JavaME and JavaSE will converge and become largely indistinguishable. It goes both ways: JavaSE has a much more sophisticated graphics API, and JavaME is growing there. JavaME has a location API (GPS) and one could easily make the argument that it should be available in JavaSE.

This is a process of evolution, not “out with the old, in with the new”.

JavaFX mobile contains within it an implementation of JavaME. It is not some weird new beast.

ps: source ➡ http://blogs.sun.com/jag/

Advertisements
18
Nov
07

Ketemu masalah lagi di RMI

Ada 3 tabel dalam database ➡ berita, kategori dan anggota. Tiap tabel saya buatin interface sendiri untuk yang nantinya juga akan di implementasikan ke tiga class berbeda, berita, anggota dan kategori. Implementasi dari ketiga interface itu adalah method-method yang digunakan untuk berinteraksi dengan database, misalnya implementasi dari interface berita adalah method-method yang digunakan untuk mengambil, menyimpan dan menghapus data khusus dari tabel berita. Begitu juga yang lainnya.

Karena ada tiga interface berbeda, berarti saya juga harus buatin rebind dengan nama yang berbeda. Misalnya untuk anggota saya rebind dengan nama Anggota


try {
	AnggotaInterface anggota = new AnggotaController();
	Naming.rebind("Anggota", anggota);
} catch(Exception ex) {
	ex.printStackTrace();
}

untuk berita saya rebind dengan nama Berita


try {
	BeritaInterface berita = new BeritaController();
	Naming.rebind("Berita", berita);
} catch(Exception ex) {
	ex.printStackTrace();
}

begitu pula untuk kategori. Kemudian saya pikir bagaimana untuk menjalankan ketiganya bersamaan? Pisahkan ketiga rebinding itu dalam tiga class yang masing mengimplementasikan Runnable, anda tau maksud saya 😈 Setelah itu buatkan satu class master, dimana dari class itu akan dibuatkan thread untuk masing” object dari ketiga class sebelumnya.


package server;

/**
 *
 * @author JollkY
 */
public class MasterServer {

    /** Creates a new instance of MasterServer */
    public MasterServer() {
        // buatkan object masing""
        BeritaServer berita = new BeritaServer();
        AnggotaServer anggota = new AnggotaServer();
        KategoriServer kategori = new KategoriServer();

        // buatkan thread masing""
        Thread threadBerita = new Thread(berita);
        Thread threadAnggota = new Thread(anggota);
        Thread threadKategori = new Thread(kategori);

        // jalankan thread" tersebut
        threadBerita.start();
        threadAnggota.start();
        threadKategori.start();
    }    

}

Sebenarnya, saya belum coba apakah ini berhasil atau tidak 😯 :mrgreen: ini kan baru idenya aja tapi sudah ditulis dan belum di eksekusi, saya was” soalnya 😐

Jalan gak yak 👿

17
Nov
07

Iterasi data array dalam array [php]

Kode akan lebih teratur jika menggunakan cara ini 😀

Buat class sendiri yang manangani hubungan dengan database (database.php)


<?php

class HandleDataBase {

function getAllData() {

$query = "SELECT data1,data2,data3,data4,data5 FROM aTable";

$rs = mysql_query($query);

$daftarData = array();

$indexCounter = 0;

while(list($data1,$data2,$data3,$data4,$data5)=mysql_fetch_array($rs)) {

$data = array("data1"=>$data1,

"data2"=>$data2,

"data3"=>$data3,

"data4"=>$data4,

"data5"=>$data5);

$daftarData[$indexCounter] = $data;
$indexCounter++;
}

return $daftarData;

}

}

?>

Dengan begini saya telah memisahkan kode” sensitif dengan interface, paling tidak filenya, sampe skarang tujuan saya melakukannya agar kode terlihat rapi saja. :mrgreen: .Kemudian kode yang akan menggunakan fungsi di atas


<?php

&#91;... disini buat koneksi ke database ...&#93;

require("database.php");

$d = new HandleDataBase();

$daftarData = array();

$daftarData = $d->getAllData();

print_r($daftarData);

foreach($daftarData as $key) {

foreach($key as $field => $value)  {

echo $field." : ".$value;

echo "<br />";

}

}

<?

&#91;/sourcecode&#93;
kode ini ➡ <strong>print_r($daftarData);</strong> dipakai untuk menampilkan data mentahya dalam bentuk array, bentuk datanya adalah array dalam array sehingga perlu untuk dilakukan 2 kali iterasi:


<?php

&#91;....&#93;

foreach($daftarData as $key) {

foreach($key as $field => $value)  {

echo $field." : ".$value;

echo "<br />";

}

}

[....]
?>

17
Nov
07

Laut yang tenang tidak akan melahirkan pelaut yang tangguh

Hari ini saya makan siang special bareng si ghondrong dan pacarnya Ici. Makan siang di KS (Kampung Steak), skali” makan “besar” :mrgreen: . Dalam perjalanan saya ngomong ke ghondrong:

(Ini versi EYD-nya, soalnya kita ngomong pake inggris “british” 😈 )

jolly: “tox, ternyata kita dah tua yak!!! Udah ada 2 angkatan di bawah kita”

ghondrong: “Iya nih, seharusnya saya udah bisa buat sistem operasi sendiri kayak Linus Torvalds”

ghondrong: “Linus bikin sistem operasi pas tahun keberapa kuliah yak jol?”

jolly: “Gak tau tox.”

ghondrong: “Kita blum bisa bikin, mungkin kuliah kita kurang tantangan.”

ghondrong: “Betul juga kata orang ➡ Laut yang tenang tidak akan melahirkan perlaut yang tangguh”

jolly: “Iyak, di FTI kurang tantangan kali yeee?”

ghondrong: “Tugasnya gak terlalu sulit, dan tidak mematikan, Lihat tuh anak” elektro, biar IP kecil” tapi mereka terbiasa dengan hal yang sulit”

jolly: “Tul, kita terbiasa dengan kemudahan, dikasih tugas susah ngeluh, dikasih yang gampang eh malah kopi-paste, Maunya maen tyussss.

Nah gitu deh kenyataannya, saya masih merasa kurang ditantang saat kuliah ini, saya harus cari tantangan sendiri, untuk bisa berkembang. Ayo fakultasku tercinta tantang saya, jangan ragu, berikan pukulan terbaikmu kepada saya, saya akan memberikan balasannya pasti 😈

15
Nov
07

Java-Hibernate Codes [technical]

2 Hal yang saya suka menggunakan framework hibernate, Pertama-saya gak perlu bikin database secara langsung, cukup bikin designnya aje pake DBDesigner ➡ bikin class untuk modelnya/setter-getter ➡ bikin file hibernate.cfg.xml yang bakalan ngasih tahu apa aja properties dari app itu skalian ama keterangan koneksi ke database dan nama databasenya supaya databasenya langsung dibuatin secara otomatiiiis 😈 and xml untuk tiap table supaya table-table-nya juga ikut dibuatin. Jadi waktu yang biasa dipake untuk bikin database, bisa dialihkan untuk boker yang laen :mrgreen: . Kedua-codingnya relatif lebih dikit, dan mudah untuk maintainance.

OK dah saya mulai dengan buat hibernate.cfg.xml dulu:


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>
        <!-- DB Connection Setting -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/mybook</property>
        <property name="connection.username">dbuser</property>
        <property name="connection.password">dbpass</property>

        <!-- SQL Dialect -->
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

        <!-- JDBC Connection pool -->
        <property name="connection.pool_size">1</property>

        <property name="hibernate.c3p0.min_size">5</property>
        <property name="hibernate.c3p0.max_size">20</property>
        <property name="hibernate.c3p0.timeout">1800</property>
        <property name="hibernate.c3p0.max_statements">50</property>

        <!-- Enable hibernate's automatic session context management -->
        <property name="current_session_context_class">thread</property>

        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

	<!-- Show the sql query when it executed -->
	<property name="show_sql">true</property>

        <property name="hbm2ddl.auto">update</property>

        <mapping resource="model/Buku.hbm.xml"/>
        <mapping resource="model/Category.hbm.xml"/>

    </session-factory>
</hibernate-configuration>

tahap satu selesai, lanjut ke tahap 2 ➡ skarang saya bikin file xml untuk tiap table. Yang pertama dan terakhir 😯 table Buku [ ex]:


<?xml version="1.0" encoding="UTF-8"?>

<!--
    Document   : Buku.hbm.xml
    Created on : September 3, 2007, 11:29 PM
    Author     : JollkY
    Description:
        Purpose of the document follows.
-->
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
    <class name="model.Buku" table="BUKU">
        <id name="id" column="ID" type="java.lang.Long">
            <generator class="native"/>
        </id>
        <property name="title" column="TITLE" type="java.lang.String" length="100"/>
        <property name="page" column="PAGE" type="java.lang.Integer" length="5"/>
        <property name="publisher" column="PUBLISHER" type="java.lang.String" length="100"/>
        <property name="writer" column="WRITER" type="java.lang.String" length="100"/>
    </class>
</hibernate-mapping>

Perhatikan code di atas, untuk name=”model.Buku” menyatakan <namaPaket>.<namaClass> sedangkan table=”BUKU” merupakan name tabelnya. Kemudian untuk name=”id” menyatakan nama variable untuk id pada class Buku dalam paket model. Sedangkan column=”TITLE” akan menjadi salah satu nama kolom saat table BUKU diciptakan.

tahap 3 ➡ bikin class model untuk table Buku:


package model;

/**

*

* @author JollkY

*/

public class Buku {

private long id;

private String title;

private int page;

private String publisher;

private String writer;

/**

* Creates a new instance of Buku

*/

public Buku() {

}

public long getId() {

return id;

}

public void setId(long id) {

this.id = id;

}

public String getTitle() {

return title;

}

public void setTitle(String title) {

this.title = title;

}

public int getPage() {

return page;

}

public void setPage(int page) {

this.page = page;

}

[...bleh...bleh...bleh...]

}

tahap 4 ➡ class yang akan berinteraksi dengan DB:


package dao;

import java.util.ArrayList;
import java.util.List;
import model.Buku;
import org.hibernate.Session;

/**
 *
 * @author JollkY
 */
public class BukuDAO {

    /** Creates a new instance of BukuDAO */
    public BukuDAO() {
    }

    public Buku getBuku(long id, Session session) {
        Buku book = (Buku) session.load(Buku.class, id);
        return book;
    }

    public List getBooks(String publisher, Session session) {
        List listBook = new ArrayList();
        listBook = session.createQuery("SELECT buku FROM Buku buku WHERE buku.publisher= :input").setParameter("input", publisher).list();
        return listBook;
    }

}

satu lagi:


package dao;

import org.hibernate.Session;

/**
 *
 * @author JollkY
 */
public class ObjectDAO {

    /** Creates a new instance of ObjectDAO */
    public ObjectDAO() {
    }

    public void save(Object obj, Session sess) {
        sess.save(obj);
    }
    public void delete(Object obj, Session sess) {
        sess.delete(obj);
    }
    public void update(Object obj, Session sess) {
        sess.update(obj);
    }
 }

tahap 5 ➡ class percobaannya:


package tester;

import dao.BukuDAO;
import dao.ObjectDAO;
import java.util.List;
import model.Buku;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

/**
 *
 * @author JollkY
 */
public class tester {

    /** Creates a new instance of tester */
    public tester() {
    }

    public static void main(String[] args) {
        SessionFactory sessFactory = new Configuration().configure().buildSessionFactory();
        Session sess = sessFactory.getCurrentSession();
        sess.beginTransaction();
        BukuDAO dao = new BukuDAO();
//        Buku buku = dao.getBuku(1, sess);
//        System.out.print(buku.getTitle()+" | ");
//        System.out.print(buku.getWriter()+" | ");
//        System.out.print(buku.getPublisher()+" | ");
//        System.out.println(buku.getPage());

        List<Buku> listBuku = (List<Buku>)dao.getBooks("Andi Publisher", sess);
        for(Buku b:listBuku) {
            System.out.print(b.getTitle()+" | ");
            System.out.print(b.getWriter()+" | ");
            System.out.print(b.getPublisher()+" | ");
            System.out.println(b.getPage());
        }

//        Buku book = new Buku();
//        book.setId(3);
//        book.setTitle("Fedora Core 4");
//        book.setWriter("Sto");
//        book.setPublisher("Andi Publisher");
//        book.setPage(240);
//        new ObjectDAO().update(book,sess);
        sess.getTransaction().commit();
    }

}

💡 Maap buru” jadi penjelasannya kurang, nanti deh abis kuliah saya edit lagi nih posting. later budy 😈

14
Nov
07

Serializable? saya kira saya mulai paham

Saya tulis kode ini:

package model;
import java.io.Serializable; 

public class bookModel implements Serializable {
    private int id;
    private String title;
    private String writer;
    private String publisher;
    private int page;
    /** Creates a new instance of bookModel */
    public bookModel() {
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    [...ble..ble..ble...]

}

class di atas merupakan class serializable, kenapa perlu mengimplementasi Serializable? Karena nantinya setelah object dari class ini tercipta, object tersebut akan di passing ke-class lain dan di pakai di sana. Kedua class harus tahu tipe data dari object tersebut sehingga dapat digunakan dengan baik.Misalnya, saya menciptakan object dari class di atas:

 bookModel book = new bookModel();

Jika object itu diakses melalui jaringan (socket, RMI, dll) tipe data dari object tersebut akan menjadi Object. Jadi book menjadi bertipe Object. Padahal class lain yang memerlukan object book harus tahu tipe aslinya (bookModel). Untuk mengetahui itu, maka perlu di-deserialize / casting object tersebut:


//rmi

bookModel book = (bookModel)Naming.lookup("bookDesign");

Untuk itulah diperlukan java serialization yang mempermudah proses-proses pertukaran object.

13
Nov
07

Mengapa tidak? kuliah cukup 1 jam

Cukup banyak yang saya bicarakan bareng temen saya itoxXx. Salah satunya kuliah tentang kuliah dengan waktu 1 jam saja, menurut kami akan lebih menyenangkan dan efektif. Selama ini kuliah di tempat saya UKSW fakultas FTI waktu kuliah tuh ada yang 2 jam dan ada yang 3 jam. Si gondrong ItoxXx yang ngaku sering mengeluarkan ide-ide yang kontroversial mengatakan pada saya kalau kuliah 1 jam full untuk suatu matakuliah dan dalam satu minggu di bagi menjadi 2-3 pertemuan akan lebih efektif dan efisien dari pada kuliah dua jam membosankan yang belum tentu full dan dalam 1 pertemuan tiap minggu. Jika tiap pertemuan untuk suatu matakuliah berlangsung hanya 1 jam, menurut kita bedua akan lebih menyenangkan sebab saat lebih dari 1 jam saya akan mulai jenuh, gak tau yang lain. Apa lagi klo dosen yang kurang semangat, saya juga ikutan gak semangat, dan klo hanya sejam saya akan sangat bersedia mengikuti kuliah hingga akhir, kan cuma 1 jam. Jadi semua yang dijelaskan akan saya simak dengan baik, tapi klo udah lebih belum tentu, sehingga walopun 2 jam tapi belum tentu semuanya bisa saya pahami. Resikonya tiap hari bisa full kuliah.

Bandingkan dengan 2 jam pertemuan untuk tiap matakuliah. Biasanya gak nyampe 2 jam dah pulang, bukan gak nyampe 2 jam yang jadi masalah, tapi pertemuan yang tidak efektif, jadi jangan heran klo banyak makeup class, khususnya FTI. Pernah saya alami dan saya sangat menyayangkan, yaitu dikelas saya dimana blum selesai pertemuannya, barisan blakang dah tandus, padahal tau ndiri klo kuliah yang pull itu bagian blakang. Dosennya gak bisa bikin apa” karena kenyataannya situasi kelasnya … T.T

Sangat disayangkan kan? dan waktu itu kuliahnya tiga jam, buset, sapa yang mau kuliah tiga jam full. Keluar” pala jadi panas, bukan karena konsen tapi karna emang puanas.

Ayo silahkan coba ide so gondrong yang cemerlang itu. 🙂 munkin aja berhasil, sbab anda tidak akan pernah tahu tempe, saat anda tidak pernah mencoba.

h4ppy thuesday pal




November 2007
S S M T W T F
« Oct   Dec »
 12
3456789
10111213141516
17181920212223
24252627282930

Top Clicks

  • None

Blog Stats

  • 18,097 hits
Advertisements