Wednesday, October 26, 2011

Jade, Netbeans and Intelligent Agent

JADE atau Java Agent DEvelopment Framework adalah sebuah framework yang memfasilitasi pengembangan aplikasi berbasis agent yang diimplementasikan dalam bahasa Java. Salah satu tujuan dari pengembangan Jade adalah menyederhanakan pengimplementasian Multi Agents System yang sesuai dengan spesifikasi FIPA. (Foundation for Intelligent, Physical Agent; http://fipa.org). Jade juga menyediakan seperangkat tools berbasis grafik untuk debugging sistem yang akan dikembangkan. Website Jade adalah http://jade.tilab.com. Jade dikembangkan pada tahun 1998 oleh Research & Development Departement of Telecom Italia, namun sejak tahun 2003, Jade menjadi software Open Source di bawah lisensi LGPL dengan hak cipta tetap dipegang oleh Telecom Italia.

Versi terbaru Jade adalah versi 4.1 yang dirilis pada tanggal 13 Juli 2011, dan karena Jade diimplementasikan dalam bahasa Java maka Jade membutuhkan persyaratan sistem minimal, yaitu Java (JDK) versi 1.4 atau yang lebih baru.

Oke, sebelum kita berbicara banyak bagaimana JADE bisa membuat agent, bahkan multi agents, kita share dulu bagaimana JADE kita manipulasi dan kita jalankan melalui Netbeans. Kenapa Netbeans? Ya karena JADE merupakan framework berbasis java, maka Netbeans adalah salah satu tools yang bisa kita gunakan untuk ngutak-ngatik dan ngoding JADE.

Yang pertama harus dilakukan setelah mendownload JADE adalah mengekstrak dan menempatkannya di direktori pilihan anda. Misalkan ditaruh di D:\JADE. Oke, jika sudah kita coba running test apakah JADE yang kita download bisa dijalankan melalui Netbeans atau tidak. Dan sekali lagi sebelum kita melanjutkan, mohon dipastikan bahwa anda telah menginstal java minimal JDK versi 1.4.

Monday, October 24, 2011

What is RAID? How RAID works?

RAID (Redundant Array of Independent Disks) adalah suatu cara untuk meningkatkan unjuk kerja dan reliabilitas media penyimpanan eksternal dengan memanfaatkan redundancy. Hal tersebut dilakukan dengan jalan menggabungkan beberapa disk menjadi sebuah logical disk dan mendistribusikan data ke setiap disk di dalamnya. Lho bukankah sekarang harddisk kapasitasnya sudah sangat besar dan mencukupi??

Ceritanya, teknologi ini lahir tahun 1990an. Ketika itu komputer-komputer server mengalami lonjakan data yang harus disimpan. Sementara itu jika harus meningkatkan kapasitas penyimpanan masih membutuhkan biaya yang sangat besar. Nah, RAID hadir dan menjadi solusi murah tanpa mengorbankan performansi komputer tersebut. Jika jaman dahulu RAID banyak digunakan untuk enterprise and server markets namun pada tahun 2000 awal sudah banyak dimanfaatkan oleh kalangan end-user.

Tiga alasan utama menggunakan teknologi RAID :
  1. Redundancy
    Redundancy merupakan faktor penting pada pengembangan RAID di server. Mengapa? Karena redundancy digunakan untuk menyimpan informasi paritas untuk menjaga agar data dapat di-recover jika terjadi kegagalan disk. Jika salah satu disk mengalami kegagalan, maka dapat ditukar dengan disk rendundant-nya tanpa harus mematikan sistem (hot-swappable). Metode redundancy tergantung pada versi RAID yang digunakan.
  2. Peningkatan performansi komputer
  3. Murah
    Bisa anda bandingkan, membeli harddisk baru yang lebih besar kapasitasnya cost yang diperlukan lebih besar daripada membeli 2 atau (mungkin) 3 harddisk baru (apalagi second) yang kapasitasnya sama.
Ada tujuh metode RAID, RAID 0 - RAID 6. Akan tetapi hanya tiga model sistem RAID yang biasa digunakan pada desktop komputer adalah : RAID 0, RAID 1 dan RAID 5. Dalam RAID, data didistribusikan menggunakan skema yang disebut striping. Dengan metode striping ini data tampak seolah-olah disimpan pada sebuah logical disk. Logical disk tersebut dibagi-bagi menjadi yang disebut sebagai strips yang bisa jadi berupa blok atau sektor yang ada secara fisik. Strips dipetakan secara round-robin pada disk-disk fisik dalam array RAID secara berurutan. Dengan memanfaatkan metode striping ini, maka data pada RAID dapat diakses secara paralel.
  • RAID 0
    RAID 0 sebenarnya tidak sepenuhnya mengimplementasikan karakteristik RAID, karena RAID 0 tidak memanfaatkan redundancy. RAID 0 menggunakan block-level striping tanpa pemanfaatan paritas ataupun mirroring. Dengan kata lain, RAID 0 dapat meningkatkan unjuk kerja namun tidak
    menyediakan fault tolerance, sehingga apabila salah satu drive mengalami kegagalan, seluruh data bisa rusak.

    Mengapa striping bisa meningkatkan performance? Karena, strips menulis ke dalam dua drive dengan jumlah data yang lebih banyak dua kali lipat dibandingkan dengan menulis jumlah data yang sama ke dalam single drive. Di bawah ini, adalah contoh bagaimana data ditulis dengan RAID 0. Setiap baris pada tabel menunjukkan physical block pada drive dan setiap kolom adalah identitas drive. Angka pada tabel menunjukkan blok data. Jika terdapat angka ganda (duplicate number), itu berarti menunjukkan duplikat blok data.
    Semua blok (6 block data) dibutuhkan untuk file, tapi hanya tiga yang dapat diakses, karena setiap drive bekerja secara paralel, dan hanya dapat membaca 3 physical blocks.
  • RAID 1
    RAID 1 adalah contoh RAID yang sebenarnya. RAID 1 memberikan contoh sederhana redundancy data melalui proses yang disebut mirroring. RAID 1 membutuhkan dua drive yang kapasitasnya sama. Satu drive sebagai drive aktif dan drive kedua berfungsi sebagai mirror. Ketika data ditulis ke drive aktif, data yang sama dikopikan ke drive mirror. Di bawah ini adalah contoh bagaimana data ditulis dengan implementasi RAID 1.
    Duplikat number menunjukkan duplikasi blok data. Dari gambar terlihat full level redundancy data pada sistem. Jika satu drive gagal, drive yang lain masih memiliki semua data yang terdapat pada sistem. Keuntungannya : RAID 1 sukses menduplikasi data dengan teknik mirror. Kelemahannya : RAID 1 tidak efektif dalam memperbesar kapasitas.
  • RAID 5
    RAID 5 merupakan the most powerful form of RAID in a desktop computer system. Biasanya, RAID 5 membutuhkan kartu hardware controller untuk me-manage array. Tapi pada beberapa OS dapat mengontrolnya menggunakan software. RAID 5 membutuhkan minimal 3 drive yang identik untuk mendapatkan best performance. RAID 5 menggunakan stripping dengan parity untuk menjaga redundancy data.

    Parity pada dasarnya adalah bentuk matematika biner yang membandingkan dua blok data. Jika jumlah dua blok data adalah genap, maka parity bit juga genap. Sebaliknya jika jumlah dua blok adalah ganjil maka bit parity juga ganjil. Jadi 0+0 dan 1+1 keduanya sama dengan 0, sedangkan 0+1 atau 1+0 sama dengan 1. Karenanya jika terjadi kegagalan pada satu drive dalam array, parity bit akan melakukan rekonstruksi data ketika drive diganti.

    Berdasarkan bentuk RAID 5 yang digambarkan pada tabel di atas, setiap angka pada cell menandakan blok data. "P" adalah parity bit untuk dua blok data.
    Kapasitas array drive mengikuti rumus berikut :
    (n-1)z = Array Capacity
    dimana n : jumlah drive sedangkan z : kapasitas harddisk.
    Misal, terdapat 3 harddisk 500 GB, maka total kapasitas array adalah :
    (3-1) x 500 GB or 1000 GB
    RAID 5 juga memiliki fungsi hot swap. Fungsi ini menjadi fitur berharga untuk sistem yang memerlukan operasi 24x7.

    Keuntungannya : Meningkatkan performa array penyimpan, Full data redundancy, Kemampuan untuk menjalankan 24x7 dengan hot swap Kelemahannya : mahal, tingkat performa menurun selama proses rebuilding
Kesimpulan :
Secara keseluruhan RAID memberikan beberapa keuntungan (tergantung dari versi RAID yang diimplementasikan). End user level akan lebih senang menggunakan RAID 0 untuk menaikkan performa tanpa mengurangi kapasitas ruang penyimpanan. Hal ini karena redundancy bukan masalah utama bagi kebanyakan user.

Sedangkan biaya untuk mengimplementasikan RAID 0+1 atau RAID 5 masih terlalu mahal dan hanya akan ditemukan pada high-end workstation atau pada level server.

Kesimpulan pada tabel :

Sumber :
  • http://compreviews.about.com/od/storage/l/aaRAIDPage1.htm
  • Stallings,W. Computer Organization and Architecture: Designing for Performance. Prentice Hall. 2010.

    arsitektur vs organisasi (komputer)

    Salah satu mata kuliah wajib bagi mahasiswa teknologi informasi adalah Arsitektur dan Organisasi Komputer, atau beberapa kampus sering menyingkatnya menjadi Arsikom. Ada kitab suci yang menjadi bahan bacaan wajib pada mata kuliah ini, yaitu bukunya William Stallings dan Andrew S. Tanenbaum. Bukunya Stalling berjudul "Computer Organization and Architecture Designing for Performance" saat ini edisi terakhirnya adalah edisi 8th, sedangkan bukunya Tanenbaum adalah "Structured Computer Organization" yang saat ini edisi terakhirnya adalah edisi 5th.

    Lantas apa sih esensi dari arsitektur komputer, dan apa pula maksudnya organisasi komputer? Apa perbedaan keduanya? Mengapa kita harus mempelajari arsitektur dan organisasi komputer? Yuk kita lanjutkan.

    Pada ruang lingkup ilmu komputer dan juga teknik komputer, arsitektur komputer adalah bagaimana seorang programmer melihat atribut-atribut hardware komputer dalam merancang logika program yang dibuatnya. Sebagai contoh, misalkan si programmer ketika akan coding, dia perlu mengetahui apakah pada komputer yang sedangkan digunakannya memiliki instruksi perkalian atau tidak? Bagaimana pengalamatan data di memori? Bagaimana data direpresentasikan? Bagaimana bilangan direpresentasikan? Pertanyaan-pertanyaan ini merupakan pertanyaan domain arsitektur komputer. Jika dipersempit, maka fokus dari pembelajaran di bidang arsitektur komputer adalah "bagaimana software bekerja pada hardware".

    Sedangkan organisasi komputer berbicara bagaimana mengimplementasikan arsitektur tersebut. Bagaimana unit-unit komputer berjalan dan bagaimana interkoneksinya sehingga komputer dapat berfungsi sesuai strukturnya.

    Mengapa kita harus mempelajari arsitektur dan organisasi komputer? Ini jawaban yang ane ringkas dari bukunya mbah Stallings :
    1. Students need to understand computer architecture in order to structure a program so that it runs more efficiently on a real machine. In selecting a system to use, they should be able to understand the tradeoff among various components, such as CPU clock speed vs. memory size
    2. Architecture extends upward into computer software because a processor’s architecture must cooperate with the operating system and system software. It is difficult to design an operating system well without knowledge of the underlying architecture
    3. Concepts used in computer architecture find application in other courses. In particular, the way in which the computer provides architectural support for programming languages and operating system facilities reinforces concepts from those areas
    Contoh yang banyak mengutak-utik arsitektur dan organisasi komputer, misalkan : Microsoft dan Apple. Kedua perusahaan tersebut, terutama Apple berusaha membuat terobosan inovatif di dunia komputer. Tablet PC dan smartphone adalah salah satu contohnya. Pada kedua teknologi baru tersebut, diterapkan arsitektur dan organisasi komputer yang berbeda basis dengan PC.

    Semua komputer dapat dipandang sebagai sebuah struktur sistem besar yang terdiri dari banyak komponen dan kompleks. Setiap komponen memiliki struktur dan fungsi sendiri. Akan tetapi setiap komponen ini saling terkait dan saling terhubung untuk sebuah tujuan kolektif yaitu unjuk performansi komputasi. Itulah arsitektur dan organisasi komputer.

    Friday, October 21, 2011

    Ini dia mobil chevrolet bumblebee transformer..

    Si Bumblebee naik daun lagi di Indonesia. Setelah dipromosikan di film Transformer, akhir-akhir ini dipromosikan juga ama infotainment gara-gara artis Raffi Ahmad memboyong ke garasi rumahnya yang katanya ditebus ama duit Rp. 2.000.000.000,-

    Dari sisi tampilan body sih, dia mirip ama Dodge Challenger SR yang jadi idola dari kecil. Tapi memang sama-sama macho dan bikin PD yang nyupirinya.. Jadi ingat ungkapan orang tua yang sering diucapkan seorang teman : "Behind Every Great Man There's a Great Engine". hehe..

    Mobil yang dijual di kaskus (http://www.kaskus.us/showthread.php?t=4034420) seharga kurang dari 1 M ini punya kapasitas mesin 6200 cc. Bah, kebayang gak tuh selang bbm kayak apa?
    Dari hasil searching di Internet, ternyata di negara asalnya sana, mobil ini harganya "cuman" sekitar 320 juta aja. Gile, knp masuk Indonesia bisa jadi bejibun gitu nol-nya ya??

    Thursday, October 20, 2011

    Jangan asal ambil uang lintas ATM!!

    Hari ini ada kejadian yang menyebabkan harus kehilangan 25rb. Mengapa? Sepele penyebabnya. Ambil uang dari rekening BNI di mesin ATM BCA..
    Saat jari menekan tombol OK, sebenarnya ada perasaan gak enak yang muncul dan kepikiran terus.. Ternyata...

    Ya, itulah..
    Ada biaya tarik tunai sebesar 25rb :(( Menyesal? Yah, sudah terjadi. Mau diapain lagi.. Yang bisa dilakukan sekarang cuma share pengalaman biar gak ada yang mengalaminya lagi..

    Kecerobohan lain adalah tidak membiasakan diri membaca ketentuan-ketentuan akan sesuatu hal. Ya, di website BNI (http://www.bni.co.id/Fitur_atm/fitur_atm.htm) sebenar sudah dicantumkan bahwa penarikan tunai di jaringan cirrus dikenakan biaya Rp. 25.000. Yang bikin tambah gelo, disebrang ATM BCA tersebut ada ATM BRI yang termasuk jaringan ATM Bersama. Biaya tarik tunai disana hanya Rp. 3000 saja!! Arrrrggrh..

    Dilihat dari sisi biaya untuk pengambilan uang di mesin ATM Bank lain, masih lebih murah Mandiri. Dari websitenya (http://www.bankmandiri.co.id/article/faq-am.aspx), hehe, saya juga baru tahu klo Bank Mandiri tidak ada kerjasama dengan jaringan ATM BCA (Cirrus).
    • ATM Link : Penarikan Rp. 3.900,-, Inquiry Rp. 2.000,-
    • ATM Bersama : Penarikan Rp. 5.000,-, Inquiry Rp. 3.000,- dan Transfer 5.000,-
    • ATM Visa : Penarikan Rp. 15.000,-, Inquiry Rp. 3.000,-
    Ya, intinya dari kesialan ini adalah kurang membaca.. Coba aja klo mau meluangkan waktu untuk baca aturan dan ketentuannya...

    Wednesday, October 19, 2011

    Netlogo, salah satu tools intelligent agent

    Masih ingat apa itu intelligent agent? Hehe.. Gak ada kaitannya sama agen-agen rahasia yang suka bawa pistol Glock dibalik jasnya ya. Klo lupa baca dulu deh : http://ar-wdh.blogspot.com/2011/10/intelligent-agent-sebuah-teori.html

    Netlogo  dibuat  oleh  Uri  Wilensky  pada  tahun 1999 dan sejak saat itu terus dikembangkan di-Center for Connected Learning and Computer-Based Modeling. Netlogo adalah tools untuk pemodelan yang dapat diprogram untuk mensimulasikan fenomena social dan natural. Netlogo dapat digunakan untuk memodelkan sistem yang komplek. User (atau istilah di netlogonya adalah Observer) dapat memberikan instruksi kepada ratusan atau ribuan agent untuk beroperasi secara independen. Ini memberikan kemungkinan untuk mengeksplorasi pola hubungan perilaku level mikro dan makro dari agent yang muncul dari interaksi banyak agent. Aplikasi terbaru (Version 4.1.3 yang dirilis pada April 2011) dan panduan user manual Netlogo dapat didownload di homepage Netlogo dengan alamat : http://ccl.northwestern.edu/netlogo/index.shtml

    Oke, sebelum menuju tulisan bagaimana memanfaatkan Netlogo untuk membuat agent, kita pahami dulu istilah / terminologi di Netlogo.
    1. World
      Istilah worlf pada netlogo untuk menjelaskan environment tempat agent berjalan atau berinteraksi, istilah environment sering digunakan bergantian dengan istilah world.world biasanya terdiri dari sekumpulan patches dan memiliki titik koordinat pada setiap patches yang membentuknya.
    2. Agent
      Agent  adalah suatu objek yang dapat melakukan sesuatu di dalam environment,setiap agent  bersifat autonomous dan dapat berjalan secara simultan. Ada  4 tipe agent pada netlogo antara lain  turtles,patches,link dan observer.
    3. Turtles
      Adalah agent yang bergerak di environment .Dengan kata lainistilah agent yang bergerak atau berada diatas patches adalah turtles.turtles tidak memiliki titik koordinat.
    4. Patches
      Patches adalah agent yang tidak dapat bergerak dan memiliki titik koordinat (x,y) pada environment.kumpulan patches membentuk environment.patches juga memiliki kemampuan untuk membentuk turtles
    5. Link
      Kita dapat menghubungkan dua turtles didalam environment ,kemanapun  turtles tersebut bergerak didalam environment mereka tetap terhubung sebagai satu link yang sama.
    6. Observer
      Observer bisa dikatakan external agent yang dapat memanipulasi semua agent yang ada pada environment,observer memiliki  perintah yang berlainan untuk memanipulasi agent yang ada.Observer tidak dapat dilihat secara visual pada environment.Ciri khas untuk mengetahui suatu prosedur didalam program dibuat dari sudut pandang observer adalah adanya perintah ASK pada awal suatu perintah.
    7. Breed
      Turtles dapat diturunkan menjadi "turtles dengan karakteristik tertentu" misalnya sekumpulan agent berwarna merah,agent dengan warna putih dan lain sebagainya.Konsep breed merupakan konsep yang penting jika ingin membuat multi agent dengan karakteristik dan tugas yang berbeda-beda.perintah ini biasanya dideklarasikan pada bagian atas program
    Satu lagi yang penting di Netlogo, istilah saat kita membuat objek :
    Ya, objek-objek pada Netlogo bisa berupa tombol (button), slider, switch, chooser, dll. Apa fungsinya? Ah untuk sementara fungsinya seperti yang ada dalam imajinasi anda. Button atau tombol berfungsi untuk menjalan suatu aksi tertentu.. Yah, seperti itulah.. Untuk lebih lengkapnya, tunggu seri berikutnya.. :)