CLICK HERE FOR THOUSANDS OF FREE BLOGGER TEMPLATES »

Rabu, 31 Oktober 2007

Telepati dengan Komputer

Ide tentang komputer yang bisa langsung membaca pikiran manusia bukan lagi monopoli film-film sci-fi Hollywood. Majalah Business 2.0 minggu ini menerbitkan artikel berjudul “Surfing the Web with Nothing but Brainwaves.” Artikel ini membahas bagaimana penderita cacat tubuh telah mampu bermain video games, mengontrol lengan robotik, dan menghidupkan/mematikan TV hanya dengan memakai otak mereka. Otak tersebut tentunya dihubungkan dengan komputer melalui chip yang ditanam di otak. Komputer tersebut akan membaca pola elektrik di otak untuk diterjemahkan menjadi perintah yang sesuai.

Sony dikabarkan sedang mengembangkan sistem games yang memanfaatkan gelombang otak tanpa implan. Tidak kurang dari 200 perusahaan sedang berpacu di arena ini. Di masa depan yang mungkin tidak terlalu jauh, penulis artikel ini mengatakan, kinerja komputer yang semakin meningkat (dan bila komputer kuantum telah dipasarkan), kita cuma perlu memakai ikat kepala yang memungkinkan telepati antara otak dengan komputer.

Bagaimana kira-kira implikasi penemuan tersebut kelak, bila dilihat dari segi agama, moral, hukum, pendidikan, ekonomi, dan bidang-bidang lainnya?

Silakan klik link ini untuk membaca artikel tersebut lebih jauh.

Senin, 29 Oktober 2007

Tes & Teknologi Biometrik PENGENALAN IRIS




PENGENALAN IRIS



1. Bagian dari foto iris
Data dari setengah iris direkam dan dikonversi menjadi strip-strip segi empat untuk pengolahan lebih lanjut dengan komputer. Struktur gambar aslinya masih dapat dikenali.

2. Rata-rata matematis
Gambar skematis ini menunjukkan kelanjutannya. Foto dipecah ke dalam bidang-bidang kecil yang dihitung rata-rata matematisnya. Kini informasi awal tersimpan dalam beberapa gradasi kelabu.

3. Data digital
Bidang yang lebih terang daripada rata-rata diubah menjadi putih, selebihnya menjadi hitam. Putih dan hitam adalah satu dan nol dalam template. Data iris ini tersimpan dalam paket berukuran 512 Byte.

Sistem dari Panasonic bekerja dengan 2 kamera yang memfoto kedua mata secara paralel. Untungnya, Panasonic dapat menggunakan salah satu dari kedua foto tersebut-tidak perlu keduanya. Lima perangkat jenis ini sekarang telah digunakan di bandara Narita di Tokyo untuk mempercepat proses boarding. Perusahaan dan instansi pemerintah Jepang juga menggunakan model scanner yang sama untuk mengontrol akses ke area berisiko.

Sistem lainnya juga bekerja dengan 2 kamera, tetapi dengan konsep yang berbeda. Di bandara Frankfurt, 10.000 orang telah memanfaatkan pemeriksaan otomatis dengan perangkat uji coba. Anda hanya perlu meletakkan paspor pada sebuah scanner dan melihat ke dalam iris-camera. Pertama, sebuah kamera wide-angle menangkap seluruh wajah. Dari foto ini sistem mengetahui posisi mata dan sebuah kamera lainnya diarahkan pada salah satu mata. Dengan bantuan cahaya inframerah dibuat foto hitam putih yang kaya kontras.

Pengenalan orang yang telah terdaftar dapat berlangsung lancar. Namun, masih ada masalah kecil yang tersisa sehingga uji coba perlu diperpanjang. Pengelola ingin mengumpulkan lebih banyak pengalaman, demikian alasan resminya. "Banyak orang sedemikian tergesa-gesanya sehingga mereka sulit untuk berdiri denan tenang walaupun hanya beberapa detik," cerita seorang petugas kontrol.

Masalah lainnya berasal dari sisi medis. Banyak penyakit mata yang mempersulit perekaman ciri-ciri iris atau bahkan membuat pengenalan sama sekali tidak dapat dilakukan. Untungnya, masih ada alasan yang bagus bagi dunia politik, industri, dan penelitian untuk terus mengembangkan sistem pengenalan iris: Sistem ini adalah yang paling aman dan handal untuk mengidentifikasi orang dengan tepat. Pola iris itu unik dan mustahil dipalsukan.


Semakin rendah tingkat penerimaan yang salah, semakin sering terjadi penolakan yang salah—kecuali pada pengenalan iris.

"Dalam jutaan tes kami tidak melakukan pengenalan yang salah," jelas John Daugmann dari Universitas Cambridge. Tahun 1994 Daugmann telah mengembangkan algoritma untuk pengenalan iris yang kini digunakan pada hampir semua sistem. Pola iris mulai terbentuk dalam bulan ketiga kehamilan. Setelah bayi berusia satu tahun, pola iris tidak lagi berubah sepanjang hidup. Bahkan, kembar satu telur pun memiliki pola iris yang berbeda.

Tes & Teknologi Biometrik - 512 Byte dalam Mata



Buka mata dan Anda boleh lewat. Sistem pengenalan iris-scan baru mulai diimplementasikan untuk mempercepat proses check-in di bandara. Sistem biotmetrik lainnya juga telah digunakan dalam kehidupan sehari-hari. Biodata ini membuat paspor tidak dapat lagi dipalsukan sehingga menambah tingkat keamanan.




Perintah dari pengeras suara kecil sulit dipahami dalam hiruk-pikuk di hall bandara. Petunjuk yang lebih berarti justru diberikan oleh tanda panah dari lampu diode. Kurang ke kiri atau kurang ke kanan. Calon penumpang yang telah sering diperiksa identitasnya dengan metoda iris-scan tidak lagi memerlukan panduan semacam itu. Dalam sebuah bidang segi empat yang memantul di antara 2 lensa kamera kecil sebenarnya dapat dilihat sendiri apakah mata kita berada dalam area pengukuran atau tidak.

Ketika wajah sudah berada pada posisi yang tepat, proses pengenalan berlangsung sangat cepat. Pengukuran pada mata sama sekali tidak terasa. Istilah iris-scan untuk sistem pengenalan ini sesungguhnya kurang tepat, karena sebenarnya mata kita difoto oleh sebuah digicam. Hasil foto kemudian masuk ke sistem penganalisis pola iris (selaput pelangi) yang rumit.

Karena pola iris sulit dikenali dalam cahaya, terutama pada warna mata gelap, mata difoto dengan cahaya inframerah yang dapat menembus zat warna mata (melanin) dengan lebih baik. "Intensitas cahayanya masih lebih rendah dibandingkan yang dipancarkan oleh remote-control televisi," kata Harald Zander dari Panasonic untuk menekankan bahwa sistem ini tidak berbahaya.

Walaupun proses scan tampak berlangsung dengan baik, pada proses selanjutnya masih dapat timbul masalah. Sebagai contoh, pernah seorang bapak tua hanya dapat dianalisis sebelah matanya saja. Penyebabnya bukan karena ia berkedip, melainkan karena kelopak matanya menggantung dan menutupi mata terlalu banyak.

Tes & Teknologi Biometrik Membaca dengan tangan




MEMBACA TANGAN DAN DARAH
Pengenalan wajah, sidik jari, dan iris kini merupakan favorit biometri. Sebenarnya, ada ciri-ciri lain yang juga dapat digunakan untuk identifikasi.



Pengenalan tangan: Sistem ini mengukur geometri seluruh tangan. Dari panjang jari, lebar sendi, bentuk tangan, dan ciri-ciri lainnya dihasilkan sebuah paket data.


Analisis DNA: Sidik genetis adalah ciri pengenalan yang sangat bagus-saat ini telah digunakan untuk melacak pelaku kejahatan. Pertimbangan etis dan perlindungan data menghalangi penerapan analisis DNA di bidang lainnya.


Pola vena: Pembuluh darah balik (vena) pada tangan juga tidak berubah bentuk seumur hidup-hanya menjadi lebih tebal. Dalam cahaya inframerah, polanya tampak lebih jelas.


Pengenalan suara: Pita suara, tenggorokan, rongga mulut, dan rahang secara bersama-sama menghasilkan pola suara yang dapat digunakan untuk proses verifikasi melalui telepon.

Karena faktor gangguan seperti ketergantungan pada sudut dan cahaya dapat disingkirkan, Busch menganggap metoda 3D ini lebih tepat dibandingkan pengenalan 2D yang biasa. Di samping itu, ada aspek lain yang memperbesar minat pada sistem pengenalan 3D. Dengan data foto 3D sebagai template, wajah orang dalam kerumunan yang menghadap ke suatu arah lebih mudah diidentifikasi.

Sehandal apa sistem tersebut bekerja. Saat ini para ahli sedang meneliti dalam sebuah eksperimen internal di IGD, di mana sekitar seratus peserta berpartisipasi dalam proyek yang disebut 'BioFace V'. "Penuaan manusia sulit kami simulasikan, tetapi kami tidak sabar menunggu hasil eksperimen pada anak-anak kecil," ungkap Ulrich Pinsdorf, salah seorang peneliti di Fraunhofer.


Dr. Christoph Busch, Fraunhofer IGD.

»Pengenalan wajah 3D memungkinkan dibuatnya sistem identifikasi yang handal.

Sistem pengenalan biometrik pada dasarnya memang mengandalkan ciri-ciri yang tidak berubah, tetapi bisa saja dengan berjalannya waktu ciri-ciri tersebut menjadi sulit dikenali. Karena itu, trend bergeser pada penggunaan beberapa metoda sekaligus. Di samping peningkatan keamanan, cara ini juga akan memberikan ketepatan yang lebih tinggi dalam pemakaian yang terus menerus. Setidaknya, salah satu dari beberapa metoda-demikian gagasan di baliknya-sangat mungkin memberi hasil yang jelas.

Dalam sebuah paket biometri kombinasi biasanya terdapat sistem pengenalan sidik jari. Metoda yang telah matang ini digunakan sejak lebih dari 100 tahun dalam dunia kriminologi dan belum lama ini juga diterapkan untuk pemberian akses ke notebook dan PC. Jika sistem lain bekerja dengan algoritma analisis, pengenalan sidik jari biometrik mengandalkan analisis garis Papillar yang telah teruji. Komputer membandingkan titik-titik karakteristik tersebut yang dapat berupa percabangan, awal dan akhir garis, lingkaran, patahan, atau pusaran.

Untuk merekam sidik jari digunakan berbagai sensor yang semuanya menghasilkan gambar hitam-putih berpola garis. Perangkat yang paling populer adalah sensor optik. Di sini jari diletakkan pada sebuah keping kaca, disinari oleh LED melalui sebuah prisma, dan difoto dengan digicam. Pada sensor kapasitif, permukaan sensor dan permukaan jari membentuk sebuah kapasitor yang kapasitasnya berubah sesuai pola permukaan kulit.


Sistem sensor lainnya mengukur medan listrik atau pola panas dari jari. Untuk membedakan jari palsu-misalnya dari silikon-sistem tertentu juga mengukur detak jantung, aliran darah, kandungan oksigen dalam darah, dan suhu jari.


Sayangnya, tak satu pun metoda biometri yang sepenuhnya aman dari pemalsuan. Untuk mencegah orang lain ikut lewat bersama orang yang telah di-scan, petugas perbatasan atau bandara tidak akan tergantikan oleh mesin.

Mengenal Diri Anda Yang Sesungguhnya Melalui Grafologi

Hari ini, H&D Training menyelenggarakan seminar “Preview Grafo-Test”. Graphology merupakan salah satu metode yang dipergunakan dalam dunia psikologi untuk mengetahui karakter seseorang. Selama ini saya hanya mengenal psikotest yang sering dilakukan ketika penerimaan karyawan di satu perusahaan. Grafologi merupakan bidang ilmu pengetahuan yang digunakan untuk menginterpretasikan karakter dan kepribadian seseorang melalui tulisan tangannya.

Dahulu, orang-orang Cina (ilmuwan Cina) telah menerapkan cara mengenali orang menggunakan tulisan ini. Tahun 1875, Jean Hyppolyte Michon kemudian memperkenalkan teori pengenalan karakter orang melalui tulisan ini dengan sebutan Graphology. Sejak tahun 1985 grafologi kemudian digunakan dalam ilmu kesehatan, pendidikan dan jurnalistik.

Grafo-Test sudah digunakan sebagai bagian dari forensik atau biometrik. Di Amerika, grafo-test digunakan untuk mengetahui trait kejujuran, kestabilan emosi, kemungkinan bertindak kasar dan judgement. Di Australia bahkan dipergunakan oleh The Australian Federal, State & Territory Police sebagai bentuk test yang lebih akurat daripada lie detector. Di Perancis dan Swiss banyak perusahaan menggunakan grafo-test untuk mencari karakter karyawan yang sesuai dengan kriteria perusahaan.

