Archive for November 2014

Thread dan Manfaatnya



Berbeda dengan proses, thread berjalan secara asinkronUs sementara proses berjalan secara sinkronus. Sementara untuk keuntungan menggunakan thread adalah * Tanggap: Multi-threading mengizinkan program untuk terus berjalan walaupun pada bagian program tersebut diblock atau sedang dalam keadaan menjalankan operasi yang lama/panjang. Contohnya multithread web browser dapat mengizinkan pengguna berinteraksi dengan suatu thread ketika suatu gambar sedang diload oleh thread yang lain.
  1. Pembagian sumber daya: Secara default, thread membagi memori dan sumber daya dari proses. Keuntungan dari pembagian kode adalah aplikasi mempunyai perbedaan aktifitas thread dengan alokasi.
  2. Ekonomis: Mengalokasikan memori dan sumber daya untuk membuat proses itu sangat mahal. Alternatifnya thread membagi sumber daya dari proses, Jadi lebih ekonomis.
  3. Pemberdayaan arsitektur multiprosesor: Keuntungann dari multithreading dapat ditingkatkan dengan arsitektur multiprosesor, dimana setiap thread dapat berjalan secara parallel pada prosesor yang berbeda. Pada arsitektur prosesor tunggal, CPU biasanya berpindah-pindah antara setiap thread dengan cepat, sehingga terdapat ilusi paralelisme, tetapi pada kenyataannya hanya satu thread yang berjalan di setiap waktu.

#include<pthread.h>
#include<stdio.h>

void *read(void *ptr);
void *player(void *ptr);

int main ()
{
 pthread_t tid1, tid2;
 pthread_create(&tid1,NULL,&read,NULL);
 pthread_create(&tid2,NULL,&player,NULL);
 pthread_join(tid2,NULL);

 return 0;
}

void  *read(void * ptr)
{
 char msg[100];
 while(1){
  fgets(msg,100,stdin);
  printf("%s\n",msg);
 }
 return NULL;
}

void *player(void *ptr)
{
 system("cvlc /home/ghulamfajri/Desktop/iris.mp3");
 return 0;
}
Rabu, 19 November 2014
Posted by Unknown
Tag :

Tutorial daemon Linux


Daemon atau disebut background proses adalah suatu proses pemisahan dari parent proses menjadi child proses. Sehingga child proses berjalan secara independen dan proses nya memiliki PID sendiri.
berikut contoh Daemon.c (hanya bisa di compile atau di run di Linux):

#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() {
 pid_t pid, sid;
 FILE *fp = NULL;
 pid = fork();
 
 if (pid < 0) 
  exit(EXIT_FAILURE);
 if (pid > 0)
  exit(EXIT_SUCCESS);
 
 umask(0);

 sid = setsid();
 if (sid < 0)
  exit(EXIT_SUCCESS);

 if ((chdir("/")) < 0)
  exit(EXIT_SUCCESS);

 close(STDIN_FILENO);
 //close(STDOUT_FILENO);
 close(STDERR_FILENO);

 fp = fopen("log.txt", "w+");
 while (1) {
  sleep(10);
 // printf("Tes\n");
  fprintf(fp, "Logging info...\n");
  fflush(fp);
 }
 fclose(fp);
}

Minggu, 02 November 2014
Posted by Unknown

TUTORIAL SOCKET PROGRAM C PADA SISTEM OPERASI LINNUX


Pengertian socket adalah interface pada jaringan yang menjadi titik komunikasi antarmesin pada Internet Protocol, dan tentunya tanpa komunikasi ini, tidak akan ada pertukaran data dan informasi jaringan. Socket terdiri dari elemen-elemen utama sebagai berikut:
  1. Protokol.
  2. Local IP.
  3. Local Port.
  4. Remote IP.
  5. Remote Port.
