Don’t need "coding" anymore?

26 01 2010

<!–
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:0;
mso-generic-font-family:roman;
mso-font-pitch:variable;
mso-font-signature:-1610611985 1107304683 0 0 159 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-1610611985 1073750139 0 0 159 0;}
@font-face
{font-family:Verdana;
panose-1:2 11 6 4 3 5 4 4 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-1593833729 1073750107 16 0 415 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin-top:0in;
margin-right:0in;
margin-bottom:10.0pt;
margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
.MsoPapDefault
{mso-style-type:export-only;
margin-bottom:10.0pt;
line-height:115%;}
@page Section1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;
mso-header-margin:.5in;
mso-footer-margin:.5in;
mso-paper-source:0;}
div.Section1
{page:Section1;}

Sikuli is a visual technology to search and automate graphical user interfaces (GUI) using images (screenshots). The first release of Sikuli contains Sikuli Script, a visual scripting API for Jython, and Sikuli IDE, an integrated development environment for writing visual scripts with screenshots easily. Sikuli Script automates anything you see on the screen without internal API’s support. You can programmatically control a web page, a desktop application running on Windows/Linux/Mac OS X, or even an iphone application running in an emulator. http://groups.csail.mit.edu/uid/sikuli/ 
Programming Luddites may have less to fear in the future.
A new MIT project called Sikuli allows people to program using screenshots in lieu of written code. Basically, it lets you reference user interface elements like a Microsoft Word icon, Trash Can or search bar with pictures of the button or icon instead of script. .. Read the article in here
Well, keep the good job there guys, lets make these programmers work easier !!

Advertisements




Obfuscator

13 08 2009
*Copyright : Diperbolehkan mengutip keseluruhan atau sebahagian dari isi dokumen ini dengan atau tanpa  ijin penulis dengan tetap menyajikan kredit penulis.





Obfuscator

13 08 2009
Obfuscate berasal dari transitive verb yang berarti darken, to make obscure atau confuse. Dalam terminasi software engineering, obfuscation adalah “the deliberate act of nondestructively changing either the source code of a computer program or machine code when the program is in some compiled or binary form, so that it is not easy to understand or read.” Code obfuscation merupakan proses untuk melakukan obcuring pada java class agar sulit untuk di decompile menjadi source kembali (reverse engineer).

Karena sebuah mobile aplication akan di porting dan di delivery pada berbagai jenis dan jumlah handset, dapat disimpulkan manfaat utama dari obfuscation antara lain pada aspek application size, to improve performance, footprint reduction, dan protection for intellectual property / security. obfuscation pada dasarnya melakukan penamaan ulang untuk class, methode dan variable, dll dengan penamaan lebih pendek, menghilangkan comment atau informasi debugging. Beberapa obfuscator juga mengimplementasikan optimisasi pada bytecode (byte code transforming) dan beberapa teknik shrinking lain. Beberapa open source obfuscator yang sering digunakan antara lain ProGuard dan RetroGuard.

Beberapa IDE juga sudah didistribusikan dengan obfuscator seperti Netbeans IDE dengan mobility pack nya yang telah di bundled dengan Proguard Obfuscator. Sun WTK dan Eclipse IDE juga mendukung third-party obfuscation namun harus dispesifikasikan dalam proses deployment. Developer juga dapat mengganti obfuscator atau menambahkan langkah obfuscation pada cript Ant.

Berikut salah satu contoh cara untuk memasukan Obfuscator pada Netbeans IDE (pada contoh ini, menggunakan Netbeans IDE 6.5 dan ProGuard 4.3) :
1. Download ProGuard obfuscator dari http://proguard.sourceforge.net/.
2. Untar atau unzip file tersebut
3. Masukan ProGuard obfuscator jar pada directory netbeans, contoh : C:\Program Files\NetBeans 6.5\mobility8\external\ (langkah ini bisa di skip)
4. Buka Netbeans IDE, pilih Tools –> Libraries, dan Library Manager akan muncul
5. Pilih Progruard Obfuscator pada Class Library folder –> pada Classpath pilih Add JAR/Folder, dan Form untuk memilih Obfuscator Registry akan muncul
6. Defenisikan lokasi tempat JAR obfuscator yang akan digunakan –> Ok, path dari JAR file tersebut akan tampak pada Library classpath tersebut
7. Simpan perubahan pada Libray Manager dengan tombol OK

