Friday, October 30, 2009

7 cara hidup sehat

Dokter Umum Stop Merokok Agar sehat, masyarakat butuh dua hal: pemerintah yang bijak dan tertib berpola hidup sehat. Untuk memahami pola hidup sehat, orang tak perlu menjadi dokter. Wawasan sehat diperoleh dari membaca, mendengar dan menyaksikan uraian kesehatan. Berikut ini beberapa di antaranya.

yang perlu di pelajari dan harus tahu






reference
http://www.functionx.com/
http://www.globalguideline.com/sql

Wednesday, October 28, 2009

Basic Data

Bayangkan dunia tanpa basis data :
? Dunia Pendidikan
Pertanyaan-- pertanyaan berikut iini banyak dijjumpai di llingkungan pendidikan ::
Berapakah jjumlah mahasiswa yang mengikuti kuliah basis data ?
Siapa sajakah yang llulus pada periode Agustus ttahun iini ?
Berapa persentase mahasiswa yang ttidak melakukan registrasi pada semester iini ?
Berapa jjumlah SKS yang diiperoleh oleh mahasiswa yang bernama Edi ?

Tugas dan kemampuan dasar seorang DBA

DBA (Database Administrator) seringkali dikatakan sebagai Database Baby Sitter. Ya, memang tugas utama seorang DBA adalah menjaga kelangsungan hidup dari Database yang dimaintain olehnya. berikut ini adalah tugas-tugas dari DBA secara umum adalah :

Tuesday, October 27, 2009

masih blajar ngehekkk

Pada saat googling tdk sngaja menemukan Tips n Trik ini, semoga berguna. :piss:
Tahukah kamu kalau sebenarnya bandwidth yang kita gunakan untuk berselancar di dunia maya itu tidak 100% kita gunakan. Karena pada dasarnya sistem Windows membatasi penggunaan bandwidth hanya 80% dari 100% yang disediakan oleh ISP (internet service provider). Lalu kemana perginya 20% lagi? Ya itu tadi... Windows menyimpan 20% dari bandwidth yang kita miliki. Jahat bener kan ?... malah internet disini lelet banget,... pake' dibatasi pula'.
Trus bisa nggak kita ambil lagi 20% bandwidth yang mutlak merupakan hak milik kita itu? tentu saja bisa dan HARUS !!! hehehe... Oleh karena itu mari kita ambil kembali bandwidth yang "dicuri" oleh Windows itu menjadi hak milik kita kembali. Gimana caranya? tentu saja sangat mudah. Trik yang akan kita lakukan hanya dengan mengedit sedikit settingan dari Aplikasi Group Policy yang merupakan aplikasi bawaan dari Windows. Untuk mulai beraksi, silahkan Ikuti langkah-langkah berikut ini :
1. Klik Start | Run
2. Ketik gpedit.msc lalu klik OK atau tekan Enter yang nantinya akan membuka aplikasi Group Policy
3. Buka Administrative Templates dengan mengklik tanda [+] di samping kirinya.
4. Kemudian buka lagi Network
5. Klik QoS Packet Scheduler
6. Dabelklik Limit reservable bandwidth pada area sebelah kanan yang nantinya akan terbuka seperti gambar
7. Pilih Enabled, kemudian atur Bandwidth limit (%) menjadi 0
8. Klik OK untuk menyimpan setting.

belajar nge-hack

http://ferruh.mavituna.com/makale/sql-injection-cheatsheet
http://crywhole.co.uk/priamos-project-sql-injector-and-scanner.jsp
http://ha.ckers.org/sqlinjection/
http://www.geocities.com/iko94/tutorials/tut_004.txt
http://dev.mysql.com/doc/refman/5.0/en/index.html
http://michaeldaw.org/sql-injection-cheat-sheet/

Berikut bebeRapa peRintaH dasaR SQL....:)

