Wednesday, August 27, 2008

Giat Bekerja

Bismillah

Segala sesuatu harus memiliki esensi. Tidak ada yang tidak memiliki esensi. Apakah esensi bekerja? Kiranya, Al-Qur'an Surat Al-Qashash (28) : 77 dapat menjadi pencerahan yang simple namun komprehensif sekali. Berikut ini:




Luas dan lugas sekali apa yang menjadi pokok bekerja dalam Islam, yaitu:

  1. Mencari kebahagiaan akhirat yang diridhoi Allah Subhanahu wa Ta 'ala
  2. Memperjuangkan kebutuhan hidup duniawi;
  3. Menciptakan kesejahteraan sosial; dan
  4. Menyingkirkan kebinasaan dan kekacauan di muka bumi.

Point pertama merupakan esensi keberadaan, bahwa kehidupan dunia ini semu, yaitu dari tiada, menjadi ada dan akan tiada lagi. Anda yang saat ini sedang membaca artikel saya, dulunya tidak ada, kemudian ada di dunia, dan suatu saat (cepat sekali atau lambat) akan tiada lagi. Kekekalan keberadaan, hanya ada di akhirat. Dimensi yang ini mengungguli dimensi lainnya, dalam tingkatan yang tiada bandingannya. Dan itulah yang paling pokok. Kebahagiaan akhirat harus didahulukan dari kebahagiaan dunia, itulah kesehatan alam berpikir. Kalau sebaliknya, yaitu kebahagiaan dunia didahulukan ketimbang kebahagiaan akhirat, maka itu ciri-ciri alam berpikir yang tidak sehat. Pemisalannya adalah, Anda berangkat dari Jogja ke Jakarta, dan akan menetap selama-lamanya di sana. Anda akan menggunakan Kereta Api Ekspress. Pertanyannya adalah, dimana Anda membaguskan tempat tinggal? Di kereta ? Atau di Jakarta? Sungguh aneh kalau Anda luar biasa sibuk membagusi tempat duduk di kereta, namun lupa menyiapkan rumah tinggal yang indah di Jakarta. Sebagus apapun tempat tinggal Anda di Kereta, Anda akan tinggalkan (dengan sukarela atau paksa) begitu Anda tiba di Stasiun Gambir. Jakarta, atau akhirat adalah tempat tujuan. Dan itulah tempat yang sebagus-bagusnya Anda perbaiki.

Point kedua merupakan keperluan (necessity) hidup, tidak bisa ditawar-tawar.

Point ketiga merupakan kepedulian terhadap sesama.

Point keempat merupakan skala yang luas terhadap kepedulian sesama di dunia fana ini.

