{Hakim}

Dream Runner

Arsip untuk ‘Java’ Kategori

All about java programming language here, framework [JDK,J2ME,JMF,J2EE,JSF,Spring,Hibernate], tech, etc.

Pengujian Keprimaan Bilangan dengan Sieve of Erathostenes (Primality test with Sieve of Erathostenes)

Ditulis oleh Muhammad Hakim di/pada 19 Februari 2009 11:55 am

today, i manage to write my blog post in English ;). but, first i must warn you, my English is bad, so if you don’t really understand with what i write, than  just read the code :P. For my first English post,  i choose to give better alternative for finding prime number than this post using sieve algorithm.

without further ado, here are the illustration how sieve algorithm work.

We start out with some set of numbers. Normally, that’s 1 to 100, but I don’t want to write all those, so I’m going to go from 1 to 30. The idea stays the same, though.

   1   2   3   4  5   6   7   8  9 10
  11 12 13 14 15 16 17 18 19 20
  21 22 23 24 25 26 27 28 29 30

We start by getting rid of 1, because the definition of ‘prime’ excludes 1:

  1   2   3   4  5   6   7   8  9  10
  11 12 13 14 15 16 17 18 19 20
  21 22 23 24 25 26 27 28 29 30

The smallest prime is 2.  But anything that is _divisible_ by 2 can’t be prime, right?  So we can keep 2, and cross out all its multiples:

    1   2   3   4  5   6   7   8  9  10
  11 12 13 14 15 16 17 18 19 20
  21 22 23 24 25 26 27 28 29 30

and remains

    2     3      5     7     9  
  11    13    15    17    19
  21    23    25    27    29

As you can see, that wipes out half the numbers we started with!  The next prime is 3.  We’re going to keep that, and again, we’ll wipe out the multiples of 3 – since if something is divisible by 3, it can’t be prime: Baca entri selengkapnya »

Ditulis dalam Java, Programming | 3 Komentar »

JMF Webcam Capture (Source Code available)

Ditulis oleh Muhammad Hakim di/pada 1 Januari 2009 3:16 pm

Sebagai salah satu bentuk rasa syukur kepada Allah atas nikmat yang diberikan hari ini :) . saya ingin menyempatkan waktu untuk menjelaskan step by step untuk mengcapture image dari webcam. aplikasi ini sebenarnya tidak persis sama dengan yang pernah saya buat disini, karena saat ini laptop saya masih bermasalah, sehingga saya tidak bisa mengambil source code program yang ada di laptop, jadi saya membuatnya kembali.

prerequisites:

  1. install java + jdk 1.4 > (1.6 / mustang, lebih baik) + netbeans 6.5 (recommended, file yang saya attach adalah netbean project)
  2. jmf telah terinstall,
  3. anda memiliki webcam, merek apapun (dan support rgb  video format), dan telah anda coba dengan menggunakan JMStudio dan dapat bekerja dengan baik.

mengcapture camera dari webcam dengan memanfaatkan library jmf adalah sangat mudah. dan jika anda mencoba search di google, pasti anda akan menemukannya. langkah – langkah nya secara singkat ada 2, pertama mendetect device (camera/ mic), terus membuat player berdasarkan device yang terpilih tersebut dan selanjutnya menampilkannya di layar. thats it. bahkan sebenarnya anda ndak butuh lebih dari sepuluh baris code :) <setelah melalui satu level abstraksi :p >

1. mendeteksi device yang ada

untuk mendeteksi device (driver camera/mic) yang ada pada komputer yang anda perlukan hanya memanggil fungsi getDeviceList, berikut contoh kode programnya

<pre>
</pre><pre>Vector<capturedeviceinfo> devices = CaptureDeviceManager.getDeviceList(null);
for (CaptureDeviceInfo cdi : devices){
    System.out.println(cdi.toString());
}</capturedeviceinfo></pre>

Baca entri selengkapnya »

Ditulis dalam Java, Programming, Tutorial | 17 Komentar »

Thread dengan Java

Ditulis oleh Muhammad Hakim di/pada 23 Maret 2008 1:35 pm

sekarang saya akan coba memberikan sebuah contoh sederhana membuat program multithread dengan java.

kasus:

penjumlahan bilangan – bilangan yang terdapat dalam 3 buah array (tipe integer). dengan aturan bahwa tiap bilangan pada satu array hanya dijumlahkan dengan bilangan pada array yang lain yang memiliki index yang sama

array 1 : 1 2 3 4 5

array 2 : 6 7 8 9 10

array 3 : 11 12 13 14 15

——————————+

jml : 18 21 24 27 30

asumsi: ukuran array sama (5)

menghitung penjumlahan ini secara linear tentu juga sangat mudah, tinggal melakukan iterasi dan lakukan penjumlahan:

