Sabtu, 25 Agustus 2007

Spam Sopan ??

Tadinya rada jengkel pas dapat lagi spam di salah satu email accountku yang memberlakukan unlimited space. Cuma pas scroll agak kebawah, ada yang menarik, disitu tertulis:

This messages is an advertisement.
Please either click here or visit .... to permanently unsubscribe for all featuring mailings and offers from ....

Pas sudah diklik, kita dibawa ke sebuah halaman web dan disuruh buat ngisi alamat email kita. Cuman entah apa itu cuma akal-akalan or memang beneran bisa; tapi kalau memang benar dan semua yang bikin iklan lewat email bikin hal yang sama, pastinya email akan menjadi sesuatu yang lebih beradab :) ...

NB: Bukankah orang beradab itu sering minta izin dulu untuk masuk rumah kita ???

Jumat, 24 Agustus 2007

Makam Steve Jobs ?????

Coba aja lihat deh ...



Lebih lengkap disini ....

Wew ...Variable uses an Automation type not supported in VBScript

Bikin table seperti ini :


create table mWilayah
(
id int unsigned not null auto_increment,
name varchar(20) default '',
primary key(id)
)
type=InnoDB;


lalu mengambil kode dengan Recordset

Response.Write("Ini ID:" & Rs.Fields("id").value & "<br>")


akan didapat error seperti ini kurang lebih pesannya ....

variable uses an Automation type not supported in VBScript

Fiuh ... bingung sampe harus uninstall MySQL 5.0 ... jadi 4.xxxx, ternyata saat dicari tahu dengan coba sendiri, ketika di bagian field id jadi


....
id int not null auto_increment,
....


semuanya berjalan dengan lancar :)

NB: perhatikan sekarang bukan unsigned lagi).

Selasa, 07 Agustus 2007

MySQL Crash & Recovery

Ada bencana yang tak terduga tadi malam. Entah karena sudah terlalu mengantuk dan tangan sudah mulai gemetar, bencana yang saya takutkan terjadi. Karena saya adalah shell mania dan lebih menyukai hal-hal yang rumit, maka saya lebih suka untuk melakukan administrasi database melalui shell dan bukan tool seperti yang sering orang lain sukai; maka kelangkaan bodoh terjadi saat saya lupa untuk melakukan proses delete table tanpa tambahan perintah WHERE.


DELETE FROM user;


WEw ... akhirnya semua informasi tentang user yang ada di database SISKUM yang saya kelola habis terhapus tanpa sisa. Kepala agak pusing dan mata yang sudah mengantuk menambah gejala kronis sakit hati karena pacar yang tak mau mengerti kegiatan komputer dari pagi sampai malam semakin menjadi!! Sayapun tertidur tanpa ada rasa bersalah sama sekali!

Thanks GOD karena tulisan diatas hanya merupakan sebuah disaster drama that could be happen into your real life ... Namun sebenarnya bukan hanya kesalahan yang dikarenakan human error, tapi juga kesalahan system OS dan berbagai kemungkinan yang terjadi. Karena itulah kemampuan untuk melakukan backup DB adalah kemampuan yang harus dimiliki oleh kita para pengembang.

DI MySQL kita diperkenalkan dengan beberapa materi tentang backup dan recovery DB menggunakan berbagai tool. Tapi saya tidak ingin bersusah menuliskan dan membahas hal tersebut sendiri karena sudah ada manual resmi yang diikutsertakan di instalasi. Selain itu untuk saya sendiri, ada 2 perintah yang paling saya sukai dari pertama saya mengetahui cara backup dan recovery MySQL.

Untuk Backup database.

MSShell> mysqldump -u root -prahasia SISKUM > hasil_dump_formatnya_SQL.sql

Sekarang coba check file hasil proses diatas dan perhatikan bahwa MySQL melakukannya dengan menuliskan langsung perintah SQL yang merupakan kumpulan perintah yang sama persis dengan perintah yang kita jalankan untuk membuat database yang kita miliki. Kalau pada tempat saya file tersebut dibuat di dalam folder bin pada tempat instalasi mysql.

Sedangkan untuk restore keseluruhan database SISKUM saya mempergunakan perintah seperti dibawah ini.

MSShell> mysql -u root -prahasia < hasil_dump_formatnya_SQL.sql

