Rabu, 26 Maret 2014

Konfigurasi IP Address, DNS, dan NAT Pada Ubuntu Server



Untuk mengkonfigurasi alamat IP langkah-langkahnya adalah sebagai berikut:
  • Masuklah menggunakan username dan password yang telah diatur pada langkah sebelumnya. Pada artikel ini userame yang saya gunakan adalah adamkurniawan dan password saya juga adamkurniawan. Untuk password tidak akan terlihat pada saat diketikkan karena alasan keamanan. Tekan tombol Enter jika sudah yakin memasukkan username dan password dengan benar.
  • Setelah berhasil masuk akan diperlihatkan kapan pengguna adamkurniawan terakhir login. Pada baris paling bawah terlihat tulisan adamkurniawan@server01:~$, ini berarti pengguna dengan id adamkurniawan masih berstatus sebagai pengguna biasa dan belum bisa melakukan pengaturan. Agar bisa melakukan pengaturan, pengguna harus masuk sebagai mode root atau mode tertinggi dalam sistem (administrator) dengan mengetikkan perintah sudo su, maka akan akan muncul tulisan [sudo] password for adamkurniawan: itu berarti sistem meminta password agar pengguna dengan id adamkurniawan bisa masuk sebagai mode root. Password yang digunakan untuk mode root ini adalah password yang sama yang digunakan untuk login pada awal tadi. Masukkan password-nya dan tekan Enter. Jika password yang dimasukkan benar, maka akan muncul tulisan root@server01:/home/adamkurniawan#, ini berarti pengguna dengan id adamkurniawan sudah masuk sebagai mode root dan sudah bisa melakukan konfigurasi.
  • Sebelum melakukan konfigurasi  pada  alamat IP, cek terlebih dahulu apa nama kartu jaringan (ethernet) yang tersedia yang bisa digunakan dengan mengetikkan: # ifconfig –a | more. Penamaan kartu jaringan pada sistem Linux diawali dengan eth lalu diikuti dengan nomor kartu jaringannya yang dimulai dengan 0, misal eth0, eth1, eth2, dan seterusnya. Karena pada artikel ini saya menggunakan dua buah kartu jaringan maka setelah diketikkan # ifonfig –a | more, didapati bahwa nama kartu jaringan yang saya miliki pada sistem linux dikenal dengan nama eth0 dan eth1.
  • ketikkan perintah # nano /etc/network/interfacesuntuk mulai melakukan konfigurasi alamat IP Ubuntu Server 10.10. Pada baris paling akhir ketikkan skrip berikut: auto eth0 iface eth0 inet static
    address 192.168.6.200
    netmask 255.255.255.0
    gateway 192.168.6.254
