Jumat, November 12, 2010

Jasa Pembuatan Aplikasi Komputer (Software Development) di Pekanbaru Riau

Software Development

Software Development adalah jasa pembuatan program aplikasi berdasarkan keinginan anda. penerapan program tersebut dapat disesuaikan atas kebutuhan otomatisasi perusahaan, apakah itu berupa sistem penagihan, laporan keuangan atau sistem pemasaran yang terintegrasi dengan seluruh cabang perusahaan.


websiteDari Programmer Untuk Manusia

Setiap software yang kami buat diperuntukan agar dapat dimengerti dan digunakan oleh “manusia biasa”, bukan programmer. Kebanyakan dari pembuat software dewasa ini membuat software yang hanya bisa dimengerti oleh sesama pembuat software lainnya, tidak dengan kami. pada akhirnya, anda akan menggunakan software yang kami buat seperti melangkahkan kaki. Secara natural.


websiteTerintegrasi

User friendly adalah prinsip utama kami dalam proses pembuatan software, hasilnya, setiap modul dari software tersebut akan terintegrasi dalam input dan output laporan-laporan yang anda ciptakan. Kami juga dapat menambahkan fitur export ke dalam berbagai format seperti microsoft office dan pdf, sangat berguna apabila sebelumnya anda terbiasa bekerja menggunakan software tersebut.


Aplikasi Web atau Desktop?

Aplikasi Web
Aplikasi web merupakan sebuah aplikasi yang disampaikan dan kemudian digunakan oleh user melalui jaringan baik intranet maupun internet. Aplikasi web semakin populer karena dari sisi client cukup menggunakan browser sebagai 'client user interface'.
Aplikasi Desktop
Aplikasi desktop merupakan aplikasi yang tersedia pada komputer client dan dikontrol penggunaanya oleh user. Aplikasi desktop dijalankan pada drive lokal drive dan tidak memerlukan jaringan atau untuk berfungsi dengan baik, meskipun jika memerlukan koneksi jaringan aplikasi ini juga berfungsi dengan baik.
untuk informasi lebih lanjut silahkan klik http://www.riauinformatika.com

Jasa Pembuatan eCommerce (toko online) di Pekanbaru Riau

website

Web e-commerce

Jasa Web e-commerce Riau Informatika Solusindo akan memberikan kemudahan bagi costumer anda untuk melakukan transaksi secara online, mudah dan cepat melalui website. Perluas pasar anda secara Internasional melalui Web e-commerce Riau Informatika Solusindo.




websiteIntegrated Shopping Cart

Integrated Shopping Cart RIS adalah jawaban atas katalog item anda, fungsi dari shopping cart tersebut adalah membantu costumer anda untuk melakukan pemesanan dengan kebebasan memilih warna dan ukuran (jika item tersebut relevan), menetapkan kuantitas pemesanan dan check out. Bila anda mempunyai merchant account, shopping cart asacreative dapat terintegrasi dengan pembayaran secara online. Sangat memanjakan costumer anda

untuk informasi lebih lanjut silahkan klik http://www.riauinformatika.com

Jasa Web Customize di Pekanbaru Riau

website

Web Costumize

Jasa Web Costumize Riau Informatika Solusindo akan memperbaharui website lama anda secara menyeluruh ataupun sebagian, berlaku bagi yang telah mempunyai website dan mengalami setidaknya 3 dari 5 tanda-tanda dibawah ini, yaitu:

1. Jumlah pengunjung menurun hingga 50% dari bulan terakhir.
2. Tidak ada lagi klien atau pembeli selama 2 bulan berturut-turut.
3. Banyak email atau komentar pedas dari para pengunjung yang mengkritik website anda.
4. Dalam satu bulan setidaknya website tidak dapat diakses lebih dari 5 kali
5. Rank di berbagai search engine menurun (jika relevan)

Analisa Menyeluruh

Dengan jasa kami, analisa menyeluruh akan dilakukan terhadap website anda. Laporan hasil analisa tersebut akan menentukan perubahan dari website, baik perombakan total maupun sebagian dari layout, coloring, theme, font, hirarki navigasi dan arsitektur informasi.

Untuk informasi lebih lanjut seilahkan klik http://www.riauinformatika.com

Jasa Desain Web (Web Design) Di Pekanbaru RIau

website

Web Design

Jasa Pembuatan Web Design dari Riau Informatika Solusindo akan membawa anda ke level berikutnya dalam hal keindahan dan kegunaan website. Menitikberatkan pada positif "user experience" dan prinsip web 2.0, service yang kami berikan meliputi layout, coloring, theme, font, hirarki navigasi dan arsitektur informasi yang stylish sekaligus usable untuk Website anda.




Ini Rahasia...

Tahukah anda bila sebagian besar orang akan bingung bila suatu website mempunyai warna untuk "link" yang berbeda-beda? Konsistensi adalah salah satu dari banyak hal penting dalam proses mendesain suatu website, contohnya tanda rambu-rambu jalan raya, seluruh dunia memakai pola desain yg relatif sama untuk tanda "stop", coba bayangkan bila di setiap negara tanda untuk "stop" berbeda-beda pola dan desainnya, pasti kita akan bingung, karena harus mempelajari setiap rambu-rambu di lebih dari 20 negara.
Hal tersebut juga berlaku untuk Web Design. Tujuannya adalah dengan belajar satu kali untuk banyak aplikasi sehingga akan tercipta positif "user experience" ketika mengunjungi website anda. Itu baru satu hal, ada banyak hal yang harus diketahui dalam membuat suatu Web Design. Kami menguasai semuanya.

Sampel Web Design

Abstract Portfolio
Portfolio Model Template
Abstract Style Design


Oil Service Company
Corporate Model Template
Profesional Style Design


Interior Designer
Corporate Model Template
Retro Style Design


untuk informasi lebih lanjut silahkan klik http://www.riauinformatika.com

Jasa Web Development di Pekanbaru RIau

Web Development

Jasa Pembuatan Website yang kami berikan meliputi pembuatan Website Dinamis dan Website Statis (per halaman). Salah satu perbedaan diantara keduanya terletak pada cara anda melakukan update baik content maupun gambar. Untuk Website Dinamis tidak ada batas halaman dan memiliki keluasaan lebih untuk berinteraksi dengan costumer anda. Untuk Website Statis, anda akan memerlukan seorang webmaster dalam proses update dari website tersebut.


Tidak Ada Biaya Terusan

Satu harga = unlimited pages. Setiap website yang dibuat mempunyai halaman yang tak terhingga, anda bahkan tidak perlu tergantung kepada kami untuk melakukan perubahan-perubahan pada website. Kami akan memberikan tools yang disebut CMS (Content Management System) pada website yang memungkinkan anda untuk tidak tergantung dan sepenuhnya bebas dari biaya-biaya terusan.
Note: Hanya berlaku pada Website Dinamis.

Nomor 1 di Google?

Bukan hanya membuat website, kami juga akan membantu mencapai tujuan anda yang sebenarnya, apakah itu mencari klien baru, memperkenalkan produk dan promosi ataupun meningkatkan prestise. Selama berada dalam perlindungan Website Asa Protection Plan (WAPP), selama itu juga kami akan membantu meningkatkan jumlah "targeted visitor", artinya bila anda menjual kain batik melalui website, kami akan meningkatkan "page rank" di berbagai search engine untuk kata kunci yang berkaitan dengan tujuan anda, bila anda berada di urutan pertama dalam search engine, prospek anda akan bertambah.

"Bonus Pack"

Lupakan maintenance. Kami memberikan Website Asa Protection Plan (WAPP) untuk 1 tahun pertama. WAPP merupakan service maintenance terbaik yang anda dapatkan. Termasuk website SEO, maintenance, hosting dan CMS (Content Management System).
Note: Hanya berlaku untuk website dinamis.

untuk informasi lebih lanjut silahkan klik http://www.riauinformatika.com

CRM (Customer Relationship Management)

Manajemen Hubungan Pelanggan (bahasa Inggris: Customer Relationship Management disingkat CRM) adalah suatu jenis manajemen yang secara khusus membahas teori mengenai penanganan hubungan antara perusahaan dengan pelanggannya dengan tujuan meningkatkan nilai perusahaan di mata para pelanggannya. Pengertian lain mengatakan bahwa ia adalah sebuah sistem informasi yang terintegrasi yang digunakan untuk merencanakan, menjadwalkan, dan mengendalikan aktivitas-aktivitas prapenjualan dan pascapenjualan dalam sebuah organisasi. CRM melingkupi semua aspek yang berhubungan dengan calon pelanggan dan pelanggan saat ini, termasuk di dalamnya adalah pusat panggilan (call center), tenaga penjualan (sales force), pemasaran, dukungan teknis (technical support) dan layanan lapangan (field service).

Sasaran dan Tujuan

Sasaran utama dari CRM adalah untuk meningkatkan pertumbuhan jangka panjang dan profitabilitas perusahaan melalui pengertian yang lebih baik terhadap kebiasaan (behavior) pelanggan. CRM bertujuan untuk menyediakan umpan balik yang lebih efektif dan integrasi yang lebih baik dengan pengendalian return on investment (ROI) di area ini.
Otomasi Tenaga Penjualan (Sales force automation/SFA), yang mulai tersedia pada pertengahan tahun 80-an adalah komponen pertama dari CRM. SFA membantu para sales representative untuk mengatur account dan track opportunities mereka, mengatur daftar kontak yang mereka miliki, mengatur jadwal kerja mereka, memberikan layanan training online yang dapat menjadi solusi untuk training jarak jauh, serta membangun dan mengawasi alur penjualan mereka, dan juga membantu mengoptimalkan penyampaian informasi dengan news sharing.SFA, pusat panggilan (bahasa inggris:call center) dan operasi lapangan otomatis ada dalam jalur yang sama dan masuk pasaran pada akhir tahun 90-an mulai bergabung dengan pasar menjadi CRM. Sama seperti ERP (bahasa Inggris:Enterprise Resource Planning), CRM adalah sistem yang sangat komprehensif dengan banyak sekali paket dan pilihan.
Merujuk kepada Glen Petersen, penulis buku "ROI: Building the CRM Business Case," sistem CRM yang paling sukses ditemukan dalam organisasi yang menyesuaikan model bisnisnya untuk profitabilitas, bukan hanya merancang ulang sistem informasinya.
CRM mencakup metoda dan teknologi yang digunakan perusahaan untuk mengelola hubungan mereka dengan pelanggan. Informasi yang disimpan untuk setiap pelanggan dan calon pelanggan dianalisa dan digunakan untuk tujuan ini. Proses otomasi dalam CRM digunakan untuk menghasilkan personalisasi pemasaran otomatis berdasarkan informasi pelanggan yang tersimpan di dalam sistem.