Namun apabila ada error seperti ini :

ERROR 1046 at line 11: No Database Selected

Berarti kita harus menambahkan proses pembuatan database secara manual di file kita tadi. Saya biasanya menambahkan ini pada file tersebut pada bagian paling atas.

CREATE DATABASE SISKUM;
USE SISKUM;

Perintah tersebut sama saja dengan membuat database SISKUM dan kemudian memilihnya agar baris perintah SQL dibawahnya dijalankan. Tapi yang harus diperhatikan, bahwa saya sudah yakin bahwa database SISKUM tidak ada, atau Anda akan mengalami error saat melakukannya lagi.

Lalu barulah kita mengulang perintah tadi yang seharusnya dijalankan tanpa ada pesan error.

MSShell> mysql -u root -prahasia < hasil_dump_formatnya_SQL.sql

Untuk melakukan testing, masuk saja ke mysql dan seharusnya database telah ada.

Thats all ....

Printer Friendly Page

Kali ini tantangan yang muncul adalah pembuatan printer friendly page atau apapun namanya yang akan memberikan fasilitas bagi user untuk melakukan pencetakan halaman yang diinginkannya tanpa harus terlalu banyak melakukan editing dan hasilnya nanti tidak mengikutkan bagian yang tidak penting. Karena aplikasi ini adalah aplikasi berbasis web, maka bagian ini misalnya menu, header, footer dan yang lainnya.

Dimisalkan sebuah halaman web seperti ini:


*--------------------------*
| |
| HEADER SITE |
| |
*--------------------------*
| MENU |
*-----*--------------------*
| | |
| SUB | |
| MENU| DATA |
| | YG |
| | INGIN |
| | DIPRINT |
| | |
*-----*--------------------*
| FOOTER |
*--------------------------*


Sehingga permasalahan kita adalah pada saat user memilih untuk memproses halaman tersebut menjadi printer friendly page, maka yang tampil hanyalah pada bagian DATA YG INGIN DIPRINT.

Namun sebelum hal tersebut kita lanjutkan, sebenarnya terdapat beberapa cara yang dapat dilakukan untuk implementasi printer friendly page. Cara tersebut adalah menggunakan CSS atau membuat suatu mekanisme sendiri. Untuk tulisan ini saya akan menggunakan sebuah mekanisme sendiri untuk mendapatkan halaman yang printer friendly.
Misalkan untuk format halaman web diatas kita menggunakan penulisan kode seperti ini dengan menggunakan table:


<table>
<tr>
<td>
HEADER SITE
</td>
</tr>
<tr>
<td>
MENU
</td>
</tr>
<tr>
<td>
<table>
<tr>
<td> SUB MENU </td>
<td> DATA YANG INGIN DIPRINT </td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
FOOTER
</td>
</tr>
</table>


Untuk mendapatkan kemampuan menampilkan printer friendly page itu saya harus memikirkan sebuah mekanisme untuk memberikan penanda di halaman, dimana penanda tersebut dapat memberikan garis pemisah diantara bagian halaman yang bisa dicetak dan tidak. Penanda tersebut sendiri haruslah compatible dengan syntax yang ada dan tidak akan menimbulkan error pada saat ditampilkan di layar user. Untuk itu saya menggunakan cara yang kuno dengan menggunakan syntax comments di HTML dan tulisan unique di dalamnya. Untuk kesempatan ini saya menggunakan <!--$DPS$--> untuk "Data Print Start" dan <!--$DPE$--> untuk "Data Print End".
Karena itu format halaman web tersebut kodenya ditulis seperti ini ...


...
<td> SUB MENU </td>
<td><!--$DPS$--> DATA YANG INGIN DIPRINT <!--$DPE$--><td>
...


Kemudian permasalahan selanjutnya adalah proses untuk menampilkan halaman yang hanya menampilkan bagian diantara syntax <!--$DPS$--> dan <!--$DPE$-->. Karena saya menggunakan ASP, maka saya mencari tahu dan kemudianmendapatkan cara untuk melakukan eksekusi terhadap suatu halaman dan mendapatkan hasilnya menggunakan object Microsoft.XMLHTTP. Lalu saya tinggal menggunakan property yang dimiliki: Open, Send dan ResponseBody seperti yang ditunjukkan oleh kode dibawah ini; dimana sPageTarget adalah alamat URL lengkap halaman yang ingin kita proses.


