Showing posts with label Programming::Java. Show all posts
Showing posts with label Programming::Java. Show all posts

Thursday, April 15, 2010

Menggunakan WTK 2.5.2 pada Netbeans 6.8/6.5


Kenapa back to WTK 2.5.2? Soalnya itu yang paling simpel.

WTK 3.0 berlebihan deh (imho ya). Untuk menambahkan emulator WTK 2.5.2 ke Netbeans 6.5/6.8 (yang dibuiltin dengan WTK 3.0), cukup mudah. Ikuti saja petunjuk pada gambar tersebut di atas, setelah itu, klin kanan Project J2ME yang sedang dikembangkan, terus pilih properties. Ganti WTK 2.0 ke WTK 2.5.2 pada Combo Box platform yang muncul.

Semoga bermanfaat!
NB:
  • WTK 2.5.2 paling ringkas. Kalau WTK 2.5.0 terlalu jadul

Wednesday, August 05, 2009

Multi Method DSS dengan JGraph : Kasus Platform dan Plugin AHP



Artikel ini berhubungan dengan artikel sebelumnya tentang Mendesain Multi Agent System Agent dengan Prometheus.

Saya sudah download JGraph, dan segera implementasikan dengan menggunakan Platform yang sebelumnya, ke dalam Plugin AHP (Analytical Hierarchical Process).

Wah, ternyata memang mudah mengembangkan aplikasi yang sangat berfungsi dengan berbasiskan pada Java. Kunci kemudahannya terletak pada daya guna internal yang sudah dimiliki oleh komponen JGraph itu sendiri. Berikut hasil running PluginAHP :

Saya hanya menggunakan kode Hello World pada paket JGraphMX, berupa ini :


private MainAHP() {
initComponents();
mxGraph graph = new mxGraph();
Object parent = graph.getDefaultParent();

graph.getModel().beginUpdate();
try {
Object v1 = graph.insertVertex(parent, null, "Goal", 20, 150,
80, 30);
Object v2 = graph.insertVertex(parent, null, "Alternatif", 240, 150,
80, 30);
Object a1 = graph.insertVertex(parent, null, "Kriteria 1", 440, 50,
80, 30);
Object a2 = graph.insertVertex(parent, null, "Kriteria 2", 440, 150,
80, 30);
Object a3 = graph.insertVertex(parent, null, "Kriteria 3", 440, 250,
80, 30);
Object a4 = graph.insertVertex(parent, null, "Kriteria 4", 440, 350,
80, 30);

graph.insertEdge(parent, null, "AHP", v2, v1);
graph.insertEdge(parent, null, "Weighting", a1, v2);
graph.insertEdge(parent, null, "Weighting", a2, v2);
graph.insertEdge(parent, null, "Weighting", a3, v2);
graph.insertEdge(parent, null, "Weighting", a4, v2);
} finally {
graph.getModel().endUpdate();
}

mxGraphComponent graphComponent = new mxGraphComponent(graph);
graphComponent.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1));
graphComponent.setPageBackgroundColor(Color.WHITE);
pane.add(graphComponent);
}


Ya, pustaka JGraph ini berdasarkan pada teori Graph yang merupakan teori dasar pada Ilmu Komputer, tepatnya subjek Matematika Diskrit. Saya bercita2 menggunakan paket ini untuk berbagai keperluan modeling sistem yang bisa divisualkan dengan pustaka JGraph. Tapi, sejenak berpikir, saya rasa semua masalah modeling bisa divisualkan dengan berbasis pada struktur data Graph. Alasannya, tree sebagai kasus khusus Graph, merupakan dasar dari semua abstraksi permasalahan. Itu teori saya :) hehe (suka2 saya dunk! ) :p

Semoga bermanfaat!

