Semacam isset() di javascript

Untuk memeriksa apakah sebuah object / variabel terdefinisi / ada atau tidak seperti layaknya fungsi isset() di php, maka kita dapat menggunakan statement typeof cara sebagai berikut :

if (typeof obj.foo != 'undefined') {
  // ..
}

typeof ini akan mengembalikan nilai ‘undefined’ baik object/property tersebut ‘ada’/exist maupun memang bernilai undefined.

Reference : http://stackoverflow.com/questions/2281633/javascript-isset-equivalent

Menghapus semua direktori .svn

Mengapa ini diperlukan ? Pemicunya adalah ketika saya memiliki sebuah source yang biasanya di update dengan Subversion (SVN) tapi karena suatu sebab harus saya pindahkan ke tempat lain dan akan di import ulang ke SVN server lain. Di dalam direktory source tersebut sudah memiliki direktory2 ‘.svn’ yang mengacu kepada server SVN sebelumnya. Karenanya perlu di hapus. Karena setiap direktory yang ada dipastikan terdapat direktory tersebut, maka sangat tidak efisien kalau harus menghapusnya satu persatu.

Read more

Access MySQL remotely

Object : MySQL versi 5.5 on Ubuntu 12.10

Terkadang kita memiliki database MySql yang tidak menyatu IP nya dengan server aplikasi, maka server database perlu dipersiapkan agar dapat diakses secara remote.
Yang perlu kita konfigurasi adalah file my.cnf yang biasanya terletak di /etc/mysql/.
Bukalah file tersebut lalu cari dan ganti :
bind-address = 127.0.0.1
menjadi
bind-address = 0.0.0.0
Simpanlah file tersebut, kemudian restart server MySQL nya :

sudo /etc/init.d/mysql restart

Untuk memastikan bahwa MySQL server sudah bisa diakses dari jaringan, coba cek dengan perintah :

netstat -anp | grep 3306

jika Anda menemukan teks seperti di bawah ini :

tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN     -

Ini artinya MySQL kita sudah bisa diakses dari jaringan.
Kemudian langkah terakhir adalah memberikan kewenangan pada user siapa saja akses ini bisa gunakan, dengan cara mengatur previleges user :
mysql> GRANT ALL PRIVILEGES ON *.* TO <username>@'%' IDENTIFIED BY '<password>';
Gantilah <username> dan <password> dengan yang sesuai Anda inginkan.
Semoga berhasil, Tetap Semangat! TS!

Pasang Firewall di VPS: Advanced Policy Firewall from R-fx Networks

Beberapa bulan server ‘ngablak’ ketar-ketir juga, beberapa aplikasi firewall berbasis iptables di’plotot’in, masing-masing memiliki keunggulan dan kelemahan, akhirnya pilih yang satu ini,  APFdari http://www.rfxn.com, sangat mudah install nya 🙂

  1. Masuk sebagai root
  2. cd /root/downloads atau ke tempat lain yang anda miliki untuk tempat sementara
  3. wget http://www.rfxnetworks.com/downloads/apf-current.tar.gz
  4. tar -xvzf apf-current.tar.gz
  5. cd apf-9.7-2/  atau versi yang baru anda dapatkan
  6. jalankan perintah : ./install.sh | hingga mendapatkan pesan : Installing APF 9.7-2: Completed.

Maka APF Anda akan terpasang di :

Install path:         /etc/apf/
Config path:          /etc/apf/conf.apf
Executable path:      /usr/local/sbin/apf
AntiDos install path: /etc/apf/ad/
AntiDos config path:  /etc/apf/ad/conf.antidos
DShield Client Parser:  /etc/apf/extras/dshield/

Konfigurasi

Berikutnya adalah mengkonfigurasi, sementara file :  /etc/apf/conf.apf saja dulu ya, selebihnya mohon disesuaikan dengan kebutuhan Anda sendiri. Berikut adalah konfigurasi yang saya pilih :

DEVEL_MODE="1"
INSTALL_PATH="/etc/apf"

# IFACE_IN="eth0" 
# IFACE_OUT="eth0"
# karena saya pakai VPS, maka setting nya sbb :
IFACE_IN="venet0"
IFACE_OUT="venet0"

# Jika anda menggunakan server dedicated : SET_MONOKERN="0"
SET_MONOKERN="1"

IG_TCP_CPORTS="22,80"

EGF="1"
DLIST_DSHIELD="1"

Yang lainnya dibiarkan default.

Kemudian aktifkan apf : /usr/local/sbin/apf -s

APF ini akan aktif selama 5 menit, lalu akan down lagi, karena saat ini masih mode development, Anda akan melihat message :

apf(20709): {glob} !!DEVELOPMENT MODE ENABLED!! – firewall will flush every 5 minutes

Kalau sudah yakin dengan konfigurasi yang Anda pilih, maka ganti : DEVEL_MODE=”1″ menjadi DEVEL_MODE=”0″ di file /etc/apf/conf.apf

Selamat mencoba 🙂

Crayon Code Highlighter … and welcome back :)

Sudah lama gak coding akhirnya kembali perlu berenang – renang kembali, ternyata nikmat nya sensasional. Semacam passion yang hilang terus ketemu lagi 🙂 Dan kembali sebagai bayi programmer … meniti satu-persatu wk kkkk

Ops sudah basa-basinya ya … jadi gak nyambung dengan judul di atas he he he

Ok untuk bisa menampilkan code-code saya gunakan plugin di wordpress yang bernama Crayon Code Highlighter. Kenapa Crayon ? karena enak sih 🙂 dan cantik tentunya …

Just  try :

<?php
   echo "Welcome to PHP tutorial";
?>

Cantik kan tampilan si Crayon … and hey code(s) … welcome back !

 

Refresh Ubuntu Repository

Sometime whenever you update your Ubuntu (12.x up) and found error message below

Reading package lists… Error!
or like :
W: GPG error: http://archive.ubuntu.com jaunty Release: The following signatures were invalid: BADSIG 40976EAF437D05B5 Ubuntu Archive Automatic Signing Key

etc…

May be your repository configuration in you PC/laptop/server was dirty, and off course you can clean them up using this steps below :

sudo -i
apt-get clean
cd /var/lib/apt
mv lists lists.old
mkdir -p lists/partial
apt-get clean
apt-get update

Hope it will work with You, have a nice try.

Shuffle-Exchange Networks

M.J.Quin pp.59-60

Jaringan Shuffle-Exchange mengandung n = 2k buah node yang ditandai dengan angka 0, 1, … , n-1, dan dua macam koneksi yang disebut shuffle dan exchange. Exchange menghubungkan sepasang nodes yang angkanya berbeda di bit yang terakhirnya. Koneksi?perfect shuffle menghubungkan node i dengan node 2i modulo (n-1), kecuali untuk node yang ke n-1,?dia terhubung dengan dirinya sendiri. Perhatikan gambar 3-8 berikut :

shuffle-exchange

Gambar 3-8

Ini adalah gambar jaringan shuffle-exchange dengan 8 (delapan) buah nodes. Koneksi Shuffle ditandai dengan tanda panah bergaris penuh dan jalur exchange (pertukaran) ditandai dengan panah bergaris putus-putus.

Turunan dari shuffle-exchange salah satunya adalah perfect shuffle. Untuk mendapatkan pemahamam tentang perfect shuffle mari perhatikan ilustrasi berikut ini. Misalkan ada pengocokan kartu sejumlah 8 buah kartu. Mereka ditandai dengan angka 0,1,2,3,4,5,6,7. Jika tumpukan kartu tadi dibagi rata menjadi dua dan kemudian di kocok dengan sempurna, maka hasilnya adalah sebagai berikut : 0,4,1,5,2,6,3,7. Dengan memperhatikan gambar 3-8 di atas, posisi terakhir dari kartu yang dimulai dengan index i dapat ditentukan dengan mengikuti sambungan shuffle dari node i.

