Thursday, August 27, 2015

ArrayList dan HashMap pada JAVA

Java 
Setiap kali saya membuat aplikasi pada bahasa pemrograman JAVA pasti tidak terlepas dengan class Collection terutama ArrayList dan HashMap, karena ArrayList dan Hashmap adalah class Collection yang paling umum dipakai pada bahasa pemrograman JAVA. Untuk itu mari kita pahami dan belajar  tentang penggunaan ke-dua class Collection tersebut disini. Di sini kita akan belajar bagaimana menggunakan ArrayList dan HashMap serta memahami perbedaan antara ArrayList dan HashMap.


Apa itu ArrayList ?

ArrayList adalah sebuah class pada java yang digunakan untuk menyimpan koleksi data (objek) dengan tipe index Integer / angka. Atau dengan identitas suatu data / objek yang disimpan dalam class tersebut adalah urutan angka dengan tipe data Integer (positif).

Apa itu HashMap ?

Pada dasarnya HashMap hampir sama dengan ArrayList, yaitu suatu class untuk menyimpan data (objek) namun index atau ordinat (biasanya disebut key) nya bertipe objek juga (string, class, numeric, dsb) yang di hash. Sehingga secara fungsi dan penggunaan HashMap lebih komplek dari pada ArrayList yang notabene lebih mirip dengan data tipe Array biasa.

Kapan ArrayList digunakan ?

Biasanya ArrayList digunakan untuk menyimpan list atau daftar objek yang tidak mempunyai index atau kata kunci yang sepesifik. ArrayList sering kali digunakan untuk menyimpan objek yang lebih bersifat antrian dengan pengambilan secara urut bukan acak. Sehingga pengambilan data pada list tidak berdasarkan suatu kata kunci (key) tertentu melainkan nomor antrian di list. Misalnya anda memiliki suatu class untuk menyimpan daftar pesan, dimana pesan yang masuk akan diproses berdasarkan urutanya sehingga untuk menampung data pesan yang masuk dari jalur input anda bisa menggunakan class ArrayList lalu mengeluarkan dari ArrayList secara berurutan untuk memproses output (pengiriman pesan) nya.

Kapan HashMap digunakan ?

Biasanya HashMap digunakan untuk koleksi data yang lebih kompleks dengan key berupa objek (biasanya string) misalnya anda ingin menampung daftar nomor telephon, dimana nomor telepon tersebut mempunya nama pemilik terlepon yang tentu saja adalah suatu data dengan tipe String. Untuk kasus koleksi data ini anda bisa menggunakan class HashMap untuk penyimpanan data tersebut dengan key “Nama Pemilik” dari nomor telepon tersebut, sehingga untuk mencari atau melakukan pengecekan nomor telepon bisa dilakukan berdasarkan index/ordinat/key dari “Nama Pemilik” nomor telepon tersebut.

Contoh Penggunaan ArrayList pada kode:

   private static ArrayList<String> lstPesan = new ArrayList<>();

    public static void main(String[] args) {


        lstPesan.add("Bang transfer uang donk ke rek eneng");

        lstPesan.add("Bang bikinin neng skripsi donk, bonus nikah ama eneng");

        lstPesan.add("Neng nonton kebakaran yu di kampung sebelah");

       

        String pesan1 = lstPesan.get(0);

        String pesan2 = lstPesan.get(1);

        String pesan3 = lstPesan.get(2);



        System.out.println(pesan1);

        System.out.println(pesan2);

        System.out.println(pesan3);


     }

Output:
Bang transfer uang donk ke rek eneng
Bang bikinin neng skripsi donk, bonus nikah ama eneng
Neng nonton kebakaran yu di kampung sebelah 

Contoh Penggunaan HashMap pada kode:



    private static HashMap<String, String> mapKontak = new HashMap<>();

    public static void main(String[] args) {

      

        mapKontak.put("Ikhsan", "+62123123456");

        mapKontak.put("Ikhson", "+62123123444");

        mapKontak.put("Ikhsun", "+62123123455");

       

        String no1 = mapKontak.get("Ikhsan");

        String no2 = mapKontak.get("Ikhson");
        String no3 = mapKontak.get("Ikhsun");
       
        System.out.println(no1);
        System.out.println(no2);
        System.out.println(no3);
       
    }