NB:
  • Saya sertakan source code Platform + Plugin AHP. Itu bisa segera dibuka di Netbeans 6.5, namun ubahlah properties Run pada Project Platform, pada argument d:\plugin Saaty.xml, ubahlah d:\plugin ke tempat dimana file Saaty.xml berada. Saaty.xml merupakan definisi aplikasi berbasis Platform yang saya desain.
  • Keindahan Java terletak pada komunitas yang saling mendukung dengan sehat.
  • Nah, semoga sedikit kontribusi saya ini bisa memberikan sumbangsih yang berguna untuk temen2, untuk berbagai keperluan.

Mendesain Sistem Multi Agent dengan Prometheus



Alasan saya membuat artikel ini adalah, ternyata sangat menarik mendesain sistem Agent dengan Prometheus. Thx atas permintaan bantuan bimbingan ini dari seorang adik yang santun, akibatnya banyak yang bisa saya pelajari.

Pertama2, sesungguhnya mendesain sistem via diagram adalah pekerjaan yang sangat menyenangkan. Sampai akhirnya saya belajar, bahwa tetap lebih baik mengentaskan pengembangan sistem via Kode, bukan diagram. Betapapun baiknya, diagram tetap hanyalah skema yang harus diimplementasikan. Ia bukan produk yang ingin dikembangkan. Dalam paradigma Extreme Programming, justru diagram adalah "sampah" pengembangan sistem yang dibuang begitu sistem selesai diimplementasikan.

Bertolak dari itu, tetap lebih baik membuat satu Working Code, ketimbang 10 Fully Completed Diagram. Ekstrem? Ya, memang. Tapi itulah tantangan di dunia IT. Juga paradoksnya : bagaimana mengembangkan sistem tanpa desain, hanya dengan kode, namun tetap dengan hasil aplikasi yang memiliki desain yang apik. Itu, butuh sentuhan. :)

Semoga bermanfaat!
NB :
  • Sebenarnya saya tidak terlalu menguasai Prometheus ini, ada beberapa terminologi yang saya tebak-tebak saja implementasinya. Tapi tidak terlalu jauh dari kebenarannya. Semoga.
  • Menggunakan aplikasi ini, saya merasakan betapa mudahnya membuat aplikasi Drawing seperti ini. Saya amati Prometheus yang dibuat oleh RMIT (pdt@cs.rmit.edu.au) ini, menggunakan pustaka open source JGraph. Nah, mari kita download, dan utak-atik. Pasti berguna untuk solusi2 di masa datang (mungkin, pengembangan alur ERP via Drawing di canvas? hehe)
  • Ini adalah proses penyelesaian untuk Tahap FINAL TOUCH dari suatu kerjaan. Menarik. Dengan ini, FINAL TOUCH sudah selesai. Fokus ke ON PROGRESS (6) agar bergerak ke FINAL TOUCH.

Thursday, July 23, 2009

Menggunakan ShellExec di Dalam Delphi untuk Membuat Aplikasi Launcher Java


Ini lanjutan dari artikel sebelumnya, yaitu saya ingin membuat lingkungan penggunaan software Java yang transparan (dimana user tidak melihat bedanya dengan lingkungan pengembangan yang lain, spt Delphi). Launcher ini dimaksudkan supaya user bisa menjalankan aplikasi java dengan klik 2x di desktop, itu gampangannya.

Mudah? Tidak juga. Beberapa produk free atau komersial ada di pasaran. Tapi terlalu rumit deh. Yang diinginkan hanyalah supaya aplikasi java, yang didistribusikan via file Jar bisa dijalankan dengan klik 2x. Caranya? Akhirnya begini saja.

  1. Gunakan ant + build.xml dari Netbeans. Coba buka proyek apa saja di Netbeans. Maka ia akan membuatkan file build.xml yang akan dijalankan oleh ant dengan perintah ant run. Nah, inilah perintah yang akan dijalankan oleh program Delphi.
  2. Gunakan fungsi ShellExec pada API Win 32 untuk menjalankan program eksternal, berikut kodenya :

    ShellExecute(Form1.WindowHandle,'','D:\Program\ant\bin\ant.bat','run','D:\-=SHARED=-\java\Platform',0);

    parameter yg penting adalah alamat lengkap file ant.bat, argumen run, lokasi build.xml proyek yang akan dijalankan dan terakhir argumen 0 agar window dari dos prompt tidak ditampilkan. Disini alamat direktori saya hardcode, tentunya nanti bisa dibuat dinamis agar sesuai dengan lokasi tempat aplikasi diinstal.
  3. Aplikasi delphi tersebut jadikan splashscreen saja. Berikut kodenya, pada file Project Delphi:
