THOUSANDS OF FREE BLOGGER TEMPLATES

Senin, 28 Januari 2013

Pemrograman GUI

Saya bisa memahami jika anda merasa bosan ketika mempelajari bab 3 didepan karena pada kedua bab tersebut saya hanya memberikan contoh-contoh aplikasi dalam mode console. Padahal kenyataannya banyak pengguna aplikasi sekarang ini lebih tertarik pada aplikasi dalam mode grafis karena mempunyai tampilan yang bagus dan lebih aplikatif dibandingkan dengan mode console. Pada bab 2 didepan sedikit sudah saya singgung mengenai cara membangun aplikasi java berbasis GUI (Graphical User Interface). Nah, pada bab ini saya akan mencoba membahas lebih detail mengenai pemrograman GUI.

Swing package adalah paket kelas untuk tampilan GUI dalam Java. Berikut ini kita akan mempelajari terlebih dahulu beberapa komponen dasar. Saya yakin setelah anda memahami bab ini maka rasa bosan anda sudah bisa terobati karena bagian ini sangatlah menarik dan membuktikan bahwa pemrograman GUI di java itu ternyata mudah. O iya ada yang lupa, jika kopi anda habis masih boleh kok nambah lagi, dijamin anda akan lebih santai lagi dalam mempelajari buku ini. 

A. Komponen-Komponen Swing

Swing package terbagi menjadi beberapa tipe komponen yaitu :
  • Top-Level Containers
  • General Purpose Containers
  • Special Purpose Containers
  • Basic Controls
  • Uneditable Information Displays
  • Editable Displays of Formatted Information
