Membuat SSH Key dengan ssh-keygen

Tags: March 13, 2012 8:41 AM
0 comments

Perintah paling umum yang digunakan untuk membuat SSH Key. Perintah berikut membuat ssh key dengan tipe enkripsi RSA dengan jumlah bit 2048.

## pastikan dulu direktori ~/.ssh ada
$ mkdir -p ~/.ssh && chmod 700 ~/.ssh
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
a0:19:e5:f1:f6:b5:fb:67:ae:f0:28:26:26:a0:48:0b user@host
The key's randomart image is:
+--[ RSA 2048]----+
|      o          |
|     o o         |
|    . o o   .    |
|     + o . . .   |
|    o   S . .    |
|E.  .        .   |
|o... .      o    |
|...   . o o  =  o|
|       o o .. +=.|
+-----------------+ 

Secara default perintah ssh-keygen akan menghasilkan private key dengan nama id_ENKRIPSI dan public key id_ENKRIPSI.pub. Pada contoh diatas dihasilkan dua file yaitu id_rsa dan id_rsa.pub. Jika ingin menggunakan nama file yang berbeda maka digunakan opsi -f.

$ ssh-keygen -t rsa -f ~/.ssh/github_rsa

Maka akan muncul dua file pada direktori ~/.ssh yaitu github_rsa (private key) dan github_rsa.pub (public_key).

Share on Facebook Twitter

Cross Domain Request dengan JSONP

Tags: March 12, 2012 1:04 PM
0 comments

Karena alasan keamanan browser membatasi fungsi-fungsi object xmlHttpRequest ketika digunakan pada domain yang berbeda. Salah satu teknik yang dapat digunakan untuk mengatasi keterbasan tersebut adalah dengan JSONP (JSON with Padding). Fitur related post pada website ini pun menggunakan teknik JSONP.

Demo

Berikut ini adalah demo dimana text yang diinputkan pada textbox dibawah ini akan dibalik (reverse) pada sisi server.

Target URL Output
http://playground-astasoft2.rhcloud.com/jsonp/cross-domain-test.php?callback=show_reversed_text&text=foo+bar
show_reversed_text({
  "origtext": "foo bar", 
  "revtext": "rab oof"
});

Share on Facebook Twitter

Membuat Related Post pada Blogger

Tags: 10:31 AM
0 comments

Setelah berjam-jam dipusingkan dengan bagaimana membuat related post pada blogger, akhirnya dapat selesai juga solusinya. Cara mudah untuk membuatnya adalah sebagai berikut: pertama cari baris kode pada template yang terlihat seperti kode berikut.

<p class='post-footer-line post-footer-line-1'>

Sisikan kode baru sehingga tampilan akhir menjadi seperti ini.

<-- BEGIN RELATED POST -->
<b:if cond='data:blog.pageType == "item"'>
    <div id="blogger-related-post" style="margin-bottom:20px;"></div>
    <b:if cond='data:post.labels'>
        <script>
            var blogger_related_post_tags = "<b:loop values='data:post.labels' var='label'><data:label.name/><b:if cond='data:label.isLast != "true"'>,</b:if></b:loop>";
            var blogger_related_link = "http://playground-astasoft2.rhcloud.com/blogger/related-post.php?tags=" + blogger_related_post_tags + '&amp;id=<data:post.id/>&amp;format=htmljsonp&amp;domain=notes.rioastamal.net&amp;max=7';
            
            function update_related_post_data(jsonp) {
                document.getElementById('blogger-related-post').innerHTML = jsonp.data;
            }
            
            var bscript = document.createElement("script");
            bscript.setAttribute("src", blogger_related_link);
            document.getElementsByTagName('head')[0].appendChild(bscript); 
        </script>
    </b:if>
</b:if>
<-- END RELATED POST -->

<p class='post-footer-line post-footer-line-1'>

Selanjutnya yang perlu diganti hanyalah pada baris nomor 7 yaitu bagian domain=notes.rioastamal.net ganti dengan domain=blogspot.anda.sendiri. Contoh hasil related post dapat dilihat pada blog ini.

Share on Facebook Twitter

Install Nginx pada Ubuntu Server

Tags: March 11, 2012 4:36 PM
0 comments

Metode instalasi yang dipakai adalah menggunakan paket deb bukan dari source. Paket deb terbaru disediakan langsung oleh website official nginx. Versi ubuntu yang mendapat dukungan langsung adalah Ubuntu versi 10.04 Lucid Lynx (Per tanggal Maret 2012).

Import signature key dari nginx.org

$ cd /tmp
$ wget http://nginx.org/keys/nginx_signing.key
$ sudo apt-key add nginx_signing.key && rm nginx_signing.key

Tambahkan pada source.list.d

$ sudo vi /etc/apt/sources.list.d/nginx.list

