Archive for the 'technology' Category

Feed di Joomla Dengan Proxy

Tuesday, February 17th, 2009

Sekedar berbagi tips untuk yang ngoprek Joomla. Beberapa waktu lalu saya install Joomla 1.5 dan menemukan masalah kecil pada modul feed (mod_feed) bawaan Joomla 1.5. Masalahnya disebabkan karena saya menginstall Joomla di server yang berada dibalik proxy. Artinya untuk mengambil feed di internet harus melewati proxy tersebut.

Ada dua masalah yang saya temui akibat hal tersebut. Pertama pada saat login admin akan muncul “Error loading feed data” di bagian atas halaman admin. Kemudian ketika saya memasang feed display untuk menampilkan feed dari alamat http://www.detikinet.com/index.php/detik.feed akan muncul error

Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: No such host is known. in ***\libraries\simplepie\simplepie.php on line 6601

Warning: fsockopen() [function.fsockopen]: unable to connect to www.detikinet.com:80 (php_network_getaddresses: getaddrinfo failed: No such host is known. ) in ***\libraries\simplepie\simplepie.php on line 6601

Cara mengatasinya adalah dengan sedikit mengedit file simplepie.php. Ganti baris berikut :

$fp = fsockopen($url_parts['host'], $url_parts['port'], $errno, $errstr, $timeout);

dengan

$fp = fsockopen(”[proxy address]“,[proxy port]);

Cara tersebut menyelesaikan masalah untuk proxy tanpa otentikasi. Untuk proxy yang menggunakan otentikasi, perlu ditambahkan user dan password otentikasi pada header yang dikirim.

Tambahkan baris berikut :

$out .= “Proxy-Authorization:Basic ” . base64_encode(”[user]:[password]“) . “\r\n”;

setelah baris

$out .= “User-Agent: $useragent\r\n”;

Kebetulan proxy yang digunakan di kantor saya tanpa otentikasi jadi tanpa menambahkan otentikasi, modul feed sudah berfungsi dengan baik untuk menampilkan feed dari internet.

Semoga bermanfaat.

Migrasi Lagi…

Friday, January 16th, 2009

Kali ini migrasi server plus pindah domain juga…

Migrasi kemaren rada ribet soalnya wordpress di aulia-ra.org belum dilengkapi fasilitas export, jadi harus dipindah manual. Kalau sudah ada fasilitas export tinggal klik export, nanti dapet file XML lalu diimport di server yang baru.

Biar ilmunya tidak menguap dan siapa tau dibutuhkan suatu saat nanti proses migrasi aulia-ra.org ke aulia.net dengan server yang berbeda aku tulis dalam step-by-step berikut :

1. Install wordpress di server baru
2. Dump database wordpress di server yang lama.
3. Karena pindah nama domain maka jalankan perintah mysql berikut (dapet dari sini) :

UPDATE wp_options SET option_value =
replace(option_value, 'http://www.aulia.ra.org', 'http://www.aulia.net')
 WHERE option_name = 'home' OR option_name = 'siteurl';

UPDATE wp_posts SET guid =
replace(guid, 'http://www.aulia.ra.org', 'http://www.aulia.net');

UPDATE wp_posts SET post_content =
replace(post_content, 'http://www.aulia.ra.org', 'http://www.aulia.net');

4. copy folder wp_content dan file-file lepas yang diakses oleh blog (misalnya gambar yang kita masukkan di post) dari server lama ke server baru.

5. Pas pertama kali coba browsing ke web yang baru akan diminta untuk upgrade database.

6. Dan migrasi selesai. Tinggal tes apa ada broken link dan gambar yang tidak muncul.

Migrasi Blog Ke Server Baru

Tuesday, November 20th, 2007

Berhubung saya sudah lulus, jadi saatnya memindahkan blog saya yang semula ditaruh di server dalam kampus ke hostingan di luar kampus. Pemindahan ini juga dipicu sulitnya blog saya diakses dari luar kampus. Terbukti di situs agregator blog planet-if.amudi.org, blog saya selalu dalam keadaan tidak dapat diakses.

Jadi sekarang blog ini numpang di server hosting milik montirhost yang digawangi teman di ARC. Ternyata migrasi blog berbasis wordpress dari satu server ke server lain tidak sesulit yang dibayangkan.

Pertama, buat backup semua database wordpress kita dari server yang lama. Biasanya semua tabel yang berawalan wp_. Kemudian ubah file wp_config.php sesuai dengan konfigurasi database di server baru. Berhubung nama domain saya tetap, maka tidak ada perubahan yang dilakukan di dump database. Upload dump database ke server yang baru. Pindahkan semua file wordpress dari server lama ke server baru tanpa merubah susunan file. Hasilnya, blog ini bisa jalan seperti ketika dijalankan di server sebelumnya. Semua itu dengan catatan konfigurasi server kompatibel dengan versi wordpress yang dipakai.

