Copyright © Ari Kuswanto
Design by Dzignine
Rabu, 29 September 2010

Liku-liku Hidup

Berjalan mengikuti langkah kaki, menuju aliran sungai kehidupan yg entah dimana akn berakhir terus sampai ke ujungya..

Perjalanan itu pasti ada rintanganya. Dalam aliran itu pasti ada air.

Air adalah pemberi kehidupan, tp bs jg sebagai perampas kehidupan.

Ketika kita lihat aliran air yg begitu tenang, hening, dan sunyi. Pasti akan berkata, aknkah hidup bisa damai seperti air itu ?

Kata siapa air yg seperti itu damai ? Siapa tahu di dalam air itu terdapat sampah, atau buaya (hewan buas) yg bs membhayakan.

Justru, hidup ini harus seperti air yg mengalir deras. Menembus semua rintangan yg ada. Dan bahkan bs membuat lubang pada kerasnya bebatuan.

Masalah itu pasti ada di dalam kehidupan. Namun, tergantung bgaimana Qt menanggapinya. Akankah kita menanggapinya dgn tenang atau diam tanpa ada usaha seperti air yg tenang. Atau berusaha menghancurkan masalah tersebut seperti air deras yg menghancurkan batu besar di hadapanya.

Akhir-akhir ini, kenapa semakin bnyak orang yg menyerah pada keadaan.

Dimana rasa semangat dan pantang menyerah itu kawan ?

Catatan ini saya buat bukan untuk org yg setiap malam menangisi masalah dlm hidupny, tanpa ada penyelesaian yg berarti. Hey.. Wake up !! Gak da mslah yg slesai dengan menangisinya..

Seandainya hidup ini indah, tanpa ada msalah dan hanya ada cinta. Tp, itu tidak mungkin !! Gak ada orang yg maju hanya dengan kebhagiaan, tp orang bs maju krna belajar dari kesalahan mereka. Dan tentunya memperbaikinya..

Tetap semangat kawan !! Kejarlah cita2mu, kejarlah cintamu !! Lakukan pa yg ingin km lakukan. Jgn pedulikan org lain ! Dengarlah kata hatimu. Jika langkah yg kau ambil itu salah, yakinlah.. Akan ada kesempatan untuk memperbaikinya..

Semoga sukses Kawan... I'll miss U guys
Rabu, 22 September 2010

Kumpulan Contoh Program JSP (Java Server Page)

Program III – 1. Bit.jsp

  • Membuat file baru Bit.jsp
  • Mengedit script yang ada menjadi seperti pada table coding dibawah.
  • Menyisipkan script java, ditandai dengan cetak tebal.
  • Digunakan untuk melakukan operasi matematika dengan mengeksekusi perintah berdasarkan bit seperti yang telah dicetak dibagian kiri.
  • Deploy, lalu Run, dan buka internet Eksplorer, dan inputkan pada Address, seperti tampilan di bawah ini:


 

Tugas III – 1.

Beri kesimpulan hasil operasi bit diatas. Tuliskan penjelasannya untuk setiap operator.

Operator:

  • & (and)
  • | (or)
  • ^ (xor)
  • ~ (bukan untuk biner)
  • << (geser kiri)
  • >> (geser kanan)
  • >>> (geser kanan – unsigned)

Kesimpulan: Operator dapat beroperasi pada level bit (0 dan 1)

Script Bit.jsp 


 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">


 

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Operasi Bit</title>

</head>

<body>

<%

    out.println("9 & 10 = " + (9 & 10) + "<BR>"); //and

    out.println("29 & 7 = " + (29 & 7) + "<BR>"); // and


 

    out.println("9 | 10 = " + (9 | 10) + "<BR>"); // or

    out.println("29 | 7 = " + (29 | 7) + "<BR>");


 

    out.println(" ~185 = " + (~185) + "<BR>");


 

    out.println("-29 & 7 = " + (-29 & 7) + "<BR>");


 

    out.println("29 << 1 = " + (29 << 1) + "<BR>");


 

    out.println("29 >>> 1 = " + (29 >>> 1) + "<BR>");

    out.println("-29 >>> 1 = " + (-29 >>> 1) + "<BR>");

%>

</body>

</html> 


 


 

Program III – 2. MyCast.jsp

  • Membuat file baru MyCast.jsp
  • Mengedit script yang ada menjadi seperti pada table coding dibawah.
  • Menyisipkan script java, ditandai dengan cetak tebal.
  • Deploy, lalu Run, dan buka internet Eksplorer, dan inputkan pada Address, seperti tampilan di bawah ini:


 


 

Script MyCast.jsp 

<%@page contentType="text/html"%>

<%@page pageEncoding="UTF-8"%>


 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">


 

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Type Casting</title>

</head>

<body>


 

<%

    int i = 65;


 

    char hasil = (char) i;


 

    out.println("Hasil: " + hasil);

%>


 

</body>

</html>


 

Tugas III – 2.

Lakukan casting dari suatu variable a = 56 bertipe integer menjadi type char!


 


 

Script MyCastA.jsp 

<%@page contentType="text/html"%>

<%@page pageEncoding="UTF-8"%>


 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">


 

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Type Casting</title>

</head>

<body>


 

<%

    int a = 56;


 

    char hasil = (char) a;


 

    out.println("Hasil: " + hasil);

%>


 

</body>

</html> 


 

Program III – 3. Album.jsp


 


 

Script Album.jsp 

<%@page contentType="text/html"%>

<%@page pageEncoding="UTF-8"%>


 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">


 

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Contoh Pembuatan Kelas</title>

</head>

<body>


 

<%!

    class AlbumLagu {

        String judul;

        String artis;

        int tahunRilis;


 

    //Konstruktor

    public AlbumLagu(String judul,

             String artis,

             int tahunRilis) {

    this.judul = judul;

    this.artis = artis;

    this.tahunRilis = tahunRilis;

}


 

    //Metode

    public String infoJudul() {

        return(judul);

    }

    public String infoArtis() {

        return(artis);

    }

    public int infoTahunRilis() {

        return(tahunRilis);

    }

}

