Sabtu, 28 November 2015

Tutorial FUSE

Apa itu FUSE?
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.

Langkah-langkah instalasi 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

Langkah-langkah membuat FUSE :
1) Buka terminal pada Linux


2) Buat file fuse.c dengan command gedit fuse.c


Lalu akan muncul


3) Masukkan kode
#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/hamka/Downloads";

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);
}

Ubah static const char *dirpath = "/home/hamka/Downloads"; sesuai dengan folder yang akan difusekan

4) Compile program dengan command gcc -Wall MusicPlayer.c `pkg-config fuse --cflags --libs` -o fuse


Buat directory baru sebagai tujuan fuse dengan command mkdir /tmp/fuse


Lalu run dengan command ./fuse /tmp/fuse


5) FUSE telah berjalan

Buka directory /tmp/fuse yang ada di Computer


Isinya akan sama dengan folder Downloads



----  SELAMAT MENCOBA  ----









Sabtu, 07 November 2015

Tutorial 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.

Sebagai contoh kita akan membuat program pemutar musik yang menggunakan thread.

Langkah-langkah membuat Music Player berbasis Thread :
1) Buka terminal pada Linux



2) Buat file MusicPlayer.c dengan command gedit MusicPlayer.c




Lalu akan muncul


3) Masukkan kode
#include <stdio.h>
#include <string.h>
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>

pthread_t tid[7];
int n;
char lagu[10];
char ads[100];

void* playandcount(void *arg)
{
unsigned long i=0;
pthread_t id=pthread_self();
int iter;
if(pthread_equal(id,tid[1]))
       {
system("clear");
                printf("--Help\n");
printf("--List\n");
printf("--Play\n");
printf("--Pause\n");
printf("--Continue\n");
printf("--Stop\n");
                printf("--Exit\n");
}
else if(pthread_equal(id,tid[2]))
       {
system("clear");
                chdir ("/home/hamka/Music");
system("ls | grep .mp3");
}
else if(pthread_equal(id,tid[3]))
       {
        system("pkill mpg123");
        system("clear");
        snprintf(ads, sizeof(ads), "mpg123 /home/hamka/Music/%s",lagu);
        system(ads);
}
else if(pthread_equal(id, tid[4]))
       {
system("clear");
sleep(n);
system("pkill -STOP mpg123");
}
else if(pthread_equal(id, tid[5]))
       {
system("clear");
sleep(n);
system("pkill -CONT mpg123");
}
else if(pthread_equal(id,tid[6]))
       {
system("clear");
sleep(n);
system("pkill mpg123");
}
return NULL;
}

int main(void)
{
system("clear");
                int flag=4;
while(flag!=0)
{
char comm[10];
int i=0;
int err=0;
scanf("%s",comm);
if (err!=0) printf("\ncan't create thread : [%s]", strerror(err));
else if (strcmp(comm,"help")==0) err=pthread_create(&(tid[1]), NULL, &playandcount, NULL);
            else if (strcmp(comm,"list")==0) err=pthread_create(&(tid[2]), NULL, &playandcount, NULL);
            else if (strcmp(comm,"play")==0) 
            {
                scanf("%s",lagu);
                err=pthread_create(&(tid[3]), NULL, &playandcount, NULL);
            }
            else if (strcmp(comm,"pause")==0) 
            {
                scanf("%d",&n);
                err=pthread_create(&(tid[4]), NULL, &playandcount, NULL);
            }
            else if (strcmp(comm,"continue")==0)
            {
                scanf("%d",&n);
                err=pthread_create(&(tid[5]), NULL, &playandcount, NULL);
            }
            else if (strcmp(comm,"stop")==0)
            {
                scanf("%d",&n);
                err=pthread_create(&(tid[6]), NULL, &playandcount, NULL);
            }
            else if (strcmp(comm,"exit")==0) flag=0;
            else printf("Wrong Input\n");
}
return 0;
}

Pada menu terdapat command-command berikut :
- Help = Menampilkan command-command yang bisa dilakukan User
- List = Menampilkan list lagu yang terdapat di folder
- Play = Memutar lagu yang diinputkan user
- Pause = Menghentikan lagu setelah "t" detik
- Continue = Melanjutkan lagu yang telah dipause setelah "t" detik
- Stop = Menghentikan lagu setelah "t" detik dan tidak bisa dilanjutkan lagi
- Exit = Keluar dari program

Ket:
- List = Untuk mengganti folder tujuan ganti command "chdir ("/home/hamka/Music");"
- Play = Untuk memutar lagu dengan command play "Judul lagu" (judul lagu harus persis dengan nama filenya
- Pause = Untuk menghentikan lagu dengan command pause "t" (dalam t detik lagu akan berhenti). Hal ini bisa terjadi dengan command : system("pkill -STOP mpg123");
- Continue = Untuk melanjutkan lagu dengan command continue "t" (dalam t detik lagu akan berlanjut). Hal ini bisa terjadi dengan command : system("pkill -CONT mpg123");
- Stop = Untuk menghentikan lagu dan tidak bisa dilanjutkan lagi dengan command stop "t" (dalam t detik lagu akan berhenti). Hal ini bisa terjadi dengan command : system("pkill mpg123");

4) Install mpg123 dengan command apt-get install mpg123


5) Compile program dengan command gcc -pthread MusicPlayer.c -o MusicPlayer


Lalu run dengan command ./MusicPlayer


6) Music Player telah berjalan


Ketik help untuk menampilkan menu



Ketik list untuk menampilkan lagu



Ketik play "Judullagu.mp3" untuk menampilkan menu


Lalu lagu akan berjalan


Ketik pause "t" detik untuk menghentikan lagu


Ketik continue "t" detik untuk melanjutkan lagu


Ketik stop "t" detik untuk menghentikan lagu


Lagu akan berhenti. Ketik exit untuk keluar program



----  SELAMAT MENCOBA  ----











Sabtu, 17 Oktober 2015

Tutorial Daemon

Apa itu Daemon?
Daemon adalah suatu proses yang berjalan sendiri tanpa perintah user. Daemon berjalan di komputer kita tanpa sepengetahuan kita. Daemon aktif pada waktu tertentu atau pada kondisi tertentu yang membuat daemon tersebut aktif.

Langkah-langkah membuat Daemon :
1) Buka terminal pada linux


2) Buat file daemon.c dengan command gedit daemon.c


Lalu akan muncul 


3) Masukkan kode
Berikut kode untuk membuat daemon dalam bahasa C :
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
#include <syslog.h>
#include <string.h>

int main(void) 
{             
        pid_t pid, sid;       
        /* melakukan forking */
        pid = fork();
        if (pid < 0) {
                exit(EXIT_FAILURE);
        }
        if (pid > 0) {
                exit(EXIT_SUCCESS);
        }
        umask(0);
              
        /* membuatkan Session ID baru untuk proses anak */
        sid = setsid();
        if (sid < 0) {
                /* Log the failure */
                exit(EXIT_FAILURE);
        }
        
        /* ubah direktorinya ke root*/
        if ((chdir("/")) < 0) {
                /* Log the failure */
                exit(EXIT_FAILURE);
        }
        
        /* menutup standard I/O deskriptor */
        close(STDIN_FILENO);
        close(STDOUT_FILENO);
        close(STDERR_FILENO);
     
        while (1) {
           /* masukkan kodingan program kalian di sini
              supaya dijalankan oleh proses Daemon  */
           
           sleep(30); 
           /* buat program kalian berhenti sejenak 
              sebelum melakukan looping selanjutnya */
        }
   exit(EXIT_SUCCESS);
}

Masukkan kode diatas ke dalam daemon.c


Ubah kode dalam 
" while (1) {
           /* masukkan kodingan program kalian di sini
              supaya dijalankan oleh proses Daemon  */
           
           sleep(30); 
           /* buat program kalian berhenti sejenak 
              sebelum melakukan looping selanjutnya */
        } "
sesuai keinginan anda misal saya ingin terminal menampilkan kata-kata setiap 15 detik maka kode diatas diubah menjadi :
" while (1) {
           printf("Tulisan ini muncul sendiri\n");
           sleep(30); 
        } "

Sehingga hasilnya seperti ini :


4) Jalankan daemon.c
Cara menjalankan file .c pada linux adalah dengan command gcc "namafile.c" -o "output"


Lalu run output tersebut dengan command ./"output"


5) Daemon telah berjalan


Kata-kata tersebut otomatis muncul setiap 15 detik



6) Mematikan Daemon
Daemon berjalan sendiri sehingga jika tidak segera dimatikan lama kelamaan akan mengganggu user (seperti virus). Untuk mematikan daemon pertama kita harus mengetahui Process idnya dengan command ps aux


Matikan daemon dengan command kill "process id"


----  SELAMAT MENCOBA  ----


Sabtu, 26 September 2015

Tutorial Bash-Scripting Bilangan Prima


Dalam matematika kita mengenal bilangan prima, yaitu bilangan yang hanya habis dibagi bilangan 1 atau bilangan itu sendiri.
Contoh bilangan prima yaitu 2,3,5,7,....,dst.
Jika angkanya masih kecil-kecil seperti itu kita masih bisa menentukan apakah suatu bilangan itu termasuk bilangan prima atau bukan. Namun jika bilangannya sudah ratusan atau bahkan ribuan, kita akan kesulitan menentukan apakah bilangan tersebut bilangan prima atau bukan.

Oleh karena itu disini kita akan membuat program yang akan memudahkan kita menyelesaikan permasalahan diatas. Tidak perlu lama-lama lagi, berikut algoritma untuk menyelesaikan masalah bilangan prima diatas :


Algoritma diatas menggunakan Bahasa C. Nah bagaimana jika kita ingin membuat program di linux ?
Dalam linux membuat program sering juga disebut bash-scripting. Langkah-langkahnya sebagai berikut :
1) Jalankan Terminal (sama seperti command prompt di windows)


2) Buat file baru


Masukkan command nano namafile.sh. Command "nano" akan memerintahkan komputer membuat file dengan nama tersebut jika file tersebut belum ada, jika file sudah ada komputer akan membuka file tersebut sehingga kita bisa mengeditnya kembali. Nama file sesuai dengan keinginan kita, sedangkan ekstensi .sh adalah untuk bash-scripting


3) Masukkan algoritma


Jika sudah, simpan file tersebut lalu kembali ke terminal

4) Jalankan program tersebut


Menjalankan program (run) dengan command ./namafile.sh


Ups..!! Sebelumnya kita harus mengubah izin dari file tersebut supaya kita bisa menjalankannya


Yaitu dengan command chmod 777 namafile.sh


Jalankan kembali program tersebut, lalu masukkan angka yang diinginkan dan program akan menunjukkan bilangan-bilangan prima diantara 2 dan bilangan yang kita inputkan



----  Selamat Mencoba  ----








Biografi Kaka

Kaka portrait, February 2009.jpgRicardo Izecson dos Santos Leite (lahir di GamaFDBrasil22 April 1982; umur 33 tahun), lebih dikenal dengan namaKaká atau Ricardo Kakà,[3][4][5] adalah seorang pemain sepak bola asal Brasil yang kini membela klub Orlando City SC.[6][7] Kaká memulai karier sepakbolanya pada usia delapan, ketika ia mulai bermain untuk sebuah klub lokal. Pada saat itu, ia juga bermain tenis,[8] dan itu tidak sampai ia pindah ke São Paulo FC dan menandatangani kontrak profesional pertamanya dengan klub pada usia 15 ia memilih untuk fokus pada sepakbola.
Image result for ricardo kaka
Pada tahun 2003 ia bergabung dengan Milan dengan biaya sebesar € 8,5 juta. Sementara di Milan, Kaká memenangkanBallon d'Or dan FIFA World Player of the Year penghargaan pada tahun 2007. Setelah sukses dengan Milan, Kaká bergabung dengan Real Madrid dengan biaya transfer € 65.000.000, rekor kedua dari Zinedine Zidane, € 75 juta. Kemudian ditransfer Real Madrid Cristiano Ronaldo dengan bayaran € 96.000.000, membuat rekor biaya transfer baru, membuat biaya Kaká tertinggi ketiga yang pernah direkrut. Selain kontribusi di lapangan, Kaká dikenal untuk pekerjaan kemanusiaannya. Pada tahun 2004, pada saat pengangkatannya, ia menjadi duta besar termuda dari Program Pangan Dunia PBB.[9] Kaká adalah atlet pertama yang mengumpulkan 10 juta pengikut di Twitter.[10]
Kaká menikah dengan Caroline Celico pada 23 Desember 2005 di sebuah gereja di São Paulo, Brasil.
Image result for ricardo kaka and his wife