Untuk memindahkan alamat blog agar mengacu ke server yang baru, tinggal ubah nameserver di control panel domain kita. Blog aulia.net semua menggunakan nameserver ns1.itb.ac.id dan gtw.arc.itb.ac.id, sekarang menggunakan ns1.montirhost.net dan ns2.montirhost.net.

Dengan beroperasinya aulia.net di server baru, semoga dapat lebih mudah diakses oleh pembaca.

Recommender System Review (Last.fm, Pandora, Amazon.com, Reel)

Monday, April 16th, 2007

Last.fm

a. Mengapa memilih last.fm

Last.fm adalah salah satu dari dua music recommender system yang terkenal dan banyak digunakan.

b. Apa yang disukai dari last.fm

i. Mempunyai plugin yang secara otomatis memonitor aktivitas media player milik user.

ii. Dapat merekomendasikan lagu dari berbagai genre yang berbeda, sehingga menimbulkan efek surprise bagi pengguna.

c. Apa yang tidak disukai dari last.fm

i. Tidak menyertakan alasan perekomendasian.

ii. Perlu menginstall aplikasi tambahan di computer pengguna untuk memonitor aktivitas media player pengguna.

d. Bagaimana last.fm menyediakan rekomendasi

Last.fm menyediakan rekomendasi menggunakan teknik kolaboratif filtering. Last.fm tidak menganalisa jenis music seperti yang dilakukan oleh Pandora. Ia hanya mengasumsikan bahwa apabila seorang user menyukai banyak artis yang sama dengan suatu kelompok user tertentu, kemungkinan besar user tersebut juga akan menyukai artis lain yang popular di kelompok user tersebut.

Last.fm menyediakan plugin bagi pengguna yang dapat diinstall di computer pengguna. Bagi last.fm, plugin tersebut berfungsi untuk secara otomatis memonitor media player milik pengguna. Jadi kapanpun pengguna mendengarkan suatu music baik yang berasal dari last.fm maupun dari komputernya sendiri, data-datanya dapat ditambahkan pada profile user di database last.fm.

Last.fm menggunakan cara implicit maupun eksplisit dalam mendapatkan feedback dari user. Cara implisitnya adalah dengan memonitor aktvitas media player pengguna dan aktivitas user dalam mendengarkan lagu melalui last.fm. Cara eksplisit dilakukan dengan menerima masukan dari user apabila mereka menyukai atau tidak menyukai lagu yang disajikan oleh last.fm.

Karena menggunakan collaborative filtering, last.fm akan mengalami kelambatan dalam merekomendasikan sebuah lagu baru. Karena lagu yang baru belum popular di kalangan pengguna, last.fm belum dapat merekomendasikannya.

e. Penilaian terhadap kualitas rekomendasi last.fm

Hasil rekomendasi last.fm cukup baik untuk query yang popular di kalangan pengguna. Namun untuk query yang kurang popular, sering terjadi last.fm salah merekomendasikan atau bahkan tidak mampu merekomendasikan. Last.fm cocok bagi mereka yang memiliki selera music standard, artinya banyak pengguna last.fm yang memiliki selera music yang sama.

Tampilan Last.fm

Gambar 1 Tampilan last.fm

Pandora

a. Mengapa memilih Pandora

i. Pandora adalah salah satu dari dua music recommender system yang terkenal.

ii. Menggunakan teknik yang cukup menarik yaitu menganalisa gen dari sebuah music.

b. Apa yang disukai dari Pandora

i. Menggunakan analisa gen music sebagai dasar melakukan rekomendasi. Sebagai kalangan akademik, teknik yang digunakan cukup menarik bagi saya.

ii. Memberikan alasan rekomendasi sehingga pengguna dapat memahami mengapa Pandora merekomendasikan lagu tersebut.

iii. Interface sederhana.

iv. Begitu user membuka situs Pandora, Pandora otomatis memutar lagu sesuai dengan station yang didengarkan oleh pengguna sebelumnya.

c. Apa yang tidak disukai dari Pandora

i. Hanya memainkan lagu yang relative hanya satu style atau satu genre. Ini adalah efek dari sistem rekomendasi yang menggunakan karakteristik lagu sebagai bahan rekomendasi, sehingga lagu yang direkomendasikan umumnya juga memiliki karakteristik yang sama.

d. Bagaimana pandora menyediakan rekomendasi

Rekomenasi Pandora didasarkan pada kualitas yang melekat pada sebuah lagu. Kualitas yang dimaksud adalah atribut-atribut sebuah lagu yaitu melody, harmony, lyrics, orchestration, vocal character, dan lain-lain, dimana di database Pandora, terdapat ratusan atribut. Ketika pengguna memasukkan nama artis atau judul lagu, Pandora akan merekomendasikan lagu-lagu yang memiliki kemiripan dalam atribut-atribut yang disebutkan diatas.

