![]() |
| Aplikasi Lan Chat Free dan Open Source |
Tuesday, March 20, 2012
Aplikasi Lan Chat yang Mudah dengan Java
Tuesday, December 21, 2010
[Recite18th] Pengembangan Java Web Framework Sendiri – Part 1 : Konsep Dasar Java Web Framework
Konsep Dasar Java Web Framework
Arsitektur Model 1
Arsitektur Model 2 / MVC
- idpemakai
- nama
- alamat
- usia
- jenis_kelamin
Insya Allah cukup sampai disini dulu
- Framework saya sudah dicoba ke dua aplikasi, insya Allah cara kerjanya seperti Anda memprogram dengan CodeIgniter. Mudah
- Namun untuk saya rilis, belum. Saya persiapakn tutorial bawaan dulu. Sehingga, akan membuat Anda bisa langsung menggunakannya, tanpa berputar-putar mencari tutorialnya.
Saturday, October 24, 2009
Unit Testing : Merasakan Manfaat dari Yang Terabaikan
Green Bar!!! Pengujian berhasil…
Meski skripsi saya dulu tentang Extreme Programming, tidak sering saya menggunakan konsep2 XP dalam pengembangan software (pun, karena umumnya saya membantu pembelajaran dan pengembangan software untuk Tugas Akhir ya, yg menurut hemat saya, tidak perlu membutuhkan Unit Testing). Akibatnya, saat benar2 ada pengembangan software dalam skala komersial/produksi, saya lupa dengan Unit testing. Wah, pelajaran berharga. Begini kasusnya.
Aplikasi harus mendeteksi file2 baru pada suatu folder, dan jika ada yang baru, ia akan mengindeksnya dan memasukkan ke database. Oke, fitur ini rampung. Namun, saat pengetesan, saya benar2 mensimulasikan hal tersebut : saya kopi2 file baru ke folder tersebut. Setelah cek indexing berhasil, saya hapus. Dan diulang lagi.
Ini benar? ya tidak noh. Lah, kalau perlu mengetest … sampai 20 kali???. Kan ga praktis kalau paste dan undo via Windows Explorer ?
Solusinya ini : method pengindeks-an yang sedang dikerjakan dan diverifikasi, ditest tidak dengan mencoba kopi paste ke folder tersebut, namun di test dengan menggunakan Unit Testing via JUnit pada IntelliJ IDEA (Netbeans atau apapun sama saja). Perhatikan kode ini :
public void testSimilarity(){
String file1 = "D:\\_SWDEV\\GO\\8.PLA\\work\\repos\\s1.txt";
String file2 = "D:\\_SWDEV\\GO\\8.PLA\\work\\repos\\s2.txt";
try {
Indexer.getInstance().indexDocument(new File(file1));
Indexer.getInstance().indexDocument(new File(file2));
} catch (DocumentAlreadyExistException e) {
e.printStackTrace(); }
}
Nah, kode itu bisa dipanggil berulang via RUN biasa (jadi sekali tekan tombol RUN aja, sudah ketest). Tekan berapa kali pun, hasilnya akan sama. Ga perlu kopi paste kan?
Semoga bermanfaat!
NB:
- Nanti saya share terus tentang JUnit terus… manfaat sekali lho…
- Insya Allah… :)
Monday, July 27, 2009
Sistem Informasi Skripsi : Aplikasi Pertama Platform
Mungkin, saya harus meralat kata2 saya, bahwa aplikasi Java dengan Swing akan terlihat berbeda dengan yang sekelasnya yang dibuat dengan VB atau Delphi. Coba lihat gambar tersebut, itu Java Swing. Tidak terlihat berbeda kan? Pun, ada icon pada system tray-nya.
Saya buat aplikasi ini cepat2 saja. Awalnya, masih dalam arahan ke satu modul SMS server dulu. Kemudian, saya ingin tunjukkan aplikasi ini pada yang meminta. Wah, saya pikir, bagus juga! Tepat, modular dan pluginnya bisa d-upload sambil jalan. Semuanya mudah.
Aplikasi di atas menggunakan MS SQL Server sebagai databasenya. Awalnya, saya kecewa karena proses menampilkan data skripsi (kasus ini), tidak cepat. Ada jeda antara saya menekan tombol Skripsi dan kemunculannya. Namun, beberapa saat kemudian, saya pikir, ini mudah! Load saja semua instance dari form dan buka koneksi serta load data yang dibutuhkan di awal loading aplikasi. Pemakai tidak akan merasakan perbedaan startup yang signifikan, namun yang jelas User Experience dengan aplikasi ini bisa meningkat
Dan itulah yang saya imlpementasikan dari aplikasi ini. Response terhadap aksi pemakai sangat baik. Selain itu, keberhasilan proses ini, karena saya menggunakan Design Pattern Singleton. Detail ttg Design Pattern sedang saya siapkan...
Semoga bermanfaat!
NB:
- Kasus rancangan Platform ini seperti Spring Dependency Injection. Jadi, keterkaitan aplikasi dengan plugin bisa ditentukan dari luar, yaitu dari file XML konfigurasi
- Di lain kesempatan,saya punya ide untuk menambahkan daftar file konfigurasi XML pada icon system tray, sehingga nantinya jenis aplikasi bisa dijalankan secara run time view Klik Kanan Icon Tray itu saja.
Friday, July 24, 2009
POC Lebih Baik Tentang Arsitektur Aplikasi ERP Pluggable
private void start() {
try {
config = new XMLConfiguration(pluginDir + "\\Platform.xml");
config.setAutoSave(true);
Platform.getInstance().setMainWindow(MainSDI.getInstance());
loadPlugin();
Platform.getInstance().getMainWindow().setVisible(true);
} catch (ConfigurationException ex) {
Logger.getLogger(Startup.class.getName()).log(Level.SEVERE, null, ex);
}
}
Adapun untuk mekanisme load pluginnya ada di kode berikut :
private void loadPlugin() {
JarClassLoader jcl = new JarClassLoader();
jcl.add(pluginDir + "/");
JclObjectFactory factory = JclObjectFactory.getInstance();
Plugin p;
List
for (int i = 0; i <>
p = (Plugin) factory.create(jcl, l.get(i).getString("class"));
p.contributeToToolbar(Platform.getInstance().getMainWindow().getToolMain());
}
}
Perhatikan bagaimana JCL dipanggil, dan juga perhatikan bagaimana isi konfigurasi pada node modules.module dikelola. Selai itu, pemanggilan contributeToToolbar, merupakan cara ringkas untuk memberi kesempatan bagi plugin untuk berkontribusi. Berikut detail kode contributeToToolbar :
btnPenjualan = new JButton("Plugin Penjualan");
btnPenjualan.setIcon(new javax.swing.ImageIcon("D:\\My Pictures\\icon-eclipse\\complete_status.png")); // NOI18N
btnPenjualan.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
btnPenjualan.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
btnPenjualan.setFocusable(false);
btnPenjualan.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Platform.getInstance().getMainWindow().getMainContainer().setViewportView(PenjualanPanel.getInstance());
}
});
toolMain.add(btnPenjualan);
}
Semoga bermanfaat!
NB:
- Tingkat fleksibilitas bisa ditambah dengan membuat definisi menu via file Platform.xml itu juga (jadi mrip konsepnya dengan file Plugins.xml pada Eclipse RCP).
- Saya akan sangat tertarik, jika aplikasi yang akan dikembangkan benar2 besar dan luas secara arsitektur. Maka merancang hirarki kelas dan segala kerumitannya sangat menggairahkan
Friday, July 03, 2009
Bangunan Utama untuk Aplikasi ERP Impian
Bangunan utama Aplikasi ERP saya adalah Java, yang dibangun di atas Springframework. Keberhasilan dengan Eclipse RCP, membuat komponen Rich Client aplikasi ERP saya dapat diserahkan ke teknologi Eclipse RCP ini. Namun, aplikasi ini harus siap untuk dionlinekan, sehingga saya akan buat Core dari teknologinya berbasis HTTP, dan pilihan secara alami jatuh pada Springframework. Anda dapat download tiga project Netbeans 6.5 yang merupakan keberhasilan awal pembangunan komponen Server, Klien dan Data Objectnya.
Aplikasi ini akan saya buat modular, sehingga pengguna dapat menggunakan modul yang dia rasa perlu saja. Waktu di jlan tadi saya mikir (ini di warnet), modul pertama yang saya kembangkan haruslan Modul Akuntansi. Beberapa modul yang dapat dikembangkan :
- CRM
- Sms Gateway
- Stok
- Penjualan Voucher Elektronik
- dsb dsb
Sepertinya impian saya di blog ini mulai terwujud. Di artikel Mengenal SAP Lebih Jauh : Pemilihan Database, saya akhirnya menemukan bahwa esensi ERP SAP ternyata masih RDBMS, jadi arah penelitian dan pengembangan aplikasi ERP sy akan ke arah ini. Sebelum itu di artikel Ide Mengembangkan Solusi ERP Sendiri, saya utarakan (selatankan juga masuk akal) kalau saya ingin punya produk ERP sendiri. Semua itu berawal dari pembelajaran SAP yang saya utarakan di artikel Melangkah untuk pembelajaran SAP : Data Mining. Adapun kontak pertama dengan aplikasi ERP adalah dengan Open Bravo.
Semoga bermanfaat!
NB:
- Basis pekerjaan saya yang membantu Tugas Akhir sangat membantu. Misalnya, saat bantuan suatu Tugas Akhir, tidak ada requirement harus dengan Eclipse RCP, maka karena saya tahu ada potensi di Eclipse RCP, maka saya jadikan bantuan tersebut menggunakan Eclipse RCP. Nah, itu menjadi modal knowledge untuk pembangunan aplikasi selanjutnya.
- Ada yg lain?
Thursday, June 04, 2009
Konsep OOP
- Encapsulation : bs ngerti kenapa harus buat kelas
- Inheritance : bs ngerti bs buat kelas baru dr kelas yg udah ada
- Polymorphism : bs ngerti cukup manggil satu nama aja, aksi sudah berbeda (ini mungkin yg paling abstrak)

NB:
- Mudah kok.
- Tapi jangan cuman dibaca artikel ini. Koding2 aja langsung buat kelas2, turunannya dan terapin Polymorphism. Seru!
