Minggu, 16 Desember 2012

Thread dan Sprite J2ME


THREAD
Thread nerupakan Salah satu fitur yang tertanam pada environment Java . Thread memungkinkan sebuah aplikasi Java untuk melakukan banyak aktifitas/operasi secara simultan (serentak). Dengan menggunakannya secara benar, thread memungkinkan User Interface sebuah aplikasi tetap responsif saat aplikasi tersebut melakukan operasi yang memakan waktu lama seperti komunikasi networking atau perhitunganperhitungan yang kompleks.

Thread adalah unit fundamental dari eksekusi program. Setiap aplikasi minimal memiliki sebuah thread untuk menjalankan kode. Aplikasi yang memiliki dua thread atau lebih, biasa disebut dengan multithreaded application. Fungsi seperti ini sering kita butuhkan dalam membuat program aplikasi/game nantinya. Misalnya, sebuah thread yang bertugas menjalankan operasi penghitungan nilai/skor game, kemudian thread yang lainnnya menjalankan operasi pendeteksi tabrakan antara obyek-obyek pada game. Kedua thread tersebut berjalan bersamaan dalam melakukan tugasnya masing-masing.

Setiap thread memiliki sebuah konteks yang berhubungan dengannya. Konteks tersebut memuat informasi tentang thread, seperti alamat dari instruksi yang sedang dieksekusi dan storage untuk variabel-variabel lokal. Konteks tersebut akan terupdate begitu thread dieksekusi. Konteks juga menyimpan state dari thread.

Thread bisa dalam state sebagai berikut:
Running, saat dimana thread sedang menjalankan kode.
Ready, saat dimana thread siap untuk mengeksekusi kode.
Suspended, saat dimana thread sedang menunggu external event. Contohnya: menunggu data yang datang dari device lain. Begitu data datang dan event terjadi (dilakukan), maka thread kembali ke state ready.
Terminated, saat dimana thread selesai mengeksekusi kode.
Thread yang dalam keadaan (state) running, ready atau suspended, adalah thread yang hidup (live thread). Sedangkan thread yang berstatus terminated adalah thread mati (dead thread).

Meskipun sebuah aplikasi boleh memiliki banyak thread, namun perlu memperhatikan kemampuan device yang ada (mobile device). Yang pada umumnya hanya memiliki kemampuan dan jumlah prosesor yang kecil (biasanya hanya mampu satu atau dua saja) untuk melakukan eksekusi kode.

berikut ini merupakan contoh sebuah thread:





SPRITE

Salah satu elemen grafik yang penting dalam game adalah sprite.
Menurut Martin Wells(2004, 0271), sprite merupakan kumpulan image yang mewakili berbagai states dalam keaatuan graphikal.
pengertian secara teratur beberapa sprite akan menghasilkan suatu animasi.
objek bergerak yang sering kita lihat dalam game, misalnya karakter game merupakan contoh dari sprite.

berikut merupkan contoh sprite:


http://info.poliseni.ac.id/index.php?load=tapdetilberita&id=178

Sabtu, 03 November 2012

PERSITENCE-RMS-Pert 5

Pertemuan ke lima, mata kuliah mobile computing, membahas materi tentang Persistance.
Persistance merupakan framework dalam pemrograman java yang dapat menyimpan data-data aplikasi secara lokal didalam device tersebut.
Record Store adalah sebuah koleksi dari record-record atau bisa disebut sebagai data base.
Untuk kali ini, saya membuat satu aplikasi berdasarkan tugas mata kuliah mobile computing.
Aplikasi ini menggunakan RMS(Record Manajemen System) sebagai record store.
Berikut adalah aplikasi menjawab soal matematika dan penilaiannya.

Source Code:


package persistance;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.rms.*;
import java.io.*;
/**
 * @author kie
 */

public class Persistance extends MIDlet implements CommandListener{
                private  List Mainmenu;
                private Display display;
                private Command Exit;
                private Command Back, Hasil, cmdbalik, Simpan;
                private Form form1;
                private TextField s1, s2, s3, s4, s5, id;//variabel soal
                int n1, n2, n3, n4, n5; //variabel nilai/skor
                int nilaiakhir;
                private RecordStore rs;
                private RecordEnumeration re;
                private Alert alert;
               