Skrip diatas adalah skrip yang digunakan untuk melakukan pengaturan kartu jaringan pertama (eth0) yang akan dihubungkan ke internet. Alamat IP yang saya berikan harus satu segmen dengan jaringan yang ada di atas Ubuntu Server 10.10 yang saya gunakan dan gateway dari kartu jaringan pertama juga harus merupakan alamat IP dari perangkat yang bertindak sebagai gerbang dari Ubuntu Server 10.10 yang saya gunakan ke internet. Sedangkan untuk pengaturan kartu jaringan kedua yang akan digunakan sebagai interface ke jaringan lokal adalah sebagai berikut:
auto eth1
iface eth1 inet static
address 10.10.1.254
netmask 255.255.255.0
Jika telah selesai tekan tombol Ctrl + O untuk menyimpan konfigurasi yang telah dilakukan, berikan nama berkas konfigurasi yang baru saja dibuat, pada artikel ini saya tidak memberikan nama baru, jadi saya langsung saja menekan tombol Enter. Kemudia tekan tombol Ctrl + X untuk keluar. Restart kartu jaringan menggunakan perintah # /etc/init.d/networking restart agar konfigurasi yang baru saja dilakukan bisa terbaca oleh sistem.
  • Pada umumnya, jika kartu jaringan belum pernah dikonfigurasi menggunakan Ubuntu Server 10.10 atau Ubuntu Server 10.10 yang digunakan masih baru diinstal (fresh install), kartu jaringan yang tertanam di komputer sudah terbaca namun belum aktif. Untuk melihat apakah kartu jaringan sudah aktif atau belum, ketikkan perintah # ifconfig. Pada artikel ini, kartu jaringan yang saya gunakan belum aktif.
  • Untuk mengaktifkannya ketikkan perintah # ifconfig eth0 up (mengaktifkan kartu jaringan pertama) dan # ifconfig eth1 up (mengaktifkan kartu jaringan kedua). Setelah itu restart kembali kartu jaringan menggunaka # /etc/init.d/networking restart. Jika dilakukan pengecekan kembali menggunakan perintah # ifconfig, maka akan bisa dilihat bahwa kartu jaringan sudah aktif dan sudah memiliki alamat IP sesuai dengan yang sudah di konfigurasi.
  • Langkah selanjutnya adalah memberikan DNS (Domain Name System). DNS digunakan sebagai penerjemah dari nama domain ke alamat IP, dan sebaliknya, yaitu dari alamat IP ke nama domain. Jadi apabila pengguna mengetikkan google.com di web browser, maka itu berarti pengguna memanggil alamat IP dari google.com yaitu 74.125.71.103. Untuk mengatur DNS di Ubuntu Server 10.10 pengguna harus membuat sebuah berkas baru bernama resolv.conf yang diletakkan di direktori /etc dengan mengetikkan # touch /etc/resolv.conf, namun sebelumnya pengguna harus masuk ke dalam mode root. Setelah berhasil membuatnya, selanjutnya adalah mengisi berkas resolve.conf tersebut dengan alamat IP yang bisa menerjemahkan nama domain ke alamat IP dan sebaliknya, dengan cara mengetikkan perintah # nano /etc/resolv.conf. Kemudian ketikkan nameserver dan diikuti dengan alamat IPyang bisa digunakan sebagai DNS, pada artikel ini saya menggunakan 2 buah DNS, yaitu 192.168.4.254 yang merupakan alamat IP gateway Ubuntu Server 10.10 dan 8.8.8.8 yang merupakan alamat penyedia DNS yang dibuat oleh Google. Jadi penulisannya adalah sebagai berikut: nameserver 192.168.4.254
    nameserver 8.8.8.8
Simpan dengan menekan Ctrl + O, tekan tombol Enter untuk replace nama yang lama dan tekan Ctrl + X untuk keluar. Lakukan kembali restart jaringan dengan mengetikkan # /etc/init.d/networking.
  • Tahap berikutnya adalah melakukan pengecekan apakah Ubuntu Server 10.10 sudah bisa melakukan koneksi ke internet dan apakah DNS sudah bekerja dengan baik. Cara melakukannya adalah dengan melakukan ping ke sebuah alamat domain. Pada artikel ini, saya melakukan pengecekan dengan melakukan ping ke domain yahoo.com. Perintah yang diketikkan adalah # ping yahoo.com. disini saya sudah mendapatkan balasan dari yahoo.com dan berarti Ubuntu Server 10.10 yang digunakan sebagai server sudah terkoneksi ke internet dengan baik, begitu juga dengan DNS-nya.
  • Selanjutnya, lakukan konfigurasi agar semua klien yang berada pada jaringan lokal bisa mengakses ke jaringan yang berada di jaringan luar (internet) atau melakukan NAT. Jika tidak dikonfigurasi maka paket-paket yang berasal dari kartu jaringan lokal (eth1) tidak akan bisa diteruskan ke kartu jaringan yang mengarah ke internet (eth0). Caranya adalah dengan mengetikkan perintah berikut ini: iptables –t nat –A POSTROUTING –o eth0 –j MASQUERADE, lalu tekan Enter. Jika ingin rule ini dijalankan pada saat komputer dinyalakan, maka ketikkanlah rule diatas pada file /etc/rc.local sebelum baris exit 0.

Perintah-Perintah Dasar Di Linux Ubuntu Server

Ubuntu sangat terkenal dengan CLI-nya (Command Line Interface). CLI sendiri adalah antar muka yang tidak menyediakan grafik, baik berupa gambar-gambar, jendela-jendela ataupun animasi-animasi yang bisa memanjakan pengguna, melainkan hanya berupa teks yang harus diketikkan oleh pengguna. Jadi, apabila user ingin melakukan operasi dalam sistem operasi tersebut, misalnya melakukan copy,  rename,  cut, delete, dan sebagainya,  maka pengguna harus megetikkan perintah berupa teks dengan cara manual dan bukan dengan klik-klik seperti pada interface GUI (Graphic User Interface).


