Bahan2 Android
Dapur Android
Ada beberapa bahan yang setidaknya diketahui agar dapat membuat aplikasi android dan menikmatinya.
Activity
Adalah bahan android yang sangat terkait erat dengan apa yang ditampilkan oleh handset pada pengguna aplikasi. Setiap layout dari aplikasi android flownya ditentukan oleh activity.
Intent
Intent merupakan pemberi informasi. Intent memberikan informasi kepada aplikasi terhadap apa-apa yang terjadi terkait dengan handset seperti sdcard yang dimasukan, sms yang masuk, aplikasi yang dijalankan tinggal bagaimana kita meresponnya. Bisa saja kita melaunch activity yang lain atau cukup membrikan informasi pada kita sebagai pengguna bahwa kita sudah berjalan 100 m dari posisi sebelumnya
.
Content Provider
Bahan yang satu ini biasa digunakan untuk menyimpan data. Sebutti ah aplikasi bisa menggunakan data yang sa,a dari content provider yang dimiliki oleh aplikasi yang lain. Contoh sederhananya adalah android menyimpan settingnya handset seperti berapa volume, tingkat kecerahan/brightness, atau preference di dan aplikasi-aplikasi yang terinstall dapat menggunakan content provider tersebut.
Service
Jika Activity, Intent dan content provider memiliki kehidupan yang pendek
dan data mati kapan saja, maka tidak dengan service. Service diciptakan agar dapat hidup bebas independent tidak tergantung oleh activity dan dapat hidup lebih lama jika dibutuhkan. Kita inggin tetap mendengarkan music meskipun kita menjalankan aplikasi yang lain atau UI dari pemutar music tersebut sudah tidak tampak. Untuk melakukan hal tersebut, maka diperlukan service.
Manifest
File manifest yang terleteak di root aplikasi merupakan bagian paling penting dari aplikasi android. Hampir setiap bahan-bahan android musti terdaftar dalam file ini. Disini juga harus difatrakan permission dari aplikasi jika aplikasi mengakses hal-hal yang sifatnya personal seperti mengakses GPS, network mereka harus tercatat dalam file ini.
2 comments January 6, 2010
Ruby At a Glance
Saya sedang membutuhkan cara membuat web aplikasi yang cepat, hostingnya tersedia di indonesia dengan harga yang terjangkau, mudah dipelajari bagi developer yang biasa coding dengan java. Pilihan pertama adalah PHP dan yang kedua adalah Ruby. Hosting php tersedia melimpah, dapat membuat web aplikasi dengan cepat (dengan framework tentunya). Sayangnya, untuk developer java, nampaknya kurang memuasakan karena sintaksnya yang berbeda. Akhirnya pilihan jatuh pada Ruby (terutama dengan Rails) karena memenuhi syarat dan mobile developer juga banyak yang menggunakan ruby.
Rangkuman pelajaran Ruby.
Prerequites condition
Environment Setting
1. Install Ruby, digunakan sebagai intepereter. Di Java biasanya kita perlu menginstall JDK.
2. Set Path Environment seperti halnya mengeset JAVA_HOME
1. Ruby bersifat OOP (Inheritence, Polymorph dst), memiliki class, method, variable dan constructor.
2. File ruby berekstensi .rb , untuk mengeksekusi ruby statement tidak harus dengan main application.
<br /><br /> <p>class Cat<br /><br /><br /> def talk<br /></p> <p>return 'miaow!'<br /></p> <p>end<br /></p> <p>end</p></p> <p><p># --- Membuat objectnya<br /></p> <p>yourcat = Cat.new<br /></p> <p># ---- memanggil method dari object yang telat dibuat<br /></p> <p>yourcat.talk()<br /></p> <p>#--- Untuk melihat retrun value dari method yang dipanggil seperty halnya System.out.println() dalam java<br /></p> <p>puts(yourcat.talk())<br /></p> <p>
Code di atas disimpan dalam satu file dengan ekstention .rb, misalnya testaja.rb dan untuk mengeksekusinya cukup dengan perintah
ruby testaja.rb
<br /></p> <p>miaow<br /></p> <p>
3. Mendefinisikan method dengan def.
seperti yang nampak pada code
<br /></p> <p>def talk<br /></p> <p>return 'miaow!'<br /></p> <p>
4.reference tidak perlu data type, sehingga saat membuat object, object bisa ditaryh di variable tanpa data type.
5. Untuk mencoba sintaks-sintaks ruby dapat memasukan command irb contohnya
<br /></p> <p>D:\RubyOnRails\bakso&gt;irb<br /></p> <p>irb(main):001:0&gt; puts &quot;Hello World&quot;<br /></p> <p>Hello World<br /></p> <p>=&gt; nil<br /> irb(main):002:0&gt;<br />
6. Untuk baris komentar, dapat menggunakan tanda # atau jika baris komentarnya banyak dapat menggunakan
<br /> <p>=begin<br /></p> <p>Ini<br /></p> <p>Adalah Baris-baris<br /></p> <p>komentar<br /></p> <p>=end<br /></p>
2 comments December 8, 2009
Log4j dan JBoss AS
Log dalam programming digunakan untuk kepentingan development dan production. Saat development kita ingin info yang sedetail-detail saat aplikasi berjalan. Log yang sering digunakan dalam java salah satunya adalah Log4j. Saat digunakan, biasanya log4j menggunakan konfigurasi yang ada di file log4j.xml. Untuk JBoss 4.2.x sendiri file konfigurasinya adalah jboss-log4j.xml, terdapat di dalam ~\jboss-4.2.x\server\default\conf\.
Dalam file tersebut dapat kita set treshold (batasan) dari log yang akan ditampilkan dari yang tertinggi ERROR,WARN,DEBUG dan INFO. Kalau tresholdnya di set INFO , maka semua level (ERROR,WARN, DEBUG,INFO) log akan di tampilkan.
Output dari log4j sendiri bisa berupa tampilan di console, dalam file, database atau dikirimkan ke email tertentu.
Treshold menjadi penting kala aplikasi memasuki proruction. File log yang ukurannya akan terus menerus bertambah, semakin detail levelnya, INFO misalnya, semakin besar file log yang dibuat. Di JBoss, file log nya adalah server log, by defualt dan bisa di ubah dengan mengubah file jboss-log4j.xml pada line
dan server.lognya diganti.
Add comment December 1, 2009
Android, sebuah permulaan
Motorola november 2009 akan merelease handset berbasis android (detiknet). Nampaknya smartphone berbasis android semakin ramai. Nah as java developer tentunya gak boleh ketinggalan dengan semua perkembangan tersebut.
Google sendiri sudah merilis android versi 2.0 saat tulisan ini dibuat. Sekali lagi memang butuh waktu. Pasar android di Indonesia belum bisa mengalahkan Blackberry, khususnya di Indonesia. Kalau menurut pakar yang dikutip oleh detiknet, adalah karena memang target pasarnya berbeda. Pengguna android akan merasa optimal penggunaan handsetnya kalau penggunanya suka ngoprek, berbeda dengan BB yang fungsionalnya gak perlu oprek sana sini.
Android memiliki aplikasi marketplace, aplikasi yang digunakan untuk membrowse aplikasi-aplikasi yang bisa langsung di unduh dan di install dihandset penggunanya. Sayangnya aplikasi marketplace tersebut jika dijalankan di negara-negara diluar US, hanya bisa mengakses aplikasi-aplikasi yang sifatnya free. Aplikasi yang berbayar tidak akan nampak di hanset tersebut.
Bagi yang suka ngoprek alias develop android, peluangnya sangat besar untuk mengembangkan android. Selain platform yang bersifat open source, juga tersedia API-API (interface) bagi developer untuk mengutilisasi feature-feature android. Developer bisa mengakses semua sensor yang tersedia dari mulai sensor GPS, accelerometer (sensor gerak), sensor suhu, sensor logam dan camera. Dengan tersedianya API tersebut, peluang pengembangan aplikasi jadi lebih beragam. Contohnya adalah aplikasi-aplikasi yang dibesut saat ADC, lomba yang di adakan google untuk developer android, seperti aplikasi yang memanfaatkan sensor camera untuk membaca barcode scanner (Aplikasinya Compare Anywhere). Tentunya hal ini belum bisa dilakukan di BB.
Bagaimana dengan IPhone? untuk developer, musti rogoh kocek cukup banyak. IPhone terlalu terikat dengan Apple. Coba bayangkan untuk pengembang, agar dapat mengerjakan aplikasi dia musti bayar iuran ke Apple agar dapat key nya, ini mah mafionso, meski harus di akui grafis di IPphone di luar biasa ciamik, yang tentu musti dibayar dengan harga yang bisa 2 hingga 3 kali harga android untuk harga hansetnya.
Add comment November 25, 2009
Service Interaction SLEE
Sesi terakhir training open cloud, sayangnya lupa bawa buku catatan. Ya udah blog dipake buat nyatet aja
Starting here :
Service Interaction SLEE
Why?
Operators are under pressure to bring new produscts to make faster, at reduduce cost
SIS FEsature
1. Can operater with ext IN or IMS Service
2. Build on JAIN SLEE, allowing
IS
Trigger
Failure HAndlre Triger –trigger prioruty 0128 o make sure will be execute last
SCP (Service Control POint)
OCS (Online Charging Service)
HLR (Home Location Register )
MSC (Mobile Switching Central)
SMSC (SMS Switching Central)
IDP (Initial Detection Point)
SCIM (Service Capability Interaction Manager )
OCS SCCP addresss
Composition Selectors
3 types
1 Constant value
2 Profile lookup
3 service logic SIS wil invoke a JAIN SLEE service which will determinethe composition to use
profile composition Selector
Macros
Reusable extension for use in composition and trigger
macros are define in XML
example a macro for checking whether an IDP is an originating trigger
Macro can reference to other macro
Extention Service
pre-invoke block is the sample of extention Service
Once a service composition has been selected the SIS can still evalutae
This can be SBB.
Resource AD Development
Connecting from SBB to External Protocol such as INAP Protocol,
FSM
Finite State Machine
Add comment November 16, 2009
Interceptor Dalam EJB
Bagaimana caranya jika sebelum atau dan sesudah satu method dapat menyiapkan atau melakukan sesuatu?
Bagaimana membuat class-class service yang kita lebih bersih dari hal2 diluar bisnis proses?
Jika rekan-rekan terbiasa dengan listener class dalam web aplikasi, seperti Session Listener, Request Listener atau Aplication Listener, maka cara kerja mereka sangat mirip jika tidak mau dikatakan sama. Method-method yang didefine sebagai callback akan diinvoke saat sesuatu terjadi, nah sesuatunnya ini tergantung callback yang mana atau apa dan siapa yang memanggilnya.
Dalam Statefull Session Bean (SFSB), Stateless Session (SLSB) , Message Driven Bean (MDB) atau bahkan Entity Bean, mereka semua memliki interceptor yang disebut callback. Contoh callbak yang hanya dimiliki oleh SFSB adalag @PrePassivate dan @PostActivate. Kedua Callback ini terkait dengan daur hidup dari SFSB yang akan dipassivate saat instance nya, tidak digunakan dan time out agar dapat digunakan lagi nanti oleh clientnnya dan tidak perlu menginstantiate yang baru.
Setiap method yang didefinisikan @PrePassivate diatas methodnya, maka method tersebut akan dipanggil sesaatsebelum SFB tersebut di Passivete. Hal yang bisa dilakukan dalam method tersebut contohnya adalah menyimpan state dari SFSB tersebut. Dan setiap method yang didefine @PostActivate diatas method tersebut akan diinvoke sesaat setelah object SFSB tersebut di activate lagi container. Yang mentrigger SFSB tersebut di activate adalah adanya client yang membutuhkan SFSB tersebut. hal yang bisa dilakukan didalam method tersebut contohnya adalah meretrieve state yang disimpan saat sebelum di passivate. Dalam SFSB juga ada @Remove yang jika dipanggil maka akan memakas container untuk menghancurkan Object SFSB tersebut.
Jika @Prepassivate dan @PostPassivate digunakan oleh SLSB, maka tidak akan berpengaruh apa-apa, karena pada prinsipnya daur hidup SLSB yang mengatur adalah EJB container.
Semua component EJB memiliki callback @PostConstruct dan @PreDetroy. Dari nama annotation sudah kelihatan kapanm mereka diinvoke oleh container. Method yang diannotate @PostContruct dipanggil oleh container sesaat setelah object component EJB tersebut diinstantiate dan sebelum method-method yang lain dipanggil. Ia didedikasikan dan mendapat kehormatan untuk dipanggil oleh container pertama kali, sebelum yang lainnya. Dan setiap method yang diannotate @PostDestroy akan dipanggil sesaat sebelum component tersebut didestory. Ia disiapkan sebegai saksi dalam eksekusi penghancuran hisupnya component EJB.
Khusus untuk component Entity Bean, mereka memiliki callback tambahan yang terkait dengan data persistent milik mereka. Method @PostLoad akan dipanggil sesaat setelah data dari persistent diload kedalam object yang di intance. Hal yang bisa dilakukan dalam method ini contohnya adalah mengubah data type dan mengkonversinya sehingga dapat diassign pada member variable yang diannotate @Transient.
Selain itu Entity Bean juga memiliki callback yang dapat ditebak kapan method tersebut akan dipanggil, yaitu;
@PrePersist, @PostPersist, @PreUpdate, @Postupdate , @PreRemove dan @PostRemove. Callback ini semua dapat digunakan untuk mencatat aktivitas yang terkait dengan table, misalnya mencatat siapa yang melakukan update satu data dan kapan terakhir diupdate, yang akan sangat penting untuk kepentingan audit.
Add comment May 12, 2009
Objective 3, Session Bean bagian 2
Bagi client, session object adalah non-persistent object yang mengimplement bisnis logic dalam server. Dengan kata lain sesion object logical extention bagi program client yang berjalan di dalam server. Session object tidak di share antara client satu dengan yang lain (jika clientnya lebih dari satu).
Sesuai namanya SFSB (Statefull Session Bean), mempertahan state-nya untuk sebuah session dan tidak akan di share yang berbeda dengan SLSB (Stateless Session Bean) yang disimpan dalam pool.
Setelah kita menyentuh bagaimana permukaan session bean dalam EJB pada bagian pertama, coba kita lebih dalam lagi pada bagian ini mengenai Lifecyclenya.
SFSB memiliki callback interceptor method PostConstruct, PreDestroy, PrePassivate, dan PostActivate. Ketiga lifecycle callback interceptor methods dapat digunakan oleh SFSB, sedangkan untuk SLSB PostConstruct dan PreDestroy, dan jikalaupun ada kedua callbacak interceptor method (PoastActivate dan PrePassivate) di SLSB, maka callback ini akan diabaikan.
Sekali lagiPrepassivate dan PostActivate khusus hanya untuk SFSB.!
sesuai namanya, method-method callback tersebut akan digunakan (invoked)
PostConstruct akan dipanggil sesaat setelah di buat objectnya dan sebelum ada bisnis method yang dipanggil.
PreDestroy akan dipanggil sesaat sebelum object tersebut diclaim oleh GC atau dihancurkan
PrePassivate dipanggil sesaat sebelum SFSB memasuki phase passive (ingat, yang memanage lifecycle SFSB adalah bean container)
dan PostActivate dipanggil sesaat setelah diaktifkan kembali dan sebelum method yang lainnya dipanggil.
Add comment February 18, 2009
Kebutuhan data pendukung pengambillan keputusan bisnis
Penggunaan IT pada setiap organisasi untuk mendukung jalannya operasionalnya adalah suatu hal yang tidak bisa dipungkiri, terutama organisasi-organisasi bisnis. Dari mulai toko kecil alfamart/idomart/ceriamart di pasar hingga gerai besar semacam Giant, Carrefour menggunakan aplikasi POST (Poin Of Sale Transaction). Dibidang airline dengan aplikasi reservasi, hingga bisnis support semacam loyalty program tidak lepas dari software untuk menjalankan bisnisnya. Implikasi dari adanya software-software yang bersifat data centric (aplikasi tersebut menyimpan data dan biasanya dalam database) adalah tumpukan data transaksi yang tidak informatif dan tidak penting bagi stakeholder alasannya karena stakeholder memerlukan informasi yang agregate dan menggambarkan kondisi organisasi bisnis saat ini yang memerlukan data tidak hanya dari satu sumber (satu aplikasi operasional) tapi sebisa mungkin dari hampir setiap departement/bagian organisasinya sehingga bisa dijadikan dasar untuk pengambilan keputusan.
Banyak jalan menuju Mekah, banyak cara untuk memberikan informasi bagi stakeholder diantaranya dengan mengandalkan reporting dari setiap aplikasi. Hanya saja tidak feasible karena stakeholder perlu menggabungkannya setiap report yang digenerate dari setiap software yang dimiliki organisasi tersebut. Cara yang paling feasible menurut saya adalah dengan membangun data warehouse.
Data warehouse adalah salah satu tahapan dalam penggunaan data yang ekstensive untuk mendapatkan keunggualan kompetitif yang sukar ditiru oleh organisasi lain. Ingat, saat suatu keunggulan mudah ditiru, maka keunggulan tersebut akan cepat menjadi komoditas dan tidak bisa dijadikan kekuatan dalam persaingan bisnis. Tahap setelah data warehouse tentunya adalah data mining.
Add comment February 10, 2009
Enviroment Setup EJB3 dengan JBOSS
Sebelum menyiapkan environment untuk coding, dipastikan JDK 1.5 sudah terinstall dan sudah ditambahkan path JAVA_HOME. Setiap web/aplication server akan mencari path JAVA_HOME ini. Selnajut dapat diikuti langkah-langkah selanjutnya.
Langkah-langkah untuk menyiapkan environtment untuk coding EJB 3 adalah sebagai berikut;
1. Siapkan Application Server yang akan digunakan, dalam kasus ini saya menggunakan JBOSS versi 4.0.5 dengan menggunakan jems-installer. Kemudian file jar tersebut dapat dieksekusi dengan command
C:\java -jar jems-installer-1.2.0.BETA3
Bagian penting saat install JBOSS adalah saat memilih profile, pilih EJB profile bukan yang lainnya.

