Entries from June 2008

Manipulasi Variabel PL/SQL pada Oracle Heterogeneous System

Date June 26, 2008

Oracle Heterogeneous System. Saya singkat Oracle HS biar enak nulisnya. Apa itu? Oracle HS adalah sistem yang memungkinkan untuk melakukan manipulasi database lain di luar sistem databse yang sedang dihubungi. Sistem lain itu bisa merupakan database Oracle, atau database non-Oracle, misalnya SQL Server atau bahkan MySQL.

Dengan pengaturan sistem Oracle HS ini, kita bisa melakukan query SQL pada database lain tersebut pada session Oracle kita. Misalnya kita ingin fetch data pada suatu tabel di database lain, maka query-nya akan menjadi semacam ini:

SELECT * FROM rfq@hsmsql

Ada penambahan @hsmsql yang menunjukkan database link Oracle HS yang telah di set-up sebelumnya (setup Oracle HS tidak dibahas pada posting ini).

Nah, masalah terjadi ketika Oracle HS digunakan di dalam script PL/SQL. Oracle HS tidak bisa membaca maupun mengisi variabel-variabel PL/SQL. Perhatikan query-query PL/SQL berikut ini:

SELECT Count( * ) INTO v_count FROM rfq@hsmsql

SELECT * FROM rfq@hsmsql WHERE rfqnum = v_rfqnum

Di query biasa tanpa Oracle HS, query di atas bisa berjalan dengan baik. v_count akan berisi jumlah row yang didapat dari tabel rfq, sedangkan query kedua akan terfilter khusus untuk baris yang memiliki rfqnum sama dengan v_rfqnum. Tapi di Oracle HS tidak. Oracle HS tidak dapat memasukkan jumlah Count( * ) ke dalam variabel v_count dan tidak dapat memfilter record rfqnum dengan isi variabel  v_rfqnum.

Solusinya, kita bisa menggunakan mekanisme yang dinamakan Passthrough-SQL. Ada package built-in dari Oracle yang bernama DBMS_HS_PASSTHROUGH yang khusus digunakan untuk mendapatkan data dan/atau sebaliknya dari/ke Oracle HS. Berikut ini adalah cara untuk mendapatkan hasil dari Oracle HS dan disimpan pada variabel PL/SQL

con := DBMS_HS_PASSTHROUGH.open_cursor@hsmsql.world;

DBMS_HS_PASSTHROUGH.parse@hsmsql.world (con,

‘SELECT COUNT( * ) FROM rfq_mxm
WHERE rfqnum = ”’
|| vrfq.rfqnum
|| ””
);

rs := DBMS_HS_PASSTHROUGH.fetch_row@hsmsql.world (con);

DBMS_HS_PASSTHROUGH.get_value@hsmsql.world (con, 1, vcount);

DBMS_OUTPUT.put_line (‘count: ‘ || vcount);

Jika kode di atas dijelaskan secara konseptual, maka langkah-langkahnya adalah sebagai berikut:

  1. Buka kursor HS (pengertian kursor di sini berbeda dengan pengertian PL/SQL cursor)
  2. Query dengan fungsi parse
  3. Tarik hasil setiap baris dan masukkan ke dalam variabel PL/SQL dengan fungsi get_value

Memang jauh lebih rumit, tetapi inilah cara yang paling aman untuk memanipulasi variabel-variabel PL/SQL dengan sistem heterogeneous (Oracle HS).

Artikel terkait:

Ganti Template Lageeee

Date June 25, 2008

Sejak Desember 2007 saya mulai memakai theme tiga kolom dan memilih warna biru. Lama-lama kok bosan dan saya agak kesulitan membaca font Verdana 11px yang imut-imut itu di layar monitor LCD 17″ ber-resolusi 1200 x 1024 px. Akhirnya cari-cari theme di themes.wordpress.net, ketemu theme tiga kolom berwarna hijau ini. Sedikit di-hack untuk memenuhi keinginan saya, antara lain:

  • Menambahkan deskripsi blog yang isinya “ngenes” abis itu (kita tidak bisa bla bla…)
  • Pamer foto-foto flickr sayah :D
  • Last comments
  • Monthly archives
  • Foto-foto flickr di sidebar (menggunakan plugin flickrRSS)
  • Shared items dari Google Reader saya
  • Sedikit bersih-bersih style di sudut sana dan sudut sini

Jadinya, beginilah… cukup memuaskan saya dan memenuhi kebutuhan saya. Hehehehe…

Mengirim Email Lewat Telnet

Date June 25, 2008

Jika halaman web menggunakan protokol HTTP sebagai protokol komunikasi data, maka lalu lintas email menggunakan protokol SMTP sebagai jalur komunikasi. Namun memang protokol SMTP sedikit kalah populer jika dibandingkan dengan protokol HTTP, padahal keduanya merupakan tulang punggung lalu lintas data internet saat ini.

Protokol SMTP sedikit tidak populer eksplorasinya karena jarang sekali kita memerlukan akses protokol tingkat rendah. Semuanya sudah dibungkus oleh perangkat-perangkat mail client seperti misalnya MS Outlook, Mozilla Thunderbird, GMail, Yahoo! Mail, dsb. Bahkan bagi seorang programmer sekalipun, ia pasti lebih sering melakukan query protokol HTTP tingkat rendah macam GET /index.php HTTP/1.1 daripada melakukan query protokol SMTP semacam HELO mailserver.example.com.

