Senin, 17 September 2012

Multithreading


Advance Komputer in Java
Dosen : Mauldy Laya
Kuliah 1 (30 Agustus 2012)
BAB 1. Multithreading

Java adalah bahasa pemrograman banyak thread, yang artinya beberapa hal bisa dilakukan bersama-sama. Thread adalah unit terkecil dari eksekusi suatu program. Thread mengeksekusi rangkaian instruksi satu demi satu. Ketika sistem menjalankan program, komputer akan membuat thread baru. Instruksi-instruksi dalam program akan dieksekusi oleh thread ini secara berantai, satu demi satu dari awal hingga akhir. Thread disebut "mati" jika program selesai dieksekusi.
Dalam sistem komputer modern, beberapa thread bisa tercipta dalam satu waktu. Pada satu saat tertentu, hanya ada satu thread yang bisa dijalankan, karena CPU hanya bisa melakukan satu hal dalam satu waktu. (Pada komputer dengan multiprosesor, multicore, dan hyper-threading, masing-masing prosesor atau core melakukan thread yang berbeda-beda). Akan tetapi sebenarnya komputer membagi waktu menjadi bagian-bagian kecil sehingga seolah-olah seluruh thread dijalankan secara bersama-sama. Pembagian waktu berarti CPU mengeksekusi suatu thread dalam kurun waktu tertentu, setelah itu beralih mengeksekusi thread yang lain, kemudian thread lain, dan seterusnya dan kemudian kembali ke thread pertama lagi kira-kira 100 kali per detik. Di mata user, semua thread berjalan pada saat yang sama.
Cara termudah untuk membuat thread adalah membuat kelas turunan dari java.lang.Thread, yang memiliki semua metode untuk membuat dan menjalankan thread. Metode paling penting adalah run(), yang bisa kita beban-lebihkan untuk melakukan tugas yang kita butuhkan. Atau dengan kata lain run() adalah metode yang akan dijalankan bersamaan dengan thread lain.
Contoh berikut membuat 5 thread, masing-masing memiliki nomor identifikasi unik yang dibuat dengan menggunakan variabel statik. Metode run() dibebanlebihkan untuk menghitung mundur hingga hitungMundur bernilai nol. Setelah metode run() selesai dijalankan, thread akan mati secara otomatis.




Metode run() pada thread biasanya memiliki perulangan internal yang akan terus menerus dipanggil hingga tidak lagi digunakan. Kita harus membuat suatu kondisi sehingga bisa keluar dari perulangan tersebut (misalnya pada contoh di atas, perulangan akan selesai jika hitungMundur bernilai 0). Seringkali, run() dijalankan di dalam perulangan yang tak pernah berhenti (kita akan lihat nanti bagaimana menghentikan suatu thread dengan aman).
Pada metode main(), thread dibuat beberapa kali kemudian dijalankan. Metode start() pada kelas Thread digunakan untuk melakukan tugas tertentu sebelum metode run() dijalankan. Jadi, langkah-langkahnya adalah : konstruktor dipanggil untuk membuat objek, kemudian memanggil start() untuk melakukan konfigurasi thread, dan kemudian metode run() dijalankan. Jika kita tidak memanggil start() maka metode run() tidak akan pernah dijalankan.
Keluaran dari program ini akan berbeda setiap kali dijalankan, karena penjadwalan thread tidak dapat ditentukan dengan pasti (non-deterministik). Setiap thread memiliki kesempatan yang sama untuk menjalankan program. Karenanya, untuk membuat suatu program multi-threading, kita tidak boleh terpaku pada keluaran suatu kompiler. Program kita harus dibuat seaman mungkin.
 berbeda dengan eksekusi ke 2

 
Yielding (menghasilkan)
Misalnya pada contoh di atas, kita bisa mengganti isi metode run() dengan
 
Maka outputnya akan berubah seperti ini :
 
Secara umum, yield mungkin berguna untuk situasi yang agak langka, dan kita tidak bisa menggunakannya secara serius untuk memperbaiki kinerja aplikasi kita.
Tidur (sleeping)
Cara lain untuk mengatur perilaku thread kita adalah dengan memanggil sleep untuk menunda eksekusi thread selama waktu tertentu (dalam mili detik). Misalnya pada kode berikut, kita ubah metode run() menjadi seperti :

