Archive for November 12th, 2007

12
Nov
07

Sistem yang bagus.

Sekarang jam 4:37 pagi, dan tadi (alias kemaren) jam 5 sore saya pulang dari kantor (BISTEK). Lalu kuterus tidur. Yang sangat di sayangkan dan tak disangka saya bangun jam 9:40 malam, Buset dah. Yang bukan seharusnya jam tidur eh malah tidur. Untuk itu saya tebus deh tuh kelalaian, makanya saya gak tidur sampe skarang jam 4:40. Btw ada untungnya juga saya tidur jam 5 sore trus gak tidur sampe pagi. Suasana menjadi sangat tenang, jadinya saya bisa konsen dan “belajar” dengan sukses. Eits jangan salah kaprah tuh kata belajarnya, Kan belajar sumbernya bisa dari mana aja. Internet contohnya. Tapi skarang rasa lapar benar” terasa, dari tadi nih perut kriuk-kriuk >.< mo makan gak tau makan apa? yawdah tahan aja lah.

Saya sempat mikir bagaimana kalo ini diteruskan? tapi yang menjadi pertimbangan, klo tidur jam 5 sore trus bangun jam 10, nanti gak bisa maen ke kosnya temen dong, ato gak bisa maen DoTA bareng itoxx (temen karib saya sejak SMA). nih potonya:

untitled1.png yang paling parah makan malam terlambat>.< jadi kemungkinan untuk dilakukan lagi sangat kecil, soalnya lebih banyak gak enaknya. Nanti ajalah hari-hari tertentu gitu. Pas tes akhir ato lagi ada tugas gitu.

Ya udalah cepek liatin monitor trus :)

Later…

 

 

 

 

12
Nov
07

Info free file sharing

Nih ada file sharing yang cukup bagus:

1. www.4shared.com kapasitas 5 GB and bisa ganti” theme. Tampilannya kayak window gitu.

filesharing.png

2. www.bestsharing.com klo mau cepat pke ini aja, gak perlu login”, upload langsung deh di kasih link download ama skalian link delete. Supaya klo dah “bosan” bisa di delete, org lain ga bisa donlod lagi. Trus bisa di kasih email supaya link” tsb dikirim ke email kita, jadi ndak perlu nyatet ato hapal” link na.

filesharing2.png

3. www.filecrunch.com bisa daftar bisa gak terserah pilih mana, yang penting bisa upload dan di share:)

filecrunchdotcom.png

4. www.orbitfiles.com Keren, pake ajax soalnya. Optionnya banyak jadi keliatan kayak file manager gitu. Bisa earn cash juga, sistem referal. Ada juga fasilitas untuk jualan file. Ayo daftar….!!!

orbitfilesdotcom.png

5. www.imageshack.us Lumayan nih, tapi yang ini free image hosting. Klo mao share gambar” upload di sini, nanti dikasih share link.

imageshackdotus.png

12
Nov
07

Problem in writing RMI-database application, but it solved today :)

