Wednesday, March 23, 2011

Galaxy S vs Xperia Arc (Display Comparison)

Sebelum itu, mari kita kenal dahulu 3 teknologi yang sedang diatas angin pada saat tulisan ini dibuat (yang lagi Hot dibicarakan saat ini).

1. Super Amoled display dari Samsung (pada saat tulisan ini dibuat sudah ada Super Amoled Plus yang memiliki sub pixel dan pentile matrix lebih banyak dari Super Amoled (12 vs 8))
2. Bravia Display Engine (LED backlit LCD) dari Sony Ericsson atau yang lebih dikenal Reality Display
3. IPS-LCD ato lebih dikenal sebagai Retina Display dari Apple

Sebenarnya sudah ada 2 teknologi yang pada jamannya dulu adalah yang terbaik, yakni Super LCD (S-LCD) dan AMOLED. Namun hanya dibutuhkan 1-2 tahun saja perkembangan terhadap layar OLED ke AMOLED , AMOLED ke S-AMOLED dan terakhir ke S-AMOLED PLUS (menakjubkan bukan perkembangan teknologi manusia? :p )

Ok, pada artikel kali ini, saya akan mencoba membandingkan teknologi layar yang lagi di atas angin tsb, dalam hal ini layar Xperia ARC yang baru saja resmi release di Indonesia dengan BRAVIA-nya dan Super Amoled dari Samsung Galaxy S yang sudah lama ada sejak juli tahun 2010.

Sekedar info, S-AMOLED adalah nama teknologi dari Samsung, yaitu perkembangan lanjut dari layar AMOLED dan OLED.
Sedangkan Bravia Display adalah nama teknologi yang ada pada TV LCD Sony.
Dan Retina Display adalah penamaan teknologi display oleh Apple untuk Iphone 4 dan Ipod 4gen nya.
Masing-masing memiliki keunggulan dan kelemahannya, namun dari segi penilaian "layar saja", anda bisa membandingkan sendiri lewat gambar berikut:

Perbandingan singkat ini hanya saya tampilkan dalam bentuk gambar, sisanya anda bisa nilai sendiri
Nampak warna pada Super Amoled lebih berwarna walaupun tampak kebiru2an akibat dari kelemahan pada layar OLED/AMOLED



Terlihat, kalau perbandingan pada gambar ini hampir setara. Sama-sama cerah, berwarna dan jelas.



Pada gambar terlihat Xperia Arc menampilkan ketajaman detail pada gambar lebih baik



Pada layar monitor saya, hampir tidak menemukan perbedaan signifikan, kecuali jika anda jeli, maka terlihat warna pada Xperia Arc lebih pudar walaupun lebih detail.



Xperia Arc terlihat lebih cerah untuk gambar ini.



Hampir sama seperti diatas, Xperia Arc terlihat lebih cerah dan tajam dan warna Galaxy S lebih pudar.



Entah kenapa pada gambar ini, saya melihat Galaxy S lebih cerah dibandingkan dengan Xperia Arc dan Xperia Arc lebih berwarna.

Penilaian ini dibuat seobjektif mungkin, walaupun saya tidak dapat memastikan kevalid'an data/gambar diatas (dari segi brightness pada ponsel, lokasi pemotretan, cahaya ruangan, serta resolusi/warna pada kedua gambar) karena gambar tersebut diambil dari internet. Dan penilaian juga didasarkan atas mata dan monitor LCD saya.
Spek layar Arc: 4.2 inch LCD, 480 x 854 pixels, 16juta warna
Spek layar Galaxy S: 4 inch LCD, 480 x 800 pixels, 16juta warna

Menurut penilaian pribadi, saya menganggap Xperia Arc layak menyandingi layar S-AMOLED dan pada beberapa kasus (tergantung selera mata anda), Xperia Arc terlihat lebih superior dibanding Galaxy S dan bisa anda dapatkan dengan harga lebih murah dari Galaxy S S-AMOLED.



Untuk yang penasaran dengan perkembangan OLED dan S-AMOLED bisa baca artikel saya -> disini <-
Yang sudah baca dan penasaran ingin membandingkan S-AMOLED dengan Super Amoled Plus bisa baca sumber terpercaya dibawah ini:



http://www.displayblog.com/2011/02/22/samsung-super-amoled-plus-dumps-pentile-matrix-goes-real-stripe-rgb/
http://www.oled-info.com/super-amoled-plus-resolution-mystery
http://www.oled-info.com/super-amoled-plus-resolution-explained

Hope it useful for you! :)

Catatan:
Semua gambar adalah hak cipta dari alamat web yang bersangkutan (tercetak pada gambar)

Thursday, March 17, 2011

Rootkit - The most terrifying type of virus (Part 2)

Lanjutan dari artikel sebelumnya Rootkit - The most terrifying type of virus (Part 1).
Bagaimana cara mencegah dan mengatasi rootkit tersebut?
Saya sendiri belum pernah terinfeksi semua jenis rootkit diatas. (hehe). Setelah fact finding di internet, tepatnya di artikel-artikel IT Tech dan forum, saya menemukan sedikit tips yang berguna.

1. Password BIOS anda (saya belum tau apakah ini cukup efektif atau tidak, saya sendiri melakukan password pada BIOS).
2. Biasakan menggunakan Windows / Linux pada level regular user / guest. Bukan administrator / root.
Sehingga jika virus menginfeksi, ia hanya akan menginfeksi user yang bersangkutan (bukan sebagai sistem administrator).
Memang cara ini agak menyusahkan namun paling ampuh, bahkan cara seperti ini bisa cukup membantu anda tanpa harus menginstall antivirus yang mahal harganya.
3. Gunakan Antivirus yang tepercaya dan selalu up to date
4. Gunakan Anti-Rootkit scanning.
5. Biasakan tidak membuka attachment email dari orang tak dikenal. 
6. Biasakan tidak mengklik link-link tidak jelas asal usulnya (teliti dahulu) termasuk juga iklan (beberapa iklan suka mengandung malware jahat, biasanya iklan pada web-web yang "tidak jelas")

Jika sudah terinfeksi, bisa dicoba cara berikut:
1. Lakukan scanning di komputer berbeda, dan HDD dicolok pada posisi SLAVE.
2. Gunakan Live CD (OS yang dapat berjalan independent lewat CD / USB Flash Drive) untuk men-scanning HDD yang diduga terinfeksi rootkit.
Ket: Pembersihan rootkit amat sangat sulit karena pada dasarnya rootkit berjalan pada low level.

Dan cara paling ampuh sejagat raya (hopeless way mode :D ) = Format Hardisk! Hehe..
Maka semua virus dipastikan hilang dan tidak dapat berjalan.

Catatan:
Jika rootkit menyerang BIOS motherboard. Maka melakukan format HDD tidak akan mampu menghilangkan rootkit jenis ini.
Reset BIOS dengan cabut batere / cabut jumper juga tidak akan berpengaruh.
Satu-satunya jalan adalah Membawa motherboard anda ke vendor bersangkutan untuk diperbaiki (diflash ulang) jika mati total. Anda juga dapat melakukan flashing sendiri pada chip motherboard letak BIOS itu terinstall lewat PC teman/saudara.
Beberapa vendor motherboard sudah menyediakan flashing BIOS lewat OS (Windows). Kalau tidak mensupport hal tsb dan anda tetap bersikukuh ingin melakukan flash sendiri, anda dapat meng-inject BIOS (bebas dari rootkit / stock BIOS dari vendor) ke flashrom.
BIOS pada motherboard biasanya memiliki setting Read only/ Read & Write.
Untuk lebih jelasnya bisa "googling" sendiri :D

Maaf kalo ada salah, cuman mao sharing yang saya tau :p
Kalo ada salah mohon koreksinya ya :)

Rootkit - The most terrifying type of virus (Part 1)

Jika ada yang belum tau, monggo dibaca, jika sudah tau banget bisa diskip :D
Rootkit sudah lama diperbincangkan dan mulai terkenal sejak pertama kali issue nya keluar di tahun 2005 lewat skandal oleh Sony BMG terhadap CD musik jualannya yang memiliki software untuk Copy Protection dan DRM/Digital Rights Management.
Software tersebut memiliki musik player yang juga menginstall rootkit untuk membatasi pengguna dalam mengakses CD tsb. Hal ini ditemukan oleh Mark Russinovich, yang membuat rootkit detection tool bernama RootkitRevealer.
Tujuan Sony BMG memang baik, yaitu mengamankan pembajakan terhadap CD musiknya. Namun hal ini bisa disalahgunakan oleh berbagai peretas (cracker) untuk meng-exploit-nya. Akibatnya, di US, Sony BMG terkena tuntutan dari publik class-action lawsuit.

Nah sekilas sudah dapat gambaran tentang rootkit kan?
Rootkit sendiri terdiri dari berbagai macam tipe.
Nah rootkit yang pernah saya temukan dari teman saya dulu, adalah rootkit yang menyerang di level kernel (ring - 0).

Bagi pengguna Unix ataupun Linux mungkin tidak asing dengan istilah ROOT dan KERNEL. Root adalah akses tertinggi pada user di Unix dan Linux. Root memiliki akses tak terbatas pada sistem sehingga ia bisa melakukan apapun dari mengubah/memodifikasi aplikasi, sistem file, library pada Operating System. Inilah yang mendasari penamaan Rootkit itu sendiri.

Nah yang paling mengerikan adalah modifikasi pada level kernel, boot dan firmware (BIOS).
Hampir mustahil untuk mendeteksi rootkit yang sudah berada pada level kernel (ring - 0 pada windows), karena AntiVirus berjalan pada level kernel dan tidak mampu untuk mendeteksi pada level yang sama, kecuali rootkit tsb berada pada level lebih atas atau antivirus berada pada level lebih bawah sehingga mampu mendeteksi rootkit (liat gambar).
Rootkit berjalan independent, diam, dan hampir tidak terdeteksi (jika berada pada low level)
Yang paling berbahaya adalah ia bisa saja merusak bootloader pada hardisk, atau merusak BIOS motherboard anda sehingga komputer anda tidak berfungsi sebagaimana mustinya / mati total.


Bagaimana bisa dia mengakses pada level tersebut?
Jika kita pengguna Windows, kita pasti sering di level administrator (hak akses tertinggi pada Windows), dan kira-kira beginilah cara kerja Rootkit:
1. Antivirus gagal mendeteksi program jahat yang terdapat di komputer kita, virus terinstall.
Karena anda berada pada akses tertinggi di sistem, maka virus terinstall dengan aman atau anda mengijinkannya tanpa sadar.

2. Virus tersebut berjalan pada sistem, dan kemudian menginstall rootkit pada level kernel. Walaupun virus sudah terhapus, tapi rootkit tetap ada. (Program semacam DeepFreeze juga tak mampu menangkalnya)

3. Rootkit ini akan mendapatkan akses penuh terhadap sistem. Berjalan tersembunyi, mandiri, dan hampir tak terdeteksi.

4. Tergantung dari jenis rootkitnya (dibedakan berdasarkan jenis serangannya), ia dapat menyerang ke aplikasi, libary/sistem file, menginfeksi MBR (Master Boot Records) yang digunakan sebagai titik awal booting sistem operasi, dan BIOS.
Langkah pada no.4 diatas dilakukan lewat malware yang ada pada sistem operasi. Malware ini tidak akan terdeteksi karena rootkit akan menyembunyikannya.

Penyerangan rootkit pada MBR dikenal sebagai Bootkit atau “Evil Maid Attack".
Jika menyerang BIOS hal yang dia cukup lakukan adalah melakukan flashing BIOS "versinya" ke Motherboard.


Lalu bagaimana mencegah dan mengatasinya? 
Anda bisa membaca artikel lanjutannya di sini


Kalo ada salah, mohon dikoreksi ya..
Thanks :)

Sunday, March 13, 2011

List Anime Yang Uda Pernah Di Tonton (Part 2)

Lanjutan dari part sebelumnya..
Semua list di part sebelumnya yang masih on watching atau on list jika tidak ditulis disini lagi berarti sudah FINISH. hehe..

Berikut list anime yang sudah, sedang dan akan di tonton dari tahun2 kemarin (tapi tidak ada dalam part 1) - 2011 Q1-Q2 ini:
(yang diingat dalam kepala aja, soalnya terlalu banyak anime seri serta movie dan OVA-OVA yang dikoleksi)

