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

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!

Membuat Blog Bersahabat dengan Search Engine

Banyak teman, banyak rejeki. Itulah yang kita yakini sejak zaman kakek-nenek kita dulu. Karena biasanya temanlah yang akan selalu menemani kita baik saat senang maupun susah. Misal, tengah senang karena kelahiran putra pertama, pasti kawan ikut kita hubungi. Begitupun kalau sedang kesulitan keuangan, pasti temanlah tempat pertama mencari bantuan …

Teman pula yang biasanya selalu mendorong kemajuan kita. Lewat motivasinya, kita didukung untuk terus melaju. Peluang-peluang bisnis pun tak jarang yang datang karena ikatan pertemanan. Pendeknya, punya teman tak ada ruginya. Justru selalu mendatangkan keuntungan.

Begitupun dalam hal ngeblog. Kita juga harus punya banyak teman. Biar traffic blog kita bisa cepat menjulang. Tanpa punya teman, bisa dipastikan blog kita akan kekurangan pengunjung. Tak ada yang mau peduli terhadap blog yang kita punya. Tak ada yang memberi saran, kritikan, maupun pujian. Karena itu, perbanyaklah punya teman.

Dalam urusan ngeblog, teman pertama yang wajib anda punya adalah search engine. Kenapa? Ya karena lewat search engine lah biasanya pemakai internet mencari informasi. Kalau blog anda tak tampil di search engine, pasti tak banyak yang bakal tahu dan datang ke blog anda. Dengan bersahabat baik dengan search engine, sangat mungkin blog anda berada di urutan teratas hasil pencarian search engine.

Untuk menjadi sahabat search engine, tentu blog anda anda harus dikenal terlebih dulu olehnya. Tujuannya supaya blog anda tercantum dan diindeks oleh search engine. Inilah tahap penting pertama yang harus anda lalui.

Secara umum, ada dua cara untuk melakukannya.

Pertama, anda diam saja menunggu search engine menengok blog anda. Bila anda memilih cara ini, saya sarankan memakai Blogger atau Wordpress. Sebab konon blog di kedua penyedia ini akan terindeks secara otomatis ke search engine paling lama dua hari.

Cara kedua adalah dengan berinisiatif menemui search engine. Daftarkan blog anda pada mereka. Tak harus semua search engine, cukup pilih search engine terkemuka saja seperti Google, Yahoo, dan MSN.

Kalau anda sudah kadung punya blog selain di Blogger dan Wordpress, memang membutuhkan waktu lebih lama buat search engine untuk menemukan blog anda. Tapi tak usah khawatir, ada cara yang bisa mempercepatnya.

Buatlah link dengan blog atau website lain. Biasanya ketika si spidernya search engine mengunjungi sebuah blog/website, ia juga akan memeriksa link-linknya. Buatlah link sebanyak mungkin agar blog anda cepat ditemukan search engine. Serta pilih blog yang populer atau banyak pengunjungnya. Karena blog yang terkenal biasanya sering didatangi spider-nya search engine.

Saya yakin kalau anda lakukan itu, dalam sehari blog anda sudah nongol di search engine.

Mudah kan? So, kenalanlah dan bersahabatlah dengan search engine…

Dapatkan tips-tips menarik lainnya di www.mesinuangku.com

Tentang Artikel Ini

Bagaimana Mempromosikan Blog agar Mendatangkan Duit Melimpah

Bagaimana blog anda? Apakah sudah dibanjiri komentar? Apakah pundi-pundi uang juga sudah memenuhi kantong anda? Baiklah. Kalau anda merasa blog yang anda punya belum cukup ramai sehingga aliran uang anda tersendat, sekarang mari kita coba lebih gencar untuk mempromosikan blog kita. Tapi sebelumnya, anda perlu baca dulu bagaimana cara blog anda agar dibanjiri komentar.

