23  Sep
Perpindahan blog

Sebelumnya saya minta maaf buat semuanya, mungkin terlalu sering pindah - pindah blog, Insa’Allah ini yang terakhir untuk sementara blog ini tak akan aktif. untuk mengikuti kelanjutan cerita dari mbahsomo anda dapat masuk ke

http://mbahsomo.co.cc

Mohon di maklumi

Posted by mbahsomo, filed under Lain - Lain. Date: September 23, 2008, 8:38 am | No Comments »

Buat Mahaiswa PI Matakuliah MS PowerPoint di bawah ini adalah cara upload file di http://sugik.4shared.com:

  1. Buka brouser ketik di addres http://sugik.4shared.com
  2. Setelah  terbuka masuk ke folder POLITEKNIK-INDONESI –> Buka lagi folder ms_powerpoint.
  3. Setelah itu Pilih brouser pada menu di bawah.
  4. Pilih file yang akan di kirim.
  5. Klik upload.
  6. Jika file sudah terkirimakan nampak pada layar nama file yang kalian kirim.

Lebih jelasnya lihat gambar di bawah ini dan perhatikan tanda merah :

NB : Paling lambat di kumpulkan pada tanggal 24

Posted by mbahsomo, filed under Lain - Lain. Date: September 19, 2008, 8:27 pm | No Comments »

 Form login yang saya bahas di sini adalah salah satu bagian dari program chating yang saya buat jadi ini saya anggap sebagi salah satu bab dari aplikasi chating, karena pada awal kita melakukan proses untuk chating kita akan melakukan registrasi dulu, apakah user kita sudah terdaftar atau belum.langkah pertama yang akan kita lakukan adalah dengan membuat sebuah halaman login.persiapan :

  1. Download ExtJs.
  2. Install apache tomcat.
  3. untuk editor penulis menggunakan dreamweaver dan aptana kalo belum punya tanya sama mbah google.
  4. PostgreSQL sebagai database server.
  5. sebuah komputer itu pasti.

Buat foolder baru di webapps pada tomcat anda dengan nama chatextjs, dan buat folder js di dalamnya. lalu kopikan library ExtJs ke dalam folder js anda

  1. adapter
  2. resources
  3. ext-all.js
  4. ext-core.js

Sebelum kita lanjutkan mari kita buat database dulu pada postgreSQL kita masuk ke dalam postgreSQL dan create database chatextjs, ingat di dalam postgres ini sama dengan bahasa C jadi penulisan huruf besar kecil akan berbeda.setelah membuat database buat sebuah table tulis source di bawah ini:

CREATE TABLE "public"."userproject" (
  "kduser" SERIAL,
  "nama" VARCHAR(30),
  "katakunci" CHAR(32),
  "kddepart" CHAR(3),
  "tingkat" SMALLINT,
  "telp" VARCHAR(20),
  "email" VARCHAR(30),
  "status" BOOLEAN,
  "lastlogin" TIMESTAMP WITHOUT TIME ZONE,
  "kduseratas" INTEGER,
  "kduserentry" INTEGER,
  "tglentry" TIMESTAMP WITHOUT TIME ZONE DEFAULT now(),
  "wewenang" SMALLINT DEFAULT 9,
  CONSTRAINT "userproject_pkey" PRIMARY KEY("kduser")
) WITHOUT OIDS;
COMMENT ON COLUMN "public"."userproject"."wewenang"IS '1 : Admin 9: user Biasa';

isi data dengan default contoh :Insert into userproject (nama,katakunci) values(’admin’,md5(’admin’));sekarang buat folder koneksi dan chat di dalam folder chatextjs.buat file koneksi.jsp dan kopikan source dibawah ini :

<%@ page import="java.sql.*"%>
<%@page import="java.text.SimpleDateFormat"%>
<%
class clsKoneksi{
 public clsKoneksi() {
        //koneksi=getFile();
    }

 public String[] strKoneksi = {"org.postgresql.Driver","jdbc:postgresql://localhost:5432/chatextjs","userkamu","passwordkamu"};

}