Berikut ini adalah beberapa perintah yang bisa digunakan di sistem operasi Ubuntu pada mode CLI, baik Desktop maupun Server, yang juga banyak untuk bisa digunakan pada distro yang lain. Pada contoh ini saya menggunakan Ubuntu Desktop 10.10.

1. sudo su

Digunakan untuk login sebagai root/pengguna tertinggi

Sintaks sudo su

2. login

Digunakan untuk login sebagai user lain, namun harus menjadi root dulu untuk bisa menjalankan peirntah ini.

Sintaks : login namauser

Contoh : login adam

3. cd

Digunakan untuk berpindah direktori

Sintaks : cd alamat_direktori

Contoh : cd /var/www

4. pwd

Digunakan untuk memperlihatkan di direktori mana posisi kita berada sekarang.

Sintaks : pwd

5. ls

Digunakan untuk melihat isi sebuah direktori.

Sintaks : ls

6. cp

Digunakan untuk melakukan copy file.

Sintaks : cp /direktori/file_yang_ingin_dicopy /direktori tujuan

Contoh : cp /etc/file1.txt /var/www

7. mv

Digunakan untuk melakukan memindahkan, cut atau rename file.

Sintaks :

mv /direktori/file_yang_ingin_dicut /direktori tujuan (cut)

mv /direktori/file_yang_ingin_direname /nama_baru_file (rename)

Contoh:

mv /etc/file1.txt /var/www

mv /etc/file1.txt file2.txt

8. mkdir

Digunakan untuk membuat folder baru.

Sintaks : mkdir nama_folder

Contoh : mkdir folder1

9. rmdir

Digunakan untuk menghapus folder.

Sintaks : rmdir nama_folder

Contoh : rmdir folder1

10. touch

Digunakan untuk membuat file baru.

Sintaks : touch nama_file

Contoh : touch file1.txt

11. rm

Digunakan untuk menghapus file.

Sintaks : rm nama_file

Contoh : rm file1.txt

12. more

Digunakan untuk menampilkan isi sebuah file

Sintaks : more nama_fie

Contoh : more file1.txt

13. echo

Digunakan untuk menuliskan sesuatu kata atau kalimat ke sebuah file.

Sintaks : echo “isi pesan” nama_file

Contoh : echo “Hai ini adalah contoh pesan” >> file1.txt

14. adduser

Digunakan untuk menambah user baru.

Sintaks : adduser nama_user

Contoh : adduser adamkurniawan

15. addgroup

Digunakan untuk menambah group baru

Sintaks : addgroup nama_group

Contoh : addgroup grup1

16. lsusb

Digunakan untuk melihat perangkat usb yang sedang terkoneksi ke komputer

Sintaks : lsusb

17. lspci

Digunakan untuk melihat perangkat pci yang sedang terkoneksi ke komputer

Sintaks : lspci

18. lshw

Digunakan untuk melihat hardware komputer.

Sintaks : lshw

19. dmesg

Digunakan untuk melihat hardware yang sedang beraktifitas

Sintaks : dmseg

20. top

Digunakan untuk melihat proses yang sedang berjalan, seperti Task Manager pada Windows.

Sintaks : top

21. cpuinfo

Digunakan untuk melihat spesifikasi komputer.

Sintaks : more /proc/cpuinfo

22. meminfo

Digunakan untuk melihat status RAM

Sintaks : more /proc/meminfo

23. clear

Digunakan untuk membersihkan layar

Sintaks : clear

24. halt

Digunakan untuk mematikan komputer, namun harus sebagai root.

Sintaks : halt

25. reboot

Digunakan untuk merestart komputer, namun harus sebagai root.

Sintaks : reboot

26. exit

Digunakan untuk keluar dari terminal.

Sintaks : exit

27. wget

Digunakan untuk mendownload via terminal

Sintaks : wget link_download

Contoh : wget www.insightcalendar.com/Insight_Calendar_1-1_Setup.exe

28. ifconfig

Digunakan untuk melihat konfigurasi ethernet/kartu jaringan.

Sintaks : ifconfig

29. apt-get

Digunakan untuk memperoleh paket/software dari repository ubuntu secara online.

Sintax : apt-get nama_paket

Contoh :

apt-get update (untuk melakukan update repository)

