RSS

Pengantar Digital Signal Processing – part 1 – Introduction

Post ini akan menjadi pengantar untuk masuk ke dunia pemrosesan sinyal. Tutorial ini dimaksudkan untuk programmer yang ingin mengimplementasikan teknik-teknik Digital Signal Processing (DSP) tanpa harus berhadapan dengan sederetan rumus matematika. Pendekatan yang dipakai adalah dengan melakukan programming teknik yang akan dipelajari satu per satu.

DSP sudah sangat menyatu dengan kehidupan sehari-hari sehingga kita tanpa sadar telah terpengaruh dengan teknik-teknik DSP yang digunakan untuk berbagai macam kebutuhan. Kemampuan untuk menguasai DSP kini sudah jadi kebutuhan dasar untuk dikuasai.

Beberapa aplikasi DSP pada kehidupan sehari-hari antara lain pada bidang medikal, telepon, bahkan militer.

Sampai jumpa pada post berikutnya,
salam

 
1 Comment

Posted by on February 21, 2012 in Programming

 

Tags: , , , , ,

GUI with Java without Netbeans

Biasanya kalau kita mau buat gui menggunakan Java, kita menggunakan ide Netbeans yang mempunyai fitur untuk membuat GUI dengan fasilitas drag and drop. Di satu sisi ini memudahkan penggunanya yang tidak ingin terintimidasi dengan detil yang mengerikan. Namun di sisi lain hal ini bisa dianggap overkill, apabila kita hanya ingin men-design GUI yang sederhana dan tidak begitu kompleks. Bahaya lainnya adalah apabila file .form yang digenerate oleh Netbeans hilang, kita tidak bisa mengubah GUI secara visual dan untuk mengubahnya secara manual lewat kode juga susah karena generated code untuk GUI dari Netbeans terkadang bloated dan sulit untuk dimengerti.

Karena itu kita perlu juga mengetahui bagaimana menyusun GUI melalui kode. Artikel berikut akan mencoba menjelaskan cara menyusun GUI yang paling sederhana dan cocok untuk yang ingin membuat GUI yang sederhana juga.

Ada dua cara untuk menyusun komponen GUI. Pertama dengan menggunakan layout manager atau dengan absolute position. Netbeans juga menggunakan layout manager untuk mendesain GUI-nya. Tapi yang akan dijelaskan di post ini adalah dengan menggunakan absolute position. Menggunakan layout manager memudahkan jika kita ingin menyusun GUI dengan praktis tanpa perlu mengetahui posisi pasti komponen yang akan ditaruh. Selain itu jika dilakukan resize terhadap komponen kontainernya, otomatis komponen yang dikandung didalamnya akan menyesuaikan dengan ukuran yang baru. Akan tetapi, jika kita ingin membuat GUI dengan ukuran yang sudah fixed, absolute position bisa memudahkan kita dalam mengatur posisi komponen dengan catatan kita harus sering mencoba untuk mendapatkan lokasi yang pas.

Oke, langsung buka editor favoritmu (Scite, geany, notepad++, eclipse, dlllll)
Hal pertama yang harus dilakukan adalah membuat kelas yang meng-extend JFrame

public class TestGUI extends JFrame

Jangan lupa import kelas JFrame

import javax.swing.JFrame;

kemudian di method main, kita cukup membuat objek dari kelas ini, dan menjalankan method setVisible agar GUI-nya bisa terlihat.

public static void main(String[] args) {
   TestGUI test = new TestGUI();
   test.setVisible(true);
}

Sampai saat ini, kita sudah membuat GUI yang fungsional, tapi begitu dikompail dan dijalankan kok GUI-nya tidak keliatan? Itu karena kita belum menspesifikasikan ukurannya. Jadi ukuran luasnya masih 0.
Inisialisasi ukuran GUI pada konstruktor

TestGUI() {
   setSize(600, 400);
}

