Monday, December 22, 2008

SDLC (System Development Life Cycle)

Kita coba belajar lagi tentang SDLC biar tidak ada step-step yang ketinggalan kalo kita mau membangun suatu sistem baru(istirahat dulu dari kerjaan yakkk.. refeshing sebentar:D)

Ada beberapa metode untuk pengembangan suatu sistem diantaranya : Traditional SDLC(System Development Life Cycle), Rapid Application Development(RAD), Prototyping, Joint Application Development (JAD), End-User Development(EUD), Outsourcing, Object-Oriented Development(OOD) dll

Traditional SDLC merupakan metode yang digunakan untuk mengembangkan suatu sistem। SDLC sendiri adalah framework untuk memanage proses pengembangan suatu sistem. Dengan mengacu pada metode SDLC ini diharapkan output yang dihasilkan merupakan sistem yang berkualitas tinggi yang dapat memenuhi/melebihi harapan customer dan sesuai dengan waktu dan biaya yang telah diperkirakan.

Tahapan-tahapan dari SDLC
1. PLANNING
- Mendefinisikan bisnis problem dan scope nya berdasar user requirement
- Mengidentifikasikan dan memastikan kelayakan dari project baik dari sisi ekonomi, organisasi, technical, resource dan jadwal
- Menentukan jadwal project secara detail beserta staff projectnya(resource management).
- Launching Project(pengumuman resmi)

2. ANALYSIS
- Mempelajari business proses dan struktur dari sistem yang didinginkan
- Membuat prototype berdasar user requirement
- Menetapkan prioritas dari requirement-requirement yang ada.
- Mengidentifikasikan masalah-masalah pada sistem yang telah ada dan mencari solusi yang selanjutnya digunakan sebagai perbaikan dari sistem yang telah berjalan saat ini.

3. DESIGN
- Mengkonversikan solusi yang disarankan ke dalam spesifikasi system
- Membuat desain arsitektur dari aplikasi
- Membuat desain user interface
- Membuat desain integrasi dari database ke aplikasi
- Membuat prototype dari desain secara detail
- Mebuat desain dan integrasinya dengan sistem control

4. IMPLEMENTATION
- Mengimplementasikan rancangan-rancangan logical ke dalam kegiatan sebenarnya dari sistem yang akan dibangun/dikembangkan
- Mengetest dan memverifikasi sistem yang dihasilkan dan memastikan bahwa semua modul berfungsi dengan baik dan sesuai dengan user requirement dengan cara menjalankan 1 life cycle dari proses. tidak hanya melakukan Unit Testing(Testing per unit)
- Konversi Data Lama ke sistem baru jika diperlukan
- Menginstall system baru dan memberi pelatihan pada user(user training) berdasar user manual yang telah dibuat

5. MAINTENANCE
- Menjaga sistem baru agar tetap berjalan dengan baik
- melakukan upgrade untuk meningkatkan kemampuan system beserta dokumen-dokumen yang berkaitan

Tuesday, December 16, 2008

Teknik Pengkabelan UTP

Komputer dapat berhubungan dengan komputer lain/jaringan lain karena adanya perlatan jaringan komputer yang disebut Network Interface, yang bisa berupa ethernet card maupun modem। sebelum menghubungkan perangkat tersebut harusnya kita tentuin dulu . koneksi tipe apa yang mau kita gunakan.

Teknik pengkabelan untuk mengkoneksikan perangkat kita ada 2 tipe

A. Tipe straight-through (Straight)
Tipe ini digunakan jika kita ingin menghubungkan komputer ke hub/switch/router

Konfigurasi kabel untuk tipe straight, Ujung A dan Ujung B mempunyai urutan sebagai berikut :
1. white-orange
2. orange
3. white-green
4. blue
5. white-blue
6. green
7. white-brown
8. brown

B. Tipe Crossover(Cross)
Tipe ini digunakan jika kita ingin menghubungkan Komputer ke komputer, hub ke hub atau Router ke router

Konfigurasi kabel untuk tipe cross, Ujung A mempunyai urutan sebagai berikut :
1. white-orange
2. orange
3. white-green
4. blue
5. white-blue
6. green
7. white-brown
8. brown

Konfigurasi kabel untuk tipe cross, Ujung B mempunyai urutan sebagai berikut :
1. white-green
2. green
3. white-orange
4. blue
5. white-blue
6. orange
7. white-brown
8. brown

Setelah kita tentuin tipe yang kita pilih, maka komponen-komponen yang harus kita siapin selanjutnya adalah :
1. Ethernet Card
Device ini harus diperiksa lagi, apa komputer yang kita pakai ethernet card nya on-board atau ngga.kalo nggak yach mestinya harus beli donk:)

2. Kabel UTP (Unshielded Twisted Pair)
Kabel ini murah koq ga mahal(wah...jd inget pas skripsi ya...kenangan tak terlupa:D, beli kabel ke pasar genteng, beli UTP sepanjang2nya, beli Crimping Tool, bikin kabel sendiri, bikin LAN sendiri)

3. Konektor RJ-45(Register Jack)
Konektor ini menghubungkan kabel UTP ke ethernet card

4. Crimping Tool
Alat ini seperti tang yang memasukkan bagian-bagian dari kabel UTP ke dalam pin2 di konektor RJ-45

5. LAN Tester
Kalo yang ini sifatnya optional sich..tanpa alat ini pun bisa koq.
LAN Tester ini mempunyai 8 pasang LED Indicator yang bs berkedip-kedip bergantian yang berfungsi untuk mengindikasikan kalo kabel2 yang dah kita rancang itu terkoneksi dengan baik.

Monday, November 17, 2008

Tidak Semua Header C di Windows Berlaku di linux lho ...

Tidak Semua Header C di Windows Berlaku di linux lho। Seperti header conio.h yg salah satunya dipakai untuk fungsi clrscr, getch misalnya, di GNU / linux tidak bisa dipakai ternyata ya?(wah payah neh gw ketahuan kalo mmg jarang pake C di linux hehehe, memang:D). dah beberapa tahun y dah ga pake c, pakenya hanya saat Tugas akhir di poltek and saat praktikum Mata kuliah Interfacing di ITS yang ngakses hardware mknya pake C kalo ga , ga kenal C kali:).

Daftar header turbo C apa aja sih yang bisa digunakan di linux?kita bisa lihat di /usr/include/ . Jadi jangan lupa yach..periksa lagi di /usr/include/ jika mau include kan macam2 header C. jadi kalo ada komentar "error: conio.h: No such file or directory" pas di compile program C nya jangan kelamaan.. langsung aja periksa /usr/include/. ada ga daftar header yang diinclude di program disana:)

Tuesday, November 11, 2008

Format Number di JAVA menggunakan DecimalFormat dan NumberFormat

Untuk membuat format number di java dapat digunakan DecimalFormat atau NumberFormat।Supaya tidak lupa aq tulis di blog saja ah.

esnips.com/doc/8614e892-0a92-437b-8e3b-574fad318fce/MyNumberFormat
====================================================================
package test1;

import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Locale;

public class MyNumberFormart {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

Double nilai = new Double(1234.6);

DecimalFormat gaPakaiTanda = new DecimalFormat("###,##0.00");
System.out.println("\nNilai (dengan format DecimalFormat(''###,##0.00'')) = " + gaPakaiTanda.format(nilai));

DecimalFormat pakaiTanda = new DecimalFormat("$###,##0.00");
System.out.println("\nNilai (dengan format DecimalFormat(''$###,##0.00'') =" + pakaiTanda.format(nilai));

NumberFormat instanceFormat = NumberFormat.getCurrencyInstance();
System.out.println("\nNilai (dengan NumberFormat.getCurrencyInstance() ) = " + instanceFormat.format(nilai));

NumberFormat dgFormat = NumberFormat.getInstance();
System.out.println("\nNilai (dengan NumberFormat.getInstance() ) = " +dgFormat.format(nilai));



Double dataPersen = new Double(0.35);
NumberFormat formatPersen;
String data = new String("");

formatPersen = NumberFormat.getPercentInstance();
data = formatPersen.format(dataPersen);
System.out.println("\nNilai Data dalam Format Persen = "+data);

}



}


====================================================================

ओउत्पुत:



Nilai (dengan format DecimalFormat(''###,##0.00'')) = 1,234.60

Nilai (dengan format DecimalFormat(''$###,##0.00'') =$1,234.60

Nilai (dengan NumberFormat.getCurrencyInstance() ) = $1,234.60

Nilai (dengan NumberFormat.getInstance() ) = 1,234.6

Nilai Data dalam Format Persen = 35%

Format Date di JAVA menggunakan SimpleDateFormat atau DateFormat

Untuk membuat format tanggal di java dapat digunakan SimpleDateFormat atau DateFormat।Supaya tidak lupa aq tulis di blog saja ah॥

esnips.com/doc/8614e892-0a92-437b-8e3b-574fad318fce/FormatTanggal
===========================================================================
package test1;

import java.text.DateFormat;
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;

public class FormatTanggal {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

String temp = new String("");
Date date = new Date();
System.out.println("Hari ini (tanpa format data) adalah : " +date);

Format myFormat = new SimpleDateFormat("yyyy.MM.dd G 'at' HH:mm:ss z");
temp = myFormat.format(date);
System.out.println("\n\nHari ini adalah : " +temp);

myFormat = new SimpleDateFormat("dd-MM-yyyy G 'at' HH:mm:ss z");
temp = myFormat.format(date);
System.out.println("\n\nHari ini adalah : " +temp);

myFormat = new SimpleDateFormat("EEE, MMM d, ''yy");
temp = myFormat.format(date);
System.out.println("\n\nHari ini adalah : " +temp);


myFormat = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");
temp = myFormat.format(date);
System.out.println("\n\nHari ini adalah : " +temp);

myFormat = new SimpleDateFormat("EEEE, d MMMM yyyy HH:mm:ss");
temp = myFormat.format(date);
System.out.println("\n\nHari ini adalah : " +temp);

myFormat = new SimpleDateFormat("dd/MM/yyyy");
temp = myFormat.format(date);
System.out.println("\n\nHari ini adalah : " +temp);

myFormat = new SimpleDateFormat("MM");
temp = myFormat.format(date);
System.out.println("\n\nSekarang Bulan ke : " +temp);

myFormat = new SimpleDateFormat("MMM");
temp = myFormat.format(date);
System.out.println("\n\nSekarang Bulan : " +temp);

myFormat = new SimpleDateFormat("dd");
temp = myFormat.format(date);
System.out.println("\n\nSekarang Hari : " +temp);

myFormat = new SimpleDateFormat("EEEE");
temp = myFormat.format(date);
System.out.println("\n\nSekarang Hari : " +temp);


myFormat = new SimpleDateFormat("h:mm a");
temp = myFormat.format(date);
System.out.println("\n\nHari ini adalah : " +temp);


temp = DateFormat.getDateInstance(DateFormat.SHORT).format(date);
System.out.println("\n\nHari ini (DateFormat.SHORT) adalah : " +temp);

temp = DateFormat.getDateInstance(DateFormat.LONG).format(date);
System.out.println("\n\nHari ini (DateFormat.LONG) adalah : " +temp);

temp = DateFormat.getDateInstance(DateFormat.MEDIUM).format(date);
System.out.println("\n\nHari ini (DateFormat.MEDIUM) adalah : " +temp);


}

}


============================================================
output

Hari ini (tanpa format data) adalah : Tue Nov 11 13:15:50 WIT 2008

Hari ini adalah : 2008.11.11 AD at 13:15:50 WIT

Hari ini adalah : 11-11-2008 AD at 13:15:50 WIT

Hari ini adalah : Tue, Nov 11, '08

Hari ini adalah : Tue, 11 Nov 2008 13:15:50 +0700

Hari ini adalah : Tuesday, 11 November 2008 13:15:50

Hari ini adalah : 11/11/2008

Sekarang Bulan ke : 11

Sekarang Bulan : Nov

Sekarang Hari : 11

Sekarang Hari : Tuesday

Hari ini adalah : 1:15 PM

Hari ini (DateFormat.SHORT) adalah : 11/11/08

Hari ini (DateFormat.LONG) adalah : November 11, 2008

Hari ini (DateFormat.MEDIUM) adalah : Nov 11, 2008

Friday, October 24, 2008

Bermain MouseEvent di JAVA

Kita akan memanfaatkan MouseEvent di Java untuk membuat mouseEntered dan mouseExited pada TextField. mouseEntered ketika mouse berada diatas posisi TextField and mouseExited ketika mouse keluar dari area TextField .

Coba kita buat program yang diberi nama "MyMouseEvent1.java". program ini berisi Label Command, Name, Age and Description. Jika mouse berada di atas posisi TextField Name maka label command akan tertulis "Please type your name" dan jika mouse berada diatas posisi TextField Age maka label command akan tertulis "Please type your Age". Saat mouse keluar dari name jika name diisi data maka data yang ada di name dan age akan ditampilkan description.Saat mouse keluar dari Age jika name diisi data yang ada di name dan age maka data akan ditampilkan description.


Download source :
esnips.com/doc/6f73d79d-9a06-4707-9a8d-d4b42ed52188/MyMouseEvent1

==========================================================
package test1;

import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Label;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.Insets;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;


import javax.swing.JFrame;

public class MyMouseEvent1 extends JFrame{

/**
* @param args
*/
private Label lblCommand = null;
private Label lblName = null;
private TextField txfName = null;
private Label lblAge = null;
private TextField txfAge = null;
private Label lblDescription = null;
private TextArea txaDescription = null;

public MyMouseEvent1() {
super("My Title");
initialize();
}

public void initialize(){

int y = 0;
GridBagConstraints gbcLblCommand = new GridBagConstraints();
gbcLblCommand.gridx = 1;
gbcLblCommand.gridy = y;
gbcLblCommand.anchor = GridBagConstraints.WEST;
gbcLblCommand.fill = GridBagConstraints.HORIZONTAL;
gbcLblCommand.insets = new Insets(5,10,0,10);
lblCommand = new Label();
lblCommand.setText("");

y++;
GridBagConstraints gbcLblName = new GridBagConstraints();
gbcLblName.gridx = 0;
gbcLblName.gridy = y;
gbcLblName.anchor = GridBagConstraints.WEST;
gbcLblName.fill = GridBagConstraints.HORIZONTAL;
lblName = new Label();
lblName.setText("Name");
GridBagConstraints gbcTxfName = new GridBagConstraints();
gbcTxfName.gridx = 1;
gbcTxfName.gridy = y;
gbcTxfName.anchor = GridBagConstraints.WEST;
gbcTxfName.insets = new Insets(5,10,0,10);

y++;
GridBagConstraints gbcLblAge = new GridBagConstraints();
gbcLblAge.gridx = 0;
gbcLblAge.gridy = y;
gbcLblAge.anchor = GridBagConstraints.WEST;
gbcLblAge.fill = GridBagConstraints.HORIZONTAL;
lblAge = new Label();
lblAge.setText("Age");
GridBagConstraints gbcTxfAge = new GridBagConstraints();
gbcTxfAge.gridx = 1;
gbcTxfAge.gridy = y;
gbcTxfAge.anchor = GridBagConstraints.WEST;
gbcTxfAge.insets = new Insets(5,10,0,10);

y++;
GridBagConstraints gbcLblDescription = new GridBagConstraints();
gbcLblDescription.gridx = 0;
gbcLblDescription.gridy = y;
gbcLblDescription.anchor = GridBagConstraints.WEST;
gbcLblDescription.fill = GridBagConstraints.HORIZONTAL;
lblDescription = new Label();
lblDescription.setText("description");
GridBagConstraints gbcTxaDescription = new GridBagConstraints();
gbcTxaDescription.gridx = 1;
gbcTxaDescription.gridy = y;
gbcTxaDescription.anchor = GridBagConstraints.WEST;
gbcTxaDescription.insets = new Insets(5,10,0,10);

this.setLayout(new GridBagLayout());
this.setSize(new Dimension(695, 498));
this.add(lblCommand, gbcLblCommand);
this.add(lblName, gbcLblName);
this.add(getTxfName(), gbcTxfName);
this.add(lblAge, gbcLblAge);
this.add(getTxtAge(), gbcTxfAge);
this.add(lblDescription, gbcLblDescription);
this.add(getTxaDescription(), gbcTxaDescription);


}

private TextField getTxfName() {
if (txfName == null) {
txfName = new TextField();
txfName.setColumns(30);
txfName.setName("name");
txfName.addMouseListener(new MouseListener(){
public void mouseClicked(MouseEvent e) {

}
public void mouseEntered(MouseEvent e) {
lblCommand.setText("Please type your name");
}
public void mousePressed(MouseEvent e) {

}
public void mouseReleased(MouseEvent e) {

}
public void mouseExited(MouseEvent e) {
if ((!txfName.getText().equals("")) && (!txfAge.getText().equals("")) ){
txaDescription.setText("Name : "+txfName.getText()+" ; "+"Age : "+txfAge.getText());
}
else if (!txfName.getText().equals("")){
txaDescription.setText("Name : "+txfName.getText());
}
else if (!txfAge.getText().equals("")){
txaDescription.setText("Age : "+txfAge.getText());
}
}

}

);


}
return txfName;
}

private TextField getTxtAge() {
if (txfAge == null) {
txfAge = new TextField();
txfAge.setColumns(10);
txfAge.setName("age");
txfAge.addMouseListener(new MouseListener(){
public void mouseClicked(MouseEvent e) {

}
public void mouseEntered(MouseEvent e) {
lblCommand.setText("Please type your Age");
}
public void mousePressed(MouseEvent e) {

}
public void mouseReleased(MouseEvent e) {

}
public void mouseExited(MouseEvent e) {
if ((!txfName.getText().equals("")) && (!txfAge.getText().equals("")) ){
txaDescription.setText("Name : "+txfName.getText()+" ; "+"Age : "+txfAge.getText());
}
else if (!txfName.getText().equals("")){
txaDescription.setText("Name : "+txfName.getText());
}
else if (!txfAge.getText().equals("")){
txaDescription.setText("Age : "+txfAge.getText());
}
}

}
);
}
return txfAge;
}

private TextArea getTxaDescription() {
if (txaDescription == null) {
txaDescription = new TextArea();
txaDescription.setName("addRemark");
txaDescription .setRows(4);
txaDescription.setColumns(40);
txaDescription.setEditable(false);
}
return txaDescription;
}

}


==========================================================

Thursday, October 23, 2008

Apa beda SQL Inner Join, Left Outer Join, Right Outer Join?

Mungkin kedengarannya lucu ya pertanyaan diatas(Hari gene masih binun ttg SQL Join)? tp mmg kalo ga sering pake kita bisa lupa prinsip tentang SQL join koq.Wajar...manusiawi:))
Selagi belum ada kerjaan yg di assign ke aq, sambil nunggu JIRA-nya diisi ama mas paddy bisa belajar n review2 hehehe
Sekarang mari kita coba mengingat-ingat lagi pelajaran SQl ini :
disini qta buat dulu 2 tabel yaitu
- tabel area, dengan 3 buah field : area_id, nama_area, luas_area
- tabel penduduk, dengan field 3 buah field : penduduk_id, nama_penduduk, area_id

kedua tabel diatas diilustrasikan dengan beberapa data sebagai berikut :

TABEL AREA
=====================================================
Area_ID || Nama_Area || Luas_Area
=====================================================
ARS01 Surabaya 1000
ARJ01 Jakarta 2000
ARY09 Yogya 4000
ARS02 Solo 3000
ARK01 Kediri null



TABEL PENDUDUK
=====================================================
Penduduk_ID || Nama_Penduduk || Area_ID
=====================================================
PDS01 Susanna ARS01
PDJ01 Jocki Hendry null
PDA01 Asrina Febyanti ARJ01
PDA02 Abi Anwari ARY01


I. Inner Join / Join :
Operasi Join tipe ini akan hanya menampilkan tabel sisi kiri yang datanya sama dengan data di pasangan joinnya yg disisi kanan.

dengan script sql berikut :

select d.Area_id, d.nama_area, d.luas_area, p.penduduk_id, p.nama_penduduk from area d
inner join penduduk p on (d.area_id=p.area_id);

script diatas ekivalen dengan script dibawah ini :

select d.Area_id, d.nama_area, d.luas_area, p.penduduk_id, p.nama_penduduk from penduduk p
inner join area d on (d.area_id=p.area_id);

akan menghasilkan :

AREA_ID NAMA_AREA LUAS_AREA PENDUDUK_ID NAMA_PENDUDUK
------- -------------------- ---------------------- ----------- --------------------
ARS01 Surabaya 1000 PDS01 Susanna
ARJ01 Jakarta 2000 PDA01 Asrina Febyanti

2 rows selected


II. Left Outer Join / Left Join :
Operasi Join tipe ini akan menampilkan semua isi tabel sisi kiri, walaupun data di pasangan joinnya yg disisi kanan nilainya tidak sama ataupun bernilai null.


dengan script sql berikut (Note => tabel sisi kiri : area; tabel sisi kanan : penduduk) :

select d.Area_id, d.nama_area, d.luas_area, p.penduduk_id, p.nama_penduduk from area d
left outer join penduduk p on (d.area_id=p.area_id);

akan menghasilkan :

AREA_ID NAMA_AREA LUAS_AREA PENDUDUK_ID NAMA_PENDUDUK
------- -------------------- ---------------------- ----------- --------------------
ARS01 Surabaya 1000 PDS01 Susanna
ARJ01 Jakarta 2000 PDA01 Asrina Febyanti
ARY09 Yogya 4000
ARS02 Solo 3000
ARK01 Kediri

5 rows selected

dengan script sql berikut (Note => tabel sisi kiri : penduduk; tabel sisi kanan : area) :

select d.Area_id, d.nama_area, d.luas_area, p.penduduk_id, p.nama_penduduk from penduduk p
left outer join area d on (d.area_id=p.area_id);

akan menghasilkan :

AREA_ID NAMA_AREA LUAS_AREA PENDUDUK_ID NAMA_PENDUDUK
------- -------------------- ---------------------- ----------- --------------------
ARS01 Surabaya 1000 PDS01 Susanna
PDJ01 Jocki Henry
ARJ01 Jakarta 2000 PDA01 Asrina Febyanti
PDA02 Abi Anwari

4 rows selected


III. Right Outer Join / Right Join :
Operasi Join tipe ini akan menampilkan semua isi tabel sisi Kanan, walaupun data di pasangan joinnya yg disisi kiri nilainya tidak sama ataupun bernilai null.

dengan script sql berikut (Note => tabel sisi kiri : area; tabel sisi kanan : penduduk) :

select d.Area_id, d.nama_area, d.luas_area, p.penduduk_id, p.nama_penduduk from area d
Right outer join penduduk p on (d.area_id=p.area_id);

akan menghasilkan :

AREA_ID NAMA_AREA LUAS_AREA PENDUDUK_ID NAMA_PENDUDUK
------- -------------------- ---------------------- ----------- --------------------
ARS01 Surabaya 1000 PDS01 Susanna
PDJ01 Jocki Henry
ARJ01 Jakarta 2000 PDA01 Asrina Febyanti
PDA02 Abi Anwari

4 rows selected


dengan script sql berikut (Note => tabel sisi kiri : penduduk; tabel sisi kanan : area) :

select d.Area_id, d.nama_area, d.luas_area, p.penduduk_id, p.nama_penduduk from penduduk p
Right outer join area d on (d.area_id=p.area_id);

akan menghasilkan :

AREA_ID NAMA_AREA LUAS_AREA PENDUDUK_ID NAMA_PENDUDUK
------- -------------------- ---------------------- ----------- --------------------
ARS01 Surabaya 1000 PDS01 Susanna
ARJ01 Jakarta 2000 PDA01 Asrina Febyanti
ARY09 Yogya 4000
ARS02 Solo 3000
ARK01 Kediri

5 rows selected


IV. Cross Join :
Operasi Join tipe ini akan menampilkan semua isi tabel sisi Kiri akan memiliki pasangan semua data disisi kanan.
Banyaknya Record Cross Join = jumlah record tabel pertama x jumlah record tabel kedua

dengan script sql berikut :

select d.Area_id, d.nama_area, d.luas_area, p.penduduk_id, p.nama_penduduk from area d
cross JOIN penduduk p

akan menghasilkan :

AREA_ID NAMA_AREA LUAS_AREA PENDUDUK_ID NAMA_PENDUDUK
------- -------------------- ---------------------- ----------- --------------------
ARS01 Surabaya 1000 PDS01 Susanna
ARJ01 Jakarta 2000 PDS01 Susanna
ARS02 Solo 3000 PDS01 Susanna
ARY09 Yogya 4000 PDS01 Susanna
ARK01 Kediri PDS01 Susanna
ARS01 Surabaya 1000 PDJ01 Jocki Henry
ARJ01 Jakarta 2000 PDJ01 Jocki Henry
ARS02 Solo 3000 PDJ01 Jocki Henry
ARY09 Yogya 4000 PDJ01 Jocki Henry
ARK01 Kediri PDJ01 Jocki Henry
ARS01 Surabaya 1000 PDA01 Asrina Febyanti
ARJ01 Jakarta 2000 PDA01 Asrina Febyanti
ARS02 Solo 3000 PDA01 Asrina Febyanti
ARY09 Yogya 4000 PDA01 Asrina Febyanti
ARK01 Kediri PDA01 Asrina Febyanti
ARS01 Surabaya 1000 PDA02 Abi Anwari
ARJ01 Jakarta 2000 PDA02 Abi Anwari
ARS02 Solo 3000 PDA02 Abi Anwari
ARY09 Yogya 4000 PDA02 Abi Anwari
ARK01 Kediri PDA02 Abi Anwari

20 rows selected


script diatas ekivalen dengan script dibawah ini :

select * from area d, penduduk p;


V. Full Outer Join / Full Join :
Operasi Join tipe ini akan menampilkan semua isi tabel sisi kiri, walaupun data di pasangan joinnya yg disisi kanan nilainya null.dan sebaliknya.

dengan script sql berikut :

select d.Area_id, d.nama_area, d.luas_area, p.penduduk_id, p.nama_penduduk from area d
full join penduduk p on (d.area_id=p.area_id);

akan menghasilkan :

AREA_ID NAMA_AREA LUAS_AREA PENDUDUK_ID NAMA_PENDUDUK
------- -------------------- ---------------------- ----------- --------------------
ARS01 Surabaya 1000 PDS01 Susanna
ARJ01 Jakarta 2000 PDA01 Asrina Febyanti
ARY09 Yogya 4000
ARS02 Solo 3000
ARK01 Kediri
PDJ01 Jocki Henry
PDA02 Abi Anwari

7 rows selected

dengan script sql berikut :

select d.Area_id, d.nama_area, d.luas_area, p.penduduk_id, p.nama_penduduk from penduduk p
full join area d on (d.area_id=p.area_id);

akan menghasilkan :

AREA_ID NAMA_AREA LUAS_AREA PENDUDUK_ID NAMA_PENDUDUK
------- -------------------- ---------------------- ----------- --------------------
ARS01 Surabaya 1000 PDS01 Susanna
PDJ01 Jocki Henry
ARJ01 Jakarta 2000 PDA01 Asrina Febyanti
PDA02 Abi Anwari
ARY09 Yogya 4000
ARS02 Solo 3000
ARK01 Kediri

7 rows selected



VI. Lain-lain
Kadang ada yang terbiasa/lebih suka dengan menggunakan left outer join untuk menghasilkan data seperti yang dihasilkan perintah di inner join. bisa juga sich. caranya filter data sisi kanan yang bernilai null.

dengan script sql berikut :

select d.Area_id, d.nama_area, d.luas_area, p.penduduk_id, p.nama_penduduk from area d
left outer join penduduk p on (d.area_id=p.area_id)
where p.area_id is not null;

akan menghasilkan :

AREA_ID NAMA_AREA LUAS_AREA PENDUDUK_ID NAMA_PENDUDUK
------- -------------------- ---------------------- ----------- --------------------
ARS01 Surabaya 1000 PDS01 Susanna
ARJ01 Jakarta 2000 PDA01 Asrina Febyanti

2 rows selected

atau ada yang suka pake right outer join juga bisa lho.

scriptnya sebagai berikut

select d.Area_id, d.nama_area, d.luas_area, p.penduduk_id, p.nama_penduduk from area d
Right outer join penduduk p on (d.area_id=p.area_id)
where d.area_id is not null;

akan menghasilkan :

AREA_ID NAMA_AREA LUAS_AREA PENDUDUK_ID NAMA_PENDUDUK
------- -------------------- ---------------------- ----------- --------------------
ARS01 Surabaya 1000 PDS01 Susanna
ARJ01 Jakarta 2000 PDA01 Asrina Febyanti

2 rows selected

Tuesday, October 21, 2008

Bermain FocusEvent di Java

Kita akan memanfaatkan FocusEvent di Java untuk membuat focusGained dan FocusLost pada TextField. FocusGained seperti onKeyDown and FocusLost seperti OnExit di Delphi kali y:).

Coba kita buat program yang diberi nama "MyFocusLostFocusGain1.java". program ini berisi Label Command, Name, Age and Description. Jika onKeydown di Name maka label command akan tertulis "Please type your name" dan jika onKeydown di Age maka label command akan tertulis "Please type your Age". Saat mouse keluar dari name jika name diisi data maka data yang ada di name dan age akan ditampilkan description.Saat mouse keluar dari Age jika name diisi data yang ada di name dan age maka data akan ditampilkan description.


Download source :
www.esnips.com/doc/f6d77178-b25f-4a2f-808d-8aaf71b87910/MyFocusLostFocusGain1
=============================================================================
package test1;

import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Label;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.Insets;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;


import javax.swing.JFrame;

public class MyFocusLostFocusGain1 extends JFrame{

/**
* @param args
*/
private Label lblCommand = null;
private Label lblName = null;
private TextField txfName = null;
private Label lblAge = null;
private TextField txfAge = null;
private Label lblDescription = null;
private TextArea txaDescription = null;

public MyFocusLostFocusGain1() {
super("My Title");
initialize();
}

public void initialize(){

int y = 0;
GridBagConstraints gbcLblCommand = new GridBagConstraints();
gbcLblCommand.gridx = 1;
gbcLblCommand.gridy = y;
gbcLblCommand.anchor = GridBagConstraints.WEST;
gbcLblCommand.fill = GridBagConstraints.HORIZONTAL;
gbcLblCommand.insets = new Insets(5,10,0,10);
lblCommand = new Label();
lblCommand.setText("");

y++;
GridBagConstraints gbcLblName = new GridBagConstraints();
gbcLblName.gridx = 0;
gbcLblName.gridy = y;
gbcLblName.anchor = GridBagConstraints.WEST;
gbcLblName.fill = GridBagConstraints.HORIZONTAL;
lblName = new Label();
lblName.setText("Name");
GridBagConstraints gbcTxfName = new GridBagConstraints();
gbcTxfName.gridx = 1;
gbcTxfName.gridy = y;
gbcTxfName.anchor = GridBagConstraints.WEST;
gbcTxfName.insets = new Insets(5,10,0,10);

y++;
GridBagConstraints gbcLblAge = new GridBagConstraints();
gbcLblAge.gridx = 0;
gbcLblAge.gridy = y;
gbcLblAge.anchor = GridBagConstraints.WEST;
gbcLblAge.fill = GridBagConstraints.HORIZONTAL;
lblAge = new Label();
lblAge.setText("Age");
GridBagConstraints gbcTxfAge = new GridBagConstraints();
gbcTxfAge.gridx = 1;
gbcTxfAge.gridy = y;
gbcTxfAge.anchor = GridBagConstraints.WEST;
gbcTxfAge.insets = new Insets(5,10,0,10);

y++;
GridBagConstraints gbcLblDescription = new GridBagConstraints();
gbcLblDescription.gridx = 0;
gbcLblDescription.gridy = y;
gbcLblDescription.anchor = GridBagConstraints.WEST;
gbcLblDescription.fill = GridBagConstraints.HORIZONTAL;
lblDescription = new Label();
lblDescription.setText("description");
GridBagConstraints gbcTxaDescription = new GridBagConstraints();
gbcTxaDescription.gridx = 1;
gbcTxaDescription.gridy = y;
gbcTxaDescription.anchor = GridBagConstraints.WEST;
gbcTxaDescription.insets = new Insets(5,10,0,10);

this.setLayout(new GridBagLayout());
this.setSize(new Dimension(695, 498));
this.add(lblCommand, gbcLblCommand);
this.add(lblName, gbcLblName);
this.add(getTxfName(), gbcTxfName);
this.add(lblAge, gbcLblAge);
this.add(getTxtAge(), gbcTxfAge);
this.add(lblDescription, gbcLblDescription);
this.add(getTxaDescription(), gbcTxaDescription);


}

private TextField getTxfName() {
if (txfName == null) {
txfName = new TextField();
txfName.setColumns(30);
txfName.setName("name");
txfName.addFocusListener(new FocusListener() {
public void focusGained(FocusEvent feLost) {
lblCommand.setText("Please type your name");

}

public void focusLost(FocusEvent feGain){
if ((!txfName.getText().equals("")) && (!txfAge.getText().equals("")) ){
txaDescription.setText("Name : "+txfName.getText()+" ; "+"Age : "+txfAge.getText());
}
else if (!txfName.getText().equals("")){
txaDescription.setText("Name : "+txfName.getText());
}
else if (!txfAge.getText().equals("")){
txaDescription.setText("Age : "+txfAge.getText());
}
}
}
);

}
return txfName;
}

private TextField getTxtAge() {
if (txfAge == null) {
txfAge = new TextField();
txfAge.setColumns(10);
txfAge.setName("age");
txfAge.addFocusListener(new FocusListener() {
public void focusGained(FocusEvent feLost) {
lblCommand.setText("Please type your Age");

}

public void focusLost(FocusEvent feGain){
if ((!txfName.getText().equals("")) && (!txfAge.getText().equals("")) ){
txaDescription.setText("Name : "+txfName.getText()+" ; "+"Age : "+txfAge.getText());
}
else if (!txfName.getText().equals("")){
txaDescription.setText("Name : "+txfName.getText());
}
else if (!txfAge.getText().equals("")){
txaDescription.setText("Age : "+txfAge.getText());
}
}
}
);

}
return txfAge;
}

private TextArea getTxaDescription() {
if (txaDescription == null) {
txaDescription = new TextArea();
txaDescription.setName("addRemark");
txaDescription .setRows(4);
txaDescription.setColumns(40);
txaDescription.setEditable(false);
}
return txaDescription;
}



}

