(Re-)Binding SWT forms with WindowBuilder
A very common case in UI applications are forms which are bound to exchangeable model objects. For example, one might want to bind this address form in such a way that you can set a new
Addressobject at any time with the UI reflecting that change:
The plain old binding can be created easily using WindowBuilder:
The resulting code might look like this:
public class AddressViewPart extends ViewPart { private DataBindingContext bindingContext; private Address address; private Text textName; @Override public void createPartControl(Composite parent) { parent.setLayout(new GridLayout(3, false)); Label lblName = new Label(parent, SWT.NONE); lblName.setText(Messages.YetAnotherViewPart_lblName_text); textName = new Text(parent, SWT.BORDER); textName.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 2, 1)); // ... bindingContext = initDataBindings(); } protected DataBindingContext initDataBindings() { DataBindingContext bindingContext = new DataBindingContext(); // IObservableValue textNameValue = WidgetProperties.text(SWT.Modify).observe(textName); IObservableValue addressNameValue = PojoProperties.value("name").observe(address); bindingContext.bindValue(textNameValue, addressNameValue, null, null); // return bindingContext; } }The tricky part is to bind this in such a way that the model object can be exchanged at any time. There are three possible ways:
1) Dispose bindings
The easiest way is to dispose all bindings and just re-bind whenever a new model object appears:
public class AddressViewPart extends ViewPart { // ... protected void setAddress(Address address) { this.address = address; if (bindingContext != null) bindingContext.dispose(); bindingContext = initDataBindings(); } // ... }Unfortunately, WindowBuilder insists on putting the
initDataBindingscall increatePartControl. Also, if you are usingControlDecorationSupportyou will stumble upon Bug 341713 - DataBinding ControlDecorationSupport not disposed when DataBindingContext is disposed.2) Binding to a WritableValue
Another way is to use a detail binding to a
WritableValuewhich can be changed at any time:public class AddressViewPart extends ViewPart { private WritableValue addressValue = new WritableValue(); protected void setAddress(Address address) { this.addressValue.setValue(address); } protected DataBindingContext initDataBindings() { // ... IObservableValue addressNameValue = PojoProperties.value("name").observeDetail(addressValue); // ... } }Such a Binding can be created in WindowBuilder:
3) Bean binding
Yet another way is to make the ViewPart itself a
BeanwithPropertyChangeSupport:public class AddressViewPart extends ViewPart { private PropertyChangeSupport changes = new PropertyChangeSupport(this); private Address address; public Address getAddress() { return address; } public void setAddress(Address address) { changes.firePropertyChange("address", this.address, this.address = address); } public void addPropertyChangeListener(PropertyChangeListener l) { changes.addPropertyChangeListener(l); } public void removePropertyChangeListener(PropertyChangeListener l) { changes.removePropertyChangeListener(l); } protected DataBindingContext initDataBindings() { //... IObservableValue addressNameValue = BeanProperties.value("address.name").observe(this); //... } }While I like this way conceptionally, in practice it has the problems of Java’s PropertyChangeSupport being cumbersome. Also, JFace Data Binding doesn’t allow to mix Beans and Pojos, so if the Address object in the example is a Pojo, one will get
NoSuchMethodException: Address.addPropertyChangeListener(java.beans.PropertyChangeListener). And there seems to be no way to generate such a binding in WindowBuilder.
(Re-)Binding SWT forms with WindowBuilder
via ralfebert.de
Tired Brain, Distractions, and Dehydration
"Man, I'm tired!". That was probably what my brain try to tell me this afternoon. But it was stil 3 pm and I have a list of to-do's waiting on my TiddlyWiki. So I took a little break and fired up the browser to visit my favourite blogs. I even watched an episode of my favourite anime at the break hour, though I know it's a bad idea. All what I get was an even more tired brain plus a pair of heavy eyes. Then I started to think about what was wrong with my brain. After a short walk I realized several things that might cause exhausting to my brain:
1. Bad diet. I woke late this morning and missed the breakfast. Even worse, I had instant noodles for lunch.
2. Dehydration. Long running, extense task swollen me away made me forget to drink water that was even at my desk already.
3. Distractions. Several chores distracted me, some even drove me away far enough, left me wondering "What was that?!". So tomorrow I'll try to revive my pomodoro timers to help me keep focused, though it costs 5 mins on every pmds.
1. Bad diet. I woke late this morning and missed the breakfast. Even worse, I had instant noodles for lunch.
2. Dehydration. Long running, extense task swollen me away made me forget to drink water that was even at my desk already.
3. Distractions. Several chores distracted me, some even drove me away far enough, left me wondering "What was that?!". So tomorrow I'll try to revive my pomodoro timers to help me keep focused, though it costs 5 mins on every pmds.
Reply Header on Thunderbird
Tadi saya mendapat pertanyaan dari salah satu karyawan mengenai Thunderbird yang tidak menyertakan Timestamp pada header reply-nya. Biasanya pada saat reply Thunderbird mengutip isi mail yang kita reply dengan header:
On wrote:
Tapi ternyata ada user yang headernya hanya:
wrote:
Untuk itu, ada yang perlu dirubah di konfigurasi Thunderbirdnya:
1. Menu Edit -> Preferences
2. Tab Advanced, tab General, Klik tombol "Config Editor..."
3. Muncul window About:Config, kemudian di field "Filter" isikan: mailnews.reply_header_type
4. Maka di tabel di bawahnya akan muncul item konfigurasi untuk mailnews.reply_header_type. Agar ada timestampnya, ubah value ini menjadi 2 dengan cara double-click item tadi dan ubah value nya menjadi 2.
5. Tutup window About:Config
6. Test dengan cara me-reply salah satu mail, maka timestamp akan muncul di header reply.
On
Tapi ternyata ada user yang headernya hanya:
Untuk itu, ada yang perlu dirubah di konfigurasi Thunderbirdnya:
1. Menu Edit -> Preferences
2. Tab Advanced, tab General, Klik tombol "Config Editor..."
3. Muncul window About:Config, kemudian di field "Filter" isikan: mailnews.reply_header_type
4. Maka di tabel di bawahnya akan muncul item konfigurasi untuk mailnews.reply_header_type. Agar ada timestampnya, ubah value ini menjadi 2 dengan cara double-click item tadi dan ubah value nya menjadi 2.
5. Tutup window About:Config
6. Test dengan cara me-reply salah satu mail, maka timestamp akan muncul di header reply.
Desktop Minimalis Dengan OpenBox
Bosan dengan desktop Gnome saya yang mulai penuh, saya pun kembali beralih ke OpenBox yang sempat saya tinggalkan sewaktu berpindah dari OpenSuSE. OpenBox adalah window manager favorit saya yang sangat ringan dan mudah di-customize.
OpenBox Window Manager
Sebagai window manager, tentu saja harus diinstall paket-paket berikut dari repository Jaunty:
Taskbar & System Tray
Untuk taskbar saya menggunakan tint2, sedangkan untuk system tray-nya saya menggunakan trayer. Paket-paketnya ada di repository Jaunty:
Wallpaper
OpenBox tidak menyediakan fasilitas konfigurasi wallpaper, namun ini bisa dilakukan dengan utility bernama "feh". Seperti program-program di atas, utility ini juga ada di repository Jaunty dengan nama feh. feh ini sebenarnya cukup unik, karena sebetulnya dia adalah utility image viewer tetapi memiliki kemampuan untuk menggambar di layar root X atau sebagai wallpaper. Apabila kita meng-invoke feh dengan:
Maka selain feh menggambar image wall1.jpg sebagai wallpaper, tetapi feh juga akan membuat suatu file di ~/.fehbg yang akan berguna untuk kita pakai setiap kali session OpenBox dimulai. Detailnya akan saya terangkan di bagian lain.
Conky
Satu lagi utility yang sangat berguna, yaitu conky. Conky adalah system monitor yang akan menampilkan data-data yang didapat ke layar X. Saya belum sempat mengutak-ngatik lebih lanjut karena waktu yang terbatas, tetapi kalau saya sudah membuat script yang bagus, saya akan update post ini.
autostart.sh
Pada saat session OpenBox kita pilih di GDM, maka OpenBox akan menjalankan file ~/.config/openbox/autostart.sh apabila ada. Di script inilah kita bisa melakukan inisialisasi terhadap desktop kita. Script ini adalah script bash biasa, jadi kita bisa melakukan apa saja yang kita bisa dengan bash script ini. Kita mulai dengan menjalankan utilities yang sudah kita install tadi:
Pada baris pertama, kita menjalankan script yang digenerate oleh feh pada saat kita men-set background dengan feh. Jadi setiap kali kita merubah background X dengan feh --bg maka invokasi tersebut akan terekam dalam file ~/.fehbg sehingga pada saat kita kembali login ke session ini background akan diset otomatis.
Di baris 3 saya menjalankan trayer, baris 5 menjalankan tint2, dan di baris 7 saya menjalankan Network Manager Applet karena saya sering berganti konfigurasi network :).
Satu hal yang harus diperhatikan apabila anda menambahkan suatu proses yang mengeksekusi suatu program di dalam script autostart.sh ini, pastikan anda menambahkan simbol & (ampersand) di akhir command. Ini supaya proses tersebut tidak memblok inisialisasi OpenBox.
Tweaking GTK
Apabila kita menjalankan aplikasi GTK di openbox, maka kita akan melihat tampilan yang kurang bagus. Theme, font, dan icon tidak mengikuti setting kita di Gnome. Sebenarnya solusinya mudah saja, kita tinggal menambahkan script inisialisasi di autostart.sh:
Yang akan meng-apply konfigurasi theme, font, dan icon, bahkan screensaver kita di desktop Gnome.
Bagaimanapun juga, motivasi saya di sini adalah membuat desktop yang seringan mungkin tanpa utility magic seperti gnome-settings-daemon tadi. Untuk itu, saya meng-install utilities tambahan:
Dengan gtk-chtheme, saya bisa merubah theme Gtk dan font yang digunakan oleh aplikasi-aplikasi Gtk. Konfigurasinya disimpan di dalam file ~/.gtkrc-2.0. Ada satu lagi yang masih kurang, yaitu icon theme. Saya harus mengkonfigurasinya secara manual dalam ~/.gtkrc-2.0 tadi.
Tapi pada waktu saya meng-edit file tersebut, ada comment dari gtk-chtheme, bahwa file tersebut adalah computer-generated dan akan di-overwrite setiap kali kita merubah theme atau font dengan gtk-chtheme. Tapi solusinya mudah sekali, di script tersebut juga di-include kan file lain yaitu ~/.gtkrc.mine. Nah, di file gtkrc.mine inilah saya bisa leluasa menambah konfigurasi Gtk. File tersebut belum ada, jadi tampaknya harus saya "touch" dulu :)
Sekarang untuk menentukan icon theme yang digunakan, tambahkan:
di .gtkrc.mine.
Tweaking Font
Ada lagi hal yang mengganggu saya, yaitu tampilan font di layar LCD saya. Biasanya saya mengubah konfigurasi font di Gnome Appearance preferences, sekarang saya bingung, di mana bisa saya ubah konfigurasi antialiasing, hinting, dan resolusi untuk OpenBox? Ternyata jawabannya adalah di file ~/.fonts.conf. Saya isi file tersebut dengan:
Akhirnya tampilan font di menu dan window title OpenBox jadi lebih jelas. Hanya saja, konfigurasi resolusi font 72 dpi saya tidak berpengaruh pada aplikasi GTK. Saya masih mencari solusinya. Ada yang tahu?
OpenBox Window Manager
Sebagai window manager, tentu saja harus diinstall paket-paket berikut dari repository Jaunty:
- openbox
- obconf
- obmenu
Taskbar & System Tray
Untuk taskbar saya menggunakan tint2, sedangkan untuk system tray-nya saya menggunakan trayer. Paket-paketnya ada di repository Jaunty:
- tint2
- trayer
Wallpaper
OpenBox tidak menyediakan fasilitas konfigurasi wallpaper, namun ini bisa dilakukan dengan utility bernama "feh". Seperti program-program di atas, utility ini juga ada di repository Jaunty dengan nama feh. feh ini sebenarnya cukup unik, karena sebetulnya dia adalah utility image viewer tetapi memiliki kemampuan untuk menggambar di layar root X atau sebagai wallpaper. Apabila kita meng-invoke feh dengan:
feh --bg-scale ~/Pictures/wall1.jpg
Maka selain feh menggambar image wall1.jpg sebagai wallpaper, tetapi feh juga akan membuat suatu file di ~/.fehbg yang akan berguna untuk kita pakai setiap kali session OpenBox dimulai. Detailnya akan saya terangkan di bagian lain.
Conky
Satu lagi utility yang sangat berguna, yaitu conky. Conky adalah system monitor yang akan menampilkan data-data yang didapat ke layar X. Saya belum sempat mengutak-ngatik lebih lanjut karena waktu yang terbatas, tetapi kalau saya sudah membuat script yang bagus, saya akan update post ini.
autostart.sh
Pada saat session OpenBox kita pilih di GDM, maka OpenBox akan menjalankan file ~/.config/openbox/autostart.sh apabila ada. Di script inilah kita bisa melakukan inisialisasi terhadap desktop kita. Script ini adalah script bash biasa, jadi kita bisa melakukan apa saja yang kita bisa dengan bash script ini. Kita mulai dengan menjalankan utilities yang sudah kita install tadi:
. ~/.fehbg &
(sleep 2s && trayer --expand true --transparent true --alpha 255 --edge bottom --align right --SetDockType true --widthtype request --margin 130) &
(sleep 2s && tint) &
(sleep 2s && nm-applet --sm-disable) &
Pada baris pertama, kita menjalankan script yang digenerate oleh feh pada saat kita men-set background dengan feh. Jadi setiap kali kita merubah background X dengan feh --bg maka invokasi tersebut akan terekam dalam file ~/.fehbg sehingga pada saat kita kembali login ke session ini background akan diset otomatis.
Di baris 3 saya menjalankan trayer, baris 5 menjalankan tint2, dan di baris 7 saya menjalankan Network Manager Applet karena saya sering berganti konfigurasi network :).
Satu hal yang harus diperhatikan apabila anda menambahkan suatu proses yang mengeksekusi suatu program di dalam script autostart.sh ini, pastikan anda menambahkan simbol & (ampersand) di akhir command. Ini supaya proses tersebut tidak memblok inisialisasi OpenBox.
Tweaking GTK
Apabila kita menjalankan aplikasi GTK di openbox, maka kita akan melihat tampilan yang kurang bagus. Theme, font, dan icon tidak mengikuti setting kita di Gnome. Sebenarnya solusinya mudah saja, kita tinggal menambahkan script inisialisasi di autostart.sh:
gnome-settings-daemon &
Yang akan meng-apply konfigurasi theme, font, dan icon, bahkan screensaver kita di desktop Gnome.
Bagaimanapun juga, motivasi saya di sini adalah membuat desktop yang seringan mungkin tanpa utility magic seperti gnome-settings-daemon tadi. Untuk itu, saya meng-install utilities tambahan:
- gtk-chtheme
Dengan gtk-chtheme, saya bisa merubah theme Gtk dan font yang digunakan oleh aplikasi-aplikasi Gtk. Konfigurasinya disimpan di dalam file ~/.gtkrc-2.0. Ada satu lagi yang masih kurang, yaitu icon theme. Saya harus mengkonfigurasinya secara manual dalam ~/.gtkrc-2.0 tadi.
Tapi pada waktu saya meng-edit file tersebut, ada comment dari gtk-chtheme, bahwa file tersebut adalah computer-generated dan akan di-overwrite setiap kali kita merubah theme atau font dengan gtk-chtheme. Tapi solusinya mudah sekali, di script tersebut juga di-include kan file lain yaitu ~/.gtkrc.mine. Nah, di file gtkrc.mine inilah saya bisa leluasa menambah konfigurasi Gtk. File tersebut belum ada, jadi tampaknya harus saya "touch" dulu :)
Sekarang untuk menentukan icon theme yang digunakan, tambahkan:
gtk-icon-theme-name = "MeliaeWhite"
di .gtkrc.mine.
Tweaking Font
Ada lagi hal yang mengganggu saya, yaitu tampilan font di layar LCD saya. Biasanya saya mengubah konfigurasi font di Gnome Appearance preferences, sekarang saya bingung, di mana bisa saya ubah konfigurasi antialiasing, hinting, dan resolusi untuk OpenBox? Ternyata jawabannya adalah di file ~/.fonts.conf. Saya isi file tersebut dengan:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<match target="pattern">
<edit name="dpi" mode="assign">
<double>72</double>
</edit>
</match>
<match target="font" >
<edit mode="assign" name="rgba" >
<const>rgb</const>
</edit>
</match>
<match target="font" >
<edit mode="assign" name="hinting">
<bool>true</bool>
</edit>
</match>
<match target="font" >
<edit mode="assign" name="hintstyle">
<const>hintfull</const>
</edit>
</match>
</fontconfig>
Akhirnya tampilan font di menu dan window title OpenBox jadi lebih jelas. Hanya saja, konfigurasi resolusi font 72 dpi saya tidak berpengaruh pada aplikasi GTK. Saya masih mencari solusinya. Ada yang tahu?
Displaying Source Code in Posts
Untuk menampilkan source code di posting seperti contoh ini:
Begini caranya:
echo "Hello World!"
Begini caranya:
- Buka dashboard blog
- Ke Tab Layout, pilih Edit HTML
- Cari tag , lalu di bawah tag tersebut tambahkan kode berikut:
<link href="'http://alexgorbatchev.com/pub/sh/2.0.278/styles/shCore.css'" rel="'stylesheet'" type="'text/css'/">
<link href="'http://alexgorbatchev.com/pub/sh/2.0.278/styles/shThemeDefault.css'" rel="'stylesheet'" type="'text/css'/">
<script src="'http://alexgorbatchev.com/pub/sh/2.0.278/scripts/shCore.js'" type="'text/javascript'/">
<script src="'http://alexgorbatchev.com/pub/sh/2.0.278/scripts/shBrushJScript.js'" type="'text/javascript'/">
<script src="'http://alexgorbatchev.com/pub/sh/2.0.278/scripts/shBrushJava.js'" type="'text/javascript'/">
<script src="'http://alexgorbatchev.com/pub/sh/2.0.278/scripts/shBrushSql.js'" type="'text/javascript'/">
<script src="'http://alexgorbatchev.com/pub/sh/2.0.278/scripts/shBrushXml.js'" type="'text/javascript'/">
<script src="'http://alexgorbatchev.com/pub/sh/2.0.278/scripts/shBrushBash.js'" type="'text/javascript'/">
<script type="'text/javascript'">
SyntaxHighlighter.config.bloggerMode = true;
SyntaxHighlighter.all();
</script>
- Perhatikan tag link. Links yang merujuk pada ../shBrushZzzz.js berarti kita meng-include fasilitas higlighting untuk bahasa pemrograman Zzzz. Selengkapnya mengenai bahasa pemrograman yang didukung dan link yang harus disertakan, silahkan kunjungi situs resminya
ROKR E2: Smartphone?
Setelah beberapa hari menggunakan handphone ini, saya menyadari bahwa handphone ini dapat dikategorikan sebagai smartphone. Browser Opera yang terintegrasi, email client yg cukup tangguh, aplikasi native dan J2ME, PIM dan sinkronisasi baik dengan Mobile Phone Tool maupun SyncML. Semuanya berjalan di atas sistem operasi Linux yang ditenagai prosesor Intel XScale yang dapat dioverclock hingga 600 MHz.
Satu-satunya kekurangan handphone ini mungkin di sisi konektivitas yang secara default hanya mengandalkan GPRS pada jaringan triban GSM. Beruntung komunitas pengguna motorola dapat menyiasatinya sehingga handphone ini dapat memacu kecepatan transfer datanya dengan EDGE yang 4 kali lebih cepat daripada GPRS.
Satu lagi kekurangannya adalah bahwa handphone ini discontinued, sehingga dukungan teknis baik hardware maupun software resmi sudah sulit diakses. Beruntung masih ada komunitas pengguna Motorola yang masih setia berbagi hasil modding nya baik hardware maupun software.
Satu-satunya kekurangan handphone ini mungkin di sisi konektivitas yang secara default hanya mengandalkan GPRS pada jaringan triban GSM. Beruntung komunitas pengguna motorola dapat menyiasatinya sehingga handphone ini dapat memacu kecepatan transfer datanya dengan EDGE yang 4 kali lebih cepat daripada GPRS.
Satu lagi kekurangannya adalah bahwa handphone ini discontinued, sehingga dukungan teknis baik hardware maupun software resmi sudah sulit diakses. Beruntung masih ada komunitas pengguna Motorola yang masih setia berbagi hasil modding nya baik hardware maupun software.
Motorola ROKR E2
Akhirnya berhasil juga mendapatkan handphone ini. Beruntung sekali dapetnya dari "Kolektor Motomaniak" hehehe... *mudah-mudahan dia ga keberatan gw sebut dengan julukan itu*
Sampe ngebela-belain nungguin kiriman paket di kantor pas hari sabtu. Nggak dikirim ke rumah karena alamat rumah kontrakan gw yg baru belum jelas (maklum rumah baru).
FW yang diinstall Maxx 3, lengkap dan cukup cepat. Langsung buru-buru ngetest sound yang kata yang jual bisa bikin terkaget-kaget. Bah! Ternyata emang gw kaget. Suara dari speaker (buzzer) nya kenceng dan merata (nggak cuman dari lubang buzzer doang, tapi dari seluruh badan).
Gw pun kemudian nyoba Rockbox, music player untuk DAP yang udah diport untuk E2. Beuh! Suaranya mantabhh... Emang si penjual punya setingan yang dahsyat. Deep bass dengan wide stereo yang terpadu dengan sempurna!
Langsung dah, gatel tangan pengem modding, yang pertama tentu aja skin. Skinnya sih udah banyak, cuman belum ada yang sesuai selera aja. Seminggu nyari-nyari skin yang bagus, akhirnya ketemu skin Android. Belum sesuai selera sih, perlu sedikit tweak dengan ukuran fontsnya yang pengen gw kecilin. Setelah browsing dan eksperimen, akhirnya gw edit file-file: common.ini, messaging_p.ini, dan phone_p.ini yang ada di skin Android.
Jadi deh, skin yang enak dilihat. Tapi masih ada satu yang harus dicari setingannya yaitu setingan untuk ukuran dan warna huruf waktu baca SMS. Warna teks yang hitam dan ukurannya yang sedikit terlalu besar, paduan yang buruk dengan background gambar hitam-abu-abu-biru tua.
Sampe ngebela-belain nungguin kiriman paket di kantor pas hari sabtu. Nggak dikirim ke rumah karena alamat rumah kontrakan gw yg baru belum jelas (maklum rumah baru).
FW yang diinstall Maxx 3, lengkap dan cukup cepat. Langsung buru-buru ngetest sound yang kata yang jual bisa bikin terkaget-kaget. Bah! Ternyata emang gw kaget. Suara dari speaker (buzzer) nya kenceng dan merata (nggak cuman dari lubang buzzer doang, tapi dari seluruh badan).
Gw pun kemudian nyoba Rockbox, music player untuk DAP yang udah diport untuk E2. Beuh! Suaranya mantabhh... Emang si penjual punya setingan yang dahsyat. Deep bass dengan wide stereo yang terpadu dengan sempurna!
Langsung dah, gatel tangan pengem modding, yang pertama tentu aja skin. Skinnya sih udah banyak, cuman belum ada yang sesuai selera aja. Seminggu nyari-nyari skin yang bagus, akhirnya ketemu skin Android. Belum sesuai selera sih, perlu sedikit tweak dengan ukuran fontsnya yang pengen gw kecilin. Setelah browsing dan eksperimen, akhirnya gw edit file-file: common.ini, messaging_p.ini, dan phone_p.ini yang ada di skin Android.
Jadi deh, skin yang enak dilihat. Tapi masih ada satu yang harus dicari setingannya yaitu setingan untuk ukuran dan warna huruf waktu baca SMS. Warna teks yang hitam dan ukurannya yang sedikit terlalu besar, paduan yang buruk dengan background gambar hitam-abu-abu-biru tua.
Aktifasi Remote Desktop Lewat Console
Desktop GNOME menyediakan fasilitas remote desktop yang dapat diaktifkan melalui GNOME control panel. Tetapi terkadang kita perlu mengaktifkannya melalui console, misalnya kita login melalui SSH dan ingin mengaktifkan remote desktop di computer target. Caranya dengan perintah:
gconftool-2 -s -t boolean /desktop/gnome/remote_access/enabled true
Dan untuk mematikan service remote desktop:
gconftool-2 -s -t boolean /desktop/gnome/remote_access/enabled false
gconftool-2 -s -t boolean /desktop/gnome/remote_access/enabled true
Dan untuk mematikan service remote desktop:
gconftool-2 -s -t boolean /desktop/gnome/remote_access/enabled false
Petrus Blogger
Post ini dibuat dengan Petrus Blogger, sebuah blogging client yang dibuat dengan Java. Fitur-fiturnya sudah cukup untuk melakukan posting. Untuk download Petrus blogging client kunjungi http://sourceforge.net/project/showfiles.php?group_id=167260.
Banyak Pengalaman = Sukses?
Pepatah bilang, pengalaman adalah guru yang terbaik. Banyak orang percaya kalau orang yang sudah banyak pengalaman itu pasti bisa sukses.
Apa benar demikian? Ternyata, dalam seminar "Manusia Terkini" oleh Leonardo A. S., diungkapkan bahwa, untuk dapat bersaing, pengalaman saja tidak cukup dan tidak dapat dijadikan dasar untuk mengambil keputusan untuk masa sekarang apalagi masa yang akan datang.
Kita harus terus meng-upgrade diri kita, artinya kita jangan berhenti belajar.
Dunia ini terus berubah. Pengalaman kita di masa lalu hanya dapat menjadi referensi saja. Apalagi... kita-kita ini yang bergerak di dunia IT. Teknologi berkembang terus, kalau kita terus terpaku pada teknologi lama, kita akan ketinggalan!
Apa benar demikian? Ternyata, dalam seminar "Manusia Terkini" oleh Leonardo A. S., diungkapkan bahwa, untuk dapat bersaing, pengalaman saja tidak cukup dan tidak dapat dijadikan dasar untuk mengambil keputusan untuk masa sekarang apalagi masa yang akan datang.
Kita harus terus meng-upgrade diri kita, artinya kita jangan berhenti belajar.
Dunia ini terus berubah. Pengalaman kita di masa lalu hanya dapat menjadi referensi saja. Apalagi... kita-kita ini yang bergerak di dunia IT. Teknologi berkembang terus, kalau kita terus terpaku pada teknologi lama, kita akan ketinggalan!
Notecase
Ada aplikasi bagus untuk catat-mencatat. Namanya Notecase, yang akan saya pakai untuk mencatat jurnal harian, yah seperti diary. Ini yang sudah lama saya cari. Tool untuk outline dengan manajemen notes berbentuk tree.
Di windows dulu pakai KeyNote. Di hape juga ada, namanya JKeyNote. Sekarang di linux bisa pakai Notecase, dan ada versi Windowsnya pula. Lumayan lengkap fiturnya, basic text formatting, bisa memasukkan image, dan bisa enkripsi dengan password juga. Nice!
Di windows dulu pakai KeyNote. Di hape juga ada, namanya JKeyNote. Sekarang di linux bisa pakai Notecase, dan ada versi Windowsnya pula. Lumayan lengkap fiturnya, basic text formatting, bisa memasukkan image, dan bisa enkripsi dengan password juga. Nice!
Manusia Terkini: Berani Berubah
Kemarin ikut kebaktian tengah minggu dengan topik 'Menjadi Manusia Terkini'. Pembicaranya Leonardo Sjamsuri. Ada 3 syarat yang dia kemukakan untuk menjadi manusia terkini. Salah satunya adalah BERANI BERUBAH.
Yang menarik, saat Pak Leonardo memulainya dengan bertanya pada audiens 'Berubah itu gampang atau susah?'. Beberapa audiens (termasuk saya) menjawab susah.
Ternyata, untuk berubah itu tergantung pada cara pandang kita terhadap perubahan tersebut. Kalau kita berpikir bahwa untuk berubah itu sulit, maka kita akan kesulitan dalam melakukan perubahan tersebut. Sebaliknya, kalau kita berpikir bahwa perubahan tersebut akan mudah, maka kita akan lebih optimis, sehingga setiap tantangan akan kita hadapi dengan penuh semangat.
Berubah atau mati!
Yang menarik, saat Pak Leonardo memulainya dengan bertanya pada audiens 'Berubah itu gampang atau susah?'. Beberapa audiens (termasuk saya) menjawab susah.
Ternyata, untuk berubah itu tergantung pada cara pandang kita terhadap perubahan tersebut. Kalau kita berpikir bahwa untuk berubah itu sulit, maka kita akan kesulitan dalam melakukan perubahan tersebut. Sebaliknya, kalau kita berpikir bahwa perubahan tersebut akan mudah, maka kita akan lebih optimis, sehingga setiap tantangan akan kita hadapi dengan penuh semangat.
Berubah atau mati!
Back To Hardy Heron
Setelah beberapa bulan beralih ke Zenwalk, dan beberapa minggu mencoba Dreamlinux, akhirnya saya memutuskan untuk kembali ke Ubuntu Hardy Heron. Tidak ada alasan teknis yang cukup signifikan, hanya faktor selera saja yang dominan.
Tapi mungkin ada yang cukup berpengaruh yaitu faktor support untuk Ubuntu, dan pada dasarnya saya menyukai distro Debian dan turunannya.
Saya kira Zenwalk cukup bagus. Dan prospeknya cukup menjanjikan. Dan Dreamlinux memberikan ramuan tampilan desktop yang dapat membuat saya betah beberapa minggu dengannya.
Sekali lagi, mungkin faktor selera yang dominan dalam pengambilan keputusan saya untuk me-reinstall komputer kerja saya dengan Hardy Heron. Stuck on Ubuntu? Kita lihat saja perkembangannya... ;)
Happy Linux-ing
Tapi mungkin ada yang cukup berpengaruh yaitu faktor support untuk Ubuntu, dan pada dasarnya saya menyukai distro Debian dan turunannya.
Saya kira Zenwalk cukup bagus. Dan prospeknya cukup menjanjikan. Dan Dreamlinux memberikan ramuan tampilan desktop yang dapat membuat saya betah beberapa minggu dengannya.
Sekali lagi, mungkin faktor selera yang dominan dalam pengambilan keputusan saya untuk me-reinstall komputer kerja saya dengan Hardy Heron. Stuck on Ubuntu? Kita lihat saja perkembangannya... ;)
Happy Linux-ing
EJB 3
EJB 3 merupakan pengembangan dari spesifikasi EJB yang ternyata mempermudah pemrograman EJB. Penggunaan anotasi dan kompatibilitas dengan persistence engines seperti TopLink dan Hibernate membuat saya memutuskan untuk seterusnya menggunakan spesifikasi EJB 3 untuk membangun aplikasi enterprise dengan Java.
Apalagi dengan dukungan dari IDE NetBeans mulai versi 6. Membuat aplikasi database menjadi lebih mudah dan cepat.
Apalagi dengan dukungan dari IDE NetBeans mulai versi 6. Membuat aplikasi database menjadi lebih mudah dan cepat.
Linux kernel 2.6.25 dan driver nVidia
Upgrade ke kernel 2.6.25 menimbulkan masalah. Driver nVidia tidak bisa jalan karena kernel berubah. Hal ini berarti harus compile ulang driver.
Cukup dengan menjalankan arsip executable yang diberikan oleh nVidia, maka seharusnya driver langsung dapat dicompile. Ternyata tidak bisa, sebab ada beberapa referensi ke kernel lama. Seteleh bertanya pada mbah google, ketemu juga jawabannya dari
http://www.nvnews.net/vbulletin/showthread.php?s=99b40a866e88546e199277b244ff6bab&t=110088
Ternyata ada patch-nya dan tinggal menjalankan installer nVidia seperti biasa plus argumen --apply-patch. Nanti akan dihasilkan installer baru yang sudah di-patch.
Installer yang sudah di-patch tersebut baru dapat dijalankan dengan mulus di kernel 2.6.25 Zenwalk saya.
Cukup dengan menjalankan arsip executable yang diberikan oleh nVidia, maka seharusnya driver langsung dapat dicompile. Ternyata tidak bisa, sebab ada beberapa referensi ke kernel lama. Seteleh bertanya pada mbah google, ketemu juga jawabannya dari
http://www.nvnews.net/vbulletin/showthread.php?s=99b40a866e88546e199277b244ff6bab&t=110088
Ternyata ada patch-nya dan tinggal menjalankan installer nVidia seperti biasa plus argumen --apply-patch
Installer yang sudah di-patch tersebut baru dapat dijalankan dengan mulus di kernel 2.6.25 Zenwalk saya.
JDK 6: Locking assertion failure
Setelah upgrade Zenwalk, program Java jadi tidak mau jalan, dengan pesan error yang diawali: Locking assertion failure.
Ternyata ini disebabkan oleh adanya perubahan di salah satu extension Xorg, yaitu Xinerama yang baru di-upgrade. Setelah browsing, begini cara memperbaikinya:
Di terminal ketik:
untuk sun-java 5:
sed -i 's/XINERAMA/FAKEEXTN/g' /usr/lib/jvm/java-1.5.0-sun-1.5.0.11/jre/lib/i386/xawt/libmawt.so
untuk sun-java 6:
sed -i 's/XINERAMA/FAKEEXTN/g' /usr/lib/jvm/java-1.6.0-sun-1.6.0.00/jre/lib/i386/xawt/libmawt.so
Maka program Java pun kembali bisa dijalankan.
Ternyata ini disebabkan oleh adanya perubahan di salah satu extension Xorg, yaitu Xinerama yang baru di-upgrade. Setelah browsing, begini cara memperbaikinya:
Di terminal ketik:
untuk sun-java 5:
sed -i 's/XINERAMA/FAKEEXTN/g' /usr/lib/jvm/java-1.5.0-sun-1.5.0.11/jre/lib/i386/xawt/libmawt.so
untuk sun-java 6:
sed -i 's/XINERAMA/FAKEEXTN/g' /usr/lib/jvm/java-1.6.0-sun-1.6.0.00/jre/lib/i386/xawt/libmawt.so
Maka program Java pun kembali bisa dijalankan.
EJB3 + Hibernate + NetBeans
Kita bisa membuat program database dengan lebih mudah menggunakan NetBeans IDE, memanfaatkan spesifikasi EJB3 dan Hibernate persistence. Malahan NetBeans mulai versi 6.0 sudah menyediakan template project untuk membuat database desktop application yang sangat mempermudah proses pembuatan aplikasi database berbasis desktop.
Namun, saya di sini ingin sharing pengalaman saya dalam membuat aplikasi database berbasis desktop yang memanfaatkan EJB3 dan Hibernate.
1. Install NetBeans plugins. Plugins yang perlu diinstall:
a. Hibernate Support
b. Hibernate Library
2. Download library Hibernate Entity Manager dari sini.
3. Anda juga mungkin perlu mendownload satu library yang diperlukan hibernate, yaitu javaassist dari sini.
4. Masukkan semua jar yang disertakan pada paket Hibernate Entity Manager dan juga javaassist.
5. Jika perlu masukkan juga library Hibernate yang terinstall dari plugins Hibernate Library. Klik kanan pada folder libraries project anda, lalu pilih Add Library, cari Hibernate.
Selanjutnya adalah membuat Database Persistence Unit untuk project anda. Caranya, click kanan pada project anda, lalu pilih New > others > Persistence > Persistence Unit.
Pada wizard yang ditampilkan, beri nama persistence unit anda, dan pilih Hibernate sebagai persistence library-nya. Jika tidak ada Hibernate dalam daftar, pastikan anda telah menyertakan semua library yang diperlukan.
Wizard ini mengharuskan anda memilih koneksi yang akan digunakan. Anda dapat membuat koneksi baru atau koneksi yang telah anda buat di Database service. Koneksi ini harus diisi, namun sebenarnya dapat anda rubah setelah persistence unit-nya jadi.
Namun, saya di sini ingin sharing pengalaman saya dalam membuat aplikasi database berbasis desktop yang memanfaatkan EJB3 dan Hibernate.
1. Install NetBeans plugins. Plugins yang perlu diinstall:
a. Hibernate Support
b. Hibernate Library
2. Download library Hibernate Entity Manager dari sini.
3. Anda juga mungkin perlu mendownload satu library yang diperlukan hibernate, yaitu javaassist dari sini.
4. Masukkan semua jar yang disertakan pada paket Hibernate Entity Manager dan juga javaassist.
5. Jika perlu masukkan juga library Hibernate yang terinstall dari plugins Hibernate Library. Klik kanan pada folder libraries project anda, lalu pilih Add Library, cari Hibernate.
Selanjutnya adalah membuat Database Persistence Unit untuk project anda. Caranya, click kanan pada project anda, lalu pilih New > others > Persistence > Persistence Unit.
Pada wizard yang ditampilkan, beri nama persistence unit anda, dan pilih Hibernate sebagai persistence library-nya. Jika tidak ada Hibernate dalam daftar, pastikan anda telah menyertakan semua library yang diperlukan.
Wizard ini mengharuskan anda memilih koneksi yang akan digunakan. Anda dapat membuat koneksi baru atau koneksi yang telah anda buat di Database service. Koneksi ini harus diisi, namun sebenarnya dapat anda rubah setelah persistence unit-nya jadi.
Firefox 3 rc1 Linux
Browser yang satu ini menurut saya memang menyenangkan, karena kita dapat menambahkan bermacam-macam addon dan plugins yang dapat membuat pengalaman browsing kita lebih nyaman dan menyenangkan.
Pada saat tulisan ini dibuat, Mozilla Firefox sudah merilis versi 3 rc1. Yang membuat saya cukup heran, Mozilla sudah merelease candidate 1 version 3 ini dalam beragam bahasa, termasuk bahasa Indonesia. Cukup lengkap untuk suatu release candidate.
Sebenarnya saya sudah mencoba browser ini di distro ubuntu, tapi karena sekarang saya lebih banyak bekerja dengan distro Zenwalk, maka saya pun penasaran ingin menginstall Firefox 3 rc1 ini di distro Zenwalk.
Setelah download paket tar.gz dan mengekstraknya, ternyata kita langsung dapat menjalankannya, cukup jalankan:
./firefox
dari terminal, atau jika ingin lebih mudah, buat saja launcer di desktop. Pada pertama kali saya mencoba menjalankan Firefox 3, tidak langsung berhasil, sebab yang muncul malah browser Iceweasel bawaan dari Zenwalk 5.0. Ternyata hal itu disebabkan karena pada saat saya menjalankan firefox, ada Iceweasel yang sedang aktif. Setelah saya tutup Iceweasel-nya, barulah browser ini dapat berjalan dengan mulus.
Pada saat tulisan ini dibuat, Mozilla Firefox sudah merilis versi 3 rc1. Yang membuat saya cukup heran, Mozilla sudah merelease candidate 1 version 3 ini dalam beragam bahasa, termasuk bahasa Indonesia. Cukup lengkap untuk suatu release candidate.
Sebenarnya saya sudah mencoba browser ini di distro ubuntu, tapi karena sekarang saya lebih banyak bekerja dengan distro Zenwalk, maka saya pun penasaran ingin menginstall Firefox 3 rc1 ini di distro Zenwalk.
Setelah download paket tar.gz dan mengekstraknya, ternyata kita langsung dapat menjalankannya, cukup jalankan:
./firefox
dari terminal, atau jika ingin lebih mudah, buat saja launcer di desktop. Pada pertama kali saya mencoba menjalankan Firefox 3, tidak langsung berhasil, sebab yang muncul malah browser Iceweasel bawaan dari Zenwalk 5.0. Ternyata hal itu disebabkan karena pada saat saya menjalankan firefox, ada Iceweasel yang sedang aktif. Setelah saya tutup Iceweasel-nya, barulah browser ini dapat berjalan dengan mulus.