Archive for the ‘linux’ Category

[Ubuntu Server] Instalasi dan Konfigurasi DHCP Server

Wednesday, November 19th, 2008

DHCP Server dibuat supaya kita gak usah setting ulang IP Address manual setiap melakukan koneksi ke jaringan yang berbeda-beda, jadinya server yang ngasih IP Address, client hanya tau beres aja.

sudo apt-get install dhcp3-server

Biasanya setelah instalasi akan menampilkan pesan error, ini wajar karena kita blon konfigurasi DHCP Server-nya.

Misalnya setting yang ingin digunakan seperti ini:

DNS Server 	: 192.168.81.81
Range		: 192.168.81.101 - 192.168.81.150
Network		: 192.168.81.0
Subnet		: 255.255.255.0
Broadcast	: 192.168.81.255

Masuk ke konfigurasi DHCP:

sudo nano /etc/dhcp3/dhcpd.conf

Terus hapus isinya, ganti dengan konfigurasi seperti ini:

ddns-update-style none;
 
option domain-name-servers 192.168.81.81;
 
default-lease-time 86400;
max-lease-time 604800;
 
authoritative;
 
subnet 192.168.81.0 netmask 255.255.255.0 {
 range 192.168.81.101 192.168.81.150;
 option subnet-mask 255.255.255.0;
 option broadcast-address 192.168.81.255;
 option routers 192.168.81.81;
}

Trus restart DHCP Server:

sudo /etc/init.d/dhcp3-server restart

Dah, tinggal sambungkan komputer-komputer lain ke jaringan kita, semua akan mendapatkan IP Address masing-masing dan sudah disetting sampe ke DNS Servernya secara otomatis.

[Ubuntu Server] Instalasi dan Konfigurasi DNS Server

Monday, November 17th, 2008

DNS itu singkatan dari Domain Name Server, jadi yang kita inget bukan alamat IP Address dari setiap komputer tapi nama yang diberikan untuk IP Address tersebut. Misalnya seperti www.yahoo.com atau www.google.com atau juga gadjah.net.

Kenapa? Karena manusia kesulitan kalo harus mengingat banyak nomor sekaligus, jadi dibuat sebuah program namanya DNS Server supaya manusia tinggal inget nama websitenya doang, tugasnya DNS Server untuk nerjemahin nama menjadi nomor.

Tapi sebelum dia bisa nerjemahin, kita harus install dan konfigurasi dulu DNS Server.

Install DNS Server:

sudo apt-get install bind9

Konfigurasi DNS Server:

Asumsi kita adalah:

IP Address DNS Server Statis
IP Address DNS Server	: 192.168.81.81
Nama Website		: http://www.ardiansah.co.cc
Network			: 192.168.81.0
Gateway			: 192.168.81.81
Nama komputer		: ubuntu

Yang pertama di konfigurasi adalah file named.conf.local:

sudo nano /etc/bind/named.conf.local

Buat konfigurasi seperti ini:

# zona untuk domain -> ip address
zone "ardiansah.co.cc" {
 type master;
 file "/etc/bind/zones/ardiansah.co.cc.db";
};
 
# zona untuk ip address -> domain
zone "81.168.192.in-addr.arpa" {
 type master;
 file "/etc/bind/zones/rev.81.168.192.in-addr.arpa";
};

Untuk mengakses DNS Server lain yang isinya lebih lengkap:

sudo nano /etc/bind/named.conf.options

Trus isikan IP Address atau Domain DNS Server lain yang lebih lengkap, misalnya:

forwarders {
 123.456.789.012;
};

Supaya DNS Server yang udah dibuat juga bisa mengakses dirinya sendiri:

sudo nano /etc/resolv.conf

Trus isi dirinya sendiri:

search ardiansah.co.cc.
nameserver 192.168.81.81

Akhirnya adalah kita buat zona untuk DNS Server, dengan urutan sebagai berikut:

sudo mkdir /etc/bind/zones
sudo nano /etc/bind/zones/ardiansah.co.cc.db

Trus isikan perintah sebagai berikut:

$TTL 1500
@ IN SOA ubuntu.ardiansah.co.cc. root (
  2007062703
  28800
  3600
  604800
  38400
);
ardiansah.co.cc.	IN	NS	ubuntu.ardiansah.co.cc.
ubuntu			IN	A	192.168.81.81
www			IN	CNAME	ubuntu

Kebalikannya adalah:

sudo nano /etc/bind/zones/rev.81.168.192.in-addr.arpa

Isikan perintah sebagai berikut:

$TTL 1500
@ IN SOA ubuntu.ardiansah.co.cc. root (
  2007062703
  28800
  3600
  604800
  38400
);
	IN NS	ubuntu.ardiansah.co.cc.
