Maximum Product Consecutive Digits

November 23, 2009 windupurnomo Leave a comment

Menentukan nilai maksimal dari 5 bilangan terurut dari 1000 digit bilangan berikut:

73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843
85861560789112949495459501737958331952853208805511
12540698747158523863050715693290963295227443043557
66896648950445244523161731856403098711121722383113
62229893423380308135336276614282806444486645238749
30358907296290491560440772390713810515859307960866
70172427121883998797908792274921901699720888093776
65727333001053367881220235421809751254540594752243
52584907711670556013604839586446706324415722155397
53697817977846174064955149290862569321978468622482
83972241375657056057490261407972968652414535100474
82166370484403199890008895243450658541227588666881
16427171479924442928230863465674813919123162824586
17866458359124566529476545682848912883142607690042
24219022671055626321111109370544217506941658960408
07198403850962455444362981230987879927244284909188
84580156166097919133875499200524063689912560717606
05886116467109405077541002256983155200055935729725
71636269561882670428252483600823257530420752963450

Silahkan kalo mau menghitung sendiri, berapa nilai maksimalnya :) . Tetapi berikut ini akan saya berikan program untuk menghitungnya dengan menggunakan bahasa pemrograman java.

import java.io.BufferedReader;
import java.io.FileReader;

/**
 *
 * @author Windu Purnomo
 */
public class Euler8 {
    public static void main(String[] args) {
        String temp;
        int num, mul = 1, maks=1;
        try{
            BufferedReader reader = new BufferedReader(new FileReader("1000.txt"));
            if(!(temp=reader.readLine()).equals(null)){
                for(int i=0; i<temp.length()-4; i++){
                    for(int j=i; j<i+5; j++){
                        Character c = new Character(temp.charAt(j));
                        String s = c.toString();
                        num = Integer.parseInt(s);
                        mul *= num;
                    }
					//System.out.println("Perkalian lima ke-"+i+" "+mul);
                    if(maks<mul) maks = mul;
					num = 0;
					mul = 1;
                }
            }
            reader.close();
        }catch(Exception e){
                System.out.println("gagal");
        }
        System.out.println("Nilai terbesar: "+ maks);
    }
}

N-th Prime Number

November 23, 2009 windupurnomo Leave a comment

Example problem:
What is 6th prime number?
Answer:
By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6-th prime is 13

Now, what is 10001-th prime number?

It is simple, if we use program to count it:

/*
  Name: N-th Prime Number
  Copyright: 2009
  Author: Windu Purnomo
  Date: 23/11/09 11:40
  Description: Get n-th prime number, after list it.
*/

#include<stdio.h>
main(){
    int i, j, n;
    int flag = 1;
    int counter = 0;

    scanf("%d", &n);
    for(i=2; i>0; i++){
       for(j=2; j<i; j++){
          if(i%j==0){
             flag = 0;
             break;
          }
       }
       if(flag){
          counter++;
          if(counter == n){
             printf("It is %d-th prime number: %d", n, i);
             break;
          }
       }else{
          flag = 1;
       }
    }
    getch();
    return 0;
}

Look and Feel

November 11, 2009 windupurnomo 1 comment

Anda mungkin kurang suka dengan tampilan default dari komponen swing di java. Sebenarnya anda dapat mengganti tampilan tersebut dengan cara melakukan setting look and feel. Ini adalah contoh perbandingan, dua buah gui dengan menggunakan LAF yang berbeda:

laf1 my software

Gambar sebelah kiri merupakan gui dengan look and feel default, sedangkan gambar sebelah kanan merupakan gui dengan look and feel native. Untuk melakukan perubahan look and feel tambahkan kode berikut:

public static void main(String args[]) {
        try{
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        }catch(Exception e){
            System.out.println("error");
        }
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Home().setVisible(true);
            }
        });
    }

Berikut ini adalah contoh lainnya:

try {
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    } catch(Exception e) {
      System.out.println("Error setting native LAF: " + e);
    }
...
try {
      UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
    } catch(Exception e) {
      System.out.println("Error setting Java LAF: " + e);
    }
...
try {
      UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
    } catch(Exception e) {
      System.out.println("Error setting Motif LAF: " + e);
    }

Menampilkan File PDF Menggunakan Java

November 11, 2009 windupurnomo Leave a comment

