Thursday, April 12, 2012

Program Enkapsulasi pada Java

Pada kali ini saya membahas tentang enkapsulasi pada pemrograman Java yang merupakan tugas kuliah saya bersama rekan kerja saya Rizqi Bunga Yuliandini. Enkapsulasi sendiri merupakan salah satu bagian dari konsep dasar pemrograman berbasis objek. Dilihat dari bahasanya, enkapsulasi berarti pembungkusan. Bila konsep ini diterapkan dalam sebuah program berbasis objek, maka pembungkusan yang dimaksud ialah membungkus setiap detail dari program (mau itu fungsi, dan detail lain yang masih berada di dalam suatu class) menjadi sebuah subprogram yang independent (berdiri sendiri). Contoh programnya dapat dilihat di bawah ini.

Listing

import javax.swing.*;
public class enkapsulasi
{
     public static void main (String[]args)
     {
           int pil=Integer.parseInt(JOptionPane.showInputDialog("Menu Pilihan\n============\n1. Hitung Data\n2. Biodata\n\nMasukkan Pilihan :"));
           if (pil==1)
            {
                   hitung panggil = new hitung();
                   JOptionPane.showMessageDialog(null, "Hasil Penjumlahannya : "+panggil.c+"\n"+"Hasil Kurangnya : "+panggil.d, "Hasil Operasi", JOptionPane.INFORMATION_MESSAGE);
            }
           else if (pil==2)
           {
                  biodata panggil = new biodata();
                  JOptionPane.showMessageDialog(null, "Nama Anda adalah "+panggil.nama+"\n"+"NPM Anda adalah "+panggil.npm, "Hasil Operasi", JOptionPane.INFORMATION_MESSAGE);
            }
      }
}
class hitung
{
        double a=Double.parseDouble(JOptionPane.showInputDialog("Masukkan Nilai a : "));
        double b=Double.parseDouble(JOptionPane.showInputDialog("Masukkan Nilai b : "));
        double c=a+b;
        double d=a-b;
}
class biodata
{
       String nama=JOptionPane.showInputDialog("Masukkan Nama :");
       String npm=JOptionPane.showInputDialog("Masukkan NPM :");
}


Pada program di atas dapat dilihat bahwa pada program tersebut menggunakan dua buah sub program yang dibungkus menjadi satu program ini. Kedua subprogram tersebut dinamakan sebagai class yang nantinya akan dipanggil pada program utama yang dinyatakan dengan public static void main (String[]args). Program utama ini diberikan dengan nama enkapsulasi dengan perintah public class enkapsulasi. Jadi dapat dilihat pada output di bawah ini, program cukup sekali dijalankan kemudian saya membuatkan sebuah menu awal yang kemudian jika dipilih sesuai dengan pilihan yang benar kemudian subprogram yang dipilih pada menu awal tadi akan dijalankan.

Output 















Tuesday, April 3, 2012

Perbedaan OOP dengan Pemrograman Terstruktur

Kali ini saya akan membahas perbedaan mengenai bahasa pemrograman berbasis objek atau yg biasa disebut dengan OOP dengan bahasa pemrograman terstruktur. Pada pembahasan ini saya akan menerangkan mulai dari pengertian OOP dan pemrograman terstruktur itu sendiri, konsep yang digunakan oleh kedua program tersebut, kemudian ada contoh bahasa program apa yang menerapkan konsep OOP dan terstruktur, serta sifat-sifatnya, dan saya juga mengulas kelebihan serta kekurangan dari masing-masing pemrograman. Pembahasan ini juga saya kerjakan bersama Rizqi Bunga Yuliandini yang merupakan satu kelompok dalam tugas ini.

1.        OOP (Object Oriented Programming)
a.      Pengertian OOP
OOP (Object Oriented Programming) adalah suatu program yang mengarah pada suatu objek yang bisa disebut juga Paradigma Pemrograman. Semua data dan fungsi di dalam paradigma ini dibungkus dalam kelas – kelas atau objek – objek. Model data berorientasi objek dikatakan dapat memberi fleksibilitas yang lebih, kemudahan mengubah program, dan digunakan luas dalam teknik piranti lunak skala besar. Lebih jauh lagi, pendukung OOP mengklaim bahwa OOP lebih mudah dipelajari bagi pemula dibanding dengan pendekatan sebelumnya, dan pendekatan OOP lebih mudah dikembangkan dan dirawat.

b.      Konsep Dasar OOP
Konsep dasar dari OOP menekankan pada beberapa hal adalah sebagai berikut ini :
·      Kelas
Kumpulan atas definisi data dan fungsi-fungsi dalam suatu unit untuk suatu tujuan tertentu. Sebagai contoh 'class of dog' adalah suatu unit yang terdiri atas definisi-definisi data dan fungsi-fungsi yang menunjuk pada berbagai macam perilaku/turunan dari anjing. Sebuah class adalah dasar dari modularitas dan struktur dalam pemrograman berorientasi object. Sebuah class secara tipikal sebaiknya dapat dikenali oleh seorang non-programmer sekalipun terkait dengan domain permasalahan yang ada, dan kode yang terdapat dalam sebuah class sebaiknya (relatif) bersifat mandiri dan independen (sebagaimana kode tersebut digunakan jika tidak menggunakan OOP). Dengan modularitas, struktur dari sebuah program akan terkait dengan aspek-aspek dalam masalah yang akan diselesaikan melalui program tersebut. Cara seperti ini akan menyederhanakan pemetaan dari masalah ke sebuah program ataupun sebaliknya.

·      Objek
Membungkus data dan fungsi bersama menjadi suatu unit dalam sebuah program komputer; objek merupakan dasar dari modularitas dan struktur dalam sebuah program komputer berorientasi objek.

·      Abstraksi
Kemampuan sebuah program untuk melewati aspek informasi yang diproses olehnya, yaitu kemampuan untuk memfokus pada inti. Setiap objek dalam sistem melayani sebagai model dari "pelaku" abstrak yang dapat melakukan kerja, laporan dan perubahan keadaannya, dan berkomunikasi dengan objek lainnya dalam sistem, tanpa mengungkapkan bagaimana kelebihan ini diterapkan. Proses, fungsi atau metode dapat juga dibuat abstrak, dan beberapa teknik digunakan untuk mengembangkan sebuah pengabstrakan.

