Untuk pengguna yang sering memprediksi datangnya “year of the Linux desktop” — waktunya tampaknya sudah semakin dekat. Jim Zemlin, direktur Linux Foundation mengatakan bahwa tahun depan Linux berkemungkinan digunakan di lebih banyak desktop dibandingkan Windows atau Mac. Yang menjadi katalis pertumbuhan pesat ini adalah fast boot.
Minggu lalu Matt Richtell dari New York Times mempublikasikan sebuah artikel tentang bagaimana konsumen semakin meminta boot yang cepat pada komputer (baca terjemahannya di udaramaya). Ar
tikel tersebut mengatakan bagaimana HP, Dell, Lenovo, Asus maupun berbagai vendor PC lainnya telah mulai merancang komputer yang memberikan pengguna akses ke fungsi-fungsi dasar seperti email dan browser dalam kurang dari 30 detik — dimungkinkan oleh Linux.
Kemudian Ashlee Vance, yang juga bekerja di New York Times menulis sebuah artikel susulan yang mendeskripsikan bagaimana tren ini semakin menguat, mengatakan bahwa “dalam beberapa bulan depan, teknologi instant on akan memasuki segmen mainstream. Di bawah ini adalah beberapa bocoran tentang apa yang akan datang:”
DeviceVM: perusahaan baru Silicon Valley ini telah menjadi pimpinan dari semua vendor aplikasi instant on. HP, Lenovo dan Asus semuanya menggunakan produk Splashtop besutan Device VM yang sudah dimodifikasi. Melalui Splashtop, mereka memberikan akses cepat ke browser, aplikasi foto, instant messaing maupun VoIP kepada pengguna. Vendor-vendor PC terbesar dunia berencana untuk mengemas Splashtop ke dalam laptop. Asus bahkan sudah berkomitmen untuk mengemas Splashtop ke dalam semua motherboard.
HP: hari ini Anda sudah dapat membeli Envy yang datang dengan aplikasi “Instant On Solution,” yang merupakan Splashtop yang sudah dimodifikasi. Dalam beberapa bulan ke depan, HP berencana untuk mengemas solusi yang sama ke berbagai laptop — jumlah pastinya tidak diumumkan.
Lenovo: mulai awal tahun depan, Lenovo akan mengemas Splashtop ke dalam berbagai produk laptop.
Phoenix Technologies: vendor perangkat lunak ini tengah mengembangkan aplikasi bernama HyperSpace yang memungkinkan pengguna untuk terlebih dahulu menggunakan sistem berbasis Linux sementara menunggu boot Windows selesai di latar belakang. Pengguna kemudian dapat secara bergantian menggunakan Linux maupun Windows sesuai kemauan. Aplikasi ini akan tersedia untuk publik mulai bulan Januari tahun depan dengan biaya berbasis subskripsi.
Apa artinya tren ini untuk Linux? Yang pertama adalah fakta bahwa Linux semakin berperan penting dalam pengalaman pemakaian pengguna. Linux tidak saja akan memperkuat aplikasi-aplikasi fast boot, tetapi juga sudah ada pengembang yang mendemonstrasikan sistem Linux penuh yang dapat selesai boot dalam lima detik.
Pada akhir tahun depan, kita mungkin akan melihat keadaan di mana Linux dikemas ke dalam hampir semua notebook tidak peduli apakah komputer tersebut mengoperasikan Windows. Dan ini masih belum menghitung segmen netbook, mobile internet device (MID) dan ponsel Linux yang berpotensi besar — memungkinkan datangnya “year of the Linux desktop,” walaupun mungkin tidak dalam bentuk yang diduga banyak orang beberapa tahun lalu.
Linux
Suatu ketika saya ada keperluan menggunakan fungsi MD5 di oracle. karena mencari-cari fungsi built in di oracle tidak ketemu, atau mungkin tidak ada akhirnya saya memutuskan untuk membuat Java Store Procedure. Untuk mempelajari lebih detail langkah-langkah membuat java store procedure anda bisa melihat postingan sebelumnya Java Store Procedure .
Langkah pertama membuat fungsi md5 di java
import java.security.MessageDigest;
public class MD5 {
public static String getMD5(String message) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
String md5string="";
StringBuffer sb = new StringBuffer();
byte buf[] = message.getBytes();
byte[] md5 = md.digest(buf);
System.out.println(message);
for( int i = 0 ; i < md5.length ; i++ ) {
String tmpStr = "0"+Integer.toHexString( (0xff & md5[i]));
sb.append(tmpStr.substring(tmpStr.length()-2));
}
md5string = sb.toString();
return (md5string);
}
catch (Exception e)
{
System.out.println(e);
return "0";
}
}
}
Kemudian kita compile
Jika tidak ada error akan menghasilkan MD5.class, kemudian kit aload ke oracle
loadjava -resolve -user scott/tiger MD5.class
Publish fungsi Java Store Procedure dengan membuat interface di oracle :
CREATE OR REPLACE FUNCTION GetMD5(str in varchar) RETURN VARCHAR2
as LANGUAGE JAVA
NAME 'MD5.getMD5(java.lang.String) return java.lang.String';
kemudian kita coba
select GetMD5('gatotkaca') from dual;
GETMD5('gatotkaca')
============================
4495ca9b8bb44554754c5ed33a33fef9
selamat mencoba !!!
semua script yang ada pada halaman ini bisa anda download di sini
Java, Oracle
md5, Oracle
Mulai dari Oracle versi 8i oracle menyediakan membuat Java Store Procedure didalam database. Java Store Procedure biasa digunakan untuk membangung fungsi-fungsi yang tidak disediakan di oracle atau utilitas yang mungkin lebih efisien dan mudah dikerjakan menggunakan pemrograman Java. Untuk mengetahui apakah database kita sudah bisa kita gunakan untuk membuat Java Store Procedure kita bis amengecek dengan sintak sebagai berikut :
jika perintah diatas memberikan pesan error seperti :
ERROR:
ORA-04043: object dbms_java does not exist
artinya Package DBMS_JAVA belum terinstall di database kita, solusinya kita harus menginstall package tersebut yang sudah disediakan oleh oracle
#sqlplus / as sysdba
SQL>
@$ORACLE_HOME/javavm/install/initjvm.sql;
@$ORACLE_HOME/xdk/admin/initxml.sql;
@$ORACLE_HOME/xdk/admin/xmlja.sql;
@$ORACLE_HOME/javavm/install/init_jis.sql $ORACLE_HOME;
@$ORACLE_HOME/javavm/install/jisaephc.sql $ORACLE_HOME;
@$ORACLE_HOME/javavm/install/jisja.sql $ORACLE_HOME;
@$ORACLE_HOME/javavm/install/jisdr.sql 2481 2482;
@$ORACLE_HOME/jsp/install/initjsp.sql;
@$ORACLE_HOME/jsp/install/jspja.sql;
@$ORACLE_HOME/rdbms/admin/initjms.sql;
@$ORACLE_HOME/rdbms/admin/initrapi.sql;
@$ORACLE_HOME/rdbms/admin/initsoxx.sql;
@$ORACLE_HOME/rdbms/admin/initapcx.sql;
@$ORACLE_HOME/rdbms/admin/initcdc.sql;
@$ORACLE_HOME/rdbms/admin/initqsma.sql;
@$ORACLE_HOME/rdbms/admin/initsjty.sql;
@$ORACLE_HOME/rdbms/admin/initaqhp.sql;
Jika semua environment sudah terinstall dan siap kita akan membuat Java Store Procedure, berikut langkah-langkahnya :
- Membuat Java Class
Kita ingin membuat fungsi Hello World
public class PrintHello{
public static String Print(String name) {
return "Hello My Name "+name;
}
}
</pre >
Compile Script diatas
<pre lang="java">
javac PrintHello.java
</pre >
<li>Load dan Resolve Java Class ke Oracle</li>
Java class sudah berhasil dihasilkan akan kia load masuk ke database dengan menggunakan utilitas yang sudah disediakan oleh oracle yaitu loadjava
<pre lang="bash">
# loadjava
loadjava: Usage: loadjava [-definer] [-encoding encoding] [-force] [-genmissing] [-genmissingjar jar] [-grant grants] [-help] [-nousage] [-noverify] [-oci8] [-order] [-resolve] [-resolver resolver] [-schema schema] [-synonym] [-thin] [-tableschema schema] [-user user/password@database] [-verbose] classes..jars..resources..properties...
Untuk kasus diatas kita gunakan option sederhana seperti berikut :
loadjava -user scott/tiger PrintHello.class
- Publish Java Class
untuk setiap java class kita harus membuatkan fungsi atau procedure sesuai dengan definisi java class.
SQL>
CREATE OR REPLACE FUNCTION PrintHello(name in varchar2) RETURN VARCHAR2
as LANGUAGE JAVA
NAME 'PrintHello.Print(java.lang.String) return java.lang.String';
- Panggil Store Procedure
Kita coba panggil hasil fungsi di oracle
SQL> select PrintHello('Gatotkaca') from dual;
Java, Oracle
Java, store Procedure
Paling frustasi kalau pake sqlplus, sudah ketik syntax panjang-panjang, waktu dieksekusi ada yang salah, ngetik lagi deh dari awal. Soalnya tidak ada history buat command yang sudah dijalankan. Tidak bisa diedit lagi command yang sudah kita ketik. Solusinya cuma di backspace. 
Tapi tenang saja, ada solusinya agar sqlplus juga punya kemampuan buat menyimpan history command, seperti Shell Bash di Linux. Yang kita perlukan hanyalah sebuah aplikasi yang bernama rlwrap.
Install dulu rlwrap untuk operating system anda. Dalam contoh ini yang digunakan adalah openSUSE 10.3 yang bisa didapatkan dari http://download.opensuse.org/repositories/openSUSE:/10.3/standard/i586/rlwrap-0.28-27.i586.rpm.
Setelah diinstal kita tinggal menjalankan perintah rlwrap dengan parameternya yaitu sqlplus:
oracle@NeuronServer:~> rlwrap sqlplus
Sqlplus yang terbuka akan memiliki kemampuan menyimpan history command dan line editing sederhana. Gunakan tombol panah atas dan bawah untuk mengakses perintah yang sudah kita jalankan. Kita juga bisa mengedit perintah itu dengan menggeser kursor menggunakan tombol panah kanan dan kiri. Agar konfigurasi rlwrap tadi terus dijalankan setiap login kita gunakan saja fungsi alias dari shell agar setiap kali sqlplus dijalankan yang dipanggil adalah perintah rlwrap dengan parameter sqplus-nya. Buka file .bash_profile yang ada di direktori home user oracle atau user yang dapat menjalankan perintah sqlplus:
oracle@NeuronServer:~> vi ~/.bash_profile
dan tambahkan baris berikut:
alias sqlplus='rlwrap sqlplus'
Cara lainnya dengan menjalankan perintah echo yang menambahkan baris diatas langsung di baris terakhir file .bash_profile:
oracle@NeuronServer:~> echo "alias sqlplus='rlwrap sqlplus'" >> ~/.bash_profile
Semoga bermanfaat and have a lot of fun!
Linux, Oracle
alias, history, Linux, Oracle, rlwrap, shell, sqlplus
Definisi Cursor
Dalam blok PL/SQL tidak mengijinkan kita membuat query yang menghasilkan lebih dari satu baris untuk ditampung dalam sebuah variabel. Variabel semacam ini dinamakan cursor.
Kegunaan
- Untuk menerima hasil query yang jumlah barisnya lebih dari 1 baris
- Memungkinkan untuk melakukan proses yang lebih kompleks untuk setiap record
Macam2 Cursor
Cursor : cursor eksplisit dan cursor implisit
- Cursor Eksplisit : Cursor yang harus dideklarasikan terlebih dahulu sebelum digunakan
Contoh :
DECLARE
CURSOR c_nama IS
SELECT nama_petugas FROM pegawai ORDER BY nama_petugas ASC;
v_nama PETUGAS.nama_petugas%TYPE; /**%TYPE agar tipe data variabel v_nama sama dengan kolom nama_petugas?*/
BEGIN
FOR X IN c_nama
LOOP
DBMS_OUTPUT.PUT_LINE (c_nama%ROWCOUNT ||'Daftar Nama Petugas : ' || x.nama_petugas);
END LOOP;
END;
- Cursor Implisit : Cursor yang tidak perlu dideklarasikan dulu pada declare section. contoh cursor implisit diasosiasikan dengan perintah SELECT, INSERT, DELETE, dan UPDATE
Contoh :
DECLARE
id VARCHAR2(10);
vnama_petugas PETUGAS.nama_petugas%TYPE;
BEGIN
id := 'PG-010'; //assigment value
SELECT nama_petugas INTO vnama_petugas FROM PETUGAS WHERE id_petugas = id;
IF SQL%NOTFOUND THEN
DBMS_OUTPUT.PUT_LINE('Data ditemukan');
ELSE
DBMS_OUTPUT.PUT_LINE ('Nama petugas dengan id : ' || id || 'adalah ' || vnama_petugas);
END IF;
END;
Ref Cursor
Kita dapat menggunakan ref cursor untuk mengembalikan nilai dalam bentuk recordset/cursor di store procedure.
Ada 2 tipe ref cursor :
- Strong ref cursor : tipe data dan panjangnya harus diketahui saat compile
- Weak ref cursor : tipe data dan panjangnya tidak dibutuhkan saat compile
Contoh :
declare
type r_cursor IS REF CURSOR;
c_emp r_cursor;
en emp%rowtype;
begin
open c_emp FOR SELECT * FROM emp;
loop
fetch c_emp INTO en;
exit when c_emp%notfound;
dbms_output.put_line(c_emp%rowcount ||'. '||en.nama);
end loop;
close c_emp;
end;
declare
type r_cursor IS REF CURSOR;
c_emp r_cursor;
en emp%rowtype;
begin
open c_emp FOR SELECT * FROM emp;
loop
fetch c_emp INTO en;
exit when c_emp%notfound;
dbms_output.put_line(c_emp%rowcount ||'. '||en.nama);
end loop;
close c_emp;
end;
Menggunakan ref cursor di dalam loop
Contoh :
declare
type r_cursor IS REF CURSOR;
c_emp r_cursor;
type rec_emp IS record
(
deptno varchar2(20),
nama number(6)
);
er rec_emp;
begin
FOR i IN (SELECT deptno,lokasi FROM location)
loop
open c_emp FOR SELECT * FROM emp WHERE deptno = i.deptno;
dbms_output.put_line(i.lokasi);
dbms_output.put_line('--------------');
loop
fetch c_emp INTO er;
exit when c_emp%notfound;
dbms_output.put_line(er.name || ' - ' || er.sal);
end loop;
close c_emp;
end loop;
end;
pada variabel ‘i’ tersedia informasi pada tabel location (deptno, lokasi).
Persamaan dan perbedaan antara cursor dan ref cursor :
Persamaan :
- Untuk menerima hasil query yang jumlah barisnya lebih dari 1 baris
- Memungkinkan untuk melakukan proses yang lebih kompleks untuk setiap record
Perbedaan :
- Sebuah ref cursor dapat diasosiasikan dengan lebih dari 1 klausa SELECT saat run-time. Sebelum klausa SELECT baru, cursor sebelumnya harus ditutup dulu.
Oracle
cursor, Oracle, ref cursor