Senin, 24 Maret 2008


8 Hal Yang Harus Diketahui Programer Pemula Tentang MySQL

  1. 1. Tabel MySQL bukanlah array
  2. 2. Bahasa SQL dan Fungsi-Fungsi MySQL
  3. 3. LIMIT, LIMIT, LIMIT
  4. 4. Tipe Data
  5. 5. Normalisasi dan Pemodelan
  6. 6. Indeks
  7. 7. Konkurensi, Locking, dan Transaksi
  8. 8. Jenis Tabel
  9. Penutup


Time and again I am amazed at how bad the successful software packages out there are. Apache is easily outperformed by fnord, MySQL isn't even a real database, PHP is so slow that Zend actually made a business model out of selling performance enhancing hacks for it.—diary Fefe

PHP+MySQL. Siapa yang tidak tahu bahwa duo sejoli ini adalah pasangan terpopular di dunia open source, bahkan di seluruh Internet. PHP telah menggeser Perl sebagai bahasa pilihan dalam membuat aplikasi Web, terutama bagi pemula. Dan PHP hampir selalu bersanding dengan MySQL; 90–95%+ skrip PHP di www.hotscripts.com mungkin bertuliskan “membutuhkan PHP dan MySQL”. Buku-buku PHP, termasuk untuk pemula, tidak akan dipandang afdol kalau belum membahas MySQL. Dan programer PHP, lambat atau cepat, mau atau tidak mau, pasti akan harus mengakrabi software database yang satu ini.

Sayangnya, banyak programer sudah bermain-main dan memakai MySQL secara live di situs produksi, padahal masih asing sama sekali dengan konsep database relasional. Bahkan sebetulnya MySQL juga banyak memiliki kekurangan dalam hal fitur SQL. Sehingga programer PHP tidak bisa memahami dan memanfaatkan kekuatan penuh database relasional + SQL.

Buat Anda para programer pemula yang memang masih awam dengan MySQL dan konsep database pada umumnya, tidak perlu minder atau khawatir. Di dunia IT yang bergerak serba cepat ini memang ada terlalu banyak hal yang harus dipelajari. Dan kebanyakan jadinya dipelajari sambil jalan, sambil dipraktikkan. Ketika mulai membangun CMS untuk satunet.com tahun 1999 pun, saya hanya punya skill terbatas tentang SQL: hanya tahu SELECT, UPDATE, DELETE, CREATE TABLE, dan DROP TABLE. Apa itu JOIN, bagaimana mengubah skema tabel, bagaimana mendesain database yang baik dan ternormalisasi, semuanya masih blank. Dan semua harus dipelajari sambil jalan. Tapi toh akhirnya semua baik-baik saja.

Lewat artikel ini kita akan membahas hal-hal dasar apa yang perlu diketahui agar bisa memakai MySQL dengan efektif dan efisien. Mari kita mulai dengan hal nomor satu:

1. Tabel MySQL bukanlah array

Programer PHP atau Perl tentu saja familiar dengan array dan hash, yang biasanya dipakai untuk menyimpan sekumpulan data terkait. Sebagian dari mereka yang tidak familiar dengan MySQL akan cenderung menganalogikan tabel database dengan array/hash (tepatnya, array of array atau array 2 dimensi). Tabel dipandang sama seperti sebuah array, hanya saja bisa berukuran besar sekali dan persisten (disimpan di disk).

Cara pandang ini tidak sepenuhnya salah, karena toh dalam mengambil record dari tabel biasanya ditampung ke dalam variabel array/hash. Hanya saja, cara pandang ini kadang-kadang membuat programer PHP melakukan sesuatu seperti:

$res = mysql_query("SELECT * FROM t1");
$rows = array();
while ($row = mysql_fetch_row($res)) $rows[] = $row;
echo "Jumlah record di tabel t1 = ", count($rows);

atau membuat tabel seperti:

CREATE TABLE t2 (
f0 INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
f1 INT UNSIGNED,
f2 VARCHAR(5),
f3 VARCHAR(200),
f4 VARCHAR(200),
f5 BLOB
);

Apa yang salah dengan kode PHP pertama di atas, yang bertujuan mencari jumlah record dalam sebuah tabel? Si programer, yang terlalu terobsesi menganggap tabel MySQL sebagai sebuah array, mencoba membangun dulu arraynya dengan mengisi satu-persatu elemen dari hasil query agar nantinya bisa menggunakan fungsi array count(). Masalahnya, bagaimana kalau jumlah record ada 100 ribu? 1 juta? 10 juta? Bukan itu saja, selesai di-count() variabel $rows langsung dibuang lagi! Padahal, ada cara yang jauh lebih efisien:

SELECT COUNT(*) FROM t1

Hasil querynya hanyalah sebuah record saja, tak peduli berapa pun ukuran tabel t1.

Lalu apa yang salah dengan kode SQL kedua? Si programer Perl, dalam hal ini, terobsesi ingin mengambil tiap record di tabel dengan fungsi DBI $sth->fetchrow_array()

@row = $sth->fetchrow_array();
print $row[0]; # f0
print $row[1]; # f1
print $row[2]; # f2
# ...

Enak bukan? Elemen ke-0 berisi nilai field f0, elemen ke-1 field f1, dst. Masalahnya, kemudahan ini mengorbankan nama field yang menjadi sangat tidak deskriptif. Belum lagi kalau tabel perlu diubah dengan menyisipkan field-field lain di antara field yang sudah ada. Atau field-field lama perlu dihapus. Semuanya akan menjadi mimpi buruk.

Sebagian pembaca mungkin geleng-geleng kepala. Apa benar ada programer PHP dan Perl yang melakukan kedua hal di atas? Percaya deh, ada. Saya pernah harus ketiban getah memaintain tabel dengan nama field kriptik seperti ini.

2. Bahasa SQL dan Fungsi-Fungsi MySQL