Maka outputbya berubah seperti ini:

Metode sleep() tidak digunakan untuk mengatur bagaimana thread akan berjalan menurut urutan tertentu. Metode ini hanya menghentikan eksekusi suatu thread sementara. Yang dijamin adalah bahwa thread akan tidur selama paling sedikit 100 mili detik (atau mungkin sedikit lebih lama hingga thread jalan kembali). Urutan thread diatur oleh penjadwal thread yang memiliki mekanisme sendiri tergantung dari keadaan thread lain atau bahkan aplikasi lain di luar Java, oleh karena itu sifatnya disebut non-deterministik.

Prioritas
Prioritas suatu thread digunakan untuk memberi tahu penjadwal thread tentang prioritas thread tersebut. Tetap saja urutannya tidak bisa ditentukan karena sifatnya yang non-deterministik. Jika ada beberapa thread yang sedang diblok dan menunggu giliran untuk dijalankan, penjadwal thread akan cenderung menjalankan thread dengan prioritas tertinggi terlebih dahulu. Akan tetapi, tidak berarti thread dengan prioritas rendah tidak akan pernah dijalankan, hanya lebih jarang dijalankan ketimbang thread dengan prioritas tinggi.
Perhatikan contoh berikut :
 
Pada contoh di atas, kita ubah konstruktornya untuk mengeset prioritas kemudian menjalankan thread. Pada metode main() kita buat 6 thread, yang pertama dengan prioritas maximum, dan yang lain dengan prioritas minimum. Perhatikan keluarannya, bagaimana thread pertama dijalankan lebih dulu sedangkan thread-thread lain berjalan seperti biasa dalam kondisi acak karena memiliki prioritas yang sama.

Di dalam metode run() kita lakukan perhitungan matematika selama 100.000 kali. Tentunya ini perhitungan yang memakan waktu sehingga setiap thread harus menunggu giliran di saat thread lain sedang dijalankan. Tanpa perhitungan ini, thread akan dilaksanakan sangat cepat dan kita tidak bisa melihat efek dari prioritas thread.
Prioritas suatu thread bisa kita set kapan saja (tidak harus pada konstruktor) dengan metode setPriority(int prioritas) dan kita bisa membaca prioritas suatu thread dengan menggunakan metode getPriority().
Meskipun JDK memiliki 10 tingkat prioritas, akan tetapi sistem operasi memiliki tingkat prioritas yang berbeda-beda. Windows misalnya memiliki 7 tingkat dan Solaris memiliki 231 tingkat prioritas. Yang lebih pasti adalah menggunakan konstanta MAX_PRIORITY, NORM_PRIORITY, dan MIN_PRIORITY pada kelas thread.
 
Thread Daemon
Thread daemon adalah thread yang bekerja di belakang layar yang memberikan layanan umum kepada thread-thread lain selama program berjalan, akan tetapi thread ini bukan bagian penting dari suatu program. Artinya ketika semua thread yang bukan daemon selesai dijalankan, program akan berhenti, dan jika masih ada thread non-daemon yang masih dieksekusi, program tidak akan berhenti.
Perhatikan contoh program berikut ini.

Perintah setDaemon() sebelum metode start() dipanggil. Pada metode run(), thread diperintahkan untuk tidur selama 100 mili detik. Ketika semua thread dimulai, program langsung berhenti sebelum thread bisa mencetak dirinya. Ini karena semua thread kecuali main() adalah thread daemon. Hanya thread non-daemon saja yang bisa mencegah program untuk terus berjalan.
Untuk mengetahui suatu thread adalah thread daemon atau bukan, kita bisa menggunakan perintah isDaemon(). Suatu thread daemon akan membuat thread yang juga merupakan thread daemon. 

Menggabungkan thread
 