Catatan:

  • Hm, ini kebetulan saya sedang Khuruj 3 hari (bulanan) di Masjid Muttaqien, Karang Malang, barat Universitas Nasional Yogyakarta (UNY). Dan, sebelum berangkat kesini, saya beli buku yang berjudul Tafsir Qur'an Tematik : Giat bekerja. Indah sekali…
  • Ayat sebelumnya menjelaskan tentang Qarun yang menyombongkan hartanya dan ditegur oleh kaumnya agar jangan berbangga.
    [28:76] Sesungguhnya Karun adalah termasuk kaum Musa1139, maka ia berlaku aniaya terhadap mereka, dan Kami telah menganugerahkan kepadanya perbendaharaan harta yang kunci-kuncinya sungguh berat dipikul oleh sejumlah orang yang kuat-kuat. (Ingatlah) ketika kaumnya berkata kepadanya: "Janganlah kamu terlalu bangga; sesungguhnya Allah tidak menyukai orang-orang yang terlalu membanggakan diri".

    Kemudian ada sebagian kaumnya yang mengatakan bahwa hidup tidak boleh mencari harta, namun sekedar cukup keperluan makan/minum/dsb. Nah, ayat ini menegur agar meletakkan kerja pada posisi yang berimbang, yaitu dunia sebagai sarana, bukan tujuan, untuk mencapai kebahagiaan akhirat.


  • Ayat selanjutnya menegaskan kesombongan Qarun dengan mengatakan bahwa hartanya itu ia dapatkan karena ilmu yang ada padanya.

    [28:78] Karun berkata: "Sesungguhnya aku hanya diberi harta itu, karena ilmu yang ada padaku". Dan apakah ia tidak mengetahui, bahwasanya Allah sungguh telah membinasakan umat-umat sebelumnya yang lebih kuat daripadanya, dan lebih banyak mengumpulkan harta? Dan tidaklah perlu ditanya kepada orang-orang yang berdosa itu, tentang dosa-dosa mereka.

  • Ayat selanjutnya menunjukkan betapa Qarun memamerkan kesombongannya terhadap hartanya, dan betapa ada kaumnya yang terpesona dan menginginkan hal serupa.
    [28:79]
    Maka keluarlah Karun kepada kaumnya dalam kemegahannya1140. Berkatalah orang-orang yang menghendaki kehidupan dunia: "Moga-moga kiranya kita mempunyai seperti apa yang telah diberikan kepada Karun; sesungguhnya ia benar-benar mempunyai keberuntungan yang besar".

  • Namun kemudian ayat selanjutnya menegur mereka.
    [28:80]
    Berkatalah orang-orang yang dianugerahi ilmu: "Kecelakaan yang besarlah bagimu, pahala Allah adalah lebih baik bagi orang-orang yang beriman dan beramal saleh, dan tidak diperoleh pahala itu, kecuali oleh orang-orang yang sabar".

  • Dan diakhiri dengan apa yang diterima oleh Qarun berupa adzab :

    [28:81]
    Maka Kami benamkanlah Karun beserta rumahnya ke dalam bumi. Maka tidak ada baginya suatu golonganpun yang menolongnya terhadap azab Allah. Dan tiadalah ia termasuk orang-orang (yang dapat) membela (dirinya).

  • Betapa indah cara Al-Qur'an menegur antara orang yang gila kerja dan lupa akhirat dan orang yang mencari akhirat namun malas bekerja. Solusi? Antara itu. Islam adalah agama yang seimbang.

Membuka Proyek Java S3 (SWDEV Sms Server) di Netbeans 6.1

Artikel ini khusus untuk seorang Siswa nun jauh di Lampung, namun karena topiknya umum, maka saya publish saja di Blogs.

Aplikasi yang dikembangkan adalah aplikasi Visual Basic yang akan memproses data Inbox dan mengirimkan balasannya ke Outbox, yang selanjutnya akan diolah oleh S3 untuk dikirimkan penerima pesan.

Baik S3 maupun aplikasi VB beserta pendukungnya disimpan ke dalam file TechSupport.rar. Extract isinya ke folder tertentu, yaitu berikut ini:



Jalankan Netbeans 6.1 (atau 6.0,6.01 juga berfungsi dengan baik), dan pilih menu File->Open Project. Arahkan ke folder tempat TechSupport.rar di extract.


Aplikasi S3 adalah pada folder SmsServer. Tekan tombol Open Project. Maka, akan muncul dialog keterangan berikut:


Ini adalah tantangan pertama bagi Anda. Dialog ini menginformasikan bahwa terdapat referensi ke satu atau beberapa file/proyek Java yang tidak bisa ditemukan. Lihat bagaimana jendela Netbeans mengindikasikan hal tersebut.


Icon tanda seru merah dan peringatan kuning pertanda bahwa ada dependensi yang tidak bisa ditemukan. Sekarang, klik kanan pada proyek SmsServer, dan pilih Resolve Reference Problems..


Maka akan ditampilkan dialog Resolve Reference Problem bagi proyek S3.


Terdapat dua dependensi yang tidak dipenuhi, maka selanjutnya klik salah satu dependensi, dan tekan tombol Resolve..

Mulai dengan SMSGateway, dan arahkan ke folder SMSGateway pada folder yang sama dengan folder SmsServer.


