18 September 2009

Peluncuran Opera Mini Terbaru, Test, dan Link Download Semua Versi Opera Mini


Sedang iseng melihat feed dari operamini blog, ternyata menemukan kalo opera mini sudah meluncurkan versi beta dari versi 4.2 Yang bisa langsung dicoba. Tidak banyak yang berubah dari versi sebelumnya. Kalo lompatan dari versi 3 ke versi 4 adalah masalah tampilan, versi 4 ke versi 4.1 adalah koneksi file access secara langsung dan opera link, sedangkan dari 4.1 ke 4.2 beta masih sama, selain penambahan fasilitas pengubah skin. Jadi, tema peluncuran kali ini adalah, "What colour your Opera mini is?". Yup, cuma skin! Plus video streaming player! Seperti halnya versi beta yang lain, versi beta kali ini juga bisa dicoba dijalankan tanpa menghapus/menumpuk versi sebelumnya yang sudah terinstall.


Masih ingat dengan permasalahan java yang begitu payah di e590? Jadi ceritanya begini. Masih dengan pertanyaan yang sama, Kenapa dari hp samsung bersaudara, (mungkin) cuma sgh-e590 yang tidak didukung secara resmi oleh pihak opera? padahal sudah menggunakan Java MIDP 2. Permasalahan khususnya untuk operamini adalah:

Pertama, Tidak mendukung instalasi java dengan cara normal, yaitu melalui program resmi, kabel data, bluetooth, atau memory card. Instalasi cuma bisa dilakukan dengan cara WAP, ini adalah cara yang resmi atau dengan pemaksaan melalui kabel data usb atau bluetooth secara virtual serial port.
Kedua, Tidak didukung secara resmi oleh operamini, artinya apabila membuka mini.opera.com, ada pesan bahwa device ini tidak didukung, jadi malah disarankan untuk menggunakan versi 3 basic.
Ketiga, Tidak mendukung download aplikasi/ games java dengan jad, harus benar-benar langsung jar-nya. Akan ada pesan "install error" apabila ini dilakukan. Artinya, kalaupun bisa masuk ke halaman download operamini, instalasi tetap tidak bisa dilakukan, karena yang disediakan disana adalah versi jad, bukan jar. Hal yang sama juga terjadi untuk web yang menyediakan download aplikasi dalam bentuk jad, seperti wap.getjar.com, tapi masih bisa dilakukan dari web yang menyediakan jar, seperti sharejar.com

Sedangkan proses percobaan dengan berbagai macam versi operamini di Samsung sgh-e590 adalah:
- Opera Mini 3
Berhasil diinstall, melalui kabel data maupun lewat link dibawah. Juga bisa berjalan dengan sempurna. Dengan catatan, tidak bisa koneksi internet! :green: Tenang aja, menu masih bisa dicoba diliat kok, diliat doang tapinya.
- Opera Mini 4
Berhasil diinstall tanpa masalah. Saat dicoba dijalankan, boom, Tidak keluar apapun. Klik, tet, udah, keluar lagi.
- Opera Mini 4.1
Ok. Ini yang paling parah. Diinstall, dengan cara apapun, gagal.

Setelah kapok mencoba versi final, sekarang saatnya versi Beta:
- Opera Mini 4 beta 1
Bisa jalan, koneksi internet lambat. Mungkin karena devicenya.
- Opera Mini 4 beta 2
Persis sebelumnya, Dan menindih versi beta sebelumnya juga.
- Opera Mini 4.1 beta
Sempurna. Cepat. Dengan fasilitas mirip dengan versi finalnya. bisa simpan page, bisa operalink. Jadi instalasi berapa kalipun catatan bookmark yang tersimpan masih bisa diambil dari opera server. Masalahnya cuma direct download tidak berjalan. Ini karena instalasi melaui jar, bukan jad yang tersigned, jadinya gagal.
- Opera Mini 4.2 beta
Dengan semua failitas dari 4.1 final ditambah dengan hal yang tidak penting, skin. Sempurna. Katanya sih sudah bisa lihat video di m.youtube.com, maka saya coba. Buka web, abaikan peringatannya yang keluar, setelah itu search "naruto ost". Pilih salah satu, ada pertanyaan launch, jawab OK, ada pertanyaan Resume game, Ok lagi. tidak terjadi apapun. Kesimpulannya gagal total, tidak berjalan di HP payah ini.

Ini adalah hasil percobaan di hp yang payah. Untuk hp yang java-nya bagus, semua versi bisa berjalan dengan sempurna. Dan mungkin juga faktor keberuntungan dan faktor muka ikut berperan.

Hal yang menarik dari instalasi versi beta, dengan mengesampingkan adanya kebocoran kecil pada program, adalah, sudah memiliki semua feature dari versi sebelumnya, dengan beberapa feature yang tidak jauh berbeda dengan versi final yang akan diluncurkan, dan tidak saling menumpuk antar versi yang berbeda. Kalau kita install versi 4.1 final, maka dia akan menumpuk versi sebelumnya. Sedangkan dengan beta, kita bisa menjalankan 3.1 beta, 4 beta 2, dan 4.1 beta, serta 4.2 beta di hp yang sama. Bisa kita gunakan misalkan apabila kita memiliki banyak account di gmail, cookies bisa digunakan untuk masuk secara langsung tanpa login lagi. Jadi, 4 beta 2 untuk account1 sedangkan 4.1 beta bisa untuk account 2. Terinspirasi Firefox versi desktop, yang memakai cookies-swap. Jadi, HIDUP BETA!

UPDATE 25 Nov 2008:
Akhirnya Opera Mini 4.2 Final Diluncurkan hari ini. Tidak ada banyak perubahan dari versi beta sebelumnya. Dan ternyata bisa berjalan semuanya dengan sempurna di Samsung SGH-E590. Mungkin karena cara instalasinya yang lebih elegan, tidak brutal seperti percobaan versi sebelumnya. Dengan mengupdate alamat link download di posting ini, kemudian memanggil halaman ini melalui browser default hp, download, langsung install. Ternyata ini satu-satunya versi final yang bisa berjalan, dan berjalan berdampingan dengan versi beta yang sudah dicoba sebelumnya.

DOWNLOAD LINK,
Bisa melalui komputer desktop atau lewat hp untuk langsung instalasi. Semuanya berasal dari server resmi opera, jadi masih asli, tidak dimodifikasi, dan lain-lain :-). Meskipun pihak opera melalui halaman download opera mini cuma menyediakan versi terbaru (4.1, saat ini) untuk masing-masing device, versi basic 3.1 midp 1, dan versi beta untuk percobaan (4.2 beta, untuk saat ini). Tetapi ternyata semua file dari versi sebelumnya masih bisa dicomot asal tau link dari versi operanya. Kalau device anda tidak cocok dengan versi terbaru yang disediakan, bisa mencoba link-link ini.
Yang dicantumkan adalah versi int, international. Untuk versi dengan bahasa lokal tertentu tinggal mengganti int dengan kode negara. Misalkan opera-mini-4.1.10781-advanced-int.jar akan menjadi opera-mini-4.1.10781-advanced-id.jar untuk indonesia, opera-mini-4.1.10781-advanced-us.jar untuk amerika serikat, atau opera-mini-4.1.10781-advanced-es.jar untuk bahasa spanyol. Selain itu juga ada tambahan Opera Mini Global Test, yaitu versi opera khusus yang disediakan agar user bisa membantu pihak opera untuk mengetes performa server mereka yang baru, sebagai kelinci percobaan sebelum diterapkan secara keseluruhan.
Jadi, Selamat mencoba.




