8.04.2008

Kustom JToaster

YMD (Yudhistira Mail Disposal) membutuhkan komponen untuk dapat menampilkan notifikasi pada desktop user. untuk memberikan pesan berapa surat yang masuk ke inbox user.

komponen memiliki behavior seperti notifikasi Yahoo ato MSN.

TODO: Toaster listen ke ActiveMQ

DONE: JToaster support HTMl dan click to open web browser

berikut adalah screenshot JToaster menggunakan icon, kemudian JTextArea diubah menjadi JEditorPane. Jika user mengklik hiperlink di message, aplikasi akan membuka web browser default.



Toaster ini akan listen ke message dari ActiveMQ untuk selalu update dari server.
ActiveMQ adalah message broker dari apache

7.31.2008

Yudhistira Mail Disposal

Next:
- buat halaman notifikasi disposisi

daily report:
- ubah skema disposisi hanya menyimpan user+mail+isChecked. Instruksi dan catatan disimpan di Mail.
- ubah controller mail untuk mengakomodasi perubahan point 1.
- lengkapi controller disposisi dengan penambahan fitur edit dan delete.


Todo:
- upload file dojo
- graphic+charting dojo [dah dieksplor]
- notification [kandidat JToaster]

7.23.2008

Membuat Skeleton Kerja PHP Symfony [draft]

salah satu framework PHP yang powerful adalah symfony. Dengan dukungan editor open seperti Eclipse didapatkan environment yang lengkap untuk mengembangkan aplikasi web. Berikut adalah langkah membuat skeleton kerja PHP Symfony menggunakan Eclipse.

Setting Environment Eclipse


- plugin eclipse yang dibutuhkan adalah symfoclipse, wicked shell
- open view symfoclipse, buat PHP Project, kemudian klik kanan pada project tersebut dan pilih menu "init-project"

Plugin Default


plugin yang dibutuhkan adalah sfGuardPlugin untuk otentikasi dan otorisasi pengguna. sfPropelTextOutputBehaviorPlugin untuk export view dalam bentuk JSON atau XML.

optional plugin yang juga sering dipakai: sfTCPDFPlugin untuk membuat format PDF.

Membangun Aplikasi Default -> Admin


membangun aplikasi default untuk control panel admin

7.22.2008

Prototype Elmira

Kebutuhan Elmira nantinya adalah full screen web browser. Jadi butuh panel dialog. dan berikut adalah kandidat dari apa yang aku gunakan.



jadwal review sabtu, 26 Juli 2008
milestone selanjutnya adalah integrasi model symfony dengan view di atas.

update, minggu 3 August 2008
prototype dapat dilihat di http://tuxceria.com/elmirafx/web/index.php

Hasil Review:
- key point adalah kemudahan dalam penggunaan
- ubah mindset sesederhana mungkin

url sumber: http://www.vertexwerks.com/tests/sidebox/

7.17.2008

Belajar dengan paradigma berorientasi objek

- orientasi object vs prosedural

ketika sebuah object kita ciptakan, objek tersebut hidup dan mempunyai tanggungjawab tertentu. dari luar, object tidak perlu tahu bagaimana dia melakukan tanggung jawabnya.

sedangkan dengan prosedural. ketika fungsi/prosedur dipanggil, dia hanya mengembalikan nilai dari paramater masukan atau mengubah nilai masukan tersebut.

contoh kasusnya:
dosen dan murid. dosen pengen tau semua apa yang dikerjakan mahasiswa selama malam minggu.

dengan pendekatan prosedural, skenario kita nyewa satu orang, buat ngikutin mahasiswa, catet apa yang mereka lakuin satu satu.. satu orang ga cukup untuk simultan mahasiswa... maka kita sewa orang sebanyak jumlah mahasiswa.

dengan pendekatan object, skenario kita... kasih tugas ke mahasiswa, suruh mereka bikin catatan apa yang dilakuin malem minggu, senin dikumpulkan ke dosen.

make sense ga?

Prinsip yang mendasari butuhnya paradigma baru:
1. ga boleh koding repetitive, semboyannya DRY (Dont Repeat Yourself)
jika kamu udah banyak copy paste, apalagi satu file ke file yang lain, tandanya program dah ga beres.
drawback dari kerja kek gini.. ketika kamu ingin ngerubah satu bagian. maka perubahan itu harus dipropagasi ke semua file yang mengandung routine tersebut.