Sering sekali kita menginginkan aplikasi yang dapat menampilkan file kepada user. Untuk melakukan ini sebenarnya tidak teralalu sulit. Kita akan menggunakan command pada command prompt di windows untuk melakukannya. Perintah untuk membuka file ini adalah sebagai berikut:


rundll32 url.dll,FileProtocolHandler D:/Bahan Kuliah ILKOMERZ/a.pdf

String “D:/Bahan Kuliah ILKOMERZ/a.pdf” silahkan disesuaikan dengan path file yang akan ditampilkan.

Berikut ini contoh program sederhana untuk menampilkan file a.pdf:


/**
 *
 * @author Windu Purnomo
 */
public class ShowPdf {
 public static void main(String[] args) throws Exception {
 Process p =
 Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler D:/Bahan Kuliah ILKOMERZ/a.pdf");
 p.waitFor();
 System.out.println("Done.");
 }
}

Kita dapat menentukan file mana yang akan dibuka dengan cara mengubah statement getRuntime.exec() dengan file yang diinginkan. Dalam contoh berikutnya saya menggunakan JFileChooser untuk melakukan pemilihan file, kemudian menampilkannya.  Anda dapat mendownload sorce code, dan juga file jar nya, di sini.

Dalam aplikasi yang saya buat ini, juga ada fungsi untuk membuka Ms Office Excell dan Ms Office Word. Berikut ini adalah screen shoot-nya.
my software

Categories: java, programming Tags: , , , ,

Menghitung Waktu Eksekusi Program di Java dan C

October 18, 2009 windupurnomo Leave a comment

Method yang digunakan adalah:

Java: System.nanoTime();

C: clock();

Java


</strong>
<pre>/**
 *
 * @author windu purnomo
 */
public class RunTime {

    public static void main(String[] args) {
        double start = System.nanoTime();
        int l = 0;
        for(int i=0; i<1000; i++){
            for(int j=0; j<1000; j++){
                for(int k=0; k<1000; k++){
                    l++;
                }
            }
        }
        double finish = System.nanoTime();
        System.out.println("waktu eksekusi program: "+(finish-start));
    }
}

Download RunTime.java

C


#include <stdio.h>
#include <conio.h>
#include <time.h>

main(){
       int a, b, i, j;
       double start = clock();
       for(i=0; i<10000; i++){
          for(j=0; j<10000; j++){
              for(a=0; j< 1000; j++){}
          }
       }
       double stop = clock();
       printf("waktu eksekusi Program: %f", (stop-start));
       getch();
       return 0;
}

Download RunTime.c

Membuat Folder dan File Menggunakan Program Java

August 18, 2009 windupurnomo 1 comment

Membuat Folder


import java.io.File;

/**
 *
 * @author windu purnomo
 */
public class CreateDirectory{

