Internet Sharing di Linux

July 28, 2006

Duh, banyak sekali yang nanya-nanya cara internet sharing pakai Suse, Mandrake, Fedora, dll,dll. Ini cara sapu jagad yang pasti jalan di semua Linux.Level: wannabees

Singkat saja ya, pasang Linux anda jadi gateway

{INTERNET}-----------[LINUX]----------------{LAN}

Lalu di Linux itu, cari file namanya rc.local (biasanya di /etc/rc.d/rc.local atau /etc/init.d/rc.local) lalu tambahkan 6 baris berikut (tidak termasuk comment)

# Ganti device pakai sambungan Internet: ppp0, eth0 atau eth1
DEVICE=ppp0

# Ini jalur INTERNAL ke INTERNET
iptables -A FORWARD -o $DEVICE -i ! $DEVICE -j ACCEPT

# In jalur balik dari INTERNET
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -f  -j ACCEPT

# Ini rahasianya internet sharing
iptables -t nat -A POSTROUTING -o $DEVICE -j MASQUERADE

# dan ini pembuka gateway-nya.
echo "1" > /proc/sys/net/ipv4/ip_forward

Kalau sudah, reboot si Linux, hidupkan modemnya (kalau pakai). Terus semua komputer di LAN, diset supaya GETEWAY=IP-DALAM nya si Linux. Sementara itu DNS masih tetap DNS dari ISP. Met nyoba.


Trouble Shooting TCP/IP

July 28, 2006

Misalkan komputer Linux anda mestinya tersambung ke network, tapi kok tidak jalan. Bagaimana mencari tahu salahnya, sekaligus membetulkan ? Level: Wannabee

Pertama, bayangkan bahwa kalau anda kirim paket network, urut-urutan jalannya adalah sebagai berikut:

  1. Aplikasi
  2. Protocol TCP/IP
  3. Driver Kernal
  4. Card network
  5. Kabel network
  6. Komputer lain (gateway)
  7. Internet

Secara singkat, algoritma trouble shooting adalah sbb:

  1. TEST DEVICE. Kalau benar loncat ke TEST TCP/IP. Kalau salah SET DEVICE lalu coba lagi. Kalau masih salah juga, periksa CARD dan DRIVER kernel Linux anda.
  2. TEST TCP/IP. Kalau benar loncat ke TEST PING, kalau salah ke SET TCP/IP lalu coba lagi.
  3. TEST PING-GATEWAY. Kalau benar loncat ke TEST PING, kalau salah PERIKSA KABEL.
  4. TEST PING-INTERNET. Kalau benar ya sudah, selesai. Kalau salah, set routing lalu coba lagi. Kalau masih salah juga, tamat riwayat dah. Sambungan Internet anda pasti sedang putus.

Sekarang detailnya. Untuk trouble shooting kita pakai CLI (command line interface) saja. Jadi luncurkan terminal dan su jadi root, atau login di console sebagai root.TEST DEVICE

Pertama, coba test device network anda memang sudah ada. Caranya …

root@engrob4:# cat /proc/net/dev
Inter-|   Receive           |  Transmit
 face | (dipotong biar tidak kepanjangan)
    lo:   83505     .............
  eth0: 650720962 ........

Yang penting di sini, lihat kalau sudah ada baris eth0:. Kalau ada, artinya device eth0 anda sudah UP. Silahkan lanjut ke TEST TCP/IP. Kalau belum, siap-siap kerja berat :) Agar device eth0 UP, Linux anda mesti memuat driver yang sesuai dengan network card anda. Biasanya, hal ini otomatis di autodetect oleh distro anda. Di Vector Linux, coba:

root:# vlautosetup

Kalau tidak bisa autodetect, cilaka deh. Coba cara manual, edit file /etc/modules.conf. Anda mesti tambah baris seperti ini:

## Untuk ethernet card Intel Express 100
alias eth0 e100
## Ini buat NE200 compatible
# alias eth0 ne2k-pci
## Ini buat realtek
# alias eth0 8139too

Secara teknis, baris itu memberi tahu untuk memuat driver yang tepat bagi device eth0. Jadi … ya anda mesti tahu benar apa tipe network card anda, dan apa driver yang diperlukan. Driver yang disediakan kernal anda bisa dilihat di

## ganti versi sesuai kernel anda
root:# ls /lib/modules/2.4.26/kernel/drivers/net/

Duh, sorry kalau terlalu low level. Habis mau bagaimana lagi. Jadi … berdoa saja supaya autodetect-nya jalan ;-) Usaha terakhir, anda bisa coba ganti network card (barangkali rusak) atau kompile ulang kernal (barangkali driver belum ada).

TEST PROTOCOL

Ok, asumsi device sudah UP. Mari test apakah protokol TCP/IP anda sudah jalan

root:# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:A0:C9:5F:1E:DF
          inet addr:10.0.0.100  Bcast:10.0.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1963997 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1883860 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:650565316 (620.4 Mb)  TX bytes:645290505 (615.3 Mb)
          Interrupt:5 Base address:0xd800 Memory:e0100000-e0100038 

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:756 errors:0 dropped:0 overruns:0 frame:0
          TX packets:756 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:83505 (81.5 Kb)  TX bytes:83505 (81.5 Kb)