parameter pada method setSize adalah panjang dan lebar dari JFrame tersebut.
Jangan lupa menambahkan kode berikut
TestGUI() {
   setDefaultCloseOperation(EXIT_ON_CLOSE);
}

agar ketika window-nya ditutup dengan menekan tombol x merah di pojok kanan atas, programnya benar-benar tertutup dan dimatikan dari JVM.
Posisi window tadi terletak di pojok kiri atas, bagaimana jika posisinya ingin ditengah?
TestGUI() {
   setLocationRelativeTo(null);
}

Maka posisi Windows akan berada di tengah.
Kalau mau Windows-nya tidak bisa diubah-ubah ukurannya, gunakan kode berikut
TestGUI() {
   setResizable(false);
}

Jika ingin memberi nama pada Windowsnya, panggil konstruktor parent Class dengan method super yang disertai argumen nama dari Windows dengan tipe String. Jangan lupa kalau super hanya bisa dipanggil di baris pertama pada konstruktor.
TestGUI() {
   super("Graphical User Interface for Test");
}

Setelah proses awal tersebut selesai, tahap berikutnya adalah tinggal layout untuk komponen-komponen yang kita butuhkan. Ada dua cara untuk layout dengan GUI di Java. Cara pertama adalah dengan menggunakan kelas LayoutManager untuk mengatur tata letak dari GUI kita. Cara ini juga yang dipakai oleh Netbeans untuk mendesain GUI. Kelebihan cara ini adalah kita tidak perlu khawatir apabila ukuran GUI berubah-rubah. Tampilan komponen akan mengikuti ukuran GUI yang sedang berlaku. Kekurangannya adalah ini bisa-bisa menjadi overkill, terutama untuk tampilan GUI sederhana dan tidak ada perubahan dari desain semula yang sudah disusun misalnya di kertas.

Karena itu saya memilih cara kedua, yaitu dengan absolute positioning. Dengan cara ini, desain awal yang sudah kita punya di kertas bisa langsung diterjemahkan ke dalam kode karena kita memiliki kuasa penuh terhadap letak dari komponen-komponennya.
Untuk memulai menggunakan absolute position, maka layout manager-nya harus di set null

TestGUI() {
   setLayout(false);
}

Berikutnya akan ditunjukkan bagaimana mengeset posisi komponen, misalnya sebuah textbox dan button

TestGUI() {
   JTextField tf1 = new JTextField();
   JButton btn1 = new JButton();

   tf1.setBounds(50, 50, 100, 20);
   btn1.setBounds(200, 50, 100, 20);

   add(tf1);
   add(btn1);
}

Dua baris pertama adalah instansiasi komponen TextField dan Button. Dua baris terakhir adalah cara menambahkan komponen ke dalam objek kontainer, dalam hal ini JFrame-nya sendiri. Kode yang berguna untuk mengatur letak adalah dua kode ditengah, yaitu method setBounds. Method setBounds memiliki empat buah parameter, dua parameter di depan adalah posisi secara sumbu x dan y untuk pojok kiri atas komponen yang bersangkutan. Dan jangan lupa juga, kalau sumbu x dan y posisi 0,0 untuk komputer juga dimulai dari pojok kiri atas. Dua parameter berikutnya adalah untuk panjang dan lebar dari komponen ini.
Tada, selesai. Sekarang Anda telah bisa membuat GUi serumit apapun tanpa membutuhkan bantuan dari Netbeans. Yang agak sulit dari pembuatan manual ini adalah harus sering dikompail untuk melihat posisi aslinya, karena ketika di code mungkin agak sulit untuk dibayangkannya.

Berikut potongan kode lengkapnya

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;

public class TestGUI extends JFrame {
	
	TestGUI() {
		super("Graphical User Interface for Test");
		setSize(600, 400);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setResizable(false);
		setLocationRelativeTo(null);
		
		setLayout(null);
		
		JTextField tf1 = new JTextField();
		JButton btn1 = new JButton();
		
		tf1.setBounds(50, 50, 100, 20);
		btn1.setBounds(200, 50, 100, 20);
		
		add(tf1);
		add(btn1);
	}
	
