Monday, November 24, 2008

Dunia Maya, Ruarrrrrr.....Biasa.......

Dengan perkembangan era digital saat ini, arus informasi sangat luar biasa derasnya, terutama di dunia maya yang kita sebut sebagai internet. Sebagaimana istilahnya sebagai dunia maya, internet tak ubahnya dunia ini secara fisik kita kenal, ada hitam, ada putih, ada abu-abu, tergantung pengguna masing-masing karena internet adalah hanya sekedar alat. Banyak kalangan sangat diuntungkan, tetapi tidak jarang juga menimbulkan kerugian karena makin terbukanya kemunculan model-model kejahatan baru. Segala aktifitas dan kreatifitas kita di dunia nyata dibatasi oleh koridor-koridor hukum yang relatif telah mapan, tetapi di dunia maya banyak kreatifitas yang lepas kontrol atau setidaknya sangat sulit dikontrol. Bisa saja diperlukan produk undang-undang untuk mengatur komunikasi di dunia maya, namun hal itu tentu tidaklah semudah membuat aturan di dunia nyata. Dibutuhkan aturan yang benar-benar adil, tidak sekedar reaksioner, dan tidak “gebyah uyah”, yang berpeluang mengebiri hak-hak kreatifitas seseorang.

Kehadiran dunia maya bak rob yang tiba-tiba datang dan menimbulkan euforia. Pada awal kemunculannya, banyak portal dibangun dan tenggelam dalam euforia, apa saja ingin di-"internet"-kan.Segala hal ingin dibuat maya, dan tidak sedikit akhirnya portal-portal yang tidak memiliki landasan kuat satu per satu berguguran.Bagi pengguna tertentu, internet tidak sekedar dipandang sebagai media komunikasi yang menyajikan informasi yang berlimpah dan cepat, tapi juga perlu menampilkan informasi yang berkualitas dan santun.

Pada masa kini, manfaat dari dunia maya tentu sudah tidak menarik untuk menjadi bahan diskusi. Yang perlu kita waspadai adalah "mabuknya" opengguna internet itu sendiri karena derasnya arus informasi yang bisa didapat dengan cepat. Saking "mabuknya" tidak mampu mengolah informasi yang diterima dan tidak menyadari dampak dari pendistribusian informasi yang dilakukan. Apa pun informasi yang diperoleh ditelan mentah-mentah tanpa ada pengolahan lebih lanjut. Celaknya tidak jarang suatu informasi yang menyesatkan langsung di teruskan ke pengguna lainya, dengan latar belakang kesengajaan ataupun tidak.Persoalannya saat ini adalah bukan bagaimana cara mendapatkan dan menyebarkan informasi, tetapi bagaimana cara mengolah informasi.

Komputer adalah perangkat yang dibuat dengan mengadopsi cara kerja manusia. Ada bagian yang disebut perangkat keras, dan ada bagian yang disebut piranti lunak. Dengan pendekatan suatu sistem, terdapat eleman yang disebut input, proses, output. Input adalah bagian yang digunakan untuk menerima masukan, proses adalah upaya untuk memberikan nilai lebih atas masukan yang diterima, sedangkan output adalah produk yang dihasilkan oleh suatu proses. Celakanya, kita sendiri yang notabenya memiliki desain fisik yang lebih hebat dan canggih dari komputer itu sendiri sering lepas kendali, sehingga input yang masuk langsung dikeluarkan tanpa ada suatu proses. Agar informasi itu memberikan manfaat, maka tiga hal di atas, perlu diperhatikan.

Input/masukan.
Adalah masukan/data yang akan diolah kembali agar diperoleh nilai lebih.Informasi yang berkualitas berdampak pada nilai lebih yang dihasilkan pada tahap selanjutnya. Terdapat banyak referensi untuk mengukur kualitas informasi, setidaknya tidak sekedar kuantitas dan kecepatan distribusi.Kualitas informasi antara lain bisa diukur dari sisi waktu, bentuk atau format, akurasi, kelengkapan. Dalam kaidah pemrosesan data, sering dipaparkan suatu istilah yang kita kenal GIGO, Garbage In Garbage Out.Artinya, kalau informasi itu tidak memiliki suatu kualitas (sampah), maka hasil dari proses selanjutnya juga tidak berkualitas (sampah).Dalam hal ini, memilah-milah informasi yang berkulitas adalah sangat penting dari pada sekedar mengumpulkan sampah, meskipun penampung kita tidak diragukan kapasitasnya.

Proses/pengolahan.
Informasi yang berkulitas, perlu adanya pengolahan yang tepat agar bisa dihasilkan nilai guna yang lebih.Cross Check dan konfirmasi ke sumbernya sangat diperlukan jika dirasa suatu informasi itu meragukan dan bisa menimbulkan polemik.Menyebarkan informasi di dunia maya tanpa proses yang matang, bisa saja menimbulkan masalah yang runyam, bak percikan api dalam sekam, membesar dan membara tak terkendali.

Output/Keluaran.
Informasi yang berkulitas dan proses yang sudah tepat belumlah cukup menghasilkan nilai tambah jika output disajikan tidak tepat, baik bentuk, cara, maupun waktunya.Cara komunikasi kita (orang Indonesia umumnya) saat menyampaikan suatu pesan ke orang lain dengan menggelengkan kepala, belum tentu dipersepsikan sama oleh penerima pesan jika penerima pesan adalah orang India misalnya. Tidak jarang juga terjadi kasus yang tanpa suatu kesengajaan kecuali ingin membangun suatu canda (joke), tetapi karena tidak berada pada kondisi yang tepat bukan canda yang dihasilkan tetapi malah bencana.

