Senin, 26 September 2011

jaringan komputer

Rancangan

Anda akan mengembangkan aplikasi client server sederhana, di mana sebuah server berjalan dan jika dihubungi oleh sebuah client akan mengirimkan pesan "Salam Keadilan !"

Pembekalan

Pemrograman jaringan dikembangkan untuk menyambungkan proses-proses komputasi yang lumrahnya berjalan dalam mesin-mesin yang berbeda yang terhubung dalam suatu jaringan komputer. Contohnya adalah :
  • Web browser mengakses Web server melalui jaringan.
  • Aplikasi basis data, di mana terdapat client dan server yang berada di mesin komputer yang terpisah, dan berinteraksi dalam dalam jaringan.
  • Aplikasi e-mail di mana terdapat mail client berkomunikasi dengan mail server.
Dalam pemrograman jaringan, inti tantangannya adalah bagaimana Anda dapat mengirimkan data dari sebuah proses ke proses lainnya melalui pipa yang menghubungkan keduanya. Pipa antara dua proses ini dapat dianalogikan dengan saluran telepon antara dua pembicara. Dalam analogi sambungan telepon, seorang pembicara dapat bercakap di satu sisi , kemudian suaranya akan mengalir melalui kabel telepon ke lawan bicaranya, sehingga lawan bicara dapat mendengarnya, dan sebaliknya.
Dalam pemrograman jaringan, setelah Anda membuat sebuah pipa data antara dua proses, maka masing-masing proses akan memegang satu ujung. Setiap ujung dari pipa data ini disebut socket. Aliran data antara kedua socket ini disebut data stream. Masing-masing socket menggenggam dua stream, yaitu output stream dan input stream.
Sebuah proses dapat mengirim data ke proses lain dengan menuliskannya ke output stream yang dimiliki sebuah socket. Sebuah proses dapat menerima data dengan membacanya dari input stream yang dimiliki sebuah socket. Dengan cara ini maka dapat terjadi pertukaran data, komunikasi dan interaksi antara dua proses yang berbeda meskipun mereka terpisah dalam jaringan. Proses-proses ini dapat terpisah tetapi terjaring, baik dalam intranet, extranet atapun internet, tidak peduli apakah satu proses berada di Afrika Tengah dan proses lainnya berada di tengah Samudra Pasifik.
Class-class untuk mengembangkan pemrograman jaringan dikumpulkan dalam package java.net, yang mempunyai dua class utama yaitu dan
  • java.net.ServerSocket, digunakan untuk membangun server
  • java.net.Socket, digunakan untuk membangun pipa antara server dan client

Persiapan

  • Anda perlu meng-install terlebih dahulu Java Development Kit (JDK)
  • Buatlah sebuah directory untuk latihan Anda, misalnya /home/lab/touch

Langkah

Langkah 1 : Dengan text editor tulislah SalamKeadilanServer.java

import java.io.*;
import java.net.*;


public class SalamKeadilanServer
{
        private String namaServer;
        private ServerSocket serverSocket;

        public SalamKeadilanServer(String namaServer, int port)
                throws IOException
        {
                this.namaServer = namaServer;
                System.out.println("Menghidupkan server bernama :
    " + namaServer + " di port : " + port);
                serverSocket = new ServerSocket(port);
        }


        public void operateService()
                throws IOException
        {
                System.out.println(namaServer + " menanti connection ... ");
                Socket socket = serverSocket.accept();
                String alamatClient = socket.getInetAddress().getHostAddress();

                System.out.println(namaServer + " menangkap connection dari "
    + alamatClient);


                InputStream inputStream = socket.getInputStream();
                InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
                BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

                OutputStream outputStream = socket.getOutputStream();
                PrintWriter printWriter = new PrintWriter(outputStream, true);

                String namaClient = bufferedReader.readLine();
                System.out.println(namaServer + " membaca nama client : "
    + namaClient);

                System.out.println(namaServer + " mengirim pesan : ");
                String pesanDikirim = "Pesan dari " + namaServer + ", untuk "
    + namaClient + "di " + alamatClient +
    " : Salam Keadilan !";
                System.out.println(pesanDikirim);
                printWriter.println(pesanDikirim);

                bufferedReader.close();
                printWriter.close();
                socket.close();
                System.out.println(namaServer + " menutup connection.");
        }
}
Simpanlah di directory yang telah Anda persiapkan sebagai SalamKeadilanServer.java

Langkah 2 : Dengan text editor tulislah SalamKeadilanServerApp.java

public class SalamKeadilanServerApp
{
        public static void main(String[] args)
        {
                if(args.length<2)
                {
                        System.out.println("Cara penggunaan
:java SalamKeadilanServerApp
 <namaServer> <port>");
                        System.exit(0);
                }

                try
                {
                        String namaServer = args[0];
                        String portStr = args[1];
                        int port = Integer.parseInt(portStr);
                        SalamKeadilanServer server =
 new SalamKeadilanServer(namaServer, port);
                        server.operateService();
                }
                catch(java.io.IOException ioe)
                {
                        ioe.printStackTrace();
                }
        }
}
Simpanlah di directory yang telah Anda persiapkan sebagai SalamKeadilanServerApp.java

Langkah 3 : Dengan text editor tulislah SalamKeadilanClient.java

import java.io.*;
import java.net.*;


public class SalamKeadilanClient
{
        private String namaClient;
        private String alamatServer;
        private int port;