%>

<%

    AlbumLagu album = new AlbumLagu("Take Me To Your Dream","Tom Grant",1998);

    out.println("Judul Album: " + album.infoJudul() + "<BR>");

    out.println("Artis: " + album.infoArtis() + "<BR>");

    out.println("Tahun: " + album.infoTahunRilis() + "<BR>");

%>

</body>

</html> 


 

Tugas III – 3.

Beri Kesimpulan dari Program diatas


 


 

Program III – 4. Konversi.jsp


 


 


 


 


 

Script Konversi.jsp 

<%@page contentType="text/html"%>

<%@page pageEncoding="UTF-8"%>


 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">


 

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Konversi Data</title>

</head>

<body>


 

<FORM>

    Masukkan sebuah bilangan bulat: <BR>

    <INPUT TYPE=TEXT NAME=bil><BR>

    <INPUT TYPE=SUBMIT VALUE="Proses">

</FORM>


 

<%

    String strBilangan = request.getParameter("bil");

    if (strBilangan != null) {

        int bilangan =     Integer.valueOf(strBilangan).intValue();

    out.println("110% dari " + bilangan + " = " + (1.1 * bilangan));

}


 

%>


 

</body>

</html> 


 

Program III – 5. Lulus.jsp


 


 


 

Script Lulus.jsp 

<%@page contentType="text/html"%>

<%@page pageEncoding="UTF-8"%>


 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">


 

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Contoh if Sederhana</title>

</head>

<body>


 

<FORM>

    Masukkan nilai Ujian (0 - 100) : <BR>

    <INPUT TYPE=TEXT NAME=nilai><BR>

    <INPUT TYPE=SUBMIT VALUE="Proses">

</FORM>


 

<%

    String strNilai = request.getParameter("nilai");

    if (strNilai == null)

        strNilai = "0";


 

    int nilai = Integer.valueOf(strNilai).intValue();

    out.println("Nilai ujian = " + nilai + "<BR>");


 

    String hasil = "Tidak Lulus";

    if (nilai >= 60)

        hasil = "Lulus";


 

    out.println(hasil);

%>


 

</body>

</html> 


 

Program III – 6. Lulus2.jsp


 


 

Script Lulus2.jsp

<%@page contentType="text/html"%>

<%@page pageEncoding="UTF-8"%>


 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">


 

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Contoh if - else</title>

</head>

<body>


 


<FORM>

    Masukkan nilai Ujian (0 - 100) : <BR>

    <INPUT TYPE=TEXT NAME=nilai><BR>

    <INPUT TYPE=SUBMIT VALUE="Proses">

</FORM>


 

<%

    String strNilai = request.getParameter("nilai");

    if (strNilai == null)

        strNilai = "0";


 

    int nilai = Integer.valueOf(strNilai).intValue();

    out.println("Nilai ujian = " + nilai + "<BR>");


 

    if (nilai >= 60)

        out.println("Lulus");

    else

        out.println("Tidak Lulus");

%>


 

</body>

</html> 


 

Program III – 7. Grade.jsp


 


 


 


 

Script Grade.jsp 

<%@page contentType="text/html"%>

<%@page pageEncoding="UTF-8"%>


 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">


 

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Contoh if Bersarang</title>

</head>

<body>


 

<FORM>

    Masukkan nilai Ujian (0 - 100) : <BR>

    <INPUT TYPE=TEXT NAME=nilai><BR>

    <INPUT TYPE=SUBMIT VALUE="Proses">

</FORM>


 

<%

    String strNilai = request.getParameter("nilai");

    if (strNilai == null)

        strNilai = "0";


 

    int nilaiUjian = Integer.valueOf(strNilai).intValue();

    char skor;


 

    if (nilaiUjian >= 90)

        skor = 'A';

    else

        if (nilaiUjian >= 80)

         skor = 'B';

     else

         if (nilaiUjian >= 60)

            skor = 'C';

         else

            if (nilaiUjian >= 50)

              skor = 'D';

            else

             skor = 'E';


 

    out.println("Nilai: " + nilaiUjian + "<BR>");

    out.println("Skor: " + skor);

%>


 

</body>

</html>


 

Tugas III – 5 – 7.

Susun Program untuk menginput dua buah bilangan bulat (integer), kemudian mencetak salah satu bilangan yang nilainya terbesar.


 


 


 


 


 


 

Script TugasIII57.jsp 

<%@page contentType="text/html"%>

<%@page pageEncoding="UTF-8"%>


 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">


 

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Tugas III-5-7 _-_ Membandingkan Bilangan </title>

</head>

<body>


 

<FORM>

    Masukkan bilangan A : <BR>

    <INPUT TYPE=TEXT NAME=a><BR>

Masukkan bilangan B : <BR>

    <INPUT TYPE=TEXT NAME=b><BR>

    <INPUT TYPE=SUBMIT VALUE="Proses">

</FORM>


 

<%

    String strA = request.getParameter("a");

String strB = request.getParameter("b");


 

    if (strA == null)

        strA = "0";


 

    if (strB == null)

        strB = "0";


 

    int a = Integer.valueOf(strA).intValue();

int b = Integer.valueOf(strB).intValue();


 

    if (a > b)

out.println("Bilangan Terbesar Adalah = " + a + "<BR>");

    else

out.println("Bilangan Terbesar Adalah = " + b + "<BR>");

%>


 

</body>

</html> 


 

Program III – 8. OpTernary.jsp


 


 


 

Script OpTernary.jsp

<%@page contentType="text/html"%>

<%@page pageEncoding="UTF-8"%>


 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">


 

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Contoh Operator Berkondisi</title>

</head>

<body>


 

<FORM>

    Masukkan nilai Ujian (0 - 100) : <BR>

    <INPUT TYPE=TEXT NAME=nilai><BR>

    <INPUT TYPE=SUBMIT VALUE="Proses">