OperaMini 5 Beta


[Image]
http://mini.opera.com/next/
http://www.opera.com/mini/next/
http://mini.opera.com/next/mini.jad?act=dl&tag=mini5&cert=verisign&region=en&rnd=2450100691
http://mini.opera.com/dl/1f5BFPrIuS*pBqynDxMATIhiFhYAZGVmYXVsdF8yMDA5LnBuZw==/mini.jar

Opera Mini Global Test

http://mini.opera.com/globaltest/
http://mini.opera.com/globaltest/mini.jad?rnd=1472214499&cert=none&edition=hifi
http://mini.opera.com/globaltest/mini.jar?rnd=1472214499&cert=none&edition=hifi


Opera Mini 4.2 (Opera Mini Final terbaru yang disediakan selalu memakai alamat link ini)

http://mini.opera.com/download-4/opera-mini-latest-advanced-id.jar
http://mini.opera.com/download-4/opera-mini-latest-advanced-id.jad



Opera Mini 4.2 beta

http://mini.opera.com/download-beta/opera-mini-latest-advanced-en.jar
http://mini.opera.com/download-beta/opera-mini-latest-advanced-en.jad


Opera Mini 4.1

http://mini.opera.com/global/opera-mini-4.1.11355-advanced-int.jar
http://mini.opera.com/global/opera-mini-4.1.11355-advanced-int.jad


Opera Mini 4.1 beta

http://mini.opera.com/global/opera-mini-4.1.10781-advanced-int.jar
http://mini.opera.com/global/opera-mini-4.1.10781-advanced-int.jad

Opera Mini 4

http://mini.opera.com/global/opera-mini-4.0.9800-advanced-int.jar
http://mini.opera.com/global/opera-mini-4.0.9800-advanced-int.jad


Opera Mini 4 Beta 1

http://mini.opera.com/global/opera-mini-4.0.8462-advanced-int.jar
http://mini.opera.com/global/opera-mini-4.0.8462-advanced-int.jad


Opera Mini 4 Beta 2

http://mini.opera.com/global/opera-mini-4.0.8993-advanced-int.jar
http://mini.opera.com/global/opera-mini-4.0.8993-advanced-int.jad


Opera Mini 3

http://mini.opera.com/global/opera-mini-3.1.8295-basic-int.jar
http://mini.opera.com/global/opera-mini-3.1.8295-basic-int.jad

http://mini.opera.com/global/opera-mini-3.1.10423-advanced-int.jar
http://mini.opera.com/global/opera-mini-3.1.10423-advanced-int.jad

http://mini.opera.com/global/opera-mini-3.1.7196-advanced-int.jar
http://mini.opera.com/global/opera-mini-3.1.7196-advanced-int.jad

http://mini.opera.com/global/opera-mini-3.0.6636-advanced-int.jar
http://mini.opera.com/global/opera-mini-3.0.6636-advanced-int.jad


Opera Mini 2

http://mini.opera.com/global/opera-mini-2.0.4062-basic-int.jar
http://mini.opera.com/global/opera-mini-2.0.4062-basic-int.jad

http://mini.opera.com/global/opera-mini-2.0.4509-advanced-int.jar
http://mini.opera.com/global/opera-mini-2.0.4509-advanced-int.jad

http://mini.opera.com/global/opera-mini-2.0.3920-advanced-int.jar
http://mini.opera.com/global/opera-mini-2.0.3920-advanced-int.jad


Opera Mini 1

http://mini.opera.com/global/opera-mini-1.2.2960-basic-int.jar
http://mini.opera.com/global/opera-mini-1.2.2960-basic-int.jad

Opera Mini Hasil Modifikasi dengan banyak fitur tambahan:
http://operamini.club.hu/keret.cgi?/opera_en.html
Link Browser Java Lainnya

---->>> Tolong beritahu kalo ada link yang saalh ketki™ yah
N3XT...arrow

30 August 2009

KISS: Complete Ubuntu Server Configuration


The Simplest way to install and configure our Ubuntu Server Edition. With this step-by-step manual instalation, we can configure Network, Internet, APT instalation source, XAMPP for Linux, Apache Web server, ProFtpd Ftp Server, PHP, MySql Database Server, Samba file sharing, Squid proxy server.


A. Network And Internet Configuration

1. Intall Ubuntu Server Edition, I prefer using 8.04 LTS, a stable build with long time support, even better than the newer ones, in my opinion. Login as root or use this command to become root for user in sudoers list.
# sudo su

2. Now, Change the hostname
# pico /etc/hosts
127.0.0.1 localhost //Don't change this

192.168.1.12 hercules //Change with your ip address and hostname

::1 ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

ff02::3 ip6-allhosts


3. Make configuration for network interfaces
# pico /etc/network/interfaces
# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

# The loopback network interface

auto lo

iface lo inet loopback

# The primary network interface

auto eth0

iface eth0 inet static

address 192.168.1.12

netmask 255.255.255.0

network 192.168.1.0

broadcast 192.168.1.255

gateway 192.168.1.1 //This is our modem ip address


4. Set our dns. This is come from isp dns server. For example this is IP Address of Telkom Speedy DNS Server.
# pico /etc/resolve.conf
nameserver 202.134.1.10


5. That's it. Now our server connected to internet. Try to ping google to test internet configuration.
# ping google.com


6. Install console web browser :)
# apt-get install lynx
# apt-get install links
# links google.com



B. APT Instalation Source

7. Change apt source based on your nearest location. For example, if you're in Surabaya, use buaya mirror, a linux source that maintenance by KLAS, Komunitas Linux Arek Surabaya. If you want to use indonesian mirror, see the full list in http://wiki.ubuntu-id.org/SourcesListLokal, or create your own source in http://arsip.ubuntu-id.org/a/sources.list/. With the nearest location, we can install new application or updates newest patch faster, instead of using ubuntu server original location or using full 6 DVDs.

This is an example apt source,
# pico /etc/apt/source.list
deb http://buaya.klas.or.id/ubuntu/ hardy main restricted universe multiverse
deb http://buaya.klas.or.id/ubuntu/ hardy-updates main restricted universe multiverse
deb http://buaya.klas.or.id/ubuntu/ hardy-security main restricted universe multiverse

8. Try to test our new configuration to update linux packages.
# apt-get update
# apt-get upgrade



C. XAMPP For Linux intalation