Application.Initialize;
form1 := TForm1.Create(Application);
form1.Show;
form1.Update;
Sleep(1000);
form1.run; // di method ini ada pemanggilan fungsi ShellExec
form1.Close;


Terakhir, jangan lupa buatkan shortcut ke file EXE dari splash screen tersebut.

Bagus hasilnya.
Semoga bermanfaat!

NB :
  • Meski, kata2 sy tentang aplikasi Java yang tidak bisa dibedakan dengan lingkungan pengembangan lain spt Delphi, saya rasa kurang tepat. Bagaimanapun juga, GUI Swing ada jeda atau lag yang agak terlihat. Sy pakai Pentium 4, masih terasa. Pernah juga AMD Turion 64 X2, tetep aja terasa. Juga stylnya masih terlihat Java bgt.
  • Kalau Eclipse RCP dengan SWT-nya tidak masalah. Benar2 native. jadi cepat. secepat aplikasi windows native.
  • Oya, benernya saya install Delphi karena ada yg minta bantuan untuk pengembangan Thesis. Eh, malah idenya jd kesini.
  • Saya sempatkan koding untuk pengembangan skill (dan bisnis), di luar kewajiban pengembangan aplikasi untuk skripsi/thesis yang sudah dipesan temen2.

Keberhasilan Riset Plugin Based Architecture dengan SWING



Ini adalah perubahan rencana arsitektur dari kode sebelumnya (suka2 saya dunk).

Zahir Saya Pakai Sebagai Tool Verifikasi Metode Akuntansi (dan juga pembukuan jasa ini sih)

Dimulai dari penggunaan Zahir sbg solusi saya untuk software akuntansi pribadi (ternyata perlu sekali), dan dari beberapa rencana sebelumnya, yaitu saya ingin wujudkan aplikasi ERP milik sendiri via Eclipse RCP, maka dorongan untuk menyempurnakan pustaka2 sendiri pemercepat pengembangan aplikasi Swing GUI, membuat saya melakukan pengetesan sederhana agar mekanisme plugin (kira2 spt itulah) yang dimiliki Eclipse, bisa juga dimiliki aplikasi akuntansi ini.

Dan berhasil.

Inti dari semua keberhasilan itu, adalah kemampuan Java untuk menginisialisasi kelas secara run time, dengan baris kode ini :

Class.forName("startup.PluginOne").newInstance();

Lihat, bahwasanya argumen "startup.PluginOne" adalah Fully Qualified Name untuk kelas yang akan diinstansiasi. Dalam pembicaraan plugin, maka itu adalah nama kelas startup untuk menginisialisasi Plugin. Tentu, jika dikembangkan lebih lanjut, akan sangat kompleks manajemen plugin yang bisa terjadi, namun untuk test pertama ini, cukuplah baris kode di bawah ini menjadi titik awal memasuki pengembangan tersebut :

Plugin p = (Plugin) Class.forName("startup.PluginOne").newInstance();