ABORT -- abort the current transaction
ALTER DATABASE -- change a database
ALTER GROUP -- add users to a group or remove users from a group
ALTER TABLE -- change the definition of a table
ALTER TRIGGER -- change the definition of a trigger
ALTER USER -- change a database user account
ANALYZE -- collect statistics about a database
BEGIN -- start a transaction block
CHECKPOINT -- force a transaction log checkpoint
CLOSE -- close a cursor
CLUSTER -- cluster a table according to an index
COMMENT -- define or change the comment of an object
COMMIT -- commit the current transaction
COPY -- copy data between files and tables
CREATE AGGREGATE -- define a new aggregate function
CREATE CAST -- define a user-defined cast
CREATE CONSTRAINT TRIGGER -- define a new constraint trigger
CREATE CONVERSION -- define a user-defined conversion
CREATE DATABASE -- create a new database
CREATE DOMAIN -- define a new domain
CREATE FUNCTION -- define a new function
CREATE GROUP -- define a new user group
CREATE INDEX -- define a new index
CREATE LANGUAGE -- define a new procedural language
CREATE OPERATOR -- define a new operator
CREATE OPERATOR CLASS -- define a new operator class for indexes
CREATE RULE -- define a new rewrite rule
CREATE SCHEMA -- define a new schema
CREATE SEQUENCE -- define a new sequence generator
CREATE TABLE -- define a new table
CREATE TABLE AS -- create a new table from the results of a query
CREATE TRIGGER -- define a new trigger
CREATE TYPE -- define a new data type
CREATE USER -- define a new database user account
CREATE VIEW -- define a new view
DEALLOCATE -- remove a prepared query
DECLARE -- define a cursor
DELETE -- delete rows of a table
DROP AGGREGATE -- remove a user-defined aggregate function
DROP CAST -- remove a user-defined cast
DROP CONVERSION -- remove a user-defined conversion
DROP DATABASE -- remove a database
DROP DOMAIN -- remove a user-defined domain
DROP FUNCTION -- remove a user-defined function
DROP GROUP -- remove a user group
DROP INDEX -- remove an index
DROP LANGUAGE -- remove a user-defined procedural language
DROP OPERATOR -- remove a user-defined operator
DROP OPERATOR CLASS -- remove a user-defined operator class
DROP RULE -- remove a rewrite rule
DROP SCHEMA -- remove a schema
DROP SEQUENCE -- remove a sequence
DROP TABLE -- remove a table
DROP TRIGGER -- remove a trigger
DROP TYPE -- remove a user-defined data type
DROP USER -- remove a database user account
DROP VIEW -- remove a view
END -- commit the current transaction
EXECUTE -- execute a prepared query
EXPLAIN -- show the execution plan of a statement
FETCH -- retrieve rows from a table using a cursor
GRANT -- define access privileges
INSERT -- create new rows in a table
LISTEN -- listen for a notification
LOAD -- load or reload a shared library file
LOCK -- explicitly lock a table
MOVE -- position a cursor on a specified row of a table
NOTIFY -- generate a notification
PREPARE -- create a prepared query
REINDEX -- rebuild corrupted indexes
RESET -- restore the value of a run-time parameter to a default value
REVOKE -- remove access privileges
ROLLBACK -- abort the current transaction
SELECT -- retrieve rows from a table or view
SELECT INTO -- create a new table from the results of a query
SET -- change a run-time parameter
SET CONSTRAINTS -- set the constraint mode of the current transaction
SET SESSION AUTHORIZATION -- set the session user identifier and the current user identifier of the current session
SET TRANSACTION -- set the characteristics of the current transaction
SHOW -- show the value of a run-time parameter
START TRANSACTION -- start a transaction block
TRUNCATE -- empty a table
UNLISTEN -- stop listening for a notification
UPDATE -- update rows of a table
VACUUM -- garbage-collect and optionally analyze a database

coba putty connection manager pasti lebih enak

padahal dah lama ni download mentahan PUTTY CONNCETIN MANAGER baru sekarang coba di pake.ternyata lebih enak,mau tau enak nya.ni gue kasih tau
consule nya di tampilin dalam 1 display.terserah mo ssh berapa banyak.

pokok e,enak dari putty biasa.hehehe.
lumayan tambah ilmu ne.kalau mau donlod tinggal ketik putty connection manager di google.gampangkan.

kitab anak IT itu google
kitab anak saleh ya Alquran dan Alhadist.

tugas dari paman GUGLE

1. Login ke sistem Linux sebagai root
2. Cek apakah konfigurasi alamat IP untuk host.
a. Jalankan perintah ifconfig, tulis konfigurasi IP host anda.
Interface : __________________.
IP Address : __________________.
Subnet mask : __________________.
b. Jalankan perintah netstat –r, tuliskan default gateway host anda.
Default Gateway :

Monday, October 26, 2009

lier euy...tapi banyak lah dapat hari ini

lumayan panek duduak di muko komputer...dari jam 7 sampai jam 7 malam...ko pulang jam 7 malam lo.pulang ka depok lo,batambah panek badan.tapi taraso nikmat manacari piti sorang (Allhamdulillah hirobbilamain).kini ka pulang lai,ha hari lah taduah kiro nyo,siap-siap manacaliak kendaraan taungguak rapi di jalan bahasa modern nyo macet namanya..hahahahahaha.tangan lah mulai menderita,alias panek tagantuang2 dari pagi.
ko manulis malapeh boring stek.jadi ngalur ngidul se carito wak ko mah.

carito di kampuang stek...mandeh jo pandeh kini lah di kerinci.siap2 untuk barangkek ke luar negri.hahaha bia canggih stek baso nyo.naik aji kecek wak e.jadi pas wak pulang patang tanggal 10 Okt 2009,tu terakhir basobok jo mandeh,pandeh jo adiak gai.
mudah-mudahan sehaik2 sajo.pas pamit patang ibo na ati,berembun mato ko memeluk mandeh.lamo na kami bapaluak.(den(dendy)berdoa dalam hati.ampuni dosa mandeh jo pandeh ya Alloh.sayangi beliau.n terima lah haji yang mereka kerjakan.

lah tu...segitu se.paruik litak palo paniang alias kunang2.dan bersiap solat magri dan pulang.ok my fren.Assalammulaikum.

ko nyoah command yang beda jo MYSQL

COMMAND POSTGRES| Result

\d

\dt : List all tables

\di : List all indexes

\ds : List all sequences

Masi tentang Postgresql

Dalam artikel ini diasumsikan postgres telah terinstall di komputer anda, baik lewat rpm atau source, diasumsikan PostgreSQL telah berjalan di komputer anda.
Pertanyaannya bagaimana memulai menggunakan postgres ? dengan artikel ini mudah-mudahan terjawab

Menjalankan dan Mematikan PostgreSQL

Sebagai root jalankan perintah berikut :
Script Menjalankan PostgreSQL

root]#/etc/rc.d/init.d/postgresql start


Script Mematikan PostgreSQL

root]#/etc/rc.d/init.d/postgresql stop


Script Mematikan dan Menjalankan (Restart) PostgreSQL

root]#/etc/rc.d/init.d/postgresql restart

Password Security dan TCP/IP Connection

Masih sebagai root, login sebagai user postgres (user sytem) dan login ke database postgres (template1)

root]#su - postgres
-bash-2.05b$psql template1

Sekarang anda telah login ke database system template1

Welcome to psql 7.4.1, the PostgreSQL interactive terminal.

Type: \copyright for distribution terms
\h for help with SQL commands
\? for help on internal slash commands
\g or terminate with semicolon to execute query
\q to quit

template1=#

Dari konsole database template1, jalankan perintah SQL untuk mengubah password user postgres.
Kemudian keluar dari user terminal interactive PostgreSQL

template1=# ALTER USER postgres with password 'passwordku';
template1=# \q

Masih login sebagai user system postgres, dimana home direktory user postgres biasanya jika anda install PostgreSQL
lewat distro linux berada di /var/lib/pgsql (Penulis menggunakan distro Mandrake 10)
Masih sebagai root Jalankan perintah-perintah berikut untuk security akses PostgreSQL anda

1.

Edit file var/lib/pgsql/data/pg_hba.conf pada 10 baris terakhir file ini, menjadi :

# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
local all all password

# IPv4-style local connections:
host all all 192.168.1.0 255.255.255.0 password
host all all 127.0.0.1 255.255.255.255 password


# IPv6-style local connections:
#host all all ::1 ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff trust
# Using sockets credentials for improved security. Not available everywhere,
# but works on Linux, *BSD (and probably some others)

#local all all ident sameuser


Penjelasan :

# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
local all all password
Script ini berarti :
Allow any user on the local system to connect to any database under
any user name using Unix-domain sockets (the default for local
connections).

host all all 127.0.0.1 255.255.255.255 password
Script ini berarti :
The same using local loopback TCP/IP connections.

host all all 192.168.1.0 255.255.255.0 password
Script ini berarti :
Allow any user from any host with IP address 192.168.1.x to connect
to database "template1" as the same user name that ident reports for
the connection (typically the Unix user name).


2.

Edit file /var/lib/pgsql/data/postgresql.conf untuk TCP/IP connection, dengan cukup mengubah bagian berikut
atau tepatnya mengaktifkan property berikut

listen_addreses="localhost"


Setelah Selesai restart service PostgreSQL anda

root]#/etc/rc.d/init.d/postgresql restart

Buat User database PostgreSQL

Untuk membuat user baru pada database PostgreSQL haruslah yang membuat user postgres
Jalankan perintah berikut untuk buat user database PostgreSQL ( anda tidak harus sebagai root )
Misalkan user baru = rosa

]$ createuser rosa -p -U postgres


option -p pada command diatas untuk sekaligus membuat password user baru,
sedangkan option -U postgres berarti hanya user postgres yang berhak membuat user baru
Selanjutnya anda diminta untuk memasukan password user_baru kemudian
apakah user_baru boleh membuat database ? ya
apakah user_baru boleh create user baru ? tentu saja tidak
Setelah itu masukan password dari user postgres pada database PostgreSQL

Enter password for new user:
Enter it again:
Shall the new user be allowed to create databases? (y/n) y
Shall the new user be allowed to create more new users? (y/n) n
Password:
CREATE USER

Membuat database

Berikut perintah user database untuk create database baru

]$ createdb latihan -U rosa

Perintah diatas berarti membuat database latihan dimana pemilik database tersebut adalah user database rosa

Login ke database dengan PostgreSQL

Untuk login ke database PostgreSQL jalankan perintah berikut ini

1.

Login ke database latihan dalam komputer yang sama

]$ psql latihan -U rosa


2.

Login ke database latihan dalam komputer lain / server lain

]$ psql latihan -U rosa -h 192.168.1.193

Masukan Password user rosa dan kemudian akan muncul terminal PostgreSQL yang langsung ke database latihan

Welcome to psql 7.4.1, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help on internal slash commands
\g or terminate with semicolon to execute query
\q to quit
latihan=>

Dalam terminal PostgreSQL anda bisa menjalan perintah-perintah SQL

Menghapus Database

Berikut perintah user database untuk menghapus/drop database

]$ dropdb latihan -U rosa

Perintah diatas berarti menghapus database latihan. Dimana pemilik database latihan yang bisa menghapus atau super user database (postgres)

ORACALE TOOLS

Ini sedikit Tools untuk mengelola Oracle sebagai DBMS yang “Menakjubkan” apa iya ?
1. TOAD
Toad merupakan tools yang berguna untuk melakukan administrasi database secara visual. Produk dari QuestSoftware ini memang dapat diandalkan oleh para database admin untuk membantu tugas mereka. Jika kita misalkan, TOAD ini adalah Enterprise Managernya Oracle.
2. PL/SQL Developer
PL/SQL (Procedural Language / Structured Query Language) merupakan bahasa yang umum digunakan dalam pemrograman Oracle. Nah PL/SQL Developer ini adalah tools yang berfungsi untuk melakukan programming di Oracle. Klo kita misalkan PL/SQL Developer ini adalah sebagai Query Analyzernya SQL Server.
3. Ora Developer Studio (OSD)
Sepertinya lumayan untuk tidak bikin kita pusing (hehe alias agak mudah). Tools ini sepertinya cocok untuk para pemula database Oracle walaupun kemampuannya masih di bawah TOAD dan PL/SQL Developer.
4. Insider
Sama dengan OSD, tools ini baru saya download kemarin, perasaan waktu menjankan tools ini terasa lambat banget…, entah dia “makan” resources berapa.
5. EMS Oracle Manager
Hehehe ini tools lumayan keren bo. Nah silahkan download versi Litenya sekitar 15MB saja.

Saran :
Untuk para pemula seperti saya, EMS sudah cukup memberi kita kesempatan yang lebih baik & mudah tentunya dalam mengelola Oracle, hehehe kecuali untuk pada Database Admin yang udah jago seperti Mas2 & Mba2, gunakanlah TOAD / PL/SQL Developer. Sip lah pokoknya :-)

MYSQL TOOLS

Untuk memudahkan kita dalam mengelola basis data MySQL, maka kita dapat menggukan Tools atau software pihak ketiga, seperti :

1.

MySQL GUI Tools (http://dev.mysql.com/downloads/gui-tools/index.html), merupakan software buatan MySQL Corp yang ditujukan untuk melakukan administrasi database secara GUI.
2.

SQLyog (www.webyog.com), merupakan Tools yang menarik, user friendly, dan tersedia dalam 2 edisi. Ediri Enterprise dan Edisi Community.
3.

TOADFree For MySQL (http://www.quest.com/toad-for-mysql/), merupakan Tools yang power full untuk melakukan administrasi database MySQL, membutuhkan .NET Framework2 untuk instalasinya.
4.

MySQLFront (www.mysqlfront.de), merupakan aplikasi GUI yang sederhana dan mudah digunakan.
5.

EMSManager For MySQL (http://www.sqlmanager.net), Merupakan aplikasi yang handal dalam mengelola database berbasis MySQL.
6.

Navicat MySQL (www.navicat.com), merupakan Tools yang relatif baik dalam mengelola database MySQL.
7.

PHPMyAdmin (www.phpmyadmin.net), merupakan Tools berbasis web untuk mengelola database MySQL
Dan Lain Lain,,,

Smoga bermanfaat :-)

Pengenalan Database Administration dan refrensi

Anda bisa belajar dari website yang ada di bawah ini..

salamaik braja ^__^

http://doylp.tripod.com/ora-adm/ora-adm-2.html
http://www.oracle.com/pls/db92/db92.docindex?remark=homepage
http://www.klik-oracle.web.id/?p=7

Menjadi Database Administrator

Hallo teman-teman,
bagi yang sedang belajar untuk mewujudkan cita-citanya menjadi DBA
Oracle, saya ada sedikit tulisan di sini

http://rohmad.net/2008/07/18/kiat-mempersiapkan-diri-jadi-dba-oracle/

___________
Banyak yang bertanya pada saya, terutama teman-teman yang mau lulus
kuliah, "Gimana kiat-kiat mempersiapkan diri untuk jadi DBA Oracle.
Dengan kata lain, Gimana sih caranya menggapai cita-cita jadi DBA Oracle?"

Saran saya:

1. Belajar sendiri Database Oracle
2. Ambil Training Database Oracle
3. Ambil sertifikat Database Oracle
4. Ikut milis dan forum Oracle di internet

Belajar sendiri Database Oracle
==============================

Belajar sendiri juga tidak terlalu susah, bagi yang mau. Untuk guide
awalnya, saya pernah menulis Cara Belajar Database Oracle secara
Otodidak. Saya juga pernah menulis Petunjuk Memahami Database Oracle
berdasarkan tulisan-tulisan di blog ini. Daftar Artikel di blog ini
juga saya susun berdasarkan kategori-kategori pokok database Oracle.

Ambil Training Database Oracle
================================

Ada beberapa alasan kenapa kita mengambil training:

1. Mempercepat menguasai materi database Oracle
2. Males belajar dan explorasi sendiri. Emang paling enak dikasih
tahu daripada nyari tahu sendiri :)
3. Pernah mengambil training (apalagi yang bersertifikat) akan
semakin mempercantik CV. Tetep, di mata penerima kerja, ada point
lebih bagi yang pernah ngambil training database Oracle. Paling tidak
ada bukti bahwa kita pernah belajar database Oracle.
4. Tentu saja, karena punya dana yang cukup

Nanti akan saya buatkan artikel tentang kiat-kiat dan strategi
mengambil training database Oracle. Silahkan ditunggu.

Ambil sertifikat Database Oracle
================================
Mempunyai Sertifikat adalah sebuah keutamaan (bukan keharusan),
apalagi bekerja sebagai DBA di perusahaan konsultan (vendor).
Sertifikat menunjukkan bahwa pemegangnya mempunyai pengetahuan yang
mendalam terhadap database Oracle. Dengan pengetahuan dan pengalaman
yang sama, pemegang sertifikat mempunyai lebih banyak peluang untuk
mendapatkan pekerjaan dan gaji yang lebih tinggi.

Sekilas tentang sertifikasi database Oracle saya bahas di Sertifikasi
Database Oracle. Juga lebih detail tentang Oracle Certified Associate
(OCA) dan Oracle Certified Professional (OCP) saya bahas di Ujian OCA
dan OCP Database Oracle 10g


Lebih lanjut baca di
http://rohmad.net/2008/07/18/kiat-mempersiapkan-diri-jadi-dba-oracle/


Salam,
Rohmad

Friday, October 23, 2009

PC Boot and Linux Init Process:

1. BIOS: The Basic Input/Output System is the lowest level interface between the computer and peripherals.
The BIOS performs integrity checks on memory and seeks instructions on the Master Boor Record (MBR) on the floppy drive or hard drive.
2. The MBR points to the boot loader (GRUB or LILO: Linux boot loader).

Thursday, October 22, 2009

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).

Sertifikasi yes or no?

Saat ini banyak vendor menawarkan berbagai sertifikasi IT, baik untuk level technical support, engineer, architect, developer, maupun auditor. Rata-rata membutuhkan biaya mahal untuk mendapatkan sertifikasi tersebut.

Sebagai contoh, satu mata ujian MCP (Microsoft Certified Professional) membutuhkan biaya Rp.550.000,-. Sedangkan Cisco mematok harga sekitar 1,4 juta per mata ujian. Harga tersebut belum termasuk biaya berbagai kursus, buku, dan riset internet yang perlu dikeluarkan sebelum mengikuti ujian.