Nah, bagaimana sekarang caranya jika kita ingin mengirim email melalui protokol SMTP? Mungkin kita membutuhkan semacam testing untuk memastikan bahwa mailserver berjalan dengan baik. Yang Anda butuhkan hanyalah dua hal: sebuah command prompt dan pastikan bahwa mailserver yang Anda tuju merelay email dari tempat Anda melakukan perintah protokol SMTP. Tentu saja Anda juga harus diizinkan oleh firewall untuk berkomunikasi keluar-masuk lewat port 25 (port umum SMTP Server).

Sejatinya, langkah-langkah berikut adalah langkah yang dilakukan oleh mail client ketika akan mengirim email. Untuk mekanisme email yang memakai lampiran (attachment), prosesnya sedikit lebih kompleks dan tidak dibahas dalam posting ini. Ini adalah langkah-langkah dasar melakukan pengiriman email sederhana dengan SMTP.

[cmd]> telnet mail.example.com 25

Ini adalah perintah untuk berhubungan dengan mail server di alamat mail.example.com pada port 25. Jika berhasil, Anda akan diberi ucapan selamat datang yang merupakan penjelasan singkat dari mail server, misalnya

220 mail.example.com Microsoft ESMTP MAIL Service, Version: 6.0.3790.1830 ready at  Wed, 25 Jun 2008 14:22:53 +0800

Terlihat di sini bahwa kita telah berhasil menghubungi mailserver mail.example.com, dengan jenis server Microsoft ESMTP MAIL Service (ini bawaan Internet Information Service (IIS)-nya Microsoft). Langkah berikutnya, ketik

HELO mail.example.com

Saya nggak tahu siapa penemu protokol ini. Pasti orangnya ceria dan suka humor. Untuk memberi tahu kalau kita ingin mengirim email menggunakan server mail.example.com, kita harus berbaik-baik dengan dia dengan menyapa, “Helo…” :)) . Dan balasan dari server kalau dia siap mengirimkan email tak kalah kocak:

250 mail.example.com Hello mail.example.com [127.0.0.1], pleased to meet you

Itu tadi adalah balasan dari Sendmail. Kemudian ketikkan nama pengirim dan nama yang akan kita tuju:

MAIL FROM: sender@example.com
RCPT TO: recipient@example.com

Jika berhasil, respon dari mail server semacam ini:

250 2.1.0 sender@example.com… Sender ok
250 2.1.0 recipient@example.com… Recipient ok

Bagian berikutnya adalah isi email itu sendiri. Perintahnya adalah

DATA

Kemudian tulis isi email yang akan dikirimkan, termasuk header seperti Subject, Content-Type, dll dituliskan di bagian DATA ini. Akhir dari bagian ini ditandai dengan titik tunggal (.) pada satu baris baru. Misalnya:

Subject: Tes Pengiriman Email [tekan enter dua kali]

Isi email akan ditulis di sini dan diakhiri dengan tanda titik tunggal di baris baru.
.

Respon dari mail server jika isi telah diterima adalah semacam ini:

250 2.6.0 <BDKMAX01DTVuTxkzodI00000009@bdkmax01.corp.vico.co.id> Queued mail for delivery

Kemudian ketik perintah ini untuk putus hubungan dengan mail server.

QUIT

Jika beruntung — dalam artian email Anda oleh mail server tidak dikategorikan sebagai Bad Mail,  email Anda akan terkirim dengan sukses beberapa saat kemudian. Kalau kata orang Jawa sih: tanpa gantalan wektu. Okeh… enjoy!

Lukisan Jiwa

Date June 24, 2008

FLICKR
Lokasi: Waru, Sidoarjo [23 Maret 2008]
Nikon D40 | Sigma 10-20mm HSM

Seandainya tanganku sanggup melukiskan apa yang ada di hatiku
Seandainya kata kata ini cukup untuk mengartikan rasa
Dan saat malam kuterjaga, berharap
Tuhan mempersatukan kita.

Kini,
izinkan aku melihat wajahmu dengan rasa cinta
izinkan aku mengenalmu dari hari ke hari
di sisa hidupku, di sisa hidupmu

Dan izinkan kulukis jiwaku melalui dirimu

[taken from here]

Saya sudah melihat dan membaca puisi ini berkali-kali, tapi hingga sekarang saya masih terheran-heran. Siapa sangka seorang programmer sekaligus network engineer yang begitu freak pemegang CCNA ini adalah sang pujangga yang menulis bait-bait romantis itu. Saya melihat puisi ini waktu hitungan mundur di halaman web itu masih berkisar di angka 1000-an. Waktu berlalu, banyak hal yang telah terjadi. Tak terasa, hitungan mundur itu tinggal tujuh hari lagi. Gerbang menuju kehidupan baru telah terlihat.

Selamat menempuh hidup baru,
Kamas Muhammad dan Purwaning Yudowati

Berkilau

Date June 23, 2008

FLICKR
Lokasi: Depan Universitas Borobudur, Kali Malang, Jakarta Timur
Nikon D40 | Nikkor AF-S 55-200mm VR

Bunga identik dengan kelembutan, melankolis, dan romantisme. Ada yang bilang, katakanlah dengan bunga. Konon, bunga bisa mewakili suara hati. Ada pernyataan cinta, persahabatan, suka cita, bahkan duka cita. Namun, bukan berarti saya sedang melankolis ketika memotret bunga ini. Saya hanya menemukannya di toko bunga di pinggir jalan raya Kali Malang. Putih berkilau. Cantik! Ada yang tahu namanya?

TIPS:
Agar mendapatkan background gelap seperti ini, set metering kamera pada mode Spot Metering. Lambangnya kalau di Nikon adalah kotak dengan satu titik di tengah. Buka diafragma pada posisi bukaan terbesarnya (Nilai F kecil). Steady, tahan napas, dan tekan tombol shutter dengan penuh cinta… klik!