Fungsi-fungsi dalam CRM

Sebuah sistem CRM harus bisa menjalankan fungsi:
1. Mengidentifikasi faktor-faktor yang penting bagi pelanggan.
2. Mengusung falsafah customer-oriented (customer centric).
3. Mengadopsi pengukuran berdasarkan sudut pandang pelanggan.
4. Membangun proses ujung ke ujung dalam melayani pelanggan.
5. Menyediakan dukungan pelanggan yang sempurna.
6. Menangani keluhan/komplain pelanggan.
7. Mencatat dan mengikuti semua aspek dalam penjualan.
8. Membuat informasi holistik tentang informasi layanan dan penjualan dari pelanggan.

Mengimplementasikan CRM

Customer relationship management adalah strategi tingkat korporasi, yang berfokus pada pembangunan dan pemeliharaan hubungan dengan pelanggan. Beberapa paket perangkat lunak telah tersedia dengan pendekatan yang berbeda-beda terhadap CRM. Bagaimanapun, CRM bukanlah teknologi itu sendiri, tapi ia adalah pendekatan holistik terhadap falsafah organisasi, yang menekankan hubungan yang erat dengan pelanggan. CRM mengurus filosofi organisasi pada semua tingkatan, termasuk kebijakan dan proses, customer service, pelatihan pegawai, pemasaran, dana manajemen sistem dan informasi. Sistem CRM mengintegrasikan pemasaran, penjualan, dan customer service dari ujung ke ujung.


untuk informasi lebih lanjut klik http://www.riauinformatika.com