</FORM>


 

<%

    String strNilai = request.getParameter("nilai");

    if (strNilai == null)

        strNilai = "0";


 

    int nilai = Integer.valueOf(strNilai).intValue();

    out.println("Nilai ujian = " + nilai + "<BR>");


 

    String hasil = nilai >= 60 ? "Lulus" : "Tidak Lulus";

    out.println(hasil);

%>


 

</body>

</html>


 

Program III – 9. Switch.jsp


 


 


 


 


 

Script Switch.jsp

<%@page contentType="text/html"%>

<%@page pageEncoding="UTF-8"%>


 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">


 

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Switch - Case</title>

</head>

<body>


 

<FORM>

    Masukkan Pilihan (1 - 3) : <BR>

    <INPUT TYPE=TEXT NAME=pilihan><BR>

    <INPUT TYPE=SUBMIT VALUE="Proses">

</FORM>


 

<%

    String strPilihan = request.getParameter("pilihan");

    

    if (strPilihan == null)

     strPilihan = "0";


 

    int pilihan = Integer.valueOf(strPilihan).intValue();


 

    switch (pilihan) {

    case 1:

        out.println("Pilihan Anda Candi Borobudur<BR>");

        break;

    case 2:

        out.println("Tour ke Danau Toba<BR>");

        break;

    case 3:

        out.println("Tour ke Gunung Bromo<BR>");

        break;

    default:

        out.println("Silahkan memilih 1, 2, atau 3");

}

%>

</body>

</html>


 

Tugas III – 9

  1. Lengkapi program di atas
  2. Petunjuk : tambahkan form untuk menerima input pilihan dari user
  3. Apa hasil outputnya?


 

Program III – 10. DoWhile.jsp


 

Script DoWhile.jsp 

<%@page contentType="text/html"%>

<%@page pageEncoding="UTF-8"%>


 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">


 

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Do While</title>

</head>

<body>


 

<%

    int jumlah = 1;


 

    do {

        out.println("JSP<BR>");


 

        jumlah++; //Menaikkan nilai sebesar 1

    } while (jumlah <= 5);


 

%>


 

</body>

</html> 


 

Program III – 11. For.jsp


 


 

Script For.jsp 

<%@page contentType="text/html"%>

<%@page pageEncoding="UTF-8"%>


 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">


 

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Contoh For</title>

</head>

<body>


 

<%

    for (int bil = 2; bil < 20; bil += 2)

        out.println(bil + "<BR>");

%>


 

</body>

</html> 


 


 


 


 


 

Script Segitiga.jsp 

<%@page contentType="text/html"%>

<%@page pageEncoding="UTF-8"%>


 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">


 

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Segitiga Bintang</title>

</head>

<body>


 

<FORM>

    Tinggi Segitiga :

    <INPUT TYPE=TEXT NAME=j><BR>

    <INPUT TYPE=SUBMIT VALUE="Proses">

</FORM>


 

<%


 

    String strPilihan = request.getParameter("j");

    

    if (strPilihan == null)

     strPilihan = "0";


 

    int j= Integer.valueOf(strPilihan).intValue();


 

    for (int y = 0; y < j; y ++)

    {

        for (int x = 0; x <= y; x ++)

        {

            out.println("*");

        }

        out.println("<BR>");

    }

%>


 

</body>

</html> 


 


 


 


 

Tugas 1!

 Pelajari istilah subkelas

 Pelajari kembali mengenai inheritance!


 

Jawab :

  1. Subkelas adalah suatu kelas yang dapat mewariskan sifat dari kelas yang sudah ada. Jadi subkelas dapat dipanggil oleh kelas induk atau superkelas.
  2. Inheritance adalah suatu keuntungan besar dalam pemrograman berbasis object karena suatu sifat atau method yang didefinisikan pada superclass, sifat ini kemudian akan diwarisi pada subkelas. Jadi pembuat program hanya menuliskan method sekali dan dapat digunakan pada semua subkelas.


 


 

Tugas 2!

 Tuliskan berbagai macam method (minimal) yang dimiliki oleh kelas Math (berada di dalam package java.lang)

 Sertai penjelasan untuk penggunaannya!

 Dikumpulkan pada pertemuan berikutnya dalam bentuk hard copy (boleh kertas selembar/tulis tangan atau format word)


 

Jawab :


 

Method yang dimiliki oleh kelas math adalah :


 

  1. Method abs()

Abs() method mengembalikan nilai absolut / mutlak pada argument, contoh

x = Math.abs(99); // output is 99

x = Math.abs(-99) // output is 99

Method ini mengambil nilai int , long, float, atau double argumen. method ini diikuti dengan :

public static int abs(int a)

public static long abs(long a)

public static float abs(float a)

public static double abs(double a)


 

  1. ceil()

ceil() method mengembalikan nilai integer terkecil, seperti double, yang merupakan terbesar dari sama dengan pada argumen dan sama dengan (=) terdekat pada nilai interger terdekat. dengan kata lain, argument –argumen mengelilingi integer terdekat yang equifalen.

Sekarang kita lihat contoh nya, hanya dengan memakai konsep yang sangat mudah. Semua itu mengikuti Math.ceil() yang mengembalikan ke double dengan nilai 9.0

Math.ceil(9.0) // hasilnya adalah 9.0

Math.ceil(8.8) // naik ke 9.0

Math.ceil(8.02) // masih naik ke 9.0

Nomor negatif adalah umum, tapi hanya ingat bahwa -9 adalah lebih besar dari -10

Semua mengikuti panggilan ke Math.ceil() yang mengembalikan nilai double -9.0

Math.ceil(-9.0) // hasilnya adalah –9.0

Math.ceil(-9.4) // naik ke –9.0

Math.ceil(-9.8) // masih naik ke –9.0

Hanya satu ceil() method dan mengikuti ciri-ciri :

