Pemasangan Glassfish v3 (preview version)

Wednesday, November 18, 2009 | rizan

Salam,

Glassfish ialah satu product open source dikeluarkan oleh Sun Microsystem untuk memberi kemudahan kepada pengguna untuk mengimplementasikan JEE 5/6.

Kali ini saya aturkan langkah-langkah untuk pemasangan Glassfish di atas Fedora Core 11.

  1. Muat turun Glassfish di alamat ini. File yang saya gunakan ialah
    latest-glassfish-unix.sh  
  2. Setelah selesai muat turun, tukar mod +x untuk menjadikan ia executable.
  3. "sh latest-glassfish-unix.sh" di dalam command prompt anda.
  4. Ikut langkah pemasangan yang disediakan, username, termasuk pendaftaran Sun Community. Saya memasangnya di direktori "/opt/glassfish"
  5. Setelah selesai pemasangan, untuk memulakan (startup) Glassfish, gunakan command ini: "/opt/glassfish/bin/asadmin start-domain domain1" di mana domain1 adalah folder baru
  6. Buka browser dan masukkan alamat ini: http://localhost:8080/ dan http://localhost:4848/ untuk pengurusan server
Sekian.

Rujukan:
1) http://www.scribd.com/doc/19252518/Step-by-Step-Install-Guide-Sun-GlassFish-v3-on-Linux-v10
2) http://tuxtraining.com/2008/11/14/installing-glassfish-2-on-ubuntu-710

Pasang JDK untuk Fedora 11

Sunday, September 27, 2009 | rizan

Salam,