Pasti anda tahu, di internet ada ribuan blog. Kalau tak pintar-pintar memasarkan blog, bisa jadi sama sekali tidak dilirik pengunjung. Ini sama artinya kerja keras anda sia-sia. Karena blog yang anda buat dan kelola sama sekali tidak mendapat pembaca. Itu lama-lama juga akan membuat anda bangkrut. Duit yang anda keluarkan untuk ngeblog, sama sekali tidak balik modal.

Biar blog anda tidak mengalami nasib seperti itu, anda boleh praktekkan jurus-jurus memasarkan blog yang bisa mendatangkan traffic membludak dan uang melimpah di bawah ini. Semua jurus di bawah ini boleh anda jajal satu persatu asal terus konsisten sampai berhasil.

*

Ikut aktif di Forum. Ikut aktif di forum bisa jadi cara yang ampuh. Tapi jangan sembarang pilih forum. Pilih forum yang memiliki banyak anggota. Lalu aktiflah ikut cuap-cuap di sana. Jangan malu juga menunjukkan kelebihan anda. Buat semua member forum jadi tahu kalau anda punya suatu kelebihan. Dan jangan lupa sisipkan nama blog anda setiap habis memberi komentar. Dengan cara ini blog anda akan lebih cepat dikenal. Anggota member forum akan berbondong-bondong mendatangi blog anda. Selain karena penasaran, mungkin mereka mau kenalan lebih dalam dengan anda. ;)
*

Berkomentar di blog yang ramai dan usahakan jadi komentator pertama. Cara lainnya, cari blog yang ramai pengunjungnya dan begitu ada posting baru segera beri komentar. Dengan begitu banyak keuntungan yang bisa anda dapat. Selain bisa berkenalan dengan pemilik blog, juga jadi tambah kawan dari blogger lainnya, dengan memberi komentar di awal membuat akan sering dibaca oleh pengunjung berikutnya. Ingat, selain membaca artikel, pengunjung juga suka membaca komentar! Kalau mereka tertarik dengan komentar anda, mereka pasti akan datang ke blog anda.
*

Gabung dengan carnival blog. Blog komunitas jenis ini adalah blog yang terdiri dari beragam blog dengan beragam topic artikel. Bingung? Gampangnya ingat-ingat kalau pas ada karnaval lewat di depan rumah. Pesertanya pasti bermacam-macam. Ada yang jadi polisi, dokter, dan lainnya. Begitupun dengan blog jenis ini. Isinya bermacam-macam. Dan terkadang diformat seperti majalah. Yang dalam setiap edisinya terdiri dari berbagai tulisan dari berbagai blog. Ikut gabung saja blog anda ke dalamnya. Salah satu contoh carnival blog seperti ini.
*

Gabung dengan blog network. Untuk memperluas jaringan anda bisa manfaatkan blog network. Blog network yang cukup baik seperti ini dan ini.
*

Daftarlah di blog directory. Biar pengunjung mudah menemukan blog anda, tak ada salahnya mendaftarkan blog anda di blog directory. Banyak macam blog directory yang bisa anda pilih. Coba ketik di search engine kata “blog directories”, dan pilih blog directory yang ramai dan bonafid.
*

Daftar di article directories. Artikel terbaik anda bisa didaftarkan di article directories. Sehingga lebih banyak lagi pembaca yang tahu tentang anda. Tunjukkan kepakaran anda dalam tulisan tersebut, supaya pembaca tertarik untuk datang ke blog anda. Cari article directories yang anda suka di Google atau Yahoo.
*

Daftar di Google Sitemaps. Supaya blog yang anda buat bisa lebih bersahabat dengan Google, anda bisa manfaatkan Google Sitemaps.
*

Berikan hadiah. Jangan pelit-pelit! Berikan pengunjung blog anda hadiah jika mengunjungi blog anda. Hadiah seperti ebook atau yang lainnya, akan mempererat hubungan dengan pembaca blog anda. Sehingga blog anda bisa cepat ramai.
*