public static double ceil(double a)


 

  1. floor()

Floor() method mengembalikan double terbesar yang kurang dari sama dengan argumen dan sama dengan nilai integer terdekat. method ini adalah antitesis dari ceil() method.

Semua calls mengikuti Math.floor() yang mengembalikan nilai double 9.0

Math.floor(9.0) // hasilnya adalah 9.0

Math.floor(9.4) // turun ke 9.0

Math.floor(9.8) // masih turun ke 9.0

Seperti sebelumnya, dalam pemikiran dengan nomor negative, -9 adalah kurang dari -8 ! semua mengikuti panggilan untuk Math.floor() yang mengembalikan nilai -9.0

Math.floor(-9.0) // hasilnya adalah –9.0

Math.floor(-8.8) // turun ke –9.0

Math.floor(-8.1) // masih turun ke –9.0

Ciri-ciri dari floor() method adalah sebagai berikut :

public static double floor(double a)

floor() and ceil() method hanya mengambil double.Tidak ada method yang berlebihan untuk nomor integral, karena method hanya ingin akhir dan mengembalikannomor integral yang dilewatinya, The whole point. Poin keseluruhan dari floor() dan ceil() adalah menkonversi nomor floating-point (double), menjadi integer, berdasarkan dari aturan method. Mungkin akan terlihat aneh, nilai integer pada ukuran pengangkat double.


 

  1. max()

max() method mengambil dua buah argumen dan mengembalikan 2 terbesar, contohnya :

x = Math.max(1024, -5000); // keluarannya adalah 1024.

Method ini kelebihan untuk menangani int, long, float, atau argumen double. Jika input parameter sama, max() mengembalikan sebuah nilai yang sama dengan 2 argumen.

Ciri-ciri max() method adalah :

public static int max(int a, int b)

public static long max(long a, long b)

public static float max(float a, float b)

public static double max(double a, double b)


 

  1. min()

Method Min() adalah kebalikan dari method max(); method ini mengambil 2 argumen angka dan mengembalikan kurang dari 2 argumen angka. Berikut sebagai contoh:

x = Math.min(0.5, 0.0); // output is 0.0

Method ini digunakan untuk menangani int, long, float, atau double. Jika parameter inputanya sama, method min() mengembalikan sebuah nilai yang sama dengan 2 argumen angka tersebut.

Ciri-ciri method min() adalah:

public static int min(int a, int b)

public static long min(long a, long b)

public static float min(float a, float b)

public static double min(double a, double b)


 

  1. round()

Method round() mengembalikan integer terdekat ke argument. Algoritmanya adalah dengan menambahkan 0.5 ke argument dan memotong ke integer equivalen terdekat. Method ini digunakan untuk menangani sebuah argument float atau double.

Method ceil(), floor(), dan round() mengambil argument floating-point dan mengembalikan equvalen integer(walaupun dikirim pada variable double). Jika number setelah decimal kurang dari 0.5, maka Math.round() sama dengan Math.floor(). Jika number setelah decimal lebih besar atau sama dengan 0.5, maka Math.round() sama dengan Math.ceil(). Perlu diingat dengan angka negative, sebuah angka yang berakhiran .5 akan dibulatkan ke angka yang lebih besar, sebagai contoh:

Math.round(-10.5); //
hasilnya adalah -10


 

Ciri-ciri dari method round() adalah:

public static int round(float a)

public static long round(double a)


 

  1. sin()

method sin() mengembalikan nilai sinus pada sebuah sudut. Argumennya adalah sebuah double yang menunjukkan sebuah derajat pada radian. Derajat dapat diubah ke bentuk radian dengan menggunakan method Math.toRadians(), sebagai contoh:

Math.sin(Math.toRadians(90.0)) // mengembalikan nilai 1.0

Ciri-ciri dari method sin() adalah:

public static double sin(double a)


 

  1. cos()

Method cos() mengembalikan nilai cosines pada sebuah sudut. Argumennya adalah sebuah double yang menunjukkan sebuah sudut pada radian, sebagai contoh:

Math.cos(Math.toRadians(0.0)) // mengembalikan nilai 1.0

Ciri-ciri method cos() adalah:

public static double cos(double a)


 

  1. tan()

Method tan() mengembalikan nilai tangent pada sebuah sudut. Argumennya adalah sebuah double menunjukkan sebuah sudut pada radian, sebagai contoh:

Math.tan(Math.toRadians(45.0)) // mengembalikan nilai 1.0

Ciri-ciri method tan() adalah:

public static double tan(double a)


 


 

Sun tidak memerlukan kamu menjadi sebuah kalkulator manusia. Pada ujian sertifikasi tidak akan berisi pertanyaan yang memerlukan kamu untuk memverifikasi hasil dari sebuah method contohnya Math.cos(0.623).


 

  1. sqrt()

Method sqrt() mengembalikan akar dari sebuah double, sebagai contoh:

Math.sqrt(9.0) // mengembalikan nilai 3.0

Apa yang terjadi jika kamu menemukan akar dari sebuah bilangan negative?Fungsi matematika pada bilangan akar riil mengembalikan sebuah bilangan komplek(terdiri dari bilangan riil dan imjiner) ketika operand yang digunakan adalah negative. Method Java Math.sqrt() mengembalikan NaN bukannya sebuah objek yang menunjukkan sebuah bilangan komplek. NaN adalah sebuah pola bit yang berarti "not a number". Ciri dari method sqrt() adalah:

public static double sqrt(double a)


 


 


 

Quiz:

Susun program untuk input nilai integer, bilangan bulat positif lebih dari nol, cetak "EVEN" jika bilangan bulat genap, atau cetak "ODD" jika bilangan ganjil dengan input diberikan oleh user, dan menggunakan form untuk menerima input.

1. Algoritma

2. Coding


 