Yaitu, saya akan punya kelas Plugin, yang merupakan induk dari semua plugin yang akan dikembangkan. Nantinya, diharapkan plugin yang berupa file Jar, tinggal dikopi ke suatu folder khusus, maka framework ini akan menginisialisasi plugin tersebut, yang efeknya adalah menambahkan fungsionalitas aplikasi secara runtime. Dengan sangat mudah. (bayangkan, jika modul2 ERP yang berdiri sendiri, namun terintegrasi, dapat sekedar di kopi ke suatu folder, tanpa perlu manajemen / instalasi tambahan).

Itu saja yang menjadi pokok pikiran saya seharian lalu. Silahkan download tiga proyek yang telah saya sertakan disini, yaitu :
  1. Platform : ini merupakan framework utama aplikasi. Nantinya, Anda tinggal mengkustomize aplikasi ini untuk mendapatkan software kustom.
  2. PlatformLibrary : merupakan core dari mekanisme plugin yang diacu baik oleh project Platform maupun project plugin2 yang lain. Kelas Plugin, induk dari semua plugin, ada di project ini.
  3. PluginOne : contoh satu plugin yang telah dikembangkan. Plugin ini melakukan kontribusi terhadap toolbar utama (tombol Plugin Penjualan).

Sejauh ini, sebenarnya saya ingin menahan diri dahulu untuk membuat artikel ini, sebelum mengimplementasikan satu kekurangan akhir, yaitu lokasi dari file jar plugin masih ditambahkan via opsi Libraries pada Netbeans. Tentu ini tidak boleh terjadi. Nah, salah satu cara agar instansiasi kelas secara dinamis bisa dipanggil menggunakan JAR yang diletakkan dimana saja, adalah dengan menggunakan Jar Component Loader disini. Sayang, semalam hasil download tidak baik. Jadi, cukuplah disini saja.

Semoga bermanfaat!
NB:
  • Aplikasi Run yang memunculkan window utama adalah Platform.
  • Nantinya, jika dikerjakan bersama2 oleh lebih dari satu programmer, maka masing2 programmer cukup mengembangkan sistemnya sesuai dengan interface dari PlatformLibrary, yang didistribusikan via JAR (atau source Netbeans saja jika masih dalam heavy development). Setelah selesai, ia cukup menyerahkan JAR hasil kerjaannya, dan integrator tinggal mengkopi saja JAR tersebut ke folder plugin. Tentu mekanisme ini menunggu dipergunakannya juga JCL.
  • Ada masukan dari agar dipakai JPF (Java Plugin Framework). Kayanya develop snediri deh. Dan kemudian share...
  • Wealah, screenshot aplikasinya malah g kbawa. Hehe. Segitu dulu aja ya

Sunday, June 14, 2009

Menguasai Jade untuk Pemrograman Multi Agent System

Jadi, intinya Multi Agent System adalah Workflow : bagaimana mengotomasi dan menyembunyikan workflow sesungguhnya aplikasi dari pengguna aplikasi/programmer. Di Java, salah satu solusi untuk Multi Agent System adalah Jade.

Aplikasi Jade yang untuk desktop ga masalah : dah pernah. Trivial.
Tapi tidak demikian dengan yang berbasis Web. Nah, gimana tuh?

Ini salah satu arsitektur komunikasi Jade dengan menggunakan platform Web :



Dari referensi PDF yang saya sertakan di artikel ini...

Jadi, intinya nanti dari Web, entah di dalam Servlet (mestinya begitu) atau JSP, yang akan manggil server Agent Jade. Nah, yang disini ini lho yang tidak trivial. Satu referensi yang menarik (atau mungkin yg paling official), adalah ini : JADE TUTORIAL Simple Example Using JadeGateway. Tapi, oalah, kok ya source codenya ga disertain. Ga tau kudu cari2 kemana.

Akhirnya, dari salah satu pertanyaan milis, saya berhasil temukan solusi komunikasi JadeGateway dari Servlet ke Server Jade. Ide utamanya ini : Serialization. Jadi, Java itu bisa menjalankan Object dari tempat yang berbeda Host. Hebat kan ? Secara built-in lho. Jadi, Anda-Anda yang mempelajari Java, sekali tembak, bisa belajar banyak teknologi. Kalau di lingkungan pemrograman lain, percaya deh, tak sekaya Java.

