Pengantar UML

 

UML (Unified Modeling Language) adalah sebuah bahasa untuk menetukan, visualisasi, kontruksi, dan mendokumentasikan artifact (bagian dari informasi yang digunakan atau dihasilkan dalam suatu proses pembuatan perangkat lunak. Artifact dapat berupa model, deskripsi atau perangkat lunak) dari system perangkat lunak, seperti pada pemodelan bisnis dan system non perangkat lunak lainnya.
UML merupakan suatu kumpulan teknik terbaik yang telah terbukti sukses dalam memodelkan system yang besar dan kompleks. UML tidak hanya digunakan dalam proses pemodelan perangkat lunak, namun hampir dalam semua bidang yang membutuhkan pemodelan.
BAGIAN-BAGIAN UML
Bagian-bagian utama dari UML adalah view, diagram, model element, dan general mechanism.
a. View
View digunakan untuk melihat sistem yang dimodelkan dari beberapa aspek yang berbeda. View bukan melihat grafik, tapi merupakan suatu abstraksi yang berisi sejumlah diagram.
Beberapa jenis view dalam UML antara lain: use case view, logical view, component view, concurrency view,dan deployment view.
b. Use case view
Mendeskripsikan fungsionalitas sistem yang seharusnya dilakukan sesuai yang diinginkan external actors. Actor yang berinteraksi dengan sistem dapat berupa user atau sistem lainnya.
View ini digambarkan dalam use case diagramsdan kadang-kadang dengan activity diagrams. Viewini digunakan terutama untuk pelanggan, perancang (designer), pengembang (developer), dan penguji sistem (tester).
c. Logical view
Mendeskripsikan bagaimana fungsionalitas dari sistem, struktur statis (class, object,danrelationship ) dan kolaborasi dinamis yang terjadi ketika object mengirim pesan ke object lain dalam suatu fungsi tertentu.
View ini digambarkan dalam class diagrams untuk struktur statis dan dalam state, sequence, collaboration, dan activity diagram untuk model dinamisnya. View ini digunakan untuk perancang (designer) dan pengembang (developer).
d. Component view
Mendeskripsikan implementasi dan ketergantungan modul. Komponen yang merupakan tipe lainnya dari code module diperlihatkan dengan struktur dan ketergantungannya juga alokasi sumber daya komponen dan informasi administrative lainnya.
View ini digambarkan dalam component view dan digunakan untuk pengembang (developer).
e. Concurrency view
Membagi sistem ke dalam proses dan prosesor.View ini digambarkan dalam diagram dinamis (state, sequence, collaboration, dan activity diagrams) dan diagram implementasi (component dan deployment diagrams) serta digunakan untuk pengembang (developer), pengintegrasi (integrator), dan penguji (tester).
f. Deployment view
Mendeskripsikan fisik dari sistem seperti komputer dan perangkat (nodes) dan bagaimana hubungannya dengan lainnya.
View ini digambarkan dalam deployment diagramsdan digunakan untuk pengembang (developer), pengintegrasi (integrator), dan penguji (tester).
g. Diagram
Diagram berbentuk grafik yang menunjukkan simbol elemen model yang disusun untuk mengilustrasikan bagian atau aspek tertentu dari sistem. Sebuah diagram merupakan bagian dari suatu view tertentu dan ketika digambarkan biasanya dialokasikan untuk view tertentu. Adapun jenis diagram antara lain :
1. Use Case Diagram
Use case adalah abstraksi dari interaksi antara system dan actor. Use case bekerja dengan cara mendeskripsikan tipe interaksi antara user sebuah system dengan sistemnya sendiri melalui sebuah cerita bagaimana sebuah system dipakai. Use casemerupakan konstruksi untuk mendeskripsikan bagaimana system akan terlihat di mata user. Sedangkan use case diagram memfasilitasi komunikasi diantara analis dan pengguna serta antara analis dan client.
2Class Diagram
Class adalah dekripsi kelompok obyek-obyek dengan property, perilaku (operasi) dan relasi yang sama. Sehingga dengan adanya class diagram dapat memberikan pandangan global atas sebuah system. Hal tersebut tercermin dari class- class yang ada dan relasinya satu dengan yang lainnya. Sebuah sistem biasanya mempunyai beberapa class diagram. Class diagram sangat membantu dalam visualisasi struktur kelas dari suatu system.
3. Component Diagram
Component software merupakan bagian fisik dari sebuah system, karena menetap di komputer tidak berada di benak para analis. Komponent merupakan implementasi software dari sebuah atau lebih class. Komponent dapat berupa source code, komponent biner, atau executable component. Sebuah komponent berisi informasi tentang logic class atau class yang diimplementasikan sehingga membuat pemetaan dari logical view ke component view.Sehingga component diagram merepresentasikan dunia riil yaitu component software yang mengandung component, interface dan relationship.
4. Deployment Diagram
Menggambarkan tata letak sebuah system secara fisik, menampakkan bagian-bagian software yang berjalan pada bagian-bagian hardware, menunjukkan hubungan komputer dengan perangkat (nodes) satu sama lain dan jenis hubungannya. Di dalam nodes,executeable component dan object yang dialokasikan untuk memperlihatkan unit perangkat lunak yang dieksekusi oleh node tertentu dan ketergantungan komponen.
5. State Diagram
Menggambarkan semua state (kondisi) yang dimiliki oleh suatu object dari suatu class dan keadaan yang menyebabkan state berubah. Kejadian dapat berupa object lain yang mengirim pesan. State class tidak digambarkan untuk semua class, hanya yang mempunyai sejumlah state yang terdefinisi dengan baik dan kondisi class berubah oleh stateyang berbeda.
6. Sequence Diagram
Sequence Diagram digunakan untuk menggambarkan perilaku pada sebuah scenario. Kegunaannya untuk menunjukkan rangkaian pesan yang dikirim antara object juga interaksi antaraobject, sesuatu yang terjadi pada titik tertentu dalam eksekusi sistem.
7. Collaboration Diagram
Menggambarkan kolaborasi dinamis sepertisequence diagrams. Dalam menunjukkan pertukaran pesan, collaboration diagrams menggambarkan objectdan hubungannya (mengacu ke konteks). Jika penekannya pada waktu atau urutan gunakansequencediagrams, tapi jika penekanannya pada konteks gunakan collaboration diagram.
8. Activity Diagram
Menggambarkan rangkaian aliran dari aktivitas, digunakan untuk mendeskripsikan aktifitas yang dibentuk dalam suatu operasi sehingga dapat juga digunakan untuk aktifitas lainnya seperti use caseatau interaksi.
Tujuan Penggunaan UML
  1. Memberikan bahasa pemodelan yang bebas dari berbagai bahas pemrograman dan proses rekayasa.
  2. Menyatukan praktek-praktek terbaik yang terdapat dalam pemodelan.
  3. Memberikan model yang siap pakai, bahsa pemodelan visual yang ekspresif untuk mengembangkan dan saling menukar model dengan mudah dan dimengerti secara umum.
  4. UML bisa juga berfungsi sebagai sebuah (blue print) cetak biru karena sangat lengkap dan detail. Dengan cetak biru ini maka akan bias diketahui informasi secara detail tentang coding program atau bahkan membaca program dan menginterpretasikan kembali ke dalam bentuk diagram (reserve enginering).