Lihat kalau eth0 sudah ada dan benar IP-nya. Kalau iya, anda bisa langsung loncat ke TEST PING.Kalau belum seperti itu, anda perlu set ulang TCP/IP. Di Slackware atau Vector Linux, jalankan ‘netconfig’, atau edit file /etc/rc.d/rc.inet1. Distro lain pasti ada juga menunya, coba dicari. Kalau nggak ketemu, ini cara klasik.

## ganti 10.0.0.100 dan 255.255.255.0 sesuai network anda
root:# ifconfig eth0 10.0.0.100 netmask 255.255.255.0 up

## Coba test lagi
root:# ifconfig eth0

Mestinya network anda akan jalan. Kalau sampai nggak jalan, kernel anda tidak support TCP/IP. Rasanya nggak mungkin deh.TEST PING GATEWAY

Sampai tahap ini, network internal di komputer anda sudah beres. Kita akan coba koneksi keluarnya. Untuk itu anda harus tahu alamat IP gateway di network anda.

## ganti 10.0.0.254 dengan alamat gateway anda
root:# ping -c 3 10.0.0.254
PING 10.0.0.254 (84) bytes of data.
64 bytes from 10.0.0.254: icmp_seq=1 ttl=255 time=4.61 ms
64 bytes from 10.0.0.254: icmp_seq=2 ttl=255 time=1.10 ms
64 bytes from 10.0.0.254: icmp_seq=3 ttl=255 time=1.05 ms

--- 110.0.0.254 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2023ms
rtt min/avg/max/mdev = 1.051/2.255/4.614/1.668 ms

Kalau keluarannya seperti di atas, lega. Itu artinya koneksi keluar beres. Kalau sampai timeout tidak ada balasan, coba periksa kabel dan hub ethernet anda. Atau barangkali juga si gateway-nya sedang down.TEST PING INTERNET

Nah, sekarang coba ping salah satu komputer di Internet. Biasanya, yang aman buat di-ping adalah DNS server si ISP (Internet service provider).

## Ganti 123.123.123.123 dengan alamat IP Internet yang anda tahu
root:# ping 123.123.123.123

Kalau tidak terbalas, coba lihat tabel routing. Mestinya mirip-mirip seperti ini

root:# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
0.0.0.0         10.0.0.254   0.0.0.0         UG    0      0        0 eth0

Perhatikan baris terakhir, destination 0.0.0.0 artinya ke semua network, dan kolom gateway-nya harus seauai dengan IP gateway anda. Konfigurator seperti netconfig mestinya sudah men-set ini buat anda. Kalau belum, coba pakai cara manual:

root:# route add default gw 10.0.0.254

Kalau default gateway sudah betul tapi ping internet masih belum bisa juga, ada beberapa kemungkinan: komputer anda di blok oleh si-gateway, setting firewall digateway salah, koneksi gateway ke ISP putus, dll. Buat tahu putusnya dimana, coba

root:# traceroute 123.123.123.123

Tapi biar sudah tahu, biasanya anda tidak bisa berbuat apa-apa, selain menunggu koneksi pulih kembali.Segitu dulu. Kesempatan depan kita bahas trouble shooting DNS.

Copyleft : Kocil, 2004
License : GNU FDL
Testbed : Vector Linux
Writepad : Vector Linux, Bluefish


Mengenal Web 2.0

July 28, 2006

Web 2.0 adalah buzzword terbaru di dunia internet. Berbagai inovasi dan fitur-fitur baru yang muncul di dunia web membawa suatu pandangan baru tentang jenis situs web atau aplikasi web yang disebut web 2.0.

Apakah Anda sudah mengetahuinya kalau situs-situs kesayangan Anda mungkin sudah merupakan wujud dari tipe web 2.0.

Istilah web 2.0 disebut-sebut oleh Dale Dougherty dari O’Reilly Media yang melakukan brainstorming dengan Craig Cline dari Media Live untuk menghasilkan ide konferensi di mana mereka menjadi host. Akhirnya pada bukan Oktober 2004 O’Reilly Media, Battele dan MediaLive mlakukan konferensi web 2.0 pertama dan kedua pada bulan Oktober 2005.

Sebelum muncul istilah web 2.0 yang sering digunakan adalah istilah semantic web.

Ada beberapa karakteristik teknis maupun umum yang menggambarkan suatu situs merupakan situs tipe web 2.0

Secara teknis atau teknologi:
- Memanfaatkan CSS, valid XHTML, dan Microformat
- MS ClickOnce
- Teknik Rich Application seperti Ajax
- Java Web Start
- Flex/Lazlo/Flash
- XUL
- Syndikasi data dengan RSS/Atom
- Agregasi dari RSS/Atom
- URL yang bersih dan berarti
- Mendukung posting ke weblog
- Menggunakan API REST (Representational State Transfer) atau XML Web Service
- aspek jaringan sosial

Umum:
- Mudah untuk memasukkan data atau mengambil data dari sistem
- Pengguna memiliki datanya sendiri pada situs
- Berbasis web murni

Bila dibandingkan antara web 1.0 dengan web 2.0 secara contoh:

Web 1.0 Web 2.0
DoubleClick -> Google AdSense
Ofoto -> Flickr
Akamai -> BitTorrent
mp3.com -> Napster
Britannica Online -> Wikipedia
Personal Websites -> Blogging
evite -> Upcoming.org dan EVDB
spekulasi nama domain -> Optimasi Search Engine
page view -> Cost per click
screen scraping -> Web services
publishing -> Participation
content management system -> Wikis
direktori (taksonomi) -> Tagging(“folksonomy”)
stickiness -> Syndication