Untuk menggunakan obfuscator tersebut pada proses deployment :
1. Klik kanan pada nama project –> pilih Properties
2. Pilih Obfuscating –> dan lakukan adjustment pada bar Obfuscation Level (1-9) sesuai dengan spesifikasi project yang diinginkan pada hasil deployment. Pada level tertentu, developer akan diminta untuk memasukan additional obfuscation level.
3. Tekan Ok untuk menyimpan perubahan property project dan obfuscator akan otomatis digunakan oleh IDE pada saat proses deployment.

Sangat disarankan untuk melakukan testing pada hasil deployment dari obfuscator ini, karena pada lobfuscation level tertentu, model logic tertentu, penggunaan API tertentu, dan handset tertentu, JAR hasil deployment oleh obfuscator tidak dapat dijalankan. okay, happy coding dan selamat mencoba !!

another article as advance read can be found at http://www.devx.com/wireless/Article/28989/0/page/2





Prepocessing

11 08 2009

Masih seputar tidak begitu manisnya slogan write once, run everywhere pada java mobile, maka porting menjadi hal yang cukup krusial yang perlu diperhatikan mobile developer dalam mengembangkan sebuah produk mobile application. Hal – hal yang menjadi perhatian seperti : display size apa saja yang didukung ? JSR API apa saja yang digunakan oleh source ? di platform apa program ini akan berjalan, Nokia S60 ? Nokia S40 ? blackberry ? Motorola ? Bahasa apa yang akan digunakan untuk antar muka ? dsb. Dari hal – hal tersebut, developer dapat menentukan variabel apa saja yang akan disertakan dalam proses deployment.
Preprocessing adalah cara porting yang dilakuakan dengan memodifikasi kode program berdasarkan platform yang akan ditargetkan. Simbol prepocessor ini dapat digunakan untuk melakukan testing pada berbagai emulator dan deployment pada berbagai platform berbeda. Hal ini sangat menguntungkan dan menghemat waktu, karena memungkinkan developer untuk membuat konfigurasi berbeda – beda untuk menghasilkan berbagai versi program yang akan berjalan pada platform / handset berbeda dengan source dari project program yang sama. Sebagai contoh, perubahan pada logic pada line program cukup dilakukan 1 kali dan akan berdampak pada keseluruhan konfigurasi, atau jika line perubahan tersebut hanya akan digunakan untuk konfigurasi tertentu (misal hanya untuk handset S60 tapi tidak S40), maka cukup tambahkan prepocessor pada line tersebut.

Berikut contoh penggunakan prepocessor untuk kasus pendefenisian variabel berdasakan resolusi layar :
#if screenWidth == “175”
widthX = 10;
heightY = 20;
#elif screenWidth == “240”
widthX = 20;
heightY = 30;
#endif
Berikut contoh penggunakan prepocessor untuk pada penggunakan canvas, dimana pada platform nokia mendukung fullcanvas pada package com.nokia.mid.ui. dan yang lain cukup menggunakan package standar pada javax.microsedition.lcdui.
#if nokia
import com.nokia.mid.ui.FullCanvas;
#else
Import javax.microsedition.lcdui.*;
#endif
untuk melakukan testing dan deployment kode program diatas, dapat dilakukan dengan membuat konfigurasi berbeda. Pada Netbeans, dapat dilakukan dengan mendefenisikan ability dan value yang diinginkan pada project properties.
1. Klik kanan pada nama Project; Properties
2. Pilih Abilities; Akan tampak table ability yang otomatis di generate oleh IDE, pilih Add –> devenisikan variabel prepocessor baru yang digunakan pada line program. Anda dapat membuang variable abiliti yang tidak dibutuhkan. devoper juga dapat melakukan pendefenisian ulang untuk variabel ability yang sudah ada, seperti ScreenWidth, ScreenHeight, JSR, dll dengan menekan Edit atau klik pada baris nama ability yang akan di ubah; Ok

