Skip navigation

Monthly Archives: Maret 2009


Agak susah memang kalau sudah terbiasa dengan GUI di Linux. Untuk set IP aja biasanya mudah. Well, kemaren mesti konek ke jaringan ITB pake DHCP pake Ubuntu Server. Sialnya, Ubuntu Server ini bener-bener fresh. Ndak ada GUI dan settingannya bener-bener kosong.

Well untuk nyettingnya caranya mudah

Edit aja di /etc/networking/interface. Biasanya ada

auth lo
iface lo loop

Ditambahin entry

auth eth0
iface eth0 inet dhcp

Kemudian langsung aja daemon buat networkingnya direstart

#/etc/init.d/networking restart

Nice!


Untuk proses pengumpulan tugas besar II Pemrograman Internet, gw sengaja bikin sistem yang bisa mendeploy langsung hasil pekerjaan peserta. Peserta kuliah wajib mengarsipkan pekerjaannya dalam format Zip. Kemudian untuk membuat databasenya, saya wajibkan peserta untuk menyertakan berkas bernama database.sql yang berisi dump dari basisdata yang digunakan. Peserta juga diwajibkan menggunakan koneksi basisdata dengan nama pengguna, sandi, dan nama basisdata yang sudah ditentukan.

Permasalahannya adalah bagaimana memasukkan dump pada berkas tersebut ke dalam basis data.

Salah satu caranya adalah dengan menggunakan fungsi exec atau system. Dengan menggunakan perintah ini kita dapat langsung mengeksekusi lewat command line.

$commandline = "mysql -h localhost -u $username -p$password $databasename -e \"source $databasepath\"";
system($commandline);

MySQL memberikan argumen -e untuk mengeksekusi sebuah perintah kemudian keluar dari aplikasi. Dengan demikian kita hanya butuh memasukkan perintah “source” lewat argumen tersebut.

Selain itu ada cara yang sedikit naif, yakni dengan melakukan parsing terhadap berkas dan mengeksekusi satu persatu.

$fd = fopen($databasepath, 'r');
$read = fread($fd, filesize($databasepath));
$queries = explode(';', $read);
foreach($queries as $query)
    mysql_query($query);

Berkas akan diparsing berdasarkan keberadaan karakter ‘;’ yang menunjukkan batas antara sebuah klausa dengan klausa yang lain. Dan,Voila! Cukup dengan perintah explode klausa akan langsung dimasukkan ke dalam array untuk dieksekusi satu per satu.


Model-View-Controller atau MVC adalah sebuah pola desain perangkat lunak. Desain ini memisahkan antarabusiness logic dari user interface. Model adalah kumpulan class yang merepresentasikan business logic yang digunakan dalam penggunaan perangkat lunak. Tugasnya adalah memodelkan segala hal yang dibutuhkan terkait dengan business logic tersebut. Viewer adalah kumpulan class yang mengatur tampilan yang akan dihadapi oleh pengguna.  Sedangkan, Controller adalah kumpulan class yang melakukan pemrosesan permintaan dari pengguna dan bertugas untuk melakukan pengolahan Model dan akhirnya menampilkannya ke dalam Viewer.

Di dalam PHP (sama halnya dengan pemrograman web lainnya) sebuah Model diimplementasikan dengan sebuah class yang bertugas untuk menangani pengambilan data dari basis data dan melakukan pemodelan data sehingga berupa sebuah objek.  Sebuah View diimplementasikan dengan sebuah file PHP yang hanya berisi tag-tag HTML dan hanya sedikit tag PHP yang bertugas untuk menampilkan data dalam bentuk HTML. Meski demikian untuk memudahkan, View lebih banyak diimplementasikan kepada sebuah class yang akan mencari file PHP yang dibutuhkan. Sedangkan Controller sendiri hanyalah berupa sebuah HTTP request dari pengguna. Controller sendiri dapat diimplementasikan ke dalam classclass yang menangani HTTP request tersebut sehingga proses penanganan business logicnya dapat dimodelkan dan dipahami dengan mudah.