2. Install IDE Eclipse, pada kasus ini saya menggunakan eclipse Release 3.2 dengan plugin eclipse jboss plugin. JBoss eclipse dapat didownload dari sini, Eclipse IDEnya sendiri dapat di download dari sini .
Referensi
http://java.boot.by/scbcd5-guide/index.html
Add comment February 9, 2009
Objective 3, Statefull Session Bean bagian 1
Dalam SCBCD, dituntut pengetahuan bagaimana sifat2 Statefull Session Bean (SFSB), life cycle dari SFSB dan callback dari interceptor.
Kapan dan bagaimana digunakan, bisa di baca ditutorial lain. Kita fokus pada SFSB itu sendiri bagaimana:
Saat Statefull Bean dieksekusi oleh pengguna nya (client), yang dipanggil adalah bisnis interface reference dari dari EJB Container oleh lookup JNDI,bukan object nya itu sendiri.
Dan berikut adalah interface contoh yang akan kita gunakan dan Session Bean mengimplement interface ini:
package by.iba.ejb;
import javax.ejb.Remote;
@Remote
public interface StatefulCalculator {
public double add(double a);
public double subtract(double a);
public double multiply(double a);
public double divide(double a);
public void clean();
public void turnOff();
}
Bisnis method,dalam hal ini Bean Calculator memiliki beberapa bisnis method yang dapat dipanggil oleh client,
add(double a); subtract(double a); multiply(double a); divide(double a);clean(); turnOff();
method ini sebelumnya di define di interface yang sudah diannotate @Remote atau @Lokal dan di over ride oleh bean dimana bisnis kita taruh.
Lebih lengkapnya sebagai berikut.
package by.iba.ejb;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.ejb.EJB;
import javax.ejb.Remove;
import javax.ejb.Stateful;
@Stateful
public class StatefulCalculatorBean implements StatefulCalculator {
@EJB private StatelessCalculator calculator;
double register = 0;
public double add(double a) {
register = calculator.add(register, a);
return register;
}
public double subtract(double a) {
register = calculator.subtract(register, a);
return register;
}
public double multiply(double a) {
register = calculator.multiply(register, a);
return register;
}
public double divide(double a) {
register = calculator.divide(register, a);
return register;
}
public void clean() {
register = 0;
}
@Remove
public void turnOff() {
System.out.println("[StatefulCalculatorBean] Good bye ! I gotta split !");
}
@SuppressWarnings("unused")
@PostConstruct
private void afterCreated() {
System.out.println("[StatefulCalculatorBean] PostConstruct callback !");
}
@SuppressWarnings("unused")
@PreDestroy
private void beforeRemoved() {
System.out.println("[StatefulCalculatorBean] PreDestroy callback !");
}
}
Dengan sebuah interface dan sebuah class yang telah diannotate seperti diatas, kita sudha bisa menggunakan dan mendeploy EJB componen tersebut dalam Aplictaion server yang telah kita sediakan. Untuk menguji apakah EJB SFSB kita dapat berjalan atau tidak, kita bisa menggunakan main class application seperti dibawah ini :
package by.iba.client;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.rmi.PortableRemoteObject;
import by.iba.ejb.StatelessCalculator;
public class CalculatorClient {
public static void main(String[] args) {
try {
Context jndiContext = new InitialContext();
Object ref = jndiContext.lookup("StatelessCalculatorBean/remote");
StatelessCalculator calc = (StatelessCalculator) PortableRemoteObject
.narrow(ref, StatelessCalculator.class);
System.out.println("4 + 3 = " + calc.add(4,3));
System.out.println("4 - 3 = " + calc.subtract(4,3));
System.out.println("4 * 3 = " + calc.multiply(4,3));
System.out.println("4 / 3 = " + calc.divide(4,3));
} catch (NamingException ne) {
ne.printStackTrace();
}
}
}
Reference
http://java.boot.by/scbcd5-guide/
Add comment February 6, 2009