Dari hari jumat kemaren saya nulis aplikasi database sederhana tapi nerapin RMI di dalamnya, untuk manggil method yang berfungsi untuk melakukan beberapa proses ke database. Dari hari jumat ketemu masalah dan stuck di situ, connection variabel yang sial itu selalu null. Hari ini dah ketemu pemecahannya, satu dari sekian cara mungkin :(

Sebelum lanjut berikut ini pemahaman saya tentang RMI, RMI itu di pake memanggil method yang ada di komputer lain (bisa jadi server) secara remote. Untuk memakai suatau method sebenarnya saya cukup membuat object dari class yang memiliki method yang ingin dipakai dan memanggil method itu via object tsb. Tapi bagaimana klo method tersebut ada di komputer lain? Karena itulah saya pake RMI. Bagaimana teori kerjanya secara masih sedang dipelajari. Nanti saya tulis dipost selanjutnya. Ok lanjut…

Editor yang saya pake NETBEANS 5.5 dengan JDK 1.5

Ini model tabel database-nya dari app yang dibuat:

table.png
Berhubung saya juga nerapin arsitektur MVC maka saya buat modelnya(setter/getter) dulu:

Code:


package model;

import java.io.Serializable;

/**

*

* @author JollkY

*/

public class Book implements Serializable {

	private int id;
 	private String title;
	private int page;
	private String publisher;

	private String writer;</font>

	/** Creates a new instance of Book */
	public Book() {

	}

	public int getId() {
		return id;
	}

	public void setId(int id) {

		this.id = id;

	}

	public String getTitle() {

		return title;

	}

	public void setTitle(String title) {

		this.title = title;

	}

	[........ source lengkapnya di http://www.4shared.com/file/29059871/5faf7c8/src.html .......]
}

Sebelum lanjut untuk membuat controller dan DAO-nya, diperlukan design method-nya dulu dalam suatu interface sehingga untuk controller dan DAO-nya tinggal implements aje gitu.Code: package design;

import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.List;
import model.Book;

/**
*
* @author JollkY
*/
public interface dataAccessObject extends Remote {
public int saveBook(Book objBuku) throws RemoteException;
public int deleteBook(int idBuku) throws RemoteException;
public int editBook(Book objBuku) throws RemoteException;
public List<Book> getAllBook() throws RemoteException;
public Book getBookById(int id) throws RemoteException;
public Book getBookByTitle(String title) throws RemoteException;
public Book getBookByWriter(String writer) throws RemoteException;
}

err… dari listing method yang ada di interface itu, saya baru buat coding lenkap untuk method getAllBook(), yang lainnya blum. Blum sempat aja. Selanjutnya adalah buat File koneksi dolo.

Code:

package Connection;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
*
* @author JollkY
*/
public class DBConnection {
private Connection con = null;
private String DRIVER = “com.mysql.jdbc.Driver”;
private String URL = “jdbc:mysql://localhost:3306/mybook”;
private String USER = “binsus”;
private String PASS = “phpBB2″;
/**
* Creates a new instance of DBConnection
*/
public DBConnection() {
if(con==null) {
try {
Class.forName(DRIVER).newInstance();
this.con = DriverManager.getConnection(URL, USER, PASS);
} catch(Exception ex) {
ex.printStackTrace();
}
}
}

public Connection getConnection() {
return this.con;
}

[.....Source lengkap di sini.....]
}

Abis itu buat code untuk controller dan DAO. Controller dan DAO ini yang merupakan implement dari interface dataAccessObject, nantinya di letakkan di sisi server yang dipakai server untuk membuat koneksi dan melakukan akses ke database.

Berikut code controller

Code:

package controller;

import Connection.DBConnection;
import dao.BookDao;
import design.dataAccessObject;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.ArrayList;
import java.util.List;
import model.Book;

/**
*
* @author JollkY
*/
public class BookController implements dataAccessObject {

/** Creates a new instance of BookController */
public BookController() throws RemoteException {
UnicastRemoteObject.exportObject(this);
}

public int saveBook(Book objBuku) throws RemoteException {

return 0;
}

public int deleteBook(int idBuku) throws RemoteException {

return 0;
}

public int editBook(Book objBuku) throws RemoteException {

return 0;
}

public List<Book> getAllBook() throws RemoteException {
List<Book> listBook = new ArrayList<Book>();
DBConnection con = new DBConnection();
BookDao dao = new BookDao(con.getConnection());
listBook = dao.getAllBook();
return listBook;
}

[.....Source lengkap di sini....]
}

berikut code DAO,

Code:

package dao;

import Connection.DBConnection;
import design.dataAccessObject;
import java.rmi.RemoteException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import model.Book;

/**
*
* @author JollkY
*/
public class BookDao implements dataAccessObject {
private Connection con = null;
private PreparedStatement st = null;
private ResultSet rs = null;
int sukes = 0;

/** Creates a new instance of BookDao */
public BookDao(Connection con) {
this.con = con;
}

public int saveBook(Book objBuku) throws RemoteException {

return 0;
}

public int deleteBook(int idBuku) throws RemoteException {

return 0;
}

public int editBook(Book objBuku) throws RemoteException {

return 0;
}

public List<Book> getAllBook() throws RemoteException {
String query = “SELECT * FROM buku”;
List<Book> daftarBuku = new ArrayList<Book>();
if(this.con==null) {
System.out.println(“Con null”);
}
try {
this.st = this.con.prepareStatement(query);
this.rs = this.st.executeQuery();
while(this.rs.next()) {
Book b = new Book();
b.setId(this.rs.getInt(1));
b.setTitle(this.rs.getString(2));
b.setPage(this.rs.getInt(3));
b.setPublisher(this.rs.getString(4));
b.setWriter(this.rs.getString(5));

daftarBuku.add(b);
}
} catch (SQLException ex) {
ex.printStackTrace();
}
return daftarBuku;
}

[....sorce lengkap di sini....]

}

Code untuk server

Code:

package Server;

import controller.BookController;
import design.dataAccessObject;
import java.rmi.Naming;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;

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

/** Creates a new instance of ServerBook */
public ServerBook() {
try {
// String name = “dataAccessObject”;
dataAccessObject bookController = new BookController();
// dataAccessObject stub = (dataAccessObject) UnicastRemoteObject.exportObject(bookController, 0);
// Registry regist = LocateRegistry.getRegistry();
// regist.rebind(name, stub);

Naming.rebind(“dataAccessObject”, bookController);
System.out.println(“Server Ready”);
} catch(Exception ex) {
ex.printStackTrace();
}
}

public static void main(String[] args) {
new ServerBook();
}

}

Naming.rebind(“dataAccessObject”, bookController); - berguna untuk melakukan remote call ke RMI registry yang ada di localhost.

Code untuk client

Code:

package Client;

import controller.BookController;
import design.dataAccessObject;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.util.List;
import model.Book;

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

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

public static void main(String[] args) {
try {
//Registry regis = LocateRegistry.getRegistry();
//dataAccessObject dataBuku = (dataAccessObject) regis.lookup(“dataAccessObject”);

Object obj = Naming.lookup(“dataAccessObject”);
dataAccessObject dataBuku = (dataAccessObject) obj;
// BookController dataBuku = new BookController();

List<Book> allBook = dataBuku.getAllBook();
// System.out.println(allBook);
for(Book b:allBook) {
System.out.println(b.getId());
System.out.println(b.getTitle());
System.out.println(b.getPage());
System.out.println(b.getPublisher());
System.out.println(b.getWriter());
System.out.println(“======================”);
}
} catch (Exception ex) {
ex.printStackTrace();
}
}

}