Perintah setDaemon() sebelum metode start() dipanggil. Pada metode run(), thread diperintahkan untuk tidur selama 100 mili detik. Ketika semua thread dimulai, program langsung berhenti sebelum thread bisa mencetak dirinya. Ini karena semua thread kecuali main() adalah thread daemon. Hanya thread non-daemon saja yang bisa mencegah program untuk terus berjalan.
Untuk mengetahui suatu thread adalah thread daemon atau bukan, kita bisa menggunakan perintah isDaemon(). Suatu thread daemon akan membuat thread yang juga merupakan thread daemon. 

Menggabungkan thread
Perintah join() bisa digunakan pada thread lain untuk menunda eksekusi hingga thread lain tersebut selesai dijalankan. Misalnya, jika thread a memanggil t.join() pada thread t, maka eksekusi thread a akan terhenti sementara hingga thread t selesai dijalankan (atau ketika t.isAlive() bernilai false).
Kita bisa juga memanggil join() dengan argumen waktu (baik dalam mili detik, ataupun milidetik dan nanodetik), yaitu jika thread target tidak selesai dalam kurun waktu tersebut, eksekusi pada thread induk akan kembali dilakukan.
Panggilan join() bisa dibatalkan dengan memanggil interrupt() pada thread induk, sehingga klausa try ... catch diperlukan pada metode join().
Mari kita lihat contoh berikut ini.

package joindemo;
 
class ThreadPemalas extends Thread {
    private int waktu;
 
    public ThreadPemalas(String namaThread, int waktuTidur) {
        super(namaThread);
        waktu = waktuTidur;
        start();
    }
 
    public void run() {
        try {
            sleep(waktu);
        } catch (InterruptedException e) {
            System.out.println(getName() + " dibangunkan. "
                    + "isInterrupted(): " + isInterrupted());
            return;
        }
        System.out.println(getName() + " sudah bangun.");
    }
}
 
class ThreadPenggabung extends Thread {
    private ThreadPemalas sleeper;
 
    public ThreadPenggabung(String namaThread, ThreadPemalas pemalas) {
        super(namaThread);
        this.sleeper = pemalas;
        start();
    }
 