class classDB {
    /** Creates a new instance of classDB */
    public classDB(String [] Koneksi) {
        koneksi = Koneksi;
        cobaKoneksi(Koneksi);
    }
    public void cobaKoneksi(String [] koneksi) {
        try {
            Class.forName(koneksi[0]);
            con = DriverManager.getConnection(koneksi[1],koneksi[2],koneksi[3]);
        } catch(java.lang.ClassNotFoundException e) {
            System.out.println("Koneksi Driver ODBC Gagal");
            System.out.println(e.getMessage());
        } catch(java.lang.NullPointerException e) {
        } catch(Exception exc){}
    }
    public void ExecSQL(String perintahSQL) {
        try {
            stmt = con.createStatement();
            stmt.executeUpdate(perintahSQL);
            stmt.close();
            //con.close();
        } catch(SQLException ex) {
            System.err.println("SQLException: " + ex.getMessage());
        }
    }
    public Object[][] getObjectRS(String SQL) {
        ResultSet rs =null;
        Object[][] Isi = new Object[1][];;
        //System.out.println("SQL di kelasDB " + SQL);
        //        int [] tipeDataKolom = new int[20];
        int baris =0;
        try {
            stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
            rs = stmt.executeQuery(SQL);
            // untuk mengetahui berapa kolom dalam hasil ResultSet
            ResultSetMetaData metaData = rs.getMetaData();
            jmlKolom = metaData.getColumnCount();
            for(int i=0; i<jmlKolom; i++) {
                namaKol[i]=metaData.getColumnName(i+1);
            }
            rs.last();
            jmlBaris = rs.getRow();
            Isi = new Object[jmlBaris][];
            rs.first();
            Isi [baris] = new Object[jmlKolom];
            for(int i=0; i<jmlKolom; i++) {
                if (metaData.getColumnType(i+1) == 93 )
                    Isi[baris][i] = (formatTGL.format(rs.getDate(i+1))==null?"":formatTGL.format(rs.getDate(i+1)));
                    //(rs.getString("seksi")==null?"":rs.getString("seksi").trim())
                else if (
                metaData.getColumnType(i+1) == -6 ||        // -6 tinyint
                metaData.getColumnType(i+1) == 5  ||        // 5 smallint
                metaData.getColumnType(i+1) == 4 )         // 4 int
                    Isi[baris][i] = new Integer(rs.getInt(i+1));
                else if (metaData.getColumnType(i+1) == 3 ||     //3 money
                metaData.getColumnType(i+1) == 7 )          //7 real
                    Isi[baris][i] = new Double(rs.getDouble(i+1));
                else
                    Isi[baris][i] = new String(rs.getString(i+1)==null?"":rs.getString(i+1));
            }
            baris++;
            ///Isi data ke Obyek
            while (rs.next()) {
                Isi [baris] = new Object[jmlKolom];
                for(int i=0; i<jmlKolom; i++) {
                    if (metaData.getColumnType(i+1) == 93 )
                        //Isi[baris][i] = formatTGL.format(rs.getDate(i+1));
                        Isi[baris][i] = (formatTGL.format(rs.getDate(i+1))==null?"":formatTGL.format(rs.getDate(i+1)));
                    else if (
                    metaData.getColumnType(i+1) == -6 ||        // -6 tinyint
                    metaData.getColumnType(i+1) == 5  ||        // 5 smallint
                    metaData.getColumnType(i+1) == 4 )         // 4 int
                        Isi[baris][i] = new Integer(rs.getInt(i+1));
                    else if (metaData.getColumnType(i+1) == 3 ||     //3 money
                    metaData.getColumnType(i+1) == 7 )          //7 real
                        Isi[baris][i] = new Double(rs.getDouble(i+1));
                    else
                        Isi[baris][i] = new String(rs.getString(i+1)==null?"":rs.getString(i+1));
                }
                baris++;
            }
            stmt.close();
        } catch(SQLException ex) {
            System.err.println("SQLException -1: " + ex.getMessage());
        } catch(Exception ex) {
            System.err.println("SQLException -2: " + ex.getMessage());
        }
        return Isi;
    }
    public Object[] getSatuRekord(String SQL) {
        ResultSet rs =null;
        Object[] Isi = new Object[20];
        //        int [] tipeDataKolom = new int[20];
        int baris =0;
        String kata ="";
        try {
            ///con = DriverManager.getConnection(koneksi[1],koneksi[2],koneksi[3]);
            stmt = con.createStatement();
            rs = stmt.executeQuery(SQL);
            // untuk mengetahui berapa kolom dalam hasil ResultSet
            ResultSetMetaData metaData = rs.getMetaData();
            jmlKolom = metaData.getColumnCount();
            tipeDataKol = new int[jmlKolom];
            ///Isi data ke Grid
            while (rs.next()) {
                Isi [baris] = new Object[jmlKolom];
                for(int i=0; i<jmlKolom; i++) {
                    if (metaData.getColumnType(i+1) == 93 )
                        Isi[i] = formatTGL.format(rs.getDate(i+1));
                    else if (
                    metaData.getColumnType(i+1) == -6 ||        // -6 tinyint
                    metaData.getColumnType(i+1) == 5  ||        // 5 smallint
                    metaData.getColumnType(i+1) == 4 )         // 4 int
                        Isi[i] = new Integer(rs.getInt(i+1));
                    else if (metaData.getColumnType(i+1) == 3 ||     //3 money
                    metaData.getColumnType(i+1) == 7 )          //7 real
                        Isi[i] = new Double(rs.getDouble(i+1));
                    else if (metaData.getColumnType(i+1) == 1 || metaData.getColumnType(i+1) == 12 )
                        Isi[i] = new String((kata=rs.getString(i+1))==null?"": kata );
                    else
                        Isi[i] = null;
                    //                        System.out.println(Isi[i].toString());
                }
                baris++;
            }
            stmt.close();
        } catch(SQLException ex) {
            System.err.println("SQLException: " + ex.getMessage());
        }
        return Isi;
    }
    public int getJumlahRekord(String SQL) {
        ResultSet rs =null;
        int baris=0;
        try {
            ///con = DriverManager.getConnection(koneksi[1],koneksi[2],koneksi[3]);
            stmt = con.createStatement();
            rs = stmt.executeQuery(SQL);
            // hitung data yang cocok
            while(rs.next()) {
                baris = rs.getInt(1);
            }
            stmt.close();
        } catch(SQLException ex) {
            System.err.println("SQLException: " + ex.getMessage());
        }
        return baris;
    }
    public void tutupKoneksi() {
        try {
            con.close();
        }catch (Exception exc ) {}
    }
    public int [] getTipeDataKolom() {
        return tipeDataKol;
    }
    public String [] getNamaKolom() {
        return namaKol;
    }
    public int getJmlKolom() {
        return jmlKolom;
    }
    public int getJmlBaris() {
        return jmlBaris;
    }
    public ResultSet setRec(String SQL){
        ResultSet rst=null;
        try{
            stmt = con.createStatement();
            rst = stmt.executeQuery(SQL);
        }catch(SQLException sqlE){
            System.out.print(sqlE.getMessage());
        }
        return rst;
    }
    public Connection con;
    public int limit=100;
    Statement stmt;
    String[] koneksi;
    SimpleDateFormat formatTGL = new SimpleDateFormat("MM-dd-yyyy");
    int jmlKolom,jmlBaris;
    int [] tipeDataKol;
    String [] namaKol= new String[20];
}
%>

