ada banyak rasa saat coding. ada keringat dan air mata dalam mencoding. keringat saat kau berusaha menyelami makna dalam setiap ilmu coding. dan air mata disaat tiada orang yang dapat membantumu, ketika program dalam keaadaan bugging. apapun rasa dalam mencoding. cobalah untuk mengerjakan sendiri. sampai kau bisa. dan benar-benar bisa.

Tuesday 24 February 2015

Tiling a Pattern in OpenGL

Hai sobat coding  :)
setelah sebelumnya kita telah belajar membuat objek 2D sederhana dengan OpenGL pada Membuat robot 2D - OpenGL, sekarang kita akan belajar teknik tilling.
Contohnya seperti gambar dibawah ini :
Jadi pertama kita membuat bentuk dasar (bassic) dari sebuah pattern tersebut. kemudian gunakan teknik tiling dengan menggunakan looping sehingga terbentuklah kain batik seperti dibawah ini


Berikut adalah source codenya :

#include<GL/glut.h>
#include <Math.h>     // Needed for sin, cos
#define PI 3.14159265f

GLfloat ballRadius = 0.02f;   // radius
int triangles = 100; //jumlah segitiga yg digunakan untuk menggambar circle
GLfloat angle;

void init()
{
 glClearColor(0.23, 0.37, 0.80, 1.0); // set background jadi warna putih
 glColor3f(1.0, 1.0, 1.0);
 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();
 glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
}

void myDisplay()
{
 //glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
 //----------------------------------------------------------------------------------------------
 //daun
 glBegin(GL_POLYGON);
  glColor3f(0.90, 0.90, 1.00);//make the color lavender
   glVertex2f(-0.10, 0.30);
   glVertex2f(-0.15, 0.60);
   glVertex2f(0.00, 0.75);
   glVertex2f(0.15, 0.60);
   glVertex2f(0.10, 0.30);
   glEnd();
 glBegin(GL_POLYGON);
  glColor3f(0.90, 0.90, 1.00);//make the color lavender
   glVertex2f(-0.10, -0.30);
   glVertex2f(-0.15, -0.60);
   glVertex2f(0.00, -0.75);
   glVertex2f(0.15, -0.60);
   glVertex2f(0.10, -0.30);
   glEnd();
 glBegin(GL_POLYGON);
  glColor3f(0.90, 0.90, 1.00);//make the color lavender
   glVertex2f(-0.10, 0.20);
   glVertex2f(-0.30, 0.50);
   glVertex2f(-0.50, 0.50);
   glVertex2f(-0.50, 0.30);
   glVertex2f(-0.20, 0.10);
   glEnd();
 glBegin(GL_POLYGON);
  glColor3f(0.90, 0.90, 1.00);//make the color lavender
   glVertex2f(0.10, 0.20);
   glVertex2f(0.30, 0.50);
   glVertex2f(0.50, 0.50);
   glVertex2f(0.50, 0.30);
   glVertex2f(0.20, 0.10);
   glEnd();
 glBegin(GL_POLYGON);
  glColor3f(0.90, 0.90, 1.00);//make the color lavender
   glVertex2f(-0.10, -0.20);
   glVertex2f(-0.30, -0.50);
   glVertex2f(-0.50, -0.50);
   glVertex2f(-0.50,-0.30);
   glVertex2f(-0.20, -0.10);
   glEnd();
 glBegin(GL_POLYGON);
  glColor3f(0.90, 0.90, 1.00);//make the color lavender
   glVertex2f(0.10, -0.20);
   glVertex2f(0.30, -0.50);
   glVertex2f(0.50, -0.50);
   glVertex2f(0.50, -0.30);
   glVertex2f(0.20, -0.10);
   glEnd();
 glBegin(GL_POLYGON);
  glColor3f(0.90, 0.90, 1.00);//make the color lavender
   glVertex2f(-0.75, -0.00);
   glVertex2f(-0.60, 0.15);
   glVertex2f(-0.35, 0.10);
   glVertex2f(-0.35, -0.10);
   glVertex2f(-0.60, -0.15);
   glEnd();
 glBegin(GL_POLYGON);
  glColor3f(0.90, 0.90, 1.00);//make the color lavender
   glVertex2f(0.75, -0.00);
   glVertex2f(0.60, 0.15);
   glVertex2f(0.35, 0.10);
   glVertex2f(0.35, -0.10);
   glVertex2f(0.60, -0.15);
   glEnd();
 //--------------------------------------------------------------------------------------------------
 //circle
 glBegin(GL_TRIANGLE_FAN);
    glColor3f(0.90, 0.90, 1.00);//make the color lavender
    glVertex2f(0.0, 0.0);       // Center of circle

    for (int i = 0; i <= triangles; i++)
    { // Last vertex same as first vertex
    angle = i * 2.0f * PI / triangles;  // 360 deg for all segments
    glVertex2f(cos(angle) * 0.4, sin(angle) * 0.4);
    }
    glEnd();
 //--------------------------------------------------------------------------------------------------
 //atas
  glBegin(GL_TRIANGLES);
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(-0.10, -0.10);
   glVertex2f(0.00, -0.35);
   glVertex2f(0.10, -0.10);
   glEnd();
 //bawah
  glBegin(GL_TRIANGLES);
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(-0.10, 0.10);
   glVertex2f(0.00, 0.35);
   glVertex2f(0.10, 0.10);
   glEnd();
  glBegin(GL_TRIANGLES);
 //kanan
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(0.10, 0.10);
   glVertex2f(0.35, 0.00);
   glVertex2f(0.10, -0.10);
   glEnd();
 //kiri
  glBegin(GL_TRIANGLES);
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(-0.10, 0.10);
   glVertex2f(-0.35, 0.00);
   glVertex2f(-0.10, -0.10);
   glEnd();
 //kanan atas 
  glBegin(GL_TRIANGLES);
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(0.00, 0.15);
   glVertex2f(0.25, 0.25);
   glVertex2f(0.15, 0.00);
   glEnd();
 //kanan bawah
  glBegin(GL_TRIANGLES);
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(0.00, -0.15);
   glVertex2f(0.25, -0.25);
   glVertex2f(0.15, 0.00);
   glEnd();
 //kiri bawah
  glBegin(GL_TRIANGLES);
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(0.00, -0.15);
   glVertex2f(-0.25, -0.25);
   glVertex2f(-0.15, 0.00);
   glEnd();
 //kiri atas 
  glBegin(GL_TRIANGLES);
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(0.00, 0.15);
   glVertex2f(-0.25, 0.25);
   glVertex2f(-0.15, 0.00);
   glEnd();
 //kotak
 glBegin(GL_POLYGON);
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(-0.15, 0.15);
   glVertex2f(0.15, 0.15);
   glVertex2f(0.15, -0.15);
   glVertex2f(-0.15, -0.15);
   glEnd();
 //---------------------------------------------------------------------------------------------------
 //circle
 glBegin(GL_TRIANGLE_FAN);
    glColor3f(1.0, 1.0, 1.0);//make the color white
    glVertex2f(0.0, 0.0);       // Center of circle

    for (int i = 0; i <= triangles; i++)
    { // Last vertex same as first vertex
    angle = i * 2.0f * PI / triangles;  // 360 deg for all segments
    glVertex2f(cos(angle) * ballRadius, sin(angle) * ballRadius);
    }
    glEnd();
 //------------------------------------------------------------------------------------------------------
   //..pojok kanan atas
 glBegin(GL_POLYGON);
  glColor3f(0.90, 0.90, 1.00);//make the color lavender
   glVertex2f(0.20, 1.00);
   glVertex2f(0.30, 0.85);
   glVertex2f(0.65, 0.92);
   glVertex2f(0.65, 1.00);
   glEnd();
 glBegin(GL_POLYGON);
  glColor3f(0.90, 0.90, 1.00);//make the color lavender
   glVertex2f(1.00, 0.20);
   glVertex2f(0.82, 0.30);
   glVertex2f(0.95, 0.80);
   glVertex2f(1.00, 0.80);
   glEnd();
   //..pojok kiri atas
 glBegin(GL_POLYGON);
  glColor3f(0.90, 0.90, 1.00);//make the color lavender
   glVertex2f(-0.20, 1.00);
   glVertex2f(-0.30, 0.85);
   glVertex2f(-0.65, 0.92);
   glVertex2f(-0.65, 1.00);
   glEnd();
 glBegin(GL_POLYGON);
  glColor3f(0.90, 0.90, 1.00);//make the color lavender
   glVertex2f(-1.00, 0.20);
   glVertex2f(-0.82, 0.30);
   glVertex2f(-0.95, 0.80);
   glVertex2f(-1.00, 0.80);
   glEnd();
  //..pojok kiri bawah
 glBegin(GL_POLYGON);
  glColor3f(0.90, 0.90, 1.00);//make the color lavender
   glVertex2f(-0.20, -1.00);
   glVertex2f(-0.30, -0.85);
   glVertex2f(-0.65, -0.92);
   glVertex2f(-0.65, -1.00);
   glEnd();
 glBegin(GL_POLYGON);
  glColor3f(0.90, 0.90, 1.00);//make the color lavender
   glVertex2f(-1.00, -0.20);
   glVertex2f(-0.82, -0.30);
   glVertex2f(-0.95, -0.80);
   glVertex2f(-1.00, -0.80);
   glEnd();
  //..pojok kanan bawah
 glBegin(GL_POLYGON);
  glColor3f(0.90, 0.90, 1.00);//make the color lavender
   glVertex2f(0.20, -1.00);
   glVertex2f(0.30, -0.85);
   glVertex2f(0.65, -0.92);
   glVertex2f(0.65, -1.00);
   glEnd();
 glBegin(GL_POLYGON);
  glColor3f(0.90, 0.90, 1.00);//make the color lavender
   glVertex2f(1.00, -0.20);
   glVertex2f(0.82, -0.30);
   glVertex2f(0.95, -0.80);
   glVertex2f(1.00, -0.80);
   glEnd();
 //------------------------------------------------------------------------------------------------------   
 glBegin(GL_POLYGON);
  glColor3f(0.90, 0.90, 1.00);//make the color lavender
   glVertex2f(1.00, 1.00);
   glVertex2f(0.65, 1.00);
   glVertex2f(0.65, 0.65);
   glVertex2f(1.00, 0.65);
   glEnd();
 glBegin(GL_POLYGON);
  glColor3f(0.90, 0.90, 1.00);//make the color lavender
   glVertex2f(-1.00, 1.00);
   glVertex2f(-0.65, 1.00);
   glVertex2f(-0.65, 0.65);
   glVertex2f(-1.00, 0.65);
   glEnd();
 glBegin(GL_POLYGON);
  glColor3f(0.90, 0.90, 1.00);//make the color lavender
   glVertex2f(-1.00, -1.00);
   glVertex2f(-0.65, -1.00);
   glVertex2f(-0.65, -0.65);
   glVertex2f(-1.00, -0.65);
   glEnd();
 glBegin(GL_POLYGON);
  glColor3f(0.90, 0.90, 1.00);//make the color lavender
   glVertex2f(1.00, -1.00);
   glVertex2f(0.65, -1.00);
   glVertex2f(0.65, -0.65);
   glVertex2f(1.00, -0.65);
   glEnd();
 //------------------------------------------------------------------------------------------------------
    //..pojok kiri atas
 //kanan
    glBegin(GL_TRIANGLES);
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(-1.00, 0.80);
   glVertex2f(-0.60, 1.00);
   glVertex2f(-1.00, 1.00);
   glEnd();   
 //kanan bawah
  glBegin(GL_TRIANGLES);
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(-0.82, 1.00);
   glVertex2f(-0.70, 0.70);
   glVertex2f(-1.00, 0.82);
   glEnd();  
 //bawah
  glBegin(GL_TRIANGLES);
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(-1.00, 0.60);
   glVertex2f(-0.80, 1.00);
   glVertex2f(-1.00, 1.00);
   glEnd();
 //..pojok kiri bawah
 //kanan
    glBegin(GL_TRIANGLES);
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(-1.00, -0.80);
   glVertex2f(-0.60, -1.00);
   glVertex2f(-1.00, -1.00);
   glEnd();   
 //kanan bawah
  glBegin(GL_TRIANGLES);
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(-0.82, -1.00);
   glVertex2f(-0.70, -0.70);
   glVertex2f(-1.00, -0.82);
   glEnd();  
 //bawah
  glBegin(GL_TRIANGLES);
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(-1.00, -0.60);
   glVertex2f(-0.80, -1.00);
   glVertex2f(-1.00, -1.00);
   glEnd();
 //..pojok kanan bawah
 //kanan
    glBegin(GL_TRIANGLES);
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(1.00, -0.80);
   glVertex2f(0.60, -1.00);
   glVertex2f(1.00, -1.00);
   glEnd();   
 //kanan bawah
  glBegin(GL_TRIANGLES);
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(0.82, -1.00);
   glVertex2f(0.70, -0.70);
   glVertex2f(1.00, -0.82);
   glEnd();  
 //bawah
  glBegin(GL_TRIANGLES);
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(1.00, -0.60);
   glVertex2f(0.80, -1.00);
   glVertex2f(1.00, -1.00);
   glEnd();
 //..pojok kanan atas
 //kanan
    glBegin(GL_TRIANGLES);
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(1.00, 0.80);
   glVertex2f(0.60, 1.00);
   glVertex2f(1.00, 1.00);
   glEnd();   
 //kanan bawah
  glBegin(GL_TRIANGLES);
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(0.82, 1.00);
   glVertex2f(0.70, 0.70);
   glVertex2f(1.00, 0.82);
   glEnd();  
 //bawah
  glBegin(GL_TRIANGLES);
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(1.00, 0.60);
   glVertex2f(0.80, 1.00);
   glVertex2f(1.00, 1.00);
   glEnd();
 //----------------------------------------------------------------------------------------------------
   //..atas
 glBegin(GL_POLYGON);
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(-0.10, 0.60);
   glVertex2f(0.00, 0.70);
   glVertex2f(0.10, 0.60);
   glVertex2f(0.05, 0.45);
   glVertex2f(-0.05, 0.45);
   glEnd();
 //..bawah
 glBegin(GL_POLYGON);
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(-0.10, -0.60);
   glVertex2f(0.00, -0.70);
   glVertex2f(0.10, -0.60);
   glVertex2f(0.05, -0.45);
   glVertex2f(-0.05, -0.45);
   glEnd();
 //..kiri
 glBegin(GL_POLYGON);
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(-0.70, 0.00);
   glVertex2f(-0.60, 0.10);
   glVertex2f(-0.40, 0.05);
   glVertex2f(-0.40, -0.05);
   glVertex2f(-0.60, -0.10);
   glEnd();
 //..kanan
 glBegin(GL_POLYGON);
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(0.70, 0.00);
   glVertex2f(0.60, 0.10);
   glVertex2f(0.40, 0.05);
   glVertex2f(0.40, -0.05);
   glVertex2f(0.60, -0.10);
   glEnd();
 //..kiri atas
 glBegin(GL_POLYGON);
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(-0.45, 0.35);
   glVertex2f(-0.45, 0.45);
   glVertex2f(-0.35, 0.45);
   glVertex2f(-0.27, 0.32);
   glVertex2f(-0.32, 0.26);
   glEnd();
 //..kanan atas
 glBegin(GL_POLYGON);
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(0.45, 0.35);
   glVertex2f(0.45, 0.45);
   glVertex2f(0.35, 0.45);
   glVertex2f(0.27, 0.32);
   glVertex2f(0.32, 0.26);
   glEnd();
 //..kiri bawah
 glBegin(GL_POLYGON);
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(-0.45, -0.35);
   glVertex2f(-0.45, -0.45);
   glVertex2f(-0.35, -0.45);
   glVertex2f(-0.27, -0.32);
   glVertex2f(-0.32, -0.26);
   glEnd();
 //..kanan bawah
 glBegin(GL_POLYGON);
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(0.45, -0.35);
   glVertex2f(0.45, -0.45);
   glVertex2f(0.35, -0.45);
   glVertex2f(0.27, -0.32);
   glVertex2f(0.32, -0.26);
   glEnd();
 //---------------------------------------------------------------------------------------------
 //..pojok kanan atas
 glBegin(GL_POLYGON);
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(0.97, 0.50);
   glVertex2f(1.00, 0.50);
   glVertex2f(1.00, 0.25);
   glVertex2f(0.93, 0.30);
   glEnd();
 glBegin(GL_POLYGON);
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(0.25, 1.00);
   glVertex2f(0.32, 0.92);
   glVertex2f(0.50, 0.97);
   glVertex2f(0.50, 1.00);
   glEnd();
 //..pojok kiri atas
 glBegin(GL_POLYGON);
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(-0.97, 0.50);
   glVertex2f(-1.00, 0.50);
   glVertex2f(-1.00, 0.25);
   glVertex2f(-0.93, 0.30);
   glEnd();
 glBegin(GL_POLYGON);
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(-0.25, 1.00);
   glVertex2f(-0.32, 0.92);
   glVertex2f(-0.50, 0.97);
   glVertex2f(-0.50, 1.00);
   glEnd();
 //..pojok kanan bawah
 glBegin(GL_POLYGON);
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(0.97, -0.50);
   glVertex2f(1.00, -0.50);
   glVertex2f(1.00, -0.25);
   glVertex2f(0.93, -0.30);
   glEnd();
 glBegin(GL_POLYGON);
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(0.25, -1.00);
   glVertex2f(0.32, -0.92);
   glVertex2f(0.50, -0.97);
   glVertex2f(0.50, -1.00);
   glEnd();
 //..pojok kiri bawah
 glBegin(GL_POLYGON);
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(-0.97, -0.50);
   glVertex2f(-1.00, -0.50);
   glVertex2f(-1.00, -0.25);
   glVertex2f(-0.93, -0.30);
   glEnd();
 glBegin(GL_POLYGON);
  glColor3f(0.00, 0.00, 0.00);//make the color black
   glVertex2f(-0.25, -1.00);
   glVertex2f(-0.32, -0.92);
   glVertex2f(-0.50, -0.97);
   glVertex2f(-0.50, -1.00);
   glEnd();
  glFlush();
}

void drawTiling()
{
 glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
 for (int i=0; i < 5; i++)
  for (int j=0; j<5; j++)
  {
   glViewport(i*120, j*120, 120, 120); // viewport berukuran 120 x 120
   
   myDisplay();
  }
}
int main(int argc, char** argv)
{
 glutInit(&argc, argv);
 glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
 glutInitWindowSize(600,600);
 glutInitWindowPosition(350,100);
 glutCreateWindow("Batik Ibu_5111100201_Ika Ayu Rahmania Islam");
 glutDisplayFunc(drawTiling);
 //glutDisplayFunc(myDisplay);
 init();
 glutMainLoop();

}

Sunday 22 February 2015

Make a Simple 2D Robot in OpenGL

Halo, sobat coding :)

Mengenai mata kuliah Grafika Komputer, kita akan belajar bagaimana cara membuat gambar pada komputer. Berikut ini adalah sebuah contoh 2D sederhana yaitu membentuk robot. Dalam membuat sebuah gambar kita membutuhkan library OpenGL

Untuk materi pengenalan Grafika Komputer dan dasar-dasar OpenGL, dapat Anda unduh di Pengenalan sistem grafika dan dasar-dasar penggunaan OpenGL pada dasar - dasar OpenGL

Screenshoot Program
while window program is running
Berikut adalah source codenya :

#include<GL/glut.h>

void init()
{
 glClearColor(0.69, 0.89, 1.0, 1.0);
 glColor3f(1.0, 1.0, 1.0);
 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();
 glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
}
void mydisplay()
{
 glClear(GL_COLOR_BUFFER_BIT);
  //head
  glBegin(GL_POLYGON);
   glColor3f(1.0, 0.92, 0.80); //make the color Blanced Almond
   glVertex2f(-0.2, 0.9);
   glVertex2f(-0.2, 0.6);
   glVertex2f(0.2, 0.6);
   glVertex2f(0.2, 0.9);
  glEnd();
  //eye left
  glBegin(GL_POLYGON);
   glColor3f(0.0, 0.0, 0.0); //make the color Black
   glVertex2f(-0.15, 0.82);
   glVertex2f(-0.15, 0.75);
   glVertex2f(-0.05, 0.75);
   glVertex2f(-0.05, 0.82);
  glEnd();
  //eye right
  glBegin(GL_POLYGON);
   glColor3f(0.0, 0.0, 0.0); //make the color Black
   glVertex2f(0.15, 0.82);
   glVertex2f(0.15, 0.75);
   glVertex2f(0.05, 0.75);
   glVertex2f(0.05, 0.82);
  glEnd();
  //alis kanan
  glBegin(GL_POLYGON);
   glColor3f(0.0, 0.0, 0.0); //make the color Black
   glVertex2f(0.15, 0.85);
   glVertex2f(0.15, 0.87);
   glVertex2f(0.05, 0.87);
   glVertex2f(0.05, 0.85);
  glEnd();
  //alis kiri
  glBegin(GL_POLYGON);
   glColor3f(0.0, 0.0, 0.0); //make the color Black
   glVertex2f(-0.15, 0.85);
   glVertex2f(-0.15, 0.87);
   glVertex2f(-0.05, 0.87);
   glVertex2f(-0.05, 0.85);
  glEnd();
  //bibir senyum
  glBegin(GL_POLYGON);
   glColor3f(0.69, 0.19, 0.38); //make the color Maroon
   glVertex2f(-0.05, 0.65);
   glVertex2f(-0.05, 0.67);
   glVertex2f(0.05, 0.67);
   glVertex2f(0.05, 0.65);
  glEnd();
  glBegin(GL_POLYGON);
   glColor3f(0.69, 0.19, 0.38); //make the color Maroon
   glVertex2f(-0.05, 0.65);
   glVertex2f(-0.05, 0.70);
   glVertex2f(-0.04, 0.70);
   glVertex2f(-0.04, 0.65);
  glEnd();
  glBegin(GL_POLYGON);
   glColor3f(0.69, 0.19, 0.38); //make the color Maroon
   glVertex2f(0.05, 0.65);
   glVertex2f(0.05, 0.70);
   glVertex2f(0.06, 0.70);
   glVertex2f(0.06, 0.65);
  glEnd();
  //telinga kanan
  glBegin(GL_POLYGON);
   glColor3f(0.55, 0.55, 0.51); //make the color Azure
   glVertex2f(0.20, 0.80);
   glVertex2f(0.20, 0.70);
   glVertex2f(0.23, 0.70);
   glVertex2f(0.23, 0.80);
  glEnd();
  //telinga kiri
  glBegin(GL_POLYGON);
   glColor3f(0.55, 0.55, 0.51); //make the color Azure
   glVertex2f(-0.20, 0.80);
   glVertex2f(-0.20, 0.70);
   glVertex2f(-0.23, 0.70);
   glVertex2f(-0.23, 0.80);
  glEnd();
  //leher
  glBegin(GL_POLYGON);
   glColor3f(0.55, 0.55, 0.51); //make the color Azure
   glVertex2f(-0.07, 0.60);
   glVertex2f(-0.07, 0.55);
   glVertex2f(0.07, 0.55);
   glVertex2f(0.07, 0.60);
  glEnd();
  //badan
  glBegin(GL_POLYGON);
   glColor3f(0.00, 0.00, 0.55); //make the color Dark Blue
   glVertex2f(-0.20, 0.10);
   glVertex2f(-0.20, 0.55);
   glVertex2f(0.20, 0.55);
   glVertex2f(0.20, 0.10);
  glEnd();
  //sendi kiri
  glBegin(GL_POLYGON);
   glColor3f(0.55, 0.55, 0.51); //make the color Azure
   /*glVertex2f(-0.30, 0.55);
   glVertex2f(-0.30, 0.50);
   glVertex2f(-0.20, 0.50);
   glVertex2f(-0.20, 0.55);*/
   glVertex2f(-0.30, 0.55);
   glVertex2f(-0.30, 0.42);
   glVertex2f(-0.20, 0.42);
   glVertex2f(-0.20, 0.55);
  glEnd();
  //sendi kanan
  glBegin(GL_POLYGON);
   glColor3f(0.55, 0.55, 0.51); //make the color Azure
   /*glVertex2f(0.30, 0.55);
   glVertex2f(0.30, 0.50);
   glVertex2f(0.20, 0.50);
   glVertex2f(0.20, 0.55);*/
   glVertex2f(0.30, 0.55);
   glVertex2f(0.30, 0.42);
   glVertex2f(0.20, 0.42);
   glVertex2f(0.20, 0.55);
  glEnd();
  //lengan kiri
  glBegin(GL_POLYGON);
   glColor3f(0.55, 0.00, 0.00); //make the color Dark red
   /*glVertex2f(-0.30, 0.50);
   glVertex2f(-0.40, 0.30);
   glVertex2f(-0.30, 0.30);
   glVertex2f(-0.20, 0.45);
   glVertex2f(-0.20, 0.50);*/
   glVertex2f(-0.30, 0.55);
   glVertex2f(-0.30, 0.45);
   glVertex2f(-0.50, 0.45);
   glVertex2f(-0.50, 0.55);
  glEnd();
  glBegin(GL_POLYGON);
   glColor3f(0.55, 0.00, 0.00); //make the color Dark red
   glVertex2f(-0.50, 0.70);
   glVertex2f(-0.50, 0.55);
   glVertex2f(-0.40, 0.55);
   glVertex2f(-0.40, 0.70);
  glEnd();
  //lengan kanan
  glBegin(GL_POLYGON);
   glColor3f(0.55, 0.00, 0.00); //make the color Dark red
   /*glVertex2f(0.30, 0.50);
   glVertex2f(0.40, 0.30);
   glVertex2f(0.30, 0.30);
   glVertex2f(0.20, 0.45);
   glVertex2f(0.20, 0.50);*/
   glVertex2f(0.30, 0.55);
   glVertex2f(0.30, 0.45);
   glVertex2f(0.50, 0.45);
   glVertex2f(0.50, 0.55);
  glEnd();
  glBegin(GL_POLYGON);
   glColor3f(0.55, 0.00, 0.00); //make the color Dark red
   glVertex2f(0.50, 0.45);
   glVertex2f(0.50, 0.20);
   glVertex2f(0.40, 0.20);
   glVertex2f(0.40, 0.45);
  glEnd();
  //telapak kiri
  glBegin(GL_POLYGON);
   glColor3f(0.00, 0.55, 0.55); //make the color Dark cyan
   glVertex2f(-0.50, 0.70);
   glVertex2f(-0.50, 0.77);
   glVertex2f(-0.40, 0.77);
   glVertex2f(-0.40, 0.70);
  glEnd();
  //telapak kanan
  glBegin(GL_POLYGON);
   glColor3f(0.00, 0.55, 0.55); //make the color Royal blue
   glVertex2f(0.50, 0.20);
   glVertex2f(0.50, 0.27);
   glVertex2f(0.40, 0.27);
   glVertex2f(0.40, 0.20);
  glEnd();
  //sabuk
  glBegin(GL_POLYGON);
   glColor3f(0.20, 0.20, 0.20); //make the color Grey 20
   glVertex2f(-0.22, 0.10);
   glVertex2f(-0.22, 0.00);
   glVertex2f(0.22, 0.00);
   glVertex2f(0.22, 0.10);
  glEnd();
  //paha kiri
  glBegin(GL_POLYGON);
   glColor3f(0.00, 0.00, 0.55); //make the color Dark Blue
   glVertex2f(-0.20, 0.00);
   glVertex2f(-0.20, -0.20);
   glVertex2f(-0.02, -0.20);
   glVertex2f(-0.02, 0.00);
  glEnd();
  //paha kanan
  glBegin(GL_POLYGON);
   glColor3f(0.00, 0.00, 0.55); //make the color Dark Blue
   glVertex2f(0.20, 0.00);
   glVertex2f(0.20, -0.20);
   glVertex2f(0.02, -0.20);
   glVertex2f(0.02, 0.00);
  glEnd();
  //kaki kanan
  glBegin(GL_POLYGON);
   glColor3f(0.20, 0.20, 0.20); //make the color Grey 20
   glVertex2f(0.18, -0.20);
   glVertex2f(0.18, -0.40);
   glVertex2f(0.05, -0.40);
   glVertex2f(0.05, -0.20);
  glEnd();
  //kaki kiri
  glBegin(GL_POLYGON);
   glColor3f(0.20, 0.20, 0.20); //make the color Grey 20
   glVertex2f(-0.18, -0.20);
   glVertex2f(-0.18, -0.40);
   glVertex2f(-0.05, -0.40);
   glVertex2f(-0.05, -0.20);
  glEnd();
  //spatu kiri
  glBegin(GL_POLYGON);
   glColor3f(0.55, 0.00, 0.00); //make the color Dark red
   glVertex2f(-0.18, -0.40);
   glVertex2f(-0.25, -0.43);
   glVertex2f(-0.25, -0.50);
   glVertex2f(-0.05, -0.50);
   glVertex2f(-0.05, -0.40);
  glEnd();
  //spatu kanan
  glBegin(GL_POLYGON);
   glColor3f(0.55, 0.00, 0.00); //make the color Dark red
   glVertex2f(0.18, -0.40);
   glVertex2f(0.25, -0.43);
   glVertex2f(0.25, -0.50);
   glVertex2f(0.05, -0.50);
   glVertex2f(0.05, -0.40);
  glEnd();
   glFlush();


}
int main(int argc, char** argv)
{
 glutInit(&argc, argv);
 glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
 glutInitWindowSize(500,500);
 glutInitWindowPosition(0,0);
 glutCreateWindow("simpleRobot_5111100201_IkaAyuRahmania");
 glutDisplayFunc(mydisplay);

 init();

 glutMainLoop();
}

Friday 20 February 2015

belajar DNS

Halo sobat coding :)

kali ini kita akan belajar mengenai DNS. apakah DNS itu ? DNS adalah Domain Name Server, yaitu server yang digunakan untuk mengetahui IP Address suatu host lewat host name-nya. Dalam dunia internet, komputer berkomunikasi satu sama lain dengan mengenali IP Address-nya. Namun bagi manusia tidak mungkin menghafalkan IP address tersebut, manusia lebih mudah menghapalkan kata-kata seperti www.yahoo.com, www.google.com, atau www.friendster.com. DNS berfungsi untuk mengkonversi nama yang bisa terbaca oleh manusia ke dalam IP addresshost yang bersangkutan untuk dihubungi.

untuk lebih memahami maksud dari suatu ilmu, disarankan kita mempraktikannya, seperti dalam sebuah filosofi dibawah ini, yang diungkapkan oleh seorang headmaster pada suatu sekolah di Malaysia saat saya membantu ibu bertugas disana :)
"kalau mereka melakukan, mereka akan ingat"
Baiklah, dibawah ini terdapat topologi jaringan baru. dimana terdapat satu buah router bernama Patrick, dua buah switch, dan 8 buah host. diantara 8 buah host ini ada 2 pc nantinya yang akan menjadi server DNS, yaitu Sticth dan Elmo :)

Langkah Pertama adalah ..
membuat topologi nya dalam UML. buka terminal anda, jalankan dengan membuat sebuah script untuk menghidupkan atau menyalakan jaringan virtual tersebut, misalnya mulai.sh
kelihatannya mungkin memang rumit, tapi membentuk topologi virtual adalah hal yang seru.
"Anggap saja kita mempunyai sebuah warnet, dengan komputer-komputer baru. dan disinilah saat kita memberikan alamat IP dan mengesetnya supaya warnet baru kita ini dapat tersambung ke internet"
aturan UML pembuatan  topologi virtual pada router,swicth, dan host sudah pernah saya post pada Membentuk topologi jaringan virtual Anda dapat melihat syntaxnya pada link tersebut. kemudian untuk membuat seperti topologi diatas, ketikkan syntax dibawah ini

#bikin switch

uml_switch -unix iniswitch > /dev/null < /dev/null &

uml_switch -unix ituswitch > /dev/null < /dev/null &

#bikin router

xterm -T Patrick -e  linux ubd0=patrick,uml umid=patrick eth0=tuntap,,,10.151.76.41 mem=48M eth1=daemon,,,iniswitch eth2=daemon,,,ituswitch &

#bikin 8 komputer

xterm -T Snoopy -e linux ubd0=snoopy,uml umid=snoopy mem=50M eth0=daemon,,,iniswitch &

xterm -T WoodStack -e linux ubd0=woodstack,uml umid=woodstack mem=50M eth0=daemon,,,iniswitch &

xterm -T Doraemon -e linux ubd0=doraemon,uml umid=doraemon mem=50M eth0=daemon,,,iniswitch &

xterm -T Stitch -e linux ubd0=stitch,uml umid=stitch mem=50M eth0=daemon,,,iniswitch &

xterm -T Spike -e linux ubd0=spike,uml umid=spike mem=50M eth0=daemon,,,ituswitch &

xterm -T Elmo -e linux ubd0=elmo,uml umid=elmo mem=50M eth0=daemon,,,ituswitch &

xterm -T Jery -e linux ubd0=jery,uml umid=jery mem=50M eth0=daemon,,,ituswitch &

xterm -T Tom -e linux ubd0=tom,uml umid=tom mem=50M eth0=daemon,,,ituswitch &

untuk memberhentikan topologi yang berjalan ini, kita tidak perlu mematikannya satu-satu. kita cukup membuat satu buah script misalnya bernama matikan.sh yang berisi perintah mematikan dari topologi jaringan virtual tersebut
uml_mconsole patrick halt
uml_mconsole snoopy halt
uml_mconsole woodstack halt
uml_mconsole doraemon halt
uml_mconsole spike halt
uml_mconsole elmo halt
uml_mconsole jery halt
uml_mconsole tom halt
uml_mconsole sticth halt
uml_mconsole iniswitch halt
uml_mconsole ituswitch halt

Setelah komputer-komputer virtual tersebut terbentuk, langkah selanjutnya adalah mengeset atau menyeting konfigurasi IP nya pada nano /etc/network/interfaces. pada cara ini, saya menggunakan cara subneting, dimana sebelah kiri topologi menggunakan eth0 yang berIP kan 0, dan sebelah kanan topologi menggunakan eth1 yang berIP kan 1. cara lain adalah dengan menggunakan bridge

interface pada router
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
       address 10.151.76.42
       netmask 255.255.255.0
       gateway 10.151.76.41

auto eth1
iface eth1 inet static
       address 10.151.76.42
       netmask 255.255.255.0
       gateway 10.151.76.41


interface pada sisi belahan kiri (Misal Doraemon)
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
       address 172.16.0.5
       netmask 255.255.255.0
       gateway 172.16.0.5




interface pada sisi belahan kanan (Misal Spike)
auto lo
iface lo inet loopback

auto eth1
iface eth1 inet static
       address 172.16.1.12
       netmask 255.255.255.0
       gateway 172.16.1.12



untuk mengetes koneksi semua host, maka kita coba dengan mengeping satu host dengan host lainnya, atau mengeping router. kemudian untuk mengetes koneksi ke tuntap atau jaringan luar, kita coba dengan mengeping its.ac.id misal ping its.ac.id

Satu domain besar bernama klpxx.jarkom.com, yang ditangain oleh stitch (yang tergabung dalam domain ini adalah selain woodstock & Snoopy). Setelah menginstall pada tempat diatas, sekarang masuk kedalam server Stitch yang menangani domain besar bernama klpxx.jarkom.com. 
suatu domain besar pada Stitch, berarti disini Stitch menjadi server DNS yang beranggotakan semua host kecuali woodstock, snoopy, dan server elmo itu sendiri. Oleh sebab itu pada PC ini kita terlebih dahulu menginstal bind9 dan dnsutils melalui
apt-get install bind9 dnsutills

 kemudian kita buat zonenya melalui nano /etc/bind/named.conf.local
zone "klpc11.jarkom.com"
{
    type master;
    file "/etc/bind/klpc11.jarkom.com.zone";
};
lalu kita setting konfigurasi nya pada nano /etc/bind/klpc11.jarkom.com.zone
untuk mengetes nya kita coba dengan menge-ping pada salah satu host yaitu ping klpc11.jarkom.com. jika berhasil, maka ping akan mengarah kepada IP sticth yaitu (172.16.0.2)


Subdomain kartun.klpxx.jarkom.com, beranggotakan woodstock, yang ditangani oleh Stitch. Komputer woodstock akan bernama woodstock.kartun.klpxx.jarkom.com
disini berarti kita akan membuat sebuah sub domain bernama kartun.klpc11.jarkom.com yang ditangani oleh sticth. kartun ini beranggotakan woodstock, sehingga apabila kita memanggil atau mengeping woodstock.kartun.klpc11.jarkom.com maka akan mengarah kepada IP woodstock, yaitu (172.16.0.4)
berikut adalah konfigurasinya dengan menambahkan zone baru pada sticth

zone "klpc11.jarkom.com"
{
    type master;
    file "/etc/bind/klpc11.jarkom.com.zone";
};
zone "kartun.klpc11.jarkom.com"
{
    type master;
    file "/etc/bind/kartun.klpc11.jarkom.com.zone";
};
sehingga bila ini berhasil, maka saat kita mengeping ping woodstock.kartun.klpc11.jarkom.com maka akan mengarah ke IP woodstock

Subdomain anime.klpxx.jarkom.com, beranggotakan snoopy, yang ditangani oleh elmo. Komputer snoopy akan bernama snoopy.anime.klpxx.jarkom.com
woodstock.kartun.klpxx.jarkom.com akan menjadi slave untuk Anime.klpxx.jarkom.com
sama halnya dengan soal diatas, berarti kita akan membuat suatu subdomain bernama anime.klpc11.jarkom.com yang ditangani oleh server elmo dan beranggotakan snoopy. sedangkan woodstock.kartun.klpc11.jarkom.com akan menjadi slave, dan anime.klpc11.jarkom.com akan menjadi masternya
hakikat master dan slave adalah, ibarat slave harus memiliki atau mengkopy buku telepon yang dimiliki oleh masternya. buku telepon tersebut berisi alamat-alamat dari komputer yang terhubung pada masternya. sehingga apabila server master mati, host lain yang sedang mengeping salah satu host pada master akan tetap bisa terhubung melalui koneksi atau salinan alamat buku telepon yang dimiliki server slave
kita menuju komputer server Elmo dan mengetikkan konfigurasi seperti dibawah ini
zone "klpc11.jarkom.com"
{
    type slave;
    file "/etc/bind/klpc11.jarkom.com.zone";
    masters { 172.16.0.2;};
};
zone "kartun.klpc11.jarkom.com"
{
    type master;
    masters {172.16.0.2};
    file "/etc/bind/kartun.klpc11.jarkom.com.zone";
};

zone "anime.klpc11.jarkom.com"
{
     type master;
file "/etc/bind/anime/anime.klpc11.jarkom.com.zone";
allow-transfer {172.16.0.4;};
};

 kemudian pada komputer woodstock kita juga membuat konfigurasinya sebagai berikut
zone "anime.klpc11.jarkom.com"
{
     type slave;
     file "/etc/bind/anime/anime.klpc11.jarkom.com.zone";
     masters {172.16.1.13;};
};
cara menguji kebenarannya adalah dengan mematikan atau men-halt komputer Elmo, lalu coba mengeping ping snoopy.anime.klpc11.jarkom.com pada salah satu host lainnya, maka host tersebut akan langsung terhubung dengan mendapatkan IP (172.16.0.3) meskipun server master elmo sudah mati.  
Kalau melakukan ping ke admin.klpxx.jarkom.com maka akan mengarah ke Doraemon
jika kita melakukan ping admin.klpc11.jarkom.com maka kita akan diarahkah ke komputer Doraemon. ini berarti kita suatu alias, yaitu dengan menggunakan CNAME.
CNAME Records adalah domain name alias, berfungsi untuk mengarahkan DNS domain anda (atau subdomain) ke nama alias server anda. 
 kita perhatikan baris dari 2 baris terbawah
admin      IN    CNAME     doraemon
berarti kita mendaftarkan, apabila host memanggil admin.klp........... maka akan diarahkan ke komputer doraemon yaitu (172.16.0.5)

Kalau melakukan ping ke dns.klpxx.jarkom.com maka akan mengarah ke Stitch
sama halnya dengan contoh diatas jika kita melakukan ping dns.klpc11.jarkom.com maka kita akan diarahkah ke komputer Sticth. ini berarti kita suatu alias, yaitu dengan menggunakan CNAME.
 kita perhatikan baris dari 1 baris terbawah
dns      IN    CNAME    stitch
berarti kita mendaftarkan, apabila host memanggildns .klp........... maka akan diarahkan ke komputer sticth yaitu (172.16.0.2)

Buatlah ‘load balancing’. Sehingga jika kita ping ke server.klpxx.jarkom.com, maka akan muncul 2 IP server, yaitu IP Stitch dan IP Elmo
sama halnya dengan contoh diatas jika kita melakukan ping server.klpc11.jarkom.com maka kita akan diarahkah ke komputer Sticth dan Elmo.
 kita perhatikan baris dari 3 atau 4 baris terbawah
server      IN    A    172.16.0.2
server      IN    A    172.16.1.13
berarti kita mendaftarkan, apabila host memanggil server.klp........... maka akan diarahkan kepada 2 komputer server tersebut. pada pemanggilan pertama mungkin dapat diarahkah ke komputer stitch misalnya dengan mendapatkan IP (172.16.0.2) dan pada pemanggilan kedua dapat mendapat IP elmo (172.16.1.13), atau sebaliknya.

 sekian, terimakasih :)

Wednesday 18 February 2015

Menyetting Delay

IP salah satu host memiliki kecepatan download maksimal 10 kbps dan IP lainnya memiliki kecepatan download maksimal 20 kbps sebelum jam 14.00 dan kedua IP memiliki kecepatan download maksimal sebesar 30 kbps setelah jam 14.00 atau hari libur (sabtu Minggu). (delay pools ada 3)
delay_class-> class 1: untuk semua komputer
class 2 (totalbandwidth untuk semua komputer berapa n untuk setiap komputer berapa)
class 3 sama seperti class 2 tetapi ditambah kalau downlod speednya berapa

Jadi dalam kasus persoalan diatas, yang harus kita pahami adalah
1. Pengaturan 1 : IP salah satu host memiliki kecepatan download maksimal 10 Kbps
2. Pengaturan 2 : IP host lainnya memiliki kecepatan download maksimal 20 kbps sebelum jam 14.00
3. Pengaturan 3 : Kedua IP memiliki download maksimal sebesar 30 kbps setelah jam 14.00 atau hari libur (sabtu,minggu)

Komputer Proxy Server
buka nano /etc/squid3/squid.conf
# deklarasi ip host pengguna
  acl client src 172.16.0.2
  acl client2 src 172.16.0.4
# deklarasi pengaturan waktu penggunaan
  acl night_workdays time MTWHF 00:00-13:59
  acl noon time 14:00-23:59
  acl weekends SA

# pengaturan manajemen bandwith ada 3 pengaturan
  delay_pools 3

# pengaturan 3
  delay_class 1 2
  delay_access 1 allow noon weekends
  delay_access 1 allow client
  # 3750 x 8 = 30000 bits = 30 kbps
  delay_parameters 1 3750/3750 3750/3750

# pengaturan 2
  delay_class 2 2
  delay_access 2 allow night_workdays
  delay_access 2 allow client2
  # 2500 x 8 = 20000 bits = 20 kbps
  delay_parameters 2 2500/2500 2500/2500

# pengaturan 1
  delay_class 3 2
  delay_access 3 allow night_workdays
  delay_access 3 allow client
restart squid dengan service squid3 restart

Komputer Client
 untuk melakukan tes kecepatan maksimum download file dengan pengaturan 1 maka ketikkan wget its.ac.id/pengumuman/renstra.pdf
tanggalServer : 7 April 2013
Waktu Server : 14:39:42

Selesai :)

Monday 16 February 2015

Menyeting Proxy Server

Halo sobat coding :)
setelah kita belajar mengenai web server seperti yang telah saya post pada 6 topik web server kemarin, sekarang kita akan belajar mengenai web proxy

Salah satu server DMZ akan digunakan sebagai proxy server. sehingga user-user pada jaringan anda untuk mengakses internet akan menggunakan proxy
berikut adalah langkah-langkah dalam menyelesaikan persoalan diatas :
1. jalankan dengan ssh -X 10.151.36.201 @c11 . c11 merupakan sebuah nama kelompok, jadi ini tergantung pada naman yang anda gunakan. lalu masukkan passwordnya
2.  kita buat settingannya pada start.sh dengan mengetikkan pada terminal nano start.sh
lalu ketikkan setingan script dibawahini
#!/bin/bash
uml_switch -unix switch > /dev/null < /dev/null &
xterm -T dmz -e linux ubd0=dmz,uml umid=dmz eth0=daemon,,,switch mem=50M &
xterm -T client -e linux ubd0=client,uml umid=client eth0=daemon,,,switch mem=50M &
xterm -T client2 -e linux ubd0=client,uml umid=client eth0=daemon,,,switch mem=50M &
xterm -T proxy -e linux ubd0=client,uml umid=client eth0=daemon,,,switch mem=50M &
xterm -T router -e linux ubd0=router,uml umid=router eth0=tuntap,,,10.151.74.29 eth1=daemon,,,switch mem=50M &
3. jalankan sh start.sh
4. setting interface dari koneksi pada masing-masing host tambahan

Komputer PROXY SERVER
login terlebih dahulu 
login: root
password: a
kita buat settingannya pada interfaces dengan mengetikkan nano /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    address 172.16.0.5
    netmask 255.255.255.0
    gateway 172.16.0.1
restart network dengan service networking restart
lalu buat nano /etc/resolf.conf
nameserver 202.46.129.2
search ajk.if.its.ac.id
nameserver 10.151.36.3

Komputer Client 2
login terlebih dahulu

login: root
password: a
kita buat settingannya pada interfaces dengan mengetikkan nano /etc/network/interfaces 
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    address 172.16.0.4
    netmask 255.255.255.0
    gateway 172.16.0.1
restart lagi menggunakan service networking restart
lalu buat nano /etc/resolf.conf
nameserver 202.46.129.2
search ajk.if.its.ac.id
nameserver 10.151.36.3
reload lagi menggunakan service networking restart
kemudian lakukan tes koneksi baik ke server AJK maupun jaringan lokal, jika berhasil maka akan ada baris-naris yang berisikan informasi tentang bytes-bytes yang berhasil diproses


Komputer Proxy Server
$ ping its.ac.id
$ ping 172.16.0.3
$ ping 172.16.0.2
$ ping 172.16.0.4

Komputer Client 2
$ ping its.ac.id
$ ping 172.16.0.3
$ ping 172.16.0.2
$ ping 172.16.0.5

Komputer Proxy Server
lakukan konfigurasi pada file konfigurasi squid 3 dengan mengetikkan nano /etc/squid3/squid.conf
# tambahkan konfigurasi untuk memberikan ijin akses pada semua host lokal dengan proxy
  http_access allow all

#       WELCOME TO SQUID 3.1.19
#       ----------------------------
#
#       This is the documentation for the Squid configuration file.
#       This documentation can also be found online at:
#               http://www.squid-cache.org/Doc/config/
#
#       You may wish to look at the Squid home page and wiki for the
#       FAQ and other documentation:
#               http://www.squid-cache.org/
#               http://wiki.squid-cache.org/SquidFaq
#               http://wiki.squid-cache.org/ConfigExamples
#
#       This documentation shows what the defaults for various directives
#       happen to be.  If you don't need to change the default, you should
#       leave the line out of your squid.conf in most cases.
#
#       In some cases "none" refers to no default setting at all,
#       while in other cases it refers to the value of the option
...
restart squid dengan service squid3 restart

Kompuetr Client2
untuk melakukan koneksi dari masing-masing host ke proxy server melalui proxy dengan port squid ketikkan  export http_proxy=172.16.0.5:3128&&wget its.ac.id

Komputer DMZ
untuk melakukan koneksi dari masing-masing host ke proxy server melalui proxy dengan port squdi
export http_proxy=172.16.0.5:3128&&wget its.ac.id 

Tambahan

Perawatan 
karena squid adalah mencache data internet, dirasakan perlu untuk melihat selalu ke dalam cache ataupun log yang terbentuk, karena kedua hal ini selalu berkembang terus. Adapun yang perlu di perhatikan adalah :
1.    access.log
2.    store.log
3.    cache.log 
access.log adalah untuk melihat request-request yang dilakukan oleh client ke proxy. dari file ini kita dapat mengetahui berapa banyak orang yang menggunakan cache , berpa banyak setiap satu permintaan, web mana yang paling sering di akses/populer, dan lain-lain.Pada file ini squid mengenerate pada kita untuk dapat mencari info yang terdapat di dalamnya, baik itu error, pesan-pesan startupdan lain-lain yang terlogin di dalamnya.
store.log  pada file ini menampilkan kejadian yang terjadi pada pengaturan disk cache. dimana kita bisa mengetahui apakah sebuah obyek di tambahkan atau telah di hapus.

cache.log file ini berisikan pengalamatan obyek (halaman site di simpan..) pada lokasinya di disk.
Tools Analisa 
Untuk menganalisa file access.log dapat menggunakan tool seperti : calamaris, squidclients, squidtimes, pwebstats dan lain-lain.
Salah satu contoh penggunaan program calamaris 
#calamaris.pl  access.log  stats.html
Contoh penggunaan program squidtimes
#squidtimes access.log  times.html


Dalam mengkonfigurasinya terdapat banyak hal yang penting dan perlu untuk dikonfigurasi, salah satunya adalah log squid, log ini sangat berguna bila kita ingin menganalisa apa saja akses yang sudah melewati squid selama satu hari, satu minggu, atau bahkan satu tahun.
Secara standar log squid bernama access.log dan cache.log, yang berada di direktori : <path_squid>/var/logs/
Bila squid dijalankan setiap hari tanpa di rotate bisa anda bayangkan berapa besar log yang akan terbentuk.
Untuk itu akan dibahas disini bagaimana cara merotate squid setiap hari, selain agar log tidak membesar, hal ini  juga dapat dipakai untuk menganalisa traffic.
Log yang akan di rotate hanyalah access.log, sedangkan cache.log akan di hapus, tetapi ini terserah keinginan anda bila ingin keduanya di simpan.

Buatlah file dengan nama squidrotate.sh
# vi /root/squidrotate.sh, copykan kode dibawah

#!/bin/sh

/<path_squid>/sbin/squid -k rotate

Buat file dengan nama squidlog-del.sh
# vi /root/squidlog-del.sh, copykan kode dibawah

#!/bin/sh

NAMA=squidlog`date +%Y%m%d%H%M`

cd /<path_squid>/var/logs

/bin/cp access.log.0 /root/LogSquid/$NAMA

/bin/rm -f access.log.0

/bin/rm -f cache.log.0

Setelah itu buatlah direktori untuk menyimpan log yang dihasilkan dari hasil rotate tersebut diatas.
# mkdir /root/LogSquid

Masukkan ke crontab agar dua file tadi dijalankan secara otomatis oleh sistem :
# contab –e

30 5 * * * /bin/sh /root/squidrotate.sh

30 6 * * * /bin/sh /root/squidlog-del.sh

Oh ya, jangan lupa untuk selalu menjalankan perintah simpan setiap kali selesai membuat file-file tersebut diatas.

Setelah semuanya beres berarti sekarang telah dijalankan secara otomatis rotate squid pada jam 5.30 WIB setiap hari, kemudian memindahkan log hasil rotate ke direktori /root/LogSquid pada jam 6:30 WIB.


Selamat mencoba dan jangan ragu untuk meninggalkan komentar.
Terima kasih dan Salam.