....
Set xml_http = Server.CreateObject("Microsoft.XMLHTTP")
Call xml_http.Open( "GET", sPageTarget , false )
xml_http.Send
strContent = xml_http.responseBody
Set xml_http = Nothing
...


Namun hasil proses ini masih dalam format binary, sehingga kita harus melakukan konversi ke karakter dengan membuat sebuah fungsi konversi.


Function BinaryToString(Binary, CharSet)
'--- Converts the binary content to text
Const adTypeText = 2
Const adTypeBinary = 1
'--- Create Stream object
Dim BinaryStream 'As New Stream
Set BinaryStream = CreateObject("ADODB.Stream")
'--- Specify stream type - we want To save text/string data.
BinaryStream.Type = adTypeBinary
'--- Open the stream And write text/string data To the object
BinaryStream.Open
BinaryStream.Write Binary
'--- Change stream type To binary
BinaryStream.Position = 0
BinaryStream.Type = adTypeText
'--- Specify charset For the source text (unicode) data.
If Len(CharSet) > 0 Then
BinaryStream.CharSet = CharSet
Else
BinaryStream.CharSet = "UTF-8"
End If
'--- Open the stream And get binary data from the object
BinaryToString = BinaryStream.ReadText
End Function


Hasil yang didapatkan dari proses tersebut kemudian disimpan di variable strBody lalu diproses dengan algoritma sederhana.


...
strBody = BinaryToString(strContent, "")
content_start = instr(strBody, "") + 12
content_end = instrrev(strBody, "") ' for better feature, we used inStrRev ...
...


Seperti yang Anda tebak, kita tinggal mengambil bagian dari strBody dimulai dari content_start hingga content_end.


...
strBody = mid(strBody, content_start, content_end - content_start)
...


Dari hasil tersebut akan kita dapatkan bagian halaman yang dikatakan orang-orang sebagai printer friendly page :). Tentunya itu adalah dasar dari teknik ini dan sebenarnya kita harus melakukan beberapa percobaan yang lumayan menantang ;), misalkan bagaimana agar hasil proses tersebut bisa ditampilkan sama persis formatnya dengan sebelum dia diproses!
Saya serahkan buat Anda untuk mencoba sendiri :D ...

Selesai deh ...

thanks to www.livio.net

Jumat, 03 Agustus 2007

Rule For ASP & DB Prog.

Berdasarkan pengalaman saya yang masih novice rada advance ini ;) terdapat beberapa aturan penting dalam ASP dan hubungannya dengan pemrograman Database.
Aturan itu antara lain:


  • Selalu On Error Resume Next dilanjutkan dengan On Error Goto 0
    Akan ada 1000 alasan untuk kemalasan, tapi akan ada 1 alasan untuk membuat program Anda tidak berjalan dengan baik. Memang On Error Resume next adalah syntax yang sangat powerfull untuk memerintahkan program mengeksekusi baris selanjutnya walaupun ditemukan terdapatnya error. Tapi tahukah Anda, pada program yang menggunakan database yang sangat intents hal ini merupakan sebuah mimpi buruk karena dapat mengakibatkan server anda mengalami penurunan performance ?

  • Selalu bunuh object yang sudah Anda buat
    Memang secara otomatis ASP akan menghancurkan object yang Anda buat pada akhir script. Tapi tahukah Anda pada beberapa kasus object yang Anda buat tidak demikian saja terhapus oleh ASP? Kembali lagi pada proses yang terjadi pada aplikasi dengan menggunakan database, object yang tidak dihapus dapat meninggalkan jejak tak terlihat yang akan terus didiamkan atau dieksekusi oleh server dan memakan sebagian resource server Anda

  • Pada intinya
    jadilah programmer yang konvensional, kukuh dalam menjalankan sprit aturan pemrograman yang baik, setia pada satu aturan dan tidak poligami, serta tidak mendukung partai demokrat dan juga republikan (kok kayak USA :D). Daripada Anda harus melakukan tracing terhadap beribu baris program Anda pada saat sudah di gunakan oleh user Anda tersayang :) ...

  • Terakhir
    Jangan terlalu serius dengan tulisan ini :D ... karena you are is what you are ... (duenk ... )