## tambahkan satu baris berikut lalu simpan
deb http://nginx.org/packages/ubuntu/ lucid nginx

$ sudo apt-get update

Share on Facebook Twitter

Mencari String pada File melalui Shell

Tags: 10:45 AM
0 comments

Perintah yang dapat digunakan.

find [DIRECTORY] -exec grep -H -n [STRING] {} \;

Contoh

Contoh berikut akan mencari letak dimana file dari fungsi wp_login berada. Pencarian dilakukan pada direktori distribusi wordpress yang telah diextract.

Share on Facebook Twitter

Internet Connection Sharing pada Ubuntu via Wi-Fi

Tags: 9:40 AM
0 comments

Perangkat Keterangan Interface Alamat IP
Laptop Ubuntu 10.04 sebagai Host/Gateway ppp0 (Internet) DHCP dari ISP
eth0 (LAN) 192.168.1.10
TP-Link TL-WA5110G Access Point LAN Port 192.168.1.254
Android Phone Test Device - DHCP dari Access Point

Langkah-langkah pada Ubuntu

Diasumsikan bahwa kondisi Ubuntu sudah terkoneksi dengan internet jadi tidak perlu dijabarkan disini, yang akan disetting pada sisi ubuntu adalah IP address untuk interface eth0 dan paket forwarding. Hasil perintah dibawah ini bersifat temporer, artinya akan hilang ketika restart.

Share on Facebook Twitter

Melihat Daftar Paket yang Dapat Diupgrade pada Debian/Ubuntu

Tags: March 10, 2012 6:37 PM
0 comments

Perintah ini digunakan untuk melihat daftar paket yang dapat diupgrade pada distro Debian/Ubuntu. Kuncinya adalah pemberian opsi -s yang artinya hanya merupakan proses simulasi.

# apt-get update
# apt-get upgrade -s
Atau full OS (distribution) upgrade.
# apt-get dist-upgrade -s

Share on Facebook Twitter

Membuat Fungsi Terbilang pada PHP

Tags: 3:55 PM
0 comments

Code ini self explanatory jadi mudah untuk di-porting ke bahasa pemrograman lain.

<?php
/**
 * Fungsi untuk menerjemahkan suatu angka dalam bentuk bilangan. contoh,
 *
 * <code>
 * terbilang(5); // output 'Lima'
 * terbilang(41); // output 'Empat puluh satu'
 * terbilang(1001); // output 'Seribu satu'
 * </code>
 *
 * @author Rio Astamal <me@rioastamal.net>
 *
 * @param int $angka - Angka yang akan diterjemahkan
 * @return string
 */
function terbilang($angka) {
    // pastikan kita hanya berususan dengan tipe data numeric
    $angka = (float)$angka;
    
    // array bilangan 
    // sepuluh dan sebelas merupakan special karena awalan 'se'
    $bilangan = array(
            '',
            'satu',
            'dua',
            'tiga',
            'empat',
            'lima',
            'enam',
            'tujuh',
            'delapan',
            'sembilan',
            'sepuluh',
            'sebelas'
    );
    
    // pencocokan dimulai dari satuan angka terkecil
    if ($angka < 12) {
        // mapping angka ke index array $bilangan
        return $bilangan[$angka];
    } else if ($angka < 20) {
        // bilangan 'belasan'
        // misal 18 maka 18 - 10 = 8
        return $bilangan[$angka - 10] . ' belas';
    } else if ($angka < 100) {
        // bilangan 'puluhan'
        // misal 27 maka 27 / 10 = 2.7 (integer => 2) 'dua'
        // untuk mendapatkan sisa bagi gunakan modulus
        // 27 mod 10 = 7 'tujuh'
        $hasil_bagi = (int)($angka / 10);
        $hasil_mod = $angka % 10;
        return trim(sprintf('%s puluh %s', $bilangan[$hasil_bagi], $bilangan[$hasil_mod]));
    } else if ($angka < 200) {
        // bilangan 'seratusan' (itulah indonesia knp tidak satu ratus saja? :))
        // misal 151 maka 151 = 100 = 51 (hasil berupa 'puluhan')
        // daripada menulis ulang rutin kode puluhan maka gunakan
        // saja fungsi rekursif dengan memanggil fungsi terbilang(51)
        return sprintf('seratus %s', terbilang($angka - 100));
    } else if ($angka < 1000) {
        // bilangan 'ratusan'
        // misal 467 maka 467 / 100 = 4,67 (integer => 4) 'empat'
        // sisanya 467 mod 100 = 67 (berupa puluhan jadi gunakan rekursif terbilang(67))
        $hasil_bagi = (int)($angka / 100);
        $hasil_mod = $angka % 100;
        return trim(sprintf('%s ratus %s', $bilangan[$hasil_bagi], terbilang($hasil_mod)));
    } else if ($angka < 2000) {
        // bilangan 'seribuan'
        // misal 1250 maka 1250 - 1000 = 250 (ratusan)
        // gunakan rekursif terbilang(250)
        return trim(sprintf('seribu %s', terbilang($angka - 1000)));
    } else if ($angka < 1000000) {
        // bilangan 'ribuan' (sampai ratusan ribu
        $hasil_bagi = (int)($angka / 1000); // karena hasilnya bisa ratusan jadi langsung digunakan rekursif
        $hasil_mod = $angka % 1000;
        return sprintf('%s ribu %s', terbilang($hasil_bagi), terbilang($hasil_mod));
    } else if ($angka < 1000000000) {
        // bilangan 'jutaan' (sampai ratusan juta)
        // 'satu puluh' => SALAH
        // 'satu ratus' => SALAH
        // 'satu juta' => BENAR 
        // @#$%^ WT*
        
        // hasil bagi bisa satuan, belasan, ratusan jadi langsung kita gunakan rekursif
        $hasil_bagi = (int)($angka / 1000000);
        $hasil_mod = $angka % 1000000;
        return trim(sprintf('%s juta %s', terbilang($hasil_bagi), terbilang($hasil_mod)));
    } else if ($angka < 1000000000000) {
        // bilangan 'milyaran'
        $hasil_bagi = (int)($angka / 1000000000);
        // karena batas maksimum integer untuk 32bit sistem adalah 2147483647
        // maka kita gunakan fmod agar dapat menghandle angka yang lebih besar
        $hasil_mod = fmod($angka, 1000000000);
        return trim(sprintf('%s milyar %s', terbilang($hasil_bagi), terbilang($hasil_mod)));
    } else if ($angka < 1000000000000000) {
        // bilangan 'triliun'
        $hasil_bagi = $angka / 1000000000000;
        $hasil_mod = fmod($angka, 1000000000000);
        return trim(sprintf('%s triliun %s', terbilang($hasil_bagi), terbilang($hasil_mod)));
    } else {
        return 'Wow...';
    }
}