                public Persistance() {
                form1 = new Form ("MENU UTAMA");
                Exit = new Command("Exit", Command.EXIT, 0);
                Back = new Command("Back", Command.BACK, 1);
                cmdbalik = new Command("Kembali", Command.BACK, 1);
                Hasil = new Command("Hasil", Command.OK, 2);
                Simpan = new Command("Simpan", Command.OK, 2);
                alert = new Alert(null);
                alert.setTimeout(Alert.FOREVER);
   
                Mainmenu = new List (null, Choice.IMPLICIT);
                rs=null;
                //membuka / membuat record store
                try
                {
                                rs = RecordStore.openRecordStore("db_KodeBar", true);
                }
                catch (RecordStoreException rse)//check kalau error = exception
                {
                                alert.setString("Record Store could not open."+"appliacation will stopped");
                                alert.setType(AlertType.ERROR);
                                display.setCurrent(alert,null);
                                System.exit(1);
                }
}
                protected void destroyApp(boolean unconditional) {
                                notifyDestroyed();
                }
                protected void pauseApp() {
                                // TODO Auto-generated method stub
                }
                protected void startApp() {
                                display = Display.getDisplay(this);
                                display.setCurrent(Mainmenu);
                                menuList();
                }
                private void menuList() {
                                Mainmenu = new List("MENU UTAMA", List.IMPLICIT);
                                Mainmenu.append("UJIAN", null);
                                Mainmenu.append("NILAI TERTINGGI", null);
                                Mainmenu.append("KELUAR", null);
                                Mainmenu.setCommandListener(this);
                                display.setCurrent(Mainmenu);
                }
                public void soal_ujian(){
                                form1 = new Form("UJIAN");
                                s1 = new TextField("1. hasil dari 2+3 adalah = ?", "", 100, TextField.DECIMAL);
                                s2 = new TextField("2. hasil dari 8/2 adalah = ?", "", 100, TextField.DECIMAL);
                                s3 = new TextField("3. hasil dari 3*4 adalah = ?", "", 100, TextField.DECIMAL);
                                s4 = new TextField("4. hasil dari7-3 adalah = ?", "", 100, TextField.DECIMAL);
                                s5 = new TextField("5. hasil dari(7-3)*2 adalah = ?", "", 100, TextField.DECIMAL);
                                form1.append(s1);
                                form1.append(s2);
                                form1.append(s3);
                                form1.append(s4);
                                form1.append(s5);
                                form1.setCommandListener(this);
                                form1.addCommand(Back);
                                form1.addCommand(Hasil);
                                display.setCurrent(form1);
                }
                public void nama () {
                                form1 = new Form("SIMPAN HASIL");
                                id = new TextField ("masukkan nama anda : ", "", 100, TextField.ANY);
                                form1.append(id);
                                form1.setCommandListener(this);
                                form1.addCommand(Simpan);
                                form1.addCommand(cmdbalik);
                                display.setCurrent(form1);
                }
                public void commandAction(Command c, Displayable d){
                                if (c == Exit) {
                                                destroyApp(true);
                                }
                                if(c.getLabel()=="Simpan"){
                                                alert.setType(AlertType.INFO);
                                                if(!id.equals(null)) 
                                                {
                                                                tambahRecord(id.getString());
                                                                alert.setString("Data Lengkap !! Data disimpan di RMS");
                                                                display.setCurrent(alert);
                                                                display.setCurrent(alert, Mainmenu);
                                                }
                                                else
                                                {
                                                                alert.setString("Data Kurang! isikan data secara lengkap");
                                                                display.setCurrent(alert, form1);
                                                }
                                }
                                if(c.getLabel()=="Nilai Tertinggi"){
                                                lihatRecord();
                                }
                                else if(c==Hasil){
                                                nama();
                                }
                                else if(c==cmdbalik){
                                                soal_ujian();
                                }
                                else if(c==Back){
                                                menuList();
                       }else{
                           List menu = (List) display.getCurrent();
                           switch (menu.getSelectedIndex()){
                               case 0:
                                   soal_ujian();
                                   break;
                               case 1:
                                   lihatRecord();
                                   break;
                                  
                               case 2:
                                   destroyApp(true);
                           }
                       }
                    }
                public void tambahRecord(String id)
                {
                    int a = Integer.parseInt(s1.getString());
                    int b = Integer.parseInt(s2.getString());
                    int c = Integer.parseInt(s3.getString());
                    int d = Integer.parseInt(s4.getString());
                    int e = Integer.parseInt(s5.getString());
                    if(a == 5){
                        a=2;
                    }
                    else if(a != 5){
                        a=0;
                    }
                    if(b==4){
                        b=2;
                    }
                    else if(b != 4){
                        b=0;
                    }
                    if(c==12){
                        c=2;
                    }
                    else if(c != 12){
                        c=0;
                    }
                    if(d==5){
                        d=2;
                    }
                    else if(d !=2 ){
                        d=0;
                    }
                    if(e==10){
                        e=2;
                    }
                    else if(e != 10){
                        e=0;
                    }
               
                    nilaiakhir = a + b + c + d + e;
                  byte[] temp = null;
                  try
                  {
                      //kosntruktor baos dan dos
                      ByteArrayOutputStream baos = new ByteArrayOutputStream();
                      DataOutputStream dos = new DataOutputStream(baos);
                      //cari fungsi ini ByteArrayOutputStream dan DataOutputStream di internet
                      dos.writeUTF(id);// tulis var pada dos
                      dos.writeInt(nilaiakhir);
                      temp = baos.toByteArray();
                  }
                  catch (IOException ioe)
                  {
                      ioe.printStackTrace();
                  }
                  try
                  {
                      rs.addRecord(temp, 0, temp.length); //masukan data pada RecordStore
                  } catch (RecordStoreNotOpenException rsnoe) {
                    rsnoe.printStackTrace();
                  } catch (RecordStoreException rse) {
                    rse.printStackTrace();
                  }
                }
                public void lihatRecord() {
                    byte[] temp = null;
                    Mainmenu.setTitle("Nilai Tertinggi");
                    Mainmenu.deleteAll();
                    try
                    {
                        re = rs.enumerateRecords(null, null, false); 
                        while (re.hasNextElement()) 
                        {
                            int i = re.nextRecordId();
                            temp = rs.getRecord(i);
                            ByteArrayInputStream bais = new ByteArrayInputStream(temp);
                            DataInputStream dis = new DataInputStream(bais);
                            try
                            {
                                String id = dis.readUTF();
                                //Integer nilai akhir = dis.readUTF();
                                Mainmenu.append(id + " = "+ nilaiakhir +" \n",null);
                            }
                            catch (IOException ioe) {ioe.printStackTrace();}
                      }
                      Mainmenu.addCommand(Back);
                      Mainmenu.setCommandListener(this);
                      display.setCurrent(Mainmenu);
                    }
                    catch (InvalidRecordIDException invID) {invID.printStackTrace();}
                    catch (RecordStoreNotOpenException rsnoe) {rsnoe.printStackTrace();}
                    catch (RecordStoreException rse) {rse.printStackTrace();
                  }
                  }
                }


