Matur Nuwun Sampun Mampir Mugi-Mugi Saget Dados Ilmu Ingkang Manfaat Fiddunya Wal Akherat

Rabu, 06 Agustus 2008

Istilah - istilah Teknologi Informasi

A

ADN - Advanced Digital Network. Biasanya merujuk kepada saluran leased line berkecepatan 56Kbps.

ADSL - Asymetric Digital Subscriber Line. Sebuah tipe DSL dimana upstream dan downstream berjalan pada kecepatan yang berbeda. Dalam hal ini, downstream biasanya lebih tinggi. Konfigurasi yang umum memungkinkan downstream hingga 1,544 mbps (megabit per detik) dan 128 kbps (kilobit per detik) untuk upstream. Secara teori, ASDL dapat melayani kecepatan hingga 9 mbps untuk downstream dan 540 kbps untuk upstream.

Anonymous FTP - Situs FTP yang dapat diakses tanpa harus memiliki login tertentu. Aturan standar dalam mengakses Anonymous FTP adalah dengan mengisikan “Anonymous” pada isian Username dan alamat email sebagai password.

ARPANet - Advanced Research Projects Agency Network. Jaringan yang menjadi cikal-bakal terbentuknya Internet. Dibangun pada akhir dasawarsa 60-an hingga awal dasawarsa 70-an oleh Departemen Pertahanan Amerika Serikat sebagai percobaan untuk membentuk sebuah jaringan berskala besar (WAN) yang menghubungkan komputer-komputer di berbagai lokasi dengan sistem yang berbeda-beda pula namun dapat diakses sebagai sebuah kesatuan untuk dapat saling memanfaatkan resource masing-masing.

ASCII - American Standard Code for Information Interchange. Standar yang berlaku di seluruh dunia untuk kode berupa angka yang merepresentasikan karakter-karakter, baik huruf, angka, maupun simbol yang digunakan oleh komputer. Terdapat 128 karakter standar ASCII yang masing-masing direpresentasikan oleh tujuh digit bilangan biner mulai dari 0000000 hingga 1111111.

B
Backbone - Jalur berkecepatan tinggi atau satu seri koneksi yang menjadi jalur utama dalam sebuah network.

Bandwidth - Besaran yang menunjukkan seberapa banyak data yang dapat dilewatkan dalam koneksi melalui sebuah network.

Binary - Biner. Yaitu informasi yang seluruhnya tersusun atas 0 dan 1. Istilah ini biasanya merujuk pada file yang bukan berformat teks, seperti halnya file grafis.

Bit - BInary digiT. Satuan terkecil dalam komputasi, terdiri dari sebuah besaran yang memiliki nilai antara 0 atau 1.

bps - Bit Per Seconds. Ukuran yang menyatakan seberapa cepat data dipindahkan dari satu tempat ke tempat lain.

Browser - Sebutan untuk perangkat lunak (software) yang digunakan untuk mengakses World Wide Web

Byte - Sekumpulan bit yang merepresentasikan sebuah karakter tunggal. Biasanya 1 byte akan terdiri dari 8 bit, namun bisa juga lebih, tergantung besaran yang digunakan.

C
CGI - Common Gateway Interface. Sekumpulan aturan yang mengarahkan bagaimana sebuah server web berkomunikasi dengan sebagian software dalam mesin yang sama dan bagaimana sebagian dari software (CGI Program) berkomunikasi dengan server web. Setiap software dapat menjadi sebuah program CGI apabila software tersebut dapat menangani input dan output berdasarkan standar CGI.

cgi-bin - Nama yang umum digunakan untuk direktori di server web dimana program CGI disimpan.

Chat - Secara harfiah, chat dapat diartikan sebagai obrolan, namun dalam dunia internet, istilah ini merujuk pada kegiatan komunikasi melalui sarana baris-baris tulisan singkat yang diketikkan melalui keyboard.

D
DNS - Domain Name Service. Merupakan layanan di Internet untuk jaringan yang menggunakan TCP/IP. Layanan ini digunakan untuk mengidentifikasi sebuah komputer dengan nama bukan dengan menggunakan alamat IP (IP address). Singkatnya DNS melakukan konversi dari nama ke angka. DNS dilakukan secara desentralisasi, dimana setiap daerah atau tingkat organisasi memiliki domain sendiri. Masing-masing memberikan servis DNS untuk domain yang dikelola.

DSL - Digital Subscriber Line. Sebuah metode transfer data melalui saluran telepon reguler. Sirkuit DSL dikonfigurasikan untuk menghubungkan dua lokasi yang spesifik, seperti halnya pada sambungan Leased Line (DSL berbeda dengan Leased Line). Koneksi melalui DSL jauh lebih cepat dibandingkan dengan koneksi melalui saluran telepon reguler walaupun keduanya sama-sama menggunakan kabel tembaga. Konfigurasi DSL memungkinkan upstream maupun downstream berjalan pada kecepatan yang berbeda (lihat ASDL) maupun dalam kecepatan sama (lihat SDSL). DSL menawarkan alternatif yang lebih murah dibandingkan dengan ISDN.

Download - Istilah untuk kegiatan menyalin data (biasanya berupa file) dari sebuah komputer yang terhubung dalam sebuah network ke komputer lokal. Proses download merupakan kebalikan dari upload.

Downstream - Istilah yang merujuk kepada kecepatan aliran data dari komputer lain ke komputer lokal melalui sebuah network. Istilah ini merupakan kebalikan dari upstream.

E
Email - Electronic Mail. Pesan, biasanya berupa teks, yang dikirimkan dari satu alamat ke alamat lain di jaringan internet. Sebuah alamat email yang mewakili banyak alamat email sekaligus disebut sebagai mailing list. Sebuah alamat email biasanya memiliki format semacam username@host.domain, misalnya: myname@mydomain.com.

F
Firewall - Kombinasi dari hardware maupun software yang memisahkan sebuah network menjadi dua atau lebih bagian untuk alasan keamanan.

FTP - File Transfer Protocol. Protokol standar untuk kegiatan lalu-lintas file (upload maupun download) antara dua komputer yang terhubung dengan jaringan internet. Sebagian sistem FTP mensyaratkan untuk diakses hanya oleh mereka yang memiliki hak untuk itu dengan mengguinakan login tertentu. Sebagian lagi dapat diakses oleh publik secara anonim. Situs FTP semacam ini disebut Anonymous FTP.

G
Gateway - Dalam pengertian teknis, istilah ini mengacu pada pengaturan hardware maupun software yang menterjemahkan antara dua protokol yang berbeda. Pengertian yang lebih umum untuk istilah ini adalah sebuah mekanisme yang menyediakan akses ke sebuah sistem lain yang terhubung dalam sebuah network.

GPRS - General Packet Radio Service. Salah satu standar komunikasi wireless (nirkabel). Dibandingkan dengan protokol WAP, GPRS memiliki kelebihan dalam kecepatannya yang dapat mencapai 115 kbps dan adanya dukungan aplikasi yang lebih luas, termasuk aplikasi grafis dan multimedia.

H
Home Page/Homepage - Halaman muka dari sebuah situs web. Pengertian lainnya adalah halaman default yang diset untuk sebuah browser.

Host - Sebuah komputer dalam sebuah network yang menyediakan layanan untuk komputer lainnya yang tersambung dalam network yang sama.

HTML - Hypertext Markup Language, merupakan salah satu varian dari SGML yang dipergunakan dalam pertukaran dokumen melalui protokol HTTP.

HTTP - Hyper Text Transfer Protocol. Protokol yang didisain untuk mentransfer dokumen HTML yang digunakan dalam World Wide Web.

HTTPD - Lihat World Wide Web.

I
IMAP - Internet Message Access Protocol. Protokol yang didisain untuk mengakses e-mail. protokol lainnya yang sering digunakan adalah POP.

Internet - Sejumlah besar network yang membentuk jaringan inter-koneksi (Inter-connected network) yang terhubung melalui protokol TCP/IP. Internet merupakan kelanjutan dari ARPANet dan kemungkinan merupakan jaringan WAN yang terbesar yang ada saat ini.