Pertama kali, Pandora akan memainkan lagu sesuai dengan artis atau judul lagu yang dimasukkan, kemudian diikuti dengan lagu-lagu lain yang dianggap mirip oleh Pandora. Pengguna dapat memasukkan feedback dengan cara mengklik tombol thumb-up (yang berarti setuju dengan rekomendasi) atau thumb-down (yang berarti tidak setuju dengan rekomendasi). Feedback ini berpengaruh pada similarity antar lagu.

Pandora memerlukan bantuan musisi expert yang bertugas mengklasifikasikan lagu-lagu berdasarkan ratusan atribut yang telah disebutkan. Hal ini yang disebut sebagai Pandora’s classification bottleneck. Pandora tidak menggunakan teknik collaborative filtering, sehingga ia tidak mengalami masalah dengan lagu baru sebagaimana yang dialami oleh last.fm.

e. Penilaian terhadap kualitas rekomendasi Pandora

Kualitas rekomendasi Pandora bergantung pada selera seseorang terhadap music. Rekomendasi Pandora yang hanya berkisar pada satu genre music cocok bagi mereka yang menggemari salah satu genre lagu tertentu. Pandora juga memberikan pilihan bagi pengguna untuk memasukkan feedback untuk meningkatkan rekomendasi selanjutnya (Gambar 2). Rekomendasi Pandora yang menyertakan alasan perekomendasian mempermudah pengguna untuk menentukan feedback bagi lagu yang direkomendasikan (Gambar 3).

Feedback pengguna

Gambar 2 Tampilan untuk memasukkan feedback pengguna

Alasan pemberian rekomendasi

Gambar 3 Tampilan alasan pemberian rekomendasi

Amazon.com

a. Mengapa memilih amazon.com

i. Amazon.com adalah situs belanja online yang sangat terkenal.

ii. User-centric, artinya sangat memanjakan penguna ketika berbelanja dengan berbagai fiturnya.

b. Apa yang disukai dari amazon.com

i. Rekomendasi disertai dengan alasan.

ii. Tampilan sangat membantu pengguna awam dengan banyak pilihan bantuan yang cukup jelas.

c. Apa yang tidak disukai dari amazon.com

i. Karena terlalu lengkapnya fitur, kadang informasi yang diberikan terlalu berlebih. Pengguna sering kali tidak memerlukan data yang terlalu lengkap untuk memutuskan membeli barang atau tidak.

d. Bagaimana amazon.com menyediakan rekomendasi

Banyak hal yang dilakukan oleh amazon.com untuk memanjakan penggunanya ketika berbelanja. Pada tulisan ini akan dibahas dua fitur rekomendasi yang diberikan oleh amazone.com. Pertama adalah rekomendasi berdasarkan rating yang pengguna berikan terhadap beberapa barang (Gambar 4). Pengguna dapat memberikan rating terhadap barang apapun yang ada di amazon.com. Data rating pengguna in digunakan untuk merekomendasikan barang lain kepada pengguna dengan menggunakan user-based collaborative filtering. Ketika pengguna merasa cukup merating barang, ia dapat meminta sistem untuk mengeluarkan rekomendasi berdasarkan rating yang ia berikan. Rekomendasi yang diberikan disertai penjelasan mengapa barang tersebut direkomendasikan. Pengguna dapat memberikan feeback terhadap hasil rekomendasi dengan memilih antara “I own it�, “not interested�, atau memberikan rating terhadap barang yang direkomendasikan. Feedback yang diberikan digunakan untuk meningkatkan kualitas rekomendasi berikutnya.

Fitur lain adalah “Customer who Bought� yaitu fitur dimana sistem merekomendasikan barang lain berdasarkan barang yang sedang kita lihat (Gambar 5). Amazon.com menggunakan metode item-based collaborative filtering dimana ketika pengguna melihat deskripsi suatu barang, sistem dapat merekomendasikan barang lain menggunakan association rule. Association rule didapatkan dengan melakukan pembelajaran pada data transaksi.

Rekomendasi berdasarkan rating

Gambar 4 Rekomendasi berdasarkan rating

Rekomendasi

Gambar 5 Rekomendasi “Customer who Bought�

e. Penilaian terhadap kualitas rekomendasi amazon.com

Rekomendasi berdasarkan rating menghasilkan keluaran yang akurat apabila pengguna telah merating cukup banyak barang. Dengan jumlah rating yang cukup banyak, sistem akan dapat menentukan kesamaan pola rating pengguna dengan pengguna lain secara lebih akurat. Hasil rekomendasi yang disertai dengan alasan membuat pengguna lebih yakin dalam menerima rekomendasi. Dengan adanya alasan tersebut, pengguna juga dapat melakukan peningkatan kualitas rekomendasi.

