Lagi UTS

Teman….minggu ini saya sedang menjalani UTS di kampus saya yang baru,BSI(lho kuliah lagi….?). Ya saya kuliah lagi di BSI teman, meskipun sudah pernah kuliah sebelumnya, tapi saya ingin sekali melanjutkan kuliah lagi, kali ini kuliahnya ambil jurusan yang satu jalur dengan pekerjaan saya, Manajemen Informatika. Meski terkesan cuma cari ijazah saja, tapi saya termasuk mahasiswa yang rajin kuliah, semester satu ini aja, tidak pernah saya tidak masuk, kalo telat ya..seringlah..mau gimana..keluat dari kantor jam 5 sore, masuk jam kuliah jam 5 sore juga, jarak dari kantor ke kampus sekitar 30 KM(Dari Kuningan ke Salemba 22…bener ga 30 KM…?).
Nah ini adalah ujian tengah semester saya yang pertama di BSI, menurut istri saya yang juga mahasiswa BSI, Ujiannya enak teman..cuma pilihan ganda…ga ada Essay..yah ..kita lihat saja nanti. Oleh karena UTS ini, saya tidak bisa berfikir mau posting apa buat blog saya ini..yah mudah-mudahan setelah selesai UTS nanti, dapat ide bagus m0 posting apa…Ok Deh Teman mo kerja dulu neehhh…

josescalia

Menggunakan Property File dalam Java untuk Koneksi Database

Keputusan melakukan hardcode (menulis suatu nilai properti) langsung dalam aplikasi kita bukanlah sebuah keputusan yang bijak. Misalnya properti-properti yang berhubungan dengan database. Ketika suatu saat kita mencoba mengganti user atau password dalam database, maka secara otomatis kita juga harus membongkar kembali program kita untuk memperbaiki nilai user atau password. Sungguh suatu yang lumayan merepotkan dan makan waktu.

Di sini saya akan mencoba membuat sebuah program java yang menggunakan properti file sebagai settingan untuk koneksi ke database. Dalam properti file ini nilai-nilai yang mudah berubah seperti user, password, database url, nama database, dan lain-lain akan kita tulis dalam properti file ini, sehingga jika suatu kali ada perubahan dari segi settingan database kita tidak perlu lagi membongkar ulang program-program kita. Cukup hanya dengan mengganti nilai dalam properti file saja.
Langsung saja, Kita memerlukan dua class dan satu file dalam percobaan ini :

  1. Class yang berisi method untuk memanggil file konfigurasi.
  2. Class yang berisi program utama (main program).
  3. File properti yang berisi settingan database.

File pertama ConfigProperties.java

import java.util.Properties;
import java.io.*;


public final class ConfigProperties {
private static ConfigProperties instance;

private static String file_properties = null;
private static Properties ppty = null;

private ConfigProperties() {
// private constructor
}
public static ConfigProperties getInstance( String filename )
throws FileNotFoundException, IOException {

if( instance == null ) {

if ( null == ppty ) {
try {
System.out.println( "LOADING properties......" );

ppty = new Properties();
FileInputStream in = new FileInputStream( filename );
ppty.load( in );
in.close();

}
catch( FileNotFoundException e ) {
throw new FileNotFoundException(
"File - " + filename + " not found in the working directory" );
}
}
}

return instance;
}

/**
* Get the value of the property name.
*
* @param key the property name specified in the properties file.
*
* @return the value of the property name.
*/
static public String getProperty( String key ) {

String str = ppty.getProperty( key );
if ( null == str ) {
System.out.println(
"Warning: attempt to get an non-existant value in property file: " + key );
}

return str;
}
}

Pada file tersebut dapat kita perhatikan bahwa pertama kita mengimport 2 package langsung yaitu package java.io dan package java.util

import java.util.Properties;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.FileInputStream;

Kemudian kita membuat satu method bernama getInstance yang mempunyai parameter String filename,

static  public String getProperty(String key) {
String str = ppty.getProperty(key);
if (null == str) {
System.out.println("Warning: "+
"attempt to get an non-existant value in "+
"property file:" + key);
}
return str;
}
}

dalam method ini kita meng-instansiasi class properties sebagai sebuah obyek baru dalam variable ppty, dimana variable ppty mempunyai tipe data turunan class properties

private  static Properties ppty = null;   //Variabel
// turunan dari Class Properties
ppty = new Properties(); //instansiasi class Properties