Buat hubungan dengan blogger lain. Ini memang resep kuno, tapi selalu terbukti manjur. Punya banyak teman akan sangat menguntungkan anda. Jalin hubungan dengan blogger lain. Kunjungi blog mereka dan beri komentar. Amati selalu perkembangan blog mereka dan beri tanggapan. Ini untuk menumbuhkan ikatan bagi sesama blogger.
*

Ikuti juga mailing list. Milis juga bisa mendongkrak pengunjung blog anda. Cari milis yang sesuai dengan topik blog anda dan anggotanya banyak. Cari di yahoogroups. Dan begitu bergabung, aktiflah di sana. Bukan cuma mempromosikan tentang blog yang anda buat, tapi juga bagikan pengetahuan anda. Kalau bisa, buat diri anda sebagai master di milis tersebut sebagai tempat bertanya member lainnya. Pasti nantinya member tersebut akan datang ke blog anda.
*

Manfaatkan social media. Selain bergaul dengan sesama blogger, media sosial juga bisa anda manfaatkan. Facebook misalnya bisa anda gunakan untuk mencari dan mengumpulkan teman-teman lama anda. Myspace dan Friendster juga bisa anda coba.
*

Jawab di Yahoo Answer. Sesekali kunjungi Yahoo Answer dan jawab pertanyaan di sana. Selain untuk meningkatkan kredibilitas anda, juga biar anda lebih cepat terkenal. ;)

Banyak kan yang bisa anda lakukan? Intinya buat jejaring hubungan yang luas biar makin banyak orang tertarik mengunjungi blog anda. Kemudian jaga hubungannya biar mereka sering datang ke blog anda. Kalau sudah banyak yang datang, pasti pundi-pundi uang anda juga akan menggelembung.

Tentang Artikel Ini

MS ACCESS 2003

Database adalah kumpulan informasi yang disusun berdasarkan cara tertentu dan merupakan suatu kesatuan yang utuh. Salah satu jenis database yang masih sering dipakai adalah MS. Access. Produk ini merupakan aplikasi MS. Office (MS. Word, Excel, dan Power Point). MS Access menggunakan mesin basis data Microsoft Jet Database Engine, dan juga menggunakan tampilan grafis yang intuitif sehingga memudahkan pengguna.
Microsoft Access dapat menggunakan data yang disimpan di dalam format Microsoft Access, Microsoft Jet Database Engine, Microsoft SQL Server, Oracle Database, atau semua kontainer basis data yang mendukung standar ODBC.
Data pada database disimpan dalam record-record sesuai dengan field-field yang telah dibuat dalam tabel. Field-field dalam sebuah tabel haruslah ditentukan tipe datanya agar Access mengetahui bagaimana agar data tersebut dapat diolah dan memperlakukan data dalam field itu. Tipe data yang ada pada Access a.l :
- Text
Tipe data ini bisa digunakan untuk field alfanumeric, seperti nama, alamat, kode pos, nomor telepon dan sebagainya. Range data sampai 255 karakter ke field dengan tipe data ini.
- Memo
Tipe data ini mirip dengan teks, tetapi bisa menampung sampai dengan 64.000 karakter. Tipe data text lebih sering dugunakan karena memo tidak bisa diurutkan atau diindeks.
- Number
Tipe data ini digunakan untuk menyimpan data numeric yang akan digunakan untuk perhitungan matematis.
- Date / Time
Tipe data ini digunakan untuk nilai tanggal dan waktu.
- Currency
Tipe data ini terutama digunakan untuk nilai mata uang. Tetapi, Anda juga bisa menyertakan data numeric dalam perhitungan yang memerlukan satu sampai empat angka desimal.
- Auto Number
Ini adalah angka yang secara otomatis akan terurut atau angka acak yang ditetapkan Microsoft Access untuk record baru yang ditambahkan ke sebuah tabel. Field AutoNumber tidak bisa diedit. Oleh karena itu jenis data ini digunakan untuk field yang harus unik, artinya tidak boleh ada nilai yang sama untuk field ini.
- Yes / No
Tipe data ini hanya bisa mempunyai dua nilai yaitu Yes atau No. Data ini digunakan untuk field yang hanya mempunyai dua nilai. Misalnya, sebuah tabel yang berisi informasi mengenai karyawan bisa menggunakan tipe data ini untuk field status perkawinan di mana hanya memiliki dua nilai yaitu Ya atau Tidak.
- OLE Object
Tipe data ini digunakan untuk eksternal objek, seperti bitmap atau file suara. Misalnya, Anda bisa menggunakan tipe data ini untuk menyimpan gambar bitmap (foto) karyawan dalam tabel Karyawan.
- Hyperlink
Ini merupakan gabungan dari teks dan bilangan yang disimpan sebagai teks dan digunakan sebagai alamat hyperlink. Hyperlink digunakan untuk menyimpan pointer ke sebuah situs web atau path ke sebuah file di harddisk. Bila Anda mengklik sebuah hyperlink, Microsoft Access akan mencoba membuka file tersebut dalam aplikasi asli file yang bersangkutan.
- Lookup Wizard
Bila Anda menggunakan tipe data ini untuk sebuah field, Anda bisa memilih sebuah nilai dari tabel lain atau dari sebuah daftar nilai yang ditampilkan dalam sebuah kotak daftar atau kotak combo.
Empat Objek penting pada MS. Access :
1. Tabel
2. Query
3. Form
4. Report