- Bleach (On Going)
- Naruto (On Going - Dropped watch)
- Dragon Ball KAI
- Darker Than Black (Season 1)
- Darker Than Black (Season 2)
- Darker Than Black - Ryuusei No Gemini (OVA)
- Gundam Seed CE Stargazer (OVA) --> Has very wonderful ED song OST.
- Angel Beats! --> ED nya bagus
- K- ON! (On watching)
- Kaze No Stigma
- Canaan  --> Anime TOP
- Druaga No To - Aegis of Uruk
- Druaga No To - Sword of Uruk
- Shangri-La --> OP ED nya bagus.
- Gundam 00 - Awakening of the Trailblazer (OVA) --> Gundam 00 gak ada matinya..
- Birdy The Mighty Decode (season 1 & 2) --> Recommended Anime
- Seto No Hayame (Have it but not watched)
- Fate Stay Night --> OP ED dan Story paling menyentuh hati..

Hmm.. ternyata kalo dilihat-lihat banyak juga ya..
Masih ada "On Watch List" kira-kira 2-4 anime :D
- Fractale
- Gossick
- Durara
- SD Gundam

Tuesday, March 8, 2011

About Otaku - Fanatic fan's of anime n manga - Nothing wrong become an otaku

Sebagian dari kita pasti pernah mendengar kata otaku. Bagi yang belum tau ataupun belum pernah mendengar, berarti anda wajib membaca sedikit kilasan tentang otaku.

Otaku adalah kata yang berasal dari bahasa Jepang. Pada awalnya otaku tidak identik dengan anime ataupun manga.
Otaku (おたく) adalah istilah dalam bahasa Jepang yang digunakan untuk menyebut orang yang betul-betul menekuni hobi (cinta akan hobinya) atau kata ganti orang kedua yang paling sopan dalam bahasa Jepang yang baku (sama seperti kata "Anda" dalam bahasa Indonesia)

Istilah otaku kemungkinan besar berasal dari percakapan antar penggemar anime yang selalu menyapa lawan bicara dengan sebutan Otaku (お宅, Anda?) yang merupakan bentuk paling sopan untuk kata ganti orang kedua dalam bahasa Jepang. Pada perkembangan selanjutnya, istilah otaku ditulis dengan aksara katakana otaku (オタク?) atau wotaku (ヲタク?) untuk membedakan istilah slang dengan kata ganti orang kedua dalam bahasa Jepang baku.
(Sumber: Wikipedia)
Namun jika dilihat dari unsur katanya, taku (たく) berarti rumah secara harafiah. Jadi seorang otaku adalah orang yang selalu menetap di rumah dan jarang bersosialisasi dengan orang sekitar tetapi lebih akrab kepada orang-orang di dunia anime/manga, video games, dan dunia maya (internet).

Nah, karena istilah Otaku sudah ter-asimilasi dengan dunia Anime dan Manga, maka sekarang sebutan Otaku identik dengan penggiat fanatik/maniak (menurut saya) terhadap Anime dan Manga.
Salahkah menjadi seorang Otaku? 
Tergantung dari bagaimana seorang otaku bersikap/bertingkah laku dan bagaimana anda memandang mereka. Otaku juga sering kali identik dengan penggiat video games.


Jika di Indonesia, jenis Otaku yang sering kita lihat adalah orang-orang yang MENGERTI SELALU / UP TO DATE akan perkembangan manga ataupun anime yang ada di Jepang sana. Level - level otaku di Indonesia biasanya hanya sebatas mengoleksi OST - OST Anime, film-film anime, sejumlah manga, action figure, poster, dan majalah anime. Belakangan ini otaku Indonesia juga diramaikan oleh sejumlah cosplay di kota-kota besar seperti Jakarta, Bandung, Surabaya (yang saya pernah tau)
Otaku di Indonesia juga sangat lekat dengan orang IT (menurut survei personal :D ) karena hampir sebagian besar sumber anime / manga diperoleh dari internet dan komunikasi mereka lewat forum-forum atau chatting client yang notabene hanya orang "melek teknologi" yang umumnya terbiasa dengan hal tsb.


Dibalik semua itu, ternyata di Jepang sendiri Otaku dibagi menjadi 3 kategori

  1. HIKKIKOMORI
  2. NIJIKON
  3. OTAKU itu sendiri
Untuk seseorang yang  bisa disebut suka mengisolasikan diri dari kehidupan sosial, akan jauh lebih  tepat disebut sebagai Hikkikomori. Hikkikomori lebih mengarah ke sifat umum. Jadi sebenarnya, Hikkikomori tidak hanya terobsesi dengan anime/manga. Hikkikomori memilih untuk menghabiskan waktunya di dalam rumah.