MySQL adalah database SQL bukan? Sayangnya, programer PHP pemula kadang terbatas sekali pengetahuan SQL-nya. Padahal, untuk menggunakan database MySQL dengan efektif, ia tidak boleh malas mempelajari bahasa kedua, yaitu SQL. Jika tidak belajar SQL, maka ada kemungkinan Anda akan melakukan hal-hal seperti:

$res = mysql_query("SELECT * FROM bigtable");
while ($row = mysql_fetch_assoc($res)) {
if ($row['age'] >= 40) {
echo "Ditemukan kustomer yang berusia lebih dari 40 tahun!\n";
break;
}
}

Apa salah kode di atas? Si programer PHP mencoba mensimulasikan klausa WHERE SQL dengan melakukan pengujian kondisi di kode PHP. Padahal, yang seharusnya dilakukan adalah:

SELECT * FROM bigtable WHERE age >= 40

Ini amat mengirit trafik client/server karena tidak semua record harus dikirimkan dari MySQL ke program PHP Anda.

Sebagian pembaca mungkin geleng-geleng kepala. Apa benar ada programer PHP yang seperti ini? Percaya deh, ada.

SQL sudah menyediakan cara untuk menyortir data, memformat tampilan, mengelompokkan dan memfilter record, dsb. MySQL juga terkenal banyak menyediakan fungsi-fungsi, mulai dari manipulasi tanggal, angka, string, dsb. Kenali SQL dan fungsi-fungsi MySQL; jangan duplikasikan ini semua di PHP sebab akan lebih efisien jika dilakukan di level MySQL.

Ini contoh lain programer PHP yang tidak memanfaatkan fasilitas dari MySQL:

$res = mysql_query("SELECT * FROM customers");
while ($row = mysql_fetch_assoc($res)) {
# format semula yyyy-mm-dd...
preg_match("/(\d\d\d\d)-(\d\d?)-(\d\d?)/", $row[date], $matches);
# ... dan ingin dijadikan dd/mm/yyyy
$tanggal = "$matches[3]/$matches[2]/$matches[1]";
echo "Nama=$row[name], Tanggal lahir=$tanggal
\n";
}

Padahal MySQL sudah menyediakan fungsi pemformatan dan manipulasi tanggal:

$res = mysql_query("SELECT name, DATE_FORMAT(date,'%d-%m-%Y') as tanggal ".
"FROM customers");
while ($row = mysql_fetch_assoc($res)) {
# tidak perlu capek-capek manipulasi string lagi...
echo "Nama=$row[name], Tanggal lahir=$row[tanggal]
\n";
}

Poin no. 2 ini kedengarannya klise, tapi, seperti nasihat Inggris bilang: know thy tools.

3. LIMIT, LIMIT, LIMIT

Salah satu alasan mengapa MySQL sangat cocok untuk aplikasi Web adalah mendukung klausa LIMIT. Dengan klausa ini, mudah sekali membatasi jumlah record hasil yang diinginkan dalam satu perintah SQL. Tidak perlu bermain kursor atau bersusah payah lewat cara lainnya. Belakangan database lain seperti PostgreSQL dan Firebird pun ikut mendukung fungsionalitas LIMIT (dengan sintaks yang tidak persis sama tentunya).

Sayangnya, programer PHP sendiri yang belum mengenal MySQL dengan baik tidak menggunakannya dengan semestinya.

$res = mysql_query("SELECT name FROM users ORDER BY date");
$rows = array();
for ($i=1; $i<=10; $i++) $rows[] = mysql_fetch_row($res);

Si programer hanya berniat mengambil 10 record, tapi menyuruh MySQL mengambil semua record yang ada dulu. Bagaimana kalau ada 100 ribu record? 1 juta record? 10 juta? Seharusnya, setiap kali Anda menginginkan hanya satu, sepuluh, lima belas record, Anda perlu memberitahu MySQL lewat klausa LIMIT.

SELECT name FROM users ORDER BY date LIMIT 10

Sehingga kita bisa mengirit trafik komunikasi client/server dan mengizinkan MySQL melakukan optimisasi terhadap query tersebut.

4. Tipe Data

Berbeda dengan PHP dan bahasa-bahasa skripting yang mengizinkan kita menaruh apa saja dalam sebuah $variable tanpa deklarasi tipe terlebih dahulu, di MySQL kita perlu mendeklarasikan tipe-tipe data semua field yang ada pada saat membuat sebuah tabel. Seorang programer PHP yang tidak kenal MySQL kadang-kadang cenderung memilih jenis data yang salah (umumnya: memilih VARCHAR() padahal ada tipe data yang lebih tepat) dikarenakan tidak mengenal jenis-jenis data yang tersedia.

Berikut beberapa contoh kurang tepatnya pemilihan tipe data: 1) memilih CHAR(8) atau VARCHAR(10) dan bukannya DATE untuk menyimpan tanggal; kerugiannya, lebih boros tempat dan tidak bisa memanfaatkan fungsi-fungsi khusus tanggal; 2) memilih CHAR(3) atau CHAR(6) ketimbang TINYINT UNSIGNED untuk menyimpan data boolean (“YES” dan “NO”; atau “TRUE” dan “FALSE”; padahal jauh lebih irit dinyatakan dengan 1 dan 0 yang hanya menempati 1 byte); 3) memilih FLOAT atau DOUBLE dan bukannya DECIMAL untuk menyimpan jumlah uang; kerugiannya, FLOAT dan DOUBLE adalah berbasis biner dan seringkali tidak eksak dalam menyimpan pecahan desimal.

Nomor 3 sering terjadi karena programer biasanya hanya mengenal single/double floating point number yang tersedia di bahasa pemrograman. Padahal database umumnya menyediakan angka pecahan berbasis desimal yang bisa eksak menyimpan pecahan desimal.