Hal yang serupa lakukan juga pada dependensi Core, sehingga nanti kondisi sistem akan membaik, sepert ini :


Tekan Close.

Masih ada yang harus diselesaikan, perhatikan icon Proyek berikut, klik kanan, ..



…dan pilih Open Required Projects.



Maka Netbeans akan membuka proyek-proyek yang memiliki ketergantungan terhadap proyek ini. Nah, dan disitulah masalahnya. Karena, pada proyek yang dependen tersebut, masih ada masalah dengan Reference-nya. Seperti berikut ini ditampilkan.


Yang pertama-tama perlu diperbaiki adalah proyek Core,karena ia memiliki ketergantungan terhadap proyek CoreSystem dan (mungkin, lihat Catatan No. 1) juga referensi ke file mysql-connector-java-5.0.4-bin.jar. karena CoreSystem tidak memiliki ketergantungan, maka ia tidak terlihat mengalami masalah bukan?. Klik kanan proyek Core, pilih Resolve Reference Problems, dan selesaikan dependensinya berdasarkan cara penyelesaian sebelumnya. Khusus untuk file mysql-connector-java-5.0.4-bin.jar, pada file distribusi TechSupport.rar, Anda dapat mencarinya dibawah folder SmsServer/dist/lib. Kopikan file mysql-connector-java-5.0.4-bin.jar tersebut ke folder lain, misal ke folder yang sama dengan SmsServer, kemudian lakukan referensi ke file tersebut (karena, file-file di bawah dist/lib akan dihapus setiap kali perintah Clean-Build dijalankan). Ini yang saya maksudkan.



Kemudian hal yang sama lakukan juga pada proyek SMSGateway (membutuhkan Core dan CoreSystem). SMSGateway juga membutuhkan referensi ke comm.jar milih Java COMM API. Cari file comm.jar pada folder commapi. Namun itu belum cukup. Karena ada beberapa langkah yang dibutuhkan agar Java COMM API bisa mendeteksi COMM Port dengan baik, yaitu :

  1. Kopi file commapi\win32com.dll ke
    1. windows\system
    2. windows\system32
    3. program files\java\jdk\bin
    4. program files\java\jdk\jre\bin
    5. program files\java\jre\bin

    Itu benar, memang agak berlebihan, namun terkadang (belum tahu kenapa) ada sistem yang tidak cukup hanya dikopi ke folder a dan b. Dan (setelah pusing tujuh keliling), pemecahannya didapatkan setelah mengkopi ke folder c, d dan e. Terimakasih untuk Dik Wahyu atas hal ini!!! :)

  2. Kopi file commapi\javax.comm.properties dan commapi\comm.jar ke
    1. program files\java\jdk\lib
    2. program files\java\jdk\jre\lib
    3. program files\java\jre\lib

Itu saja. Btw, kalau langkah ini dilewati, nanti kotak dialog Setting Koneksi tidak akan menampilkan daftar COMM Port yang terpasang pada sistem, seperti berikut.



Langkah terakhir, file SQL yang saya sertakan merupakan file SQL MySQL, untuk itu terlebih dahulu Anda harus menginstall distribusi MySQL yang beredar banyak di internet, salah satu yang saya sarankan adalah WAMP 2.0, silahkan di download disini : (TODO). Kemudian masukkan database *.sql yang saya sertakan dengan cara membuka Command Prompt, dan mengetikkan perintah berikut.


Pada langkah 1, Anda harus menjalankan console MySQL, caranya klik kiri pada Tray WAMP Server, dan pilih MySQL Console. Berikut :


Isikan password, (default kosong, enter saja). Ketikkan perintah create database smserver;

Pada langkah kedua,folder aktif (dengan perintah CD) harus berada pada file smserver.sql, dan ketikkan perintah tersebut. Perhatikan bahwa mungkin karena perbedaan versi WAMP, maka alamat mysql.exe Anda berbeda dengan yang terdapat pada sistem saya. Maka Anda harus menyesuaikannya.


Oke. Semoga berhasil.

