Senin, 30 November 2015

FILESYSTEM IN USERSPACE (FUSE)

Ya, dalam postingan kali ini, kita akan membahas FUSE. Apa itu FUSE? Sebelum membahas FUSE kita harus memahami apa itu FIlesystem.

File System/sistem berkas adalah struktur logika yang digunakan untuk mengendalikan akses terhadap data yang ada pada harddisk.
Dalam File System, terdapat berbagai jenis-jenisnya dan penggunaan algoritma yang berbeda. Semakin baru jenis dari sebuah File System, maka semakin bagus pula kualitas dari File System tersebut.

Misalnya FAT (File Allocation Table). Jenis partisi terdahulu pada Windows yang kemudian diperbaharui dengan adanya FAT-16, FAT -32, dan yang terakhir adalah jenis NTFS (New Technology File System).
Pada Linux, terdapat jenis File System EXT 2 (Extended 2), Swap (Virtual Memory), dan lain-lain. File System terbaru pada Linux adalah EXT 4 yang tentunya lebih baik dari versi-versi EXT yang lainnya.
Filesystem in Userspace (FUSE) merupakan mekanisme sistem operasi untuk sistem operasi Unix-like yang memungkinkan pengguna tidak ber-hak istimewa menciptakan file system mereka sendiri tanpa mengubah kode kernel. Hal ini dicapai dengan menjalankan kode file system di userspace, sedangkan modul FUSE hanya menyediakan "jembatan" untuk antarmuka kernel yang sebenarnya.


Module kernel FUSE dan FUSE library berhubungan melalui sebuah special file descriptor yang didapatkan dengan membuka /dev/fuse. FUSE kernal module meneruskan request ke aplikasi fuse anda. aplikasi anda memerintahkan fuse cara menjawab request. FUSE kernal module dan FUSE library berkomunikasi lewat file deskriptor spesial yang diperoleh dengan membuka /dev/fuse. file ini dapat terbuka berkali-kali dan file deskriptor yang diperoleh diteruskan ke mount syscall, untuk menyesuaikan deskriptor dengan filesystem mount.


Installasi FUSE: 
1. Download FUSE dari http://fuse.sourceforge.net/ pada bagian Download stable release
2. Extract file tar.gz dan masuk ke direktori FUSE. (tar –xvzf fuse-2.9.4.tar.gz)
3. Lakukan installasi FUSE dengan cara : 
       a. Gunakan hak akses super user (sudo su)
       b. Ketikkan perintah ./configure
       c. Ketikkan perintah make
       d. Ketikkan perintah make install
4. FUSE siap digunakan

Ketikkan code berikut ini