Memiliki sertifikasi IT dari vendor international memang tampak bergensi. Bayangkan apabila Anda memiliki sertifikat MCSE (Microsoft Certified System Engineer) atau OCP (Oracle Certified Professional). Peluang mendapatkan pekerjaan bergaji tinggi terbuka lebar di depan. Benarkah demikian?

1. Apakah sertifikasi seseorang merupakan jaminan atas keterampilan dan keahlian yang dimiliki?
2. Apakah sertifikasi membantu mendapatkan pekerjaan yang diidamkan?

Sayangnya kenyataan tidak selalu sesuai dengan harapan. Saya banyak menerima keluhan bahwa memiliki sertifikasi tidak menjadi jaminan mudah mendapatkan pekerjaan serta gaji yang layak.
Berikut adalah beberapa sebab membuat sertifikasi tidak menjamin mendapatkan pekerjaan dan gaji yang diharapkan:

1. Populasi pemegang sertifikasi semakin besar dibandingkan 5-10 tahun lalu. Ini menyebabkan persaingan juga semakin ketat. Jika 5 tahun lalu memiliki sertifikat CCNA dan MCP (lulus 1-2 mata ujian Microsoft) merupakan sesuatu yang bergengsi, tidak semikian halnya saat ini. Anda dapat dengan mudah menemukan pekerja atau mahasiswa yang telah memiliki CCNA atau MCP.
2. Permintaan industri IT semakin kompleks, dan tuntutan kerja semakin tinggi. Saat ini masalah yang dihadapi perusahaan baik IT maupun non IT sangat beragam, sehingga tidak dapat diselesaikan dengan keterampilan yang diwakili oleh 1-2 sertifikasi. Dimasa lalu menjadi ahli Windows networking mendapatkan penghargaan tinggi. Tetapi dengan makin banyaknya perusahaan yang mengadopsi Linux dan menggunakan Cisco router, maka mereka menuntut pekerjanya memiliki keahlian di beberapa bidang sekaligus.
3. Tuntutan skill perusahaan semakin tinggi. Jika dimasa lalu sertifikasi menjadi jaminan mendapat pekerjaan, maka saat ini terdapat kecenderungan sertifikasi hanya menjadi jaminan dipanggil interview :) .
4. Banyaknya paper MCSE dan paper CCNA, atau paper OCP, telah menurunkan nilai sertifikasi. Sebutan paper certified diperuntukkan bagi sesorang yang memiliki sertifikasi, tetapi tidak mempunyai skill sesuai yang diharapkan. Pemegang MCSD, tetapi tidak memahami konsep object oriented dan exception handling. Pemegang CCNA, tetapi bahkan tidak mampu mengkonfigurasi router dan menghitung subnetting dengan benar. Pemegang MCSE, tetapi tidak tahu port berapa yang digunakan SMTP dan POP3. Hal ini terjadi karena mereka hanya berfokus pada bagaimana lulus ujian dengan selamat, dan tidak mempelajari konsep dasar serta berlatih dengan berbagai keterampilan di dunia nyata. Kenyataan ini diperparah dengan banyaknya situs internet yang menawarkan “latihan soal”, tetapi sebenarnya adalah bocoran soal. Beberapa admin testing center yang nakal telah membuat soal-soal tersebut bocor dan diperdagangkan di internet. Microsoft, Cisco, Comptia, telah banyak melakukan upaya hukum terhadap para pembocor, namun tetap saja mati satu tumbuh seribu :) .
5. Banyak para pemburu sertifikasi tidak menyadari bahwa pengalaman di dunia nyata adalah jauh lebih penting daripada sertifikat. Sertifikasi diperlukan sebagai bukti kemampuan, tetapi bukan target utama. Hindari mengambil ujian untuk sesuatu yang Anda tidak memiliki kemampuan nyata di dalamnya.

Apakah sertifikasi IT masih bernilai, jawabnya bisa ya, bisa tidak. Tergantung bagaimana cara kita mendapatkannya, dan kemampuan nyata yang dimiliki.

5 makanan yang menghilang kan stres

Banyak makanan yang diketahui bisa menghilangkan stres, seperti cokelat atau es krim. Tapi ternyata ada jenis makanan lainnya yang bisa melawan stres dan membuat tubuh tetap sehat. Apa saja?

Seperti dikutip dari Shine, Kamis (22/10/2009), ada 5 jenis makanan yang bisa menghilangkan stres, yaitu :

1. Bayam
Menurut Beth Reardon, RD, pakar nutrisi dari Duke Integrative Medicine in Durham, North Carolina, tiga mangkuk bayam bisa mensuplai 40 persen kebutuhan magnesium, yang merupakan mineral yang bisa mengurangi efek stres di dalam tubuh dengan cara mencegah tekanan darah melonjak. Masukkan bayam dalam omelet atau sandwich jika tidak terlalu suka memakannya terpisah.

Wednesday, October 21, 2009

SQL

Sejarah

Sejarah SQL dimulai dari artikel seorang peneliti dari IBM bernama EF Codd yang membahas tentang ide pembuatan basis data relasional pada bulan Juni 1970. Artikel ini juga membahas kemungkinan pembuatan bahasa standar untuk mengakses data dalam basis data tersebut. Bahasa tersebut kemudian diberi nama SEQUEL (Structured English Query Language).

Basis data in the world

Basis data (bahasa Inggris: database), atau sering pula dieja basisdata, adalah kumpulan informasi yang disimpan di dalam komputer secara sistematik sehingga dapat diperiksa menggunakan suatu program komputer untuk memperoleh informasi dari basis data tersebut. Perangkat lunak yang digunakan untuk mengelola dan memanggil kueri (query) basis data disebut sistem manajemen basis data (database management system, DBMS). Sistem basis data dipelajari dalam ilmu informasi.