=============================================================================

atau

http://www.esnips.com/doc/3e5e58c6-d1c6-44e6-ab97-b7bf09db5955/MyFocusLostFocusGain2
=============================================================================

package test1;

import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Label;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.Insets;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;


import javax.swing.JFrame;

public class MyFocusLostFocusGain2 extends JFrame implements FocusListener{

/**
* @param args
*/
private Label lblCommand = null;
private Label lblName = null;
private TextField txfName = null;
private Label lblAge = null;
private TextField txfAge = null;
private Label lblDescription = null;
private TextArea txaDescription = null;

public MyFocusLostFocusGain2() {
super("My Title");
initialize();
}

public void initialize(){

int y = 0;
GridBagConstraints gbcLblCommand = new GridBagConstraints();
gbcLblCommand.gridx = 1;
gbcLblCommand.gridy = y;
gbcLblCommand.anchor = GridBagConstraints.WEST;
gbcLblCommand.fill = GridBagConstraints.HORIZONTAL;
gbcLblCommand.insets = new Insets(5,10,0,10);
lblCommand = new Label();
lblCommand.setText("");

y++;
GridBagConstraints gbcLblName = new GridBagConstraints();
gbcLblName.gridx = 0;
gbcLblName.gridy = y;
gbcLblName.anchor = GridBagConstraints.WEST;
gbcLblName.fill = GridBagConstraints.HORIZONTAL;
lblName = new Label();
lblName.setText("Name");
GridBagConstraints gbcTxfName = new GridBagConstraints();
gbcTxfName.gridx = 1;
gbcTxfName.gridy = y;
gbcTxfName.anchor = GridBagConstraints.WEST;
gbcTxfName.insets = new Insets(5,10,0,10);

y++;
GridBagConstraints gbcLblAge = new GridBagConstraints();
gbcLblAge.gridx = 0;
gbcLblAge.gridy = y;
gbcLblAge.anchor = GridBagConstraints.WEST;
gbcLblAge.fill = GridBagConstraints.HORIZONTAL;
lblAge = new Label();
lblAge.setText("Age");
GridBagConstraints gbcTxfAge = new GridBagConstraints();
gbcTxfAge.gridx = 1;
gbcTxfAge.gridy = y;
gbcTxfAge.anchor = GridBagConstraints.WEST;
gbcTxfAge.insets = new Insets(5,10,0,10);

y++;
GridBagConstraints gbcLblDescription = new GridBagConstraints();
gbcLblDescription.gridx = 0;
gbcLblDescription.gridy = y;
gbcLblDescription.anchor = GridBagConstraints.WEST;
gbcLblDescription.fill = GridBagConstraints.HORIZONTAL;
lblDescription = new Label();
lblDescription.setText("description");
GridBagConstraints gbcTxaDescription = new GridBagConstraints();
gbcTxaDescription.gridx = 1;
gbcTxaDescription.gridy = y;
gbcTxaDescription.anchor = GridBagConstraints.WEST;
gbcTxaDescription.insets = new Insets(5,10,0,10);

this.setLayout(new GridBagLayout());
this.setSize(new Dimension(695, 498));
this.add(lblCommand, gbcLblCommand);
this.add(lblName, gbcLblName);
this.add(getTxfName(), gbcTxfName);
this.add(lblAge, gbcLblAge);
this.add(getTxtAge(), gbcTxfAge);
this.add(lblDescription, gbcLblDescription);
this.add(getTxaDescription(), gbcTxaDescription);


}

private TextField getTxfName() {
if (txfName == null) {
txfName = new TextField();
txfName.setColumns(30);
txfName.setName("name");
txfName.addFocusListener(this);

}
return txfName;
}

private TextField getTxtAge() {
if (txfAge == null) {
txfAge = new TextField();
txfAge.setColumns(10);
txfAge.setName("age");
txfAge.addFocusListener(this);

}
return txfAge;
}

private TextArea getTxaDescription() {
if (txaDescription == null) {
txaDescription = new TextArea();
txaDescription.setName("addRemark");
txaDescription .setRows(4);
txaDescription.setColumns(40);
txaDescription.setEditable(false);
}
return txaDescription;
}


public void focusGained(FocusEvent feLost) {
if (feLost.getSource() == txfName) {
lblCommand.setText("Please type your name");
}
else if (feLost.getSource() == txfAge){
lblCommand.setText("Please type your Age");
}

}

public void focusLost(FocusEvent feGain){

if ((feGain.getSource() == txfName ) ||(feGain.getSource() == txfAge)) {
if ((!txfName.getText().equals("")) && (!txfAge.getText().equals("")) ){
txaDescription.setText("Name : "+txfName.getText()+" ; "+"Age : "+txfAge.getText());
}
else if (!txfName.getText().equals("")){
txaDescription.setText("Name : "+txfName.getText());
}
else if (!txfAge.getText().equals("")){
txaDescription.setText("Age : "+txfAge.getText());
}

}

}


}

Bermain dengan Gridbagconstraint di java

Property yang ada di class Gridbagconstraint antara lain :
- gridx -> digunakan untuk menentukan posisi x dr komponen
- gridy -> digunakan untuk menentukan posisi y dr komponen
- anchor -> digunakan jika komponen lebih kecil dari display area
- insets -> digunakan untuk menentukan external padding dari komponen, minimum space antara komponen dan ujung dari display area
- gridheight -> digunakan untuk menentukan jumlah sel di suatu kolom untuk display area komponen
- gridwidth -> digunakan untuk menentukan jumlah sel di baris untuk display area komponen

class Gridbagconstraint ini kita coba untuk di test di program yang kita beri nama "MyGridBagConstraints1.java" sbb :

Download Source :
esnips.com/doc/d4d4254d-46a8-4e8e-9f50-8ee70c7e8b17/MyGridBagConstraints1
=================================================================================================
package test1;

import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Label;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.Insets;


import javax.swing.JFrame;

public class MyGridBagConstraints1 extends JFrame{

/**
* @param args
*/
private Label lblName = null;
private TextField txfName = null;
private Label lblAddress = null;
private TextField txfAddress = null;
private Label lblAge = null;
private TextField txfAge = null;
private Label lblWeight = null;
private TextField txfWeight = null;
private Label lblDescription = null;
private TextArea txaDescription = null;
private Panel pnlWeightAge = null;

public MyGridBagConstraints1() {
super("My Title");
initialize();
}

public void initialize(){

GridBagConstraints gbcLblName = new GridBagConstraints();
gbcLblName.gridx = 0;
gbcLblName.gridy = 1;
gbcLblName.anchor = GridBagConstraints.WEST;
gbcLblName.weighty = 0.1;
lblName = new Label();
lblName.setText("Name");
GridBagConstraints gbcTxfName = new GridBagConstraints();
gbcTxfName.gridx = 1;
gbcTxfName.gridy = 1;
gbcTxfName.anchor = GridBagConstraints.WEST;
gbcTxfName.insets = new Insets(0,10,0,5);
gbcTxfName.weightx = 0.1;

GridBagConstraints gbcLblAddress = new GridBagConstraints();
gbcLblAddress.gridx = 0;
gbcLblAddress.gridy = 2;
gbcLblAddress.anchor = GridBagConstraints.WEST;
gbcLblAddress.weighty = 0.1;
lblAddress = new Label();
lblAddress.setText("Address");
GridBagConstraints gbcTxfAddress = new GridBagConstraints();
gbcTxfAddress.gridx = 1;
gbcTxfAddress.gridy = 2;
gbcTxfAddress.anchor = GridBagConstraints.WEST;
gbcTxfAddress.insets = new Insets(0,10,0,5);
gbcTxfAddress.weightx = 0.1;

GridBagConstraints gbcLblAge = new GridBagConstraints();
gbcLblAge.gridx = 0;
gbcLblAge.gridy = 3;
gbcLblAge.anchor = GridBagConstraints.WEST;
gbcLblAge.weighty = 0.1;
lblAge = new Label();
lblAge.setText("Age");
GridBagConstraints gbcPnlWeightAge = new GridBagConstraints();
gbcPnlWeightAge.gridx = 1;
gbcPnlWeightAge.gridy = 3;
gbcPnlWeightAge.anchor = GridBagConstraints.WEST;
gbcPnlWeightAge.insets = new Insets(0,10,0,5);
gbcPnlWeightAge.weighty = 0.1;

GridBagConstraints gbcLblDescription = new GridBagConstraints();
gbcLblDescription.gridx = 0;
gbcLblDescription.gridy = 4;
gbcLblDescription.anchor = GridBagConstraints.WEST;
gbcLblDescription.weighty = 0.1;
lblDescription = new Label();
lblDescription.setText("description");
GridBagConstraints gbcTxaDescription = new GridBagConstraints();
gbcTxaDescription.gridx = 1;
gbcTxaDescription.gridy = 4;
gbcTxaDescription.anchor = GridBagConstraints.WEST;
gbcTxaDescription.insets = new Insets(0,10,0,5);
gbcTxaDescription.weightx = 0.1;

this.setLayout(new GridBagLayout());
this.setSize(new Dimension(695, 300));
this.add(lblName, gbcLblName);
this.add(getTxfName(), gbcTxfName);
this.add(lblAddress, gbcLblAddress);
this.add(getTxtAddress(), gbcTxfAddress);
this.add(lblAge, gbcLblAge);
this.add(getPnlWeightAge() , gbcPnlWeightAge);
this.add(lblDescription, gbcLblDescription);
this.add(getTxaDescription(), gbcTxaDescription);

}
private Panel getPnlWeightAge() {
if (pnlWeightAge == null) {
lblWeight = new Label();
lblWeight.setText("Weight");
pnlWeightAge = new Panel();
pnlWeightAge.add(getTxtAge(), null);
pnlWeightAge.add(lblWeight, null);
pnlWeightAge.add(getTxtWeight(), null);
}
return pnlWeightAge;
}

private TextField getTxfName() {
if (txfName == null) {
txfName = new TextField();
txfName.setColumns(30);
txfName.setName("name");
}
return txfName;
}

private TextField getTxtAddress() {
if (txfAddress == null) {
txfAddress = new TextField();
txfAddress.setColumns(40);
txfAddress.setName("address");
}
return txfAddress;
}

private TextField getTxtAge() {
if (txfAge == null) {
txfAge = new TextField();
txfAge.setColumns(10);
txfAge.setName("age");
}
return txfAge;
}

private TextField getTxtWeight() {
if (txfWeight == null) {
txfWeight = new TextField();
txfWeight.setColumns(10);
txfWeight .setName("weight");
}
return txfWeight;
}

private TextArea getTxaDescription() {
if (txaDescription == null) {
txaDescription = new TextArea();
txaDescription.setName("addRemark");
txaDescription .setRows(4);
txaDescription.setColumns(40);
}
return txaDescription;
}
}