Dapat dikatakan bahwa web 2.0 menyajikan suatu layanan web yang berpusat pada user di mana user dimudahkan untuk menggunakan berbagai layanan yang ada. Misalkan dalam hal user interface suatu situs web yang menggunakan teknologi flex (aplikasi rich internet berbasis flash dari macromedia yang sekarang adobe), lazlo(platform aplikasi flash open source) atau menggunakan ajax secara intensif seperti gmail atau google map maka situs itu bisa dikatakan merupakan situs tipe web 2.0.
Anda bisa mencoba aplikasi-aplikasi ajax atau Rich Internet Application berbasis flash pada situs-situs berikut:
http://www.gmail.com
http://www.lazlomail.com
http://map.google.com
http://mail.yahoo.com (Anda harus daftar dulu di link yang ada pada What’s New untuk mencoba versi user interface terbarunya yang sudah memanfaatkan Ajax)

Perlu anda ketahui bahwa Ajax adalah kependekan dari Asynchronous Java Script yang memungkinkan aplikasi web yang lebih interaktif dan kaya fitur sehingga menyerupai kemampuan aplikasi desktop.

Lalu pemanfaatan tag untuk pengkategorian data yang disubmit oleh user sendiri sehingga user lain dapat mencari atau menemukannya menggunakan tag-tag juga merupakan salah satu karateristik jenis web 2.0.
Contoh situs yang memanfaatkan tag-tag untuk contentnya adalah:
http://del.icio.us
http://wwww.technorati.com
http://www.digg.com
http://www.standpoint.com
http://www.askeet.com

Desentralisasi seperti Napster atau pun Bittorrent juga merupakan bagian dari teknologi web 2.0 karena tidak ada server terpusat yang melayani berbagai kebutuhan pengguna tetapi mendayagunakan komputer jaringan pengguna yang ada di dalamnya.

Publikasi artikel, berita yang sebelumnya didominasi situs resmi seperti cnn.com, news.com, atau detik.com, kompas.com untuk Indonesia, sekarang sudah mulai disaingi oleh publikasi non resmi dari perorangan atau lembaga yang tidak ada hubungannya dengan publikasi data media seperti biasanya melalui blog sehingga kadangkala informasi dari blog bisa lebih cepat atau lengkap.
Aplikasi blog ini juga merupakan bagian dari web 2.0.

Dalam aplikasi blog ini juga biasanya disediakan fasilitas sindikasi di mana kita dapat menampilkan judul berita dari sumber lain sehingga kita dapat menampilkan judul content dalam berbagai blog menggunakan aplikasi yang bisa membaca sindikasi itu, baik lewat browser web maupun aplikasi desktop. Ketersediaan sindikasi ini atau pemanfaatan sindikasi untuk menampilkan berita juga merupakan bagian dari teknologi web 2.0.

Pemanfaatan web service serta REST sebagai teknologi pendukung merupakan salah satu karakteristik web 2.0 di mana kita dapat membangun aplikasi web tanpa menyediakan atau membuat fungsi-fungsi pendukung aplikasi sendiri tetapi memanfaatkan fungsi-fungsi aplikasi yang disediakan dari web lain melalui kedua teknologi ini. Jadi misalkan anda ingin menyediakan search engine di situs Anda, maka Anda bisa membuat aplikasi yang memanggil fungsi-fungsi layanan search dari Google atau Yahoo menggunakan REST/Web Service sehingga seakan-akan aplikasi Anda dapat menyediakan layanan ini tanpa membuat fungsi search sendiri.

Pemanfaatan partisipasi user secara menyeluruh juga merupakan bagian karakteristik dari teknologi web 2.0, contohnya adalah Wikipedia di mana content dari wikipedia ini dibuat oleh banyak sekali pengunjung yang langsung dapat mengedit isi dari wikipedia sehingga wikipedia menjadi ensiklopedia dinamis yang terus bertambah isinya setiap saat sehingga dapat mengalahkan kelengkapan isi ensiklopedia lain.

Ebay, Amazon maupun Google juga merupakan situs-situs yang mempelopori web 2.0 di mana mereka memanfaatkan respon user untuk content atau layanan yang mereka sediakan.
PageRank dari Google memanfaatkan klik dari user pada hasil pencarian untuk memberikan penilaian ketepatan hasil pencarian, Ebay memanfaatkan pengguna untuk layanan jual beli melalui internet di mana penjual dapat dinilai oleh pembeli-pembelinya secara online, sedangkan Amazon merupakan situs e-commere yang memanfaatkan respons user untuk menghasilkan pencarian produk yang lebih sesuai serta memberikan informasi produk apa adanya melalui fasilitas review.

Dari berbagai uraian ini, semoga Anda dapat mengerti arti web 2.0 dan membedakan suatu situs adalah situs web 2.0 atau tidak.

Link untuk mengetahui web 2.0 lebih lanjut:
http://www.wikipedia.com/Web2.0
http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html


Penambahan kemampuan dan fasilitas baru pada MySQL 4 dan 4.1

July 28, 2006

Artikel tentang peningkatan fasilitas dan kemampuan database server open source MySQL pada versi 4 dan 4.1

MySQL dikenal cepat tetapi tidak dikenal sebagai database server yang lengkap fasilitasnya. MySQL kalah dibandingkan dengan PostgreSQL dalam kelengkapan fasilitas, tetapi unggul dalam kecepatan sehingga MySQL sangat disukai oleh para web developer yang memerlukan pemrosesan database yang cepat. Pada versi 4 telah ditambahkan fasilitas dan kemampuan baru, begitu juga pada versi selanjutnya. Dan peningkatan pada versi 5 mampu mengubah pandangan bahwa MySQL tidak canggih karena pada MySQL 5 terdapat penambahan fasilitas yang cukup berarti seperti Stored Procedure sehingga bisa dikatakan bahwa MySQL 5 akan menjadi produk database server yang tangguh dan lengkap.

Artikel ini membahas perkembangan fasilitas baru pada MySQL 4 dan 4.1.

Saat penulisan artikel ini, MySQL telah memiliki versi 4.0.16 yang bisa dikatakan merupakan versi yang telah matang dan stabil di mana secara resmi pada Maret 2003 diumumkan bahwa versi 4.0.12 adalah versi produksi yang stabil. Sedangkan versi 4.1 telah mencapai versi alpha 4.1.1 yang berarti Anda dapat menggunakannya pada development software baru karena versi ini telah mendekati versi produksi walau mungkin masih terdapat sejumlah bug pada fasilitas tertentu.

Untuk versi 3, MySQL telah mencapai versi 3.23.58 yang dapat diandalkan karena kestabilan dan kecepatan yang telah terbukti. Tetapi karena keterbatasan fasilitas yang ada pada versi 3, banyak developer lebih menyukai untuk bermigrasi ke versi berikutnya.

Pengembangan dan fasilitas yang ditambahkan pada MySQL versi 4 adalah:

  • Peningkatan kecepatan
    MySQL 4 memiliki cache query yang dapat meningkatkan kecepatan pada aplikasi yang melakukan kueri berulang-ulang. Selain itu juga terdapat peningkatan kecepatan pada INSERT dalam jumlah besar, pencarian pada index yang terpack, pembuatan index FULLTEXT, dan COUNT(DISTINCT).
  • Ada versi Embedded MySQL Server
  • InnoDB storage engine sebagai standar
    InnoDB merupakan engine MySQL yang diperlukan untuk transaksi ACID, foreign key dengan cascading UPDATE dan DELETE, dan row level locking.
  • Fungsi baru
    Properti FULLTEXT memberikan fasilitas indexing FULLTEXT untuk data teks dalam jumlah besar
  • Standards compliance, portabilitas, dan migrasi
    • Fasilitas untuk memudahkan migrasi dari sistem database lain ke MySQL Server, termasuk TRUNCATE TABLE (seperti Oracle)
    • Dukungan terhadap perintah SQL UNION
    • Internasionalisasi set karakter
    • MySQL berjalan native pada Novell Netware 6
  • Peningkatan usabilitas
    • Parameter mysqld dapat diset tanpa perlu shutdown server.
    • Multiple-table DELETE dan UPDATE
    • Dukungan pada MyISAM untuk symbolic linking pada level tabel
      fungsi SQL_CALC_FOUND_ROWS and FOUND_ROWS() untuk mendapatkan jumlah baris dari kueri SELECT yang mengikutkan klausa LIMIT yang akan dikembalikan tanpa mengikutkan klausa tersebut

Fasilitas baru pada versi 4.1

  • Dukungan subkueri dan tabel turunan
    • Subkueri adalah perintah SELECT yang bertingkat (terletak pada perintah SQL lain).
    • Tabel turunan adalah (view yang tidak bernama) subkueri pada klausa FORM dari perintah SQL lain.
  • Peningkatan kecepatan
  • Fungsi baru
    • Perintah CREATE TABLE table_name2 LIKE table_name1 mampu membuat tabel baru dengan struktur sama pada tabel yang sudah ada
    • Dukungan untuk OpenGIS spatial types (data geografikal)
    • Replikasi dapat dilakukan pada koneksi SSL
  • Standards compliance, portabilitas, dan migrasi
    • Protokol client/server baru menambahkan kemampuan untuk menyampaikan banyak peringatan ke client, bukan hanya satu result saja. SHOW WARNINGS menampilkan peringatan untuk perintah terakhir.
  • Internasionalisasi
    • Set karakter dapat didefinisikan per kolom, tabel dan database
  • Peningkatan usabilitas
    • Perintah HELP berbasis server untuk mendapatkan informasi bantuan dari perintah SQL. Informasi ini dapat diakses melalui perintah SQL dan client juga dapat mendapatkan informasi ini.
    • Pada protokol baru ini, banyak perintah/statement dapat disampaikan dalam satu call/pemanggilan
    • Client/server protocol baru juga mendukung kemampuan mendapatkan banyak result set sekaligus.
    • Perintah baru INSERT … ON DUPLICATE KEY UPDATE … syntax telah diimplementasikan. Ini mengizinkan Anda melakukan UPDATE baris yang sudah ada bila INSERT menyebabkan duplikasi pada PRIMARY atau UNIQUE key (index).
    • Fungsi aggregate baru, GROUP_CONCAT() yang menambahkan kemampuan penggabungan kolom dari group baris ke dalam satu hasil string.

Sumber:

MySQL
Rencana kemampuan dan fasilitas MySQL 5

Kemampuan dan fasilitas baru MySQL 4.1
Fasilitas MySQL 4


Tutorial Mengolah Data Tanggal dan Waktu di MySql

July 28, 2006

Setelah Anda menggunakan MySQL tentu sulit untuk meninggalkan database yang “cuepat” dan gratis ini. Memang MySQL sangat cepat dalam melakukan kueri sehingga menjadi database yang paling populer dan sesuai untuk web development. Pada saat pertama kali memasuki dunia MySQL sebagai newbie, Anda mungkin jarang berurusan dengan si “date” dan si “time” tetapi seiring dengan tuntutan pekerjaan atau peningkatan pengetahuan tentang MySQL tentu Anda akan berurusan dengan si “date” dan si “time”.

Artikel ini akan mencoba membantu Anda berkenalan dan bergaul atau “menggauli” si Date dan si Time ini sehingga Anda memiliki hubungan yang lebih intim dengan mereka. Dengan memiliki pengetahuan tentang tipe data Date, Time serta fungsi Date dan Time yang telah disediakan oleh MySQL maka pembuatan aplikasi yang terkait dengan Date dan Time akan lebih cepat dan efektif.

Penulis akan menyajikan dalam beberapa artikel bersambung di situs benpinter.net maupun milis benpinter di yahoogroups.com.

Versi MySQL yang penulis gunakan pada pembahasan ini adalah MySQL 3.23.33, tetapi jangan kuatir karena penulis percaya bahwa penanganan terhadap data tanggal dan waktu pada versi berikutnya hampir sebagian besar masih sama.

Pertama-tama, Anda perlu mengetahui bahwa ada empat tipe data di MySQL yang terkait dengan data tanggal dan waktu, yaitu:

DATETIME, DATE, TIMESTAMP, TIME, dan YEAR

Besar ukuran data dari tiap-tiap tipe data tersebut adalah:
DATE 3 bytes
DATETIME 8 bytes
TIMESTAMP 4 bytes
TIME 3 bytes
YEAR 1 byte

Sesuai sebutannya… DATE digunakan untuk menyimpan data tanggal saja, DATETIME menyimpan data tanggal dan waktu, TIMESTAMP dapat digunakan untuk menyimpan data tanggal dan waktu sesuai pengaturan jumlah kolom untuk TIMESTAMP, TIME untuk menyimpan waktu saja dan YEAR untuk menyimpan data tahun.

Range dan format dari masing-masing tipe data tersebut adalah:

DATE
Range atau kisaran data yang didukung adalah ‘1000-01-01′ sampai ‘9999-12-31′. MySQL menampilkan data tanggal dengan format ‘YYYY-MM-DD’ (tahun-bulan-tanggal) dan mengizinkan Anda mengisinya dengan data string maupun angka.

DATETIME menyimpan data dalam format ‘YYYY-MM-DD HH:MM:SS’ dan juga mengizinkan Anda mengisi data dengan string maupun angka.

TIMESTAMP[(M)]
TIMESTAMP memiliki kisaran data ‘1970-01-01 00:00:00′ sampai tahun 2037. TIMESTAMP dapat ditampilkan dalam format YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD, atau format YYMMDD berdasar argumen M yang Anda tentukan. TIMESTAMP sangat berguna untuk menyimpan data operasi INSERT atau UPDATE karena akan diset sesuai tanggal dan waktu operasi terakhir bila Anda tidak memberinya nilai. Anda juga dapat menset pada tanggal dan waktu saat ini dengan memberinya nilai NULL. TIMESTAMP(8) atau TIMESTAMP(14) merupakan data angka sedangkan tipe data kolom TIMESTAMP(X) yang lain adalah string. TIMESTAMP di MySQL berbeda dengan TIMESTAMP di UNIX.

TIME
Untuk data waktu. Kisarannya adalah ‘-838:59:59′ sampai ‘838:59:59′. MySQL menampilkan nilai TIME dengan format ‘HH:MM:SS’ dan mengizinkan Anda mengisi nilai ke data kolom TIME menggunakan angka maupun string.

YEAR[(2|4)]
Untuk data tahun baik dengan format 2 digit maupun 4 digit (default). Nilai yang diizinkan adalah 1901-2155, bila menggunakan 4 digit format dan 1970-2069 bila menggunakan 2 digit format. MySQL menampilkan nilai YEAR dalam format YYYY dan mengizinkan Anda mengisinya dengan data string maupun numerik.

Ini adalah akhir artikel bagian pertama dari saya, dan nantikan lanjutan artikel ini di Benpinter.net atau milis benpinter di yahoogroups.com


Keunggulan Stored Procedure dibandingkan dengan adhoc query

July 28, 2006

Keunggulan penggunaan Stored Procedure dibandingkan adhoc query

Dokumen ini membahas keunggulan penggunaan stored procedure pada DBMS pada umumnya dan MS SQL Server 2k pada khususnya ditinjau dari berbagai aspek seperti kinerja, transparansi, keamanan, fleksibilitas terhadap perubahan proses bisnis, scalabilitas dan ekonomi.

• Kinerja

o Execution plan pada stored procedure sudah dibuat pada saat procedure itu dikompilasi jadi hanya terjadi 1 kali. Berbeda dengan adhoc query terutama dengan query tanpa parameter (tanpa simbol @ pada SQL Serverr). Query adhoc dikompilasi (dibuat parse tree dan query tree) secara realtime, terutama jika query tersebut tidak ada di procedure cache.

o Stored procedure dapat dipin(ditandai) di memori. Artinya sebuah sp dapat dipaksa untuk tetap berada di memori fisik meskipun dbms membutuhkan memori tambahan. Akibatnya operasi swaping in & swapping out sp dapat diminimalkan terutama untuk sp yang sering dipakai. Sebagai catatan dengan harga memori yang makin murah (relatif dalam US $) maka opsi pin ini semakin atraktif

o Query select pada SP dapat diatur menggunakan format tertentu sehingga index dapat digunakan untuk query.

o SP dapat digunakan untuk membatasi jumlah record yang dikirim ke client. Hal ini dapat mengurangi beban jaringan. Hal ini akan sangat mempercepat karena bottle neck utama di applikasi database terletak di jaringan.

o SP terletak di DBMS sehingga untuk proses yang membutuhkan data banyak, round trip untuk permintaan data sampai data itu diterima dapat ditiadakan.

• Transparansi dan skalabilitas
Transparansi ekivalen dengan information hiding di konsep pemograman OO.

o Mendukung ANSI model terhadap database. Ansi model adalah sebuah model database yang memodelkan penglihatan user terhadap database menjadi 3 komponen yaitu user view, logical view dan fisikal view. User view ekivalen dengan perintah select. Logical view ekivalen dengan ERD atau LDS (logical data structure) dan fisikal view ekivalen dengan implementasi tabel di database. Dengan adanya sp maka app user view dapat dibuat sesetabil mungkin meskipun tabel penyusunnya berubah. Perubahan terhadap applikasi client dapat dihindari pada kasus kasus di bawah ini :

 Partisi tabel baik secara vertikal , horisontal dan gabungan
Partisi adalah proses pembagian sebuah tabel yang sudah normal menjadi beberapa tabel yang normal. Tabel normal adalah tabel hasil normalisasi.
Misalkan kita punya tabel pelanggan (pelangganid, nama, alamat, kota, propinsi, tanggallahir, jeniskelamin,telepon).
Partisi vertikal ekivalen dengan select pelangganid,nama from pelanggan. Partisi horisontal ekivalen dengan select

* from pelanggan where kota=xxx.
Pertimbangan untuk melakukan partisi dilakukan dengan memperhatikan :

• Frekuensi akses (select) terhadap tabel
Jika user sering mengakses pelangganid,nama dan telepon maka sebaiknya tabel pelanggan dipartisi menjadi 2 yaitu pelanggan_part1 (pelangganid,nama,telepon) dan pelanggan_part2 (pelangganid, alamat, kota, propinsi, tanggallahir, jeniskelamin). Ukuran table pelanggan_part1 akan jauh lebih kecil dibanding dengan tabel pelanggan_part2 dan pelanggan sehingga proses query select akan lebih cepat. Untuk lebih jelasnya dapat dibaca di buku Database system concept karya henry korth bab 12 tentang perhitungan query cost.

• Lokasi user yang mengakses tabel
Misalkan database tersebar dimana user di kota x hanya bisa melihat data pelanggan kota x maka tabel dapat dipartisi secara horisontal

 Transformasi dari single server ke multi server (distributed database)
Sudah dijelaskan pada point transparasi horisontal

 Normalisasi dan denormalisasi tabel
Untuk meningkatkan kinerja atau membenahi struktur tabel maka proses normalisasi dan denormalisasi dapat dilakukan. Selama interface sp yang digunakan untuk mengakses tabel tidak berubah maka applikasi client tidak perlu berubah. Interface sp yang dimaksud adalah nama sp, jumlah parameter sp, urutan parameter dan tipe data parameter.

• Keamanan
o SP mencegah terjadinya SQL injeksion. SQL injeksion adalah sebuah aksi hacking yang dilakukan di applikasi client dengan cara memodifikasi perintah SQL yang ada di memori applikasi client. Untuk melakukan hal ini dapat digunakan progam seperti softice.

o Hak akses sp terhadap data di database bergantung pada hak akses pembuatnya bukan bergantung pada hak akses pengguna sp. Hal ini memungkinkan user applikasi untuk tidak diberi hak akses terhadap semua tabel yang ada namun diberi hak akses untuk menjalankan sp. Akibat penggunaan mekanisme ini adalah enforcement terhadap aktifitas user (select, inser, update, delete) tersentralisasi bahkan untuk applikasi seperti query analyzer tidak akan bisa digunakan untuk mengakses data secara tidak sah

o Penggunaan SP mendukung penggunaan application role. Application role adalah sebuah role di SQL server 2k dimana role ini tidak memiliki pengguna. Mekanisme ini merupakan mekanisme standard yang disarankan oleh Microsoft untuk membuat applikasi database berbasis SQL server 2k. Keunggulan penggunaan application role ini adalah dengan menggunakannya maka hanya app kita yang bisa mengakses database applikasi lain tidak bisa kecuali user memakai login yang berrole sysadmin.

o Perlindungan hak cipta. SP dapat dienkript sehingga proses tidak dapat dibajak orang dengan mudah

o Memungkinkan manual audit yang sangat baik. Manual audit didefinisikan sebagai audit dimana mekanisme pencatatan log dilakukan oleh applikasi bukan dbms. Memang manual audit dapat dilakukan tanpa penggunaan SP namun manual audit dapat dibypass misalkan dengan menggunakan query analyzer. Dengan SP dan fasilitas application role maka mekanisme manual audit dapat dienforce setiap saat.

• Fleksibilitas terhadap proses bisnis
o SP tersimpan di server. Modifikasi jadi mudah dilakukan dan dengan cepat

• Ekonomi
o SP menyediakan 1 pintu masuk untuk proses data entri. Applikasi client tinggal mengaksesnnya. SP dibuat 1 kali dan bisa diakses oleh applikasi client yang berbeda-beda. Efesien dan murah