apt-get update wine (untuk mendapatkan paket wine)

30. tar

Digunakan untuk melakukan extract file.

Sintaks : tar [parameter] nama_file

Contoh : tar -xzvf komodo-edit-5.2.4-4343-linux-libcpp6-x86.tar.gz

31. nautilus

Digunakan untuk membuka tampilan GUI secara langsung.

Sintaks : nautilus

Contoh : sudo nautilus (menggunakan mode GUI dengan status root)

32. df -h

melihat sisa kapasitas harddisk.

sintaks : df -h

33. who     

digunakan untuk melihat nama login kita.

sintaks : who      

34. cat          

digunakan untuk membuka file.

sintaks : cat        

contoh: cat test.txt

35. date 

melihat tanggal

sintaks : date

36. cal

melihat kalender

sintaks : melihat tanggal

37. hostname 

Menampilkan nama komputer.

sintaks: hostname 

38. free     

Melihat Free memory.

sintaks: free     

39. History

melihat perintah apa saja yang pernah diketik

sintaks : History

40. deluser 

Menghapus user dari sistem

sintaks : deluser [nama user]


uname -r = Melihat kernel yang digunakan pada OS

uname -a = Informasi system kernel anda

cat /proc/cpuinfo = Melihat file pada /proc directori yang bukan merupakan file nyata (not real files).

cat /proc/interrupts = Melihat alamat interrupt yang dipakai.

cat /proc/version = Versi dari Linux dan informasi lainnya.

cat /proc/filesystems = Melihat filesystem yang digunakan.

cat /etc/printcap = Melihat printer yang telah disetup

finger username = Melihat informasi user, coba jalankan; fingerroot

last = Melihat user sebelumnya yang telah login di komputer.

uptime = Melihat jumlah waktu pemakaian komputer oleh seseorang, terhitung proses reboot terakhir.

ps (=print status)= Melihat proses-proses yang dijalankan oleh user

ps axu = Melihat seluruh proses yang dijalankan, walaupun tanpa terminal control, juga ditampilkan nama dari user untuk setiap proses.

top = Melihat proses yang berjalan, dengan urutan penggunaan cpu.

apropos =  Untuk mencari perintah pada sistem operasi yang mempunyai fungsi yang sama. 

chmod = Mengubah perizinan suatu direktori/file. 

wc = Menghitung jumlah kata, jumlah baris dan jumlah karakter dalam suatu file . 

man = Singkatan dari manual yaitu untuk menampilkan halaman manual untuk semua perintah UNIX.

grep = Mencari isi suatu file di sembarang directori. 

pwd = Menampilkan nama direktori dimana Anda saat itu sedang berada.

ps = Digunakan untuk memonitor informasi tentang proses yang aktif dalam sistem UNIX. 

kill =  Digunakan untuk menghentikan proses yang sedang berjalan. 

bc = Perintah bc dapat digunakan sebagai calculator. 

wall = Pengiriman pesan oleh super user. 

:w di gunakan u/ menyimpan file or sama dengan (save).

:q digunakan u/ keluar dari editor tandan mentimpan file.

:wq digunakan u/ keluar dari editor sekaligus menyimpan file.

tail = Menampilkan 10 baris terakhir dari suatu file.

ls –l = Melihat semua file lengkap

ls -a = Menampilkan semua file atau direktori yang tersembunyi

ls -f = Menampilkan semua file atau direktori tanpa proses shorting

grep root /etc/passwd =  Mencari kata atau kalimat dalam file

Selasa, 18 Maret 2014

Finite State Automata dan contoh soal

Finite state automata adalah mesin abstrak berupa sistem model matematika dengan masukan dan keluaran diskrit yang dapat mengenali bahasa paling sederhana (bahasa reguler) dan dapat diimplementasikan secara nyata.
Finite State Automata (FSA) adalah model matematika yang dapat menerima input dan mengeluarkan output yang memiliki state yang berhingga banyaknya dan dapat berpindah dari satu state ke state lainnya berdasarkan input dan fungsi transisi. Finite state automata tidak memiliki tempat penyimpanan/memory, hanya bisa mengingat state terkini.
Finite State Automata dinyatakan oleh pasangan 5 tuple, yaitu:
M=(Q , Σ , δ , S , F )
Q = himpunan state
Σ = himpunan simbol input
δ = fungsi transisi δ : Q × Î£
S = state awal / initial state , S
Q
F = state akhir, F
Q