simply said: kita butuh software yang gampang dimaintain

2. loosely coupling
bikin komponen yang sebisa mungkin pny tingkat coupling yang rendah. jika menemukan bahwa koding di file ini butuh file itu, dan file itu butuh file a-b-c dan berantai hingga jadi satu aplikasi... berarti ada yang salah.

ubah program sehingga komponen-komponen mampu berdiri sendiri, dan kita bisa mengujinya tanpa harus menggunakan komponen lain. Masing-masing unit dapat diuji dengan menggunakan unit testing.

Hal ini bermanfaat jika project sangat besar, butuh banyak engineer, dan proyek harus dikerjakan secara paralel.

- orientasi aspek vs orientasi object


praktis dan studi kasusnya liat di postingan onestopinjector

ps: janji buat akmalhamdani di setiap cerita yang dia sumbang.. huehe

7.15.2008

Linux LiveCD

kandidat distro :SLAX
kandidat tools :MySLAX Creator

agenda: Elmira LiveCD

Injeksi data ke situs lain

TODO: inject untuk site yang memakai otentikasi user
studi kasus: plazaraya.com dengan user rasix

Deskripsi Sistem:
dengan menggunakan HTTPRequest, data dapat diinjeksikan ke situs lain. Hal inilah yang dimanfaatkan spammer mengirimkan komentar, post, iklan, ke situs lain yang tidak terlindungi dari bot.

banyak sekali wordpress di indonesia yang di kustom oleh pengguna menjadi situs iklan gratis tanpa bayar dengan otorisasi captcha.

analisis skenario:
- user terotentikasi untuk dapat menggunakan service onestopinjector.
- user punya account expiry
- aplikasi mempunyai 200 situs yang akan diinject
- situs dibagi menjadi dua yakni yang memiliki otentikasi captcha dan bukan

trivia pertama: identifikasi kelasnya:

ps: portofolio symfony ke 2
sebelumnya jg pernah bikin site iklan kirim via sms, tp dah dijual dan ga sustain
--
relasi project: onestopinjector
deskripsi: aplikasi pengirim iklan massal berbasis web

sc captcha dari site victims yang akan diinject:

dojo.meetMe()

open source ajax toolkit untuk widget yang lengkap. dojo, merupakan salah satu alternatif pembangunan web dengan kebutuhan user experience yang tinggi.


diary:
bikin new tab terus populate splitter dengan content pane sederhana aja susahnya setengah mati! bener-bener butuh best practice penggunaan dojo nih

update: wah ternyata constructor splitternya dah depecrated, diganti ama BorderContainer. Makasih ya Tuhan..

-----------
related project: Yudhistira mail disposal
deskripsi: sistem disposisi surat untuk institusi

sc:

4.01.2008

Sistem Pakar untuk Medical

Sistem Pakar bukan sekedar mesin IF-THEN

JBoss Drools <- overkill, sekaligus karna tidak punya basic Java
Pyke <- Python based expert system

ekplorasi berikutnya menyusul

----
relasi project: Elmira Medical Diagnoses

3.14.2008

Prerequisite EJBCA

Di postingan sebelumnya disebutkan beberapa persyaratan sebelum menggunakan EJBCA. Pada postingan ini akan dijelaskan cara mensetup environment tersebut.

Instalasi JDK
  1. Download http://java.sun.com/j2se/1.4.2/download.html
  2. extract ke folder; misal C:\ dan hasil extract adalah C:\jdk1.5.0_11
  3. set JAVA_HOME ke folder tersebut dan tambahkan path binary JDK pada variabel Path Windows
Instalasi JBoss.
  1. Download JBoss application server dari http://labs.jboss.com/jbossas/downloads/
  2. extract ke folder; misal di folder C:\ dan hasil extract folder direname menjadi C:\jboss
  3. Tambahkan variable environment JBOSS_HOME dengan folder tersebut, dan tambahkan Path untuk JBOSS_HOME/bin
  4. Pastikan instalasi dan setting Java benar, check dengan melihat environment JAVA_HOME (ketik ECHO %JAVA_HOME% dari command line) dan versi java yang digunakan (ketik "java -version" dari command line)
  5. testing instalasi dengan perintah "run -c all"
  6. Cek browser dan pointing ke http://localhost:8080/