Rekomendasi “Customer who Bought� cukup akurat karena didukung dengan data transaksi yang besar mengingat amazon.com adalah situs belanja internet yang sangat terkenal. Dengan data transaksi yang besar, association rule yang dihasilkan juga lebih akurat.

Reel

a. Mengapa memilih reel

i. Situs rekomendasi film Hollywood yang cukup terkenal dan memiliki database film yang besar.

ii. Unik, karena pengguna tidak perlu melakukan registrasi untuk mendapatkan rekomendasi.

b. Apa yang disukai dari reel

i. Pengguna tidak perlu melakukan registrasi untuk bisa mendapatkan rekomendasi dari reel.

c. Apa yang tidak disukai dari reel

i. Tampilan cukup rumit.

ii. Pengguna tidak dapat memberikan feedback terhadap hasil rekomendasi.

iii. Tidak ada personalisasi, jadi siapapun akan mendapatkan rekomendasi yang sama untuk query yang sama.

d. Bagaimana reel menyediakan rekomendasi

Reel memberikan rekomendasi berdasarkan karakteristik film yang dimasukkan oleh pengguna (Gambar 6). Misalnya pengguna memasukkan judul film “Band of Brothers� maka Reel akan merekomendasikan film lain yang memiliki karakteristik mirip dengan film “Band of Brothers�. Rekomendasi yang diberikan meliputi “close matches� dan/atau “creative matches� (Gambar 7). Close matches adalah film-film yang direkomendasikan dengan tingkat keyakinan tinggi oleh Reel, sedangkan creative matches adalah film-film yang direkomendasikan dengan tingkat keyakinan lebih rendah. Reel juga menyediakan data mengenai karakteristik film yang direkomendasikan sehingga pengguna dapat mengetahui mengapa film tersebut direkomendasikan oleh Reel. Metode yang digunakan oleh reel hamper sama dengan metode yang diterapkan oleh Pandora. Bedanya adalah pengguna tidak dapat memberikan rating, sehingga siapapun akan mendapatkan rekomendasi yang sama untuk judul film yang sama.

Movie anatomy

Gambar 6 Movie anatomy yang digunakan sebagai pertimbangan rekomendasi

e. Penilaian terhadap kualitas rekomendasi reel

Rekomendasi dari Reel.com sama bagi semua pengguna yang memasukkan query tertentu. Bagi pengguna yang menyukai suatu film dengan karakteristik tertentu, ia akan merasa puas dengan rekomendasi reel.com, karena film hasil rekomendasi reel.com karakteristiknya akan mirip dengan film yang dimasukkan oleh pengguna. Namun kekurangannya adalah tidak adanya efek surprise dari rekomendasi yang diberikan.

Rekomendasi

Gambar 7 Rekomendasi dari masukan “Band of Brothers�
(diambil dari jawabanku di UTS IF5001-Search Engine Technologies)

Ganesha Digital Library 4.2

Wednesday, January 24th, 2007

1. GDL 4.2, sumbangan ITB bagi komunitas opensource Indonesia

GDL 4.2 merupakan program opensource dengan lisensi GPL. Dengan lisensi ini, siapapun dapat menggunakan dan memanfaatkan source code program ini. GDL 4.2 merupakan sumbangan ITB bagi komunitas opensource di Indonesia pada khususnya dan dunia pada umumnya. Program yang dikembangkan dengan dukungan dana dari program INHERENT DIKTI ini diharapkan dapat digunakan oleh masyarakat umum terutama insitusi akademik. GDL 4.2 adalah pengembangan dari GDL versi sebelumnya dengan penambahan beberapa fitur. Pengembangan GDL 4.2 juga dilakukan dengan metode pembangunan perangkat lunak yang standard agar memudahkan pengembangan program ini selanjutnya.

2. Pertimbangan dalam pengembangan

Suatu software dikatakan baik apabila mampu memenuhi kebutuhan pengguna. Hal ini dikenal dengan pemenuhan user requirements. Kualitas software juga ditentukan oleh pemenuhan standard pengembangan software. Pengembangan software GDL 4.2 ini dilakukan dengan menggunakan urutan langkah pengembangan software yang standard yaitu dimulai dengan pendefinisian user requirements agar software yang dibuat benar-benar dapat memenuhi kebutuhan pengguna. Lalu dilanjutkan dengan tahap analisis dan desain, kemudian tahap implementasi, dan diakhiri dengan pengujian. Semua langkah diatas didokumentasikan dengan baik menggunakan pemodelan UML (Unified Modelling Language).