Karakteristik Finite Automata
1.Setiap Finite Automata memiliki keadaan dan transisi yang terbatas.
2.Transisi dari satu keadaan ke keadaan lainnya dapat bersifat deterministik atau non-deterministik.
3.Setiap Finite Automata selalu memiliki keadaan awal.
4.Finite Automata dapat memiliki lebih dari satu keadaan akhir.
jika setelah pemrosesan seluruh string, keadaan akhir dicapai, artinya otomata menerima string tersebut.
Setiap FSA memiliki:
1.Himpunan berhingga (finite) status (state)
•Satu buah status sebagai status awal (initial state), biasa dinyatakan q0.
•Beberapa buah status sebagai status akhir (final state).
2.Himpunan berhingga simbol masukan
3.Fungsi transisi
Menentukan status berikutnya dari setiap pasang status dan sebuah simbol masukan.

Cara Kerja Finite State Automata
Finite State Automata bekerja dengan cara mesin membaca memori masukan berupa tape yaitu 1 karakter tiap saat (dari kiri ke kanan) menggunakan head baca yang dikendalikan oleh kotak kendali state berhingga dimana pada mesin terdapat sejumlah state berhingga.
Finite Automata selalu dalam kondisi yang disebut state awal (initial state) pada saat Finite Automata mulai membaca tape. Perubahan state terjadi pada mesin ketika sebuah karakter berikutnya dibaca. Ketika head telah sampai pada akhir tape dan kondisi yang ditemui adalah state akhir, maka string yang terdapat pada tape dikatakan diterima Finite Automata (String-string merupakan milik bahasa bila diterima Finite Automata bahasa tersebut).

Finite State Diagram (FSD)
Finite State Automata dapat dimodelkan dengan Finite State Diagram (FSD) dapat juga disebut State Transition Diagram. Sistem transisi adalah sistem yang tingkah lakunya disajikan dalam bentuk keadaan-keadaan (states). Sistem tersebut dapat bergerak dari state yang satu ke state lainnya sesuai dengan input yang diberikan padanya.
Fungsi Transisi (d) adalah representasi matematis atas transisi keadaan.
S = himpunan alfabet.
Q = himpunan keadaan-keadaan.
d = Q x S à Q
Finite State Diagram terdiri dari:
1.Lingkaran menyatakan state
Lingkaran diberi label sesuai dengan nama state tersebut. Adapun pembagian lingkaran adalah:
•Lingkaran bergaris tunggal berarti state sementara
•Lingkaran bergaris ganda berarti state akhir
2.Anak Panah menyatakan transisi yang terjadi.
Label di anak panah menyatakan simbol yang membuat transisi dari 1 state ke state lain. 1 anak panah diberi
label start untuk menyatakan awal mula transisi dilakukan.
Contoh FSA :

  1.   Mesin M = {q, ∑, d ,S,F}
Dimana :
Q = {q0, q1, q2}
∑ = {X,Y}
S=  q0
F = q1
dengan fungsi transisi di atas diberikan dalam bentuk table di bawah ini:


Jadi dari table transisi di atas kita bisa membuat Digram State seperti dibawah ini  


Jika M diberi input xxxyyxy, dengan state awal (q0, xxxyyxy), maka :

(Q0,xxxyyxy)  ├M (Q0,xxyyxy)
                        ├M (Q0,xyyxy)
                        ├M (Q0,yyxy)
                        ├M (Q1,yxy)
                        ├M (Q0,xy)
                        ├M (Q0,y)
                        ├M (Q1,e)
Karena (Q0,xxxyyxy) ├*M (Q1,e), jadi xxxyyxy diterima oleh M

2.   Mesin M= {q, ∑, d,S,F} diberi  input 101010 dan 110011 serta mempunyai tabel transisi seperti gambar berikut! maka :
Dimana DFA nya
Q = {q0, q1, q2}
∑ = {0,1}
S=  q0
F = q1 

dengan fungsi transisi diatas diberikan dalam bentuk table di bawah ini:



Jadi dari table transisi di atas kita bisa membuat Digram State seperti dibawah ini 

 
Jika M diberi input 101010, dengan state awal (q0, 101010), maka :
      (q0,101010)  ├M (q1,01010)
                             ├M (q2,1010)
                             ├M (q2,010)
                             ├M (q1,10)
                             ├M (q0,1)
                             ├M (q1,e)