    public void run() {
        try {
            sleeper.join();
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        System.out.println(getName() + " selesai setelah " + sleeper.getName());
    }
}
 
public class JoinDemo {
    /**
     * @param args
     */
    public static void main(String[] args) {
        ThreadPemalas brr = new ThreadPemalas("brr", 2000);
        ThreadPemalas grr = new ThreadPemalas("grr", 2000);
 
        ThreadPenggabung saya = new ThreadPenggabung("saya",brr);
        ThreadPenggabung anda = new ThreadPenggabung("anda",grr);
 
        grr.interrupt();
    }
 
}
 
Hasiil keluarannya adalah sebagai berikut :



ThreadPemalas adalah thread yang akan ditidurkan sepanjang waktu yang diberikan pada konstruktornya. Metode run() bisa berhenti jika waktu tidur sudah habis atau ada interupsi yang terjadi. Di dalam klausa catch, interupsi akan dilaporkan. Fungsi isInterrupted() melaporkan apakah thread ini diinterupsi atau tidak. Akan tetapi ketika thread ini diinterupsi, kemudian pengecualiannya ditangkap oleh klausa catch, misalnya, maka tanda interupsi akan segera dihapus. Oleh karenanya isInterrupted() akan selalu bernilai false pada program di atas. Tanda interupsi akan digunakan pada situasi lain yang mungkin berada di luar pengecualian.
ThreadPenggabung adalah thread yang menunggu hingga ThreadPemalas selesai dengan tugasnya, yaitu dengan memanggil join() ke objek ThreadPemalas pada metode run()-nya.
Pada metode utama main(), setiap ThreadPemalas tersambung pada ThreadPenggabung. Dan kita lihat pada keluarannya, jika ThreadPemalas selesai bekerja, baik karena dibangunkan melalui interupsi atau karena waktu sudah selesai, ThreadPenggabung yang tersambung juga akan menyelesaikan tugasnya.

Variasi Kode
Pada contoh-contoh di atas, semua objek thread yang kita buat diturunkan dari kelas Thread. Kita hanya membuat objek yang berfungsi sebagai thread dan tidak memiliki tugas dan fungsi lain. Akan tetapi, kelas kita mungkin saja merupakan kelas turunan dari kelas lain. Karena Java tidak mendukung pewarisan berganda, kita tidak bisa menurunkan kelas tersebut bersamaan dengan kelas Thread.
Dalam hal ini, kita bisa menggunakan cara alternatif yaitu dengan mengimplementasi interface Runnable. Runnable hanya memiliki satu metode untuk diimplementasi, yaitu metode run().
Contoh berikut mendemonstrasikan contoh penggunaannya :

Hasil outputmya adalah sebagai berikut :

Satu-satunya yang dibutuhkan oleh kelas RunnableSederhana adalah metode run(), akan tetapi jika kita ingin melakukan hal lainnya, seperti getName(), sleep(), dan lainnya, kita harus secara eksplisit memberikan referensi dengan menggunakan Thread.currentThread().
Ketika suatu kelas mengimplementasikan interface Runnable, artinya kelas ini memiliki metode bernama run(), akan tetapi tidak berarti bahwa kelas ini bisa melakukan sesuatu seperti kelas Thread atau kelas-kelas turunan yang kita buat dari kelas ini. Kita harus membuat objek Thread sendiri seperti ditunjukkan dalam metode main() di atas, kemudian menjalankan start() sendiri.
Kemudahan yang ditawarkan oleh interface Runnable adalah kemungkinan untuk menggabungkannya dengan kelas dan interface lain. Misalnya kita ingin membuat kelas baru yang merupakan kelas turunan dari suatu kelas lain. Kita cukup menambahkan impement Runnable pada definisi kelasnya untuk membuat kelas yang bisa kita jadikan thread. Dengan cara ini, kita masih bisa mengakses anggota kelas induk secara langsung, tanpa melalui objek lain. Akan tetapi, kelas dalam (inner class) juga bisa mengakses anggota kelas luar (outer class). Kadang-kadang kita ingin juga membuat kelas dalam yang merupakan turunan dari kelas Thread.




Senin, 21 Mei 2012

Memaknai Arti Kehilangan...

Ada seorang perempuan yang merasa sangat
kehilangan saat ditinggal mati suami yang
sangat dicintainya.

Demikian besar rasa cintanya, sehingga ia
memutuskan untuk mengawetkan mayat
suaminya dan meletakkannya di dalam kamar.

Setiap hari, dia menangisi suaminya yang telah
menemaninya bertahun-tahun. Wanita itu
merasa dengan kematian suaminya, maka tidak
ada lagi makna dari hidup yang dijalaninya.

Cerita tentang wanita itu terdengar oleh seorang
pria bijak yang juga terkenal memiliki kesaktian
yang tinggi. Didatanginya wanita tersebut, dan
dia mengatakan bisa menghidupkan kembali
suaminya. Dengan syarat dia meminta
disediakan beberapa bumbu dapur yang mana
hampir setiap rumah memilikinya.

Namun, ada syarat lain, bumbu dapur tersebut
harus diminta dari rumah yang anggota keluarganya
belum pernah ada yang meninggal dunia sama
sekali.

Mendengar hal itu, muncul semangat di hati
sang wanita tersebut. Dia berkeliling ke semua
tetangga dan berbagai penjuru tempat. Setiap
rumah memiliki bumbu dapur yang diminta oleh
si orang bijak, tapi setiap rumah mengaku
pernah mengalami musibah ditinggal mati oleh
kerabatnya. Entah itu orang tua, suami, nenek,
kakek, adik, bahkan ada yang anaknya sudah
meninggal.

Waktu berjalan dan tidak ada satu pun rumah
yang didatanginya bisa memenuhi syarat yang
dibutuhkan.

Hal ini menjadikan wanita tersebut sadar, bahwa
bukan hanya dirinya yang ditinggal mati oleh
orang yang disayanginya.

Akhirnya, dia kembali mendatangi si orang
bijak dan menyatakan pasrah akan kematian
suaminya. Hingga kemudian dia menguburkan
mayat suaminya, dan menyadari bahwa semua
orang pasti pernah mengalami masalah
sebagaimana yang dihadapinya.

Pesan dari kisah di atas adalah, jangan pernah
menganggap bahwa masalah yang ada pada
kita merupakan masalah yang paling besar
,
sehingga kita mengorbankan waktu hanya untuk
terus meratapi musibah tersebut.

Yakinlah, bahwa semua orang di dunia ini
pernah mengalami musibah,  apapun bentuknya.
Yang membedakan adalah bagaimana
seseorang menghadapi dan menyikapi
masalah yang ada pada dirinya.
:-)