Akhirul kalam, dijelaskan dalam suatu hadits Nabi, "Barangsiapa yang beriman kepada Allah dan hari akhir, maka berkatalah yang benar atau diam" (HR.Bukhari Muslim).

Tuesday, November 04, 2008

Mengenal Concurrency Control pada Database

Tujuan utama dalam pengembangan database adalah membuat banyak pengguna bisa mengakses data secara bersamaan. Pengaksesan data ini tidak bermasalah jika semua pengguna hanya membaca data dan mereka tidak mengganggu satu sama lain. Tapi ketika dua pengguna atau lebih mengakses database yang sama secara bersamaan dan salah satu melakukan perubahan terhadap data, maka hal ini akan dapat menimbulkan adanya data yang tidak konsisten (inconsistency data).

Untuk mengatasi adanya kemungkinan inconsistency data, maka dibutuhkan adanya suatu mekanisme yang mengatur jalannya transaksi pengaksesan data yang sama tersebut. Mekanisme ini dikenal dengan istilah concurrency control. Concurrency control adalah proses pengaturan operasi–operasi dalam banyak transaksi yang berjalan secara simultan pada database tanpa mengganggu operasi pada transaksi lainnya sehingga dapat menghasilkan data yang konsisten ( Connolly, 2005, p577 ). Tiga contoh masalah penting yang terkait oleh concurrency, yaitu masalah Lost-Update, masalah Uncommitted Dependency, dan masalah Inconsistent Analysis.
Masalah Lost-Update
Penjelasan : Transaksi T1 dan T2 mulai pada waktu yang hampir bersamaan, dan keduanya membaca saldo $100. T2 menambah balx $100 menjadi $200 dan menyimpan hasil perubahannya dalam database. Di sisi lain, transaksi T1 mengurangi copy dari balx $10 menjadi $90 dan menyimpan nilai ini dalam database, menimpa hasil update sebelumnya dan akhirnya menghilangkan $100 yang telah ditambahkan sebelumnya ke dalam saldo. Kehilangan update transaksi T2 dapat dihindari dengan mencegah T­1 membaca nilai dari balx sampai update T2 telah selesai.
Masalah Uncommited Dependency (dirty read)
Penjelasan: Transaksi T4 mengubah balx menjadi $200 namun T4 membatalkan transaksi sehingga balx harus dikembalikan ke nilai asalnya, yaitu $100. Namun, pada waktu itu, transaksi T3 telah membaca nilai baru balx ($200) dan menggunakan nilai ini sebagai dasar pengurangan $10, sehingga memberikan saldo yang keliru sebesar $190, yang seharusnya adalah $90. Nilai balx yang dibaca T3 disebut dirty data, yang berasal dari nama alternatifnya, yaitu masalah dirty read. Alasan rollback ini tidaklah penting. Masalahnya adalah transaksinya gagal (error), mungkin mengurangi rekening yang salah. Efeknya adalah asumsi T3 yang menganggap update T4 telah berhasil dijalankan, meskipun selanjutnya perubahannya dibatalkan. Masalah ini dihindari dengan mencegah T3 membaca balx sampai keputusan telah dibuat, yaitu commit atau membatalkan efek T4. Dua masalah di atas mengkonsentrasikan pada transaksi yang mengubah database dan campur tangan mereka bisa membuat database menjadi corrupt. Namun, transaksi yang hanya membaca database bisa juga memberikan hasil yang tidak akurat jika mereka diijinkan untuk membaca hasil bagian dari transaksi yang belum selesai yang secara bersamaan membaca database. Contohnya dijelaskan pada masalah inconsistent analysis.
Masalah Inconsistent Analysis
Penjelasan: Masalah inconsistent analysis muncul ketika sebuah transaksi membaca beberapa nilai dari database tapi transaksi kedua mengubah beberapa darinya ketika eksekusi transaksi yang pertama. Contohnya, sebuah transaksi yang meringkas data pada sebuah database(contohnya, saldo total) akan mendapat hasil yang tidak akurat jika, ketika berjalan, transaksi lain sedang mengubah database. Pada contoh diatas, ringkasan transaksi T6 sedang berjalan secara bersamaan dengan transaksi T5. Transaksi T6 sedang menjumlahkan saldo rekening x ($100), rekening y ($50), dan rekening z($25). Namun, di tengah jalan, transaksi T5 telah mentransfer $10 dari balx ke bal­z, sehingga T6 sekarang mempunyai hasil yang salah (lebih besar $10).
Tujuan protokol concurrency control adalah untuk menjadwalkan transaksi sedemikian rupa sehingga dapat menghindar dari berbagai gangguan, dan juga mencegah tipe-tipe masalah yang digambarkan pada sesi sebelumnya. Satu solusi yang jelas adalah mengijinkan hanya satu transaksi yang berjalan dalam satu waktu. Satu transaksi berstatus commit sebelum transaksi berikutnya diijinkan mulai. Namun, tujuan dari DBMS multi user juga untuk memaksimalkan derajat concurrency atau paralelisme dalam sebuah sistem, sehingga transaksi yang dapat berjalan tanpa mengganggu satu sama lain dapat berjalan secara paralel. Contohnya, transaksi yang mengakses bagian berbeda pada database dapat dijadwalkan bersama tanpa gangguan. Dalam bagian ini, kita memeriksa serializability sebagai sebuah cara untuk membantu mengidentifikasi eksekusi transaksi tersebut yang dijamin untuk memastikan konsistensi. Pertama, kita beri beberapa definisi.
Schedule adalah sebuah urutan dari operasi-operasi oleh satu set transaksi yang jalan bersamaan yang menjaga urutan operasi pada setiap transaksi individual ( Connolly, 2005, p580 ). Sebuah transaksi mencakup sebuah urutan operasi yang terdiri dari tindakan baca dan/atau tulis pada database, diikuti oleh sebuah tindakan commit atau abort. Sebuah schedule S terdiri dari sebuah urutan operasi dari sekumpulan n transaksi T1, T2, … Tn, bergantung pada constraint yang dilindungi oleh urutan operasi untuk setiap transaksi pada schedule tersebut. Jadi, untuk setiap transaksi Ti pada schedule S, urutan operasi pada Ti harus sama dengan schedule S. Serial Schedule adalah sebuah schedule di mana operasi dari setiap transaksi dijalankan secara berurutan tanpa adanya tarnsaksi yang mengganggu transaksi lainnya (Connolly, 2005, p580). NonSerial Schedule adalah sebuah schedule di mana operasi-operasi dari satu set concurrent transactions mengalami interleaved (Connolly, 2005, p580). Pada sebuah serial schedule, transaksi dijalankan pada serial order. Contohnya, jika kita mempunyai dua transaksi T1 dan T2, serial ordernya akan menjadi T1 diikuti oleh T2, atau T2 diikuti oleh T1. Lalu, pada eksekusi serial tidak ada interferensi antara transaksi, karena hanya satu transaksi yang berjalan pada satu waktu. Tujuan serializibility adalah untuk menemukan non serial schedule yang mengijinkan transaksi untuk berjalan secara bersamaan tanpa mengganggu satu sama lain, dan kemudian memproduksi sebuah state database yang dapat diproduksi oleh sebuah eksekusi serial. Jika sebuah set transaksi berjalan secara bersamaan, bisa dikatakan bahwa schedule (nonserial) adalah benar jika memproduksi hasil yang sama seperti beberapa eksekusi serial lainnya. Schedule seperti itu disebut serializable. Untuk mencegah inkonsistensi dari transaksi yang mengganggu satu sama lain, penting untuk menjamin serializability dari transaksi yang jalan bersamaan.
Pada serializability, urutan operasi baca dan tulis itu penting. Berikut ini hal – hal yang perlu diperhatikan:
  • Jika dua transaksi hanya membaca satu item data yang sama, dua transaksi tersebut tidak mengalami konflik dan urutan menjadi tidak penting.
  • Jika dua transaksi melakukan operasi membaca ataupun menulis pada item data yang berbeda, dua transaksi tersebut tidak mengalami konflik dan urutan menjadi tidak penting.
  • Jika satu transaksi menulis sebuah item data dan transaksi lain baik membaca ataupun menulis pada item data yang sama, maka urutan eksekusi itu menjadi penting.