Top-Level Containers
Top-Level Containers adalah komponen-komponen yang berada di puncak (root) dari semua komponen-komponen dalam paket swing. Top-Level Containers itu sendiri berfungsi untuk menampung komponen-komponen swing yang lain. Berikut ini contoh jenis-jenis Top-Level Containers.
Gambar 1. Top Level Containers
General Purpose Containers
General Purpose Containers adalah komponen container tingkat menengah yang bisa juga digunakan untuk menampung komponen-komponen yang lain dan bisa dimanfaatkan untuk menangani situasi kebutuhan tertentu. Berikut ini contoh jenis-jenis General Purpose Containers
Gambar 2. General Purpose Containers
Special Purpose Containers
Special Purpose Containers adalah container yang mempunyai fungsi melakukan tugas khusus dalam interface. Berikut ini contoh jenis-jenis Special Purpose Containers
Gambar 3. Special Purpose Containers
Basic Controls
Basic Controls adalah komponen-komponen yang berfungsi sebagai tempat input data bagi user.
Gambar 4. Basic Controls
Uneditable Information Displays
Uneditable Information Displays adalah komponen-komponen yang berfungsi hanya untuk memberikan informasi kepada user.
Gambar 5. Uneditable Information Displays
Editable Displays of Formatted Information
Editable Displays of Formatted Information adalah komponen yang berfungsi untuk menampilkan informasi dan bisa dipilih dan di-edit oleh user.
Gambar 6. Editable Displays of Formatted Information
Saya tidak membahas secar lengkap fungsi-fungsi Swing Package dalam buku ini. Jika anda ingin mengetahui lebih detail tentang Swing Package ini silakan lihat Java Swing yang disusun oleh Marc Loy, Robert Eckstein, Dave Wood, Brian Cole, and James Elliott (O'Reilly). Disini saya akan menunjukkan komponen-komponen dasar Swing pada gambar dibawah ini.
Gambar 7. Komponen dasar Swing

B. Event Handling

Perlu anda ketahui bahwa objek-objek bekerja sama dengan cara saling berkomunikasi satu sama lainnya. Salah satu cara yang kita pelajari adalah dengan memanggil method pada objek yang ingin kita pakai. Cara ini tergolong dalam komunikasi syncronous, atau request-response model, atau command mode.
Selain itu ada juga yang disebut dengan asyncronous notification, seperti yang telah kita gunakan pada pelajaran tentang Swing, yaitu pada event handling. Dengan cara ini kita dapat mengimplementasikan hubungan satu-ke-banyak (one-to-many) antar objek sehingga perubahan pada satu objek bisa diketahui dan ditanggapi oleh yang lain tanpa peningkatan coupling yang tidak perlu.
Gambar 8. Create Event
Pada bab 2 didepan sudah saya bahas mengenai bagaimana membuat event handling pada sebuah komponen. Untuk lebih jelasnya silakan anda lihat lagi contoh aplikasi pertama pada bab 2 langkah ke 8. Disitu saya sebutkan bahwa untuk mengendalikan program kita perlu menggunakan event. Gambar berikut ini menunjukkan macam-macam event yang disediakan dalam Javabean.
Perlu anda ketahui bahwa dalam satu set Event terdiri atas:
  • Sebuah Event Listener Interface: interface ini merupakan ekstensi dari interface java.util.EventListener, dan mendefinisikan satu atau lebih method yang harus diimplementasikan oleh kelas yang ingin menerima event ini.
  • Sebuah Event Object : Sebuah event object dilewatkan dari event source ke listener. Ia memperluas java.util.EventObject atau salah satu subclassnya.
  • Method untuk Event Registration : Mereka adalah method add- atau remove-listener, yang diimplementasikan oleh komponen yang menjadi sumber event. Nama dari method-method ini harus memenuhi konvensi nama JavaBean.
Sebagai contoh dalam satu set key event (lihat gambar diatas) disediakan beberapa predefined event sets yang terdiri atas:
  • Interface KeyListener, yang terdiri atas method-method keyPressed(), KeyReleased(), dan keyTyped()
  • Class event object KeyEvent.
  • Komponen yang membangkitkan key event harus mendefinisikan method registrasi addKeyListener(KeyListener kl) dan removeKeyListener(KeyListener kl).
Silakan anda pilih salah satu event yang ada kemudian buka source-nya. Jika anda buka private void initComponents pada source code tersebut maka dapat anda lihat tata cara pendeklarasian event untuk sebuh komponen. Berikut ini contoh deklarasi event keyPressed yang mendeteksi adanya penekanan tombol keyboard pada sebuah textField.

  1. public class frmEventHandling extends javax.swing.JFrame {  
  2.   public frmEventHandling() {  
  3.         initComponents();  
  4.     }  
  5.     // <editor-fold defaultstate="collapsed" desc="Generated Code">  
  6.     private void initComponents() {  
  7.         jTextField1 = new javax.swing.JTextField();  
  8.         jTextField1.setText("jTextField1");  
  9.         jTextField1.addKeyListener(new java.awt.event.KeyAdapter() {  
  10.             public void keyPressed(java.awt.event.KeyEvent evt) {  
  11.                 jTextField1KeyPressed(evt);  
  12.             }  
  13.         });  
  14.     }// </editor-fold>  
  15.     private void jTextField1KeyPressed(java.awt.event.KeyEvent evt) {  
  16.         // TODO add your handling code here:  
  17.     }  
  18.     // Variables declaration - do not modify  
  19.     private javax.swing.JTextField jTextField1;  
  20.     // End of variables declaration  
  21. }  

C. Contoh Desain Interface

Sekarang saya akan mengajak anda untuk memulai mendesain tampilan (interface) program anda. Untuk itu anda perlu membuat project baru dan menambahkan frame form pada project anda. Jika anda lupa bagaimana membuat project dan menambahkan frame form silakan anda buka lagi bab 2 pada buku ini.
Dalam contoh ini saya akan membuat sebuah system informasi akademik yang mana aplikasi ini mempunyai fasilitas FRS (Formulir Rencana Study), KHS (Kartu Hasil Study), Jadwal kuliah dsb. Aplikasi ini terdapat tiga buah form yaitu :
  1. Form Menu : dalam form ini terdapat menu dengan rincian sebagai berikut
    1. Menu Master (Mahasiswa, Dosen, Matakuliah, Jadwal Kuliah)
    2. Menu Transaksi(Formulir Rencana Study (FRS), Formulir Hasil Study (KHS))
    3. Menu Laporan(Laporan data mahasiswa, Laporan FRS, Laporan KHS, dsb.)
  2. Form Master Mahasiswa : dalam form ini terdapat beberapa textField yang berfungsi untuk entry data NIM (Nomor Induk Mahasiswa, Nama, Alamat, Gender, Tgl Lahir, Agama, Jurusan)
  3. Form FRS : dalam form ini terdapat beberapa textField beserta table yang berfungsi untuk entry data NIM dan mata kuliah yang akan diambil oleh mahasiswa yang bersangkutan.
Form Menu
Langkah 1 :
Buatlah form menu seperti gambar berikut ini :
Gambar 9. Form Main Menu
Keterangan :
- Gunakan Obyek pada Swing Menus
- Menu Bar gunakan JMenuBar
- Submenu gunakan JMenuItem
- Garis pemisah gunakan JSeparator
Langkah 2 :
Rubah semua name sesuai dengan masing-masing object, misalnya untuk menu master ubah menjadi JMenuMaster, sedangkan untuk sub menu master mahasiswa ubah menjadi JMenuItemMahasiswa. Untuk merubah name ini silakan anda buka window Properties pilih tab Code cari field Variable Name kemudian silakan diubah value-nya.
Langkah 3 :
Tambahkan event pada menu item master mahasiswa sehingga nanti akan muncul deklarasi event seperti dibawah ini

  1. private void jMenuItemMahasiswaActionPerformed(java.awt.event.ActionEvent evt) {  
  2.     // TODO add your handling code here:  
  3. }  
Form Master Mahasiswa
Langkah 1 :
Buatlah InternalFrame. Untuk membuat InternalFrame pada project tersebut, silakan anda click kanan dipackage, pilih New->JInternalFrame Form. Tambahkan komponen JTextField, JTextArea, JComboBox, JRadioButton dan JButton. Untuk lebih jelasnya silakan anda lihat gambar dibawah ini.
Gambar 10. InternalFrame Master Mahasiswa
Langkah 2 :
Rubah semua name sesuai dengan masing-masing object, misalnya untuk JTextField NIM ubah menjadi txtNIM, untuk radio button pria ubah menjadi rdoPria, combobox agama ubah menjadi cmbAgama, button simpan ubah menjadi btnSimpan dan seterusnya.
Langkah 3 :
Pada window properties anda check property closabe, iconfiable, resizeable dan ubah property tittle menjadi Master Mahasiswa
Form Transaksi FRS
Langkah 1 :
Buatlah InternalFrame. Tambahkan komponen JTextField, JTable dan JButton. Untuk lebih jelasnya silakan anda lihat gambar dibawah ini
Gambar 11. InternalFrame Transaksi FRS
Langkah 2 :
Setelah anda selesai mengerjakan desain aplikasi sekarang silakan anda buka kembali form menu kemudian anda lihat ke bagian source. Modifikasi source code anda seperti terlihat dibawah ini.

  1. private void jMenuItemMahasiswaActionPerformed(java.awt.event.ActionEvent evt) {  
  2.     // TODO add your handling code here:  
  3.     frmMasterMahasiswa mhs = new frmMasterMahasiswa();  
  4.     this.add(mhs);  
  5.     mhs.setVisible(true);  
  6. }  
  7.   
  8. private void jMenuItemFRSActionPerformed(java.awt.event.ActionEvent evt) {  
  9.     // TODO add your handling code here:  
  10.     frmFRS frs = new frmFRS();  
  11.     this.add(frs);  
  12.     frs.setVisible(true);  
  13. }  
Setelah semua proses diatas selesai anda lakukan jangan lupa untuk melakukan kompilasi dan jalankan program anda, maka anda akan mempunyai tampilan aplikasi seperti dibawah ini.
Gambar 12. Hasil Eksekusi Aplikasi
Sebagai latihan silakan anda desain form master dosen, matakuliah jadwal kuliah dan transaksi KHS.
Sampai disini saya harap anda tidak bingung dalam memahami pemrograman GUI beserta deklarasi event handling. Dalam prakteknya anda tidak perlu harus berpikir keras, anda hanya perlu mengarahkan mouse anda dan klak klik tombolnya saja serta tidak lupa “sruput dulu kopinya” 

Tutorial Membangun Sistem Database


Operasi database adalah salah satu fasilitas yang mutlak harus ada dalam sebuah framework MVC. Pada tulisan kali saya akan mengulas bagaimana membuat class Model dan fungsi-fungsi untuk operasi database.

Dalam pemrograman PHP terdapat beberapa cara untuk mengoperasikan database khususnya mysql, antara lain menggunakan metode klasik yaitu dengan memanfaatkan fungsi bawaan (mysql_connect, mysql_select_db, mysql_query). Codeigniter merupakan salah satu contoh framework MVC yang memanfaatkan operasi klasik ini(http://www.codeigniter.com).

Selain operasi database klasik diatas, saat ini sudah tersedia modul PHP Data Object (PDO). PDO didesain mampu men-support banyak engine database misalnya MySql, Oracle, PostgresSQL, Ms Sql server dsb. PDO mendukung pemrograman berorientasi object (OOP), sehingga syntax pemrogramannya lebih sistematis dan mudah digunakan. Sayangnya tidak semua web hosting telah mengaktifkan modul PDO, bahkan ada juga web hosting yang tidak menyediakan modul PDO ini. Salah satu framework yang memanfaatkan operasi database PDO adalah Obullo (http://www.obullo.com).

Memang operasi database klasik maupun PDO mempunyai kelebihan dan kelemahan. Oleh karena itu pada framework ini sengaja saya sediakan dua-duanya. Jadi nantinya programmer bisa memilih, bisa menggunakan operasi database klasik atau PDO.

Tole : "Pakdhe..pakdhe, kalau framework sampean ini mendukung  dua operasi database apa tidak semakin berat kerja server-nya Pakdhe?"
Pakdhe : "Ya tidaklah Tole, kan nantinya programmer milih salah satu, dan ketika salah satu operasi tadi dipilih operasi yang lain tidak di-load, jadi tidak berat kerja server-nya"
Tole :"O..gitu to Pakdhe,ya sudah Pakdhe, tak simaknya dulu ntar nanti kita buktikan ya Pakdhe...kerja servernya berat apa tidak"
Pada implementasinya, sengaja saya gunakan design pattern factory, adapter dan driver. Hal ini bertujuan agar framework ini fleksibel dan mudah untuk digunakan oleh programmer yang lain. Untuk lebih memudahkan dalam pembuatan program, sengaja operasi database ini saya letakkan pada folder system/database. Adapun susunan direktori operasi database ini, terlihat seperti gambar disamping ini.

Driver database yang saya sediakan hanya mysql. Dilain waktu saya akan menambahkan driver untuk database lain misalnya Oracle, MS SQL Server, Postgres SQL dan sebagainya. Tentunya masing-masing driver tersebut mendukung operasi klasik dan PDO.

1. Factory
Jika kita baca di bukunya Gang of Four "Design Patterns: Elements of Reusable Object-Oriented Software", factory ini tergolong dalam kreasional desain. Factory tersebut perlu kita buat ketika kita perlu mendefinisikan sebuah tipe data/class (kita sebut kreator)  yang berfungsi untuk membuat objek dari tipe data/class yang berbeda (kita sebut produk).  Tujuannya adalah agar pengguna tidak perlu capek-capek mempelajari class produk tadi. Pada framework ini yang disebut factory adalah class db_factory sedangkan yang disebut class produk adalah db_adapter. Dalam literatur lain, saya menemukan ada sistem dependency injection. Sistem dependency injection ini lebih sederhana dibandingkan dengan factory. Oleh karena itu dalam pembuatan program kali ini saya memanfaatkan dependency injection dalam membangun class database factory. Dibawah ini contoh source code class db_factory

  1. <?php defined('SYS'or exit('Access Denied!');  
  2. /*  
  3. * Becak MVC Framework version 1.0  
  4. * 
  5. * File      : db_factory.php 
  6. * Directory : system/database 
  7. * Author    : Eko Heri Susanto 
  8. * Description   : penyedia koneksi ke bermacam-macam database 
  9. */  
  10. class db_factory {  
  11.     public static function callDB($db_name){  
  12.         include APP.'config'.DS.'database'.PHP_EXT;  
  13.         if(!is_array($config[$db_name]))   
  14.             throw new Exception("Please set a valid database driver from config database file");  
  15.         $driver_class = strtolower($config[$db_name]['type']);  
  16.         include SYS.'database'.DS.'driver'.DS.$driver_class.PHP_EXT;  
  17.         include SYS.'database'.DS.'db_adapter'.PHP_EXT;  
  18.             $driver = new $driver_class($config[$db_name]);   
  19.         $adapter = new db_adapter($driver);  
  20.         return $adapter;  
  21.     }//end callDB  
  22. }//end class  
  23. ?>  
2. Adapter
Telah saya sebutkan diatas, operasi database dalam framework ini mendukung banyak driver database. (mysql, oracle ms-sql server dsb). Sebenarnya masing-masing driver tersebut cara penggunaannya tentu berbeda antara satu dengan yang lain. Oleh karena itu kita perlu design pattern adapter agar pengguna tidak perlu memikirkan bagaimana cara mengoperasikan masing-masing driver tersebut.
Gambar disamping menunjukkan desain sistem db_factory dan db_adapter yang sudah saya jelaskan sebelumnya.

Fungsi/method callDB pada class db_factory ini nantinya akan dipanggil pada fungsi database yang ada di class loader. Untuk lebih jelasnya silakan anda lihat contoh source code yang saya sertakan. Ingat class loader ini terdapat pada folder core.

Coba anda perhatikan method yang terdapat pada db_adapter, disitu terdapat metode-metode untuk mengoparesikan database seperti pencarian (select), penambahan (insert), perubahan (update) dan penghapusan (delete) data. Saya temukan dibeberapa contoh framework, method-method ini ada yang menyebutnya dengan istilah active record. Dibeberapa buku design pattern active record ini sudah diakui sebagai salah satu pola dalam design pattern. Dibawah ini contoh source code class db_adapter

  1. <?php defined('SYS'or exit('Access Denied!');  
  2. /*  
  3. * Becak MVC Framework version 1.0  
  4. * 
  5. * File      : db_adapter.php 
  6. * Directory : system/database 
  7. * Author    : Eko Heri Susanto 
  8. * Description   : fungsi common (CRUD) untuk database 
  9. */  
  10. class db_adapter {  
  11.     private $driver = null;  
  12.     private $sql = '';  
  13.     public function __construct($driver){  
  14.         $this->driver = $driver;  
  15.         $this->driver->connect();  
  16.     }  
  17.     public function __destruct(){  
  18.         $this->driver->disconnect();  
  19.     }  
  20.     public function select($sql){  
  21.         $this->sql = $sql;  
  22.     }  
  23.     public function fetch_array(){  
  24.         return $this->driver->results($this->sql, 'array');  
  25.     }  
  26.     public function fetch_object(){  
  27.         return $this->driver->results($this->sql, 'object');  
  28.     }  
  29.     public function query($sql){  
  30.         return $this->driver->query($sql);  
  31.     }  
  32.     public function insert($table$data){  
  33.         $sql = "INSERT INTO ".$table;  
  34.         $multi_rows = FALSE;  
  35.         foreach($data as $key => $val){  
  36.             if(!is_array($val) ) {  
  37.                 $fields[$key] = $key;  
  38.                 $rows[$key] = $this->escape($val);  
  39.             }else {  
  40.                 $multi_rows = TRUE;  
  41.                 foreach($val as $skey => $sval){  
  42.                     $fields[$skey] = $skey;  
  43.                     $row[$skey] = $this->escape($sval);  
  44.                 }  
  45.                 $rows[$key] = "(".implode(', '$row).")";  
  46.             }  
  47.         }  
  48.         $sql .= " (". implode(', '$fields).") VALUES ";  
  49.         if(!$multi_rows$sql .= "(". implode(', '$rows).");";  
  50.         else $sql .= implode(', '$rows).";";  
  51.         return $this->driver->query($sql);  
  52.         }  
  53.     public function update($table$data$where=NULL){  
  54.         $sql = "UPDATE ".$table." SET ";  
  55.         $values = array();  
  56.         foreach($data as $key => $val){  
  57.             $values[$key] = $key." = ".$this->escape($val);  
  58.         }  
  59.         $sql .= implode(", "$values);  
  60.         if(is_array($where)){  
  61.             $filter = array();  
  62.             foreach($where as $key => $val){  
  63.                 $filter[$key] = "(".$key." = ".$this->escape($val).")";  
  64.             }  
  65.             $sql .= " WHERE ".implode(" AND "$filter);  
  66.         }  
  67.         return $this->driver->query($sql);  
  68.     }  
  69.     public function delete($table$where=NULL){  
  70.         $sql = "DELETE FROM ".$table;  
  71.         if(is_array($where)){  
  72.             $filter = array();  
  73.             foreach($where as $key => $val){  
  74.                 $filter[$key] = "(".$key." = ".$this->escape($val).")";  
  75.             }  
  76.             $sql .= " WHERE ".implode(" AND "$filter);  
  77.         }  
  78.         return $this->driver->query($sql);  
  79.     }  
  80.       
  81.     private function escape($str)  
  82.         {  
  83.         if(is_string($str)){  
  84.             return "'".str_replace("'""''",$str)."'";  
  85.         }  
  86.   
  87.         if(is_integer($str))  
  88.         return (int)$str;  
  89.   
  90.         if(is_double($str))  
  91.         return (double)$str;  
  92.   
  93.         if(is_float($str))  
  94.         return (float)$str;  
  95.   
  96.         if(is_bool($str))  
  97.         return ($str === FALSE) ? 0 : 1;  
  98.   
  99.         if(is_null($str))  
  100.         return 'NULL';  
  101.         }  
  102. }//end class  
  103. ?>  
3. Driver
OK, selanjutnya mari kita lanjutkan untuk membahas class driver. Ingat class driver ini merupakan tata cara pengoperasian database yang sesungguhnya. Gambar dibawah ini menjelaskan struktur desain sistem driver database.

Berikut ini contoh source code class mysql (operasi database klasik)

  1. <?php defined('SYS'or exit('Access Denied!');  
  2. /*  
  3. * Becak MVC Framework version 1.0  
  4. * 
  5. * File      : mysql.php 
  6. * Directory : system/database/driver 
  7. * Author    : Eko Heri Susanto 
  8. * Description   : driver mysql 
  9. */  
  10. class mysql {  
  11.     private $conn;  
  12.     private $config;  
  13.     public function __construct($config){  
  14.         $this->config    = $config;  
  15.     }  
  16.     public function connect() {  
  17.         extract($this->config);  
  18.         if(isset($this->conn)) return $this->conn;  
  19.         $this->conn = @mysql_connect($server,$user,$password, true) or show_error("Unable connect to mysql server.Please make sure the server, username or password specified in your Database.php file is valid.");   
  20.         @mysql_select_db($database$this->conn) or show_error("Unable to select your default database name.Please make sure the database name specified in your Database.php file is valid.");  
  21.     }  
  22.     public function disconnect(){  
  23.         if(isset($this->conn)) {  
  24.             @mysql_close($this->conn);  
  25.         }  
  26.     }  
  27.     public function query($sql){  
  28.         $result = @mysql_query($sql$this->conn);  
  29.         if (!$result) {  
  30.                 show_error(mysql_error());  
  31.         }  
  32.         return $result;  
  33.     }  
  34.     public function results($query$type = 'object'){  
  35.         $result = $this->query($query);  
  36.         $return = array();  
  37.         while ($row = @mysql_fetch_object($result)) {  
  38.             if($type == 'array')  
  39.                 $return[] = (array$row;  
  40.             else  
  41.                 $return[] = $row;  
  42.         }  
  43.         @mysql_free_result($result);  
  44.         return @$return;  
  45.     }  
  46. }//end class  
  47. ?>  
Berikut ini contoh source code class mysql_pdo (operasi database PDO)

  1. <?php defined('SYS'or exit('Access Denied!');  
  2. /*  
  3. * Becak MVC Framework version 1.0  
  4. * 
  5. * File      : pdo_mysql.php 
  6. * Directory : system/database/driver 
  7. * Author    : Eko Heri Susanto 
  8. * Description   : driver PDO mysql 
  9. */  
  10. class mysql_pdo {  
  11.     private $conn;  
  12.     private $config;  
  13.     public function __construct($config){  
  14.         $this->config    = $config;  
  15.     }  
  16.     public function connect() {  
  17.         extract($this->config);  
  18.         if(isset($this->conn)) return $this->conn;  
  19.         try{  
  20.             $this->conn = new PDO ("mysql:host=$server;dbname=$database",$user,$password);  
  21.         }catch(PDOException $e){  
  22.             echo __LINE__.$e->getMessage();  
  23.         }  
  24.     }  
  25.     public function disconnect(){  
  26.         if(isset($this->conn)) {  
  27.             $this->conn = null;  
  28.         }  
  29.     }  
  30.     public function query($sql){  
  31.         $result = null;       
  32.         try{  
  33.             $result = $this->conn->exec($sqlor print_r($this->conn->errorInfo());  
  34.         }catch(PDOException $e){  
  35.             echo __LINE__.$e->getMessage();  
  36.         }  
  37.         return $result;  
  38.     }  
  39.     public function results($query$type = 'object'){  
  40.         $result = $this->conn->query($queryor print_r($this->conn->errorInfo());  
  41.         $result->setFetchMode(PDO::FETCH_ASSOC);  
  42.         return $result;  
  43.     }  
  44. }//end class  
  45. ?>  
Sampai disini pembahasan mengenai operasi database sudah selesai. Selanjutnya coba saya jelaskan bagaimana cara menjalankan contoh program yang saya sertakan.
Pertama-tama anda siapkan dulu database-nya. Caranya buka phpmyadmin, kemudian buat database baru dengan nama blogkomputer. Setelah itu silakan anda buat table content seperti contoh dibawah ini.

  1. CREATE TABLE `blogkomputer`.`content` (  
  2. `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,  
  3. `judul` VARCHAR( 100 ) NOT NULL ,  
  4. `kategori` VARCHAR( 100 ) NOT NULL ,  
  5. `isi` TEXT NOT NULL  
  6. ) ENGINE = MYISAM ;  
Setelah table-nya selesai anda buat, jangan lupa isikan contoh datanya. Ini saya sertakan query untuk mengisi data table content tersebut

  1. INSERT INTO `blogkomputer`.`content` (`id`, `judul`, `kategori`, `isi`) VALUES (NULL'Ini adalah judul 1''pemrograman''isi sembarang data disini'), (NULL'ini adalah judul 2''becak framework''becak framework adalah framework MVC yang mendukung PHP 5');  
Langkah kedua coba anda buka file database.php, yang terdapat pada folder application/config, kemudian lakukan pengaturan (setting) konfigurasi database. Lihat contoh dibawah ini

  1. $config = array();  
  2.   
  3. // jika ingin menggunakan PDO ubah mejadi 'mysql_pdo'  
  4. $config['db']['type']       = 'mysql';   
  5.   
  6. // jika anda menggunakan PDO, ubah menjadi '127.0.0.01'  
  7. $config['db']['server']     = 'localhost';   
  8.   
  9. //sesuaikan dengan user yang ada di database mysql anda  
  10. $config['db']['user']       = 'root';  
  11.   
  12. //sesuaikan dengan password mysql anda  
  13. $config['db']['password']   = '';  
  14.   
  15. //sesuaikan dengan nama database yang anda buat  
  16. $config['db']['database']   = 'blogkomputer';  
Cukup sampai disini, kedepan akan saya bahas bagaimana membuat library, helper serta menambah error handling.
Selamat mencoba, semoga ada guna dan manfaatnya...

Pengertian , URL , FTP , HOSTING , DOMAIN

»Pengertian URL (Uniform Resource Locator) adalah rangkaian karakter menurut suatu format standar tertentu, yang digunakan untuk menunjukkan alamat suatu sumber seperti dokumen dan gambar di Internet. URL pertama kali diciptakan oleh Tim Berners-Lee pada tahun 1991 agar penulis-penulis dokumen dokumen dapat mereferensikan pranala ke World Wide Web. Sejak 1994, konsep URL telah dikembangkan menjadi istilah Uniform Resource Identifier (URI) yang lebih umum sifatnya.
»File Transfer Protocol (FTP) adalah suatu protokol yang berfungsi untuk tukar-menukar file dalam suatu network yang menggunakan TCP koneksi bukan UDP.
Dua hal yang penting dalam FTP adalah FTP Server dan FTP Client.
FTP server adalah suatu server yang menjalankan software yang berfungsi untuk memberikan layanan tukar menukar file dimana server tersebut selalu siap memberikan layanan FTP apabila mendapat permintaan (request) dari FTP client.
FTP client adalah computer yang merequest koneksi ke FTP server untuk tujuan tukar menukar file. Setelah terhubung dengan FTP server, maka client dapat men-download, meng-upload, merename, men-delete, dll sesuai dengan permission yang diberikan oleh FTP server.
Tujuan dari FTP server adalah sebagai berikut :
• Untuk tujuan sharing data
• Untuk menyediakan indirect atau implicit remote computer
• Untuk menyediakan tempat penyimpanan bagi user
• Untuk menyediakan transfer data yang reliable dan efisien
Keamanan FTP

FTP sebenarnya cara yang tidak aman dalam mentransfer suatu file karena file dikirimkan tanpa di-enkripsi terlebih dahulu tetapi melalui clear text. Mode text yang dipakai untuk transfer data adalah format ASCII atau format binary. Secara default, FTP menggunakan mode ASCII dalam transfer data. Karena pengirimannya tanpa enkripsi, username, password, data yang di transfer, maupun perintah yang dikirim dapat di sniffing oleh orang dengan menggunakan protocol analyzer (sniffer). Solusi yang digunakan adalah dengan menggunakan SFTP (SSH FTP) yaitu FTP yang berbasis pada SSH atau menggunakan FTPS (FTP over SSL) sehingga data yang
dikirim terlebih dahulu di enkripsi.
»DOMAIN menurut Wikipedia Nama Domain (domain name) adalah nama unik yang diberikan untuk mengidentifikasi nama server komputer seperti web server atau email server di jaringan komputer ataupun internet. Nama domain berfungsi untuk mempermudah pengguna di internet pada saat melakukan akses ke server, selain juga dipakai untuk mengingat nama server yang dikunjungi tanpa harus mengenal deretan angka yang rumit yang dikenal sebagai IP address. Nama domain ini juga dikenal sebagai sebuah kesatuan dari sebuah situs web seperti contohnya “wikipedia.org”. Nama domain kadang-kadang disebut pula dengan istilah URL, atau alamat website.
Sederhananya domain merupakan nama unik/alamat untuk website anda, domain biasanya diakhiri dengan .com, .net, .org, .biz, .asia, .us dan lain-lain.
»Hosting biasa disebut dengan Web-Hosting, adalah perusahaan yang menyediakan layanan dan penyimpanan Web bagi perorangan atau perusahaan. Dengan kata lain Hosting adalah salah satu bentuk layanan penyewaan ruang simpan data (space) yang digunakan untuk menyimpan data – data website agar halaman website tersebut bisa diakses dari mana saja. Data web tersebut meliputi file – file html, php script, cgi script, css, image, database, dan file lain yang dibutuhkan untuk menampilkan halaman web.
Sebuah server web hosting akan online 24 jam sehari, sehingga memungkinkan kita bisa membuka web site yang dihosting kapanpun. Seperti biasa bila ada pertanyaan mengenai Domain dan Hosting ini silahkan diskusikan di form komentar.

Pengertian WWW

Pengertian Www Atau Web – Setelah pada artikel sebelumnya kita membahas mengenai Sejarah Internet, dan juga Cara Kerja Internet, maka kali ini kita akan membahas mengenai pengertian WWW atau World Wide Web, atau yang paling umum disebut adalah Web.
Www atau World Wide Web maupun Web saja adalah sebuah sistem yang saling terkait dalam sebuah dokumen berformat hypertext yang berisi beragam informasi, baik tulisan, gambar, suara, video, dan informasi multimedia lainnya dan dapat diakses melalui sebuah perangkat yang disebut web browser.
Untuk menterjemahkan dokumen hypertext kedalam bentuk dokumen yang dapat dipahami oleh Manusia, maka web browser melalui web client akan membaca halaman web yang tersimpan di sebuah webserver melalui protokol yang sering disebut HTTP atau Hypertext Transfer Protocol.
Sedangkan software atau perangkat lunak web browser saat ini tersedia dalam berbagai produk dengan kelebihan dan kekurangannya masing-masing. Beberapa web browser yang paling terkenal saat ini adalah Mozilla Firefox, Internet Explorer, Opera, Safari dan lain sebagainya.
Dokumen hypertext yang tersimpan didalam sebuah webserver memiliki banyak link atau sambungan antara satu dokumen hypertext dengan dokumen hypertext lainnya. Dengan adanya link antar dokumen hypertext, maka hal tersebut dapat memudahkan pengakses untuk mengunjungi atau mendapatkan dokumen-dokumen terkait yang diinginkannya.
Selebihnya dengan semakin banyaknya situs internet yang dapat diakses melalui browser dengan format http dan di ikuti dengan www , dan alamat url web yang hendak diakses, maka muncullah sebuah situs pencari atau search engine, seperti halnya google.com dan yahoo.com sebagai sarana memudahkan pengguna internet untuk mencari berbagai dokumen yang tersedia melalui jutaan web di sebuah jaringan internet global.

Pengertian HTML

HTML (Hyper Text Markup Language) adalah sebuah bahasa markup yang digunakan untuk membuat sebuah halaman web dan menampilkan berbagai informasi di dalam sebuah browser Internet. Bermula dari sebuah bahasa yang sebelumnya banyak digunakan di dunia penerbitan dan percetakan yang disebut dengan SGML (Standard Generalized Markup Language), HTML adalah sebuah standar yang digunakan secara luas untuk menampilkan halaman web. HTML saat ini merupakan standar Internet yang didefinisikan dan dikendalikan penggunaannya oleh World Wide Web Consortium (W3C).
HTML berupa kode-kode tag yang menginstruksikan browser untuk menghasilkan tampilan sesuai dengan yang diinginkan. Sebuah file yang merupakan file HTML dapat dibuka dengan menggunakan browser web seperti Mozilla Firefox atau Microsoft Internet Explorer. HTML juga dapat dikenali oleh aplikasi pembuka email ataupun dari PDA dan program lain yang memiliki kemampuan browser.
HTML dokumen tersebut mirip dengan dokumen teks biasa, hanya dalam dokumen ini sebuah teks bisa memuat instruksi yang ditandai dengan kode atau lebih dikenal dengan TAG tertentu. Sebagai contoh jika ingin membuat teks ditampilkan menjadi tebal seperti: TAMPIL TEBAL, maka penulisannya dilakukan dengan cara: <b>TAMPIL TEBAL</b>. Tanda <b> digunakan untuk mengaktifkan instruksi cetak tebal, diikuti oleh teks yang ingin ditebalkan, dan diakhiri dengan tanda </b> untuk menonaktifkan cetak tebal tersebut.
Secara garis besar, terdapat 4 jenis elemen dari HTML:

  • structural. tanda yang menentukan level atau tingkatan dari sebuah teks (contoh, <h1>Golf</h1> akan memerintahkan browser untuk menampilkan “Golf” sebagai teks tebal besar yang menunjukkan sebagai Heading 1
  • presentational. tanda yang menentukan tampilan dari sebuah teks tidak peduli dengan level dari teks tersebut (contoh, <b>boldface</b> akan menampilkan bold. Tanda presentational saat ini sudah mulai digantikan oleh CSS dan tidak direkomendasikan untuk mengatur tampilan teks,
  • hypertext. tanda yang menunjukkan pranala ke bagian dari dokumen tersebut atau pranala ke dokumen lain (contoh, <a href="http://www.ilmukita.com/">IlmuKita</a> akan menampilkan IlmuKita sebagai sebuah hyperlink ke URL tertentu),
  • Elemen widget yang membuat objek-objek lain seperti tombol (<button>), list (<li>), dan garis horizontal (<hr>).
Selain markup presentational , markup yang lin tidak menentukan bagaimana tampilan dari sebuah teks. Namun untuk saat ini, penggunaan tag HTML untuk menentukan tampilan telah dianjurkan untuk mulai ditinggalkan dan sebagai gantinya digunakan Cascading Style Sheets.

PENGERTIAN KERNEL

Pengertian Tentang Kernel

Kernel adalah suatu perangkat lunak yang menjadi bagian utama dari sebuah sistem operasi. Tugasnya melayani bermacam program aplikasi untuk mengakses perangkat keras komputer secara aman.

Karena akses terhadap perangkat keras terbatas, sedangkan ada lebih dari satu program yang harus dilayani dalam waktu yang bersamaan, maka kernel juga bertugas untuk mengatur kapan dan berapa lama suatu program dapat menggunakan satu bagian perangkat keras tersebut. Hal tersebut dinamakan sebagai multiplexing.

Akses kepada perangkat keras secara langsung merupakan masalah yang kompleks, oleh karena itu kernel biasanya mengimplementasikan sekumpulan abstraksi hardware. Abstraksi-abstraksi tersebut merupakan sebuah cara untuk menyembunyikan kompleksitas, dan memungkinkan akses kepada perangkat keras menjadi mudah dan seragam. Sehingga abstraksi pada akhirnya memudahkan pekerjaan programer.

Untuk menjalankan sebuah komputer kita tidak harus menggunakan kernel sistem operasi. Sebuah program dapat saja langsung di- load dan dijalankan diatas mesin 'telanjang' komputer, yaitu bilamana pembuat program ingin melakukan pekerjaannya tanpa bantuan abstraksi perangkat keras atau bantuan sistem operasi. Teknik ini digunakan oleh komputer generasi awal, sehingga bila kita ingin berpindah dari satu program ke program lain, kita harus mereset dan meload kembali program-program tersebut.

Ada 4 kategori kernel:

1. Monolithic kernel. Kernel yang menyediakan abstraksi perangkat keras yang kaya dan tangguh.

2. Microkernel. Kernel yang menyediakan hanya sekumpulan kecil abstraksi perangkat keras sederhana, dan menggunakan aplikasi-aplikasi yang disebut sebagai server untuk menyediakan fungsi-fungsi lainnya.

3. Hybrid (modifikasi dari microkernel). Kernel yang mirip microkernel, tetapi ia juga memasukkan beberapa kode tambahan di kernel agar ia menjadi lebih cepat.

4. Exokernel. Kernel yang tidak menyediakan sama sekali abstraksi hardware, tapi ia menyediakan sekumpulan pustaka yang menyediakan fungsi-fungsi akses ke perangkat keras secara langsung atau hampir-hampir langsung.

Dari keempat kategori kernel yang disebutkan diatas, kernel Linux termasuk kategori monolithic kernel. Kernel Linux berbeda dengan sistem Linux. Kernel Linux merupakan sebuah perangkat lunak orisinil yang dibuat oleh komunitas Linux, sedangkan sistem Linux, yang dikenal saat ini, mengandung banyak komponen yang dibuat sendiri atau dipinjam dari proyek pengembangan lain.

Kernel Linux pertama yang dipublikasikan adalah versi 0.01, pada tanggal 14 Maret 1991. Sistem berkas yang didukung hanya sistem berkas Minix. Kernel pertama dibuat berdasarkan kerangka Minix (sistem UNIX kecil yang dikembangkan oleh Andy Tanenbaum). Tetapi, kernel tersebut sudah mengimplementasi proses UNIX secara tepat.

Pada tanggal 14 Maret 1994 dirilis versi 1.0, yang merupakan tonggak sejarah Linux. Versi ini adalah kulminasi dari tiga tahun perkembangan yang cepat dari kernel Linux. Fitur baru terbesar yang disediakan adalah jaringan. Versi 1.0 mampu mendukung protokol standar jaringan TCP/IP. Kernel 1.0 juga memiliki sistem berkas yang lebih baik tanpa batasan-batasan sistem berkas Minix. Sejumlah dukungan perangkat keras ekstra juga dimasukkan ke dalam rilis ini. Dukungan perangkat keras telah berkembang termasuk diantaranya floppy-disk, CD-ROM, sound card, berbagai mouse, dan keyboard internasional. Dukungan juga diberikan terhadap modul kernel yang loadable dan unloadable secara dinamis.

Satu tahun kemudian dirilis kernel versi 1.2. Kernel ini mendukung variasi perangkat keras yang lebih luas. Pengembang telah memperbaharui networking stack untuk menyediakan support bagi protokol IPX, dan membuat implementasi IP lebih lengkap dengan memberikan fungsi accounting dan firewalling. Kernel 1.2 ini merupakan kernel Linux terakhir yang PC-only. Konsentrasi lebih diberikan pada dukungan perangkat keras dan memperbanyak implementasi lengkap pada fungsi-fungsi yang ada.

Pada bulan Juni 1996, kernel Linux 2.0 dirilis. Versi ini memiliki dua kemampuan baru yang penting, yaitu dukungan terhadap multiple architecture dan multiprocessor architectures. Kode untuk manajemen memori telah diperbaiki sehingga kinerja sistem berkas dan memori virtual meningkat. Untuk pertama kalinya, file system caching dikembangkan ke networked file systems, juga sudah didukung writable memory mapped regions. Kernel 2.0 sudah memberikan kinerja TCP/IP yang lebih baik, ditambah dengan sejumlah protokol jaringan baru. Kemampuan untuk memakai remote netware dan SMB (Microsoft LanManager) network volumes juga telah ditambahkan pada versi terbaru ini. Tambahan lain adalah dukungan internal kernel threads, penanganan dependencies antara modul-modul loadable, dan loading otomatis modul berdasarkan permintaan (on demand). Konfigurasi dinamis dari kernel pada run time telah diperbaiki melalui konfigurasi interface yang baru dan standar.

Semenjak Desember 2003, telah diluncurkan Kernel versi 2.6, yang dewasa ini (2008) telah mencapai patch versi 2.6.26.1 ( http://kambing.ui.edu/kernel-linux/v2.6/). Hal-hal yang berubah dari versi 2.6 ini ialah:

* Subitem M/K yang dipercanggih.

* Kernel yang pre-emptif.

* Penjadwalan Proses yang dipercanggih.

* Threading yang dipercanggih.

* Implementasi ALSA (Advanced Linux Sound Architecture) dalam kernel.

* Dukungan sistem berkas seperti: ext2, ext3, reiserfs, adfs, amiga ffs, apple macintosh hfs, cramfs, jfs, iso9660, minix, msdos, bfs, free vxfs, os/2 hpfs, qnx4fs, romfs, sysvfs, udf, ufs, vfat, xfs, BeOS befs (ro), ntfs (ro), efs (ro).

Kelebihan dan Kekurangan Linux

logo linux
Linux. Sebuah OS yang berlogokan penguin ini memiliki keunikan tersendiri. dalam posingan kali ini saya membahas tentang beberapa kelebihan dan kekurangan linux. Yuk...mari...langsung aja....
Kelebihan Linux:
- Bersifat open source, bebas dan terbuka. sehingga tidak perlu biaya untuk mendapatkannya. LISENSI FREE  dan boleh di utak atik semaunya.
- Linux sekarang sudah mudah di operasikan. kalo dulu pengguna linux identik dengan para hacker, tapi sekarang orang awam pun sudah banyak yang menggunakannya.
- Hampir semua aplikasi yang biasa dijalankan di windows, sudah ada aplikasi linuxnya yang dikembangkan oleh komunitas linux atau bisa juga menggunakan software emulator.
- Memiliki pengamanan yang lebih unggul karena di desain multiuser sehingga apabila virus menyerang user tertentu, akan sangat sulit menyebar ke user lainnya.
- Cocok untuk PC yang memiliki spesifikasi minimum karena linux membutuhkan resource yang lebih kecil dibandingkan Windows.
- Linux dapat berjalan di dua mode.
- Jarang crash atau nge-hang yang mengharuskan kita untuk merestart komputer karena linux lebih stabil.
- Memiliki komunitas di berbagai penjuru dunia.
- Terdapat beragam pilihan seperti Ubuntu, Fedora, Debian, Centos, RedHat, Opensuse, Mandriva, dan sebagainya.
Kekurangan Linux:
- Banyak user yang belum terbiasa menggunakan linux.
- Dukungan hardware dari vendor-vendor tertentu yang tidak terlalu baik pada linux. Kalo ingin melihat daftar hardware yang mendukung linux silahkan dilihat di www.linux-drivers.org atau www.linuxhardware.org/.
- Proses instalasinya tidak semudah windows.
- Aplikasi di linux belum se ampuh aplikasi windows.
- Bagi administrator sistem yang belum terbiasa dengan Unix-like, maka mau gak mau harus belajar dulu.
- Struktur direktori dan hak akses yang membingungkan bagi user yang terbiasa menggunakan windows.
Seperti itulah kelebihan dan kekurangan pada linux, smoga bisa menjadi bahan pertimbangan anda yang ingin beralih OS. hehehe
semoga bermanfaat....