Salah satu keunggulan grafo-test adalah tidak dapat dibohongi. Dari tulisan tangan seseorang, melalui grafo-test dapat diketahui:

Motivasi dan dorongan yang ada dalam diri
Kestabilan emosi
Bidang/minat yang sesuai
Keadaan mental
Kecenderungan intelektual
Kekuatan dan kelemahan diri
Tetapi tentu saja grafologi tidak dapat digunakan sebagai sarana memberikan gambaran masa depan seseorang (meramal). Namun, grafologi dapat memberikan gambaran mengenai cara seseorang memandang diri dan masa depan serta kecenderungan perilaku yang belum diketahuinya saat ini, namun ternyata ada dalam dirinya.

Manfaat dari grafo-test adalah:

Recruitment
Tes kepribadian
Pembentukan tim manajemen dan peningkatan performa dari staf yang ada
Konsultasi untuk anak dan dewasa
Bimbingan mengenai bidang pendidikan dan pekerjaan yang cocok dengan kepribadian
Penilaian mengenai kemungkinan penipuan/kecenderungan berbohong
Memberikan gambaran mengenai diri sendiri agar dapat lebih mengenal dan mengembangkan diri.
Berikut adalah beberapa aplikasi dari grafologi/grafo-test:

Employment profiling
Human Resources Development
Marital compatibility
Psychological analysis
Medical diagnosis
Jury Screening
Pengusaha: mengenal calon parnter bisnis dan posisi (team work)
Pendidikan: penjurusan
Khusus untuk usia di bawah 13 tahun, masih dimungkinkan adanya grafo terapi, yaitu untuk membentuk karakteri anak menjadi lebih baik dengan cara mengajarkan bentuk tulisan yang sesuai dengan karakter yang baik tersebut. Contoh untuk anak autis, dalam beberapa kasus setelah diterapi bisa meningkatkan konsentrasi sang anak. Sayangnya, untuk orang dewasa, terapi ini agak sulit mengubah karakter kita. Barangkali karena sudah berurat dan mengakar dalam diri kita ? Tetapi tetap kita bisa memperoleh manfaat yang besar dengan mengetahui kekuatan dan kelemahan diri kita masing-masing.

Tidak semua orang ingin mengenal dirinya, karakter dan sifatnya masing-masing. Sangat disayangkan memang, bagaimana bisa mengenal dan berkomunikasi dengan baik kepada orang lain, jika kita saja masih belum mengenal karakter kita, kelemahan dan kekuatan diri sendiri. Maka jangan heran ada karyawan yang sesungguhnya memiliki potensi sukses dalam kariernya, pintar, lulusan perguruan tinggi terkemuka, tetapi tidak disenangi di kantor, karir terhambat karena selalu melawan bos, hehehe.

Untuk Anda yang tertarik mengetahui lebih jauh tentang grafologi, jadwal seminar dan jadwal test, anda bisa menghubungi saya disini.

Biometric Access Control

Terdapat cara yang cukup efektif untuk melindungi workstation anda. Dengan menggunakan Biometric Access Control, yaitu dengan memanfaatkan ciri-ciri dari tubuh manusia yang unik untuk dijadikan password bagi workstation.
Ciri-ciri tersebut, diantaranya :
- Bau tubuh
- Struktur wajah
- Sidik jari
- Pola retina atau pola iris
- Struktur pembuluh darah
- Suara

Walaupun dengan keuntungannya seperti penjaminan bahwa tingkat keamanan akan meningkat, tetapi Biometric Access Control ini memiliki sedikit masalah. Masalah yang paling utama adalah masalah privasi, secara lengkap dapat anda baca di http://www.dss.state.ct.us/digital/news11/bhsug11.htm.
Sebagai contoh pada biometric access yang menggunakan retina scanner, walaupun keamanannya menjanjikan, tetapi menurut beberapa penelitian dengan menganalisa retina mata, orang yang memiliki penyakit kecanduan obat, penyakit turunan, bahkan AIDS dapat terdeteksi.
Umumnya penggunaan Biometric Access Control ini menyimpan daftar history pengaksesnnya dengan detail. Apabila anda menggunakan komputer anda untuk tindakan yang ilegal, maka anda harus melewatkan metode pengamanan ini, karena dapat meninggalkan jejak yang tidak mungkin disangkal melalui logs (catatan kejadian) yang ada.
Masalah lainnya yang tidak kalah pentingnya adalah,pengguna tidak mungkin menjalankan sistem yang menggunakan Biometric Access Control untuk melakukan pekerjaan secara remote. Kita tidak dapat memaksakan pengguna remote menggunakan alat biometrik. Hal ini hanya cocok untuk untuk akses secara lokal.

Meng-Hack Alat Sensor Sidik Jari

Perkembangan penggunaan alat-alat biometrik untuk alasan keamanan berkembang dengan cepat. Di Indonesia sendiri dapat kita lihat implementasi penggunaan alat biometrik sudah digunakan di perusahaan seperti penyedia layanan safety box, perusahaan farmasi, perusahaan yang memerlukan security atau keamanan sehingga tidak sembarangan orang bisa masuk ke ruangan atau ke dalam perusahaan. Di artikel ini akan kita lihat bahwa ternyata alat biometrik dengan memanfaatkan fingerprint atau sidik jari ternyata bisa diakali dengan sangat mudah sekali.

Alat biometrik sebagaimana kita ketahui merupakan peralatan tambahan yang digunakan dengan tujuan menambah tingkat security atau keamanan di suatu wilayah atau tempat. Ada alat yang berdasarkan identifikasi dari sidik jari / fingerprint, dari bentuk wajah, lekuk di tangan, selaput pelangi mata (iris), retina mata, suara dan tanda tangan. Dan yang umum digunakan di Indonesia adalah mode alat biometrik yang menggunakan sidik jari.

Penggunaan alat atau teknologi biometrik ini merupakan bagian dari proses autentikasi yaitu mengidentifikasikan pengakses / siapa yang akses ?. Selama ini para ahli security terutama dari para perusahaan yang menciptakan atau membuat produk bimetrik sidik jari ini mengatakan bahwa untuk mengakali alat ini merupakan hal yang mustahil atau tidak mungkin terjadi dengan alasan sidik jari merupakan unik artinya semua orang mempunyai sidik jari yang berbeda dan tidak mungkin bisa sama persis.

Alasan para ahli security tersebut memang benar. Namun bagaimana kalau seandainya orang yang punya jari tersebut dipotong ? kemudian dibawa ke tempat mesin biometrik sidik jari tersebut ? Atau orangnya sendiri ditodong kemudian disuruh untuk mengautentikasikan sendiri ke mesin tersebut ? Namun yang dilakukan oleh seorang profesor matematika adalah sangat sederhana sekali untuk mengakali mesin biometrik sidik jari ini. Apa yang dilakukannya dan menjadi berita utama di beberapa media Barat adalah 'Gummi bears defeat fingerprint sensors'.

Profesor matematika dari Jepang ini, Tsutomu Matsumoto menggunakan gelatin (gel atau agar-agar) dan cetakan plastik untuk menghasilkan 'gummi' yang berbentuk jari dengan sidik jarinya ada di gummi tersebut. Dan perbuatannya ini dapat mengakali 11 sistem autentikasi sidik jari dengan tingkat keberhasilan berhasil 4 kali dari 5 kali usaha atau sekitar 80% tingkat keberhasilan. Dengan proses yang dilakukan profesor ini kalau ditindak lebih lanjut atau diproses lebih lanjut, sidik jari yang ditinggalkan seseorang di gelas, bisa dipindahkan dan dibuat jari palsu dari bahan jelly.

Bahan-bahan yang digunakan oleh profesor Tsutomu ini sangatlah sederhana dan murah. Tidak diperlukan teknologi tingkat tinggi namun hanyalah kecerdasan dan ingin mencoba. Dengan bahan yang tidak lebih dari 10 dolar, dia dapat mengakali peralatan canggih dari optical dengan fitur 'live finger sensor'. Dan uniknya penggunakan jari palsu dari bahan jelly ini bisa digunakan untuk mengakali sensor yang dijaga oleh seorang penjaga hanya dengan menempelkan jari palsu jelly ke jari kita sehingga pada saat menekan jari ke alat sensor tersebut akan tidak terlihat oleh penjaga sekalipun dan sesudahnya bahan tersebut bisa dimakan untuk menghilangkan bukti !!!.

Ada moral yang bisa kita ambil dari cerita nyata ini bahwa profesor Tsutomu ini bukan ahli pembuat jari palsu dan dia hanyalah seorang ahli matematika. Dia tidak menggunakan peralatan canggih dan mahal melainkan hanyalah bahan agar-agar dan plastik saja yang bisa kita dapatkan di rumah namun berhasil mengakali 11 jenis peralatan sensor sidik jari canggih. Dengan cara sederhana ini saja bisa mengakali sistem canggih ini berarti para profesosional lainnya di luar sana bisa melakukan lebih dari itu. Ini membuktikan juga bahwa security bukanlah hanya semata teknologi saja melainkan suatu perjalanan dan ini sudah diakui oleh Microsoft sendiri dengan slogan mereka yaitu "Security is a journey not a destination".

reCAPTCHA implementationCyberheb


reCAPTCHA implementationCyberheb

reCAPTCHA merupakan metode implementasi terbaru untuk CAPTCHA (Completely Automated Public Turing test to Computers and Human Aparts). CAPTCHA merupakan metode challange yang banyak dimanfaatkan pada berbagai aplikasi web di internet sebagai metode untuk membedakan antara manusia dengan mesin. Kalian pasti sering melihat di form sign-up email, forum, ataupun untuk memasukan comment pada blog terdapat semacam gambar acak yang terlihat buram, kita harus menuliskan teks kata tersebut pada suatu form sebelum melakukan aksi yang sebenar nya (sign-up email atau forum misal nya), nah…itu lah CAPTCHA.

Terdapat banyak implementasi CAPTCHA pada aplikasi-aplikasi web yang populer seperti phpBB, wordpress, phpNuke, dsb. Dan umum nya memastikan bahwa yang berinteraksi dengan sistem saat ini adalah manusia, bukan mesin (seperti bot). Banyak sekali terdapat bot yang disebar pada internet memasukan comment yang sifat nya iklan ataupun mengganggu ke dalam media blog ataupun forum, dan bot ini umum nya dibuat dengan suatu script program. Dengan adanya CAPTCHA maka bot-bot tersebut dapat dicegah sehingga tidak dapat melakukan registrasi, post comment, dsb.

reCAPTCHA menggunakan metode baru dalam melakukan CAPTCHA, yaitu memanfaatkan 2 hal: Kata-kata yang tidak dapat dibaca dengan OCR (Optical Computer Recognition), dan manusia. Manusia?!Yups, kita bisa baca selengkapnya dari situs resmi nya di sini.

OCR (Optical Computer Recognition) dapat digunakan untuk mengubah hasil scan suatu buku (dalam bentuk gambar) kedalam suatu bentuk dokumen teks. Kita semua tentu tahu mengenai e-book. Pengubahan bentuk scan yang awalnya berupa gambar kedalam bentuk dokument teks dibutuhkan untuk berbagai tujuan, salah satu nya adalah agar mudah di-search oleh search engine. Namun adakalanya OCR tidak mampu membaca karakter hasil scan tersebut sehingga menghasilkan tulisan yang salah, misal nya seperti ini:

Kita bisa katakan reCAPTCHA adalah suatu project mutualisme dengan beberapa tujuan, yaitu: Meningkatkan kualitas CAPTCHA pada suatu sistem terhadap serangan bots, dan membantu proses book digitizing (pembuatan buku digital) dalam mengenali kata-kata yang tidak bisa dibaca oleh OCR. Ini adalah suatu project yang menarik :).

Bagaimana hal ini bisa terjadi?!silahkan baca statement berikut ini dari situs recaptcha:

About 60 million CAPTCHAs are solved by humans around the world every day. In each case, roughly ten seconds of human time are being spent. Individually, that’s not a lot of time, but in aggregate these little puzzles consume more than 150,000 hours of work each day. What if we could make positive use of this human effort? reCAPTCHA does exactly that by channeling the effort spent solving CAPTCHAs online into “reading” books.

Pengguna internet di dunia semakin banyak, dan semakin banyak orang yang setiap hari nya harus memecahkan challange dari CAPTCHA (dalam arti, membaca image CAPTCHA dan menuliskan hasil nya untuk autentifikasi) seperti posting comment di blog. Dan peran manusia dalam memecahkan challange CAPTCHA tersebut digambarkan oleh quote diatas, yang berarti ada sekitar 60 juta CAPTCHA yang di baca oleh manusia diseluruh dunia perhari nya. Jumlah inilah yang dimanfaatkan oleh reCAPTCHA.

Berikut langkah mudah nya:

1. reCAPTCHA akan memberikan 2 kata dalam bentuk image ke user sebagai CAPTCHA, 1 dari 2 kata tersebut merupakan image yang diambil dari hasil kegagalan OCR dalam membaca image untuk di konversi ke teks, dalam arti ‘jawaban’ dalam bentuk teks untuk image tersebut belum dapat dibaca oleh komputer dimanapun sehingga tidak mungkin bots dapat membaca nya, hanya manusia yang dapat membaca nya. 1 kata lagi merupakan image yang sudah dapat dibaca oleh komputer namun tetap sulit bagi bot.
2. Kita tidak tahu mana kata yang bisa dibaca ataupun tidak bisa dibaca oleh komputer, namun pada proses verifikasi sistem akan menerima kedua nya dan apabila jawaban pada jenis kata yang sudah diketahui ‘bentuk teks’ nya memang benar maka diasumsikan kata kedua yang belum diketahui jawaban nya juga benar, dan diasumsikan user adalah manusia. Namun kata yang belum diketahui jawaban nya tersebut tidak langsung digunakan sebagai ‘known words’, namun masih digunakan untuk authentifikasi terhadap beberapa user lain dengan status ‘unknown words’, hal ini digunakan sebagai uji coba agar kata yang gagal dikenali oleh OCR tersebut mendapatkan jawaban yang akurat. Hasil nya nanti digunakan pada proses OCR selanjut nya saat membaca image dengan bentuk seperti itu, dan OCR sudah tahu bentuk image seperti itu akan di konversi kedalam bentuk teks seperti apa. Nah, inilah yang dimaksud memanfaatkan manusia untuk membantu OCR dalam mengenali bentuk image yang hanya bisa dibaca oleh manusia.

Dan saat ini project reCAPTCHA membantu proses book digitizing dari Internet Archive.

Terlepas dari ‘digunakan’ oleh sistem untuk membantu proses kerja OCR, kita dapat menerapkan reCAPTCHA pada aplikasi web yang kita miliki, untuk saat ini reCAPTCHA sudah di implementasikan dalam bentuk plugin untuk wordpress dan mediawiki. Namun jika kita ingin membuat plugin sendiri untuk diimplementasikan pada aplikasi web milik pribadi, maka dapat membaca API yang terdapat pada website resmi reCAPTCHA. Blog kecoak elektronik juga saat ini sudah meng-implementasikan reCAPTCHA untuk posting comment, dan tentu selain untuk meningkatkan security terhadap b0t juga dengan tujuan agar dapat membantu proses book digtizing, sehingga akan lebih banyak lagi informasi dari buku-buku dapat dipindahkan kedalam bentuk digital dan dapat dibaca oleh orang-orang di seluruh dunia ;).

Computer Supported Collaborative Research (CSCR)


Computer Supported Collaborative Research (CSCR)

CSCR merupakan bidang baru terkait riset masyarakat HCI. CSCR merupakan kelanjutan dari pendahulunya, yaitu Computer Supported Collaborative Work (CSCW) dan Computer Supported Collaborative Learning (CSCL). Keduanya ini merupakan subyek riset HCI hampir sepuluh tahun yang lalu.

Gambar berikut menampilkan kedudukan dari ketiganya (merupakan bagian dari HCI)

Perbedaan utama antara CSCW dan CSCL yaitu bahwa CSCW dikarakteristikan oleh “kebutuhan akan ruang kerja (workingspace)” sedangkan CSCL membutuhkan ruang kerja dan ruang belajar (learningspace)

Workingspace adalah domain tempat aktivitas-aktivitas berikut berlangsung: communication space, scheduling space, sharing space, dan product space.

Learning space adalah domain yang memuat seluruh aspek workingspace ditambah dengan aktivitas berikut: reflection space, social space, assessment space, tutor space, dan administration space

Perbedaan utama antara CSCR dan CSCL adalah bahwa suatu rekord penuh dari seluruh interaksi antar partisipan merupakan tool penting dan dibutuhkan untuk mengevaluasi kontribusi setiap anggota dalam suatu collaboratiob group yang nanti dapat menentukan “suatu share modal yang adil (a fair capital share) apabila proyek riset berjalan dengan sukses.is successful.

CSCR membutuhkan Workingspace, Learningspace, dan aktivitas-aktivitas berikut: knowledge space, publication space, privacy space, publication space, negotiation space.

piranti masukan mouse


Kemaren nemu site experimental dontclick. Jadi pingin membahas isu-isu User Interface / Human Computer Interaction lagi.


Site dontclick merupakan situs research tentang kebiasaan pengguna dengan piranti masukan mouse. Aturannya sederhana saja : penggunanya diharamkan menggunakan tombol atau meng-klik mouse mereka. Semua interaksi menggunakan medium pergerakan kursor pada koordinat x-y layar. Gambar dan informasi yang bersesuaian akan muncul dengan cukup mengarahkan mouse kita ke menu yang kita inginkan. Artinya klik digantikan dengan mode gerakan. Ada berbagai macam eksperimen di situ termasuk juga tutorial serta eksperimen bagaimana kita mengganti klik dengan gerakan sirkular pada layar.

Jika Anda ternyata mengklik tikus di bawah tangan Anda ketika sedang berkunjung ke sana, maka mereka akan merekamnya. Sengaja atau tidak, mereka akan mengkonfirmasinya. Termasuk keseluruhan gerakan yang Anda lakukan saat bertandang ke situs dontclick. Namanya juga penelitian. Mereka butuh mengerti bagaimana pengalaman pengguna akan membentuk suatu persepsi psikologis kognitif saat mereka menghadapi lingkungan yang baru apalagi mensarahkan meninggalkan kebiasaan lama pengguna komputer. Apakah teknik tersebut bermanfaat dalam mendekati pengguna? Apakah pengguna merasa nyaman atau malah frustasi? Secara ergonomis apakah ada hubungannya antara menghilangkan klik mouse dengan kesehatan manusia? (ini sepertinya berlebihan).

Saya sendiri salut dengan ide brilian ini. Ternyata bisa juga tombol yang imut itu ditinggalkan. Navigasi web yang smooth dan mudah. Namun sekali lagi ia tidak cukup signifikan untuk diterapkan. Klik tetaplah lebih nyaman. Karena ada hal2 yang tidak tergantikan oleh gerak.

Pertama adalah real model. Beragam inovasi diluncurkan agar User Interface (UI) semirip mungkin dengan dunia nyata. Pemodelan yang paling sederhana misalnya adalah sebuah tombol (button). Tombol berfungsi untuk memicu sebuah action. Menggunakannya adalah dengan cukup ditekan. Dalam hal ini pemodelan meng-klik mouse lebih mirip menekan tombol daripada sekedar menyentuh atau meraba-raba. Tolong, jangan ngeres ya.

Kedua yaitu faktor feedback. Mouse mampu menyajikan kemantapan dan kepuasan umpan balik bagi pengguna. Gerakan meng-klik tombol, sensasi sentuhan atas-bawah berpegas, suara ‘klik’ dari mouse lebih mampu membuat pengguna merasa terwakili. Alias lebih marem.

Alasan lainnya adalah tidak semua menu ingin kita lihat. Jika kita tak sengaja mengarahkan mouse ke menu lain maka akan tampil informasi lain. Hal ini cukup mengganggu jika kita sedang fokus membaca sebuah informasi yang cukup panjang. Akhirnya adalah kita harus selalu waspada dengan keberadaan posisi kursor kita. Salah letak bisa membuat kita berjarak dengan informasi yang kita butuhkan. Capek d!

Tak kalah penting yaitu alokasi gerakan kursor yang dilakukan oleh UI dontclick akan lebih banyak. Apalagi jika klik diganti dengan gerakan memutar di atas sebuah pilihan. Padahal terlalu banyak menggerakkan mouse hanya untuk mengakses menu merupakan salah satu ciri antarmuka yang kurang bersahabat.

Ngobrol jarak jauh dengan komputer



Perkembangan teknologi informasi yang sangat pesat saat ini memudahkan kita untuk berkomunikasi dengan berbagai cara dan berbagai alat. Misalnya saja komputer. Komputer dapat digunakan sebagai sarana komunikasi jarak jauh, bahkan bisa antar negara dan antar benua. Salah satu caranya adalah dengan “Chatting”. Chatting dapat dilakukan apabila komputer sudah terhubung dengan internet dan pada komputer tersebut sudah terinstal software/program untuk chatting. Singkatnya, definisi chatting adalah suatu fasilitas dalam Internet untuk berkomunikasi sesama pemakai Internet yang sedang on-line. Komunikasi dapat berupa teks atau suara (chatting voice). Nah, kali ini kita akan membahas software program apa saja sih yang digunakan untuk chatting… Ayo siapa yang tahu?

Salah satu program yang digemari untuk chatting adalah dengan “IRC” . Selain itu ada juga MSN Messenger, Yahoo Messenger, ICQ (I Seek you), American On-Line (AOL) dan bahkan saat ini beberapa website memberikan fasilitas langsung untuk para pengunjung yang telah mendaftar sebelumnya untuk chatting. Mau tahu lebih lengkap ngobrol pakai komputer? Silahkan baca terus kelanjutan artikel ini….
Umumnya orang akan memilih program chatting yang paling banyak digemari dan mudah menjalankannya. Sekarang, mari kita lihat cara menjalankan beberapa program untuk chatting dan kelebihannya.
mIRC

Jalankan program mIRC
Setting nickname kamu, email, dan lain-lainnya. Untuk nickname akan lebih baik bila permanen dan telah di register agar tidak diserobot orang atau dikenali sebagai guest oleh server.
Pilih server yang diinginkan. Bisa DalNet untuk Internasional dan lokal sedangkan khusus lokal bisa telkom, wasantara, indonet atau lainnya.

Minggu, 28 Oktober 2007

Teori Otak Dengkul Bikin Robot Jalan Cepat


Teori Otak Dengkul Bikin Robot Jalan Cepat]


Ilmuwan di Jerman berhasil menemukan cara untuk membuat robot berjalan mirip manusia. Bukan hanya mirip, robot ini pun bisa berjalan cepat dibandingkan robot serupa yang sudah ada.
Robot itu bernama Runbot, sebuah robot berkaki dua berukuran kecil yang bisa bergerak sejarak tiga kali panjang kakinya dalam satu detik. Ini hanya sedikit lebih lambat dari kecepatan manusia saat berjalan dengan cepat.
Robot ini menggunakan teori 'otak dengkul' yang dikemukakan pertama kali oleh NIkolai Bernstein pada era 1930-an. Teori itu pada intinya mengemukakan bahwa otak manusia (yang ada di kepala) tidak melulu memproses cara berjalan.
Otak, ujar Bernstein, hanya bekerja saat berjalan dari satu permukaan ke permukaan lain, misalnya dari lantai ke rumput, atau saat permukaan tidak rata. Selebihnya, kemampuan berjalan ditangani oleh 'otak' alias syaraf-syaraf di tulang punggung dan kaki, termasuk di dengkul.
Dengan menerapkan teori tersebut, Profesor Florentin Woergoetter dan tim dari Universitas Gottingen, Jerman, berhasil membuat Runbot. Tim Woergoetter mencakup ilmuwan dari berbagai latar belakang, termasuk Poramate Manoonpong, Tao Geng, Tomas Kulvicius dan Bernd Porr.
Bukan Robot Kikuk
Saat berjalan menuju sebuah tanjakan, Woergoetter mengatakan, 'otak dengkul' Runbot akan menganggap tidak ada masalah. Namun ketika tubuh Runbot terjatuh karena gaya gravitasi menariknya ke belakang sistem 'otak atas' Runbot akan mendeteksinya dan melakukan perubahan.
Selanjutnya, ujar Woergoetter, perubahan itu akan diterapkan ke 'otak dengkul' sehingga 'otak atas' tak perlu terus menerus melakukan proses. "Sulitnya pada robot, adalah menerapkan gerakan pada waktu yang tepat --dalam hitungan milidetik-- agar tidak jatuh," paparnya.
Runbot memiliki cara jalan yang berbeda dengan robot populer seperti Asimo, atau sejenisnya. "Robot-robot itu adalah pejalan kinematis, mereka berjalan selangkah demi selangkah dan memperhitungkan setiap sudut setiap milidetik," ia menjelaskan.
Melalui teknologi kecerdasan buatan dan rekayasa robotika, Woergoetter mengatakan proses rumit itu memang bisa dilakukan. "Namun sangat kikuk. Manusia tidak berjalan seperti itu. Mesin-mesin besar itu menghentak bagai robot, kami mau membuat robot yang berjalan seperti manusia," ujarnya.
Saat ini tim tersebut sedang memikirkan bagaimana menerapkan Runbot untuk membuat robot yang berukuran lebih besar. Runbot juga akan dikembangkan agar reaksinya lebih cepat dan lebih adaptif.


PENCIUMAN ELEKTRONIK INGIN MENGGESER HIDUNG