    public static void main(String[] args) {

        try{
            boolean success = (new File("windu/hapshoh")).mkdirs();
            if(success){
                System.out.println("multi direktori berhasil dibuat");
            }else{
                System.out.println("multi direktori gagal dibuat");
            }

            success = (new File("windupurnomo")).mkdir();
            if(success){
                System.out.println("direktori tunggal berhasil dibuat");
            }else{
                System.out.println("direktori tunggal gagal dibuat");
            }
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

Membuat File


import java.io.BufferedWriter;
import java.io.FileWriter;

/**
 *
 * @author windu purnomo
 */
public class BatchCreator {

    public static void main(String[] args) {
        String contentFile = "Tulisan ini akan ada dalam file";
        String contentHTML = "&lt;html&gt;\n" +
                "&lt;head&gt;\n" +
                "\t&lt;title&gt;Windu Purnomo&lt;/title&gt;\n" +
                "&lt;body&gt;\n" +
                "Ini adalah isi dari File HTML yang dibuat oleh program java...." +
                "&lt;/body&gt;\n" +
                "&lt;/head&gt;\n" +
                "&lt;/html&gt;";
        try{
            BufferedWriter writer = new BufferedWriter(new FileWriter("windu.txt"));
            writer.write(contentFile);
            writer.close();

            BufferedWriter penulis = new BufferedWriter(new FileWriter("windu.html"));
            penulis.write(contentHTML);
            penulis.close();

        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

Compare2File

August 11, 2009 windupurnomo 1 comment

Ini adalah produk software kecil buatan saya sendiri, versi release candidate. Software ini didistribusikan dalam bentuk jar. Silahkan dicoba. Software ini sudah dicoba pada file *.txt dan *.html. Untuk text file yang berukuran 92KB, performa dari sotware akan turun.

Input:

2 buah file yang akan dibandingkan

Output:

1.  Menampilkan baris (target file)yang tidak sama dengan file sumber/isi dan nomor barisnya

2.  Menampilkan total jumlah baris yang tidak sesuai

3.  Menampilkan waktu eksekusi file.

compare2file

Anda dapat mendownload file ini cuma-cuma. Silahkan digunakan untuk keperluan yang bermanfaat. Free download.

downloadSilahkan berikan komentar….

Expose Database sebagai Web Service (Part 2)

August 11, 2009 windupurnomo 1 comment

<<posting sebelumnya

java

Membuat Class POJO

Sekarang akan dibuatkan class java yang digunakan untuk melakukan koneksi ke database. Berikutnya akan dibuat Java Bean object yang akan merepresentasikan service. Dari posting sebelumnya, akan dibuat 4 buah service. Service 1 dan 2 sama, akan memberikan 2 buah field kepada client yaitu, agama dan jumlah. Service ke 3, akan memberikan 8 field (noKK, kepKeluarga, jumlahAnggota, alamat, rt, rw, kodePos, kelurahan). Sedankgan service ke 4, memberikan 7 field, yaitu sama seperti service 3 dikurangi kelurahan.

Daftar Class POJO yang akan dibuat:

  1. Data:
    • DinasPnddkSLC.java
    • Agama.java
    • KKAll.java
    • KKPerKelurahan.java
  2. Service
    • DinasPendudukBogorTimur.java

DinasPnddkSLC.java

Kelas ini digunakan untuk melakukan koneksi ke database dan menyimpannya di configurationContext.

……

.......
public static final String DB_CONNECTION = "dbconnection";

public void startUp(ConfigurationContext configctx, AxisService service) {
try {
Class.forName("com.mysql.jdbc.Driver);
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/DinasPendudukBogor",
"root",
"");
//Storing the DB in the ConfigurationContext
configctx.setProperty(DB_CONNECTION, conn);
} catch (Exception e) {
e.printStackTrace();
}
}
.......

…..

Agama.java

Java Bean untuk memberikan layanan Agama.

.....
<pre>private String agama;
private int jumlah;

public void setAgama(String agama){
this.agama = agama;
}
public String getAgama(){
return agama;
}
public void setJumlah(int jumlah){
this.jumlah = jumlah;
}
public int getJumlah(){
return jumlah;
}
</pre>
.....

DinasPendudukBogorTimur.java

 

Ini adalah kelas utama yang digunakan untuk service, di bawah ini adalah salah service 1. Tidak sulit bukan?

…..

public Agama[] agamaAll(){
Connection conn = (Connection) MessageContext.getCurrentMessageContext().getProperty(DinasPnddkSLC.DB_CONNECTION);
String qAgama = "SELECT ag.agama, COUNT(txNik) "+
"from dinaspendudukbogor.ms_pdt pdt join dinaspendudukbogor.agama_wind ag "+
"on pdt.txAgama = ag.idAgama "+
"GROUP BY ag.agama";
if(conn != null){
try{
System.out.println("ini sebelum preparedStatement");
PreparedStatement ps = conn.prepareStatement(qAgama);
ResultSet rs = ps.executeQuery();
ArrayList list = new ArrayList();
while (rs.next()){
Agama agama = new Agama();
agama.setAgama(rs.getString("agama"));
agama.setJumlah(rs.getInt("COUNT(txNik)"));
list.add(agama);
}
System.out.println(qAgama);
return (Agama[])list.toArray(new Agama[list.size()]);
}catch(SQLException e){
e.printStackTrace();
}
}
return null;
}

…..

 

download file lengkap

selanjutnya(part3)>>

Expose Database sebagai WebService

August 11, 2009 windupurnomo 2 comments

daaxis
Web service adalah bagian dari bisnis logic yang ditempatkan pada beberapa tempat internet, dan bisa diakses menggunakan protokol standar seperti HTTP dan SMTP. Penggunaan web service bisa sederhana seperti pencatatan ke dalam situs serta kompleks seperti menfasilitasi banyak organisasi negosiasi bisnis (David dan Tyler 2002). Web service menggunakan paradigma client-server. Ketika suatu URL sebuah dokumen diketikkan, browser berfungsi sebagai client yang menghubungi sebuah server pada komputer yang tertera pada URL untuk meminta dokumen. Kemudian browser menampilkan dokumen tersebut kepada pengguna.
Dalam posting ini saya akan memperlihatkan pembuatan web service yang digunakan untuk menampilkan isi dari database. Berikut ini adalah overview dari pembuatan web service untuk mengekspos isi dari database:

  1. Membuat database
  2. Membuat Java Bean
  3. Membuat Service Life Cycle
  4. Membuat Class service
  5. Membuat services.xml
  6. Membuat build.xml

Membuat Database

Di sini saya membuat database dengan menggunakan Database Management System (DBMS) MySQL. Saya akan mengekspos isi dari database yang berisi satu buah tabel yaitu tabel person. Tabel person memiliki tiga buah kolom yaitu id, nama, dan alamat. Nama dari database adalah “webservice”. Berikut adalah ilustrasinya:

db diagram

Urutan implementasi dari pembangunan database ini adalah: pembuatan database, pembuatan tabel, pengisian data.

CREATE DATABASE webservice;

CREATE TABLE person(
id integer,
nama VARCHAR(40),
alamat VARCHAR(50),
PRIMARY KEY (id)
);

INSERT INTO person (id, nama, alamat) VALUES (1, 'Siti Hapshoh', 'Cilacap');
INSERT INTO person (id, nama, alamat) VALUES (2, 'Prawito Hudoro', 'Cilacap');
INSERT INTO person (id, nama, alamat) VALUES (3, 'Sandy Cahya Gumilar', 'Cibinong');
INSERT INTO person (id, nama, alamat) VALUES (4, 'Raihan', 'Papua');

Membuat Java Bean

Java bean digunakan untuk merepresentasikan entitas output dari service. Service akan memberikan informasi kepada user isi dari semua field (kolom) pada tabel, yaitu, id, nama, alamat. Sehingga java bean yang akan dibuat juga akan memiliki 3 field tersebut. Berikut adalah sourcecode lengkapnya:

package source.data;

/**
 *
 * @author Windu Purnomo
 */

public class JavaBean {
	private int id;
	private String nama;
	private String alamat;

	public void setId(int id){
		this.id = id;
	}

	public void setNama(String nama){
		this.nama = nama;
	}

	public void setAlamat(String alamat){
		this.alamat = alamat;
	}

	public int getId(){
		return id;
	}

	public String getNama(){
		return nama;
	}

	public String getAlamat(){
		return alamat;
	}
}

Membuat Service Life Cycle

Service Life Cycel mengatur daur hidup dari service. Disini kita menuliskan cara melakukan koneksi ke database dan menutup koneksi. Berikut sourcecode lengkapnya:

package source.data;

import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.description.AxisService;
import org.apache.axis2.engine.ServiceLifeCycle;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class SLC implements ServiceLifeCycle {
	public static final String DB_CONNECTION = "dbconnection";

	/**
	*startUp() akan dipanggil untuk memanggil koneksi ke database
	*Lakukan konfigurasi pada nama databae, user, dan password.
	*/
    public void startUp(ConfigurationContext configctx, AxisService service) {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            // Creating the DB connection for the sample DB
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/webservice",
                    "root",
                    "");
            //Storing the DB in the ConfigurationContext
            configctx.setProperty(DB_CONNECTION, conn);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void shutDown(ConfigurationContext configctx, AxisService service) {
        Connection conn = (Connection) configctx.getProperty(DB_CONNECTION);
        if (conn != null) {
            try {
                // closing the DB
                conn.close();
            } catch (SQLException e) {
                System.out.println("Error while closing the DB connection");
            }
        }
    }
}

Membuat Class Service

Class service digunakan untuk membuat logic dari service. Misalkan ingin membuat sebuah service penjumlahan. Maka pada class ini kita menuliskan bagaimana proses penjumlahan itu. Dalam kasus ini kita akan memberikan service berupa data dari database. Sehingg dalam class service ini, akan dituliskan proses memanggil class Service Life Cycle untuk membuka koneksi, query ke database, mengambil data dari resultset ke dalam linked list, dll. Berikut source code lengkapnya:

package source.service;
import org.apache.axis2.context.MessageContext;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import source.data.JavaBean;
import source.data.SLC;

public class Person{
	public JavaBean[] serviceMethod(){
	Connection conn = (Connection) MessageContext.getCurrentMessageContext().getProperty(SLC.DB_CONNECTION);
	String query = "SELECT * FROM person";
	if(conn != null){
		try{
			PreparedStatement ps = conn.prepareStatement(query);
			ResultSet rs = ps.executeQuery();
			ArrayList list = new ArrayList();
			while (rs.next()){
				JavaBean jb = new JavaBean();
				jb.setId(rs.getInt("id"));
				jb.setNama(rs.getString("nama"));
				jb.setAlamat(rs.getString("alamat"));
				list.add(jb);
			}
			return (JavaBean[])list.toArray(new JavaBean[list.size()]);
		}catch(SQLException e){
			e.printStackTrace();
		}
	}

	return null;
	}
}

Membuat services.xml

services.xml adalah service configuration file, di sini kita akan mendefinisikan nama service, dan path-path, url yang terkait dengan service, dengan menggugnakan script xml. Berikut sourecode lengkapnya:

<service name="Agama" class="source.data.SLC">
    <description>Service Dinas Kependudukan Bogor Timur</description>
    <messageReceivers>
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
    </messageReceivers>
    <parameter name="ServiceClass">source.service.Agama</parameter>
</service>

Membuat build.xml

build.xml bersama dengan apache ant, akan melakukan build terhadap sistem. build.xml berperan sebagai skenarion dari proses build sistem. Dalam build.xml dijelaskan alur dari skenario build, memberikan nama direktory yang akan dibuat, membersihkan direktory, membuat direktory baru, compile file-file java, membuat file jar, mengopy beberapa file dan directory, membuat file aar, mendeploy file aar ke server. Berikut sourcecode lengkapnya:

<project name="Dinas Penduduk Bogor Timur" basedir="." default="generate.service">

	<property name="service.name" value="Agama" />
	<property name="dest.dir" value="build" />
	<property name="dest.dir.classes" value="${dest.dir}/${service.name}" />
	<property name="dest.dir.lib" value="${dest.dir}/lib" />
       <property name="axis2.home" value="C:\Program Files\axis2-1.4.1"/>
	<property name="repository.path" value="${axis2.home}/repository" />
	<property name="catalina.base" value="C:\Program Files\apache-tomcat-6.0.20\webapps\axis2\WEB-INF\services" />

	<path id="build.class.path">
		<fileset dir="${axis2.home}/lib">
			<include name="*.jar" />
		</fileset>
	</path>

	<path id="client.class.path">
		<fileset dir="${axis2.home}/lib">
			<include name="*.jar" />
		</fileset>
		<fileset dir="${dest.dir.lib}">
			<include name="*.jar" />
		</fileset>
	</path>

	<target name="clean">
		<delete dir="${dest.dir}" />
	</target>

	<target name="prepare">
		<mkdir dir="${dest.dir}" />
		<mkdir dir="${dest.dir}/lib" />
		<mkdir dir="${dest.dir.classes}" />
		<mkdir dir="${dest.dir.classes}/META-INF" />
	</target>

	<target name="generate.service" depends="clean,prepare">
		<copy file="src/META-INF/services.xml" tofile="${dest.dir.classes}/META-INF/services.xml" overwrite="true" />
		<javac srcdir="src" destdir="${dest.dir.classes}" includes="source/service/**, source/data/**">
			<classpath refid="build.class.path" />
		</javac>
		<jar basedir="${dest.dir.classes}" destfile="${dest.dir}/${service.name}.aar" />
		<copy file="${dest.dir}/${service.name}.aar" tofile="${catalina.base}/${service.name}.aar" overwrite="true" />
	</target>

</project>

download:
1. JavaBean.java
2. SLC.java
3. Person.java
4. services.xml
5. build.xml
6. Semua File

Bermain-Main dengan JFileChooser di Netbeans 6.5.1

August 2, 2009 windupurnomo 2 comments

netbeans

Tahapan dalam tutorial ini:

  1. Membuat projek baru di Netbeans
  2. Membuat jTextField dan jButton + Action
  3. Membuat JFileChooser
  4. Running

Membuat projek baru di Netbeans

  1. Pilih File > New Project
  1. Tampil Window Dialog New Project, Steps: