Akhirnya saya memutuskan untuk menggunakan Ubuntu 8.04 di PC kantor yang selama ini menggunakan Ubuntu 6.10 yang sudah hampir 2 tahun berjalan di PC tersebut, dan faktor ini juga yang mendukung saya untuk upgrade ke Ubuntu 8.04
Setelah beberapa hari menggunakan Ubuntu 8.04 ada masalah yang timbul, yaitu pada saat setelah login, gnome lama sekali loadingnya. Dan kalaupun berhasil maka akan menampilkan pesan kesalahan seperti ini.
Saya masih menggunakan kata "Search and Replace" karena belum menemukan padanan yang tepat dalam Bahasa Indonesia. Search and Replace adalah fitur yang wajib hukumnya ada di sebuah editor. Dengan fitur ini maka kita dapat dengan mudah mengganti karakter yang kita inginkan dengan karakter penggantinya. Dan tentunya ini sangat membantu pekerjaan kita. Tapi bagaimana jika kita harus mengganti karakter dengan pola yang sama pada banyak dokumen? Apakah kita harus membuka dokumen tersebut satu persatu dari editor dan menggunakan fitur "search and replace"? Cape deh...
Dalam dunia open source siklus rilis dari sebuah sistem operasi bisa dibilang sangat cepat. Seperti Ubuntu sudah melakukan rilis terjadwal walaupun kadang bisa lewat dari jadwal yang dijanjikan. Ubuntu sendiri menjadwalkan rilis setiap 6 bulan sekali.
Menggunakan sistem operasi yang terbaru (dalam artian sistem operasi tersebut masih baru beberapa hari dirilis) memang membawa kebahagiaan sekaligus bencana. Menemukan error dan bugs bahkan google juga belum bisa menjawabnya, itulah yang membuat pusing. Lihat keluhan Okto Silaban dalam migrasinya ke Ubuntu 8.04 dan juga ada teman saya yang ingin kembali lagi ke sistem operasi yang lama karena tidak tahan dengan sistem operasi yang baru.
Mereka ini hanya sebagian kecil dari orang - orang yang kecewa dengan sistem operasi yang baru. Saya yakin masih banyak orang yang juga mengalami hal yang sama. Saya juga pernah mengalaminya, pada saat update dari Ubuntu 6.06 ke Ubuntu 6.10 yang mengakibatkan xorg saya rusak, dan akhirnya saya melakukkan instalasi ulang dan harus mengkonfigurasi ulang sistem operasi yang baru.
Tentu saja ini membuat saya tidak produktif, karena harus menghabiskan waktu untuk mengatasi masalah dan konfigurasi ulang sistem. Sejak saat itu saya tidak mau lagi untuk terburu - buru mengupdate sistem operasi. Kalau memang lagi santai sih tidak masalah, tapi kalau lagi dikejar pekerjaan jangan coba - coba untuk mengupdate sistem operasi. Saya sendiri sekarang ini masih menggunakan Ubuntu 6.10 untuk pekerjaan di kantor, dan menggunakan Debian Etch untuk pekerjaan di rumah.
Dalam membuat aplikasi web, tentunya kita sudah sering menggunakan metode GET dan POST dalam pengiriman data ke web server. Secara gamblang kita bisa menyebutkan perbedaan GET dan POST dari metode pengiriman data yang mereka gunakan. Yang mana dengan GET kita cukup mengirimkan data dengan menambahkannya di URI. Berikut contoh pengiriman data dengan metode GET
http://google.com?q=dolly+aswin+harahap
Dari contoh URI diatas, bisa diartikan bahwa kita mengakses web server google.com dan mengirimkan data melalui variabel q untuk di proses di web server google. Sedangkan untuk metode POST data tidak bisa dikirimkan melalui URI, kita harus mendefenisikan form dengan menggunakan method POST terlebih dahulu. Walaupun kita juga bisa mendefenisikan form dengan metode GET juga. Untuk itu disini saya mencoba menjelaskan perbedaan diantara keduanya lebih detail (maaf kalau ternyata kurang detail juga).
Metode GET Menurut RFC 2616
Dengan menggunakan metode GET, HTTP Client bisa mengambil informasi dari server dengan mengirimkan data melalui URI walaupun bisa juga dengan form yang menggunakan metode GET yang mana ujung - ujungnya duit data tersebut tetap dikirimkan juga melalui URI.
Hasil dari permintaan dengan metode GET dapat bersifat cacheable. Dan metode GET juga memiliki kondisional If-Modified-Since, If-Unmodified-Since, If-Match, If-None-Match, ataupun If-Range yang ditujukan untuk menentukan apakah hasil dari permintaan HTTP Client akan diberikan server atau tidak. Ini bertujuan untuk mengurangi trafik antara HTTP Client dan Server yang mana jika hasil permintaan hasil permintaan tersebut sudah pernah ada di HTTP Client (sudah pernah diminta sebelumnya) maka HTTP Server tidak lagi memberikan permintaan tersebut.
Metode POST Menurut RFC 2616
Metode POST digunakan untuk mengirimkan data dari HTTP Client untuk diproses di HTTP Server, kemudian HTTP server memberikan hasil dari proses tersebut ke HTTP Client. Data yang dikirimkan dengan metode POST disertakan pada baris permintaan (body of request) bukan pada URI. Dan hasil dari permintaan dengan metode POST ini tidak bersifat cacheable.
Contoh Komunikasi HTTP Client dan HTTP Server Dengan Metode GET
Berikut contoh komunikasi antara HTTP Client dan HTTP Server dengan metode GET
GET /info.php?serv=1 HTTP/1.1 Host: localhost User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.3) Gecko/20070310 Iceweasel/2.0.0.3 (Debian-2.0.0.3-1) Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive
HTTP Client meminta HTTP Server milik localhost untuk memberikan hasil dari info.php dengan mengirimkan data serv yang bernilai 1 ke HTTP Client. Setelah mendapat permintaan tersebut HTTP Server menjawab seperti ini:
HTTP/1.x 200 OK Date: Fri, 11 Apr 2008 21:28:40 GMTServer: Apache/2.2.3 (Debian) DAV/2 SVN/1.4.2 mod_python/3.2.10 Python/2.4.4 PHP/5.2.0-8+etch1 mod_ruby/1.2.6 Ruby/1.8.5(2006-08-25) mod_perl/2.0.2 Perl/v5.8.8 X-Powered-By: PHP/5.2.0-8+etch1 Keep-Alive: timeout=15, max=99 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html; charset=UTF-8
Contoh Komunikasi HTTP Client dan HTTP Server Dengan Metode POST
Berikut contoh komunikasi antara HTTP Client dan HTTP Server dengan metode POST.
POST /submit.php HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.3) Gecko/20070310 Iceweasel/2.0.0.3 (Debian-2.0.0.3-1)
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://localhost/submit.php
Content-Type: application/x-www-form-urlencoded
Content-Length: 15
user=dolly&password=dollykerenHTTP Client meminta HTTP Server milik localhost untuk memberikan hasil dari submit.php dengan mengirimkan data user dan password untuk diproses di server kemudian. Setelah mendapat permintaan tersebut HTTP Server menjawab seperti ini:
HTTP/1.x 200 OK Date: Sat, 12 Apr 2008 00:03:00 GMTServer: Apache/2.2.3 (Debian) DAV/2 SVN/1.4.2 mod_python/3.2.10 Python/2.4.4 PHP/5.2.0-8+etch1 mod_ruby/1.2.6 Ruby/1.8.5(2006-08-25) mod_perl/2.0.2 Perl/v5.8.8 X-Powered-By: PHP/5.2.0-8+etch1 Content-Length: 1234 Keep-Alive: timeout=15, max=99 Connection: Keep-Alive Content-Type: text/html; charset=UTF-8
Dari jawaban HTTP Server diatas bisa diartikan bahwa permintaan dari HTTP Client dikabulkan (HTTP/1.1 200 OK). Kemudian HTTP Server memberikan permintaan HTTP Client tadi dan beberapa informasi seperti Date, Server dan selebihnya bisa lihat sendiri diatas.
Sebenarnya beginilah cara web browser (HTTP Client) berkomunikasi dengan web server (HTTP Server) dan ini disembunyikan dari anda. Lho koq bisa ketahuan juga? Caranya gampang, dan anda tidak perlu menjadi blogger hacker untuk mengetahuinya. Untuk web browser mozilla firefox tambahkan saja extension Live HTTP Header, untuk browser yang lain saya kurang tahu. Dan cara yang lebih geek lagi, gunakan telnet :p
Penggunaan Metode GET dan POST Dalam AJAX
Dalam AJAX penggunaan metode GET dan POST sebenarnya juga berbeda[3]. Untuk metode GET kita bisa langsung meminta ke HTTP Server dan mengirimkan data melalui URI. Berikut contoh penggunaan metode POST dalam AJAX:
var url = "get_data.php"; var params = "lorem=ipsum&name=binny"; http.open("POST", url, true); //Send the proper header information along with the request http.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); http.setRequestHeader("Content-length", params.length); http.setRequestHeader("Connection", "close"); http.onreadystatechange = function() { //Call a function when the state changes. if(http.readyState == 4 && http.status == 200) { alert(http.responseText); } } http.send(params);
Sebenarnya beginilah cara penggunaan POST dan GET di dalam AJAX. Dan pada pustaka jQuery penggunaannya sudah lebih gampang tidak seperti ini lagi, sehingga antara metode POST dan GET kelihatannya sama.
Referensi:
[1] http://en.wikipedia.org/wiki/HTTP
[2] http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
[3] www.openjs.com.articles.ajax_xmlhttp_using_post.php
Terkadang kita ingin menampilkan nomor revisi terakhir di dalam dokumen yang kita buat sesuai dengan nomor revisi dari version control yang kita gunakan. Kalau menggunakan CVS cukup dengan menambahkan $Id$ pada dokumen yang kita buat. Maka setelah melakukan commit $Id$ tadi akan diganti menjadi berupa informasi tentang nama dokumen, nomor revisi dan juga waktu commit terakhir.
Kemarin ada teman yang mempunyai masalah pada MySQL Server di mesin Ubuntu miliknya. Setiap MySQL Server dijalankan selalu memberikan pesan kesalahan ERROR 1045 (28000): Access Denied For user 'debian-sys-maint'@'localhost'. Pesan kesalahan ini didapat setelah mengimpor semua data dari MySQL Server yang ada di Windows termasuk database MySQL.
Untuk mencegah duplikasi, maka langsung saja lihat disini. Sengaja saya posting di zendindonesia.com, agar tutorial/tips Zend Framework dalam bahasa Indonesia terkumpul di satu tempat saja.
Sewaktu pertama kali menggunakan Ubuntu ada hal yang aneh, yaitu tidak bisa menggunakan akun root. Bagaimana bisa menggunakan akun root, pada waktu proses instalasi saja tidak ada set password untuk akun root. Ini sangat berbeda dengan distro yang sebelumnya pernah saya gunakan yaitu Fedora. Secara default memang Ubuntu tidak menginzinkan untuk menggunakan akun root. Sebagai alternatifnya bisa menggunakan sudo.
Serialisasi (serialization) adalah suatu teknik di dalam bahasa pemrograman yang digunakan untuk merepresentasikan suatu data/variabel ke dalam string. Ini ditujukan agar data tersebut dapat disimpan di suatu file atau dikirimkan melewati koneksi jaringan ke komputer lain.
Kemarin pagi saya mendapat tugas untuk menginstal LINUX di salah satu PC customer yang akan dijadikan server aplikasi berbasis LAMP. Tentu saja distro yang saya gunakan adalah distro favorit saya yaitu Ubuntu, dan kali ini saya menggunakan Ubuntu Server 7.10.