·      Enkapsulasi
Memastikan pengguna sebuah objek tidak dapat mengganti keadaan dalam dari sebuah objek dengan cara yang tidak layak; hanya metode dalam objek tersebut yang diberi izin untuk mengakses keadaannya. Setiap objek mengakses interface yang menyebutkan bagaimana objek lainnya dapat berinteraksi dengannya. Objek lainnya tidak akan mengetahui dan tergantung kepada representasi dalam objek tersebut.

·      Polimorfisme
Melalui pengiriman pesan. Tidak bergantung kepada pemanggilan subrutin, bahasa orientasi objek dapat mengirim pesan; metode tertentu yang berhubungan dengan sebuah pengiriman pesan tergantung kepada objek tertentu di mana pesa tersebut dikirim. Contohnya, bila sebuah burung menerima pesan "gerak cepat", dia akan menggerakan sayapnya dan terbang. Bila seekor singa menerima pesan yang sama, dia akan menggerakkan kakinya dan berlari. Keduanya menjawab sebuah pesan yang sama, namun yang sesuai dengan kemampuan hewan tersebut. Ini disebut polimorfisme karena sebuah variabel tungal dalam program dapat memegang berbagai jenis objek yang berbeda selagi program berjalan, dan teks program yang sama dapat memanggil beberapa metode yang berbeda di saat yang berbeda dalam pemanggilan yang sama. Hal ini berlawanan dengan bahasa fungsional yang mencapai polimorfisme melalui penggunaan fungsi kelas-pertama.

c.       Bahasa Pemrograman
Bahasa Pemrograman yang mendukung OOP adalah sebagai berikut :
·         Visual Foxpro
·         Java
·         C++
·         Pascal
·         VB.Net
·         SIMULA
·         Smalltalk
·         Ruby
·         Python
·         PHP
·         C#
·         Delphi
·         Eiffel
·         Perl
·         Adobe Flash AS 0.3

2.    Pemrograman Terstruktur
a.      Pengertian Pemrograman Terstruktur
Pemrograman Terstruktur adalah suatu proses untuk mengimplementasikan urutan langkah untuk menyelesaikan suatu masalah dalam bentuk program.
Selain pengertian diatas Pemrograman Terstruktur adalah suatu aktifitas pemrograman      dengan memperhatikan urutan langkah-langkah perintah secara sistematis, logis , dan tersusun berdasarkan algoritma yang sederhana dan mudah dipahami. Prinsip dari pemrograman terstruktur adalah Jika suatu proses telah sampai pada suatu titik / langkah tertentu , maka proses selanjutnya tidak boleh mengeksekusi langkah sebelumnya / kembali lagi ke baris sebelumnya, kecuali pada langkah – langkah untuk proses berulang (Loop).

b.      Sifat – Sifat Pemrograman Terstruktur
Pemrograman terstruktur mempunyai sifat – sifat sebagai berikut ini :
·           Memuat teknik pemecahan masalah yang logis dan sistematis
·      Memuat algoritma yang efisien, efektif dan sederhana
·      Program disusun dengan logika yang mudah dipahami
·      Tidak menggunakan perintah GOTO
·      Biaya pengujian program relatif rendah
·      Memiliki dokumentasi yang baik
·      Biaya perawatan dan dokumentasi yang dibutuhkan relatif rendah

c.       Bahasa Pemrograman
Bahasa Pemrograman yang mendukung pemrograman terstruktur adalah sebagai berikut :
·         COBOL
·         TURBO PROLOG

3.        Perbedaan dan Persamaan Antara OOP dan Pemrograman Terstruktur
Perbedaan mendasar antara OOP dan pemrograman terstruktur adalah dengan menggunakan OOP maka dalam melakukan pemecahan suatu masalah kita tidak melihat bagaimana cara menyelesaikan suatu masalah tersebut (terstruktur) tetapi objek-objek apa yang dapat melakukan pemecahan masalah tersebut. Sedangkan untuk pemrograman terstruktur,  menggunakan prosedur/tata cara yang teratur untuk mengoperasikan data struktur.
Untuk tata nama, keduanya pun memiliki tatanan yang sama walaupun memiliki pengertian tersendiri:
OOP menggunakan “method” sedangkan pemrograman terstruktur menggunakan “function”. Bila di OOP sering didengar mengenai “objects” maka di pemrograman terstruktur kita mengenalnya dengan ” modules”. Begitu pula  halnya dengan “message” pada OOP dan “argument” pada pemrograman terstruktur. “attribute” pada OOP juga memiliki tatanan nama yang sepadan dengan “variabel” pada pemrograman terstruktur.
Persamaan kedua pemrograman ini adalah adalah keduanya termasuk ke dalam pemodelan pemrograman yang digunakan dewasa ini.

4.        Perbedaan software OOP dangan software terstruktur
Perbedaan software OOP dangan software terstruktur adalah Software yang dibuat secara OOP besifat Reusable. Prinsip Reusable pemrograman OOP adalah membuat kode yang ditulis sebisa mungkin dapat dipergunakan lagi (reusable) supaya dapat dipakai dalam banyak aplikasi dan situasi supaya tidak perlu lagi mengimplementasi ulang, walaupun hanya ada perbedaan sedikit saja dari yang sudah dikerjakan sebelumnya.

Reusability
·         Kunci reusability adalah mendaftar (dalam library atau database) obyek di mana di antaranya mungkin ada yang sesuai dengan user requirements
·         Proses pencarian semacam ini membutuhkan cara yang kuat dan efisien

5.        Beberapa Keuntungan Pemrograman Berorientasi Objek
a.       Maintenance; program lebih mudah dibaca dan dipahami, dan pemrograman berorientasi obyek mengontrol kerumitan program hanya dengan mengijinkan rincian yang dibutuhkan untuk programmer.
b.      Pengubahan program (berupa penambahan atau penghapusan fitur tertentu); perubahan yang dilakukan antara lain menyangkut penambahan dan penghapusan dalam suatu database program misalnya.
c.       Dapat digunakannya obyek-obyek sesering yang diinginkan, kita dapat menyimpan obyek-obyek yang yang dirancang dengan baik ke dalam sebuah tolkit rutin yang bermanfaat yang dapat disisipkan kedalam kode yang baru dengan sedikit perubahan atau tanpa perubahan pada kode tersebut.