Paging with MySQL dan ASP

Fiuh .. hari yang berat untuk pengguna MySQL dengan ASP hari ini. Saya sudah mendapatkan cara untuk terhubung dengan server MySQL, tapi saya hanya bisa menampilkan keseluruhan isi table di database saya dalam satu halaman. Bagaimana dengan permasalahan penampilannya yang bisa dilakukan dalam halaman yang terpisah?

Pertama kali saya kira bisa dilakukan dengan cara yang sama dengan yang dilakukan dengan MS Access, dengan adoConn adalah ADODB.Connection dan adoRS adalah ADODB.Recordset serta property Recordset yaitu PageSize dan AbsolutePage.


Call adoRS.Open(SQLQuery, adoConn, 3, 1)
if NOT (adoRS.Eof OR adoRS.Bof) Then
adoRS.PageSize = mPageSize
adoRS.AbsolutePage = mCurrentPage
...

Namun saat dijalankan, data yang saya harapkan tampil malah tidak ada.

Berbagai cara saya lakukan hingga saya menggunakan cara manual dengan melakukan pengambilan jumlah record yang dihasilkan dan memanipulasi query di mySQL Query dengan menambahkan syntax LIMIT pada SQLQuery menggunakan sebuah fungsi yang saya buat sendiri bernama SetQueryTop( ... ) seperti yang terlihat dibawah ini.


Call adoRS.Open(SQLQuery, adoConn, 3, 1)
if NOT (moCommonRS.Eof or moCommonRS.Bof) Then
moCommonRS.PageSize = mPageSize
SetRsCommonPaging = moCommonRS.PageCount
qry = SetQueryTop(sQuery, ((mCurrentPage-1)*mPageSize), mPageSize)
moCommonRS.Close()
Call moCommonRS.Open(qry, moConn, 3, 1)
moCommonRS.MoveFirst()
....


Akan tetapi bisa dibayangkan kalau record yang ada berjumlah ratusan record bahkan lebih, bagaimana saya harus melakukannya dalam 2 langkah ? hingga saya ingat salah satu hukum dalam penggunaan recordset adalah pengaturan CursorLocation. Karena saya menggunakan property dari aRecordset.AbsolutePage, maka saya harus menggunakan CursorLocation = adUseClient agar property tersebut dapat digunakan; sehingga cukup menambahkan satu baris kode saja saya sudah bisa mendapatkan hasil yang saya inginkan.


adoConn.CursorLocation = 3 ' 3 = adUseClient
Call adoRS.Open(SQLQuery, adoConn, 3, 1)
if NOT (adoRS.Eof OR adoRS.Bof) Then
adoRS.PageSize = mPageSize
adoRS.AbsolutePage = mCurrentPage
...


Kemudian semua program saya berjalan sebagaimana mestinya ... Akhirnya ... :)

Pelajaran hari ini memberikan saya gambaran bahwa secara default, nilai dari CursorLocation adalah adUseServer. Sehingga untuk beberapa keperluan spesifik saya harus melakukan setting lebih lanjut. Tapi yang harus kita ingat bahwa penggunaan CursorLocation adalah READ_ONLY pada Recordset yang terbuka dan READ_WRITE pada sebuah Connection dan pada sebuah Recordset yang tertutup. Sehingga apabila kita melakukan setting CursorLocation terhadap Recordset yang sudah dibuka (sudah dieksekusi query), maka kita tidak akan mendapat hasil apa-apa.

Tapi ssssssttttt bukankah menurut Anda judul tulisan kali ini agak .. hmmm ... parno :D ... (NB:sebelumnya judulnya pagination with MySQL dan ASP)

ASP Ke MySQL

Pertama kali saya menjadikan diri saya sebagai pengguna ASP dengan rasa iri terhadap pengguna PHP yang bisa membuat dengan mudah koneksi ke MySQL. Well, tidak mengapa, karena semuanya hanya tool dan yang paling menentukan adalah si operator :D ... walau seperti sebelumnya saya adalah seorang novice yang rada advanced :) !