sekedar share, copas : http://www.anneahira.com/

Cara Berkompromi Dengan Perasaan Perempuan....

Dunia memang penuh dengan anomali kehidupan yang terkadang sulit
dipahami oleh akal. Salah satunya adalah PERASAAN PEREMPUAN.

Perasaan perempuan itu seperti apa sih?

Lembut, keras, tegas, ragu-ragu, dan berbagai rupa rasa lainnya.
Perasaan peremuan inilah yang menjadi misteri sepanjang zaman.

Sesama perempuan saja kadang-kadang saling sebal karena sangat
sulit memahami perasaan perempuan lainnya. Pertengkaran sering
terjadi hanya karena masalah sepele. Laki-laki pun tidak kalah
bingungnya bila sudah menyangkut masalah perasaan perempuan.

Perempuan begitu memperhatikan hal detil. Ada yang salah sedikit
dengan alisnya atau sepatunya, atau kulitnya menjadi sedikit belang
setelah berenang, dia bisa terus khawatir dan ngomel seharian.

Padahal, bila ditanya pada laki-laki, apakah mereka memperhatikan
apa yang sering diperhatikan perempuan bila ingin menarik perhatian
laki-laki? Apa jawab mereka? Ternyata laki-laki tidak terlalu
perhatian dengan hal yang selama ini menjadi perhatian perempuan. :-)

Satu lagi, perempuan suka pamer. Perasaannya akan berbunga-bunga
beraneka warna kalau sudah dipuja-puji. Oleh karena itu, pakaian
seksi yang terbuka di sana sini pun dipakai demi meraih setitik
pujian. Padahal, banyak laki-laki justru penasaran kalau melihat
wanita manis tapi berbalut pakaian yang tertutup.

Ken Arok bisa tergila-gila dengan Ken Dedes, bukan karena Ken Dedes
berpakaian maha seksi, tapi hanya karena melihat betis Ken Dedes
'sekilas' tertiup angin. Bayangkan, hanya sekilas saja sudah bisa
membuat Ken Arok melakukan begitu banyak hal demi mendapatkan Ken
Dedes. Sementara Ken Dedes bukanlah seorang perawan ketika itu. Dia
adalah istri Tunggul Ametung, dan sedang mengandung anak Tunggu
Ametung.

Perempuan oh perempuan... mereka memang spesial :-)

Banyak laki-laki sering bertanya "Tidak mengerti saya apa maunya,
jadi saya harus gimana?"


Nih, saya kasih tips, bagaimana cara memahami dan berkompromi
dengan perasaan perempuan:

  1. Perempuan suka didengarkan. Jadi kalau dia sedang marah,
    dengarkan saja. Kalau diladeni, tujuh hari tujuh malam, dia tahan
    bertengkar!
  2. Perempuan suka dilembuti. Jangan pernah sekali-kali kasar pada
    perempuan karena perempuan bisa menjadi lebih kasar.
  3. Perempuan suka diberi kejutan-kejutan kecil. Tidak harus memberi
    emas berlian pada sang istri, cukup kecupan mesra di kening tapi
    penuh cinta nan lembut.
  4. Sentuhlah perempuan dengan kasih yang sesungguhnya. Kasih ini
    akan membuat perempuan memberikan cinta yang lebih.
  5. Berikan perhatian setiap saat. Ketika tidur pun sebenarnya
    perempuan ingin diperhatikan. Ketersipuannya menandakan rasa
    senangnya diperhatikan.
  6. Kirim selalu kata-kata mesra nan menggoda. Walau kata-kata
    cinta terasa biasa, tidak bagi perempuan. Kata-kata "Aku kangen
    kamu sayang
    ", atau "Sehari tanpa mendengar suaramu, aku bisa gila",
    atau "Hanya kamu yang membuatku tergila-gila", sudah cukup membuat
    hati perempuan melambung ke langit tuju. Menggetarkan relung-relung
    hati dan jiwanya.