Pengembangan GDL lebih lanjut dalam komunitas opensource membutuhkan dua hal. Pertama, re-usability, artinya kode program yang ada harus seefisien mungkin dan dapat di-reuse. Fitur ini memudahkan pengembang berikutnya karena pengembang berikutnya tidak harus mulai dari awal dalam pengembangan software GDL ini. Kedua adalah dokumentasi pembangunan perangkat lunak yang baik. Dokumentasi ini memudahkan pengembang berikutnya, karena pengembang tidak perlu membongkar seluruh source code untuk dapat memahami kerja software ini.

Kedua hal diataslah yang ingin dicapai dalam pembangunan software GDL 4.2 ini, selain tentunya penambahan beberapa fitur. Pada pembangunan perangkat lunak GDL 4.2 ini telah digunakan konsep berorientasi objek meskipun belum secara keseluruhan. Pembagian modul juga telah dilakukan dengan jelas, sehingga perangkat lunak dapat dipahami dengan cukup melihat struktur modulnya. Pembagian kelas-kelas dilakukan agar masing-masing kelas dapat digunakan kembali pada modul yang berbeda dengan mudah. Pembagian kelas juga dilakukan agar apabila terjadi perubahan pada satu kelas, tidak akan mempengaruhi keseluruhan progam (modularity).

Untuk mengetahui kelas apa saja yang ada dan kegunaannya, pengembang dapat mengacu pada dokumentasi pembangunan perangkat lunak GDL 4.2. Dokumen ini ditulis menggunakan format milik Program Studi Teknik Informatika ITB. Pemodelan yang digunakan pada dokumen ini adalah UML (Unified Modelling Language).

GDL 4.2 dikembangkan dengan memperhatikan faktor-faktor sebagai berikut :

  1. Correctness

GDL 4.2 dibangun dengan mengacu pada user requirement. Dengan hal ini, pengembang dapat yakin bahwa software yang dibangun benar-benar dapat memenuhi kebutuhan user.

  1. Reliability

Sebelum diluncurkan, software GDL 4.2 telah melalui tahap pengujian yang didokumentasikan dengan baik. Setelah dapat melewati proses pengujian, pengembang dapat yakin bahwa software GDL 4.2 reliable.

  1. Efficiency

GDL 4.2 berusaha mengoptimalkan kode yang ada dengan menggunakan metode object oriented. Selain itu, untuk mendukung efisiensi, GDL 4.2 menggunakan program opensource lain yang terbukti efisien sebagai sub-sistem diantaranya adalah program search engine swish-e.

  1. Integrity

GDL 4.2 memiliki fitur manajemen user yang baik sehingga user dapat diklasifikasikan sesuai kebutuhan. Dengan hal ini dapat dihindari akses oleh pihak yang tidak berhak.

  1. Usability

Human computer interaction pada pembangunan GDL 4.2 diperhatikan sehingga pengguna baru dapat mempelajari dengan cepat cara penggunaan program ini. Pengguna juga dapat menginterpretasi output dari GDL 4.2 dengan mudah. Tak lupa pengembang juga menyertakan user guide pada saat instalasi maupun operasional.

  1. Maintainability

GDL 4.2 juga menyediakan berbagai fitur yang memudahkan administrator merawat program ini. Diantaranya adalah pencatatan aktivitas (log), fitur manajemen pengguna, manajemen server, dan lain sebagainya.

  1. Flexibility

Flexibility GDL 4.2 berkaitan dengan dua hal. Pertama, GDL 4.2 mendukung tiga sistem operasi yang biasa digunakan sebagai server yaitu Windows, Linux, dan FreeBSD. Flexibility kedua adalah kemudahan untuk melakukan modifikasi program pada GDL 4.2 karena adanya modularity.

  1. Testability

Sebelum diluncurkan, GDL 4.2 telah melalui tahap pengujian yang didokumentasikan dengan baik. Pengujian dilakukan oleh satu tim khusus dengan berpedoman pada dokumen pengujian yang dibuat oleh tim analis.

  1. Portability

GDL 4.2 dibundel dalam satu file installer yang dapat dipindahkan dengan mudah dari satu mesin ke mesin yang lain. GDL 4.2 juga menyediakan fitur migrasi dari GDL 4.0 ke GDL 4.2. Dengan fitur ini, pengguna GDL 4.0 tidak perlu repot untuk meng-upgrade GDL miliknya ke versi 4.2.

  1. Reusability

Dengan menggunakan metode object oriented, software yang dikembangkan dapat dengan mudah di re-use. Hal ini berkaitan pula dengan fitur modularity.

  1. Interoperability

Salah satu keunggulan utama dari GDL 4.2 adalah interoperability. GDL 4.2 pada suatu server dapat dengan mudah berkomunikasi dan bertukar data dengan GDL 4.2 pada server lain. Beberapa GDL 4.2 dapat membentuk suatu jaringan perpustakaan digital yang dapat saling bertukar data dengan mudah. Pengguna yang teregistrasi pada salah satu server GDL juga dapat login pada GDL lain dengan mudah (dengan beberapa setting khusus).

  1. Modularity