Kemudian kita mulai membaca file configuration yang diambil dari inputan parameter dengan menginstansiasi class FileInputStream untuk kemudian dilanjutkan dengan me-load filename tsb ke dalam variabel properties dengan menggunakan method load yang dimiliki oleh class properties tsb

FileInputStream in = new FileInputStream(filename);
// membaca filename dari inputan
// parameter class getInstance
ppty.load(in);
//me-load filename ke dalam Class Properties

Kita dapat melengkapi method getInstance ini dengan cara meletakkan pembacaan file dan loading filename ke dalam block try catch sebagai salah satu usaha kita untuk menjaga kalau-kalau filename yang akan dibaca tidak ada pada tempat yg telah ditentukan.

Selanjutnya kita buat satu method lagi dalam file Class ConfigProperties ini, dimana method ini akan membaca isi dari file yang telah diload. Method ini kita beri nama getProperty dengan parameter String key. Method ini akan mengembalikan nilai String pada penggunaannya nanti.

Dalam method ini kita dapat melihat bahwa jika key yang akan dibaca tidak ada dalam properti filenya maka kita tandai dengan cara memberi tahu user bahwa key tsb tidak exist dalam properti file.

Sampai disini sudah selesai kita membuat file ConfigProperties yang berguna untuk membaca file properties.
Untuk selanjutnya kita akan membuat main class (Kelas Utama) sebagai salah satu cara kita menguji class ConfigProperties yang kita buat di atas.

Kita mulai saja. Main class ini kita beri nama TestConnection.java. berikut penjelasannya:

Pertama kita import dulu package java standar yg kita butuhkan untuk berkomunikasi dengan database yaitu :

  • package java.sql.Connection
  • package java.sql.Driver
  • package java.sql.SQLException


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

Lalu kemudian kita mulai deklarasikan variable yg kita butuhkan:

private  static String db_driver = "db_driver";
private static String db_url = db_url";
private static String db_user = "db_user";
private static String db_pass = "db_pass";
private String sDbDriver;
private String sDbUrl;
private String sDbUser;
private String sDbPass;
private Connection dbConnection;

Keempat variabel yang pertama diatas merupakan variabel static dan variabel ini juga bersifat private dengan tujuan supaya variable ini tidak dapat diakses oleh class lain, karena static maka variabel ini langsung kita isi nilainya dengan string yang akan kita tuliskan ke dalam file configuration nantinya, yaitu “db_driver”, “db_url”, “db_user”, “db_pass”. Sementara keempat variabel kedua juga kita beri sifat private juga dengan tujuan agar variabel ini tidak dapat di akses oleh class lain yang sifatnya public, namun dia tidak static sehingga nanti bisa kita inisialisasi variabel ini. Apa sih bedanya sifat public dengan private? Pertanyaan ini akan saya jawab mungkin dalam tulisan saya berikutnya. Kita lanjutkan…Setelah selesai mendefinisikan variabel, kita akan membuat default constructor dari main class ini. Dimana default constructor ini nantinya akan memanggil sebuah method yang bernama init.

Dalam main class ini, sementara dalam method init ini kita akan menginisialisasikan variable sDbDriver, sDbUrl, sDbUser, sDbPass dengan mengambil nilai dari variable static yang didefinisikan sebelumnya.

public TesConnection() {
init();
}
public void init() {
//inisialisasi variabel
sDbDriver = ConfigProperties.getProperty(db_driver);
sDbUrl = ConfigProperties.getProperty(db_url);
sDbUser = ConfigProperties.getProperty(db_user);
sDbPass = ConfigProperties.getProperty(db_pass);
}

Sekarang kita akan membuat method utama (Main Method) dari class ini. Main method ini secara berurutan akan memanggil

  1. File fisik properti, dalam contoh ini file properti nya akan kita letakkan dalam folder config.
  2. Kita akan mencoba connect ke database.
  3. putuskan koneksi dari database
oleh karena kita akan coba melakukan koneksi ke database, agar lebih rapih kita letakkan code koneksi ke database ini dalam sebuah method dengan nama method connectDB, sehingga pada penggunaannya tinggal kita panggil saja method tsb. Berikut codenya