Sebagai indera penciuman, hidung sanggup membaui ribuan aroma yang berbeda. Mulai dari aroma makanan lezat, harumnya mawar, hingga bau tak sedap. Bisakah peran besar organ penciuman itu diambil alih oleh alat pencium buatan atau sejenisnya? Laboratorium Kecerdasan Komputasional, Fakultas Ilmu Komputer Universitas Indonesia, telah merancang tiruan hidung
Foto: Dok. Wisnu Jatmiko

Perangkat sistem penciuman elektronik buatan Wisnu.


Sebenarnya, tidak gampang merancang sistem penciuman buatan. Pasalnya, hidung yang sarat dengan saraf penciuman itu tergolong organ paling sulit untuk dibuat tiruannya, setelah organ perasa alias lidah. Ini diakui oleh Benyamin Kusumoputro, Ph.D., Kepala Laboratorium Kecerdasan Komputasional Fakultas Ilmu Komputer Universitas Indonesia di Depok.

Meskipun demikian bukan berarti tidak mungkin ditiru. Bisa saja, hanya belum mampu menyamai 100% peran hidung beneran. Maklum, saraf sistem penciuman manusia memang ajaib, sanggup membedakan puluhan ribu aroma berbeda. Lagi pula mekanisme sistem penciuman dari sono-nya amat efektif dalam memilah dan membedakan perlagai aroma. Ibaratnya, bisa mendeteksi satu molekul aroma di antara puluhan ribu molekul di udara!

Apa pun wujud rancangan sistem hidung elektronik itu, yang pasti tersimpan tujuan mulia. Yakni untuk mendeteksi dan mengklasifikasikan aroma secara otomatis. Sadar atau tidak, tersembunyi juga keinginan menggeser peran hidung sebagai pengontrol kualitas dalam industri yang membutuhkan pengenalan aroma, terutama industri minuman, kosmetik, dan minyak wangi.
Ini bukan berarti meremehkan indera penciuman kita sendiri. Masalahnya, sistem penciuman kita amat dipengaruhi kondisi perasaan sesaat dan kesehatan. Artinya, ketelitian dan kontrol kualitas pengenalan aroma bisa terpengaruh. Belum lagi kalau petugas kontrol kualitas aroma mendadak terserang pilek, bisa-bisa indera penciumannya tidak berfungsi dengan baik.

Minggu, 21 Oktober 2007

KECERDASAN BUATAN UNTUK ANALISIS KONDISI GINJAL PASIEN

PENGEMBANGAN PERANGKAT LUNAK BERBASIS
KECERDASAN BUATAN UNTUK ANALISIS KONDISI GINJAL PASIEN.
Pengembangan perangkat lunak berbasis kecerdasan buatan untuk menganalisis
dan memprediksi data keluaran renograf dual probe (BI-756) telah dilakukan
dengan baik. Renograf dual probe (BI-756) adalah perangkat medis hasil rekayasa
desain dan pabrikasi BATAN. Bantuan dokter ahli yang berpengalaman sangat
dibutuhkan untuk menganalisis kondisi ginjal pasien dengan tepat. Karena
keberadaan dokter ahli yang berpengalaman di bidang analisis ginjal sangat
terbatas, masalah ini bisa diatasi dengan menyediakan suatu sistem perangkat
lunak berbasis kecerdasan buatan yang memiliki pengetahuan dan analisis
komprehensif dari dokter ahli yang berpengalaman. Tujuan penelitian adalah
mengembangkan perangkat lunak yang dapat menganalisis kondisi ginjal pasien
dengan tepat. Perangkat lunak yang dikembangkan mampu memprediksi kondisi
ginjal pasien dengan tepat. Data masukan perangkat lunak yang dikembangkan
adalah data keluaran digital dari renograf dual probe (BI-756). Perangkat lunak
telah diujikan terhadap data pasien yang sesungguhnya dan kemampuan
identifikasi 98 % diperoleh dari 618 data uji. Hasil ini menunjukkan bahwa
perangkat lunak memiliki kemampuan baik dimana hanya dilatih dengan 6 data
saja.

AI menjadi awak pesawat

Film “2001: A Space Odyssey” sudah mampu memperlihatkan efek spesial visualisasi tokoh utama cerita yang melakukan jogging dalam 360 derajat ruang gravitasi. Aku membayangkan tekniknya mungkin dibuat dengan ruang berputar seperti “roda sangkar tikus” (rat race). Hanya saja kameranya dibuat berputar mengikuti si tokoh. Bisa membayangkan, kan? Imajinasi-imajinasi fiksi ilmiah dalam film ini antara lain perjalanan ruang angkasa yang sudah dibuat komersial pada masa itu, stasiun ruang angkasa yang menjadi pemberhentian sementara para penumpang yang sedang mengadakan perjalanan antar planet, komunikasi antar planet melalui telepon dan layar monitor yang memvisualisasikan orang-orang yang bercakap-cakap, dan last but not least: artificial intelligence.

Tokoh utama dalam cerita fiksi ini memang bukan sekedar sang awak yang salah satunya bernama David Bowman, diperankan oleh Keir Dullea, yang akhirnya diceritakan menghilang dalam perjalanan dengan kata-kata terakhirnya: “My God, it’s full of stars”. Tapi juga superkomputer dengan kecerdasan buatan yang mengendalikan seluruh sistem dan perjalanan “Discovery”, bernama: HAL-9000. O iya, sebelum lupa, karena perjalanan dari bumi menuju Jupiter yang memakan waktu dua tahunan, dan keterbatasan cadangan energi dan oksigen dalam pesawat, maka seluruh awaknya dibuat mengalami hibernasi, dan akan dibangunkan oleh HAL-9000 saat sudah mendekati Jupiter. Tokoh utama adalah dua orang yang dibangunkan terlebih dahulu. Sedangkan tiga awak lainnya mengalami pemutusan sistem kehidupan oleh HAL-9000 saat mereka dalam hibernasi. Satu hal menarik lagi dalam cerita ini: Arthur C. Clarke membayangkan suatu saat ini akan ditemukan teknologi untuk membuat makhluk hidup seperti manusia mengalami hibernasi buatan. Yakni dengan menekan serendah-rendahnya seluruh metabolisme, namun seluruh sistem vital tubuh masih dalam kendali.

HAL-9000 menjadi tokoh cerita yang sangat penting, karena artificial intelligence-nya digambarkan memiliki perasaan juga. Akhirnya HAL jugalah yang membunuh hampir seluruh awak manusia.

Film ini masuk dalam posisi teratas top ten film science fiction yang digemari oleh para ilmuwan, dalam sebuah polling di Inggris tahun ini. Posisi kedua adalah film Blade Runner yang dibintangi Harrison Ford (aku belum pernah menontonnya).

Nah, itu tadi “2001: A Space Odyssey”. Sedangkan “2010: The Odyssey Continues”, atau yang ada yang menuliskan juga “2010: The Year We Make Contact”, dibuat beberapa dekade sesudahnya, yakni pada tahun 1984. Film ini menceritakan perjalanan pesawat Rusia (di film ini masih disebut Uni Soviet, karena mereka belum membayangkan USSR akan pecah pada tahun 1991, dan tidak lagi menjadi negara adidaya menyamai USA) “Leonov” yang membawa tiga awak astronot: si pemimpin program perjalanan Discovery sembilan tahun sebelumnya, pencipta HAL-9000, dan seorang teknisi yang memahami seluk beluk Discovery yang digambarkan hilang dalam lintasan dekat Jupiter pada tahun 2001.

Misi pasukan ini adalah menemukan Discovery, mengaktifkan kembali HAL-9000 yang sempat dimatikan oleh astronot David Bowman pada perjalanan tahun 2001, dan mencari tahu sebab-sebab kejanggalan yang terjadi. O iya, satu faktor cerita yang masih menghubungkan dua sekuel ini adalah sebuah materi menyerupai batu hitam bernama monolith. Mengenai hal ini, aku tidak bercerita lebih dalam.

Pada akhirnya. Penonton bisa menyimpulkan sisi-sisi perasaan yang dimiliki artificial intelligence bisa sangat menyerupai manusia. Ketika akan dimatikan fungsi dan sistemnya, HAL dan SAL (satu komputer lagi yang dimiliki Dr. Chandra, pembuat HAL-9000, di ruang kantornya), bisa mengajukan pertanyaan, “Dr. Chandra, will I dream?”.

Inilah satu impian manusia yang masih terus dikembangkan hingga saat ini, yakni menciptakan kecerdasan buatan yang bisa menyamai pikiran manusia, lengkap dengan respon dan perasaannya. Dalam film buatan tahun 2001, lagi-lagi diinspirasikan oleh mendiang Stanley Kubrick sang sutradara Space Odyssey yang keburu meninggal, Steven Spielberg menyutradarai “AI: Artificial Intelligence”. Film yang menceritakan masa depan saat manusia mampu menciptakan robot-robot dengan kecerdasan buatan, bahkan memiliki bentuk fisik dan perasaan yang sangat mirip dengan manusia. Tokoh utamanya Haley Joel Osment yang terkenal pada awalnya melalui “The Sixth Sense”, adalah robot berwujud anak berumur 6-7 tahun, tinggal dalam sebuah keluarga pasangan yang telah kehilangan anak laki-laki satunya. Film ini akhirnya menyimpulkan “his love is real, but he is not”. Dan jika berbicara mengenai robot, aku juga teringat dengan film “The Animatrix”, yang menceritakan di masa depan bumi akan diisi oleh robot-robot berdampingan dengan manusia.
Tidak habis-habisnya memang membicarakan kecerdasan buatan. Dan jika Anda mengunjungi situs AI, di http://www.aimovie.com, pengunjung akan menikmati chatting dengan chatbot yang menggunakan artificial intelligence language yang sudah bisa dikembangkan saat ini, yaitu ALICE.

Sejarah Kecerdasan Buatan

Pada awal abad 17, René Descartes mengemukakan bahwa tubuh hewan bukanlah apa-apa melainkan hanya mesin-mesin yang rumit. Blaise Pascal menciptakan mesin penghitung digital mekanis pertama pada 1642. Pada 19, Charles Babbage dan Ada Lovelace bekerja pada mesin penghitung mekanis yang dapat diprogram.
Bertrand Russell dan Alfred North Whitehead menerbitkan Principia Mathematica, yang merombak logika formal. Warren McCulloch dan Walter Pitts menerbitkan “Kalkulus Logis Gagasan yang tetap ada dalam Aktivitas ” pada 1943 yang meletakkan pondasi untuk jaringan syaraf.
Tahun 1950-an adalah periode usaha aktif dalam AI. Program AI pertama yang bekerja ditulis pada 1951 untuk menjalankan mesin Ferranti Mark I di University of Manchester (UK): sebuah program permainan naskah yang ditulis oleh Christopher Strachey dan program permainan catur yang ditulis oleh Dietrich Prinz. John McCarthy membuat istilah “kecerdasan buatan ” pada konferensi pertama yang disediakan untuk pokok persoalan ini, pada 1956. Dia juga menemukan bahasa pemrograman Lisp. Alan Turing memperkenalkan “Turing test” sebagai sebuah cara untuk mengoperasionalkan test perilaku cerdas. Joseph Weizenbaum membangun ELIZA, sebuah chatterbot yang menerapkan psikoterapi Rogerian.
Selama tahun 1960-an dan 1970-an, Joel Moses mendemonstrasikan kekuatan pertimbangan simbolis untuk mengintegrasikan masalah di dalam program Macsyma, program berbasis pengetahuan yang sukses pertama kali dalam bidang matematika. Marvin Minsky dan Seymour Papert menerbitkan Perceptrons, yang mendemostrasikan batas jaringan syaraf sederhana dan Alain Colmerauer mengembangkan bahasa komputer Prolog. Ted Shortliffe mendemonstrasikan kekuatan sistem berbasis aturan untuk representasi pengetahuan dan inferensi dalam diagnosa dan terapi medis yang kadangkala disebut sebagai sistem pakar pertama. Hans Moravec mengembangkan kendaraan terkendali komputer pertama untuk mengatasi jalan berintang yang kusut secara mandiri.

Sabtu, 20 Oktober 2007

Interpreter dan Compiler

Interpreter

Pada bahasa yang menggunakan interpreter, ada suatu program besar yang mendiami memori komputer secara terus menerus. Jika dilakukan pengetikan sebaris program, misalnya suatu pernyataan BASIC, maka interpreter ini akan mengawasi proses pemasukannya lalu menambahkan baris tersebut kedalam program yang tadi sudah tersimpan dalam memori.

Ketika menjalankan program tersebut, interpreter akan memeriksa program baris demi baris dan menterjemahkannya ke dalam bahasa mesin (satu-satunya bahasa yang dapat dimengerti oleh microprocessor) selanjutnya meminta komputer melaksanakan terjemahan itu kemudian melakukan proses yang serupa untuk baris program berikutnya.