Sekarang ini MVC banyak dikembangkan bersama-sama jenis class yang tidak termasuk ke dalam ketiga jenis class tersebut yakni Library dan Helper. Library dan Helper adalah kumpulan class yang tidak termasuk ke dalam business logic tapi bertugas untuk menangani beberapa pemrosesan. Perbedaannya adalah Library biasanya merupakan menangani pemrosesan berskala besar sedangkan Helper menangani pemrosesan berskala kecil. Contoh Library misalnya adalah pemrosesan basisdata atau sebuah business logic yang membantu business logicH yang sedang digunakan. Helper biasanya menangani penghitungan kecil seperti penampilan form secara generik, pemrosesan arary, dan fungsi-fungsi kecil yang bukan merupakan bawaan dari fitur bahasa dan dibungkus oleh Helper tersebut.


Lumayan hasil bebersih folder tugas progin tahun lalu. Ada class wrapper buat koneksi database MySQL 😛

<?php

class database {
    var $database_host;
    var $database_user;
    var $database_pswd;
    var $database_name;
    var $database_link;
    var $last_result;

    function mysql($database_host, $database_user, $database_pswd, $database_name){
        $this->database_host = $database_host;
        $this->database_user = $database_user;
        $this->database_pswd = $database_pswd;
        $this->database_name = $database_name;
        $this->database_link = mysql_connect($this->database_host, $this->database_user, $this->database_pswd) or die("<strong>Could not connect to database</strong> : ".mysql_error());
        mysql_select_db($this->database_name, $this->database_link) or die("<strong>Could not select database</strong>".mysql_error());
    }

    function query($query_string){
        $result = mysql_query($query_string, $this->database_link);
        if(!$result) {
            return false;
        } else {
            return $result;
        }
    }

    function fetch_assoc($result){
        return mysql_fetch_assoc($result);
    }

    function rows_affected($result){
        return mysql_rows_affected($result);
    }    

    function num_rows($result){
        return mysql_num_rows($result);
    }
}
//end of file

well, sekarang udah ada yang namanya framework. Bener-bener menyenangkan.


Salah satu spesifikasi tambahan di tugas besar 2 kuliah pemrograman internet adalah penggunaan Smiley. Peserta diminta untuk membuat fitur smiley pada setiap post pada bulletin board yang diwajibkan untuk dibuat. Sebenarnya fitur ini sangat mudah untuk dilakukan.

Read More »


Menyambung tulisan dari Bung Aqsath mengenai pengenalan OOP di PHP, gw ada sedikit tambahan yang menarik yakni mengenai konsep ORM.

ORM atau Object Relational Mapping adalah teknik yang menghubungkan basisdata relasional dengan konsep OOP. Dengan menggunakan ORM kita dapat dengan mudah mempertahankan persistensi objek pada database. Kita dapat melakukan pembuatan obyek dan manipulasi-manipulasinya sembari mempertahankan isi data pada database yang direpresentasikan oleh objek tersebut.

Teknik ini sudah banyak sekali diimplementasikan diframework-framework seperti KohanaPHP, Symfony, CakePHP, dll.

Read More »


Class autoloading adalah sebuah fitur di PHP yang memungkinan aplikasi dapat meload sebuah class tanpa harus menginclude file class tersebut. Biasanya sebuah class dikodekan pada file sendiri-sendiri yang diberi nama dengan nama class tersebut. Misalnya terdapat class Page, Post, User. Class tersebut dikodekan dengan berkas

  • Page.php
  • Post.php
  • User.php

Biasanya kita mengkodekan

class dan harus melakukan include untuk setiap class tersebut. Terlebih lagi jika hanya terdapat beberapa class yang dibutuhkan maka melakukan include untuk semua class membuat segala sesuatu menjadi tidak efisien. Dengan menggunakan autoload kita bisa melakukan loading secara dinamis.

class diload dan tidak terdapat class sebelumnya yang bernama sama. Nantinya fungsi ini akan mengeksekusi perintah include ke file bernama sesuai dengan nama class tersebut.

Source code bisa didownload di sini. Jangan lupa rename ekstensi ke *.zip.

%d blogger menyukai ini: