Welcome to Abdul Malik Ikhsan's Blog

Version Control menggunakan Bazaar

Posted in Teknologi, tips and tricks by samsonasik on June 20, 2009

Version control atau biasa kita sebut SCM (Source code Management) adalah management source ,dokumen, program, dan file komputer yang lain. Dengan adanya Version Control ini, segala perubahan akan dicatat dan diidentifikasikan dengan revision number, –akan sangat berguna untuk kerja tim, agar pekerjaan tidak tumpang tindih, dan untuk control revisi source–. Ada banyak Version control yang bisa kita download, antara lain: SVN, Git, Mercurial, Bazaar, dan lain-lain. Pada dokumentasi kali ini, kita akan coba mengupas tentang Bazaar,  Jika kita menggunakan ubuntu, kita bisa install dengan cara apt-get install bzr bzrtools , kalau yg lain, bisa download sendiri , nah, bagaimana cara mempergunakan tools ini ? Berikut langkah2 yang harus dilakukan :


1. Membuat repository

Direktori ini berisi file2 yang nantinya bisa dicloning oleh banyak user. Untuk lebih jelasnya, akan saya beri contoh sederhana :

a. Saya buat direktori /media/disk-1/repositories/documentation

b. Buat direktori di dalamnya bernama RepoDocumentation

c. Buat contoh file yang akan kita clone, misal RepoTest.java

class RepoTest {

public RepoTest() {

System.out.println(“object RepoTest terbentuk”);

}

public static void main(String args[]) {

new RepoTest();

}

}

d. Init repo:

e. Add file-file dalam direktori

f. Kalau ada file yg ditambahkan, berarti ada perubahan, maka kita harus commit perubahan tersebut agar bisa diclone jg oleh user lain :


2. Checkout

Untuk mengkloning file repository kita, maka kita harus mengkloning dengan cara checkout, atau bisa juga branch, untuk dokumentasi kali ini, saya akan mencoba memakarkan tentang checkout saja.

Misal, user A ingin kloning seluruh file  di folder repository Repocumentation di direktory /media/disk-1/workspace/A

Lalu, user B ingin kloning seluruh file  di folder repository Repocumentation di direktory /media/disk-1/workspace/B

3. Update

Ceritanya, user A, melakukan perubahan di file RepoTest.java

class RepoTest {

public RepoTest() {

System.out.println(“object RepoTest terbentuk”);

}

public void go()

{

System.out.println(“Start the Game”);

}

public static void main(String args[]) {

new RepoTest().go();

}

}

user menambahkan method go() dan menambahkan .go() setelah new RepoTest() , maka user A harus meng-commit file tersebut agar user B bisa mendapatkan file paling up to date.

Kemudian, user B bisa mengupdate perubahan tersebut (sebelumnya, bisa mengecek status up to date file):

maka, otomatis, user B telah mengupdate perubahan yg terjadi .

4. Konflik

Pada kasus di atas, tidak akan terjadi masalah karena user B mengupdate file dari perubahan user A tanpa melakukan perubahan terlebih dahulu. Akan tetapi, jika user B melakukan perubahan pula, dan user A melakukan commit file terlebih dahulu (jika beda line , maka akan saling melengkapi, jika pada line yang sama, maka bazaar akan membuat 3 versi file, yaitu file sebelum diubah (BASE), file setelah diubah user B (THIS), dan file yg telah dicommit oleh user A (OTHER)).

Contoh user A mengganti method go() menjadi method mulai() lalu melakukan commit, kemudian user B mengganti method go() menjadi method start() :

maka ketika user B, melakukan bzr up , akan tampil seperti berikut :

Lalu, setelah dicek, benar akan terjadi 3 file :

Nah, di sinilah waktu nya user A dan user B berkomunikasi, he..he.., setelah itu menentukan file mana yg benar, punya A, punya B, atau mau dibalikkan ke kondisi seperti semula :

anggap saja yg benar adalah file punya B, berarti kita harus copykan isi file yang THIS ke file yang diubah,setelah itu, kita tentukan kebenaran file dengan cara di resolve :

jangan lupa, harus dicommit lagi :

setelah itu, user A bisa mengupdate :

Advertisements

Laju Perahuku

Posted in puisi by samsonasik on June 11, 2009

Terdampar di sebuah pulau yang ramai
Tapi, ternyata yang terlihat cuma kamu
Apakah kau punya tanda cinta yang bisa menarikku
Atau benang merah yang tak kan bisa terpotong oleh waktu
Atau, taifun-mu yang menghempaskanku, sampai kamu?

Kolaborasi Flex dan Zend (Zend_Amf_Server)