1. Tabel
Tabel adalah tempat untuk menyimpan data. Contohnya data alamat seseorang disimpan dalam tabel daftar alamat.

1. Membuat Database
Masuk program MS. Access

Pilih Create a new file, lalu pilih blank database (karena kita akan membuat database baru).

Akan muncul konfirmasi penyimpanan,lalu tentukan nama database yang anda buat sebagai nama file yang nantinya akan disimpan. Contoh : LATIHAN. Default MS Access adalah .mdb. Tentukan lokasi / folder untuk menyimpan file Database baru anda. Lalu klik create...

2. Membuat tabel baru
Sebagai gambaran dan latihan Anda berikut ini akan dijelaskan cara untuk membuat sebuah tabel baru dalam sebuah database. Sebagai contoh Anda akan membuat tabel buku alamat ke dalam sebuah database di Microsoft Access.Dalam jendela Database bernama LATIHAN dibawah Objects pilih Tables. Klik dua kali Create Table and design View. Setelah itu segera tampil jendela untuk mendefinisikan tabel anda.Pada frame sebelah atas di jendela terdapat tiga kolom, yaitu Field Name, Data Type dan Description. Anda bisa mulai dengan memasukkan data dalam kolom Field dan Data Type.
- Ketikkan NAMA di bawah FieldName, lalu klik Data Type dan pilih Text. Secara default nilai Field Size untuk tipe Data Text adalah 50. Ini artinya Anda hanya bisa memasukkan sampai dengan 50 karakter untuk tiap nilai dalam field ini.
- Ketikkan ALAMAT, lalu klik Data Type dan pilih Text
- Ketikkan KOTA, lalu klik Data Type dan pilih Text
- Ketikkan NOMOR TELEPON, lalu klik Data Type dan pilih Text
- Ketikkan tanggal lahir lalu klik Data type dan pilih Date / Time.
Catatan :
Tutup tampilan Design dengan mengklik tombol Close Window di sebelah kanan atas tampilan Design. Microsoft Access akan bertanya apakah Anda ingin menyimpan desain tabel tersebut? Klik Yes untuk menyimpannya. Karena ini adalah tabel baru yang belum ada namanya, maka Microsoft Access akan meminta Anda mengetikkan sebuah nama. Ketikkan sebuah nama yang sesuai, misalnya Daftar Alamat. Klik OK. Microsoft access akan mengingatkan bahwa tabel anda belum mempunyai kunci primer (primary key), Klik No. Pada jendela Database yang sudah anda buat, klik tables di bawah object dan perhatikan sekarang, sudah terdapat satu icon tambahan bernama Alamat.