	public static void main(String[] args) {
		TestGUI test = new TestGUI();
		test.setVisible(true);
	}
}


Dan screenshot dari hasil akhir program
Image and video hosting by TinyPic
Selamat mencoba, semoga bermanfaat

 
2 Comments

Posted by on October 18, 2011 in Java, Programming

 

Tags: , , , , , , ,

Collaborative Project dengan Mercurial dan Bitbucket – Part 3 – Working with Others

Bagian ketiga akan menjelaskan mengenai bekerja dengan orang lain menggunakan mercurial dan bitbucket.

1. Pertama-tama, buat akun baru di bitbucket.org

2. Klik menu repository > Create New Repository

3. Pada halaman Create New Repository, masukkan nama repo, bahasa pemrograman yang digunakan, Centang “private” jika kita ingin membuat repositori bersifat privat (Akses read hanya untuk orang yang ditunjuk. Hanya sampai 5 user jika akunnya sifatnya “free”). Centang “wiki” dan “issue tracking” jika mau menggunakan fitur tersebut.

4. Tara, repositori telah sukses dibuat dan kita masuk ke halaman projek yang memiliki alamat “http://bitbucket.org/<username>/<projectname>. Tahap selanjutnya menambahkan daftar commiter atau orang yang memiliki hak read/write terhadap repositori tersebut. Masuk ke menu admin. Pada bagian user access, masukkan nama user lainnya dan tentukan haknya terhadap repositori tersebut (read/write/admin).

5. Tahap berikutnya, memasukkan changeset ke repositori tersebut. Masuk ke direktori yang sudah di inisialisasi (hg init) dan diisi (hg commit) dan gunakan command

hg push https://bitbucket/<username>/<projectname>

Ganti <username> dan <projectname> dengan nilai yang sesungguhnya. Contoh

hg push https://bitbucket.org/Mitbal/floating-point-utility

6. Anggota yang lain tinggal melakukan clone. Contoh

hg clone https:/bitbucket.org/Mitbal/floating-point-utility

dan melakukan perubahan pada kode dan meng-commit-nya seperti biasa. Jika dia memiliki hak write, maka kodenya bisa di push

hg push

akan muncul permintaan untuk memasukkan password. Masukkan dan kode sudah ter-update.

Sekian seri penggunaaan Mercurial dengan Bitbucket. Penggunaan workflow yang lebih rumit seperti forking dan branching bisa diikuti lebih lanjut di http://mercurial.selenic.com/guide/.

Semoga berguna. Salam.

 
2 Comments

Posted by on July 27, 2011 in Programming

 

Tags: , , ,

Collaborative Project dengan Mercurial dan Bitbucket – Part 2 – Basic Usage

Bagian ini akan menjelaskan command-command yang sering dipakai di Mercurial.

Untuk memulai sebuah repositori, masuk ke direktori yang diinginkan dan ketikkan

hg init

Untuk menambahkan file ke dalam repositori

hg add file1 file2

Jika ingin menambahkan semua isi direktori, kosongkan argumen setelah “add”.
Untuk menyimpan perubahan pada file yang di-track, gunakan perintah “commit” atau “ci”

hg ci file1 file2 -m "Comment untuk commit-an yang ini"

Untuk menyimpan semua file, hilangkan nama file setelah perintah “ci”.

Command-command di atas adalah perintah yang mencukupi untuk bekerja sendiri. Bagian berikutnya adalah menjelaskan bagaimana bekerja dengan repositori dengan user lebih dari 1.

 
Leave a comment

Posted by on July 25, 2011 in Programming

 

Tags: , , ,

Collaborative Project dengan Mercurial dan Bitbucket – Part 1 – Installation and Setting

Mercurial dan Bitbucket adalah pasangan tools yang powerful untuk melakukan Collaborative Project. Seri tutorial berikut akan menjelaskan cara menggunakannya.

1. Download dan instal mercurial dari situsnya http://mercurial.selenic.com/.

2. Buka command line. Untuk mengecek apakah mercurial sudah terinstal dengan benar, ketik “hg –version”. Jika keluar tulisan copyright, maka selamat!!! mercurial sudah terinstal ke komputer Anda dengan benar.

3. Set user name dan alamat email yang diperlukan commit. Buat file bernama “Mercurial.ini” di home direktori komputer Anda. Contohnya di Windows 7 adalah “C:\Users\Iqbal”

4. Pada file Mercurial.ini tuliskan potongan kode berikut

[ui]
username = M Iqbal Tawakal <mit.iqi@gmail.com>
verbose = True

[http_proxy]
host = 152.118.24.10:8080

Ganti M Iqbal Tawakal dengan nama Anda dan mit.iqi@gmail.com dengan email Anda. Jika komputer Anda tersambung dengan jaringan yang menggunakan proxy (seperti di UI), jangan lupa menambahkan opsi http_proxy dan mengisi nilai host dengan alamat proxy Anda.

Selamat, Mercurial telah siap untuk digunakan. Bagian berikutnya akan menjelaskan dasar mercurial dan menghubungkannya dengan Bitbucket.

 
2 Comments

Posted by on July 22, 2011 in Programming

 

Tags: , , ,

Tutorial Latex 1 – Instalasi

Anda telah mengetahui bahwa latex adalah alternatif lain untuk menulis dokumen selain dari Microsoft Word tapi tidak tahu mau mulai dari mana? Beberapa seri tutorial berikut ini akan menjelaskan mengenai cara menggunakan latex mulai dari menyiapkan segalanya hingga selesai, berdasarkan dari pengalaman pribadi penulis ketika mengerjakan tugas akhirnya.

Tutorial ini dimaksudkan untuk sistem operasi Windows karena mayoritas pengguna komputer di Indonesia menggunakan Windows (begitu juga di kampus saya).

Tahap pertama, download MikTex untuk Windows diĀ http://miktex.org/ . Kemudian instal di direktori manapun yang Anda suka.

Setelah ini, sebenarnya latex sudah terinstal dan bisa digunakan. Untuk mengetik file .tex bisa menggunakan text editor apa saja semacam notepad, notepad++, Scite, ataupun text editor bawaan dari MikTEx yaitu TexWork. Tetapi berdasarkan rekomendasi dari pemilik blog sebelah, TexMakerlah yang menjadi pilihan sebagai editor untuk menulis file .tex.

Download TexMaker dari situs yang bersangkutan http://www.xm1math.net/texmaker/. Setelah itu, instal dan jalankan.

Yang berikutnya harus dilakukan adalah mengeset direktori ke tempat diinstalnya latex. Buka lewat menu Options > Configure TexMaker. Pada baris pdflatex ganti ke direktori diinstalnya latex. Contoh “C:/Program Files/MiKTeX 2.9/miktex/bin/pdflatex.exe”.

Selesai. Sekarang Anda sudah bisa membuat dokumen dengan latex. Bingung mau bikin dokumen apa? bagaimana kalau membuat paper untuk jiki? Tutorial berikutnya akan membahas bagaimana cara membuat dokumen dengan latex dengan hasil akhir paper yang bisa dikirim untuk jiki.

Salam.

 
Leave a comment

Posted by on July 18, 2011 in Programming

 

Tags: ,

Fixed Point Converter

Setelah sebelumnya saya mengepos mengenai kode untuk melakukan konversi bilangan floating point berbagai basis, kini ada tambahan baru yaitu konverter untuk bilangan fixed point.

Fixed point adalah representasi bilangan yang menarik. Dia bisa merepresentasikan bilangan fraksional seperti floating point, tetapi memiliki kelebihan dalam hal bisa dioperasikan seperti bilangan binary signed biasa, seperti dalam operasi penjumlahan dan perkalian. Hal ini memudahkan sehingga kita tidak perlu komponen khusus untuk melakukan operasi tersebut jika mendesain rangkaian dijital.

Kode tersedia di tempat yang sama, yaitu

https://bitbucket.org/Mitbal/iqbal-sandbox

Selamat menikmati, semoga berguna. Salam

–Edit–

Halaman proyek di bitbucket pindah setelah di-fork, menjadi https://bitbucket.org/Mitbal/floating-point-utility

 
Leave a comment

Posted by on July 6, 2011 in Programming

 

Tags: , , ,

Floating Point Conversion Utility

Untuk yang membutuhkan utilitas untuk melakukan konversi bilangan floating point, baik yang standar seperti single precision ataupun double precision, maupun yang custom (128 bit floating point, why not?), Bisa mempergunakan sepotong program yang saya buat untuk mendukung tugas akhir saya. Program konversi ini bisa diambil di alamat berikut:

http://bitbucket.org/Mitbal/iqbal-sandbox

Semoga berguna, Salam

–Edit–

Halaman proyek di bitbucket pindah setelah di-fork, menjadi https://bitbucket.org/Mitbal/floating-point-utility

 
Leave a comment

Posted by on June 11, 2011 in Programming

 

Tags: , ,

Lego Maze Solving with Java

Pada kesempatan ini saya hendak menunjukkan hasil pekerjaan kelompok untuk mata kuliah robotika yaitu Lego Maze Solving yang diprogram dengan menggunakan bahasa pemrograman Java.

Pada defaultnya, untuk memrogram di robot Lego menggunakan software bawaan dari legonya dan hanya bisa diprogram secara visual, alias drag and drop komponen-komponen logiknya, yang tentunya akan sangat menyulitkan jika kita ingin memrogram sesuatu yang kompleks, seperti mencari rute terdekat dari sebuah labirin. Oleh karena itu, saya dan teman satu kelompok saya (Faris Al Afif, Fahri Nurul Hidayat) menggunakan lejos, yang merupakan firmware pengganti firmware default lego, yang didalamnya terdapat Java Virtual Machine, sehingga kita bisa memrogram lego dengan menggunakan bahasa pemrograman Java, yang tentunya akan lebih mudah dibandingkan drag and drop. Informasi lebih lanjut mengenai lejos bisa dilihat di homepagenya.

Skenarionya adalah, ada dua robot. Yang pertama disebut Hayate, dan yang kedua disebut Kazetora. Hayate bertugas pertama menjelajahi maze-nya dan mencari rute terpendek. Setelah didapat, rute terpendek akan dikirimkan berupa kode ke robot kedua, Kazetora, melalui koneksi Bluetooth. Kazetora pun akan menelusuri maze, namun dengan rute yang sudah dikirim.

Untuk video-nya bisa dilihat di situs Youtube dengan link di bawah ini.

Arena 1

Arena 2

Dan berikut laporannya yang juga berisi cuplikan kodenya.

Laporan Tugas Pengganti UTS – Fukushi Fighter

Semoga bisa menginspirasi siapa saja yang ingin membuat berbagai macam hal menarik lainnya dengan Lego. Salam.

 
Leave a comment

Posted by on April 30, 2011 in Programming

 

Tags: , , , , ,

Reversi with Minimax Alpha Beta Pruning

Pada kesempatan kali ini saya ingin berbagi kode yang saya buat ketika liburan musim dingin semester 3 ke 4 yaitu sebuah game reversi yang dibuat di atas platform Flash.

Berikut link untuk game-nya.

http://mit-todo.appspot.com/flash/Reversi.swf

Algoritma untuk AI-nya adalah algoritma minimax yang di optimasi dengan alpha beta pruning yang merupakan algoritma standar untuk game board seperti ini.

Source code nya bisa dilihat di sini

https://bitbucket.org/Mitbal/actionscript-flash

Semoga berguna, Salam.

 
Leave a comment

Posted by on April 16, 2011 in Programming

 

Tags: , , , , , ,

 
Follow

Get every new post delivered to your Inbox.