Perempuan memang unik dan special. Sayangi dia, dan Anda akan
mendapatkan ribuan kali lipat cintanya. :-)



Anne Ahira - AsianBrain.com

//////////////////////////////
sekedar share, copas : http://www.anneahira.com/

Agar tidak lagi ada penyesalan…

Setiap orang memiliki berbagai peran dalam hidupnya. Sesederhana apapun orang itu. Setiap orang tidak mungkin memiliki hanya satu peran. Peran sebagai anak, ibu, ayah, anggota masyarakat, karyawan, organisasi, terlebih lagi, peran sebagai hamba-Nya.
Siapapun pastinya pula mengharap yang terbaik pada setiap perannya. Sayangnya, kita memiliki banyak keterbatasan, baik terbatas waktu, tenaga, finansial dan sebagainya.
Tidak jarang kita temui, orang-orang yang sukses dalam satu peran, namun gagal di peran yang lain. Misalnya saja, ia seorang Pimpinan Perusahaan yang hebat, namun rumah tangganya berantakan. Atau, dia seorang aktivis yang pintar, namun jarang masuk kuliah, dan nilainya mengkhawatirkan.
Nah, bagaimanakah kita menempatkan peran-peran kita dengan sebaik-baiknya?
Pandailah membuat skala prioritas
Misalnya saja, ketika kita berada di tempat kerja, maka optimalkan peran kita sebagai karyawan. Namun, saat kita berada di rumah, maka berperanlah sebagai anggota keluarga yang baik.
Berilah waktu untuk orang-orang yang Anda cintai
Sebelum kita menyesal, maka berilah perhatian pada orang-orang yang kita cintai. Jangan kalahkan kepentingan mereka dengan target-target kesuksesan yang kita buat. Karena, sesungguhnya energi cinta dari mereka lah yang tetap membuat kita tetap semangat untuk meraih sukses itu sendiri.
Jangan pernah lupa memanjakan diri!
Sesibuk apapun kita, sesekali memanjakan diri sendiri tidak ada salahnya. Memforsir diri terlalu berlebih akan mengantarkan kita pada stress bahkan depresi. Luangkan waktu untuk diri sendiri. Dengarkan musik, berolahraga, pergi ke salon, membaca buku, lakukan apa yang Anda senangi dan positif akan merilekskan diri Anda!
Buatlah perencanaan dengan realistis
Setiap kita pastinya menginginkan sukses dengan segera. Namun, berusahalah untuk tetap realistis. Jika Anda memiliki 10 prioritas pencapaian pada satu hari, maka jika terpenuhi 3 teratas saja itu sudah cukup baik.
Penghargaan pada diri sendiri
Apapun yang sudah Anda pilih dalam hidup Anda, maka itulah yang terbaik. Anda tidak perlu menyesali, meski itu kegagalan. Justru, kita bisa belajar banyak dari kegagalan, dan tahu cara melakukan segalanya dengan lebih baik.
Okay, saatnya kembali mengevaluasi bagaimana Anda telah berperan selama ini. Apakah ada peran tertentu yang Anda telantarkan? Adakah orang-orang yang seharusnya Anda beri perhatian, namun luput karena tersibukkan oleh satu fokus saja?
Apapun itu, masih ada waktu untuk mengubah segalanya agar lebih baik. Tentu saja hanya dengan satu alasan, agar tidak lagi ada penyesalan...
By: Anne Ahira - AsianBrain.com
//////////////////////////////////////////////////////////////////////////

sekedar share, copas : http://www.anneahira.com/

Andai Waktu Bisa Terulang...

Catatan kecil untuk temanku: Dwi Irawati 

