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=dollykeren
HTTP 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.
Lain halnya dengan Subversion, kita tidak bisa melakukannya hanya dengan menambahkan $Id$ di dalam dokumen yang kita buat. Karena pada Subversion $Id$ merupakan salah satu keyword dari propertynya. Untuk itu kita harus menset property keyword terlebih dahulu untuk bisa menggunakan $Id$. Untuk menset property pada svn gunakan opsi propset dari svn client. Berikut ini contoh perintah untuk menset property keyword Id:
svn propset svn:keywords Id tes.txt
Jika telah menset property Id maka tambahkan $Id$ pada dokumen anda dan kemudian commit. Buka kembali dokumen tadi maka anda akan melihat $Id$ tadi sudah diganti menjadi informasi revisi dari dokumen tersebut.
$Id: tes.txt 11 2008-04-07 23:53:43Z $
Petunjuk di atas cuma bisa menambahkan keyword Id pada dokumen tertentu saja. Untuk menambahkan keyword Id pada setiap dokumen yang ada di dalam direktori cukup dengan menambahkan opsi -R (rekursif) pada saat menset property keyword.
svn propset -R svn:keywords Id [direktori]
Kemudian tambahkan $Id$ pada setiap dokumen yang ada di direktori tersebut. Ada beberapa keyword lain yang bisa digunakan di subversion seperti URL, Author dan LastChangedBy. Untuk lebih jelasnya silahkan lihat help untuk opsi propset dari svn client.
svn help propset
How to improve credit scores
Remind Ringtones
Refinance houses
Credit card applications for bad
Soma
Fixed low apr credit cards
No credit score mortgage
Capital one credit card application in canada
Consolidate student loan debt
Codeine
Instant approval credit cards applications
Instant credit approval cards
Dave Hollister Ringtones
Dynamic ip VPN
Instant approval credit cards
Credit cards online application
Instant approval credit cards for
Debt consolidation lending
Mac os x VPN
Home insurance price
Ultram
How do i get a free credit report
Linksys VPN
Credit report dispute forms
Credit card offer
Credit card offer
Low apr credit cards uk
Diazepam
Renter insurance
Cialis
Personal credit score
Card credit debt plan reduction
Credit report
Small commercial loan
Best creditcard debt reduction strategies
Low apr credit cards
Free Verizon Ringtones
Auto loan
Secured credit card application
Kmart credit card application
Low apr student credit cards
Check credit reports
Instant approval bad credit credit cards
Instant online approval for credit cards
Business card consolidation credit credit debt debt finances
Anonymous internet
First time home loans
Credit card application for people with bad credit
Good credit scores
Best credit report
Instantly instant free online credit report
Apr credit cards
Instant approval credit cards
Home equity mortgage
Maxis Caller Ringtones
Levitra
Nextel Ringtones
Boost your credit score
Credit cards instant approval
Credit report fico score
Best way to eliminate credit card debt
San diego credit score needed to get a mortgage
Tylenol
Ways to improve credit score
Card credit debt debt negotiation reduction service
Canada credit card application
Credit card applications for people
Home equity
Insurance credit score
Scores credit
Firewall and VPN
Credit score uk
Card consumer credit debt stastics
Free debt settlement
Fair credit reporting act of 1970
Effexor
Credit card application instant
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. Pesan ini menunjukkan bahwa akun debian-sys-maint mencoba menggunakan MySQL tetapi gagal dalam melakukan autentikasi.
Ada perlu apa debian-system-maint menggunakan MySQL?
Akun debian-sys-maint digunakan oleh sistem operasi Debian dan anak cucunya untuk melakukan maintenance terhadap MySQL. Yang mana setiap menjalankan MySQL Server maka sistem akan melakukan pengecekan apakah ada database ataupun tabel yang crash apa tidak. Jika ada yang crash maka mysql akan menampilkan proses apa saja yang ada pada MySQL dan juga statusnya. Pengecekan ini diatur pada file /etc/mysql/debian-start yang memanfaatkan tools dari mysql, yaitu mysqlcheck dan mysqladmin.
Kenapa bisa mendapat pesan kesalahan seperti ini?
Seperti sebelumnya yang saya katakan, pesan ini didapat karena akun debian-sys-maint gagal melakukan autentikasi. Hal ini disebabkan beberapa hal, yaitu:
- Tidak adanya akun debian-sys-maint di MySQL disebabkan oleh impor data yang dilakukan. Karena pada data yang sebelumnya (MySQL versi Windows ataupun Sistem Operasi lain) tidak memiliki akun debian-sys-main.
- Tidak cocoknya password debian-sys-maint pada file konfigurasi dengan password MySQL
Konfigurasi dari akun debian-sys-maint sendiri bisa dilihat pada file /etc/mysql/debian.cnf
Bagaimana cara mengatasinya?
Untuk mengatasi masalah ini cukup dengan menset ulang password akun debian-sys-maint diganti dengan password yang ada pada file konfigurasi. Jika akun debian-sys-maint ternyata tidak ada di MySQL maka kita harus membuatnya terlebih dahulu. Untuk melakukannya cukup dengan cara berikut:
$ mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON *.* TO ‘debian-sys-maint’@'localhost’ IDENTIFIED BY ‘password yg ada di file konfigurasi’ WITH GRANT OPTION;
mysql> \q
$ sudo /etc/init.d/mysql restart
Keterangan:
- Pertama - tama kita masuk ke MySQL dengan menggunakan akun root.
- Setelah masuk maka kita menjalankan perintah GRANT ALL … untuk menambahkan akun ataupun menset ulang password debian-sys-maint.
- Keluar dari mysql
- Restart MySQL Server untuk melihat apakah masih ada pesan kesalahan seperti sebelumnya.
Lasix
Instant approval credit cards applications
Client dns openVPN
Buy Diclofenac
Credit card application
Sleepwell
Buying life insurance
Credit card reward offers
Credit reports com
Canada credit card online application
Low fixed interest apr credit cards balance transfers
Order credit reports
Online Viagra Cialis
Tramadol Online
Cozaar
Home insurance uk
Credit score interest rate
Phentermine Online
Secured credit card applications
Free credit report service
VPN download
Popular press article on college credit card debt
Cheap Cipro
Free credit report online no membership
Credit report and scores
Credit score of
Zovirax
Affect credit score
Get credit score
Ansaid
Credit report bureau
Burial insuranceCreditcard debt elimination
Cheap Lisinopril
Voltaren
Avapro
Best credit score
Tylenol
Health care insurance
Credit card debt consolidation
Credit card application bad
Online capital one 0 interest credit card application
Loans credit score
Levitra
Credit rating report
Correcting credit reports
Buy Viagra
Card credit debt option reduction
Cheap Protonix
Boost your credit score
Torn up credit card application
No credit card application
Allegra
Buy Flomax
Xenical
Credit scores online
Purchase auto insurance online
Plendil
Cheap Capoten
Application bad card credit credit unsecured
Coreg
Free Sprint Ringtones
To increase credit score
Cephalexin
Free online credit report no trial offer
Credit score loan
Card credit debt grant help pay
Credit card applications with
Instant free credit report
Chase manhattan credit card application
Free credit report. Com
Credit report gov
Online Nexium
Propecia
Homeowners insurance quotes
Increasing credit scores
Levaquin
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.
Health insurance individual
Improving your credit score
To increase credit score
Credit report no credit card
Contivity VPN
Credit score definition
Free Cingular Ringtones
Boost credit score
No credit instant approval credit cards
Fica credit score
Alprazolam Online
Cleocin
Application card credit online secured
Checkpoint VPN
Glucophage
Low fixed apr credit cards
Buy Clomid
Ultram
Three credit reporting agencies
Imovane
Raise your credit score
Freeze credit reports
Raising credit score
Paydayloan
Buy Zanaflex
Major credit reporting
Fix my credit report
Negotiating settlement credit card debt
Poor credit scores
635 credit score
Anonymous surfing
All 3 credit scores
Credit card application instant approval number
Buy Viagra
Credit cards instant approval access
Mac os x VPN
Cheap Ultram
Transunion free credit report
Instant approval card applications credit cards
Compare auto insurance quote
Credit report with score
Credit reporting companies
Card applications for bad credit
Paydayloan
Credit card transfer offers
Debt consolidation versus credit card payment
Instant capital one low rate credit card application
Ultram
VPN
Cancel credit card debt
Cialis Professional
Low fixed interest apr credit cards balance transfers
How to read credit scores
Search high limit credit cards instant online approval
Secured credit card application
Student loan calculator
Credit cards mwith low apr
Master card credit application
Annual credit report .com
All three credit reports
Free Ringtones
Credit reporting service
Best apr credit cards
Applications for credit cards
Adipex
Student loan reconsolidation
Creditscore
Diazepam
Instant capital one 0 interest credit card application
Lowest fixed apr credit cards
How to get free credit reports
Zovirax
Instant approval balance transfer credit cards
Butalbital
National credit reporting
Verizon Wireless Ringtones
Accept credit card payment
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.
Sudo adalah program yang terdapat di keluarga UNIX yang digunakan untuk menjalankan perintah yang membutuhkan akses dari akun root [1]. Sudo hanya dapat digunakan oleh user yang sudah terdaftar di file /etc/sudoers. Pada saat dijalankan sudo akan meminta password user yang menjalankan sudo tersebut, tetapi bisa juga dibuat untuk meminta password root atau tanpa password sama sekali. Secara default password yang dimasukkan tadi akan disimpan selama 15 menit agar dalam waktu 15 menit kedepan anda tidak perlu lagi memasukkan password jika menggunakan sudo[2].
Kenapa Harus Menggunakan Sudo?
Di keluarga Unix ada super user yang namanya root. Super user ini dapat melakukan apapun terhadap sistem. Melakukan pekerjaan umum dengan menggunakan akun root ini mempunyai resiko yang berbahaya karena jika salah mengetikkan maka akan dapat merusak sistem. Baiknya untuk pekerjaan umum kita menggunakan akun biasa dan menggunakan akun root jika memang sangat diperlukan. Untuk itu sudo diciptakan agar akun biasa dapat menjalankan perintah yang membutuhkan akses dari akun root tanpa harus login lagi dengan akun root. Sudo juga mencatat setiap perintah yang dijalankan dengan menggunakan sudo dan menyimpannya di file /var/log/auth.log. Ini memudahkan kita untuk melakukan track back suatu saat nanti.
Catatan:
Untuk menggunakan sudo, gunakan sudo di depan perintah. Contoh:
sudo apt-get install
Untuk menjalankan aplikasi graphis yang membutuhkan hak akses root di Gnome gunakan gksudo dan untuk KDE gunakan kdesu.
Referensi:
1. http://en.wikipedia.org/wiki/Sudo
2. https://help.ubuntu.com/community/RootSudo
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.
Pada bahasa pemrograman python untuk melakukan serialisasi terhadap suatu objek bisa menggunakan modul pickle ataupun shelve. Dan pada bahasa pemrograman PHP bisa menggunakan fungsi serialize(), dan untuk mengembalikan hasil serialisasi tersebut ke bentuk semula (deserialisasi) menggunakan fungsi unserialize().
Di PHP, hanya variabel dengan tipe data resource yang tidak bisa diserialisasikan. Pada umumnya variable dengan tipe data resource ini merujuk ke suatu objek di luar PHP seperti membuka file ataupun koneksi ke database. Berikut contoh serialisasi untuk variabel dengan tipe data array.
<?php $var = array('satu' => 1, 'dua' => 2); echo serialize($var), PHP_EOL; ?>
Jika dieksekusi maka kode program diatas akan memberikan keluaran berupa string
a:2:{s:4:”satu”;i:1;s:3:”dua”;i:2;}
Untuk mengembalikan bentuk string tersebut menjadi array kembali, maka string tersebut harus di deserialisasi.
<?php $var = unserialize('a:2:{s:4:"satu";i:1;s:3:"dua";i:2;}'); print_r($var); ?>
Jika dieksekusi maka kode program diatas mengembalikan string hasil serialisasi menjadi variable bertipe array kembali.
Array
(
[satu] => 1
[dua] => 2
)
Untuk serialisasi variabel bertipe object, maka class dari object tersebut harus diikut sertakan ke dalam kode program. Jika tidak maka hasil deserialisasi tidak akan mengenali class dari object tersebut dan menganggapnya sebagai __PHP_Incomplete_Class. Untuk lebih jelasnya bisa melihat contoh dibawah ini:
File halo.php
<?php class Halo { var $halo; var $dunia; function __construct() { $this->setHalo(); $this->setDunia(); } function halodunia() { echo $this->halo, ' ', $this->dunia, PHP_EOL; } function setHalo() { $this->halo = 'halo'; } function setDunia() { $this->dunia = 'dunia'; } } ?>
File serialize-object.php
<?php include 'halo.php'; $class = new Halo(); $serialize = serialize($class); if ($fp = fopen('object.txt', 'w+')) { fwrite($fp, $serialize); fclose($fp); } ?>
File unserialize-object.php
<?php include 'halo.php'; if ($fp = fopen('object.txt', 'r')) { $serialize = fread($fp, 4096); fclose($fp); $class = unserialize($serialize); $class->halodunia(); } ?>
Penjelasan Kode Program
Pada file serialize-object.php kode program membuat instan dari class Halo dan menyimpannya kedalam object. Kemudian object tersebut diserialisasi, dan hasil dari serialisasi tersebut disimpan kedalam file object.txt. Agar object tersebut bisa digunakan kembali di file lain, maka pada file unserialize-object.php kode program mengambil hasil serialisasi tersebut dan menjadikannya object kembali. Setelah menjadi object, maka kita bisa mengakses method halodunia();
Dengan melihat contoh kode program diatas maka akan lebih mudah untuk mengerti bagaimana sebenarnya penggunaan serialisasi. Contoh lain dari penggunaan serialisasi di PHP adalah pada penanganan session. Variabel yang didaftarkan di session akan diserialisasi, dan hasil dari serialisasi tersebut kemudian disimpan di dalam file di server.
Referensi :
- http://en.wikipedia.org/wiki/Serialization
- http://id2.php.net/serialize
- http://id2.php.net/unserialize
- http://id2.php.net/manual/en/ref.session.html
- David Sklar, Adam Trachtenberg “PHP Cookbook, 2nd Edition”, Agustus 2006
- Elliot White III, Jonathan Eisenhamer “PHP 5 in Practice”, July 11, 2006
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.
Karena proses instalasi yang sambilan dan saya juga ada kerjaan lain pada saat itu, saya lupa untuk menset zona waktu dari Ubuntu Server tersebut dan hanya memilih zona waktu default pada saat instalasi.
Karena zona waktu yang tidak sesuai dengan zona waktu yang biasa digunakan yaitu (Asia/Jakarta) maka setelah proses instalasi selesai saya ingin mengganti zona waktu di Ubuntu Server tersebut. Awalnya bingung juga bagaimana cara mengganti zona waktu tersebut menggunakan command line, karena Ubuntu Server tidak menginstal paket Desktop. Berkat bantuan google maka masalah ini dapat diatasi dengan perintah dpkg-reconfigure tzdata
$ sudo dpkg-reconfigure tzdata