Misalkan \inline a_{k-1}a_{k-2},\cdots , a_{1},a_{0} adalah alamat sebuah node di sebuah jaringan perfect-shuffle dalam bentuk biner. Sebuah data pada alamat ini akan berada di alamat?\inline a_{k-2},\cdots , a_{1},a_{0},a_{k-1} sesuai dengan operasi?shuffle. Dengan perkataan lain, perubahan pada alamat dari sebuah data setelah operasi shuffle berkaitan dengan rotasi perputaran kiri (left cylic rotation) dari alamatnya sejauh 1 (satu) bit. Jika n = 2k, maka k kali operasi shuffle memindahkan suatu data kembali ke lokasi asalnya.

The nodes through which a data item beginning at address i travels in response to a sequence of shuffles are called the necklace of i. No necklace  is longer than k and a necklace shorter than k is called a short necklace. Figure 3-9 illustrate  the necklaces of the perfect shuffle network with eight nodes.

Gambar 3-9

Gambar 3-9

Bitonic Merge

Algoritma ini menjadi dasar untuk algoritma-algoritma sorting dengan waktu proses poli-logaritmik pada beberapa model komputasi paralel. Operasi dasarnya adalah Compare-Exchange: dua buah angka diarahkan masuk ke sebuah Comparator, di dalam comparator ini kedua nilai jika diperlukan akan dipertukarkan, sehingga akan berada pada urutan yang dikehendaki

openstat_bitonic_merge_10-4

Definisi 10.1 Bitonic Sequence adalah sederetan nilai \( a_{0}, \cdots ,a_{n-1}\) dengan sifat bahwa

  1. ada sebuah index , dimana \( 0\leq i\leq n-1\), sedemikian sehingga a menaik secara monoton ke adan amenurun secara monoton hingga an-1 , atau
  2. ada sebuah pergeseran index yang berputar (cyclic shift) sehingga kondisi yang pertama terpenuhi

Coba Anda perhatikan sebuah grafik barisan bitonic di bawah ini, dia akan memiliki paling banyak ‘satu puncak’ dan ‘satu lembah’. Jangan lupa bahwa barisan ini ‘memutar’ dari elemen yang terakhir kembali ke elemen yang pertama.

openstat_bitonic_merge_10-5

10-5

Sebuah langkah compare-exchange bisa memecah sebuah barisan bitonic tunggal menjadi 2 (dua) buah barisan bitonic, sebagaimana disebutkan dalam Lemma 10.1 berikut ini :

Lemma 10.1 Jika n adalah genap, maka n/2 buah comparator cukup untuk mentransformasikan sebuah barisan bitonic dengan n buah nilai, \( a_0, a_1, a_2, \cdots , a_{n-2},a_{n-1}\) menjadi 2 (dua) buah barisan bitonic dengan n/2 buah nilai,

\( min(a_0,a_{n/2}), min(a_1,a_{n/2+1}),\cdots ,min(a_{n/2-1},a_{n-1})\)
dan
\( max(a_0,a_{n/2}), max(a_1,a_{n/2+1}),\cdots ,max(a_{n/2-1},a_{n-1})\)

Sedemikian sehingga tidak ada nilai yang terletak pada barisan yang pertama adalah lebih besar dari nilai yang terletak pada barisan yang kedua.

Anggaplah kita memiliki sebuah barisan bitonic, sebuah langkah  compare-exchange membagi barisan ini menjadi dua buah barisan bitonic yang sama panjang yaitu n/2 . Dengan melakukan langkah ini secara rekursif akan menghasilkan barisan yang terurut.

 

10-8

10-8

Atau dengan kata lain, jika diberikan sebuah barisan bitonic dengan panjang n = 2k , dimana k > 0, maka k buah langkah compare-exchange cukup untuk menghasilkan barisan yang terurut

Berikut ini adalah contoh mengurutkan barisan dengan panjang 16 yang di jalankan dalam 4 (empat) langkah compare-exchange.

openstat_bitonic_merge_10-10

10-10

10-12

 

 

 

1 5 6 7 8 9 12