<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>salman.or.id</title>
	<atom:link href="http://blog.salman.or.id/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.salman.or.id</link>
	<description>a step a day</description>
	<lastBuildDate>Sat, 10 Sep 2011 01:19:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Mercurial 101: Install dan Gunakan Saat Ini Juga</title>
		<link>http://blog.salman.or.id/2010/linux/mercurial-101-install-dan-gunakan-saat-ini-juga</link>
		<comments>http://blog.salman.or.id/2010/linux/mercurial-101-install-dan-gunakan-saat-ini-juga#comments</comments>
		<pubDate>Sat, 10 Jul 2010 19:56:59 +0000</pubDate>
		<dc:creator>salman</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[hg]]></category>
		<category><![CDATA[mercurial]]></category>
		<category><![CDATA[versioning system]]></category>

		<guid isPermaLink="false">http://blog.salman.or.id/?p=329</guid>
		<description><![CDATA[Sedikit pengantar, mercurial adalah sistem manajemen source code untuk kolaborasi pekerjaan dan pelacakan perubahan. Utamanya digunakan oleh para pembuat program. Perangkat lunak ini dibuat berbasis bahasa pemrograman python dan sedikit C untuk alasan kecepatan. Sudah terdapat beberapa sistem manajemen source code seperti ini, misalnya: Concurrent Versions System (CVS), Subversion (SVN), Bazaar (bzr), Git, dan beberapa [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>Sedikit pengantar, mercurial adalah sistem manajemen source code untuk kolaborasi pekerjaan dan pelacakan perubahan. Utamanya digunakan oleh para pembuat program. Perangkat lunak ini dibuat berbasis bahasa pemrograman python dan sedikit C untuk alasan kecepatan.</p>
<p>Sudah terdapat beberapa sistem manajemen source code seperti ini, misalnya: <a href="http://www.nongnu.org/cvs">Concurrent Versions System (CVS)</a>, <a href="http://subversion.tigris.org/">Subversion (SVN)</a>, <a href="http://bazaar.canonical.com/">Bazaar (bzr)</a>, <a href="http://git-scm.com/">Git</a>, dan beberapa yang lain. Lihat di <a href="http://en.wikipedia.org/wiki/Comparison_of_revision_control_software">Comparison of revision control software</a></p>
<p>Masing-masing Versioning System mempunyai kelebihan dan kekurangan. Jadi kenapa saya memilih mercurial, sederhana: saya belum terlalu dalam menggunakan CVS dan <a href="http://salman.or.id/linux/singkat-dengan-subversion.html">SVN</a> dan saat ini sedang fokus di bahasa pemrograman python. Jadi mercurial ada pilihan wajar saat ini. Selain itu namanya keren, &#8220;scientist&#8221; banget.</p>
<p>Karena mercurial dibuat menggunakan python bisa dipastikan bisa berjalan di sistem operasi selain GNU/Linux. Dalam tulisan ini dibahas menggunakan sistem operasi GNU/Linux, yaitu distribusi Debian Lenny.</p>
<p>Setelah selesai membaca tulisan ini anda akan bisa menggunakan mercurial untuk melacak perubahan kode sumber yang sedang anda kerjakan. Bekerja sendirian tanpa kolaborasi dengan programmer lain.<span id="more-329"></span></p>
<p>Langkat pertama instalasi software. Login sebagai user &#8216;root&#8217; dan jalankan perintah:</p>
<pre>neon:~# apt-get install mercurial</pre>
<p>Logout dari user &#8216;root&#8217;, dan buat file konfigurasi sederhana di home direktori dengan nama file .hgrc,</p>
<pre>salman@neon:~$ vi ~/.hgrc</pre>
<p>Isi file adalah, sesuaikan dengan username pilihan anda.</p>
<pre>[ui]
username = salman</pre>
<p>Setelah selesai masuk ke direktori kerja anda. Sebagai contoh saya sedang mengerjakan skrip dalam direktori sendsms/ di home direktori.</p>
<pre>salman@neon:~$ cd ~/sendsms/
salman@neon:~/sendsms$ hg init</pre>
<p>Kemudian tambahkan file-file dalam direktori ini ke dalam database repository mercurial.</p>
<pre>salman@neon:~/sendsms$ hg add
adding sendsms.php
adding sendsms.py</pre>
<p>Untuk benar-benar menyimpan gunakan perintah,</p>
<pre>salman@neon:~/sendsms$ hg commit</pre>
<p>Layar anda akan dibawa ke text editor, isikan komentar apapun sesuai dengan perubahan yang anda lakukan. Baris-baris yang diawali dengan <em>HG:</em> akan diabaikan.</p>
<p>Sekarang waktunya bekerja dengan kode sumber anda. Dan setelah selesai, anda bisa mengetahui apakah ada perubahan atau belum. Dalam contoh ini saya telah mengedit file sendsms.py.</p>
<pre>salman@neon:~/sendsms$ hg status
M sendsms.py</pre>
<p>Artinya telah terjadi perubahan pada skrip yang disebutkan.</p>
<p>Untuk mengetahui perubahan yang terjadi bisa digunakan perintah hg diff, seperti contoh ini:</p>
<pre>salman@neon:~/sendsms$ hg diff
diff -r f0e47563398e sendsms.py
--- a/sendsms.py        Sun Jul 11 02:38:34 2010 +0700
+++ b/sendsms.py        Sun Jul 11 02:44:42 2010 +0700
@@ -1,4 +1,6 @@
 #!/usr/bin/env python
+#xmlrcp client untuk mengirim sms ke server
+
 import xmlrpclib
 import time</pre>
<p>Untuk menyimpan perubahan gunakan perintah hg commit kembali.</p>
<pre>salman@neon:~/sendsms$ hg commit</pre>
<p>Terakhir untuk mengetahui perubahan, bisa menggunakan perintah berikut,</p>
<pre>salman@neon:~/sendsms$ hg log
changeset:   1:bd4f4c11ea17
tag:         tip
user:        salman
date:        Sun Jul 11 02:48:22 2010 +0700
summary:     Mebambah komentar pada sendsms.py

changeset:   0:f0e47563398e
user:        salman
date:        Sun Jul 11 02:38:34 2010 +0700
summary:     Initial repository.</pre>
<p>Sejarah perubahan akan ditampilkan perubahan terakhir di baris paling atas.</p>
<p>Selamat bekerja menggunakan mercurial</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.salman.or.id/2010/linux/mercurial-101-install-dan-gunakan-saat-ini-juga/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Menolak Email pada Postfix/Zimbra</title>
		<link>http://blog.salman.or.id/2010/linux/menolak-email-pada-postfixzimbra</link>
		<comments>http://blog.salman.or.id/2010/linux/menolak-email-pada-postfixzimbra#comments</comments>
		<pubDate>Fri, 18 Jun 2010 23:45:31 +0000</pubDate>
		<dc:creator>salman</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mail Server]]></category>
		<category><![CDATA[Zimbra]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[zimbra]]></category>

		<guid isPermaLink="false">http://blog.salman.or.id/?p=324</guid>
		<description><![CDATA[Beberapa waktu terkini, saya mendapat keluhan dari user mail server yang saya pelihara. Email-email tidak jelas masuk ke inbox mereka. Setelah saya pelajari salinan email yang dimaksud, tampak jelas bahwa email tidak terkirim dari email server kami. Akan tetapi berasal dari email server di luar. Tujuan dan asal email memang ke arah domain klien saya [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>Beberapa waktu terkini, saya mendapat keluhan dari user mail server yang saya pelihara. Email-email tidak jelas masuk ke inbox mereka. Setelah saya pelajari salinan email yang dimaksud, tampak jelas bahwa email tidak terkirim dari email server kami. Akan tetapi berasal dari email server di luar. Tujuan dan asal email memang ke arah domain klien saya tersebut. Jadi sekiranya email tersebut tidak sampai ke tujuan, pasti akan berbalik ke arah email server kami.</p>
<p>Solusi yang dijelaskan disini meski berbasis <em>Zimbra</em>, jelas bisa diterapkan pada sistem lain yang menggunakan <em>Postfix</em>. Karena kita tahu <em>Zimbra</em> menggunakan <em>Postfix</em> sebagai MTA (<em>Mail Transfer Agent</em>).</p>
<p>Kembali ke masalah yang sedang kita bahas. Email-email tersebut mempunyai pola Subject yang mengandung kata &#8220;VIAGRA&#8221;. Meski keseluruhan subject berubah-ubah sesuai dengan alamat email yang dikirimi. Misalnya isi <em>Subject</em>-nya &#8220;blah VIAGRA Official Site -96%&#8221;, yang dikirim ke email blah@domain.com.</p>
<p>Dengan pola tersebut, diputuskan untuk menolak semua email dengan subject yang berisi kata &#8220;VIAGRA&#8221;.<span id="more-324"></span></p>
<p>Setelah menelusuri dokumentasi <em>Postfix</em> ditemukan keyword setelan <em>header_checks</em>. Setelan ini akan mencari pola yang ada pada <em>header</em> email sesuai dengan pola yang kita tentukan dan akan menjalankan aksi tertentu jika pola ditemukan.</p>
<p>Format file filter ini adalah:</p>
<pre>/POLA/  AKSI    OPSI</pre>
<p>Langkah pertama adalah membuat file filter.</p>
<pre>mail:~# su - zimbra
zimbra@mail:~$ vi /opt/zimbra/conf/header_checks</pre>
<p>Nama dan lokasi file tidak wajib seperti ini, asalkan Anda menyesuaikan setelan <em>Postfix</em>. Isi file /opt/zimbra/conf/header_checks adalah:</p>
<pre>/^Subject:.*VIAGRA/ REJECT "Your email rejected since has VIAGRA in its Subject."</pre>
<p>Tambahkan filter ini ke dalam konfigurasi <em>Postfix</em>.</p>
<pre>zimbra@mail:~$ zmlocalconfig -e \
postfix_header_checks="pcre:/opt/zimbra/conf/postfix_header_checks, \
pcre:/opt/zimbra/conf/header_checks"</pre>
<p>Atau dengan mengedit langsung file setelannya dengan perintah:</p>
<pre>zimbra@mail:~$ vi /opt/zimbra/postfix/conf/main.cf</pre>
<p>Kemudian tambahkan atau edit sehingga berisi baris berikut ini:</p>
<pre>header_checks =
    pcre:/opt/zimbra/conf/postfix_header_checks,
    pcre:/opt/zimbra/conf/header_checks</pre>
<p>Perhatikan awalan <em>pcre</em>, ini memberitahkan pada <em>Postfix</em> bahwa file filter berisi pola yang mengikuti aturan PCRE (<em>Perl Compatible Regular Expressions</em>).</p>
<p>Setelah selesai reload setelan yang baru.</p>
<pre>zimbra@mail:~$ zmmtactl reload</pre>
<p>Untuk <em>Postfix</em>,</p>
<pre>mail:~# /etc/init.d/postfix reload</pre>
<p>Selesai sudah, cek dengan mengirim email dengan isi <em>Subject</em> sesuai dengan filter yang dimaksud. Dan perhatikan file log /var/log/mail.log.</p>
<p>Contoh log sebagai berikut,</p>
<pre>Jun  8 23:38:17 mail postfix/cleanup[24935]: 75AAAAF0027: reject: header
Subject: nurmala VIAGRA ? Official Site -91% from
122-116-208-230.HINET-IP.hinet.net[122.116.208.230]; from= to= proto=SMTP
helo=: 5.7.1 "Your email rejected since has VIAGRA in its Subject."
Jun  8 23:38:17 mail postfix/cleanup[24936]: 93D19AF0030: reject: header
Subject: nurmala.dewi VIAGRA ? Official Site -91% from
122-116-208-230.HINET-IP.hinet.net[122.116.208.230]; from= to= proto=SMTP
helo=: 5.7.1 "Your email rejected since has VIAGRA in its Subject."</pre>
<p>Selesai. Semoga bermanfaat.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.salman.or.id/2010/linux/menolak-email-pada-postfixzimbra/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Memulai Postgresql</title>
		<link>http://blog.salman.or.id/2010/database/memulai-postgresql</link>
		<comments>http://blog.salman.or.id/2010/database/memulai-postgresql#comments</comments>
		<pubDate>Mon, 14 Jun 2010 03:26:43 +0000</pubDate>
		<dc:creator>salman</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Postgresql]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[postgresql]]></category>

		<guid isPermaLink="false">http://blog.salman.or.id/?p=315</guid>
		<description><![CDATA[Setelah terjadi hiruk pikuk alih tangan MySQL pada saat ingin fokus menggunakan MySQL, membuat saya berpikir untuk kembali fokus dengan database server PostgreSQL. Dengan pertimbangan masa depan yang menurut saya kurang bagus buat MySQL. Ini adalah kejadian yang ketiga setelah saya beralih dari distribusi GNU/Linux RedHat/Fedora ke Mandrake/Mandriva, dan kemudian ke Debian. Dengan alasan yang [...]]]></description>
			<content:encoded><![CDATA[<p>Setelah terjadi hiruk pikuk alih tangan MySQL pada saat ingin fokus menggunakan MySQL, membuat saya berpikir untuk kembali fokus dengan database server PostgreSQL. Dengan pertimbangan masa depan yang menurut saya kurang bagus buat MySQL. Ini adalah kejadian yang ketiga setelah saya beralih dari distribusi GNU/Linux RedHat/Fedora ke Mandrake/Mandriva, dan kemudian ke Debian. Dengan alasan yang sama tentunya. Masa depan yang sepertinya gak terlalu bagus.</p>
<p>Beberapa tahun saya telah mengunakan dua database utama yaitu MySQL dan PostgreSQL. Namun tidak pernah membuat dokumentasi masing-masing. Sekarang saat yang tepat untuk segera membuat dokumentasi. Agar mudah mencari apa yang telah saya kerjakan, daripada mencari dalam lautan database mesin pencari di Internet. Selain itu agar bermanfaat pula bagi orang lain.</p>
<p>Fitur-fitur penting dijelaskan di website <a href="http://www.postgresql.org/about/">postgresql</a>. Tapi seingat saya, PosgreSQL mempunyai fitur yang jauh di atas MySQL di awal-awal tahun 2000-an. Untuk kondisi sekarang belum membandingkan, karena MySQL sudah sedemikian maju. Dan saya baru mulai menggunakan PosgreSQL lagi.<span id="more-315"></span></p>
<h2>Server Saya Belum Terpasang PosgreSQL</h2>
<p>PosgreSQL belum terpasang di <a href="http://salman.or.id/hardware/gateway.html">server high-end</a> saya di data center. Iyes. Selama Anda menggunakan Debian, aman. Tinggal jalankan perintah:</p>
<pre>kripton:~# apt-get install postgresql-8.3</pre>
<p>Jawab dengan huruf &#8220;Y&#8221; jika pertanyaan konfirmasi seperti ini &#8220;Do you want to continue [Y/n]?&#8221; muncul. Instalasi ini akan menggunakan ruang harddisk sekitar 20MB. Sangat kecil dibanding dengan ukuran harddisk yang sudah ratusan gigabyte. Tentu saja ruang yang digunakan akan membesar seiring dengan tumbuhnya database Anda.</p>
<p>Tunggu beberapa saat ketika muncul pesan &#8220;Creating new cluster&#8230;.&#8221;. Proses ini agak lama, karena PostgreSQL sedang mempersiapkan infrastruktur database awal.</p>
<p>Karena sistem kebergantungan pada Debian, otomatis akan diinstal juga paket-paket: postgresql-client-8.3, postgresql-client-common, dan postgresql-common.</p>
<p>Jika diperlukan Anda juga bisa menginstall paket tambahan: oidentd, ident-server, dan postgresql-doc-8.3.</p>
<h2>Membuat User Baru</h2>
<p>Pertama kali PostgreSQL diinstall, hanya terdapat satu user yaitu &#8220;postgres&#8221;. User ini sama dengan user sistem yang menjalankan server database PostgreSQL. Perlu diketahui, user management di PostgreSQL terpisah dari user management sistem operasi. User postgres ini adalah user administrator server database. Untuk membuat user yang lain kita harus login menggunakan user ini.</p>
<p>Untuk mengakses server database bisa digunakan program yang bernama &#8220;psql&#8221;. Program ini adalah program antar muka klien sederhana berbasis text. Ada beberapa antarmuka klien lain yang bisa didapatkan seperti <a href="http://www.pgadmin.org/">pgadmin</a>, <a href="http://www.sqlmaestro.com/products/postgresql/maestro/"> PostgreSQL Maestro</a>, <a href="http://www.sqlmanager.net/en/products/studio/postgresql">EMS SQL Management Studio for PostgreSQL</a>, <a href="http://www.navicat.com/en/products/navicat_pgsql/pgsql_overview.html">Navicat</a>, maupun <a href="http://phppgadmin.sourceforge.net/">phpPgAdmin</a>. Tapi bagi saya program bawaan PostgreSQL ini sudah cukup, gak perlu repot-repot menginstall program lain.</p>
<pre>kripton:~# su - postgres
postgres@kripton:~$ psql
Welcome to psql 8.3.11, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

postgres=# CREATE USER dbuser WITH PASSWORD 'dbpass';
CREATE ROLE
postgres=# \du
                               List of roles
 Role name | Superuser | Create role | Create DB | Connections | Member of
-----------+-----------+-------------+-----------+-------------+-----------
 dbuser    | no        | no          | no        | no limit    | {}
 postgres  | yes       | yes         | yes       | no limit    | {}
(2 rows)

postgres=#</pre>
<p>Ya user &#8220;dbuser&#8221; dengan password &#8216;dbpass&#8217; telah selesai dibuat. Tidak sesulit yang dibayangkan. Untuk keluar dari program klien ini gunakan perintah seperti ini:</p>
<pre>postgres=# \q</pre>
<p>Untuk menggunakan user yang telah dibuat, gunakan perintah seperti ini:</p>
<pre>postgres@kripton:~$ psql -Udbuser template1 -h localhost
Password for user dbuser:
Welcome to psql 8.3.11, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)

template1=&gt;</pre>
<h2>Membuat dan Mengakses Database</h2>
<p>Untuk bisa membuat database user harus punya hak akses, secara default user &#8216;postgres&#8217; adalah user administrator yang mempunyai akses ke server database tidak terbatas. Dan user yang telah kita buat sebelumnya tidak punya hak untuk membuat database.</p>
<p>Sekarang kita akan membuat database &#8216;worklog&#8217; dan memberikan hak akses sepenuhnya terhadap user &#8216;dbuser&#8217;,</p>
<pre>postgres=# CREATE DATABASE worklog;
CREATE DATABASE
postgres=# GRANT ALL ON DATABASE worklog TO dbuser;
GRANT
postgres=#</pre>
<p>Untuk mengakses ke database gunakan perintah seperti ini:</p>
<pre>postgres@kripton:~$ psql -Udbuser worklog -h localhost
Password for user dbuser:
Welcome to psql 8.3.11, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)

worklog=&gt;</pre>
<p>Voila. Anda sudah terhubung dengan database worklog.</p>
<h2>Refferensi:</h2>
<p><a href="http://www.postgresql.org/docs/8.3/interactive/index.html">PostgreSQL Manuals</a></p>
<p>Selesai.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salman.or.id/2010/database/memulai-postgresql/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mengaktifkan Web Server Lighttpd</title>
		<link>http://blog.salman.or.id/2010/linux/mengaktifkan-web-server-lighttpd</link>
		<comments>http://blog.salman.or.id/2010/linux/mengaktifkan-web-server-lighttpd#comments</comments>
		<pubDate>Sun, 13 Jun 2010 07:24:15 +0000</pubDate>
		<dc:creator>salman</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Web Server]]></category>
		<category><![CDATA[lighttpd]]></category>

		<guid isPermaLink="false">http://blog.salman.or.id/?p=300</guid>
		<description><![CDATA[Deskripsi mengenai Lighttpd yang bisa didapat dari website resminya adalah: &#8221; Security, speed, compliance, and flexibility &#8212; all of these describe lighttpd (pron. lighty) which is rapidly redefining efficiency of a webserver; as it is designed and optimized for high performance environments. With a small memory footprint compared to other web-servers, effective management of the [...]]]></description>
			<content:encoded><![CDATA[<p>Deskripsi mengenai Lighttpd yang bisa didapat dari <a href="http://www.lighttpd.net/">website resminya</a> adalah:</p>
<blockquote><p>&#8221; Security, speed, compliance, and flexibility &#8212; all of these describe lighttpd (pron. lighty) which is rapidly redefining efficiency of a webserver; as it is designed and optimized for high performance environments. With a small memory footprint compared to other web-servers, effective management of the cpu-load, and advanced feature set (FastCGI, SCGI, Auth, Output-Compression, URL-Rewriting and many more) lighttpd is the perfect solution for every server that is suffering load problems. And best of all it&#8217;s Open Source licensed under the revised BSD license. &#8220;</p></blockquote>
<p>Catatan ini adalah rekaman yang sempat saya buat ketika membuat aplikasi berbasis web dengan menggunakan bahasa skripting python.</p>
<h3>Instalasi</h3>
<p>Seperti biasa, cara menginstall perangkat lunak di distribusi Debian sangat mudah:</p>
<pre>kripton:~# apt-get install lighttpd
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
  rrdtool
The following NEW packages will be installed:
  lighttpd
0 upgraded, 1 newly installed, 0 to remove and 53 not upgraded.
Need to get 0B/308kB of archives.
After this operation, 930kB of additional disk space will be used.
Selecting previously deselected package lighttpd.
(Reading database ... 23730 files and directories currently installed.)
Unpacking lighttpd (from .../lighttpd_1.4.19-5+lenny1_i386.deb) ...
Processing triggers for man-db ...
Setting up lighttpd (1.4.19-5+lenny1) ...
Starting web server: lighttpd.</pre>
<p>Jika di akhir instalasi ditemui pesan seperti ini:</p>
<pre>Starting web server: lighttpd2010-06-13 12:34:14: (network.c.300) can't bind
to port:  80 Address already in use
 failed!
invoke-rc.d: initscript lighttpd, action "start" failed.</pre>
<p>Berarti ada web server yang telah menggunakan port 80. Dan biasanya adalah Apache. Anda dapat menghapus Apache dari sistem atau menonaktifkan, jika suatu saat memerlukan tidak perlu menginstall ulang.</p>
<p>Untuk menghapus Apache dari sistem:</p>
<pre>kripton:~# apt-get --purge remove apache2</pre>
<p><span id="more-300"></span>Untuk menonaktifkan Apache:</p>
<pre>kripton:~# /etc/init.d/apache2 stop
kripton:~# update-rc.d -f apache2 remove</pre>
<p>Kemudian aktifkan kembali lighttpd.</p>
<pre>kripton:~# /etc/init.d/lighttpd start
Starting web server: lighttpd.</pre>
<h3>Setelan Default</h3>
<ul>
<li>File konfigurasi di /etc/lighttpd dan direktori di bawahnya.</li>
<li>DocumentRoot dimana file-file html harus diletakkan adalah /var/www.</li>
<li>Skrip-skrip CGI di /usr/lib/cgi-bin, dimana distribusi Debian meletakkan skrip-skrip CGI.</li>
<li>File-file log di /var/log/lighttpd, dan akan dirotasi seminggu sekali. Bisa diubah di file /etc/logrotate.d/lighttpd.</li>
<li>Default directory index adalah index.html, sehingga jika pengguna mengakses http://salman.info.tm, maka dokument html yang dirujuk adalah /var/www/index.html. Demikian juga jika yang diakses adalah http://salman.info.tm/blah/, maka dokumen yang dirujuk adalah /var/www/blah/index.html.</li>
</ul>
<p>Setelah itu coba akses dengan web browser Anda.</p>
<div id="attachment_311" class="wp-caption aligncenter" style="width: 1014px"><a href="http://blog.salman.or.id/wp-content/uploads/2010/06/lighttpd-placeholder.png"><img class="size-full wp-image-311" title="lighttpd-placeholder" src="http://blog.salman.or.id/wp-content/uploads/2010/06/lighttpd-placeholder.png" alt="Lighttpd Welcome Page." width="1004" height="749" /></a><p class="wp-caption-text">Lighttpd Welcome Page.</p></div>
<p>Ya! Anda berhasil.</p>
<h3>Mengubah Kebiasaan</h3>
<p>Alih-alih menggunakan setelan default, kita akan membuat lingkungan baru untuk mempermudah pemahaman atau menyesuaikan dengan proyek yang sedang kita kerjakan. Di akhir tulisan ini kita akan mendapatkan hal-hal berikut:</p>
<ul>
<li>DocumentRoot berada pada direktori /var/www/salman.info.tm/html</li>
<li>Direktori index adalah index.html dan index.php</li>
<li>Program-program CGI ada dalam direktori /var/www/salman.info.tm/cgi-bin</li>
</ul>
<p>Langkah pertama adalah persiapkan direktori dan file yang diperlukan</p>
<pre>kripton:~# mkdir -p /var/www/salman.info.tm/html
kripton:~# mkdir -p /var/www/salman.info.tm/cgi-bin
kripton:~# echo salman.info.tm &gt; /var/www/salman.info.tm/html/index.html</pre>
<p>Langkah kedua sesuaikan konfigurasi dengan mengedit file /etc/lighttpd/lighttpd.conf</p>
<pre>kripton:~# mv /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.distrib
kripton:~# vi /etc/lighttpd/lighttpd.conf</pre>
<p>Isi file adalah:</p>
<pre>server.document-root        = "/var/www/salman.info.tm/html"
server.port                 = 80
server.pid-file             = "/var/run/lighttpd.pid"
index-file.names            = (
    "index.html",
    "index.php"
)
server.modules              = (
    "mod_alias",
    "mod_cgi"
)
cgi.assign                  = (
    ".pl"  =&gt; "/usr/bin/perl",
    ".php"  =&gt; "/usr/bin/php-cgi",
    ".py" =&gt; "/usr/bin/python"
)
alias.url                   += (
    "/cgi-bin" =&gt; "/var/www/salman.info.tm/cgi-bin"
)
$HTTP["url"] =~ "^/cgi-bin" {
    cgi.assign = ( "" =&gt; "" )
}
mimetype.assign             = (
    ".png"  =&gt; "image/png",
    ".jpg"  =&gt; "image/jpeg",
    ".jpeg" =&gt; "image/jpeg",
    ".html" =&gt; "text/html",
    ".txt"  =&gt; "text/plain"
)</pre>
<p>Berikut penjelasan masing-masing kata kunci yang digunakan dalam file konfigurasi.</p>
<ul>
<li>server.document-root, untuk menentukan lokasi root direktori.</li>
<li>server.port, untuk menentukan port TCP/IP dimana server akan aktif.</li>
<li>server.pid-file, file yang akan menyimpan PID server agar skrip start/stop/restart berjalan dengan benar.</li>
<li>index-file.names, menentukan nama file index direktori ketika web server diakses tanpa menyebutkan nama file.</li>
<li>server.modules, digunakan untuk memuat modul-modul lighttpd yang diperlukan.</li>
<li>cgi.assign, menentukan interpreter yang akan dijalankan ketika sebuah file dengan ekstensi tertentu diakses.</li>
<li>alias.url, untuk men-translasi url ke direktori tertentu diluar struktur document root</li>
<li>mimetype.assign, mengaitkan ekstensi file dengan sebuah mimetype (jenis file) sehingga web client bisa menentukan langkah yang diambil jika file dengan ekstensi yang sesuai diakses.</li>
</ul>
<p>Sekarang akses kembali URL http://salman.info.tm, apa yang berubah?</p>
<h2>Reff:</h2>
<ul>
<li><a href="http://redmine.lighttpd.net/wiki/lighttpd">http://redmine.lighttpd.net/wiki/lighttpd</a></li>
</ul>
<p>Selesai.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salman.or.id/2010/linux/mengaktifkan-web-server-lighttpd/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instalasi Debian dari USB</title>
		<link>http://blog.salman.or.id/2010/linux/instalasi-debian-dari-usb</link>
		<comments>http://blog.salman.or.id/2010/linux/instalasi-debian-dari-usb#comments</comments>
		<pubDate>Sat, 01 May 2010 18:15:06 +0000</pubDate>
		<dc:creator>salman</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://blog.salman.or.id/?p=297</guid>
		<description><![CDATA[Dokumentasi ini dibuat saat saya ingin menginstall distribusi kesayangan Debian GNU/Linux ke sebuah netbook murah, accer aspire one. Saya pikir sekarang sudah saatnya menghindari melakukan proses instalasi menggunakan keping CD/DVD, untuk mengurangi dampak bahaya lingkungan yang diakibatkan oleh sampah CD/DVD&#8211;sebuah statement sok tahu yang tidak didukung data yang benar. Lagi pula menginstal sistem operasi menggunakan [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>Dokumentasi ini dibuat saat saya ingin menginstall distribusi kesayangan Debian GNU/Linux ke sebuah netbook murah, accer aspire one. Saya pikir sekarang sudah saatnya menghindari melakukan proses instalasi menggunakan keping CD/DVD, untuk mengurangi dampak bahaya lingkungan yang diakibatkan oleh sampah CD/DVD&#8211;sebuah statement sok tahu yang tidak didukung data yang benar.</p>
<p>Lagi pula menginstal sistem operasi menggunakan media harddisk atau USB flaskdisk lebih cepat dan mempunyai tingkat kesuksesan yang lebih bagus daripada menggunakan CD/DVD.</p>
<p>Asumsi untuk melakukan langkah-langkah ini adalah,</p>
<ul>
<li>Kita bekerja menggunakan sistem operasi GNU/Linux yang sudah berjalan, dalam hal ini saya menggunakan distribusi Debian Lenny.</li>
<li>Sudah terinstall paket syslinux dan syslinux-common.</li>
<li>Sudah terinstall program fdisk dan rsync.</li>
<li>Menggunakan hak akses &#8216;root&#8217;.</li>
<li>Direktori sumber adalah /tmp/source, dan direktori tujuan adalah /tmp/target.</li>
</ul>
<p><span id="more-297"></span>Dapatkan file-file yang diperlukan dari alamat berikut,</p>
<ul>
<li><a href="http://kambing.ui.ac.id/debian/dists/lenny/main/installer-i386/current/images/hd-media/boot.img.gz">http://kambing.ui.ac.id/debian/dists/lenny/main/installer-i386/current/images/hd-media/boot.img.gz</a>,</li>
<li><a href="http://kambing.ui.ac.id/iso/debian/current/i386/iso-cd/debian-504-i386-CD-1.iso">http://kambing.ui.ac.id/iso/debian/current/i386/iso-cd/debian-504-i386-CD-1.iso</a>.</li>
</ul>
<p>Siapkan sebuah partisi kosong yang cukup untuk menyimpan file iso instalasi dan boot image. Katakanlah ukuran 1Gb sudah lebih dari cukup. Sebagai contoh, saya menggunakan USB flashdisk dengan ukuran 2Gb, saya buat dua partisi yang kira-kira sama besar. Anda juga dapat menggunakan keseluruhan USB flashdisk. Gunakan perangkat lunak fdisk.</p>
<pre>neon:~# fdisk -l /dev/sdb

Disk /dev/sdb: 2098 MB, 2098724864 bytes
40 heads, 40 sectors/track, 2561 cylinders
Units = cylinders of 1600 * 512 = 819200 bytes
Disk identifier: 0xb0bcd68e

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1        1280     1023980   83  Linux
/dev/sdb2            1281        2561     1024800   83  Linux</pre>
<p>Lihat bagaimana cara membuat partisi dari manual fdisk.</p>
<p>Buat file sistem pada partisi yang akan digunakan untuk membuat media instalasi. Dalam contoh ini adalah partisi pertama. Yang disebut dengan /dev/sdb1.</p>
<pre>neon:~# mkfs -t ext3 /dev/sdb1</pre>
<p>Uraikan file boot.img.gz yang telah didownload ke dalam direktori /tmp.</p>
<pre>neon:~# zcat boot.img.gz &gt; /tmp/boot.img</pre>
<p>Buat direktori untuk sumber dan tujuan,</p>
<pre>neon:~# mkdir /tmp/source
neon:~# mkdir /tmp/target</pre>
<p>Mount masing-masing image dan file piranti ke direktori tersebut,</p>
<pre>neon:~# mount -oloop /tmp/boot.img /tmp/source
neon:~# mount /deb/sdb1 /tmp/target</pre>
<p>Salin semua file dalam direktori /tmp/source ke direktori /tmp/target</p>
<pre>neon:~# rsync -av /tmp/source/ /tmp/target/</pre>
<p>Buat konfigurasi untuk extlinux dengan membuat softlink konfigurasi syslinux yang berasal dari image instalasi yang telah disalin. Asalnya image instalasi ini dibuat untuk filesystem FAT/VFAT, sedangkan kita menggunakan filesystem ext3.</p>
<pre>neon:~# cd /tmp/target/
neon:/tmp/target# ln -s syslinux.cfg extlinux.conf
neon:/tmp/target# cd</pre>
<p>Instal extlinux dengan perintah,</p>
<pre>neon:~# extlinux -i /tmp/target/</pre>
<p>Salin file boot loader ke boot sector USB flashdisk.</p>
<pre>neon:~# cat /usr/lib/syslinux/mbr.bin &gt; /dev/sdb</pre>
<p>Jangan lupa menyalin file iso untuk proses instalasi.</p>
<pre>neon:~# cp debian-504-i386-CD-1.iso /tmp/target/</pre>
<p>Lepaskan image dan file piranti dari mount pointnya.</p>
<pre>neon:~# umount /tmp/source/
neon:~# umount /tmp/target/</pre>
<p>Yes! sekarang Anda sudah mempunyai media instalasi kecil yang masuk di kantong. Jangan lupa menyetel komputer yang akan diinstal agar melakukan pencarian media boot dari piranti USB.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.salman.or.id/2010/linux/instalasi-debian-dari-usb/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Membuat Salinan Instalasi Server dengan Fungsi Sama</title>
		<link>http://blog.salman.or.id/2010/linux/membuat-salinan-instalasi-server-dengan-fungsi-sama</link>
		<comments>http://blog.salman.or.id/2010/linux/membuat-salinan-instalasi-server-dengan-fungsi-sama#comments</comments>
		<pubDate>Sun, 11 Apr 2010 14:38:39 +0000</pubDate>
		<dc:creator>salman</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://blog.salman.or.id/?p=288</guid>
		<description><![CDATA[Beberapa hari ini saya harus menginstall beberapa server dengan fungsi khusus, seperti server printer dan server fax. Alih-alih menginstall masing-masing server menggunakan media installer standar kemudian menyetel satu persatu. Saya menginstall satu mesin, menyetel dengan benar sistem di mesin tersebut. Setelah itu menyalin sistem secara keseluruhan pada komputer-komputer lainnya. Dan terakhir menyetel kebutuhan khusus masing-masing [...]]]></description>
			<content:encoded><![CDATA[<p>Beberapa hari ini saya harus menginstall beberapa server dengan fungsi khusus, seperti server printer dan server fax. Alih-alih menginstall masing-masing server menggunakan media installer standar kemudian menyetel satu persatu. Saya menginstall satu mesin, menyetel dengan benar sistem di mesin tersebut. Setelah itu menyalin sistem secara keseluruhan pada komputer-komputer lainnya. Dan terakhir menyetel kebutuhan khusus masing-masing server.</p>
<p>Metode instalasi yang dijelaskan disini, adalah rangkuman hasil catatan setelah melakukan instalasi. Bukan didokumentasikan saat instalasi. Akan sangat memungkinkan terdapat kekeliruan penulisan perintah dan lain sebagainya. Koreksi dan usulan sangat terbuka dari para penerap dan pengguna GNU/Linux secara umum.</p>
<p>Meski tulisan ini berbasis distribusi Debian, tapi saya sangat yakin bisa diterapkan untuk distribusi lainnya.</p>
<p>Cara seperti ini sebenarnya mirip dengan cara diterapkan pada distribusi-distribusi yang diinstall dari <em>live-cd</em></p>
<p>Berikut langkah-langkah yang telah saya lakukan:<span id="more-288"></span></p>
<h2>Instalasi menggunakan DVD/CD</h2>
<p>DVD/CD iso image instalasi bisa di dapatkan dari alamat ini <a href="http://kambing.ui.ac.id/iso/debian/">http://kambing.ui.ac.id/iso/debian/</a>. Jika anda kesulitan untuk mengunduh file iso dari server tersebut, bisa mendapatkan dari saya dengan mengirim ongkos kirim saja.</p>
<p>Jalankan proses instalasi dengan memilih base system, tanpa menghubungkan kartu jaringan. Tujuannya agar saat instalasi hanya menggunakan media lokal DVD/CD saja.</p>
<p>Setelah selesai melakukan proses instalasi, lanjutkan dengan menyetel sistem sesuai dengan fungsinya.</p>
<h2>Membuat Salinan Struktur Direktori</h2>
<p>Karena dalam kasus yang saya kerjakan ini sistem yang disetel awal cuma mempunya kapasitas 1281 MB. Dan setelah memangkas perangkat lunak yang tidak diperlukan, termasuk <em>man page</em>. Maka dengan sangat terpaksa, salinan struktur direktori harus disimpan ke server file. Mungkin ini salah satu trik yang jarang digunakan. Ya, saya tahu kita bisa melakukan ini dengan menggunakan share direktori dari server nfs atau server smb. Tapi saya ingin melakukannya dengan cara lain.</p>
<p>Dengan contoh server yang sudah jadi adalah printer server dengan alamat IP 10.5.1.18, dan file server adalah 10.5.1.10. Dimana server file mempunyai layanan openssh yang aktif.</p>
<p>Buat daftar file atau direktori yang tidak akan disalin, biasanya file/direktori yang akan dibuat saat sistem berjalan. Misalnya direktori /proc, /dev/ (jika menggunakan udev), /tmp, dan sebagainya. Sebagai contoh file /etc/rsync-exclude berisi baris-baris berikut,</p>
<pre>/lib/init/rw /dev/shm /target /tmp /lost+found /proc /sys</pre>
<p>Salin struktur direktori ke file server dengan perintah:</p>
<pre>printerserver:~# /usr/bin/rsync --delete \
--exclude-from=/etc/rsync-exclude \
-avr / root@10.5.1.10:/root/printerserver &gt;/dev/null 2&gt;&amp;1</pre>
<p>Tunggu sampai proses penyalinan selesai. Lamanya tergantung dari besar filesistem yang disalin. Di sisi server akan dibuat direktori /root/printerserver yang berisi salinan seluruh file dan direktori dari struktur direktori printerserver.</p>
<h2>Menyiapkan Target</h2>
<p>Pasang harddisk target pada server file dimana struktur printer server disalin.</p>
<p>Dalam kasus yang saya kerjakan ini, harddisk target dikenali sebagai /dev/hdd</p>
<pre>[root@ftp ~]# fdisk -l

Disk /dev/hdd: 20.8 GB, 20847697920 bytes
16 heads, 63 sectors/track, 40395 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

   Device Boot      Start         End      Blocks   Id  System

Disk /dev/sda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        9729    78043770   8e  Linux LVM</pre>
<p>dan /dev/sda adalah sistem yang sedang berjalan.</p>
<p>Buat partisi sesuai dengan kebutuhan menggunakan perintah fdisk.</p>
<pre>[root@ftp ~]# fdisk /dev/hdd 

The number of cylinders for this disk is set to 40395.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-40395, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-40395, default 40395): +19000M

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (36817-40395, default 36817):
Using default value 36817
Last cylinder or +size or +sizeM or +sizeK (36817-40395, default 40395):
Using default value 40395</pre>
<p>Saya ingin menggunakan kapasitas harddisk yang cuma 20Gb ini untuk sistem dan data 19Gb dan untuk swap 1Gb. Sehingga partisi kedua harus diubah tipe nya menjadai partisi swap.</p>
<pre>Command (m for help): p  

Disk /dev/hdd: 20.8 GB, 20847697920 bytes
16 heads, 63 sectors/track, 40395 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hdd1               1       36816    18555232+  83  Linux
/dev/hdd2           36817       40395     1803816   83  Linux

Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 82
Changed system type of partition 2 to 82 (Linux swap / Solaris)

Command (m for help): p

Disk /dev/hdd: 20.8 GB, 20847697920 bytes
16 heads, 63 sectors/track, 40395 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hdd1               1       36816    18555232+  83  Linux
/dev/hdd2           36817       40395     1803816   82  Linux swap / Solaris</pre>
<p>Proses membuat partisi sudah selesai.</p>
<p>Langkah selanjutnya adalah membuat filesystem ext3 pada partisi pertama.</p>
<pre>[root@ftp ~]# mkfs -t ext3 /dev/hdd1
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
2321984 inodes, 4638808 blocks
231940 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
142 block groups
32768 blocks per group, 32768 fragments per group
16352 inodes per group
Superblock backups stored on blocks:
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
	4096000

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 30 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.</pre>
<p>Diikuti membuat swap file sistem pada partisi kedua</p>
<pre>[root@ftp ~]# mkswap /dev/hdd2
Setting up swapspace version 1, size = 1847103 kB</pre>
<p>Kaitkan partisi target pada sebuah direktori, /mnt misalnya:</p>
<pre>[root@ftp ~]# mount /dev/hdd1 /mnt/
[root@ftp ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                       72G   12G   56G  18% /
/dev/sda1              99M   12M   83M  13% /boot
tmpfs                 184M     0  184M   0% /dev/shm
/dev/hdd1              18G  173M   17G   2% /mnt</pre>
<p>Salin struktur direktori sumber ke <em>mount point</em> partisi target.</p>
<pre>[root@ftp ~]# rsync -avr printerserver/ /mnt/</pre>
<h2>Sesuaikan Setelan Umum</h2>
<p>Pertama adalah partisi yang akan digunakan saat proses boot. Edit file /mnt/etc/fstab.</p>
<pre>[root@ftp ~]# vi /mnt/etc/fstab
#
proc            /proc           proc    defaults        0       0
/dev/hda1       /               ext3    errors=remount-ro 0       1
/dev/hda2       none            swap    sw              0       0</pre>
<p>kemudian simpan. Dengan menekan berturut-turut tombol [Esc] [:] [w] [q].</p>
<p>Edit file /mnt/boot/grub/menu.lst, berikut contoh isi file tersebut:</p>
<pre>default         0
timeout         5
color cyan/blue white/blue

title           Debian GNU/Linux, kernel 2.6.26-2-686
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.26-2-686 root=/dev/hda1 ro quiet
initrd          /boot/initrd.img-2.6.26-2-686

title           Debian GNU/Linux, kernel 2.6.26-2-686 (single-user mode)
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.26-2-686 root=/dev/hda1 ro single
initrd          /boot/initrd.img-2.6.26-2-686</pre>
<p>Edit file konfigurasi TCP/IP, sesuaikan dengan topologi jaringan dimana server akan diletakkan.</p>
<pre>[root@ftp ~]# vi /mnt/etc/network/interfaces</pre>
<p>contoh isi file adalah,</p>
<pre># The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 10.1.1.18
        netmask 255.255.0.0
        network 10.1.0.0
        broadcast 10.1.255.255
        gateway 10.1.1.10
        dns-nameservers 10.1.1.10</pre>
<p>Install boot loader pada harddisk target</p>
<pre>[root@ftp ~]# grub-install --recheck --root-directory=/mnt/ /dev/hdd
Probing devices to guess BIOS drives. This may take a long time.
Installation finished. No error reported.
This is the contents of the device map /mnt//boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.

(fd0)	/dev/fd0
(hd0)	/dev/hdd
(hd1)	/dev/sda</pre>
<p>Lepaskan partisi target dari file server, matikan fileserver dan cabut harddisk target.</p>
<p>Pasang harddisk pada mesin target dan lakukan proses boot dari harddisk. Lakukan penyesuaian yang terlupa sebelumnya.</p>
<p>Selesai.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salman.or.id/2010/linux/membuat-salinan-instalasi-server-dengan-fungsi-sama/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Definit Integral Metode Monte Carlo</title>
		<link>http://blog.salman.or.id/2009/komputasi/definit-integral-metode-monte-carlo</link>
		<comments>http://blog.salman.or.id/2009/komputasi/definit-integral-metode-monte-carlo#comments</comments>
		<pubDate>Mon, 23 Nov 2009 07:58:11 +0000</pubDate>
		<dc:creator>salman</dc:creator>
				<category><![CDATA[Komputasi]]></category>

		<guid isPermaLink="false">http://blog.salman.or.id/?p=281</guid>
		<description><![CDATA[Hari ini mendapat email dari seorang mahasiswa, begini bunyinya: Bapak salaman sya mau bertanya. ini saya attach. sebelumnya terimaksih banyak ya bapak Dan isi file attachment dalam format &#8220;doc&#8221; adalah: bapak, saya mau menanya bagaimana skrip untuk perhitungan metode monte carlo dengan cara membangkitkan bilangan acak. Dalam integral monte carlo ada rumus begini : Dengan [...]]]></description>
			<content:encoded><![CDATA[<p>Hari ini mendapat email dari seorang mahasiswa, begini bunyinya:</p>
<blockquote><p>Bapak salaman sya mau bertanya. ini saya attach. sebelumnya terimaksih banyak ya bapak</p></blockquote>
<p>Dan isi file attachment dalam format &#8220;doc&#8221; adalah:</p>
<blockquote><p>bapak, saya mau menanya bagaimana skrip untuk perhitungan metode monte carlo dengan cara membangkitkan bilangan acak.</p>
<p>Dalam integral monte carlo ada rumus begini :</p>
<p><a href="http://blog.salman.or.id/wp-content/uploads/2011/09/integral-1.png"><img class="aligncenter size-full wp-image-283" title="integral-1" src="http://blog.salman.or.id/wp-content/uploads/2011/09/integral-1.png" alt="" width="224" height="52" /></a></p>
<p>Dengan N = banyaknya data yang dibangkitkan.</p>
<p>Algoritmanya begini mas :<br />
1. bangkitkan data dalam interval a sampai b<br />
2. masukkan nilainya ke dalam fungsi g(x) lalu jumlahkan nilainya<br />
3. hitung rata-rata lalu kalikan dengan (b-a) sebagai taksiran nilai integral yang dicari.<span id="more-281"></span></p></blockquote>
<blockquote><p>Misal ada soal begini :</p></blockquote>
<blockquote><p><a href="http://blog.salman.or.id/wp-content/uploads/2011/09/integral-2.png"><img class="aligncenter size-full wp-image-282" title="integral-2" src="http://blog.salman.or.id/wp-content/uploads/2011/09/integral-2.png" alt="" width="115" height="51" /></a></p></blockquote>
<blockquote><p>bagaimana cara menyelesaikan dengan script python dengan integral monte carlo&#8230;.? mohon saya diberi contoh skripnya ya bapak</p>
<p>Sebelumnya saya ucapkan terimakasih banyak atas kebaikan bapak</p></blockquote>
<p>Entah iseng atau kurang kerjaan, saya jawab pertanyaan ini. <strong>Berikut jawaban saya:</strong></p>
<p>Berikut ini skrip yang dimaksud. Saya buat secara cepat dengan menggali ingatan hampir 14 tahun yang lalu. Tidak ada upaya optimasi apapun, hanya menerjemakan algoritma &#8220;monte carlo&#8221; yang berbasis bilangan acak. Dan perlu diingat bilangan acak ini, karena dibuat oleh komputer sifatnyat tidak benar-benar acak. Sering disebut &#8220;quasi random&#8221;.</p>
<pre>#!/usr/bin/python
from math import *
from random import *

# ubah fungsi ini.
def equation(x):
        return x*x

def genrand(a,b,n):
        step = (b-a)/n
        pairs = []
        l = a
        while (l&lt;n):
                x = uniform(a,b)
                pairs.append([x, equation(x)])
                l = l + step
        return pairs

def calculate(a,b,n):
        pairs = genrand(a,b,n)
        points = len(pairs)
        y = 0
        for x in pairs:
                y = y + x[1]
        avg = y/points
        bmina = b - a
        return bmina*avg

a = 2.0
b = 8.0
n = 1000
print ""
print "a = %s, b = %s, n= %s" % (a,b,n)
print "Definit integral: %s" % calculate(a, b, n)
print 40*"-"
print "notes: change equation() definition"
print ""</pre>
<p>Gunakan dengan bijak dan tidak ada pernyataan apapun. Resiko apapun ditanggung pengguna. *LOL*</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salman.or.id/2009/komputasi/definit-integral-metode-monte-carlo/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Langkah Pertama Menguasai Smarty</title>
		<link>http://blog.salman.or.id/2009/php-programming/langkah-pertama-menguasai-smarty</link>
		<comments>http://blog.salman.or.id/2009/php-programming/langkah-pertama-menguasai-smarty#comments</comments>
		<pubDate>Mon, 16 Nov 2009 15:36:11 +0000</pubDate>
		<dc:creator>salman</dc:creator>
				<category><![CDATA[PHP Programming]]></category>

		<guid isPermaLink="false">http://blog.salman.or.id/?p=274</guid>
		<description><![CDATA[Apa sih sebenarnya Smarty? Penjelasan pendeknya, Smarty adalah library PHP untuk mengolah tampilan berbasis web dari sebuah cetakan tampilan dan data dari skrip PHP. Sistem template ini sangat penting dalam pekerjaan menampilkan halaman web dinamis. Pekerjaan mengkreasi tampilan dan logika pemrograman secara mudah dipisahkan. Sehingga tingkat kebergantungan akan dikurangi. Cara kerja sistem template pernah saya [...]]]></description>
			<content:encoded><![CDATA[<p>Apa sih sebenarnya Smarty? Penjelasan pendeknya, Smarty adalah library PHP untuk mengolah tampilan berbasis web dari sebuah cetakan tampilan dan data dari skrip PHP.</p>
<p>Sistem template ini sangat penting dalam pekerjaan menampilkan halaman web dinamis. Pekerjaan mengkreasi tampilan dan logika pemrograman secara mudah dipisahkan. Sehingga tingkat kebergantungan akan dikurangi.</p>
<p>Cara kerja sistem template pernah saya tulis di <a href="http://blog.salman.or.id/2009/php-programming/php-template">disini</a>, atau <a href="http://www.elektroindonesia.com/elektro/li1001.html">disini</a>. Dalam tulisan ini saya akan membahas sistem templating yang lebih rumit dan lengkap.</p>
<p>Asumsi:</p>
<ul>
<li>Sistem operasi Debian GNU/Linux 5.0 &#8220;Lenni&#8221;,</li>
<li>PHP 5.2.6,</li>
<li>Smarty 2.6.26, bisa didapatkan dari <a href="http://www.smarty.net/download.php">URI ini</a>,</li>
<li>Konfigurasi Apache 2.2.9 standar bawaan Debian,</li>
<li>Mampu menggunakan perintah baris di GNU/Linux.</li>
</ul>
<p><span id="more-274"></span>Siapkan direktori kerja di bawah struktur direktory Apache, yaitu /var/www. Karena otoritas membuat file/direktori dalam direktori ini adalah user &#8220;root&#8221; maka kita harus mengubah efektif id kita menjadi root dengan perintah,</p>
<pre>salman@neon:~$ su -
Password:
neon:~#</pre>
<p>Perhatikan perintah di atas. Username yang digunakan sebelumnya adalah &#8220;salman&#8221; setelah perintah &#8220;su -&#8221;, user menjadi &#8220;root&#8221;. Sesuaikan dengan username yang Anda gunakan. Saatnya membuat struktur direktori kerja.</p>
<pre>neon:~# mkdir -p /var/www/smarty/{templates,templates_c,cache,configs}
neon:~# chown -R salman:salman /var/www/smarty/
neon:~# chown www-data:www-data /var/www/smarty/{templates_c,cache}</pre>
<p>Download file Smarty dari URI yang telah ditunjukkan di atas. Kemudian uraikan file tersebut.</p>
<pre>salman@neon:~$ tar -xzvf Smarty-2.6.26.tar.gz
salman@neon:~$ mv Smarty-2.6.26/libs/ /var/www/smarty</pre>
<p>Struktur direktori akan nampak seperti ini,</p>
<pre>/var/www/smarty
|-- cache
|-- configs
|-- libs
|   |-- internals
|   `-- plugins
|-- templates
`-- templates_c</pre>
<p>Kita akan membuat sebuah halaman sederhana untuk menampilkan pesan yang sangat terkenal, &#8220;Hello World&#8221;. Siapkan template untuk ditampilkan.</p>
<div id="attachment_276" class="wp-caption aligncenter" style="width: 617px"><a href="http://blog.salman.or.id/wp-content/uploads/2011/09/smarty-hello-world.png"><img class="size-full wp-image-276" title="smarty-hello-world" src="http://blog.salman.or.id/wp-content/uploads/2011/09/smarty-hello-world.png" alt="Hello World di Smarty." width="607" height="281" /></a><p class="wp-caption-text">Hello World di Smarty.</p></div>
<pre>salman@neon:~$ cd /var/www/smarty
salman@neon:/var/www/smarty$ vi templates/index.tpl</pre>
<p>Isi file adalah,</p>
<pre>&lt;HTML&gt;
&lt;BODY&gt;
{$isi}
&lt;/BODY&gt;
&lt;/HTML&gt;</pre>
<p>Setelah itu siapkan skrip yang akan menggunakan template ini.</p>
<pre>salman@neon:/var/www/smarty$ vi index.php</pre>
<p>Isi file,</p>
<pre>&lt;?php
require libs/Smarty.class.php;

$smarty = new Smarty;
$smarty-&gt;assign("isi","Hello World.");
$smarty-&gt;display(index.tpl);
?&gt;</pre>
<p>Setelah itu akses file index.php menggunakan web browser. Isikan pada address bar browser. <a href="http://localhost/smarty/">http://localhost/smarty/</a>.</p>
<p>E.O.T</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salman.or.id/2009/php-programming/langkah-pertama-menguasai-smarty/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Info Sekilas Filesystem FAT32</title>
		<link>http://blog.salman.or.id/2009/windows/info-sekilas-filesystem-fat32</link>
		<comments>http://blog.salman.or.id/2009/windows/info-sekilas-filesystem-fat32#comments</comments>
		<pubDate>Thu, 22 Oct 2009 00:20:32 +0000</pubDate>
		<dc:creator>salman</dc:creator>
				<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://blog.salman.or.id/?p=271</guid>
		<description><![CDATA[Berikut info yang saya dapat dari url: Limitations of the FAT32 File System in Windows XP File Allocation Table Berikut ringkasannya: Ukuran kluster tidak bisa lebih besar atau sama dengan 64KB. Beberapa program akan sangat bermasalah dengan ukuran lebih besar dari batas ini. Jumlah kluster maksimum adalah 268,435,445. Jika tiap kluster maksimal memuat 32KB maka [...]]]></description>
			<content:encoded><![CDATA[<p>Berikut info yang saya dapat dari url:</p>
<ul>
<li><a href="http://support.microsoft.com/kb/314463">Limitations of the FAT32 File System in Windows XP</a></li>
<li><a href="http://en.wikipedia.org/wiki/File_Allocation_Table">File Allocation Table</a></li>
</ul>
<p>Berikut ringkasannya:</p>
<ul>
<li>Ukuran kluster tidak bisa lebih besar atau sama dengan 64KB. Beberapa program akan sangat bermasalah dengan ukuran lebih besar dari batas ini.</li>
<li>Jumlah kluster maksimum adalah 268,435,445. Jika tiap kluster maksimal memuat 32KB maka jumlah seluruhnya adalah sekitar 8TB.</li>
<li>Boot sector menggunakan 32bit untuk menyimpan jumlah sektor, sehingga ukuran maksimal adalah 2TB pada harddisk dengan ukuran 512Byte/sektor. (2^32*512Byte = 2TB).</li>
<li>Tools di Windows XP/Windows 2K tidak mampu membuat fileystem FAT32 dengan ukuran lebih besar dari 32GB. Akan tetapi bisa mengakses filesystem lebih besar dari itu.</li>
<li>Kita tidak bisa membuat file dengan ukuran lebih besar dari 4GB-1Byte dalam sebuah partisi FAT32.</li>
</ul>
<p>Bila mempunyai harddisk eksternal dengan ukuran besar (&gt;60GB) dan ingin menggunakan hanya satu partisi dengan filesystem FAT32. Gunakan tools di sistem operasi GNU/Linux.</p>
<pre>neon:~# mkfs.vfat -n RAISING -c -v -m bootmsg.txt /dev/sdb1
mkfs.vfat 3.0.1 (23 Nov 2008)
Auto-selecting FAT32 for large filesystem
/dev/sdb1 has 255 heads and 63 sectors per track,
logical sector size is 512,
using 0xf8 media descriptor, with 156296322 sectors;
file system has 2 32-bit FATs and 32 sectors per cluster.
FAT size is 38140 sectors, and provides 4881875 clusters.
Volume ID is 65e9d871, volume label RAISING    .</pre>
<div id="attachment_272" class="wp-caption aligncenter" style="width: 400px"><a href="http://blog.salman.or.id/wp-content/uploads/2011/09/fat32-filesystem.png"><img class="size-full wp-image-272" title="fat32-filesystem" src="http://blog.salman.or.id/wp-content/uploads/2011/09/fat32-filesystem.png" alt="Informasi filesystem vfat." width="390" height="556" /></a><p class="wp-caption-text">Informasi filesystem vfat.</p></div>
<p>Hasil filesystem yang dibuat dengan perintah di atas. Ukuran klusternya 32*512Byte=16kByte.</p>
<p>Selesai</p>
<p>E.O.T</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salman.or.id/2009/windows/info-sekilas-filesystem-fat32/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Update Pidgin dari Repository Backports</title>
		<link>http://blog.salman.or.id/2009/debian/update-pidgin-dari-repository-backports</link>
		<comments>http://blog.salman.or.id/2009/debian/update-pidgin-dari-repository-backports#comments</comments>
		<pubDate>Sun, 11 Oct 2009 12:34:49 +0000</pubDate>
		<dc:creator>salman</dc:creator>
				<category><![CDATA[Debian]]></category>

		<guid isPermaLink="false">http://blog.salman.or.id/?p=268</guid>
		<description><![CDATA[Akhir-akhir ini terdapat masalah koneksi antara messenger klien pidgin versi 2.4 dengan server messenger yahoo. Awal-awal terjadi masalah bisa diatasi dengan mengganti server messenger. Akan tetapi dalam seminggu ini server-server alternatif ternyata juga sudah diupdate oleh yahoo, sehingga pidgin tidak bisa lagi digunakan untuk yahoo messenger Solusi satu-satunya adalah mengupdate pidgin dengan versi terbaru. Berhubung [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>Akhir-akhir ini terdapat masalah koneksi antara messenger klien pidgin versi 2.4 dengan server messenger yahoo. Awal-awal terjadi masalah bisa diatasi dengan mengganti server messenger. Akan tetapi dalam seminggu ini server-server alternatif ternyata juga sudah diupdate oleh yahoo, sehingga pidgin tidak bisa lagi digunakan untuk yahoo messenger</p>
<p>Solusi satu-satunya adalah mengupdate pidgin dengan versi terbaru. Berhubung paket standard distribusi Debian Lenny adalah pidgin versi 2.4, maka perlu dicari server alternatif lain yang menyediakan versi yang lebih baru yaitu versi 2.6.</p>
<p>Berdasarkan informasi dari milis tanya-jawab@linux.or.id yang diposting oleh nugrahadi@gmail.com, paket-paket backport bisa didapatkan dari alamat <a href="http://repo.ugm.ac.id/debian-backports">http://repo.ugm.ac.id/debian-backports.</a></p>
<p>Ikuti perintah-perintah berikut untuk menginstall pidgin versi 2.6.</p>
<p><code></code></p>
<pre>neon:~# echo "deb http://repo.ugm.ac.id/debian-backports \
lenny-backports main contrib non-free" &gt;&gt; /etc/apt/sources.list
neon:~# wget http://repo.ugm.ac.id/debian-backports/archive.key
neon:~# apt-key add archive.key
neon:~# apt-get update
neon:~# apt-get -t lenny-backports install pidgin</pre>
<p>Selesai. Jalankan pidgin kembali.</p>
<p>E.O.T</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.salman.or.id/2009/debian/update-pidgin-dari-repository-backports/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