3. Mengubah Desain Tabel
Jika Anda sedang membangun sebuah database, maka kadang tabel yang dibuat perlu diubah, umpamanya Anda perlu menambahkan field baru atau menghapus sebuah field dari tabel tersebut. Untuk mengubah desain sebuah tabel, yang harus anda lakukan adalah dengan membukanya dalam tampilan Design. Caranya : klik nama table dalam tab Tables, kemudian klik tombol design. Tiap kali anda mengubah desain sebuah tabel, tekan tombol Ctrl+S untuk menyimpan desain tabel tersebut.

4. Menambah field
Kadang-kadang kita perlu menambahkan field baru ke bagian akhir dari suatu tabel atau menyisipkannya ke tengah-tengah field-field yang ada. Hal ini sering terjadi bagi seorang developer database.
4.1 Menambah field baru ke akhir tabel
Untuk menambahkan field baru ke bagian akhir dari suatu tabel langkah yang harus Anda lakukan adalah sebagai berikut:
Dalam tampilan Design, klik sel kosong dalam kolom Field name sesudah entri Field Name yang terakhir. Ketikkan nama field yang baru, misalnya KODE POS, pilih Data Type dan klik Text. Ketikkan deskripsi untuk field yang baru dalam kolom Description jika diperlukan. Tekan tombol Ctrl+S untuk menyimpan desain tabel tersebut. Tutup tampilan Design tabel dengan mengklik tombol Close Window.
4.2 Menyisipkan field ke sebuah tabel
Jika Anda perlu menambahkan field baru ke dalam sebuah tabel, maka tidak heran jika suatu saat Anda juga perlu menyisipkan sebuah field di tengah-tengah tabel. Adapun langkah yang harus Anda lakukan adalah sebagai berikut:
Field baru akan disisipkan di atas baris yang Anda klik. Dalam tampilan Design, tempatkan kursor Anda di baris dimana Anda akan menyisipkan sebuah field baru. Pilih Rows dari menu Insert, atau klik tombol Insert Rows pada toolbar. Access akan menyisipkan sebuah baris kosong. Isi field-field kosong tersebut. Tekan tombol Ctrl+S untuk menyimpan desain tabel baru. Tutup tampilan Design dengan mengklik tombol Close Window.
4.3 Menghapus field dari table
Untuk menghapus sebuah field dari desain sebuah tabel, langkah yang harus Anda lakukan adalah sebagai berikut:
Dalam tampilan Design, tempatkan kursor di field yang ingin Anda hapus . Pilih Delete Rows dari menu Edit, atau klik tombol Delete Rows di toolbar, jika field ini berisi data, Access akan meminta Anda mengkonfirmasi bahwa Anda benar-benar ingin meng-hapus field ini. Klik Yes di kotak dialog yang muncul. Tekan tombol Ctrl+S untuk menyimpan desain tabel yang baru. Tutup tampilan Design tabel dengan mengklik tombol Close Window.

5. Mengubah nama table
Untuk mengubah nama sebuah tabel langkah yang harus Anda lakukan adalah sebagai berikut:
Dalam tab Tables, klik kanan mouse Anda. Setelah itu segera tampil Menu Popup
Klik Rename, lalu ketikkan nama tabel baru
Tekan tombol Enter.

6. Menghapus table
Jika sebuah tabel tidak diperlukan lagi Anda bisa menghapus atau membuangnya. Cara yang harus Anda lakukan adalah sebagai berikut:
Dalam tab Tables, klik nama tabel
Tekan tombol Delete pada keyboard
Microsoft Access akan meminta konfirmasi. Klik Yes untuk menghapus tabel atau No bila Anda tidak jadi menghapus tabel.