Catatan:

  1. Mungkin, karena sesungguhnya yang membutuhkan referensi ke file mysql-connector-java-5.0.4-bin.jar hanya proyek SmsServer, Core dan CoreSystem tidak. Pada update terkini, di harddisk saya, sudah saya perbaiki. Namun jika pada distribusi TechSupport.rar ternyata baik Core maupun CoreSystem masih meminta referensi ke file mysql-connector-java-5.0.4-bin.jar, maka sebaiknya hapus saja referensinya dengan mempergunakan dialog Project Properties, pada Categories Libraries, Tab Compile, pilih file mysql-connector-java-5.0.4-bin.jar dan tekan tombol Remove. Seperti berikut:


  1. Oya, coba Anda klik kategori Run pada dialog di atas, maka akan tampil berikut.


    Lihat textbox Arguments. Saya desain agar SmsServer ini bisa dipergunakan untuk berbagai konfigurasi Server MySQL, dengan membuat nilai-nilainya diinputkan dari luar. Untuk saat ini, Anda hanya perlu merubah password MySQL Anda menjadi 'muhammad', agar perubahan arguments tidak diperlukan. Begini caranya.



    Adapun berikut adalah penjelasan singkat makna masing-masing argument:

    1. yes, akan menggunakan MySQL, pilihan lainnya adalah no, yaitu akan menggunakan ODBC. Dari ODBC, Anda dapat menggunakan sembarang server database , termasuk MSSQL atau Oracle.
    2. smserver, nama database MySQL atau DSN pada ODBC.
    3. root, nama user database
    4. muhammad, password user database
    5. full, pilihan lainnya adalah sendonly dan receiveonly. Yaitu akan membatasi fungsi SMS pada HP yang terkoneksi, apakah mengirim dan menerima SMS, mengirim SMS saja atau menerima SMS saja. Berguna jika Anda ingin mengkonfigurasikan satu HP khusus untuk menerima SMS dan satu HP lainnya khusus untuk mengirim SMS.
    6. noresponse, pilihan lainnya adalah response. Yaitu yang akan menjawab SMS yang masuk adalah SmsServer ini. Tentunya disini Anda memilih pilihan noresponse karena yang akan menjawab adalah aplikasi Visual Basic.


    Kalau Anda tidak merubah Password basisdata, maka ubahlah pada textbox arguments pada string muhammad, ubahlah menjadi '<nama password baru>'. Misal jika tidak diberi password, ketikkan ''.


  2. Last, but not least, jangan lupa untuk menjadikan proyek SmsServer sebagai proyek utama di Netbeans, caranya klik kanan Proyek SmsServer, dan pilih Set as Main Project. Lakukan Clean and Build (SHIFT+F11) dan RUN (F6). Jangan lupa untuk menghidupkan WAMP Server terlebih dahulu.




Semoga berhasil dan bermanfaat ya dik!

Thursday, August 21, 2008

Arsitektur SWDEV Sms Server

Ide menjadikan Sms Server sebagai aplikasi yang berdiri sendiri muncul tatkala saya sudah 4 kali membuat aplikasi Sms Gateway, yaitu

  1. Pengisian Pulsa Elektronik dengan Java
  2. Penjualan HP dengan Gnokii Sms Gateway dan Gambas
  3. Sms Dakwah dengan Java
  4. Absensi dengan Sidik Jari Menggunakan U R U dan Sms Gateway Menggunakan FBUS

Kompleksitas Sms Gateway yang bercampur dengan kompleksitas domain aplikasi pada Aplikasi 1 dan Aplikasi 3, ternyata dicerahkan dengan pemisahan keduanya pada Aplikasi 2 dan Aplikasi 4. Cara kerja Gnokii dan FBUS sama saja, yaitu mereka merupakan Sms Server yang berdiri sendiri, dimana setiap ada Sms yang masuk akan dimasukkan ke tabel sms Inbox, dan setiap data baru pada sms outbox akan dikirim ke nomor HP yang dituju.