ERP (Enterprise Resource Planning

Perencanaan sumber daya perusahaan, atau sering disingkat ERP dari istilah bahasa Inggrisnya, enterprise resource planning, adalah sistem informasi yang diperuntukkan bagi perusahan manufaktur maupun jasa yang berperan mengintegrasikan dan mengotomasikan proses bisnis yang berhubungan dengan aspek operasi, produksi maupun distribusi di perusahaan bersangkutan.

Sejarah



ERP berkembang dari Manufacturing Resource Planning (MRP II) dimana MRP II sendiri adalah hasil evolusi dari Material Requirement Planning (MRP) yang berkembang sebelumnya. Sistem ERP secara modular biasanya menangani proses manufaktur, logistik, distribusi, persediaan (inventory), pengapalan, invoice dan akuntasi perusahaan. Ini berarti bahwa sistem ini nanti akan membantu mengontrol aktivitas bisnis seperti penjualan, pengiriman, produksi, manajemen persediaan, manajemen kualitas dan sumber daya manusia.

Karakter Sistem

ERP sering disebut sebagai Back Office System yang mengindikasikan bahwa pelanggan dan publik secara umum tidak dilibatkan dalam sistem ini. Berbeda dengan Front Office System yang langsung berurusan dengan pelanggan seperti sistem untuk e-Commerce, Customer Relationship Management (CRM), e-Government dan lain-lain.

Modul ERP

Secara modular, software ERP biasanya terbagi atas modul utama yakni Operasi serta modul pendukung yakni Finansial dan akuntasi serta Sumber Daya Manusia.

Keuntungan penggunaan ERP

  1. Integrasi data keuangan, Untuk mengintegrasikan data keuangan sehingga top management bisa melihat dan mengontrol kinerja keuangan perusahaan dengan lebih baik.
  2. Standarisasi Proses Operasi, Menstandarkan proses operasi melalui implementasi best practice sehingga terjadi peningkatan produktivitas, penurunan inefisiensi dan peningkatan kualitas produk
  3. Standarisasi Data dan Informasi, Menstandarkan data dan informasi melalui keseragaman pelaporan, terutama untuk perusahaan besar yang biasanya terdiri dari banyak business unit dengan jumlah dan jenis bisnis yg berbeda-beda.

Penerapan ERP

Berikut ini adalah ringkasan poin-poin yg bisa digunakan sebagai pedoman pada saat implementasi ERP:
  1. ERP adalah bagian dari infrastruktur perusahaan, dan sangat penting untuk kelangsungan hidup perusahaan. Semua orang dan bagian yang akan terpengaruh oleh adanya ERP harus terlibat dan memberikan dukungan
  2. ERP ada untuk mendukung fungsi bisnis dan meningkatkan produktivitas, bukan sebaliknya. Tujuan implementasi ERP adalah untuk meningkatkan daya saing perusahaan
  3. Pelajari kesuksesan dan kegagalan implementasi ERP, jangan berusaha membuat sendiri praktek implementasi ERP. Ada metodologi tertentu untuk implementasi ERP yang lebih terjamin keberhasilannya

untuk informasi lebih lanjut klik http://www.riauinformatika.com

Sabtu, Agustus 04, 2007

Hack Windows XP (SP2) Passwords

Taken from: http://chaidir.wordpress.com/2006/09/24/hack-windows-xp-sp2-passwords/
Apakah anda pernah menggunakan komputer di Lab atau pinjam komputer teman atau bahkan menggunakan komputer di tempat umum? Nah, biasanya klo di Lab (berdasarkan pengalaman pribadi) komputer pasti di-password dan jika ingin masuk harus tanya dulu ke sang empunya. Nah, sekarang kita dapat melihat password dari komputer yang kita gunakan tanpa merestart komputer atau pun tanpa menginstall program apapun seperti Cain, L0pthCrack, dsb. Hanya dibutuhkan sedikit ‘kepercayaan’ untuk meminjam komputer (istilah kerennya social engineering) dan 2 buah program, yaitu pwdump6 dan john the ripper. Tapi klo kebetulan ada login umum dengan tipe administrator, itu namanya Hoki! ga perlu cape2 pinjam login teman lagi :-D.
Sebelumnya mungkin anda pernah mendapatkan tutorial mengenai cara menge-hack password user yang ada Windows XP atau NT menggunakan pwdump. Yup, mungkin tutorial ini akan mirip dengan bagaimana cara menge-hack Windows XP, terutama Windows XP SP2. Lalu apa bedanya dengan tutorial yang lain? Saat ini Windows XP SP2 (atau mungkin juga SP1, CMIIW), menggunakan Syskey untuk memproteksi agar HASH (tempat menyimpan password yang dienkripsi) tidak dapat dibaca dan didump menggunakan pwdump atau samdump. Untuk lebih jelasnya berikut penjelasan mengenai Syskey [1] :
Syskey is a Windows feature that adds an additional encryption layer to the password hashes stored in the SAM database. The main purpose of this feature is to deter ‘offline’ attack. In fact one of the most common ways to gather passwords is to copy the system SAM database and then use one of the many good password crackers to “recover” the passwords; of course physical access is almost always required. So with syskey the attacker needs to remove the additional encryption layer to get the password hashes.
Jika dulu mungkin di Windows NT atau XP (sebelum SP2), kita masih bisa menggunakan pwdump atau bahkan langsung dengan KaHT, maka untuk Windows XP SP2 cara tersebut tidak dapat digunakan lagi (mungkin lebih tepatnya, pwdump tersebut tidak dapat digunakan lagi). Nah disinilah letak perbedaan dengan tutorial sebelumnya. Jika sebelumnya kita menggunakan pwdump versi lama, maka sekarang digunakan pwdump6 yang dikembangkan oleh fizzgig and the foofus.net Team. Kalau baca README dari pwdump6 ini, maka pwdump6 adalah :
pwdump6 is a password hash dumper for Windows 2000 and later systems. It is capable of dumping LanMan and NTLM hashes as well as password hash histories. It is based on pwdump3e, and should be stable on XP SP2 and 2K3. If you have had LSASS crash on you using older tools, this should fix that.
A significantly modified version of pwdump3e, this program is able to extract NTLM and LanMan hashes from a Windows target, regardless of whether Syskey is turned on. It is also capable of displaying password histories if they are available. It outputs the data in L0phtcrack-compatible form, and can write to an output file
Oh iya, agar pwdumpd6 dapat dijalankan dan mendapatkan HASH file dibutuhkan account yang mempunyai akses setara dengan Administrator. Nah, oleh karena itu kita harus menjalankan sedikit social engineering. Bilang aja ketemen kita, klo mengakses workgroup, tapi ga bisa klo pake login biasa. Tapi tenang aja, biasanya secara default orang-orang kebanyakan mebuat user dengan tipe account Administrator. Atau gunakan berbagai macam cara, daya, upaya maupun rayuan agar kita bisa dapat login terlebih dulu.
Jika udah punya akses dengan login tipe adiministrator, cara selanjutnya adalah tinggal menjalankan pwdump6. Jika anda punya flashdisk, simpan dan bawa terus pwdump6 ini kemanapun ada pergi, siapa tahu berguna suatu saat.. :-D. Ok, langsung aja kita jalankan pwdump6 ini. Sebaiknya copy dulu pwdump6 ke Hardisk (jangan dijalankan dari flashdik). Sebelumnya downlod dulu pwdump6 ini dari sini atau download dari mirror situs saya disini.
1. Jalankan CMD (Run->cmd)
2. Jalankan pwdump6 seperti berikut (misalnya PwDump6 berada di folder D:\PwDump6)
D:\PwDump6>PwDump.exe -o pass.txt 127.0.0.1
pwdump6 Version 1.3.0 by fizzgig and the mighty group at foofus.net
Copyright 2006 foofus.net
This program is free software under the GNU
General Public License Version 2 (GNU GPL), you can redistribute it and/or
modify it under the terms of the GNU GPL, as published by the Free Software
Foundation. NO WARRANTY, EXPRESSED OR IMPLIED, IS GRANTED WITH THIS
PROGRAM. Please see the COPYING file included with this program
and the GNU GPL for further details.
Using pipe {C411BDE9-594E-47F4-99B5-E94ADF194A45}
Key length is 16
Completed.
3. Setelah itu akan didapatkan file pass.txt yang berisi daftar user dan password yang masih dienkripsi. Contohnya akan tampak seperti berikut :
ach:1003:2BFA42D08601B951ABD697149E2F5967:73098347042E9109FA584CE843018F4F:::
Administrator:500:934A4750EC9859B3EA397B0F6EC18E34:732BD09D6834DA4A5A30300A6A045BF8:::
coba:1004:FBE4F28EE205F0BA79999C25263AA9AA:A69C199A4DF77CD41FCA6EA916A93868:::
Guest:501:NO PASSWORD********************* :NO PASSWORD*********************:::
HelpAssistant:1000:B3D2AE56C93F27B43C4F8419B1A21E9B: DC3DBB258A10B0C7EA9D92133267B905:::
SUPPORT_388945a0:1002:NO PASSWORD*********************: DF1DB672DA1B5C045ECA2490CA753D3B:::
4. Yosh!! password sudah ditangan. Proses selanjutnya adalah menge-crack file pass.txt dengan bantuan John The Ripper. Sebaiknya simpan dulu file pass.txt ke USB atau upload ke tempat yang aman, karena proses cracking ini bisa dilakukan kapan saja dan dimana saja. Berdasarkan pengalaman, kalau passwordnya tidak terlalu sulit ditebak seperti “adminkeren”, “qwerty123″, biasanya dibutuhkan waktu yang tidak terlalu lama untuk mengecracknya lewat John The Ripper. Tapi kalau password menggunakan kombinasi yang aneh-aneh seperti “P4ssW0rD”, “S03S4h”, dsb, biasanya membutuhkan waktu lama, bisa ditinggal tidur atau maen aja dulu. Ok, sekarang gini nih cara ngecraknya.
Download John The Ripper untuk Windows disini. Untuk komputer yang menggunakan Prosesor AMD, sebaiknya menggunakan “john-mmx.exe”. Atau bagi yang menggunakan intel atau AMD, dapat menggunakan “John-386.exe”. Sebelumnya copy file pass.txt ke dalam folder tempat “John-mmx.exe” atau “John-386.exe” berada (John171w\john1701\run). Setelah itu tinggal jalankan perintah berikut dan tunggu dengan sabar :
D:\john171w\john1701\run>john-mmx.exe pass.txt
Loaded 8 password hashes with no different salts (NT LM DES [64/64 BS MMX])
REN123 (Administrator:2)
TEBAK (coba:2)
ADMINKE (Administrator:1)
MUDAHDI (coba:1)
Yosh!! sekarang passwordnya sudah terlihat secara kasat mata. Jadi password untuk user “Administrator” adalah “adminkeren123″, diperoleh dari menggabungkan Administrator:2 dan Administrator:2.
Administrator:1+Administrator:2 = adminkeren123
Sedangkan untuk user “coba” adalah “mudahditebak”!!
Mudah bukan? Intinya sih tinggal ambil HASH file (password yang dienkripsi) menggunakan pwdump6 lalu crack hasilnya dengan John The Ripper.
Nah, sekarang kalau kita mau pakai komputer teman di Lab, ga usah cari2 orangnnya lagi. Tinggal pake aja langsung user Admin lagi, tapi jangan sampai ketahuan ama dia….. Atau klo anda lupa password Administrator, tidak perlu mereboot komputer, lalu mereset password anda. Tinggal ikut langkah2 diatas aja!
Referensi :
[1]. http://studenti.unina.it/~ncuomo/syskey
Thanks to fizzgig for you great tools, pwdump6 (http://www.foofus.net/fizzgig/pwdump)! I’ve been looking for this tools for a log time ago! Thanks dude!! and Thanks to pen-test@securityfocus.com!
Update : Cara yang lebih mudah dapat ditemukan di Hack Windows XP Password dengan Ophcrack

Senin, Juli 30, 2007

Migrating to Visual Basic.NET from Visual Basic 6 (7) - Summary

Migrating to Visual Basic.NET from Visual Basic 6 - Summary
(Page 7 of 7 )

To summarize, Visual Basic.NET is a totally different platform and upgrading the applications from Visual Basic 6 need to be done carefully. Most of the automatic change is handled well by the Upgrade Wizard. Yet, many a times you will have to make manual changes to the code. It is wiser to anticipate the problems that will be faced by the Upgrade Wizard. So that appropriate changes can be incorporated in the application to be upgraded.

Following steps will summarize the steps required for upgrading a Visual Basic 6 project to Visual Basic.NET
Learn .NET framework and Visual Basic.NET
Prepare your application for Upgrading
Upgrade Wizard is called automatically
It upgrades the application and creates an Upgrade Report alerting you to the errors and warnings
Read and understand the Upgrade report created by the Wizard
Make the changes wherever required

Migrating to Visual Basic.NET from Visual Basic 6 (6) - Control Changes in Visual Basic .NET

Migrating to Visual Basic.NET from Visual Basic 6 - Control Changes in Visual Basic .NET
(Page 6 of 7 )

New controls and objects in Visual Basic .NET replace the intrinsic controls, objects, and collections in Visual Basic 6.0. In some cases, the names have changed; in many cases the properties, methods, and events are different

Control Array changes in Visual Basic .NET

In Visual Basic 6, control arrays could be used for controls of same types. Visual Basic.NET does not support the control arrays.. Visual Basic.NET event handler allows an event to handle multiple controls thereby allowing the programmer to make a group of different controls that share same events.

For example, one single event handler could be written for Click event of a Button control or a CheckBox control in Visual Basic.NET, by specifying names of the controls in the “Handles “ clause of the event handler.

Though this means that Visual Basic..NET does not support index property, it can be easily simulated using Tag property of the control if the need be.

Menu Changes in Visual Basic.NET

In Visual Basic.NET, the menus are designed using MainMenu control and context menus are designed using ContextMenu control.

MDI Changes in Visual Basic.NET

In Visual Basic 6, MDI form has to be added to the project and other forms’ MDIChild property needs to be set to true. In Visual Basic.NET, any form can be made an MDI parent by IsMDIContainer property to true

Dialog Boxes in Visual Basic.NET

Instead of a CommonDialogControl like Visual Basic 6, Visual Basic.NET sports different pre defined dialog controls To show the forms modally, Visual Basic.NET uses ShowModal method.

General changes in Visual Basic.NET
Visual Basic .NET does not support the OLE container control; you should avoid using this control in your Visual Basic 6.0 applications.
There is no shape control in Visual Basic .NET. Square and rectangular shapes will be upgraded to labels, while ovals and circles cannot be upgraded. You should avoid using these in your applications.
There is no line control in Visual Basic .NET. Horizontal and vertical lines are upgraded to labels. Diagonal lines are not upgraded, and you should avoid using them.
Visual Basic .NET has a new set of graphics commands that replace the Form methods Circle, CLS, PSet, Line, and Point. Because the new object model is quite different from Visual Basic 6.0, these methods cannot be upgraded.
For the Timer control, setting the Interval property to 0 does not disable the timer; instead the interval is reset to 1. In your Visual Basic 6.0 projects, you should set Enabled to False instead of setting the Interval to 0.
Visual Basic.NET does not support DDE
Visual Basic.NET does not support Form.PrintForm method
To ensure that the form upgrades to right size, default ScaleMode twips should be used.
Windows Forms support only true-type and open-type fonts. Other fonts than these, if used in the applications will be changed to default font MS Sans Serif

Migrating to Visual Basic.NET from Visual Basic 6 (5) - Programming Recommendations

Migrating to Visual Basic.NET from Visual Basic 6 - Programming Recommendations
(Page 5 of 7 )

In general, it will ease the life of the programmers who want to upgrade their Visual Basic 6 applications, if they keep following points in mind before they upgrade the applications. If they make some necessary changes in advance to their Visual Basic 6 application the upgrade process will definitely be smoother. Let us just go through some of the points that will help application your applications in Visual Basic 6 smoothly

Binding

Though both, Visual Basic 6 as well as Visual Basic.NET support late binding, it can cause problems in upgrade process when resolving default problems. In such cases, it is better to re-write the code using early binding

Let us examine the code written Visual Basic 6 using late binding.

Dim ObjLbl as Object

Set ObjLbl = Me.Label1

ObjLbl.Caption = "Hello"

This code works fine with Visual Basic 6. But, when we try to upgrade it to Visual Basic.NET, the caption property of a Label needs to be changed to Text property. The ObjLbl is type-less and the wizard has no way of knowing what properties it is supposed to change. If you change the first line of the code to “Dim ObjLbl as Label” then the code upgrades just fine.

Dates

Another thing to remember is the Date data type. We should use Date data type for storing dates because, unlike Visual Basic 6, Visual Basic.NET does not support double data type for storing dates.

Default Properties

It will help smoother upgrade if you specify default properties of the controls used in the code. In the above-mentioned code, using ObjLbl.Caption=”Hello” instead of using just ObjLbl = “Hello” will help the wizard in resolving the default property. Though the wizard will try to find out the default properties, it will not be always be successful. Again late bound default properties will inevitably fail.

Zero Bound Arrays

Visual Basic 6 supports arrays with lower bound even other than zero. You have to set the lower bound with LBound statement. When an application with array other than zero is upgraded, the Upgrade Wizard issues an UPGRADE_WARNING saying that the array is converted to LBound zero.

Windows APIs

As the underlying OS is the same, most of the API calls can be used in the same way. Some data types like Long are different than the Visual Basic 6 though here the Upgrade Wizard can take care of the changes. In some cases like Fixed Length Strings that Visual Basic.NET does not inherently support, can cause a problem for the Upgrade Wizard. Also, APIs that support thread creation or windows subclassing can cause a problem in Visual Basic.NET

Considerations for Forms and Controls

In general, we can say that keeping following changes in mind will help us in upgrading the Visual Basic 6 projects.

Forms tasks changes in Visual Basic.NET
Unlike Visual Basic 6, the tab order can be set using the Tab Order from View menu in Visual Basic .NET
Determining modifier keys for mouse and keyboard events is very different from Visual Basic 6. We have to find out value of the key using the keys enumeration and compare it to the class’s modifier method.
When we are aligning and sizing a control in Visual Basic 6, the last control in selection is the reference whereas in Visual Basic .NET it is the first control
For deciding the runtime position of the Form, Visual Basic 6 uses Startup property while Visual Basic .NET uses StartPosition property. Also, instead of Left and Top properties, Visual Basic.NET uses Location property by setting it to a point object
In Visual Basic .NET a GroupBox control is used instead of a Frame
In Visual Basic .NET, a controls collection used instead of a control array to iterate through the controls on the form.

Migrating to Visual Basic.NET from Visual Basic 6 (4) - Upgrade Report

Migrating to Visual Basic.NET from Visual Basic 6 - Upgrade Report
(Page 4 of 7 )

We will have to check up with the Upgrade Report created by the Upgrade Wizard to find out what has happened. The report will be available in the Solutions Explorer. Double click it to open. Expand the Form2 node and you will see that the Upgrade Wizard has not been able to resolve the caption property of the Label1 on Form1.

Visual Basic .NET offers a different Windows Forms package. Which is provided by .NET framework.. Windows Forms and Windows Forms Controls provide a richer interface for developing Windows applications. This means that there are a number of differences between Visual Basic 6 forms and controls and Visual Basic.NET.

Now, open Form1 in the designer by double clicking on it. First thing to be noticed is the ToolTip Control. Remember Visual Basic.NET does not have ToolTip property for the objects? So, what it is trying to tell you is, if you want a ToolTip, add the control to the form.

Code changes

Let us now examine the code. The End command Button and Command2 Button do not require any modifications to the code. So, has the Upgrade Wizard really done any modifications to the code at all? Check the Form2 Command Button. Where is our call to the Show method of Form2?

Aha, here is where we see the real difference in Visual Basic 6 and Visual Basic.NET approach. Visual Basic.NET treats Forms as objects that belong to a class just like any other object and has to be instantiated before calling its methods. The DefInstance property creates an instance of Form2. This could have been handled by using New keyword, but this is just the Wizard’s choice!

Now, open the Form2 code and rectify the error.

Change this code:

Label1.Text = frmdisplay.Label1.Caption

To

Label1.Text = Form1.DefInstance().Label1.Text

The application now runs smoothly.

Now, why did we have to do the modifications ourselves? Why could the wizard not do it? There are two solid reasons for this.

1) There is no exact one to one corresponding way to write the code between Visual Basic 6 and Visual Basic.NET

2) Visual Basic 6 code supports late binding and Visual Basic.NET does not.