Untuk itu saya ingin mencari cara yang bisa dengan mudah digunakan untuk membuat koneksi dari ASP ke MySQL server. Kemudian saya mendapatkan bahwa dengan menggunakan ODBC saya bisa melakukan hal tersebut. Akan tetapi iri berubah menjadi marah lagi ketika tahu bahwa ODBC yang digunakan untuk koneksi ke MySQL versi terbaru belum dalam tahap untuk produksi !. Uh ... Tak apalah, ternyata untuk versi sebelumnya terdapat cara yang lain yang sudah dalam versi produksi. Namun sebelumnya saya harus lebih dahulu mencari tahu bagaimana koneksi tersebut dapat dilakukan. Oleh karena itu melalui pencarian yang berat di beberapa situs menggunakan google, saya mengetahui bahwa dengan perantara myODBC driver versi 3.51 saya bisa mendapatkan hal yang sama dengan para tetangga saya pengguna PHP. Untuk itu saya mendownload drivernya dari situs mySQL di http://www.mysql.com/downloads/api-myodbc-3.51.html, dan kemudian melakukan instalasi di komputer yang saya jadikan server. Kemudian pelajaran berlanjut dengan latihan membuat koneksi ke server menggunakan DSN dengan sebuah 'connection string'.

Ternyata mudah, saya tinggal mengalokasikan sebuah ADODB connection seperti yang dilakukan dengan MS Access (bagi yang sudah pernah).


set adoConn = Server.CreateObject("ADODB.Connection")




Lalu dilanjutkan dengan membuka sebuah koneksi dengan syntax string-nya menjadi:


adoConn.Open "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; DATABASE=mysql; UID=root;PASSWORD=rahasia; OPTION=3"




Untuk mendapatkan hasil sebuah SQL query, saya tinggal membuat object recordsetnya dan mengambil hasil eksekusi query.


Set objRS = Server.CreateObject("ADODB.Recordset")
Set objRS = objConn.Execute("SELECT * FROM users")


Lalu melakukan looping untuk mendapatkan hasil masing-masing recordnya.


objRS.movefirst
do while not objRS.EOF
for each f in objRS.Fields
Response.Write(f.name & " = " & f.value & "<BR>")
next ' f
objRS.movenext
loop


Dan seperti yang harus dilakukan di setiap pembuatan object ...


Set objRS = nothing
Set objConn = nothing


Selebihnya adalah cerita lama :D ...

Thanks buat master web dan mas Andri Darmawan dari master web untuk resourcenya.

Why ASP

Saatnya membuat program untuk implementasi alur logika dari sistem yang akan saya bangun menggunakan bahasa pemrograman untuk aplikasi web yang saya bisa. Karena latar belakang saya adalah bahasa Basic, maka secara naluriah :) saya memilih untuk menggunakan Active Server Pages. Karena selain relatif mudah digunakan untuk saya, ASP juga memberikan saya kemudahan untuk melakukan pengembangan di komputer yang saya miliki. Hal tersebut dikarenakan project saya sebelumnya di kantor juga menggunakan ASP dan dengan memilih ASP saya tidak memerlukan proses untuk menginstal bermacam-macam program tambahan. Cukup ke control panel->lalu windows component->dan kemudian saya pilih IIS. Installer kemudian meminta saya memasukkan instalasi windows; yang lainnya tinggal memenuhi petunjuk khas instalasi windows yang mudah dan simple.

Bagi saya yang bertipe penantang keterbatasan murni dan bukan orang yang terlalu fanatik dengan bahasa tertentu dan dengan berbagai jargon tertentu, bahasa pemrograman yang saya gunakan bukanlah sesuatu yang terlalu dianggap sebagai salah satu faktor penting dalam pembuatan sebuah aplikasi. Bagi saya yang novice advanced ini ;), bahasa adalah sebuah tool. Oleh karena itu sebuah tool adalah sesuatu yang relatif terhadap sang operator, dalam hal ini adalah programmer. Oleh karena itu persetan banget dengan .NET, php atau apapun namanya yang lain! Karena selama saya bisa menggunakan ASP yang simple but faster, saya tokh masih bisa membuat sebuah aplikasi yang handal. Nah, tentunya hal tersebut bukan sekedar bergantung dengan penulisan algoritma di dalam bahasa yang saya gunakan, akan tetapi lebih merupakan gabungan diantara pengalaman, kedisiplinan dan ketekunan serta pengetahuan dan insialisasi topik permasalahan dari sistem yang saya bangun. Kata singkatnya, hal tersebut haruslah lebih dahulu di rencanakan dan didalami lebih dahulu, bukan sekedar langsung terjun berperang ria tanpa tahu bagaimana medannya.

