Tuesday, June 12, 2018

Membuat Animasi Layang-Layang dan Menggunakan Lagu Pada Processing


Semua pemrograman tidak akan lepas dari yang namanya IDE (Integrated Development Environment) merupakan software yang memudahkan programmer untuk membuat aplikasi pada platform tertentu.

Sama halnya dengan Processing yang merupakan IDE untuk pembuatan animasi baik 2D ataupun 3D dengan cara koding.

Untuk mendownload Processing klik di sini

Di sini saya berbagi ingin berbagi tentang membuat animasi yang bergerak dengan menggunakan lagu anak-anak di dalamnya. Karena menggunakan lagu kita memerlukan library yang disediakan dari Processing nya bernama Minim.

Menambahkan library pada Processing mudah saja.

Buka Aplikasi Processing ➨ Sketch ➨  Import Library... ➨ Add Library 



Untuk kodingnya bisa dilihat pada kolom di bawah, mau liat hasilnya seperti apa??? silahkan teman-teman bisa coba Run sendiri yah di Processingnya 😜



//========================= IMPORT LAGU ==========================
import ddf.minim.*;
AudioPlayer player;
Minim minim;//audio context

//========================= VARIABEL LAYANG ==========================
int x1=300;
int y1=100;
int x2=350;
int y2=50;
int x3=400;
int y3=100;
int x4=350;
int y4=190;
int lineX1=300;
int lineY1=100;
int lineX2=400;
int lineY2=100;
int lineX3=350;
int lineY3=50;
int lineX4=350;
int lineY4=190;
int lineX5=330;
int lineY5=220;
int garisX=350;
int garisY=100;
int arah1=1;
int arah2=3;
//------------------ PERBESAR LAYANGAN-------------------
float a = 150;
float b = 500;
float c = 300;
float d = 500;
//===================== VARIABEL ORANG =======================
int tangan1=110;
int tangan2=490;
//========================= VARIABEL WARNA LANGIT ==========================
float delay = 25;
float y;

//========================= VARIABEL SCENE ==========================

int t = 1;

//========================= VARIABEL FONT ==========================
PFont f;
float h = 20;

//========================= VARIABEL BAMBU ==========================
float x = -50;
float e = 0;
float raut = 1;

//========================= OBJEK AWAN ==========================

awan[] cloud = new awan[10];

void setup() {
  size(800, 600);
  minim = new Minim(this);
  player = minim.loadFile("Layang.mp3");
  player.play();
  frameRate(10);

  for (int i = 0; i<cloud.length; i++) {
    cloud[i] = new awan();
  }
}

void draw () {
  t = t+1;
  if ((t>0)&&(t<=130)) {
    scene0();
  } else if ((t>130)&&(t<=180)) {
    scene1();
  } else if ((t>180)&&(t<=250)) {
    scene2();
  } else if ((t>250)&&(t<=310)) {
    scene3();
  } else if ((t>310)&&(t<=360)) {
    scene4();
  } else if ((t>360)&&(t<=610)) {
    scene5();
  } else if (t==611) {
    exit();
  }
}

//==================== SCENE 0 ================================
void scene0() {
  background(0, 199, 80);
  f=loadFont("LetterGothicStd-32.vlw");
  fill(0);
  textFont(f, 40);
  textAlign(CENTER);
  text("Layang-Layang", width/2, 200);
  textFont(f, 20);
  text("Randy Efan", width/2, 250);
  text("Azi Fauzi", width/2, 300);
  text("Tahmid Ksatria Suci", width/2, 350);
}

//==================== SCENE 1 ================================
void scene1() {
  background(random(0), random(10), random(100));
  bambu();
}

void bambu() {
  fill(#79a410);
  rect(x, 100, 50, 400);
  strokeJoin(ROUND);
  if (x<=300) {
    x = x + 10;
  }
}

//==================== SCENE 2 ================================
void scene2() {
  background(random(100), random(10), random(0));
  bambu2();
}

void bambu2() {
  fill(#79a410);
  rect(300, 100, 25, 400);
  strokeJoin(ROUND);
  rect(x+25, 100, 25, 400);
  strokeJoin(ROUND);
  if (x<=450) {
    x = x + 5;
  }
}

//==================== SCENE 3 ================================
void scene3() {
  background(random(0), random(100), random(0));
  rautbambu();
}

void rautbambu() {
  fill(#79a410);
  rect(300, 100, 25, 400, e);
  rect(480, 100, 25, 400, e);
  if (e <= 1000) { //animasi raut bambu
    e = e+1;
    if (e >= 1000) {
      e = 1000;
    }
  }
}

//==================== SCENE 4 ================================
void scene4() {
  background(random(100), random(0), random(100));
  layangan();
}

void layangan() {
  a = a-1;
  b = b +1;
  c = c-1;
  d = d+1;
  fill(4, 76, 221);
  quad(width/2, a, c, 250, width/2, b, d, 250);
  strokeWeight(2);
  line(width/2, a, width/2, b);
  line(c, 250, d, 250);
}

//==================== SCENE 5 ================================
void scene5() {

  background(255);


  pushMatrix();
  langit();
  popMatrix();

  for (int i = 0; i < cloud.length; i++) {
    cloud[i].awan();
    cloud[i].tampil();
  }


  pushMatrix();
  matahari();
  popMatrix();

  gunung();
  tanah();

  pushMatrix();
  layang();
  popMatrix();
  pushMatrix();
  orang();
  popMatrix();
  pushMatrix();
  pohon();
  popMatrix();
}


void layang() {
  stroke(2);
  fill(4, 76, 221);
  quad(x1, y1, x2, y2, x3, y3, x4, y4);
  line(lineX1, lineY1, lineX2, lineY2);
  line(lineX3, lineY3, lineX4, lineY4);
  line(garisX, garisY, tangan1, tangan2);
  line(lineX4,lineY4,lineX5,lineY5);

  if (x1<400 && x1>250) {
    x1=x1+arah1;
    x2=x2+arah1;
    x3=x3+arah1;
    x4=x4+arah1;
    lineX1=lineX1+arah1;
    lineX2=lineX2+arah1;
    lineX3=lineX3+arah1;
    lineX4=lineX4+arah1;
    lineX5=lineX5+arah1;
    garisX=garisX+arah1;
  } else if (x1<450 && y1>75) {
    gerakLayang();
    gerakGaris();
    tangan2=tangan2+arah1;
  } else if (y3>=150) {
    arah1=arah1*-1;
    gerakLayang();
    gerakGaris();
    tangan2=tangan2+arah1;
  } else {
    x1=x1-arah1;
    y1=y1-arah1;
    x2=x2-arah1;
    y2=y2-arah1;
    x3=x3-arah1;
    y3=y3-arah1;
    x4=x4-arah1;
    y4=y4-arah1;
    lineX1=lineX1-arah1;
    lineY1=lineY1-arah1;
    lineX2=lineX2-arah1;
    lineY2=lineY2-arah1;
    lineX3=lineX3-arah1;
    lineY3=lineY3-arah1;
    lineX4=lineX4-arah1;
    lineY4=lineY4-arah1;
    lineX5=lineX5-arah1;
    lineY5=lineY5-arah1;
    garisX=garisX-arah1;
    garisY=garisY-arah1;
    tangan2=tangan2-arah1;
    arah1=arah1*-1;
  }
}

void gerakLayang () {
  x1=x1+arah1;
  y1=y1+arah1;
  x2=x2+arah1;
  y2=y2+arah1;
  x3=x3+arah1;
  y3=y3+arah1;
  x4=x4+arah1;
  y4=y4+arah1;
}

void gerakGaris () {
  lineX1=lineX1+arah1;
  lineY1=lineY1+arah1;
  lineX2=lineX2+arah1;
  lineY2=lineY2+arah1;
  lineX3=lineX3+arah1;
  lineY3=lineY3+arah1;
  lineX4=lineX4+arah1;
  lineY4=lineY4+arah1;
  lineX5=lineX5+arah1;
  lineY5=lineY5+arah1;
  garisX=garisX+arah1;
  garisY=garisY+arah1;
}


void langit () {
  noStroke();
  if (frameCount%(1*delay)<delay) fill(225, 244, 12);
  if (frameCount%(2*delay)<delay) fill(244, 237, 12);
  if (frameCount%(3*delay)<delay) fill(244, 182, 12); 
  if (frameCount%(4*delay)<delay) fill(247, 234, 0);
  if (frameCount%(5*delay)<delay) fill(232, 247, 27);
  if (frameCount%(6*delay)<delay) fill(225, 247, 84);
  rect(0, 0, 800, 350);
}

void gunung () {
  fill(0, 255, 0);
  triangle(400, 350, 600, 200, 800, 350);
  fill(0, 255, 0);
  triangle(0, 350, 300, 150, 600, 350);
}

void tanah () {
  noStroke();
  fill(201, 118, 16);
  rect(0, 350, 800, 250);
}

void pohon () {
  pushMatrix();
  fill(#51BF34);
  triangle(500, 470, 550, 510, 450, 510);
  triangle(500, 435, 550, 485, 450, 485);
  triangle(500, 400, 550, 450, 450, 450);
  popMatrix();
  fill(#D6AD1A);
  rect(494, 510, 15, 70);

  pushMatrix();
  fill(#51BF34);
  triangle(600, 470, 650, 510, 550, 510);
  triangle(600, 435, 650, 485, 550, 485);
  triangle(600, 400, 650, 450, 550, 450);
  popMatrix();
  fill(#D6AD1A);
  rect(594, 510, 15, 70);

  pushMatrix();
  fill(#51BF34);
  triangle(700, 470, 750, 510, 650, 510);
  triangle(700, 435, 750, 485, 650, 485);
  triangle(700, 400, 750, 450, 650, 450);
  popMatrix();
  fill(#D6AD1A);
  rect(694, 510, 15, 70);
}

void matahari () {
  translate(0, y++);
  stroke(2);
  fill(255, 216, 0);
  ellipse(490, 100, 200, 200);
}

void orang () {
  fill(255);
  ellipse (75, 475, 45, 45);
  line(75, 497, 75, 550);
  line(75, 550, 50, 590);
  line(75, 550, 100, 590);
  line(75, 510, 50, 540);
  line(75, 510, tangan1, tangan2);
  strokeWeight(2);
}

Thursday, June 29, 2017

Perbedaan Polling (Programmed) I/O, Interrupt Driven I/O dan Direct Memory Access (DMA)


Di dalam komputer kita terdapat lubang-lubang yang mana disitu untuk menjalankan hardware pendukung di luar komputer. Hardware tersebut bisa memberikan perintah input ke komputer ex: mouse, keyboard dll, ataupun output keluar dari komputer ex: printer, speaker dll.

Maka dari itu komputer melakukan tugas untuk membaca input atau output (I/O) yang ada pada diri nya. Karenanya pada setiap komputer saat ini dilengkapi dengan I/O modul yang bisa melakukan khusus pembacaan I/O pada komputer.

Pada perkembangannya pun I/O modul ada beberapa perbedaan diantaranya Polling (Programmed) I/O, Interupt Driven I/O dan Direct Memory Access (DMA).


Polling (Programmed) I/O

Polling atau biasa disebut dengan Programmed I/O merupakan teknik dari operasi I/O. Cara prosesnya bermula ketika CPU mengecek ke I/O modul apakah ada suatu instruksi yang perlu di eksekusi, bila ada CPU menerima dan membaca instruksi tersebut, kemudian instruksi tersebut dicek error atau tidaknya bila error maka CPU akan menanyakan ulang ke I/O modul untuk intruksi yang baru, bila tidak error maka CPU membaca WORD dari instruksi tersebut dan menuliskan WORDnya ke dalam memori. Setelah itu bila suatu instruksi telah selesai maka CPU akan menjalankan instruksi yang lain.





Perlu diketahui bahwa Polling I/O bisa dibilang metode yang paling primitif dibanding teknik operasi I/O yang lain dimana teknik ini tidak bisa menjalankan 2 instruksi sekaligus, Misalkan bila komputer anda sedang nge-print sesuatu maka komputer anda tidak bisa menjalankan proyektor yang anda colokan, dimana anda perlu menunggu instruksi awal yakni nge-print sampai selesai, barulah anda bisa menjalankan proyektor yang anda colokan.


Interrupt Driven I/O

Interrupt Driven I/O merupakan arsitektur modul I/O yang bekerja pada CPU. Polling I/O digunakan CPU untuk menyelesaikan hanya satu tugas saja, yang mana prosesnya akan begitu lama karena belum bisa multitasking, namun pada Interrupt Driven I/O ketika proses lain ada yang masuk akan disanggah dan difilter proses mana yang akan dikerjakan terlebih dahulu, yang memungkinkan Interrupt Driven I/O bisa multitasking. Penjelasan barusan merupakan perbedaan diantara keduanya. Alur proses nya seperti gambar di bawah.



Persamaannya dengan Polling I/O yaitu, Polling I/O dan Interrupt Driven I/O prosesnya terjadi pada modul I/O namun masih melibatkan CPU secara langsung.



Direct Access Memory (DMA)

Teknik ini pada dasarnya sama dengan kedua teknik di atas namun yang membedakan adalah terdapat modul DMA tersendiri di dalam modul I/O pada teknik ini.



Pada gambar di atas menggambarkan bahwa CPU tidak berhubungan langsung dengan I/O secara langsung melainkan berhubungan dengan modul DMA yang mana secara penjelasan ringkas bahwa DMA menyimpan instruksi-intruksi yang diterima oleh I/O, kemudian bila CPU sudah siap maka instruksi tersebut akan dieksekusi. Karena itu bisa dianalogikan ketika banyaknya proses I/O yang masuk maka CPU tidak akan mengalami Crash, karena segala instruksinya disimpan didalam modul DMA.


Ditambah lagi bahwa CPU sekarang telah terbagi core-nya memungkinkan komputer yang menganut teknik ini sudah dipastikan bisa multitasking.

Wednesday, June 21, 2017

Cara Mengatasi DNS address could not be found


Mungkin bagi yang menemukan artikel ini mempunyai masalah yang sama seperti di judul.

Maka dari itu saya akan memberikan solusinya untuk anda. Sebenarnya masalah yang anda alami saat ini bisa jadi karena dari sisi operator ataupun dari sisi komputer anda menyimpan cache yang menyebabkan hal ini terjadi.



Ada 2 cara untuk mengatasi masalah ini.


Solusi Pertama adalah menghapus cache yang ada pada browser anda (Tutorial pertama ini khusus untuk Google Chrome)

1. Klik CTRL+H, atau dengan masuk ke setting kemudian pilih history.




2.
Kemudian pilih Clear browsing data




3.
Terakhir anda perlu memilih data yang ingin dihapus, mengingat disini kita akan menghapus cache, maka cache yang ada di browser ditandai juga agar bisa terhapus. Kemudian klik clear browsing data. Setelah itu coba restart browser anda dan coba kunjungi web yang anda kehendaki, bila cara ini belum berhasil maka pindah ke cara kedua.




Solusi Kedua adalah mengubah IP dari DNS Server nya

1. Klik WINDOWS+S atau dengan ke menu search dan cari file bernama ncpa.cpl kemudian klik enter.


2.
Pilih koneksi yang tersambung ke jaringan anda, kemudian klik kanan dan pilih properties. (Pastikan anda terhubung dengan Internet).



3. Kemudian pilih Internet Protocol Version 4 (TCP/IPv4). Biasanya pilihan tersebut berada paling bawah. Bila sudah dipilih klik Properties.



4.
Langkah terakhir anda perlu mengubah pilihan ke Use the following DNS server addresses. Setelah itu isi Preferred DNS server dengan IP 208.67.222.222 atau 206.67.222.222 (IP Amerika Serikat), atau bisa juga menggunakan IP Google yakni 8.8.8.8 atau 8.8.4.4. Bila telah diubah maka simpan konfigurasi dengan menekan tombol OK. Coba buka kembali browser anda dan kunjungi website yang anda inginkan.



Bagaimana CPU Bekerja?


How a CPU works? Sebelumnya saya akan menjelaskan dimana CPU mempunyai 4
komponen penting yaitu ALU(Arithmatic nd Logic Unit), Control Unit, Registers, CPU
Interconctions. 4 komponen ini bekerja agar proses instruksi dari berbagai modul didalam
komputer dapat berjalan dengan baik dan tidak adanya tabrakan dalam mengatur instruksi.

Pertama ketika CPU menerima instruksi dari RAM, maka Control Unit yang akan
bekerja untuk menerma instruksi tersebut, seperti yang diketahui Control Unit ini sebagai
leader dari CPU. Ketika Control Unit telah menerima set instruksi maka akan dikirimkan
kepada ALU yang mana ALU Bertugas sebagai penerjemah dan pengolah set instruksi tersebut
apakah set intruksi itu berupa logical atau arithmethic. Ketika set intruksi telah diolah di ALU
tadi maka akan dikeluarkan angka biner yang akan disimpan sementara didalam Registers,
yang mana Registers ini merupakan salah satu komponen penting di dalam CPU. Setelah itu
komponen Control Unit akan banyak menerima set instruksi yang akan dikirim oleh RAM,
terus menerus set instruksi tersebut akan dikirimkan ke Registers dan nantinya Registers ini
yang akan mengirim kembali ke RAM.

Kurang lebih cara kerja CPU seperti yang telah dijelaskan di atas namun dalam
kenyataannya CPU cara kerjanya lebih kompleks dari penjelasan tersebut, apalagi dengan
adanya perkembangan zaman yang nanti kemungkinan CPU akan lebih sulit dan kompleks lagi
cara kerjanya.

Untuk penjelesan yang lebih rinci anda bisa melihatnya disini 

Monday, May 29, 2017

Cara Mengubah Proxy di Google Chrome


Walaupun hal sederhana, namun hal sederhana itu yang biasanya terlupakan.

1. Anda harus ke pengaturan Google terlebih dahulu



2. Cari opsi Network, dangan cara klik show advanced settings pada bagian paling bawah.



3. Pilih opsi change proxy settings.



4. Setelah di klik akan ada pilihan opsi untuk memilih jaringan yang akan di ubah proxy nya, pilih  sesuai kebutuhan anda. Kemudian klik settings bila telah memilih.



5. Langkah terakhir dimana anda mengubah konfigurasi ip address dan port yang diperlukan. Untuk referensi proxy bisa di lihat disini di situ terdapat kumpulan ip address dan port nya dari berbagai negara.



Sunday, May 28, 2017

Apa Itu PCI?



PCI (Peripheral Component Interconnection) adalah bus yang pada awalnya didesain untuk menggantikan Bus ISA/EISA yang dipakai dalam system komputer yang lama seperti IBM dll. Saya akan me-review penjelasannya dari beberapa buku yang sudah saya baca.

Yang ada tanda biru itu dinamakan dengan PCI Slot.

1. PCI Slot

Terus sekarang apa itu PCI? sejatinya PCI itu adalah slot dan adapter yang berhubungan untuk modem, LAN card, keyboard dan perangkat I/O yang lainnya.

Perbedaan PCI Slot dan PCI Adapter

PCI slot itu yang terdapat pada motherboard (seperti gambar 1), sedangkan PCI adapter sendiri sebagai contoh adalah NIC (Network Interface Card).

PCI sendiri bisa diartikan sebagai arsitektur bus yang menghubungkan perangkat keras dengan processor, karena adanya PCI ini processor tidak perlu bekerja sepenuhnya untuk membaca perangkat I/O yang ada dalam komputer, namun PCI lah yang menjalani tugas untuk membaca perangkat I/O yang terdapat pada komputer.

Dalam dunia PCI sendiri banyak macam dan jenisnya, dan PCI sendiri diusung oleh raksasa industri processor yakni Intel Corperation. Dari mulai yang tertua yakni PCI biasa sampai sekarang PCI Express yang pastinya mempunyai perbedaan yang signifikan dari segi transmisi data sampai bentuk.

Macam-macam PCI

Oke.. disini saya akan bahas tentang PCI Express PCIe, karena PCIe ini  sekarang banyak digunakan di motherboard yang versi baru.



2. Macam-Macam Slot PCI


Gambar di atas menunjukan macam-macam slot PCI yang mempunyai kecepatan bandwidth yang berbeda.

PCIe bisa disebut juga protokol berlapis yang terdiri dari Lapisan Fisik, Lapisan Transaksi dan Lapisan Data Link.

Cukup sekian dari saya semoga bermanfaat apabila ada yang mau ditanyakan silahkan comment untuk kita saling berdiskusi.



Source:

Linda Null,Pennsylvania State University Linda Null,Julia Lobur - The Essentials of Computer Organization and Architecture

V. RAJARAMAN,T. RADHAKRISHNAN - COMPUTER ORGANIZATION AND ARCHITECTURE

William Stallings - Computer Organization and Architecture Designing for Performance