Saturday, March 10, 2012

Memahami OOP Pada PHP (slackware)

Apa sih OOP itu ? Lalu apa bedanya dengan coding yang biasanya (procedural)? Menurut gue pemrograman OOP merupakan suatu yang harus dikuasai siapapun yang akan dan sudah menjadi seorang programer.

Menurut hemat gue konsep OOP itu sendiri untuk menyederhanakan sebuah program menjadi program-program lain yang lebih kecil. Sangat berguna untuk pemrograman berskala besar, misal kita tidak usah mengoreksi semua program untuk sebuah kesalahan kecil, cukup mencari class yang bermasalah terus memperbaikinya.  Gue disini tidak menjelaskan apa itu OOP tapi gue langsung ke prakteknya aja yaa. Referensi kalian bisa cari banyak di sini :D


Class, Method, & Property

Disini gue akan coba memisahkan supaya mudah memahami satu persatu bagian dari OOP di PHP. OOP tidak jauh-jauh dari yang namanya Class. Terus gimana caranya definisiin sebuah Class pada PHP? gue mengasumsikan anda sudah menginstall php (minimal versi 5) dan localserver (apache, httpd). Kita buat file yang namanya coba.php dalam direktori webserver


# cd /var/www/htdocs/
# nano coba.php


<?php

 //nama classnya
 class orang {
  
  //contoh properti
  public $nama;

  //contoh method
  function set_nama($nama_baru) {
   $this->nama = $nama_baru;
  }

  function get_nama() {
   return $this->nama;
  }

 }
?>


Pada codingan di atas ada Class yang namanya orang. Setiap Class punya Property dan Method masing-masing. Property bisa disebut juga variable dari Class, nah kalo Method biasanya dalam bentuk fungsi. Pada Class orang, ada Property $nama. Terus fungsi get_nama(), set_nama() adalah Method dari Class orang. Baik Property maupun Method pada suatu Class bersifat opsional jumlahnya, disesuaikan dengan kebutuhan anda.


Menghidupkan Class

Setelah bikin Class dengan Properti dan Method nya, kita harus dapat menggunakan-nya dengan meng-hidupkan Class itu. Proses meng-hidupkan suatu Class biasa disebut Instansiasi / Pembuatan Objek. Cara menghidupkan suatu Class dengan menggunakan keyword "New". Coba kita liat di kodingan yuk:


<?php

  // include-kan file class coba yang telah kita buat
  include("coba.php");nama 
  
  // buat instansiasi / objeck dari class
  $udin = new orang();

?>


Di kodingan diatas, variable yg gue pake disini yaitu $udin sudah merupakan sebuah objek dari Class orang. Dan dengan instansiasi tersebut, variable $udin dapat kita gunakan untuk memanipulasi property  yg udah kita buat dengan cara memanggil method get_nama() dan set_nama(). Ayo kita coba coy:


# cd /var/www/htdocs/
# nano nama.php


<?php

  // include-kan file class coba yang telah kita buat
  include("coba.php");
  
  /*bikin objek atau biasa disebut instansiasi.
  cara menghidupkan suatu class dengan menggunakan keyword "new" */
  $udin = new orang();

  // manipulasi nama dari class orang, kita coba set namanya jadi udin
  $udin->set_nama("udin si imoet");

  //ambil namanya
  echo "Nama asli udin: " . $udin->get_nama() . "\n";;

?>


Kita coba di browser yaak, tulis di url http://localhost/nama.php. ini penampakan di firefox saya:



Berhasil ! hehe. Sebenernya gue cuma mau merubah variabel $nama yang udah kita buat menjadi ada isinya yaitu udin. Sebenernya bisa digunakan kodingan seperti ini aja:


<?php

  $nama = "udin si imoet";
  echo "Nama asli udin: " . $nama . "\n";;

?>


Tapi di sebuah program yang kompleks dan besar, kita tidak bisa hanya mengandalkan program prosedural yang menulis dari awal hingga akhir program dalam satu kesatuan program saja, kita harus membaginya dalam program-program lain yang lebih kecil hingga membentuk sebuah program yang besar. Konsep sedikit-demi sedikit lama-lama menjadi bukit, bisa menggambarkan OOP juga :D