------------------------------------------------------------------------
Andai Waktu Bisa Terulang

Jika ada sesuatu yang sangat berharga, maka itu adalah waktu.

Siapapun orangnya, tidak akan bisa mengulang setiap waktu yang
sudah terlewatkan. Tidak peduli seberapa kaya orang itu, seberapa
penting jabatannya, waktu tidak mau diajak kompromi. Ia akan terus
berjalan.

Tidak peduli apakah orang-orang mampu melewatinya dengan
menyenangkan, atau sebaliknya.

Setiap orang, dimanapun ia berada, memiliki waktu 24 jam dalam
sehari. Tidak ada yg mendapatkan lebih, meski hanya satu menit saja.
Semua sama. Tidak kurang, tidak lebih.

Jika kemudian waktu bisa terulang, tentu kita semua mengharap
melakukan hal-hal yang baik saja. Memperbaiki kesalahan yang pernah
kita lakukan. Sayangnya, waktu memang tidak akan pernah bisa
terulang.

Teman, untuk mencapai segala macam kesempurnaan, memang selalu
dibutuhkan proses 'trial and error". Oleh sebab itu, jika kemarin atau
hari ini Anda melakukan kesalahan, carilah kesempatan untuk
memperbaikinya.

Jika kita gagal melakukan sesuatu hal, bukan berarti itu akhir segalanya.
Belajarlah dari kesalahan, dan berusahalah untuk tidak mengulanginya.
Belajarlah memaafkan diri sendiri & memaafkan orang lain, karena
tidak ada manusia yang sempurna!

Yang lalu biarlah berlalu. Mungkin akan menjadi pengalaman selama
hayat. Bagaimanapun diri Anda di masa lalu, itu tidaklah penting.
Yang jauh lebih penting adalah bagaimana diri Anda di masa depan!
Keep fight! :-)
dari temanmu,
Ahira

/////////////////////////////////////////////////////////////////


sekedar share , copas : http://www.anneahira.com/

Manakala Hidupmu Tampak Susah Untuk Dijalani...

Seorang professor berdiri di depan
kelas filsafat dan mempunyai
beberapa barang di depan mejanya.

Saat kelas dimulai, tanpa
mengucapkan sepatah kata, dia
mengambil sebuah toples mayones
kosong yang besar dan mulai mengisi
dengan bola-bola golf.

Kemudian dia berkata pada para
muridnya, apakah toples itu sudah
penuh? Mahasiswa menyetujuinya.

Kemudian professor mengambil sekotak
batu koral dan menuangkannya ke
dalam toples. Dia mengguncang dengan
ringan. Batu-batu koral masuk,
mengisi tempat yang kosong di antara
bola-bola golf.

Kemudian dia bertanya pada para
muridnya, Apakah toples itu sudah
penuh? Mereka setuju bahwa toples
itu sudah penuh.

Selanjutnya profesor mengambil
sekotak pasir dan menebarkan ke
dalam toples...

Tentu saja pasir itu menutup segala
sesuatunya. Profesor sekali lagi
bertanya apakah toples sudah penuh?

Para murid dengan suara bulat
berkata, "Yaa!"

Profesor kemudian menyeduh dua
cangkir kopi dari bawah meja dan
menuangkan isinya ke dalam toples,
dan secara efektif mengisi ruangan
kosong di antara pasir.

Para murid tertawa...

"Sekarang," kata profesor ketika
suara tawa mereda, "Saya ingin
kalian memahami bahwa toples ini
mewakili kehidupanmu.
"

"Bola-bola golf adalah hal-hal yang
penting - Tuhan, keluarga, anak-anak,
kesehatan, teman dan para
sahabat. Jika segala sesuatu hilang
dan hanya tinggal mereka, maka
hidupmu masih tetap penuh.
"

"Batu-batu koral adalah segala hal
lain, seperti pekerjaanmu, rumah
dan mobil.
"

"Pasir adalah hal-hal yang lainnya
- hal-hal yg sepele.
"