Intranet - Sebuah jaringan privat dengan sistem dan hirarki yang sama dengan internet namun tidak terhubung dengan jaringan internet dan hanya digunakan secar internal.

IP Address - Alamat IP (Internet Protocol), yaitu sistem pengalamatan di network yang direpresentasikan dengan sederetan angka berupa kombinasi 4 deret bilangan antara 0 s/d 255 yang masing-masing dipisahkan oleh tanda titik (.), mulai dari 0.0.0.1 hingga 255.255.255.255.

ISDN - Integrated Services Digital Network. Pada dasarnya, ISDN merupakan merupakan jalan untuk melayani transfer data dengan kecepatan lebih tinggi melalui saluran telepon reguler. ISDN memungkinkan kecepatan transfer data hingga 128.000 bps (bit per detik). Tidak seperti DSL, ISDN dapat dikoneksikan dengan lokasi lain seperti halnya saluran telepon, sepanjang lokasi tersebut juga terhubung dengan jaringan ISDN.

ISP - Internet Service Provider. Sebutan untuk penyedia layanan internet.

L
Leased Line - Saluran telepon atau kabel fiber optik yang disewa untuk penggunaan selama 24 jam sehari untuk menghubungkan satu lokasi ke lokasi lainnya. Internet berkecepatan tinggi biasanya menggunakan saluran ini.

Login - Pengenal untuk mengakses sebuah sistem yang tertutup, terdiri dari username (juga disebut login name) dan password (kata kunci).

M
Mailing List - Juga sering diistilahkan sebagai milis, yaitu sebuah alamat email yang digunakan oleh sekelompok pengguna internet untuk melakukan kegiatan tukar menukar informasi. Setiap pesan yang dikirimkan ke alamat sebuah milis, secara otomatis akan diteruskan ke alamat email seluruh anggotanya. Milis umumnya dimanfaatkan sebagai sarana diskusi atau pertukaran informasi diantara para anggotanya.

MIME - Multi Purpose Internet Mail Extensions. Ekstensi email yang diciptakan untuk mempermudah pengiriman berkas melalui attachment pada email.

MTA - Mail Transport Agent. Perangkat lunak yang bekerja mengantarkan e-mail kepada user. Adapun program untuk membaca e-mail dikenal dengan istilah MUA (Mail User Agent).

MUA - Lihat MTA.

N
Network - Dalam terminologi komputer dan internet, network adalah sekumpulan dua atau lebih sistem komputer yang digandeng dan membentuk sebuah jaringan. Internet sebenarnya adalah sebuah network dengan skala yang sangat besar.

NNTP - Network News Transfer Protocol. protokol yang digunakan untuk mengakses atau transfer artikel yang diposkan di Usenet news. Program pembaca news (news reader) menggunakan protokol ini untuk mengakses news. NNTP bekerja di atas protokol TCP/IP dengan menggunakan port 119.

Node - Suatu komputer tunggal yang tersambung dalam sebuah network.

P
Packet Switching - Sebuah metode yang digunakan untuk memindahkan data dalam jaringan internet. Dalam packet switching, seluruh paket data yang dikirim dari sebuah node akan dipecah menjadi beberapa bagian. Setiap bagian memiliki keterangan mengenai asal dan tujuan dari paket data tersebut. Hal ini memungkinkan sejumlah besar potongan-potongan data dari berbagai sumber dikirimkan secara bersamaan melalui saluran yang sama, untuk kemudian diurutkan dan diarahkan ke rute yang berbeda melalui router.

PERL - Sebuah bahasa pemrograman yang dikembangkan oleh Larry Wall yang sering dipakai untuk mengimplementasikan script CGI di World Wide Web. Bahasa Perl diimplementasikan dalam sebuah interpreter yang tersedia untuk berbagai macam sistem operasi, diantaranya Windows, Unix hingga Macintosh.

POP - Post Office Protocol. Protokol standar yang digunakan untuk mengambil atau membaca email dari sebuah server. protokol POP yang terakhir dan paling populer digunakan adalah POP3. protokol lain yang juga sering digunakan adalah IMAP. Adapun untuk mengirim email ke sebuah server digunakan protokol SMTP.

PPP - Point to Point Protocol. Sebuah protokol TCP/IP yang umum digunakan untuk mengkoneksikan sebuah komputer ke internet melalui saluran telepon dan modem.

Protokol - Protocol. Seperangkat aturan yang mengatur secara tepat format komunikasi antar sistem. Sebagai contoh, protokol HTTP mengatur format komunikasi antara browser web dan browser server. Protokol IMAP mengatur format komunikasi antara server email IMAP dengan klien.

PSTN - Public Switched Telephone Network. Sebutan untuk saluran telepon konvensional yang menggunakan kabel.

R
RFC - Request For Comments. Sebutan untuk hasil dan proses untuk menciptakan sebuah standar dalam internet. Sebuah standar baru diusulkan dan dipublikasikan di internet sebagai sebuah Request For Comments. Proposal ini selanjutnya akan di-review oleh Internet Engineering Task Force (IETF), sebuah badan yang mengatur standarisasi di internet. Apabila standar tersebut kemudian diaplikasikan, maka ia akan tetap disebut sebagai RFC dengan referensi berupa nomor atau nama tertentu, misalnya standar format untuk email adalah RFC 822.

Router - Sebuah komputer atau paket software yang dikhususkan untuk menangani koneksi antara dua atau lebih network yang terhubung melalui packet switching. Router bekerja dengan melihat alamat tujuan dan alamat asal dari paket data yang melewatinya dan memutuskan rute yang harus digunakan oleh paket data tersebut untuk sampai ke tujuan.

S
SDSL - Symmetric Digital Subscriber Line. Salah satu tipe DSL yang memungkinkan transfer data untuk upstream maupun downstream berjalan pada kecepatan yang sama. SDSL umumnya berkerja pada kecepatan 384 kbps (kilobit per detik).

SGML - Standard Generalized Markup Language. Nama populer dari ISO Standard 8879 (tahun 1986) yang merupakan standar ISO (International Organization for Standarization) untuk pertukaran dokumen secara elektronik dalam bentuk hypertext.

SMTP - Simple Mail Transfer Protocol. Protokol standar yang digunakan untuk mengirimkan email ke sebuah server di jaringan internet. Untuk keperluan pengambilan email, digunakan protokol POP.

SSH - Secure Shell. Protokol pengganti Telnet yang memungkinkan akses yang lebih secure ke remote-host.

T
TCP/IP - Transmission Control Protocol/Internet Protocol. Satu set protokol standar yang digunakan untuk menghubungkan jaringan komputer dan mengalamati lalu lintas dalam jaringan. protokol ini mengatur format data yang diijinkan, penanganan kesalahan (error handling), lalu lintas pesan, dan standar komunikasi lainnya. TCP/IP harus dapat bekerja diatas segala jenis komputer, tanpa terpengaruh oleh perbedaan perangkat keras maupun sistem operasi yang digunakan.

Telnet - Perangkat lunak yang didesain untuk mengakses remote-host dengan terminal yang berbasis teks, misalnya dengan emulasi VT100. Penggunaan Telnet sangat rawan dari segi sekuriti. Saat ini penggunaan Telnet telah digantikan oleh protokol SSH dengan tingkat keamanan yang lebih baik.

U
UDP - User Datagram Protocol. Salah satu protokol untuk keperluan transfer data yang merupakan bagian dari TCP/IP. UDP merujuk kepada paket data yang tidak menyediakan keterangan mengenai alamat asalnya saat paket data tersebut diterima.

Upload - Kegiatan pengiriman data (berupa file) dari komputer lokal ke komputer lainnya yang terhubung dalam sebuah network. Kebalikan dari kegiatan ini disebut download.

Upstream - Istilah yang merujuk kepada kecepatan aliran data dari komputer lokal ke komputer lain yang terhubung melalui sebuah network. Istilah ini merupakan kebalikan dari downstream.