Wuek ... aku baru tahu kalau tulisan ini terlalu melebar :D ...

Nah, terkait dengan ASP, sebenarnya ini merupakan sebuah lingkungan pengembangan aplikasi yang dibuat oleh microsoft untuk pengembangan aplikasi web, sehingga kita bisa mengatakan bahwa ASP bukan merupakan sebuah bahasa pemrograman. Sedangkan bahasa yang digunakan bisa menggunakan VBScript dan juga JScript. Kalau kita pernah menggunakan Visual Basic atau mengenal bahasa turunan dari BASIC, VBScript memiliki syntax yang sama dengannya. Sedangkan bagi yang pernah menggunakan bahasa C, JScript juga memiliki syntax yang sama. Menggunakan ASP kita bisa menggabungkan syntax HTML dan native script yang kita pilih. Sedangkan untuk menunjukkan bahwa bagian kode kita adalah bagian dari ASP, kita tinggal menambahkan tag <% dan %>, atau dengan cara lain menggunakan <script language=vbscript|javascript runat=server>.

Karena sifatnya yang seperti itulah saya bisa menggunakan kemudahan syntax basic dan menggabungkannya dengan flexibilitas dan kekayaan library yang dimiliki oleh javascript, misalnya penggunaan Regular Expression yang lebih kaya di javascript dibandingkan dengan vbscript.

Sebagai contoh adalah potongan kode dari library yang saya kembangkan dan saya gunakan untuk membuat definisi tag saya sendiri.


<%
function parseTag(byval sText)
sText = killHTML(sText)
sText = setLink(sText) ' it must be link 1st
sText = setOther(sText)
sText = setQuoteCode(sText) ' then quote
sText = setFont(sText) ' set font
sText = setSmiley(sText) ' then last ! smiley
parseTag = setBR(sText)
end function
%>


Untuk parseTag(..) tersebut saya menggunakan bahasa VBScript. Akan tetapi saya menginginkan sebuah cara untuk melakukan pemrosesan dengan tag yang saya kembangkan sendiri, misalnya [b]tebal[/b] akan menghasilkan hal yang sama dengan <b>tebal</b>, dan beberapa tag spesifik yang lain. Untuk itu saya memilih menggunakan library dari bahasa JSCript yang kaya untuk melakukan hal tersebut, dengan flexibilitas yang diberikan oleh library Regular Expression nya.

Untuk itu saya tinggal menulis syntax berikut.


<script language=javascript runat=server>
....
function setLink(sText)
{
// /(\[link)(\=?)([^\]]*)(\]{1})([^\[]+)(\[\/link\])/ - since v.0.6 a
// { s1 }{ s2}{ s3 }{ s4 }{ s5 }{ s6 }
var re = /(\[link)(\=?)([^\]]*)(\]{1})([^\[]+)(\[\/link\])/gi; // [link=abc.com]ccc[/link] OR [link]abc.com[/abc]
var s = new String(sText);
s = s.replace(re,
function(str,s1,s2,s3,s4,s5,s6)
{
var linkz = s3.length == 0 ? s5 : s3;
linkz = linkz.toLowerCase();
if(linkz.substr(0,6) != 'mailto')
{
if(linkz.toString().search(/(ht|f)tp(s?)\:\/\//i) == -1)
linkz = 'http://' + linkz;
}
if(s2.length == 0)
{
return "<a target=_blank href=\"" + linkz + "\">" + s5 + "</a>";
}
return "<a target=_blank href=\"" + linkz + "\">" + s5 + "</a>";
});
return s;
}
function removeTAGG(sText)
{
return (new String(sText)).replace(/\[([^\]]+)\]/gi, "");
}
....
</script>


Dan seperti yang dilihat, fungsinya bisa dipanggil oleh bagian ASP yang menggunakan VBScript seperti memanggil fungsi dalam bahasanya sendiri (Tentu saja ada beberapa batasan dalam variable advance). Kalau dilihat, sepertinya ASP memiliki konsep yang sama dengan salah satu sifat .NET. Hal tersebut adalah kebebasan dalam menggunakan bahasa pemrograman. Tentunya dalam hal ini tidak bisa dibilang sama dengan apa yang dimiliki oleh .NET ;).