Sehingga, JadeGateway akan mengirimkan Object yang di-serialisasi ke Server Jade. Nah, itu menarik sekali.

Semoga bermanfaat!
NB :
  • Buru2 nih, cuman bentar aja di Warnet. Ngirim kerjaan. Minggu2, mau jalan2 Ke Parangtritis sama Ela + Alfath.
  • Konsep Serializasi ini dasar dari RMI ya. Nah, Jade menggunakan RMI.
  • Saya rasa desain yg saya buat, well designed deh. Kalau dah siap, mau saya share.
  • Ada yg berminat???
  • Topik ini masih hot2nya di dunia IT. Atau, tepatnya di dunia Tugas Akhir :p
  • Seru!!!

Wednesday, February 04, 2009

Impian Aplikasi Mandiri

Menggunakan Eclipse RCP, banyak yang saya harapkan:
  1. Aplikasi Image Processing dengan integrasi yg baik dengan Java Advanced Imaging
  2. Aplikasi ERP
  3. Terakhir, menjadikan hasil semua kode tersebut sebagai Framework Aplikasi
Silahkan, mulai disini : artikel Eclipse RCP dengan kode sumbernya disini : Code Start Page

NB :
  • Semoga ini menjadi basis kode sumber penelitian yang elegan
  • Itu salah satu impian saya... :)
  • Smoga bermanfaat bg yg lain

Monday, February 02, 2009

Menguasai MS SQL Server

Jadul banget pasti bg yang baca artikel ini, karena memang produk ini harusnya dah dikuasai kebanyakan programmer. Tapi, ya memang baru sekarang saya berkesempatan (eeeh, dikesempatkan, maksudnya, agak2 terpaksa...). Di Prambanan... ^_^

Menggunakan JSP di atas DreamWeaver, maka kesulitan hanya di saat membuat koneksi basis datanya. Agak ruwet (kalau endak mustahil rasanya bagi newbie di MSSQL spt saya) untuk berhasil sekedar koneksi saja. Tidak ada waktu banyak untuk artikel ini, maka langsung saya kirimkan saja ya, link2 pembantu saya, sebagai berikut:
  1. Konvert data MySQL ke MSSQL : Convert MySQL Database To MSSQL 2.0.1.5
  2. Download driver JDBC untuk MMSQL : Microsoft SQL Server 2005 JDBC Driver 1.2
  3. Panduan untuk membuat MSSQL bisa diakses via JDBC : JDBC to SQL Server Express
  4. Panduan untuk membuat URL koneksi MSSQL : SqlServer and JDBC
  5. Jangan lupa jika tidak bisa koneksi dengan user "sa" (dan password tertentu), coba buka alamat ini Login failed for user '%.*ls'. The login is a SQL Server login and cannot be used with Windows authentication.%.*ls. Yaitu, klik kanan pada MSSQL Management Console, tab Security, dan pilih mode autentikasi SQL Server dan Windows.
  6. Terakhir, saya sertakan saja gambar dialog koneksi ke MSSQL dari DreamWeaver (saya pakai DreamWeaver 8, karena pengalaman pakai yg CS 4 malah ndak bs JSP--atau sy yg belum tahu saja ya?
  7. Ok, insya Allah Anda sudah bs melakukan koneksi ke MSSQL via JDBC, khususnya lagi DreamWeaver
Semoga bermanfaat!
NB:
  • Belum pulang ke rumah dari kemarin, kudu segera ke rumah untuk kasus koneksi Java ke Parallel Port. Nanti saya sharekan tekniknya, insya Allah (sering ga bs menuhi nih)
  • Dunia yang dinamis, tapi saya pikir saya tetap butuh kemantapan berdiri. Smg tidak jauh ke depan ada kemajuan yang berarti bg saya, dan jg banyak orang yang bergantung pada saya
  • Selamat belajar! Jangan menyerah 3x!!!

Wednesday, January 14, 2009

Plugin Jasper Report Untuk Netbeans 6.x

Langsung saja silahkan ke sini : iReport, maka Anda bisa mendesign report Jasper di Netbeans.

Semoga bermanfaat!

NB :

  • Ini untuk teman satu angkatan yang besok kudu demo. :)