7. Memasukkan data
Untuk memasukkan data ke dalam sebuah tabel caranya adalah sebagai berikut:
Dalam tab Tables, klik nama tabel, dalam contoh ini adalah DAFTAR ALAMAT
Klik tombol Open. Microsoft Access akan menampilkan sebuah tabel.
Untuk memasukkan data, tempatkan kursor ke sebuah sel lalu ketikkan data Anda.
Perhatikan bahwa ikon bergambar seperti pensil di sebelah kiri akan muncul di baris itu.
Untuk berpindah ke sel lain, gunakan tombol panah atau mouse untuk memindahkan kursor. Untuk berpindah ke field berikutnya, gunakan tombol Tab atau Enter.

8. Menghapus record
Untuk menghapus sebuah record, langkah yang harus Anda lakukan adalah:
Buka tabel dalam tampilan Datasheet
Tempatkan kursor di record yang ingin Anda hapus
Pilih Delete Record dari menu Edit
Klik Yes di kotak konfirmasi yang muncul.

2. Query
Query adalah 'permintaan data' kita berupa bahasa bisnis, untuk mengolah data dalam tabel-tabel menjadi satu informasi yang bisa dimengerti.
Langkah-langkah membuat Query :
1. Pada Jendela database pilih Query lalu klik dua kali Create Query In Design View.

2. Pada Jendela Show Table Pilih Table-Table yang akan dipakai dalam Query, mislanya kita pakai table Daftar Alamat. Klik Daftar Alamat lalu klik Add. Jika tidak ada table yang ingin dipakai lagi klik Close.
Keterangan :
- Field = Nama Field yang ingn ditampilkan
- Table = Nama Table dari Filed tersebut
- Sort = Mengurutkan Data hasil query
- Show = Mengatur Field ditampikan atau tidak
- Criteria = Syarat dari data yang ingin ditampilkan

3. Untuk menampilkan seluruh Field dan seluruh Record pada Daftar Alamat Pada Field, klik tombol panah ke bawah pilih Daftar Alamat.*

4. Untuk melihat hasil Query Pilih menu Query lalu klik Run atau bisa langsung mengklik icon Run pada toolbar ( ! ).

5. Untuk menyimpan Query klik icon disket, pada jendela save beri nama query lalu klik OK, Maka Query akan tersimpan dan dapat kita gunakan kapan saja.

6. Untuk menampilkan field-field tertentu saja. Misalnya kita hanya ingin menampilkan Field Nama dan Alamat. Caranya pada Field klik tombol panah ke bawah. Pilih Field Nama, lalu arahkan kursor kesebelahnya lalu klik tombol panah kebawah pilih Alamat. Pastikan kotak kecil pada show tercentang (jika kotak pada show tercentang maka field akan ditampilkan, tetapi bila tidak maka field tidak di tampilkan).

7. Untuk Menampilkan data barang yang namanya ”Bayu”. caranya adalah Pilih field-filed yang akan ditampilkan pada field Nama Criterianya diketik ”Bayu”.

8. Query itu ada beberapa jenis yaitu :
- Select Query (yang sedang kita praktekan). Untuk menampilkan data
- Crosstab Query
- Make-Table Query (Untuk Menyimpan Data hasil Query kedalam rable Baru)
- Update Query.(untuk mengupdate nilai dari suatu record atau field)
- Append Query (untuk memasukan data hasil query kedalam table)
- Delete Query (Untuk menghapus data pada table)
Untuk Query SQLnya, klik di sini.. :)

3. Form
Form digunakan untuk merepresentasikan ke user atau menerima inputan dari user data-data dalam tabel/query dalam bentuk interface grid, tombol, dan lain-lain kontrol windows.