Komunikasi socket jaringan memang tidak mengenal lelah, pertukaran data terjadi terus-menerus dan memegang peranan vital.
Bayangkan sebuah server game online yang berkomunikasi tanpa henti, dimainkan oleh entah berapa banyak client yang tersebar. Ini merupakan salah satu contoh aplikasi dari sekian banyak aplikasi yang menggunakan socket jaringan untuk saling berkomunikasi dan bertukar data.
kodingan server socket:
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <time.h> 

int main(int argc, char *argv[])
{
    int listenfd = 0, connfd = 0;
    struct sockaddr_in serv_addr; 

    char sendBuff[1025];
    time_t ticks; 

    listenfd = socket(AF_INET, SOCK_STREAM, 0);
    memset(&serv_addr, '0', sizeof(serv_addr));
    memset(sendBuff, '0', sizeof(sendBuff)); 

    serv_addr.sin_family = AF_INET;
    serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
    serv_addr.sin_port = htons(5000); 

    bind(listenfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)); 

    listen(listenfd, 10); 

    while(1)
    {
        connfd = accept(listenfd, (struct sockaddr*)NULL, NULL); 

        ticks = time(NULL);
        snprintf(sendBuff, sizeof(sendBuff), "%.24s\r\n", ctime(&ticks));
        write(connfd, sendBuff, strlen(sendBuff)); 

        close(connfd);
        sleep(1);
     }
}
kodingan client socket:
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <netdb.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <arpa/inet.h> 

int main(int argc, char *argv[])
{
    int sockfd = 0, n = 0;
    char recvBuff[1024];
    struct sockaddr_in serv_addr; 

    if(argc != 2)
    {
        printf("\n Usage: %s <ip of server> \n",argv[0]);
        return 1;
    } 

    memset(recvBuff, '0',sizeof(recvBuff));
    if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
    {
        printf("\n Error : Could not create socket \n");
        return 1;
    } 

    memset(&serv_addr, '0', sizeof(serv_addr)); 

    serv_addr.sin_family = AF_INET;
    serv_addr.sin_port = htons(5000); 

    if(inet_pton(AF_INET, argv[1], &serv_addr.sin_addr)<=0)
    {
        printf("\n inet_pton error occured\n");
        return 1;
    } 

    if( connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0)
    {
       printf("\n Error : Connect Failed \n");
       return 1;
    } 

    while ( (n = read(sockfd, recvBuff, sizeof(recvBuff)-1)) > 0)
    {
        recvBuff[n] = 0;
        if(fputs(recvBuff, stdout) == EOF)
        {
            printf("\n Error : Fputs error\n");
        }
    } 

    if(n < 0)
    {
        printf("\n Read error \n");
    } 

    return 0;
}

Posted by Unknown
Tag :

Tentang PIPE dengan FIFO bahasa C


PIPE adalah suatu komunikasi proses antara program satu dengan program lainnya. Pipe ini hanya bisa berkomunikasi hanya dalam satu komputer, artinya tidak dapat komunikasi antara dua komputer atau lebih. Cara kerja Pipe adalah terdapat program yang menulis program yang nantinya disimpan dalam file kemudian ada program lain yang membaca file tersebut.

berikut contoh program yang menulis data (dapat berupa string/ variabel):
#include <stdio.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>

int main()
{
   int client_to_server;
   char *myfifo = "/tmp/client_to_server_fifo";

   int server_to_client;
   char *myfifo2 = "/tmp/server_to_client_fifo";

   char str[BUFSIZ];
   printf("Input message to serwer: ");
   scanf("%s", str);


   /* write str to the FIFO */
   client_to_server = open(myfifo, O_WRONLY);
   server_to_client = open(myfifo2, O_RDONLY);
   write(client_to_server, str, sizeof(str));

   perror("Write:"); //Very crude error check

   read(server_to_client,str,sizeof(str));

   perror("Read:"); // Very crude error check

   printf("...received from the server: %s\n",str);
   close(client_to_server);
   close(server_to_client);

   /* remove the FIFO */

   return 0;
}
berikut contoh program yang membaca data :
#include <fcntl.h>
#include <stdio.h>
#include <sys/stat.h>
#include <unistd.h>
#include <string.h>