Dapat kita lihat pada method ini kita menginisialisasi driver database, kemudian melakukan koneksi diwakili dengan variabel dbConnection didalam block try catch.Demikian juga dengan perintah putuskan koneksi dari database kita juga buat saja dalam satu method yang nantinya tinggal kita panggil dalam method utama, berikut code method untuk melakukan pemutusan dari database.

private void disconnectDB() {
System.out.println("Trying to Disconnect DB....");
if(dbConnection !=null){
try{
dbConnection.close();
System.out.println("Disconnecting DB Done..");

}catch(SQLException e){
System.out.println("Exception in Disconnecting DB");
}
}
}
Dalam method ini simple saja hal-hal yang akan kita lakukan yaitu jika dbConnection nya ada atau tidak sama dengan null maka putuskanlah.

Nah sekarang tibalah saatnya kita membuat method utama dari class ini, seperti yang kita tadi rencanakan bahwa method utama dari kelas ini berisi tiga langkah yaitu panggil file fisik configurationnya, lakukan koneksi ke database dan terkahir putuskan hubungan dari database.

Untuk memanggil file fisik dari configuration kita cukup meng-instansiasi class pertama yang kita buat yaitu class ConfigProperties dengan cara meletakkannya di dalam blok try catch. Berikut codenya keseluruhan dalam method utama.


public static void main(String[] args) {
try {
ConfigProperties.getInstance
("config/database_conn.properties");
} catch (Exception e) {
System.out.println("Exception in getProperties=" +
e.getMessage());
}
//initialize Class
TesConnection test = new TesConnection();
//panggil method connectDB
test.connectDB();
// panggil method disconnect
test.disconnectDB();
}
Jika kita gabungkan semua method-method tsb dalam suatu class utama maka akan seperti ini jadinya:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
* Created by IntelliJ IDEA.
* User: Mojo
* Date: Nov 18, 2007
* Time: 7:27:09 PM
* To change this template use File | Settings
* | File Templates.
*/
public class TesConnection {
private static String db_driver = "db_driver";
private static String db_url = "db_url";
private static String db_user = "db_user";
private static String db_pass = "db_pass";

private String sDbDriver;
private String sDbUrl ;
private String sDbUser;
private String sDbPass;
private Connection dbConnection;

public TesConnection() {
init();
}

public void init() {
//inisialisasi variabel
sDbDriver = ConfigProperties.getProperty(db_driver);
sDbUrl = ConfigProperties.getProperty(db_url);
sDbUser = ConfigProperties.getProperty(db_user);
sDbPass = ConfigProperties.getProperty(db_pass);
}
public static void main(String[] args) {
try {
ConfigProperties.getInstance("config"+
"/database_conn.properties");
} catch (Exception e) {
System.out.println("Exception in getProperties=" +
e.getMessage());
}

//initialize Class
TesConnection test = new TesConnection();

//try to Connect
test.connectDB();

//disconnect
test.disconnectDB();

}
private void disconnectDB() {
System.out.println("Trying to Disconnect DB....");
if(dbConnection !=null){
try{
dbConnection.close();
System.out.println("Disconnecting DB Done..");

}catch(SQLException e){
System.out.println("Exception in Disconnecting DB");
}
}


}

private void connectDB() {

System.out.println("Trying to Connect to DataBase...");
try {
Class.forName(sDbDriver);
dbConnection =
DriverManager.getConnection(sDbUrl,sDbUser,sDbPass);
System.out.println(
"Connecting Database Done....");
} catch (SQLException sqle) {
System.out.println("SQLException in ConnectDB=" +
sqle.getMessage());
} catch(Exception e){
System.out.println("Exception in ConnectDB = " +
e.getMessage());

}

}
}
Nah sekarang yg akan kita buat adalah file terakhir yaitu file configurationnya dimana file ini hanya terdiri dari baris-baris yang menjadi properti key yang natinya akan dibaca oleh class ConfigProperties, isi baris tersebut adalah :
  1. db_driver
  2. db_url
  3. db_user
  4. db_pass
Nilai-nilai yang ada dalam File configurasi inilah yg bisa kita ganti-ganti sesuai dengan setting database yang ada pada kita. Berikut isi dari File database_conn.properties
db_url=jdbc:mysql://localhost/test_doang?autoReconnect=true
db_user=root
db_pass=root123
db_driver=com.mysql.jdbc.Driver
Dalam file configuration ini kita bisa lihat bahwa beberapa settingan database kita simpan disini sehingga sewaktu-waktu nanti ada yang berubah dari settingan database tsb, kita hanya merubah nilai-nilai dalama file database_conn.properties ini saja tanpa harus membongkar seluruh aplikasi yang sudah kita compile.
Catatan jangan lupa menambahkan library mysql-connector dalam project ini dan juga menambahkan variable class mysql-connector dalam setting environment Operating System komputer kita ketika kita akan mendeploy aplikasi ini.