HASIL :


Sekian, Terimakasih ^_^

Jumat, 05 Oktober 2012

HIGH LEVEL USER INTERFACE

Membuat Aplikasi Input Data sederhana dengan menggunakan High level user interface.
Data yang dimasukkan: nama, jenis kelamin, alamat, no telp, email, tgl lahir,
Berikut ini hasil tampilan High level user interface:

1. Form pengisian

Source code untuk pembuatan form input data:






















2.  Form Hasil View




















3. Tampilan Alert, muncul jika data belum terisi semua

Source Code untuk menampilkan Alert:





















Untuk lebih jelasnya bisa diunduh di sini, Silahkan ^_^

Selasa, 02 Oktober 2012

Masihkah, Fai?

Dari: Riri Sardjono, Kepada Cinta hal. 155-166



Hi, Fai.

Apa kabar?
Apa kamu masih terjebak dalam dilema lebih baik tidak menikah 
daripada menikah tanpa cinta? Walaupun kamu ngerasa nyaman 
banget dengan seseorang, bersamaan dengan itu kamu juga 
meragukan kadar cinta yang kamu miliki?

Kenapa, Fai?
Kenapa kamu bisa memiliki perasaan nyaman tanpa mampu menumbuhkan cinta?


Fai,

Kenapa kamu nggak pernah mau bercermin dari aku?
Aku adalah contoh hidup dari dilema yang sedang kamu hadapi.

Berbeda dengan kamu, saat memutuskan pacaran, aku hanya bermodalkan rasa suka. 
Kemudian, aku memutuskan menikah dengan modal logika.
Kamu tahu itu, kan, Fai?
Tapi, apa kamu tahu kalau perasaan nyaman yang aku rasakanlah yang menjadi salah satu 
hal logis yang menurutku perlu aku pertimbangkan.
Kenapa?
Nggak tau, Fai.
Tapi, saat itu, aku berpikir cinta yang menggebu-gebu bisa membutakan. 
Tapi, perasaan nyaman adalah pupuk cinta itu sendiri


Tapi...

Semakin dekat dengan hari pernikahan, aku malah semakin sering mendengar orang melontarkan
 ucapan seperti ini: "Emang enak kawin?" atau "Nikmati masa bulan madu kamu nanti karena setelah itu... 
welcome to the hell. Apalagi kalau kamu langsung hamil" Dan yang paling seram adalah
 pernyataan Mbak Ami yang bilang, "Gue menjalani pernikahan gue, bukan menikmatinya."