Jadi, sangat jelas sekal bahwa pemrograman berorientasi objek sangat cocok sekali digunakan dalam kasus pembuatan software yang rumit dan kompleks karena memberikan berbagai kemudahan kepada pemrogram seperti yang telah disebutkan diatas.

Baik OOP maupun pemrograman terstruktur tidak ada yang dapat dikatakan lebih baik karena keduanya memiliki spesifikasi tersendiri dalam pemrogramannya. Hal ini juga tergantung pada bagaimana pribadi si pemrogram ingin menyusun program yang akan dibuatnya. Apakah lebih suka menggunakan yang berorientasikan pada objek maupun pemrograman yang terstruktur. Karena Pemrograman prosedural akan dikatakan lebih baik apabila dalam segala situasi melibatkan kompleksitas moderat atau yang memerlukan signifikan kemudahan maintainability. Manfaat yang dirasakan dalam penggunaan pemrograman prosedural adalah kemampuan kembali menggunakan kode yang sama tanpa menggunakan kode yang berbeda ataupun mengkopinya kembali. Dengan menggunakan “goto”, memudahkan programmer melacak kumpulan data sehingga menghindarkan pemrograman terstruktur menjadi seperti spagethii code.

Pemrograman berorientasikan objek dikatakan lebih baik apabila Model data berorientasi objek dikatakan dapat memberi fleksibilitas yang lebih, kemudahan mengubah program, dan digunakan luas dalam teknik piranti lunak skala besar. Lebih jauh lagi, pendukung OOP mengklaim bahwa OOP lebih mudah dipelajari bagi pemula dibanding dengan pendekatan sebelumnya, dan pendekatan OOP lebih mudah dikembangkan dan dirawat.

REFENSI

Kelebihan dan Kekurangan Facebook

Beberapa waktu yang lalu saya membahas tentang Facebook dari sisi sejarah, teknologi yang dgunakan dan konsepnya, kali ini saya akan memposting tentang Facebook dari sisi tingkat keamanan, kekurangan dan kelebihannya dan menfaat jangka panjang dari Facebook.

Kelebihan Facebook

1. Tanpa iklan maupun banner yang mengganggu pemandangan ketika melihat profile seseorang . ini memang di design khusus untuk mengiklankan sesuatu tetapi user tidak mengira bahwa itu adalah sebuah iklan.


2. Layanan Jaringan / Network yang bisa di sorting sesuai dengan posisi kita. Dari start awal pembuatan account disesuaikan berdasarkan negara. Sehingga lebih mempermudah menemukan teman.


3. Layanan Group di Facebook lebih fokus di mana membentuk suatu komunitas online seperti testimonial wall to wall, foto, forum diskusi dan lain – lain.

4. Photo Album berdasarkan kategori dan sungguh diluar dugaan jumlah quota kapasitas unlimited alias tidak dibatasi.

5. Layanan Selling, layaknya kita sebagai penjual menawarkan barang ataupun jasa ke user lainnya.
6. Layanan Event, yummy … di sini kita bisa mengisi kegiatan sehingga user yang lain jadi tahu. Contohnya ada reuni, party atau launching suatu produk.

7. Layanan Status Update .. bisa di isi kapan saja dan posisi menu nya lebih gampang.


8. Layanan Mobile Access adalah layanan untuk mobile dengan feature mengirim SMS.


9. Layanan Mobile Browsing dapat diakses melalui handphone dan disesuaikan dengan kondisi hanpdhone sehingga lebih cepat diakses.


10. Anti Fake Account and Spam, ini adalah layanan security yang sangat vital. Karena dengan ini account kita aman dari serangan hacker yang hendak mencuri account.


11. Layanan Develop your Facebook widget, layanan yang istimewa. Seabrek aplikasi yang bisa kita bangun dan dapat kita pasang menggunakan API dari Facebook Platform. Semacam Game, Feed Reader dan aplikasi lainnya.


12. Dapat chat dengan teman yang sedang online.


13. Dapat mengirimkan Gift ke teman dengan berbagai macam jenis.

14. yang paling penting,
IP Address facebook bersifat dinamis dan berlapis - lapis, jadi hampir mustahil untuk diseorang oleh seorang Hacker tingkat dewa sekalipun.

15. Dll



Kekurangan Facebook

1. Facebook memiliki Batasan Permintaan Pertemanan jika Berlebihan.

2. Facebook sangat terkenal sehingga banyak orang yang melakukan plagiat (nama samaran) biasanya mirip selebritis, jadi tidak tahu mana yang asli mana yang palsu.


3. Facebook menjadi ajang penjualan diri. Maksudnya banyak pekerja seks komersial yang menawarkan dirinya melalui facebook.


4. Lebih dari 60% pelajar di Indonesia adalah pengguna facebook dan 75% per harinya mereka akan membuka situs ini, sehingga mengganggu kegiatan belajar mereka.


5. Facebook acap kali menjadi tempat kasus, diantaranya melakukan pelecehan melaui status, menghina lewat comment, dll.


6. akhir akhir ini telah ada gosip, kabarnya pembuat situs jejaring sosial ini akan membuat facebook menjadi berbayar, dengan bayaran 10$ per bulan.

Ini adalah kebijakan pembuat facebook :

1. Foto yang diupload jangan yang berbau porno, menghina, atau merugikan orang lain, dan maksimal 4mb.


2. Orang yang terbukti melakukan plagiat nama kepada orang tertentu, buak tidak mungkin pihak facebook akan membanned (menonaktifkan) akun mereka.


3. pihak facebook kabarnya akan membagi facebook menjadi 2, yaitu facebook free dan facebook pro. Untuk yang free akan ada pembatasan status, comment dan upload foto. Sedangkan untuk yang pro tidak ada batasan sama sekali, namun kita diharuskan membayar 10$ per bulannya. (masih rencana, dan baru akan dilakukan tes di US).



Sistem Keamanan Facebook

1. Trusted Friends

membantu pengguna Facebook jika suatu saat ada masalah akun terkunci atau tidak bisa diakses. Dengan trusted friends, maka pengguna bisa memilih 3 sampai 5 orang teman yang dipercaya untuk membantunya mengakses kembali akun Facebook yang terkunci. Facebook akan mengirimkan kode ke para teman dipercaya yang dipilih pemilik akun untuk membuka kunci akun pemilik. Fitur ini secara teoritis akan meningkatkan keamanan akun Facebook pengguna namun harus digunakan secara hati-hati agar para teman yang dipercaya tersebut tidak menyalahgunakan kepercayaan ini untuk mengutak-atik akun pemilik sebenarnya, baik untuk tujuan jahil ataupun tujuan lain.