9. We will install web, mysql, and ftp server. But for easier maintenance, we will not using default server from ubuntu instalation, but using xampp for linux instead. So, remove the other service to make sure there's no conflict configuration.
# apt-get autoremove apache2
# apt-get autoremove mysql
# apt-get autoremove proftpd

10. Now Download and install XAMPP for Linux from http://www.apachefriends.org/en/xampp-linux.html
# wget http://downloads.sourceforge.net/project/xampp/XAMPP%20Linux/1.7.2/xampp-linux-1.7.2.tar.gz?use_mirror=biznetnetworks
# tar xvfz xampp-linux-1.7.2.tar.gz -C /opt

11. Try to start xampp for the first time
# /opt/lampp/lampp start


12. To make it service that start at linux startup, add this at first line of /etc/init.d/rc.local
# pico /etc/init.d/rc.local
/opt/lampp/lampp start

13. Apache configuration file is in /opt/lampp/etc/httpd.conf. There's nothing to change.

14. MySql configuration file is in /opt/lampp/etc/my.cnf. There's nothing to change either.

15. PHP configuration file is in /opt/lampp/etc/php.ini. Change the error reporting setting here to be like this:
# pico /opt/lampp/etc/php.ini
error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE

16. Now, try to start with new configuration
/opt/lampp/lampp restart

17. From the computer client, try to access this server, ftp://hercules, with default username is nobody and lampp as password.





D. SAMBA for Network Sharing



18. Install Samba
# apt-get install samba

19. Change Samba configuration
# pico /etc/samba/smb.conf

#======================= Global Settings =======================
[global]
workgroup = OLIMPIC
server string = %h server (Samba, Ubuntu)
dns proxy = no
#### Networking ####
; interfaces = 127.0.0.0/8 eth0

; bind interfaces only = true

#### Debugging/Accounting ####
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d


####### Authentication #######
encrypt passwords = true
passdb backend = tdbsam
obey pam restrictions = yes
; guest account = nobody

; invalid users = root

guest account = root

unix password sync = yes
passwd program = /usr/bin/passwd %u

passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .

pam password change = yes
map to guest = bad user
########## Domains ###########
########## Printing ##########
############ Misc ############
socket options = TCP_NODELAY
usershare allow guests = yes
#======================= Share Definitions =======================
[browse]

comment = Server

writable = yes

path = /opt

guest ok = yes

browseable = yes

create mask = 0777

directory mask = 0777

[data]

comment = Data

writable = yes

path = /home/actaeon/data

guest ok = yes

browseable = yes

create mask = 0777

directory mask = 0777

[htdocs]

comment = Server Apache

writable = yes

path = /opt/lampp/htdocs

guest ok = yes

browseable = yes

create mask = 0777

directory mask = 0777

[mysql]

comment = Server Mysql

writable = yes

path = /opt/lampp/var/mysql

guest ok = yes

browseable = yes

create mask = 0777

directory mask = 0777

[printers]

comment = All Printers

browseable = no

path = /var/spool/samba

printable = yes

guest ok = no

read only = yes

create mask = 0700

# Windows clients look for this share name as a source of downloadable

# printer drivers

[print$]

comment = Printer Drivers

path = /var/lib/samba/printers

browseable = yes

read only = yes

guest ok = no




E. Squid fo Proxy Server


20. For installing squid, we need two ethernet card. One for internet connection (eth0) and the other (eth1) to connect with the client. Make configuration for network interfaces
# pico /etc/network/interfaces
# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

# The loopback network interface

auto lo

iface lo inet loopback

# The primary network interface

auto eth0

iface eth0 inet static

address 192.168.1.12

netmask 255.255.255.0

network 192.168.1.0

broadcast 192.168.1.255

gateway 192.168.1.1


auto eth1

iface eth1 inet static

address 192.168.0.12

netmask 255.255.255.0

network 192.168.0.0

broadcast 192.168.0.255

gateway 192.168.1.12 //the 1st eth, as internet source


21. Install squid for proxy server
# apt-get install squid

22. Change squid configuration
# pico /etc/squid/squid.conf
http_port 8888 transparent

cache_mem 32 MB

cache_dir ufs /var/spool/squid 1600 4 256

negative_ttl 2 minutes

maximum_object_size 1024 KB

minimum_object_size 4 KB

visible_hostname hercules_actaeon

cache_swap_low 80

cache_swap_high 100


acl all src 0.0.0.0/0.0.0.0

acl local src 192.168.1.0/24

acl neightbour src 192.168.0.0/24

http_access allow local

http_access allow neightbour

delay_pools 2
delay_class 1 1

delay_parameters 1 64000/64000

delay_access 1 allow local

delay_access 1 deny all

delay_class 2 1

delay_parameters 2 8000/8000

delay_access 2 allow neightbour

delay_access 2 deny all

http_access deny all

23. Try to start squid server
# /etc/init.d/squid restart

24. Change computer client browser setting, for example in internet options, coonnection, LAN Setting, Use proxy server with 192.168.0.12 port 8888


25. Finish. Restart Your server to activate all new configuration.
# init 6


Keep-It-Simple-Stupid

N3XT...arrow

30 July 2009

Bluetooth Remote Controller For Sony Ericcson Phone


Wanna have universal remote controller for your any application in your computer? Optimized your SE bluetooth enabled phone with this pack of HID.
All of them created using Sony Ericsson Bluetooth Remote Control Version 4.01. Tested with My SE G502 and working perfectly. It's compatible with any SE phone with Buletooth device supported and integrated Remote Controller Application from Entertainment Menu. Transfer to your phone throught bluetooth file transfer so it'll be automatically installed.



1. Firefox Keyboard Shotcut.hid
2. Firefox Mouse + Keyboard Shotcut.hid
3. Google Reader.hid
4. Winamp Global HotKeys.hid
5. Windows Explorer.hid
6. Windows Media Center.hid


Download File

N3XT...arrow

06 July 2009

Samsung E590 FAQ: Penggunaan Sehari-hari

Di HP ini sebenarnya banyak hal menarik yang tidak dicantumkan dalam buku manual maupun dalam spesifikasi teknisnya. Biasanya hanya bisa ditemukan dengan cara menggunakan dalam keseharian, sehingga ditemukan jawabannya secara tidak sengaja. Misalkan bagaimana cara menampilkan video secara fullscreen padahal tidak ada perintahnya di tampilan maupun di manual.

FAQ ini cuma untuk hal-hal kecil yang berhubungan dengan penggunaan sehari-hari, untuk penjelasan secara global bisa dilihat di artikel sebelumnya. Banyak pertanyaan berasal dari komentar di gsmarena.com, yang berusaha saya jawab dengan bahasa dan kemampuan saya sendirismile_speedy. Langkah setting yang disampaikan menggunakan bahasa inggris, supaya tidak tercampur bahasanya dengan penjelasan, sehingga mudah diikuti. Beberapa hal mungkin bisa diterapkan untuk merek samsung dengan seri berbeda, karena biasanya untuk merek yang sama mempunyai beberapa hal yang sama meskipun berbeda serinya. Kalau ada pertanyaan lainnya masukkan di komentar, nanti akan saya tambahkan smile_regular

1. Bagaimana penjelasan singkat tentang HP ini?

Handphone kamera fasilitas kelas menengah dengan harga low end. Atau menurut GSMArena: Simple on purpose. Fasilitasnya sangat lengkap, termasuk pembuka dokumen yang biasanya cuma ada di HP kelas menengah keatas. Lihat spesifikasi lengkapnya di http://www.gsmarena.com/samsung_e590-1869.php.

2. Bagaimana cara menginstall java?
Ada dua cara,
dengan mendownload jar/jad -nya langsung, misalkan dari getjar.com atau webnya langsung.
atau melalui kabel data / bluetooth. Ikuti langkahnya disini.
3. Kenapa ada program Java yang tidak bisa diinstall?
Program/ games java yang diinstall tidak boleh lebih dari 300kb. Kalau ada lebih dari itu akan ada peringatan “Java file is over JAR Max Size”. Itu adalah batas maksimal data yang bisa dikirimkan secara simultan oleh HP ini.
4. Kenapa kamera tidak bisa diakses program java?
Kamera HP ini tidak bisa diakses langsung oleh program java. Kamera di j2me diakses melalui Mobile Media API and Advanced Multimedia Supplements (JSR-135 JSR-234). Sedangkan HP ini tidak mendukung JSR 135 sepenuhnya. Sehingga program seperti qeep tidak bisa mengaktifkan secara langsung.
5. Berapa ukuran memorinya?
Memory internal-nya 90MB. Bisa diisi dengan berbagai macam tipe data. Kita juga bisa menambah memori eksternal microSD / Transflash hingga maksimal 2GB.
6. Bagaimana dengan kabel data USB?
Untuk pengaksesan Kabel data ada 3 macam: Modem sehingga diaktifkan sebagai modem, PictBridge tinggal dihubungkan ke printer langsung sehingga bisa mencetak tanpa perlu komputer, dan Mass Storage. Mass Storage digunakan untuk mengakses microSD saat HP dihubungkan ke komputer, sehingga tidak perlu membeli card reader lagi. Untuk bisa mengakses memori internal dan data lainnya seperti sms dan calendar gunakan Samsung PC Studio.
7. Bagaimana cara memakai radio fm atau pemutar musik di background/ belakang sehingga sambil mengerjakan hal lainnya?
Untuk radio fm tinggal jalankan dari menu application, kemudian tekan key exit, maka akan kembali ke standby tapi radio masih berjalan sehingga bisa mengerjakan hal lainnya. Sedangkan untuk MP3 Player, jangan menjalankan dari file manager, karena hanya bisa satu per satu, dan tidak bisa secara background. Coba panggil dari application, Music Player, maka akan ada tampilannya. Pilih lagunya atau tambahkan ke playlist. Tekan key exit agar bisa menjalankan secara background, kemudian key exit lagi untuk menghentikan.
8. Bagaiman cara menjalankan fullscreen?
Putar sebuah video 3Gp atau MP4, kemudian tekan key #, maka akan menghilang kontrol player dan menjadi fullscreen. Cara ini juga bisa dijalankan untuk Document Viewer dan Pembuka Gambar di folder My Photos.
9. Bagaimana dengan background/themes?
Pilihan backgroundnya adalah: Snapshot, cuma sebuah gambar awan. Normal, kita bisa memilih gambar kita sendiri, atau random walpapers mengambil yang sudah disediakan dengan keunikan gambar-gambar tersebut akan berubah-ubah. Gambar normal juga bisa menjadi background dari menu, dengan cara mengatur transparansinya. Selain itu ada themes. Cobalah themes ini, karena themes terintegrasi bukan hanya gambar background tapi juga bentuk jam, dial nomor, dan tampilam menu. Gambar background akan berubah sesuai dengan waktu sekarang, misalkan pagi akan cerah, malam akan gelap langitnya dan seterusnya, dengan gambar berganti sesuai lokasi kita saat ini. Untuk indonesia, sudah dipilihkan gambar borobudur. Themes yang disediakan cuma ada satu dengan dua pilihan warna yang kontras, hitam atau putih. Kita tidak bisa menambahkan themes lainnya dari luar.
10. Bagaimana cara mengaktifkan autofocus di kamera?
Aktifkan kamera. Pengambilan gambar harus dilakukan dengan Camera key yang ada disamping, bukan dengan key navigation. Tekan camera key, setelah itu akan ada kotak hijau yang menandakan autofocus berhasil kemudian kamera akan langsung mengambil gambar. Menggunakan Navigation key akan menyebabkan autofocus tidak dijalankan terlebih dahulu sehingga langsung mengambil gambar. Lebih cepat tapi seringkali jelek dan kabur hasilnya.
11. Bagaimana contoh hasil foto kameranya?
Klik gambar untuk memperbesar. Ini adalah gambar hasil percobaan pribadi dengan berbagai situasi, jadi harap maklum dengan hasilnya ;-)
Photo-e590-kabel Photo-e590-hp-mini-note Photo-e590-jalan Photo-e590-gedung Photo-e590-smallville Photo-e590-hand Photo-e590-mcD Photo-e590-Batu-Night-Spectacular
12. Hal aneh lain dari :
SMS SMS yang dikirimkan tidak tersimpan. Nada sms masuk cuma ada 4 jenis pilihan. Ada SOS Message untuk mengirimkan pesan dalam keadaan darurat. Ada  Security untuk mempassword bagian tertentu termasuk bagian message ini. Dan juga reject list, baik panggilan maupun message sehingga otomatis langsung ditolak.
Pembuka dokumen/ document viewer? Pilih file yang akan dibuka dengan format yang dikenali, maka bisa langsung kita lihat isinya. Format yang bisa dibuka adalah: Word, Excel, PowerPoint, PDF. Document Viewer tidak ada di menu Application.
Offline/Flight Mode Untuk menonaktifkan fungsi jaringan termasuk internet. Sehingga kita masih bisa memakai Music Player, Radio FM, Pembuka dokumen dan lainnya misalkan saat penerbangan.
Pembuka Gambar Gambar yang ada di My Photos, sebagai hasil langsung dari kamera, memiliki lebih banyak perintah dari pada yang ada di folder lainnya. Misalkan diedit, dibuka secara fullscreen, zoom, navigasi antar gambar.
N3XT...arrow

19 June 2009

Clicky Web Analytics 2.0, Untuk Statistik secara Realtime

spy-getclicky2

Clicky Web Statistics

Sulit juga untuk mencari penyedia statistik web gratis dengan data yang lengkap dan fasilitas tambahan yang menarik. Inilah perbandingannya:

Google Analytics secara default menampilkan data perbulan dengan waktu terakhir adalah kemarin. Sehingga kita perlu menunggu Untuk bisa melihat hari sebelumnya. GA memang cocok untuk menampilkan performance website kita dalam waktu jangka panjang. Termasuk dengan adanya fasilitas compare/ perbandingan dengan jangka waktu lainnya, kita bisa melihat kenaikan/ penurunan data. Selain itu juga, GA tidak bisa menampilkan keyword dari hasil pencarian gambar, misalkan trafik dari images.google.com. GA juga tidak bisa mendeteksi apa saja link keluar yang diklik dan file apa saja yang didownload dari web kita.

Untuk melihat data hari itu juga, saya memakai histats, tetapi ternyata tidak bersifat realtime. Artinya kita harus mengambil ulang page untuk melihat data terbaru.

Saya juga sudah pernah memakai mybloglog, karena mereka menyediakan data offsite click untuk sehari sebelumnya, yaitu link keluar apa saja yang diklik dan didownload. Tapi untuk bisa melihat data hari itu juga, kita harus membayar. Disamping itu tentu saja data statistiknya tidak selengkap GA. Karena memang mybloglog mempunyai spesifikasi untuk Komunitas blog, bukan statistik blog.

Blog » Dashboard - Clicky_1245390626874 GetClicky Dashboard

Clicky Web Analytics

Akhirnya semua terselesaikan setelah menemukan getclicky. Cukup dengan satu ini dan menghapus layanan statistik lainnya. Eh iyah, untuk GA tetap dipasang, karena dari awal sudah memakai ini dan terlalu sayang dengan hasil datanya, disamping untuk data jangka panjang nantinya.

Fasilitas yang paling menarik adalah getclicky spy. Kita bisa tahu berapa pengunjung yang online di web kita saat itu juga. Apa saja yang dilakukan, dengan history kunjungan untuk ip tersebut, beserta identitas pengunjung, seperti browser, kota, dan sebagainya. Dengan tampilan ajax yang mengagumkan, data online akan mengambil data setiap realtime setiap 4 detik, sehingga kita benar-benar tahu aktifitas yang ada di web secara langsung tanpa harus meload ulang. Aktifitas terbaru akan langsung ditempatkan di yang paling atas. Setelah itu jumlah pengunjung online akan diperbaharui.

Selain itu banyak hal baru yang tidak disediakan oleh penyedia lainnya. Hal yang bagi saya berguna adalah:

  • Secara default, Getclicky akan menampilkan data pada hari itu, tetapi kita juga bisa memilih rentang lainnya.
  • Keyword dari pencarian images
  • Data link keluar/ Offsite click
  • Penampilan file apa saja yang didownload pengunjung
  • Cloud View, data ditampilkan dalam tampilan awan, dengan data yang paling banyak ditampilkan dalam bentuk yang paling besar dan begitu seterusnya sehingga akan terlihat perbandingan antar data.
  • Ada versi mobile-nya, m.getclicky.com, sehingga bisa dilihat dari HP secara langsung dimana saja.
  • Integrasi dengan Google Map, hal yang malah belum dilakukan oleh google sebagai pemilik GA dan GMap
  • Bisa dipasang di wordpress, karena ada versi non-js. Hal yang selama ini sepertinya cuma bisa dilakukan oleh Site Meter, tetapi hasil datanya tidak meyakinkan.
  • Public statistic, data kita bisa dilihat oleh orang lain. Yang bisa menyaingi hal ini cuma histats dengan widget-nya dan Quantcast dengan website compare-nya.
  • Statistik trafik dari twitter.
  • Dan banyak lagi…

Ingin tahu aktifitas pengunjung web kita secara realtime? Layanan gratis yang menyediakan hal ini cuma getclicky.

Clicky Web Analytics
N3XT...arrow

09 June 2009

AutoComplete di ASP .Net dengan JQuery

Sebenarnya judul lengkapnya panjaaaaang banget seperti judul TA :

“Implementasi Pembuatan Auto Complete sebagai Pengganti Dropdown pada ASP .Net dengan C# menggunakan JQuery dengan plugin  jquery.autocomplete dengan Pengambilan Data dari Oracle menggunakan prinsip Ajax”

Tapi sebenarnya menggunakan prinsip yang sederhana. Cuma, melibatkan begitu banyak komponen untuk hal yang se-sederhana, sehingga kelihatannya saja begitu rumit :

1. ASP .Net sebagai framework dari web yang akan kita buat.

2. C# / C Sharp, sebuah bahasa pemrograman yang merupakan pengembangan dari C, sebagai Code Bedind. Sebaiknya untuk C# dan ASP .Net kita menggunakan editor Visual Studio .Net. Selain itu ada versi Visual Studio Express yang sifatnya gratis. Untuk dasar bisa dilihat di http://ilmukomputer.org/2009/03/11/aspnet/.

3. Oracle, sebagai database yang dikhususkan untuk kelas enterprise. Ada juga Oracle XE yang bisa kita pakai secara gratis.

4. IIS, sebagai web server. Ada di windows xp profesional, kita cuma perlu mengaktifkan. Lakukan setting sehingga siap untuk melakukan koneksi antara .Net yang kita buat dengan database di Oracle.

5. JQuery, sebuah framework untuk java script. Dengan menggunakan ini, kita bisa menambah fungsionalitas pada web dengan kode yang lebih sederhana. JQuery akan ditempatkan di ASP .Net agar bisa berjalan dari sisi client.

6. jquery.autocomplete adalah plugin untuk JQuery khusus untuk menampilkan suggestion/ pilihan kepada user apabila mengetikan sebuah input pada text box. Pada contoh ini kita akan menampilkan pilihan yang berasal dari database. Sehingga web akan berjalan cepat apalagi jika data pilihan ada cukup banyak, dengan menggunakan prinsip ajax. Yaitu cuma mengirim data yang saat itu dibutuhkan oleh client, tanpa mengambil ulang halaman web secara keseluruhan.

Table-OracleData di Oracle

Langkah Pembuatannya:

1. Siapkan Server, sehingga bisa melakukan koneksi dengan database. Scheme yang akan kita gunakan adalah SCOTT, yang seharusnya sudah ada di oracle sebagai sample. Sedangkan tabelnya adalah EMP.

2. Siapkan library yang dibutuhkan, yaitu jquery dan jquery.autocomplete, tempatkan misalkan di folder /scripts

3. Buat halaman asp .net, yaitu page.aspx. Buat komponen yang dibutuhkan, misalkan Text Box. Tempatkan CSS untuk tampilan jquery nantinya disini.

4. Buat code behind-nya, yaitu page.aspx.cs. Berikan perintah sesuai dengan event  yang dilakukan di halaman aspx. Tambahkan juga pemanggilan JQuery dan binding/ penggabungan dengan komponen text box-nya.

5. Buat halaman yang akan dipanggil saat client meminta data dari database. Dalam hal ini jq.aspx dan jq.aspx.cs misalkan di folder scripts.

6. Lakukan percobaan dengan mengetikan satu huruf pada text box. Seharusnya akan ada gambar animasi yang menunjukkan bahwa data sedang diambil, kemudian di bawahnya akan keluar pilihan sesuai dengan huruf tadi untuk dipilih ditempatkan di text box.