Anggap schedule S1 yang ditunjukkan oleh gambar (a) di bawah mengandung operasi dari dua transaksi yang sedang berjalan secara bersamaan, yaitu T7­ dan T8. Karena operasi tulis pada balx di T8 tidak konflik dengan operasi baca berikutnya pada baly di T7, kita dapat mengubah urutan operasinya untuk memproduksi schedule yang ekuivalen (S2) ditunjukkan oleh gambar (b). Jika kita sekarang juga mengubah urutan dari operasi yang tidak konflik berikut, kita memproduksi serial schedule yang ekuivalen (S3) ditunjukkan oleh gambar (c) di bawah.
  • Ubah urutan write(balx) di T8 dengan write(baly) di T7
  • Ubah urutan read(balx) di T8 dengan read(baly) di T7
  • Ubah urutan read(balx) di T8­ dengan write(baly) di T7
Keterangan Gambar :
(a) nonserial schedule S1
(b) nonserial schedule S2
(c) serial schedule S3, ekuivalen dengan S1 dan S2
Schedule S3 adalah sebuah schedule serial dan karena S1 dan S2 ekuivalen dengan S3, maka S1 dan S2 adalah serializable schedule.
Recoverable schedule adalah sebuah schedule di mana, untuk setiap transaksi Ti dan Tj, jika Tj membaca sebuah item data yang sebelumnya ditulis oleh Ti, kemudian operasi commit dari Ti mendahului operasi commit Tj.
Ada dua teknik concurrency control utama yang mengijinkan transaksi untuk berjalan dengan aman dalam subjek paralel untuk constraint tertentu, yaitu locking dan metode timestamp tertentu. Locking dan timestamping adalah pendekatan konservatif karena mereka menyebabkan transaksi ditunda dalam kasus mereka konflik dengan transaksi lain pada beberapa waktu di masa yang akan datang. Metode optimistik, didasarkan pada premis bahwa konflik itu jarang ditemui, jadi mereka mengijinkan transaksi untuk lanjut tidak tersinkronisasi dan hanya mengecek konflik di bagian akhir, ketika transaksi melakukan operasi commit.
Locking adalah sebuah prosedur yang digunakan untuk mengendalikan akses bersamaan ke data. Ketika sebuah transaksi sedang mengakses database, sebuah lock mungkin menolak akses ke transaksi lain untuk mencegah hasil yang salah ( Connolly, 2005, p587 ). Ada dua macam lock, yaitu shared lock dan exclusive lock yang harus digunakan sebelum melakukan akses membaca ataupun menulis terhadap database. Penggunaan lock ini adalah untuk menjaga konsistensi data didalam database. Jika sebuah transaksi mempunyai sebuah shared lock pada sebuah item data, transaksi tersebut dapat membaca item tapi tidak dapat mengubah datanya ( Connolly, 2005, p588 ). Jika sebuah transaksi mempunyai sebuah exclusive lock pada sebuah item data, transaksi tersebut dapat membaca dan mengubah item data ( Connolly, 2005, p588 ).
Lock digunakan dengan cara sebagai berikut:
  • Transaksi apapun yang membutuhkan akses pada sebuah item data harus melakukan lock terhadap item tersebut, meminta shared lock untuk akses membaca saja atau sebuah exclusive lock untuk akses membaca dan menulis.
  • Jika item belum dikunci oleh transaksi lain, lock tersebut akan dikabulkan
  • Jika item sedang dikunci, DBMS menentukan apakah permintaan ini compatible dengan lock saat ini. Jika diminta shared lock pada sebuah item yang sudah mempunyai shared lock terpasang padanya, permintaan itu akan dikabulkan. Selain itu, transaksi harus menunggu sampai lock yang ada terlepas.
  • Sebuah transaksi lanjut memegang lock sampai transaksi tersebut melepasnya baik pada waktu eksekusi ataupun pada waktu transaksi tersebut berakhir (abort atau commit). Efek operasi tulis akan terlihat pada transaksi lain hanya pada waktu exclusive lock telah dilepas.