Menjalani, Fai.
Seolah-olah, pernikahan hanya memberikan dua pilihan bagi kita: bercerai atau terpaksa menjalaninya.
 Apalagi, kalau keburu punya anak.


Fai,

Waktu itu aku takut banget. Aku pikir, ngapain terikat dalam sebuah hubungan seumur hidup kalau kita 
nggak bisa menikmatinya? Menurutku, itu adalah bentuk lain dari bunuh diri.
Tapi, beberapa orang bilang, "That's life, Dear."
Yup, Fai, that's life.
Dan, aku mau enjoying my life.


Apa itu mungkin terjadi dalam pernikahan, Fai?

Atau, pertanyaan yang lebih tepat adalah, apakah pernikahan bisa dijadikan sebagai media untuk 
menemukan kabahagiaan?
Mungkin.
Kalau nggak, kenapa hampir seluruh penduduk bumi kawin?
Atau, sebenarnya, manusia sebegitu bodohnya hingga dengan sadar membiarkan dirinya masuk 
ke dalam perangkap yang sejak zaman nenek moyang telah diketahui sebagai penjara hidup. 
Apalagi, untuk kaumku, Fai. Perempuan.


Hmmm...

Kayaknya, aku tahu apa yang timbul di dalam kepala kamu saat membaca dua paragraf terakhir 
dari tulisanku di atas. Sebuah pertanyaan. Kenapa aku tetap memutuskan menikah?
Jawabannya simpel, Fai.
Karena aku nggak punya nyali untuk membatalkan sebuah rencana yang melibatkan semua orang 
yang berkuasa mengeluarkan aku dari daftar silsilah keluarga dengan alasan: 
TELAH MENCORENG NAMA BAIK KELUARGA.
Well, runaway bride cuma bisa terjadi di Amerika, kan, Fai?


Jadi...

Kalau rasa nyaman, bibit, bebet, dan bobot adalah pertimbangan logis pada awalnya,
 kesadaran akan efek dari tindakan membatalkan pernikahan menjadi pertimbangan logis berikutnya.
So, here I am, Fai.
Dengan kesadaran, aku telah mengubah status diriku di KTP dari lajang menjadi kawin.


Dan, aku mulai menyiapkan diriku untuk masuk ke dalam fase paling membosankan dalam hidupku, Fai.

Menjadi seorang istri.
Seperti nasihat Mbak Ami, aku pun berusaha meyakini diriku untuk menjalaninya. 
Bukan menikmatinya. "Nggak usah muluk-muluk." Begitu saran tambahan yang dilontarkan Mbak Ami.
 "Udah bagus nggak cerai atau jadi korban kekerasan dalam rumah tangga."
Anyway...
Aku menikah berdasarkan logika, kan?


Tapi, ternyata, dalam perjalanannya, aku menemukan sesuatu yang menakjubkan telah terjadi, Fai.



Bahwa,

I'm in love with my husband... saat menyadari kalau beberapa kali dia telah ngebiarin aku tetap
 tidur saat dia sudah bangun pagi. Dia cuci muka, terus bikinin aku teh hangat.


I'm in love with my husband... saat aku lagi masak dan tanpa bertanya dia langsung ngambil beras,

 mencucinya, dan masak nasi di rice cooker.


I'm in love with my husband... saat aku yang nggak bisa masak tetap ngotot nyoba masak buat dia. 

Aku mencoba masakan dengan bahan instan, seperti, sosis, chicken nugget, daging asap, 
kentang goreng, mi instan, bahakan sup asparagus, yang tnggal dicemplungin di air mendidih.
 Kemudian, dia komentar, "Aku seneng makan kenyang, tapi istriku nggak usah capek. 
Ternyata, orang bule emang pintar, ya. Mereka nyiptain masakan siap saji dan siap diangetin doang.
 Soalnya, aku butuh istri bukan cuma buat masak doang."


I'm in love with my husband... saat pagi sebelum berangkat kerja dia bilang, "Biar aku yang nyuci jeans 
dan semua pakaian yang berat. Kamu nyuci yang ringan-ringan saja, ya."



I'm in love with my husband... karena setiap akhir bulan dia transfer semua gajinya ke rekeningku dan bilang,

 "Aku, tuh, boros banget. Makanya, kamu yang ngatur keuangan kita, ya."
 Dan saat aku tunjukin jumlah uang tabungan di bank, dia langsung tertegun dan bertanya,
 "Kamu nabung sebanyak ini?" Raut mukanya terlihat sedih saat dia bilang,
 "Kamu boleh, kok, belanja, beli baju atau melakukan sesuatu. 