81	IN PTR	ubuntu.ardiansah.co.cc.

Akhirnya restart DNS Server:

sudo /etc/init.d/bind9 restart

Udah deh, sekarang kita sudah punya DNS Server aktif. Tinggal buat DHCP Server aja lanjutan berikutnya.

[Ubuntu] Konfigurasi IP Address

Friday, November 14th, 2008

Biasanya ada dua versi konfigurasi IP Address,

  1. Statis, setiap komputer punya IP Address masing-masing yang diset langsung di komputer.
  2. Dinamis (dhcp), setiap komputer dapet IP Address dari Server

Tempat konfigurasi IP Address:

sudo nano /etc/network/interfaces

Versi dinamis dulu yang paling gampang:

Konfigurasinya jadi gini

# loopback, kalo gak salah, loopback itu 127.0.0.1 atau localhost
auto lo
iface lo inet loopback
# IP Address versi DHCP
auto eth0
iface eth0 inet dhcp

Kalo Versi statis, misalnya pengen konfigurasi seperti ini:

IP Address	: 192.168.81.81
Netmask		: 255.255.255.0
Gateway		: 192.168.81.81

hasilnya jadi kayak gini:

# loopback
auto lo
iface lo inet loopback
# IP Address versi statis
auto eth0
iface eth0 inet static
  address 	192.168.81.81
  netmask	255.255.255.0
  network	192.168.81.0
  broadcast	192.168.81.255
  gateway	192.168.81.81

Terus restart network:

sudo /etc/init.d/networking restart

[Ubuntu Server] Mouting USB Flash Drive

Wednesday, November 12th, 2008

Kesulitan dari Ubuntu Server adalah karena dia berbasis Console, jadinya belum memiliki support automount untuk USB Flash Disk. Jadinya setiap flash disk dikoneksikan ya harus menggunakan perintah secara manual menggunakan Console.

Perintahnya sebagai berikut untuk mounting:

  1. Mengetahui dimana alamat dari device kita
  2. Biasanya device yang kita inginkan ada di daftar terbawah. Yang didapatkan di Server kantorku adalah “/dev/sdc1″, mungkin akan berbeda tergantung berapa device yang tersambung di server kita.

  3. Membuat Direktori Mount
  4. sudo mkdir /mnt/eksternal

    Kita pake direktori bernama eksternal yang dibuat dalam direktori /mnt

  5. Mounting device
  6. Tipe File System FAT32:

    sudo mount -t vfat /dev/sdc1 /mnt/eksternal -o uid=1000,gid=100,utf8,dmask=027,fmask=137

    Tipe File System NTFS (ntfs-3g harus sudah terinstall di Ubuntu Server) :

    sudo mount -t ntfs-3g /dev/sdc1 /mnt/eksternal
  7. Umounting device
  8. ATAU

    umount /mnt/eksternal

[Java] Apache Ant

Wednesday, November 5th, 2008

Kita bahas Apache Ant sekarang, guna dari Apache Ant adalah untuk otomatisasi proses kompilasi dan eksekusi program yang dibuat pake Java.

Ant menggunakan perintah XML untuk membuat proses konfigurasinya. Secara default nama file XML-nya adalah build.xml dan konfigurasi folder di build.properties.

Dalam sebuah file build.xml berisi:

  • Folder tempat menyimpan source code, biasanya bernama “src”
  • Folder tempat menyimpan hasil kompilasi, biasanya bernama “classes”
  • Lokasi pustaka tambahan
  • Classpath
  • Pekerjaan tambahan lain, misalnya eksekusi file

Sedangkan build.properties berisi:

  • Konfigurasi folder yang akan diakses
  • Daftar variabel yang digunakan dalam build.xml

build.properties disarankan terpisah dari build.xml untuk mempermudah penggunaan.

Misalnya:

File build.properties:

folder.project=
 
folder.source=${folder.project}\src
 
folder.kompilasi=${folder.project}\classes

File build.xml:

<project name="aplikasi balik" default="kompile">
	<description>
		Aplikasi untuk membalikkan kata atau kalimat.
	</description>
 
	<property file="build.properties" />
 
	<target name="kompile">
		<javac srcdir="${folder.source}"
			  destdir="${folder.kompilasi}" />
	</target>
 
	<target name="eksekusi" depends="kompile">
		<java classpath="${folder.kompilasi}"
			classname="Simulasi" />
	</target>
 
</project>

Kalo kita mengeksekusi Ant dengan perintah seperti ini:

Maka otomatis Ant akan mengeksekusi perintah “kompile” sebelum mengeksekusi perintah “eksekusi”.

Resin Quercus Server - Buat Program Pake PHP dan Java Sekaligus Part 3

Monday, November 3rd, 2008

Untuk memecahkan permasalahan yang terjadi saat menggunakan beberapa pustaka Java yang dianggap invalid ternyata sangat mudah, dengan cara membuat class Java baru untuk membungkus class yang sudah ada.

Misalnya class String yang method length-nya dianggap invalid oleh Resin.

Kita buat class Java baru seperti ini:

package gadjah;
 
import java.lang.String;
 
public class StringKu {
        private String value;
 
        public StringKu(String value) {
                this.value = value;
        }
 
        public int length() {
                return value.length();
        }
}

Masih dengan asumsi bahwa Resin disimpen di D:\Java\resin-3.1.7a\, maka file class Java di atas di-copy ke direktori

   D:\Java\resin-3.1.7a\webapps\ROOT\WEB-INF\classes\gadjah\

Trus ditest menggunakan file PHP, misalnya seperti ini:

<?php
	import gadjah.StringKu;
 
	$nama = new StringKu('irfan ardiansah');	
 
	$pjg = $nama->length();
 
	echo $pjg;
?>

Seharusnya sekarang setelah file PHP dieksekusi maka akan tampil jumlah huruf dari kata yang diinput. Mudah kan.

Jadi sepertinya untuk beberapa class dan method blon didukung oleh Resin, sehingga harus pake cara muter-muter untuk mendapatkan hasil yang diinginkan. Tapi cara alternatif biasanya akan membuat kita jadi tambah cerdas :D

Resin Quercus Server - Buat Program Pake PHP dan Java Sekaligus Part 2

Friday, October 31st, 2008

Setelah tau cara konfigurasi Resin, sekarang kita coba buat program pake PHP dulu, misal disimpan dengan nama file info.php

  <?php
    phpinfo();
  ?>

Dengan asumsi bahwa direktori Resin ada di D:\Java\resin-3.1.7a\, kita simpan file info.php di direktori

   D:\Java\resin-3.1.7a\webapps\ROOT\

Trus setelah Resin Server dijalankan, coba akses http://localhost:8080/info.php, pasti akan muncul informasi server yang digunakan. Walau isinya gak sama dengan punya Apache.

Sekarang kita coba gabungkan PHP dan Java, kita akan buat program PHP yang manggil pustaka Java yang dimisalkan disimpan dengan nama file coba.php

<?php
 import java.util.Random;
 
 $acak = new Random();
 
 $angka = $acak->nextInt(10);
 
 echo $angka;
?>

Coba jalankan, pasti gak ada error, padahal kita pake pustaka Random milik Java.

Tapi ternyata Resin masih memiliki bug, beberapa pustaka Java tidak dapat dikenali, misalnya

<?php
 import java.lang.String;
 
 $nama = new String('irfan ardiansah');
 
 echo $nama;
 echo '<br />';
 echo '<br />';
 
 $pjg = $nama->length();
 
 echo $pjg;
?>

tulisan irfan ardiansah akan muncul dilayar, tapi method length() milik Java akan menyebabkan program menjadi error, tampilannya seperti ini

irfan ardiansah
 
/D:/Java/resin-3.1.7a/webapps/ROOT/MyBean.php:10: Fatal Error: 'length' is an unknown method of binary(15) "irfan ardiansah".

Seharusnya yang tampil di layar adalah 15. Payahnya di forum-nya dah bertanya tapi gak ada yang ngejawab. Akhirnya nemuin jawabannya sendiri yang ternyata sederhana banget.

Resin Quercus Server - Buat Program Pake PHP dan Java Sekaligus Part 1

Wednesday, October 29th, 2008

Resin sih sebuah Application Server untuk Java seperti Apache Tomcat atau Glassfish, jadi digunakan untuk buat program untuk JavaEE.

Keunggulan Resin dibanding yang laen adalah dia sudah support juga bahasa pemrograman PHP, jadi kita bisa kombinasikan Java dan PHP
sekaligus.

Kok bisa ya, ternyata karena dalam Resin ada satu pustaka yang namanya Quercus, Quercus ini yang menerjemahkan perintah PHP menjadi perintah Java dan sebaliknya.

Kalo gak mau pake Resin, pengennya pake Tomcat atau Glassfish ternyata bisa aja, kita tinggal download pustaka Quercus-nya aja tanpa perlu download Resin.

Enaknya Resin adalah karena dia berbasis Java maka gak perlu diinstall, hanya tinggal diekstrak dan kita tinggal setting Environment Variables-nya.