// solusi linear
for (int h = 0; h < arr1.length; h++){
	System.out.printf("sum[%d] = %d\n",h, arr1[h] + arr2[h] + arr3[h]);
}

cara lain untuk melakukan penghitungan adalah dengan memanfaatkan thread, karena setiap perhitungan adalah independen satu sama lain di setiap index-nya maka kita dapat mendedikasikan satu thread untuk setiap operasi penjumlahan tersebut, wah sia2 dong? mungkin iya untuk kasus ini, tapi demi kepentingan membuat contoh pemanfaatan thread, dan yang lebih penting lagi, yang merupakan alasan saya membuat contoh ini adalah, jika anda membayangkan masing – masing operasi penjumlahan tersebut adalah sebuah operasi yang memerlukan waktu yang panjang, maka akan lebih baik untuk memanfaatkan thread bukan?, bayangkan jika anda memilih cara linear, satu operasi baru di jalankan setelah operasi lain berhenti, wah bisa lama dong. disamping itu saat ini sudah jamak penggunaan processor multicore, kemampuan anda untuk memahami threading akan membantu anda untuk memaksimalkan kinerja processor (melakukan eksekuse secara paralel alih – alih secara serial).

membuat thread dalam java ada 2 cara, yang membuat kelas yang di turunkan dari kelas Thread, atau kelas yang mengimplementasikan (implements) interface Runnable. untuk sekarang saya memilih cara pertama:

/** kelas simpleThread file simpleThread.java */
public class simpleThread extends Thread{
	private String threadName;
	private int sum;
	private int num1, num2, num3;
	public simpleThread(String name){
		super();
		threadName = name;
	}

	public void setNum(int n1, int n2, int n3){
		num1 = n1;
		num2 = n2;
		num3 = n3;
	}

	public void run(){
		try{
			sum = num1 + num2 + num3;
			System.out.printf("%s calculate %d+%d+%d = %d \n", threadName,num1,num2,num3,sum);
			Thread.sleep(100);
		}catch(InterruptedException ex){
			ex.printStackTrace();
		}
	}
}

/** kelas threadTester file threadTester.java, fungsi: tester thread*/ 
public class threadTester {
	public static void main(String[] args){
		int[] arr1 = {1,2,3,4,5};	// array 1
		int[] arr2 = {6,7,8,9,10};	// array 2
		int[] arr3 = {11,12,13,14,15};	// array3

		// solusi linear
		for (int h = 0; h < arr1.length; h++){
			System.out.printf("sum[%d] = %d\n",h, arr1[h] + arr2[h] + arr3[h]);
		}

		// solution 2 : multi thread
		for (int i=0; i < arr1.length ; i++){
			simpleThread st = new simpleThread("Thread "+i);
			st.setNum(arr1[i], arr2[i], arr3[i]);
			st.start();
		}

		//st1.stop();
	}
}

outputnya kurang lebih begini:

Thread 0 calculate 1+6+11 = 18
Thread 2 calculate 3+8+13 = 24
Thread 4 calculate 5+10+15 = 30
Thread 1 calculate 2+7+12 = 21
Thread 3 calculate 4+9+14 = 27

anda lihat, perhitungan tidak di lakukan secara linear. tentunya solusi ini masih bukanlah solusi terbaik (namanya juga contoh sederhana :) ), dan bahkan aneh :D dan tugas anda adalah membuat solusi lebih baik lagi hihi, selamat belajar :D

Ditulis dalam Java, Programming | 5 Komentar »

WP : Camera Live Capture dengan JMF

Ditulis oleh Muhammad Hakim di/pada 3 Maret 2008 2:14 am

mulai minggu ini saya mencoba mengisi weekend dengan mengerjakan weekend project (WP),

wp saya kerjakan untuk mengisi “waktu kosong” sabtu-minggu, untuk wp pertama ini, saya mengerjakan

sebuah aplikasi untuk menampilkan hasil capture kamera (webcam) secara live. saya menggunakan java (JDK1.6)

plus library JMF 2.1.1e dari sun.

inilah dia screenshot-nya:

image

siapa?

hasil ini saya peroleh dengan menggunakan webcam bawaan laptop yang beresolusi 1.3 Mpx. saya masih belum mengimplementasikan

double buffering, sehingga kadang masih muncul flickr dari hasil tangkapan kamera.

[OS: MS Windows Vista Business, JDK 1.6, webcam 1.3 MPx, JMF 2.1.1e]

mau tau teknis gimana cara ngebikinnya, mungkin lain kali, atau e-mail saya langsung saja kalau butuh source code :)

source download ada di thread ini : webcam capture source code

Ditulis dalam Java, Programming, Weekend Project | 13 Komentar »