        public SalamKeadilanClient(String namaClient, String alamatServer, int port)
        {
                System.out.println("Membuat client dengan nama : " + namaClient);
                this.namaClient = namaClient;
                this.alamatServer = alamatServer;
                this.port = port;
        }


        public void connectToServer()
                throws IOException
        {
                System.out.println(namaClient + " menghubungi server di alamat "
    + alamatServer + " di " + port);
                Socket socket = new Socket(alamatServer, port);

                InputStream inputStream = socket.getInputStream();
                InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
                BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

                OutputStream outputStream = socket.getOutputStream();
                PrintWriter printWriter = new PrintWriter(outputStream, true);

                System.out.println(namaClient + " mengirim data tentang nama ke server.");
                printWriter.println(namaClient);

                System.out.println(namaClient + " menangkap pesan  dari server : ");
                String pesan = bufferedReader.readLine();

                System.out.println(pesan);

                bufferedReader.close();
                printWriter.close();
                System.out.println(namaClient + " menutup connection.");
                socket.close();
        }
}
Simpanlah di directory yang telah Anda persiapkan sebagai SalamKeadilanClient.java

Langkah 4 : Dengan text editor tulislah SalamKeadilanClientApp.java

public class SalamKeadilanClientApp
{
        public static void main(String[] args)
        {
                if(args.length<3)
                {
                        System.out.println("Cara penggunaan:
java SalamKeadilanClientApp
<namaClient> <alamatServer> <nomorPortdariServer>");
                        System.exit(0);
                }

                try
                {
                        String namaClient = args[0];
                        String alamatServer = args[1];
                        String portStr = args[2];
                        int port = Integer.parseInt(portStr);
                        SalamKeadilanClient client = new SalamKeadilanClient
      (namaClient, alamatServer, port);
                        client.connectToServer();
                }
                catch(java.io.IOException ioe)
                {
                        ioe.printStackTrace();
                }
        }
}
Simpanlah di directory yang telah Anda persiapkan sebagai SalamKeadilanClientApp.java

Langkah 5 : Persiapkan dua buah console

Anda akan meng-compile dan meluncurkan aplikasi dari console. Luncurkan dua buah console, dan lakukan change directory di kedua console tsb ke directory yang sudah dipersiapkan.
Untuk dapat sukses melakukan kompilasi dan meluncurkan aplikasi, Anda harus menge-set setidaknya dua buah variabel lingkungan dalam Operating System Anda, yaitu : Variabel lingkungan PATH harus memuat directory dimana perintah java dan javac. Contoh untuk menge-set variabel lingkungan PATH :
$ export PATH=/home/lab/jdk1.3.1_01/bin:$PATH
Variabel lingkungan CLASSPATH harus memuat directory di mana file .class dari aplikasi Anda berada. Contoh untuk menge-set variabel lingkungan CLASSPATH :
$ export CLASSPATH=/home/lab/touch

Langkah 6 : Meng-compile SalamKeadilanServerApp.java di console pertama

Melalui console, jalankan javac :
$ javac SalamKeadilanServerApp.java
Jika Anda menjalani langkah-langkah dengan benar, Anda dapat menemukan file SalamKeadilanServerApp.class, dan SalamKeadilanServer.class di dalam directory yang sama.

Langkah 6 : Meng-compile SalamKeadilanClientApp.java di console kedua

Melalui console, jalankan javac :
$ javac SalamKeadilanClientApp.java
Jika Anda menjalani langkah-langkah dengan benar, Anda dapat menemukan file SalamKeadilanClientApp.class, dan SalamKeadilanClient.class di dalam directory yang sama.

Langkah 7 : Meluncurkan aplikasi SalamKeadilanServerApp di console pertama

Untuk meluncurkan aplikasi Anda, melalui console, jalankan java :
$ java SalamKeadilanServerApp SalamKeadilanServer 8080
Log di console :
Menghidupkan server bernama : SalamKeadilanServer di port : 8080
SalamKeadilanServer menanti connection ...

Langkah 8 : Meluncurkan aplikasi SalamKeadilanClientApp di console kedua

Untuk meluncurkan aplikasi Anda, melalui console, jalankan java :
$ java SalamKeadilanClientApp ekobs@developerforce.net localhost 8080
Log di console :
Membuat client dengan nama : ekobs@developerforce.net
ekobs@developerforce.net menghubungi server di alamat localhost di 8080

Langkah 9 : Perkembangan komunikasi client-server

Saat SalamKeadilanServerApp mendapat connection, akan ditemukan log :
SalamKeadilanServer menangkap connection dari 127.0.0.1
SalamKeadilanServer membaca nama client : ekobs@developerforce.net
SalamKeadilanServer mengirim pesan :
Pesan dari SalamKeadilanServer, untuk ekobs@developerforce.net
di 127.0.0.1 : Salam Keadilan !
Di sisi client, dapat ditemukan log :
ekobs@developerforce.net mengirim data tentang nama ke server.
ekobs@developerforce.net menangkap pesan  dari server :
Pesan dari SalamKeadilanServer, untuk ekobs@developerforce.net
di 127.0.0.1 : Salam Keadilan !
Selanjutnya keduanya menutup connection. Di sisi client :
ekobs@developerforce.net menutup connection.
Di sisi server :
SalamKeadilanServer menutup connection.     

Sabtu, 24 September 2011

DBMS Hirarki


DBMS Hirarki : Akses pada database hirarki tidak dapat langsung kesalah satu file, melainkan harus
      mengikuti struktur hirarki yang ada. contoh :
      -  HSAM (Hierarchical Sequential Access Method)
         -  Data disimpan urut seperti pada pita sesuai urutan hirarkinya.
         -  Record tidak dapat diinsert
         -  Operasi yang umum adalah membuat file master baru dari file master lama.
      -  HDAM (Hierarchical Direct Access Method)
         -  Akses hashing pada segment akar
         -  Akses direct ke segmen cabang
         -  Akses didalam segmen cabang dapat OSAM atau VSAM
      -  HISAM (Hierarchical Indexed Sequential Access Method)
         -  Akses Index pada segmen akar / root
         -  Akses sequential pada segmen cabang / dependent
      -  HIDAM (Hierarchical Indexed Direct Access Method)
         -  Akses index pada segmen akar, dapat ISAM atau VSAM
         -  Akses direct ke segmen cabang, akses didalam segmen cabang dapat OSAM atau VSAM

Jumat, 23 September 2011

TIGA MODEL DESAIN DATABASE :


1.      Conceptual model :  Merupakan pengumpulan / integrasi seluruh kebutuhan atribut dari para user / aplikasi menjadi satu pandangan organisasi
2.      Logical model       :  Dari model conceptual yang terbentuk dapat dipilih salah satu model data dasar logikal : hirarki, network atau relational. Kemudian dibagikan kepada para user yang berwenang
3.      Physical model      :  Bagaimana secara fisik data tersimpan pada penyimpanan sekunder, yang perlu dipertimbangkan mengenai metode akses (menyimpan / stored dan mengambil / retrieval) dan teknik pengindeksan untuk retrieval (pencarian lebih cepat).

Arsitektur Database

ARCHITECTURE DATABASE, tiga tahapan dalam sistem database :

1.      External Level       :  Setiap user mempunyai bahasa dalam penyelesaiannya
                                       -  Bahasa pemrograman : pembuat program aplikasi
                                       -  Bahasa Query ex. formulir, menu : Pemakai data langsung
2.   Conceptual Level  :  Pandangan secara menyeluruh
3.   Internal Level        :  Bagaimana secara fisik data tersimpan pada penyimpan sekunder

Contoh :
   External (PL/I)
   DCL  1  EMPP,
             2  EMP# CHAR (6),
             2  SAL FIXED BIN (31);
   External (COBOL)
   01   EMPC.
           02  EMPNO PIC X(6)
           02  DEPTNO  PIC X(4)
    Conceptual
    EMPLOYEE
             EMPLOYEE_NUMBER            CHARACTER (6)
             DEPARTEMENT_NUMBER     CHARACTER (4)
          SALARY                                    NUMERIK (5)