OBJEK SQL


Objek SQL yang digunakan dalam sistem AS/400 adalah database, view, index dan catalog.
Database
Sebuah database terdiri dari sebuah library, journal, journal receiver, data dictionary dan catalog. Table, view dan objek yang lain dapat dibentuk, dipindahkan atau di-restore dalam database SQL . Pada SQL, table, view dan index hanya dapat dibentuk dalam database AS/400 dan tidak dapat dibentuk dalam library AS/400.
Physical file dapat ditempatkan untuk dibentuk, dipindahkan atau di-restore dalam database SQL. Logical file kemungkinan tidak dapat ditempatkan dalam database SQL karena tidak didefinisikan dalam data dictionary.
Data Dictionary
Data dictionary adalah kumpulan tabel yang terdiri dari pendefinisian objek. Pada saat database dibentuk maka SQL secara otomatis akan membuat data dictionary.
Journal dan Journal Receiver
Digunakan untuk merubah record pada tabel dan view dalam database.
Table, Row dan Column
Table adalah susunan data dua dimensi yang terdiri dari baris dan column. Row adalah bagian horisontal yang terdiri dari satu atau lebih kolom. Column adalah bagian vertikal yang terdiri dari satu atau lebih data dengan satu tipe. Semua data untuk sebuah kolom harus mempunyai tipe data yang sama.
View

Buat user baru di database postgresql

[root@localhost ~]# su - postgres
-bash-3.2$ psql template1
Welcome to psql 8.1.11, the PostgreSQL interactive terminal.

Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit

template1=# CREATE USER dndy WITH PASSWORD '200887';
CREATE ROLE
template1=# CREATE DATABASE dendy;
CREATE DATABASE
template1=# GRANT ALL PRIVILEGES ON DATABASE dendy to dndy;
GRANT
template1=# \q
-bash-3.2$ su - dndy
Password:
[dndy@localhost ~]$ psql -d dendy -U dndy
Welcome to psql 8.1.11, the PostgreSQL interactive terminal.

Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit

dendy=>

dan lanjutkan lah dengan membuat tabel dan isilah data yang anda butuhkan.

Monday, October 19, 2009

DBMS DAN KEUNTUNGANNYA

Secara umum DBMS diartikan sebagai suatu program komputer ang digunakan untuk memasukan, mengubah, menghapus, memanipulasi, dan memperoleh data / informasi dengan praktis dan efisien.

Keunggulan DBMS :
1. Kepraktisan
2. Kecepatan
3. Mengurangi kejemuan
4. Kekinian
Komponen Utama DBMS

hehe..walaupun blom punya anak.kan harus belajar jadi orang tua yang baik.

Asupan gizi yang baik sering tidak bisa dipenuhi oleh seorang anak karena faktor dari luar dan dalam. Faktor luar lantaran keterbatasan ekonomi keluarga. Sedangkan faktor internal ada dalam diri anak yang secara psikologis muncul sebagai problema makan anak.Problema makan ini misalnya dijumpai dalam bentuk anak enggan makan. Perilaku ogah makan bukanlah persoalan sepele. Tidak ada obat mujarab yang bisa segera memulihkan nafsu makan anak. Anak yang malas makan selalu berusaha mencari-cari alasan untuk tidak makan. Misalnya dengan ngemut makanan, mempermainkan, atau memuntahkan makanan.Picky eater (pilih-pilih makanan) sering dijumpai pada anak yang membuat orang tua bingung. Anak yang cenderung berperilaku picky eater akan mengalami kesulitan dalam meramu variasi makanan untuk memenuhi kecukupan gizinya. Makanan yang dikonsumsi sehari-hari cenderung seragam, padahal keanekaragaman makanan

Friday, October 16, 2009

Terlalu mencintai dan agar menjaga hati

Beberapa cara yang dapat dilakukan untuk menjaga hati adalah :
1. Anda harus melupakan akhwat tersebut. Jangan tergoda dengan kecantikan atau sikap manisnya kepada Anda. Syetan adalah makhluk terkutuk yang mampu membuat kita memandang yang buruk menjadi baik/indah atau sebaliknya. Jangan merasa sayang untuk melupakannya atau takut mengecewakannya. Bertindak tegas sejak dini terhadap godaan cinta jauh lebih menyelamatkan daripada membiarkan diri terbakar api cinta yang menghancurkan akal dan amal kita.
2. Sibukkan diri dengan aktivitas yang menguras tenaga dan pikiran, sehingga Anda tidak punya waktu luang untuk memikirkan akhwat tersebut. Kalau malam juga mudah tidurnya, karena sudah terlalu lelah. Namun kalau waktu luang Anda banyak, pikiran akan mengembara. Tabiat pikiran adalah mudah memikirkan hal-hal yang berkesan, enak dan indah. Memikirkan orang yang dicintai termasuk kriteria tersebut, sehingga akan semakin sulit Anda melupakannya.
3. Jika Anda teringat dengan kebaikannya atau saat-saat indah dengannya, imbangi ingatan tersebut dengan mengingat-ingat kekurangannya atau saat-saat yang paling menyakitkan dengannya. Cara ini akan mengurangi rasa suka/cinta yang berlebih-lebihan dengannya.
4. Saingi rasa cinta Anda kepadanya dengan meningkatkan rasa cinta Anda kepada Allah SWT. Jika Anda mencintai Allah, niscaya rasa cinta (yang berlebihan) kepada orang lain akan hilang. Cinta kita kepada orang lain lebih bersifat universal dan rasional karena di hati kita hanya ada cinta sejati kepada Allah SWT.
5. Perbanyak ibadah dan berdoa yang sungguh-sungguh kepada Allah. Minta kepada Allah SWT untuk membalikkan rasa cinta Anda kepada si dia menjadi rasa hambar kepadanya. Ingat! Allah yang mempunyai hati kita dan Ia juga yang mampu membalikkan hati kita. Jika Anda mengatakan sudah berdoa kepada Allah tapi malah mimpi yang indah-indah dengan dia, itu berarti Anda tidak ikhlas dan sungguh-sungguh meminta kepada Allah untuk membantu Anda melupakannya. Mungkin malah Anda tidak ikhlas dengan kehendak Allah yang tidak menginginkan Anda bersama dengannya.