Instalasi Unlimited Strength Jurisdiction Policy Files untuk JDK
  1. Download dari http://java.sun.com/j2se/1.4.2/download.html di sektor "Other"
  2. Extract ke folder temporary
  3. Pindahkan file local_policy.jar dan US_export_policy.jar ke lib/security di direktori jre pada JAVA_HOME
Instalasi Ant
  1. Download dari http://ant.apache.org/bindownload.cgi
  2. extract ke folder misalkan C:\ dan hasil extract adalah C:\apache-ant-1.7.0
  3. Tambahkan variable environment ANT_HOME dengan forder tersebut, kemudian tambahkan path bin ant ke variabel Path

referensi: http://java.sun.com, http://ant.apache.org, http://www.jboss.org

Instalasi EJBCA

EJBCA adalah Certificate Authority yang dibangun di atas Java (J2EE).

Yang diperlukan untuk menjalankan EJBCA:
  • JDK 1.5 atau 1.6
  • Unlimited Strength Jurisdiction Policy Files untuk JDK
  • JBOSS >= 4.0.4
  • Ant >= 1.6.5
Note: masing-masing cara instalasi dari syarat di atas ditulis dalam posting terpisah.

Install EJBCA:
  1. Extract file ejbca ke direktori; misal ke C:\ dan nama direktorinya adalah C:\ejbca_3_5_4
  2. Ubah file conf/ejbca.properties.sample menjadi conf/ejbca.properties
  3. Buka command prompt (console) dan masuk ke direktori pada point pertama dan jalankan perintah "ant bootstrap"
  4. Jalankan JBoss dengan perintah "ant j2ee:run"
  5. Jalankan perintah "ant install". Dari perintah ini akan diciptakan inisiasi sistem, di antaranya adalah private key untuk admin (file C:\ejbca_3_5_4\p12\superadmin.p12). Import file ini ke browser. (firefox: tools->options->advanced->tab encryption->view sertificates->import.
  6. Stop JBoss (dengan Ctrl+C)
  7. jalankan "ant deploy"
  8. Jalankan JBoss lagi dan https://localhost:8443/ejbca/ untuk akses Admin GUI dan http://localhost:8080/ejbca untuk halaman publik
referensi: http://ejbca.sourceforge.net/installation.html

3.12.2008

Open Infrastruktur Algoritma Kunci Publik

To do List:
  1. Akses mesin publik untuk testing dan development
  2. install openca dari referensi
Completed Task:
  1. install ejbca
-------------------------------------------------------------
Alternasi:
-------------------------------------------------------------
ejbca : http://ejbca.sourceforge.net/

EJBCA is a fully functional Certificate Authority built in Java. Based on J2EE technology it constitutes a robust, high performance and component based CA. Both flexible and platform independent, EJBCA can be used standalone or integrated in any J2EE application.

EJBCA is completely written in Java and should as such run on any platform where a J2EE server runs. Development and testing is performed on Linux and Windows platforms.

lebih lengkapnya lihat install ejbca http://tuxceria.blogspot.com/2008/03/instalasi-ejbca.html

-------------------------------------------------------------
phpca - a php-based certificate authority for openssl

source code: http://trac.dey.fcny.org/browser/phpca
referensi:

http://www.nyphp.org/content/presentations/SSL/presentation.html

-------------------------------------------------------------
openca: www.openca.org

referensi singkat:
http://solar.murty.net/~murty/files/openca.INSTALL.txt
http://wiki.arcs.org.au/bin/view/Main/CAInstallGuide093

3.05.2008

Jika di Tengah Sesuatu Connection Drop?

Banyak dari pengguna internet mengandalkan remote connection seperti SSH. Akan tetapi bagaimana jika di tengah-tengah pengerjaan sesuatu connection internet tiba-tiba terputus?

untuk itulah ada baiknya jika ketika pertama kali koneksi ke remote site menggunakan utilitas screen (http://www.gnu.org/software/screen/).

setelah berhasil masuk login SSH. ketikkan perintah screen, maka akan muncul prompt seperti halnya shell biasa. akan tetapi jika diketikkan perintah screen -ls akan muncul informasi semacam ini:

[djanoko@main ~]$ screen -ls
There is a screen on:
6714.pts-0.main (Attached)
1 Socket in /var/run/screen/S-djanoko.

[djanoko@main ~]$

jika nanti shell session mati karena network lost atau proses dikill oleh aplikasi lain atau putty ditutup secara tiba-tiba. maka session tersebut tidak sepenuhnya hilang. perintah screen-ls akan memperlihatkan detached screen session tersebut.

[djanoko@main ~]$ screen -ls
There is a screen on:
6714.pts-0.main (Detached)
1 Socket in /var/run/screen/S-djanoko.

dengan perintah screen -r 6714.pts-0.main session lama dapat diattach kembali tanpa khawatir pekerjaan terputus.

referensi: http://www.gnu.org/software/screen/

Eclipse RSE - Remote Site Explorer

Ada beberapa alternatif web development pada shared host. Perangkat yang umum disediakan adalah cpanel. Akan tetapi cpanel tidak menyediakan usability selengkap feature desktop. Perangkat desktop commercial seperti Zend Studio atau Adobe Macromedia mungkin menjadi alternatif bagi yang memiliki budget untuk membeli lisensinya.

Alternatif bagi mereka yang mengenal eclipse platform untuk pengembangan web adalah menggunakan eclipse RSE, Remote Site Explorer. Eclipse RSE mendukung banyak protokol di antaranya; FTP, SSH, telnet (experimental), Unix, dan Windows.

untuk menginstall Eclipse RSE:
dari menu Help->Software Updates->Find and Install

masukkan New Remote Site dengan value sebagai berikut
http://download.eclipse.org/dsdp/tm/updates/2.0/

Dengan menggunakan RSE file editing langsung bisa dilakukan pada shared host dengan mengorbankan waktu untuk sinkronisasi dan upload-downlod file untuk local caching.

PS:
1. Eclipse RSE dengan ftp tidak dapat melakukan operasi copy paste folder
2. Development langsung di shared host tidak dianjurkan baik dari segi sekuritas maupun load network. check subversion kontrol seperti SVN untuk metoda pengembangan yang lebih mapan.
akan tetapi pengembangan software skala kecil sangat jarang menggunakan tools tersebut. setidaknya lebih efektif daripada mengunakan cpanel atau upload per file dengan ftp client

3.04.2008

Menikmati Alternasi - PHP Symfony

Salah satu alternatif penggunaan framework untuk rapid development PHP adalah symfony.
Symfony menggunakan ORM Propel, memungkinkan pembangkitan source code dari skema database yang ada (reverse engineering).

jika database fisik belum ada, bangun skeleton schema.yml terlebih dahulu. kemudian menggunakan perintah symfony build-model dan symfony build-sql akan membangkitkan model dan statement SQL untuk database tersebut.

jika database fisik telah ada, Propel dapat membangkitkan dengan perintah symfony propel-build-schema.

dengan demikian pendefinisian schema.yml menjadi penting di sini dan sangat menghemat waktu jika pendefinisian database telah benar.

penggunaan propel-build-model membangkitkan kelas dalam package lib.modules dengan kata kunci nama kelas [model]*.php dan lib.modules.om dengan kata kunci nama kelas Base[model].php.

Framework adalah perangkat pendukung, bukan perangkat utama, oleh karenanya itu business model harus sebisa mungkin lepas dari spesifikasi framework yang dipakai. Dari pembangkitan kelas dengan propel-build-model tampak bahwa model disimpan dalam kelas Base[model]. Hal ini mencerminkan desain yang kurang baik jika kita berpindah dengan framework yang lain. Solusi multiple inheritance tidak dapat digunakan karena PHP tidak mendukungnya. Oleh karena itu solusi alternatif adalah membangun interface untuk model kita.

Interfaces ditempatkan di packages lib.interfaces. Dengan load propel-build-model, konfigurasi class autoload akan menyertakan definisi interfaces yang dibuat tanpa menghapus definisi model lain yang telah dibangkitkan dan dimodifikasi sebelumnya. Gambar dapat dilihat berikut ini:


Walaupun informasi attribute akan hilang, setidaknya definisi method masih dapat disimpan, dan detail implementasi tetap diuraikan pada kelas turunan yang coupling dengan framework symfony agar dapat memanfaatkan tools development dari symfony yang sudah ada, seperti propel-init-admin, propel-crude-generate.