Assalamualaikum wr.wb.
10 K line codes adalah sebuah teori agar seorang programmer menguasai syntax dari sebuah bahasa pemrograman. Oleh karena itu sayapun akan mencoba hal yang sedikit agak rumit ini dan pemrograman yang saya pelajari adalah pemrograman web.
Code awal yang dipelajarin adalah code-code simple dan standard seperti cetak dan mengkoneksikan dengan database. Langsung saja ke contoho-contohnya.
1. Code untuk koneksi dengan SQL
<?php
$servername = "localhost";
$conn = mysqli_connect($servername);
if (!$conn) {
die("Gagal : " . mysqli_connect_error());
}
echo "BERHASIL";
?>
2. Code untuk mencetak, print dan beberapa operasi matematis dasar
<html>
<head>
<title> Variabel</title>
</head>
<body>
<?php
$nilai1 = 10;
$nilai2 = 3;
$nilai3 = 2 * $nilai1 + 8 * $nilai2;
echo "nilai = ", $nilai3;
echo "<br>";
$jumlah = $nilai1 + $nilai2;
echo "hasil dari $nilai1 + $nilai2 adalah : $jumlah";
echo "<br><br>";
echo "\"nama : Deni\"<br>";
echo "no MHS 5114100022"
?>
</body>
</html>
3. Code untuk menyimpan dan mencetak dari sebuah array
<html>
<head>
<title> Array</title>
</head>
<body>
<?php
$nama[]="Issabella";
$nama[]="Affan";
$nama[]="Desty";
echo $nama[2].$nama[1].$nama[0];
echo "<br>";
$kampus[1]="ITS";
$kampus[2]="Surabaya";
echo "Kampusku adalah $kampus[1] $kampus[2]";
?>
</body>
</html>
Ya itulah beberapa code awal dari saya, semogaa kedepannya saya bisa berlatih ke code yang lebih banyak dan lebih kompleks lagi. Sekian, Wassalamualaikum wr.wb.
Kamis, 10 Maret 2016
Sabtu, 28 November 2015
FUSE (File System in Userspace)
Assalamualaikum wr. wb.
Kembali lagi dengan saya teman-teman, kembali di coretan-coretan yang semoga agak penting seperti biasanya :D . Setelah berminggu-minggu berdiam akhirnya kembali lagi di Blog Ku tercinta LOL. Bahasan yang saya bawa kali ini cukup berat (setidaknya menurut saya), yaitu tentang FUSE. Tapi bukan fuse yang ini yaa..
Yap, diatas itu adalah fuse, tapi fuse yang saya bahas yaitu File System in Userspace. File system atau sistem berkas sendiri adalah sebuah struktur logika yang digunakan untuk mengendalikan semua akses terhadap data-data yang ada di dalam harddisk. Sementara 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.
Template code fuse bisa kita dapatkan di http://fuse.sourceforge.net/doxygen/fusexmp_8c.htm.Dan cara install fuse tadi adalah sebagai berikut :
#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>
#include <stdlib.h>
static const char *dirpath = "/home/deni/Documents";
char simpen[1000];
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_readlink(const char *path, char *buf, size_t size)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s",dirpath,path);
res = readlink(fpath, buf, size - 1);
if(res == -1)
return -errno;
buf[res] = '\0';
return 0;
}
static int xmp_getdir(const char *path, fuse_dirh_t h, fuse_dirfil_t filler)
{
DIR *dp;
struct dirent *de;
int res = 0;
char fpath[1000];
if(strcmp(path,"/") == 0)
{
path=dirpath;
sprintf(fpath,"%s",path);
}
else sprintf(fpath, "%s%s",dirpath,path);
dp = opendir(path);
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 int xmp_mkdir(const char *path, mode_t mode)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s",dirpath,path);
res = mkdir(fpath, mode);
if(res == -1)
return -errno;
return 0;
}
static int xmp_unlink(const char *path)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s",dirpath,path);
res = unlink(fpath);
if(res == -1)
return -errno;
return 0;
}
static int xmp_rmdir(const char *path)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s",dirpath,path);
res = rmdir(fpath);
if(res == -1)
return -errno;
return 0;
}
static int xmp_symlink(const char *from, const char *to)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s",dirpath,from);
char fpath2[1000];
sprintf(fpath2,"%s%s",dirpath,to);
res = symlink(from, to);
if(res == -1)
return -errno;
return 0;
}
static int xmp_rename(const char *from, const char *to)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s",dirpath,from);
char fpath2[1000];
sprintf(fpath2,"%s%s",dirpath,to);
res = rename(fpath, fpath2);
if(res == -1)
return -errno;
return 0;
}
static int xmp_mknod(const char *path, mode_t mode, dev_t rdev)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s",dirpath,path);
res = mknod(fpath,mode,rdev);
if(res == -1)
return -errno;
return 0;
}
static int xmp_link(const char *from, const char *to)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s",dirpath,from);
char fpath2[1000];
sprintf(fpath2,"%s%s",dirpath,to);
res = link(fpath, fpath2);
if(res == -1)
return -errno;
return 0;
}
static int xmp_chmod(const char *path, mode_t mode)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s",dirpath,path);
res = chmod(fpath, mode);
if(res == -1)
return -errno;
return 0;
}
static int xmp_chown(const char *path, uid_t uid, gid_t gid)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s",dirpath,path);
res = lchown(fpath, uid, gid);
if(res == -1)
return -errno;
return 0;
}
static int xmp_truncate(const char *path, off_t size)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s",dirpath,path);
res = truncate(fpath, size);
if(res == -1)
return -errno;
return 0;
}
static int xmp_utime(const char *path, struct utimbuf *buf)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s",dirpath,path);
res = utime(fpath, buf);
if(res == -1)
return -errno;
return 0;
}
static int xmp_open(const char *path, int flags)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s",dirpath,path);
res = open(fpath, flags);
if(res == -1)
return -errno;
close(res);
return 0;
}
static int xmp_read(const char *path, char *buf, size_t size, off_t offset)
{
int fd;
int res;
char fpath[1000];
sprintf(fpath,"%s%s",dirpath,path);
strcpy(simpen,fpath);
fd = open(fpath, O_RDONLY);
if(fd == -1)
return -errno;
res = pread(fd, buf, size, offset);
if(res == -1)
res = -errno;
close(fd);
return res;
}
static int xmp_write(const char *path, const char *buf, size_t size,
off_t offset)
{
int fd;
int res;
char fpath[1000];
sprintf(fpath,"%s%s",dirpath,path);
fd = open(fpath, O_WRONLY);
if(fd == -1)
return -errno;
chmod(simpen,0000);
res = pwrite(fd, buf, size, offset);
if(res == -1)
res = -errno;
close(fd);
return res;
}
/*static int xmp_statfs(struct fuse_statfs *fst)
{
struct statfs st;
int rv = statfs("/",&st);
if(!rv) {
fst->block_size = st.f_bsize;
fst->blocks = st.f_blocks;
fst->blocks_free = st.f_bavail;
fst->files = st.f_files;
fst->files_free = st.f_ffree;
fst->namelen = st.f_namelen;
}
return rv;
}*/
static int xmp_release(const char *path, int flags)
{
/* Just a stub. This method is optional and can safely be left
unimplemented */
char fpath[1000];
sprintf(fpath,"%s%s",dirpath,path);
(void) fpath;
(void) flags;
return 0;
}
static int xmp_fsync(const char *path, int isdatasync)
{
/* Just a stub. This method is optional and can safely be left
unimplemented */
char fpath[1000];
sprintf(fpath,"%s%s",dirpath,path);
(void) fpath;
(void) isdatasync;
return 0;
}
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,
//.statfs = xmp_statfs,
.release = xmp_release,
.fsync = xmp_fsync
};
int main(int argc, char *argv[])
{
fuse_main(argc, argv, &xmp_oper);
return 0;
}
Cara compile code tersebut adalah dengan mengetik gcc -Wall [namafile].c `pkg-config fuse –cflags –libs` -o [namafile] di terminal. Selanjutnya, buat sebuah directory untuk mount file di Document, contohnya /home/deni/cobamount. Dan cara run programnya adalah dengan cara ./[namafile] /home/deni/cobamount.
Yap, seperti itulah FUSE dan semoga bermanfaat ya..
Sampai jumpa di artikel berikutnya ya....
Wassalamualaikum wr.wb.
Kembali lagi dengan saya teman-teman, kembali di coretan-coretan yang semoga agak penting seperti biasanya :D . Setelah berminggu-minggu berdiam akhirnya kembali lagi di Blog Ku tercinta LOL. Bahasan yang saya bawa kali ini cukup berat (setidaknya menurut saya), yaitu tentang FUSE. Tapi bukan fuse yang ini yaa..
Yap, diatas itu adalah fuse, tapi fuse yang saya bahas yaitu File System in Userspace. File system atau sistem berkas sendiri adalah sebuah struktur logika yang digunakan untuk mengendalikan semua akses terhadap data-data yang ada di dalam harddisk. Sementara 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.
Template code fuse bisa kita dapatkan di http://fuse.sourceforge.net/doxygen/fusexmp_8c.htm.Dan cara install fuse tadi adalah sebagai berikut :
- Gunakan hak akses super user (sudo su)
- Ketikan perintah ./configure
- Ketikan perintah make
- Ketikan perintah make install
#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>
#include <stdlib.h>
static const char *dirpath = "/home/deni/Documents";
char simpen[1000];
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_readlink(const char *path, char *buf, size_t size)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s",dirpath,path);
res = readlink(fpath, buf, size - 1);
if(res == -1)
return -errno;
buf[res] = '\0';
return 0;
}
static int xmp_getdir(const char *path, fuse_dirh_t h, fuse_dirfil_t filler)
{
DIR *dp;
struct dirent *de;
int res = 0;
char fpath[1000];
if(strcmp(path,"/") == 0)
{
path=dirpath;
sprintf(fpath,"%s",path);
}
else sprintf(fpath, "%s%s",dirpath,path);
dp = opendir(path);
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 int xmp_mkdir(const char *path, mode_t mode)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s",dirpath,path);
res = mkdir(fpath, mode);
if(res == -1)
return -errno;
return 0;
}
static int xmp_unlink(const char *path)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s",dirpath,path);
res = unlink(fpath);
if(res == -1)
return -errno;
return 0;
}
static int xmp_rmdir(const char *path)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s",dirpath,path);
res = rmdir(fpath);
if(res == -1)
return -errno;
return 0;
}
static int xmp_symlink(const char *from, const char *to)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s",dirpath,from);
char fpath2[1000];
sprintf(fpath2,"%s%s",dirpath,to);
res = symlink(from, to);
if(res == -1)
return -errno;
return 0;
}
static int xmp_rename(const char *from, const char *to)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s",dirpath,from);
char fpath2[1000];
sprintf(fpath2,"%s%s",dirpath,to);
res = rename(fpath, fpath2);
if(res == -1)
return -errno;
return 0;
}
static int xmp_mknod(const char *path, mode_t mode, dev_t rdev)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s",dirpath,path);
res = mknod(fpath,mode,rdev);
if(res == -1)
return -errno;
return 0;
}
static int xmp_link(const char *from, const char *to)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s",dirpath,from);
char fpath2[1000];
sprintf(fpath2,"%s%s",dirpath,to);
res = link(fpath, fpath2);
if(res == -1)
return -errno;
return 0;
}
static int xmp_chmod(const char *path, mode_t mode)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s",dirpath,path);
res = chmod(fpath, mode);
if(res == -1)
return -errno;
return 0;
}
static int xmp_chown(const char *path, uid_t uid, gid_t gid)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s",dirpath,path);
res = lchown(fpath, uid, gid);
if(res == -1)
return -errno;
return 0;
}
static int xmp_truncate(const char *path, off_t size)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s",dirpath,path);
res = truncate(fpath, size);
if(res == -1)
return -errno;
return 0;
}
static int xmp_utime(const char *path, struct utimbuf *buf)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s",dirpath,path);
res = utime(fpath, buf);
if(res == -1)
return -errno;
return 0;
}
static int xmp_open(const char *path, int flags)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s",dirpath,path);
res = open(fpath, flags);
if(res == -1)
return -errno;
close(res);
return 0;
}
static int xmp_read(const char *path, char *buf, size_t size, off_t offset)
{
int fd;
int res;
char fpath[1000];
sprintf(fpath,"%s%s",dirpath,path);
strcpy(simpen,fpath);
fd = open(fpath, O_RDONLY);
if(fd == -1)
return -errno;
res = pread(fd, buf, size, offset);
if(res == -1)
res = -errno;
close(fd);
return res;
}
static int xmp_write(const char *path, const char *buf, size_t size,
off_t offset)
{
int fd;
int res;
char fpath[1000];
sprintf(fpath,"%s%s",dirpath,path);
fd = open(fpath, O_WRONLY);
if(fd == -1)
return -errno;
chmod(simpen,0000);
res = pwrite(fd, buf, size, offset);
if(res == -1)
res = -errno;
close(fd);
return res;
}
/*static int xmp_statfs(struct fuse_statfs *fst)
{
struct statfs st;
int rv = statfs("/",&st);
if(!rv) {
fst->block_size = st.f_bsize;
fst->blocks = st.f_blocks;
fst->blocks_free = st.f_bavail;
fst->files = st.f_files;
fst->files_free = st.f_ffree;
fst->namelen = st.f_namelen;
}
return rv;
}*/
static int xmp_release(const char *path, int flags)
{
/* Just a stub. This method is optional and can safely be left
unimplemented */
char fpath[1000];
sprintf(fpath,"%s%s",dirpath,path);
(void) fpath;
(void) flags;
return 0;
}
static int xmp_fsync(const char *path, int isdatasync)
{
/* Just a stub. This method is optional and can safely be left
unimplemented */
char fpath[1000];
sprintf(fpath,"%s%s",dirpath,path);
(void) fpath;
(void) isdatasync;
return 0;
}
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,
//.statfs = xmp_statfs,
.release = xmp_release,
.fsync = xmp_fsync
};
int main(int argc, char *argv[])
{
fuse_main(argc, argv, &xmp_oper);
return 0;
}
Cara compile code tersebut adalah dengan mengetik gcc -Wall [namafile].c `pkg-config fuse –cflags –libs` -o [namafile] di terminal. Selanjutnya, buat sebuah directory untuk mount file di Document, contohnya /home/deni/cobamount. Dan cara run programnya adalah dengan cara ./[namafile] /home/deni/cobamount.
Yap, seperti itulah FUSE dan semoga bermanfaat ya..
Sampai jumpa di artikel berikutnya ya....
Wassalamualaikum wr.wb.
Sabtu, 07 November 2015
Pemutar Musik Linux
Assalamualaikum
wr.wb.
Kembali lagi di
blog sederhana saya ya teman-teman :D
Untuk kali ini,
saya akan memberikan sebuah code sebuah apikasi yang menggunakan
thread. Yap, thread. Sebelumnya, saya akan menjelaskan apa itu
sebenarnya thread. Oke, langsung saja ya, nggak perlu panjang lebar
haha, thread dalam sistem operasi adalah pengontrol aliran program
dan pelaksanaan program dengan menggunakan satu buah kendali atau
kendali tunggal. Jadi semua proses di sistem operasi akan di
kendalikan oleh thread tadi.
Salah satu
keuntungan dari thread adalah sangat ampuh untuk mengoptimalkan
prosesor komputer kita. Caranya yaitu dengan menggunakan
Hyperthreading. Hyper Threading bekerja dengan cara memberi intruksi
melalui software untuk membelah diri (splitting) menjadi beberapa
thread (aliran). Teknologi ini menyediakan thread-level paralel di
setiap prosesornya yang membuat penggunaan sumber daya menjadi lebih
efisien dan bisa membuat beberapa thread uuntuk berjalan di setiap
inti (core) prosesor.
Ya seperti yang
sudah saya bilang sebelumnya, saya akan memberikan contoh code yang
menggunakan thread tadi. Aplikasi kali ini merupakan sebuah aplikasi
multimedia, lebih tepatnya aplikasi pemutar musik. Tapi, sebelum
menggunakan aplikasi ini, harus sudah menginstall vlc player di
komputer temen-temen semua, karena dasar dari pemutar musiknya adalah
vlc player tersebut.
Untuk mendapatkan
vlc player nya sendiri bisa di download dan install dari terminal
dengan cara ketik “sudo apt-get update” dan “sudo apt-get
install vlc vlc-plugin-* mozilla-plugin-vlc”.
Langsung saja,
check this out guys....
#include<string.h>
#include<pthread.h>
#include<stdlib.h>
#include<unistd.h>
int rawr;
pthread_t tid[2];
char lagu[20];
int t;
char buf[20];
void* player(void *arg)
{
system(buf);
system("clear");
}
void* help(void *arg)
{
char help[5], cmd[15];
pthread_t id=pthread_self();
while (1)
{
scanf("%s", help);
if (strcmp(help, "help") == 0)
{
while (1)
{
printf("Menu\n");
printf("1. List\t2. Play\t3.Pause\n4. Continue\t5.Stop\n");
printf("Command : ");
scanf("%s", cmd);
if (strcmp(cmd, "Play") == 0)
{
system("clear");
scanf("%s", lagu);
snprintf(buf, sizeof(buf), "cvlc %s.mp3", lagu);
rawr=pthread_create(&(tid[1]), NULL, &player, NULL);
}
else if (strcmp(cmd, "List") == 0)
{
system("clear");
system("ls | grep .mp3");
}
else if (strcmp(cmd, "Pause") == 0)
{
system("clear");
scanf("%d", &t);
sleep(t);
system("pkill -SIGCONT vlc");
}
else if (strcmp(cmd, "Continue") == 0)
{
scanf("%d", &t);
sleep(t);
system("clear");
system("pkill - SIGCONT vlc");
}
else if (strcmp(cmd, "Stop") == 0)
{
system("clear");
scanf("%d", &t);
sleep(t);
system("pkill vlc");
}
}
}
}
return NULL;
}
int main(void)
{
chdir("Music");
int i = 0;
rawr=pthread_create(&(tid[i]),NULL,&help,NULL);
if (rawr != 0)
printf("\ncan't create thread : [%s]", strerror(rawr));
else
//printf("\n Thread created succesfully\n");
i++;
pthread_join(tid[0],NULL);
pthread_join(tid[1],NULL);
return 0;
}
Ya itulah source
code dari aplikasi pemutar music nya. Akan saya sedikit jelaskan
tentang aplikasinya. Jadi, sebelum masuk ke menu, kita harus mengetik
“help” untuk mengeluarkan menunya. Setelah itu akan muncul 5 menu
yaitu List, Play, Pause, Continue, dan Stop. List digunakan untuk
mengetahui apa saja music mp3 yang ada di dalam foder music. Cara
kerja Play yaitu dengan mengetikkan “Play[spasi]Judul_lagu”.
Selanjutnya untuk menu Pause, Continue, dan Stop ditambah angka di
belakangnya yang merupakan hitungan setelah berapa detik dia akan
jeda, lanjut, atau berhenti dari pemutar musik teersebut.
Demikian penjelasan
dari saya kali ini, semoga bisa menambah wawasan teman-teman semua
dan sampai ketemu lagi di artikel saya selanjutnya :)
Wassalamualaikum
wr.wb.
Sabtu, 17 Oktober 2015
Satu Folder Satu Ekstensi
Assalamualaikum wr. wb.
#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>
#include <dirent.h>
int main(void){
pid_t pid, sid;
pid = fork();
if (pid < 0){
exit(EXIT_FAILURE);
}
if (pid > 0){
exit(EXIT_SUCCESS);
}
umask(0);
sid = setsid();
if (sid < 0){
exit(EXIT_FAILURE);
}
if ((chdir("/")) < 0){
printf("test");
exit(EXIT_FAILURE);
}
close(STDIN_FILENO);
close(STDERR_FILENO);
while (1)
{
sleep(2);
DIR *dir;
char src[]="home/deni/Documents/doc";
char dest[]="home/deni/Documents/nondoc";
struct dirent *ent;
if ((dir = opendir ("home/deni/Documents/doc")) != NULL)
{
while ((ent = readdir (dir)) != NULL)
{
int len_file;
len_file=strlen(ent->d_name);
if(len_file>2)
{
char ext[3];
ext[0]=ent->d_name[len_file-4];
ext[1]=ent->d_name[len_file-3];
ext[2]=ent->d_name[len_file-2];
ext[3]=ent->d_name[len_file-1];
if(strcmp(ext,".doc")==0)
{
printf("Document Found\n");
}
else
{
char buf_src[100];
snprintf(buf_src,100,"%s/%s",src,ent->d_name);
char buf_dest[100];
snprintf(buf_dest,100,"%s/%s",dest,ent->d_name);
rename(buf_src,buf_dest);
}
}
}
closedir (dir);
perror ("");
}
}
exit(EXIT_SUCCESS);
}
Haii gaess, balik lagi bareng saya di blog tercinta ini :'D
Jika
di post sebelumnya kita menggunakan shell scripting untuk mendownload
file dan langsung mengubah namanya, kali ini kita akan coba membuat
sebuah folder hanya bisa berisi satu ekstesi file. Yap benar sekali,
satu ekstensi file dalam sebuah folder.
Jadi, dalam sebuah folder nantinya akan hanya berisi satu ekstensi file dan file dengan ekstensi lainnya akan di pindahkan ke folder yang lain. Dalam proses ini, kita menggunakan daemon. Pengertian daemon sendiri adalah service yang berjalan sendiri secara periodik/realtime dan berjalan dibelakang layar. Jadi program ini nantinya akan berjalan di background atau biasa dibilang background process dan akan berjalan dengan sendirinya.
Yasudah langsung saja, saya akan kasih source code untuk program ini. Ini dia gaess...
#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>
#include <dirent.h>
int main(void){
pid_t pid, sid;
pid = fork();
if (pid < 0){
exit(EXIT_FAILURE);
}
if (pid > 0){
exit(EXIT_SUCCESS);
}
umask(0);
sid = setsid();
if (sid < 0){
exit(EXIT_FAILURE);
}
if ((chdir("/")) < 0){
printf("test");
exit(EXIT_FAILURE);
}
close(STDIN_FILENO);
close(STDERR_FILENO);
while (1)
{
sleep(2);
DIR *dir;
char src[]="home/deni/Documents/doc";
char dest[]="home/deni/Documents/nondoc";
struct dirent *ent;
if ((dir = opendir ("home/deni/Documents/doc")) != NULL)
{
while ((ent = readdir (dir)) != NULL)
{
int len_file;
len_file=strlen(ent->d_name);
if(len_file>2)
{
char ext[3];
ext[0]=ent->d_name[len_file-4];
ext[1]=ent->d_name[len_file-3];
ext[2]=ent->d_name[len_file-2];
ext[3]=ent->d_name[len_file-1];
if(strcmp(ext,".doc")==0)
{
printf("Document Found\n");
}
else
{
char buf_src[100];
snprintf(buf_src,100,"%s/%s",src,ent->d_name);
char buf_dest[100];
snprintf(buf_dest,100,"%s/%s",dest,ent->d_name);
rename(buf_src,buf_dest);
}
}
}
closedir (dir);
perror ("");
}
}
exit(EXIT_SUCCESS);
}
Nah, setelah itu kita save source code tadi dengan [namafile].c. Di program ini, kita akan membuat folder dengan nama "doc" hanya akan berisi file dengan ekstensi .doc, dan selain itu akan di pindah ke dalam folder dengan nama "nondoc".
Oke, sebelum kita jalankan program nya kita harus compile dahulu [namafile].c tadi dengan cara gcc [namafile].c -o [namaprogram].o seperti gambar dibawah ini.
Setelah itu kita run [namaprogram].o nya dengan cara ./[namaprogram].o seperti ini.
Nah, setelah itu program akan berjalan. Kita akan coba mengecek di dalam folder "doc" dan "nondoc" sebelum dan sesudah program di jalankan.
Sebelum program dijalankan.
Setelah program dijalankan.
Nah, program sudah berjalan dengan baik. Selanjutnya kita bisa menghentikannya dengan cara membuka terminal baru lalu ketik pkill [namaprogram].o seperti ini.
Oke, cukup sekian pembahasan kita kali ini tentang salah satu contoh dari daemon. Semoga bermanfaat dan sampai ketemu di postingan dan pembahasan berikutnya yaaa..... :)
Wassalamualaikum wr.wb.Sabtu, 26 September 2015
Bash Scripting untuk Mendownload dan Mengganti Nama File di Linux
Assalamualaikum wr. wb.
Gaeesss, kali ini saya akan memberikan tutorial membuat bash script yang bisa mendownload sebuah file dan langsung mengganti nama tersebut dengan jam atau waktu downloadnya. Langsung aja ya, chek this out.....
1 . Langkah pertama buka terminal, bisa mencarinya di tombol search atau dengan klik Ctrl+Alt+T
2. Ketik gedit<spasi>nama file.sh untuk mulai membuat bash script. Dan akan muncul editor text.
3. Ketikkan di editor (gedit) tadi
#!/bin/bash
folder=$(date +%d_%m_%Y)
file=$(date +%H_%M_%S)
Dengan ini, kita akan mengubah nama folder downloadnya menjadi tanggal dengan format DD_MM_YYY dan mengubah nama file menjadi waktu downloadnya dengan format HH_MM_SS.
4. Selanjutnya ketik mkdir -p $folder untuk membuat direktori downloadnya.
-p digunakan agar jika ada folder dengan nama tanggal yang sama, dia tidak akan membuat foder baru lagi. Dan juga ketik cd $folder untuk memasukkan file download nanti ke folder dengan tanggal yang sebelumnya dibuat.
5. Untuk download sendiri, kita gunakan "wget". Caranya dengan ketik wget<spasi>alamat website yang file nya akan di download. Contohnya wget http://10.151.36.201/sisop/jadwal.txt
6. Untuk mengganti nama file nya sendiri kita bisa gunakan -O<spasi>"namafile" diantara wget dan alamat web sebelumnya.
Lengkapnya bisa lihat gambar diatas. Setelah semuanya selesai, simpan bash scriptnya. Disini saya menyimpannya dengan nama download.sh
8. Setelah itu ketikkan chmod +x<spasi>namafile.sh di terminal untuk mengubah permission file tersebut.
9. Bash Script nya sudah selesai dan dapat kita gunakan dengan cara mengetik ./namafile.sh di terminal.
Dan inilah folder dan file yang sudah saya download tadi.
Disitu ada folder dengan nama 26_09_2015 dan file di dalamnya dengan nama 19_01_15, yaitu tanggal dan waktu saya men-download.
Yap, sekian tutorial membuat bash script untuk mendownload dan mengganti nama dari saya, terimakasih sudah membaca dan sampai jumpa di artikel saya selanjutnya :)
Wassalamualaikum wr. wb.
Gaeesss, kali ini saya akan memberikan tutorial membuat bash script yang bisa mendownload sebuah file dan langsung mengganti nama tersebut dengan jam atau waktu downloadnya. Langsung aja ya, chek this out.....
1 . Langkah pertama buka terminal, bisa mencarinya di tombol search atau dengan klik Ctrl+Alt+T
2. Ketik gedit<spasi>nama file.sh untuk mulai membuat bash script. Dan akan muncul editor text.
3. Ketikkan di editor (gedit) tadi
#!/bin/bash
folder=$(date +%d_%m_%Y)
file=$(date +%H_%M_%S)
Dengan ini, kita akan mengubah nama folder downloadnya menjadi tanggal dengan format DD_MM_YYY dan mengubah nama file menjadi waktu downloadnya dengan format HH_MM_SS.
4. Selanjutnya ketik mkdir -p $folder untuk membuat direktori downloadnya.
-p digunakan agar jika ada folder dengan nama tanggal yang sama, dia tidak akan membuat foder baru lagi. Dan juga ketik cd $folder untuk memasukkan file download nanti ke folder dengan tanggal yang sebelumnya dibuat.
5. Untuk download sendiri, kita gunakan "wget". Caranya dengan ketik wget<spasi>alamat website yang file nya akan di download. Contohnya wget http://10.151.36.201/sisop/jadwal.txt
6. Untuk mengganti nama file nya sendiri kita bisa gunakan -O<spasi>"namafile" diantara wget dan alamat web sebelumnya.
Lengkapnya bisa lihat gambar diatas. Setelah semuanya selesai, simpan bash scriptnya. Disini saya menyimpannya dengan nama download.sh
8. Setelah itu ketikkan chmod +x<spasi>namafile.sh di terminal untuk mengubah permission file tersebut.
9. Bash Script nya sudah selesai dan dapat kita gunakan dengan cara mengetik ./namafile.sh di terminal.
Dan inilah folder dan file yang sudah saya download tadi.
Disitu ada folder dengan nama 26_09_2015 dan file di dalamnya dengan nama 19_01_15, yaitu tanggal dan waktu saya men-download.
Yap, sekian tutorial membuat bash script untuk mendownload dan mengganti nama dari saya, terimakasih sudah membaca dan sampai jumpa di artikel saya selanjutnya :)
Wassalamualaikum wr. wb.
Langganan:
Postingan (Atom)

















