Friday, 28 August 2015

Scratch

Memulai Scratch script dengan menggunakan control pada palette
, drag block 'when  clicked'
 ke area scripting


Lalu ambil 'forever'  

dan drag, pasangkan blok 'forever' dibawah 'when clicked'. menjadi seperti ini:


Lalu, pilih 'Motion' pada palette.


dan pilih blok 'move 10 steps'


dan tempelkan didalam 'forever'. 


Ambil 'if on edge, bounce' tempatkan dibawah 'move 10 steps'


Sekarang kita bisa mencoba, klik bendera hijau 


Kucing akan berjalan, ketika menabrak tepi, dia akan berbalik. Klik lingkaran merah sebelah bendera hijau untuk menghentikan. Agar lebih menarik dan lebih baik, sekarang kita tambahkan perintannya.

Masih menggunakan 'Motion' pada palette, drag dan drop 'turn 15 degrees' 


diantara 'forever' dan 'move 10 steps'

Silahkan mencobanya, dengan mengklik bendera hijau. Terlihat perbedaanya, si kucing hanya putar-putar ditempat kelihatanya.

Pada blok 'turn 15 degrees' kita bisa ubah angkanya atau menggunakkan 'operator'  dan pilih 'pick random 1 to 10'. 



masukan dalam angka 15 pada 'turn 15 degrees'.

Dah hasilnya akan seperti ini:

Kita bisa mengganti-ganti angka yang ada didalam 'pick random' dan 'move'. Silahkan berekperimen..

Video lengkapnya:


RPi menggunakan Scratch

Program ini bukanlah program yang seseungguhnya, ini dibuat untuk anak-anak dalam mengenalkan program, menggunakan blok-blok yang warna, yang mewakili operasi. Dengan scratch banyak point programming yang hilang bila dibandingkan program-program lain. Tapi ini baik untuk anak-anak, karena mereka bisa melihat blok-blok yang berwarna-warni, dan mengeksekusi langsung, dan ketika blok-blok tersebut dimodifikasi, effeknya dapat dilihat secara langsung, boleh dibilang real time. 

Walaupun begitu, komunitas scratch cukup banyak dan mereka membagi code, bertanya, dan menjawab seperti forum-forum lain.

Untuk masuk kedalam program Scratch kita masuk ke Menu > Program > Scratch
Tampilannya seperti ini:

Lalu kemudia muncul window baru, Scratch:

Scripting area menampilkan script pada spite (gambar kucing jalan). Bila sekarang kita mengklik spite1, pada scripting akan ada script, tetapi tidak untuk saat ini, pada area scripting akan kosong, karena kita belum mengscript apa-apa pada spite1.

Script dapat dibuat dengan cara dragging blok-blok pada palette ke area scripting. Ada Blok-blok yang dapat diisi dengan blok-blok lainnya. Ada tiga macam blok pada scratch:

  1. Hat Blocks, gambar bendera hijau, bila diklik (when green flag clicked), merupakan awal dari blok dan menunggu diklik. Kita bisa lihat dengan mengklik 'control' pada palette list.
  2. Stackable Blocks, Blok-blok yang mememilik cekungan dibagian atas dan benjolan dibagian bawah yang dapat disambung-sambung seperti puzzle. Blok-blok ini yang akan mengeksekusi dari atas ke bawah. Pada pallete ada di tombol Motion, Looks, Sound, dan Pen. 
  3. Reporter Blocks, Blok-blok yang memiliki ujung lancip dan bulat.



RPi menggunakan Python

Python sangat cocok untuk memulai mengenal bahasa program. Jelas dan mudah untuk dimengerti dan dijalankan. Dengan python kita bisa menulis program dan langsung dijalankan tanpa harus melalui proses compling menjadi bahasa mesin. Dengan python kita tidak perlu memberitahu ke komputer type angka, baris angka atau string. 

Python dapat dijalankan dengan dua cara, yaitu dengan menjalankan baris per baris, atau membuat secara keseluruhan dahulu. Dan Integrated Development Environment (IDE) telah di bundle dengan python dan RPi dengan sebutan IDLE. 

Python 2 dan Python 3 tidak kompatible, bila kita membuat program atau script dengan python 2, tidak bisa dijalankan oleh python 3, begitu juga sebaliknya. Ini disebabkan ada perubahan perintah antara python 2 dan python 3. Keuntungan menggunakan python 2 adalah library yang sudah banyak, sedangkan python 3 baru sebagian dari python 2. 