URI - Uniform Resource Identifier. Sebuah alamat yang menunjuk ke sebuah resource di internet. URI biasanya terdiri dari bagian yang disebut skema (scheme) yang diikuti sebuah alamat. URI diakses dengan format skema://alamat.resource atau skema:alamat.resource. Misalnya, URI http://yahoo.com menunjukkan alamat resource yahoo.com yang dipanggil lewat skema HTTP Walaupun HTTP adalah skema yang sering digunakan, namun masih tersedia skema-skema lain, misalnya telnet, FTP, News, dan sebagainya.

URL - Uniform Resource Locator. Istilah ini pada dasarnya sama dengan URI, tetapi istilah URI lebih banyak digunakan untuk menggantikan URL dalam spesifikasi teknis.

Usenet - Usenet news, atau dikenal juga dengan nama “Net news”, atau “news” saja, merupakan sebuah buletin board yang sangat besar dan tersebar di seluruh dunia yang dapat digunakan untuk bertukar artikel. Siapa saja dapat mengakses Usenet news ini dengan program-program tertentu, yang biasanya disebut newsreader. Akses ke server news dapat dilakukan dengan menggunakan protokol NNTP atau dengan membaca langsung ke direktori spool untuk news yaitu direktori dimana artikel berada (cara terakhir ini sudah jarang dilakukan).

UUENCODE - Unix to Unix Encoding. Sebuah metode untuk mengkonfersikan file dalam format Biner ke ASCII agar dapat dikirimkan melalui email.

V
VOIP - Voice over IP. VoIP adalah suatu mekanisme untuk melakukan pembicaraan telepon (voice) dengan menumpangkan data dari pembicaraan melalui Internet atau Intranet (yang menggunakan teknologi IP).

VPN - Virtual Private Network. Istilah ini merujuk pada sebuah network yang sebagian diantaranya terhubung dengan jaringan internet, namun lalu lintas data yang melalui internet dari network ini telah mengalami proses enkripsi (pengacakan). Hal ini membuat network ini secara virtual “tertutup” (private).

W
WAP - Wireless Application Protocol. Standar protokol untuk aplikasi wireless (seperti yang digunakan pada ponsel). WAP merupakan hasil kerjasama antar industri untuk membuat sebuah standar yang terbuka (open standard). WAP berbasis pada standar Internet, dan beberapa protokol yang sudah dioptimasi untuk lingkungan wireless. WAP bekerja dalam modus teks dengan kecepatan sekitar 9,6 kbps. Belakangan juga dikembangkan protokol GPRS yang memiliki beberapa kelebihan dibandingkan WAP.

Webmail - Fasilitas pengiriman, penerimaan, maupun pembacaan email melalui sarana web.

WML - Wireless Markup Language. Salah satu turunan dari format HTML yang khusus dikembangkan untuk dipakai pada protokol WAP.

World Wide Web - Sering disingkat sebagai WWW atau “web” saja, yakni sebuah sistem dimana informasi dalam bentuk teks, gambar, suara, dan lain-lain dipresentasikan dalam bentuk hypertext dan dapat diakses oleh perangkat lunak yang disebut browser. Informasi di web pada umumnya ditulis dalam format HTML. Informasi lainnya disajikan dalam bentuk grafis (dalam format GIF, JPG, PNG), suara (dalam format AU, WAV), dan objek multimedia lainnya (seperti MIDI, Shockwave, Quicktime Movie, 3D World). WWW dijalankan dalam server yang disebut HTTPD.

X
XML - Extensible Markup Language. Pengembangan lebih lanjut dari format HTML yang digunakan dalam World Wide Web. XML memiliki sejumlah kelebihan dibandingkan HTML, diantaranya dokumen lebih terstruktur, memungkinkan manipulasi tampilan data tanpa harus berhubungan dengan webserver, serta pertukaran data antar dokumen.

Senin, 04 Agustus 2008

Tips SEO untuk Optimasi Website pada Search Engine

Apa itu SEO?

SEO merupakan singkatan dari Search Engine Optimization, yang berarti melakukan optimasi website agar ditampilkan pada halaman utama / halaman atas pada search engine bila seseorang mengetikkan kata pencarian pada kotak search engine tersebut. Prosesnya adalah seseorang membuka search engine Google, Yahoo, maupun MSN, dan selanjutnnya ia akan mengetikkan kata pencarian pada kotak search engine dan kemudian akan ditampilkan list halaman yang memuat website-website yang sesuai dengan kata pencarian yang diketikkan orang tersebut.

Dengan bermunculannya website-website baru setiap harinya, maka kebutuhan akan search engine sangat penting, yaitu untuk memudahkan mencari informasi dan menampilkan list website-website yang sesuai dengan informasi yang diinginkan. Karena sebagai pengguna internet, ada keterbatasan untuk mengingat maupun menyimpan alamat-alamat website apa saja yang akan dikunjungi kembali nantinya. Karena peran search engine begitu penting dalam menampilkan informasi, maka bagi pemilik website yang websitenya ditampilkan oleh search engine tersebut, akan memberikan keuntungan yang besar, karena traffic yang diberikan dari search engine ke website tersebut tentunya akan meningkat.

Download artikel lebih lanjut dalam file PDF: Tips SEO untuk Optimasi Website pada Search Engine
Kategory : blog/website, Internet dan Web, Bisnis Internet

Penggunaan package, koneksi ke mysql

Berikut ini contoh penggunaan package dan koneksi ke MySQL. Langkah Pertama, kita buat database bernama jurnal, dengan tabel bernama jurnal, yang field-fieldnya tgl, masuk dan keluar, isi tabel tersebut.

Langkah selanjutnya, kita buat file untuk memanggil koneksi,

Berikut ini adalah listing programnya :

/**
*simpan file ini pada folder open
*simpan dengan nama connect.java
*/

package open;
import java.sql.*;

public class connect
{
private String driver=”com.mysql.jdbc.Driver”;
private String koneksi=”jdbc:mysql://localhost/jurnal”;
private String user=”root”;
private String pass=””;

protected Connection con;
protected Statement st;
protected ResultSet rs;

public connect(){}

public void buatkoneksi()throws Exception{
try{
Class.forName(driver);
con=DriverManager.getConnection(koneksi,user,pass);
}catch(Exception e){
System.out.println(”driver tidak ketemu\nada kesalahan koneksi”);
}
}

public boolean gettampiljurnal() throws Exception{
st=con.createStatement();
rs=st.executeQuery(”select * from jurnal”);
return (rs!=null);
}

public boolean getnext()throws Exception{
return rs.next();
}


public String getfield(String f)throws Exception{
return rs.getString(f);
}
}
*******************
compile file di atas
*******************
di luar folder, kita buat file untuk memanggil file koneksi di atas
/**
*simpan dengan nama jurnalmysql.java
*/

import java.sql.*;
import open.connect;
class jurnalmysql extends connect
{
public static void main(String args[])throws Exception{
connect c=new connect();
c.buatkoneksi();
if (c.gettampiljurnal())
{
System.out.println(”tgl masuk keluar saldo”);
int saldo=0;
int saldoakhir=0;
while (c.getnext())
{
String tgl=c.getfield(”tgl”);
int masuk=Integer.parseInt(c.getfield(”masuk”));
int keluar=Integer.parseInt(c.getfield(”keluar”));
saldo=(masuk-keluar);
saldoakhir=saldoakhir+saldo;
System.out.println(””+tgl+” “+masuk+” “+keluar+” “+saldoakhir);
}
System.out.println(”==============================”);
System.out.println(”saldo “+saldoakhir);
}
}
}
***************
compile dan run file di atas
***************
Berikut hasil running-nya
sharpupload.jpg

Kategory : Pemrograman Java, Database

Instalasi Sun Java (JDK) di CentOS-5

Pada CentOS-5 defaultnya telah ada Java, akan tetapi Java yang terpasang adalah GNU Java (versi 1.4.2). seperti terlihat dibawah ini

[helix@helix ~]$ java -version
java version "1.4.2"
gij (GNU libgcj) version 4.1.2 20070626 (Red Hat 4.1.2-14)

Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
[helix@helix ~]$