Nah cukup sudah, saya lumayan capek neh ... mau tidur dulu yah ;)...

Kamis, 02 Agustus 2007

First Night w. MySQL

Karena keperluan sebuah project Sistem Informasi yang menggunakan data yang terlalu banyak untuk Access namun tidak terlalu banyak untuk ORACLE dan tidak juga untuk memilih menggunakan MS SQL Server, maka sebuah perhitungan sederhana dilakukan dan perhatianpun dialihkan untuk menggunakan MySQL.

Pada awalnya diputuskan menggunakan MySQL v.5 yang merupakan versi terbaru. Akan tetapi karena nantinya client dan bahasa yang digunakan adalah MS Based serta mengatasnamakan maintenance dan personil yang terbatas pengetahuannya apabila menggunakan weird OS like LINUX, then permasalahan yang muncul adalah penggunaan ODBC; karena versi yang digunakan untuk versi 5 masih dalam tahap pengembangan dan belum direkomendasikan digunakan untuk keperluan produksi. Sehingga diputuskanlah untuk menggunakan MySQL versi 4.0.12 yang akan dijalankan di mesin berbasiskan NT. Tokh masalah yang akan timbul nanti biasanya lebih banyak terkait dengan proses deployment di mesin ber-OS MS dan proses pembelajaran tentang mekanisme yang ada di MySQL sendiri dibanding MS Access yang lebih sederhana.

Maka pembelajaran pertama terkait dengan penginstalan MySQL dan proses inipun berjalan dengan indah tanpa adanya kendala yang berarti, dimana MySQL ini saya install ke "C:\mysql\" dan menggunakan proses instalasi standart saja. Karena saya ini menggunakan OS berbasis NT, maka MySQL harus saya install sebagai service lebih dahulu (walau ada yang mengatakan bahwa hal ini sudah dilakukan otomatis- tapi karena saya bukan orang yang bertipe terlalu praktis maka demi pembelajaran saya juga ingin melakukannya ;) ).

MSShell> c:\mysql\bin\mysqld-nt --install

Lalu karena tidak terlihat pesan error, saya melanjutkan dengan menjalankan service tersebut yang secara default untuk instalasi saya (dan Anda ? ;) ) adalah MySQL.

MSShell> NET START mysql
The MySql service is starting.
The MySql service was started successfully.

Yah berhasil, tapi untuk meyakinkan saya bahwa saya bisa mematikannya :), maka saya mencoba perintah untuk menghetikan service mysql ini.

MSShell> NET STOP mysql
The MySql service is stopping.
The MySql service was stopped successfully.

kemudian untuk proses lebih lanjut saya menjalankan servicenya lagi ...

Kemudian pembelajaran saya masuk ke dalam proses user management; dikarenakan ini masih dalam proses development maka diputuskan untuk menggunakan super user root dengan password 'rahasia'.

MSShell> c:\mysql\bin\mysql -u root mysql
mysql> update user SET password=PASSWORD('rahasia') WHERE user='root';
mysql> FLUSH PRIVILEGES;

Langkah kemudian dilanjutkan dengan membuat database yang akan digunakan untuk SIM ini nantinya, yang diberi nama SISKUM (Dari namanya mungkin Anda sudah tahu untuk apa ini :)) ...

mysql> CREATE DATABASE SISKUM;

Sampai saat ini saya cukup paham dengan apa yang telah terjadi. Maka saya keluar untuk melihat apa yang telah terjadi dengan komputer saya.

mysql> exit;

Menggunakan explorer saya menjelajah menuju ke foder mysql dan melihat ada beberapa folder lainnya. Namun yang menarik perhatian saya adalah folder data yang kemudian ketika dibuka akan terlihat beberapa folder lainnya yang ternyata bernama sama dengan database yang telah dibuat di mysql apabila saya menggunakan perintah "SHOW DATABASES;".

Hmm ... saya rasa cukup karena hari yang kian menanjak naik dan perut sudah memanggil untuk minta isi. Paling tidak, pengalaman saya menggunakan MS SQL Server sebelumnya dan pemahaman saya akan bahasa SQL pasti akan berguna, demikian gumam saya :) ....