Resin memerlukan beberapa setting, diantaranya CLASSPATH, JAVA_HOME dan RESIN_HOME, maka kita buat sebuah file namanya setpath.bat.

Asumsi yang digunakan adalah Windows, Java dan Resin diinstall di D:\Java

SET CLASSPATH=D:\Java\JDK1.5.0_06\lib\tools.jar;.   
 
SET JAVA_HOME=D:\Java\JDK1.5.0_06
 
SET RESIN_HOME=D:\Java\resin-3.1.7a
 
java -jar resin.jar

Save dengan nama setpath.bat trus simpan di direktori lib milik Resin, kebetulan ada di D:\Java\resin-3.1.7a\lib\

Eksekusi setpath.bat, otomatis juga Resin server langsung jalan. Tinggal buat program deh.

[Java] Mrogram Java dengan Bahasa Pemrograman Lain

Monday, October 27th, 2008

Java punya beberapa varian, misal JavaSE untuk pemrograman Desktop dan Applet, JavaEE untuk pemrograman Web dan aplikasi berbasis Enterprise atau JavaME untuk pemrograman berbasis perangkat bergerak atau yang lebih dikenal di Indonesia dengan nama hape.

Tapi ternyata Java juga disupport oleh beberapa bahasa pemrograman lain, jadi kita bisa bikin program java pake bahasa tersebut, atau sebaliknya kita bikin program untuk bahasa tersebut dengan menggunakan Java. Jadi seperti peribahasa "Sekali Dayung Dua sampai Tiga Pulau Terlampaui".

Digunakan untuk yang ingin belajar banyak bahasa pemrograman tapi gak mau nginstal banyak software, karena semua tools yang dipake semuanya dibuat menjadi pustaka Java berekstensi jar, jadi gak perlu install, hanya tinggal ekstrak aja.

1. GWT (Google Web Toolkit)

GWT dipake untuk membuat aplikasi web berbasis AJAX tapi bahasa pemrograman yang kita pakai adalah Java, dibuat oleh team google. Tampilan yang dihasilkan dari aplikasi khas banget dengan ciri google.

2. Jython

Kombinasi antara Java dan Python, Bisa buat aplikasi Python menggunakan Java atau sebaliknya buat aplikasi Java menggunakan Python.

3. JRuby

Kombinasi antara Java dan Ruby. Punya support untuk Ruby on Rails, dengan nama JRuby on Rails. Untuk yang udah denger sebuah bahasa scripting yang namanya ruby, tapi blon nyobain sampe saat ini.

4. QTJambi

Yup, namanya Jambi seperti nama sebuah provinsi di Sumatera. Mungkin idenya dicomot dari Java yang nama sebuah pulau di negara kita juga :-P. QT adalah sebuah windows framework berbasis C++, tapi digabungkan dengan Java sehingga kita bisa pake library QT di bahasa pemrograman Java.

5. ZK

Dengan ZK kita bisa membuat aplikasi web berbasis AJAX untuk JavaEE tanpa perlu ngerti bagaimana sintaks dari AJAX itu sendiri. Hanya tinggal memanggil tag-tag yang perintahnya mirip dengan tag HTML. Tinggal gabungin dengan Servlet atau JSP.

6. Quercus

Kalo yang ini bukan sebuah bahasa pemrograman, tapi sebuah web server yang sanggup menangani PHP dan Servlet. Jadi kita buat program tetep pake PHP, oleh server ini akan diterjemahkan menjadi pustaka Java. Sehingga kita bisa mengimport pustaka Java di source PHP.

Baru 6 aja yang ke-ulik, itu juga masih dasarnya blon sampe pemrograman kompleks. Kayak ada waktu aja untuk mendalami semuanya :-P. Yang penting gak ketinggalan teknologi dulu deh.

[Linux] Mengaktifkan Syntax Highlighting Pada Editor Teks Nano

Wednesday, October 8th, 2008

Masih menggunakan file .nanorc, kita coba mengaktifkan Syntax Highlighting pada editor teks Nano, karena Nano sebenernya dah support untuk pewarnaan tapi secara default tidak ada konfigurasinya. Jadi konfigurasinya harus kita tambahin sendiri.

Untuk menambahkan pewarnaan pada Nano sebenernya harus udah ngerti dulu penggunaan regular expression, tapi di dunia maya sudah tersedia beberapa versi syntax untuk bahasa pemrograman populer.

Ini dicomot dari beberapa situs web.

PHP

syntax "php" "\.php[2345s~]?$"
color brightblue "(.*)\("
 
#Changed this one to a character class instead of "=*|=*|<|>|!":
color blue "\$[a-zA-Z_0-9$]*|[=!<>]"
 