Nah, gimana caranya jika kita menggunakan Sun Java (JDK 6 update 4) tanpa menghapus GNU Java?. caranya adalah sebagai berikut:
1. download JDK 6 update 4 (paket: jdk-6u4-linux-i586-rpm.bin) click disini
2. berikutnya:

       # chmod +x jdk-6u4-linux-i586-rpm.bin
# ./jdk-6u4-linux-i586-rpm.bin

3. setelah selesai proses instalasi coba lagi perintah di bawah ini:

[root@helix helix]# java -version
java version "1.4.2"
gij (GNU libgcj) version 4.1.2 20070626 (Red Hat 4.1.2-14)

Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
[root@helix helix]#

Ooops…ternyata masih GNU Java. agar defaultnya kita menggunakan Sun Java maka lakukanlah seperti perintah di bawah ini:

        # rm -f /var/lib/alternatives/java
# /usr/sbin/alternatives --install /usr/bin/java java /usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre/bin 1
# /usr/sbin/alternatives --install /usr/bin/java java /usr/java/jdk1.6.0_04/bin 2

periksa apakah Sun Java merupakan default, dengan perintah:

        # /usr/sbin/alternatives --config java

langkah berikutnya adalah membuat file java.sh di direktori /etc/profile.d yang berisikan:

        export JAVA_HOME=”/usr/java/jdk1.6.0_04”
export PATH=”$PATH:$JAVA_HOME/bin”

lalu ubah mode akses dengan perintah:

        # chmod +x /etc/profile.d/java.sh

untuk langkah berikutnya kita coba lihat apakah java yang digunakan adalah Sun Java dengan perintah:

[root@helix helix]# which java
/usr/bin/java
[root@helix helix]# java -version
java version "1.6.0_04"
Java(TM) SE Runtime Environment (build 1.6.0_04-b12)
Java HotSpot(TM) Client VM (build 10.0-b19, mixed mode, sharing)
[root@helix helix]#

Subnetting… gampang2 susah

untuk mempelajari subnetting, tips nya adalah pahami range ip setiap class dan subnet mask defaultnya.

range IP Class A: 1.0.0.0 s/d 126.255.255.255
subnet mask default : 255.0.0.0 atau CIDR: /8
range IP Class B: 128.0.0.0 s/d 191.255.255.255
subnet mask default : 255.255.0.0 atau CIDR: /16
range IP Class C: 192.0.0.0 s/d 223.255.255.255
subnet mask default : 255.255.255.0 atau CIDR/24

dengan subnet mask kita akan dapat memperoleh ip network dan ip broadcast. caranya adalah:
misalkan host ip yang diberikan 192.168.3.112/24

a)ip network:
192.168.3.112, binernya:
11000000.10101000.00000111.01110000
/24 = 255.255.255.0, binernya:
11111111.11111111.11111111.00000000
————————————————— AND
11000000.10101000.00000111.00000000
192 . 168 . 3 . 0

b)ip broadcast:
192.168.3.112, binernya:
11000000.10101000.00000111.01110000
/24 = 255.255.255.0, binernya:
11111111.11111111.11111111.00000000, Invertingkan
00000000.00000000.00000000.11111111
—————————————————- OR
11000000.10101000.00000111.11111111
192 . 168 . 3 . 255

contoh di atas tidak ada dilakukan subnetting.

satu contoh lagi, host ip 202.83.100.74/28

a)ip network
202.83.100.74, binernya:
11001010.01010011.01100100.01001010
/28 = 255.255.255.240, binernya:
11111111.11111111.11111111.11110000
—————————————————- AND
11001010.01010011.01100100.01000000
202 . 83 . 100 . 64

b)ip broadcast
202.83.100.74, binernya:
11001010.01010011.01100100.01001010
/28 = 255.255.255.240, binernya:
11111111.11111111.11111111.11110000, invertingkan
00000000.00000000.00000000.00001111
—————————————————- OR
11001010.01010011.01100100.01001111
202 . 83 . 100 . 79

contoh di atas terjadi subnetting, untuk hitungan yang lebih cepat, kita berpedoman pada subnet mask nya yaitu octet .240, caranya:

karena setiap octet mempunyai nilai 0 s/d 255 maka ada 256 angka, sehingga diperoleh 256-240 = 16 ini adalah block subnet-1 yang valid..berikutnya lakukan kelipatan dari blok subnet-1 ini, sehingga 16,32,48,64,80..dst. nah perhatikanlah nilai host ip diatas yaitu 202.83.100.74 berarti berada antara subnet 64 dan 80. sehingga dapat di simpulkan subnet:64 menjadi network ip 202.83.100.64 dan broadcasnya kita peroleh dari nilai 80-1=79 yaitu 202.83.100.79

catatan:

dalam satu blok subnet ip terendah merupakan ip networknya dan ip tertinggi merupakan ip broadcast. setiap octet terakhir(octet paling kanan) dari ip network pasti merupakan bilangan GENAP dan octet terakhir dari ip broadcast merupakan bilangan GANJIL.

Tabel subnetmask untuk subnetting:

IP Class A:
————————–
CIDR | Subnet Mask
————————–
| 9 | 255.128.0.0
| 10 | 255.192.0.0
| 11 | 255.224.0.0
| 12 | 255.240.0.0
| 13 | 255.248.0.0
| 14 | 255.252.0.0
| 15 | 255.254.0.0
| 16 | 255.255.0.0
| 17 | 255.255.128.0
| 18 | 255.255.192.0
| 19 | 255.255.224.0
| 20 | 255.255.240.0
| 21 | 255.255.248.0
| 22 | 255.255.252.0
| 23 | 255.255.254.0
| 24 | 255.255.255.0
| 25 | 255.255.255.128
| 26 | 255.255.255.192
| 27 | 255.255.255.224
| 28 | 255.255.255.240
| 29 | 255.255.255.248
| 30 | 255.255.255.252

IP Class B:
————————–
CIDR | Subnet Mask
————————–
| 17 | 255.255.128.0
| 18 | 255.255.192.0
| 19 | 255.255.224.0
| 20 | 255.255.240.0
| 21 | 255.255.248.0
| 22 | 255.255.252.0
| 23 | 255.255.254.0
| 24 | 255.255.255.0
| 25 | 255.255.255.128
| 26 | 255.255.255.192
| 27 | 255.255.255.224
| 28 | 255.255.255.240
| 29 | 255.255.255.248
| 30 | 255.255.255.252

IP Class C:
————————–
CIDR | Subnet Mask
————————–
| 25 | 255.255.255.128
| 26 | 255.255.255.192
| 27 | 255.255.255.224
| 28 | 255.255.255.240
| 29 | 255.255.255.248
| 30 | 255.255.255.252

Judul Artikel: Subnetting… gampang2 susah

Penulis : HA Mooduto
Tanggal Terbit : 06 July, 2007
Kategory : Jaringan Komputer

Perbandingan Protocol Wireless LAN

IEEE 802.11 membagi standard utama menjadi tiga sub-standar, yaknik ; 802.11a, 802.11b, dan 802.11g. Berdasarkan table yang ada kita membuat perbandingan dan persamaan antara standard tersebut dan Bluetooth. Bluetooth juga merupakan salah satu alternative teknologi jaringan wireless.

Standar dari 802.11a dan 802.11b dikembangkan pada waktu yang sama, tetapi 802.11b lebih berkembang dan popular untuk membangun jaringan kecil karena perangkat keras bisa didapatkan dengan harga yang lebih murah. Dan didalam perkembangan kedepannya peralatan yang tersedia untuk dibeli dipasaran cocok dengan dua model (802.11 a/b).

Bluetooth hanya support pada range jarak yang pendek ( kira-kira 10 meter) dan bandwidth yang relative rendah (1 Mbps). In practice, Jaringan Bluetooth menggunakan PDA dan Handphone dengan PC tidak bisa digunakan pada jaringan LAN yang luas. Harga yang murah dari Bluetooth membuatnya salah satu solusi untuk perangkat wireless seperti PDA dan Handphone. Catatan standard 801.11 dan Bluetooth tidak compatible dengan yang lain.

802.11 Wireless LAN Standards Comparison


802.11a

802.11b

802.11g

Bluetooth

Data Rate (Mbps)

54

11

54

721Kbps
56Kbps

Operating Frequency (GHz)

5

2.4

2.4

2.4

Typical power output (mw)

40-800

100

100

100

Compatibility

Not compatible with 802.11b or 802.11g

Not compatible with 802.11a or 802.11g

Compatible with 802.11b

Not compatible with 802.11a/b.

Range

150feet

150feet

150feet

30feet

Interference risk

Low

High

High

High

Price

Expensive

Cheap

Moderate

Moderate

Hot-spot access

Poor

Good

Good

Poor

1 feet / ft / kaki = 12 inch = 0,3048 m

Seri 01 : Belajar Database MySQL

MySQL merupakan software sistem manajemen basis data SQL (bahasa Inggris: database management system) atau DBMS yang multithread dan multi-user. MySQL AB membuat MySQL tersedia sebagai software gratis dibawah lisensi GNU General Public License (GPL), tetapi mereka juga menjual dibawah lisensi komersial untuk kasus-kasus dimana penggunaannya tidak cocok dengan penggunaan GPL. MySQL dimiliki dan disponsori oleh sebuah perusahaan komersial Swedia MySQL AB, dimana memegang hak cipta hampir atas semua kode sumbernya. Kedua orang Swedia dan satu orang Finlandia yang mendirikan MySQL AB adalah: David Axmark, Allan Larsson, dan Michael “Monty” Widenius.

Download artikel lengkap : mysql-rahmat-ait.pdf

Kategory : Komputer dan Informatika Dasar, Database

Fungsi Agregat pada MySQL

Fungsi adalah suatu kumpulan instruksi yang menghasilkan sebuah nilai jika dipanggil. Pada SQL dikenal salah satu fungsi yaitu fungsi agregat. Fungsi agregat disediakan oleh SQL untuk menghasilkan sebuah nilai berdasarkan sejumlah data.

Dibawah ini adalah fungsi agregat penting yang disediakan oleh SQL, dimana contoh akan diberikan dengan menggunakan aplikasi DBMS MySQL :

Download artikel lengkap : meri-fungsimysql-ait.pdf

Proteksi Direktori Web Menggunakan .htaccess Pada Linux

Jika anda mempunyai direktori web yang tidak ingin diakses oleh orang lain, maka cara di bawah ini bisa anda terapkan untuk hal tersebut. Metodanya adalah setiap orang yang akses ke direktori web tersebut akan ditampilkan prompt username dan password untuk otentikasi.

Langkah-langkah:

1) Buat file .htaccess yang ditempatkan/disimpan dalam direktori web yang diproteksi misalnya direktori /home/httpd/htdocs, dengan konfigurasi:

AuthUserFile /home/httpd/htdocs/.htpasswd
AuthGroupFile /dev/null
AuthName “Private Administrative Zone”
AuthType Basic

require valid-user

2) Buat file untuk menyimpan data username dan password dengan nama yang tertera pada AuthUserFile, menggunakan perintah:

~# htpasswd -c /home/httpd/htdocs/.htpasswd sibolang
New password:
Re-type new password:
Adding password for user sibolang
~#

.htpasswd adalah file untuk menyimpan username dan passoword (tidak harus dengan nama .htpasswd), username-nya adalah sibolang dan password-nya yang anda isikan. Untuk menambah user lainnya gunakan perintah htpasswd tanpa -c

3) Untuk menghapus user, buka file .htpasswd tersebut dan hapuslah user yang anda inginkan.

4) Jangan lupa untuk mengubah konfigurasi httpd.conf Apache pada home direktori yang diproteksi tersebut, yaitu pada perintah AllowOverride None ke AllowOverride All


Options None
AllowOverride None
Order allow,deny
Allow from all

Menjadi:


Options None
AllowOverride All
Order allow,deny
Allow from all

Judul Artikel: Proteksi Direktori Web Menggunakan .htaccess Pada Linux

Penulis : HA Mooduto
Tanggal Terbit : 08 August, 2007
Kategory : Linux, Keamanan dan Hacking, Aplikasi Server, Internet dan Web

Minggu, 27 Juli 2008

Membangun shared library sendiri

Ratusan sampai ribuan shared library hadir di sistem dan menunjang berbagai aplikasi yang kita gunakan. Ada yang bertugas untuk menangani internal sistem, ada yang bertugas untuk bekerja dengan hardware tertentu, menangani terminal, bekerja dengan XML dan lain sebagainya. Kita pun, tentu bisa membangun shared library sendiri, seperti yang kita bahas di tulisan ini.

Shared library merupakan salah satu cara yang digunakan untuk menjadikan program lebih modular, lebih cepat ketika kompilasi dan lebih mudah ketika update dilakukan. Suatu program dan program lainnya bisa mempergunakan satu shared library yang sama, sehingga dapat pula menghemat ruang kosong harddisk. Keuntungan lainnya, developer program bisa berkonsentrasi penuh pada program yang dibangun, tanpa harus repot-repot memikirkan fungsionalitas yang telah disediakan oleh shared library tertentu. Bagi pengguna yang terbiasa bekerja dengan Windows, shared library di Linux mirip dengan file DLL di Windows.

Dengan mudah, kita bisa mengenali shared library yang terinstall di sistem kita. Kita bisa membuka direktori /lib, atau /usr/lib, dan akan menemukan banyak sekali file dengan nama yang relatif aneh, yang umumnya diawali dengan lib dan memiliki ekstensi nama file .so., dan kemudian terdapat beberapa symbolic link ke file tersebut dengan awalan nama yang sama, namun dengan ekstensi yang lebih sederhana. Sebagai contoh:

$ ls -al /usr/lib/libncurses.so*

lrwxrwxrwx 1 root root 20 2007-06-03 20:37 /usr/lib/libncurses.so -> /lib/libncurses.so.5

lrwxrwxrwx 1 root root 17 2007-06-03 20:29 /usr/lib/libncurses.so.5 -> libncurses.so.5.5

-rwxr-xr-x 1 root root 267584 2006-02-08 12:18 /usr/lib/libncurses.so.5.5

Dari contoh tersebut, yang menampilkan pustaka ncurses, dengan nama file libncurses.so.5.5, yang tersimpan di /usr/lib, bisa kita lihat bahwa:

  • libncurses.so.5 merupakan symbolic link ke libncurses.so.5.5

  • libncurses.so merupakan symbolic link ke libncurses.so.5

Sementara, berikut ini adalah tipe file libncurses.so.5.5 menurut program file:

$ file /usr/lib/libncurses.so.5.5

/usr/lib/libncurses.so.5.5: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), stripped

Dari keluaran program file tersebut, file libncurses.so.5.5 adalah shared object (shared library) 32 bit dengan format ELF.

Penjelasan lebih lanjut tentang nama file dan kenapa sistem symbolic link akan kita bahas di bagian detil nama shared library.

Di tulisan ini, kita akan membahas bagaimana kita membangun shared library kita sendiri, termasuk segala sesuatu yang terkait dengan penggunaan shared library.

Untuk memaksimalkan pembahasan, kita tidak akan membahas terlalu detil tentang penggunaan shared library. Pembahasan tentang penggunaan shared library telah kita lakukan pada edisi .

Semua contoh di tulisan ini dibangun di atas sistem Slackware Linux 11.0, dengan GCC versi 3.4.6, namun seharusnya dapat diterapkan tanpa masalah pada sistem lainnya.

Lebih lanjut dengan nama pustaka

Sebagian besar pustaka umumnya melengkapi dirinya dengan versi mayor, versi minor dan release number. Atau, setidaknya versi mayor dan minor. Mari kita lihat kembali pustaka ncurses yang dibahas sebelumnya, yang tersimpan pada nama file libncurses.so.5.5 (direktori /usr/lib):

  • Nama file diakhiri dengan ekstensi .so (shared object), diikuti oleh versi mayor, versi minor dan release number (apabila ada). Dalam contoh ini, pustaka ncurses tersebut tidak datang dengan release number.

  • Dengan menggunakan penomoran yang jelas, kita bisa mengetahui dengan baik pustaka yang terinstall, terutama kalau pustaka tersebut dirilis cukup sering, dengan perubahan versi yang kecil-kecil.

  • Nama file lengkap suatu pustaka, kita sebut sebagai real name.

  • Ketika kita membangun suatu pustaka, kita perlu menyebutkan secara detil versi pustaka.