Sedang Nijikon, pada dasarnya lebih cenderung kearah kaum pria. Mengingat nafsu seorang pria jauh lebih besar dibanding wanita. Pria nijikon akan jauh lebih menyukai anime/manga yang ‘moe’ macam K-On, After Clanned Story, Love Hina, dll. dibanding anime/manga mainstream macam Naruto, Bleach, dan OnePiece.
Untuk kaum pria Nijikon memiliki ciri kurang lebih seperti ini, (diambil dari persepsi blog: amyragreat.wordpress.com)
  • Seorang Nijikon akan menghabiskan waktunya dengan membaca anime/manga, berkumpul dengan orang-orang sehobi, dan memainkan game bergenre bishojo/dating-sim/hentai.
  • Mau menghabiskan uangnya untuk merchandise tokoh favorit seperti action figure, poster, artbook dengan jumlah berlebih.
  • Mengaku waifu (istri-red) dari salah satu tokoh anime.
  • Lebih menggemari tokoh anime wanita 2D (wanita anime/manga) dari pada yang 3D (real)
Untuk kaum wanita Nijikon,
Menghubungkan nama real dengan nama tokoh anime pria favorit. Seperti contoh di facebook, seorang wanita nijikon bernama asli Karina mengaku suka dengan tokoh Kurosaki Ichigo dan mengubah namanya menjadi Kurosaki Karen (mengubah nama Karina menjadi berbau jepang) dan lain sebagainya.

Agak freak mungkin? Tergantung bagaimana anda memandang. Tapi menurut pengamatan si empunya blog dan juga saya sendiri, belum menemukan orang-orang macam ini di Indonesia. Semoga belum :p

Seorang Otaku yang menurut saya di dalam batas wajar, adalah sah - sah saja dan tidak aneh ataupun salah. Namun, jika anda menjadi otaku seperti yang pernah saya liat dan baca-baca di Jepang sana, seperti contoh sebagai berikut (dengan gambar):

Nah itu sudah tidak wajar.. hehe
Jika hanya sekedar cosplay, suka membicarakan anime dan manga, suka menonton, membaca, mendengarkan OST - OST anime (serta mengoleksinya) dan mengoleksi action figure itu bukanlah hal yang buruk dan masih wajar-wajar saja. 
Yang tidak wajar adalah jika ia menjadi seorang yang tertutup terhadap lingkungan dan hanya berkomunikasi dengan sesama otaku ataupun hanya berkomunikasi lewat dunia maya, itulah hal yang salah dan tidak boleh terjadi dalam diri kita. Hehehe..

Saya sendiri mengakui, kalau saya begitu cinta dengan anime dan manga (namun belum dalam kategori otaku.) Bahkan kesukaan saya dengan anime dan manga membuat saya belajar banyak hal tentang budaya Jepang, bahasanya dan pesan-pesan moral yang terkandung dalam anime dan manga.

Jika saya disuruh pilih menonton anime atau sinetron atau serial barat sekalipun (dengan proporsi cerita yang selevel dan sejenis), saya akan lebih memilih anime. Atau membaca buku apapun, saya akan lebih memilih manga daripada yang lain.
Tapi untuk drama mungkin saya lebih prefer drama taiwan/korea/jepang dibanding drama dalam anime/manga (mungkin karena saya cowok kali ya :D )

Maaf kalo ada salah, cuman mao sharing yang saya tau :p

Wednesday, March 2, 2011

Beda Interface dan Abstract Class

Pertanyaan paling klasik dan sering dijadikan bahan pertanyaan tertulis di sekolah/kuliah/bahkan tempat kerja. Diharapkan sebelum membaca ini sudah punya knowledge tentang OOP (Object Oriented Programming) dan salah satu bahasa pemograman OOP.

It is just a theory. Practical is more important in programming.
Yap, sekedar membahas konsep dan teorinya, karena menurut saya ini penting. Tanpa teori tidak ada percobaan/praktek, begitu juga sebaliknya, tanpa praktek/percobaan nyata maka teori sama sekali tidak berguna!

Mungkin beberapa tau tentang perbedaan ini, yang jadi pertanyaan, kapan kita harus menggunakan interface?dan kapan kita harus menggunakan abstract class? Semoga pertanyaan ini telah terjawab ketika anda membaca artikel dibawah ini. Jika sudah tau, ya tidak perlu dibaca ^_^