Python adalah bahasa yang discript dan bukan program. perbedaan antara script dan program adalah, script dibuat dan kemudian diterjemahkan dalam bahasa mesin seraca langsung, script tidak disimpan dalam bentuk bahasa mesin. Sedangkan program, ketika program telah selesai dibuat, maka program tersebut dicomple menjadi bahasa mesin dan disimpan, dan program yang berbahasa mesin itulah yang dijalankan oleh komputer.

Kita bisa menggunakan text editor untuk membuat script python, bisa juga menggunakan IDLE. 

Kita menggunakan IDLE python 3 (karena ini versi terbaru, tidak perlu cemas dengan library yang tidak lengkap)
Pada RPi kita masuk ke menu > Programming > Pyhton 3

setelah itu keluar window baru bernama Python Shell.



Dan selanjutnya seperti scripting python biasa. Untuk belajar Pyhon 3 silahkan klik disini.


Thursday, 27 August 2015

Network

Bila RPi kita tersambung ke internet, maka kita kadang-kadang ingin tahu property pada ethernet kita, seperti ip address. Untuk melihat property network kita, kita bisa gunakan ifconfig.


Kita juga bisa 'ping' untuk memastikan RPi kita terhubung dengan internet, Perintah 'ping' ini sangat biasa untuk mengetahui masalah pada network. 'Ping' digunakan untuk memastikan koneksi dua arah pada internet. Ingat banyak web site yang memblok fasilitas ping ini.

Untuk 'masuk' kedalam komputer lain secara remote dan aman (menggunakan encrypted password) kita bisa menggunakan Secure Shell (ssh) yaitu program putty, bila komputer yang ada di remote menjalankan program server SSH server. Raspbian telah mendukung program ssh server, jadi kita bisa menjalankan RPi kita tanpa monitor, keyboard.

Untuk mentransfer file dengan aman kita bisa menggunakan ssh, yaitu dengan program sftp. Dengan program ini kita bisa mendownload atau upload file melalui network, Karena program tersebut menggunakan SSL (Secure Sockets Layer) yang merupakan alat standar dari linux. Pada windows kita bisa menggunakan WinSCP



Prosesses, Sudo, dan Permission

Setiap kali kita menjalankan RPi akan terjadi banyak proses, dan setiap proses berdiri sendiri-sendiri, dan diperlakukan berbeda-beda pada task atau service. Kita coba melihat semua proses dengan perintah ps:

pi@raspberrypi ~/fol1 $ ps -aux
warning: bad ps syntax, perhaps a bogus '-'?
See http://gitorious.org/procps/procps/blobs/master/Documentation/FAQ
USER  PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.2   2148  1312 ?        Ss   07:28   0:01 init [2]
root         2  0.0  0.0      0     0 ?        S    07:28   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    07:28   0:00 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<   07:28   0:00 [kworker/0:0H]
root         7  0.0  0.0      0     0 ?        S    07:28   0:00 [rcu_preempt]
root         8  0.0  0.0      0     0 ?        S    07:28   0:00 [rcu_sched]
root         9  0.0  0.0      0     0 ?        S    07:28   0:00 [rcu_bh]
root        10  0.0  0.0      0     0 ?        S<   07:28   0:00 [khelper]
root        11  0.0  0.0      0     0 ?        S    07:28   0:00 [kdevtmpfs]
root        12  0.0  0.0      0     0 ?        S<   07:28   0:00 [netns]
root        13  0.0  0.0      0     0 ?        S<   07:28   0:00 [perf]
root        14  0.0  0.0      0     0 ?        S    07:28   0:00 [khungtaskd]
root        15  0.0  0.0      0     0 ?        S<   07:28   0:00 [writeback]
root        16  0.0  0.0      0     0 ?        S<   07:28   0:00 [crypto]
root        17  0.0  0.0      0     0 ?        S<   07:28   0:00 [bioset]
root        18  0.0  0.0      0     0 ?        S<   07:28   0:00 [kblockd]
root        19  0.0  0.0      0     0 ?        S    07:28   0:01 [kworker/0:1]
root        20  0.0  0.0      0     0 ?        S<   07:28   0:00 [rpciod]
root        21  0.0  0.0      0     0 ?        S    07:28   0:00 [kswapd0]
root        22  0.0  0.0      0     0 ?        S    07:28   0:00 [fsnotify_mark]
root        23  0.0  0.0      0     0 ?        S<   07:28   0:00 [nfsiod]
root        29  0.0  0.0      0     0 ?        S<   07:28   0:00 [kthrotld]
root        30  0.0  0.0      0     0 ?        S<   07:28   0:00 [VCHIQ-0]
root        31  0.0  0.0      0     0 ?        S<   07:28   0:00 [VCHIQr-0]
root        32  0.0  0.0      0     0 ?        S<   07:28   0:00 [VCHIQs-0]
root        33  0.0  0.0      0     0 ?        S<   07:28   0:00 [iscsi_eh]
root        34  0.0  0.0      0     0 ?        S<   07:28   0:00 [dwc_otg]
root        35  0.0  0.0      0     0 ?        S<   07:28   0:00 [DWC Notificati
root        36  0.0  0.0      0     0 ?        S    07:28   0:00 [kworker/u2:1]
root        37  0.0  0.0      0     0 ?        S    07:28   0:00 [VCHIQka-0]
root        38  0.0  0.0      0     0 ?        S    07:28   0:00 [mmcqd/0]
root        39  0.0  0.0      0     0 ?        S<   07:28   0:00 [SMIO]
root        40  0.0  0.0      0     0 ?        S<   07:28   0:00 [deferwq]
root        41  0.0  0.0      0     0 ?        S    07:28   0:00 [kworker/u2:2]
root        42  0.0  0.0      0     0 ?        S    07:28   0:00 [kworker/0:2]
root        43  0.0  0.0      0     0 ?        S    07:28   0:00 [jbd2/mmcblk0p2
root        44  0.0  0.0      0     0 ?        S<   07:28   0:00 [ext4-rsv-conve
root       159  0.0  0.4   2888  2164 ?        Ss   07:28   0:00 udevd --daemon
root       305  0.0  0.4   2884  1940 ?        S    07:28   0:00 udevd --daemon
root       306  0.0  0.4   2884  1928 ?        S    07:28   0:00 udevd --daemon
root      1559  0.0  0.2   1752  1112 ?        S    07:29   0:00 /usr/sbin/ifplu
root      1562  0.0  0.2   1752  1184 ?        S    07:29   0:02 /usr/sbin/ifplu
root      1988  0.0  0.0      0     0 ?        S<   07:29   0:00 [cfg80211]
root      2061  0.0  0.5  27976  2520 ?        Sl   07:29   0:00 /usr/sbin/rsysl
root      2120  0.0  0.3   3800  1740 ?        Ss   07:29   0:00 /usr/sbin/cron
102       2128  0.0  0.3   3180  1640 ?        Ss   07:29   0:00 /usr/bin/dbus-d
avahi     2165  0.0  0.5   3484  2636 ?        S    07:29   0:00 avahi-daemon: r
avahi     2166  0.0  0.3   3384  1496 ?        S    07:29   0:00 avahi-daemon: c
ntp       2214  0.0  0.8   5600  3924 ?        Ss   07:29   0:00 /usr/sbin/ntpd
root      2251  0.0  0.6   6220  2928 ?        Ss   07:29   0:00 /usr/sbin/sshd
nobody    2279  0.0  0.3   2020  1400 ?        Ss   07:29   0:00 /usr/sbin/thd -
root      2331  0.0  0.3   2100  1436 ?        Ss   07:29   0:00 /sbin/dhcpcd
root      2341  0.0  0.3   3748  1596 tty1     Ss+  07:29   0:00 /sbin/getty --n
root      2342  0.0  0.3   3748  1640 tty2     Ss+  07:29   0:00 /sbin/getty 384
root      2343  0.0  0.3   3748  1640 tty3     Ss+  07:29   0:00 /sbin/getty 384
root      2344  0.0  0.3   3748  1744 tty4     Ss+  07:29   0:00 /sbin/getty 384
root      2345  0.0  0.3   3748  1640 tty5     Ss+  07:29   0:00 /sbin/getty 384
root      2346  0.0  0.3   3748  1640 tty6     Ss+  07:29   0:00 /sbin/getty 384
root      2347  0.0  0.3   2068  1584 ?        Ss+  07:29   0:00 /sbin/getty -L
root      2348  0.0  1.0   9344  4540 ?        Ss   07:30   0:00 sshd: pi [priv]
pi        2352  0.0  0.8   9344  3588 ?        S    07:30   0:00 sshd: pi@pts/0
pi        2353  0.0  1.0   6240  4540 pts/0    Ss   07:30   0:01 -bash
pi        2381  0.0  0.4   4460  2108 pts/0    R+   08:11   0:00 ps -aux
pi@raspberrypi ~/fol1 $

Atau dengan perintah ps -aux|less (gunakan tombol 'q' untuk keluar).

Dan kadang-kadang kita ingin mematikan suatu proses dari suatu program yang tidak ada respon, kita gunakan perintah 'kill' + PID

pi@raspberrypi ~ $ kill 17

Dengan perintah 'kill 17' maka proses bioset yang ber'id' PID 17 akan diberhentikan (ini hanya contoh, jangan lakukan bila tidak tahu apa yang dikerjakan, efek dari 'kill' (bila terjadi sesuatu yang tidak diinginkan) bisa diatasi dengan mem-boot ulang RPi). Perintah 'kill' hanya memberhentikan suatu proses saja, tidak menghapus atau mengubah dari setting.

Sudo adalah perintah yang mengizinkan siapa saja menjadi super user, ini dikarenakan linux merupakan operating system yang dapat digunakan oleh banyak orang, dengan aturan setiap orang dapat membuat, mengubah dan menghapus file-file mereka sendiri di tempat masing-masing di filesystem.  Sedangkan user 'root' adalah super user yang dapat setiap file di filesystem. Jadi bila kita sedang latihan jangan gunakan user root.

Kita pengguna RPi, menggunakan user 'pi', jadi kita tidak akan banyak merusakan data dengan ataupun tidak sengaja. Tetapi tetap 'sudo' adalah perintah yang relatif berbahaya. Bila kita melakukan sesuatu yang membuat RPi tidak bekerja seperti seharusnya, kita bisa membuatnya lagi dengan mengkopi SD card imagenya.

Sudo diperlukan untuk installing software, interaktif dengan hardware secara langsung, atau mengubah konfigurasi system, dan lain-lain yang sifatnya system administratif.

Permission pada sebuah file bisa dipisahkan dengan kategori pengguna dan  group. Permission pada file dapat kita lihat dengan perintah ls -l.



Kita ambil contoh direktori yang pertama adalah 'Desktop'

Untuk mengubah permission kita bisa mengunakan perintah 'chmod', untuk parameternya:


u
user
g
group
o
Yang lain tidak masuk group
a
semua
r
Read (baca)
w
Write (tulis)
x
Execute (menjalankan)
+
Penambahan permission
-
Pengurangan permission

Sebagai contoh:

  1. pi@raspberrypi ~ $ touch filepermission.txt
  2. pi@raspberrypi ~ $ ls -l
  3. total 48
  4. drwxr-xr-x 2 pi pi 4096 May  7 06:32 Desktop
  5. drwxr-xr-x 2 pi pi 4096 Aug 26 15:38 dir1
  6. -rw-r--r-- 1 pi pi  167 Aug 26 15:39 dir1.tar.gz
  7. drwxr-xr-x 2 pi pi 4096 Jul  3 21:16 Docs
  8. drwxr-xr-x 3 pi pi 4096 Aug 23 10:16 Documents
  9. drwx------ 2 pi pi 4096 May  7 06:56 Downloads
  10. -rw-r--r-- 1 pi pi    0 Aug 27 09:40 filepermission.txt
  11. drwxr-xr-x 2 pi pi 4096 Aug 27 07:32 fol1
  12. -rw-r--r-- 1 pi pi   88 Aug 26 15:53 hello.txt
  13. -rw-r--r-- 1 pi pi   88 Aug 26 15:54 hi.txt
  14. drwxrwxr-x 2 pi pi 4096 Jan 27  2015 python_games
  15. drwxr-xr-x 2 pi pi 4096 Aug 23 10:16 Scratch
  16. -rwxr-xr-x 1 pi pi   61 Aug 23 10:38 vnc.sh
  17. pi@raspberrypi ~ $


Diatas kita menbuat sebuah file txt kosong (baris no 10), dan kita lihat file yang kita buat memiliki permission -rw-r--r--, artinya untuk user memiliki permission read dan write, untuk group hanya read, dan untuk semua orang hanya read. Dan sekarang kita akan ubah group permission juga dapat write.
  1. pi@raspberrypi ~ $ chmod g+w filepermission.txt 
  2. pi@raspberrypi ~ $ ls -l 
  3. total 48 
  4. drwxr-xr-x 2 pi pi 4096 May 7 06:32 Desktop 
  5. drwxr-xr-x 2 pi pi 4096 Aug 26 15:38 dir1 
  6. -rw-r--r-- 1 pi pi 167 Aug 26 15:39 dir1.tar.gz 
  7. drwxr-xr-x 2 pi pi 4096 Jul 3 21:16 Docs 
  8. drwxr-xr-x 3 pi pi 4096 Aug 23 10:16 Documents 
  9. drwx------ 2 pi pi 4096 May 7 06:56 Downloads 
  10. -rw-rw-r-- 1 pi pi 0 Aug 27 09:40 filepermission.txt 
  11. drwxr-xr-x 2 pi pi 4096 Aug 27 07:32 fol1 
  12. -rw-r--r-- 1 pi pi 88 Aug 26 15:53 hello.txt 
  13. -rw-r--r-- 1 pi pi 88 Aug 26 15:54 hi.txt 
  14. drwxrwxr-x 2 pi pi 4096 Jan 27 2015 python_games 
  15. drwxr-xr-x 2 pi pi 4096 Aug 23 10:16 Scratch 
  16. -rwxr-xr-x 1 pi pi 61 Aug 23 10:38 vnc.sh 
  17. pi@raspberrypi ~ $
Pada perintan 'chmod g+w filepermission.txt', 
'g' adalah group
'+' adalah penambahan permission
'w' adalah write
Sekarang group untuk write filepermission mendapatkan izin.

  1. pi@raspberrypi ~ $ chmod g-w filepermission.txt 
  2. pi@raspberrypi ~ $ chmod u-r filepermission.txt 
  3. pi@raspberrypi ~ $ chmod g+w,o+w filepermission.txt 
  4. pi@raspberrypi ~ $ ls -l 
  5. total 48 
  6. drwxr-xr-x 2 pi pi 4096 May 7 06:32 Desktop 
  7. drwxr-xr-x 2 pi pi 4096 Aug 26 15:38 dir1 
  8. -rw-r--r-- 1 pi pi 167 Aug 26 15:39 dir1.tar.gz 
  9. drwxr-xr-x 2 pi pi 4096 Jul 3 21:16 Docs 
  10. drwxr-xr-x 3 pi pi 4096 Aug 23 10:16 Documents 
  11. drwx------ 2 pi pi 4096 May 7 06:56 Downloads 
  12. --w-rw-rw- 1 pi pi 0 Aug 27 09:40 filepermission.txt 
  13. drwxr-xr-x 2 pi pi 4096 Aug 27 07:32 fol1 
  14. -rw-r--r-- 1 pi pi 88 Aug 26 15:53 hello.txt 
  15. -rw-r--r-- 1 pi pi 88 Aug 26 15:54 hi.txt 
  16. drwxrwxr-x 2 pi pi 4096 Jan 27 2015 python_games 
  17. drwxr-xr-x 2 pi pi 4096 Aug 23 10:16 Scratch 
  18. -rwxr-xr-x 1 pi pi 61 Aug 23 10:38 vnc.sh 
  19. pi@raspberrypi ~ $ chmod u+r,g+w,o+w filepermission.txt 
  20. pi@raspberrypi ~ $ ls -l 
  21. total 48 
  22. drwxr-xr-x 2 pi pi 4096 May 7 06:32 Desktop 
  23. drwxr-xr-x 2 pi pi 4096 Aug 26 15:38 dir1 
  24. -rw-r--r-- 1 pi pi 167 Aug 26 15:39 dir1.tar.gz 
  25. drwxr-xr-x 2 pi pi 4096 Jul 3 21:16 Docs 
  26. drwxr-xr-x 3 pi pi 4096 Aug 23 10:16 Documents 
  27. drwx------ 2 pi pi 4096 May 7 06:56 Downloads 
  28. -rw-rw-rw- 1 pi pi 0 Aug 27 09:40 filepermission.txt 
  29. drwxr-xr-x 2 pi pi 4096 Aug 27 07:32 fol1 
  30. -rw-r--r-- 1 pi pi 88 Aug 26 15:53 hello.txt 
  31. -rw-r--r-- 1 pi pi 88 Aug 26 15:54 hi.txt 
  32. drwxrwxr-x 2 pi pi 4096 Jan 27 2015 python_games 
  33. drwxr-xr-x 2 pi pi 4096 Aug 23 10:16 Scratch 
  34. -rwxr-xr-x 1 pi pi 61 Aug 23 10:38 vnc.sh 
  35. pi@raspberrypi ~ $