Setelah anda membuat file koneksi buat sebuah file index.jsp pada folder chatextjs/chat/index.jsp ketik koding di bawah ini:

<%
	//Buat sesion
	HttpSession ses = request.getSession(true);
	ses.setMaxInactiveInterval(360);
	try{
		String[] sesi = {""};
		ses.setAttribute("user",sesi);

	}catch(Exception ex){}
%>
<html>
<head>
<link rel="stylesheet" type="text/css" href="../css/display.css">
<link rel="stylesheet" type="text/css" href="../js/resources/css/ext-all.css"/>
<!-- GC -->
<!-- LIBS -->
<script type="text/javascript" src="../js/adapter/ext/ext-base.js"></script>
<!-- ENDLIBS -->
<script type="text/javascript" src="../js/ext-all.js"></script>
<!-- Common Styles for the examples -->
<script type="text/javascript" src="index.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<title>Login Room</title>
</head>
<body>
</body>
</html>

Buat juga file index.js yang isinya seperti di bawah ini :

// JavaScript Document
Ext.SSL_SECURE_URL="../images/net.png";
Ext.BLANK_IMAGE_URL="../images/net.png";
Login = function(){
	var dialog, form;
	return{
		Init:function(){
			var logoPanel = new Ext.Panel({
				baseCls: 'x-plain',
				bodyStyle: 'background:#f9f9f9 url(../images/Voice.png) no-repeat center center;',
		        region: 'center'
			});

			var formPanel = new Ext.form.FormPanel({
		        baseCls: 'x-plain',
		        baseParams: {
		        	module: 'login'
		        },
		        bodyStyle: 'background:#f9f9f9 none; color:#222; padding:5px 35px;',
		        defaults: {
		        	width: 150
		        },
		        defaultType: 'textfield',
		        frame: false,
		        height: 70,
		        items: [{
		            fieldLabel: 'User Name',
		            name: 'user',
		            value: 'admin'
		        },{
		            fieldLabel: 'Password',
		            inputType: 'password',
		            name: 'pass',
		            value: 'admin'
		        }],
		        labelWidth:80,
		        region: 'south'
		    });

		   dialog = new Ext.Window({
		        buttons: [{
		        	handler: function(){
		        		form.submit({
							url: 'cekLogin.jsp',
							waitMsg:'Please Wait...',
							reset:true,
							success:Login.Success,
							failure:function() {
								Ext.MessageBox.alert('Status','User atau Password salah');
							},
							scope:Login
						});
		        	},
		        	scope: Login,
		            text: 'Login'
		        }],
		        buttonAlign: 'right',
		        closable: false,
		        draggable: true,
		        height: 350,
		        id: 'login-win',
		        layout: 'border',
		        minHeight: 350,
		        minWidth: 330,
		        plain: false,
		        resizable: true,
		        items: [
		        	logoPanel,
		        	formPanel
		        ],
				title: 'Chat Login',
		        width: 330
		    });

			form = formPanel.getForm();

		    dialog.show();
		},

		Success: function(f,a){
            //Ext.MessageBox.alert('Confirm', a.result.info);
            if(a && a.result){
				dialog.destroy(true);
				window.location = 'main/';
				//window.open('menuutama/main.jsp', '', 'fullscreen=yes, scrollbars=auto');
			}
		}
	};
}();