Whenever the code encounters situations where it can not change the code, it prefers to draw programmer’s attention to the problem and let the programmer do the job himself. There are four different types of warnings the wizard issues with the help of TO DO comments.
UPGRADE_ISSUES: Indicates compilation errors. These need to be corrected before the application can be compiled and run
UPGRADE_TODO: Though the project compiles well, there will be run time errors
UPGRADE_WARNINGS: Though the project compiles, there may be run time errors
UPGRADE_NOTE: This is a comment for information only. II tells us about any significant modifications handled by the wizard.
Also, when we open the code for Form1, we see it presented differently. Again, Option Explicit is automatically turned on and Option Strict turned off, allowing you to do some implicit conversions.

The block labeled Windows Form Designer also contains code for the design of the form. It tells us how the components on the form are generated, their locations, sizes etc. Though we can manually change this code, it is always a better idea to leave it to the designer. If we need any changes in the look and feel of the form, we could always go back to the designer and make the changes, isn’t it?

Jumat, Juli 27, 2007

Migrating to Visual Basic.NET from Visual Basic 6 (3) - Upgrade Report and Comments

Migrating to Visual Basic.NET from Visual Basic 6 - Upgrade Report and Comments
(Page 3 of 7 )

We have time and again discussed that Visual Basic.NET is not a Visual Basic 6 Deluxe, but a totally different and an altogether new platform, which is compliant to .NET Framework. This does mean that there is no straightforward way to upgrade the existing Visual Basic 6 applications.

Though the Upgrade Wizard handles many of the tasks for us, we have to do some modifications to the code manually. The different programming styles, some ambiguities like late binding, some not supported functions make it impossible to automate the task completely. Upgrading manually will not be possible without knowing Visual Basic.NET and the .NET framework. In other words, there is no shortcut for upgrading your existing applications. You have to learn Visual Basic.NET

Upgrading Your First VB6 Application

Unless we are using Standard edition of Visual Basic .NET, upgrading Visual Basic 6 applications is an almost automatic process in Visual Basic .NET. When you open a Visual Basic 6 application in Visual Basic.NET, the Upgrade Wizard steps in to guide you through the upgrade process. It creates a new Visual Basic.NET application leaving the original project untouched. When the project is upgraded, most of the code is modified to support new syntax and Visual Basic 6 forms are converted to Windows Forms. But, in most of the cases some manual modification is required because certain language features do not have any equivalent in Visual Basic.NET and also the automatic upgrade might not take any advantage of the new features in Visual Basic .NET.

The Upgrade Wizard provides us with following options wherever available.

1) What type of project to create:

If the type of project chosen for upgrading is an ActiveX Exe or ActiveX Document Exe project, we can choose to upgrade it to either exe or dll project. The all the other projects this option is not available and the only other option available is already selected.

2) Generate default interfaces for all public classes

If the project chosen is not a Standard Exe project, then this option specifies how interfaces will be generated in the new project. By default, interfaces will only be generated for public classes that are implemented by other classes in the project. If all public classes option is selected, interfaces will be generated for all public classes even if they are not implemented

3) Location for the project:

This option lets us choose the folder for our new project. By default the project will be placed in a child folder of the current project. Default name of the new project will be projectname.NET.

After the upgrade is complete, the Upgrade Wizard creates an Upgrade report for the project, itemizing the problems if any. It also adds comments to the converted code. They are displayed in the task list window as “To DO” task. Each task is associated with a help topic with a link.

Let us now put the Upgrade Wizard to some work


Create a Project in Visual Basic 6
Add 3 Command Buttons, A Text Box and a label to the form. Name the Command Buttons: Cmdend, cmdForm2, command2

Add Following Code
To the Click event of Cmdend, just add End
To the Click event of Command2, Ask some Text to be displayed in the text Box
In the Click event of the cmdForm2, just add Form2.Show
Give the Label1 some caption.
Add a second form
Have a label on it
In the form load event of this form, add Label1.Caption = Form1.Label1.Caption
Add a Command Button and in the click event just add Unload Me
Run and test the project in Visual Basic 6.
When you are sure that the project is running alright, save it and close Visual Basic 6. This is an important step. Unless the project is running well, the comments and report by the Upgrade Wizard might not be useful. Either the wizard may generate wrong code or might not know what to do.
Open Visual Basic.NET and open the same project. The Upgrade Wizard starts automatically with a welcome screen.


Click on the next button to get the next screen that selects the type of project to be created

As ours is a Standard Exe project, only Exe option is available.



Now, let’s go to the next step and finalize the location of our project.. This done, the wizard just shows its progress while it processes the project. Now that the wizard has upgraded the project, let us examine the report created by it check if any manual changes are required.

Migrating to Visual Basic.NET from Visual Basic 6 (2) - Upgrading to Visual Basic.NET

Migrating to Visual Basic.NET from Visual Basic 6 - Upgrading to Visual Basic.NET
(Page 2 of 7 )

Though VB.NET is a next version of Visual Basic, it takes quite a different approach to development of applications. Visual Basic..NET shifts focus from traditional development of applications to n-tier or web applications. Since, this was a total change of approach, rather than adding new features to the existing version, Visual Basic has been redesigned to facilitate rapid development of these applications.

VB.NET is now fully integrated with other Microsoft .NET languages. We can now use cross language support to develop the Web and n-tier applications easily. To provide full access to the platform and to ensure that Visual Basic moves to the Web development, it was necessary to build an altogether new platform. In order to take full benefit of this, the Visual Basic 6 projects need to be upgraded to Visual Basic.NET.

Once again, due to its totally different nature, upgrading to Visual Basic.NET is not as straight forward as opening a project from Visual Basic 6 in Visual Basic.NET and running it. Though Visual Basic.NET provides a wizard for the job and it automates the task fairly well, there are quite a few things that the developer will have to look into and handle manually.

Architecture Recommendations

The .NET improves upon Visual Basic 6 architectures adding greater support for scalability and distributed applications through ADO.NET’s disconnected data access. Whenever upgrading from Visual Basic 6, it will be beneficial to keep the following points in mind.

Browser Based applications
Use Microsoft multi-tier architecture guidelines, create interface in ASP and develop business logic using Visual Basic
It is mostly not possible to upgrade the DHTML applications and it is best to leave them in Visual Basic 6
ActiveX documents are not supported in Visual Basic.NET. They should either be left in Visual Basic 6 or should be converted to UserControls
Client Server

We should keep in mind that Visual Basic.NET uses a new form package. Though largely compatible, Windows Forms has a different object model.

Visual Basic.NET introduces new middle-tier component, Web Services. Web Services are hosted by ASP.NET and use the http transport. This facilitates penetrating the firewalls. These services pass and return data using XML and hence the information can be used by any platform.

Single Tier

These are the applications that normally store data in let us say Microsoft Access. They will upgrade with some limitations. Visual Basic.NET has moved away from the old extensibility model because of its language neutral approach and hence the extensibility objects will need to be changed to take full advantage of the new model

Data

Visual Basic.NET supports DAO and RDO in a limited sense. It does not support DAO and RDO data binding to controls, data controls or RDO UserConnection. Visual Basic.NET supports the ADO and Microsoft recommends using ADO for connected data requirements in place of DAO and RDO

Upgrading

When the Visual Basic.NET Upgrade Wizard upgrades the code, it changes some of the data types and a few other things.

Variant

Visual Basic 6 supported variant data type, which could be assigned to any primitive data type, Empty, Error, Nothing and null but Visual Basic.NET does not support this data type. The functionality is now given to to object data type

Integer

In Visual Basic.NET, 16-bit whole numbers are called short and integers are now 32-bit numbers while longs are now 64-bit. While upgrading your project, the integers will be converted to short and longs to integers

Properties

The changes in property syntax has now become more intuitive It groups Get and Set together as a part of a single block.

Forms

Visual Basic.NET has a new Forms package and when you upgrade an existing application Visual Basic.NET automatically converts the Visual Basic 6 forms to Visual Basic.NET