Setelah melalui beberapa kali proses penyempurnaan, berikut adalah arsitektur Sms Server yang saya beri saja nama, SWDEV Sms Server (S3).

Pertama kali yang perlu diamati adalah adanya garis-garis putus berwarna merah yang memisahkan dua domain aplikasi, yaitu S3 dan aplikasi Anda (apapun itu, mulai dari aplikasi pembayaran tagihan listrik dan telepon via SMS, SMS Banking atau Penjualan Handhone via SMS). S3 dan aplikasi Anda berkomunikasi dengan menggunakan Tabel SMS Inbox sebagai tabel penampung SMS yang baru masuk dan tabel SMS Outbox sebagai tabel penampung SMS yang akan dikirimkan. Sederhananya, jika ingin membaca SMS yang baru masuk, buatlah timer/thread yang akan membaca tabel SMS Inbox setiap jeda waktu beberapa detik ( 5 detik cukup bagus) dan jika ingin mengirimkan SMS ke nomor tertentu, masukkan saja data sms yang akan dikirimkan beserta nomor HP yang dituju ke tabel SMS Outbox. Sederhana kan?


Berikut adalah tampilan S3 yang independen, dan berdiri sendiri.


Daftar koneksi ditampilkan pada dialog di bawah ini:


Setting koneksi dilakukan pada dialog di bawah ini :


Berikut adalah beberapa HP yang telah diuji dengan baik:

Semoga bermanfaat!


NB :

  • Perhatikan, bahwa Anda dapat saja membuat tabel-tabel baru di dalam Database S3, namun sebaiknya Anda membuatnya di database tersendiri, sebagaimana ditunjukkan pada tabel di atas.
  • Saya sudah mencoba menggunakan Microsoft Access dan MySQL sebagai server Database S3, mungkin sekarang saatnya ada yang menggunakan Microsoft SQL Server. Bagaimana dengan Oracle? Seharusnya tidak ada masalah yang berarti, karena semuanya dikendalikan oleh interface yang sama, yaitu JDCB (Java Database Connectivity)
  • S3 menggunakan tiga proyek Java Independen lainnya, yaitu CORE, CORESYSTEM dan SMSGATEWAY. Ketiga proyek ini muncul akibat kebutuhkan akan sentralisasi pengembangan proyek Java yang sering berulang.
  • Saya senang menggunakan warna, mulailah dengan garis warna Hijau yang menjelaskan proses SMS masuk sampai berakhir ke tabel SMS Inbox. Kemudian gunakan garis berwarna kuning yang mulai dari tabel SMS Inbox sampai berakhir ke Application Domain Logic. Selanjutnya garis berwarna merah memandu dari Application Domain Logic ke Tabel SMS Outbox. Dengan garis warna ungu merupakan garis optional yang menggambarkan bagaiman aplikasi memanggil basis data miliknya sendiri. Saya sebut opsional, karena mungkin sekali Anda tidak membutuhkan basis data (sebagai contoh, misalnya kita bisa saja membangun aplikasi Penghitung Berat Badan Ideal menggunakan SMS Gateway).
  • Application Domain Logic, merupakan logika utama pemrosesan aplikasi. Ia dapat berupa logika pemilihan wahana wisata kuliner terbaik, pemesanan obat kesehatan, pemilihan pesan-pesan dakwah Islam yang sesuai dan lain sebagainya.
  • S3 mungkin belum siap di Open Source-kan untuk beberapa waktu ini. Hubungi saya jika Anda tertarik untuk eksplorasi lebih lanjut.
  • Beberapa perintah AT Command yang dipakai : AT+CMGS (mengirim sms), AT+CMGR (membaca sms), AT+CMGL menampilkan daftar sms yang belum terbaca), AT+COPS (menampilkan nama provider), AT+CNMI (membuat sms terbaca otomatis), AT+CMGD (menghapus sms yang sudah dibaca), AT+CGMM (menampilkan merk/seri hp) dan AT+CGMI (menampilkan merk/seri hp)