Susah nya menjaga Hati

sudah menjadi fitrah bagi manusia bahwa kita akan menyukai atau cenderung pada lawan jenis. Hal ini sudah jelas diterangkan oleh Allah SWT dalam surah Ar Rum ayat 21 dan Ali Imron ayat 14. Namun perasaan tersebut tidak akan muncul jika tidak ada sebab yang mengakibatkan perasaan ini muncul ke permukaan.

Belajar menghilangkan ego

setiap masalah pasti selalu dapat diselesaikan, bahkan banyak cara untuk menyelesaikan suatu masalah. Masalah yang sedang Anda alami saat ini sebenarnya dapat diatasi dengan mudah, karena Anda sudah menyadari masalah tersebut. Sebagian orang terkadang merasa nyaman dan tidak sadar dengan kesulitannya dalam mengendalikan emosi dan amarah, namun Anda sudah merasa menyesal dan depresi dengan masalah anda tersebut. Untuk mengatasinya terdapat beberapa langkah yang dapat Anda lakukan :

Hilangkan lah!

Saudaraku yang dimuliakan Allah SWT, rasa takut merupakan sifat yang fitrah dalam diri manusia. Hendaknya kita menyerahkan rasa takut kita hanya kepada Allah saja karena tidak terjadi sesuatu pun di dunia melainkan karena kehendak-Nya. "...maka janganlah kamu takut kepada mereka dan takutlah kepada-Ku (saja). Dan agar Ku-sempurnakan nikmat-Ku atasmu, dan supaya kamu mendapat petunjuk." (QS. 2 : 150). Dalam suatu riwayat dikemukakan bahwa turunnya ayat ini (QS. 2:150) sehubungan dengan peristiwa berikut: Ketika Nabi SAW memindahkan arah qiblat dari Baitul Maqdis ke Ka'bah, kaum Musyrikin Mekkah berkata: "Muhammad dibingungkan oleh agamanya. Ia memindahkan arah qiblatnya ke arah qiblat kita. Ia mengetahui bahwa jalan kita lebih benar daripada jalannya. Dan ia sudah hamir masuk agama kita." (Diriwayatkan oleh Ibnu Jarir yang bersumber dari as-Suddi melalui sanad-sanadnya.)

Wednesday, October 14, 2009

Jangan lah tergesa-gesa..dendy.

Suatu kisah yang sangat bagus dikisahkan oleh Al Hasan Al Bashri. Sungguh sangat menyentuh. Banyak pelajaran berharga dapat kita gali dari kisah berikut ini. Semoga bermanfaat.

Al Hasan Al Bashri berkata, "Ada seorang pria meninggal dunia lalu meninggalkan seorang anak dan seorang budak. Dia pun berwasiat menyerahkan budak tersebut pada anaknya. Bekas budak tadi memang sangat giat merawat anak dari tuannya. Akhirnya anak tersebut menyukai budak tadi dan dia pun menikahinya.
(Suatu saat), anaknya berkata pada budaknya, "Siapkan aku untuk mencari ilmu". Budaknya lalu menyiapkannya. Dia lalu mendatangi seorang yang alim dan bertanya padanya.

Orang alim itu lalu berkata padanya, "Jika engkau akan berangkat maka beritahulah aku, engkau akan kuajari.” Anak itu berkata, "Saya akan berangkat, ajarilah aku".
Alim itu menasehatkan padanya,
اتق الله، واصبر ولا تستعجل

"Bertakwalah kepada Allah, sabarlah dan jangan engkau terburu - buru".


Al Hasan Al Bashri berkata,
في هذا الخير كله

"Dalam nasehat alim di atas ada seluruh kebaikan".

Instalasi Postgresql di Linux CentOS/RHEL Server 2

PostgreSQL adalah salah satu RDBMS open source yang tangguh dan dapat diterapkan dalam pembuatan aplikasi program dengan bahasa pemrograman favorit anda seperti Java, PHP atau Python.

Instalasi PostgreSQL

Aku ingin masuk surga karena kedua Orang tuaku.

Ibu, ayah ... lewat berbaktipadamu lah jalan menuju surga Rabbku.

Alhamdulilllah wa shalaatu wa salaamu ‘ala Rosulillah wa ‘ala alihi wa shohbihi ajma’in.

Dari Abu Hurairah, Nabi shallallahu 'alaihi wa sallam bersabda,
« رَغِمَ أَنْفُهُ ثُمَّ رَغِمَ أَنْفُهُ ثُمَّ رَغِمَ أَنْفُهُ ». قِيلَ مَنْ يَا رَسُولَ اللَّهِ قَالَ « مَنْ أَدْرَكَ وَالِدَيْهِ عِنْدَ الْكِبَرِ أَحَدَهُمَا أَوْ كِلَيْهِمَا ثُمَّ لَمْ يَدْخُلِ الْجَنَّةَ »

Surat buat Adik ku Arlian mahadie

Kecil, dimanja. Muda, foya-foya.Tua,kaya raya. Mati,masuk surga.