Novice Linux user macam saya ni kena tulis nota banyak2 pasal selalu lupa. Ni macam mana nak setup JDK pulak. Hari tu dah install JDK 1.6 ni tapi tak boleh run java dr command prompt/console.

  1. Download latest JDK (http://java.sun.com/javase/downloads/index.jsp). Yang saya guna version 1.6.0_16 dan install jdk-6u16-nb-6_7_1-linux-ml.sh (macam yg saya guna ni)
  2. Cari lokasi JDK yg dah installed. # updatedb; locate javac | grep bin
    /usr/local/jdk1.6.0_16/bin/javac
  3. # alternatives -- install /usr/bin/java java /usr/local/jdk1.6.0_16/bin/java 100
  4. # alternatives -- install /usr/bin/javac javac /usr/local/jdk1.6.0_16/bin/javac 100
  5. # alternatives -- install /usr/bin/jar jar /usr/local/jdk1.6.0_16/bin/jar 100
  6. # /usr/sbin/alternatives --config java (dan buat utk ketiga2 command dan pilih yg sesuai)
  7. # java -version (utk lihat sama ada betul JDK yg installed)
Terima Kasih

Maxis Broadband with Linux (Fedora 11)

Wednesday, September 23, 2009 | rizan

Salam 'Eidul Fitr kepada semua,

Sudah berkurun tak kemaskini blog ni, tapi kali ni tak berkaitan langsung dengan programming.

Sudah 2,3 minggu cuba buat sambungan guna Maxis Broadband atas Fedora 11. Modem yang digunakan di sini ialah Huawei E1762. Alhamdulillah, baru dapat resolved.

Steps (ni berdasarkan http://petermag.blogspot.com/ , thanks Peter)

  1. yum install usb_modeswitch
  2. Ubah/tambah /etc/usb_modeswitch.conf; kat bawah ni saya punya:
    #Huawei E1762
    DefaultVendor= 0x12d1
    DefaultProduct= 0x1446
    ;DefaultProduct= 0x1003

    TargetVendor= 0x12d1
    ;TargetProduct=0x1003
    TargetProduct= 0x1446

    # choose one of these:
    ;DetachStorageOnly=1
    ;HuaweiMode=1

    MessageEndpoint=0x01
    MessageContent="5553424300000000000000000000001106
    0000000000000000000000000000"

  3. vi /etc/udev/rules.d/15-huawei-e1762.rules
    SUBSYSTEM=="usb", SYSFS{idProduct}=="1446", SYSFS{idVendor}=="12d1", RUN+="/lib
    /udev/usb_modeswitch"
  4. Restart untuk aktifkan Tak payah restart, cabut dan masukkan kembali (untuk aktifkan)
  5. Guna NetworkManager; Klik kanan untuk Edit Connection, isikan butiran yang perlu. (Sila rujuk manual Maxis Broadband)
  6. Voila....
Sekian Terima Kasih....

Template Method (Roti lagi...)

Tuesday, January 10, 2006 | rizan

Assalamu'alaikum,
Salam Ei'dul Adha utk semua muslimin/muslimat, selamat bercuti utk yg bukan muslim.

Finished this chapter during the holiday, from this book

From Huston
Define the skeleton of an algorithm in an operation, deferring some steps to client subclasses. Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm's structure.

Lebih kurang sama jer definition.

Kita ada steps dlm sesuatu tugas/kerja, tapi mcm ada yg sama prosedur utk membuat sesuatu. Selalu jugak lepak kedai mamak usyar (tengok) depa ni buat roti. Most of it, sama jer step dia, so came out with this :

abstract class Roti {
final void siapOrder() {
uliTepung();
tebar();
tambahPerisa();
goreng();
letakDlmPinggan();
}

void uliTepung() {
System.out.println("Tgh uli tepung");
}

void tebar() {
System.out.println("Tebar lebar2");
}

abstract void tambahPerisa();

void goreng() {
System.out.println("Letak minyak dan goreng");
}

void letakDlmPinggan() {
System.out.println("Potong & letak dlm pinggan yg BERSIH");
}

}

class RotiPisang extends Roti {
public RotiPisang() {
System.out.println("\n\nSedia Roti Pisang");
}

void tambahPerisa() {
System.out.println("Potong pisang nipis2 dan tambah");
}
}

class RotiSardin extends Roti {
public RotiSardin() {
System.out.println("\n\nSedia Roti Sardin");
}

void tambahPerisa() {
System.out.println("Tambah sardin");
}

}

public class RotiTemplateDemo {
public static void main(String[] args) {
RotiPisang rotiPisang = new RotiPisang();
rotiPisang.siapOrder();

RotiSardin rotiSardin = new RotiSardin();
rotiSardin.siapOrder();
}
}

Yang membezakan antara Roti Pisang & Roti Sardin, perisa dia saja. So kita asingkan perisa dia dlm concrete class tetapi steps dia sampai siap roti tu, sama. Sebab tu la kita letak final utk stress kan yg prosedur tak boleh ubah.

Wassalam.
p/s : next mungkin kita boleh letak hook (utk bezakan pilihan customer)

Roti Telur, anyone ?

Wednesday, January 04, 2006 | rizan

Assalamu'alaikum,

Disebabkan first post cerita psl mamak, so kita ambik contoh makanan yg mamak buat, Roti Canai. Memang roti canai ni takkan terdapat di mana2 dlm dunia ni kecuali Malaysia. Originated from Malaysia. Berkat hasil usaha org kita (especially mamak) dlm menghasilkan variety roti canai, terhasillah contoh ni.

abstract class Roti {
String description = "Unknown Roti"; //tak tau lagi roti apa ni...
public String getDescription() {
return description;
}
public abstract double cost();
}

class RotiKosong extends Roti {
public RotiKosong() {
description = "Roti";
}
public double cost() {
return 0.5;
}
}

abstract class RasaDecorator extends Roti {
public abstract String getDescription();
}

class Telur extends RasaDecorator {
Roti roti;

public Telur(Roti roti) {
this.roti = roti;
}

public String getDescription() {
return roti.getDescription() + " Telur";
}

public double cost() {
return .30 + roti.cost();
}
}

class Bawang extends RasaDecorator {
Roti roti;

public Bawang(Roti roti) {
this.roti = roti;
}

public String getDescription() {
return roti.getDescription() + " Bawang";
}

public double cost() {
return .20 + roti.cost();
}
}

class Planta extends RasaDecorator {
Roti roti;

public Planta(Roti roti) {
this.roti = roti;
}

public String getDescription() {
return roti.getDescription() + " Planta";
}

public double cost() {
return .30 + roti.cost();
}
}


class Pisang extends RasaDecorator {
Roti roti;

public Pisang(Roti roti) {
this.roti = roti;
}

public String getDescription() {
return roti.getDescription() + " Pisang";
}

public double cost() {
return .40 + roti.cost();
}
}

public class RotiDemo {
public static void main(String[] args) {
//roti telur saja
Roti roti = new RotiKosong();
roti = new Telur(roti);
System.out.println(roti.getDescription()
+ " RM" + roti.cost());

//my favourite, roti pisang
roti = new RotiKosong();
roti = new Pisang(roti);
System.out.println(roti.getDescription()
+ " RM" + roti.cost());

//roti telur campur bawang goreng dgn planta :-)
roti = new RotiKosong();
roti = new Bawang(roti);
roti = new Telur(roti);
roti = new Planta(roti); //goreng dgn planta
System.out.println(roti.getDescription()
+ " RM " + roti.cost());
}
}

Contoh ni menggunakan Decorator Pattern, kalau ikut Huston,
"Attach additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing for extending functionality."

Senang cerita, kita menggunakan decorator utk menambah sifat kepada sesuatu object (secara dinamik). Kalau ikut contoh di atas, cost adalah bergantung kpd setiap bahan yg digunakan. Maknanya, kalau kita ada tambahan bahan nak bg sedap lg roti, kita boleh tambah lg dan cost overall roti bertambah automatically. Kalau harga bahan2 naik, cthnya pisang, kita hanya ubah Pisang saja.

Demikianlah adanya.

Chain of Responsiblity (CoR)

Wednesday, December 28, 2005 | rizan

Assalamu'alaikum,

Dah lama jugak tak update sejak 1st post dulu, sibuk sesangat sejak masuk company baru ni.
Banyak benda kena belajaq :-)

Apa dia CoR ni ? Salah satu pattern yg dlm category behavioral.
"Satu object handle specific request tanpa mengetahui apa yg dibuat oleh object lain. Kalau object tu tak blh handle, dia akan pass kpd object lain sampai jumpa"

Cth code:
abstract class Mamak {
Mamak mamak;
public void assignMamak(Mamak mamak) {
this.mamak = mamak;
}
public abstract void buatKerja();
public abstract void ambikOrder(String order);
}

class MamakRotiCanai extends Mamak {
public void buatKerja() {
System.out.println("roti canai siap !!!");
}
public void ambikOrder(String order) {
if(order.equals("roti canai"))
this.buatKerja();
else
if(mamak != null)
mamak.ambikOrder(order);
}
}


class MamakTehTarik extends Mamak {
public void buatKerja() {
System.out.println("teh tarik siap !!!");
}
public void ambikOrder(String order) {
if(order.equals("teh tarik"))
this.buatKerja();
else
if(mamak != null)
mamak.ambikOrder(order);
}
}

public class MamakDemo {
public static void main( String[] args ) {
MamakTehTarik mamakTehTarik = new MamakTehTarik();
MamakRotiCanai mamakRotiCanai = new MamakRotiCanai();
//tgh buat rantaian...
mamakTehTarik.assignMamak(mamakRotiCanai);

String[] order = new String[] {"roti canai", "teh tarik", "pasembor"};//pasembor tak akan jumpa specific mamak
for(int i = 0; i < order.length; i++) {
String o = order[i];
System.out.println("order " + o);
mamakTehTarik.ambikOrder(o);
}
}
}

p/s : Terima Kasih kpd en Hamdi di atas cth di atas

1st post

Wednesday, July 20, 2005 | rizan

Assalamu'alaikum, salam sejahtera...

1st post, no more can I say...