Semoga Bermanfaat

josescalia

Membuat Email Bomber dengan PHP

Tahukah kita bahwa ada sebuah fungsi dalam PHP yang mungkin bisa kita gunakan untuk membuat email bomber. Dimana dalam pengertian saya email bomber ini adalah suatu program yang mem-fraud (membanjiri) email seseorang dengan email-email yang tidak bermanfaat sama sekali. Fungsi tersebut adalah mail dengan detail sintaksisnya adalah :
klik untuk memperbesar
Parameter fungsi tersebut sudahlah jelas buat kita bahwa string to mengarah kepada siapa kita akan mengirim email ini, dalam hal ini saya istilahkan target, dan string subject adalah tema email yang akan kita kirimkan dan string message adalah isi email yang akan kita kirimkan kepada target kita.

Konsep email bomber ini cukup sederhana hanya dengan hanya menaruh fungsi mail ini ditengah looping maka jadilah email bomber yang kita inginkan. Biar lebih menarik kita jadikan jumlah looping-nya dinamis. Secara logikanya jumlah looping menjadi sebuah input-an yang akan kita masukkan nilainya ke dalam sebuah variabel, sehingga kita dapat mengontrol berapa banyak email yang mau kita kirimkan ke target. Kita akan membuat file html biasa yang akan kita jadikan form untuk meng-input parameter-parameter yang dibutuhkan, dan sebuah mail engine yang nantinya akan berfungsi mengirimkan email-email tersebut ke target.

Oleh karena type dari fungsi mail ini adalah boolean yang akan mengembalikan nilai true atau false, kita bisa menggunakannya sebagai info ke-user apakah berhasil atau tidak kita mengirimkan email tsb kepada target.

OK kita langsung saja:

1. buat form inputan dengan halaman HTML sederhana.

klik untuk memperbesar

Keterangan :

  • form yang menjadi engine-nya adalah mail_engine.php maka kita masukkan ke dalam variabel html action (action=”mail_engine.php”) dan form ini menggunakan method POST dimana semua variabel yang didefinisikan akan dilempar(post) ke mail_engine.php
  • select -> option kita jadikan suatu pilihan berapa kali user ingin mem-bom email orang ini.

2. Kita buat halaman ke-2 yaitu mail_engine.php

Keterangan :

  • Semua post-ingan akan kita masukkan dalam masing-masing variabel, yaitu variabel $address, $subject, $message, dan $spam. Variabel $spam inilah yang akan menampung nilai jumlah email yang akan kita kirimkan ke target.
  • Dapat kita lihat diatas fungsi mail ini kita taruh dalam blok looping for($i=0; $i<=$spam; $i++), di sini mail akan mengirim sebanyak nilai yang dimasukkan pada variabel $spam.

Demikianlah cara mempergunakan fungsi email dalam php untuk kita jadikan email bomber, semoga bermanfaat.

Tentang saya, Tulisan dan Kegiatan Menulis.

Teman..sudah lama sekali saya tidak menulis, pekerjaan yang tidak pernah memberikan saya kesempatan untuk bisa menulis, memasung saya untuk berhenti melihat bahkan mendalami kegiatan menulis. Terakhir hasil tulisan saya di muat di Tabloid PC Plus sekitar bulan Agustus tahun 2004, waktu itu tulisan saya bertema membuat windows menjadi berbahasa Indonesia. Waduh bangganya saya waktu itu, mengetehui tulisan saya dimuat di tabloid yang merupakan tabloid favorit saya juga. Meski cuma dihargai 175 ribu rupiah saja untuk tiga halaman tabloid yang isinya tulisan saya, saya amat sangat bangga.