Perangkat lunak yang mendukung pembuatan diagaram UML
  1. StarUML (http://staruml.sourceforge.net/en/)
StarUML adalah sebuah proyek open source untuk mengembangkan cepat, fleksibel, extensible, featureful, dan bebas-tersedia UML / platform MDA berjalan pada platform Win32.Tujuan dari proyek StarUML adalah untuk membangun sebuah alat pemodelan perangkat lunak dan juga platform yang menarik adalah pengganti alat UML komersial seperti Rational Rose, Bersama dan sebagainya
Acceleo adalah generator kode yang mengubah model menjadi kode. Acceleo mudah digunakan dan menyediakan “dari rak” generator (Jee,. Bersih, Php …) dan template editor untuk Eclipse.
ArgoUML adalah open source UML modeling tool terkemuka dan termasuk dukungan untuk semua diagram UML standar 1,4. Ini berjalan pada setiap platform Java dan tersedia dalam bahasa sepuluh. ArgoUML ditulis seluruhnya di Jawa dan menggunakan Java Kelas Foundation.Hal ini memungkinkan ArgoUML untuk berjalan di hampir semua platform

Contoh program Java (PBO)

Contoh Program java (PBO)

 

class Database{
            public static synchronized void aksesDb(String objnm){
                                    try{Thread.sleep(1000);}catch(Exception e){}
                                    System.out.println(“Thread “+objnm+” is running!”);
            }
}
public class AntiVirus{
            public static void main(String[] args){
                        Thread update = new Thread(){
                                    public void run(){
                                                while(true){
                                                            try{Thread.currentThread().sleep(5000);}catch(Exception e){}
                                                            Database.aksesDb(“update”);
                                                            }
                                                }
                                    };
                        Thread scan_virus = new Thread(){
                                    public void run(){
                                                while(true){
                                                try{Thread.currentThread().sleep(3000);}catch(Exception e){}
                                                for(int i=0; i<5; i++){
                                                            Database.aksesDb(“scanning for virus…..”);
                                                            try{Thread.currentThread().sleep(1000);}catch(Exception e){}
                                                            }
                                                }
                                    }
                        };
                        scan_virus.start();
                        update.start();
            }
}
Logika Program :
class Database{
            public static synchronized void aksesDb(String objnm){
                                    try{Thread.sleep(1000);}catch(Exception e){}
                                    System.out.println(“Thread “+objnm+” is running!”);
            }
}
Pada blok program diatas merupakan membuat class dengan nama class Database, lalu membuat method sinkronasi dengan nama askesDb yang berparameter objnm dengan tipe public static, kemudian program melakukan pengujian untuk kesalahan dengan menunggu waktu selama 1000 mili second (1 Detik), jika tidak terjadi kesalah maka program akan mencetak Thread (dengan  isi dari variable objnm) is running.
public class AntiVirus{
            public static void main(String[] args){
                        Thread update = new Thread(){
                                    public void run(){
                                                while(true){
                                                            try{Thread.currentThread().sleep(5000);}catch(Exception e){}
                                                            Database.aksesDb(“update”);
                                                            }
                                                }
                                    };
Pada blok program diatas kita mendeklarasikan class dengan nama class AntiVirus, kemudian masuk ke method untuk program utama, di mana pertama membuat objek dengan nama update , lalu program akan  menjalankan method thread aksesDb yang sebelumnya telah kita buat.  dan apabilai True maka program menjalankan perulangan yang akan mengulang method thread selama 5000 mili second (5 detik), jika pada thread tersebut terdapat kesalahan maka program akan menjalankan method aksesDb pada class database yang berisikan update.
Thread scan_virus = new Thread(){
                                    public void run(){
                                                while(true){
                                                try{Thread.currentThread().sleep(3000);}catch(Exception e){}
                                                for(int i=0; i<5; i++){
                                                            Database.aksesDb(“scanning for virus…..”);
                                                            try{Thread.currentThread().sleep(1000);}catch(Exception e){}
                                                            }
                                                }
                                    }
                        };
Pada blok program bagian ini merupakan program pembuatan objek dengan nama scan_virus yang berisikan untuk memanggil dan menjalankan method thread yang mengalami akan perulangan dengan menjalankan method thread selama 3000 mili second (3 detik), jika terjadi kesalahan maka program tidak akan melakukan apa – apa. Kemudian menjalankan perulangan pada variabel i dimana i=0 jika i<5 maka akan menjalankan method aksesDb pada class Database dan akan mencetak scanning for virus….. apabila terjadi kesalahan maka program akan menjalankan method Thread selama 1000 mili second (1 detik), dan jika terjadi kesalahan pada peulangan tersebut maka program tidak akan melakukan apa – apa.
scan_virus.start();
                        update.start();
            }
}

Blok program diatas Merupakan program untuk memanggil dan menjalankan method scan_virus dan method update.

Tutorial Untuk Membuat Port Forwarding Dalam IPTables

Tutorial Untuk Membuat Port Forwarding Dalam IPTables

I. Pendahuluan

Dalam artikel sebelumnya, kita sudah mempelajari tentang dasar-dasar iptables. Artikel kali ini akan menjelaskan tentang pengunaan iptables lebih lanjut yaitu bagaimana cara membuat port forwarding dengan menggunakan iptables. Port forwarding merupakan sebuah konsep untuk meneruskan paket yang datang dari ip dan port tertentu ke ip dan port tertentu. Konsep ini mengijinkan seorang user untuk mengakses sebuah layanan seperti telnet atau ssh di jaringan lokal dari jaringan publik. Misalnya seseorang sedang menggunakan IP publik a.b.c.d ingin mengakses layanan ssh yang ada di jaringan lokal w.x.y.z. Maka dengan menggunakan port forwarding orang tersebut bisa melaksanakan hal tersebut. Kelemahan dari port forwarding adalah jika kita menggunakan sebuah port untuk forwarding maka port tersebut tidak dapat digunakan lagi. Port forwarding sering disebut juga PAT (Port Address Translation) atau NAPT (Network Address and Port Translation). Di artikel ini, penulis menggunakan Centos 5.4 sebagai distronya dan menggunakan iptables versi 1.3.5 dan seharusnya artikel ini dapat digunakan oleh berbagai macam distro dan berbagai versi iptables.

II. CARA KERJA

Port forwarding merupakan kebalikan dari proses masquerading (NAT). Jika pada proses NAT yang terjadi adalah beberapa komputer lokal LAN terhubung ke internet melalui IP Publik, maka pada port forwarding yang terjadi adalah koneksi dari internet masuk ke dalam komputer yang ada di dalam LAN kita. Untuk lebih memudahkan bagaimana port forwarding itu bekerja bayangkanlah seorang resepsionis kantor yang hanya mempunyai satu nomor publik untuk menghubungi nomor telepon luar. Jika misalnya ada orang dari luar menelpon ke kantor tersebut untuk berbicara dengan seseorang yang bernama badu misalnya, maka resepsionis akan menghubung badu melalui nomor ekstensi si badu itu sendiri. Tetapi dari si badu tidak bisa menelpon ke luar. Berdasarkan analogi tersebut, dapat dianalogikan bahwa telepon si resepsionis merupakan sebuah server yang mempunyai 2 ethernet yaitu IP publik dan IP lokal. Sedangkan ekstensi si badu merupakan nomor port sebuah layanan di sebuah server lokal. Jika seseorang ingin menggunakan layanan ke dalam sebuah server lokal, maka dia harus menuliskan port dari layanan tersebut.

III. Langkah-langkah

Sebelum kita mengunakan Port forwarding, maka ada dua hal yang harus dikonfigurasi. Pertama adalah routing kernel. Routing kernel harus bernilai 1 agar port forwarding dapat berjalan. Ketikkan perintah berikut:
# vi /etc/sysctl.conf
Lalu cari pada file tersebut tulisan net.ipv4.ip_forward dan rubah nilainya menjadi 1, sehingga akan menjadi:
net.ipv4.ip_forward = 1
Yang kedua adalah file ip_forward. Ketikan perintah berikut:
# vi /proc/sys/net/ipv4/ip_forward

Ubah nilainya menjadi 1.

Setelah kedua hal tersebut dikonfigurasi, maka kita bersiap untuk melakukan port forwarding. Port forwarding mempunyai format seperti berikut:

iptables -t nat [-command] PREROUTING [-p protocol] --dport [port yang diinginkan] -d [IP publik] -j DNAT --to [ip_tujuan:port tujuan]

Setelah kita melakukan port forwarding, maka jangan lupa untuk melakukan hal berikut:

iptables -t nat -A POSTROUTING -o [ethernet lokal] -j MASQUERADE

Di bawah ini akan diberikan contoh-contoh agar kita dapat memahami implementasi port forwarding dengan lebih baik. Contoh-contoh ini berasumsi bahwa kita mempunyai 2 ethernet yaitu eth0 dengan IP 123.45.67.89 dan eth1 dengan IP lokal 192.168.0.2. Dan seluruh rantai semuanya berpolicy ACCEPT. Begitu juga dengan komputer lokal dengan IP 192.168.0.13 yang seluruh rantai iptables-nya berpolicy ACCEPT. Jika memang iptables kita mempunyai rantai yang berpolicy DROP, maka hanya tinggal membuka saja port-port tersebut.

1. Memforward web Server
Misalnya kita mempunyai sebuah aplikasi MRTG untuk melihat traffik jaringan di lokal kita. Kita ingin agar ketika pulang dari kantor kita bisa memantau kondisi jaringan kantor kita. Maka dari itu kita akan menggunakan konsep port forwarding ini untuk melaksanaakn maksud tersebut. Untuk melaksanakan hal tersebut kita akan membuka port 23456 dari server gateway kita. Tuliskan perintah-perintah berikut:

# iptables -t nat -A PREROUTING -p tcp --dport 23456  -d 123.45.67.89 -j DNAT --to-destination 192.168.0.2:80
# iptables -I INPUT -p tcp -d 123.45.67.89 --dport 80 -j DROP
# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

Perintah iptables pertama memberikan perintah agar setiap protokol tcp yang menuju IP 123.45.67.89 dengan port 23456 akan diteruskan ke IP 192.168.0.2 dengan port 80. Perintah kedua memberikan perintah agar setiap protokol tcp yang menuju IP 123.45.67.89 dengan port 80 akan di drop. Sedangkan perintah terakhir memberikan perintah Masquerade untuk ethernet lokal dalam hal ini eth1.
Sekarang cobalah ke browser dan ketikkan

http://123.45.67.89:23456/mymrtg
Maka seharusnya kita sudah bisa melihat aplikasi MRTG kita dari IP publik. Bandingkan dengan kita hanya mengetikkan browser seperti berikut:
http://123.45.67.89/mymrtg

Maka akan terjadi error.

2. Memforward layanan telnet
Misalnya kita ingin melakukan telnet kepada sebuah server yang ada di dalam jaringan lokal kita dan kita berada di luar kantor serta menggunakan IP publik. Maka dari itu kita mengetikkan di iptables perintah sebagai berikut:

# iptables -t nat -A PREROUTING -p tcp --dport 12345  -d 123.45.67.89 -j DNAT --to-destination 192.168.0.13:23
# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

Perintah iptables pertama memberikan perintah agar setiap protokol tcp yang menuju IP 123.45.67.89 dengan port 12345 akan diteruskan ke IP 192.168.0.13 dengan port 23. Sedangkan perintah terakhir memberikan perintah Masquerade untuk ethernet lokal dalam hal ini eth1.
Untuk melakukan telnet, maka kita mengertikkan formatnya sebagai berikut:

# telnet [ip publik] [port layanan]
Dalam kasus ini, kita mengetikkan sebagai berikut:
# telnet 123.45.67.89 12345

Dan seharusnya kita akan masuk ke server dengan IP 192.168.0.13 melalui mode telnet.

3. Memforward layanan ssh
Misalnya kita ingin melakukan ssh kepada sebuah server yang ada di dalam jaringan lokal kita dan kita berada di luar kantor serta menggunakan IP publik. Maka dari itu kita mengetikkan di iptables perintah sebagai berikut:

# iptables -t nat -A PREROUTING -p tcp --dport 34567  -d 123.45.67.89 -j DNAT --to-destination 192.168.0.13:22
#  iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

Perintah iptables pertama memberikan perintah agar setiap protokol tcp yang menuju IP 123.45.67.89 dengan port 34567 akan diteruskan ke IP 192.168.0.13 dengan port 22. Sedangkan perintah terakhir memberikan perintah Masquerade untuk ethernet lokal dalam hal ini eth1.
Untuk melakukan ssh, maka kita mengertikkan formatnya sebagai berikut:

 # ssh nama_user@ip_publik -p [port layanan]
Dalam kasus ini, kita mengetikkan sebagai berikut:
 # ssh
 arfie@123.45.67.89This e-mail address is being protected from spambots, you need JavaScript enabled to view it
  -p 34567

Dan seharusnya kita akan masuk ke server dengan IP 192.168.0.13 melalui mode ssh.

IV. Catatan Penting

Perlu diketahui bahwa jika kita menggunakan sebuah port untuk port forwarding maka port tersebut tidak dapat dipakai lagi. Maka dari itu, sebelum kita menggunakan port, cek terlebih dahulu apakah port tersebut masih tersedia atau tidak. Dan sebaiknya jangan menggunakan port-port yang sudah familiar penggunaannya seperti port 22, port 23, dan sebagainya jika ingin digunakan untuk port forwarding karena dikhawatirkan kita belum mensetting ulang service-service yang menggunaka port-port tersebut sehingga akan terjadi bentrok. Dan juga untuk melihat port-port mana saja yang digunakan oleh linux, lihat saja di file /etc/services. Sebaiknya gunakan port di atas port 10000 jika ingin digunakan untuk port forwarding dan perlu diketahui bahwa batas port hanya sampai port 65563. Jadi masih banyak puluhan ribu port yang masih lowong untuk dipergunakan sebagai port forwarding.
Tulisan ini diPosting ulang dari: Catatanlepas.com

Mengenal IP Tables

Tutorial Mengenai IPTables Part 1

Tutorial IPTables

 

1.Pendahuluan

IPTables memiliki tiga macam daftar aturan bawaan dalam tabel penyaringan, daftar tersebut dinamakan rantai firewall (firewall chain) atau sering disebut chain saja. Ketiga chain tersebut adalah INPUT, OUTPUT dan FORWARD.

Pada diagram tersebut, lingkaran menggambarkan ketiga rantai atau chain. Pada saat sebuah paket sampai pada sebuah lingkaran, maka disitulah terjadi proses penyaringan. Rantai akan memutuskan nasib paket tersebut. Apabila keputusannnya adalah DROP, maka paket tersebut akan di-drop. Tetapi jika rantai memutuskan untuk ACCEPT, maka paket akan dilewatkan melalui diagram tersebut.

Sebuah rantai adalah aturan-aturan yang telah ditentukan. Setiap aturan menyatakan “jika paket memiliki informasi awal (header) seperti ini, maka inilah yang harus dilakukan terhadap paket”. Jika aturan tersebut tidak sesuai dengan paket, maka aturan berikutnya akan memproses paket tersebut. Apabila sampai aturan terakhir yang ada, paket tersebut belum memenuhi salah satu aturan, maka kernel akan melihat kebijakan bawaan (default) untuk memutuskan apa yang harus dilakukan kepada paket tersebut. Ada dua kebijakan bawaan yaitu default DROP dan default ACCEPT.

Jalannya sebuah paket melalui diagram tersebut bisa dicontohkan sebagai berikut:

Perjalanan paket yang diforward ke host yang lain

1. Paket berada pada jaringan fisik, contoh internet.
2. Paket masuk ke interface jaringan, contoh eth0.
3. Paket masuk ke chain PREROUTING pada table Mangle. Chain ini berfungsi untuk me-mangle (menghaluskan) paket, seperti merubah TOS, TTL dan lain-lain.
4. Paket masuk ke chain PREROUTING pada tabel nat. Chain ini berfungsi utamanya untuk melakukan DNAT (Destination Network Address Translation).
5. Paket mengalami keputusan routing, apakah akan diproses oleh host lokal atau diteruskan ke host lain.
6. Paket masuk ke chain FORWARD pada tabel filter. Disinlah proses pemfilteran yang utama terjadi.
7. Paket masuk ke chain POSTROUTING pada tabel nat. Chain ini berfungsi utamanya untuk melakukan SNAT (Source Network Address Translation).
8. Paket keluar menuju interface jaringan, contoh eth1.
9. Paket kembali berada pada jaringan fisik, contoh LAN.

Perjalanan paket yang ditujukan bagi host lokal

1. Paket berada dalam jaringan fisik, contoh internet.
2. Paket masuk ke interface jaringan, contoh eth0.
3. Paket masuk ke chain PREROUTING pada tabel mangle.
4. Paket masuk ke chain PREROUTING pada tabel nat.
5. Paket mengalami keputusan routing.
6. Paket masuk ke chain INPUT pada tabel filter untuk mengalami proses penyaringan.
7. Paket akan diterima oleh aplikasi lokal.

Perjalanan paket yang berasal dari host lokal

1. Aplikasi lokal menghasilkan paket data yang akan dikirimkan melalui jaringan.
2. Paket memasuki chain OUTPUT pada tabel mangle.
3. Paket memasuki chain OUTPUT pada tabel nat.
4. Paket memasuki chain OUTPUT pada tabel filter.
5. Paket mengalami keputusan routing, seperti ke mana paket harus pergi dan melalui interface mana.
6. Paket masuk ke chain POSTROUTING pada tabel NAT.
7. Paket masuk ke interface jaringan, contoh eth0.
8. Paket berada pada jaringan fisik, contoh internet.

2. Sintaks IPTables

iptables [-t table] command [match] [target/jump]

1. Table

IPTables memiliki 3 buah tabel, yaitu NAT, MANGLE dan FILTER. Penggunannya disesuaikan dengan sifat dan karakteristik masing-masing. Fungsi dari masing-masing tabel tersebut sebagai berikut :

  1. NAT : Secara umum digunakan untuk melakukan Network Address Translation. NAT adalah penggantian field alamat asal atau alamat tujuan dari sebuah paket.
  2. MANGLE : Digunakan untuk melakukan penghalusan (mangle) paket, seperti TTL, TOS dan MARK.
  3. FILTER : Secara umum, inilah pemfilteran paket yang sesungguhnya.. Di sini bisa dintukan apakah paket akan di-DROP, LOG, ACCEPT atau REJECT

2. Command

Command pada baris perintah IPTables akan memberitahu apa yang harus dilakukan terhadap lanjutan sintaks perintah. Umumnya dilakukan penambahan atau penghapusan sesuatu dari tabel atau yang lain.

Command
Keterangan
-A
--append 
Perintah ini menambahkan aturan pada akhir chain. Aturan akan ditambahkan di akhir baris pada chain yang bersangkutan, sehingga akan dieksekusi terakhir
-D
--delete
Perintah ini menghapus suatu aturan pada chain. Dilakukan dengan cara menyebutkan secara lengkap perintah yang ingin dihapus atau dengan menyebutkan nomor baris dimana perintah akan dihapus.
-R
--replace
Penggunaannya sama seperti –delete, tetapi command ini menggantinya dengan entry yang baru.
-I
--insert
Memasukkan aturan pada suatu baris di chain. Aturan akan dimasukkan pada baris yang disebutkan, dan aturan awal yang menempati baris tersebut akan digeser ke bawah. Demikian pula baris-baris selanjutnya.
-L
--list
Perintah ini menampilkan semua aturan pada sebuah tabel. Apabila tabel tidak disebutkan, maka seluruh aturan pada semua tabel akan ditampilkan, walaupun tidak ada aturan sama sekali pada sebuah tabel. Command ini bisa dikombinasikan dengan option –v (verbose), -n (numeric) dan –x (exact).
-F
--flush
Perintah ini mengosongkan aturan pada sebuah chain. Apabila chain tidak disebutkan, maka semua chain akan di-flush.
-N
--new-chain
Perintah tersebut akan membuat chain baru.
-X
--delete-chain
Perintah ini akan menghapus chain yang disebutkan. Agar perintah di atas berhasil, tidak boleh ada aturan lain yang mengacu kepada chain tersebut.
-P
--policy
Perintah ini membuat kebijakan default pada sebuah chain. Sehingga jika ada sebuah paket yang tidak memenuhi aturan pada baris-baris yang telah didefinisikan, maka paket akan diperlakukan sesuai dengan kebijakan default ini.
-E
--rename-chain
Perintah ini akan merubah nama suatu chain.

3. Option

Option digunakan dikombinasikan dengan command tertentu yang akan menghasilkan suatu variasi perintah.

Option
Command          Pemakai
Keterangan
-v
--verbose
--list
--append
--insert
--delete
--replace
Memberikan output yang lebih detail, utamanya digunakan dengan –list. Jika digunakan dengan
–list, akan menampilkam K (x1.000),
M (1.000.000) dan G (1.000.000.000).
-x
--exact
--list
Memberikan output yang lebih tepat.
-n
--numeric
--list
Memberikan output yang berbentuk angka. Alamat IP dan nomor port akan ditampilkan dalam bentuk angka dan bukan hostname ataupun nama aplikasi/servis.
--line-number
--list
Akan menampilkan nomor dari daftar aturan. Hal ni akan mempermudah bagi kita untuk melakukan modifikasi aturan, jika kita mau meyisipkan atau menghapus aturan dengan nomor tertentu.
--modprobe
All
Memerintahkan IPTables untuk memanggil modul tertentu. Bisa digunakan bersamaan dengan semua command.

4. Generic Matches

Generic Matches artinya pendefinisian kriteria yang berlaku secara umum. Dengan kata lain, sintaks generic matches akan sama untuk semua protokol. Setelah protokol didefinisikan, maka baru didefinisikan aturan yang lebih spesifik yang dimiliki oleh protokol tersebut. Hal ini dilakukan karena tiap-tiap protokol memiliki karakteristik yang berbeda, sehingga memerlukan perlakuan khusus.

Match
Keterangan
-p
--protocol
Digunakan untuk mengecek tipe protokol tertentu. Contoh protokol yang umum adalah TCP, UDP, ICMP dan ALL. Daftar protokol bisa dilihat pada /etc/protocols.Tanda inversi juga bisa diberlakukan di sini, misal kita menghendaki semua protokol kecuali icmp, maka kita bisa menuliskan –protokol ! icmp yang berarti semua kecuali icmp.
-s
--src
--source
Kriteria ini digunakan untuk mencocokkan paket berdasarkan alamat IP asal. Alamat di sini bisa berberntuk alamat tunggal seperti 192.168.1.1, atau suatu alamat network menggunakan netmask misal 192.168.1.0/255.255.255.0, atau bisa juga ditulis 192.168.1.0/24 yang artinya semua alamat 192.168.1.x. Kita juga bisa menggunakan inversi.
-d
--dst
--destination
Digunakan untuk mecocokkan paket berdasarkan alamat tujuan. Penggunaannya sama dengan match –src
-i
--in-interface
Match ini berguna untuk mencocokkan paket berdasarkan interface di mana paket datang. Match ini hanya berlaku pada chain INPUT, FORWARD dan PREROUTING
-o
--out-interface
Berfungsi untuk mencocokkan paket berdasarkan interface di mana paket keluar. Penggunannya sama dengan
–in-interface. Berlaku untuk chain OUTPUT, FORWARD dan POSTROUTING

5. Implicit Matches

Implicit Matches adalah match yang spesifik untuk tipe protokol tertentu. Implicit Match merupakan sekumpulan rule yang akan diload setelah tipe protokol disebutkan. Ada 3 Implicit Match berlaku untuk tiga jenis protokol, yaitu TCP matches, UDP matches dan ICMP matches.

a. TCP matches

Match
Keterangan
--sport
--source-port
Match ini berguna untuk mecocokkan paket berdasarkan port asal. Dalam hal ini kia bisa mendefinisikan nomor port atau nama service-nya. Daftar nama service dan nomor port yang bersesuaian dapat dilihat di /etc/services.–sport juga bisa dituliskan untuk range port tertentu. Misalkan kita ingin mendefinisikan range antara port 22 sampai dengan 80, maka kita bisa menuliskan –sport 22:80.Jika bagian salah satu bagian pada range tersebut kita hilangkan maka hal itu bisa kita artikan dari port 0, jika bagian kiri yang kita hilangkan, atau 65535 jika bagian kanan yang kita hilangkan. Contohnya –sport :80 artinya paket dengan port asal nol sampai dengan 80, atau –sport 1024: artinya paket dengan port asal 1024 sampai dengan 65535.Match ini juga mengenal inversi.
--dport          
--destination-port
Penggunaan match ini sama dengan match –source-port.
--tcp-flags
Digunakan untuk mencocokkan paket berdasarkan TCP flags yang ada pada paket tersebut. Pertama, pengecekan akan mengambil daftar flag yang akan diperbandingkan, dan kedua, akan memeriksa paket yang di-set 1, atau on.Pada kedua list, masing-masing entry-nya harus dipisahkan oleh koma dan tidak boleh ada spasi antar entry, kecuali spasi antar kedua list. Match ini  mengenali SYN,ACK,FIN,RST,URG, PSH. Selain itu kita juga menuliskan ALL dan NONE. Match ini juga bisa menggunakan inversi.
--syn
Match ini akan memeriksa apakah flag SYN di-set dan ACK dan FIN tidak di-set. Perintah ini sama artinya jika kita menggunakan match –tcp-flags SYN,ACK,FIN SYNPaket dengan match di atas digunakan untuk melakukan request koneksi TCP yang baru terhadap server

b. UDP Matches

Karena bahwa protokol UDP bersifat connectionless, maka tidak ada flags yang mendeskripsikan status paket untuk untuk membuka atau menutup koneksi. Paket UDP juga tidak memerlukan acknowledgement. Sehingga Implicit Match untuk protokol UDP lebih sedikit daripada TCP.
Ada dua macam match untuk UDP:

--sport atau --source-port
--dport atau --destination-port

c. ICMP Matches

Paket ICMP digunakan untuk mengirimkan pesan-pesan kesalahan dan kondisi-kondisi jaringan yang lain. Hanya ada satu implicit match untuk tipe protokol ICMP, yaitu :

--icmp-type

6. Explicit Matches

a. MAC Address

Match jenis ini berguna untuk melakukan pencocokan paket berdasarkan MAC source address. Perlu diingat bahwa MAC hanya berfungsi untuk jaringan yang menggunakan teknologi ethernet.

iptables –A INPUT –m mac –mac-source 00:00:00:00:00:01

b. Multiport Matches

Ekstensi Multiport Matches digunakan untuk mendefinisikan port atau port range lebih dari satu, yang berfungsi jika ingin didefinisikan aturan yang sama untuk beberapa port. Tapi hal yang perlu diingat bahwa kita tidak bisa menggunakan port matching standard dan multiport matching dalam waktu yang bersamaan.

iptables –A INPUT –p tcp –m multiport --source-port 22,53,80,110

c. Owner Matches

Penggunaan match ini untuk mencocokkan paket berdasarkan pembuat atau pemilik/owner paket tersebut. Match ini bekerja dalam chain OUTPUT, akan tetapi penggunaan match ini tidak terlalu luas, sebab ada beberapa proses tidak memiliki owner (??).

iptables –A OUTPUT –m owner --uid-owner 500

Kita juga bisa memfilter berdasarkan group ID dengan sintaks –gid-owner. Salah satu penggunannya adalah bisa mencegah user selain yang dikehendaki untuk mengakses internet misalnya.

d. State Matches

Match ini mendefinisikan state apa saja yang cocok. Ada 4 state yang berlaku, yaitu NEW, ESTABLISHED, RELATED dan INVALID. NEW digunakan untuk paket yang akan memulai koneksi baru. ESTABLISHED digunakan jika koneksi telah tersambung dan paket-paketnya merupakan bagian dari koneki tersebut. RELATED digunakan untuk paket-paket yang bukan bagian dari koneksi tetapi masih berhubungan dengan koneksi tersebut, contohnya adalah FTP data transfer yang menyertai sebuah koneksi TCP atau UDP. INVALID adalah paket yang tidak bisa diidentifikasi, bukan merupakan bagian dari koneksi yang ada.

iptables –A INPUT –m state --state RELATED,ESTABLISHED

7. Target/Jump

Target atau jump adalah perlakuan yang diberikan terhadap paket-paket yang memenuhi kriteria atau match. Jump memerlukan sebuah chain yang lain dalam tabel yang sama. Chain tersebut nantinya akan dimasuki oleh paket yang memenuhi kriteria. Analoginya ialah chain baru nanti berlaku sebagai prosedur/fungsi dari program utama. Sebagai contoh dibuat sebuah chain yang bernama tcp_packets. Setelah ditambahkan aturan-aturan ke dalam chain tersebut, kemudian chain tersebut akan direferensi dari chain input.

iptables –A INPUT –p tcp –j tcp_packets
Target
Keterangan
-j ACCEPT
--jump ACCEPT
Ketika paket cocok dengan daftar match dan target ini diberlakukan, maka paket tidak akan melalui baris-baris aturan yang lain dalam chain tersebut atau chain yang lain yang mereferensi chain tersebut. Akan tetapi paket masih akan memasuki chain-chain pada tabel yang lain seperti biasa.
-j DROP
--jump DROP
Target ini men-drop paket dan menolak untuk memproses lebih jauh. Dalam beberapa kasus mungkin hal ini kurang baik, karena akan meninggalkan dead socket antara client dan server.Paket yang menerima target DROP benar-benar mati dan target tidak akan mengirim informasi tambahan dalam bentuk apapun kepada client atau server.
-j RETURN
--jump RETURN
Target ini akan membuat paket berhenti melintasi aturan-aturan pada chain dimana paket tersebut menemui target RETURN. Jika chain merupakan subchain dari chain yang lain, maka paket akan kembali ke superset chain di atasnya dan masuk ke baris aturan berikutnya. Apabila chain adalah chain utama misalnya INPUT, maka paket akan dikembalikan kepada kebijakan default dari chain tersebut.
-j MIRROR
Apabila kompuuter A menjalankan target seperti contoh di atas, kemudian komputer B melakukan koneksi http ke komputer A, maka yang akan muncul pada browser adalah website komputer B itu sendiri. Karena fungsi utama target ini adalah membalik source address dan destination address.Target ini bekerja pada chain INPUT, FORWARD dan PREROUTING atau chain buatan yang dipanggil melalui chain tersebut.

Beberapa target yang lain biasanya memerlukan parameter tambahan:

a. LOG Target

Ada beberapa option yang bisa digunakan bersamaan dengan target ini. Yang pertama adalah yang digunakan untuk menentukan tingkat log. Tingkatan log yang bisa digunakan adalah debug, info, notice, warning, err, crit, alert dan emerg.Yang kedua adalah -j LOG –log-prefix yang digunakan untuk memberikan string yang tertulis pada awalan log, sehingga memudahkan pembacaan log tersebut.

iptables –A FORWARD –p tcp –j LOG --log-level debug
iptables –A INPUT –p tcp –j LOG --log-prefix “INPUT Packets”

b. REJECT Target

Secara umum, REJECT bekerja seperti DROP, yaitu memblok paket dan menolak untuk memproses lebih lanjut paket tersebut. Tetapi, REJECT akan mengirimkan error message ke host pengirim paket tersebut. REJECT bekerja pada chain INPUT, OUTPUT dan FORWARD atau pada chain tambahan yang dipanggil dari ketiga chain tersebut.

iptables –A FORWARD –p tcp –dport 22 –j REJECT --reject-with icmp-host-unreachable

Ada beberapa tipe pesan yang bisa dikirimkan yaitu icmp-net-unreachable, icmp-host-unreachable, icmp-port-unreachable, icmp-proto-unrachable, icmp-net-prohibited dan icmp-host-prohibited.

c. SNAT Target

Target ini berguna untuk melakukan perubahan alamat asal dari paket (Source Network Address Translation). Target ini berlaku untuk tabel nat pada chain POSTROUTING, dan hanya di sinilah SNAT bisa dilakukan. Jika paket pertama dari sebuah koneksi mengalami SNAT, maka paket-paket berikutnya dalam koneksi tersebut juga akan mengalami hal yang sama.

iptables –t nat –A POSTROUTING –o eth0 –j SNAT --to-source 194.236.50.155-194.236.50.160:1024-32000

d. DNAT Target

Berkebalikan dengan SNAT, DNAT digunakan untuk melakukan translasi field alamat tujuan (Destination Network Address Translation) pada header dari paket-paket yang memenuhi kriteria match. DNAT hanya bekerja untuk tabel nat pada chain PREROUTING dan OUTPUT atau chain buatan yang dipanggil oleh kedua chain tersebut.

iptables –t nat –A PREROUTING –p tcp –d 15.45.23.67 --dport 80 –j DNAT --to-destination 192.168.0.2

e. MASQUERADE Target

Secara umum, target MASQUERADE bekerja dengan cara yang hampir sama seperti target SNAT, tetapi target ini tidak memerlukan option –to-source. MASQUERADE memang didesain untuk bekerja pada komputer dengan koneksi yang tidak tetap seperti dial-up atau DHCP yang akan memberi pada kita nomor IP yang berubah-ubah.

Seperti halnya pada SNAT, target ini hanya bekerja untuk tabel nat pada chain POSTROUTING.

iptables –t nat –A POSTROUTING –o ppp0 –j MASQUERADE

f. REDIRECT Target

Target REDIRECT digunakan untuk mengalihkan jurusan (redirect) paket ke mesin itu sendiri. Target ini umumnya digunakan untuk mengarahkan paket yang menuju suatu port tertentu untuk memasuki suatu aplikasi proxy, lebih jauh lagi hal ini sangat berguna untuk membangun sebuah sistem jaringan yang menggunakan transparent proxy. Contohnya kita ingin mengalihkan semua koneksi yang menuju port http untuk memasuki aplikasi http proxy misalnya squid. Target ini hanya bekerja untuk tabel nat pada chain PREROUTING dan OUTPUT atau pada chain buatan yang dipanggil dari kedua chain tersebut.

iptables –t nat –A PREROUTING –i eth1 –p tcp --dport 80 –j REDIRECT --to-port 3128

Tulisan ini diposting ulang dari: http://rootbox.or.id/tips/iptables.html

Mengenal Pemrograman Java

Mengenal Pemrograman JAVA

Java adalah bahasa pemrograman yang terkenal. Java banyak digunakan untuk membangun program, dirilis pertama kali pada tahun 1995 oleh Sun Microsystems. Penciptanya adalah James Gosling.
Java berorientasi pada objek. Pemrograman berorientasi objek (object oriented programming atau OOP) adalah suatu pendekatan yang memungkinkan suatu kode yang digunakan untuk menyusun propram menjadi lebih mudah untuk digunakan kembali (istilah aslinya reusability), lebih handal, dan lebih mudah dipahami. Salah satu fitur dalam OOP adalh pewarisan. Fitur inilah yang membuat suatu kode yang telah ditulis dalam bentuk kelas sangat mudah untuk diwariska ke kelas lain guna mendukung sifat reusable.
Dalam terminologi OOP, kelas adalah suatu cetakan untuk membentuk objek. Sebagai contoh, Java menyediakan kelas bernama String. Dengan menggunakan kelas tersebut, objek (atau kadang disebut instan kelas) yang berisi nama orang serta objek yang berisi alamat orang bisa dibentuk.
Sebuah kelas mengandung dua bagian penting yang disebut atribut dari perilaku. Atribut adalah data yang membedakan satu objek dengan objek lain. Atribut dinyatakan dengan variable instan. Perilaku menyatakan suatu tindakan yang dikenakan terhadap suatu objek; misalnya untuk mengubah atribut dalam objek. Perilaku diimplementasikan dengan menggunakan metode.

Sebuah contoh program Java ditunjukan seperti berikut:

//Berkas: HitungKarakter.java
public class HitungKarakter {
 public static void main(String[] args){
 String pesan = "Selamat belajar Java";
System.out.println(pesan);
 System.out.println("Jumlah Karakter = " + pesan.length());
 System.out.println(" ");
 System.out.println("Gak Percaya? Hitung aja sendiri!");
    }
}

Program di atas berkedudukan sebagai kode sumber (source code); artinya program itulah yang berisi program asli yang ditulis oleh pemrogram. Berdasarkan program tersebut pemrogram mengompilasinya dan kemudian mengedarkan hasilnya kepada pemakai program.
Program HitungKarakter.java berfungsi untuk menampilkan tulisan:
Selamat belajar Java
dan diikuti dengan jumlah karakter yang menyusun string tersebut. Hasil sesungguhnya seperti berikut:

—–

—-

Bagian pertama berupa
//Berkas: HitungKarakter.java
Pada program Java, tanda // berkedudukan sebagai komentar. Semua tulisan yang dimulai dari tanda // hingga akhir baris diperlakukan sebagai komentar. Komentar adalah keterangan dalam kode sumber yang ditujukan kepada pembaca program agar dapat memahami program dengan mudah.
Komentar pada Java juga bisa ditulis dengan awalan /* dan akhiran */. Cara ini memungkinkan komentar yang melebihi satu baris. Contoh:

/* 

Programmed by : Qowam As Shidiqy

dibuat tanggal : 5 januari 2013

*/

Sesudah class adalah nama kelas. Nama kelas biasa ditulis dengan awalan huruf kapital. Sesudah nama kelas terdapat tanda { dan diakhiri dengan tanda }. Dalam kelas HitungKarakter terdapat metode main(). Metode main() merupakan metode yang akan dijalankan pertama kali ketika program dieksekusi. Dalam tanda () sesudah kata main, terdapat String[] args. Yang berada dalam tanda () tersebut dinakan parameter atau argumen.

String menyatakan suatu kelas yang tersedia pada Java yang berhubungan dengan penanganan sederet karakter (atau biasa dinamakan string). Tanda [] menyatakan bahwa args adalah argumen yang berupa array berkelas String. Artinya, args mengandung sejumlah elemen berkelas String.

Adapun kata public static di depan void menyatakan bahwa:

  1.  Metode bersifat publik. Artinya, metode bisa dipanggil dari mana saja, baik dalam kelas atau di luar kelas;
  2. Metode bersifat sama untuk semua objek atau instan kelas.

Informasi tersebut mungkin tidak banyak membantu Anda untuk saat ini. Biarkan saja. Untuk gampangnya, setiap kali menulis metode main() tulislah:
public static void main(String[] args) { dan diakhiri dengan }. Nah, kode di dalam { } yang perlu diubah-ubah sesuai dengan kebutuhan.

Yang dimaksud pernyataan adalah suatu instruksi yang dapat berdiri sendiri dalam program Java. Ciri sebuah pernyataan sederhana dalam Java selalu diakhiri dengan tanda titik-koma (;). Sebuah pernyataan bisa saja ditulis lebih dari satu baris. Sebuah baris juga bisa mengandung beberapa pernyataan. Namun, biasakan untuk menulis sebuah baris hanya mengandaung satu pernyataan agar kode mudah dipahami oleh pembaca program.

Kombinasi PHP dan MYSQL

Kombinasi PHP dan MYSQL

Kombinasi PHP dan MySQL

 

Info SQL, Arsitektur, Programing Web, Tips Trik Web, PHP, MYSQL, Dynamic Dou, MYSQL API, Validasi, lebih baik Mana PHP My SQL

 

Si Bona yang baru belajar Internet sedang gemar gemarnya berselancar di dunia maya, setiap malam hingga pagi hari dihabiskan Bona di sebuah warnet yang memberikan diskon khusus bagi pengunjung yang datang pada jam 12 malam ke atas. Alangkah kagetnya Bona pagi ini saat menemukan sebuah website berisi company profi le tetangga di kampungnya, Si Rongrong yang membuka toko kelontong.

 

Keheranan Si Bona semakin bertambah ketika menemukan website milik Mak Jerot, tetangga ahli urut yang terkenal di kampungnya. Sementara orang tua Bona yang membuka jasa IT Consultant belum memiliki website apapun. Dengan motivasi berbakti pada orangtua, Bona bertekad membuat sebuah situs yang inovatif untuk orang tuanya. Memang tidak dapat dipungkiri lagi, Internet telah menjadi sumber informasi yang luar biasa lengkap dan mudah didapat. Tidak hanya sekadar latah mejeng , aplikasi web berlomba lomba memberikan fasilitas pada pengguna dengan menggunakan berbagai fi tur dan inovasi tanpa batas. Tentu tidak sedikit pemuda pemudi harapan bangsa seperti Si Bona yang memiliki motivasi besar membuat situs yang inovatif, tetapi tidak sedikit juga yang mengalami kebingungan untuk memulainya dikarenakan banyaknya pilihan teknologi yang tersedia. Jika pada artikel sebelumnya Anda telah mengenal pembuatan aplikasi n tier dengan ASP Active Server Pages , maka pada model pengembangan software open source, nama PHP dan MySQL merupakan sebuah kombinasi layaknya pasangan Romeo dan Juliet.

 

Arsitektur

 

 

 

Sebagaimana konsep yang telah kita kenal, halaman web yang Anda ciptakan dengan PHP dan MySQL juga memiliki arsitektur yang terdiri dari client dan server. Client pada halaman web berupa web browser. Web browser memberikan informasi kepada pengguna dalam bentuk HTML Hypertext Markup Language . Sementara aplikasi web itu sendiri terletak pada web server. Sebuah relational database server menyimpan informasi yang diperlukan oleh aplikasi, terdapat banyak pilihan RDBMS Relational Database Management System yang pada umumnya menggunakan Structured Query Language SQL .

 

MySQL merupakan salah satu RDBMS yang open source. Jika Anda telah mengenal ASP, maka PHP memiliki fungsi yang sama, yaitu sebagai bahasa pemrograman yang dikenal juga dengan middleware. PHP melakukan proses terhadap permintaan request dari client, serta berinteraksi dengan program lainnya pada server untuk memenuhi permintaan dari client. Kombinasi PHP dan MySQL harus didukung pula oleh web server. Dua pilihan web server yang populer adalah Apache yang tersedia secara open source dan Microsoft Internet Information Server IIS . Pilihan web server cenderung mengikuti operating system yang digunakan. Apache dikenal berjalan stabil pada operating system Unix Linux, tetapi jika Anda menggunakan platform Windows, penggunaan IIS lebih disarankan.

 

Sekilas tentang PHP

 

 

 

PHP merupakan singkatan dari Hypertext Preprocessor yang didesain untuk menghasilkan halaman web dinamis. Berbicara me ngenai PHP, wajib mencantumkan kecepatan sebagai salah satu keunggulannya. Dari sisi programming, PHP memiliki kemiripan dengan bahasa C. Dukungan cross platform memungkinkan PHP berjalan pada operating system Windows ataupun Unix, pada IIS maupun Apache. Kumpulan fungsi built in pada PHP juga mempermudah Anda untuk membangun aplikasi web yang lengkap. Sebagai software open source, terdapat ribuan programer yang ikut serta mengembangkan PHP, yang hingga saat ini telah mencapai versi 5. Fitur fi tur yang didukung, antara lain:

 

1. Dukungan Object Oriented Programming OOP melalui PHP Data Objects.

 

2. Dukungan yang lebih baik pada MySQL, dikenal dengan extension.

 

3. Dukungan yang lebih baik pada XML, dan lain sebagainya.

 

Sekilas tentang MySQL

 

 

 

Pengembangan MySQL yang diucapkan dengan My Ess Queue Ell dan dikenal dengan logo ikan lumba lumba, tidaklah mulus pada awalnya. Berbagai kritik telah didapat sejak versi awal, tetapi waktu juga yang membuktikan bahwa MySQL dapat terus bertahan pada jajaran RDBMS berbasis open source. PHP telah mempersiapkan dukungan terhadap MySQL secara khusus, menjadikan kombinasi PHP dan MySQL merupakan tools yang saling mendukung untuk digunakan oleh programer web.

 

Untuk database kecil hingga menengah, MySQL memiliki kecepatan yang dapat diandalkan. Seperti juga PHP, MySQL terus dikembangkan dari waktu ke waktu oleh komunitas publik open source di mana hak cipta dimiliki oleh masing masing individu pembuat. Hingga rilis terakhir MySQL yang telah mencapai versi 5, MySQL telah memiliki fi tur cross platform, Stored Procedures, Triggers, Cursors, Views, dan lain sebagainya. Roadmap selanjutnya dari MySQL adalah dukungan terhadap Partitioning, Online Backup, Event Scheduling, dan lain lain. Kombinasi PHP dan MySQL memiliki sebuah nickname yang dikenal dengan Dynamic Duo .

 

Dynamic Duo

 

 

 

Pada bagian ini, kita akan membahas duet PHP dan MySQL secara lebih praktikal. Desain database merupakan hal awal yang harus dipersiapkan dalam membuat aplikasi web. Pada MySQL, Anda dapat melakukan administrasi database dengan menggunakan command line ataupun tools berbasis GUI seperti MySQL Administrator dan MySQL Query Browser. Pilihan lain yang popular adalah menggunakan aplikasi web bernama phpMyAdmin, yang ditulis dengan menggunakan PHP. Kegiatan menciptakan database, table, fi eld, mengeksekusi perintah SQL, hingga melakukan export database dapat Anda lakukan pada melalui phpMyAdmin yang memiliki tampilan web yang user friendly. Seperti pada software RDBMS lainnya, pada MySQL Anda dapat menggunakan perintah SQL untuk menciptakan table dan fi eld. Untuk tipe data text atau string pada fi eld, MySQL menyediakan tipe data sebagai berikut:

 

 

1. Char. Maksimum panjang karakter yang dapat ditampung tipe data char adalah sebesar 255 karakter. Tipe data ini merupakan tipe fi xed length, artinya jika nilai yang Anda masukkan kurang dari karakter maksimum, maka sisa karakter akan diisi dengan spasi. Walaupun demikian, sisa spasi tersebut akan dihilangkan pada saat pengambilan nilai fi eld dari table.

 

2. Varchar. Seperti pada char, tipe data varchar juga memiliki maksimum penampungan sebanyak 255 karakter. Perbedaannya adalah varchar merupakan tipe variablelength. Artinya panjang karakter akan disesuaikan dengan nilainya dan tidak dilakukan penambahan spasi seperti pada tipe fi xed length. Walaupun tidak menambahkan spasi, tipe data varchar menambahkan satu karakter yang menyimpan banyaknya nilai karakter yang tersimpan pada fi eld tersebut. Kapan Anda menggunakan char atau varchar? Hal ini tergantung pada kebutuhan Anda, jika Anda menyimpan fi eld berisi nama, mungkin perlu menyediakan fi eld sebanyak 30 karakter, tetapi tidak perlu menyimpan sisa spasi untuk nama yang kurang dari 30 karakter. Untuk kebutuhan ini, Anda dapat mendefi nisikan fi eld tersebut dengan varchar 30 . Berbeda jika ingin menyimpan sebuah fi eld berisi password, Anda dapat mendefinisikannya dengan char 10 untuk memberi maksimal 10 karakter sebagai password. Mengapa tidak menggunakan varchar 10 ? Pertimbangannya, MySQL akan melakukan pengecekan panjang fi eld setiap kali fi eld dengan tipe varchar di update. Dengan menggunakan char 10 , MySQL tidak perlu melakukan pengecekan jumlah karakter pada fi eld yang bersangkutan karena panjang karakter merupakan fi xed length.

 

3. Tinytext. Merupakan tipe data yang dikenal dengan BLOB. Tinytext memiliki maksimum sebanyak 255 karakter, Anda dapat menciptakan index pada seluruh fi eld tinytext.

 

4. Text. Dapat menampung maksimum 65,535 karakter. Index dapat diciptakan pada 255 karakter pertama.

 

5. Mediumtext. Dapat menampung maksimum 16,777,215 karakter. Index dapat diciptakan pada 255 karakter pertama.

 

6. Longtext. Dapat menampung maksimum 4,294,967,295 karakter. Index dapat diciptakan pada 255 karakter pertama.

 

7. Enum. Dengan tipe data enum, Anda dapat mendefi nisikan nilai fi eld terlebih dahulu. Misalnya untuk pilihan Ya dan Tidak . Tipe data enum dapat menampung hingga 65,535 nilai.

 

Untuk tipe data numerik, MySQL menyediakan tipe data int integer, tinyint, mediumint, bigint, float, double double precision real, dan decimal numeric. Sedikit berbeda antara MySQL dengan RDBMS lain adalah untuk penanganan tipe data date time. Tipe data yang dapat Anda gunakan adalah date, datetime, timestamp, phpMyAdmin sebagai pendukung administrasi database MySQL. time, dan year. Format yang digunakan oleh MySQL adalah YYYY MM DD, sehingga jika Anda ingin memberikan tanggal 30 November 2006, maka penulisannya adalah 2006 11 30. Dengan fleksibilitas yang tinggi, MySQL dapat menerima penulisan 06 11 30, 20061130, dan 061130 yang semuanya menunjukkan 30 November 2006. Baik MySQL maupun PHP memiliki banyak function untuk mengakomodasi penggunaan tipe data date time ini. Secara umum, penggunaan perintah SQL pada MySQL tidak jauh berbeda dengan perintah SQL pada umumnya, tetapi MySQL menyediakan beberapa perintah SQL tambahan. Salah satunya adalah perintah LIMIT, di mana Anda dapat membatasi jumlah baris yang diambil. Sebagai contoh, perintah SQL SELECT FROM Products LIMIT 0,5 memiliki arti bahwa Anda ingin mengambil 5 baris pertama dari table Products. Untuk mengambil 5 baris berikutnya, Anda dapat menggunakan perintah SELECT FROM Products LIMIT 5,5 .

 

Perintah LIMIT umum digunakan untuk menampilkan detail sebuah table pada halaman web secara paging atau memiliki navigasi nomor halaman untuk memudahkan pengguna dan tidak membebani jaringan, tentunya sangat merepotkan jika Anda memiliki ratusan ribu detail produk yang ditampilkan hanya pada satu halaman, bukan? Bisa jadi Anda hanya akan mendapatkan pesan request time out karena pengambilan data yang besar akan membebani jaringan Anda. Setelah sejenak membahas MySQL dari sisi back end, kini waktunya untuk membahas PHP untuk dapat membuat aplikasi web secara sempurna. Untuk mulai menuliskan kode PHP, Anda memerlukan sebuah text editor. Anda dapat menggunakan text editor seperti Notepad, tetapi untuk tampilan dan fi tur text editor yang lebih baik ataupun jika Anda terlalu malu untuk menggunakan Notepad , Anda dapat menggunakan software text editor seperti EditPlus, UltraEdit, dan lain sebagainya pada operating system Windows.

 

Jika Anda menggunakan operating system Unix Linux, beberapa pilihan yang populer adalah Pico, Emacs, vi, ataupun Kedit. Tentu saja sangat disarankan Anda memilih aplikasi text editor yang nyaman dilihat, sebagai tindakan berjaga jaga jika Anda harus melihat baca:menuliskan kode program PHP pada layar monitor selama berjam jam non stop. Sebelum Anda menuliskan Hello World pada halaman web dan memamerkannya sebagai halaman web PHP Anda yang pertama, Anda perlu mengetahui bahwa pada fi le PHP yang diketik pada text editor, dapat terdiri dari kombinasi tag HTML, Javascript, ataupun PHP. Agar engine PHP dapat membedakan baris kode mana yang merupakan perintah PHP, Anda perlu menuliskan kode PHP Anda di antara tag pembuka ?php dan tag penutup ? . Tag pembuka ? juga dapat digunakan selain menggunakan tag ?php. Karena pembahasan mengenai PHP pada artikel kali ini terbatas untuk diarahkan pada kombinasi penggunaan PHP dan MySQL yang mana mengarah pada pembuatan halaman web dinamis yang menggunakan database, maka hanya akan diberikan sekelumit pengantar mengenai dasar pemrograman PHP. PHP memiliki perintah perintah standar bahasa pemrograman seperti deklarasi variabel, pengolahan array, perulangan looping , operator logika, ataupun pembuatan function. Bagi Anda yang pernah mempelajari bahasa C atau PERL, akan menemui banyak kemiripan sintaks dan perintah. Pada sebuah halaman web, informasi dari client sering kali berasal dari form HTML. Contohnya pada sebuah halaman registrasi, buku tamu, ataupun forum. Informasi tersebut akan disubmit oleh pengguna dengan metode GET ataupun POST, untuk kemudian diproses oleh PHP. Informasi yang dimasukkan pengguna di dalam form dapat berupa textbox, radio button, combo box, text area, dan lain lain. Form tersebut merupakan terdiri dari tagtag HTML yang dapat Anda ketik pada text editor ataupun tools seperti Dreamweaver atau FrontPage.

 

Penggunaan array bisa jadi akan cukup sering Anda temui pada pemrograman PHP. Contoh penggunaan array adalah pada multiple combo box, yaitu pilihan yang dapat Anda pilih lebih dari satu item. Misalnya warna kesukaan, hobi, dan lain lain. Agar PHP mengetahui bahwa Anda ingin mengirimkan variabel array, Anda harus memberikan tanda kurung pada nama variabel tersebut. Contohnya pada tag HTML sebagai berikut: select name hobi size 5 multiple Tag HTML di atas mendefi nisikan sebuah multiple combo box dengan nama hobi, perhatikan bahwa pemberian nama hobi diikuti dengan buka dan tutup kurung siku yang menunjukkan array. PHP sendiri memiliki variabel built in, yaitu variabel yang diatur oleh web server dan environment PHP. Untuk melihat daftar variabel tersebut, Anda cukup memberikan sebuah perintah ajaib, yaitu phpinfo .

 

Function MySQL API

 

 

 

Bagaimana tepatnya sang Dynamic Duo PHP dan MySQL saling bekerja sama membentuk halaman web yang berfungsi baik? Tidak lain dan tidak bukan adalah melalui function function MySQL yang tersedia pada PHP. Function ini disebut dengan MySQL API. Function function yang sering digunakan adalah: 1. MYSQL CONNECT . Tanpa melakukan koneksi pada database MySQL, maka tidak ada yang dapat Anda lakukan untuk memproses data MySQL. Function mysql connect melakukan koneksi pada database dengan menggunakan username dan password yang telah Anda tentukan pada saat melakukan administrasi dan pembuatan database MySQL. 2. MYSQL PCONNECT .

 

Kegunaan function ini sama seperti function mysql connect, tetapi terdapat perbedaan penting, yaitu function ini membiarkan koneksi tetap dalam status open walaupun script PHP telah selesai dijalankan. Jika mengutamakan kecepatan web, Anda dapat menggunakan function ini sehingga PHP tidak perlu membuka koneksi baru setiap kali sebuah script PHP yang mengakses MySQL dieksekusi. Untuk dapat menggunakan function mysql pconnect, Anda perlu melakukan konfi gurasi terhadap fi le php.ini pada bagian mysql.allow persistent On mysql.max persistent 1 Baris mysql.max persistent menunjukkan jumlah maksimum koneksi yang diizinkan, angka 1 berarti tanpa limit. Anda dapat menggantinya dengan angka lain jika ingin membatasi jumlah maksimum koneksi. 3. MYSQL SELECT DB . Function untuk mendefi nisikan database yang ingin di query. 4. MYSQL QUERY . Function di mana Anda dapat mengirimkan query SQL pada table yang Anda inginkan. Perhatikan bahwa function ini tidak mengembalikan hasil query misalnya berupa recordset , tetapi hanya membuka kursor yang mengarah pada hasil query tersebut. Anda kemudian dapat mengambil record hasil query tersebut dengan menggunakan salah satu dari function mysql fetch row , mysql fetch array , ataupun mysql result . 5. MYSQL AFFECTED ROWS . Function mysql affected rows mengembalikan jumlah record hasil proses UPDATE, INSERT, ataupun DELETE. Function ini berguna untuk memeriksa apakah query Anda telah berjalan dengan sempurna. Masih terdapat beberapa function yang umum digunakan seperti mysql num rows , mysql insert id , mysql error , mysql result , dan lain lain yang dapat digunakan pada halaman web Anda.

 

Validasi

 

 

 

Tentu Anda mengharapkan pengunjung situs Anda datang berbondong bondong sebagai salah satu tanda suksesnya pekerjaan Anda. Tetapi, Anda juga tidak akan mengharapkan terjadi kesalahan input dari pengguna. Pengguna bukanlah orang yang harus disalahkan jika terjadi error pada sebuah aplikasi web, karena di sini benar benar berlaku pengunjung adalah raja, bahkan sering kali pengguna yang menemukan kesalahan secara sengaja maupun tidak sengaja pada suatu situs, dapat membanggakan diri PHP telah mempersiapkan seperangkat function untuk melakukan validasi.

 

Salah satu validasi yang wajib dilakukan adalah menghindari input karakter kutip satu single quote , kutip dua double quote , ataupun NULL karena akan membingungkan MySQL dimana karakter karakter tersebut memiliki arti khusus dalam perintah SQL. Function addslashes dapat digunakan untuk menanggulangi permasalahan ini. Kini mungkin Anda berpikir, berarti setiap informasi yang dikirimkan harus melalui function addslashes , bisa jadi seperti demikian, jika Anda tidak memiliki wewenang untuk mengubah konfi gurasi fi le php.ini yang mungkin telah ditentukan oleh provider hosting yang Anda gunakan.

 

Tetapi jika memiliki hak untuk mengubah php.ini, Anda dapat mengatur baris magic quotes gpc menjadi On, maka function addslashes tidak diperlukan lagi karena akan dilakukan secara otomatis dari server. Bagaimanapun, konfigurasi ini seharusnya bernilai On secara default, sebaiknya Anda memastikannya sebelum memutuskan untuk tidak menggunakan function addslashes . Beberapa kesalahan lain yang dapat timbul adalah jika pengguna memasukkan nilai string untuk fi eld yang seharusnya numerik, karakter yang diinput melewati batas panjang fi eld, dan lain sebagainya.

 

Walaupun Anda dapat menggunakan Javascript untuk validasi form, tetapi karena Javascript berjalan pada sisi client, maka Anda tidak dapat mencegah jika Javascript tidak berjalan pada browser yang digunakan ataupun script Anda dimanipulasi ingat bahwa kesalahan dapat dilakukan dengan sengaja dengan berbagai tujuan . Karena itu validasi ulang input form pada PHP dianjurkan jika Anda benar benar ingin menjaga halaman web Anda dari kesalahan input yang dapat mengakibatkan munculnya lubang keamanan yang dapat ditembus.

 

PHP untuk Programer

 

ASP Selain PHP, ASP merupakan salah satu bahasa pemrograman web yang populer dan banyak digunakan. Jika Anda telah cukup familiar dengan bahasa pemrograman ASP dan ingin mempelajari PHP ataupun sebaliknya, mungkin Anda hanya mengalami kesulitan untuk menemukan padanan perintah versi ASP PHP. Untuk itu mungkin panduan fungsi di bawah ini dapat berguna:

 

1. Include. Pada ASP, Anda dapat menyisipkan fi le ASP dengan perintah include fi le contoh.asp , sementara pada PHP Anda dapat menggunakan ? include contoh.php ; ? atau ? require contoh. php ; ? .

 

2. Page Time Out. Digunakan untuk mengatur jangka waktu response halaman web. Pada ASP Anda dapat menggunakan perintah Server.ScriptTimeOut 1000 , untuk PHP digunakan perintah set time limit 1000 .

 

3. Menghentikan proses. Ada kalanya Anda ingin menyisipkan perintah untuk menghentikan proses script untuk keperluan seperti melakukan debug program ataupun kondisi lain. Pada ASP Anda menggunakan perintah Response.end, sementara pada PHP Anda dapat menggunakan exit , die , ataupun die keterangan

 

4. Pindah Halaman. Salah satu perintah yang cukup sering digunakan programer adalah pindah antarhalaman web. Pada ASP, Anda menggunakan perintah Response. Redirect nextpage.asp , sementara pada PHP dapat digunakan perintah header location:nextpage.php .

 

Mana yang Lebih Baik?

 

 

 

 

 

Mungkin Anda sering terdengar debat ataupun perbandingan mengenai bahasa pemrograman dari masing masing pengguna setia yang saling menjatuhkan dan tidak konstruktif? Anda dapat menganalogikan situasi tersebut seperti dua orang yang berbicara, di mana satu orang berbicara dengan bahasa Mesir kuno dan lainnya berbicara dengan bahasa Singlish Singapore English , tentu tidak akan nyambung, bukan? Kegunaan suatu bahasa pemrograman baru bermanfaat jika kita sebagai programer mampu menggunakannya dengan tepat dan optimal. Bahasa pemrograman merupakan tools yang digunakan untuk mencapai tujuan. Penggunaannya sangat tergantung pada yang menggunakannya dan diwujudkan dalam bentuk karya nyata.

Mengenal Dot Net

Mengenal Dot Net

Microsoft .NET Framework (dibaca Microsoft Dot Net Framework) adalah sebuah komponen yang dapat ditambahkan ke sistem operasi Microsoft Windows atau telah terintegrasi ke dalam Windows (mulai dari Windows Server 2003 dan versi-versi Windows terbaru). Kerangka kerja ini menyediakan sejumlah besar solusi-solusi program untuk memenuhi kebutuhan-kebutuhan umum suatu program baru, dan mengatur eksekusi program-program yang ditulis secara khusus untuk framework ini. .NET Framework adalah kunci penawaran utama dari Microsoft, dan dimaksudkan untuk digunakan oleh sebagian besar aplikasi-aplikasi baru yang dibuat untuk platform Windows.

Pada dasarnya, .NET Framework memiliki 2 komponen utama: CLR dan .NET Framework Class Library.

Program – program yang ditulis untuk .NET Framework dijalankan pada suatu lingkungan software yang mengatur persyaratan-persyaratan runtime program. Runtime environment ini, yang juga merupakan suatu bagian dari .NET Framework, dikenal sebagai Common Language Runtime (CLR). CLR menyediakan penampilan dari application virtual machine, sehingga para programmer tidak perlu mengetahui kemampuan CPU tertentu yang akan menjalankan program. CLR juga menyediakan layanan-layanan penting lainnya seperti jaminan keamanan, pengaturan memori, garbage collection dan exception handling / penanganan kesalahan pada saat runtime. Class library dan CLR ini merupakan komponen inti dari .NET Framework. Kerangka kerja itu pun dibuat sedemikian rupa agar para programmer dapat mengembangkan program komputer dengan jauh lebih mudah, dan juga untuk mengurangi kerawanan aplikasi dan juga komputer dari beberapa ancaman keamanan.

CLR adalah turunan dari CLI (Common Language Infrastructure) yang saat ini merupakan standar ECMA. Untuk keterangan lebih lanjut, silakan mengunjungi situs ECMA atau kunjungi sumber pranala di bawah artikel ini.

Solusi-solusi program pembentuk class library dari .NET Framework mengcover area yang luas dari kebutuhan program pada bidang user interface, pengaksesan data, koneksi basis data, kriptografi, pembuatan aplikasi berbasis web, algoritma numerik, dan komunikasi jaringan. Fungsi-fungsi yang ada dalam class library dapat digabungkan oleh programmer dengan kodenya sendiri untuk membuat suatu program aplikasi baru.

Pada berbagai literatur dan referensi di Internet, .NET Framework seringkali disingkat menjadi .NET saja.

.NET Framework sebagai platform

.NET seringkali juga dapat diartikan sebagai platform, yang merupakan suatu lingkungan terpadu untuk pengembangan dan eksekusi untuk berbagai macam bahasa pemrograman dan kumpulan library untuk bekerja sama membuat dan menjalankan aplikasi berbasis Windows yang lebih mudah untuk dibuat, diatur, didistribusikan, dan diintegrasikan dengan sistem jaringan lain.

Dalam perkembangannya, .NET seringkali dikaitkan pula dengan versi Visual Studio yang sesuai dengan dukungan versi yang bersangkutan untuk pengembangan aplikasi. Berikut ini versi .NET dan versi Visual Studio yang terkait:

* .NET 1.0 dan Visual Studio .NET (atau seringkali disebut juga dengan Visual Studio .NET 2002)
* .NET 1.1 dan Visual Studio .NET 2003
* .NET 2.0 dan Visual Studio 2005
* .NET 3.0 dan Visual Studio 2005 dengan tambahan addin untuk WPF, WCF dan WF
* .NET 3.5 dan Visual Studio 2008

.NET 2.0, 3.0 dan 3.5 memiliki CLR yang sama. Dengan demikian, struktur IL juga sama. Adapun fasilitas penambahan kata kunci pemrograman seperti pada LINQ yang sebenarnya lebih mengarah sebagai fitur bahasa pemrograman (programming language feature) sehingga bukan merupakan fitur CLR.

.NET 3.0 sebagai jalan menuju Longhorn

.NET 3.0 pada hakekatnya adalah .NET 2.0 ditambah pilar-pilar teknologi untuk Windows Longhorn Client/Server atau sekarang bernama Windows Vista untuk Longhorn Client dan Windows Server 2008 untuk Longhorn Server. Dengan demikian, program yang dibuat dengan .NET 2.0 dapat berjalan pada .NET 3.0, kecuali untuk fasilitas atau fitur yang sangat spesifik.

Pilar-pilar teknologi pada .NET 3.0:

* Windows Presentation Foundation atau WPF
* Windows Communication Foundation atau WCF
* Windows Workflow Foundation atau WF
* CardSpace

Walaupun teknologi di atas ditujukan pada Windows Vista dan sesudahnya, .NET 3.0 dapat pula diinstall pada Windows XP SP2 dan Windows Server 2003.

Versi terbaru dari .NET adalah .NET 3.5. Versi ini didukung sepenuhnya oleh Visual Studio 2008, berisi teknologi-teknologi kunci yaitu:

* LINQ
* Extension Methods
* Lambda Expression

Dan juga perbaikan serta pengembangan dari WPF, WCF, dan WF.

.NET di masa depan

Pada saat artikel ini disunting, 07:13, 11 Februari 2008 (UTC), Microsoft tengah mengembangkan .NET “4″. .NET 4 ini akan lebih mengedepankan konsep SOA (Service Oriented Architecture) dan SaaS (Software As A Service). Dengan dukungan library dasar yang sudah ada seperti XML dan WCF, Microsoft berencana untuk menambah dukungan web service seperti REST, JSON, POX. Di samping itu Microsoft juga telah mempersiapkan pengembangan “Oslo” sebagai bagian dari inisiatif pengembangan platform .NET.

.NET di operating system selain Windows

.NET 2.0 saat ini juga memiliki pasangan kembar yang berjalan di Linux dan UNIX, yaitu Mono. Mono dikembangkan oleh Ximian, yang selanjutnya diakuisisi oleh Novell. Mono merupakan platform open source, berarti semua orang dapat berpartisipasi di dalam pengembangan Mono.