Migrating to Visual Basic.NET from Visual Basic 6 1

Migrating to Visual Basic.NET from Visual Basic 6
(Page 1 of 7 )

Those already familiar with Visual Basic shouldn't have to worry about migrating to Visual Basic.NET. In this article Vaijayantee shows us how to upgrade our existing applications to Visual Basic.NET, different .NET variable types, and her own personal programming recommendations. After reading this article you'll be able to migrate from VB6 to VB.NET in no time!Those already familiar with Visual Basic shouldn't have to worry about migrating to Visual Basic.NET. In this article Vaijayantee shows us how to upgrade our existing applications to Visual Basic.NET, different .NET variable types, and her own personal programming recommendations. After reading this article you'll be able to migrate from VB6 to VB.NET in no time!

To test the example code in this article you should have some Visual Basic 6 projects as well as Visual Studio.NET installed on your PC.

Kamis, Juli 26, 2007

100 hari yang berharga

Peter dan Tina sedang duduk bersama di taman kampus tanpa melakukan
apapun, hanya memandang langit sementara sahabat-sahabat mereka
sedang asik bercanda ria dengan kekasih mereka masing-masing.

Tina: "Duh bosen banget. Aku harap aku juga punya pacar yang bisa
berbagi waktu denganku."

Peter: "kayaknya cuma tinggal kita berdua deh yang jomblo. cuma kita
berdua saja yang tidak punya pasangan sekarang."
(keduanya mengeluh dan berdiam beberapa saat)

Tina: "Kayaknya aku ada ide bagus deh. kita adakan permainan yuk?"

Peter: "Eh? permainan apaan?"

Tina: "Eng... gampang sih permainannya. Kamu jadi pacarku dan aku
jadi pacarmu tapi hanya untuk 100 hari saja. gimana menurutmu?"

Peter: "baiklah... lagian aku juga gada rencana apa-apa untuk
beberapa bulan ke depan."

Tina: "Kok kayaknya kamu gak terlalu niat ya... semangat dong! hari
ini akan jadi hari pertama kita kencan. Mau jalan-jalan kemana nih?"

Peter: "Gimana kalo kita nonton saja? Kalo gak salah film The Troy
lagi maen deh. katanya film itu bagus"

Tina: "OK dech.... Yuk kita pergi sekarang. tar pulang nonton kita
ke karaoke ya...
ajak aja adik kamu sama pacarnya biar seru."

Peter : "Boleh juga..."
(mereka pun pergi nonton, berkaraoke dan Peter mengantarkan Tina
pulang malam harinya)

Hari ke 2:
Peter dan Tina menghabiskan waktu untuk ngobrol dan bercanda di
kafe,
suasana kafe yang remang-remang dan alunan musik yang syahdu membawa
hati mereka pada situasi yang romantis. Sebelum pulang Peter membeli
sebuah kalung perak berliontin bintang untuk Tina.

Hari ke 3:
Mereka pergi ke pusat perbelanjaan untuk mencari kado untuk seorang
sahabat Peter.
Setelah lelah berkeliling pusat perbelanjaan, mereka memutuskan
membeli sebuah miniatur mobil mini. Setelah itu mereka beristirahat
duduk di foodcourt, makan satu potong kue dan satu gelas jus berdua
dan mulai berpegangan tangan untuk pertama kalinya.

Hari ke 7:
Bermain bowling dengan teman-teman Peter.
Tangan tina terasa sakit karena tidak pernah bermain bowling
sebelumnya.
Peter memijit-mijit tangan Tina dengan lembut.

Hari ke 25:
Peter mengajak Tina makan malam di Ancol Bay.
Bulan sudah menampakan diri, langit yang cerah menghamparkan ribuan
bintang dalam pelukannya.
Mereka duduk menunggu makanan, sambil menikmati suara desir angin
berpadu dengan suara gelombang bergulung di pantai. Sekali lagi Tina
memandang langit, dan melihat bintang jatuh.
Dia mengucapkan suatu permintaan dalam hatinya.

Hari ke 41:
Peter berulang tahun. Tina membuatkan kue ulang tahun untuk Peter.
Bukan kue buatannya yang pertama, tapi kasih sayang yang mulai
timbul dalam hatinya membuat kue buatannya itu menjadi yang terbaik.
Peter terharu menerima kue itu, dan dia mengucapkan suatu harapan
saat meniup lilin ulang tahunnya.

Hari ke 67:
Menghabiskan waktu di Dufan. Naik halilintar, makan es krim
bersama,dan mengunjungi stand permainan. Peter menghadiahkan sebuah
boneka teddy bear untuk Tina, dan Tina membelikan sebuah pulpen
untuk Peter.

Hari ke 72:
Pergi Ke PRJ. Melihat meriahnya pameran lampion dari negeri China.
Tina penasaran untuk mengunjungi salah satu tenda peramal.
Sang peramal hanya mengatakan "Hargai waktumu bersamanya mulai
sekarang"
kemudian peramal itu meneteskan air mata.

Hari ke 84:
Peter mengusulkan agar mereka refreshing ke pantai.
Pantai Anyer sangat sepi karena bukan waktunya liburan bagi orang
lain.
Mereka melepaskan sandal dan berjalan sepanjang pantai sambil
berpegangan tangan,
merasakan lembutnya pasir dan dinginnya air laut menghempas kaki
mereka.
Matahari terbenam, dan mereka berpelukan seakan tidak ingin berpisah
lagi.

Hari ke 99:
Peter memutuskan agar mereka menjalani hari ini dengan santai dan
sederhana.
Mereka berkeliling kota dan akhirnya duduk di sebuah taman kota.

15:20 pm
Tina: "Aku haus. Istirahat dulu yuk sebentar. "
Peter: "Tunggu disini, aku beli minuman dulu. Aku mau teh botol
saja. Kamu mau minum apa?"
Tina: "Aku saja yang beli. kamu kan capek sudah menyetir keliling
kota hari ini. Sebentar ya"
Peter mengangguk. kakinya memang pegal sekali karena dimana-mana
Jakarta selalu macet.

15:30 pm
Peter sudah menunggu selama 10 menit and Tina belum kembali juga.
Tiba-tiba seseorang yang tak dikenal berlari menghampirinya dengan
wajah panik.
Peter : "Ada apa pak?"
Orang asing: "Ada seorang perempuan ditabrak mobil. Kayaknya
perempuan itu adalah temanmu"
Peter segera berlari bersama dengan orang asing itu.
Disana, di atas aspal yang panas terjemur terik matahari
siang,tergeletak tubuh Tina bersimbah darah, masih memegang botol
minumannya.
Peter segera melarikan mobilnya membawa Tina ke rumah sakit
terdekat.
Peter duduk diluar ruang gawat darurat selama 8 jam 10 menit.
Seorang dokter keluar dengan wajah penuh penyesalan.

23:53 pm
Dokter: "Maaf, tapi kami sudah mencoba melakukan yang terbaik.
Dia masih bernafas sekarang tapi Yang kuasa akan segera menjemput.
Kami menemukan surat ini dalam kantung bajunya."
Dokter memberikan surat yang terkena percikan darah kepada Peter dan
dia segera masuk ke dalam kamar rawat untuk melihat Tina. Wajahnya
pucat tetapi terlihat damai.
Peter duduk disamping pembaringan tina dan menggenggam tangan Tina
dengan erat.
Untuk pertama kali dalam hidupnya Peter merasakan torehan luka yang
sangat dalam di hatinya.
Butiran air mata mengalir dari kedua belah matanya.
Kemudian dia mulai membaca surat yang telah ditulis Tina untuknya.

Dear Peter...
ke 100 hari kita sudah hampir berakhir.
Aku menikmati hari-hari yang kulalui bersamamu.
Walaupun kadang-kadang kamu jutek dan tidak bisa ditebak,
tapi semua hal ini telah membawa kebahagiaan dalam hidupku.
Aku sudah menyadari bahwa kau adalah pria yang berharga dalam
hidupku.
Aku menyesal tidak pernah berusaha untuk mengenalmu lebih dalam lagi
sebelumnya.
Sekarang aku tidak meminta apa-apa, hanya berharap kita bisa
memperpanjang hari-hari kebersamaan kita. Sama seperti yang
kuucapkan pada bintang jatuh malam itu di pantai,
Aku ingin kau menjadi cinta sejati dalam hidupku. Aku ingin menjadi
kekasihmu selamanya dan berharap kau juga bisa berada disisiku
seumur hidupku. Peter, aku sangat sayang padamu.

23:58
Peter: "Tina, apakah kau tahu harapan apa yang kuucapkan dalam hati
saat meniup lilin ulang tahunku?
Aku pun berdoa agar Tuhan mengijinkan kita bersama-sama selamanya.
Tina, kau tidak bisa meninggalkanku! hari yang kita lalui baru
berjumlah 99 hari!
Kamu harus bangun dan kita akan melewati puluhan ribu hari bersama-
sama!
Aku juga sayang padamu, Tina. Jangan tinggalkan aku, jangan biarkan
aku kesepian!
Tina, Aku sayang kamu...!"

Jam dinding berdentang 12 kali.... jantung Tina berhenti berdetak.
Hari itu adalah hari ke 100...



PS:
Katakan perasaanmu pada orang yang kau sayangi sebelum terlambat.
Kau tidak akan pernah tahu apa yang akan terjadi besok.
Kau tidak akan pernah tahu siapa yang akan meninggalkanmu dan tidak
akan pernah kembali lagi.



True love doesn't have a happy ending, because true love never
ends....

**Pudarnya Pesona Cleopatra**

Dengan panjang lebar ibu menjelaskan, sebenarnya sejak ada dalan kandungan aku telah dijodohkan dengan Raihana yang tak pernah kukenal." Ibunya Raihanai adalah teman karib ibu waktu nyantri di pesantren Mangkuyudan Solo dulu" kata ibu.

"Kami pernah berjanji, jika dikarunia anak berlainan jenis akan besanan untuk memperteguh tali persaudaraan. Karena itu ibu mohon keikhlasanmu", ucap beliau dengan nada mengiba.