Selain real name, kita mengenal pula istilah soname. Soname dari pustaka ncurses sebelumnya adalah libncurses.so.5, yang merupakan symbolic link ke realname libncurses.so.5.5. Berikut ini adalah aturan soname:

  • Pola nama umumnya diawali dengan lib, diakhiri dengan .so dan ..

  • Dalam contoh ncurses tersebut, . adalah .5.

  • Ketika suatu program menyatakan membutuhkan suatu pustaka, maka program tersebut umumnya cukup menyatakan membutuhkan soname, bukan realname. Jadi, program membutuhkan libncurses.so.5, bukannya libncurses.so.5.5.

Selain realname dan soname, kita mengenal pula linker name. Linker name dari pustaka ncurses sebelumnya adalah libncurses.so, yang merupakan symbolic link ke soname libncurses.so.5. Linker name sendiri adalah symbolic link ke soname atau realname terbaru. Di contoh ini, linker name adalah symbolic ke soname.

Mekanisme penggunaan symlink seperti ini akan memudahkan proses update sistem, termasuk memudahkan pula, apabila program tertentu membutuhkan pustaka versi berbeda.

Melihat kebutuhan pustaka

Di Linux, sangat mudah bagi kita untuk melihat pustaka-pustaka apa saja yang dibutuhkan oleh suatu program. Kita cukup mempergunakan program ldd. Sebagai contoh, kita akan melihat pustaka-pustaka apa saja yang dibutuhkan program program ls (1):

$ ldd /bin/ls

linux-gate.so.1 => (0xffffe000)

librt.so.1 => /lib/tls/librt.so.1 (0xb7ed3000)

libc.so.6 => /lib/tls/libc.so.6 (0xb7da4000)

libpthread.so.0 => /lib/tls/libpthread.so.0 (0xb7d92000)

/lib/ld-linux.so.2 (0xb7eec000)

Bisa kita lihat bahwa program ls membutuhkan:

  • linux-gate.so.1 (akan dibahas kemudian)

  • ld-linux.so.2 (akan dibahas kemudian)

  • libc.so.6, yang merupakan pustaka mendasar sistem, yaitu pustaka C (GNU C library).

  • libpthread.so.0.

  • librt.so.1.

Bisa kita lihat, program ls membutuhkan soname dan bukannya realname. Di sistem penulis, realname dari librt.so.1 adalah librt-2.3.6.so, seperti pada keluaran perintah ls berikut:

$ ls -al /lib/tls/librt*

-rwxr-xr-x 1 root root 34763 2006-09-14 14:54 /lib/tls/librt-2.3.6.so*

lrwxrwxrwx 1 root root 14 2007-06-03 20:35 /lib/tls/librt.so.1 -> librt-2.3.6.so*

Ketika suatu program membutuhkan pustaka tertentu namun pustaka yang dibutuhkan tidak bisa ditemukan, ldd akan menampilkan not found seperti pada contoh berikut:

$ ldd ./test_matematika

linux-gate.so.1 => (0xffffe000)

libmatematika.so.0 => not found

libc.so.6 => /lib/tls/libc.so.6 (0xb7dbe000)

/lib/ld-linux.so.2 (0xb7efe000)

Dan, program tersebut pun tidak dapat dijalankan:

$ ./test_matematika

./test_matematika: error while loading shared libraries: libmatematika.so.0: cannot open shared object file: No such file or directory

Menarik bukan? Bagi Anda yang ingin melihat detil cara kerja program ldd, bukalah /usr/bin/ldd dengan text editor Anda.

Ld-linux.so.2

Ketika kita menjalankan suatu program di Linux, secara otomatis, program loader juga akan dijalankan. Program loader ini berfungsi untuk menemukan dan menjalankan semua shared library yang dibutuhkan oleh program tersebut.

Program loader di Linux, seperti pada contoh program ls sebelumnya, tersimpan pada /lib/ld-linux.so.2.

Kemanakah loader akan mencari pustaka? Kita akan membahasnya setelah ini.

Lokasi pencarian pustaka

Lokasi pustaka sistem tidak harus selalu di /usr/lib atau di /lib, melainkan di mana saja, walaupun /lib, /usr/lib dan /usr/local/lib merupakan tempat-tempat yang dikhususkan untuk pustaka.

Kita bisa mendefinisikan lokasi pustaka di file /etc/ld.so.conf. Berikut ini adalah contoh /etc/ld.so.conf di sistem penulis:

$ cat /etc/ld.so.conf

/usr/local/lib

/usr/X11R6/lib

/usr/i486-slackware-linux/lib

/opt/kde/lib

/usr/lib/qt/lib

Tambahkanlah lokasi pustaka Anda di baris baru di file ini, kemudian jalankanlah ldconfig untuk membuat cache pustaka. Cache yang dihasilkan akan disimpan di /etc/ld.so.cache, yang selanjutkan akan diload oleh program loader.

Setiap kali pustaka sistem bertambah, berkurang atau mengalami perubahan, jalankanlah program ldconfig.

Linux-gate.so.1

Ketika kita mempergunakan program ldd untuk melihat kebutuhan pustaka suatu program, ldd akan menampilkan path ke pustaka yang dibutuhkan. Namun, tidak untuk linux-gate.so.1. Bahkan, ketika kita mencari ke file sistem, kita juga tidak akan menemukan file ini.

Lantas, kalau tidak terdapat di file sistem, dimana kita bisa menemukan file ini? Dan mengapa pula kalau file tidak tersedia, ldd tidak menampilkan pesan not found?

Linux-gate.so.1 sebenarnya pemetaan ke virtual shared library yang dibuat oleh kernel. Virtual shared library digunakan untuk memilih interface terbaik untuk menjalankan system call tergantung pada CPU.

Dengan demikian, kita tidak perlu mencari keberadaan linux-gate.so.1.

Variabel untuk pencarian pustaka

Seperti disebutkan sebelumnya, lokasi pustaka didefinisikan di /etc/ld.so.conf. Sayangnya, hanya root yang berhak menulis ke file tersebut.

Bagaimana kalau suatu program membutuhkan pustaka tertentu, dimana:

  • lokasinya tidak terdaftar di /etc/ld.so.conf

  • kita tidak mungkin mengopikan pustaka tersebut ke lokasi-lokasi yang terdaftar di /etc/ld.so.conf

  • kita tidak memiliki hak root

Solusinya adalah: gunakan environment variabel LD_LIBRARY_PATH. Aturan penggunaannya sama dengan variabel PATH, yaitu direktori-direktori dideretkan dipisahkan oleh titik dua (:).

Sebagai contoh penggunaan, kita menambahkan direktori aktif (.) dan /mylib ke dalam lokasi pencarian pustaka, dengan tetap mempertahankan isi variabel LD_LIBRARY_PATH sebelumnya:

$ export LD_LIBRARY_PATH=.:/mylib:$LD_LIBRARY_PATH

LD_DEBUG

Environment Variabel yang satu ini sangat berguna ketika kita ingin melihat detil informasi yang berhubungan dengan penggunaan library.

Nilai-nilai yang bisa diassign ke variabel ini:

  • files: menampilkan file yang diproses dan pustaka apa yang dibutuhkan

  • bindings: menampilkan informasi tentang symbol binding

  • libs: menampilkan search path pustaka

  • versions: menampilkan ketergantungan versi tertentu

  • reloc: menampilkan informasi pemrosesan relokasi

  • statistics:menampilkan statistik relokasi

  • unused: menampilkan dynamic shared object yang tidak digunakan

  • all

  • help

Contoh:

$ LD_DEBUG=files /bin/ls

3127:

3127: file=librt.so.1 [0]; needed by /bin/ls [0]

3127: file=librt.so.1 [0]; generating link map

3127: dynamic: 0xb7eeaeec base: 0xb7ee4000 size: 0×0000724c