#include <fuse.h>#include <stdio.h>#include <string.h>#include <unistd.h>#include <fcntl.h>#include <dirent.h>#include <errno.h>#include <sys/statfs.h>
static const char *dirpath = "/home/zavox/Documents"; static int xmp_getattr(const char *path, struct stat *stbuf){ int res; char fpath[1000]; sprintf(fpath,"%s%s",dirpath,path); res = lstat(fpath, stbuf); if(res == -1) { return -errno; } return 0;}
static int xmp_getdir(const char *path, fuse_dirh_t h, fuse_dirfil_t filler){ char fpath[1000]; if(strcmp(path,"/") == 0) { path=dirpath; sprintf(fpath,"%s",path); } else sprintf(fpath, "%s%s",dirpath,path); int res = 0; DIR *dp; struct dirent *de; dp = opendir(fpath); if(dp==NULL) { return -errno; } while((de = readdir(dp))!=NULL) { res = filler(h, de->d_name, de->d_type); if(res!=0) break; } closedir(dp); return res;}
static struct fuse_operations xmp_oper ={ .getattr = xmp_getattr, //.readlink = xmp_readlink, .getdir = xmp_getdir, //.mknod = xmp_mknod, //.mkdir = xmp_mkdir, //.symlink = xmp_symlink, //.unlink = xmp_unlink, //.rmdir = xmp_rmdir, //.rename = xmp_rename, //.link = xmp_link, //.chmod = xmp_chmod, //.chown = xmp_chown, //.truncate = xmp_truncate, //.utime = xmp_utime, //.open = xmp_open, //.read = xmp_read, //.write = xmp_write, //.release = xmp_release, //.fsync = xmp_fsync, //.readdir = hello_readdir};
int main(int argc, char *argv[]){ return fuse_main(argc, argv, &xmp_oper);}

Code diatas merupakan conto template, jadi jika ingin mencoba FUSE, hanya perlu mengganti dirpath saja, untuk menjalankan program ketik gcc -Wall [nama file].c `pkg-config fuse –cflags –libs` -o [nama file]

Kemudian ketikkan mkdir [nama folder] nama folder bebas

Kemudian ketikkan ./[nama file] /tmp/fuse

Jika berhasil, dan anda menggunakan Ubuntu, maka pada folder device akan keluar [nama folder] dibawah drive HDD yang berisi filesystem dengan direktori "Documents"

Sabtu, 07 November 2015

TUTORIAL MEMAINKAN LAGU MENGGUNAKAN TERMINAL

Dalam Entri ke-3 ini saya akan menjelaskan tentang thread. Apa itu thread? Thread adalah sebuah pengontrol aliran program pelaksanaan program dengan menggunakan kendali tunggal. Operasi yang paling Modern saat ini adalah sistem yang banyak sekali menyediakan berbagai cara, dan memungkinkan suatu proses terkendali dengan baik.

Jika mendengar kata thread, biasanya kita juga mendengar istilah multithreading. Sesuai dengan istilahnya, multi artinya banyak sehingga multithread dapat diartikan sebagai thread yang banyak.  Suatu proses yang multithreaded mengandung beberapa perbedaan alur kontrol dengan ruang alamat yang sama. Keuntungan dari multithreaded meliputi peningkatan respon dari user, pembagian sumber daya proses, ekonomis, dan kemampuan untuk mengambil keuntungan dari arsitektur multiprosesor.

Ya, karena udah panjang lebar diatas, langsung aja kita buat codenya, program yang dibutuhkan untuk tutorial kali ini adalah vlc, yaitu program yang berfungsi untuk memutar media, baik itu berupa audio maupun video, dan program gedit, berikut adalah langkah-langkahnya:
1. Ketik gedit playing.c pada terminal, jika belum memiliki program tersebut ketik "sudo apt-get install gedit"

2. Ketikkan library dan fungsi PlayMusic seperti dibawah ini


 3. Ketikkan main seperti dibawah ini

4. Save dan close, kemudian kembali ke terminal
5. Jalankan program dengan cara mengetik "gcc -pthread playing.c -o playing" pada terminal
6. Eksekusi program dengan mengetik "./playing"

Keterangan
-Pada saat pertama kali program berjalan, maka akan ada tulisan "Ketik '0' untuk mengeluarkan bantuan"
-Dan saat kita mengetik "0" maka akan keluar bantuan seperti dalam fungsi PlayMusic
-Untuk melihat list lagu ketikkan 1, untuk mengambil list lagu, saya menggunakan "grep .mp3" yang berfungsi untuk mengambil nama file yang berformat mp3, sehingga untuk file audio yang tidak menggunakan format mp3 tidak akan bisa diputar, dan lagu berada di home
-Untuk memutar lagu ketikkan "2 (judul lagu).mp3"(judul lagu harus yang ada di list nomor 1)
-Untuk pause lagu ketikkan "3 (waktu)"(waktu dalam satuan detik), misalnya saya mengetikkan "3 5" maka lagu akan di pause setelah 5 detik
-Untuk continue lagu ketikkan "4 (waktu)"(waktu dalam satuan detik)
-Untuk stop lagu ketikkan "5 (waktu)"(waktu dalam satuan detik)

Sekian tutorial singkat saya tentang memainkan lagu menggunakan terminal