Jawab :

  1. Algoritma :


     

    Algoritma genap ganjil {

        Program cek bilangan ganjil/genapberdasarkan inputan nilai bilangan bulat positif

    }


     

    Deklarasi

    Bil = integer {bil. Bulat positif yang dibaca dari form untuk menerima input. Input awal bernilai String , kemudian di ubah ke integer menggunakan value of.. }

    Function genap (input bil=integer) → bolean

        {mengembalikan nilai true (EVEN) jika bilangan genap, False (ODD) jika bilangan ganjil }


     

    Deskripsi


     

    Read (bil)

    If genap (bil) then

        Write (bil, 'EVEN')

    Else

        Write (bil,'ODD')

    Endif


     


     

    Source


     

    <%--

    Document : GanjilGenap

    Created on : Nov 18, 2009, 12:38:10 AM

    Author : Ari Kuswanto (1073051)

    --%>


     

    <%@page contentType="text/html" pageEncoding="UTF-8"%>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

    "http://www.w3.org/TR/html4/loose.dtd">


     

    <html>

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    <title> Program Cek Genap Ganjil </title>

    </head>

    <body>

    <h1>Program Cek Bilangan Ganjil Genap</h1>


     

    <FORM>

        Masukkan bilangan:

        <INPUT TYPE=TEXT NAME=b><BR>

    <INPUT TYPE=SUBMIT VALUE="Proses">

    </FORM>


     

    <%


     

        String strPilihan = request.getParameter("b");


     

        if (strPilihan == null)

         strPilihan = "0";


     

        int b = Integer.valueOf(strPilihan).intValue();


     

        if ((b % 2)==0)

            out.println("EVEN");

         else

             out.println("ODD");

    %>


     

    </body>

    </html>


     

    Output :


     


     


     


     


 


 


 

.:: Selesai ::.

DYNAMIC ROUTING

Apabila jaringan memiliki lebih dari satu kemungkinan rute untuk tujuan yang

sama maka perlu digunakan dynamic routing. Sebuah dynamic routing dibangun

berdasarkan informasi yang dikumpulkan oleh protokol routing. Protokol ini didesain

untuk mendistribusikan informasi yang secara dinamis mengikuti perubahan kondisi

jaringan. Protokol routing mengatasi situasi routing yang kompleks secara cepat dan

akurat. Protokol routng didesain tidak hanya untuk mengubah ke rute backup bila

rute utama tidak berhasil, namun juga didesain untuk menentukan rute mana yang

terbaik untuk mencapai tujuan tersebut.

Pengisian dan pemeliharaan tabel routing tidak dilakukan secara manual oleh

admin. Router saling bertukar informasi routing agar dapat mengetahui alamat

tujuan dan menerima tabel routing. Pemeliharaan jalur dilakukan berdasarkan pada

jarak terpendek antara device pengirim dan device tujuan


 

A. ALGORITMA ROUTING

Klasifikasi Algoritma Routing :

1. Global

Semua router memiliki informasi lengkap mengenai topologi, link cost.

Contohnya adalah algoritma link state.

2. Desentrasilasi

• Router mengetahui koneksi fisik atau link cost ke tetangga,

• Terjadi pengulangan proses komputasi dan mempertukarkan,

• Informasinya ke router tetangganya, contohnya adalah algoritma distance

vector.


 

1. DISTANCE VECTOR

Algoritma routing distance vector secara periodik menyalin table routing

dari router ke router. Perubahan table routing ini di-update antar router yang

saling berhubungan saat terjadi perubahan topologi. Setiap router menerima

table routing dari router tetangga yang terhubung secara langsung.Proses routing

ini disebut juga dengan routing Bellman-Ford atau Ford-Fulkerson. Routing

vektor jarak beroperasi dengan membiarkan setiap router menjaga tabel (sebuah

vektor) memberikan jarak yang terbaik yang dapat diketahui ke setiap tujuan dan

saluran yang dipakai menuju tujuan tersebut. Tabel-tabel ini di-update dengan

cara saling bertukar informasi dengan router tetangga.

Routing distance vektor bertujuan untuk menentukan arah atau vektor dan

jarak ke link-link lain di suatu internetwork. Sedangkan link-state bertujuan untuk

menciptakan kembali topologi yang benar pada suatu internetwork.

Misal, router Y menerima tabel informasi estimasi dari router X, dimana

terdapat Xi, yang menyatakan estimasi waktu yang dibutuhkan oleh X untuk

sampai ke router i. Bila Y mengetahui delay ke X sama dengan m milidetik, Y

juga mengetahui bahwa Y dapat mencapai router i dalam Xi + m milidetik.

Struktur data tabel Distance Vector :

• Setiap node (router) memilikinya,

• Baris digunakan menunjukkan tujuan yang mungkin,

• Kolom digunakan menunjukkan untuk setiap node tetangga secara langsung,

• Sebagai contoh : pada router X, untuk tujuan Y melalui tetangga Z.

• Pembentukan tabel routing dilakukan dengan cara tiap-tiap router saling

bertukar informasi routing dengan router yang terhubung secara langsung.

• Proses pertukaran informasi dilakukan secara periodik, misal setiap 45 detik.


 

Update table routing dilakukan ketika terjadi perubahan toplogi

jaringan. Sama dengan proses discovery, proses update perubahan topologi

step-by-step dari router ke router. Gambar diatas menunjukkan algoritma

distance vector memanggil ke semua router untuk mengirim ke isi table

routingnya. Table routing berisi informasi tentang total path cost yang

ditentukan oleh metric dan alamat logic dari router pertama dalam jaringan

yang ada di isi table routing, seperti skema oleh gambar di bawah ini.

Analogi distance vector dapat dianalogikan dengan jalan tol. Tanda

yang menunjukkan titik ke tujuan dan menunjukkan jarak ke tujuan. Dengan

adanya tanda-tanda seperti itu pengendara dapat dengan mudah mengetahui

perkiraan jarak yang akan ditempuh untuk mencapai tujuan. Dan tentunya

jarak terpendek adalah rute yang terbaik.


 

Permasalahan RIP