Two Phase Locking adalah sebuah transaksi yang mengikuti protokol two-phase locking jika semua operasi locking mendahului operasi unlock pertama pada transaksi ( Connolly, 2005, p589 ).
Aturan-aturannya adalah sebagai berikut :
  • Sebuah transaksi harus mendapatkan sebuah lock pada item sebelum beroperasi pada item tersebut. Lock tersebut bisa berupa baca atau tulis, tergantung dari tipe akses yang dibutuhkan
  • Sebelum transaksi melepaskan sebuah lock, transaksi tersebut tidak akan pernah mendapatkan lock baru lainnya.
Deadlock adalah jalan buntu yang dapat terjadi ketika dua atau lebih transaksi masing-masing menunggu lock yang sedang dipegang oleh transaksi lainnya untuk dilepas. Hanya ada satu cara untuk menghancurkan deadlock, yaitu abort satu atau lebih transaksi. Ada tiga cara untuk menangani deadlock, yaitu timeout, deadlock prevention dan deadlock detection and recovery.
Pendekatan sederhana pada pencegahan deadlock adalah berdasarkan lock timeout. Dengan pendekatan ini, sebuah transaksi yang meminta sebuah lock akan menunggu hanya sampai periode waktu tertentu yang didefinisikan sistem.
Pendekatan lain untuk mencegah deadlock adalah untuk memesan transaksi menggunakan timestamp transaksi. Dua algoritma telah ditemukan oleh Rosenkrantz. Algoritma pertama, Wait-Die, mengijinkan hanya transaksi yang lebih tua untuk menunggu yang lebih muda, jika tidak transaksi dibatalkan (die/mati) dan restart dengan timestamp yang sama, sehingga lama kelamaan transaksi tersebut akan menjadi transaksi aktif tertua dan tidak akan mati. Algoritma kedua, Wound-Wait, menggunakan pendekatan simetrikal. Hanya transaksi yang lebih muda yang dapat menunggu untuk yang lebih tua. Jika transaksi yang lebih tua meminta lock yang dipegang oleh transaksi yang lebih muda, transaksi yang lebih muda digagalkan.
Deadlock detection biasanya ditangani oleh konstruksi wait-for graph (WFG) yang menunjukkan ketergantungan transaksi, yaitu transaksi Ti tergantung pada Tj jika transaksi Tj memegang lock pada sebuah item data yang ditunggu oleh Ti.
WFG adalah sebuah directed graph G = (N, E ) yang terdiri dari satu set node N dan satu set directed edge E, yang dikonstruksi sebagai berikut
  • Buat sebuah node untuk setiap transaksi.
  • Buat sebuah directed edge Ti → Tj , jika transaksi Ti menunggu untuk melakukan lock sebuah item yang sedang di-lock oleh Tj.












Deadlock terjadi jika dan hanya jika WFG mengandung sebuah cycle. Gambar di atas menunjukkan WFG yang menunjukkan deadlock antara dua transaksi.
--------------------------------------------------------------
Connolly T dan Begg C. (2005). Database Systems: A Practical Approach in Design, Implementation, and Management. Fourth Edition. Addison Wesley. Longman Inc., USA.

Saturday, August 09, 2008

Roles in DB Environment