"Jika kalian pertama kali memasukkan
pasir ke dalam toples,
"  lanjut
profesor, "Maka tidak akan tersisa
ruangan untuk batu koral ataupun
untuk bola-bola golf. Hal yang sama
akan terjadi dalam hidupmu
."

"Jika kalian menghabiskan energi
untuk hal-hal sepele, kalian tidak
akan mempunyai ruang untuk hal-hal
yang penting buat kalian
"

"Jadi..."

"Berilah perhatian untuk hal-hal
yang kritis untuk kebahagiaanmu.
Bermainlah dengan anak-anakmu.
Luangkan waktu untuk check up
kesehatan.


Ajak pasanganmu untuk keluar makan
malam. Akan selalu ada waktu untuk
membersihkan rumah, dan memperbaiki
mobil atau perabotan.
"

"Berikan perhatian terlebih dahulu
kepada bola-bola golf - Hal-hal
yang benar-benar penting. Atur
prioritasmu. Baru yang terakhir,
urus pasir-nya
."

Salah satu murid mengangkat tangan
dan bertanya, "Kalau Kopi yg
dituangkan tadi mewakili apa?"

Profesor tersenyum, "Saya senang
kamu bertanya. Itu untuk menunjukkan
kepada kalian, sekalipun hidupmu
tampak sudah begitu penuh, tetap
selalu tersedia tempat untuk
secangkir kopi bersama sahabat"
:-)

sekedar share n copas : http://www.anneahira.com/manakala-hidupmu-tampak-susah-untuk-dijalani.htm

Kamis, 17 Mei 2012

Dari yang Disayang

dari yang disayang ADCHA


------------------------------------------------------------------------------------------------------

Happy aniversary sayang, tanggal 17 akan selalu di dngat walaupun ingatan apapun coba menghapusnya. tiap tanggal 17 seakan semua kenangn kembali terulang dengan berjalan sendirinya...
 

12 kali tanggal 17, itu bukanlah waktu yang sebentar untuk menguji sebuah rasa yang disebut kasih sayng. terjadi sudah ke12 itu mengerucut menjadi satu nama indah, yaitu first aniversary... yang setiap orang pasti akan bangga jikalau melewatinya, termasuk kekasihmu ini....
tentu banyak yang telah terjadi di 12-17 ini, dari mulai senang atauoun sedih, seolah tiada rasa yang tersisa untuk dirsakan bersama.
 

ya.. bersama, sebuah kata yang sbenernya berarti ganda, mncerminkan kita yang sekarang, bersama itu bertemu. tp qt memiliki arti lain, bersama tidak harus bertemu. dengan keadaan kita yang sekarang lebih tepat disebut kebersaamaan dari masing2 hati kita... sebuah konspirasi nyata dari cinta..
kebersamaan tidak hanya milik hati kita, tp juga hati yang ada di dekat kita tentunya. menciptakan kebersamaan di antara hati di sekitar kita adalah target umum dari apa yang kita lakukan sekarang, demi mencapai target khusus yaitu sebuah Janji Suci.

jika target umum telah tercapai niscaya semua akan kembali kepada kita apakah masih ingin melanjutkan target yang lebik khusus. dengan segala kerendahan hati akan sifat yang ku miliki harapan kita tentunya sama, menuju sebuah kebahagiaan abadi di masa nanti....
sebagian kecil dari perjalan yang ada di 12-17 ini... masih akan banyak terjadi sesuatu yang positif maupun sebaliknya nanti dan harapan lagi semoga semua akan dibuka jalan lebih lebar.
 

terimakasih, terimakasih telah menjadi orang yang paling mengerti akan perasaanQ, menempati seluruh ruang hati, penuh tak tersisa. terimakasih menemani akan kekosngan perasaan yang dulu pernah ada. trimakasih selelu tau tentangku, tentang semua dariku..
 

terimakasih telah menjadi permaisuri pendamping dalam hatiku, selalu sabar akan egoQ. terimakasih sayapmu itu mebuat ku melihat dunia yang lebih indah....
 

I Love You cinta, :*
adekQ sahabatQ pacarQ,
keep be like this baby......... :*
^^


--------------------------------------------------------------------------------------------------------