Showing posts with label ubuntu. Show all posts
Showing posts with label ubuntu. Show all posts

Friday, January 13, 2017

Cara Install Codeblocks + Gcc + OpenGL + Freeglut di linux ubuntu


Hai pecandu linux, kali ini saya akan share cara menginstall codeblocks dan ekstensi library open gl & freeglut. Codeblocks adalah suatu aplikasi compiler program berbasis bahasa c dan c++, tentu apabila kita menggunakan linux wajib menginstall gcc terlebih dahulu.  Opengl adalah suatu librari untuk membuat gambar 2d dengan bahasa c/c++, sedangkan Freeglut adalah suatu librari untuk membuat gambar 3d dengan bahasa c/c++. So, tanpa bertele tele mari kira mencoba menginstallnya, O iya, tutorial ini tested pada chromium ubuntu saya. Than, here we go


Langkah pertama : Cek dan install gcc pada linux anda

Biasanya sih, ketika anda install linux maka tidak terdapat aplikasi gcc, namun cek dulu saja, buka terminal dan masukan
gcc --version
Program anda akan berjalan lancar apabila telah terinstall gcc versi 4.7.1 keatas. Namun apabila belum ada, mari kita install, masukan command berikut di terminal
sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get install g++ -y

Langkah kedua : Installing codeblocks

buka terminal, dan masukan PPA codeblocks
sudo add-apt-repository ppa:damien-moore/codeblocks-stable
update dan install codeblocks
sudo apt-get update && sudo apt-get install codeblocks -y
sebetulnya ada cara lebih mudah, anda buka ubuntu software center atau synaptic package manager, search codeblocks, tandai dan install

Langkah ketiga : configurasi codeblocks dan gcc

  • Buka codeblocks anda melalui launcher
  • Select setting -> compiler
  • Select compiler flag dan check flag pada Enable All Compiler Warnings dan Have g++ Follow the C++11 ISO C++ Language Standard
  •  Select toolchain executables tab dan arahkan compiler's instalation directory ke tempat anda menginstall g++, biasanya default install di /usr dan lengkapi seperti pada gambar
  • Done, coba buat codingan c pada codeblocks, dan compile.
  • apabila masih error maka anda harus menginstall
  • sudo apt-get install build-essential

 

Langkah keempat : Installing library opengl dan freeglut

  • Install library opengl, buka terminal dan masukan
    sudo apt-get install libglew-dev libsdl2-dev libsdl2-image-dev libglm-dev libfreetype6-dev
  • Install library freeglut, buka terminal dan masukan
    sudo apt-get install freeglut3 freeglut3-dev

Langkah kelima : Configurasi codeblocks dengan library openGL dan freeglut

  • buka codeblocks
  • select setting ->compiler
  • select linker settings
  • add link libraries : GL, GLEW, SDL2, GLU, glut. jangan typo ya, huruf besar kecil mempengaruhi.
  • Done, codeblocks anda telah terkonfigurasi dengan openGL dan freeglut.

Langkah keenam : mari kita coba membuat program gambar 2d dan 3d.

contoh program menggambar segitiga gasket 2d

#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
#include <stdlib.h>

void myinit()
{
glClearColor(1.0, 1.0, 1.0, 1.0);
glColor3f(1.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0, 50.0, 0.0, 50.0);
glMatrixMode(GL_MODELVIEW);
}

void display()
{
GLfloat vertices[3][2]={{0.0,0.0},{25.0,50.0},{50.0,0.0}};
int j, k;
int rand();
GLfloat p[2]={7.5, 5.0};
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_POINTS);
for(k=0;k<50000 br="" k=""> {
j=rand()%3;
p[0]=(p[0]+vertices[j][0])/2.0;
p[1]=(p[1]+vertices[j][1])/2.0;
glVertex2fv(p);
}
glEnd();
glFlush();
}

int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE |GLUT_RGB);
glutInitWindowSize(500,500);
glutInitWindowPosition(0,0);
glutCreateWindow("Sierpinski Gasket 2D");
glutDisplayFunc(display);
myinit();
glutMainLoop();
return 0;
}


compile dan apakah muncul gambar seperti dibawah ini?


Contoh program menggambar sistem galaxi 3d dan bisa digerakan dengan menekan tombol space

#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>

const float deg2rad=3.1415/180;

void draw(void);
void drawcircle (float radius);
void myKeyboard(unsigned char key, int x, int y);

float marsx=0, marsy=0.85;
int sudutmars=90;

int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(640,480);
glutInitWindowPosition(100, 100);
glutCreateWindow("System Galaxy");
glutDisplayFunc(draw);
glEnable(GL_LIGHTING); // enable the light source
glEnable(GL_LIGHT0);
glShadeModel(GL_SMOOTH);
glEnable(GL_DEPTH_TEST); // for hidden surface removal
glEnable(GL_NORMALIZE); // normalize vectors for proper shading
glClearColor(1.0f, 1.0f, 1.0f,0.0f); // background is light gray
glViewport(0, 0, 640, 480);
glutKeyboardFunc(myKeyboard);
glutMainLoop();
return 0;
}

void draw(void)
{
// set the light source properties
GLfloat lightIntensity[]={0.7f, 0.7f, 0.7f, 1.0f};
GLfloat light_position[]={2.0f, 6.0f, 3.0f, 0.0f};
glLightfv(GL_LIGHT0, GL_POSITION, light_position);
glLightfv(GL_LIGHT0, GL_DIFFUSE, lightIntensity);
glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_FALSE);
// set the camera
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
double winHt=1.0; // half-height of the window
//glOrtho(-winHt*64/48.0, winHt*64/48.0, -winHt, winHt, 0.1, 100.0);
glOrtho(-1.0, 1.0, -1.0, 1.0, 0.1, 100.0);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(2.3, 1.3, 2, 0, 0.25, 0, 0.0, 1.0, 0.0);
// start drawing
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // clear the screen
// set properties of the surface material of sun
GLfloat mat_ambient[]={1.0f, 0.0f, 0.0f, 1.0f}; // gray
GLfloat mat_diffuse[]={1.0f, 0.0f, 0.0f, 1.0f};
GLfloat mat_specular[]={0.9f, 0.0f, 0.0f, 1.0f};
GLfloat mat_shininess[]={1000.0f};
glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);
glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);
glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess);
//menggambar matahari
glutSolidSphere(0.125, 20, 20); //(radius, slices, stack)
//menggambar lintasan merkurius
drawcircle (0.85);

GLfloat mer_ambient[]={0.0f, 1.0f, 0.0f, 1.0f}; // gray
GLfloat mer_diffuse[]={0.0f, 1.0f, 0.0f, 1.0f};
GLfloat mer_specular[]={0.0f, 1.0f, 0.0f, 1.0f};
GLfloat mer_shininess[]={100.0f};
glMaterialfv(GL_FRONT, GL_AMBIENT, mer_ambient);
glMaterialfv(GL_FRONT, GL_DIFFUSE, mer_diffuse);
glMaterialfv(GL_FRONT, GL_SPECULAR, mer_specular);
glMaterialfv(GL_FRONT, GL_SHININESS, mer_shininess);

glPushMatrix();
glTranslated(marsx, marsy, 0);
//menggambar mars
glutSolidSphere(0.07, 15, 15);
//menggambar lintasan mars
drawcircle (0.18);

GLfloat sat_ambient[]={0.0f, 0.0f, 1.0f, 1.0f}; // gray
GLfloat sat_diffuse[]={0.0f, 0.0f, 1.0f, 1.0f};
GLfloat sat_specular[]={0.0f, 0.0f, 1.0f, 1.0f};
GLfloat sat_shininess[]={100.0f};
glMaterialfv(GL_FRONT, GL_AMBIENT, sat_ambient);
glMaterialfv(GL_FRONT, GL_DIFFUSE, sat_diffuse);
glMaterialfv(GL_FRONT, GL_SPECULAR, sat_specular);
glMaterialfv(GL_FRONT, GL_SHININESS, sat_shininess);

glTranslated(0, 0.18, 0);
//menggambar satelit mars
glutSolidSphere(0.03, 15, 15);
glPopMatrix();

glFlush();
}

void drawcircle (float radius)
{
glColor3f (0.0,0.0,1.0);
glBegin(GL_LINE_LOOP);
int i;
for (i==0; i<360 br="" i=""> {
float degInRad=i* deg2rad;
glVertex2f(cos(degInRad)*radius,sin(degInRad)*radius ) ;
}
glEnd();
}

void myKeyboard(unsigned char key, int x, int y)
{
if (key==32)
{
sudutmars=sudutmars+5;
float degInRad=sudutmars* deg2rad;
marsx=cos(degInRad)*0.85;
marsy=sin(degInRad)*0.85;
}
glutPostRedisplay ();
}
apakah muncul gambar seperti dibawah ini?

Well, selamat codeblocks anda sudah terinstall secara sempurna begitupun dengan library gcc, openGL dan freeglut. Happy Coding!

sumber :
install codeblock : www.dummies.com
library openGL : en.wikibooks.org
library freeglut : kiwwito.com
code 2d dan 3d : Mata Kuliah Grafika Komputer oleh ibu Wijayanti.

Tuesday, January 10, 2017

Cara Install uTorrent Server di linux



Di postingan kali ini saya akan membagikan tips install utorrent di linux. Tentu bagi user linux seperti saya merasa sedikit sebal karena aplikasi pada linux tidak sebanyak dan selengkap di ubuntu. Namun lambat laun, karena sering browsing masuk masuk forum ternyata banyak aplikasi di windows yang sudah ada di linux, salah satu nya uTorrent. ah akhirnya bisa download torrent di linux. Perbedaan uTorrent di linux dengan yang di windows adalah bentuk aplikasi uTorrent di linux adalah webserver dengan port 8080, namun tidak aplikasi ini tidak nebeng webserver favorit kalian(apache, nginx, dll). Tutorial kali ini sudah saya tes di Chromium Ubuntu (CUB) dan ubuntu 16.04, here we go :

Langkah Pertama : Download package uTorrent dari sini




Download sesuai os anda, uTorrent server ubuntu 13.04 work di ubuntu 14.04 - 16.04, tenang aja, coba dulu. Jangan lupa pilih bit sesuai os anda ya.

Langkah Kedua : Extract package uTorrent

Buka Terminal (ctrl + alt + t) dan pindah ke direktori downloads
cd ~/Downloads/
Extract package uTorrent ke folder /opt
sudo tar -xvzf utserver.tar.gz -C /opt/


Langkah Ketiga : Set permission folder hasil extract package

sudo chmod -R 755 /opt/utorrent-server-alpha-v3_3/


Langkah Keempat : Buat link simbol

sudo ln -s /opt/utorrent-server-alpha-v3_3/utserver /usr/bin/utserver


Langkah Kelima : Jalankan uTorrent

untuk mempermudah pemakain, buat sebuah file
sudo nano utorrent.sh
dan isikan
utserver -settingspath /opt/utorrent-server-alpha-v3_3/
exit dan jalankan dari terminal
sudo bash utorrent.sh

catatan : Apabila terdapat error tentang libssl.so package missing, maka buka terminal dan masukkan command line
sudo apt-get install libssl0.9.8:i386
dan coba jalankan kembali



Langkah keenam : Login aplikasi


Buka browser anda dan masukkan url :
localhost:8080/gui
Username : admin dan password kosongkan saja



Voila, uTorrent sudah terinstall di linux mu, happy torrent-ing ~

sumber : www.sysads.co.uk

Saturday, January 7, 2017

Wifi asus tidak nyala di linux (SOLVED!)

Di postingan kali ini saya akan menjelaskan bagaimana memperbaiki wifi asus yang error / tidak hidup pada sistem operasi linux. Tentunya setelah kita menginstall linux di laptop, hal yang pertama dilakukan adalah update & upgrade os, namun apabila wifi error, tentu menyebalkan kan?. Cara berikut ini telah saya coba dan berhasil di sistem operasi Chromium Ubuntu dan Ubuntu 16.04. Here we go :

1. Pastikan Driver telah terpasang

Buka terminal ( ctrl + alt + t) dan ketik command di bawah ini dan tekan enter :

lspci -nnk | grep -A2 0280

Lihat pada baris terakhir apakah terdapat tulisan "Kernel driver in use:" dan apakah terdapat nama modul ? (ex : "kernel driver in use : ath9k")



2. Cek apakah driver telah di load dan  driver "asus_nb_wmi" telah digunakan :

lsmod | grep -e ath9k -e asus

ganti "ath9k" dengan driver yang digunakan untuk kartu wifi anda. Apakah anda dapat melihat driver untuk kartu wireless laptop anda, dan "asus_nb_wmi" di baris paling atas?

3. Cek status wifi (Hard Blocked / Soft Blocked)

command:
rfkill list all

lihat status dari interface "phy0". Apakah menunjukan "Hard Blocked: yes " ?


4. Coba suspend laptop anda, setelah mati coba nyalakan kembali, apakah wifi anda kini telah hidup?

jika jawaban dari ke-4 pertanyaan diatas adalah "iya" (pengecualian pada no4, hanya terjadi di beberapa laptop), maka terdapat bug pada sistem operasi anda.

eits tenang...

silahkan buka terminal (ctrl + alt + t)  dan ketikan command berikut (copas aja) :

echo "options asus_nb_wmi wapf=4" | sudo tee /etc/modprobe.d/asus_nb_wmi.conf

command ini akan membuat file "asus_nb_wmi.conf" pada direktori "/etc/modprobe.d/" yang akan me-load driver "asus_nb_wmi" dengan parameter "wapf = 4".

coba restart laptop anda?

Apakah sukses? semoga sukses!


CleanUp

jika cara diatas tidak berhasil dan anda ingin mengembalikan ke kondisi semula, hapus lah file yang kita buat tadi
sudo rm /etc/modprobe.d/asus_nb_wmi.conf

Cukup mudah kan? sekian tutorial kali ini, semoga bermanfaat.




Wednesday, November 25, 2015

Fungsi fungsi pada FUSE

Beberapa fungsi yang disediakan oleh FUSE dan akan berguna kita pakai nantinya:

  1. int (*getattr) (const char *, struct stat *);
    Get file attributes.
  2. int (*readlink) (const char *, char *, size_t);
    Read the target of a symbolic link
  3. int (*mknod) (const char *, mode_t, dev_t);
    Create a file node. 
  4. int (*mkdir) (const char *, mode_t);
    Create a directory.
  5. int (*unlink) (const char *);
    Remove a file
  6. int (*rmdir) (const char *);
     Remove a directory
  7. int (*rename) (const char *, const char *);
    Rename a file
  8. int (*chmod) (const char *, mode_t);
    Change the permission bits of a file
  9. int (*chown) (const char *, uid_t, gid_t);
    Change the owner and group of a file
  10. int (*truncate) (const char *, off_t);
    Change the size of a file
  11. int (*open) (const char *, struct fuse_file_info *);
    File open operation.
  12. int (*readdir) (const char *, void *, fuse_fill_dir_t, off_t, struct fuse_file_info *);
    Read directory
  13. int (*read) (const char *, char *, size_t, off_t, struct fuse_file_info *);
    Read data from an open file
  14. int (*write) (const char *, const char *, size_t, off_t, struct fuse_file_info *);
    Write data to an open file

Thursday, November 5, 2015

All about thread

....
Thread adalah unit dasar dari utilitas CPU. Di dalamnya terdapat ID thread, program counter, register, dan stack. Dan saling berbagi dengan thread lain dalam proses yang sama.

Keuntungan memakai Thread:

* 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.
* 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.
* Ekonomis: Mengalokasikan memori dan sumber daya untuk membuat proses itu sangat mahal. Alternatifnya thread membagi sumber daya dari proses, Jadi lebih ekonomis.
* 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.

Selain itu...
1. User thread adalah pengelolaan thread yang dilakukan oleh user level (pengguna)
2. Kernel thread adalah pengelolaan thread yang dilakukan oleh kernel komputer sehingga user tidak dapat menginterupsi.

Macam-macam Thread
Single threading : proses hanya mengeksekusi satu thread dalam satu waktu.
Multi-threading : proses dapat mengeksekusi sejumlah thread dalam satu waktu.

Model MultiTrading:
One to one: Memetakan setiap user thread ke dalam 1 kernel thread.


Kelebihan: Model one-to-one lebih sinkron daripada model many-to-one karena mengizinkan thread lain untuk berjalan ketika suatu thread membuat pemblokingan terhadap sistem pemanggilan, hal ini juga membuat multiple thread bisa berjalan secara parallel dalam multiprosesor .
Kekurangan: Dalam pembuatan user thread diperlukan pembuatan korespondensi thread pengguna. Karena dalam proses pembuatan kernel thread dapat mempengaruhi kinerja dari aplikasi, maka kebanyakan dari implementasi model ini membatasi jumlah thread yang didukung oleh sistem.
Model ini ada pada Windows NT dan OS/2.

One to Many: memetakan beberapa tingkatan thread user hanya ke satu buah kernel thread.

Kelebihan: Managemen proses thread dilakukan oleh (di ruang) pengguna, sehingga menjadi lebih efisien.
Kekurangan: multi thread tidak dapat berjalan atau bekerja secara paralel di dalam multiprosesor karena hanya satu thread saja yang bisa mengakses kernel dalam suatu waktu.

Model ini ada pada Solaris Green dan GNU Portable.

Many to Many : Membolehkan setiap tingkatan user thread dipetakan ke banyak kernel thread.
Kelebihan: 
Developer dapat membuat user thread sebanyak yang diperlukan dan kernel thread yang bersangkutan dapat berjalan secara parallel pada multiprocessor.
* Dan ketika suatu thread menjalankan blocking system call maka kernel dapat menjadwalkan thread lain untuk melakukan eksekusi.
Kekurangan:
* Developer dapat membuat user thread sebanyak mungkin, tetapi konkurensi tidak dapat diperoleh karena hanya satu thread yang dapat dijadwalkan oleh kernel pada suatu waktu.
Model ini ada pada Solaris, IRIX, dan Digital UNIX.

Saturday, October 17, 2015

Daemon di ubuntu


Daemon adalah service background process yang didesain untuk berjalan secara otomatis dengan sedikit/tidak terinterfensi oleh user. Daemon tidak boleh memiliki komunikasi secara langsung dengan user melalui terminal. Jadi bila kita memiliki daemon kita hanya bisa melihat pekerjaan daemon melalui file yang dikerjakan atau dari control proses di terminal. Dan berikut adalah cara untuk membuat daemon, yaitu
  1. MATIKAN PROSES PARENT

    Proses induk dimatikan supaya proses yang semula memiliki parent menjadi orphant proses. 
    pid_t pid;
    pid = fork();

    if (pid < 0) {
        exit(EXIT_FAILURE);
    }
    if (pid > 0) {
        exit(EXIT_SUCCESS);
    }
  2. UBAH MODE FILE MASK

    Untuk menulis file (termasuk log), yg dibuat daemon.
    Harus diubah untuk memastikan dapat ditulisi atau dibaca secara sesuai.

    umask(0);
    umask(0)  kita akan mendapat akses penuh dari file yang dibuat oleh daemon.
  3. BUKA LOG UNTUK PENULISAN

    Membuka sebuah log file di suatu lokasi pada sistem untuk penulisan. Untuk informasi debug dari daemon yang kita buat. gunakan standart input output file untuk lebih sederhananya.
  4. BUAT SEBUAH SESSION ID (SID) UNIK

    Proses anak harus mendapat SID unik dari kernel untuk dapat dijalankan.
    Jika tidak mendapat SID, maka proses anak akan menjadi yatim piatu pada sistem.

    pid_t sid;
    sid = setsid();
    if (sid < 0) {
        exit(EXIT_FAILURE);
    }
  5. UBAH DIREKTORI KERJA SAAT INI KE TEMPAT YANG AMAN

    Direktori kerja saat ini harus diubah ke tempat yang dijamin selalu ada. Direktori kerja diubah ke direktori root (/), dengan system call chdir.

    if ((chdir(“/”)) < 0) {
        exit(EXIT_FAILURE);
    }
  6. TUTUP FILE DESKRIPTOR STANDAR

    Langkah akhir, tutup file descriptor standar (STDIN, STDOUT, STDERR).

    close(STDIN_FILENO);
    close(STDOUT_FILENO);
    close(STDERR_FILENO);
  7. MASUKKAN KODE DAEMON


    while (1) {
        sleep(30);
    }

Friday, September 25, 2015

Membuat tar.gz melalui terminal ubuntu

Assalamulaikum, kali ini saya akan menjelaskan bagaimana membuat atau mengkompress file menjadi .tar.gz debgan terminal di ubuntu
Pertama, buka terminal linux dengan menekan ctrl + alt + t
Kedua, ketik sudo su pada terminal untuk masuk pada mode super user
Ketiga, masuk ke direktori tempat file yang anda ingin compress berada dengan mengetik cd /tempat/file/anda/berada diterminal
Keempat, ketik tar -cvzf (namafile).tar.gz pada terminal
Kelima, file .tar.gz sudah selesai, apa bila kita ingin menambahkan tanggal dan waktu ke log (menyimpan tanggal dan waktu saat anda membuat file .tar.gz) dapat dengan mengetik echo $(date +"%d_%m_%Y") $(date +"%H_%M_%S") >>log_(namafile).txt pada terminal.
Apabila anda hanya menggunakan ">" maka log akan direplace saat eksekusi compress selanjutnya, namun apabila menggunakan ">>" maka tidak akan ter-replace dan akan tertulis di baris selanjutnya.