Referensi :
• Database system concept karya henry korth
• MS SQL Server 2k BOL
• Microsoft SQL Server 2000 Unleashed, 2nd Edition
• Quest SQL Server XpertKnowledge
• Database security karya silvana castano
• Principles Of Distributed Database System


Tips: SQL Statement dengan Sub Query

July 28, 2006

Artikel ini adalah sharing pengalaman penggunaan sub query database untuk mendapatkan informasi login terakhir dari user dari dua tabel.

Saya dulu punya pengalaman menarik dengan penggunaan database (MySQL dan
MS SQL) yang punya relation one to many. Misalnya Tabel User dan Tabel
History dan kita ingin (1) melihat daftar seluruh User dan kapan
mereka-mereka semua terakhir login atau (2) kita ingin mengambil data
kapan terakhir si User A
melakukan login..

Di bawah ini mungkin bisa jadi tips buat anda dengan memanfaatkan Sub
Query.

tblUser:
- fieldID –> (index)
- fieldNamaUser
- fieldPassword –>(optional)

tblHistory:
- fieldID
- fieldLastLoginTblHistory (date)

—————
MS-SQL
—————-
SELECT fieldNamaUser,
(SELECT TOP 1 fieldLastLoginTblHistory
FROM [tblHistory]
WHERE [tblHistory].fieldID =
[tblUser].fieldID
ORDER BY fieldLastLoginTblHistory DESC) AS
fieldLastLoginTblUser
FROM [tblUser]

—————-
MySQL
—————–
SELECT fieldNamaUser,
(SELECT fieldLastLoginTblHistory
FROM [tblHistory]
WHERE [tblHistory].fieldID =
[tblUser].fieldID
ORDER BY fieldLastLoginTblHistory DESC LIMIT
1) AS fieldLastLoginTblUser
FROM [tblUser]

Query ini menghasilkan 2 Field: fieldNamaUser dan fieldLastLoginTblUser.
…. ORDER BY fieldLastLoginTblHistory DESC LIMIT 1 penting untuk
membalik posisi LastRecord menjadi No 1 dan dengan statement Limit/Top
membatasi Record hanya 1 saja yang diambil dalam hal ini data yang kita
inginkan.
Sebaliknya kalau mau
mengambil FirstRecord hilangkan DESC untuk membuat tanggal paling lama
berada paling atas

nah, gimana kalau mengambil User A saja? gampang, tinggal lengkapi statement
FROM [tbl User] WHERE fieldID = ‘10′;

gampang, hemat script dan hemat memory, database server side, dan lebih
cepat tentunya…

Upss.. SQL statement diatas nggak sempat dicoba loh… kalau ada yang
salah dengan
statement diatas silahkan diperbaiki…thanks.. bravo ben-pinter..


Mengenal EJB ( Enterprise Java Bean )

July 28, 2006

Tutorial Pengenalan EJB (Enterprise Java Bean)

  1. Apakah EJB itu?
  2. Latar Belakang Enterprise Java Bean
  3. Kelebihan EJB
  4. Macam EJB

Anda yang pernah mendengar istilah EJB tetapi belum mengetahui apakah gerangan EJB itu bisa membaca artikel singkat ini.

1. Apakah Enterprise Java Bean itu?

Secara singkat Enterprise Java Bean merupakan komponen software server-side yang menyederhanakan proses pembuatan komponen aplikasi terdistribusi untuk skala enterprise. Pada dasarnya Enterprise Java Bean bukanlah merupakan suatu produk jadi tetapi merupakan spesifikasi atau blueprint teknologi untuk komponen software yang menjadi bagian dari teknologi J2EE.

Menurut Sun Microsystem definisi EJB adalah:

“Aristektur Enterprise JavaBeans adalah arsitektur komponen untuk development dan deployment dari aplikasi bisnis terdistribusi berbasis komponen. Aplikasi yang dibuat dengan artistektur Enterprise JavaBeans adalah skalabel, transaksional, dan multiuser yang aman. Aplikasi-aplikasi ini mungkin ditulis sekali dan dideploy pada berbagai platform server yang mendukung spesifikasi Enterprise JavaBeans.”

Catatan: Spesifikasi EJB terbaru dapat didownload di: http://java.sun.com/products/ejb/docs.html

2. Latar Belakang EJB

Berangkat dari kebutuhan aplikasi berskala enterprise yang mendayagunakan sistem terdistribusi dengan banyak user atau pengguna dalam suatu saat maka lahirlah EJB.

Sebelum adanya spesifikasi EJB, perusahaan seringkali membangun middleware sendiri di mana proses development untuk middleware sangatlah kompleks karena harus memperhatikan berbagai aspek, seperti transaksi, mekanisme penyimpanan data persisten, sinkronisasi, resource polling, networking, dan sebagainya. Aplikasi yang berjalan pada middleware harus memanggil API yang diperlukan secara eksplisit apabila ingin mengatur transaksi, menyimpan data, melakukan resource polling, dsb.

Tentu hal ini menyulitkan developer dalam menghasilkan aplikasi bisnis yang berjalan di atas middleware. Terlebih lagi tidak adanya standar atau spesifikasi global sehingga API dari suatu middleware tidaklah sama atau mungkin tidak tersedia pada middleware lain.