Dalam pergulatan jiwa yang sulit berhari-hari, akhirnya aku pasrah. Aku menuruti keinginan ibu. Aku tak mau mengecewakan ibu. Aku ingin menjadi mentari pagi dihatinya, meskipun untuk itu aku harus mengorbankan diriku. Dengan hati pahit kuserahkan semuanya bulat-bulat pada ibu. Meskipun sesungguhnya dalam hatiku timbul kecemasan-kecemasan yang datang
begitu saja dan tidak tahu alasannya. Yang jelas aku sudah punya kriteria dan impian tersendiri untuk calon istriku. Aku tidak bisa berbuat apa-apa berhadapan dengan air mata ibu yang amat kucintai. Saat khitbah (lamaran) sekilas kutatap wajah Raihana, benar kata Aida adikku, ia memang baby face dan anggun. Namun garis-garis kecantikan yang kuinginkan tak kutemukan
sama sekali. Adikku, tante Lia mengakui Raihana cantik, "cantiknya alami, bisa jadi bintang iklan Lux lho, asli ! kata tante Lia. Tapi penilaianku lain, mungkin karena aku begitu hanyut dengan gadis-gadis Mesir titisan Cleopatra, yang tinggi semampai, wajahnya putih jel ita, dengan hidung melengkung indah, mata bulat bening khas arab, dan bibir yang merah. Di hari-hari
menjelang pernikahanku, aku berusaha menumbuhkan bibit-bibit cintaku untuk calon istriku, tetapi usahaku selalu sia-sia. Aku ingin memberontak pada ibuku, tetapi wajah teduhnya meluluhkanku. Haripernikahan datang. Duduk dipelaminan bagai mayat hidup, hati hampa tanpa cinta, Pestapun meriah dengan emapt group rebana. Lantunan shalawat Nabipun terasa
menusuk-nusuk hati. Kulihat Raihana tersenyum manis, tetapi hatiku terasa teriris-iris dan jiwaku meronta. Satu-satunya harapanku adalah mendapat berkah dari Allah SWT atas baktiku pada ibuku yang kucintai. Rabbighfir li wa liwalidayya!

Layaknya pengantin baru, kupaksakan untuk mesra tapi bukan cinta, hanya sekedar karena aku seorang manusia yang terbiasa membaca ayat-ayatNya. Raihana tersenyum mengembang, hatiku menangisi kebohonganku dan kepura-puraanku. Tepat dua bulan Raihana kubawa ke
kontrakan dipinggir kota Malang. Mulailah kehidupan hampa. Aku tak menemukan adanya gairah. Betapa susah hidup berkeluarga tanpa cinta. Makan, minum, tidur, dan shalat bersama dengan makhluk yang bernama Raihana, istriku, tapi Masya Allah bibit cintaku belum juga tumbuh. Suaranya yang lembut terasa hambar, wajahnya yang teduh tetap terasa asing. Memasuki bulan keempat, rasa muak hidup bersama Raihana mulai kurasakan, rasa ini muncul begitu saja. Aku mencoba membuang jauh-jauh rasa tidak baik ini, apalagi pada istri sendiri yang seharusnya kusayang dan kucintai. Sikapku pada Raihana mulai lain. Aku lebih banyak diam, acuh tak acuh, agak sinis, dan tidur pun lebih banyak di ruang tamu atau ruang kerja. Aku merasa hidupku ada lah sia-sia, belajar di luar negeri sia-sia, pernikahanku sia-sia, keberadaanku sia-sia.

Tidak hanya aku yang tersiksa, Raihanapun merasakan hal yang sama, karena ia orang yang berpendidikan, maka diapun tanya, tetapi kujawab " tidak apa-apa koq mbak, mungkin aku belum dewasa, mungkin masih harus belajar berumah tangga" Ada kekagetan yang kutangkap diwajah Raihana ketika kupanggil 'mbak', " kenapa mas memanggilku mbak, aku kan istrimu, apa mas sudah tidak mencintaiku" tanyanya dengan guratan wajah yang sedih. "wallahu a'lam" jawabku sekenanya. Dengan mata berkaca-kaca Raihana diam menunduk, tak lama kemudian dia terisak-isak sambil memeluk kakiku, "Kalau mastidak mencintaiku, tidak menerimaku sebagai istri kenapa mas ucapkan akad nikah? Kalau dalam tingkahku melayani mas masih ada yang kurang berkenan, kenapa mas tidak bilang dan menegurnya, kenapa mas diam saja, aku harus bersikap bagaimana untuk membahagiakan mas, kumohon bukalah sedikit hatimu untuk menjadi ruang bagi pengabdianku, bagi menyempurnakan ibadahku didunia ini". Raihana mengiba penuh pasrah. Aku menangis menitikan air mata buka karena Raihana tetapi karena kepatunganku. Hari terus berjalan, tetapi komunikasi kami tidak berjalan. Kami hidup seperti orang asing tetapi Raihana tetap melayaniku menyiapkan segalanya untukku. Suatu sore aku pulang mengajar dan kehujanan, sampai dirumah habis maghrib, bibirku
pucat, perutku belum kemasukkan apa-apa kecuali segelas kopi buatan Raihana tadi pagi, Memang aku berangkat pagi karena ada janji dengan teman. Raihana memandangiku dengan khawatir. "Mas tidak apa-apa" tanyanya dengan perasaan kuatir. "Mas mandi dengan air panas saja, aku sedang menggodoknya, lima menit lagi mendidih" lanjutnya. Aku melepas semua pakaian yang basah. "Mas airnya sudah siap" kata Raihana. Aku tak bicara sepatah katapun, aku langsung ke kamar mandi, aku lupa membawa handuk, tetapi Raihana telah berdiri didepan pintu membawa handuk. "Mas aku buatkan wedang jahe" Aku diam saja. Aku merasa mulas dan mual dalam perutku tak bisa kutahan. Dengan cepat aku berlari ke kamar mandi dan Raihana mengejarku dan memijit-mijit pundak dan tengkukku seperti yang dilakukan ibu. " Mas masuk angin. Biasanya kalau masuk angin diobati pakai apa, pakai balsam, minyak putih, atau jamu?" tanya Raihana sambil menuntunku ke kamar. "Mas jangan diam saja dong, aku kan tidak tahu apa yang harus kulakukan untuk membantu Mas". " Biasanya dikerokin" jawabku lirih. " Kalau begitu kaos mas dilepas ya, biar Hana kerokin" sahut Raihana sambil tangannya melepas kaosku. Aku seperti anak kecil yang dimanja ibunya. Raihana dengan sabar mengerokin
punggungku dengan sentuhan tangannya yang halus. Setelah selesai dikerokin, Raihana membawakanku semangkok bubur kacang hijau. Setelah itu aku
merebahkan diri di tempat tidur. Kulihat Raihana duduk
di kursi tak jauh dari tempat tidur sambil menghafal
Al Quran dengan khusyu. Aku kembali sedih dan ingin
menangis, Raihana manis tapi tak semanis gadis-gadis
mesir titisan Cleopatra. Dalam tidur aku bermimpi
bertemu dengan Cle
opatra, ia mengundangku untuk makan malam di
istananya." Aku punya keponakan namanya Mona Zaki,
nanti akan aku perkenalkan denganmu" kata Ratu
Cleopatra. " Dia memintaku untuk mencarikannya seorang
pangeran, aku melihatmu cocok dan berniat
memperkenalkannya denganmu". Aku mempersiapkan
segalanya. Tepat puku 07.00 aku datang ke istana,
kulihat Mona Zaki dengan pakaian pengantinnya, cantik
sekali. Sang ratu mempersilakan aku duduk di kursi
yang berhias berlian. Aku melangkah maju, belum sempat
duduk, tiba-tiba " Mas, bangun, sudah jam setengah
empat, mas belum sholat Isya" kata Raihana
membangunkanku. Aku terbangun dengan perasaan kecewa.
" Maafkan aku Mas, membuat Mas kurang suka, tetapi Mas
belum sholat Isya" lirih Hana sambil melepas
mukenanya, mungkin dia baru selesai sholat malam.
Meskipun cuman mimpi tapi itu indah sekali, tapi
sayang terputus. Aku jadi semakin tidak suka sama dia,
dialah pemutus harapanku dan mimpi-mimpiku. Tapi
apakah dia bersalah, bukankah dia berbuat
baik membangunkanku untuk sholat Isya.

Selanjutnya aku merasa sulit hidup bersama Raihana,
aku tidak tahu dari mana sulitnya. Rasa tidak suka
semakin menjadi-jadi. Aku benar-benar terpenjara dalam
suasana konyol. Aku belum bisa menyukai Raihana. Aku
sendiri belum pernah jatuh cinta, entah kenapa bisa
dijajah pesona gadis-gadis titisan Cleopatra.

" Mas, nanti sore ada acara qiqah di rumah Yu Imah.
Semua keluarga akan datang termasuk ibundamu. Kita
diundang juga. Yuk, kita datang bareng, tidak enak
kalau kita yang dieluk-elukan keluarga tidak datang"
Suara lembut Raihana menyadarkan pengembaraanku pada
Jaman Ibnu Hazm. Pelan-pelan ia letakkan nampan yang
berisi onde-onde kesukaanku dan segelas wedang jahe.
Tangannya yang halus agak gemetar. Aku dingin-dingin
saja. " Ma??maaf jika mengganggu Mas, maafkan Hana,"
lirihnya, lalu perlahan-lahan beranjak meninggalkan
aku di ruang kerja. " Mbak! Eh maaf, maksudku
D..Din?쪫inda Hana!, panggilku dengan suara parau
tercekak dalam tenggorokan. " Ya Mas!" sahut Hana
langsung menghentikan langkahnya dan pelan-pelan
menghadapkan dirinya padaku. Ia berusaha untuk
tersenyum, agaknya ia bahagia dipanggil "dinda". "
Matanya sedikit berbinar. "Te?ì«¡erima
kasih?쪫i?쫉inda, kita berangkat bareng kesana,
habis sholat dhuhur, insya Allah," ucapku sambil
menatap wajah Hana dengan seny
um yang kupaksakan. Raihana menatapku dengan wajah
sangat cerah, ada secercah senyum bersinar dibibirnya.
" Terima kasih Mas, Ibu kita pasti senang, mau pakai
baju yang mana Mas, biar dinda siapkan? Atau biar
dinda saja yang memilihkan ya?". Hana begitu bahagia.