Sekian tutorialnya, mohon maaf kalo ada kesalahan CMIIW.

Monday, March 5, 2012

Koneksi Wifi Menggunakan wpa_supplicant (Linux)

Pertama buat dulu settingannya di /etc/wpa_supplicant.conf

# cat << EOF >> /etc/wpa_supplicant.conf

> network={

> scan_ssid=1

> ssid="ISIKAN_NAMA_SSIDNYA_DISINI"

> key_mgmt=WPA-PSK

> psk="ISIKAN_PASSWORDNYA_DISINI"

> }

> EOF



Kemudian aktifkan interface wifinya, biasanya di linux menggunakan wlan0 atau eth1.

# ifconfig eth1 up


Jalankan wpa_supplicant sebagai daemon menggunakan konfigurasi tadi.

# wpa_supplicant -B -ieth1 -c/etc/wpa_supplicant.conf


Untuk mendapatkan IP kita bisa menggunakan dhcpcd atau dhclient, disini kita coba menggunakan dhcpcd

# dhcpcd eth1

dhcpcd[6088]: version 5.2.12 starting

dhcpcd[6088]: eth1: broadcasting for a lease

dhcpcd[6088]: eth1: offered 192.168.*.* from 192.168.*.*

dhcpcd[6088]: eth1: ignoring offer of 192.168.*.* from 192.168.*.*

dhcpcd[6088]: eth1: acknowledged 192.168.*.* from 192.168.*.*

dhcpcd[6088]: eth1: checking for 192.168.*.*

dhcpcd[6088]: eth1: leased 192.168.*.* for 86400 seconds

dhcpcd[6088]: forked to background, child pid 6124




Agar internetan lebih cepet, kita bisa setting dns. Biasanya sih saya pake punya google, kita setting nya di /etc/resolv.conf.

# echo -ne "nameserver 8.8.8.8\nnameserver 8.8.4.4" > /etc/resolv.conf


Coba cek koneksinya berhasil apa tidak dengan ping ke url mana saja, contoh saya ping ke google

# ping -c 3 www.google.co.id

PING www.l.google.com (74.125.*.*) 56(84) bytes of data.

64 bytes from sin01s05-in-f18.1e100.net (74.125.*.*): icmp_req=1 ttl=54 time=16.1 ms

64 bytes from sin01s05-in-f18.1e100.net (74.125.*.*): icmp_req=2 ttl=54 time=16.4 ms
64 bytes from sin01s05-in-f18.1e100.net (74.125.*.*): icmp_req=3 ttl=54 time=17.1 ms



--- www.l.google.com ping statistics ---

3 packets transmitted, 3 received, 0% packet loss, time 2002ms

rtt min/avg/max/mdev = 16.105/16.539/17.108/0.445 ms




Oh yaa saya sekalian kasih bash scriptnya untuk koneksi manual maupun wpa di linux nih, silahkan di coba sekalian di review :)


function tanya() {
        read -p "Mau static ip ga [y/t] ? " pilih
        if [ $pilih = 'y' ] || [ $pilih = 'Y' ]; then
                read -p ">> Masukkan ip yang anda inginkan: " ip
                read -p ">> Masukkan gateway: " gw
                echo ">> Setting up ip to $ip.. "; ifconfig eth1 $ip/24
                echo ">> Setting up gateway ip to $gw.. "; route add default gw $gw

                if [ $pil = 2 ]; then
                        echo ">> Setting up iwconfig to the ssid.. ";
                        iwconfig $wireless $ssid;
                else
                        echo ">> Setting up wpa supplicant with wpa configuration.. ";
                        wpa_supplicant -B -i $wireless -c /etc/wpa_supplicant.conf;
                fi

        else
                echo ">> Setting up $wireless to $konek "; iwconfig $wireless essid $ssid; echo;
                echo ">> Obtaining ip address.. ";
                dhclient eth1;
        fi
}


clear

