{Hakim}

Dream Runner

Arsip untuk Maret 23rd, 2008

Semangat Menuntut Ilmu sampai Meninggal Dunia

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

Saya menukil sebuah penjelasan dari Syaikh Muhammad bin Shalih al-’Utsaimin, dalam terjemahan buku/kitab “Syarah Adab & Manfaat Menuntut Ilmu” yang merupakan terjemahan dari kitab syarh Hilyah Thaalibil ‘ilmi yang di terbitkan Pustaka Imam As-Syafi’i berikut:

Perkataan beliau (Syaikh Abu Bakar Abu Zaid) selanjutnya: “Jangan lemah semangat dalam menuntut ilmu sampai meninggal dunia.” Ini benar, seorang pelajar wajib tidak lemah, karena jika dia membiasakan diri untuk lemah dan malas, maka dia akan terbiasa melakukannya. Barangsiapa yang mencari kemuliaan, maka dia harus sering begadang malam. Berikanlah semua yang engkau miliki untuk mendapatkan ilmu, tapi ilmu itu hanya akan memberikan kepadamu sebagiannya saja, namun jika engkau hanya memberikan sebagian yang engkau miliki niscaya engkau tidak akan mendapatkan apa – apa. Ilmu itu butuh rasa letih dan capek. Namun ada satu yang saya katakan kepada kalian: “Seseorang jika tumbuh berkembang dalam dunia ilmu maka akan mudah baginya untuk mengetahui banyak hal yang kadang – kadang tidak di temukan di dalam kitab, terutama sekali jika niatnya ikhlash dan ingin mendapatkan kebenaran dalam syari’at Allah. Allah Ta’ala akan menganugrahkan ilmu kepadanya yang tak pernah terlintas di benaknya, juga tidak terdapat pada lembaran – lembaran kitab. Seringkali seseorang mencari sebuah permasalahan dalam literatur kita yang kira – kira membahasnya, namun ternyata tidak ada, kemudian dia memikirkan salah satu ayat atau hadist Rosulullah tiba – tiba dia mendapatkan jawabannya, karena barakah al-Quran dan as-Sunnah memang tiada bandingannya.”

ini merupakan nasihat yang sangat berharga bagi saya, setelah mendapat beberapa musibah, ternyata saya tidak cukup kuat sehingga seakan kehilangan arah dalam menuntut ilmu. dahulu waktu smp, bagi saya adalah suatu hal yang wajar untuk belajar sampai tengah malam, menghafal berbagai kitab, berdiskusi dan memimpin diskusi dengan para sahabat dengan di pandu ustadz, membuat terjemahan dari kitab – kitab secara mandiri untuk dipelajari sendiri maupun diajarkan. kemudian saat sma, setelah saya mengingatnya kembali, sebenarnya merupakan awal saya kehilangan fokus dalam berjuang, dengan izin Allah saya diberi kemudahan dalam belajar saat sma, tapi saya lupa, bahwa saya mendapat ujian dengan kehilangan lingkungan yang telah bersama saya sampai smp.

kini saat kuliah saya semakin sadar, saya telah begitu banyak menyiakan waktu, tidak memberikan segala yang saya miliki untuk mendapatkan ilmu yang lebih banyak, dan meskipun seakan sekarang sudah agak terlambat, tapi saya yakin saya masih punya kesempatan dan kinilah saatnya untuk meng’azzamkan diri untuk berjuang lebih keras lagi untuk mendapatkan ilmu beserta memurnikan niat dan keikhlasan. semoga Allah SWT menganugrahkan rasa tawadhu’ baik dalam menerima kebenaran maupun terhadap sesama makhluk kepada saya. dan akhirnya kini saatnya untuk memberikan semua yang saya miliki untuk mendapatkan ilmu.

~Wallaahul Mustaan.

[terimakasih untuk sahabat saya Arif]

Ditulis dalam Quotes, Renungan | Leave a Comment »

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 »