Tampilan:

Tampilan Webtampilan-web-aspxTampilan saat penekanan hurufpenekanan-huruf

Pada contoh ini ada tiga buah jenis parameter dengan implementasinya:

1. Pemilihan nomor.

Create_Completer(this, "edt_number", "param=0");

2. Pemilihan nama, yang akan mengembalikan nama yang dipilih.

Create_Completer(this, "edt_name", "param=1");

3. Pemilihan nama, yang kemudian akan mengembalikan nama yang dipilih, kemudian empno dan job ke textbox yang lain.

Create_Completer(this, "edt_name2", new string[] { "edt_id", "edt_job" }, "param=2");

Contoh 1: Pemilihan nomorExample-1

Contoh 2: Pemilihan NamaExample-2

Contoh 3: Pemilihan Nama Example-3

Contoh 3: Hasil PemilihanExample-3-Result

Source Code:

1. page.aspx

   1:  <%@ Page Language="C#" AutoEventWireup="true" CodeFile="page.aspx.cs" Inherits="_Default" %>








   2:   








   3:  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">








   4:   








   5:  <html xmlns="http://www.w3.org/1999/xhtml">








   6:  <head runat="server">








   7:      <title>Auto Suggest</title>








   8:      <style type="text/css">








   9:          .ac_odd {background:#dddddd;}








  10:          .ac_results { padding: 0px; border: 1px solid black; background-color: white; overflow: hidden; z-index: 99999; }








  11:          .ac_results ul { width: 100%; list-style-position: outside; list-style: none; padding: 0; margin: 0; }








  12:          .ac_results li { margin: 0px; padding: 2px 5px; cursor: default; display: block; font: menu; font-size:12px; line-height: 16px; overflow: hidden; }








  13:          .ac_loading { background:url(loader.gif) right no-repeat; }








  14:          .ac_over { background-color: #0A246A; color: white; }








  15:      </style>








  16:  </head>








  17:  <body>








  18:   








  19:  <form id="form1" runat="server">








  20:  <table  width="100%" >








  21:       <tr><td>Pick Number : </td><td width="80%"><asp:TextBox Visible="true" ID="edt_number" runat="server" Font-Size="8pt" Width="50%" MaxLength="150" /></td></tr>








  22:       <tr><td>Pick Name   : </td><td><asp:TextBox Visible="true" ID="edt_name" runat="server" Font-Size="8pt" Width="50%" MaxLength="150" /></td></tr>








  23:       <tr><td>&nbsp;</td></tr>








  24:       <tr><td>Pick Name2   : </td><td><asp:TextBox Visible="true" ID="edt_name2" runat="server" Font-Size="8pt" Width="50%" MaxLength="150" /> </td></tr>








  25:       <tr><td>ID   = </td><td><asp:TextBox Visible="true" ID="edt_id" runat="server" Font-Size="8pt" Width="20%" MaxLength="20" /> </td></tr>








  26:       <tr><td>Job   = </td><td><asp:TextBox Visible="true" ID="edt_job" runat="server" Font-Size="8pt" Width="20%" MaxLength="20" /> </td></tr>








  27:       </table>








  28:  </form>     








  29:  </body>








  30:  </html>











2. page.aspx.cs













   1:  using System;








   2:  using System.Web.UI;








   3:  using System.Collections;








   4:  public partial class _Default : System.Web.UI.Page








   5:  {








   6:      protected void Page_Load(object sender, EventArgs e)








   7:      {








   8:   








   9:          if (!IsPostBack)








  10:          {








  11:              string include_jq = "<script type='text/javascript' language='javascript' src='scripts/jquery.js'></script>"








  12:              + "<script type='text/javascript' language='javascript' src='scripts/jquery.autocomplete.js'></script>";








  13:              Page.ClientScript.RegisterStartupScript(this.GetType(), "onload", include_jq);








  14:              Create_Completer(this, "edt_number", "param=0");








  15:              Create_Completer(this, "edt_name", "param=1");








  16:              Create_Completer(this, "edt_name2", new string[] { "edt_id", "edt_job" }, "param=2");








  17:          }








  18:      }








  19:      public Boolean Create_Completer(Control pages, string input, string param)








  20:      {








  21:          return Create_Completer(pages, input, new string[] { }, param);








  22:      }








  23:      public Boolean Create_Completer(Control pages, string input, string[] result, string param)








  24:      {








  25:          string cid = "", chje = "", ctarif = "";








  26:          string jq_data = "scripts/jq.aspx?"+param;








  27:          string comp_result = "";








  28:   








  29:          try








  30:          {








  31:              cid = pages.FindControl(input).ClientID;








  32:          }








  33:          catch (Exception ex) { }








  34:          int i = 1;








  35:   








  36:          foreach (string cresult in result)








  37:          {








  38:              string comp = "";








  39:              try








  40:              {








  41:                  comp = pages.FindControl(cresult).ClientID;








  42:              }








  43:              catch (Exception ex) { }








  44:              comp_result += "        $(\"#" + comp + "\").val(data[" + i + "]); ";








  45:              i++;








  46:          }








  47:          string jq_script = "<script type='text/javascript'>"








  48:          + "$().ready(function() { "








  49:          + "$(\"#" + cid + "\").autocomplete(\"" + jq_data + "\", "








  50:          + "{ mustMatch:1, matchContains:1,maxItemsToShow:15 }); ";








  51:          if (result.Length > 1)








  52:          {








  53:              jq_script += "$(\"#" + cid + "\").result(function(event, data, formatted) { "








  54:              + "    if (data) "








  55:              + comp_result








  56:              + "}); ";








  57:          }








  58:          jq_script += "});"








  59:          + "</script>";








  60:          pages.Page.ClientScript.RegisterStartupScript(pages.GetType(), "onload" + input, jq_script);








  61:          return true;








  62:      }








  63:  }











3. jq.aspx













   1:  <%@ Page Language="C#" AutoEventWireup="true" CodeFile="jq.aspx.cs" Inherits="auto_suggest_jq" %>











4. jq.aspx.cs













   1:  using System;








   2:  using System.Collections.Generic;








   3:  using System.Data.OracleClient;








   4:  public partial class auto_suggest_jq : System.Web.UI.Page








   5:  {








   6:      OraConn OC = new OraConn();








   7:      protected void Page_Load(object sender, EventArgs e)








   8:      {








   9:          string q = Request.QueryString["q"] ?? string.Empty;








  10:          string param = Request.QueryString["param"] ?? string.Empty;








  11:   








  12:          string respons = "", qry = "";








  13:   








  14:          switch (param)








  15:          {








  16:              case "0":








  17:                  qry = "select rownum from scott.emp  ";








  18:                  break;








  19:              case "1":








  20:                  qry = "select ename from scott.emp where lower(ename) like '%" + q + "%' AND rownum <= 15";








  21:                  break;








  22:              case "2":








  23:                  qry = "select ename, empno, job from scott.emp where lower(ename) like '%" + q + "%' AND rownum <= 15";








  24:                  break;








  25:              default:








  26:                  qry = "select 'Not Available' from scott.emp where rownum <= 1 ";








  27:                  break;








  28:          }








  29:          respons = Get_Query(qry);








  30:          Response.Write(respons);








  31:      }








  32:   








  33:      public string Get_Query(string q_maintain)








  34:      {








  35:          OracleConnection conn = OC.OracleConn();








  36:          OracleCommand cmd = conn.CreateCommand();








  37:          cmd.CommandText = q_maintain;








  38:          OracleDataReader rdr = cmd.ExecuteReader();








  39:          string result = "";








  40:          while (rdr.Read())








  41:          {








  42:              for (int i = 0; i < rdr.FieldCount; i++)








  43:              {








  44:                  if (i == 0) result += rdr[i].ToString();








  45:                  else result += ("|" + rdr[i].ToString());








  46:              }








  47:              result += Environment.NewLine;








  48:          }








  49:          return result;








  50:      }








  51:  }











 









 Download Source









</fin>




N3XT...arrow

24 April 2009

IDWS, Penyedia Web Space Lokal, dan Sebuah Screenshoot

Ini adalah gambar misterius yang berhasil terekam oleh screenshoot di monitor saya. Bagi yang bisa menjelaskan fonemane ini, tolong berikan pencerahan.
For God Sake! Current Speed 2,17 M , Aku ngga salah lihat kan?
Indowebster adalah server penyedia web space dengan server di lokal. Selain itu, link download yang disediakan cuma berlaku untuk indonesia. Saya diberitahu tentang website ini dari seorang teman karena dia perlu nitip mengupload hasil anime dengan subtitle bahasa indonesia buatannya sendiri, sehingga yang lain bisa ikut menikmati.
Lumayan banyak juga file-file yang sudah diupload disana, beberapa banyak yang menarik. Saya yang sebelumnya terbiasa menggunakan torrent untuk mendownload, agak kaget juga dengan website ini. Alasan ketidaknyamanan dengan direct upload sebelumnya karena web yang berkembang untuk hal seperti ini sudah sangat menyebalkan. pembatasan ukuran file, seperti halnya box.net, atau juga saat mau mendownload dan keanggotaan yang terbatas seperti megaupload dan sejenisnya.
Berbeda dengan web ini. Setahu saya, hingga saat ini, tanpa pembatasan. Dan, berdasarkan gambar yang dicantumkan disini, tolong beri saya pencerahan:
- Kenapa upload cuma bisa 10 kbps? Tidak bisa lebih dari itu, dan stabil di angka 6 kbps. Seringkali time out. Apakah ini dari telkom speedy atau dari pihak indowebster? Upload yang saya lakukan sangat lambat dan seringkali tahu-tahu berhenti. Meskipun bisa berhasil untuk file dengan ukuran dibawah 60MB, tetapi selalu gagal untuk diatas itu.


- Pertama kali, saya mendownload video klip haruka kanata - far away - ASIAN KUNGFU GENERATION, yang berukuran 70.546.088 B aka 70 MB dengan kecepatan sampai 2Mbps! selama kurang dari setengah menit! Kenapa? Sekali lagi perlu diingatkan, ini Indonesia, ini telkom, bukan jepang, dan belum memakai fibre optic. Dan juga aplikasi mass downloader tidak banyak berpengaruh dalam hal ini. Memang, kecepatan maksimal LAN card dan switch yang dipakai sebesar 100Mbps, tapi, 2Mbps itu seperti sebuah keajaiban.


- Download berikutnya adalah 2 file berukuran total 300MB. Kecepatan stabilnya adalah 90 - 120 Mbps. Berikutnya juga seperti itu. Menariknya adalah, dengan kecepatan seperti ini, tidak ada bandwidth yang terbuang percuma, karena kita masih bisa browsing dengan lancar tanpa terganggu. Berbeda halnya dengan download menggunakan torrent. Meskipun kecepatan stabilnya untuk download sebesar 60kbps sedangkan uploadnya pada kisaran 12 kbps, kita tidak bisa apa-apa lagi. Browsing saja sudah tidak bisa. Tidak ada bandwidth yang tersisa. Itulah kelebihan direct download. Sayangnya tidak semua hal menarik bisa kita dapatkan dengan direct download.

Saya bukan habis melihat hantu, tapi ini lebih mengerikan daripada ketemu kuntilanak!!!
N3XT...arrow

18 April 2009

Java-MySql: Aplikasi Database dengan Data Gambar (Updated)


Untuk update metode simpan gambar lihat di appGambar 2.0


Bagaimana caranya menyimpan data yang membutuhkan penyimpanan data gambar? Misalkan data pegawai yang membutuhkan penyimpanan gambar dari setiap pegawai. Alternatifnya ada dua, dengan kelebihan dan kekurangan masing-masing. Cara yang pertama adalah dengan membuat field dengan tipe data binary, kemudian menyimpan gambar yang dibutuhkan dalam field di database tersebut. Cara ini membutuhkan manajemen program yang lebih rumit, tapi data gambar akan terjamin, karena tersimpan didalam database yang terintegrasi dengan data lainnya. Kekurangan lainnya adalah ukuran database yang akan membesar dan lambat. Bayangkan saja, sebuah field membutuhkan gambar dengan format jpeg, 200kB. Apabila ada 200 juta record, maka ukuran field yang diperuntukan khusus untuk gambar dengan perhitungan kasar adalah 0.2 MB x 200M = 40 x 10^12 = 40 TB. Belum ditambah dengan ukuran data dari field lainnya, kalau misalkan untuk menyimpan data penduduk Indonesia.

Sedangkan cara lainnya dengan menyimpan gambar dalam bentuk file di folder yang disediakan. Pemrogramannya akan lebih mudah, dan databse tidak ikut terbebani untuk menyimpan data gambar. Selain gambar, kedua cara ini bisa dipakai untuk data yang lain, misalkan attachment berupa dokumen word.

Untuk selanjutnya, yang dibahas adalah cara yang kedua. Sebuah implementasi penyimpanan data yang disertai gambar dengan cara pengkopian file aslinya, dengan menggunakan Java dan mysql. Sudah disediakan download project yang bisa dibuka di Netbeans. Sedangkan untuk aplikasi yang sudah jadi dalam bentuk exe dan jar, juga sudah disediakan. Pastikan untuk menyiapkan database mysql terlebih dahulu dengan mengimport sql script yang disediakan, dengan mengharuskan menggunakan username "root" dengan tanpa password untuk server mysql-nya, agar aplikasi ini bisa mengakses datanya.

Persiapan.
Pada contoh ini menggunakan database mysql. Disarankan untuk menggunakan paket instalasi server yang terintegrasi seperti halnya XAMPP. disana sudah ada mysql dengan phpmyadmin sebagai user interface nya.
Editor, sebenarnya lebih menyenangkan kalau menggunakan notepad2. Tapi, kalau mau memakai yang serba "wah" dan gratis, gunakan inipun dibuat dengan Netbeans 6.5 supaya lebih mudah untuk dipelajari ulang. Saya sendiri sedang mempelajari Netbeans paling baru, 6.7 ML, terutama bagian Netbeans Framework-nya yang keren.
Untuk driver koneksi, memakai mysql-connector-java-5.1.7, sudah ada dalam project, akan dipanggil sebagai lib tambahan apabila project ini dibuka kembali di Netbeans.

Manajemen data.
pertama kali ada pembuatan data baru, data kemudian akan disimpan di database mysql. Setelah penyimpanan data, kita bisa mengambil data kembali yang sudah disimpan dengan pencarian berdasarkan ID.

Manajemen Gambar.
Untuk gambar, saat pembuatan data baru, gambar akan ditampilkan setelah pemilihan file. Saat penyimpanan, gambar akan dikopikan ke folder images, kemudian diganti namanya sesuai dengan ID. Sedangkan pada saat penampilan hasil pencarian data, gambar akan ditampilkan kembali.
Untuk menampilkan gambar, dulunya sering memakai komponen JLabel dan dijadikan sebagai image icon. Tapi untuk yang ini memakai canvas dengan meng-override paint(), sehingga lebih bebas untuk penampilan gambar, termasuk bisa melakukan scale-autofit-aspect ratio apabila gambar yang dipilih lebih besar dari tempat yang disediakan.

Langkah pemuatan:

- Untuk mencoba menjalankan aplikasi ini terlebih dahulu harus membuat database. Membuat database di mysql dengan script:

CREATE DATABASE `data`;
USE `data`;
CREATE TABLE IF NOT EXISTS `data_pegawai` (
`id` varchar(10) NOT NULL,
`nama` varchar(50) NOT NULL,
`jenis_kelamin` char(1) NOT NULL,
`alamat` varchar(150) NOT NULL,
PRIMARY KEY (`id`)
);


- Untuk komponen cGambar dengan jenis Canvas, di Editor Netbeans, ubah bagian code, custom creation code, dengan new Painter(); , sehingga pada bagian kode akan menghasilkan baris berikut : cGambar = new Painter(); , dibagian deklarasi pembuatan variabel.

- Bagian penting dari program dengan penjelasannya:

//Membuat File chooser dengan propertiesnya, menentukan filter gambar, setelah itu dipanggil untuk mengambil gambar
private void bBukaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bBukaActionPerformed
javax.swing.JFileChooser jfc = new JFileChooser();
FileFilter jpgFilter, gifFilter, bothFilter;
jpgFilter = new FileNameExtensionFilter("Gambar JPEG", "jpg");
gifFilter = new FileNameExtensionFilter("Gambar GIF", "gif");
bothFilter = new FileNameExtensionFilter("Gambar JPEG dan GIF", "jpg", "gif");
jfc.setAcceptAllFileFilterUsed(false);
jfc.addChoosableFileFilter(jpgFilter);
jfc.addChoosableFileFilter(gifFilter);
jfc.addChoosableFileFilter(bothFilter);
if (jfc.showOpenDialog(this) == jfc.APPROVE_OPTION) {
String f = jfc.getSelectedFile().toString();
eGambar.setText(f);
((Painter) cGambar).setImage(f);

}
}//GEN-LAST:event_bBukaActionPerformed

//Menyimpan Data di mysql dan mengkopikan gambar yang dipilih
private void bSimpanActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bSimpanActionPerformed
String jk = (eL.isSelected() ? "L" : "P");
String perintah = "insert into data_pegawai values (" +
"'" + eID.getText() + "'," +
"'" + eNama.getText() + "'," +
"'" + jk + "'," +
"'" + eAlamat.getText() + "'" +
")";
try {
new NIOCopier(eGambar.getText(), gambar(eID.getText()));
if (stmt.executeUpdate(perintah) > 0) {
JOptionPane.showMessageDialog(this, "Penyimpanan berhasil");
}
} catch (Exception ex) {
cetak(ex.toString());
}
kosongkan();
}//GEN-LAST:event_bSimpanActionPerformed