Terdapat lima role pada DB Environment, terkait pada pengembangan dan penggunaan basis data.
1.Data Administrator (DA)
Data Administrator (DA) dan Database Administrator (DBA) bertanggung jawab terhadap pengelolaan dan pengontrolan aktifitas-aktifitas yang terkait data maupun basis data. DA lebih terfokus di tahap awal pada siklus pengembangan basis data, sedangkan DBA lebih fokus pada tahap akhir. Untuk penjelasan lebih detil siklus pengembangan basis data, ada di http://choirulhuda.blogspot.com/2005/12/pengantar-basis-data.html

Pengelolaan sumber-sumber data yang dilakukan meliputi :

  1. perencanaan basis data,
  2. pengembangan dan pemeliharaan standar, kebijakan dan prosedur, perancangan konseptual dan logikal basis data.

2.Database Administrator (DBA)
Pengelolaan atas realisasi pada tahap fisikal aplikasi basis data, meliputi :

  1. perancangan basis data fisikal dan implementasi,
  2. pengaturan keamanan dan kontrol integritas,
  3. pemantauan terhadap kinerja sistem, dan pengorganisasian kembali basis data.

3.Database Designers
Bertanggung jawab terhadap perancangan database, mulai dari model logikal hingga fisikal.

4.Application Programmers
Bertanggung jawab terhadap perancangan dan implementasi atas user interface dan program aplikasi yang digunakan untuk mengolah basis data.

5.End Users
Bertangung jawab dalam pengolahan data dengan menggunakan program aplikasi yang telah disediakan. Dikenal ada dua kategori pengguna basis data :

  1. naive user : adalah pengguna yang sedikit memiliki pemahaman terhadap basis data, baik dari sisi teknis ataupun tatalaksana perusahaan/organisasi .Pengguna yang termasuk dalam kategori ini perlu mendapatkan pelatihan lebih intensif untuk pemakaian aplikasi basis data. Disamping itu, pada saat identifikasi kebutuhan, perlu usaha yang lebih untuk berkomunikasi dengan pengguna pada kategori ini.
  2. Sophisticated/expert user : adalah pengguna yang sangat memahami basis data, baik dari sisi teknis ataupun tatalaksana perusahaan/organisasi.Pengguna ini mampu mendefinisikan kebutuhannya dengan baik pada tahap awal pengembangan basis data karena didukung penguasaan tatalaksana perusahaan/organisasi.Pelatihan yang diberikan untuk pemakaian aplikasi basis data juga tidak perlu seintensif naïve user.




Referensi :

  • Connolly Thomas, Berg Carolyn, 2002, Database System, A Practical Approach to Design, Implementation, and Management, Addison – Wesley.

Friday, May 23, 2008

Humor Klasik Minyak Tanah vs Humor “Blue Energy”

Cuplikan humor klasik :
Alkisah, pada masa minyak tanah masih akrab dengan keseharian wong cilik, yang konon katanya merupakan subsidi pemerintah, sering kita dapati tukang minyak tanah yang menjajakannya dengan gerobak keliling kampung-kampung, bahkan gang-gang kecil yang mungkin tidak pernah dikunjungi para pengelola atas negeri ini.Pada suatu kesempatan, tukang minyak sedang keluar dari gang menuju jalan raya dengan mendorong gerobak minyaknya. Saat baru saja sampai di jalan raya, tiba-tiba “Bruakkkkk...!!!!!”, tukang minyak dan gerobaknya terguling, tertabrak mobil. Tukang minyak tak sadarkan diri beberapa saat. Masyarakat yang kebetulan berada di pingir jalan dan menyaksikan kejadian tersebut langsung menolong tukang minyak yang malang itu.Tubuh itu diangkat beramai-ramai kemudian dipinggirkan di trotoar.Karena tidak juga sadarkan diri bahkan sempat kejang-kejang dan matanya melotot seperti sakarotul maut, maka salah seorang penolong mencoba meminta tukang minyak untuk sadar dengan menepuk-nepuk pipi tukang minyak sambil berkata: ”Pak, nyebut Pak! Nyebuuutttt…!”, seru penolong.Dan seketika tukang minyak merespon dengan menjawab sangat lenting “Minnyaaaakkkkkkkk…!”.
Humor di atas dikategorikan humor klasik karena disamping sudah lama kita dengar juga tidak relevan pada masanya, karena kita akan sulit menjumpai tukang minyak tanah dorong. Belum juga benar-benar hilang rasa humor klasik itu, kini kita sedang disajikan dengan humor baru terkait hilangnya Joko Suprapto, penemu “Blue Energy” asal Nganjuk, Jawa Timur. Apakah pak Joko hilang atau menghilang? Kalau benar-benar menghilang, tentu ada kepentingan diri pak Joko, misalkan terkait keamanan dirinya, tetapi jika hilang tentu terkait oleh kepentingan di luar diri Pak Joko, mengingat strategisnya penemuan beliau.Sayang humor yang kedua ini tidaklah mungkin akan membangkitkan rasa humor yang sesungguhnya, namun ujungya justru akan membangkitkan suatu keprihatianan semata.Semoga Pak Joko tidaklah hilang ataupun menghilang.