echo "##########################################################
##    _____           _____ _______       ___           ##
##    \   \          /   /  |   _  \     /  \           ##
##     \   \        /   /   |  | \  \   / /\ \          ##
##      \   \  /\  /   /    |  |_/  /  / /__\ \         ##
##       \   \/  \/   /     |   ___/  /  ____  \        ##
##        \          /      |  |     /  /    \  \       ##
##         \___/\___/       |__|    /__/      \__\      ##
##########################################################"

echo;
echo -e "\tMenu"
echo "1. WPA"
echo "2. Koneksi Manual";echo;
read -p "Masukkan pilihan anda : " pil
if [ $pil = 1 ]; then
        read -p ">> Nama Interface Device Wireless Anda: " wireless
        echo ">> Getting down $wireless.. "; ifconfig $wireless down;
        echo ">> Changging mac address.. "; macchanger -ar $wireless;
        echo ">> Waking up $wireless.. "; ifconfig $wireless up;
        echo ">> Hasil scan wireless: "; echo; iwlist $wireless scan | grep SSID
        read -p ">> Masukkan SSID yang ingin di koneksikan : " ssid
        read -p ">> Masukkan passwordnya : " pass
        echo ">> Setting up ssid and password to wpa supplicant configuration.. ";
        wpa_passphrase $ssid $pass >> /etc/wpa_supplicant.conf;echo;
        tanya;
else
        read -p ">> Nama Interface Device Wireless Anda: " wireless
        echo ">> Getting down $wireless.. "; ifconfig $wireless down
        echo ">> Changging mac address.. "; macchanger -ar $wireless
        echo ">> Waking up $wireless.. "; ifconfig $wireless up
        echo ">> Hasil scan wireless: "; echo; echo; iwlist $wireless scan | grep SSID
        read -p ">> Masukkan SSID yang ingin anda koneksikan: " ssid; echo
        tanya;
fi

exit 0



Oke selamat mencoba semoga berhasil kawan!

Sunday, February 26, 2012

Konfigurasi php & mysql Slackware 13.37

  

  • PHP


  1. Download paket php-nya terlebih dahulu.

    # wget http://kambing.ui.ac.id/slackware/slackware-13.37/slackware/n/php-5.3.6-i486-6.txz

      atau

    # slackpkg install php


  2. Jika mendownload paketnya, install dulu dgn perintah

    # installpkg php-5.3.6-i486-6.txz


  3. Edit konfigurasi file httpd.conf

    # nano /etc/httpd/httpd.conf

      Cari baris yang mengandung kata dibawah ini

       # Uncomment the following line to enable PHP:

      kemudian, edit menjadi seperti ini

       AddType application/x-httpd-php .php
      Include /etc/httpd/mod_php.conf


  4. Restart service apache dengan perintah

    # httpd -k restart
     
    atau

    # /etc/rc.d/rc.httpd restart


  5. Untuk mengujinya buat lah file info.php di /var/www/htdocs/ (default directory dari apache)

    # cd /var/www/htdocs

    # nano info.php


      <?php 
      phpinfo();
      ?>
    

    tekan ctrl+x dan ketik 'y' untuk save dan exit. pada browser coba ketikkan di URLnya:

      localhost/info.php

    kalau muncul begini berarti konfigurasi telah benar.




  • MYSQL

  1. Install database mysqlnya
  2. # mysql_install_db
  3. Mengubah hak akses kepemilikan dari direktori /var/lib/mysql yang tadinya hanya milik root doang menjadi milik user dan grup mysql. sintaksnya kurang lebih begini:

    # chown userownerbaru:grupownerbaru file_atau_direktori

      jadi kita ketikkan

    # chown mysql:mysql /var/lib/mysql/


  4. Mengubah hak akses tempat kita akan membuat database nanti

    # chmod 755 /var/lib/mysql/

    Hore, sekarang kita udah bisa membuat dan menjalankan database mysql :D. Tinggal menjalankan mysql daemonnya saja.

    # chmod +x /etc/rc.d/rc.mysqld

    # /etc/rc.d/rc.mysql start



     Coba jalankan mysqlnya

    # mysql

    Welcome to the MySQL monitor. Commands end with ; or \g.

    Your MySQL connection id is 15

    Server version: 5.1.56-log Source distribution



    Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.

    This software comes with ABSOLUTELY NO WARRANTY. This is free software,

    and you are welcome to modify and redistribute it under the GPL v2 license



    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.



    mysql>


     Udah bisa kan? tp karena defaultnya ga ada password, kita pakein aja biar aman.

    # mysqladmin -u root password password-yang-diinginkan


    Untuk mengaksesnya lagi

    # mysql -u root -p
    Enter password:




    Your MySQL connection id is 15

    Server version: 5.1.56-log Source distribution



    Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.

    This software comes with ABSOLUTELY NO WARRANTY. This is free software,

    and you are welcome to modify and redistribute it under the GPL v2 license



    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.



    mysql>



    Selesai! semoga berhasil kawan.