Output:
+62123123456
+62123123444
+62123123455

Fungsi-fungsi penting lain pada ArrayList dan HashMap

1. Membuang Data 

    --- ArrayList
    lstPesan.remove(0);  //. membuang index pertama pada lstPesan
    lstPesan.remove("Bang transfer uang donk ke rek eneng");  //. membuang data tsb pada lstPesan
    --- HashMap
    mapKontak.remove("Ikhsan"); //. membuang data dengan key Ikhsan pada mapKontak

2.  Mendapatkan Jumlah Data / Element

    --- ArrayList
    lstPesan.size();  //. banyaknya element pada lstPesan
    --- HashMap
    mapKontak.size(); //. banyaknya element pada mapKontak


3.  Membersihkan Data

    --- ArrayList
    lstPesan.clear();  //. membuang semua element pada lstPesan
    --- HashMap
    mapKontak.clear(); //. membuang semua element pada mapKontak


4.  Mengecek Keberadaan Data

    --- ArrayList
     //. mengecek apakah element lstPesan terdapat data "Bang transfer uang donk ke rek eneng"
    bool b = lstPesan.contain("Bang transfer uang donk ke rek eneng");
    --- HashMap
    //. mengecek apakah element mapKontak terdapat data "+62123123455"
    bool b = mapKontak.containValue("+62123123455"); 


Nah, untuk sementara sampai di sini dulu pelajaran singkat JAVA tentang penggunaan ArrayList dan HashMap, untuk fungsi-fungsi lain yang dimiliki kedua class tersebut bisa anda eksplorasi sendiri, misalnya fungsi iterasi dan lain sebagainya. Semoga bermanfaat..

Enkripsi Data dengan metode XOR pada PHP

XOR

Pada kesempatan kali ini kita akan membahas bagaimana melakukan enkripsi data dan dekripsi data pada PHP dengan membuat fungsi untuk enkripsi dan dekripsi data pada  pemrograman PHP.

Enkripsi adalah salah satu bagian terpenting terkait proses keamanan dalam pemrograman, terutama pemrograman website dengan PHP. Karena dengan enkripsi data yang diproses oleh aplikasi web yang kita buat tidak bisa dibaca dengan mata telanjang sebelum melalui proses deskripsi. Sehingga mau tidak mau sebagai programmer wajib mengerti dan mampu mengaplikasikan teknik enkripsi, walaupun hanya enkripsi sederhana.

Pengertian Enkripsi

Sebelum kita praktikan pembuatan kode untuk enkripsi data pada PHP, ada baiknya kita pahami terlebih dahulu tentang pengertian Enkripsi.

Enkripsi adalah proses transformasi suatu pesan atau informasi untuk menyembunyikan data asli dari pesan atau informasi tersebut kedalam bentuk data yang lebih susah terbaca secara tekstual. Dengan demikian enkripsi erat dengan kaitan suatu sandi atau pengkodean kusus, dimana hanya orang-orang tertentu saja yang bisa membacanya.

Misal nya sandi morse, sandi rumput, dan sandi-sandi lainya adalah salah satu contoh analogi Enkripsi data dalam kehidupan sehari-hari. Tujuan dari penggunaan sandi-sandi tersebut hanyalah satu, yaitu menyembunyikan pesan-pesan kusus dari pengirim sandi ke penerima sandi yang telah mengetahui proses pembacaan sandi ke dalam abjad dan bahasa manusia.


Enkripsi Sederhana

Salah satu contoh enkripsi paling sederhana yang dikenal dalam dunia komputasi adalah enkripsi dengan caesar chiper, yaitu dengan teknik penggeseran nilai byte secara teratur. Misalnya dengan menggeser (menambahkan) nilai 1 pada setiap karakter berikut :

N-A-B-I-L-A menjadi O-B-C-J-K-M-B

Sehingga setelah melalui proses enkripsi manual string N-A-B-I-L-A menjadi O-B-C-J-K-M-B dan proses kebalikanya yang disebut dekripsi akan menggeser (mengurangi) nilai 1 pada setiap karakter yang dienkrip. 

O-B-C-J-K-M-B kembali menjadi N-A-B-I-L-A