Inilah bahan candaan anak muda saat ini. Mungkin ini cuma bercanda. Namun, kadang juga ada yang punya prinsip hidup seperti ini. Begitu pula dengan seorang adik. Seorang adik dinasehati, “Dek, kamu di dunia ini hanya hidup sementara, jagalah ibadahmu.” Entah mengejek atau sekedar guyonan, dia menjawab, “Justru itu kak, kita manfaatkan hidup di dunia sekarang dengan foya-foya.”

Tuesday, October 13, 2009

Let's go to SQL

ok..tadi boz bilang persiapkan SQL nya.

jadi mulai ne belajar SQL
Sejarah

Sejarah SQL dimulai dari artikel seorang peneliti dari IBM bernama EF Codd yang membahas tentang ide pembuatan basis data relasional pada bulan Juni 1970. Artikel ini juga membahas kemungkinan pembuatan bahasa standar untuk mengakses data dalam basis data tersebut. Bahasa tersebut kemudian diberi nama SEQUEL (Structured English Query Language).

History from Eclipse

Eclipse adalah sebuah IDE (Integrated Development Environment) untuk mengembangkan perangkat lunak dan dapat dijalankan di semua platform (platform-independent). Berikut ini adalah sifat dari Eclipse:

* Multi-platform: Target sistem operasi Eclipse adalah Microsoft Windows, Linux, Solaris, AIX, HP-UX dan Mac OS X.
* Mulit-language: Eclipse dikembangkan dengan bahasa pemrograman Java, akan tetapi Eclipse mendukung pengembangan aplikasi berbasis bahasa pemrograman lainnya, seperti C/C++, Cobol, Python, Perl, PHP, dan lain sebagainya.
* Multi-role: Selain sebagai IDE untuk pengembangan aplikasi, Eclipse pun bisa digunakan untuk aktivitas dalam siklus pengembangan perangkat lunak, seperti dokumentasi, test perangkat lunak, pengembangan web, dan lain sebagainya.

Eclipse pada saat ini merupakan salah satu IDE favorit dikarenakan gratis dan open source, yang berarti setiap orang boleh melihat kode pemrograman perangkat lunak ini. Selain itu, kelebihan dari Eclipse yang membuatnya populer adalah kemampuannya untuk dapat dikembangkan oleh pengguna dengan komponen yang dinamakan plug-in.
Sejarah
Eclipse awalnya dikembangkan oleh IBM untuk menggantikan perangkat lunak IBM Visual Age for Java 4.0. Produk ini diluncurkan oleh IBM pada tanggal 5 November 2001, yang menginvestasikan sebanyak US$ 40 juta untuk pengembangannya. Semenjak itu konsursium Eclipse Foundation mengambil alih untuk pengembangan Eclipse lebih lanjut dan pengaturan organisasinya.
Arsitektur
Sejak versi 3.0, Eclipse pada dasarnya merupakan sebuah kernel, yang mengangkat plug-in. Apa yang dapat digunakan di dalam Eclipse sebenarnya adalah fungsi dari plug-in yang sudah diinstal. Ini merupakan basis dari Eclipse yang dinamakan Rich Client Platform (RCP). Berikut ini adalah komponen yang membentuk RCP:

* Core platform
* OSGi
* SWT (Standard Widget Toolkit)
* JFace
* Eclipse Workbench

Secara standar Eclipse selalu dilengkapi dengan JDT (Java Development Tools), plug-in yang membuat Eclipse kompatibel untuk mengembangkan program Java, dan PDE (Plug-in Development Environment) untuk mengembangkan plug-in baru. Eclipse beserta plug-in-nya diimplementasikan dalam bahasa pemrograman Java.

Konsep Eclipse adalah IDE yang terbuka (open), mudah diperluas (extensible) untuk apa saja, dan tidak untuk sesuatu yang spesifik. Jadi, Eclipse tidak saja untuk mengembangkan program Java, akan tetapi dapat digunakan untuk berbagai macam keperluan, cukup dengan menginstal plug-in yang dibutuhkan. Apabila ingin mengembangkan program C/C++ terdapat plug-in CDT (C/C++ Development Tools). Selain itu, pengembangan secara visual bukan hal yang tidak mungkin oleh Eclipse, plug-in UML2 tersedia untuk membuat diagram UML. Dengan menggunakan PDE setiap orang bisa membuat plug-in sesuai dengan keinginannya. Salah satu situs yang menawarkan plug-in secara gratis seperti Eclipse downloads by project.
Kontroversi Eclipse
Hadirnya Eclipse di tengah-tengah persaingan IDE, terutama Java IDE, menimbulkan banyak kontroversi. Salah satunya adalah penggunaan user interface Eclipse. Sun Microsystems sebagai perusahaan yang membuat Java, selama ini mengeluarkan dua library untuk pengembangan Graphical User Interface (GUI), yaitu Abstract Windowing Toolkit (AWT) dan Swing. Akan tetapi dalam pembuatan Eclipse, dua library ini ditinggalkan karena berbagai alasan, yang salah satunya adalah kedua library ini tidak memberikan look and feel yang baik. Sehingga untuk hal ini dikembangkanlah GUI-library yang baru, SWT.Selain itu, Sun yang mempunyai IDE sendiri untuk pengembangan Java bernama NetBeans, menjadi gerah atas kehadiran Eclipse yang sampai saat ini komunitasnya cukup besar. Hal ini terlihat dengan menolaknya Sun untuk bekerja sama dalam Eclipse Foundation, walau telah diundang .

Nama Eclipse seolah-olah memberi pesan explisit: cahaya Sun (matahari) yang pancarannya dihalangi oleh Eclipse (gerhana).

Command Security di GNU/Linux