Untuk pengaturan zona waktu melalui Desktop dapat dilakukan dengan mudah. Cukup dengan:
- Klik kanan pada jam yang ada di panel.
- Pilih “Adjust Date & Time”
- Kemudian pilih zona waktu dengan mengklik tombol “Select Time Zone”. Pemilihan zona waktu dapat dilakukan dengan mengklik peta ataupun memilih list zona waktu yang ada dibawah.
- Jika sudah memilih zona waktu, maka klik tombol “Close” kemudian klik tombol “OK”.
Pada sistem operasi debian dan turunannya, instalasi Apache 2 dan PHP 5 sangat mudah dilakukan. Cukup dengan
sudo apt-get install apache2 php5
Dengan perintah ditas maka Apache 2 dan PHP 5 akan diinstall ke dalam sistem operasi dan juga langsung dikonfigurasi agar bisa bekerja sama.
Masalah yang sering terjadi adalah Apache tetap saja tidak mengenali PHP dan setiap mengakses file php lewat http maka Apache akan mengkonfirmasi apakah file PHP tersebut ingin diunduh apa tidak. Hal ini bisa disebabkan terjadinya error pada saat instalasi, ataupun paket libapache2-mod-php5 yang diunduh sebelumnya rusak.
Agar PHP 5 yang sudah diinstall tadi bisa bekerja sama dengan Apache 2 maka PHP 5 harus dikonfigurasi ulang dan paket libapache2-mod-php5 dibuang terlebih dahulu. Untuk melakukannya bisa mengikuti langkah - langkah berikut:
sudo a2dismod php5
Non aktifkan modul PHP5 yang sudah diaktifkan sebelumnya.
sudo /etc/init.d/apache2 force-reload
Reload Apache 2, untuk membuang modul PHP5 dari konfigurasinya.
sudo apt-get remove libapache2-mod-php5
Buang paket libapache2-mod-php5 dari sistem operasi
sudo apt-get clean
Perintah ini akan membuang paket - paket yang sudah didownload sebelumnya dari cache apt-get. Jadi untuk instalasi berikutnya tidak mengambil paket dari cache tapi akan langsung dari repository.
sudo apt-get install libapache2-mod-php5
Perintah ini akan menginstalasi kembali paket libapache2-mod-php5
sudo a2enmod php5
Aktifkan kembali modul php5 untuk Apache 2
sudo /etc/init.d/apache2 force-reload
Reload Apache 2, untuk mengaktifkan konfigurasi modul Apache 2
Dengan menjalankan perintah - perintah diatas maka Apache 2 akan mengenali PHP, dan mengeksekusi PHP jika ada request ke file PHP dari http.
Catatan:
a2enmod adalah aplikasi yang digunakan untuk mengaktifkan modul - modul di Apache 2 dan bisa digunakan untuk mengaktifkan modul - modul lainnya seperti mod_rewrite, mod_proxy dan lain - lain. Aplikasi ini hanya ada di sistem operasi Debian dan turunannya.
a2dismod adalah aplikasi yang digunakan untuk menonaktifkan modul - modul yang sudah aktif di Apache 2. Sama sperti a2enmod aplikasi ini dapat digunakan untuk menonaktifkan modul - modul yang lain dan juga hanya tersedia untuk sistem operasi Debian dan turunannya
Tautan Terkait:
Apache MySQL PHP
Password adalah hal yang sangat penting dalam melakukan autentikasi. Password ini digunakan untuk meyakinkan mesin/komputer bahwa yang memberikan password dengan benar adalah yang berhak mengakses aplikasi/sistem yang dilindungi oleh autentikasi tadi. Begitu juga jika kita melakukan remote ke mesin lain. Mesin yang diakses akan meminta password, dan jika password yang kita berikan salah maka kita tidak diizinkan melakukan remote ke mesin tersebut.
Jika mesin yang anda remote jumlahnya sedikit, memasukkan password bukan merupakan suatu masalah. Tapi jika mesin yang anda remote jumlahnya banyak, dan ini dilakukan secara berulang - ulang, maka memasukkan password bisa menjadi masalah baru dan juga hal yang sangat membosankan. Ditambah lagi kita harus mengigat password yang berbeda untuk setiap mesin.
Untuk mengatasi masalah tersebut kita bisa menggunakan aplikasi ssh-keygen. Dengan aplikasi ini kita bisa melakukan remote ke mesin lain melalui ssh tanpa harus memasukkan password. Aplikasi ini bukanlah hal yang baru bagi sistem administrator. Saya sendiri sudah lama menggunakan aplikasi ini (walaupun saya bukan seorang sistem administrator). Kebetulan kemarin saya harus menggunakan aplikasi ini kembali dan mengingatkan saya untuk menuliskannya di blog ini. Mudah - mudahan bisa menjadi petunjuk buat orang yang belum mengetahuinya. Berikut contoh penggunaan sederhana dari aplikasi ssh-keygen.
dolly@dolly:~$ ssh-keygen -t dsa
Maka akan menghasilkan keluaran berikut
Generating public/priva$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/dolly/.ssh/id_dsa):
Tekan enter lagi
Your identification has been saved in /home/dolly/.ssh/id_dsa.
Your public key has been saved in /home/dolly/.ssh/id_dsa.pub.
The key fingerprint is:
ee:48:13:ed:1f:49:45:14:10:a2:31:91:d5:d0:19:61 dolly@dolly
Sesuai dengan informasi di atas, ssh-keygen telah membuat file id_dsa dan id_dsa.pub di ~/.ssh. Salin file id_dsa.pub ke mesin tujuan dan ubah nama filenya menjadi authorized_keys.
dolly@dolly:~$ scp ~/.ssh/id_dsa.pub dolly@remote:~/.ssh/authorized_keys
Mesin tujuan akan meminta password untuk menerima file yang dikirim melalui scp. Karena kita sudah mempunyai file id_dsa.pub, maka untuk login ke mesin lain kita tinggal menyalin file tersebut ke mesin - mesin lainnya. Jika file sudah berhasil disalin ke mesin tujuan, maka anda sudah bisa melakukan remote ke mesin tujuan tanpa memasukkan password.
dolly@dolly:~$ ssh dolly@remote
Koq bisa login tanpa password?
Sewaktu kita mengirimkan request untuk melakukan remote ke mesin tujuan, maka ssh akan melakukan pengecekan antara data key yang ada di mesin lokal (~/.ssh/id_dsa) dengan key yang ada di mesin tujuan (~/.ssh/authorized_keys)
Anda bisa melakukan remote tanpa password ke mesin tujuan hanya terbatas pada mesin yang sudah anda buat file id_dsa nya saja. Jika anda melakukan remote ke mesin tujuan dari mesin lain, maka mesin tujuan akan tetap meminta password. Untuk itu anda harus membuat file id_dsa di setiap mesin yang anda gunakan untuk remote ke mesin tujuan. Untuk membuat file id_dsa, caranya sama dengan sebelumnya. Hanya saja cara menyalain file id_dsa.pub yang berbeda.
Untuk menyalin file id_dsa.pub ke mesin tujuan tidak bisa lagi menggunakan cara sebelumnya, karena cara itu akan mereplace/mengganti file authorized_keys yang sudah ada. Untuk menyalin file tersebut bisa menggunakan cara berikut:
dolly@office:~$ scp id_dsa.pub dolly@remote:~/.ssh/id_dsa.pub
dolly@office:~$ ssh dolly@remote
Mesin tujuan akan meminta password. Masukkan password, dan jika benar maka kita akan bisa masuk ke server tujuan
dolly@office:~$ echo ” ” >> ~/.ssh/authorized_keys
dolly@office:~$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
Logout dari mesin tujuan (ctrl + d), kemudian remote lagi ke mesin tujuan maka mesin tujuan tidak akan meminta password lagi.
dolly@office:~$ ssh dolly@remote
Dengan mengikuti petunjuk - petunjuk diatas, anda sudah bisa melakukan remote ke mesin lain tanpa password dengan menggunakan ssh. Untuk penggunaan yang lebih lanjut/advance, anda bisa membaca manual dari ssh-keygen.
Catatan:
Saya asumsikan di komputer anda sudah terinstall aplikasi ini, jika belum ada anda harus menginstallnya terlebih dahulu.