Inconsistent routinggatering, cara mencegahnya dengan cara :

  1. Split horizon : yang menerima informasi tidak mungkin membalikkan informasi
  2. Poisoning
  3. Hold down Timer : router akan menunda routing table
  4. Poison Reserve : menginformasikan mengenai kondisi
  5. Trig Gred update : jika mati dapat langsung mengirimkan informasi dan langsung menjalan kan Holdown timer


 

Ciri Hold Timer berhenti :

  1. Waktu habis
  2. Informsi Update sudah selesai ( poison reserve)
  3. Link lama menyala kembali


 

2. LINK-STATE

Algoritma link-state juga dikenal dengan algoritma Dijkstra atau algoritma

shortest path first (SPF). Algoritma ini memperbaiki informasi database dari

informasi topologi. Algoritma distance vector memiliki informasi yang tidak

spesifik tentang distance network dan tidak mengetahui jarak router. Sedangkan

algortima link-state memperbaiki pengetahuan dari jarak router dan bagaimana

mereka inter-koneksi.

Beberapa fitur yang dimiliki oleh routing link-state adalah:

1. Link-state advertisement (LSA) – paket kecil dari informasi routing yang

dikirim antar router.

2. Topological database – kumpulan informasi yang dari LSA-LSA.

3. SPF algorithm – hasil perhitungan pada database sebagai hasil dari pohon

SPF.

4. Routing table – adalah daftar rute dan interface.


 

KONSEP LINK STATE

Dasar algoritma routing yang lain adalah algoritma link state. Algoritma link state

biasa disebut sebagai algoritma Dijkstra atau algoritma Shortest Path First (SPF).

• Setiap router mempunyai peta jar,

• Router menentukan rute ke setiap tujuan di jar berdasarkan peta jar tersebut,

• Petajaringan disimpan router dalam bentuk database sebagai hasil dari

pertukaran info link-state antara router-router bertetangga di jar tersebut,

• Setiap record dalam database menunjukkan status sebuah jalur dijar (link-tate),

• Menerapkan algoritma Dijkstra,

• Topologi jaringan dan link cost diketahui oleh semua node router,

• Dilakukan dengan cara mem-broadcast informasi link state,

• Semua node memiliki informasi yang sama,

• Menghitung cost terkecil dari satu node ke node lainnya,

• Memberikan tabel rute untuk router tersebut setelah iterasi sebanyak n, diketahui

link cost terkecil untuk n tujuan.


 

B. PROTOKOL ROUTING

Routing protocol berbeda dengan routed protocol. Routing protocol

adalah komunikasi antara router-router. Routing protocol mengijinkan routerrouter

untuk sharing informasi tentang jaringan dan koneksi antar router. Router

menggunakan informasi ini untuk membangun dan memperbaiki table

routingnya. Seperti pada gambar di bawah ini.

Protokol routing dinamik yang banyak digunakan dalam internetworking

TCP/IP adalah RIP (Routing Information Protocol) yang menggunakan algoritma

routing distance vector dan OSPF (Open Shortest Path First) yang menggunakan

algoritma link-state. Pada layer TCP/IP, router dapat menggunakan protokol

routing untuk membentuk routing melalui suatu algoritma yang meliputi:

1. RIP -- menggunakan protokol routing interior dengan algoritma

distance vector,

2. IGRP -- menggunakan protokol routing interior dengan algoritma Cisco

distance vector,

3. OSPF -- menggunakan protokol routing interior dengan algoritma link

state,

4. EIGRP -- menggunakan protokol routing interior dengan algoritma

advanced Cisco distance vector.

Routing Information Protocol (RIP)

Routed protocol digunakan untuk user traffic secara langsung. Routed

protocol menyediakan informasi yang cukup dalam layer address jaringannya

untuk melewatkan paket yang akan diteruskan dari satu host ke host yang lain

berdasarkan alamatnya.

RIP merupakan salah satu protokol routing distance vector yang

digunakan oleh ribuan jaringan di dunia. Hal ini dikarenakan RIP berdasarkan

open standard dan mudah diimplementasikan. Tetapi RIP membutuhkan

konsumsi daya yang tinggi dan memerlukan fitur router routing protokol.

Dasar RIP diterangkan dalam RFC 1058, dengan karakteristik sebagai berikut:

• Routing protokol distance vector,

Metric berdasarkan pada jumlah lompatan (hop count) untuk pemilihan jalur,

• Jika hop count lebih dari 15, maka paket dibuang,

• Update routing dilakukan secara broadcast setiap 30 detik.

1. RIP Versi 1

• Dokumen _ RFC1058,

• RIP _ routing vektor-jarak yang dimodifikasi dengan triggered update dan

split horizon dengan poisonous reverse untuk meningkatkan kinerjanya,

• RIP _ diperlukan supaya host dan router dapat bertukar informasi untuk

menghitung rute dalam jaringan TCP/IP,

• Informasi yang dipertukarkan RIP berupa :

a. Host

b. Network

c. Subnet

d. Rutedefault

2. RIP Versi 2

Enhancement dari RIP versi1 ditambah dengan beberapa kemampuan baru,

• Algoritma routing sama dengan RIP versi1,

• Bedanya terletak pada format dengan tambahan informasi yang dikirim,

• Kemampuan baru :

a. Tag _untuk rute eksternal,

b. Subnet mask,

c. Alamat hop berikutnya,

d. Autentikasi.

3. IGRP (Interior Gateway Routing Protocol)

IGRP merupakan distance vector IGP. Routing distance vector mengukur

jarak secara matematik. Pengukuran ini dikenal dengan nama distance vector.

Router yang menggunakan distance vector harus mengirimkan semua atau

sebagian table routing dalam pesan routing update dengan interval waktu yang

regular ke semua router tetangganya. Isi dari informasi routing adalah:

• Identifikasi tujuan baru,

• Mempelajari apabila terjadi kegagalan.

IGRP adalah routing protokol distance vector yang dibuat oleh Cisco. IGRP

mengirimkan update routing setiap interval 90 detik. Update ini advertise semua

jaringan dalam AS. Kunci desain jaringan IGRP adalah:

• Secara otomatis dapat menangani topologi yang komplek,

• Kemampuan ke segmen dengan bandwidth dan delay yang berbeda,

• Skalabilitas, untuk fungsi jaringan yang besar.


 

Secara default, IGRP menggunakan bandwidth dan delay sebagai metric.

Untuk konfigurasi tambahan, IGRP dapat dikonfigurasi menggunakan kombinasi

semua varibel atau yang disebut dengan composite metric. Variabel-variabel itu

misalnya:

Bandwidth

Delay

Load

Reliability

IGRP yang merupakan contoh routing protokol yang menggunakan

algoritma distance vector yang lain. Tidak seperti RIP, IGRP merupakan routing

protokol yang dibuat oleh Cisco. IGRP juga sangat mudah diimplementasikan,

meskipun IGRP merupakan routing potokol yang lebih komplek dari RIP dan

banyak faktor yang dapat digunakan untuk mencapai jalur terbaik dengan

karakteristik sebagai berikut:

a. Protokol Routing Distance Vector,

b. Menggunakan composite metric yang terdiri atas bandwidth, load, delay dan

reliability,

c. Update routing dilakukan secara broadcast setiap 90 detik.

4. OSPF (Open Shortest Path First)

OSPF merupakan interior routing protocol yang kepanjangan dari Open

Shortest Path First. OSPF didesain oleh IETF ( Internet Engineering Task Force )

yang pada mulanya dikembangkan dari algoritma SPF ( Shortest Path First ).

Hampir sama dengan IGRP yaitu pada tahun 80-an.

Pada awalnya RIP adalah routing protokol yang umum dipakai, namun

ternyata untuk AS yang besar, RIP sudah tidak memadai lagi. OSPF diturunkan

dari beberapa periset seperti Bolt, Beranek, Newmans. Protokol ini bersifat open

yang berarti dapat diadopsi oleh siapa pun. OSPF dipublikasikan pada RFC

nomor 1247. OSPF menggunakan protokol routing link-state, dengan

karakteristik sebagai berikut:

a. Protokol routing link-state.

b. Merupakan open standard protokol routing yang dijelaskan di RFC 2328.

b. Menggunakan algoritma SPF untuk menghitung cost terendah.

c. Update routing dilakukan secara floaded saat terjadi perubahan topologi

jaringan.

d. OSPF adalah linkstate protokol dimana dapat memelihara rute dalam dinamik

network struktur dan dapat dibangun beberapa bagian dari subnetwork.

e. OSPF lebih effisien daripada RIP.

f. Antara RIP dan OSPF menggunakan di dalam Autonomous System ( AS ).

g. Menggunakan protokol broadcast.

5. EIGRP (Enhanced Interior Gateway Routing Protocol)

EIGRP menggunakan protokol routing enhanced distance vector, dengan

karakteristik sebagai berikut:

a. Menggunakan protokol routing enhanced distance vector.

b. Menggunakan cost load balancing yang tidak sama.

c. Menggunakan algoritma kombinasi antara distance vector dan link-state.

d. Menggunakan Diffusing Update Algorithm (DUAL) untuk menghitung jalur

terpendek.


 

CONTOH CONFIGURASI

Download file zebra:
[root@KUNINGAN ~]# wget ftp://ftp.zebra.org/pub/zebra/zebra-0.95a.tar.gz

Ekstrak file zebra:
[root@KUNINGAN ~]# tar zxvf zebra-0.95a.tar.gz

Masuk kedalam file zebra:
[root@KUNINGAN ~]# cd zebra-0.95a
root@KUNINGAN zebra-0.95a]# ./configure –sysconfdir=/etc/zebra –disable-ipv6 –enable-tcp-zebra
[root@KUNINGAN zebra-0.95a]# make
[root@KUNINGAN zebra-0.95a]# make install

/etc/zebra adalah tempat file hasil instalasi.
Kopikan file zebra.conf.sample menjadi zebra.conf
[root@KUNINGAN zebra]# cd /etc/zebra/
[root@KUNINGAN etc]# cp zebra.conf.sample zebra.conf
[root@KUNINGAN zebra]# cp ripd.conf.sample ripd.conf
[root@KUNINGAN zebra]# cp ospfd.conf.sample ospfd.conf
root@KUNINGAN zebra]# cp bgpd.conf.sample bgpd.conf

Supaya service otomatis dijalankan ketika Gateway di restart.
[root@KUNINGAN zebra]# cp /root/zebra-0.95a/init/redhat/zebra.init /etc/rc.d/init.d/zebra
[root@KUNINGAN zebra]# cp /root/zebra-0.95a/init/redhat/ripd.init /etc/rc.d/init.d/ripd
[root@KUNINGAN zebra]# cp /root/zebra-0.95a/init/redhat/ospfd.init /etc/rc.d/init.d/ospfd
[root@KUNINGAN zebra]# cp /root/zebra-0.95a/init/redhat/bgpd.init /etc/rc.d/init.d/bgpd
[root@KUNINGAN zebra]# chmod 755 /etc/rc.d/init.d/*

Ubah file zebra, ripd, ospfd, bgpd yang sudah dikopi ke /etc/rc.d/init.d/

File zebra
[root@KUNINGAN zebra]# vim /etc/init.d/zebra
. /etc/rc.d/init.d/functions menjadi . /etc/init.d/functions
[ -f /etc/zebra.conf ] || exit 0 menjadi [ -f /etc/zebra/zebra.conf ] || exit 0
# daemon /usr/sbin/zebra –d menjadi daemon /usr/local/sbin/zebra –d