Tulisan saya itu berjudul Mengalihbahasakan Sendiri Windows, isinya tentang bagaimana kita membuat windows jadi bahasa yang kita mengerti. Tulisan itu saya buat dikarenakan saya geram membaca berita yang juga datang dari PC Plus. Berita itu memuat tentang rencana Microsoft Windows Indonesia yang sebentar lagi akan meluncurkan Windows Versi Bahasa Indonesia. Seingat saya yang membuat geram saya adalah pihak Microsoft berkata bahwa untuk melucurkan Windows Versi Bahasa Indonesia ini mereka membutuhkan waktu tiga bulan dan melibatkan tiga departemen negara.

Dalam hati saya bergumam saya mampu membuat windows jadi bahasa Indonesia hanya dalam waktu tiga jam. Waktu itu mungkin dianggap sombong oleh orang yang mendengarnya mungkin, untung saja cuma dalam hati saya mengucapkannya jadi tidak mungkin ada orang yang mendengarnnya. Saya cuma kesal kenapa kaum kapitalis punya begitu banyak cara untuk membuat temuannya jadi demikian berkesan, dan saya juga tidak mau melihat bangsa saya dibodohi oleh kaum kapitalis ini.

Saat itu mungkin niat saya cuma satu yaitu membuat temuan Microsoft yang satu ini jadi biasa-biasa saja, tidak boleh heboh. Dan selepas itu saya langsung membuat kerangka tulisan, berhubung waktu saya kuliah dulu saya ambil jurusan Bahasa dan Sastra Indonesia di sebuah Sekolah Tinggi yang kurang terkenal di Jakarta yaitu STKIP PGRI sekarang UNINDRA(Universitas Indra Prasta) namanya. Makanya saya membuat kerangka tulisan dulu baru kemudian malamnya, saya mulai menuliskan tulisan tsb.

Saya mulai start jam 10 malam dan semua selesai sekitar jam ½ 1 malam, setelah itu saya langsung sholat Isya dan kemudian saya tidur. Paginya saya langsung mengetik tulisan saya tersebut ke warnet yang dekat dengan rumah saya, waktu itu saya belum memiliki komputer dan masih juga belum memiliki komputer sampai saya tulis tulisan ini. Setelah itu saya print tulisan tersebut dan kemudian saya langsung memposkan tulisan tersebut menggunakan kilat khusus setelah sebelumnya saya menyelipkan dua buah perangko dengan maksud supaya kalo tulisan saya ini tidak dimuat saya minta supaya naskahnya dikembalikan. Sengaja saya pilih memposkan dan bukannya mengirimkannya lewat email, karena waktu itu saya pikir kalau email akan lama dibuka oleh redaksi PC Plus.

Jelang tiga hari kemudian saya buka email saya, dan ternyata ada inbox yang masuk dua hari yang lalu, dan ternyata pengirimnya PC Plus. Saya sudah menduga sebelumnya ini pasti email yang memberitahukan saya bahwa tulisan saya akan dimuat, dan benar saja ternyata memang demikian isinya. Saya senang sekali waktu itu, sampai email itu pun saya cetak (norak banget).

Akhirnya tulisan saya pun dimuat sekitar awal bulan Agustus 2004 kalo tidak salah, dan seminggu kemudian saya dapat uang imbalannya lewat transfer ke rekening saya. Sampai sekarang saya tidak pernah tahu apakah jadi diluncurkan Windows Versi Bahasa Indonesia tersebut atau tidak, sebab dua hari setelah itu saya diterima bekerja di sebuah perusahaan IT Singapore dengan jabatan Midi Programmer dan mulai sibuk dengan pekerjaan baru saya. Dan kemudian pun saya sudah tidak lagi berlangganan Tabloid PC Plus tsb.

Itulah saat dimana saya menemukan bahwa saya mendapatkan kesenangan tersendiri ketika ada orang membaca tulisan saya dan tulisan saya dihargai oleh orang. Sebelumnya memang saya banyak menulis, tapi bukan tentang komputer dan itupun tulisan saya hanya untuk konsumsi saya sendiri, tidak pernah ada niatan untuk di publish atau ditunjukkan kepada orang lain.

Sekarang melalui blog ini saya akan coba lagi berlatih menulis, dan saya akan mencoba memfokuskan tulisan-tulisan saya nantinya di seputar komputer, berhubung karena saat ini saya sangat tertarik dengan komputer. Dan pekerjaan saya pun memang berhubungan dengan komputer. Dan juga sekarang saya juga sedang kembali kembali ke kampus (Kuliah Lagi di jurusan Manajemen Informatika mudah-mudahan ga pernah ada kata telat buat belajar…)