=================================================================================================

Monday, October 20, 2008

Create dan Compile Program Assembler di Linux

- bikin program Assembler di linux bs gunakan editor "kwrite" or editor gedit misal : file dikasih nama hello.S
- untuk meng-compile program hello.S agar menghasilkan file object "hello.o" di linux dg perintah "as" yang merupakan compiler default pada linux yang menggunakan GNU Assembler compiler. seperti dibawah ini di console :

as -o hello.o hello.S

- untuk menghasilkan executable file nya digunakan perintah "ld".seperti dibawah ini

ld -s -o hello hello.o

- untuk menjalankan program yang dihasilkan tersebut dg perintah dibawah ini di console:

./hello

Tuesday, September 23, 2008

Query Menampilkan data null di Oracle dan MS SQL server

NVL function di oracle dan isnull function di ms sql server ini mempunyai fungsi yang sama yaitu menampilkan data dari suatu table yang isi datanya null diganti dengan data sesuai dengan format yang kita inginkan


- NVL(NamaField,dataPengganti) function di Oracle

select p.cd, NVL(p.group_cd, 'MY GROUP') as group_cd, NVL(p.login_count , 0) as LOGIN_COUNT ,p.* from im_user p


- ISNULL(NamaField,dataPengganti) function di MS SQL Server

select p.cd, ISNULL(p.group_cd, 'MY GROUP') as group_cd, ISNULL(p.login_count , 0) as LOGIN_COUNT ,p.* from im_user p

Monday, September 15, 2008

Create dan Compile Program C di Linux

- bikin program c di linux bs gunakan editor "kwrite" or editor gedit misal : file dikasih nama hello.c
- untuk meng-compile program hello.c di linux dg perintah "gcc" yang merupakan compiler default pada linux yang menggunakan GNU C compiler. Caranya tulis perintah dibawah ini di console :

gcc -o hello hello.c

setelah proses compile ini maka akan terbentuk executable file yang bernama hello

- untuk mejalankan program yang dihasilkan tersebut dg cara tulis perintah dibawah ini di console:

./hello

Monday, August 11, 2008

Array dan Vector di JAVA

1)Kapasitas komponen array adalah n-1, kalau kapasitas vector tidak usah diinisialisasi tdk apa2
Note :
“capacity” di vector adalah jumlah slot yang tersedia
“size” di vector adalah jumlah slot yang sudah terisi data
=================
Program Array :
=================
class Array1
{

public static void main ( String[] args)
{
Integer[] dataku = new Integer[5];
dataku[0] = 10 ;
dataku[1] = 11 ;
dataku[2] = 12 ;
dataku[3] = 13 ;
dataku[4] = 14 ;

System.out.println("capacity: "+ dataku.length);

for (int i=0; i< dataku.length; i++){

System.out.println("dataku[" + i + "] : "+dataku[i]);

}

}
}

================
Output Program :
================

capacity: 5
dataku[0] : 10
dataku[1] : 11
dataku[2] : 12
dataku[3] : 13
dataku[4] : 14

===============
Contoh Vector :
===============
import java.util.* ;

class Vector1 {

public static void main ( String[] args) {

//vector tanpa inisialisasi kapasitas
Vector dataku = new Vector();

dataku.addElement(10);
dataku.addElement(11);
dataku.addElement(12);
dataku.addElement(13);
dataku.addElement(14);

System.out.println("capacity: "+ dataku.capacity() );
System.out.println("size: "+ dataku.size() );

for (int i=0; i < dataku.size(); i++){

System.out.println("dataku elemen ke " + i + " : "+dataku.elementAt(i));
}

}
}
================
Output program :
================
capacity: 10
size: 5
dataku elemen ke 0 : 10
dataku elemen ke 1 : 11
dataku elemen ke 2 : 12
dataku elemen ke 3 : 13
dataku elemen ke 4 : 14


2)kapasitas komponen Array harus diinisialisasi dari awal, dan tidak bs ditambahi lagi tapi vector bisa diinisialisasi bisa tidak

===============
Contoh Array :
===============
class Array1
{

public static void main ( String[] args)
{
Integer[] dataku = new Integer[5];
dataku[0] = 10 ;
dataku[1] = 11 ;
dataku[2] = 12 ;
dataku[3] = 13 ;
dataku[4] = 14 ;

///ini tambahannya yang nyebabin error:)
dataku[5] = 14 ;

System.out.println("capacity: "+ dataku.length);

for (int i=0; i < dataku.length; i++){

System.out.println("dataku[" + i + "] : "+dataku[i]);

}

}
}

===============
Error Program :
===============
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at MyDrill.Array1.main(Array1.java:16)

==============
Contoh Vector :
==============
import java.util.* ;