Membuat Form Alamat untuk inputan
1. Pada jendela database, pilih form lalu klik Create Form in Design View, lalu pilih sumber datanya, caranya klik tombol panah ke bawah, pilih Daftar Alamat serta pilih field-field yang disertakan, klik tombol panah ke kanan (>), Klik next.......
2. Pilih layout form yang digunakan. Misal mode columnar. Klik next.
3. Pilih style layout form. Misal style standart. Klik next. Lalu finish.
4. Hasilnya akan tampak seperti gambar di bawah ini.........
Untuk memodifikasi form, klik kanan nama form (Daftar Alamat), pilih Design View. Akan muncul Toolbox yang berisi antara lain : label, textbox, option group, option button, dll

4. Report
Seperti halnya form, digunakan untuk merepresentasikan hasil olahan data menjadi informasi yang siap di cetak di lembaran kertas.
Report Daftar Alamat :
1. Pada Jendela database pilih Report, lalu klik Create Form in Desing wizard, lalu pilih sumber datanya, caranya kita klik tombol panah ke bawah pilih Daftar Alamat serta pilih field-field yang disertakan, klik tombol panah ke kanan (>). Klik next.

2. Muncul konfirmasi untuk mengelompokkan semua record berdasarkan tiap field. Jika ingin mengelompokkan semua record tersebut maka klik tombol panah ke kanan (>) lalu atur posisi field dengan tombol panah ke bawah dan ke atas. Kemudian klik next..

3. Konfirmasi untuk melakukan pengurutan data berdasarkan field-field yang disertakan pada report. Pengurutan maksimal berdasarkan 4 field dengan privilidge terbesar terdapat pada sorting urutan pertama. Misal pengurutan berdasarkan nama dan dilakukan secara ascending.. Lalu klik next...

4. Penentuan layout dari report dan kertas yang nantinya digunakan oleh report, apakan landscape atau portrait. Misal kita ambil contoh layout tabular dan kertas yang digunakan adalah landscape.. lalu tekan next ..

5. Penentuan style tulisan yang ada pada report.. Misal kita menggunakan casual.. Lalu tekan next.. Kemudian tekan finish...

Sebagai referensi sedikit, akan saya jelaskan sekilas tentang koneksi access dengan bahasa pemrograman visual.. Bahasa Pemrograman yang tersedia di dalam Access adalah Microsoft Visual Basic for Application (VBA. Dua buah komponen untuk mengakses basis data pun disediakan (Component Object Model (COM)), yakni Data Access Objects (DAO), yang hanya terdapat di dalam Access 97, dan ActiveX Data Objects (ADO) yang tersedia dalam versi-versi Access terbaru. Seperti yang saya jelaskan di atas bahwa mesin basis data yang digunakan pada MS. Access adalah Microsoft Jet Database Engine..

Contoh membuka koneksi database MS.Access dari Bahasa Pemrograman VB :

Public cn As New ADODB.Connection
Public Sub conn()
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source= " & App.Path & "\nama database"
cn.Open
End Sub

Contoh menutup koneksi database MS. Access melalui VB :

Public Sub CloseConn()
cn.Close
Set cn = Nothing
End Sub

Salah satu keunggulan MS. Access adalah kompatibiltasnya dengan statement SQL. Statement tersebut dapat digunakan secara langsung di dalam Macro dan VBA Module. Para pengguna dapat mencampurkan dan menggunakan kedua jenis bahasa tersebut (VBA dan Macro) untuk memprogram form dan logika dan juga untuk mengaplikasikan konsep berorientasi objek.
Sedangkan kelemahan yang menonjol dari MS. Accss adalah aplikasi ini kurang begitu bagus jika diakses melalui jaringan sehingga aplikasi-aplikasi yang digunakan oleh banyak pengguna cenderung menggunakan solusi sistem manajemen basis data yang bersifat stand alone (berdiri sendiri). Serta aplikasi ini juga tidak dapat menerima data yang telah terenkripsi khususnya melalui statement SQL.

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