//Pencarian ID yang sudah disimpan, dan menampilkan gambar kembali sesuai dengan ID
private void bCariActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bCariActionPerformed
String id = eID.getText();
String perintah = "select * from data_pegawai where id = '" + id + "'";
kosongkan();
try {
ResultSet hasil = stmt.executeQuery(perintah);
for (int I = 0; hasil.next(); I++) {
eID.setText(hasil.getString(1));
eNama.setText(hasil.getString(2));
if (hasil.getString(3).equals("L")) {
eL.setSelected(true);

}
if (hasil.getString(3).equals("P")) {
eP.setSelected(true);
}
eAlamat.setText(hasil.getString(4));
((Painter) cGambar).setImage(gambar(id));
}
} catch (Exception ex) {
cetak(ex.toString());
}
}//GEN-LAST:event_bCariActionPerformed

//Mengosongkan Input Field
private void kosongkan() {
eAlamat.setText("");
eGambar.setText("");
//cGambar = new Painter();
((Painter) cGambar).setImage("");
eID.setText("");
eL.setSelected(false);
eP.setSelected(false);
eNama.setText("");
}

//Membuat koneksi ke Database Mysql
public void testDriver() {
try {
java.lang.Class.forName(mySqlDriver);
con = java.sql.DriverManager.getConnection(mySqlUrl, "root", "");
stmt = con.createStatement();
} catch (Exception ex) {
cetak(ex.toString());
}
}