Posted in Flex, Zend Framework by samsonasik on June 7, 2009

Kolaborasi Flex dengan zend bisa dengan berbagai cara, salah satunya kita bisa gunakan zend_amf sebagai jembatannya, zend_db sebagai library koneksi db nya. Berikut cara yg bisa kita lakukan dengan menggunakan zend_amf.
Pertama, kita siapkan dulu zend kita, sehingga tersusun seperti simulasi gambar berikut (tergantung documentroot masing2) :
— di sini, documentroot saya berada di /media/disk-1/web —

direktori config berisi file konfigurasi (terutama dengan database dan management environment. contoh isi file nya seperti berikut :

[production]
 database.adapter       = "PDO_MYSQL"
 database.params.host = "localhost"
 database.params.dbname = "dokumentasiflexzend"
 database.params.username = "root"
 database.params.password = ""

 [development : production]
 database.adapter       = "PDO_MYSQL"
 database.params.dbname = "dokumentasiflexzend"

 [testing : production]
 database.adapter       = "PDO_MYSQL"
 database.params.dbname = "dokumentasiflexzend"

direktori library berisi library zend 1.7.4

direktori models berisi model logic program, biasanya default nya mendefinisikan relasi table (walaupun sebenarnya bisa juga digunakan untuk kebutuhan logic yg lain)
contoh isi filenya : (ceritanya, kita punya table exampletable, field2nya id dan name)

fetchAll();
 } else {
 $fetch = $this->fetchAll("name like '%$keyword%'");
 }

return $fetch;
 }
 }
 ?>

direktori services , untuk koneksitas terhadap flex,  di sini saya buat contoh dua kelas, yakni ExampletableClass.php (pendefinisian field-field table) dan ExampletableService.php untuk penghubung antara models zend dan flex.
contoh source code ExampletableClass.php :


contoh source code ExampletableService.php

Exampletable = new Exampletable();
 }

public function getData($keyword=null)
 {
 $result = array();
 $fetch = $this->Exampletable->getAll($keyword);

foreach($fetch as $key=>$val)
 {
 $ExampletableObj = new ExampletableClass();
 $ExampletableObj->id = $val->id;
 $ExampletableObj->name = $val->name;

$result[] = $ExampletableObj;
 }
 return $result;
 }
 }
 ?>

File includer.php berisi source load konfigurasi :

database);
 Zend_Db_Table_Abstract::setDefaultAdapter($dbAdapter);
 $registry = Zend_Registry::getInstance();
 $registry->configuration = $configuration;
 $registry->dbAdapter     = $dbAdapter;
 $locale = new Zend_Locale('id');
 Zend_Registry::set('Zend_Locale', $locale);

?>

Nah, file index.php berisi source untuk memanggil zend_amf :

addDirectory('./services/');
 echo($server -> handle());

OK, Let’s go to Flex :
Pertama : Buat sebuah project flex :

Biasakan membuat project location tidak berada di documentroot kita, supaya aman. dan supaya load data cuma flex saja (tidak campur dengan zend).

Setelah itu , klik Next
maka akan tampil seperti berikut :

PERHATIKAN OUTPUT folder, jangan sampai menimpa aplikasi kita yang lain.
Klik Next dan Finish.
maka kita akan menjumpai direktori debugging seperti ini :

Langkah selanjutnya adalah membuat file konfigurasi berbentuk xml untuk compiler setting sehingga tampil seperti berikut :

contoh isi file service-config.xml sebagai berikut :


 
 
 
 
 
 
 

 *
 
 
 
 
 
 
 
 
 
 

Nah, sekarang, setting compilernya , dengan cara, klik kanan project kita, klik properties, pilih flex compiler, tambahkan -services “services-config.xml” :

klik OK

Let’s coding in flex :


 
 <!-- remote object untuk meremote service -->
 
 
 


 
 


 
 
 
 
 

Jika tampil seperti berikut, berarti kita sudah berhasil 🙂 :

Selamat mencoba .

mendapatkan url parameter dari servlet

Posted in Tutorial JSP, Tutorial Servlet by samsonasik on June 1, 2009

Pemanggilan url yang sering kita pakai pada framework2 php seperti CodeIgniter atau pun Zend ataupun framework php yang lain dapat kita gunakan pula di JSP, dengan servlet. misal, kita gunakan url parameter edit data :

<url-pattern>/detailbrg/kode/*</url-pattern>

Nah, cara panggil di servlet nya bisa seperti ini :

//————————————
response.setContentType(“text/html;charset=UTF-8”);
PrintWriter out = response.getWriter();
String[] spliturl = request.getRequestURL().toString().trim().split(“/”);

String kode = null;
for(int i=0;i