Dasar Enkripsi

Pada dunia komputasi dasar enkripsi data adalah sebagai berikut :

Byte : byte merupakan satuan terkecil data dengan rentang nilai 0-255, dimana masing-masing nilai mempunyai representasi (karakter) setelah melalui proses enkoding. 
Misalnya suatu karakter "A" sebenarnya adalah satu satuan byte dengan nilai 65 (ASCII). Namun secara tekstual kita akan melihatnya dalam bentuk karakter/huruf "A" setelah melalui proses enkoding. Nah, dengan dasar nilay byte sutau karakter inilah kita bisa melakukan teknik-teknik enkripsi dengan menggeser, menambah, mengurasi, atau mengalikan nilainya secara beraturan.

Operator Bit : Dengan menggunakan operator bit, kita dapat merubah nilai byte setiap karakter lalu mengembalikan nya seperti semula dengan logika kebalikanya. Beberapa operasi bit yang bisa digunakan untuk enkripsi dua arah (enkrip/dekrip) adalah XOR, ROL, dan ROR. Disini kita hanya akan menggunakan teknik XOR pada praktik pembuatan kode enkripsi dan dekripsi nya.

Berikut adalah implementasi kode enkripsi dan dekripsi dengan teknik XoR pada pemrograman PHP.

Kode Enkripsi PHP

        function encrypt_string($str_data)
        {
            $
encKey = 'keyenkripsi'; //. ganti sesuka anda
                       outText= '';
            for($i=0;$i<strlen($str_data);)
            {
                for($j=0;($j<strlen($encKey) && $i<strlen($str_data));$j++,$i++)
                {
                    $outText .= $str_data{$i} ^ $encKey{$j};
                }
            }
            $outText = base64_encode($outText);
            return $outText;
        }
Penjelasan :

Pada  kode enkripsi di atas, kita menentukan kunci enkripsi terlebih dahulu untuk kita gunakan sebagai operand XoR dengan karakter-karakter atau data yang akan kita enkripsi. Tekniknya adalah dengan melakukan iterasi pada data yang akan dienkripsi yang dipasangkan key enkripsi nya secara berputar. Dengan demikian setiap posisi karakter dari data yang akan dienkripsi akan di-operasikan dengan nilai byte yang berbeda-beda sesuai kata kunci yang kita pakai.

Setelah proses transformasi data (nilai byte) semua karakter selesai, proses akhirnya adalah dengan melakukan decode ke bas64 karena hasil dari enkripsi XoR adalah bukan plain teks sehingga kita perlu merubah-nya kedalam bentuk base64 untuk menjaga keutuhan data dalam berbagai macam enkoding/protokol nantinya.


 
Kode Dekripsi PHP (Kebalikan dari Enkripsi nya)
        function decrypt_string($str_data)
        {
            $str_data = base64_decode($str_data); 
            $encKey = 'keyenkripsi'; //. ganti sesuka anda 
            $outText = '';

            for($i=0;$i<strlen($str_data);)
            {
                for($j=0;($j<strlen($encKey) && $i<strlen($str_data));$j++,$i++)
                {
                    $outText .= $str_data{$i} ^ $encKey{$j};
                }
            }
            
            return $outText;
        }

Penjelasan :
 
Kode di atas adalah kebalikan proses dari kode enkripsi yang kita tulis sebelumnya, namun perlu kita ingat bahwa kita melakukan decode base64 terlebih dahulu sebelum melakukan proses dekripsi dengan metode XoR.


Pengujian Kode


Untuk melakukan pengujian kode enkripsi dan dekripsi di atas, berikut adalah kode nya:

$data = 'nabilamaryam';
$str_enc =  encrypt_string($data);
$str_dec = decrypt_string($str_enc);

echo $data;
echo $str_enc;
echo $str_dec;  



Implementasi Enkripsi Pada Website

Banyak hal yang bisa kita implementasikan pada suatu website dengan teknik enrkripsi dan dekripsi, karena proses tersebut erat kaitanya dengan keamanan pada suatu website. Enkripsi bisa diimplementasikan baik pada proses backend dan frontend aplikasi website, terutama terkait dengan informasi-informasi yang bersifat sensitif seperti password dan url.
Semoga Bermanfaat...