Share on Facebook Twitter

Membuat Fungsi Random String pada PHP

Tags: 12:59 PM
0 comments

<?php
/**
 * Fungsi untuk mendapatkan random string
 *
 * @author Rio Astamal <me@rioastamal.net>
 * @since Version 1.0
 *
 * @param int $length Panjang string yang akan digenerate
 * @return string
 */
function mr_random_string($length=8) {
 // kumpulan random string yang akan diambil
 $string = '=-0987654321!@#%^&*()_+][poiuytrewqasdfghjkl;/.,mnbvcxzQWERTYUIOP{}|:LKJHGFDSAZXCVBNM<>?';
 // digunakan untuk fungsi mt_rand
 $str_len = strlen($string) - 1; // minus 1 karena urutan dimulai dari 0
 
 // variabel penyimpan output
 $out = '';
 // loop sebanyak parameter yang diinputkan (default => 8)
 for ($i=0; $i<$length; $i++) {
  // posisi acak single string yang akan diambil
  // dari 0 sampai banyaknya string
  $pos = mt_rand(0, $str_len);
  // simpan pada output
  $out .= $string[$pos]; // cukup ambil satu string
 }
 
 // kembalkan output
 return $out;
}

Code diambil dari paket string helper pada Miras Framework.

Share on Facebook Twitter

Membuat Fungsi Padding Zero pada PHP

Tags: 10:38 AM
0 comments

<?php
/**
 * Fungsi untuk menambahkan NOL didepan angka. Contoh.
 *
 * <code>
 * pad_zero(4);            // output 000004
 * pad_zero(123);        // output 000123
 * pad_zero(123, 4);    // output 0123
 * pad_zero(123, 4, FALSE);    // output 1230
 * </code>
 
 * @author Rio Astamal <me@rioastamal.net>
 *
 * @param int $number - Angka yang akan ditambahkan NOL
 * @param int $length - Jumlah digit yang ingin ditampilkan
 * @param string $in_front - Posisi NOL apakah didepan (TRUE) atau dibelakang (FALSE)
 * 
 * @return string
 */
function pad_zero($number, $length=6, $in_front=TRUE) {
    // ubah ke string agar dapat dihitung jumlah karakternya
    $number = (string)$number;
    // jumlah loop yang dilakukan adalah panjang digit - jumlah karakter
    // jadi jika ingin digit 6 dan angka yang disupply adalah 3
    // maka loop = 6 - 1 => 5 buah NOL
    $loop = $length - strlen($number);
    
    // variabel penampung hasil
    $result = '';
    for ($i=0; $i<$loop; $i++) {
        // tambahkan nol
        $result .= '0';
    }
    
    // gabungkan jumlah NOL dengan angka
    if ($in_front === TRUE) {
        $result = $result . $number;
    } else {
        // NOL dibelakang
        $result = $number . $result;
    }
    
    return $result;
}

Share on Facebook Twitter