Naming looku, untuk melihat apakah di dalam rmiregistry ada object dengan nama “dataAccessObject”. Obect ini sebenarnya bertipe dataAccessObject, tetapi saat “diambil” dari rmiregistry dia kehilangan tipe datanya. Untuk perlu dilakukan casting

dataAccessObject dataBuku = (dataAccessObject) obj;

Compiling and Running…

1. Lakukan hal berikut. Klik kanan pada nama project -> pilih Properties -> klik menu Run -> Browse main class -> pilih class server (“ServerBook” untuk app saya). Hal ini berguna untuk memberitahukan pada java, untuk menjalankan class ini saat saya mengeksekusi file .jar -nya.

2. Compile fil-file tersebut

compiling.png

3. Buat class stub dan skeleton -nya.

stub_skel.png

4. Jalankan rmregistry. Lakukan ini dalam folder src, sebab akan gagal saat menjalankan server jika dilakukan di luar folder src. Blum tau juga apa sebabnya T.T

start_rmi.png

5. Pindah ke folder dist dan eksekusi file .jar -nya

run_jar.png

6. Eksekusi file file client

done.png

Hampir lupa ini struktur project di netbean -nya

struct.png

Masalah yang saya temukan adalah saat saya menjalankan server sama dengan cara menjalankan client, variabel connection selalu null. Tapi setelah melakukan point 1 dan point 5 server berjalan dengan lancar. Dan jangan lupa pada class Book perlu implements Serializable. :)

Link download http://www.4shared.com/file/29059871/5faf7c8/src.html

that’s all for today, Gracias :)




 

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

c

Top Clicks

  • None

Blog Stats

  • 7,766 hits