Jangan hanya dipakai buat kebutuhan sehari-hari dan sisanya ditabung. 
Aku, kan, senang kalau bisa ngebeliin kamu barang-barang yang kamu suka."


I'm in love with my husband... saat dia ngajak aku beli ponsel baru, tapi aku tolak dengan alasan 

baru membeli laptop dan itu berarti tabungan berkurang. 
Terus, dia bilang, "Aku sedih nggak bisa beliin istriku ponsel baru yang mahal."


I'm in love with my husband... saat beberapa orang pria didekat rumah sempat gangguin aku,

 reaksi dia adalah mencari orang keamanan kompleks dan bilang, 
"Gue nggak mau ada siapa pun yang ganggu istri gue.
 Kalo elo nggak bisa menyelesaikan ini dengan cara lo, gue akan menyelesaikan ini dengan cara gue."


I'm in love with my husband... saat aku melihat hasil test pack-ku yang kesejuta kalinya dan berkata,

 "Aku gagal hamil lagi." Dia ketawa sambil ngejitak kepalaku.
 Kemudian, bilang, "Kita coba buat anak lagi, yuk?"


I'm in love with my husband... and I want to continue in love with him in many ways.



Fai,

Rasa nyaman itu sudah berubah menjadi rasa cinta!
Padahal, suamiku nggak pernah ngasih candlelight dinner,
atau ngasih aku bunga,
atau ngasih aku puisi cinta,
atau ngasih aku kartu Valentine yang romantis,
atau ngasih aku berlian,
atau ngasih aku surprise dengan ngajak nonton opera.
Dia cuma bikinin aku teh,
nyuci celana jeans,
nyuci beras,
atau percayain uangnya ke aku.


Tapi, kata Mbak Ami, "Jelas aja. Elo, kan baru kawin dua tahun.

 Coba, deh, kalo udah kawin selama lima tahun. Gue pengin dengar komentar lo."
Fai,
Masa, sih, suamiku nggak mau bikinin aku teh setelah lima tahun?
Masa, sih, suamiku nggak mau nyuci jeans setelah lima tahun?
Masa, sih, suamiku nggak mau nyuci beras setelah lima tahun?
Masa, sih, suamiku nggak mau percayain uangnya ke aku setelah lima tahun?
Atau
masa, sih, aku nggak bisa menghargai hal-hal kecil yang dia lakukan setelah lima tahun?


Marriages maybe made in heaven,

but a lot of the details have to be worked out here on earth.
Dan, di bumi,
segalanya adalah sesuatu yang nyata, Fai.
Bahkan, cinta.
Seperti dialog Meryl Streep dalam salah satu adegan film Prime, "Love is Work."
Perlu sebuah usaha untuk mencintai.
Perlu sebuah usaha untuk merasa jatuh cinta
Perlu sebuah usaha untuk bisa dicintai.
Tapi, menurutku, yang paling penting adalah, perlu sebuah usaha untuk bisa menghargai.
So, apa sih, cinta?
Kamu bisa mengartikan cinta dengan apa saja, Fai.
Tapi, satu yang harus kamu sadari, cinta bisa datang dari hal yang sangat sederhana.


Bagiku, cinta adalah... when your man look at you as a person.

Not a partner, not a wife, not a mother of his child, not even a woman.
But as person.
Kalau kita melihat seseorang sebagai "seseorang", itu berarti kita akan memberi penghargaan akan 

segala perbedaan yang ada di antara diri kita dan dirinya.


Fai,

Aku menikah tanpa cinta, Tapi, dalam perjalanannya, suamiku telah berhasil membuatku jatuh cinta 
karena aku merasa dicintai.
Karena aku merasa dibiarkan menjadi diriku yang berbeda dengann dirinya.
Karena aku merasa dia menghargai, bahkan untuk sekobokan beras yang aku cuci untuknya.


Fai,

Apakah aku nggak bisa membuat suamiku jatuh cinta denganku karena dia merasa dicintai?
Karena dia merasa diberi ruang, bahkan untuk meragukan perasaannya untukku?
Karena aku menghargai dirinya yang merasa nyaman denganku dan hanya merasa nyaman?


Fai,

Mungkin, sesekali, kamu harus mencoba untuk berhenti melogikakan cinta.
Mungkin, sebaiknya, kamu belajar manikmatinya saja.
Dan, terutama, membiarkannya dia datang menyapa hatimu.
Seperti yang aku lakukan selama dua tahun ini dalam perjalanan perkawinan kita.


Happy anniversary, Faizan.
Love,Adita

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | ewa network review