Plugin Jasper Report Untuk Netbeans 6.x

Langsung saja silahkan ke sini : iReport, maka Anda bisa mendesign report Jasper di Netbeans.

Semoga bermanfaat!

NB :

  • Ini untuk teman satu angkatan yang besok kudu demo. :)

Monday, December 01, 2008

Desain Database untuk Aplikasi ANP

Ini adalah rancangan basis data untuk aplikasi ANP. Silahkan dicermati :

Anp

(Draft)

NB :

  • Kalau ada yg bertanya baru saya jelaskan.... ^_^
  • Ini struktur yg bs nangani segala macam jenis input perbandingan node dalam ANP, tp utamanya (kalau menggunakan Super Decision) metode Direct Entry. Dari direct entry, semua jenis input sperti perbandingan dsb, bisa diturunkan.
  • Semoga bermanfaat!

Wednesday, August 27, 2008

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)

Wednesday, April 02, 2008

Charting di Java Swing dengan JFreeChart


JFreeChart, karena yang lain berbayar dan gila-gila'an ukurannya ^_^
Download JFreeChart disini : www.jfree.org/jfreechart/


Kemudian untuk penggunaanya di Swing, gunakan artikel ini : www.javaworld.com/javaworld/jw-12-2002/jw-1227-opensourceprofile.html

Semoga bermanfaat!

NB :
  1. Dulu pernah menggunakan ini, namun untuk aplikasi Web, ternyata untuk Swing Desktop juga mudah sekali
  2. Beberapa jenis control UI yang kompleks adalah Chart dan Table.
  3. FREE GIFT!!! Sebenarnya Anda harus membayar untuk mendownload Referensi penggunan JFreeChart, ups, tapi saya temukan disini : www.alexchimon.com/file/JFreeCharts/jfreechart-0.9.1-US-v1.pdf
  4. Klik kanan, save target as pada link tersebut ya.. ^_^

Tuesday, March 04, 2008

Distribusi Eclipse yang Baik

Tapi saya belum bisa katakan mana yang terbaik, hanya saja, EasyEclipse, menyediakan paket eclipse yang sesuai dengan tema pengembangannya. Bagus sekali untuk dipakai bagi yang ingin mengembangkan software dengan Eclipse, tapi agak kerepotan dengan mekanisme instalasi plugins2nya.

Smg bermanfaat!

Wednesday, February 27, 2008

Lebih Lanjut Dengan Pembayaran Elektronik via SMS

Ternyata (telat ya saya?) Google juga sudah punya, dan sudah dipatentkan tepat Tahun lalu : disini.


Kira2-kira gambarannya seperti ini :


Berarti harus dirancang website u/ interaksinya, dengan PHP yang paling cepat

Juga dengan skema seperti ini :

Berarti juga skema pembayaran per kasus, harus dirancang.

Smoga bermanfaat.

Saturday, February 23, 2008

Mengembangkan Aplikasi Kepegawaian dengan Java

Yang saya senangi dari yang ini, adalah saya sedang merancang sistem untuk membuat aplikasi Web Transparan. Saya belum paparkan lebih lanjut ttg Web Transparan, tapi intinya adalah membuat logika aplikasi di Web, bukan di klien. Tidak masalah apa kliennya, namun semua logika aplikasi seperti Data Manipulation disimpan di aplikasi Web. Saya mau uji ketangguhan ide ini di aplikasi kepegawaian ini.