Perempuan berjilbab ini memang luar biasa, Ia tetap
sabar mencurahkan bakti meskipun aku dingin dan acuh
tak acuh padanya selama ini. Aku belum pernah
melihatnya memasang wajah masam atau tidak suka
padaku. Kalau wajah sedihnya ya. Tapi wajah tidak
sukanya belum pernah. Bah, lelaki macam apa aku ini,
kutukku pada diriku sendiri. Aku memaki-maki diriku
sendiri atas sikap dinginku selama ini., Tapi, setetes
embun cinta yang kuharapkan membasahi hatiku tak juga
turun. Kecantikan aura titisan Cleopatra itu?
Bagaimana aku mengusirnya. Aku merasa menjadi orang
yang paling membenci diriku sendiri di dunia ini.

Acara pengajian dan qiqah putra ketiga Fatimah kakak
sulung Raihana membawa sejarah baru lembaran
pernikahan kami. Benar dugaan Raihana, kami
dielu-elukan keluarga, disambut hangat, penuh cinta,
dan penuh bangga. " Selamat datang pengantin baru!
Selamat datang pasangan yang paling ideal dalam
keluarga! Sambut Yu Imah disambut tepuk tangan bahagia
mertua dan ubundaku serta kerabat yang lain. Wajah
Raihana cerah. Matanya berbinar-binar bahagia. Lain
dengan aku, dalam hatiku menangis disebut pasangan
ideal. Apanya yang ideal. Apa karena aku lulusan Mesir
dan Raihana lulusan terbaik dikampusnya dan hafal Al
Quran lantas disebut ideal? Ideal bagiku adalah
seperti Ibnu Hazm dan istrinya, saling memiliki rasa
cinta yang sampai pada pengorbanan satu sama lain.
Rasa cinta yang tidak lagi memungkinkan adanya
pengkhianatan. Rasa cinta yang dari detik ke detik
meneteskan rasa bahagia. Tapi diriku? Aku belum bisa
memiliki cinta seperti yang dimiliki Raihana. Sambutan
sanak saudara pada
kami benar-benar hangat. Aku dibuat kaget oleh sikap
Raihana yang begitu kuat menjaga kewibawaanku di mata
keluarga. Pada ibuku dan semuanya tidak pernah
diceritakan, kecuali menyanjung kebaikanku sebagai
seorang suami yang dicintainya. Bahkan ia mengaku
bangga dan bahagia menjadi istriku. Aku sendiri dibuat
pusing dengan sikapku. Lebih pusing lagi sikap ibuku
dan mertuaku yang menyindir tentang keturunan. " Sudah
satu tahun putra sulungku menikah, koq belum ada
tanda-tandanya ya, padahal aku ingin sekali menimang
cucu" kata ibuku. " Insya Allah tak lama lagi, ibu
akan menimang cucu, doakanlah kami. Bukankah begitu,
Mas?" sahut Raihana sambil menyikut lenganku, aku
tergagap dan mengangguk sekenanya.

Setelah peristiwa itu, aku mencoba bersikap bersahabat
dengan Raihana. Aku berpura-pura kembali mesra
dengannya, sebagai suami betulan. Jujur, aku hanya
pura-pura. Sebab bukan atas dasar cinta, dan bukan
kehendakku sendiri aku melakukannya, ini semua demi
ibuku. Allah Maha Kuasa. Kepura-puraanku memuliakan
Raihana sebagai seorang istri. Raihana hamil. Ia
semakin manis. Keluarga bersuka cita semua. Namun
hatiku menangis karena cinta tak kunjung tiba. Tuhan
kasihanilah hamba, datangkanlah cinta itu segera.
Sejak itu aku semakin sedih sehingga Raihana yang
sedang hamil tidak kuperhatikan lagi. Setiap saat
nuraniku bertanya" Mana tanggung jawabmu!" Aku hanya
diam dan mendesah sedih. " Entahlah, betapa sulit aku
menemukan cinta" gumamku.

Dan akhirnya datanglah hari itu, usia kehamilan
Raihana memasuki bulan ke enam. Raihana minta ijin
untuk tinggal bersama orang tuanya dengan alas an
kesehatan. Kukabulkan permintaanya dan kuantarkan dia
kerumahnya. Karena rumah mertua jauh dari kampus
tempat aku mengajar, mertuaku tak menaruh curiga
ketika aku harus tetap tinggal dikontrakan. Ketika aku
pamitan, Raihana berpesan, " Mas untuk menambah biaya
kelahiran anak kita, tolong nanti cairkan tabunganku
yang ada di ATM. Aku taruh dibawah bantal, no pinnya
sama dengan tanggal pernikahan kita".

Setelah Raihana tinggal bersama ibunya, aku sedikit
lega. Setiap hari Aku tidak bertemu dengan orang yang
membuatku tidak nyaman. Entah apa sebabnya bisa
demikian. Hanya saja aku sedikit repot, harus
menyiapkan segalanya. Tapi toh bukan masalah bagiku,
karena aku sudah terbiasa saat kuliah di Mesir.

Waktu terus berjalan, dan aku merasa enjoy tanpa
Raihana. Suatu saat aku pulang kehujanan. Sampai rumah
hari sudah petang, aku merasa tubuhku benar-benar
lemas. Aku muntah-muntah, menggigil, kepala pusing dan
perut mual. Saat itu terlintas dihati andaikan ada
Raihana, dia pasti telah menyiapkan air panas, bubur
kacang hijau, membantu mengobati masuk angin dengan
mengeroki punggungku, lalu menyuruhku istirahat dan
menutupi tubuhku dengan selimut. Malam itu aku
benar-benar tersiksa dan menderita. Aku terbangun jam
enam pagi. Badan sudah segar. Tapi ada penyesalan
dalam hati, aku belum sholat Isya dan terlambat sholat
subuh. Baru sedikit terasa, andaikan ada Raihana tentu
aku ngak meninggalkan sholat Isya, dan tidak terlambat
sholat subuh.

Lintasan Raihana hilang seiring keberangkatan
mengajar di kampus. Apalagi aku mendapat tugas dari
universitas untuk mengikuti pelatihan mutu dosen mata
kuliah bahasa arab. Diantaranya tutornya adalah
professor bahasa arab dari Mesir. Aku jadi banyak
berbincang dengan beliau tentang mEsir. Dalam
pelatihan aku juga berkenalan dengan Pak Qalyubi,
seorang dosen bahasa arab dari Medan. Dia menempuh
S1-nya di Mesir. Dia menceritakan satu pengalaman
hidup yang menurutnya pahit dan terlanjur dijalani.
"Apakah kamu sudah menikah?" kata Pak Qalyubi.
"Alhamdulillah, sudah" jawabku. " Dengan orang mana?.
" Orang Jawa". " Pasti orang yang baik ya. Iya kan?
Biasanya pulang dari Mesir banyak saudara yang
menawarkan untuk menikah dengan perempuan shalehah.
Paling tidak santriwati, lulusan pesantren. Istrimu
dari pesantren?". "Pernah, alhamdulillah dia sarjana
dan hafal Al Quran". " Kau sangat beruntung, tidak
sepertiku". " Kenapa dengan Bapak?" " Aku melakukan
langkah yang salah, seandain
ya aku tidak menikah dengan orang Mesir itu, tentu
batinku tidak merana seperti sekarang". " Bagaimana
itu bisa terjadi?". " Kamu tentu tahu kan gadis Mesir
itu cantik-cantik, dank arena terpesona dengan
kecantikanya saya menderita seperti ini. Ceritanya
begini, Saya seorang anak tunggal dari seorang yang
kaya, saya berangkat ke Mesir dengan biaya orang tua.
Disana saya bersama kakak kelas namanya Fadhil, orang
Medan juga. Seiring dengan berjalannya waktu, tahun
pertama saya lulus dengan predkat jayyid, predikat
yang cukup sulit bagi pelajar dari Indonesia. Demikian
juga dengan tahun kedua. Karena prestasi saya, tuan
rumah tempat saya tinggal menyukai saya. Saya
dikenalkan dengan anak gadisnya yang bernama Yasmin.
Dia tidak pakai jilbab. Pada pandangan pertama saya
jatuh cinta, saya belum pernah melihat gadis secantuk
itu. Saya bersumpah tidak akan menikaha dengan
siapapun kecuali dia. Ternyata perasaan saya tidak
bertepuk sebelah tangan. Kisah cinta saya didengar
oleh Fadhi
l. Fadhil membuat garis tegas, akhiri hubungan dengan
anak tuan rumah itu atau sekalian lanjutkan dengan
menikahinya. Saya memilih yang kedua. Ketika saya
menikahi Yasmin, banyak teman-teman yang memberi
masukan begini, sama-sama menikah dengan gadis Mesir,
kenapa tidak mencari mahasiswi Al Azhar yang hafal Al
Quran, salehah, dan berjilbab. Itu lebih selamat dari
pada dengan YAsmin yang awam pengetahuan agamanya.
Tetpai saya tetap teguh untuk menikahinya. Dengan
biaya yang tinggi saya berhasil menikahi YAsmin.
Yasmin menuntut diberi sesuatu yang lebih dari gadis
Mesir. Perabot rumah yang mewah, menginap di hotel
berbintang. Begitu selesai S1 saya kembali ke MEdan,
saya minta agar asset yang di Mesir dijual untuk modal
di Indonesia. KAmi langsung membeli rumah yang cukup
mewah di kota Medan. Tahun-tahun pertama hidup kami
berjalan baik, setiap tahunnya Yasmin mengajak ke
Mesir menengok orang tuanya. Aku masih bisa memenuhi
semua yang diinginkan YAsmin. Hidup terus berjalan,
biaya hidup semakin nambah, anak kami yang ketiga
lahir, tetapi pemasukan tidak bertambah. Saya minta
YAsmin untuk berhemat. Tidak setiap tahun tetapi tiga
tahun sekali YAsmin tidak bisa. Aku mati-matian
berbisnis, demi keinginan Yasmin dan anak-anak
terpenuhi. Sawah terakhir milik Ayah saya jual untuk
modal. Dalam diri saya mulai muncul penyesalan. Setiap
kali saya melihat teman-teman alumni Mesir yang hidup
dengan tenang dan damai dengan istrinya. Bisa
mengamalkan ilmu dan bisa berdakwah dengan baik.
Dicintai masyarakat. Saya tidak mendapatkan apa yang
mereka dapatkan. Jika saya pengin rending, saya harus
ke warung. YAsmin tidak mau tahu dengan masakan
Indonesia. Kau tahu sendiri, gadis Mesir biasanya
memanggil suaminya dengan namanya. Jika ada sedikit
letupan, maka rumah seperti neraka. Puncak penderitaan
saya dimulai setahun yang lalu. Usaha saya bangkrut,
saya minta YAsmin untuk menjual perhiasannya, tetapi
dia tidak mau. Dia malah membandingkan dirinya yang
hidup serb
a kurang dengan sepupunya. Sepupunya mendapat suami
orang Mesir. Saya menyesal meletakkan kecantikan
diatas segalanya. Saya telah diperbudak dengan
kecantikannya. Mengetahui keadaan saya yang terjepit,
ayah dan ibu mengalah. Mereka menjual rumah dan tanah,
yang akhirnya mereka tinggal di ruko yang kecil dan
sempit. Batin saya menangis. Mereka berharap modal itu
cukup untuk merintis bisnis saya yang bangkrut. Bisnis
saya mulai bangkit, Yasmin mulai berulah, dia mengajak
ke Mesir. Waktu di Mesir itulah puncak tragedy yang
menyakitkan. " Aku menyesal menikah dengan orang
Indonesia, aku minta kau ceraikan aku, aku tidak bisa
bahagia kecuali dengan lelaki Mesir". Kata Yasmin yang
bagaikan geledek menyambar. Lalu tanpa dosa dia
bercerita bahwa tadi di KBRI dia bertemu dengan
temannya. Teman lamanya itu sudah jadi bisnisman, dan
istrinya sudah meninggal. Yasmin diajak makan siang,
dan dilanjutkan dengan perselingkuhan. Aku pukul dia
karena tak bisa menahan diri. Atas tindakan itu s
aya dilaporkan ke polisi. Yang menyakitkan adalah tak
satupun keluarganya yang membelaku. Rupanya selama ini
Yasmin sering mengirim surat yang berisi berita
bohong. Sejak saat itu saya mengalami depresi. Dua
bulan yang lalu saya mendapat surat cerai dari Mesir
sekaligus mendapat salinan surat nikah Yasmin dengann
temannya. Hati saya sangat sakit, ketika si sulung
menggigau meminta ibunya pulang".