Karena (q0, 101010) ├*M (q1,e), jadi 101010 diterima oleh M


Jika M diberi input 110011, dengan state awal (q0, 110011), maka :
   (q0,110011)    ├M (q1,10011)
                           ├M (q0,0011)
                           ├M (q0,011)
                           ├M (q0,11)
                           ├M (q1,1)
                           ├M (q0,e)
Karena (q0, 110011) ├*M (q1,e), jadi 110011 tidak diterima oleh M


Sebuah FSA dibentuk dari lingkaran yang menyatakan state:
• Label pada lingkaran adalah nama state
• Busur menyatakan transisi/ perpindahan
• Label pada busur yaitu symbol input
• Lingkaran yang didahului sebuah busur tanpa label menyatakan state awal
• Lingkaranb ganda menyatakan state akhir/ final.
Jadi sebuah mesin otomata dapat dinyatakan dalam diagram transisi, fungsi transisi dan tabel transisi.

Alphabet dan Konkatenasi pada teori bahasa otomata



1.      ALPHABET
  • Sebuah alphabet adalah himpunan berhingga dan tak kosong dari simbol.  Alphabet disimbolkan oleh . 
  • Contoh:
  •              = {0, 1} alphabet biner
  •           = {a, b,..., z}, himpunan semua huruf kecil.
  •            Himpunan semua karakter ASCII.
String
  • Sebuah string (atau word) adalah deretan simbol berhingga yang dipilih dari alphabet. 
  • Contoh : 011011 dan 1111 adalah string dari alphabet biner = {0, 1}. 
  • String kosong adalah string dimana tidak ada kemunculan simbol.
  • String tersebut dinotasikan oleh e.
  • Panjang dari string adalah banyaknya posisi untuk simbol dalam string. 
  • Contoh, 01101 memiliki panjang 5. 
  • Umumnya panjang dari string adalah banyaknya simbol dalam string.
  • Pernyataan tersebut tidak sepenuhnya benar, sebagai contoh terdapat 2 simbol dalam string 01101 yaitu 0 dan 1, tetapi terdapat 5 posisi untuk simbol, dan panjangnya adalah 5.
  • Notasi standar untuk panjang string w adalah |w|.  Contoh: |011| = 3 dan |e| = 0.
  • x adalah sebuah substring dari string lain y jika ada string w dan z, keduanya dapat berupa string kosong, sedemikian sehingga y = wxz. 
  • Sebagai contoh, car adalah substring dari carry, car, vicar.
Pangkat dari Alphabet
  •   Jika  adalah alphabet, dapat dinyatakan himpunan dari semua string dengan panjang tertentu dari alphabet tersebut dengan menggunakan notasi eksponensial. 
  •   Kita mendefinisikan k sebagai himpunan dari string dengan panjang k, setiap string tersebut memiliki simbol dalam .
  • Perhatikan bahwa 0  = {e}, untuk alphabet apapun. 
  • Bahwa e adalah string yang memiliki panjang 0.  Jika = {a, b, c} maka

1  = {a,b,c }
2  =  {aa, ab, ac, ba, bb, bc, ca, cb, cc}
3  = {{aaa, aab, aac, aba, abc, aca, acb, aca, bbb, bac, bca, ccc, cba, ccb, cca, abb, baa, bab, bba, acc, cac, caa, cab, cbc, bcb, ccc,ccb}

2.      KONKATENASI
Didefinisikan suatu operasi biner, dinamakan konkatenasi (gabungan), dalam S* , sbb:
  • Jika a1a2a3…an dan b1b2…bm berada dalam S*, maka a1a2a3...an.b1b2…bm = a1a2a3…anb1b2…bm
  • Sehingga, string yang satu dapat digabungkan dengan string lainnya:
  • Jika x , y dan z  merupakan dua buah string, maka x.y,z diartikan sebagai gabungan dari x y dan z, hasilnya, string yang baru terbentuk dengan menulis x diikuti dengan menuliskan y diikuti dengan menuliskan z .
Contoh:
x = aku y= belajar dan z = pusing
Maka
  •   x . y= aku belajar
  •  (x . y ).z)=aku belajar pusing
  •   (y.z).x= belajar pusing aku