2. App password

Fitur ini dimaksudkan untuk meningkatkan keamanan akun Facebook dengan menyediakan pemilik akun sebuah password unik yang digunakan dalam sebuah aplikasi. Pengguna akan membuat password khusus untuk aplikasi dan mengganti password biasa yang digunakan aplikasi pihak ketiga seperti Spotufy atau Skype. Pengguna juga bisa menolak sebuah aplikasi tertentu untuk mengakses akun Facebook dengan cukup menghapus password yang sudah dibuat sebelumnya.
3. IP Address
Facebook menggunakan IP Address yang Dinamis dan Berlapis, sehingga hampir mustahil Facebook dibajak oleh Cracker.

Manfaat Facebook
bebrapa fitur-fitur baru telah ditambahkan kedalam Facebook sejak pertama kali diluncurkan. beberapa diantaranya adalah
1. Facebook share yang berguna untuk saling berbagi tulisan dan Link informasi.
2. Facebook note yang berguna untuk menuliskan catatan maupun tulisan-tulisan apapun.
3. Facebook quiz yang merupakan sebuah mini game yang berisi tentang pertanyaan-pertanyaan yang sifatnya menghibur.
4. Facebook branding yang memungkinkan bagi para Blogger maupun online seller untuk menjual barang dagangannya melalui media Facebook.
5. Facebook apps yang berisi banyak mini game dari berbagai Vendor.


Perkembangan dan Prospek Facebook dimasa depan.
mengingat Facebook adalah salah satu situs jejaring sosial tersebar didunia maka, sudah pasti pemilik sekaligus pembuatnya Mark Zuckerberg tidak akan membiarkan Facebook turun pamor dengan banyaknya berbagai situs jejaring sosial yang baru, oleh karena itu bebrapa waktu yang lalu Facebook menjual beberapa persen sahamnya.
selain itu, agar Facebook bisa diakses oleh siapapun, kapanpun dan dimanapun. Facebook telah meluncurkan website www.0.facebook.com dan www.m.facebook.com.
Facebook juga memberikan ruang yang sangat lebar dalam kolom pencarian. Kini kolom pencarian menjadi 2 kali jauh lebih besar dari kolom pencarian di desain Facebook yang terdahulu. Dan salah satu indikasi perkembangan tentang bagaimana fungsi search ini, kemungkinan besar Facebook bekerjasama dengan Bing untuk menghasilkan pencarian yang lebih baik. Termasuk memberikan hasil pencarian yang lebih lengkap dan lebih membantu dengan memberikan informasi yang lebih baik.

Jika anda mencoba fasilitas search yang ada di situs Facebook sekarang, maka Facebook tidak hanya menampilkan hasil pencarian yang berhubungan dengan konten di Facebook saja tetapi juga menyertakan hasil pencarian dari web. Nah, dengan kerjasasama ini mungkin saja Facebook akan membawa mesin social networking-nya ini ke tahap yang lebih luas, dengan kata lain menjadi sebuah ‘real social search engine’.
menelisik fakta bahwa Facebook merupakan situs jejaring sosial terbesar didunia, maka sudah pasti akan ada perubahan - perubahan baru ke arah yang lebih baik lagi, seperti fitur2 baru yang masih dalam tahap proses pembuatan. kita tunggu saja, gebrakan apa lagi yang akan dibuat oleh Facebook.


Monday, March 19, 2012

Operasi Matematika dalam Java

Sehubungan dengan tugas mata kuliah Pemrograman Berbasis Objek, kali ini saya ditugaskan untuk berbagi program dengan kalian semua. Program yang saya gunakan bahasa pemrograman Java, dan program yang diminta ialah bagaimana cara menggunakan inputan numerik dalam Java. Program ini saya buat berdua dengan teman saya yang bernama Rizqi Bunga Yuliandini. Tanpa basa basi lagi, di bawah ini merupakan listing programnya...
 
Listing

import javax.swing.*;
/**Karya = Rizqi Bunga Yuliandini & Adjie Putra Nugraha
*Kelas = 2.IA.07
*/
public class iseng /*bagian ini digunakan untuk membuat nama judul program*/
{
        public static void main (String[]iseng)
        {
                double a = Double.parseDouble(JOptionPane.showInputDialog("Masukkan Angka Pertama : "));
                //*Dibagian ini digunakan untuk menginput data pertama, digunakan perintah JOption untuk menginput data
                double b = Double.parseDouble(JOptionPane.showInputDialog("Masukkan Angka Kedua : "));
                //*Dibagian ini digunakan untuk menginput data kedua, digunakan perintah JOption untuk menginput data
                JOptionPane.showMessageDialog(null,"Hasil Penjumlahan "+(a+b)+"\n"+"Hasil Pengurangan "+(a-b)+"\n"+"Hasil Perkalian "+(a*b)+"\n"+"Hasil Pembagian "+(a/b)+"\n"+"Hasil Modulus "+(a%b)+"\n","Hasil Operasi Matematika",JOptionPane.INFORMATION_MESSAGE);
                //*Dibagian ini digunakan untuk mencetak hasil sekaligus melakukan perhitungan operasi matematika sederhana
        }
}

Output




Link blog teman saya Rizqi Bunga Yuliandini

Sunday, March 11, 2012

Sejarah Facebook

Facebook didirikan oleh Mark Zuckerberg bersama teman sekamarnya dan sesama mahasiswa ilmu komputer Eduardo Saverin, Dustin Moskovitz dan Chris Hughes. Keanggotaan situs web ini awalnya terbatas untuk mahasiswa Harvard saja, kemudian diperluas ke perguruan lain di Boston, Ivy League, dan Universitas Stanford. Situs ini secara perlahan membuka diri kepada mahasiswa di universitas lain sebelum dibuka untuk siswa sekolah menengah atas, dan akhirnya untuk setiap orang yang berusia minimal 13 tahun.