Bahasa terinterprestasi cocok untuk pengembangan program cepat karena programmer dapat menulis program dan langsung mengeksekusinya serta melihat hasilnya. namun demikian bahasa ini memiliki beberapa kelemahan :
proses eksekusinya lamban karena interpreter harus menterjemahkan tiap baris program kedalam bahasa mesin setiap kali program dieksekusi. Program tetntunya akan berjalan lebih cepat jika seluruh bagian program diterjemahkan lebih dahulu sebelum dieksekusi,
harus adanya interpreter dalam memori komputer pada saat ingin menjalankan program. Contoh untuk kasus ini adalah disertakannya interpreter BASIC dalam PC 8088.

Compiler

Dalam bahasa terkompilasi, keseluruhan program atau sub program diterjemahkan ke dalam bahasa mesin sekaligus. Proses pengetikan dapat dilakukan dengan menggunakan pengolah kata, disisi lain terdapat program terpisah yang disebut compiler yang menterjemahkan berkas sumber ini menjadi berkas lain dalam bentuk bahasa mesin. Adapula compiler yang menyediakan editor sendiri seperti Turbo C dari Borland.
Dedicated for Light Intermutimedia
Perusahaan Software Pulsa

Konruksi Compiler

Teknik kompilasi telah lama diberikan di lingkungan pendidikan tinggi bidang komputer di Indonesia. Pembahasan dalam mata kuliah ini biasanya berkisar pada teori automata, teori kompilasi, teori grammar. Praktek teknik kompilasi pun telah diberikan di lingkungan laboratorium, walau biasanya masih terbatas pada demonstrasi hal teori, ataupun sekedar pengenalan kompiler yang ada atau banyak digunakan. Beberapa universitas telah mulai memperkenalkan penggunaan perangkat pembangun kompiler.
Telah banyak mahasiswa menggunakan dan memanfaatkan compiler/interpreter, tapi saat ini masih belum banyak muncul nama programmer Indonesia yang terlibat dalam proyek pembuatan compiler/interpreter. Mungkin hanya KILANG nya Prof. Dali S Naga (BASIC Indonesia), yang sempat terdengar, sayang sekarang sudah tidak ada jejaknya. Mungkin merilis KILANG dalam bentuk GPL seperti BWBASIC, adalah suatu langkah menarik untuk terus mengembangkan KILANG ini lebih lanjut.
Memang ada sekelompok programmer Indonesia yang sempat akan merilis bahasa pemrograman "BATAK" tetapi hingga saat ini belum terdengar kembali. Bahasa pemrograman, JAVA, BALI, MADURA, hanyalah namanya saja yang berbau Indoensia, tapi sedikit atau malah tidak ada keterlibatan pengembang dari Indonesia.
Tentu saja akan timbul pertanyaan "apa yang salah dalam pengajaran kompilasi ???" (INGAT SAYA TIDAK INGIN MENDISKREDITKAN SIAPAPUN DALAM PERNYATAAN INI). Hanya mencoba mencari langkah perbaikan yang mungkin bisa diterapkan.
Walaupun sedikit sekali atau nyaris tidak ada "lowongan pekerjaan" yang membutuhkan kemampuan mengembangkan compiler ini (silahkan baca di koran ataupun majalah), bukan berarti pengetahuan itu sama sekali tak dibutuhkan dalam dunia pemrograman sehari-hari. Pada dasarnya pengetahuan pembuatan kompiler (compiler construction) ini merupakan pengetahuan dasar komputasi yang sangat baik sekali. Pengetahuan ini dimanfaatkan pada beragam aplikasi nantinya. Misal teknik parsing, pengenalan pola teks, optimasi kode dan lain sebagainya. Bahkan suatu database engine pun di bagian "front end" selalu menggunakan parsing ini. Pengetahuan tentang kompilasi akan dapat memberikan landasan bagi programmer untuk menyusun program yang efektif dan efisien.
Ketika seseorang melakukan pemrograman, sebetulnya secara tidak sadar dia akan melakukan proses penambahan suatu bahasa. Misal pembuatan suatu fungsi (ataupun prosedur) pada dasarnya merupakan suatu proses "penambahan kosa-kata" dari bahasa pemrograman tersebut. Dari yang tadinya tidak memiliki fungsi tersebut hingga akhirnya ditambahkan suatu "vocabulary" untuk melakukan suatu fungsi tersebut. Untuk itulah pemahaman penyusunan kompiler merupakan suatu dasar yang utama dalam bidang ilmu komputer.

teknik dinamic loading