class Vector1 {

public static void main ( String[] args) {

//vector dengan inisialisasi kapasitasnya =5
Vector dataku = new Vector(5);

dataku.addElement(10);
dataku.addElement(11);
dataku.addElement(12);
dataku.addElement(13);
dataku.addElement(14);

dataku.addElement(101);

System.out.println("capacity: "+ dataku.capacity() );
System.out.println("size: "+ dataku.size() );

for (int i=0; i < dataku.size(); i++){

System.out.println("dataku elemen ke " + i + " : "+dataku.elementAt(i));
}

}
}

================
Output Program :
================
capacity: 10
size: 6
dataku elemen ke 0 : 10
dataku elemen ke 1 : 11
dataku elemen ke 2 : 12
dataku elemen ke 3 : 13
dataku elemen ke 4 : 14
dataku elemen ke 5 : 101


3)Menghapus elemen vector
===========
Program :
===========

import java.util.* ;

class Vector1 {

public static void main ( String[] args) {

//vector dengan inisialisasi kapasitasnya =5
Vector dataku = new Vector(5);

dataku.addElement(10);
dataku.addElement(11);
dataku.addElement(12);
dataku.addElement(13);
dataku.addElement(14);

dataku.addElement(101);

dataku.remove(2);

System.out.println("capacity: "+ dataku.capacity() );
System.out.println("size: "+ dataku.size() );

for (int i=0; i < dataku.size(); i++){

System.out.println("dataku elemen ke " + i + " : "+dataku.elementAt(i));
}

}
}

===============
output program :
===============

capacity: 10
size: 5
dataku elemen ke 0 : 10
dataku elemen ke 1 : 11
dataku elemen ke 2 : 13
dataku elemen ke 3 : 14
dataku elemen ke 4 : 101


4)Insert/sisipkan elemen pada vector
================
contoh Program :
================

import java.util.* ;

class Vector1 {

public static void main ( String[] args) {

//vector dengan inisialisasi kapasitasnya =5
Vector dataku = new Vector(5);

dataku.addElement(10);
dataku.addElement(11);
dataku.addElement(12);
dataku.addElement(13);
dataku.addElement(14);

dataku.addElement(101);
//menyisipkan data pada element ke 3
dataku.insertElementAt(500, 3);

System.out.println("capacity: "+ dataku.capacity() );
System.out.println("size: "+ dataku.size() );

for (int i=0; i < dataku.size(); i++){

System.out.println("dataku elemen ke " + i + " : "+dataku.elementAt(i));
}

}
}

==================
Output program :
==================

capacity: 10
size: 7
dataku elemen ke 0 : 10
dataku elemen ke 1 : 11
dataku elemen ke 2 : 12
dataku elemen ke 3 : 500
dataku elemen ke 4 : 13
dataku elemen ke 5 : 14
dataku elemen ke 6 : 101


5. mengetahui elemen pertama dan terakhir dr vector

================
contoh program :
================

import java.util.* ;

class Vector1 {

public static void main ( String[] args) {

//vector dengan inisialisasi kapasitasnya =5
Vector dataku = new Vector(5);

dataku.addElement(10);
dataku.addElement(11);
dataku.addElement(12);
dataku.addElement(13);
dataku.addElement(14);

dataku.addElement(101);
System.out.println("elemen vectorku yang pertama : "+dataku.firstElement());
System.out.println("elemen vectorku yang pertama : "+dataku.lastElement());

}
}


================
Output program :
================

elemen vectorku yang pertama : 10
elemen vectorku yang terakhir : 101

6. mendeteksi vector kosong apa berisi

================
Contoh program :
================

import java.util.* ;

class Vector1 {

public static void main ( String[] args) {

//vector dengan inisialisasi kapasitasnya =5
Vector dataku = new Vector(5);


if (dataku.isEmpty()) {
System.out.println("wah kosong neh...");
}
else {
System.out.println("ada isinya lho...");
}

System.out.println(">>>>>>>>>>>>>>>>Batas if pertama dan if kedua>>>>>>>>>>>>>>>>>>>>");
dataku.addElement(10);
dataku.addElement(11);
dataku.addElement(12);
dataku.addElement(13);
dataku.addElement(14);
dataku.addElement(101);

if (dataku.isEmpty()) {
System.out.println("wah kosong neh...");
}
else {
System.out.println("ada isinya lho...");
}


}

===============
output program :
===============

wah kosong neh...
>>>>>>>>>>>>>>>>Batas if pertama dan if kedua>>>>>>>>>>>>>>>>>>>>
ada isinya lho...

7. mengetahui index dari suatu element vector.jika elemen tersebut bukan termasuk elemennya maka akan mengembalikan nilai -1. jika termasuk elemennya maka akan mengembalikan no elemen.

================
Contoh Program :
================

import java.util.* ;

class Vector1 {

public static void main ( String[] args) {

//vector dengan inisialisasi kapasitasnya =5
Vector dataku = new Vector(5);

dataku.addElement(10);
dataku.addElement(11);
dataku.addElement(12);
dataku.addElement(13);
dataku.addElement(14);

dataku.addElement(101);

System.out.println("element dataku.indexOf(100) : "+dataku.indexOf(100));
System.out.println("element dataku.indexOf(1) : "+dataku.indexOf(1));
System.out.println("element dataku.indexOf(13) : "+dataku.indexOf(13));

}
}

================
output program :
================
element dataku.indexOf(100) : -1
element dataku.indexOf(1) : -1
element dataku.indexOf(13) : 3

Etos Kerja

Ini adalah catatanku dr training etos kerja..
catatan biar suatu saat bs dibaca lg n klo pingin baca2 lagi biar nggak cari2 gara2 hilang:)

Dasar Pembentukan Etos Kerja :
1) Knowledge (What to, Why to)
Apa yang dilakukan dan kenapa itu harus dilakukan
Ini Berhubungan dengan dengan bagaimana mempersiapkan pengetahuan kita tentang sesuatu yang akan kita kerjakan harus benar2 kuat.
2) Skill (How to)
Ketrampilan/Keahlian ini berhubungan dengan jam terbang kita, makin lama jam terbang kita pada bidang tertentu maka skill kita akan bertambah.
3) Desire (Want to)
Motivasi untuk melakukan kerja. Setelah kita persiapkan semua yang berhubungan dengan apa yang kita kerjakan. Hal yang menentukan untuk keberhasilan dari kerja kita adalah motivasi. meskipun knowledge ada, skill ada tp faktor ketiga ga ada yach kerjaan tidak akan bs dijalankan dengan maksimal.

Dari ketiga hal diatas apabila kita dapat menggabungkan secara maksimal maka akan tercipta suatu habit (kebiasaan) yang baik. Dengan kebiasaan yang baik ini maka untuk mengerjakan sesuatu kita akan merasa ringan(tanpa beban) karena memang sudah menjadi kebiasaan kita.

kalau dipikir-pikir(ga tau yach koq tiba2 inget:D) . sebenarnya 3 hal itu juga sudah dianjurkan oleh rosulullah dalam hadistnya yak..
utlubul ilma minal mahdi ila lahdi (tuntutlah ilmu mulai dr buaian hingga ke liang lahat) dan utlubul ilma walau bissina (tuntutlah ilmu sampai ke negeri cina)
kalau yang diatas kan menekankan kita untuk selalu mencari knowledge dan mengasah skill kita tuh ya..
dan ada ding satu lagi yang berhubungan dengan motivasi tp gw lupa bahasa arabnya:D. snippetnya kayak gini dech :
Bekerjalah kamu untuk kepentingan duniamu seolah-olah kamu akan hidup selama-lamanya dan bekerjalah kamu untuk kepentingan akhiratmu seolah-olah kamu akan mati besok.
kalo yang ini yach bahwa kita harus bener2 semangat untuk melakukan suatu pekerjaan.

ohhh.ternyata intinya sama saja antara yang dipelajari saat SMP dan kmaren hehehe...
Inti dari tulisan ini adalah : persiapkan diri kita dengan ketiga hal diatas sebelum melakukan suatu tujuan :)

Friday, February 22, 2008

Mengakses Query dengan Stored Procedure Microsoft SQL Server dari Borland Delphi


Kenapa menggunakan Stored procedure untuk mengakses query?Jawabannya adalah : Lebih fleksibel jika ada perubahan-perubahan pada kombinasi SQL, memiliki waktu proses lebih cepat dibanding jika kita menggunakan AdoQuery karena Stored Procedure dijalankan pada sisi back end database bukan di frond endnya aplikasi yang kita buat. Waktu Proses yang lama ini akan terasa jika SQL yang jalankan lumayan rumit dan data lumayan banyak.

