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.




Sunday, December 18, 2016

Perancangan Perangkat Lunak - Weather-O-Rama

Perangkat lunak yang akan dibahas kami bahasa adalah Aplikasi Pemantau Cuaca berbasis java, Weather-O-Rama. Aplikasi ini memiliki 3 elemen display, yakni kondisi saat ini (suhu, kelembaban, tekanan udara), statistik cuaca dan perkiran sederhana, semua diperbaharui secara real time sebagai objek data cuaca (WeaherData) untuk pengukuran terbaru.
















Tiga hal yang penting dalam apikasi ini adalah stasiun cuaca (perangkat fisik berupada sensor kelembaban, suhu, dan tekanan udara), objek WeatherData (mendapatkan data yang berasal dari stasiun cuaca dan meng-update tampilan) dan tampilan yang menunjukan  ke user kondisi saat ini.

Design pattern yang digunakan pada aplikasi ini adalah Observe Design Pattern. Observe Design Pattern adalah pola hubungan one -to-many antara suatu kumpulan objek, apabila terdapat salah satu objek yang berubah, maka semua objek yang berhubungan akan diberitahu dan akan diperbarui secara otomatis.

Implementasi Observe Design Pattern pada class diagram

pada observe design pattern dibagi menjadi 4 bagian, subject, observer, concrete subject
 dan concrete observer

SUBJECT
berisi class Subject, yakni interface dari aplikasi ini.

OBSERVER
berisi class Observer, yakni semua komponen cuaca akan diimplementasikan dengan observe interface. Hal ini memberikan subjek sebuah interface umum untuk terhubung ketika update observer.

CONCRETE SUBJECT
berisi class WearherData, yakni berisi informasi cuaca saat ini dan untuk mengimplementasikan subjek antarmuka aplikasi ini.

CONCRETE OBSERVER
berisi class CurrentCondititionDisplay, StatisticDisplay, ForecastDisplay dan HeatIndexDisplay, yakni bertugas untuk mendapatkan data akurat cuaca. terdapat fungsi update() yang akan otomatis berjalan ketika update() pada  class observer berfungsi.



Prototype Implementasi System

1. Use Case Diagram
2. CRC-card

3. Class Diagram

4. Sequence Diagram
  • Set measurements

  • Register Observer
5. Component Diagram
6. Deployment Diagram

7. Activity Diagram
  • Set measurements

  • Register Observer

8. Screenshot Program


9. Source Code program

https://github.com/salmanrameli/weather-station-design-pattern


referensi :
rpl.if.its.ac.id/design-pattern-observer/
Head First Design Pattern, Eric Freeman & Elisabeth Freeman





Sunday, November 27, 2016

Proxy Design Pattern

Pola desain atau pola rancangan adalah sebuah istilah di dalam rekayasa perangkat lunak yang mengacu pada solusi umum yang bisa dipergunakan kembali atau berulang-ulang untuk menyelesaikan masalah-masalah yang umum terjadi dalam konteks tertentu atau khusus yang ditemui pada desain perangkat lunak. Sebuah pola desain yang sudah terbentuk bukan berarti desain tersebu


Dalam pemrograman komputer, pola proxy adalah pola desain perangkat lunak. Proxy dalam bentuk yang paling umum adalah fungsi kelas sebagai sebuah antarmuka untuk sesuatu yang lain. Proxy bisa antarmuka untuk apa saja: koneksi jaringan, sebuah objek besar di memori, file, atau beberapa sumber daya lain yang mahal atau tidak mungkin untuk menduplikasi.
Contoh implementasi

Step 1
membuat antarmuka

public interface Image {
   void display();
}

Step 2
membuat kelas konkri


RealImage.java
public class RealImage implements Image {

   private String fileName;

   public RealImage(String fileName){
      this.fileName = fileName;
      loadFromDisk(fileName);
   }

   @Override
   public void display() {
      System.out.println("Displaying " + fileName);
   }

   private void loadFromDisk(String fileName){
      System.out.println("Loading " + fileName);
   }
}
ProxyImage.java
public class ProxyImage implements Image{

   private RealImage realImage;
   private String fileName;

   public ProxyImage(String fileName){
      this.fileName = fileName;
   }

   @Override
   public void display() {
      if(realImage == null){
         realImage = new RealImage(fileName);
      }
      realImage.display();
   }
}

Step 3
menggunakan Proxyimage untuk mendapatkan objek dar kelas realimage ketika dbutuhkan

ProxyPatternDemo.java
public class ProxyPatternDemo {
 
   public static void main(String[] args) {
      Image image = new ProxyImage("test_10mb.jpg");

      //image will be loaded from disk
      image.display(); 
      System.out.println("");
      
      //image will not be loaded from disk
      image.display();  
   }
}
Step 4
Output
Loading test_10mb.jpg
Displaying test_10mb.jpg

Displaying test_10mb.jpg

sumber
https://id.wikipedia.org/wiki/Pola_desain
https://nchy22.wordpress.com/2012/05/14/abstract-factor/
https://www.tutorialspoint.com/design_pattern/proxy_pattern.htm