Tuesday, August 25, 2015

Rumor Harga Dan Spesifikasi Sony Playstation 5

Ilustrasi Desain Sony Playstation 5

Sobat "Semuainfo", sepertinya belum genap 2 (dua) tahun Sony (Sony Computer Entertainment) menggemparkan dunia game konsol rumahan dengan menghadirkan Sony Playsation 4 dengan kecanggihan dan keindahan permainan game - game di dalamnya, kini sudah terdengar sayup-sayup rumor dan kabar tentang mulai dibuatnya proyek generasi game konsol yang ke-9 yang merupakan kakak dari Playstation 4.

Tetap konsisten dengan istilah Playstation kabarnya game konsol ini akan diberi nama Playstation 5, dengan menghadirkan teknologi dan desain yang futuristik di dalamnya. Dengan terdengarnya rumor dan kabar ini, nampaknya Sony benar - benar serius ingin menjadi raja dari game konsol rumahan dan menggencet pesaing terberatnya yaitu Microsoft dengan seri XBox nya.


Nah, sobat pecinta dunia game pastinya penasaran donk seperti apa sih nantinya Playsation 5 itu, dari fitur, desain, dan game-game yang akan hadir di Playsation 5. Yuk.. mari kita simak beberapa informasi yang "Semuainfo" peroleh mengenai Rumor dan Bocoran Sony Playstation 5 dari berbagai sumber. Nah, tapi sobat perlu ingat bahwa namanya rumor itu pasti ada benar dan tidaknya, namanya juga bisikan ghaib.. hehehe.., Real nya seperti apa, kita tunggu saja kenyataan beberapa tahun kedepan setelah doi meluncurkan nya secara resmi.


Sebelum bahas rumor spesifikasi Playstation 5, kita simak dulu sejarah rilis dari Playstation 1 sampai ke (perkiraan) Playstation 5.




Riwayat Rilis Playstation
PS1
Desember 1994
Rentang Waktu
5 Tahun 3 Bulan
PS2
Maret 2000
Rentang Waktu
6 Tahun 8 Bulan
PS3
November 2006
Rentang Waktu
7 Tahun
PS4
November 2013
Rentang Waktu
Kira-kira 7 Tahun
PS5
November 2020 (prediksi)


Konsep Desain

Playstation 5 diprediksi akan hadir dalam 3 bentuk desain yaitu portabel, slim, dan konsol seperti pendahulu - pendahulunya.


DualShock 5 (Controller)

Rumornya kontroller PS5 yang disebut DualShock 5 dapat diintregasikan dengan berbagai macam device seperti smartphone dan televisi untuk berkomunikasi dan melakukan beberapa perintah dasar serta memiliki layar untuk menampilkan hasil komunikasi dengan device sobat. Selain itu kabarnya ada perangkat baru yang disebut dengan Haptic Holograph Emitter pada kontroller untuk memanipulasi objek 3D pada permainan.



VR (Virtual Reality)

Kabarnya Playstation 5 akan dapat diintregasikan dengan device Virtual Reality masa depan dilengkapi dengan sensor dan perangkat untuk menimbulkan efek pada indera manusia sehingga pemain bisa merasakan permainan lebih realistis.


Harga Konsol

Peluncuran pertama PS5 diprediksikan akan dibanderol dengan harga $500 s.d $800, perkiraan harga ini melihat dari spesifikasi serta harga peluncuran pada seri-seri playstation sebelumnya seperti Playsation 5 pantas untuk dihargai $500++ USD.


Harga Games

Kisaran harga games pada PS5 diperkirakan tidak jauh beda dengan harga game pada PS4, berkisar antara $30 s.d $100 USD.

Okay sobat "Semuainfo" cukup sekian informasi tentang bocoran dan prediksi spesifikasi Sony Playstation 5 yang diambil dari berbagai macam sumber terkait rumor dan berita terkait Playstation 5. Penasaran kan realitanya seperti apa? Kita tunggu saja sobat, sampai Sony benar-benar menyelesaikan pembuatan dan merilis Playstation 5 termasuk sampai ke Indonesia. Kira-kira berapa ya harganya sampai ke Indonesia nantinya ?