Yang perlu diingat "Interface is not a class or an abstract class." It's totally different!"

Abstract class adalah sebuah class setengah jadi (abstrak) yang memuat/memiliki method dan atrribut.
Abstract class sebenarnya adalah sebuah class, sehingga memiliki semua sifat dari class biasa (punya konstruktor). Hanya saja sifatnya masih abstrak, karena itu biasanya method kosong/belum di implementasikan.
Namun Abstract class dapat mengimplementasikan method tersebut.
Abstract class akan selalu menjadi superclass / hirarki tertinggi dari subclass-subclass-nya.

Sedangkan interface:
- Adalah sebuah blok signature kumpulan method tanpa tubuh (konstan).
- Sebuah definisi method yang umum/general yang dapat menghubungkan class-class yang berbeda.
Dengan kata lain, interface memungkinkan kita mengimplementasikan method yang sama terhadap class yang tidak ada hubungan sama sekali (tidak dalam satu hirarki)
- Oleh karena itu interface bukanlah sebuah class, walaupun memiliki ciri yang serupa dengan abstract class.

Sebuah analogi yang bagus menurut saya adalah seperti ini:
- Abstract class adalah mobil, kapal, pesawat
class nya adalah Sedan, SUV, MPV, Sports, dll (untuk mobil)
- Interface adalah Kendaraan darat, kendaraan laut, kendaraan udara.
interface ini memiliki method-method/fungsi-fungsi umum ketiga jenis kendaraan tersebut, yang masing-masing fungsinya harus didefinisikan di class-class yang spesifik.

Kayanya kurang afdol kalo tanpa disertai contoh code nya, berikut saya ambil contoh dalam bahasa JAVA.
Contoh Interface:

public interface Relation
{
  public boolean isGreater( Object a, Object b);
  public boolean isLess( Object a, Object b);
  public boolean isEqual( Object a, Object b);
}
Contoh Interface yang di implements oleh class:

public class Line implements Relation
{
     public Line() {
     // constructor
     }
     public boolean isGreater( Object a, Object b){ // method di override dari interface
         double aLen = ((Line)a).getLength();
         double bLen = ((Line)b).getLength();
         return (aLen > bLen);
     }
     public boolean isLess( Object a, Object b){ // method di override dari interface
         double aLen = ((Line)a).getLength();
         double bLen = ((Line)b).getLength();
         return (aLen < bLen);
     }
     public boolean isEqual( Object a, Object b){ // method di override dari interface
         double aLen = ((Line)a).getLength();
         double bLen = ((Line)b).getLength();
         return (aLen == bLen);
     }
}
Contoh abstract class:
public abstract class LivingThing
{
   public void breath(){
   System.out.println("Living Thing breathing...");
}
public void eat(){
   System.out.println("Living Thing eating...");
}
/**
* abstract method walk
* Kita ingin method ini di-overridden oleh subclasses
*/
public abstract void walk();
}

Contoh abstract class yang di inherit:
public class Human extends LivingThing
{
         public void walk() {
         System.out.println("Human walks...");
        }
}
Didalam Java, C#, Object Pascal / Delphi, Smalltalk, dan PHP tidak memperbolehkan multiple inheritance (penurunan class dari superclass yang jumlahnya lebih dari 1). Semata-mata dihilangkan featurenya untuk menghindari ambigu. (Pada C++, Perl, Python, Lisp mensupport multiple inheritance). Walaupun begitu, semuanya kecuali Smalltalk memperbolehkan class untuk mengimplemen banyak interfaces (multiple interfaces).

Pesan singkat:
Gunakan interface untuk mendefinisikan method standar yang sama dalam class-class yang berbeda. Sekali kita telah membuat kumpulan definisi method standar(abstrak), kita dapat menulis method tunggal(spesifik) untuk memanipulasi semua class-class yang mengimplementasikan interface tsb.
Gunakan class abstract untuk mendefinisikan secara luas sifat-sifat dari class tertinggi pada hirarki OOP, dan gunakan subclassnya (turunannya/child class) untuk melengkapi deskripsi method dari class abstract.


Maaf kalo ada salah, hanya mau sharing aja, kalo salah dikoreksi ya ^^