int main()
{
   int client_to_server;
   char *myfifo = "/tmp/client_to_server_fifo";

   int server_to_client;
   char *myfifo2 = "/tmp/server_to_client_fifo";

   char buf[BUFSIZ];

   /* create the FIFO (named pipe) */
   mkfifo(myfifo, 0666);
   mkfifo(myfifo2, 0666);

   /* open, read, and display the message from the FIFO */
   client_to_server = open(myfifo, O_RDONLY);
   server_to_client = open(myfifo2, O_WRONLY);

   printf("Server ON.\n");

   while (1)
   {
      read(client_to_server, buf, BUFSIZ);

      if (strcmp("exit",buf)==0)
      {
         printf("Server OFF.\n");
         break;
      }

      else if (strcmp("",buf)!=0)
      {
         printf("Received: %s\n", buf);
         printf("Sending back...\n");
         write(server_to_client,buf,BUFSIZ);
      }

      /* clean buf from any data */
      memset(buf, 0, sizeof(buf));
   }

   close(client_to_server);
   close(server_to_client);

   unlink(myfifo);
   unlink(myfifo2);
   return 0;
}
Posted by Unknown
Tag :

Tutorial menggunakan virtualbox untuk simulator instalasi Ubuntu

Pada tutorial kali ini saya ingin membahas bagaimana mempersiapkan konfigurasi virtual box untuk simulator instalasi. Hmmm mungkin adakah yang belum tahu apa itu virtualbox? Virtualbox adalah sebuah software atau perangkat lunak buatan dari perusahaan Oracle yang dapat digunakan untuk mambuat lingkungan virtual perangkat keras komputer. Dengan begitu, bagi kita yang ingin melakukan troubleshooting, bisa menggunakan virtualbox yang seolah-olah memiliki komputer baru untuk diterapkan di kondisi riil. Software virtualbox ini dapat anda download secara free di website resminya yang beralamat (URL) di https://www.virtualbox.org. Di website resmi tersebut anda dapat memilih file instalasi yang sesuai dengan platform yang anda gunakan. Ada beberapa tipe paket instalasi dari beberapa platform, diantaranya adalah untuk platformWindowsLinuxMacOS dan Solaris, atau anda bisa juga melakukan compile file instalasinya langsung dari source code nya.

Di tutorial kali ini, saya tidak akan membahas bagaimana melakukan instalasi virtualbox, melainkan bagaimana konfigurasi virtualbox tersebut sebelum memulai simulasi instalasi sistem operasi Ubuntu di dalam virtualbox. Untuk melakukan instalasi di dalam virtualbox, saya menggunakan virtualbox dengan versi terbaru saat ini (versi 4.3.6). Berikut langkah-langkahnya:

1. Silakan buka aplikasi virtualbox, sehingga anda akan mendapati tampilannya seperti yang di tunjukkan pada gambar di bawah ini:


2. Kemudian klik new untuk membuat lingkungan virtual mesin yang baru sehingga tertampil seperti pada gambar di bawah ini:


Beri nama virtual mesin anda, kemudian pilih type dan versi seusuai gambar di atas

3. Kemudian anda akan diminta membuat alokasi memory (RAM) virtual yang akan anda gunakan nantinya, sesuaikan dengan kapastias RAM di komputer anda seperti yang ditunjukkan pada gambar di bawah:


saran saya maksimal separuh dari alokasi total RAM di komputer anda

4. Kemudian anda akan diminta membuat virtual harddisk untuk mesin virtual anda seperti yang ditunjukkan pada gambar di bawah:


di tahap ini, saya tidak membuat virtual hard drive sama sekali, sehingga muncul error seperti yang ditunjukkan pada gambar di bawah:


kemudian saya klik continue

5. Setelah selesai, anda akan melihat tampilan seperti yang ditunjukkan pada gambar di bawah, dimana anda telah selesai membuat seuahmeisn virtual dengan platform Ubuntu:


6. Silakan klik Setting di sebelah tombol New di pojok kiri atas sehingga tertampil seperti pada gambar di bawah, untuk melakukan setting jaringan, hardisk dan memasukkan Image Sistem operasi (ISO) Ubuntu:


7. Klik bagian storage untuk menambah hardisk sehingga tertampil seperti pada gambar di bawah:


8. Kemudian klik bagian Controller SATA seperti pada gambar di bawah kemudian klik icon harddisk+ di sebelah kanan menu Controller: SATA seperti pada gambar di bawah:


9. Kemudian anda kan diberi opsi apakah akan membuat virtual harddisk baru atau mengambil dari virtual harddisk yang sudah ada? Disini silakan anda pilih Create new Disk seperti pada gambar di bawah:


10. Kemudian silakan pilih opsi VHD seperti pada gambar di bawah:


11. Anda akan diminta memilih kapasitas storage virtual harddisk anda akan menggunakan alokasi dinamis atau fixed, disini saya memilih fixed size seperti yang ditunjukkan pada gambar di bawah:


12. Beri nama virtual harddisk anda, kemudian simpan di folder yang anda inginkan, berikan kapasitas virtual harddisk anda yang sekiranya cukup untuk anda melakukan simulasi instalasi Ubuntu, disini saya mengalokasikan space virtual harddisk yang saya buat sebesar 4,3GB seperti yang ditunjukkan pada gambar di bawah:


klik create dan silakan tunggu tampilan loading di bawah hingga selesai:


jika berhasil, maka akan tertampil seperti pada gambar di bawah:


13. Masih di tampilan yang sama, silakan klik CD/DVD Drive pada ujung sebelah kanan untuk memasukkan image sistem operasi Ubuntu seperti yang ditunjukkan pada gambar di bawah:


Jika berhasil memasukkan image anda ke dalam virtual CD/DVD ROM, maka image tersebut akan tertampil seperti yang ditunjukkan pada gambar di bawah:


14. Kemudian klik Network untuk mengaktifkan kartu jaringan di mesin virtual anda dengan mencentang “Enable Network Adapter” seperti yang di tunjukkan pada gambar di bawah:


Dengan mencentang opsi tadi, maka jika komputer fisik anda terhubung ke internet, maka secara otomatis, anda juga bisa melakukan browsing dari mesin virtual anda, lalu klik OK, sehingga tertampil seperti pada gambar di bawah ini:


15. Dengan begitu, mesin virtual anda telah siap untuk dijalankan dengan mengeklik tombol START di sebelah tombol SETTING, sehingga menjalankan image Ubuntu yang tadi anda masukkan untuk memulai simulasi instalasi di mesin virtual anda, seperti yang ditunjukkan pada gambar di bawah:


Begitulah langkah-langkah yang harus dipersiapkan untuk membuat mesin virtual yang nantinya akan anda gunakan untuk mensimulasikan instalasi sistem operasi Ubuntu, mudah bukan? Oh iya, perlu anda ketahui, jika anda telah selesai melakukan instalasi tadi, anda juga bisa menggunakan hasil instalasi tersebut selayaknya sebuah komputer biasa yang berisi sistem operasi Ubuntu dengan spesifikasi sesuai setting anda sebelumnya lho. Selain itu anda juga bisa mencoba untuk melakukan instalasi sistem operasi dengan distro lainnya, seperti OpenSuse, Debian, Fedora, Linu Mint, BlangkOn dan lain-lain. Menarik kan? Jadi tidak usah takut untuk mencoba dan belajar menggunakan Linux ya.
Posted by Unknown

Popular Post

Blogger templates

Labels

Diberdayakan oleh Blogger.

- Copyright © Master Developer -Metrominimalist- Powered by Blogger - Designed by Johanes Djogan -