Pages

Showing posts with label opensource. Show all posts
Showing posts with label opensource. Show all posts

November 2, 2014

MathQuiz: A little experiment using embedded Derby database.

Ok, so I've decided to write down my blog in English language to make my writings more available to the wide audiences of the Internet. This post will be my first attempt to write a post in English and also my first attempt to utilize (embedded) Apache Derby technology in my Java code. All of the resoure(s) I've put on this post are available for download below this post.

Introducing MathQuiz
MathQuiz is a very thin, Java (using JDBC) game that utilize embedded Derby database to save the player's score. It consist of only 1 source (java) file, and can only be played in command prompt interface.

The game (or should I say, quizzes?) is very straight forward: you run it, answer ten (10) mathematical problems: each will give you 1 point if answered correctly, and then save the score with your name in the database. You can download the game and the sourcecode using the link provided below this post.

The database and its table are pre-created using the ij tools from the Apache Derby distribution. The one and only table 'scores' consist of two columns, labelled username and score.
Below, using the ij tools, you can see me connecting to the database and retrieve all of the rows from the table 'scores'.


This game is part of my learning process: Learning JDBC, Apache Derby, Ant, SQL, and other usefull (database) technology, I plan to integrate it into the eBookManager project I've reviewed in this blog. As student in Department of Geography who learn GIS and stuff's, its even become more important.

Sourcecode: https://drive.google.com/file/d/0B27ziWaCDimLdnN1eXFlbVlCMEU/view?usp=sharing

September 11, 2014

Open Source Project: eKitaab EBook Manager


Halo setelah lama tidak lagi menulis akhirnya ini tulisan perdana saya di blog tahun ini..

Sekarang penulis ingin memperkenalkan sebuah software opensource bernama eKitaab yang dirilis dengan lisensi publik GNU oleh Balaji Srinivasan tahun 2007. Sebuah software manajemen ebook yang sangat berguna bagi kita-kita yang masih menjadi mahasiswa, yang sayangnya, perkembangan nya sudah lama terhenti. Meski demikian, versi “terbaru” software ini, versi 0.6 (2007) masih dapat didapatkan distribusinya di http://ebookmanager.sourceforge.net/ . Penulis ingin menyampaikan ketertarikan penulis pada software ini, kekuatan dan kelebihan software ini, serta sedikit perubahan yang telah penulis buat terhadap software ini, yang source code nya bisa kalian dapatkan di bagian bawah tulisan ini.

Ada beberapa hal yang membuat penulis tertarik pada software ini, antara lain: berguna bagi penulis yang masih mahasiswa, dan opensource, sehingga bisa dimodifikasi sesuai kebutuhan serta dapat dijadikan bahan pembelajaran sebagai developer. Untuk alasan yang pertama, penulis memang dari dahulu mencari software manajemen softcopy materi-materi perkuliahan. Manajemen file materi perkuliahan secara konvensional/manual seperti menyusunan struktur folder/direktori sesuai mata kuliah dari seabrek file materi dirasa masih belum cukup, masih banyak masalah yang melanda seperti: file yang susah dicari, bingung menempatkan file, file ganda, dan lain sebagainya. Dari kesulitan penulis sebagai mahasiswa di atas, penulis mulai, ketemulah software ini yang paling mendekati kebutuhan penulis. Mendekati loh ya...

Masuklah alasan kedua yang membuat penulis tertarik: karena software ini opensource, murni Java dimana penulis memiliki kemampuan dasar didalamnya, serta dikembangkan dalam IDE Netbeans, memudahkan software ini untuk diutak-atik sesuai dengan kebutuhan penulis. Yang tidak kalah penting, software ini bisa dijadikan sebagai alat pembelajaran serta latihan agar menjadi developer handal.
 
...#ehem...
 
Sedikit flashback, sebelum menemukan software ini, sempat terlintas dalam benak (naif) penulis untuk membuat software sendiri starting from scratch, namun penulis mengurungkan niat tersebut karena pastinya akan memakan banyak waktu. Yasudah, karenanya penulis putuskan untuk mengembangkan software punya Pak Balaji yang sudah ada ini saja. Dan ini merupakan software opensource pertama yang penulis modifikasi!
 
Keunggulan dan kelemahan
 
Penulis merasa tidak ada keunggulan yang bisa ditonjolkan dalam kesederhanaan software ini selain potensinya untuk dikembangkan lebih jauh lagi, paling tidak software ini bisa berguna bagi kalangan mahasiswa, atau kalangan developer muda yang ingin belajar menjadi developer. Itu saja cukup bagi penulis yang menilai software ini sebagai pengguna dan (calon) pengembangnya.
Ada yang unik dari software ini dalam menyimpan keterangan mengenai ebook-ebooknya: software, ini menyimpan informasi mengenai buku pada nama file, informasi tersebut tidak dipisahkan dalam sebuah database tersendiri. Hal ini menjadikan penyimpanan data menjadi praktis, namun terbatas, sehingga penulis tidak memasukannya sebagai keunggulan.
 
Kemudian, sebagai proyek yang sudah terhenti sejak tahun 2007; software ini memiliki banyak kelemahan, antara lain: berbagai fitur kurang update sehingga tidak bisa digunakan, dokumentasi buruk, dan teknis kodingannya, dari desain sampai implementasi juga tidak begitu baik.
 