//Menentukan tempat penyimpanan gambar
private String gambar(String id) {
return folder + File.separator + id.trim() + ".jpg";
}

//Class untuk mengkopi file
public class NIOCopier {

public NIOCopier(String asal, String tujuan) throws IOException {
FileInputStream inFile = new FileInputStream(asal);
FileOutputStream outFile = new FileOutputStream(tujuan);
FileChannel inChannel = inFile.getChannel();
FileChannel outChannel = outFile.getChannel();
for (ByteBuffer buffer = ByteBuffer.allocate(1024 * 1024);
inChannel.read(buffer) != -1;
buffer.clear()) {
buffer.flip();
while (buffer.hasRemaining()) {
outChannel.write(buffer);
}
}
inChannel.close();
outChannel.close();
}
}

//Class untuk menampilkan gambar
public class Painter extends Canvas {

Image image;

public void setImage(String file) {
URL url = null;
try {
url = new File(file).toURI().toURL();
} catch (Exception ex) {
cetak(ex.toString());
}
image = getToolkit().getImage(url);
repaint();
}

public void paint(Graphics g) {
double d = image.getHeight(this) / this.getHeight();
double w = image.getWidth(this) / d;
double x = this.getWidth() / 2 - w / 2;
g.drawImage(image, (int) x, 0, (int) (w), this.getHeight(), this);
}
}


Download Aplikasi - appGambar

Download Project - appGambar
N3XT...arrow