GDL 4.2 dikembangkan secara modular. Hal ini memudahkan pengembang untuk melakukan modifikasi program. Karena modifikasi pada satu modul tidak akan mempengaruhi seluruh sistem. Modularity juga berguna dalam kaitannya dengan reusability.

  1. Traceability

Dengan pendokumentasian yang baik, pengguna maupun pengembang berikutnya dapat mempelajari program GDL 4.2 dengan mudah tanpa harus �membongkar� seluruh program.

  1. Documentation

Pengembangan perangkat lunak GDL 4.2 didokumentasikan dengan baik. Harapan kami adalah dokumen ini dapat bermanfaat dan memudahkan masyarakat terutama pengembang berikutnya untuk mengembangka GDL 4.2, sejalan dengan tujuan pengembangan GDL 4.2 sebagai sumbangan ITB bagi komunitas opensource Indonesia.


Servlet (Introduction)

Tuesday, July 25th, 2006
ServletServlet adalah program java yang berjalan di web server

1. Struktur Dasar Servlet

Struktur dasar servlet yang menangani method get dan post adalah sebagai berikut :

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

public class HelloWorldServlet extends HttpServlet

{

public void doGet(HttpServletRequest req, HttpServletResponse res)

throws ServletException, IOException

{

}

public void doPost(HttpServletRequest req, HttpServletResponse res)

throws ServletException, IOException

{

}

}

Method doGet menerima dan menangani request get dari webserver, sementara request post ditangani oleh method doPost. Parameter req digunakan untuk membaca HTTP header yang datang (misal cookie) dan data dari form HTML. Parameter res digunakan untuk menspesifikasikan respon line dan header misalnya set cookie an set content-type.

Kelas yang akan menjadi servlet harus meng-extend Kelas HttpServlet dan meng-override method doGet atau doPost atau keduanya.

Umumnya servlet mengembalikan halaman HTML. Untuk melakukannya, kita harus memberitahu browser bahwa kita mengirim halaman HTML melalui setting content-type dan kita harus membangun halaman HTML, tag-per tag, melalui perintah println. Contoh :

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class HelloWWW extends HttpServlet {

public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

response.setContentType(”text/html”);

PrintWriter out = response.getWriter();

out.println(”n” +

“n” +

“n” +

“n” +

Hello WWW

n” +”");

}

}

2. Membaca data dari form

Contoh form yang datanya akan dibaca oleh servlet :

Please Enter your name

Contoh Servlet yang membaca data nama :

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

import java.util.*;

public class MyNameServlet extends HttpServlet

{

public void doGet(HttpServletRequest req, HttpServletResponse res)

throws ServletException, IOException

{

doPost(req,res);

}

public void doPost(HttpServletRequest req, HttpServletResponse res)

throws ServletException, IOException

{

//*****Read the value of the ‘yourname’ parameter*****

String name=req.getParameterValues(”yourname”)[0];

//*****Construct a response in HTML*****

String reply=”n”+

“n”+

“n”+


n”+

“Hello “+name+”n”+

nn”;

//*****Send the reply*****

res.setContentType(”text/html”);

PrintWriter out=res.getWriter();

out.println(reply);

out.close();

}

}

Hampir sama dengan PHP, servlet membaca variabel dengan cara menggunakan parameter req yang bertipe HttpServletRequest, dengan memanggil method getParameterValues(“yourname�).

3. Penanganan Cookie

Untuk mengeset cookie dapat dilakukan dengan menggunakan method addCookie( ) milik HttpServletResponse, sedangkan untuk membaca cookie menggunakan method getCookie( ) milik HttpServletRequest. Contoh, program diatas dapat dimodifikasi untuk menangani cookie sebagai berikut :

Untuk mengeset cookie : res.addCookie(new cookie(”MyNameServlet_cookie”,name));

Untuk membaca cookie : req.getCookies();

4. Penanganan Session

Penanganan session hampir sama dengan penanganan cookie. Caranya seperti contoh potongan program berikut.

//mengeset session

HttpSession session=req.getSession(true);

session.putValue(”name”, name);

//membaca session

HttpSession session=req.getSession(false);

String output=”No Session”;

if (session!=null)

output=”Hello “+session.getValue(”name”);

Maksud parameter pada method getSession( ) adalah :

True : Jika tidak ada, buat session baru

False : tidak membuat session baru

5. Koneksi database

Untuk membangun koneksi ke database, kita membutuhkan JDBC API. Langkah pertama adalah me-load kelas driver yang spesifik ke JVM. Caranya dengan menggunakan method Class.forName( ). Contoh :

Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver”);

Saat driver tersebut di-load ke memori, ia meregistrasi dirinya dengan kelas java.sql.DriverManager. Langkah berikutnya adalah dengan menggunakan kelas DriverManager untuk membuka koneksi. Method yang digunakan adalah DriverManager.getConnection( ) yang mengembalikan kelas yang mengimplementasi interface java.sql.Connection. Contoh :

Connection con =

DriverManager.getConnection(”jdbc:odbc:somedb”, “user”, “passwd”);

Langkah berikutnya setelah koneksi terbangun adalah mengeksekusi query. Cara termudah adalah menggunakan kelas java.sql.Statement. Untuk membuat objek statement yang baru, digunakan method Connection.createStatement( ). Contoh :

Statement stmt = con.createStatement(); //con adalah instance dari kelas Connection.

Query yang mengembalikan dataset dapat dieksekusi dengan method Statement.executeQuery( ) yang mengembalikan java.sql.ResultSet. Contoh :

ResultSet rs = stmt.executeQuery(”SELECT * FROM CUSTOMERS”);

Untuk melakukan iterasi terhadap ResultSet dapat dilakukan seperti contoh berikut :

while(rs.next()) {

String event = rs.getString(”event”);

Object count = (Integer) rs.getObject(”count”);

}

IP Address (Introduction)

Tuesday, July 25th, 2006

IP Address

1. Apa itu IP address?

Bagaimana komputer-komputer yang terhubung ke jaringan internet saling berhubungan dan mengirimkan pesan? Masalah ini analog dengan masalah pengiriman surat di dunia nyata. Misalkan saya yang berdomisili di Aquarius 16 Bandung ingin mengirim surat kepada Hifni yang beralamat di jalan xxx no 100 Condongcatur Sleman. Pertama, saya akan menuliskan isi surat saya dalam sebuah kertas. Lalu surat tersebut akan saya masukkan ke dalam amplop. Mengapa saya masukkan ke dalam amplop? Agar surat saya terlindung. Dengan menggunakan amplop, resiko kerusakan surat saya akan lebih kecil daripada tidak menggunakan amplop. Setelah itu akan saya tuliskan alamat Hifni pada amplop surat tersebut, dan tak lupa nama Hifni, karena jika tidak dituliskan namanya, surat tersebut bisa nyasar ke kakak atau adiknya. Saya juga menuliskan nama dan alamat saya pada bagian belakang amplop, agar apabila Hifni ingin membalas surat saya, dia mengetahui alamat saya. Apabila alamat surat tersebut benar, prangkonya cukup, dan rute menuju rumah Hifni bisa dilalui, surat tersebut pasti akan sampai.

Pada kuliah pertama ini kita akan membahas salah satu komponen penting dalam jaringan komputer. Komponen itu adalah IP (Internet Protocol) address, yang analog dengan alamat rumah pada pengiriman surat di atas. IP address (versi 4) tersusun atas bilangan biner (0 dan 1) sepanjang 32 bit (binary digit) yang terbagi atas empat segmen. Tiap segmen terdiri atas 8 bit. Artinya memiliki nilai desimal 0 (00000000) sampai 255 (11111111). Jadi secara kasar dapat disimpulkan bahwa jumlah alamat yang bisa dipakai oleh komputer di seluruh dunia yang terhubung ke internet sebanyak 232 buah (walaupun ada IP tertentu yang tidak dipakai dengan alasan khusus). Untuk mempermudah pembacaan, alamat IP tersebut biasanya dituliskan dalam bilangan desimal misalnya 167.205.35.31. Struktur alamat IP dibagi menjadi dua bagian yaitu Network ID dan Host ID. Sesuai namanya, Network ID berfungsi mengidentifikasi pada jaringan mana suatu komputer berada, sementara Host ID berfungsi mengidentifikasi suatu komputer (host) pada suatu jaringan. Dalam satu jaringan, host ID harus unik, sebagaimana analogi dalam satu jalan, tidak boleh ada rumah dengan nomor sama. Jaringan yang berbeda network idnya dipisahkan oleh router.

2. Kelas-kelas IP address

IP address dibagi menjadi lima kelas, A sampai E. IP address yang dipakai secara umum dibagi dalam 3 kelas, sementara 2 kelas lainnya dipakai untuk kepentingan khusus. Ini untuk memudahkan pendistribusian IP address ke seluruh dunia.

Kelas A :

- Format : 0nnnnnnn.hhhhhhhh.hhhhhhhh.hhhhhhhh

- Bit pertama : 0

- Panjang Network ID : 8 bit

- Panjang Host ID : 24 bit

- Byte pertama : 0 – 127

- Jumlah : 126 kelas A (0 dan 127 dicadangkan)

- Range IP : 1.xxx.xxx.xxx sampai 126.xxx.xxx.xxx

- Jumlah IP : 16.777.214 IP address pada tiap kelas A