Mendengar cerita Pak Qulyubi membuatku terisak-isak.
Perjalanan hidupnya menyadarkanku. Aku teringat
Raihana. Perlahan wajahnya terbayang dimataku, tak
terasa sudah dua bualn aku berpisah dengannya.
Tiba-tiba ada kerinduan yang menyelinap dihati. Dia
istri yang sangat shalehah. Tidak pernah meminta
apapun. Bahkan yang keluar adalah pengabdian dan
pengorbanan. Hanya karena kemurahan Allah aku
mendapatkan istri seperti dia. Meskipun hatiku belum
terbuka lebar, tetapi wajah Raihana telah menyala
didindingnya. Apa yang sedang dilakukan Raihana
sekarang? Bagaimana kandungannya? Sudah delapan bulan.
Sebentar lagi melahirkan. Aku jadi teringat pesannya.
Dia ingin agar aku mencairkan tabungannya.

Pulang dari pelatihan, aku menyempatkan ke took baju
muslim, aku ingin membelikannya untuk Raihana, juga
daster, dan pakaian bayi. Aku ingin memberikan
kejutan, agar dia tersenyum menyambut kedatanganku.
Aku tidak langsung ke rumah mertua, tetapi ke
kontrakan untuk mengambil uang tabungan, yang disimpan
dibawah bantal. Dibawah kasur itu kutemukan kertas
merah jambu. Hatiku berdesir, darahku terkesiap. Surat
cinta siapa ini, rasanya aku belum pernah membuat
surat cinta untuk istriku. Jangan-jangan ini surat
cinta istriku dengan lelaki lain. Gila! Jangan-jangan
istriku serong??Dengan rasa takut kubaca surat itu
satu persatu. Dan Rabbi?ì«¡ernyata surat-surat itu
adalah ungkapan hati Raihana yang selama ini aku
zhalimi. Ia menulis, betapa ia mati-matian
mencintaiku, meredam rindunya akan belaianku. Ia
menguatkan diri untuk menahan nestapa dan derita yang
luar biasa. Hanya Allah lah tempat ia meratap
melabuhkan dukanya. Dan ya .. Allah, ia tetap setia
memanjatkan doa untuk k
ebaikan suaminya. Dan betapa dia ingin hadirnya cinta
sejati dariku.

"Rabbi dengan penuh kesyukuran, hamba bersimpuh
dihadapan-Mu. Lakal hamdu ya Rabb. Telah muliakan
hamba dengan Al Quran. Kalaulah bukan karena
karunia-Mu yang agung ini, niscaya hamba sudah
terperosok kedalam jurang kenistaan. Ya Rabbi,
curahkan tambahan kesabaran dalam diri hamba?╈??
tulis Raihana.

Dalam akhir tulisannya Raihana berdoa" Ya Allah inilah
hamba-Mu yang kerdil penuh noda dan dosa kembali
datang mengetuk pintumu, melabuhkan derita jiwa ini
kehadirat-Mu. Ya Allah sudah tujuh bulan ini hamba-Mu
ini hamil penuh derita dan kepayahan. Namun kenapa
begitu tega suami hamba tak mempedulikanku dan
menelantarkanku. Masih kurang apa rasa cinta hamba
padanya. Masih kurang apa kesetiaanku padanya. Masih
kurang apa baktiku padanya? Ya Allah, jika memang
masih ada yang kurang, ilhamkanlah pada hamba-Mu ini
cara berakhlak yang lebih mulia lagi pada suamiku.

Ya Allah, dengan rahmatMu hamba mohon jangan murkai
dia karena kelalaiannya. Cukup hamba saja yang
menderita. Maafkanlah dia, dengan penuh cinta hamba
masih tetap menyayanginya. Ya Allah berilah hamba
kekuatan untuk tetap berbakti dan memuliakannya. Ya
Allah, Engkau maha Tahu bahwa hamba sangat
mencintainya karena-Mu. Sampaikanlah rasa cinta ini
kepadanya dengan cara-Mu. Tegurlah dia dengan
teguran-Mu. Ya Allah dengarkanlah doa hamba-Mu ini.
Tiada Tuhan yang layak disembah kecuali Engkau, Maha
Suci Engkau".

Tak terasa air mataku mengalir, dadaku terasa sesak
oleh rasa haru yang luar biasa. Tangisku meledak.
Dalam tangisku semua kebaikan Raihana terbayang.
Wajahnya yang baby face dan teduh, pengorbanan dan
pengabdiannya yang tiada putusnya, suaranya yang
lembut, tanganya yang halus bersimpuh memeluk kakiku,
semuanya terbayang mengalirkan perasaan haru dan
cinta. Dalam keharuan terasa ada angina sejuk yang
turun dari langit dan merasuk dalam jiwaku. Seketika
itu pesona Cleopatra telah memudar berganti cinta
Raihana yang datang di hati. Rasa sayang dan cinta
pada Raihan tiba-tiba begitu kuat mengakar dalam
hatiku. Cahaya Raihana terus berkilat-kilat dimata.
Aku tiba-tiba begitu merindukannya. Segera kukejar
waktu untuk membagi cintaku dengan Raihana. Kukebut
kendaraanku. Kupacu kencang seiring dengan air mataku
yang menetes sepanjang jalan. Begitu sampai di halaman
rumah mertua, nyaris tangisku meledak. Kutahan dengan
nafas panjang dan kuusap air mataku. Melihat
kedatanganku, ibu m
ertuaku memelukku dan menangis tersedu-sedu. Aku
jadi heran dan ikut menangis. " Mana Raihana Bu?". Ibu
mertua hanya menangis dan menangis. Aku terus bertanya
apa sebenarnya yang telah terjadi. "
Raihana?ì«’strimu..istrimu dan anakmu yang
dikandungnya". " Ada apa dengan dia". " Dia telah
tiada". " Ibu berkata apa!". " Istrimu telah meninggal
seminggu yang lalu. Dia terjatuh di kamar mandi. Kami
membawanya ke rumah sakit. Dia dan bayinya tidak
selamat. Sebelum meninggal, dia berpesan untuk
memintakan maaf atas segala kekurangan dan
kekhilafannya selama menyertaimu. Dia meminta maaf
karena tidak bisa membuatmu bahagia. Dia meminta maaf
telah dengan tidak sengaja membuatmu menderita. Dia
minta kau meridhionya". Hatiku bergetar hebat. "
Ke?ì«•enapa ibu tidak memberi kabar padaku?". "
Ketika Raihana dibawa ke rumah sakit, aku telah
mengutus seseorang untuk menjemputmu di rumah
kontrakan, tapi kamu tidak ada. Dihubungi ke kampus
katanya kamu sedang mengikuti pelatihan. Kami ti
dak ingin mengganggumu. Apalagi Raihana berpesan agar
kami tidak mengganggu ketenanganmu selama pelatihan.
Dan ketika Raihana meninggal kami sangat sedih, Jadi
maafkanlah kami".

Aku menangis tersedu-sedu. Hatiku pilu. Jiwaku remuk.
Ketika aku merasakan cinta Raihana, dia telah tiada.
Ketika aku ingin menebus dosaku, dia telah
meninggalkanku. Ketika aku ingin memuliakannya dia
telah tiada. Dia telah meninggalkan aku tanpa memberi
kesempatan padaku untuk sekedar minta maaf dan
tersenyum padanya. Tuhan telah menghukumku dengan
penyesalan dan perasaan bersalah tiada terkira.

Ibu mertua mengajakku ke sebuah gundukan tanah yang
masih baru dikuburan pinggir desa. Diatas gundukan
itu ada dua buah batu nisan. Nama dan hari wafat
Raihana tertulis disana. Aku tak kuat menahan rasa
cinta, haru, rindu dan penyesalan yang luar biasa. Aku
ingin Raihana hidup kembali.

Dunia tiba-tiba gelap semua?╈??