Mungkin mirip seperti Web Service, hanya saja ini lebih frontal dan primitif, karena aplikasi sekedar memanggil request ke alamat Server tertentu, semisal :
  • http://localhost/index.php?modul=login&username=root&password=
  • http://localhost/index.php?modul=daftarUser
  • http://localhost/index.php?modul=daftarProduk
  • ...

Dan semua hit itu akan menghasilkan String biasa, yang nanti akan diolah kembali oleh kelas ServerApplication. Mudah, namun implikasinya besar. Ini diagram yang baru saja saya buat. Smg bs memberikan gambaran secara keseluruhan apa yang saya maksud.

Diagram Aplikasi Web Transparan


Smg bermanfaat

  • Ide ini di dapat dari mengembangkan aplikasi J2ME Sales Monitoring sebelumnya
  • Saya ingin uji apakah feasible di aplikasi nyata

Aplikasi SMS Gateway dengan Gnokii+Gambas dan Java

Sekali datang ke rumah, dua teman dengan kasus yang sama, namun aplikasi yang digunakan berbeda, yaitu membuat aplikasi SMS Gateway dengan Java dan juga dengan Gnokii + Gambas di Linux.

Spesial untuk yang Java, maka aplikasi yang dikembangkan akan ringan, karena menggunakan Class AT Command dan SMS dari aplikasi JPulsa sebelumnya. Akan ada perbaikan di sana sini. Sedangkan untuk yang Gambas + Gnokii, ini field baru. Meskit tentu tak akan surprise, karena Gambas adalah Gambas Almost Means Basic (programmer Linux suka singkatan rekursif kaya gini lho)


Oke, smg bermanfaat!!!


  • Mari belajar dan mengajar
  • Gambas? Logonya si Udang Ungu

Memulai Pengembangan Prototype SMS Payment

Someone memberikan ide dari sini : http://www.whynot.net/ideas/4154

Meski saya belum merancang sistemnya, seharusnya mudah, karena sistem yang dibangun adalah prototype. Jadi, sekedar sudah mampu membuat aplikasi yang bisa menunjukkan bagaimana proses Electronic Payment dengan SMS bekerja, maka itu sudah cukup.

Smg saya bisa sharing lebih lanjut disini.

Smg bermanfaat

NB:
  • Dibangun dengan Java, saya ingin nanti ada library SMS yang independen dan bisa di share.
  • Setelah itu pingin buat aplikasi SMS Manaje sendiri

Friday, January 18, 2008

Mengisi Ulang Pulsa Telkomsel dengan AT+Command

Saya ingin detailkan tentang AT+Command disini. Tapi nanti saja, kalau ada waktu yang lebih lapang. Sekarang yang Anda butuhkan hanyalah HP dengan kartu Telkomsel

Misalnya HP yg terkoneksi merupakan HP dengan kartu Telkomsel Simpati yg memiliki stok u/ ditransfer (ini merupakan kasus agen voucher), maka setelah HP dikoneksikan dengan Komputer dan program HyperTerminal dijalankan (dengan settingan yg tepat), kemudian saya jalankan peritah ini u/ melakukan isi ulang pulsa ke nomor saya (081 2222 1975) :

AT+CUSD=1,"*777*08122221975*50*101#",15

Sudah, maka nomor saya telah terisi pulsa 50ribu

Nanti kalau sempat saya detailkan tentang AT+Command.
Prospek membuat s/w isi ulang pulsa sepertinya mulai bisa dipikirkan.


NB :
  • 101 adalah nomor pin HP yg berisi pulsa
  • 15 (kalau tidak salah) adalah waktu tunggu perintah
  • CUSD adalah perintah AT+Command yg khusus u/ mengakses layanan operator, seperti pengecekan pulsa, akses menu dan sebagainya.
Semoga bermanfaat!!!
Jaga sholat berjama'ah ya... ^_^