Sebagai contoh, dalam software ini ada sebuah fitur untuk secara otomatis mendapatkan informasi mengenai ebook yang kita punya dari jasa penyedia informasi buku seperti Amazon. Sama seperti Windows Media Player lah, yang secara otomatis mendownload informasi mengenai album/lagu yang sedang kita putar. Software ini sepertinya terhubung pada server Amazon untuk mengambil informasi mengenai bukunya. Namun sekarang fitur tersebut sudah tidak bisa digunakan, mungkin karena ada perubahan pada servernya, atau memang karena belum diatur konfigurasinya oleh penulis.
 
Selanjutnya untuk dokumentasi kode, penulis merasa gregetan saat pertama kali membuka source code software ini dalam IDE Netbeans, dikarenakan sedikitnya komentar serta dokumentasi di dalamnya. Komentar yang dibuat sepertinya bukan untuk developer lain (dari luar), hanya untuk kalangan sendiri. Dokumentasi yang kurang ditambah pengalaman serta pengetahuan penulis yang masih sedikit, menyebabkan usaha untuk mempelajari dan mengerti kode ini membutuhkan waktu yang cukup lama: total kira-kira 3 jam, dalam 3 hari, karena jika penulis lelah membaca kodenya, penulis suka ketiduran...
 
Sedangkan untuk kekurangan dari segi desain dan implementasi, penulis tidak akan berkomentar banyak karena belum mengerti banyak (mengenai program ini sendiri maupun ilmu design pattern), namun satu yang penulis yakin, program ini masih bisa disederhanakan lagi dari kedua segi tersebut.
 
Modifikasi pada kode
 
Sebelum membuat modifikasi terhadap software ini, tentu sebelumnya kita harus memahami dulu cara kerja software ini. Secara ringkas, software ini bertujuan untuk menampilkan keterangan/informasi mengenai ebook ke dalam tabel pada tampilan utamanya. Sekali lagi penulis ingatkan, source code bisa kalian dapatkan dibawah tulisan ini.


Gambar 1 Tampilan utama eKitaab Ebook Manager dalam Ubuntu. 

Format ebook yang didukung (untuk ditampilkan dalam tabel) software ini bermacam, ada 8, tetapi yang penulis butuhkan untuk materi kuliah hanyalah yang berformat PDF, sehingga penulis putuskan untuk mengubah sedikit kode software ini.


Gambar 2 Bagian implementasi verifikasi file dalam MainFrame.java . Penulis komentari format selain pdf dan chm.


 Gambar 3 Bagian yang memanggil fungsi verifikasi di atas, dalam BookTableDataModel.java.

Tanpa mau terkesan teknis, sedikit detail dari cara kerja di atas: Pada dasarnya semua data dan informasi yang ditampilkan dalam tabel (instansi dari JTable) ini di-handle oleh sebuah data model, yang dalam Java merupakan instansi dan implementasi dari AbstractDataModel. Pada software ini, yang digunakan adalah subclass dari AbstractDataModel, yaitu kelas BookTableDataModel. Kelas BookTableDataModel inilah yang berfungsi untuk membaca dan mengambil informasi dalam file di harddisk, memasukannya ke dalam data model, untuk kemudian ditampilkan ke dalam tabel. Tetapi sebelum memasukan informasi mengenai file ke dalam data model, ia melakukan sedikit verifikasi terhadap extensi/format file yang terbaca, memastikan hanya file ebook yang dimasukan ke dalam data model.

Nah, dengan sedikit mengubah kode dalam bagian verifikasi tersebut, penulis dapat mengatur, tipe/format file apa yang akan dimasukan ke dalam data model, untuk kemudian ditampilkan di tabel. 

Sederhana, namun seperti yang penulis katakan sebelumnya: dokumentasi yang kurang ditambah pengalaman serta pengetahuan penulis yang masih sedikit membuat mengubah kode ini—mengembangkan software ini makan waktu.

***
Kembali lagi pada penulis, penulis memutuskan menggunakan software ini karena sesuai dengan kebutuhan penulis sebagai mahasiswa dan sebagai bahan pembelajaran pemrograman serta pengembangan software Java.
Tentu banyak lagi software manajemen ebook lainnya, jika kalian punya contoh yang opensource silahkan komentar disini dan bahas apa keunggulannya, bandingkan dengan software ini. Jika ada kritik dan saran silahkan dikomentari. Jika setelah membaca artikel ini kalian berminat untuk mengembangkan software ini lebih jauh, ingin menambahkan fitur-fitur baru, ingin membuat dokumentasi, dan sebagainya, please let me know, silahkan dikomentari.




*Jika ingin mempelajari lebih lanjut mengenai hubungan antara JTable, AbstractDataModel, dan data serta cara mengolahnya bisa baca disini: http://docs.oracle.com/javase/tutorial/uiswing/components/table.html

**Bagi yang mau lihat mendownload source codenya yang sudah penulis modifikasi: https://drive.google.com/file/d/0B27ziWaCDimLM3dsMmVsbkc2VU0/edit?usp=sharing