3127: entry: 0xb7ee5d60 phdr: 0xb7ee4034 phnum: 9

3127:

3127:

3127: file=libc.so.6 [0]; needed by /bin/ls [0]

3127: file=libc.so.6 [0]; generating link map

3127: dynamic: 0xb7edfd5c base: 0xb7db5000 size: 0×0012ecdc

3127: entry: 0xb7dc9f10 phdr: 0xb7db5034 phnum: 10

3127:

3127:

3127: file=libpthread.so.0 [0]; needed by /lib/tls/librt.so.1 [0]

3127: file=libpthread.so.0 [0]; generating link map

3127: dynamic: 0xb7db1ed0 base: 0xb7da3000 size: 0×000111d8

3127: entry: 0xb7da7810 phdr: 0xb7da3034 phnum: 9

3127:

3127:

3127: calling init: /lib/tls/libpthread.so.0

3127:

3127:

3127: calling init: /lib/tls/libc.so.6

3127:

3127:

3127: calling init: /lib/tls/librt.so.1

3127:

3127:

3127: initialize program: /bin/ls

3127:

3127:

3127: transferring control: /bin/ls

3127:

bin boot dev etc home lib media mnt opt proc root sbin sys tmp usr var

3127:

3127: calling fini: /lib/tls/librt.so.1 [0]

3127:

3127:

3127: calling fini: /lib/tls/libpthread.so.0 [0]

3127:

3127:

3127: calling fini: /lib/tls/libc.so.6 [0]

3127:

Mempergunakan bantuan LD_DEBUG=files, kita bisa pula mendapatkan pustaka yang dibutuhkan oleh suatu program:

$ LD_DEBUG=files /bin/ls 2> /tmp/needed

bin boot dev etc home lib media mnt opt proc root sbin sys tmp usr var

$ cat /tmp/needed | grep -i needed

3162: file=librt.so.1 [0]; needed by /bin/ls [0]

3162: file=libc.so.6 [0]; needed by /bin/ls [0]

3162: file=libpthread.so.0 [0]; needed by /lib/tls/librt.so.1 [0]

Pustaka pertama: libmyhelloworld

Berikut ini, kita akan membangun pustaka pertama kita, yang akan kita berinama libmyhelloworld. Fungsi yang bisa kita pergunakan adalah:

void myhelloworld (void);

Fungsi tersebut akan mencetak tulisan My Hello World.

Membangun shared library

Untuk membangun pustaka libmyhelloworld, pertama-tama, kita akan menyiapkan dua buah file: myhelloworld.c dan myhelloworld.h.

Berikut ini adalah isi dari myhelloworld.h:

void myhelloworld (void);

Berikut ini adalah isi dari myhelloworld.c:

#include

void myhelloworld(void)

{

fprintf (stdout, “My Hello World\n”);

}

Setelah itu, kita akan melakukan kompilasi:

$ gcc -fPIC -c myhelloworld.c

Setelah perintah ini dilakukan, kita akan mendapatkan myhelloworld.o. Opsi -fPIC akan mengenable Position Independent Code, yang dibutuhkan oleh sebuah shared library.

$ gcc -shared -Wl,-soname,libmyhelloworld.so.0 -olibmyhelloworld.so.0.0 myhelloworld.o

Setelah perintah ini dilakukan, kita akan mendapatkan libmyhelloworld.so.0.0, yang merupakan pustaka yang ingin kita bangun. Dalam proses kompilasi, kita menyebutkan soname libmyhelloworld.so.0.

Selanjutnya, seperti telah dibahas di awal tulisan, kita membuat soname berupa symlink ke realname libmyhelloworld.so.0.0:

$ ln -sf libmyhelloworld.so.0.0 libmyhelloworld.so.0

Dan, tidak lupa pula kita membuat linker name, berupa symlink ke soname libmyhelloworld.so.0:

$ ln -sf libmyhelloworld.so.0 libmyhelloworld.so

Selesai sudah. Pustaka tersebut bisa digunakan seperti halnya shared library lainnya di sistem. Anda bisa mengopikannya ke lokasi yang terdaftar di /etc/ld.so.conf atau mempergunakan variabel LD_LIBRARY_PATH.

Membangun program pengguna

Berikut ini, kita akan membangun program test_myhelloworld, yang akan mempergunakan shared library libmyhelloworld.so.0, yang kita bangun sebelumnya.

Berikut ini adalah source code test_myhelloworld.c:

#include “myhelloworld.h”

int main(void)

{

myhelloworld();

return 0;

}

Di dalam source code, kita cukup memanggil fungsi myhelloworld() yang disediakan oleh pustaka libmyhelloworld.so.0.

Selanjutnya, lakukanlah kompilasi dan link dengan perintah berikut:

$ gcc -o test_myhelloworld test_myhelloworld.c -L. -lmyhelloworld

Setelah itu, akan terbentuk sebuah program dengan nama test_myhelloworld.

Contoh output:

$ LD_LIBRARY_PATH=. ./test_myhelloworld

My Hello World

Melihat kebutuhan pustaka

$ LD_LIBRARY_PATH=. ldd test_myhelloworld

linux-gate.so.1 => (0xffffe000)

libmyhelloworld.so.0 => ./libmyhelloworld.so.0 (0xb7f34000)

libc.so.6 => /lib/tls/libc.so.6 (0xb7df6000)

/lib/ld-linux.so.2 (0xb7f38000)

Pustaka kedua: libmatematika

Pustaka yang kedua ini lebih sedikit kompleks dan melibatkan penggunaan beberapa file source code. Berikut ini adalah fungsi yang disediakan:

double kuadrat (double x);

double lebihbesar (double x, double y);

double lebihkecil (double x, double y);

Fungsi-fungsi tersebut akan bekerja sesuai namanya: menghitung kuadrat, mencari bilangan yang lebih besar dari dua bilangan dan mencari bilangan yang lebih kecil dari dua bilangan.

Membangun shared library

Untuk membangun pustaka, kita akan menyiapkan file:

  • matematika.h, header yang akan menginclude header-header fungsi yang disediakan. Pengguna yang ingin mempergunakan libmatematika cukup menginclude file ini.

  • kuadrat.h dan kuadrat.c

  • lebihbesar.h dan lebihbesar.c

  • lebihkecil.h dan lebihkecil.c

Berikut ini adalah isi dari kuadrat.h:

double kuadrat (double x);

Berikut ini adalah isi dari kuadrat.c:

double kuadrat (double x)

{

return x * x;

};

Berikut ini adalah isi dari lebihbesar.h:

double lebihbesar (double x, double y);

Berikut ini adalah isi dari lebihbesar.c:

double lebihbesar (double x, double y)