Ext.BasicForm.prototype.afterAction=function(action, success){
	this.activeAction = null;
	var o = action.options;
	if(o.waitMsg){
		Ext.MessageBox.updateProgress(1);
		Ext.MessageBox.hide();
	}
	if(success){
		if(o.reset){
			this.reset();
		}
		Ext.callback(o.success, o.scope, [this, action]);
		this.fireEvent('actioncompleted', this, action);
	}else{
		Ext.callback(o.failure, o.scope, [this, action]);
		this.fireEvent('actionfailed', this, action);
	}
}
Ext.onReady(Login.Init, Login, true);

Karena pada program di atas memanggil cekLogin.jsp untuk proses pengecekan nya buat juga file cekLogin.jsp :

<%@ include file="../koneksi/koneksi.jsp" %>
<%
	String[] koneksi=new clsKoneksi().strKoneksi;
	classDB kelasDB=new classDB(koneksi);
	String usr=request.getParameter("user");
	String pswd=request.getParameter("pass");
	//Buat sesion
	HttpSession ses = request.getSession(true);
	ses.setMaxInactiveInterval(3600);
	try{
		Object[] isi=kelasDB.getSatuRekord("select * from tools.fn_login('" + usr + "','" + pswd + "')");
		//out.println("Baru2");
		if(isi[0].toString().trim().equals("1")){
			String[] sesi = {usr};
			ses.setAttribute("user",sesi);
			out.println("{success:true}");
		}else{
			String[] sesi = {""};
			ses.setAttribute("user",sesi);
			out.println("{success:false}");
		}
	}catch(Exception ex){}
%>

Nah sampai di sini program sudah mendekati jadi, tapi pasti ada pertanyaan dari pembaca trus gimana masalah scuritynya wah ini ada dosen saya yang bilang security bukanlah product tapi proses nah saya coba memanfaatkan kemampuan dari postgreSQL yaitu dengan membuatkan sebuah function untuk proses login yaitu  fn_login yang terletak pada schema tools pada postgreSQL untuk source anda dapat kopi dari bawah ini :