[root@KUNINGAN zebra]# vim /etc/init.d/ripd
. /etc/rc.d/init.d/functions menjadi . /etc/init.d/functions
[ -f /etc/ripd.conf ] || exit 0 menjadi [ -f /etc/zebra/ripd.conf ] || exit 0
# daemon /usr/sbin/ripd –d menjadi daemon /usr/local/sbin/ripd –d

[root@KUNINGAN zebra]# vim /etc/init.d/ospfd
. /etc/rc.d/init.d/functions menjadi . /etc/init.d/functions
[ -f /etc/ospfd.conf ] || exit 0 menjadi [ -f /etc/zebra/ospfd.conf ] || exit 0
# daemon /usr/sbin/ospfd –d menjadi daemon /usr/local/sbin/ospfd –d

[root@KUNINGAN zebra]# vim /etc/init.d/bgpd
. /etc/rc.d/init.d/functions menjadi . /etc/init.d/functions
[ -f /etc/bgpd.conf ] || exit 0 menjadi [ -f /etc/zebra/bgpd.conf ] || exit 0
# daemon /usr/sbin/bgpd –d menjadi daemon /usr/local/sbin/bgpd –d

Tambahkan di :
[root@KUNINGAN zebra]# vim /etc/services
zebrasrv 2600/tcp
zebra 2601/tcp
ripd 2602/tcp
ripng 2603/tcp
ospfd 2604/tcp
bgpd 2605/tcp
ospf6d 2606/tcp

Jalankan service :
[root@KUNINGAN zebra]# service zebra start
[root@KUNINGAN zebra]# service ripd start
[root@KUNINGAN zebra]# service ospfd start
[root@KUNINGAN zebra]# service bgpd start

Lihat port yang sedang running di gateway 1 dengan perintah nmap, jika nmap belum ada maka install dulu :
[root@KUNINGAN zebra]#yum install nmap
[root@KUNINGAN zebra]#nmap localhost
PORT STATE SERVICE
2600/tcp open zebrasrv
2601/tcp open zebra
2602/tcp open ripd
2604/tcp open ospfd
2605/tcp open bgpd

Ok zebra sudah berjalan dengan baik, berarti gateway 1 sudah bisa routing dinamik dengan RIP, OSPF, dan BGP.

C. Routing RIP
Agar routing RIP jalan, maka ada dua file yang harus di konfigurasi di masing-masing gateway, yaitu zebra.conf dan ripd.conf
Isi dari file zebra.conf adalah ip address dari interface yang ada pada gateway.
Isi dari file ripd.conf adalah alamat jaringan yang terhubung dengan gateway.
Untuk mengubah file zebra.conf bisa langsung lewat editor atau telne t lewat port 2601, dengan lewat jalur telnet maka kita akan mengkonfigurasi seperti router cisco. Supaya lebih seru mari kita konfigurasi lewat telnet saja, dengan password zebra.

Konfigurasi zebra.conf
Pastikan bahwa di gateway 1 firewall dah mati dengan :
[root@kuningan ~]# iptables –F
Telnet lewat windows:
D:\Documents and Settings\hendra>telnet 10.200.16.11 2601

Hello, this is zebra (version 0.95a).
Copyright 1996-2004 Kunihiro Ishiguro.

User Access Verification

Password:
Router>
Router> zebra
% Unknown command.
Router>
Router> en
Password:
Password:
Router#
Router# confi
Router# configure ter
Router# configure terminal
Router(config)#
Router(config)# in
Router(config)# interface eth0
Router(config-if)#
Router(config-if)# ip ad
Router(config-if)# ip address 10.200.16.11/25
Router(config-if)#
Router(config-if)# exit
Router(config)#
Router(config)# in
Router(config)# inin
Router(config)# int
Router(config)# interface eth1
Router(config-if)#
Router(config-if)# ip ad
Router(config-if)# ip address 202.51.107.121/26
Router(config-if)#
Router(config-if)# exit
Router(config)#
Router(config)# exit
Router#
Router# write
Configuration saved to /etc/zebra/zebra.conf
Router#
Router#

Konfigurasi rip.conf lewat telnet

Hello, this is zebra (version 0.95a).
Copyright 1996-2004 Kunihiro Ishiguro.

User Access Verification

Password:
ripd>
ripd> en
ripd#
ripd# conf
ripd# configure ter
ripd# configure terminal
ripd(config)#
ripd(config)# ro
ripd(config)# router r
ripd(config)# router rip
ripd(config-router)#
ripd(config-router)# network 10.200.16.0/25
ripd(config-router)#
ripd(config-router)# network 202.51.107.64/26
ripd(config-router)#
ripd(config-router)# exit
ripd(config)#
ripd(config)# exit
ripd#
ripd# write
Configuration saved to /etc/zebra/ripd.conf
ripd#
ripd#

D. Cek Routing Table
[root@kuningan ~]# route -n
Kernel IP routing table
Destination   Gateway    Genmask   Flags   Metric   Ref   Use   Iface
192.168.1.208   10.200.16.1   255.255.255.240   UG   2   0   0   eth0
202.51.107.64    0.0.0.0   255.255.255.192   U   0    0   0   eth1
10.200.7.0    10.200.16.1   255.255.255.128   UG   2    0   0   eth0
10.200.7.128   10.200.16.1   255.255.255.128   UG   2   0   0   eth0
10.200.6.0   10.200.16.1   255.255.255.128   UG    2   0   0   eth0
10.200.14.0   10.200.16.1   255.255.255.128   UG   2   0   0   eth0
10.200.16.0    0.0.0.0   255.255.255.128   U   0   0   0   eth0
10.107.1.0   10.200.16.1    255.255.255.0   UG   3   0   0   eth0
10.106.3.0    10.200.16.1   255.255.255.0    UG 3 0 0 eth0
169.254.0.0   0.0.0.0    255.255.0.0   U   0    0   0   eth1
10.0.0.0   10.200.16.1   255.0.0.0   UG   0   0   0   eth0
0.0.0.0    202.51.107.65   0.0.0.0   UG   0   0   0   eth1
[root@kuningan ~]#