Manual MySQL amat membantu di sini; di subbab tentang Column Types dijelaskan dengan rinci jenis-jenis data yang ada, termasuk rentang nilai yang dapat ditampung, berapa byte yang ditempati tipe data tersebut, dsb.

5. Normalisasi dan Pemodelan

Normalisasi, skema, entiti-atribut, primary key (PK) dan foreign key (FK), tabel entiti, tabel relasi, OLTP & OLAP… semuanya adalah istilah-istilah yang umum dijumpai dalam pemodelan fisik database. Sayangnya, banyak programer pemula tidak memiliki kemampuan modeling. Sehingga jika disuruh mendesain skema database (sekumpulan tabel-tabel beserta nama field dan tipenya) hasilnya tidak optimal bahkan berantakan. Skema yang buruk berakibat terjadinya duplikasi data, tidak scalable, performance yang buruk, tidak memenuhi requirements, dsb.

Modeling tentunya tidak bisa diajarkan dalam 1–2 hari, apalagi dalam artikel yang singkat ini. Anda perlu membaca buku-buku mengenai pemodelan database dan belajar dari pengalaman maupun dari model-model yang sudah ada. Tapi beberapa nasihat yang mungkin bisa saya berikan di sini adalah sbb.

Satu, langkah pertama dalam pemodelan adalah menemukan entiti-entiti. Entiti bisa dibilang “objek” yang akan kita gelluti. Misalnya, customer, produk, dan transaksi. Setiap entiti umumnya ditaruh dalam satu tabel, tabel ini disebut tabel entiti. Langkah kedua adalah mencari atribut-atribut entiti tersebut. Misalnya tabel customers memiliki atribut sapaan, nama, alamat (jalan + kota + kodepos + propinsi + negara), tanggal record ini ditambahkan, dsb. Langkah ketiga adalah mencari relasi di antara entiti-entiti. Umumnya relasi adalah satu dari: 1-1, 1-many, many-many. Misalnya, relasi antara transaksi dan produk adalah many-many, artinya sebuah transaksi pembelian dapat berisi banyak produk dan sebuah produk tentu saja dapat dibeli dalam lebih dari satu transaksi. Setiap relasi juga akan ditempatkan pada tabel, yaitu tabel relasi.

Dua, dalam pemodelan tidak ada istilah model yang benar atau salah. Yang ada adalah model yang tepat dan tidak tepat untuk keperluan tertentu. Misalnya, untuk aplikasi sederhana modelnya sederhana. Semakin kompleks aplikasi, model pun semakin rumit (jumlah entiti, relasi, dan atribut akan bertambah). Pada umumnya, seiring kompleksitas bertambah, yang tadinya atribut akan berubah menjadi entiti dikarenakan adanya kenyataan hubungan 1-many/many-many antara atribut. Contohnya, tabel customers memiliki atribut alamat. Jika kita ingin mendukung banyak alamat untuk satu customers, maka alamat akan menjadi entiti dan menempati tabel sendiri. Lalu kita membuat tabel relasi customers-alamat.

6. Indeks

Indeks adalah sesuatu yang berkaitan erat dengan implementasi, bukan modeling. Kita seringkali perlu menambahkan indeks pada sebuah field atau banyak field dikarenakan jika tidak ditambahkan maka performance database tidak menjadi praktis. Serba-serbi indexing juga mungkin terlalu panjang untuk bisa dijelaskan dalam artikel pendek ini, tapi intinya setiap kolom yang: 1) memiliki rentang nilai cukup banyak; 2) terletak pada tabel yang berisi banyak record; 3) seringkali disebutkan di klausa WHERE dan/atau ORDER BY dan/atau GROUP BY; perlu diberi indeks. Ini dikarenakan indeks membantu mencari secara cepat sebuah nilai dari banyak nilai yang ada. Beberapa contoh:

* Setiap primary key umumnya otomatis diberi indeks oleh database server, meskipun tabelnya masih berisi sedikit record atau bahkan kosong. Ini dikarenakan database perlu selalu mengecek keberadaan sebuah nilai field ini manakala ada sebuah record yang ditambahkan (ingat, PK artinya tak boleh ada dua record yang mengandung nilai field ini yang sama). Tanpa indexing, pengecekan akan linear dan memakan waktu lama.

* Field tanggal lahir dalam tabel customers kemungkinan besar harus diindeks. Bahkan dayofyear() field ini juga mungkin perlu diindeks. Mengapa? Karena: 1) rentang nilai cukup besar (365 hari dalam setahun x +- 60 jumlah tahun); 2) tabel customers potensial ukurannya besar; 3) sering disebutkan di klausa WHERE (misalnya mencari customer yang ultah hari ini).

* Field memo/notes kemungkinan besar tidak perlu diindeks (secara biasa). Mengapa? Karena meskipun 1) rentang nilai cukup besar; dan 2) tabel customers bisa besar; tapi 3) field ini tidak pernah disebutkan di klausa WHERE secara langsung (mis: Anda tidak pernah menyebutkan: … WHERE notes='nilai catatan tertentu' atau WHERE notes > 'nilai tertentu'). [Catatan: ada indeks lain yang “tidak biasa” di MySQL, yaitu FULLTEXT. Tapi ini di luar cakupan artikel kita kali ini.]

* Field jenis kelamin mungkin tidak perlu diindeks, kecuali jika perbandingan pria:wanita amat drastis bedanya. Mengapa? Sebab: 1) rentang nilai yang ada hanyalah dua: L (lelaki) dan P (perempuan). Meskipun Anda beri indeks, tidak akan memperbaiki kinerja.

7. Konkurensi, Locking, dan Transaksi

Programer web pemula kadang-kadang tidak menyadari bahwa program/skrip yang dibuatnya tidaklah seperti program desktop yang dijalankan oleh satu user. Melainkan, dalam satu waktu bisa saja ada 10 atau 100 user yang “menembak” skrip Anda di Web. Karena itu, isu locking dan konkurensi penting sekali. Contohnya adalah seperti ini:

$res = mysql_query("SELECT value FROM counters WHERE name='counter1'");
list ($value) = mysql_fetch_row($res);
$value++;
// do something else first...
$res = mysql_query("UPDATE counter SET value=$value WHERE name='counter1'");

Di antara baris pertama (saat kita mengambil nilai record) dan baris keempat (saat kita menaruh kembali nilai dalam record) mungkin saja telah terjadi beberapa kali perubahan terhadap si record. Misalnya, pada baris pertama klien1 memperoleh nilai $value = 100. Di baris 3 $value di-increment menjadi 101. Tapi apa yang terjadi jika selama selang waktu itu nilai record counter1 telah menjadi 103 (karena misalnya klien2, klien3, dan klien4 telah meng-incrementnya)? Oleh si klien1, counter1 direset kembali menjadi 101 dan akibatnya increment oleh klien2, klien3, dan klien4 hilang. Seharusnya nilai counter1 menjadi 104.

Untuk kasus di atas, pemecahannya cukup gampang. Lakukan increment secara atomik:

// tidak perlu ambil nilai counter dulu...
// do something else first...
$res = mysql_query("UPDATE counter SET value=value+1 WHERE name='counter1'");

Tapi dalam kasus lain, kadang-kadang kita harus melakukan locking terhadap tabel atau record untuk menjamin bahwa selama kita // do something else… klien2, klien3, dan klien4 tidak bisa seenaknya menaikkan nilai counter:

mysql_query("LOCK TABLES cuonters");
$res = mysql_query("SELECT value FROM counters WHERE name='counter1'");
list ($value) = mysql_fetch_row($res);
// do something else first... increase value or something...
$res = mysql_query("UPDATE counter SET value=$value WHERE name='counter1'");
mysql_query("UNLOCK TABLES");

atau (lebih baik karena kita tidak perlu melock keseluruhan tabel):

mysql_query("SELECT GET_LOCK('lock1')");
$res = mysql_query("SELECT value FROM counters WHERE name='counter1'");
list ($value) = mysql_fetch_row($res);
// do something else first... increase value or something...
$res = mysql_query("UPDATE counter SET value=$value WHERE name='counter1'");
mysql_query("SELECT RELEASE_LOCK('lock1')");

Ingat, locking dapat berakibat samping yaitu deadlock.

Transaksi. Transaksi pun sesuatu yang dipergunakan secara meluas di dunia database, tapi hampir tidak pernah kita jumpai di bahasa pemrograman (ini karena data di bahasa pemrograman ditaruh dalam variabel di memori semua; tidak ada isu disk yang crash/lambat/rusak/harus disinkronkan dengan data di memori). Karena itu Anda perlu memahami konsep ini dari buku-buku tentang database.

8. Jenis Tabel

Di MySQL dikenal istilah table handler dan jenis tabel. Saat ini ada 3 jenis tabel utama yang bisa dipakai di MySQL: MyISAM (default), BerkeleyDB, dan InnoDB. Yang perlu diketahui ada tiga hal: 1) tidak semua tabel mendukung transaksi (MyISAM tidak mendukung transaksi, jadi COMMIT dan ROLLBACK tidak melakukan sesuatu yang semestinya jika Anda menerapkan pada tabel MyISAM); 2) tidak semua tabel punya karakteristik performance yang sama (BerkeleyDB misalnya, lambat jika ukuran tabel besar) dan disimpan dengan cara yang sama (tabel MyISAM misalnya disimpan dalam 3 file: .MYI, .MYD, .frm sementara tabel-tabel dan database-database InnoDB disimpan bersama dalam daerah disk yang disebut tablespace; 3) distribusi MySQL yang bukan -Max tidak dikompile dengan dukungan terhadap BerkeleyDB dan InnoDB.

Nomor 3 penting Anda ketahui karena jika kita menginstruksikan MySQL untuk membuat database dengan jenis tertentu:

CREATE TABLE (...) TYPE=BDB;

Dan MySQL tidak dikompile untuk mendukung BerkeleyDB, maka MySQL tidak akan protes dengan error, melainkan membuatkan tabel tersebut untuk kita tapi dengan tipe default yaitu MyISAM. Jadi Anda perlu mengecek dulu menggunakan SHOW TABLE STATUS:

mysql> create table t4 (i int) type=innodb;
Query OK, 0 rows affected (0.00 sec)

mysql> show table status from mydb like 't4';
+------+--------+-...
| Name | Type | ...
+------+--------+-...
| t4 | MyISAM | ...
+------+--------+-...

Ternyata MyISAM!

Penutup

Sebetulnya untuk memakai MySQL dengan baik dan benar diperlukan skill-skill dasar lain seperti membackup, merestore, mengeset parameter-parameter server, memonitor server, dsb. Tapi itu semua lebih merupakan tugas seorang administrator (DBA).

[Last-Modified: Mon Mar 3 01:53:20 2003]



Copyright © 2003 PT Masterweb Indonesia
Hak cipta dilindungi undang-undang.

KEBAIKAN DAN KEBURUKAN INTERNET

Keburukan Internet

Adalah tidak dapat di nafikan bahawa suatu perkara atau benda itu memang terdapat pro dan kontra. Begitu juga Internet, ada kebaikan dan ada juga keburukannya. Keburukan didalam Internet yang jelas dan nyata adalah seperti berikut:

a. Senang untuk mendapatkan bahan-bahan berunsur lucah seperti gambar,
dan video clip. Ini boleh mendorong kepada perbuatan maksiat dan menyalahi hukum agama dan undang-undang negara.

b. Chating atau borak di dalam Internet yang terlalu lama tanpa faedah akan menyebabkan bil telefon meningkat.

c. Penyebaran maklumat yang berunsur negatif kepada sesiapa sahaja melalui emel atau laman web.

Walaubagaimana pun mengikut pendapat pakar kaji selidik tentang penggunaan Internet ini, adalah didapati keburukan di dalam Internet ini hanya meliputi 5% sahaja daripada keseluruhan keupayaan Internet.

Walau apa pun kebaikan atau keburukan Internet ini, terpulanglah kepada individu itu sendiri untuk memilih atau menilaikannya. Sebagai contoh, dalam rumah kita sendiri ada pisau. Pisau tersebut biasanya kita gunakan untuk memotong buah, daging dan sebagainya, dengan kata lain kita gunakan untuk kebaikan. Kita juga boleh menggunakan pisau tadi untuk memotong sesiapa sahaja didalam rumah kita dengan kata lain kita gunakan untuk keburukan. Pilihlah yang mana baik dan yang mana buruk. Pada saya ia bukan sahaja baik dan buruk tetapi ia telah mengajar saya lebih dewasa.

Menurut data daripada kajiselidik yang dibuat oleh Nua Internet Survey pada November tahun lalu menunjukkan jumlah pengguna internet adalah 407.1 juta, berbanding 381.79 juta pada Oktober dan 377.65 juta pada September tahun yang sama. Peningkatan jumlah pengguna internet setiap bulan ini membuktikan semakin ramai manusia menyedari kepentingan internet dan menjadikannya semakin popular dari hari ke hari.

Perkembangan positif ini juga sekaligus telah mewujudkan banyak peluang perniagaan yang berasaskan teknologi komputer dan internet kepada manusia. Antaranya perkhidmatan e-dagang, peningkatan jumlah kafe siber, multimedia dan sebagainya.

Kewujudan serta peningkatan kafe siber yang menyediakan kemudahan melayari internet telah memberi peluang kepada masyarakat terutamanya remaja yang tidak mempunyai kemudahan internet di rumah, menggunakan perkhidmatan di kafe siber. Namun begitu, perkembangan yang dilihat sebagai positif ini tidak dimanfaat sepenuhnya oleh segolongan pengguna. Impaknya, timbul fenomena yang negatif seperti melepak. Penyalahgunaan perkhidmatan yang diberikan oleh pemilik kafe siber dengan menjadikan kafe siber sebagai salah satu tempat berkumpul dan melepak bagi remaja dan ini boleh menimbulkan masalah-masalah sosial lain. Selain itu, kebanyakan remaja juga tidak memanfaatkan kafe siber ini dengan sebaiknya. Mereka lebih suka menghabiskan masa dengan bersembang kosong di internet (chit chat) , malayari laman-laman yang tidak sesuai dan sebagainya daripada mempelajari teknologi serta menimba pengetahuan.

Berlaku penyebaran fitnah/surat layang yang bersifat spekulatif & provokatif.

Sentimen perkauman bagi masyarakat berbilang kaum, memburukan imej negara & pemimpin dan cubaan meruntuhkan sesebuah kerajaan.

Penyelanggarann kos yang tinggi terutamanya kawasan luar bandar yang berpendapatan rendah,

Mengalakan jenayah siber/jenayah kolar putih berleluasa seperti pecah amanah,mencuri maklumat,menceroboh laman web,dan sebagainya.

Menyiarkan laman-laman lucah tanpa tapisan seperti gambar atau klip video.

Menjatuh/mengaibkan seseorang bagi tujuan niat jahat melalui artikal atau gambar.

Berlaku kecurian maklumat & penyalinan data secara tidak sah.

Pengguna Internet menjadi anti-sosial kerana mengalakan pengguna internet duduk dirumah tanpa bersua dengan orang ramai.

KEBAIKAN INTERNET

Internet banyak memberi manfaat kepada pengguna terutama pelajar di institusi pengajian tinggi . Ia membuka suatu dimensi baru kini sebagai sumber rujukan mudah dan pantas dari segi masa dan lokasi. Ia hampir menggantikan kaedah pembelajaran atau pencarian maklumat cara lama iaitu penggunaan perpustakaan .

Peranan komputer dan internet dalam pendidikan