CREATE OR REPLACE FUNCTION "tools"."fn_login" (usr varchar, pass varchar) RETURNS smallint AS
$body$
declare
  hasil smallint;
begin
  hasil :=0;
  select count(*) into hasil from userproject where userproject.nama=usr
         and userproject.katakunci=md5(pass);
  if not found then
     hasil :=0 ;
  end if;
  return (hasil);
end;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;

Ok sederhana kan functionya. setelah semua siap tinggal jalankan. Selamat mencoba….

Untuk dapat mengikuti perjalanan mbahsomo dan tulisan - tulisannya

silakan masuk ke http://mbahsomo.ucoz.com

Posted by mbahsomo, filed under Pemrograman. Date: September 11, 2008, 7:20 pm | 1 Comment »

Sering kita setelah mebuat suatu program dari Visual basic atau delphi kita buatkan sebuah program package yang akan menjadikan sebuah paket untuk program tersebut sehingga padasaat kita install di komputer lain kaan tinggal klik install dan selesaideh proses instalasinya, kita tidak perlu menginstall software tambahan yang mungkindi butuhkan oleh program tersebut.Nah pada java juga sama kita juga bisa membuatkan sebuah pacage untuk embuat instalasinya, jadi pada saat kita untuk komputer lain maka tinggal install dan tidak perlu lagi konfigurasi - konfigurasi [tapi jangan lupa install JVM].Alat - alat yang di perlukan :

  1. Software advanced installer anda bisa download di alamat resminya klik disini
  2. Project java yang sudah jadi file jar.
  3. Komponen - komponen yang jadi referesninya.
  4. dan yang pasi kompi lengkap …..

Nah ini adalah langkah - langkah yang di lakukan

  1. Install software advanced installer yang sudah di download.
  2. Buka program advanced intaller.
  3. pilih File –>new.
  4. Seterusnya tinggal next … Lihat gambar di bawah.
  5. End Finish

   Setelah semua konfigurasi selesai tinggal Build dan program yang udah jadi jar tadi akan jadi pacage yang tinggal install. dibawah adalah contah hasil package yang sudah selesai. selamat mencoba    Bagi yang ingin download kamus bahasa jawa yang sudah di package klik disini 

Posted by mbahsomo, filed under Lain - Lain. Date: September 8, 2008, 11:04 am | No Comments »

Ternyata ada juga mesin pencarian untuk rapidshare, saya rasa ini sangat berguna sekali buat kita, apalagi teman - teman yang suka untuk download software - software. dengan memanfaatkan kemanpuan dari mesin pencarian ini kita akan dengan mudah dapat mendapatkan software atau juga film2.  langsung aja masukkan url http://www.rsfind.com 

Nah Mudahkan tinggal masukkan url lalu anda akan dapat berselancar untuk melakukan pencari file - file yang ada di rapidshare. setelah memasukkan nama program atau file yang mau di cari akan muncul tampilan seperti pada gambar di bawah ini.

 

lalu pilih file yang kamu oinginkan

 setelah  itu masukkan kode yang di ajurkan oleh brouser anda dan klik download IT maka link dari rapidshare akan mundul 

 Jikaanda memakai Enternet Explorer atau FireFox maka akan muncul tampilan yang berbeda dengan yang ada pada gambar jujur saja saya juga belum melakukan explorasi kenapa untuk IE dan FireFox kok tidak bisa. Untuk dapat melakukan pencarian dengan rsfind saya menggunakan safari atau gunakan Google Chrome brousernya google yang baru. ok Selamat mencoba semoga membantu 

 

Tampilan pada IE 7

Posted by mbahsomo, filed under Lain - Lain. Date: September 4, 2008, 11:36 am | No Comments »

Surabaya tanggal 03 September 2008 kelihatannya website http://www.stan.ac.id/ dan http://www.bppk.depkeu.go.id/ sedang down.

Kemungkinan ini karena banyaknya yang sedang akses. wah gimana nih masak dana besar kok hasilnya seperti ini sangat tidak memuaskan

 

 

Posted by mbahsomo, filed under Lain - Lain. Date: September 3, 2008, 9:53 am | No Comments »