Middleware menyediakan service seperti berikut:

  1. Remote Method Invocation
  2. Load Balancing
  3. Transparent fail-over
  4. Integrasi Back-end
  5. Transaksi
  6. Clustering
  7. Dynamic redeployment
  8. Clean shutdown
  9. Logging dan auditing
  10. Manajemen Sistem
  11. Threading
  12. Message-oriented middleware
  13. Siklus hidup objek
  14. Resource polling
  15. Security
  16. Caching
  17. dll

Oleh karena banyaknya hal dan masalah yang harus dapat dilayani oleh suatu middleware untuk aplikasi berskala enterprise maka Sun Microsystem mendefinisikan suatu spesifikasi di mana suatu aplikasi yang memenuhi spesifikasi tersebut dapat dibuat tanpa harus menuliskan kode program secara eksplisit untuk menangani berbagai hal terkait dengan kemampuan yang disediakan middleware karena aplikasi dengan arsitektur EJB dapat mendayagunakan berbagai fungsi middleware yang dimanajemen oleh application server secara otomatis. Jadi dalam aplikasi yang menggunakan EJB kita akan memerlukan software khusus yang berjalan di server yang sering disebut application server di mana application serverlah yang menyediakan berbagai fungsi dan layanan middleware.

3. Kelebihan EJB

EJB memiliki kelebihan-kelebihan sebagai berikut:

•  Teknologi EJB merupakan standar teknologi dan spesifikasi yang telah disetujui oleh industri dunia. Oleh karena itu hal ini sangat menguntungkan berbagai industri terkait, baik yang mendayagunakan EJB maupun vendor yang menyediakan jasa development atau tool pendukung EJB

•  Portabilitas yang tinggi. Spesifikasi EJB dipublikasikan secara umum dan tersedia gratis sehingga banyak vendor yang mengerti arsitektur EJB dengan baik dan akibatnya memunculkan banyak vendor application server untuk EJB maupun developer aplikasi EJB.

•  Rapid application development. Aplikasi dapat dibuat lebih cepat karena layanan atau kemampuan middleware yang rumit dapat diperoleh dari application server.

4. Macam EJB

Enterprise Java Bean terdiri dari 3 macam yaitu:

•  Sesson Beans

Session Bean digunakan untuk memodelkan proses bisnis atau merupakan logik bisnis dari aplikasi. Proses yang dapat dilayani Session Bean misalnya: mendapatkan harga barang tertentu, merubah harga barang, dll.

•  Entity Beans

Entity Beans digunakan untuk memodelkan data bisnis. Apabila diistilahkan dalam kata-kata maka Entity Beans bersifat kebendaan, lain halnya dengan Session Beans yang bersifat suatu pekerjaan atau aksi.

•  Message-driven Beans

Message Driven Beans adalah hampir sama dengan Session Beans dalam sudut pandang fungsi yaitu melakukan proses bisnis atau sebagai logik bisnis. Hanya saja perbedaaanya adalah message-driven beans dijalan atau dieksekusi dengan menyampaikan “message” ke bean tersebut.


Kelebihan dan fasilitas baru Servlet 2.4 dan JSP 2.0

July 28, 2006

Saat ini Servlet 2.4 dan JSP 2.0 telah memasuki Proposed Final Draft 2 status dan kemungkinan besar akan dirilis resmi pada tahun ini, bersamaan dengan versi stabil dari Tomcat 5 yang merupakan implementasi dari spesifikasi baru tersebut.

Untuk JSP 2.0:

- JSP Expression Language.
Yaitu bahasa ekspresi untuk mengakses bean tanpa menggunakan ekspresi skripting JSP secara eksplisit semacam <%=..%>
- Standarisasi dan adopsi dari Java Standard Tag Library (JSTL) yang menyediakan custom tag (action) untuk looping, evaluasi kondisional, akses database, dan sebagainya
- Kemampuan menggunakan sintaks JSP untuk mendefinisikan custom tag dengan tag files.
- Java Server Faces (JSF) yang akan segera dirilis edisi finalnya untuk menangani UI elemen client (terutama HTML form).
- Lebih mudah membuat custom tag

Untuk Servlet 2.4:

Peningkatan dan perubahan dari Servlet 2.3 ke Servlet 2.4 tidak lah banyak. Yang perlu diperhatikan adalah sekarang Servlet 2.4 memerlukan protokol HTTP/1.1. Deprecation dari SingleThreadModel, penambahan event class seperti ServletRequestListener dan peningkatan pada ServletRequest untuk dapat mengakses alamat lokal dan remote dan port. Deployment descriptor sekarang menggunakan XML schema dan bukan DTD. Juga terdapat penambahan fasilitas pada ServletFiltering.

URL Penting:
JavaChatLive tentang JSP 2.0 dan Servlet
JSTL
JSP
Servlet
JSF
JSP 2.0 Specification


Info Hosting Java / JSP / Servlet gratis dan komersial di dunia dan Indonesia

July 28, 2006

Kalo Anda cari hosting JSP / Servlet, baca deh…

Free Hosting JSP / gratis :
http://www.mycgiserver.com
http://www.webappcabaret.com (hanya 1 bulan gratis)

Hosting JSP Bayar / Komersial dalam negeri alias di Indonesia :
http://www.techscape.co.id

Bayar / Komersial luar negeri:
www.webappcabaret.com
www.excelwebhosting.com
www.domainmultitude.com
www.protollix.com
www.rimuhosting.com
www.addvaluehost.com
www.rawserve.com
www.hostingonastick.com
www.darktides.com
http://java.xp2u.com/
www.4java.ca
www.eapps.com
www.servlethosting.com