   Internal
   STORED_EMP      LENGTH = 18
            PREFIX         TYPE = BYTE (6) , OFFSET = 0
            EMP#             TYPE = BYTE (6) , OFFSET = 6 , INDEX = EMPX
            DEPT#           TYPE = BYTE (4) , OFFSET = 12
             PAY              TYPE = REALWORD , OFFSET = 16     






PENDEKATAN TRADITIONAL VS DATABASE


Mengapa memilih pendekatan database karena pendekatan pemrosesan data sebelum pendekatan database adalah terpusat pada program aplikasi

Pendekatan tradisional, berorientasi pada program aplikasi dan tiap-tiap aplikasi berdiri sendiri-sendiri. contoh  :  aplikasi produk, aplikasi inventory dsb.
Sehingga terdapat masalah-masalah  :
·         Data redundancy :  Duplikasi data yang sama pada beberapa file.
Redundansi dapat direduksi/dikurangi tetapi tidak dapat dihilangkan sama sekali
sehingga akan menyebabkan inconsistency (data tidak konsisten), incosistency dapat dihilangkan dengan cara Propagating Update yaitu melakukan update secara serentak pada field-field yang redundansi.
Contoh :  Jika pelanggan pindah alamat dan nomer telponnya maka seharusnya ketiga file yang memuat data tersebut harus diubah/update (contoh File Anggota, File transaksi peminjaman, file Pengembalian), bila salah satu saja dari file yang mengandung data tersebut terlewat diupdate maka terjadilah tidak konsisten tadi. Untuk itu perlu adanya propagating update ketiga file tersebut.
·         Data Isolation       : Datanya terisolasi bagi user dan untuk melihatnya harus membuka program terlebih dahulu.
·         Ketidakmampuannya dalam menjawab kebutuhan/pertanyaan sewaktu-waktu.
·         Ketidakmampuan dalan sharing data yaitu elemen-elemen database dapat dibagikan pada para user baik secara sendiri-sendiri maupun serentak dan pada waktu yang sama.
·         Biaya pengembangan yang tinggi sehingga tidak responsif terhadap kebutuhan perubahan.
Gambar :









 