Temuan yang disebut dengan “Blue Energy” itu tentulah tidak sesederhana yang kita bayangkan, yakni hanya dengan air semata bisa dijadikan sebagai sumber energi. Ada formula tertentu yang diperhitungkan untuk menghasilkan energi yang bisa digunakan semisal menggerakkan kendaran bermotor.Mungkin karena mayoritas elemennya dari air, maka temuannya disebut sumber energi dari air. Sebagai penambah wacana terkait temuan tersebut dan agar tidak terjebak pada “kelirumonologi”, bisa kunjungi alamat ini http://rovicky.wordpress.com/2007/12/10/blue_energy/, atau kunjungi http://www.greencarcongress.com/ untuk mengetahui arikel-artikel terkait.

Hanya berharap semoga bumi, tanah, air, dan kekayaan yang ada di dalamnya benar-benar dikelola oleh negara untuk kemaslahatan dan kesejahteraan seluruh anak bangsa. Janganlah negeri ini menjadi seperti uraian kakawin(puisi) Bharatayudha pada masa kerajaan Panjalu (Kediri, Raja Jayabaya) 851 tahun silam, yang sebelumnya mengalahkan Jenggala. Diungkapkan pada kakawin tersebut :“Pulau Jawa adalah tanah yang subur makmur, sangat indah tiada tara, tetapi negara itu sedang menderita sedih karena dirusak oleh orang-orang jahat. Raja yang memerintah tidak mampu menjaganya.”.Konteksnya saat ini tentulah bukan hanya sekedar pulau Jawa, melainkan Indonesia, meskipun realitasnya pulau Jawa merupakan sentral kendali pemerintahan.

Semoga anak bangsa ini mendapatkan kail, bukan ikannya. Dan kepada mereka yang sedang membuat kail semoga diberikan kesempatan, arahan, dan bimbingan, bukannya penghancuran. Semoga Pak Joko dan keluarganya diberikan perlindungan dan penghargaan yang layak.
Amien.

Wednesday, April 30, 2008

Modular Programming

Konsep

  • Program dibagi-bagi menjadi bagian-bagian (modul-modul) yang lebih kecil.
  • Seluruh modul adalah suatu kesatuan untuk menyelesaikan suatu tugas.
  • Modul dibentuk dengan mengelompokkan sejumlah perintah untuk menyelesaikan tugas tertentu.
  • Modul diperlukan jika kelompok perintah tersebut kerap kali digunakan di tempat lain dalam program.
  • Modul sering disebut juga dengan Sub-Program.

Keuntungan menggunakan modul

  • Rancangan Top-Down dengan teknik Sub Goal, program besar dapat dibagi menjadi lebih kecil.
  • Dapat dikerjakan oleh lebih dari satu orang dengan koordinasi yang relatif mudah.
  • Mencari kesalahan relatif lebih mudah karena alur logika lebih jelas, dan kesalahan dapat dilokalisir dalam satu modul.
  • Modifikasi dapat dilakukan, tanpa menggangu program secara keseluruhan.
  • Mempermudah dokumentasi.

Sifat-sifat modul yang baik

  • Fan-In yang tinggi, yaitu makin sering suatu modul dipanggil oleh pengguna, makin tinggi nilai fan-in.
  • Fan-Out yang rendah, makin sedikit tugas yang dilakukan oleh suatu modul makin rendah nilai fan-out. Dengan demikian, makin spesifik tugas yang dikerjakan oleh modul tersebut.
  • Self-Contained, atau memenuhi kebutuhannya sendiri.

Implementasi

  • Implementasi konsep modular dalam bahasa pemrograman dikenal dengan berbagai cara. Pada Pascal tersedia dalam bentuk fungsi dan prosedur, sedangkan pada C cukup dengan fungsi.
  • Implementasi modular programming bisa juga diterapkan pada saat abstraksi tipe data (lebih lanjut bisa dibaca pada arikel di blog ini yang berjudul “Tipe Data”, dimuat pada tanggal 17 Desember 2005).
  • Contoh pembagian program menjadi beberapa subprogram :


Algoritma

Definisi
• Algoritma adalah sekumpulan langkah-langkah terbatas untuk mencari solusi suatu masalah.
• Berasal dari kata algoris dan ritmis. Diperkenalkan oleh Abu Ja’far Muhammad Musa Al-Khowarizmi (780-850) dalam bukunya yang berjudul Kitab Al Jabr Waal Muqobala (Rules of Restoration and Reduction).
• Pada pemrograman, algoritma didefinisikan sebagai metode yang terdiri dari langkah-langkah terstuktur untuk mencari solusi suatu masalah dengan bantuan komputer.

Syarat Algoritma
Menurut Donald E.Knuth sebuah algoritma harus memenuhi persyaratan :
• Finiteness.
Algoritma harus berakhir (terminate) setelah melakukan sejumlah langkah proses.
• Definiteness.
Setiap langkah algoritma harus didefinisikan dengan tepat dan tidak menimbulkan makna ganda(ambiguous).
• Input.
Setiap algoritma memerlukan data sebagai masukan untuk diolah.
• Output.
Setiap algoritma memberikan satu atau lebih hasil keluaran.
• Effectiveness.
Langka-langkah algoritma dikerjakan dalam batas waktu yang wajar.

Jenis Proses Algoritma
Langkah-langkah yang membentuk suatu algoritma dapat dibagi menjadi tiga kelompok proses :
• Sequence process.
Sederetan instruksi dijalankan secara berurutan dari awal hingga akhir.
• Selection process.
Instruksi atau sederetan instruksi dijalankan jika kondisi tertentu terpenuhi.Contohnya adalah siswa dinyatakan lulus mata kuliah jika nilainya minimal 60.
• Iteration process.
Instruksi atau sederetan instruksi dijalankan secra berulang jika kondisi tertentu terpenuhi. Contohnya adalah siswa harus mengambil mata kuliah selama nilainya di bawah 60.

Tahap Pengembangan Algoritma

Penulisan (penyajian) Algoritma
• Tulisan, seperti : Structure English, Pseudocode.
Contoh Algoritma "Penggunaan Kalkulator"
Mulai
.....Nyalakan kalkulator
.....Kosongkan Kalkulator
.....Ulangi
..........Input harga
..........Tekan tombol Plus (+)
..........Sampai semua harga diinput
.....Tampilkan total harga
.....Matikan kalkulator
Selesai

• Gambar, seperti : Flow Chart.
Contoh Algoritma "Penggunaan Kalkulator"





















Referensi :
• Deitel, H.M. and Deitel, P.J. (2001). C HOW TO PROGRAM. 3rd edition. Prentice Hall, NJ.
• Ngoen. Th. S. (2004). Pengantar Algoritma dengan Bahasa C. Penerbit Salemba Teknika.

Tuesday, April 22, 2008

Zhang Da

Sumber : Kompas, Sabtu, 22 Juli 2006
Di Propinsi Zhejiang China, ada seorang anak laki-laki yang luar biasa, sebut saja namanya Zhang Da. Perhatiannya yang besar kepada Papanya, hidupnya yang pantang menyerah dan mau bekerja keras, serta tindakan dan perkataannya yang menyentuh hati membuat Zhang Da, anak lelaki yang masih berumur 10 tahun ketika memulai semua itu, pantas disebut anak yang luar biasa. Saking jarangnya seorang anak yang berbuat demikian, sehingga ketika Pemerintah China mendengar dan menyelidiki apa yang Zhang Da perbuat maka mereka pun memutuskan untuk menganugerahi penghargaan Negara yang Tinggi kepadanya. Zhang Da adalah salah satu dari sepuluh orang yang dinyatakan telah melakukan perbuatan yang luar biasa dari antara 1,4 milyar penduduk China. Tepatnya 27 Januari 2006 Pemerintah China, di Propinsi Jiangxu, kota Nanjing, serta disiarkan secara Nasional ke seluruh pelosok negeri, memberikan penghargaan kepada 10 (sepuluh) orang yang luar biasa, salah satunya adalah Zhang Da. Mengikuti kisahnya di televisi, membuat saya ingin menuliskan cerita ini untuk melihat semangatnya yang luar biasa. Bagi saya Zhang Da sangat istimewa dan luar biasa karena ia termasuk 10 orang yang paling luar biasa di antara 1,4 milyar manusia. Atau lebih tepatnya ia adalah yang terbaik diantara 140 juta manusia. Tetapi jika kita melihat apa yang dilakukannya dimulai ketika ia berumur 10 tahun dan terus dia lakukan sampai sekarang (ia berumur 15 tahun), dan satu-satunya anak diantara 10 orang yang luar biasa tersebut maka saya bisa katakan bahwa Zhang Da yang paling luar biasa di antara 1,4 milyar penduduk China. Pada waktu tahun 2001, Zhang Da ditinggal pergi oleh Mamanya yang sudah tidak tahan hidup menderita karena miskin dan karena suami yang sakit keras. Dan sejak hari itu Zhang Da hidup dengan seorang Papa yang tidak bisa bekerja, tidak bisa berjalan, dan sakit-sakitan. Kondisi ini memaksa seorang bocah ingusan yang waktu itu belum genap 10 tahun untuk mengambil tanggungjawab yang sangat berat. Ia harus sekolah, ia harus mencari makan untuk Papanya dan juga dirinya sendiri, ia juga harus memikirkan obat-obat yang yang pasti tidak murah untuk dia. Dalam kondisi yang seperti inilah kisah luar biasa Zhang Da dimulai. Ia masih terlalu kecil untuk menjalankan tanggung jawab yang susah dan pahit ini. Ia adalah salah satu dari sekian banyak anak yang harus menerima kenyataan hidup yang pahit di dunia ini. Tetapi yang membuat Zhang Da berbeda adalah bahwa ia tidak menyerah. Hidup harus terus berjalan, tapi tidak dengan melakukan kejahatan, melainkan memikul tanggungjawab untuk meneruskan kehidupannya dan papanya. Demikian ungkapan Zhang Da ketika menghadapi utusan pemerintah yang ingin tahu apa yang dikerjakannya. Ia mulai lembaran baru dalam hidupnya dengan terus bersekolah. Dari rumah sampai sekolah harus berjalan kaki melewati hutan kecil. Dalam perjalanan dari dan ke sekolah itulah, Ia mulai makan daun, biji-bijian dan buah-buahan yang ia temui. Kadang juga ia menemukan sejenis jamur, atau rumput dan ia coba memakannya. Dari mencoba-coba makan itu semua, ia tahu mana yang masih bisa ditolerir oleh lidahnya dan mana yang tidak bisa ia makan. Setelah jam pulang sekolah di siang hari dan juga sore hari, ia bergabung dengan beberapa tukang batu untuk membelah batu-batu besar dan memperoleh upah dari pekerjaan itu. Hasil kerja sebagai tukang batu ia gunakan untuk membeli beras dan obat-obatan untuk papanya. Hidup seperti ini ia jalani selama lima tahun tetapi badannya tetap sehat, segar dan kuat.
ZhangDa Merawat Papanya yang Sakit.
Sejak umur 10 tahun, ia mulai tanggungjawab untuk merawat papanya. Ia menggendong papanya ke WC, ia menyeka dan sekali-sekali memandikan papanya, ia membeli beras dan membuat bubur, dan segala urusan papanya, semua dia kerjakan dengan rasa tanggungjawab dan kasih. Semua pekerjaan ini menjadi tanggungjawabnya sehari-hari.
Zhang Da menyuntik sendiri papanya.
Obat yang mahal dan jauhnya tempat berobat membuat Zhang Da berpikir untuk menemukan cara terbaik untuk mengatasi semua ini. Sejak umur sepuluh tahun ia mulai belajar tentang obat-obatan melalui sebuah buku bekas yang ia beli. Yang membuatnya luar biasa adalah ia belajar bagaimana seorang suster memberikan injeksi/suntikan kepada pasiennya. Setelah ia rasa ia mampu, ia nekad untuk menyuntik papanya sendiri. Saya sungguh kagum, kalau anak kecil main dokter-dokteran dan suntikan itu sudah biasa. Tapi jika anak 10 tahun memberikan suntikan seperti layaknya suster atau dokter yang sudah biasa memberi injeksi saya baru tahu hanya Zhang Da. Orang bisa bilang apa yang dilakukannya adalah perbuatan nekad, sayapun berpendapat demikian. Namun jika kita bisa memahami kondisinya maka saya ingin katakan bahwa Zhang Da adalah anak cerdas yang kreatif dan mau belajar untuk mengatasi kesulitan yang sedang ada dalam hidup dan kehidupannya. Sekarang pekerjaan menyuntik papanya sudah dilakukannya selama lebih kurang lima tahun, maka Zhang Da sudah trampil dan ahli menyuntik.

Aku Mau Mama Kembali.
Ketika mata pejabat, pengusaha, para artis dan orang terkenal yang hadir dalam acara penganugerahan penghargaan tersebut sedang tertuju kepada Zhang Da, Pembawa Acara (MC) bertanya kepadanya, "Zhang Da, sebut saja kamu mau apa, sekolah di mana, dan apa yang kamu rindukan untuk terjadi dalam hidupmu, berapa uang yang kamu butuhkan sampai kamu selesai kuliah, besar nanti mau kuliah di mana, sebut saja. Pokoknya apa yang kamu idam-idamkan sebut saja, di sini ada banyak pejabat, pengusaha, orang terkenal yang hadir. Saat ini juga ada ratusan juta orang yang sedang melihat kamu melalui layar televisi, mereka bisa membantumu!" Zhang Da pun terdiam dan tidak menjawab apa-apa. MC pun berkata lagi kepadanya, "Sebut saja, mereka bisa membantumu". Beberapa menit Zhang Da masih diam, lalu dengan suara bergetar iapun menjawab, "Aku Mau Mama Kembali. Mama kembalilah ke rumah, aku bisa membantu Papa, aku bisa cari makan sendiri, Mama Kembalilah!" demikian Zhang Da bicara dengan suara yang keras dan penuh harap. Saya bisa lihat banyak pemirsa menitikkan air mata karena terharu, saya pun tidak menyangka akan apa yang keluar dari bibirnya. Mengapa ia tidak minta kemudahan untuk pengobatan papanya, mengapa ia tidak minta deposito yang cukup untuk meringankan hidupnya dan sedikit bekal untuk masa depannya, mengapa ia tidak minta rumah kecil yang dekat dengan rumah sakit, mengapa ia tidak minta sebuah kartu kemudahan dari pemerintah agar ketika ia membutuhkan, melihat katabelece yang dipegangnya semua akan membantunya. Sungguh saya tidak mengerti, tapi yang saya tahu apa yang dimintanya, itulah yang paling utama bagi dirinya. Aku Mau Mama Kembali, sebuah ungkapan yang mungkin sudah dipendamnya sejak saat melihat mamanya pergi meninggalkan dia dan papanya.
Tidak semua orang bisa sekuat dan sehebat Zhang Da dalam mensiasati kesulitan hidup ini. Tapi setiap kita pastinya telah dikaruniai kemampuan dan kekuatan yg istimewa untuk menjalani ujian di dunia. Sehebat apapun ujian yg dihadapi pasti ada jalan keluarnya... ditiap-tiap kesulitan ada kemudahan. Jadi janganlah menyerah dengan keadaan, jika sekarang sedang kurang beruntung, sedang mengalami kekalahan... . bangkitlah! karena sesungguhnya kemenangan akan diberikan kepada siapa saja yg telah berusaha sekuat kemampuannya. ....... Kesulitan memberi pembelajaran bagi setiap orang Tergantung orang tersebut memilih jalan hidupnya Tetap berdiri dan berusaha membuat segala sesuatu menjadi lebih baik atau memilih jalan kehancuran.. . Semua kembali pada diri pribadi masing-masing

World Cup 2010

Sepak bola (World Cup 2010) hanya sebuah aktifitas yg dimainkan di area panjang 100-110m x lebar 64-75m, tetapi magnetnya bisa menghisap rat...