{

if (x > y)

return x;

else if (x <>

return y;

else

return 0;

};

Berikut ini adalah isi dari lebihkecil.h:

double lebihkecil (double x, double y);

Berikut ini adalah isi dari lebihkecil.c:

double lebihkecil (double x, double y)

{

if (x <>

return x;

else if (x > y)

return y;

else

return 0;

};

Berikut ini adalah isi dari matematika.h:

#include “kuadrat.h”

#include “lebihbesar.h”

#include “lebihkecil.h”

Lakukanlah kompilasi dengan perintah-perintah berikut:

$ gcc -fPIC -c kuadrat.c

$ gcc -fPIC -c lebihbesar.c

$ gcc -fPIC -c lebihkecil.c

Setelah kompilasi, akan terbentuk object kuadrat.o, lebihbesar.o dan lebihkecil.o.

$ gcc -shared -Wl,-soname,libmatematika.so.0 -olibmatematika.so.0.0 kuadrat.o lebihbesar.o lebihkecil.o

Setelah ini, kita akan mendapatkan libmatematika.so.0.0.

Selanjutnya, kita akan membuat symlink untuk soname dan linker name:

$ ln -sf libmatematika.so.0.0 libmatematika.so.0

$ ln -sf libmatematika.so.0 libmatematika.so

Pustaka libmatematika.so.0.0 pun selesai kita buat dan bisa segera dipergunakan.

Membangun program pengguna

Berikut ini, kita akan membangun program test_matematika, yang akan mempergunakan shared library libmatematika.so.0, yang kita bangun sebelumnya.

Berikut ini adalah source code test_matematika.c:

#include

#include “matematika.h”

int main(void)

{

fprintf (stdout, “25 kuadrat = %f\n”, kuadrat(25));

fprintf (stdout, “Bilangan terbesar antara 10 dan 20 adalah %f\n”, lebihbesar(10,20));

fprintf (stdout, “Bilangan terkecil antara 10 dan 20 adalah %f\n”, lebihkecil(10,20));

return 0;

}

Selanjutnya, lakukanlah kompilasi dan link dengan perintah berikut:

$ gcc -o test_matematika test_matematika.c -L. -lmatematika

Setelah itu, akan terbentuk sebuah program dengan nama test_matematika.

Contoh output:

$ LD_LIBRARY_PATH=. ./test_matematika

25 kuadrat = 625.000000

Bilangan terbesar antara 10 dan 20 adalah 20.000000

Bilangan terkecil antara 10 dan 20 adalah 10.000000

Melihat kebutuhan pustaka

$ LD_LIBRARY_PATH=. ldd test_matematika

linux-gate.so.1 => (0xffffe000)

libmatematika.so.0 => ./libmatematika.so.0 (0xb7f2f000)

libc.so.6 => /lib/tls/libc.so.6 (0xb7df1000)

/lib/ld-linux.so.2 (0xb7f33000)

rpath yang (mungkin) berguna

Selama ini, dalam konteks penggunaan pustaka, kita selalu memandang dari sisi pencarian pustaka oleh program loader. Dengan demikian, kita akan berbicara tentang lokasi pustaka yang ditentukan oleh /etc/ld.so.conf atau variabel LD_LIBRARY_PATH.

Sebenarnya, kita bisa pula mengatur agar lokasi pustaka dihardcode ke dalam program atau pustaka pada saat linking. Sebagai contoh, kita bisa mengatur agar lokasi pencarian di-hardcode ke direktori aktif.

Program contoh yang akan dipergunakan adalah test_matematika. Masih di direktori yang sama, kita akan melakukan kompilasi ulang agar program test_matematika selalu mencari juga ke direktori aktif:

$ gcc -Wl,-rpath,. -o test_matematika test_matematika.c -L. -lmatematika

Sebagai catatan, perbedaan dengan perintah sebelumnya adalah kita menambahkan -Wl,-rpath,. (jangan lupakan titik terakhir).

Setelah perintah ini dilakukan, program test_matematika akan dihasilkan. Berbeda dengan sebelumnya, program ini akan selalu mencari ke direktori aktif sehingga penambahan lokasi pustaka di /etc/ld.so.conf dan variabel LD_LIBRARY_PATH tidak diperlukan.

Bagi pengguna yang ingin mengetahui informasi RPATH yang dikompilasi ke dalam executable, gunakanlah program objdump dengan argumen -p. Contoh:

$ objdump -p test_matematika

test_matematika: file format elf32-i386

Dynamic Section:

NEEDED libmatematika.so.0

NEEDED libc.so.6

RPATH .

Dynamic load shared library

Semua pembahasan sebelumnya memfokuskan pada pembuatan dan penggunaan shared library secara langsung. Dengan demikian, program yang dihasilkan akan ‘membutuhkan’ shared library tertentu pada saat eksekusi. Apabila shared library tersebut tidak ditemukan, maka program tidak dapat berjalan.

Bagaimana kalau Anda membutuhkan kondisi dimana suatu pustaka adalah opsional. Apabila ada, maka akan di-load. Apabila tidak ada, program tetap dapat berjalan. Hal seperti ini mirip dengan konsep plugin, dimana suatu pustaka diload hanya kalau dibutuhkan saja.

Untuk memungkinkan hal ini terjadi, kita akan membaca shared library secara dynamic load. Caranya sedikit lebih repot dari contoh penggunaan sebelumnya.

Pustaka contoh yang dipergunakan adalah libmatematika.so.0. Program contoh yang akan membuka pustaka secara dynamic akan disimpan pada dl_test_matematika.c:

#include

#include

int main(void)

{

void *handle_matematika;

double (*kuadrat) (double);

double (*lebihbesar) (double,double);

double (*lebihkecil) (double,double);

handle_matematika = dlopen(”./libmatematika.so”, RTLD_LAZY);

kuadrat = dlsym(handle_matematika, “kuadrat”);

lebihbesar = dlsym(handle_matematika, “lebihbesar”);

lebihkecil = dlsym(handle_matematika, “lebihkecil”);

fprintf (stdout, “25 kuadrat = %f\n”, (*kuadrat)(25));

fprintf (stdout, “Bilangan terbesar antara 10 dan 20 adalah %f\n”, (*lebihbesar) (10,20));

fprintf (stdout, “Bilangan terkecil antara 10 dan 20 adalah %f\n”, (*lebihkecil) (10,20));

dlclose (handle_matematika);

return 0;

}

Penjelasan:

  • Kita tidak mempergunakan matematika.h karena akan melakukan loading secara dynamic. Untuk itu, kita membutuhkan header dlfcn.h.

  • Kita menyiapkan beberapa struktur data untuk handle pustaka dan fungsi yang ingin dipergunakan:

void *handle_matematika;

double (*kuadrat) (double);

double (*lebihbesar) (double,double);

double (*lebihkecil) (double,double);

  • Dengan dlopen(), kita bisa membuka pustaka secara dynamic:

handle_matematika = dlopen(”./libmatematika.so”, RTLD_LAZY);

  • Selanjutnya, setelah pustaka dibuka, kita bisa merujuk ke fungsi yang dibutuhkan dengan dlsym():

kuadrat = dlsym(handle_matematika, “kuadrat”);

lebihbesar = dlsym(handle_matematika, “lebihbesar”);

lebihkecil = dlsym(handle_matematika, “lebihkecil”);

  • Dan, mempergunakan struktur data yang telah disiapkan sebelumnya, kita bisa mempergunakan fungsi yang telah dirujuk:

fprintf (stdout, “25 kuadrat = %f\n”, (*kuadrat)(25));

  • Setelah menggunakan, kita menutup dengan dlclose()

dlclose (handle_matematika);

Lakukanlah kompilasi dengan perintah berikut ini:

$ gcc -o dl_test_matematika dl_test_matematika.c -ldl

Program ldd tidak menampilkan bahwa kita membutuhkan libmatematika.so.0:

$ ldd dl_test_matematika

linux-gate.so.1 => (0xffffe000)

libdl.so.2 => /lib/tls/libdl.so.2 (0xb7f71000)

libc.so.6 => /lib/tls/libc.so.6 (0xb7e42000)

/lib/ld-linux.so.2 (0xb7f86000)

Namun, program tetap dapat mempergunakan fungsionalitas libmatematika.so.0:

$ ./dl_test_matematika

25 kuadrat = 625.000000

Bilangan terbesar antara 10 dan 20 adalah 20.000000

Bilangan terkecil antara 10 dan 20 adalah 10.000000

Seru bukan?

Sampai di sini dulu pembahasan kita. Sampai ketemu di kesempatan lainnya. Selamat mengembangkan!

Tinggalkan Pesan

Get cash from your website. Sign up as affiliate.Join 4Shared Now! affiliate program

EARN CASH FROM YOUR SITE

Turn your valuable site visitors into income. Work online and join our free money making partner program. We offer the most commission rate to help maximize your income stream.

Join our money making program absolutely no charge and 100% risk free.

Sign Up...

Mountain a constant stream of money

Our money making system helps you to establish a constant stream of cash, 24 hours a day, 7 days a week, 365 days a year. Allowing you more time to focus on the things you love. You'll even receive money while you sleep!

Start receiving steady affiliate revenue

This money earn program really can make you profit on the same day. Start collecting serious partner income with almost no effort at all. This is a serious revenue opportunity, the first step for you to build a steady, reliable, long-time profitable business.

A constant money generator

Imagine running of a something that never failed to provide you with income-flow. A earning money program so amazingly profitable that you never had to work for a boss ever again!

Lotta Rewards Lotta Rewards