Merubah Waktu Secara Manual Di Linux

Gue nulis ini sebenernya mau menginspiriasi linux users yang mau belajar linux dengan serius, tidak hanya point & click. Memang belakangan linux diciptakan sedemikian rupa untuk menghilangkan statement bahwa linux itu sulit, dan untuk memudahkan penggunanya. Tapi ini justru menghilangkan ciri dari OS unix basis linux itu sendiri yang menggunakan beribu-ribu perintah dalam mengoperasikan komputernya. Suatu kebanggaan tersendiri dan adalah nilai plus jika kita biasa menggunakan CLI (Command Line Interface) :) .


Langsung saja to the point, ini sebenernya pengalaman pribadi gue menggunakan GNU/Linux Slackware dengan DE (Desktop Environment) fluxbox. Seringkali setiap booting dan saya cek jam nya beda antara jam di kamar, jam di OS, sama jam di BIOS. Setinggan zona waktunya pun Jakarta, Indonesia +7 GMT. Padahal BIOS udah gue save dengan jam yang seharusnya, tp pas booting selalu berubah lagi. Yaudah curhat mulu kan jadinya gue, kalo mau tau jam lo sama atau tidak dengan bios cek dengan perintah berikut:

[fathiraz@slackware][~]
[#]date
Sun Feb 26 18:57:10 WIT 2012


Ket:
  Sun                 hari
  Feb                 bulan
  26                   tanggal
  18                    jam
  57                   menit
  10                   detik
  WIT                 zona waktu
  2012               tahun


Itu waktu di OS Linux nya, nah cek waktu biosnya pake hwclock.

[fathiraz@slackware][~]
[#]hwclock
Sun 26 Feb 2012 02:09:10 PM WIT -0.703874 seconds


Beda jauh banget yaa jam BIOS sama jam OS nya, gue baca-baca sendiri menggunakan perintah date kita bisa mengganti nya. Kalo mau ganti jamnya doang:

[fathiraz@slackware][~]
[#]date -s 14:09:00
Sun Feb 26 14:09:00 WIT 2012


Gue sendiri pernah ngalamin semuanya beda, dari tahun sampe detik. Nah kalo mau gantinya gini formatnya:

date nnddhhmmyyyy.ss

nn
> bulan (01-12)
dd > tanggal (01-31)
hh > jam (01-23)
mm > menit (01-59)
yyyy > tahun (4 digit)
ss > detik (00-59)



Misal kita mau ganti waktunya jadi jam 14:00:00 tanggal 4, bulan maret, tahun 2011.

[fathiraz@slackware][~]
[#]date 030414002011.00
Fri Mar 4 14:00:00 WIT 2011


Nah ini biar lebih praktis dan sekalian kita belajar bash programming, gue bikin bash scriptnya nih:


#!/bin/bash

lagi='t'
        echo -e "Waktu OS   : `date`";
        echo -e "Waktu BIOS : `hwclock`";
        read -p "Apakah sudah sama ? [y/t] " lagi;
        echo ""
while [ $lagi == 't' ] || [ $lagi == 'T' ]; do

        read -p "Masukkan jam [01 - 24]     :  " jam;
        read -p "Masukkan menit [01 - 60]   :  " menit;
        read -p "Masukkan tanggal [01 - 31] :  " tanggal;
        read -p "Masukkan bulan [01 - 12]   :  " bulan;
        read -p "Masukkan tahun [4 digit]   :  " tahun;

        date $bulan$tanggal$jam$menit$tahun.00;
        echo "" 
        echo -e "Waktu OS   : `date`";
        echo -e "Waktu BIOS : `hwclock`";
        read -p "Apakah sudah sama ? [y/t] " lagi;
        echo ""
done


Demikian tutorial singkat kali ini, selamat mencoba semoga sukses! salam imut

Sunday, February 5, 2012

Si Kecil Pengganti Compiz Di Fluxbox


Apakah anda tahu compiz? buat linux users, pasti sudah ga awam sama nama ini. Kenapa? karena ini adalah sebuah aplikasi luar biasa yang dapat menampilkan grafik 3D sekelas MacOS hanya dengan sumber daya komputer atau pc yang minim! Intinya ga harus dibutuhkan laptop yang mahal untuk nyicipin efek-efek keren tersebut. Menurut situs resminya Compiz : "Compiz is an OpenGL compositing manager that use GLX_EXT_texture_from_pixmap for binding redirected top-level windows to texture objects. It has a flexible plug-in system and it is designed to run well on most graphics hardware." Artinya itu kurang lebih google translate sendiri aja deh :D


Jujur saya pribadi, tertarik dengan linux salah satu faktornya adalah compiz ini. Dalam artian lo ga harus punya sesuatu yang mahal untuk merasakan keindahan sebuah teknologi :) . Di distro-distro (Distribution Of Linux) yang menggunakan DE (Desktop Environment) Gnome atau KDE, compiz begitu umum dan lazim ditemui. Karena penginstalannya mudah dan tidak begitu merepotkan. Dan hasilnya pun keren sekali, nih contohnya di desktop Linux:






Oke sekarang buat anda pengguna fluxbox, openbox, blackbox, gimana mau merasakan effect tersebut? emang bisa? jawabannya  adalah tidak, di situs resminya ada nih Wiki Fluxbox:

Can I use fluxbox or parts of it with XGL/Compiz/Beryl?

No, you can't. Fluxbox is a windowmanager, compiz and beryl are window managers (combined with a composite manager). So you can only replace fluxbox with one of them. KDE, GNOME and XFCE are desktop environments, which bring a windowmanager (kwin, metacity and xfwm) along. That's why you can use them with compiz, only the windowmanager is replaced.
Fluxbox is not modular, so you can't use the fluxbox menu, toolbar, slit or anything else with compiz. You can read the eyecandy section for some nice effects with fluxbox or switch completely to compiz/beryl and miss all the great features fluxbox has.
Lha terus gimana dong? tenang, kemaren saya nyicip di archlinux ada penggantinya kok, namanya cairo-compmgr. penginstalannya gimana ? mudah saja:

pacman -S cairo-compmgr
Yang lainnya samain aja yaa, cuma ganti aja "pacman" nya jadi yum buat fedora, atau zypper buat opensuse.
terus cara ngaktifinnya gimane? tinggal tambahin aja di ~/.fluxbox/startup:

#!/bin/sh
#
# fluxbox startup-script:
#
# Lines starting with a '#' are ignored.

# Change your keymap:
xmodmap "$HOME/.Xmodmap"

# Applications you want to run with fluxbox.
# MAKE SURE THAT APPS THAT KEEP RUNNING HAVE AN & AT THE END.
#
# unclutter -idle 2 &
# wmnd &
# wmsmixer -w &
# idesk &
tilda &
wicd-client &
cairo-compmgr &
# And last but not least we start fluxbox.
# Because it is the last app you have to run it with exec before it.

exec fluxbox
# or if you want to keep a log:
# exec fluxbox -log "$fluxdir/log" 

Oh ya cairo-compmgr ini hanya mendukung sedikit dari efek compiz, hanya efek transisi antar window, pemunculan sebuah menu, yah yang penting 'box' kita ada efeknya kan hehe :D
selesai deh, selamat mencoba semoga berhasil!