3. Developer juga dapat membuat berbagai macam konfigurasi pada property project. Pilih Platform; Manage Configurations; akan muncul Project Configuration Manager; pilih Add atau Add more; akan muncul Add Project Configuration; masukan nama konfigurasi misal, S60_3Ed_240x320; Ok

4. Pada konfigurasi ini, developer dapat melakukan kustomisasi yang spesifik untuk project seperti API yang didukung, platform, CLDC dan MIDP version, nama JAR – JAD untuk keperluan pendistribusian program, dll

Also similar topic can be read at :

*Copyright : Diperbolehkan mengutip keseluruhan atau sebahagian dari isi dokumen ini dengan atau tanpa  ijin penulis dengan tetap menyajikan kredit penulis.

 





Prepocessing

11 08 2009
Masih seputar tidak begitu manisnya slogan write once, run everywhere pada java mobile, maka porting menjadi hal yang cukup krusial yang perlu diperhatikan mobile developer dalam mengembangkan sebuah produk mobile application. Hal – hal yang menjadi perhatian seperti : display size apa saja yang didukung ? JSR API apa saja yang digunakan oleh source ? di platform apa program ini akan berjalan, Nokia S60 ? Nokia S40 ? blackberry ? Motorola ? Bahasa apa yang akan digunakan untuk antar muka ? dsb. Dari hal – hal tersebut, developer dapat menentukan variabel apa saja yang akan disertakan dalam proses deployment.

Preprocessing adalah cara porting yang dilakuakan dengan memodifikasi kode program berdasarkan platform yang akan ditargetkan. Simbol prepocessor ini dapat digunakan untuk melakukan testing pada berbagai emulator dan deployment pada berbagai platform berbeda. Hal ini sangat menguntungkan dan menghemat waktu, karena memungkinkan developer untuk membuat konfigurasi berbeda – beda untuk menghasilkan berbagai versi program yang akan berjalan pada platform / handset berbeda dengan source dari project program yang sama. Sebagai contoh, perubahan pada logic pada line program cukup dilakukan 1 kali dan akan berdampak pada keseluruhan konfigurasi, atau jika line perubahan tersebut hanya akan digunakan untuk konfigurasi tertentu (misal hanya untuk handset S60 tapi tidak S40), maka cukup tambahkan prepocessor pada line tersebut.

Berikut contoh penggunakan prepocessor untuk kasus pendefenisian variabel berdasakan resolusi layar :

#if screenWidth == “175”
widthX = 10;
heightY = 20;
#elif screenWidth == “240”
widthX = 20;
heightY = 30;
#endif

Berikut contoh penggunakan prepocessor untuk pada penggunakan canvas, dimana pada platform nokia mendukung fullcanvas pada package com.nokia.mid.ui. dan yang lain cukup menggunakan package standar pada javax.microsedition.lcdui.

#if nokia
import com.nokia.mid.ui.FullCanvas;
#else
Import javax.microsedition.lcdui.*;
#endif

untuk melakukan testing dan deployment kode program diatas, dapat dilakukan dengan membuat konfigurasi berbeda. Pada Netbeans, dapat dilakukan dengan mendefenisikan ability dan value yang diinginkan pada project properties.
1. Klik kanan pada nama Project –> Properties

2. Pilih Abilities –> Akan tampak table ability yang otomatis di generate oleh IDE, pilih Add –> devenisikan variabel prepocessor baru yang digunakan pada line program. Anda dapat membuang variable abiliti yang tidak dibutuhkan. devoper juga dapat melakukan pendefenisian ulang untuk variabel ability yang sudah ada, seperti ScreenWidth, ScreenHeight, JSR, dll dengan menekan Edit atau klik pada baris nama ability yang akan di ubah –> Ok
3. Developer juga dapat membuat berbagai macam konfigurasi pada property project. Pilih Platform –> Manage Configurations –> akan muncul Project Configuration Manager –> pilih Add atau Add more –> akan muncul Add Project Configuration –> masukan nama konfigurasi misal, S60_3Ed_240x320 –> Ok

4. Pada konfigurasi ini, developer dapat melakukan kustomisasi yang spesifik untuk project seperti API yang didukung, platform, CLDC dan MIDP version, nama JAR – JAD untuk keperluan pendistribusian program, dll
Also can be read similar topic at :





Midlet Icon

4 08 2009
*Copyright : Diperbolehkan mengutip keseluruhan atau sebahagian dari isi dokumen ini dengan atau tanpa  ijin penulis dengan tetap menyajikan kredit penulis.




Midlet Icon

4 08 2009
Dalam melakukan deploy aplikasi mobile java untuk handset sebenarnya, terkadang kita menemukan kenyataan yang membuat slogan java sebagai bahasa pemrograman yang write once, run everywhere tidak terlalu tepat atau semanis seperti bunyinya. Nyatanya, sering kali developer harus melakukan kustomisasi terhadap kode dan resource program, sesuai dengan kebutuhan handset yang akan di targetkan.

Salah satu contoh paling sederhana adalah Midlet Icon. Seperti yang kita ketahui, walaupun tidak diharuskan, akan sangat baik jika dalam pendistribusian program mobile java (midlet) disertai icon (biasanya dalam format png) yang akan tampak pada listing aplikasi dalam handset.

Umumnya, setiap handset terkadang memiliki ukuran yang berbeda – beda satu sama lain, sehingga sebelum melakukan deployment, developer mobile java perlu mendefenisikan ukuran midlet icon yang tepat untuk setiap handset. Midlet icon ini dapat di spesifikasikan dan akan tampak pada atribut pada JAD (java application descriptor) file, yaitu :

MIDlet-Icon: /testicon.png

atau

MIDlet-1: [nama midlet], /testicon.png,[nama kelas midlet]

atau jika anda menggunakan IDE, dapat mencari menu untuk melakukan customize midlet icon. Berikut salah satu contoh melakukan pendefenisian dan atau kustomisasi midlet icon(pada contoh ini, menggunakan Netbeans IDE 6.0)
1. Klik kanan pada nama Project –> properties
2.Pilih Build –> Libraries & Resource

3. Pilih Add Folder (jika image yang akan dijadikan midlet icon terdapat paad salah satu folder anda), dan defenisikan image yang diinginkan –> Open

4. Pilih Application Descriptor –> Midlets –> akan tampak tabel Midlets in the Suite –> pilih Edit –> spesifikasikan Midlet Name (akan muncul saat instalasi dan penggunaan program pada hanset), Midlet Class (kelas pada project yang mengimplemen midlet) dan Midlet Icon (akan tampak semua resource image yang sudah di defenisikan pada library tadi (langkah 2 dan 3)) –> Ok

5. Tekan tombol Ok pada kanan bawah form ini untuk menyimpan perubahan properties project

Setiap handset memiliki penanganan yang berbeda untuk ukuran Midlet icon yang tidak tepat. Sebagai contoh, ada yang otomatis melakukan scale icon tersebut pada ukuran yang tepat, ada yang menampilkannya tetap sebagai ukuran yang sebenarnya ehingga jika icon lebih kecil ia akan tampak kecil pada sisi kanan area (nokia s60) dan jika lebih besar tetap akan tampak terpotong.

Berikut beberapa rekomendasi ukuran midlet icon yang saya dapatkan dari beberapa referensi, atau saran developer lain dan telah di implementasikan beberapanya. Saya akan sangat berterima kasih jika anda mengkonformasi jika terdapat saran untuk ukuran yang lebih baik dan atau menambahkan list yang sudah ada.

Blackberry :

  • display size resolution 320 x 240 –> 46 x 48 pixels
  • display size resolution 480 x 320 –> 53 x 53 pixels
  • General –> 45 x 45 pixels

Motorola :

  • display size resolution 176 x 220 –> 27 x 24 pixels
  • display size resolution 240 x 320 –> 27 x 24 pixels
  • General –> 15 x 15, 16 x 16, 32 x 32

Nokia S90 :

  • small display size resolution –> 25 x 20 pixels
  • medium dan large display size resolution –> 64 x 50 pixels

Nokia S80 :
General –> 64 x 50 pixels

Nokia S60 1st and 2nd Edition :

  • display size resolution 176 x 208 –> 31 x 31, 42 x 29 (best fit), 29 x 29 pixels
  • display size resolution 208 x 176 –> 37 x 37 pixels
  • display size resolution 240 x 320 –> 53 x 53, 55 x 55 pixels
  • display size resolution 352 x 416 –> 76 x 76 pixels
  • display size resolution 416 x 352 –> 76 x 76 pixel

Nokia S60 3rd Edition :

  • display size resolution 176 x 208 –> 31 x 31 (best fit), 42 x 29 pixels
  • display size resolution 240 x 320 –> 53 x 53 (best fit), 55 x 55, 64 x 64 pixels
  • display size resolution 320 x 240 –> 52 x 52 (best fit), 54 x 54 pixels
  • display size resolution 360 x 640 –> 52 x 52 pixels
  • display size resolution 352 x 416 –> 64 x 64, 76 x 76 (best fit) pixels
  • display size resolution 416 x 352 –> 76 x 76 (best fit) pixels
  • display size resolution 208 x 176 –> 37 x 37
    208×208:37×37

Nokia S40

  • display size resolution 128 x 128 –> 16 x 16 pixels
  • display size resolution 128 x 160 –> 18 x 18, 24 x 24 (best fit), 29 x 29 pixels
  • display size resolution 176 x 220 –> 27 x 24 pixels
  • display size resolution 208 x 208 –> 46 x 46 pixels
  • display size resolution 240 x 320 –> 46 x 48 (best fit), 42 x 29 pixels

Nokia S30
General –> 16 x 16 pixels

7560 dan 3650
General –> 32 x 32 pixels

N90
General –> 84 x 58 pixels

Samsung

  • display size resolution 176 x 220 –> 27 x 24 pixels
  • display size resolution 240 x 320 –> 27 x 24 pixels
  • display size resolution 320 x 240 –> 27 x 24 pixels
  • General –> 16 x 16, 29 x 29, 32 x 32 pixels
  • D807 –>32 x 32 pixels – Ignores 8-bit transparency, maybe 32-bit alpha would work
  • E770 –> 16 x 16 pixels
  • Z140v –> 24 x 24 pixels – use ‘web safe’ colors at 8 bit (256 color)
  • Z400 –> 53 x 46 pixels – (empirical)
  • Z500 –> 40 x 34 pixels
  • ZX10,ZX20 –> 42 x 36 pixels- same as D807
  • All Others – None

Siemens
General –> 18 x 18, 14 x 14 pixels

Sony Ericsson

  • General –> 16 x 16, 32 x 32 pixels
  • V800, W900 –> 24 x 24 pixels
  • K608i, W600i –> 16 x 16 pixels
  • Seri JP4, JP5, JP6 –> 16 x 16 pixels (recommended by SonyEricsson)
  • K700i, T610, T616, T618, T628, T630, T637, Z600, Z608, K500, K506, K508, K700, Z500, S700, S710a, P800, P900 –> No icon
  • P910 – supports icons in various sizes and attempts to scale/adapt these to a size suitable for display. The icon size shouldn’t matter, only that smaller ones might show up a bit jagged due to magnification.

Sharp
General –> 27 x 27 pixels
GX Series –> 24 x 24 pixels

Sagem
General –> 18 x 18 pixels

Vodafone Japan
General –> 24×24 pixels
905SH, 903SH, 902SH, 804SH, 705SH, 702SH –> 42 x 42 pixels

Sanyo
4920 –> 9 x 9 pixels
5300 –> 16 x 16 pixels
8100 –> 15 x 15 pixels

LG
CU-500 –> 15 x 15, 16 x 16 pixels

Palm
Tungsten, Treo, Low Res –> 22 x 22, 9 x 15 pixels

Kebanyakan dari handset diatas mendukung midlet icon dengan format png 1bit-depth, 4bit-depth, 8bit-depth, kecuali Nokia S60 3rd Edition dengan konfigurasi terbaik hingga 24bit-depth.

Advance read :

Terakhir diubah pada 11 agustus 2009