Mark Zuckerberg menciptakan Facemash, pendahulu Facebook, tanggal 28 Oktober 2003 ketika berada di Harvard sebagai mahasiswa tahun kedua. Menurut The Harvard Crimson, situs ini mirip dengan Hot or Not, dan menggunakan "foto yang diperoleh dari Facebook (buku wajah) di sembilan asrama, menempatkan dua foto berdampingan pada satu waktu dan meminta pengguna memilih yang mana yang paling seksi".
Untuk menyelesaikannya, Zuckerberg meretas ke bagian jaringan komputer Harvard yang dilindungi dan menyalin gambar-gambar ID pribadi asrama. Harvard pada waktu itu tidak memiliki "buku wajah" (direktori berisi foto dan informasi dasar) mahasiswa. Facemash menarik 450 pengunjung dan 22.000 tampilan foto pada empat jam pertama mengudara.

Situs ini langsung diteruskan ke beberapa server grup kampus, namun dimatikan beberapa hari kemudian oleh administrasi Harvard. Zuckerberg dihukum karena menembus keamanan kampus, melanggar hak cipta, dan melanggar privasi individu, dan terancam dikeluarkan. Namun, hukuman tersebut dibatalkan. Zuckerberg memperluas proyek awalnya ini pada semester tersebut dengan membuat peralatan studi sosial untuk menghadapi ujian final sejarah seni, dengan mengunggah 500 lukisan Augusta ke situs webnya, dengan satu gambar per halaman disertai kotak komentar. Ia membuka situs tersebut kepada teman sekelasnya, dan mereka mulai saling berbagi catatan.

Pada semester berikutnya, Zuckerberg mulai menulis kode untuk situs web baru pada Januari 2004. Ia terinspirasi, katanya, oleh editorial The Harvard Crimson tentang insiden Facemash. Pada 4 Februari 2004, Zuckerberg meluncurkan "The Facebook" yang awalnya berada di situs web TheFacebook.com.

Keanggotaan awalnya dibatasi kepada mahasiswa Harvard College saja, dan pada bulan pertama, lebih dari setengah mahasiswa sarjana di Harvard terdaftar di situs ini. Eduardo Saverin (pebisnis), Dustin Moskovitz (programer), Andrew McCollum (seniman grafis), dan Chris Hughes segera bergabung dengan Zuckerberg untuk membantu mempromosikan situs web ini. Bulan Maret 2004, Facebook memperluas diri ke Stanford, Columbia, dan Yale. Situs ini kemudian dibuka ke sekolah Ivy League lain, Universitas Boston, Universitas New York, MIT, dan secara perlahan beberapa universitas di Kanada dan Amerika Serikat.

Facebook meluncurkan versi sekolah menengah atas pada September 2005 yang dianggap Zuckerberg sebagai tahap logis selanjutnya. Pada waktu itu, jaringan sekolah menengah membutuhkan undangan untuk bergabung. Facebook kemudian memperluas persyaratan keanggotaannya kepada karyawan dari sejumlah perusahaan, termasuk Apple Inc. dan Microsoft. Facebook kemudian dibuka tanggal 26 September 2006 kepada setiap orang yang berusia 13 tahun dan ke atas dengan alamat surel yang sah.

Lalu lintas ke Facebook meningkat stabil setelah 2009. Jumlah pengunjung Facebook mengalahkan Google pada 13 Maret 2010. Facebook juga menjadi jejaring sosial teratas dari delapan pasar perorangan di Asia, yaitu Filipina, Australia, Indonesia, Malaysia, Singapura, Selandia Baru, Hong Kong dan Vietnam, sementara merek lain masih mempertahankan posisi teratas mereka di beberapa pasar, termasuk Orkut milik Google di India, Mixi.jp di Jepang, CyWorld di Korea Selatan, dan Wretch.cc milik Yahoo! di Taiwan.


Konsep yang digunakan pada Facebook

Media sering memperbandingkan Facebook dengan MySpace, namun satu perbedaan utama di antara kedua situs tersebut adalah tingkat kustomisasinya. Perbedaan lainnya adalah persyaratan Facebook agar pengguna dapat mengatur identitas asli mereka, dan langkah tersebut tidak diterapkan di MySpace. MySpace mengizinkan pengguna mendekorasi profil mereka menggunakan HTML dan Cascading Style Sheets (CSS), sementara Facebook hanya mengizinkan teks mentah. Facebook memiliki sejumlah fitur yang dapat berinteraksi dengan pengguna. Salah satunya adalah Dinding, kotak di setiap halaman profil pengguna yang mengizinkan teman mereka mengirimkan pesan kepada pengguna tersebut; Colek, yang memungkinkan pengguna mengirimkan "colekan" virtual satu sama lain (pemberitahuan memberitahu pengguna bahwa mereka telah dicolek); Foto, tempat pengguna dapat mengunggah album dan foto; dan Status, yang memungkinkan pengguna untuk memberitahukan teman mereka mengenai keberadaan dan tindakan mereka saat itu. Tergantung pengaturan privasinya, setiap orang yang dapat melihat sebuah profil pengguna dapat juga melihat Dinding pengguna. Bulan Juli 2007, Facebook mulai mengizinkan pengguna mengirimkan lampiran di Dinding, berbeda dari Dinding sebelumnya yang terbatas pada konten teks saja.

Sepanjang waktu, Facebook menambahkan fitur ke situsnya. Pada 6 September 2006, News Feed diluncurkan yang ditempatkan di setiap halaman utama pengguna dan memberitahukan informasi seperti perubahan profil, acara berikutnya, dan ulang tahun teman pengguna. Hal ini memungkinkan pengirim spam dan pengguna lain memainipulasi fitur-fitur tersebut dengan membuat acara bohong atau ulang tahun bohong demi menarik perhatian ke profil atau kampanye tersebut. Awalnya, News Feed memunculkan ketidakpuasan di antara pengguna Facebook; sejumlah di antaranya mengeluh karena terlalu berantakan dan penuh dengan informasi yang tidak perlu, sementara pengguna lain menganggapnya mudah bagi pengguna untuk melacak aktivitas seseorang (seperti perubahan status hubungan, acara, dan percakapan dengan pengguna lain).

Facebook Notes diperkenalkan pada 22 Agustus 2006, sebuah fitur blog yang mengizinkan tag dan penanaman gambar. Pengguna dapat mengimpor blog dari Xanga, LiveJournal, Blogger, dan layanan blog lain. Sepanjang minggu 7 April 2008, Facebook merilis aplikasi pesan instan berbasis Comet bernama "Chat" ke sejumlah profil, yang mengizinkan pengguna berkomunikasi dengan teman dan fungsinya sama seperti pengantar pesan instan berbasis desktop.

Facebook meluncurkan Gifts pada 8 Februari 2007 yang memungkinkan pengguna mengirimkan hadiah virtual kepada temannya yang muncul di profil penerima. Masing-masing hadiah berharga $1,00 dan pesan pribadi dapat disertakan pada setiap hadiah. Tanggal 14 Mei 2007, Facebook meluncurkan Marketplace, yang memungkinkan pengguna mengirimkan iklan pendek gratis. Marketplace telah dibanding-bandingkan dengan Craigslist oleh CNET, yang menunjukkan bahwa perbedaan utama antara keduanya adalah daftar yang dikirimkan pengguna di Marketplace hanya bisa dilihat oleh pengguna yang berada di jaringan yang sama seperti pengguna tersebut, sementara daftar yang dikirimkan di Craigslist dapat dilihat oleh semua orang.

Tanggal 13 Juni 2009, Facebook memperkenalkan fitur "Usernames", yaitu halaman-halaman dapat ditautkan menggunakan URL yang lebih simpel seperti http://www.facebook.com/facebook dibandingkan dengan http://www.facebook.com/profile.php?id=20531316728. Banyak telepon pintar baru menawarkan akses ke Facebook melalui peramban web atau aplikasi mereka. Aplikasi Facebook yang resmi diluncurkan untuk iPhone OS, Android OS, dan WebOS. Nokia dan Research In Motion menyediakan aplikasi Facebook pada telepon genggam mereka. Lebih dari 150 juta pengguna aktif mengakses Facebook melalui telepon genggam yang terdaftar pada 200 operator di 60 negara.

Tanggal 15 November 2010, Facebook mengumumkan layanan "Facebook Messages" baru. Pada media hari itu, CEO Mark Zuckeberg mengatakan, "memang benar bahwa seseorang dapat memperoleh alamat surel @facebook.com, namun itu bukan surel." Peluncuran fitur tersebut telah diantisipasi sementara waktu sebelum pengumuman ini, dengan sejumlah pengamat menyebutnya sebagai "pembunuh Gmail". Sistem ini, yang akan diluncurkan kepada semua pengguna situs tersebut, menggabungkan pesan teks, pesan instan, surel, dan pesan reguler, dan akan meliputi pengaturan privasi sama seperti layanan Facebook. Dijuluki "Project Titan", Facebook Messages memakan 15 bulan dalam pengembangannya.


Teknologi Yang Digunakan pada Facebook

Facebook melayani 570 miliar tampilan halaman per bulan (menurut Google Ad Planner). Foto di Facebook lebih banyak daripada gabungan semua situs foto lainnya. Lebih dari 3 milyar foto di-upload setiap bulannya. Facebook melayani 1,2 juta foto per detik. Ini tidak termasuk gambar dilayani oleh CDN Facebook. Lebih dari 25 miliar konten (status update, komentar, dll) yang di-share setiap bulan. Facebook memiliki lebih dari 30.000 server (jumlah ini adalah data tahun lalu!).
Dalam beberapa hal Facebook masih merupakan situs yang berbasis LAMP (sejenisnya), namun diubah dan diperluas operasinya dengan memasukkan banyak elemen dan layanan lain, dan dimodifikasi pendekatannya menjadi seperti yang ada saat ini.
Sebagai contoh:
* Facebook masih menggunakan PHP, tetapi telah dibuat compilernya sehingga dapat diubah menjadi kode asli pada server webnya, sehingga meningkatkan kinerja.
* Facebook menggunakan Linux, tetapi telah dioptimalkan untuk keperluan sendiri (terutama dalam hal jaringan).
* Facebook menggunakan MySQL, tetapi terutama sebagai key-value persistent storage, moving joins and logic ke server web karena optimasinya lebih mudah dilakukan di sana (di “sisi lain” dari memcached).

Lalu ada custom-written systems, seperti Haystack, sebuah object store yang sangat scalable digunakan untuk melayani foto-foto di Facebook yang banyak sekali, atau Scribe, sistem logging yang dapat beroperasi pada skala Facebook.

Software yang digunakan dalam Facebook
·         Memcached
Memcached saat ini menjadi salah satu perangkat lunak paling terkenal di internet. Ia merupakan sistem caching memori terdistribusi yang digunakan Facebook (dan banyak situs lainnya) sebagai lapisan caching antara server web dan server MySQL (karena akses database relatif lambat).
Selama bertahun-tahun, Facebook telah berkali-kali melakukan optimasi pada memcached dan perangkat lunak sekitarnya (seperti mengoptimalkan penumpukan jaringan).
Facebook menjalankan ribuan server memcached dengan puluhan terabyte data cache pada satu titik waktu. Kemungkinan ini merupakan instalasi memcached terbesar di dunia.

·         HipHop for PHP
PHP, sebagai scripting language, relatif lambat bila dibandingkan dengan kode yang berjalan secara native di server. HipHop mengubah PHP menjadi kode C++ yang kemudian dapat dikompilasi untuk menghasilkan performa yang lebih baik.
Hal ini telah memungkinkan Facebook untuk mengoptimalkan server webnya karena ia sangat bergantung pada PHP untuk melayani konten.
Sebuah tim kecil engineer (awalnya hanya tiga orang) di Facebook menghabiskan 18 bulan mengembangkan HipHop, dan sekarang telah di produksi.

·         Haystack
Haystack adalah sistem penyimpanan/pencarian foto berkinerja tinggi pada Facebook (Sesungguhnya Haystack adalah sebuah penyimpanan object, sehingga tidak menyimpan foto). Ia mengerjakan kerja berat, ada lebih dari 20 miliar foto yang diunggah di Facebook, dan masing-masing disimpan dalam empat resolusi yang berbeda, menghasilkan lebih dari 80 miliar foto.
Dan hal tersebut bukan hanya tentang kemampuan menangani miliaran foto, kinerja juga sangatlah penting. Seperti yang telah disebutkan sebelumnya, Facebook melayani sekitar 1,2 juta foto per detik, angka yang tidak termasuk gambar/foto dilayani oleh CDN Facebook.

·         BigPipe
BigPipe adalah sistem layanan halaman web dinamis yang dikembangkan oleh Facebook. Facebook menggunakannya untuk melayani setiap halaman web dalam beberapa bagian (disebut “pagelets” untuk menghasilkan kinerja yang optimal.
Misalnya, jendela chat diambil secara terpisah, feed berita diambil secara terpisah, dan seterusnya. Pagelets ini dapat diambil secara paralel, sehingga kenerja tetap terjaga, dan juga memungkinkan user mengakses situs dengan baik meskipun beberapa bagian dinonaktifkan atau rusak.

·         Cassandra
Cassandra adalah sistem open source yang berfungsi sebagai menejemen database terdistribusi. Facebook kemudian mengembangkannya dengan NoSQL dan menggunakannya untuk fitur Inbox Search. Selain facebook, sejumlah layanan lain juga menggunakannya, misalnya Digg.

·         Scribe
Scribe adalah sistem logging fleksibel yang digunakan secara internal oleh Facebook untuk banyak tujuan. Ia dikembangkan untuk menangani logging pada Facebook, dan secara otomatis menangani kategori logging baru yang muncul.

·         Hadoop dan Hive
Hadoop adalah implementasi map-reduce open source yang memungkinkan untuk melakukan perhitungan data dalam jumlah besar. Facebook menggunakannya untuk analisis data (dan seperti yang kita ketahui, Facebook memiliki data dalam jumlah yang besar).
Hive dikembangkan oleh Facebook, dan dengannya dimungkinkan untuk menggunakan query SQL terhadap Hadoop, sehingga lebih mudah bagi non-programmer untuk menggunakannya.
Baik Hadoop dan Hive adalah open source dan digunakan oleh sejumlah layanan besar, misalnya Yahoo dan Twitter.

·         Thrift
Facebook menggunakan beberapa bahasa yang berbeda untuk beberapa layanannya. PHP digunakan untuk front-end, Erlang digunakan untuk Chat, Java dan C + + juga digunakan di beberapa tempat (dan mungkin bahasa lainnya juga).
Thrift adalah cross-language framework yang dikembangkan secara internal untuk mengikat semua bahasa yang berbeda tersebut, sehingga memungkinkan komunikasi antar bahasa tersebut. Hal ini memudahkan Facebook untuk pengembangan lintas-bahasanya.

·         Varnish
Varnish adalah akselerator HTTP yang bertindak sebagai penyeimbang beban dan juga konten cache yang kemudian dapat dilayani secepat kilat. Facebook menggunakan Varnish untuk melayani foto dan gambar profil, penanganan miliaran permintaan setiap hari. Seperti hampir semua yang digunakan Facebook, Varnish adalah open source.

·         Gradual releases and dark launches
Facebook memiliki sistem yang mereka sebut Gatekeeper yang memungkinkan mereka menjalankan kode yang berbeda untuk sekumpulan pengguna yang berbeda. Ini memungkinkan Facebook untuk melakukan rilis bertahap fitur-fitus baru, pengujian A/B, mengaktifkan fitur tertentu hanya untuk karyawan Facebook, dll.
Gatekeeper juga memungkinkan Facebook untuk melakukan sesuatu yang disebut “dark launches”, yaitu untuk mengaktifkan unsur-unsur dari fitur tertentu di balik layar sebelum ditayangkan (tanpa sepengetahuan pengguna).
Hal ini berfungsi sebagai tes nyata dan membantu mengekspos kemacetan dan masalah-masalah lain sebelum fitur tersebut secara resmi diluncurkan. Dark launches biasanya dilakukan dua minggu sebelum peluncuran resmi.

·         Profiling of the live system
Facebook memonitor sistemnya secara cermat dan juga memantau kinerja setiap fungsi PHP dalam live production environment. Profiling PHP ini dilakukan dengan menggunakan sebuah tool open source yang bernama XHProf.

·         Gradual feature disabling for added performance
Jika Facebook mengalami masalah kinerja, ada sejumlah tuas yang secara bertahap menonaktifkan fitur kurang penting untuk meningkatkan kinerja fitur utama Facebook.
Kalau kita perhatikan, ternyata Facebook banyak menggunaka open source untuk membangun sistemnya. Tidak hanya menggunakan, Facebook juga memberikan kontribusi untuk perangkat lunak open source seperti Linux, memcached, MySQL, Hadoop, dan lainnya.

Tuesday, November 15, 2011

Mengenal Augmented Reality (AR) dan Virtual Reality (VR)

Augmented Reality

Realitas tertambah, atau kadang dikenal dengan singkatan bahasa Inggrisnya AR (augmented reality), adalah teknologi yang menggabungkan benda maya dua dimensi dan ataupun tiga dimensi ke dalam sebuah lingkungan nyata tiga dimensi lalu memproyeksikan benda-benda maya tersebut dalam waktu nyata. Tidak seperti realitas maya yang sepenuhnya menggantikan kenyataan, realitas tertambah sekedar menambahkan atau melengkapi kenyataan.

Benda-benda maya menampilkan informasi yang tidak dapat diterima oleh pengguna dengan inderanya sendiri. Hal ini membuat realitas tertambah sesuai sebagai alat untuk membantu persepsi dan interaksi penggunanya dengan dunia nyata. Informasi yang ditampilkan oleh benda maya membantu pengguna melaksanakan kegiatan-kegiatan dalam dunia nyata.
Realitas tertambah dapat diaplikasikan untuk semua indera, termasuk pendengaran, sentuhan, dan penciuman. Selain digunakan dalam bidang-bidang seperti kesehatan, militer, industri manufaktur, realitas tertambah juga telah diaplikasikan dalam perangkat-perangkat yang digunakan orang banyak, seperti pada telepon genggam.

Pengertian
Ronald T. Azuma (1997) mendefinisikan augmented reality sebagai penggabungan benda-benda nyata dan maya di lingkungan nyata, berjalan secara interaktif dalam waktu nyata, dan terdapat integrasi antarbenda dalam tiga dimensi, yaitu benda maya terintegrasi dalam dunia nyata. Penggabungan benda nyata dan maya dimungkinkan dengan teknologi tampilan yang sesuai, interaktivitas dimungkinkan melalui perangkat-perangkat input tertentu, dan integrasi yang baik memerlukan penjejakan yang efektif.

Selain menambahkan benda maya dalam lingkungan nyata, realitas tertambah juga berpotensi menghilangkan benda-benda yang sudah ada. Menambah sebuah lapisan gambar maya dimungkinkan untuk menghilangkan atau menyembunyikan lingkungan nyata dari pandangan pengguna. Misalnya, untuk menyembunyikan sebuah meja dalam lingkungan nyata, perlu digambarkan lapisan representasi tembok dan lantai kosong yang diletakkan di atas gambar meja nyata, sehingga menutupi meja nyata dari pandangan pengguna.
Penggunaan

a.       Kesehatan
Bidang ini merupakan salah satu bidang yang paling penting bagi sistem realitas tertambah. Contoh penggunaannya adalah pada pemeriksaan sebelum operasi, seperti CT Scan atau MRI, yang memberikan gambaran kepada ahli bedah mengenai anatomi internal pasien. Dari gambar-gambar ini kemudian pembedahan direncanakan. Realitas tertambah dapat diaplikasikan sehingga tim bedah dapat melihat data CT Scan atau MRI pada pasien saat pembedahan berlangsung. Penggunaan lain adalah untuk pencitraan ultrasonik, di mana teknisi ultrasonik dapat mengamati pencitraan fetus yang terletak di abdomen wanita yang hamil.

b.      Manufaktur dan reparasi
Bidang lain di mana realitas tertambah dapat diaplikasikan adalah pemasangan, pemeliharaan, dan reparasi mesin-mesin berstruktur kompleks, seperti mesin mobil. Instruksi-instruksi yang dibutuhkan dapat dimengerti dengan lebih mudah dengan realitas tertambah, yaitu dengan menampilkan gambar-gambar tiga dimensi di atas peralatan yang nyata. Gambar-gambar ini menampilkan langkah-langkah yang harus dilakukan untuk menyelesaikannya dan cara melakukannya. Selain itu, gambar-gambar tiga dimensi ini juga dapat dianimasikan sehingga instruksi yang diberikan menjadi semakin jelas.

Beberapa peneliti dan perusahaan telah membuat beberapa prototipe di bidang ini. Perusahaan pesawat terbang Boeing tengah mengembangkan teknologi realitas tertambah untuk membantu teknisi dalam membuat kerangka kawat yang membentuk sebagian dari sistem elektronik pesawat terbang. Kini, untuk membantu pembuatannya teknisi masih menggunakan papan-papan besar yang perlu disimpan di beberapa gudang penyimpanan yang terpisah. Menyimpan instruksi-instruksi pembuatan kerangka kawat ini dalam bentuk elektronik dapat menghemat tempat dan biaya secara signifikan.

c.       Hiburan
Bentuk sederhana dari realitas tertambah telah dipergunakan dalam bidang hiburan dan berita untuk waktu yang cukup lama. Contohnya adalah pada acara laporan cuaca dalam siaran televisi di mana wartawan ditampilkan berdiri di depan peta cuaca yang berubah. Dalam studio, wartawan tersebut sebenarnya berdiri di depan layar biru atau hijau. Pencitraan yang asli digabungkan dengan peta buatan komputer menggunakan teknik yang bernama chroma-keying.

Princeton Electronic Billboard telah mengembangkan sistem realitas tertambah yang memungkinkan lembaga penyiaran untuk memasukkan iklan ke dalam area tertentu gambar siaran. Contohnya, ketika menyiarkan sebuah pertandingan sepak bola, sistem ini dapat menempatkan sebuah iklan sehingga terlihat pada tembok luar stadium.

d.      Pelatihan Militer
Kalangan militer telah bertahun-tahun menggunakan tampilan dalam kokpit yang menampilkan informasi kepada pilot pada kaca pelindung kokpit atau kaca depan helm penerbangan mereka. Ini merupakan sebuah bentuk tampilan realitas tertambah. SIMNET, sebuah sistem permainan simulasi perang, juga menggunakan teknologi realitas tertambah. Dengan melengkapi anggota militer dengan tampilan kaca depan helm, aktivitas unit lain yang berpartisipasi dapat ditampilkan.

Contohnya, seorang tentara yang menggunakan perlengkapan tersebut dapat melihat helikopter yang datang. Dalam peperangan, tampilan medan perang yang nyata dapat digabungkan dengan informasi catatan dan sorotan untuk memperlihatkan unit musuh yang tidak terlihat tanpa perlengkapan ini.

Virtual Reality
Virtual reality (VR) atau realitas maya adalah teknologi yang membuat pengguna dapat berinteraksi dengan suatu lingkungan yang disimulasikan oleh komputer (computer-simulated environment), suatu lingkungan sebenarnya yang ditiru atau benar-benar suatu lingkungan yang hanya ada dalam imaginasi. Lingkungan realitas maya terkini umumnya menyajikan pengalaman visual, yang ditampilkan pada sebuah layar komputer atau melalui sebuah penampil stereokopik, tapi beberapa simulasi mengikutsertakan tambahan informasi hasil pengindraan, seperti suara melalui speaker atau headphone.

Beberapa sistem haptic xanggih sekarang meliputi informasi sentuh, biasanya dikenal sebagai umpan balik kekuatan pada aplikasi berjudi dan medis. Para pemakai dapat saling berhubungan dengan suatu lingkungan sebetulnya atau sebuah artifak maya baik melalui penggunaan alat masukan baku seperti a papan ketik dan tetikus, atau melalui alat multimodal seperti a sarung tangan terkabel, Polhemus boom arm, dan ban jalan segala arah. Lingkungan yang ditirukan dapat menjadi mirip dengan dunia nyata, sebagai contoh, simulasi untuk pilot atau pelatihan pertempuran, atau dapat sangat berbeda dengan kenyataan, seperti di VR game. Dalam praktik, sekarang ini sangat sukar untuk menciptakan pengalaman Realitas maya dengan kejernihan tinggi, karena keterbatasan teknis atas daya proses, resolusi citra dan lebar pita komunikasi. Bagaimanapun, pembatasan itu diharapkan untuk secepatnya diatasai dengan berkembangnya pengolah, pencitraan dan teknologi komunikasi data yang menjadi lebih hemat biaya dan lebih kuat dari waktu ke waktu.

Sumber :