Disini akan diberikan contoh sederhana bagaimana mengakses Query melalui stored procedure Microsoft SQL Server dari borland delphi. Langkah pertama akan dibuat suatu stored procedure bernama stp_area. Memasukkan Code stored procedure ini dapat dilakukan melalui Enterprise Manager atau dieksekusi melalui query analyzer. Stored procedure ini berfungsi menambahkan data ke tabel
dbArea. Tabel dbarea Area sendiri mempunyai 4 field yaitu : KodeArea yang bertipe Varchar(5), NamaArea yang bertipe
Varchar(50), @Nonaktif yang bertipe bit, dan @UserID yang bertipe varchar(20)

------------------------------------------------------------------------------------

CREATE PROCEDURE [dbo].[stp_Area]
@KodeArea Varchar(5),
@NamaArea Varchar(50),
@Nonaktif bit,
@UserID varchar(20)

AS


begin tran

SET NOCOUNT ON


insert into dbArea (KodeArea, NamaArea,nonaktif, UserID, DateCreated, DateModified)
values (@KodeArea, @NamaArea, @nonaktif, @UserID, GetDate(), null)

if @@error <> 0 goto Gagal


SET NOCOUNT OFF


commit tran
return

Gagal:
rollback tran
raiserror('Proses Input Data Gagal',16,1)
return


GO

------------------------------------------------------------------------------------

Selanjutnya disisi borland delphinya, dibuat project baru dan ambil component ADOStoredProc set property 'connectionstring' nya sesuai dengan database yang digunakan dan Property 'procedurename' diisi dengan nama stored procedure yang telah dibuat yaitu stp_Area. dan 2 buah Tedit untuk mengisi 'kode area' yang dinamai kodearea dan untuk mengisi 'nama area' dinamai namaarea dan satu buah TCheckbox untuk mengisi status 'Non Aktif' ang dinamai NonAktif dan sebuah TButton yang berisi kode dibawah ini :

procedure TForm1.Button1Click(Sender: TObject);
var
mymessage : array [0..255] of char;
begin
With ADOStoredProc1 do
begin
Parameters[1].Value := kodearea.Text;
Parameters[2].Value := NamaArea.Text;
Parameters[3].Value := NonAktif.Checked;
Parameters[4].Value := 'iis';
try
ExecProc;
except
on E: Exception do
begin
Application.MessageBox(StrPCopy(mymessage,E.Message),'Warning',MB_OK or MB_ICONWARNING);
end;
end;
end;

end;

Thursday, February 14, 2008

Ketika SET NOCOUNT diset ON dan ketika SET NOCOUNT diset OFF di Microsoft SQL Server

Ketika kita mengeksekusi perintah SQL 'Select', 'Insert','Update', dan 'Delete'
maka Microsoft SQL Server akan mengembalikan jumlah baris yang terpengaruh oleh perintah-perintah tersebut.

Contoh :


select * from TbPOdet


Hasil Eksekusi perintah select dari tabel 'TbPOdet' diatas :


NOBUKTI URUT KODEBRG QNT
-------------------- ----------- -------------------- ---------
000001/PO-AA/02/2008 1 A001090001 1.0000
000001/PO-AA/02/2008 2 A001090003 1.0000
000002/PO-AA/02/2008 1 A006300001 1.0000
000003/PO-AA/02/2008 1 A001090001 1.0000
000001/PO-AA/03/2008 1 A005290001 1.0000
000002/PO-AB/03/2008 1 A010010005 1.0000
000001/PO-AA/02/2009 1 A001090001 1.0000
000002/PO-AA/02/2009 1 A009340001 1.0000
000002/PO-AA/02/2009 2 A009310001 1.0000
000003/PO-AC/02/2009 1 A001090011 1.0000

(10 row(s) affected)


Pada akhir Eksekusi perintah diatas ditampilkan jumlah baris yang terpengaruh oleh sql tersebut yaitu '10 row(s) affected'
kalo perintah ini di eksekusi di query analyzer memang tidak mempunyai dampak yang tidak baik, Namun Stored Procedure
yang berisi seperti perintah diatas apabila diakses dari sebuah aplikasi seperti PowerBuilder maka aplikasi akan tertutup.
Masalah diatas dapat dengan perintah SET NOCOUNT di set ON. dengan menggunakan perintah ini maka Microsoft SQL Server tidak
akan menghasilkan '(10 row(s) affected)' pada akhir eksekusi query tapi hanya mengembalikan baris datanya saja.

Contoh :

SET NOCOUNT ON

select * from TbPOdet

SET NOCOUNT OFF

Hasil Eksekusi perintah select dari tabel 'TbPOdet' diatas :


NOBUKTI URUT KODEBRG QNT
-------------------- ----------- -------------------- ---------
000001/PO-AA/02/2008 1 A001090001 1.0000
000001/PO-AA/02/2008 2 A001090003 1.0000
000002/PO-AA/02/2008 1 A006300001 1.0000
000003/PO-AA/02/2008 1 A001090001 1.0000
000001/PO-AA/03/2008 1 A005290001 1.0000
000002/PO-AB/03/2008 1 A010010005 1.0000
000001/PO-AA/02/2009 1 A001090001 1.0000
000002/PO-AA/02/2009 1 A009340001 1.0000
000002/PO-AA/02/2009 2 A009310001 1.0000
000003/PO-AC/02/2009 1 A001090011 1.0000


Meskipun SET NOCOUNT diset ON tidak mengembalikan jumlah baris yang terpengaruh tapi fungsi @@ROWCOUNT tetap diupdate.
Hal ini bisa dilihat dari contoh dibawah ini.

Contoh :

SET NOCOUNT ON

select * from TbPOdet
print @@Rowcount
print 'Adalah Jumlah Record Pada Eksekusi Terakhir'

SET NOCOUNT OFF

Hasil Eksekusi perintah select dari tabel 'TbPOdet' diatas :


NOBUKTI URUT KODEBRG QNT
-------------------- ----------- -------------------- ---------
000001/PO-AA/02/2008 1 A001090001 1.0000
000001/PO-AA/02/2008 2 A001090003 1.0000
000002/PO-AA/02/2008 1 A006300001 1.0000
000003/PO-AA/02/2008 1 A001090001 1.0000
000001/PO-AA/03/2008 1 A005290001 1.0000
000002/PO-AB/03/2008 1 A010010005 1.0000
000001/PO-AA/02/2009 1 A001090001 1.0000
000002/PO-AA/02/2009 1 A009340001 1.0000
000002/PO-AA/02/2009 2 A009310001 1.0000
000003/PO-AC/02/2009 1 A001090011 1.0000


10
Adalah Jumlah Record Pada Eksekusi Terakhir
Membuat Tabel dengan Nama Tabel sebagai Parameter Input di Microsoft SQL Server


Kadang kita memerlukan untuk membuat suatu tabel yang nama tabel sebagai suatu parameter inputnya.
Pembuatan tabel dinamis seperti ini bisa digunakan untuk menampung data yang dapat disesuaikan, misalnya data stock barang untuk
tahun 2001, Data stock barang untuk tahun 2002 dst. Dengan menggunakan cara ini diharapkan table stock barang tidak
memuat data yang terlalu banyak sehingga saat digunakan untuk transaksi tidak memerlukan proses yang terlalu lama karena
query kita hanya beroperasi di table sesuai tahun yang bersangkutan.
Disini qta akan membuat tabel sederhana dengan menggunakan Microsoft SQL Server yang memasukkan nama tabel sebagai
parameter input.


Declare @TableNm varchar(30), @Year varchar(4), @MyQuery varchar(8000)

Set @TableNm='TBBarang'
Set @Year='2001'

Set @MyQuery='Create Table ' + @TableNM +@Year
+'( '
+'[KodeBrg] [varchar] (20) NOT NULL , '
+'[NamaBrg] [varchar] (50) NOT NULL , '
+'[NonAktif] [bit] NOT NULL, '
+'[DateCreated] [datetime] NULL , '
+'[DateModified] [datetime] NULL , '
+'[UserID] [varchar](20) NOT NULL '
+' ) ON [PRIMARY] '

exec(@MyQuery)

Friday, February 01, 2008

test tulis2 di blog lama tp lupa ga pernah di ditulis