IP address kelas ini diberikan kepada suatu jaringan yang berukuran sangat besar, yang pada tiap jaringannya terdapat sekitar 16 juta host.

Kelas B :

- Format : 10nnnnnn.nnnnnnnn.hhhhhhhh.hhhhhhhh

- 2 bit pertama : 10

- Panjang Network ID : 16 bit

- Panjang Host ID : 16 bit

- Byte pertama : 128 – 191

- Jumlah : 16.384 kelas B

- Range IP : 128.0.xxx.xxx sampai 191.155.xxx.xxx

- Jumlah IP : 65.535 IP address pada tiap kelas B

IP address kelas ini diberikan kepada jaringan dengan ukuran sedang-besar. Contohnya adalah jaringan kampus ITB yang mendapat alokasi IP address kelas B (terima kasih kepada Onno W. Purbo), dengan network id 167.205.

Kelas C :

- Format : 110nnnnn.nnnnnnnn.nnnnnnnn.hhhhhhhh

- 3 bit pertama : 110

- Panjang Network ID : 24 bit

- Panjang Host ID : 8 bit

- Byte pertama : 192 – 223

- Jumlah : 2.097.152 kelas C

- Range IP : 192.0.0.xxx sampai 223.255.255.xxx

- Jumlah IP : 254 IP address pada tiap kelas C

IP kelas ini dialokasikan untuk jaringan berukuran kecil.

IP kelas D digunakan sebagai alamat multicast yaitu sejumlah komputer memakai bersama suatu aplikasi. Contohnya adalah aplikasi real-time video conference yang melibatkan lebih dari dua host, seperti yang diadakan di ITB dalam program SOI (School on Internet) bersama beberapa universitas di Asia. Ciri IP kelas D adalah 4 bit pertamanya 1110. IP kelas E (4 bit pertama 1111) dialokasikan untuk keperluan eksperimental.

3. Yang perlu diperhatikan dalam pemilihan IP address

Aturan dasar pemilihan Network ID dan Host ID :

- Network ID tidak boleh bernilai 127. Karena Network ID 127 digunakan sebagai alamat loopback yaitu alamat yang digunakan komputer untuk menunjuk dirinya sendiri.

- Network ID dan Host ID tidak boleh seluruhnya bernilai 255 (seluruh bit diset 1). Nework ID atau Host ID yang seluruhnya bernilai 255 adalah alamat broadcast jaringan tersebut. Apabila dikirimkan pesan kepada alamt broadcast maka seluruh host pada jaringan tersebut akan menerima pesan itu.

- Network ID dan Host ID tidak boleh seluruhnya bernilai 0 (seluruh bit diset 0). Alamat IP dengan host id semuanya bernilai 0 diartikan sebagai alamat network yang menunjuk ke jaringan, bukan ke host.

- Host ID harus unik dalam satu network.

4. Penutup

Jadi, dengan semakin berkembangnya pengguna internet, alamat IP yang tersedia pun semakin sedikit. Perancang IP address dulu tidak menyangka bahwa perkembangan internet akan sedemikian pesat. Lalu bagaimana solusinya? Ada beberapa alternatif yang kini tengah dilakukan. Pertama melakukan penghematan pemakaian IP address dengan cara Subnetting, Supernetting, NAT, dll. Kedua, melakukan migrasi dari IP versi 4 ke IP versi 6 yang mempunyai alokasi sampai 3,4 x 1038.

Untuk melihat konfigurasi IP Anda, buka command prompt (Windows) lalu ketikkan ipconfig /all, lalu tekan enter. Untuk UNIX, buka shell/terminal lalu ketikkan ifconfig lalu tekan enter. IP address pada komputer dapat ditentukan secara static maupun dynamic. Penentuan secara static dilakukan dengan mengeset alamat IP pada komputer secara langsung. Sedangkan penentuan secara dynamic dilakukan dengan menggunakan dial up ke ISP (internet service provider) atau dengan cara menghubungkan diri dengan server DHCP (Dynamic Host Configuration Protocol). Sebagai contoh, komputer di lab Informatika Dasar I Teknik Informatika ITB mendapatkan IPnya secara dynamic melalui server ns.if.itb.ac.id sehingga alamat IPnya pada suatu saat bisa berubah secara otomatis. Keuntungan menggunakan DHCP adalah mampu mencegah IP conflict atau terdapatnya IP address yang sama pada satu jaringan.

5. Referensi

- Onno W. Purbo, Adnan Basalamah, Ismail Fahmi, Achmad Husni Thamrin. TCP/IP Standar, Desain, dan Implementasi.2002.Elex Media Komputindo:Jakarta.

- Aulia K. Arif, Onno W. Purbo. Konsep IP Address di Internet.

- Wahyu Hidayat, Affan Basalamah, Dikshie Fauzie. IPv6 di ITB.