                         Aplication 1                       Aplication 2                          Aplication 3      





































 



                   File                  File                   File           File                    File                  File    
                   1-A                  1-B                    2-A           2-B                   3-A                 3-B


Pendekatan Database, berarti data bebas dari program aplikasi (Data independent)
            -  Kemaren                  :  Melakukan Desain
            -  Hari ini                     :  Dioperasikan
            -  Yang akan datang    :  Dikembangkan

Gambar :

                    Aplication 1           Aplication 2            Aplication 3














 



                                                      Database
                                                    Management
                                                       System  






 



   
                                                    Database

Keuntungannya :
·         Mengurangi data redundancy :  Data redundansi dapat direduksi/dikurangi, tetapi tidak dapat dihilangkan sama sekali (untuk kepentingan keyfield)
·         Data integrity  :  Integritas/kesatuan data dapat dipertahankan, hal ini sebagi akibat dari penghindaran inconsistency dan pengontrolan security.
·         Data independent  :  Kebebasan data  contoh .  Jika terdapat perubahan struktur file pelanggan maka program tersebut haruslah diubah. Jadi bahwa program yang telah dibuat tidak bebas terhadap database yang ada, apapun yang terjadi pada struktur file, setiapkali hendak melihat data dengan utility List, dll. ini berarti perintah-perintah dalam paket DBMS bebas terhadap database.
·         Data security  :  Kontrol sekuriti dapat dilakukan.  DBA dapat mengatur kewenganan penggunaan database (update, retrieve, delete)
·         Data consistency  :  Inconsistency dapat dihilangkan
·         Mudah dalam penggunaan datanya
·         Membutuhkan sedikit memory untuk penyimpanan data.

Kerugiannya :
Mahal (teknologi DBMS, Operation, Conversion, Planning, Risk)