Semua plug-ins di Netscape atau modul di Apache memakai teknik yang sama, yaitu Dynamic Loading (DL). Ada beberapa terminologi lain untuk menyebutkan
teknik ini, seperti DSO (Dynamic Shared Object) atau DLL (Dynamic Link Library). Tulisan ini akan memberikan pengantar tentang bagaimana membuat program dengan memakai teknik ini.
1.Pendahuluan Dalam pembuatan sebuah program, terkadang kita tidak ingin semua fungsi diimplementasikan langsung pada program utama, karena kita mungkin belum tahu fungsi apa saja yang harus disediakan. Atau kita menginginkan pemakai program ini harus mempunyai kemungkinan untuk menambahkan fungsi-fungsi yang belum ada pada program yang akan kita tulis. Tentu saja semua itu harus dapat dilakukan tanpa harus melakukan proses rekompilasi program utama dari awal. Teknik Dynamic Loading adalah solusi yang tepat untuk merealisasikan keinginan di atas. Yang harus kita kerjakan hanyalah menulis program pokok yang mempunyai kemampuan memuatkan (loading) fungsi tambahan dan menginterpretasikan fungsi ini dengan benar. Sebelum kita membahas lebih jauh, kita harus mengetahui terlebih dahulu bagaimana tahapan proses dari file source code menjadi file yang bisa dieksekusi. Kita akan memulai dengan menulis program yang sudah tidak asing lagi bagi para pemrogram bahasa C yaitu Hello World.
#include
int main(int argc, char** argv) { printf("Hello World"); } Untuk melakukan proses kompilasi dapat dipakai perintah:
$ gcc -o hello hello.c Instruksi di atas akan melakukan proses berikut:
1.Proses kompilasi Source code hello.c dikompilasi menghasilkan file objek hello.o. Karena fungsi printf() tidak diimplementasikan di file ini, maka kompiler akan memberi catatan di tabel file objek ini bahwa fungsi printf() belum mempunyai referensi. 2.Proses linking Linker akan mencari di librari standard pengimplementasi fungsi yang tidak dapat ditemukan pada saat proses kompilasi, dalam hal ini pengimplementasi fungsi printf(). Perintah di atas secara implisit memanggil linker dan menambahkan beberapa librari standar sebagai parameter. Di sini pengimplementasi fungsi dari printf() akan ditemukan di libc yang juga ditambahkan tanpa sepengetahuan sang pemrogram. Proses linking librari ke program utama dibedakan menjadi dua tergantung dari caranya: 2.Proses linking statis (static linking). Di sini jika pengimplementasi fungsi printf() ditemukan, maka akan dikopikan ke dalam file objek hello. 3.Proses linking dinamis (dynamic linking). Di sini libc diimplementasikan sebagai shared library. Linker hanya akan mencatatkan referensi ke simbol pengimplementasi fungsi printf() pada file objek hello. Jika file program hello hasil dari proses linking statis dieksekusi, maka objek file program akan dimuatkan ke memori. Kemudian fungsi pertama, yang nama simbolnya tergantung dari sistem (contohnya __main), akan dipanggil. Fungsi ini, yang biasanya didefinisikan oleh kompiler atau librari akan melakukan seting dan initialisasi internal dan akhirnya akan memanggil fungsi utama main() yang didefinisikan oleh user. Pada cara kedua, jika program hello dieksekusi, maka objek file ini mula-mula juga akan dimuatkan ke memori. Kemudian linker dinamis (dynamic linker) akan membaca catatan referensi yang ada di file program hello yang dihasilkan oleh linker sebelumnya. Jika objek file shared library yang berisi pengimplementasi fungsi yang dibutuhkan belum dimuatkan ke memori, maka linker dinamis akan secara rekursif memuatkan objek file shared library ini ke memori. Rekursif berarti, jika suatu file shared library mempunyai referensi ke file shared library lainnya, maka objek file shared library yang lain ini juga akan dimuatkan ke memori (jika belum dimuat) dan seterusnya. Selanjutnya semua referensi yang merujuk ke simbol pengimplementasi fungsi akan diperbaharui ke posisi simbol yang aktual. Ini disebabkan posisi simbol pengimplementasi baru dapat ditentukan setelah objek file shared library dimuatkan ke memori (runtime). Dan posisi ini selalu berubah-ubah, tergantung dari banyak hal, seperti kapan objek file shared library ini dimuatkan ke memori, objek file shared library apa saja yang sudah dimuatkan ke memori dan sebagainya. Karena kita hanya akan membahas cara yang kedua, maka untuk selanjutnya terminologi librari dimaksudkan untuk merujuk ke shared library. 1.Shared Library Seperti disebutkan di atas, setiap kali objek file librari dimuatkan ke memori tidak selalu mempunyai posisi yang sama. Maka posisi simbol di dalam file libraripun mempunyai alamat yang selalu berubah. Oleh karena itu untuk mereferensi sebuah simbol, dilakukan pengalamatan berbasis zero, yaitu pengalamatan yang relatif terhadap posisi awal dari file librari. Setelah alamat posisi awal dapat ditentukan, maka referensi semua simbol di file librari dapat dihitung pada saat waktu eksekusi (runtime). Pada Program Library HOWTO [#!Wheeler!#] disebutkan tiga jenis librari, selain librari statis (static library) dan shared library masih ada dynamic loaded library. Dilihat dari arsitektur filenya, tidak ada perbedaan antara shared library dan dynamic loaded library. Pembedaan ini hanya dipandang dari sisi pemrogramnya saja. Pada shared library, proses loading dari objek file librari terjadi saat program utama dimuatkan ke memori (proses linking dinamis seperti diuraikan di atas). Sedang pada dynamic loaded library, proses loading dari file librari dapat berlangsung kapan saja selama program utama dijalankan. Proses linking ini juga sering disebut dengan runtime linking. Kita akan menamakan teknik yang memanfaatkan runtime linking ini dengan nama Dynamic Loading. Sebelum teknik ini dibahas, ada baiknya kita mengetahui aturan pemberian nama pada sebuah shared library, walaupun aturan ini tidak sepenuhnya berlaku pada dynamic loaded library. Penggunaan terminologi shared library untuk selanjutnya berlaku juga pada dynamic loaded library. Berbeda dengan jenis librari statis, shared library mempunyai dua jenis nama, yaitu soname dan real name. Soname terdiri dari awalan lib, nama dari librari, kata .so diikuti tanda titik (".") dan nomor versi mayor, seperti contohnya libhello.so.1. Real name adalah nama file librari sebenarnya yang disusun dari soname ditambah tanda titik ("."), nomor minor, dan kalau ada diikuti tanda titik (".") dan nomor release, seperti contohnya libhello.so.1.1 atau libhello.so.1.1.5. Selain kedua jenis nama di atas, masih ditambahkan satu jenis nama lagi yaitu linker name yang sama dengan soname tanpa nomor versi mayor, seperti contohnya libhello.so. Program yang membutuhkan file shared library akan melakukan referensi menggunakan jenis nama ini. Secara umum linker name adalah link ke soname dan soname adalah link ke real name. 2.API dari Dynamic Loading Kebanyakan sistem operasi menyediakan API (Application Program Interface) untuk penggunaan teknik Dynamic Loading. Sayangnya, nama-nama API ini belum ada standarnya, sehingga secara umum setiap sistem operasi menggunakan nama API sendiri-sendiri. Di sini kita akan menggunakan API dari sistem operasi Linux. Sebelum kita mulai dengan contoh program, kita akan membahas terlebih dahulu fungsi-fungsi API yang ditulis dalam bahasa program C. Deklarasi dari fungsi-fungsi ini terdapat di file header . void* dlopen(const char* filename, int flag); Fungsi ini bertujuan untuk memuatkan objek file filename ke memori. Jika pemanggilan fungsi berhasil atau file objek filename sudah ada di memori, maka fungsi akan mengembalikan sebuah handle sebagai hasilnya. Pada prinsipnya handle ini dapat dibayangkan sebagai referensi yang merujuk ke file objek filename. Namun demikian handle ini tidak boleh diinterpretasikan sebagai apapun juga, tapi hanya boleh digunakan sebagai parameter waktu pemanggilan fungsi lainnya seperti dlsym() atau dlclose(). Setiap kali fungsi ini dipanggil dengan sukses, maka librari dl akan memanajemen jumlah pemakai handle ini dengan cara menginkrementasi variabel. Parameter flag menentukan bagaimana dlopen() menangani simbol yang ada di objek filename. RTLD_LAZY dan RTLD_NOW dengan kombinasi RTLD_GLOBAL atau RTLD_LOCAL dapat digunakan untuk parameter ini. Intinya, pada RTLD_LAZY relokasi objek shared library baru dilakukan pada saat referensi di shared library untuk pertama kalinya dipanggil. Sedang pada RTLD_NOW proses relokasi dari semua objek shared library yang dibutuhkan dilakukan setelah objek filename dimuatkan ke memori. Dengan RTLD_GLOBAL, maka simbol di file shared library yang dimuatkan akan dapat dipakai oleh shared library lainnya. Kalau hal ini tidak dikehendaki maka dapat dipakai nilai RTLD_LOCAL yang juga merupakan nilai default. char* dlerror(void); Dengan fungsi ini, informasi tentang sebab-sebab terjadinya kesalahan pada proses linking dinamis dapat diakses. Pada terjadinya kesalahan, fungsi ini akan mengembalikan null-terminated character string sebagai hasilnya. Jika pada pemrosesan terakhir tidak terjadi kesalahan maka nilai NULL akan dikembalikan sebagai hasilnya. void* dlsym(void* handle, char* simbol); Setelah objek file filename dimuatkan ke memori, maka simbol-simbol di dalamnya dapat diakses dengan menggunakan fungsi dlsym(). Sebagai parameter pertama adalah handle yang merupakan hasil dari pemanggilan fungsi dlopen(). Parameter kedua simbol adalah nama fungsi atau nama variabel yang akan diakses. Jika simbol tidak ditemukan, maka fungsi akan mengembalikan NULL sebagai hasilnya. Pada kasus simbol ditemukan, maka sebuah pointer akan dikembalikan oleh fungsi ini sebagai hasilnya. Tergantung dari jenis simbol, pointer ini dapat diinterpretasikan sebagai pointer dari suatu fungsi atau variabel. Ada hal yang perlu mendapat perhatian di sini, jika fungsi mengembalikan nilai NULL. Di sini ada dua kemungkinan, yaitu simbol tidak ditemukan seperti diuraikan di atas, atau simbol ditemukan, tetapi mempunyai nilai NULL. Untuk mendapatkan informasi yang benar, dapat dilakukan dengan cara memanggil fungsi dlerror(), setelah pemanggilan fungsi ini. Jika fungsi dlerror() mengembalikan nilai bukan NULL, maka dapat dipastikan bahwa simbol tidak ditemukan. void* dlclose(void* handle); Fungsi ini adalah kebalikan dari fungsi dlopen(). Setiap kali fungsi ini dipanggil dengan sukses, maka librari dl akan memanajemen jumlah pemakai handle ini dengan cara mendekrementasi variabel. File objek yang direferensi oleh handle baru akan dihapuskan (unload) dari memori, jika sudah tidak ada lagi yang menggunakan handle ini (jumlahnya nol). 3.Contoh pemakaian Dynamic Loading Cara pemakaian API dari Dynamic Loading akan diperlihatkan di sini dengan menggunakan program demo yang sederhana. Source code program terdiri dari dua file, yaitu main.c dan simple_dl.c (Lihat list program: script-1 adalah main.c, script-2 adalah simple_dl.c dan script-3 adalah Makefile). File main.c adalah program utama yang mempunyai fungsi main(). Sedangkan file simple_dl.c adalah file modul yang berisi simbol variabel dan simbol pengimplementasi fungsi yang akan diakses dari fungsi main() dengan menggunakan fasilitas API Dynamic Loading. Dua simbol didefinisikan di dalam simple_dl.c. Yang pertama adalah simbol variabel yang didefinisikan sebagai berikut: char* info_linux = "Info Linux!"; Nama simbol variabel ini adalah info_linux yang merupakan pointer dari tipe data char. Pada pointer ini juga secara langsung dialokasikan sejumlah memori yang berisikan karakter string "Info Linux!". Simbol kedua adalah hello_world yang merupakan simbol dari pengimplementasi fungsi hello_world(). Pada prinsipnya nama simbol tidak selalu sama dengan nama pengimplementasi fungsi. Kita akan membahas hal ini secara ringkas pada bagian akhir dari artikel ini pada kasus penulisan program menggunakan C++. Simbol fungsi ini didefinisikan sebagai berikut: void hello_world(void); Fungsi ini hanya akan menampilkan kalimat "Hello world!" di layar monitor. Sebelum kita membahas kode di file main.c, kita akan mencoba untuk mengkompilasi file simple_dl.c. Untuk dapat menghasilkan shared library, pada proses kompilasi harus digunakan parameter -fPIC. PIC adalah kepanjangan dari position independent code. Dengan instruksi berikut:
$ gcc -fPIC -c simple_dl.c akan dihasilkan file objek simple_dl.o. Untuk mendapatkan file shared library simple_dl.so dari file objek ini dapat digunakan instruksi:
$ gcc -shared -o simple_dl.so simple_dl.o Untuk lebih yakin lagi, bahwa kedua simbol info_linux dan hello_world terdapat di file shared library simple_dl.o dapat digunakan program nm. Program ini adalah salah satu tools terdapat pada binutils yang dapat menampilkan simbol dari sebuah objek file. Instruksi
$ nm -g --defined-only -n simple_dl.so hanya akan menampilkan simbol global yang sudah terdefinisi. Daftar simbol akan ditampilkan secara berurutan menurut alamat relatif simbol, seperti yang terlihat di bawah ini:
00000618 ? _init 000007a0 T hello_world 00000840 A _etext 00000840 ? _fini 00001880 D info_linux 00001898 A _GLOBAL_OFFSET_TABLE_ 000018cc A _DYNAMIC 00001964 A __bss_start 00001964 A _edata 0000197c A _end Kolom kedua di atas menunjukkan tipe dari simbol. Huruf T mempunyai arti bahwa posisi simbol yang bersangkutan berada di bagian kode atau text, seperti halnya pada simbol hello_world yang adalah pengimplementasi fungsi. Sedangkan huruf D seperti pada simbol info_linux menandakan bahwa posisi simbol yang bersangkutan berada di bagian data yang terinitialisasi. Sekarang kita akan beralih membahas kode di dalam file main.c. Di sini kita mendefinisikan beberapa variabel. Dua diantaranya adalah void (*pFuncSimbol)(); dan char** pVarSimbol; Yang pertama adalah variabel pointer dari fungsi yang tidak mempunyai parameter (void) dan tidak mempunyai nilai kembali(void). Sedangkan variabel kedua adalah pointer dari character string. Sekarang kita akan membahas fungsi-fungsi yang dipakai di sini satu persatu.
handle = dlopen("./simple_dl.so", RTLD_NOW); if (!handle) { printf("Failed: %s\n", dlerror()); return 1; } Pertama-tama fungsi dlopen() akan dipanggil untuk memuatkan objek file shared library simple_dl.so ke memori. Program akan berakhir jika file ini tidak ditemukan. Jika objek file ini dapat dimuatkan ke memori dengan sukses, maka variabel handle selanjutnya dapat dipakai sebagai parameter untuk memanggil fungsi lainnya.
pFuncSimbol = (void (*)())dlsym(handle, "hello_world"); error = dlerror(); if (error) { printf("Failed(2): %s\n", error); return 1; } Fungsi dlsym() di atas dipanggil untuk mendapatkan referensi dari simbol hello_world. Jika simbol ini tidak ditemukan maka program akan berakhir. Informasi ini didapatkan dengan cara memanggil fungsi dlerror() yang akan mengembalikan hasil bukan NULL(lihat di atas tentang dlsym()). Jika simbol ditemukan, maka variabel pFuncSimbol sekarang mempunyai referensi ke simbol hello_world dari shared library simple_dl.so.
pFuncSimbol(); Dengan instruksi di atas, maka fungsi yang direferensi oleh variabel pFuncSimbol yang tak lain adalah fungsi hello_world di simple_dl.so akan dipanggil. Hasilnya dapat dilihat di layar monitor, yaitu penampilan character string "Hello world!".
pVarSimbol = (char**)dlsym(handle, "info_linux"); error = dlerror(); if (error) { printf("Failed(2): %s\n", error); return 1; } Seperti sebelumnya, di sini fungsi dlsym() dipakai untuk mendapatkan referensi dari simbol info_linux. Jika simbol ditemukan, maka sekarang pVarSimbol mempunyai referensi ke simbol info_linux yang isinya tidak lain adalah character string "Info Linux!".
printf("%s\n", *pVarSimbol); Di sini isi dari referensi pVarSimbol "Info Linux!" akan ditampilkan di layar monitor.
dlclose(handle); Setelah kita tidak membutuhkan lagi, maka kita harus menutup handle yang telah kita buka sebelumnya. Untuk menghasilkan file program main yang dapat dieksekusi, dapat digunakan instruksi seperti berikut:
$ gcc -o main main.c -ldl Dengan parameter -ldl maka pada proses linking shared library libdl.so yang mengimplementasi API Dynamic Loading akan ditambahkan. Setelah berhasil, jika program main dieksekusi maka di layar monitor akan ada tampilan sebagai berikut:
$ ./main Hello world! Info Linux! 4.Memanggil Fungsi di Program Utama dari Objek shared library Pada banyak kasus kita akan memerlukan fungsi yang sudah diimplementasikan di program utama untuk dipanggil dari objek shared library. Dari sisi objek shared library sendiri tidak ada masalah, selama fungsi ini sudah terimplementasi di program utama, karena pembuatan file shared library tidak membutuhkan proses linking. Yang menjadi kunci pokok di sini adalah, bahwa simbol fungsi di program utama harus ditambahan ke tabel simbol dinamik (dynamic symbol table). Tabel ini memuat semua simbol yang akan dapat diakses oleh semua objek shared library pada saat runtime. Hal ini dapat dilakukan dengan menambahkan parameter -rdynamic pada proses pembuatan file program utama. Parameter ini akan menginstruksikan kompiler untuk melewatkan parameter -export-dynamic pada proses linking oleh ld. Jika parameter ini tidak ditambahkan, maka tabel simbol dinamik hanya akan berisi simbol yang direferensi oleh objek shared library saat proses linking pada pembuatan file program utama. Kita akan menambahkan beberapa baris pada file main.c dan simple_dl.c untuk menunjukkan hal di atas. Pada file main.c ditambahkan sebuah fungsi hello_main() yang akan dipanggil dari file simple_dl.c.
/*============================== * Fungi tambahan di file main.c */
void hello_main(const char* txt) { printf("%s\n", txt); } Fungsi hello_main() hanya akan menampilkan isi string txt yang dilewatkan melalui parameter.
void hello_world(void) { printf("Hello world!\n");
/* ======================================== * Memanggil fungsi yang ada di file main.c */ hello_main("Saya simple_dl"); } Fungsi hello_main() di program utama akan dipanggil setelah fungsi helllo_world() ini dipanggil oleh program utama. Proses pembuatan objek shared library simple_dl.so sama seperti diterangkan sebelumnya. Pada pembuatan objek program utama, harus ditambahkan parameter -rdynamic seperti berikut:
$ gcc -rdynamic -o main main.c -ldl Hasil dari pengeksekusian program main dapat dilihat pada tampilan monitor:
$ ./main Hello world! Saya simple_dl Info Linux! 5.Fungsi _init() dan _fini() Fungsi _init() dan _fini() adalah dua fungsi khusus pada sebuah file shared library. Fungsi _init() akan dipanggil oleh librari dl setelah sebuah objek file shared library dimuatkan ke memori dengan instruksi dlopen(). Sedang sebelum shared library dihapuskan(unload) dari memori lewat instruksi dlclose(), librari dl akan memanggil fungsi _fini(). Kita dapat memanfaatkan kedua fungsi ini dengan cara mengimplementasikan kedua fungsi tersebut dalam shared library yang kita tulis. Pada umumnya fungsi _init() digunakan untuk menginitialisasi variabel ataupun mengalokasi memori. Fungsi _fini() sebaliknya dapat digunakan untuk menghapuskan memori yang dialokasi sebelumnya. Untuk menghindari pengimplementasian ganda, pada saat proses kompilasi pembuatan shared library harus ditambahkan parameter -nostartfiles, seperti contohnya:
$ gcc -shared -nostartfiles -o simple_dl.so simple_dl.o 6.Penggunaan C++ Pada penggunaan bahasa C++ ada beberapa aspek yang perlu mendapat perhatian. Salah satu hal yang membedakan antara C++ dan C adalah, bahwa di C++ kita dapat mempunyai beberapa fungsi dengan nama yang sama tetapi parameter yang berbeda. Terminologi yang sering dipakai untuk ini pada bahasa yang mendukung object oriented adalah overloading. Lain dengan bahasa C, di sini nama fungsi saja tidak cukup untuk dijadikan sebagai identitas yang unik (unique identifier) di tabel simbol. Untuk mendapatkan identitas yang unik ini, akan dilakukan proses mangling terhadap nama fungsi di C++ yang menyertakan informasi parameternya. Misalnya saja dengan memakai gcc, simbol fungsi foobar dengan parameter tunggal int akan berubah menjadi foobar__Fi. Proses mangling ini bergantung kepada jenis kompiler, sehingga pada pemakaian kompiler yang berbeda akan dihasilkan identitas unik yang berbeda juga. Dengan menggunakan program c++filt yang juga terdapat dalam paket binutils, kita dapat melakukan proses demangling, yaitu proses kebalikan dari mangling. Contohnya dengan intruksi
c++filt foobar__Fi maka dari simbol foobar__Fi kita akan mendapatkan kembali nama fungsi dengan parameternya foobar(int). Hal di atas akan membuat masalah pada pembuatan program yang memakai bahasa C dan C++, karena simbol fungsi program yang ditulis dengan C juga akan dilakukan proses mangling. Sebagai contoh kita ingin menulis program yang memakai librari dari pihak ketiga yang hanya memberikan file header dan file objek shared library yang ditulis dengan bahasa C. Sedangkan program yang kita tulis menggunakan bahasa C++ yang akan memanggil beberapa fungsi di librari ini. Pada proses kompilasi, simbol fungsi di file header akan dilakukan proses mangling, sehingga pada proses linking akan mengakibatkan kesalahan, karena simbol tidak dapat ditemukan. Untuk mencegahnya, simbol fungsi pada file header tidak boleh dilakukan proses mangling oleh kompiler. Ini dapat dilakukan dengan menambahkan deklarasi extern "C" di file header yang akan membuat kompiler untuk memakai konvensi nama C (C name convention). Karena pada kompiler C++ biasanya didefinisikan makro __cplusplus maka penambahan header dapat dilakukan sbb:
#ifdef __cpluplus extern "C" { #endif
......
#ifdef __cpluplus } #endif Jika librari dimuatkan menggunakan Dynamic Loading dan fungsi di librari dipanggil dengan memakai fungsi dlsym(), maka masalah di atas tidak akan terjadi, karena pada simbol fungsi di librari tidak dilakukan proses mangling. Masalah lain yang timbul sehubungan dengan pemakaian bahasa C++ adalah kita tidak dapat memakai fungsi dlsym() untuk memanggil fungsi di librari yang ditulis memakai bahasa C++. Hal ini diakibatkan karena pada semua simbol akan dilakukan proses mangling, sehingga kita tidak akan tahu nama simbol dari fungsi yang kita inginkan. 7.Penutup Penerapan teknik Dynamic Loading akan memudahkan pengembangan suatu aplikasi besar yang dilakukan oleh sekelompok pemrogram seperti halnya aplikasi web server Apache. Program utamanya hanya mengimplementasi fungsi pokok saja, sedang fungsi-fungsi lainnya ditambahkan dalam bentuk modul secara fleksibel bergantung dari keperluan. Salah satu faktor yang tidak menguntungkan adalah lamanya waktu proses pemuatan file shared library ke memori dan proses pereferensian dari simbol. Jika modul-modul dimuatkan hanya pada saat awal saja, maka faktor di atas tidak terlalu penting. Aplikasi bot irc eggdrop memakai teknik lain untuk menghindari faktor di atas. Pengaksesan ke simbol dilakukan dengan melalui tabel yang berisikan pointer statis dari simbol. Akhir kata, semoga artikel ini bermanfaat dan dapat menambah wacana teknik pemrograman bagi pembaca.

simulator Prosesssor

Simulator Prosesor
Di samping simulator mesin teori, seringkali dalam memahami proses kompilasi perlu penjelasan dari tingkat instruksi di level prosesor. Untuk itu penjelasan akan lebih mudah dilakukan bila memanfaatkan suatu simulator prosesor. Memang sebetulnya pengetahuan instruksion set design ataupun simulator ini diperoleh di Arsitektur Komputer. Akan tetapi simulator prosesor ini dapat juga dimanfaatkan untuk memberikan pemahaman teknik pembuatan dan ekseskusi suatu kompilasi. Sehingga tahapan "menjalankan kompiler, dan hasil kompilasi yang dibentuk dapat berupa" : Program aplikasi bahasa A V Kompiler/interpreter bahasa A V Bahasa mesin prosesor X V Simulator prosesor X V Sistem Operasi "Host" (misal Windows, Linux dll)
Dengan cara itu mahasiswa dapat mempelajari bagaimana proses kompilasi dilakukan dan bagaimana dijalankan pada mesin virtualnya. Sehingga pengamatan dapat dilakukan dg mudah. Faktor lain adalah dg menggunakan "prosesor virtual" maka kita dapat mendefinisikan :
Prosesor X adalah suatu prosesor virtual yg sederhana
Bahasa A merupakan bahasa yg didisain mahasiswa secara sederhana (misal hanya bisa interger, dan operasi sederhana saja)
Kompiler yg disusun akan menghasilkan "kode biner" untuk proesor X yg sederhana tersebut (misal register terbatas, dan metoda pengalamatan terbatas)
Dengan cara di atas, student tidak dihadapi oleh "instruction set" yang kompleks, dan architecture processor, dan juga bahasa pemorgraman yg rumit. Tetapi konsep kompilasi dapat lebih mudah dipahami secara mendasar. ketimbang harus menggunakan prosesor "real" dan bahasa "real" yang jelas memiliki scope sangat luas.
Berikut ini adalah beberapa simulator prosesor yang dapat dimanfaatkan dalam memberikan pemahaman lebih dalam mengenai teori dan praktis kepada para mahasiswa.
mic1. mic1 ini berbasiskan Java yang mengimplementasikan arsitektur mikro Mic-1 pada Bab 4 buku Andrew S. Tanenbaum, Structured Computer Organization,http://www.ontko.com/mic1/
DLXOS. Merupakan suatu sistem "komputer" yang dijelaskan pada buku Arsitektur oleh Hennessy & Patterson. Sistem ini terdiri dari DLX Processor (instruction set dan spesifikasi), DLX hardware simulator, DLX compiler dan assembler, DLX Operating System. Karena semua tersedia source code, jadi dapat menjelaskan secara gamblang, bagaimana suatu sistem komputer dibangun, dari "prosesor" hingga "sistem operasi".http://www.cse.ucsc.edu/~elm/Software/Dlxos/index.shtml
MIX. Emulator ini ditulis oleh David A Smallberg (1982), dan mensimulasikan prosesor MIX (yang diteragnkan dalam buku milik Donald Knuth).http://www.swiss.ai.mit.edu/~adler/MIX/
MIXAL. Merupakan lingkungan mensimulasikan kerja MIX, MIX adalah model komputer yang merupakan penyederhanaan model CISC (Complex Instruction Set Computer), assembly dari model ini mirip dengan komputer sesungguhnya. Di situ ini terdapat tutorial dan juga SIMULASI GRAFIS.http://www.gnu.org/software/mdk/mdk.html
MMIX MMIX merupakan prosesor teoritis ciptaan Prof. Donald Knuth, yang merupakan penmgembangan dari MIX. Prosesor bertipe Reduced Instruction Set Computer (RISC).http://bitrange.com/mmix/Untuk informasi lainnya tentang prosesor ini dapat dibaca di URL berikut inihttp://www-cs-faculty.stanford.edu/~knuth/mmix.htmlhttp://mmixmasters.sourceforge.net/

sejarah pascal

1. Sejarah PASCAL
merupakan pengembangan dari bahasa ALGOL 60, bahasa pemrograman untuk sains komputasi. Tahun 1960, beberapa ahli komputer bekerja untuk mengembangkan bahasa ALGOL, salah satunya adalah Dr. Niklaus Wirth dari Swiss Federal Institute of Technology (ETH-Zurich), yang merupakan anggota grup yang membuat ALGOL. Tahun 1971, dia menerbitkan suatu spesifikasi untuk highly-structured language (bahasa tinggi yang terstruktur) yang menyerupai ALGOL. Dia menamainya dengan PASCAL (seorang filsuf dan ahli matematika dari Perancis) Pascal bersifat data oriented, yaitu programmer diberi keleluasaan untuk mendefinisikan data sendiri. Pascal juga merupakan teaching language (banyak dipakai untuk pengajaran tentang konsep pemrograman). Kelebihan yang lain adalah penulisan kode Pascal yang luwes, tidak seperti misalnya FORTRAN, yang memerlukan programmer untuk menulis kode dengan format tertentu. Bentuk dasar program Pascal adalah seperti berikut:
program TITLE ;begin pernyataan;pernyataanend.
2. PASCAL
sebagai bahasa terstrukturSebagai bahasa terstruktur, PASCAL mempunyai ciri-ciri sebagai berikut:1. BerurutanSusunan dari kode-kode dalam teks Pascal harus ditulis secara urut dari atas, pernyataan-pernyataan yang ditulis lebih awal akan dieksekusi lebih dahulu. Oleh karena itu, suatu pernyataan yang menyangkut suatu variabel di dalam program, maka variable itu harus terdefinisi dahulu sebelumnya. Hal ini terutama menyangkut pada pemanggilan sub-program oleh sub-program yang lain. Bisa dibaca lebih lanjut pada bagian sub-program.2. Blok dengan batas-batas yang jelas.Pascal memberikan pembatas yang jelas pada tiap-tiap blok, seperti pada blok program utama, sub-program, struktur kontrol (pengulangan/ pemilihan), dll. Pemakaian kata kunci begin untuk mengawali operasi pada blok dan end untuk menutupnya memudahkan programmer menyusun programnya dengan mudah. Seperti contoh:
If X>0 thenbegin Write ( ‘ bilangan positif’);Writeln ( ‘ program selesai’);end;
3. Satu pintu masuk dan satu pintu keluar pada blok pemilihan dan pengulangan. Contoh di atas juga mengilustrasikan pintu masuk tunggal pada suatu blok pemilihan yaitu suatu test logika X>0, dengan pintu keluaran yang satu pula (satu disini maksudnya bukan dua baris perintah output tapi suatu paket perintah yang dirangkai dengan begin .. end.3. Bakuan PASCALDibakukan oleh ISO pada tahun 1983 dan dikembangkan dalam beberapa versi, diantaranya: USCD PASCAL, MS PASCAL, TURBO PASCAL dll. Dengan semakin berkembangnya teknologi dalam komputasi, Pascal dimanfaatkan untuk pengembangan DELPHI (berasal dari nama suatu kota di masa Yunani kuno), suatu bahasa pemrograman visual yang menonjolkan pada efek grafis dan orientasi pada objek-objek yang siap dipakai, karena memiliki Visual Component Library (VCL).
4. Struktur Bahasa PASCAL
secara umumPascal mempunyai struktur sebagai berikut:1. Bagian Judul Program2. Bagian Deklarasia. Deklarasi tipe data (TYPE)b. Deklarasi variabel (VAR)c. Deklarasi konstanta (CONST)d. Deklarasi label (LABEL)e. Deklarasi sub-program (PROCEDURE dan FUNCTION)3. Bagian Program Utama Perintah-perintah.
Teks Pascal setidaknya memiliki bagian Judul Program, bagian Deklarasi, dan Bagian Program Utama yang berupa perintah-perintah. Sedangkan untuk bagian deklarasi menyesuaikan dengan isi dari program itu sendiri. Contoh program PASCAL:
program TAMBAH_00; { Menjumlahkan dua bilangan yang nilainya diberikan dalam perintah}var X, Y, Z: integer; { Deklarasi variabel X,Y dan Z sebagai bilangan bulat }BEGIN { Program Utama Mulai }X := 50; { Perintah memberikan nilai 50 pada var. X }Y := 25; { Perintah memberikan nilai 25 pada var. Y }Z := X + Y; { Perintah menjumlahkan X dan Y serta menyimpan hasilnya ke Z}END. { Akhir Program Utama }
Pada contoh ini nilai X dan Y tidak bisa sembarang, karena didefiniskan tertentu. Agar nilai X dan Y bisa bebas ditentukan, nilai X dan Y dibaca dari default input.
program TAMBAH_01; { Menjumlahlan dua buah bilangan yang dibaca dari default input }var X, Y, Z: integer; { Deklarasi variabel X,Y dan Z sebagai bilangan bulat }BEGIN { Program Utama Mulai }read(X); { Membaca nilai X lewat key-board }read(Y); { Membaca nilai Y lewat key-board }Z := X + Y; { Menjumlahkan X dan Y serta menyimpan hasilnya ke Z }write(Z); { Menyajikan Z ke layar monitor }END. { Akhir Program Utama }
Dasar Bahasa PASCAL
Unsur-unsur Pemrogramana. Mendapatkan data dengan membaca data dari default input (key board, file atau sumber data lainnya).b. Menyimpan data ke dalam memori dengan struktur data yang sesuai,c. Memproses data dengan instruksi yang tepat.d. Menyajikan atau mengirimkan hasil olahan data ke default output (monitor, file atau tujuan lainnya).
Dalam mengolah data diperlukan pengelolaan instruksi terstruktur:a. Beberapa instruksi dikelompokkan dalam satu blok atau model yang mengerjakan tugas tertentu.b. Beberapa perintah dilaksanakan dengan persyaratan tertentu.c. Beberapa perintah dilaksanakan berulang dengan jumlah pengulangan tertentu. Identifier Digunakan untuk nama: Program, Sub-program (procedure dan function),nama: Variable, Constant, Type, Label.Nama-nama ini digunakan untuk pemakaian dan pemanggilan dalam program. Ketentuan penulisan identifiera. Nama identifier harus dimulai dengan karakter huruf alfabet: a sampai z, A sampai Z atau karakter ‘_’ (underscore - garis bawah)b. Karakter berikutnya boleh karakter numerik (0 .. 9) atau kombinasi alphanumerik (huruf-numerik).c. Panjang nama, pada berbagai versi Pascal umumnya antara 32 - 63.d. Tidak boleh menggunakan karakter istimewa: + - * / \ = < > [ ] . , ; : ( ) ^ @ { } $ # ~ ! % & ` ” ‘ dan ? Contoh penulisan:Penulisan yang benar: X _PQR Beta Sudut_Alpha luasLingkaranPenulisan yang salah: 3D sisi-Kanan B#
Jenis identifiera. Identifier umumMerupakan identifier yang didefinisikan sendiri oleh pemrogram. Pemrogram mempunyai kebebasan untuk menentukan nama identifiernya, dengan syarat nama tersebut tidak sama dengan identifier standar dan reserved word yang akan dibahas lebih lanjut. Hal ini untuk mencegah kesalahan yang bisa timbul akibat tumpang tindih identifier dalam program.b. Identifier Standar (Baku)Merupakan identifier yang didefinisikan oleh pembuat kompiler Pascal. Biasanya pembuat kompiler menyediakan suatu library yang sudah ada didalam kompiler. Library berisi berbagai procedure, fungsi atau unit yang sudah siap pakai. Misalnya Turbo Pascal Windows 1.5 memiliki suatu unit untuk memproses output yaitu wincrt, gotoxy, yang dengan mudah bisa dipakai oleh programmer di dalam menuliskan kode-kode programnya. Dinamai Identifier Standar karena suatu kompiler tidak harus memilikinya, masing-masing kompiler dimungkinkan mempunyai identifier yang berbeda untuk suatu tugas yang hampir sama. Misalnya Turbo Pascal versi DOS menggunakan crt untuk melakukan fungsi yang sama dengan wincrt (TPW 1.5). Beberapa Identifier Standar yang dimiliki oleh kompiler-kompiler Pascal antara lain:
abs arctan boolean char cos dispose eof eoln exp false input integer ln maxint new odd ord output pack page pred read readln real reset rewrite round sin sqr sqrt succ text true trunc write writeln
c. Identifier “reserved word”, yaitu yang sudah didefinisikan dan digunakan oleh bahasa PASCAL sendiri (Kita tidak bisa menamai identifier kita dengan ini).
and array begin case const div do downto else end file for forward function goto if in label mod nil not of or packed procedure program record repeat set then to type until var while with
Deklarasi Variable:Mendeklarasikan varibel adalah:a. Memberikan nama variabel sebagai identitas pengenalb. Menentukan tipe data variabelContoh deklarasi variabel:
var K : integer;R : real;C : char;T : boolean;
Beberapa identifier yang sejenis bisa dideklarasikan bersamaan.
var i, j, k : integer;{Variabel i, j dan k sebagai integer}namaMHS, alamatMHS : char; {Nama dan alamat mahasiswa }
Deklarasi Konstanta:Mendeklarasikan konstanta adalah:a. Memberikan nama konstanta sebagai identitas pengenalb. Menentukan nilai konstantaContoh deklarasi konstanta:
const MaximumSize = 100; {integer }ExitCommand = ‘Q’; {char }
Tipe Data
Tipe data yang disediakan oleh PASCAL meliputi:1. Tipe Data Sederhanamerupakan tipe data dasar yang sering dipakai oleh program, meliputi: integer (bilangan bulat), real (bilangan pecahan), char (alphanumerik dan tanda baca), dan boolean (logika). Untuk data integer dan real masing-masing terbagi menjadi beberapa kategoria. Bilangan Integermerupakan tipe data berupa bilangan bulat, terbagi atas beberapa kategori seperti terlihat dalam tabel 1. tabel 1 menunjukkan jenis data, ukuran dalam memori dan rentang nilainya.
tabel 1. Tipe Data Bilangan Integer
Tipe Data
Ukuran Tempat
Rentang Nilai
Byte
1 byte
0 s/d +255
Shortint
1 byte
-28 s/d +127
integer
2 bytes
-32768 s/d 32767
Word
2 bytes
0 s/d 65535
Longint
4 bytes
2147483648 s/d 2147483647
Contoh bilangan integer adalah: 34 6458 -90 0 1112 Penggolongan tipe data integer tersebut dimaksudkan untuk membatasi alokasi memori yang dibutuhkan misalkan untuk suatu perhitungan dari suatu variabel bilangan diperkirakan nilai maksimumnya 32767 kita cukup mendeklarasikan variabel bilangan sebagai integer (2 byte), daripada sebagai longint(4 byte). Di dalam kompilernya, Pascal menyediakan konstanta untuk bilangan Integer yaitu: MaxInt and MaxLongInt, pemrogram bisa menggunakannya di dalam programnya tanpa harus terlebih dahulu mendefinisikannya.-MaxInt bernilai 32.767-MaxLongint bernilai 2.147.483.647.contoh:
Program display_maxint;uses wincrt;begin writeln (maxint)end.
Hasilnya: 32.767
b. Bilangan RealBilangan real atau nyata merupakan jenis bilangan pecahan, dapat dituliskan secara biasa atau model scientific . Contoh bilangan real: 34.265 -3.55 0.0 35.997E+11, dimana E merupakan simbol perpangkatan 10. Jadi 452.13 mempunyai nilai sama dengan 4.5213e2. Penggolongan tipe data bilangan real dapat dilihat pada tabel 2.tabel 2. Bilangan Real
Tipe Data
Ukuran Tempat
Rentang Nilai
real
6 bytes
2.9 x 10-39 s/d 1.7 x1038
single
4 bytes
1.5 x 1045 s/d 3.4 x 1038
double
8 bytes
5.0 x 10-324 s/d 1.7 x 10308
extended
10 bytes
3.4 x 10-4932 s/d 1.1 x 104932
comp
8 bytes
-9.2x 1018 s/d 9.2x 1018
c. Chartipe data ini menyimpan karakter yang diketikkan dari keyboard, memiliki 266 macam yang terdapat dalam tabel ASCII (American Standard Code for Information Interchange). Contoh: ‘a’ ‘B’ ‘+’, dsb. Yang perlu diingat bahwa dalam menuliskannya harus dengan memakai tanda kutip tunggal. Jenis data ini memerlukan alokasi memori sebesar 1(satu) byte untuk masing-masing data.

Minggu, 07 Oktober 2007

pengenalan wajah

Pengenalan wajah adalah merupakan suatu pengenalan pola (pattern recognition) yang khusus untuk kasus wajah. Ini dapat dideskripsikan sebagai pengklasifikasian suatu wajah apakah dikenali (known) atau tidak dikenali (unknown), dimana setelah dibandingkan kemudian disimpan secara tersendiri. Beberapa pendekatan untuk pengenalan obyek dan grafika komputer didasarkan secara langsung pada citra-citra tanpa penggunaan model 3D. Banyak dari teknik ini tergantung pada suatu representasi citra yang membentuk suatu struktur ruang vektor, dan dalam prinsip ini memerlukan korespondensi yang padat. Pendekatan appearance-based kebanyakan digunakan untuk pengenalan wajah. Pada metode ini, model wajah dipelajari melalui proses training dengan menggunakan satu set data pelatihan yang berisi contoh-contoh wajah. Kemudian hasil training ini digunakan untuk pengenalan wajah. Secara umum metode ini menggunakan teknik-teknik analisis statistik dan mesin pembelajaran (machine learning) untuk menemukan karakteristik-karakteristik yang sesuai dari wajah maupun non-wajah. Yang termasuk dalam kelompok ini adalah : Eigenfaces, distribution-based dan clustering, jaringan syaraf tiruan, SVM (Support VectorMmachine), dll.

Visualisasi

Visualisasi saat terjadi tabrakan mobil dengan menggunakan analisa elemen

Visualisasi (Inggris: visualization) adalah rekayasa dalam pembuatan gambar, diagram atau animasi untuk penampilan suatu informasi. Secara umum, visualisasi dalam bentuk gambar baik yang bersifat abstrak maupun nyata telah dikenal sejak awal dari peradaban manusia. Contoh dari hal ini meliputi lukisan di dinding-dinding gua dari manusia purba, bentuk huruf hiroglip Mesir, sistem geometri Yunani, dan teknik pelukisan dari Leonardo da Vinci untuk tujuan rekayasa dan ilmiah, dll.

Pada saat ini visualisasi telah berkembang dan banyak dipakai untuk keperluan ilmu pengetahuan, rekayasa, visualisasi disain produk, pendidikan, multimedia interaktif, kedokteran, dll. Pemakaian dari grafika komputer merupakan perkembangan penting dalam dunia visualisasi, setelah ditemukannya teknik garis perspektif pada zaman Renaissance. Perkembangan bidang animasi juga telah membantu banyak dalam bidang visualisasi yang lebih kompleks dan canggih.

DAN IMPLEMENTASI ALGORITMA MIDPOINT DISPLACEMENT PADA PEMBANGKITAN CITRA TERRAIN

Salah satu kajian pada bidang grafika komputer adalah pembangkitan citra terrain. Terrain secara bahasa berarti permukaan bumi. Terrain banyak ditemukan pada aplikasi game 3D, simulator dan film animasi 3D. Tanpa adanya terrain, film animasi 3D tidak akan tampak realistis, karena film animasi biasanya menggambarkan tentang kehidupan sesungguhnya.
Terdapat beberapa algoritma yang bisa digunakan untuk membangkitkan atau membentuk suatu terrain. Diantaranya adalah algoritma Midpoint Displacement atau juga disebut algoritma The Diamond-Square atau algoritma Plasma. Algoritma tersebut sangat mudah dipahami dan digunakan, namun dapat menghasilkan suatu citra yang bentuknya cukup rumit. Citra yang dihasilkan akan berbentuk 3 dimensi (3D).
Setelah dilakukan percobaan, terrain mulai terbentuk pada iterasi ke-5. Waktu yang dibutuhkan untuk pembangkitan citra terrain pada iterasi tersebut adalah 50 ms. Besarnya nilai roughness menjadikan bentuk terrain yang dihasilkan menjadi lebih bervariatif, karena nilai yang dibangkitkan adalah acak.

print-GDL pemanfaatan grafika komputer

Pada perkembangan saat ini pemanfaatan teknologi grafika komputer
sangat dibutuhkan untuk memvisualisasikan objek-objek dunia nyata menjadi
objek grafis, dan implementasi yang real yaitu digunakannya teknologi grafika
komputer pada fraktal untuk pembuatan aplikasi desain suatu benda.
Penggunaan Metode Newton dalam aplikasi fraktal mempunyai peranan
didalam melakukan suatu iterasi, pembentukan gambar dan pemilihan warna
(palette) pada aplikasi ini sangat ditentukan dari metode yang digunakan, untuk
pengujiannya pada setiap input dengan memasukkan nilai iterasi yang berbedabeda
kemudian diproses, sehingga keluarannya diperoleh berupa bentuk gambar
dengan susunan pola warna yang ada pada gambar tersebut dari hasil perhitungan.
Aplikasi yang dibangun diharapkan mampu untuk diterapkan pada permukaan
sebuah keramik.

Grafika komputer 3D

Grafika komputer 3D

Contoh grafika komputer 3D

Grafika komputer 3D (Inggris: 3D Computer graphics) adalah representasi dari data geometrik 3 dimensi sebagai hasil dari pemrosesan dan pemberian efek cahaya terhadap grafika komputer 2D. Hasil ini kadang kala ditampilkan secara waktu nyata (real time) untuk keperluan simulasi. Secara umum prinsip yang dipakai adalah mirip dengan grafika komputer 2D, dalam hal: penggunaan algoritma, grafika vektor, model frame kawat (wire frame model), dan grafika rasternya.

Grafika komputer 3D sering disebut sebagai model 3D. Namun, model 3D ini lebih menekankan pada representasi matematis untuk objek 3 dimensi. Data matematis ini belum bisa dikatakan sebagai gambar grafis hingga saat ditampilkan secara visual pada layar komputer atau printer. Proses penampilan suatu model matematis ke bentuk citra 2 D biasanya dikenal dengan proses 3D rendering.