color green "(var|class|function|echo|case|break|default|exit|switch|if|else|elseif|@|while)\s"
color green "[.,{}();]"
 
color red "('.*')|(\".*\")"
 
#Forces regex to stop matching at EOL.
#Sometimes the dot . matches newline as well so this is more portable:
color brightyellow "(#.*|//.*)$"
color brightyellow start="/\*" end="\*/"
 
#not all php open tags are "long"
#I wanted to write (<\?(?!xml)(php)?|\?>) but the parser didn't support it.
color brightblue "(<\?(php)?|\?>)"
 
#unfortunately, this also makes the php tags themselves white.
#But I'll live anyway
color white start="\?>" end="<\?(php)?"

PYTHON

syntax "python" "\.py$"
color brightblue "def [a-zA-Z_0-9]+"
color brightcyan "\<(and|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|map|not|or|pass|print|raise|return|try|while)\>"
color brightgreen "([\"']).*?[^\\]\1"
color brightgreen start="\"\"\"" end="\"\"\""
color brightred "#.*$"

HTML

syntax "HTML" "\.html$"
color blue start="<" end=">"
color red "&[^; ]*;"

C/C++

syntax "c-file" "\.(c|C|cc|cpp|h|H|hh|hpp)$"
color red "\<[A-Z_]{2,}\>"
color green "\<(float|double|bool|char|int|short|long|sizeof|enum|void|static|const|struct|union|typedef|extern|signed|unsigned|inline)\>"
color green "\<(class|printf|namespace|template|public|protected|private|typename|this|friend|virtual|using|mutable|volatile|register|explicit)\>"
color brightyellow "\<(for|if|while|do|else|case|default|switch|goto|continue|break|return)\>"
color brightyellow "\<(try|throw|catch|operator|new|delete)\>"
color brightcyan "^ *# *(define|undef|include|ifn?def|endif|elif|else|if)"
color brightmagenta "'([^\]|(\\['abfnrtv\\]))'" "'\\(([0-7][0-7]?)|([0-3][0-7][0-7]))'" "'\\x[0-9A-Fa-f][0-9A-Fa-f]?'"

JAVA

syntax "Java source" "\.java$"
color green "\<(boolean|byte|char|double|float|int|long|new|short|this|transient|void)\>"
color red "\<(break|case|catch|continue|default|do|else|finally|for|if|return|switch|throw|try|while)\>"
color cyan "\<(abstract|class|extends|final|implements|import|instanceof|interface|native|package|private|protected|public|static|strictfp|super|synchronized|throws|volatile)\>"
color red ""[^\"]*""
color yellow "\<(true|false|null)\>"
color blue "//.*"
color blue start="/\*" end="\*/"
color brightblue start="/\*\*" end="\*/"
color brightgreen,green " +$"

Shell Script

syntax "shellscript" "\.sh$"
color brightgreen "^[a-zA-Z_0-9]+\(\)"
color green "\<(case|do|done|elif|else|esac|exit|fi|for|function|if|in|local|read|return|select|shift|then|time|until|while)\>"
color green "(\{|\}|\(|\)|\;|\]|\[|`|\\|\$|<|>|!|=|&|\|)"
color green "-(e|d|f|r|g|u|w|x|L)\>"
color green "-(eq|ne|gt|lt|ge|le|s|n|z)\>"
color brightblue "\<make\>" "\<(cat|cd|chmod|chown|cp|echo|env|export|grep|install|let|ln|mkdir|mv|rm|sed|set|tar|touch|umask|unset)\>"
color brightred "\$\{?[a-zA-Z_0-9]+\}?"
color yellow "#.*$"
color brightyellow ""(\\.|[^\"])*"" "'(\\.|[^'])*'"

Pascal

syntax "Delphi Source" "\.pas$"
color brightcyan "\<(boolean|byte|char|double|float|integer|long|new|short|this|transient|void)\>"
color brightred "\<(break|case|catch|continue|default|do|else|finally|for|if|then|return|switch|throw|try|while|function)\>"
color cyan "\<(abstract|unit|class|extends|final|implements|import|instanceof|interface|native|package|private|protected|public|static|strictfp|super|$color brightyellow "\<(until|repeat|var|uses|type|begin|end|const)\>"
color magenta "\<(true|false|null|procedure)\>"
color brightblue "//.*"
color brightblue start="\{" end="\}"

Sumber:

http://www.linuxhowtos.org/System/

http://ubuntuforums.org/forumdisplay.php?f=100

http://forums.gentoo.org/viewforum-f-12.html

Technorati : ,
Del.icio.us : ,