Penggunaan komputer dalam pengajaran dan pembelajaran matematik dapat memperkembang dan memperkayakan lagi tajuk yang diajar. Lebih sedekad yang lalu, NCTM (National Council of Teachers' of Mathematics, 1980) mencadangkan supaya pengajaran matematik mengambil peluang luas yang ditawarkan oleh komputer. Cockcroft (1982) menyarankan bahawa penggunaan komputer dalam pengajaran dan pembelajaran matematik bukan sahaja boleh memperbaiki kualiti pengajaran matematik malah penggunaan komputer juga boleh merubah kepentingan sesuatu tajuk dalam silibus matematik. Keadaan yang sama juga mungkin wujud dalam pengajaran dan pembelajaran matapelajaran lain di sekolah. Aktiviti penyelesaian masalah adalah bahagian terpenting dalam pendidikan matematik. Pencapaian yang tinggi dalam matematik tidak bermakna jika seseorang pelajar tidak mampu melakukan proses penyelesaian masalah. Laporan Cockcroft (1982) menegaskan bahawa masalah matematik harus diterjemahkan kepada sebut an dan bahasa matematik sebelum ianya diselesaikan. Langkah terjemahan seperti ini memerlukan fahaman yang lengkap terhadap struktur konsep yang terkandung dalam masalah tersebut. Keadaan ini telah menyebabkan kesukaran pembelajaran di kalangan setengah-setengah pelajar. Masalah dan kesukaran ini boleh diatasi melalui penggunaan komputer ( Lim, 1989 ).

Dalam beberapa kajian yang telah dijalankan (Funkhouser, 1993; Henderson and Landersman, 1992; Chazan, 1988; Mc Coy, 1991; Al Ghamdi, 1987) didapati bahawa:

  • Pelajar yang menggunakan komputer dalam matematik mempunyai sikap yang lebih positif terhadap dirinya sebagai ahli matematik dan berkeupayaan menyelesaikan masalah yang lebih kompleks.
  • Perisian komputer yang digunakan dalam proses pengajaran akan dapat membantu pelajar memahami konsep dan prinsip matematik dengan mudah dan berkesan.
  • Pencapaian pelajar dalam peperiksaan akhir menunjukkan peningkatan yang ketara.
  • Kumpulan yang belajar berbantukan komputer mempunyai kemampuan mengekalkan maklumat dalam jangka masa yang lebih lama dan dapat menggunakannya dalam bidang-bidang lain.

Internet banyak memberi manfaat kepada pengguna terutama pelajar di institusi pengajian tinggi . Ia membuka suatu dimensi baru kini sebagai sumber rujukan mudah dan pantas dari segi masa dan lokasi. Ia hampir menggantikan kaedah pembelajaran atau pencarian maklumat cara lama iaitu penggunaan perpustakaan .

Masyarakat ramai juga tidak terlepas dari merasai bahang Internet dengan capaian berita dengan cepat dan pantas samada berita liputan dalam atau luar negara misalnya liputan mutakhir sukan dari seluruh dunia seperti EURO2004 mahupun berita panas seperti perbicaraan Datuk Seri Anwar Ibrahim.

Namun terdapat beberapa kebaikan lain seperti :

Pendidikan dalam Internet

Kini terdapat universiti yang berkonsepkan maya contohnya UNITAR yang menyediakan akaun Internet untuk para pelajarnya. Kini para pelajar bukan sekadar menggunakan Internet untuk berkongsi maklumat dan penyelidikan tetapi juga mengambil kursus tanpa perlu melangkah kaki ke dalam bilik kuliah. Malahan mengambil soalan tugasan, membuat kuiz dan menduduki ujian melalui Internet. Kumpulan berita membolehkan para pendidik dan pelajar bertanyakan sesuatu, mendapatkan nasihat dan menyemak maklumat. Teknologi persidangan video membolehkan pelajar dalam sesebuah kelas bekerjasama melaksanakan sesuatu projek. Begitu juga penggunaan perpustakaan maya dimana membenarkan anda mencari buku dalam talian jika anda mempunyai kad perpustakaan dengan perpustakaan tersebut.

Perniagaan dalam Internet

Internet boleh menjadi salah sebuah lokasi perniagaan utama yang menjalankan urusan jual beli barangan dan perkhidmatan. Bidang perniagaan meningkatkan penggunaan Internet dalam dua cara : (1) memasar dan menjual barangan dan perkhidmatan dan menerima pembayaran elektronik.(2) mewujudkan rangkaian korporat persendirian yang dipanggil Intranet . Maka bermula dari sini orang ramai boleh membeli di rumah atau di tempat perniagaan.

Perubatan dalam Internet

Internet menrevolusikan setiap aspek sistem perubatan bermula daripada cara para doktor kita dilatih, capaian maklumat penjagaan kesihatan hinggalah kepada cara doktor merawat dan menjalankan pembedahan. ‘Hospital maya’ sudah pun berkembang dalam Internet. Hospital ini sebenarnya tidaklah merawat pesakit tetapi memberi capaian khazanah sumber perubatan yang begitu banyak yang terdapat dalam Internet. Pengguna biasa sebagai contoh dapat menyemak seimbas atau membuat pencarian dalam pangkalan data untuk mencari jawapan kepada permasalahan kesihatan yang dihadapi. Bagaimanapun perubahan paling ketara dalam cara rawatan kini dengan apa yang dinamai sebagai ‘teleperubatan’. Dengan menggunakan teknologi ini, pembedahan dapat dilakukan oleh seseorang doktor bedah walaupun berada berbatu-batu dari bilik pembedahan.

Sebelum memulakan perbincangan, kita lihat dahulu apa yang menjadi kelebihan internet? Pertanyaan seperti ini pasti muncul bagi setiap orang yang ingin lebih jauh melayari dunia internet.

1. Kemampuan grafik internet memungkinkan kita untuk memperlihatkan jenis produk yang ada dan mendeskripsikan pelayan yang anda berikan secara dinamik dan dalam format yang interaktif. Anda juga dapat membuat brosur berwarna dan menyebarkannya tanpa dibebani kos cetakan.

2. Halaman Web akan membantu dalam bidang perusahaan. Hanya dengan pelaburan yang relatif kecil, produk anda mampu tersebar luas di dalam pasaran global. Walaupun usaha anda hanya sebuah bisnes berskala lokal atau kecil, pelaburan anda mampu bersaing di peringkat antarabangsa.

3. Terdapat banyak perusahaan yang menggunakan internet untuk berhubung dengan pelanggan dan berkomunikasi tentang perusahaan. Ketika anda berhubung melalui internet dengan ISP (Internet Service Provider) anda boleh menggunakan internet selama beberapa jam dan mengirimkan seluruh e-mail tanpa kos tambahan.

4. Pelanggan selalu ingin tahu apakah mereka dapat memperoleh jawapan mengenai pertanyaan dan keluhan-keluhan mereka tanpa kehilangan banyak waktu dengan menggunakan telefon. Internet adalah pilihan tepat. Mengapa? Kerana internet merupakan suatu pilihan yang memudahkan, bagi mereka yang tidak suka dengan sistem voice-mail, untuk menggunakan format online dan atau e-mail.

5. Tidak pernah sebelumnya seluruh masyarakat dunia dapat berhubungan dengan mudah antara satu dengan yang lain dalam mencari dan bertukar informasi mahupun idea sebelum wujudnya internet. Melalui newsgroups, mailing list dan e-mail, ianya dapat menghubungkan anda dengan laman-laman web yang anda inginkan dengan cepat dan mudah.

6. Internet merupakan sumber yang luas (vast resources) yang memungkinkan untuk menemukan vendor atau layanan peribadi untuk memenuhi keperluan perniagaan. Anda tidak perlu ke perpustakaan untuk mencari sumber-sumber rujukan. tTerdapat banyak industri kini telah memiliki halaman web sendiri tempat anda untuk mencari informasi. Anda dengan mudah dapat mencapai informasi yang anda perolehi tanpa harus menggunakan perkhidmatan telefon.

7. Internet merupakan jaringan raksasa yang melintasi batas negara dan politik. Hanya melalui internet, tak peduli anda berada di mana, anda dapat berhubung ke seluruh dunia.

Tambahan:

Antara kebaikan dan keburukan Internet

ORANG ramai berbelah bahagi mengenai cadangan menguatkuasakan undang-undang mengawal salah guna Internet. Perdebatan mengenainya di kalangan tokoh akademik dan pemimpin masyarakat masih berlaku.

Mereka yang menyokong khuatir terhadap kemungkinan kanak-kanak terdedah kepada gejala negatif seperti pornografi, di samping penyebaran berleluasa makalah dan berita berunsur fitnah atau menghasut. Sementara mereka yang menentang mempertahankan prinsip penyaluran maklumat secara bebas sejajar dengan dasar langit terbuka yang dipertahankan pengusaha Internet.

Prof Madya Mohd Safar Hashim dari Jabatan Komunikasi, Universiti Kebangsaan Malaysia, berkata bahan pornografi boleh ditapis dan disekat daripada kanak-kanak manakala mereka yang menyebar bahan berunsur fitnah dan khabar angin yang menjejas ketenteraman awam boleh dikesan dan dikenakan tindakan undang-undang.

"Cuma, untuk membuktikan kesahihan sesuatu berita atau mengesan sumber berita di Internet agak sukar berbanding yang disiarkan akhbar.

Namun, sudah ada orang yang dihadapkan ke mahkamah kerana menyebarkan berita angin, yang menjejas ketenteraman negara di Internet," kata Safar.

Menurutnya, siapa saja boleh mendapatkan maklumat di Internet. Tetapi masalah perundangan akan timbul bila maklumat itu dipindah turun, dicetak dan disebarkan kepada ramai, walaupun hakcipta kebanyakan bahan dalam Internet adalah terpelihara.

Safar berkata, undang-undang di negara ini adalah cukup untuk mengatasi pelbagai perbuatan jenayah dan hasutan menerusi penyebaran berita negatif.

Pengerusi Persatuan Industri Komputer Malaysia (Pikom), Shaifubahrim Saleh, pula mencadangkan supaya kerajaan menubuhkan satu kumpulan pengawas dikenali sebagai 'Cybercop' untuk membendung kegiatan negatif melalui Internet termasuk penyebaran khabar angin.

Beliau berkata, kumpulan itu boleh dianggotai oleh beberapa pakar teknologi komputer.

Dengan adanya badan seumpama itu, katanya, pendaftaran pengguna yang mahu menggunakan Internet di siber kafe dapat dijalankan lebih berkesan. Ini kerana mereka akan lebih berhati-hati menggunakan Internet.

Ada pihak pula mencadangkan pendaftaran kafe siber diletakkan di bawah Kementerian Dalam Negeri (KDN) bagi menentukan pengawalan lebih berkesan.

Bagaimanapun, Pengerusi Jawatankuasa Pembangunan Bandar Majlis Belia Melaysia (MBM), Norizan Sharif menentang kerana menganggap tindakan seumpama itu akan mewujudkan tanggapan salah di kalangan organisasi korporat luar, malah bertentangan dengan piagam Koridor Raya Multimedia (MSC) yang menjamin penyaluran maklumat secara bebas, tanpa ditapis.

Beliau berkata, langkah sedemikian secara langsung membantut perkembangan dunia teknologi maklumat khususnya Internet yang memang memanfaatkan masyarakat termasuk generasi muda jika digunakan sebaik-baiknya.

"Pemimpin masyarakat dan ibu bapa harus melihat Internet secara positif dan akur kepada fungsinya sebagai wadah pendidikan yang cukup berkuasa," kata Norizan.

Berhubung langkah mengelak kanak-kanak daripada mendekati halaman yang dianggap tidak sihat seperti pornografi, beliau berkata, ini boleh dilakukan dengan menggunakan perisian tapisan seperti Cyberpatrol, Cybersitter, Surfwatch dan Net-Nanny pada komputer.

Dalam pada itu, kafe siber yang menjadi tempat tumpuan belia atau kanak-kanak tanpa mengira had umur berupa fenomena baru dalam masyarakat hari ini. Kebanyakan kafe siber yang mengenakan bayaran antara RM4 hingga RM10 sejam biasanya dibuka sepanjang 24 jam.

Sebaik saja berdepan dengan komputer, pengunjung siber kafe bebas menonton apa saja termasuk video lucah atau "melayari" pelbagai bahan yang mereka gemari melalui Internet tanpa sekatan. Malah sesetengah kafe siber dipasang pula dengan lampu malap yang kadangkala boleh menimbulkan keraguan ibu bapa mengenai apa yang berlaku di dalamnya.

Timbalan Menteri Perumahan dan Kerajaan Tempatan, Datuk Peter Chin, baru-baru ini berkata kementerian sedang merangka satu undang-undang baru hiburan bagi mengawal kegiatan di pusat-pusat Internet kafe siber.

Katanya, undang-undang yang sedang digubal itu akan diguna pakai oleh semua kerajaan negeri dan pihak berkuasa tempatan.

Presiden Gabungan Persatuan Pengguna-pengguna Malaysia (Fomca), Datuk Prof Hamdan Adnan, berkata, kafe siber biasanya tertakluk kepada Undang-undang Kecil Pelesenan, Perdagangan dan Perindustrian, Undang kecil Pengendalian Makanan, dan Enakmen Hiburan dan Premis Hiburan oleh majlis daerah atau majlis perbandaran di negeri-negeri dan ia tidak menyentuh secara langsung mengenai penyalahgunaan Internet.

Beliau berkata, kebanyakan undang-undang itu terhad kepada soal-soal mengawal premis terbabit daripada kegiatan perjudian dan kebersihan di persekitarannya. Bagi mengelak pembabitan kanak-kanak terlalu muda, beliau mencadangkan larangan terhadap kanak-kanak berusia 12 tahun ke bawah dari memasuki kafe siber. Kini tiada had umur dikenakan kepada pelanggan kafe siber.

Katanya, langkah memendekkan waktu operasi kafe siber juga perlu dipertimbangkan memandangkan tempoh operasinya adalah 24 jam kerana masih didaftar sebagai restoran.

Safar pula berkata, bagi mengatasi gejala kurang sihat yang mungkin berlaku di kafe siber yang banyak muncul sekarang, kafe ini harus diletakkan di tempat terbuka.

Sementara itu, Menteri Besar Selangor Datuk Abu Hassan Omar baru-baru ini berkata, kerajaan negeri akan mengkaji secara menyeluruh masalah yang timbul berikutan kewujudan siber kafe yang beroperasi 24 jam. Beliau berkata, ia boleh menimbulkan masalah sosial di kalangan pengguna terutamanya golongan remaja.

Bagaimanapun, sesetengah pekerja sebelah malam seperti wartawan, pekerja hospital, serta petugas radio dan tv berpendapat kafe siber wajar beroperasi 24 jam bagi membolehkan mereka mendapatkan kemudahan itu selepas habis bertugas pada awal pagi.

Menteri Perumahan dan Kerajaan Tempatan Datuk Dr Ting Chew Peh baru-baru ini berkata kawal selia terhadap kafe siber akan diperketatkan untuk mengelak penyalahgunaan premis terbabit.

Seorang pengusaha kafe siber di Taman Sri Gombak, Kuala Lumpur berkata, pelanggan kafe siber kebanyakannya belia yang menyukai suasana luar rumah.

Beliau berkata, bagi sesetengah remaja, setakat untuk bermain komputer dan memasuki Internet boleh dilakukan di rumah, tetapi mereka lebih suka melakukannya di luar untuk bertemu dan berinterksi dengan kawan-kawan.

Sehingga kini tidak ada undang-undang khusus mengenai kafe siber dan sesiapa saja boleh memohon membukanya semudah membuka restoran.

Semoga penggubalan undang-undang baru hiburan bagi mengawal kegiatan di pusat Internet kafe siber dapat mengawal salah guna Internet seperti menyebarkan khabar angin, maklumat palsu atau mengembar-gemburkan keadaan. - Bernama

Selasa, 11 Maret 2008

periodik kimia

MUDAHAN INI BERMANFAAT BAGI YANG MEMBACA






IA IIA IIIB IVB VB VIB VIIB ... VIII ... IB IIB IIIA IVA VA VIA VIIA VIIIA


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
1 1
H
















2
He
2 3
Li
4
Be










5
-2','27.0','8.298','1.026');">B
6
C
7
N
8
O
9
F
10
Ne
3 11
Na
12
Mg










13
Al
14
-4','148','8.151','0.70');">Si
15
-16','0.235','10.486','0.769');">P
16
-16','0.269','10.360','0.710');">S
17
Cl
18
Ar
4 19
K
20
Ca
21
Sc
22
Ti
23
V
24
Cr
25
Mn
26
Fe
27
Co
28
Ni
29
Cu
30
Zn
31
Ga
32
6','59.9','7.899','0.32');">Ge
33
As
34
Se
35
-16','0.122','11.814','0.226');">Br
36
Kr
5 37
Rb
38
Sr
39
Y
40
Zr
41
Nb
42
Mo
43
Tc
44
Ru
45
Rh
46
Pd
47
Ag
48
Cd
49
In
50
Sn
51
Sb
52
-4','2.35','9.009','0.202');">Te
53
-11','0.449','10.451','0.145');">I
54
Xe
6 55
Cs
56
Ba
57
La
72
Hf
73
Ta
74
W
75
Re
76
Os
77
Ir
78
Pt
79
Au
80
Hg
81
Tl
82
Pb
83
Bi
84
Po
85
At
86
Rn
7 87
Fr
88
Ra
89
Ac
104
Rf
105
Db
106
Sg
107
Bh
108
Hs
109
Mt
110
Ds
111
Rg
112
Uub
113
Uut
114
Uuq
115
Uup
116
Uuh
117
Uus
118
Uuo


blok s

blok p

blok d


Lanthanida 58
Ce
59
Pr
60
Nd
61
Pm
62
Sm
63
Eu
64
Gd
65
Tb
66
Dy
67
Ho
68
Er
69
Tm
70
Yb
71
Lu

Aktinida 90
Th
91
Pa
92
U
93
Np
94
Pu
95
Am
96
Cm
97
Bk
98
Cf
99
Es
100
Fm
101
Md
102
No
103
Lr

blok f


Logam Non Logam Metaloid Gas Mulia

Keterangan Unsur
Nama Unsur : -
Radius Atom : - Ao
Massa Atom : -
Volume Atom : - cm3/mol
Bilangan Oksidasi : -
Radius Kovalensi : - Ao
Konfigurasi Elektron : -
Entalpi Penguapan : - kJ/mol
Titik Didih : - K
Entalpi Pembentukan : - kJ/mol
Titik Lebur : - K
Konduktivitas Listrik : - x 106 ohm-1cm-1
Massa Jenis : - g/cm3
Konduktivitas Panas : - Wm-1K-1
Struktur Kristal : -
Potensial Ionisasi : - V
Elektronegativitas : -
Kapasitas Panas : - Jg-1K-1

Keterangan Data
Massa atom berdasar pada skala Massa atom relatif Ar(12C)=12
Tanda ( ) pada unsur-unsur radioaktif ialah nomor massa isotop unsur itu yang mempunyai waktu-paruh paling panjang.
Massa jenis diukur pada suhu 300K
Elektronegativitas menurut Pauling