Arsip Bulanan: Januari 2008

TDateTime

GetDateRecordFromDate

function GetDateRecordFromDate(aDate: TDateTime): TDateRecord;
begin
DecodeDate(aDate, Result.Year, Result.Month, Result.Day);
end;

ClearDatePart

function ClearDatePart(aDateTime: TDateTime): TDateTime;
Var h, m, s, ms: Word;
begin
DecodeTime(aDateTime, h, m, s, ms);
Result := EncodeTime(h, m, s, ms);
end;

ClearTimePart

function ClearTimePart(aDateTime: TDateTime): TDateTime;
Var y, m, d: Word;
begin
DecodeDate(aDateTime, y, m, d);
Result := EncodeDate(y, m, d);
end;

Fungsi Tanggal

Uses SysUtils;
Type TDateRecord = record Year : Word; Month : Word; Day : Word;
end;

Jumlah Hari dalam Satu Bulan

var DaysInYear: array[1..12] of Integer = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
Days, Month, Year: Word;

implementation …
procedure TForm1.Button1Click(Sender: TObject);
begin
Month:=StrToInt(Edit1.Text);
Year:=StrToInt(Edit2.Text);
if (IsLeapYear(Year)=True)and(Month=2) then
Days:=DaysInYear[Month]+1
else
Days:=DaysInYear[Month];
Label1.Caption:=IntToStr(Days)+’ days in ‘+Edit2.text+’ year’;
end;

procedure TForm1.FormCreate(Sender: TObject);
var Present: TDateTime;
begin
Present:=Now; DecodeDate(Present, Year, Month, Days);
Edit1.Text:=IntToStr(Month);
Edit2.Text:=IntToStr(Year);
end;

Membuat Timer

var MyTime: TDateTime; …
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Interval:=1000;
MyTime:=Now; Timer1Timer(Timer1);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label1.Caption:=TimeToStr(Now-MyTime);
end;

MonthsPassed

function MonthsPassed(aFrom, anUntil: TDateTime): Integer;
begin
Result := 12 * (YearFromDate(anUntil) – YearFromDate(aFrom)) + MonthFromDate(anUntil) – MonthFromDate(aFrom);
end;

AddMonthsToDate

function AddMonthsToDate(aDate: TDateTime; aNrMonths: Integer): TDateTime;
begin
Result := IncMonth(aDate, aNrMonths);
end;

GetLastDateOfMonth

function GetLastDateOfMonth(aYear, aMonth: Integer): TDateTime;
begin
Result := EncodeDate(aYear, aMonth, GetLastDayOfMonth(aYear, aMonth));
end;

GetFirstDateOfMonth

function GetFirstDateOfMonth(aYear, aMonth: Integer): TDateTime;
begin
Result := EncodeDate(aYear, aMonth, 1);
end;

GetLastDateOfYear

function GetLastDateOfYear(aYear: Integer): TDateTime;
begin
Result := EncodeDate(aYear, 12, 31);
end;

GetFirstDateOfYear

function GetFirstDateOfYear(aYear: Integer): TDateTime;
begin
Result := EncodeDate(aYear, 1, 1);
end;

GetLastDayOfMonth

function GetLastDayOfMonth(aYear, aMonth: Integer): Integer;
Const
cDAYSINMONTHS: Array[1..12] Of Integer = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
begin
Result := cDAYSINMONTHS[aMonth];
If (aMonth = 2) And
IsLeapYear(aYear) Then
Inc(Result);
end;

DayFromDate

function DayFromDate(aDate: TDateTime): Integer;
begin
Result := GetDateRecordFromDate(aDate).Day;
end;

MonthFromDate

function MonthFromDate(aDate: TDateTime): Integer;
begin
Result := GetDateRecordFromDate(aDate).Month;
end;

YearFromDate

function YearFromDate(aDate: TDateTime): Integer;
begin
Result := GetDateRecordFromDate(aDate).Year;
end;

Iklan

Interbase

I. Pendahuluan

Borland Interbase Server (Selanjutnya kita sebut IB saja) adalah database server yang sangat handal dan sangat terkenal dikalangan programmer yang menggunakan Borland Delphi sebagai alat untuk mengembangkan aplikasi database-nya. Firebird Server (selanjutnya kita sebut Firebird saja) bisa dibilang sebagai “adik sepupu” dari IB karena fitur dan perluasan bahasa SQL-nya sangat mirip dengan IB. Firebird juga dapat diartikan sebagai versi free dari IB. Dalam tutorial ini, saya akan coba menjabarkan bagaimana cara instalasi Firebird, Administrasi database, koneksi ke IB/Firebird via command line(menggunakan MS-DOS/ cmd.exe) dan via GUI (Graphical User Interface). Khusus untuk koneksi database via GUI, kita akan menggunakan IBO Console yang dapat didownload di situs resmi firebird (www.ibphoenix.com). Interface dari IBO Console sangat mirip dengan IBConsole (GUI tool IB yang langsung terinstall saat anda melakukan instalasi IB server secara default). IBO Console diperlukan disini karena Firebird Server secara default tidak memiliki console GUI untuk administrasi dan management databasenya, disamping itu fitur IBO Console lebih lengkap (menurut opini saya pribadi J) dari IBConsole bawaan IB, dan yang paling penting IBO Console adalah Freeware J. Selain itu, saya juga akan membahas bagaimana cara untuk membuat database, table, view, generator, stored procedure dan trigger, dan sebagainya.

II. Instalasi Firebird

Sebelum memulai tutorial ini, anda harus sudah memasang IB/Firebird pada komputer anda. Bila anda sudah menginstal Delphi (Delphi 6 atau yang lebih baru) Profesional/ Enterprise edition dengan mode instalasi default, maka IB sudah terinstalasi pada system anda. Untuk menginstal Firebird, anda harus mendownloadnya terlebih di situs resminya (www.ibphoenix.com). Apabila anda belum memiliki binary/ installer Firebird Server, anda dapat mendownloadnya di situs resmi Firebird (www.ibphoenix.com).

Dalam tutorial ini, saya menggunaka Firebird Server versi 2.0.1 dengan platform Microsoft Windows XP SP1.

Setelah Firebird berhasil anda download, maka lakukanlah pemasangan Firebird dengan langkah-langkah seperti dibawah ini :

  1. Klik ganda pada binary/ setup file Firebird yang baru anda download.
  2. Klik OK untuk melanjutkan proses instalasi.
  3. Setelah muncul Welcome Screen Instalasi Firebird, Klik next.
  4. Setelah muncul jendela ‘License agreement’, centang pilihan ‘I accept the agreement’, kemudian klik ‘Next’.
  5. Pilih lokasi instalasi Firebird anda (Defaultnya adalah C:\Program Files\Firebird\Firebird_2_0), kemudian klik ‘Next’. Pada pilihan ‘Install Component’, pilihlah pilihan-pilihan yang ada seperti gambar dibawah ini, klik ‘Next’.
  6. Bila pilihan additional task sudah muncul, isilah pilihan-pilihannya seperti gambar dibawah ini, kemudian klik ‘Next’.
  7. Kemudian klik install. Tunggu sampai instalasi selesai. Bila jendela konfirmasi untuk me reboot/ restart computer muncul, klik Yes/ Ok .

III. Management Database

a) Via Command Line

Catatan :

Untuk membuka Command Line, pilih ‘Start->Run’, kemudian ketik ‘cmd’ (tanpa tanda petik) lalu klik tombol ‘Ok’.

Sebelum melakukan operasi pada Command Line, pertama-tama, tambahkan terlebih dahulu path lokasi instalasi Firebird kedalam Path system environtment computer anda. Untuk menambahkan Path Firebird kedalam Path system environtment, Lakukan langkah-langkah seperti dibawah ini :

1. Klik kanan pada icon ‘My Computer->Properties‘ yang ada pada desktop atau dapat juga dengan meng-klik ‘Start->control Panel->System‘.

2. Pilih Tab ‘Advanced‘ dan klik ‘Environtment Variables‘.

3. Pada Kotak ‘User Varibles for xxx‘ (dimana xxx adalah nama computer anda), apabila variable ‘PATH‘ belum ada, maka klik tombol ‘New‘ dan masukkan ‘PATH‘ (tanpa tanda kutip) pada isian ‘Variable Name‘, dan lokasi directory bin Firebird (missal anda menginstal Firebird pada lokasi ‘C:\Program Files\Firebird\Firebird_2_0′, maka lokasi directory bin Firebird Server adalah ‘C:\Program Files\Firebird\Firebird_2_0\bin’ tanpa tanda kutip) anda pada isian ‘Variable Value‘. Sedangkan bila variable ‘PATH‘ sudah ada, klik ‘PATH‘, kemudian tekan tombol ‘Edit‘. Setelah itu, tambahkan lokasi directory bin Firebird Server pada kotak isian ‘Variable Value‘. Ingat, untuk memisahkan variable value, gunakan semi colon (tanda titik koma) pada akhir PATH yang sudah ada, missal (c:\php;C:\Program Files\Firebird\Firebird_2_0\bin)

1. Management User

Secara default SuperUser pada IB/Fireberd adalah ‘sysdba‘ dan password defaultnya adalah ‘masterkey‘ (tanpa tanda kutip). Untuk alasan keamanan, ubahlah password SuperUser anda setelah instalasi IB/Firebird. Dalam melakukan operasi penambahan/pengubahan/penghapusan data user, dibutuhkan hak akses SuperUser atau user yang memiliki hak akses untuk menambah/mengubah/menghapus data yang ada pada table RDB$USERS pada database security2.fdb.

Dalam melakukan operasi management user, dibutuhkan program gsec.exe yang ada pada directory bin IB/Firebird. Untuk melakukan operasi ini, buka Command Line dan tulislah:

gsec -user A -pass B -<op> C -pw D

Penjelasan :

o parameter -user A adalah user yang melakukan operasi. Dalam hal ini yang melakukan operasi adalah user yang bernama A.

o parameter -pass B adalah password user yang melakukan operasi. Dalam hal ini password A adalah B

o parameter <OP> C adalah operasi yang dikenakan pada user C dimana <op> adalah operasi yang dilakukan.

Pilihan <op> adalah :

1. add untuk melakukan penambahan user ,

2. mo untuk mengubah user (modify), dan

3. del untuk menghapus user (delete).

Dalam hal ini, operasi yang dilakukan dikenakan pada user yang bernama C.

o Parameter -pw D adalah password yang digunakan oleh C dimana D adalah password dari C. parameter ini hanya diperlukan pada operasi penambahan dan pengubahan user saja. Untuk operasi penghapusan user, parameter ini tidak diperlukan.

Misal :

o Operasi untuk menambah user dengan nama user1 dan password pwuser1

gsec -user sysdba -pass masterkey -add user1 -pw user1

o Operasi untuk mengubah password user dengan nama user1 dan password barunya adalah user123

gsec -user sysdba -pass masterkey -mo user1 -pw user1

o Operasi untuk menghapus user dengan nama user1

gsec -user sysdba -pass masterkey -del user1

2. Operasi Database

Membuat Database & Koneksi Database

Untuk membuat database, diperlukan program isql.exe yang ada pada directory binIB/Firebird. Dalam pembuatan database, usahakan sebisa mungkin tidak menggunakan superuser (sysdba), karena sysdba memiliki control penuh pada IB/Firebird Server anda serta dapat melakukan apa saja pada server IB/firebird, termasuk merusak struktur, isi, serta data-data penting yang ada pada database anda. Gunakanlah sysdba hanya untuk management user saja.

a. Membuat Database

Untuk membuat database baru, bukalah terlebih dahulu Command Line, kemudian ketik ‘isql’ (tanpa tanda petik), lalu tekan enter.

Setelah muncul prompt SQL> , ketik

CREATE DATABASE ‘A’ page_size 1234 user ‘B’ password ‘C’;

Penjelasan :

o A adalah nama database beserta full path nya, missal : c:\data\test.fdb atau d:\my data\test.gdb

o 1234 adalah ukuran page size dari database. Nilai – nilai page size dapat diisi dengan 1024,2048,4096,8192,16384, dan kelipatannya. Secara default, ukuran dari page size adalah 1024.

o B adalah nama user yang membuat (pemilik) database.

o C adalah password user pembuat database.

Contoh:

CREATE DATABASE ‘c:\data\POS.fdb’ page_size 1024 user ‘user1′ password ‘user1′;

Kemudian klik Enter.

Maka akan terbentuk database bernama POS.fdb dengan lokasi di c:\data (di drive C pada directory data).

b. Koneksi ke Database

Untuk koneksi ke database, pada isql, ketik

CONNECT ‘A’ USER ‘B’ PASSWORD ‘C’;

Penjelasan :

  • A adalah nama beserta lokasi lengkap (full path) dari database
  • B adalah nama user yang akan melakukan koneksi kedalam database.
  • C adalah password user yang akan melakukan koneksi.

Contoh :

CONNECT ‘c:\data\POS.fdb’ USER ‘user1 PASSWORD ‘user1;

c. Backup/Restore

Backup dapat diartikan sebagai salinan dari file program atau dalam hal ini file database yang dibuat untuk memberi jaminan agar data yang ada tidak hilang atau terhapus apabila terjadi sesuatu pada file aslinya.

Sedangkan Restore dapat diartikan sebagai proses pengembalian file/data dari file backup yang dibuat sebelumnya untuk merecovery kerusakan file asli atau mengembalikan data file asli sesuai dengan isi data file asli saat dibuatnya file backup.

Untuk melakukan backup/restore database, diperlukan program gbak.exe yang ada pada directory bin IB/Firebird.

Secara umum untuk melakukan standard backup/restore, dapat dilakukan dengan mengeksekusi perintah berikut pada Command Line:

Gbak A -[b] B -user C -pas D

Penjelasan

Gbak adalah program yang dipanggil untuk melakukan operasi backup/restore

A adalah file input. Untuk backup, file inputnya berupa file IB/Firebird database (Extensinya : *.gdb | *.fdb | *.ib). Sedangkan untuk operasi restore inputnya berupa file backup (Extensinya : *.gbk | *.fbk | *.ibk).

[b] adalah operasi yang dilakukan. Operasi-operasi dalam penggunaan gbak adalah

B(ACKUP_DATABASE) backup database ke dalam file

-BU(FFERS) override page buffers default

-C(REATE_DATABASE) membuat database dari backup file

-CO(NVERT) backup external files sebagai tabel

-E(XPAND) tanpa kompresi data

-FA(CTOR) blocking factor

-G(ARBAGE_COLLECT) mencegah data sampah

-I(NACTIVE) mematikan indek saat restore

-IG(NORE) mengabaikan bad checksums

-K(ILL) restore tanpa membuat shadows

-L(IMBO) abaikan transaksi dalam limbo

-M(ETA_DATA) hanya backup metadata

-MO(DE) <access> “read_only” or “read_write” access

-N(O_VALIDITY) tidak merestore kondisi validitas database

-NT Format backup file Non-Transportable

-O(NE_AT_A_TIME) restore satu tabel saja

-OL(D_DESCRIPTIONS) simpan deskripsi metadata yang lama

-P(AGE_SIZE) override page size default

-PAS(SWORD) Firebird password

-R(ECREATE_DATABASE) [O(VERWRITE)] membuat (atau mengganti bila OVERWRITE digunakan) database from backup file

-REP(LACE_DATABASE) mengganti database dari file backup

-RO(LE) Firebird SQL role

-SE(RVICE) gunakan manager service

-T(RANSPORTABLE) transportable backup-data dlm format XDR

-USE_(ALL_SPACE) tanpa membuat cadangan untuk versi record

-USER Firebird user name

-V(ERIFY) laporkan tiap aksi yang diambil

-Y <path> redirect/suppress status message output

-Z cetak version number

Contoh :

Backup :

Gbak c:\POS.fdb -b c:\POS_2007_aug_16.fbk -user user1 -pas user1

Perintah diatas akan membuat file backup yang bernama POS_2007_aug_16.fbk yang terletak di drive c:\ dari file database yang bernama POS.fdb yang terletak pada drive c:\. Operasi backup ini dilakukan oleh user1 dengan password dari user1 adalah user1.

Restore :

Gbak c:\POS_2007_aug_16.fbk -c c:\POS_Restore.fdb -user user1 -pas user1

Perintah diatas akan membuat file database yang bernama POS_Restore.fdb yang terletak pada drive c:\. Dimana POS_Restore.fdb ini dibuat dari backup file bernama POS_2007_aug_16.fbk yang terletak di drive c:\. Operasi ini dilakukan oleh user yang bernama user1 dengan passwordnya adalah user1 juga.

Perbedaan Programmer Otodidak dan Lulusan Informatika

Pernahkah anda punya rekan yang bisa pemrograman komputer tapi tidak berlatar belakang informatika/sejenisnya? Saya punya. Mulai dari programmer yang copy paste source code sampai dengan yang mampu bikin class sendiri juga ada. Disisi lain saya juga memiliki teman dengan latar belakang informatika namun kemampuan codingnya sama seperti rekan saya yang otodidak, bahkan ada yang mengaku lulusan informatika namun tidak mampu melakukan coding program.

Saya punya teman, pintar, logic programmingnya oke, menguasai lebih dari satu bahasa pemrograman selain itu proses codingnya juga cepat. Kalo disuruh misalnya “Gue butuh program bla.. bla.. bla.., elo bisa buat?” dia langsung jawab “Bisa!”. Tapi, giliran disuruh bikin ER Diagram ataupun DFD dia bingung harus mulai darimana.

Lalu timbul pertanyaan saya, kenapa masih ada lulusan informatika bisa dikalahkan oleh orang-orang otodidak dalam pemrograman? sebegitu mudahkah menjadi seorang programmer? apakah hanya dengan mengetahui logika pemrograman dan syntax-nya maka sudah menjadi seorang programmer? Lalu apa yang membedakan programmer lulusan teknik informatika dan yang otodidak?

Berdasarkan pengalaman saya bertemu dengan programmer otodidak, hampir sebagian besar mengerti pemrograman namun tidak diawali dengan belajar teori-teori dasar pemrograman. Biasanya hal itu akan dipelajari sambil berjalan seiring dengan mencoba beberapa baris kode. Sedangkan dalam dunia pendidikan, AFAIK, sebelum coding diharuskan mengerti terlebih dahulu teori-teori dasar seperti misalnya DFD, ER Diagram, bit, Byte dan lain sebagainya, baru nanti akan melangkah ke pemrogramannya.

Jika anda programmer terlepas apapun latar belakangnya tentu pernah mengalami hal-hal seperti dibawah ini :

  • Penggunaan beberapa fungsi-fungsi sejenis yang terkadang membingungkan dalam penggunaannya. Seperti misalnya kapan harus menggunakan str_replace dan kapan menggunakan ereg_replace atau kenapa harus strstr daripada preg_match() dalam PHP?
  • Jika berhubungan dengan field-field database pernahkah penentuan type field berdasarkan alasan yang jelas? Seperti misalnya kenapa harus bigint daripada int atau langsung comot yang paling besar? *mysql style*
  • Kenapa harus ADO daripada DAO untuk melakukan koneksi ke database *Lha, masih pake VB 6.0? =))*
  • script coding yang sederhana, begin…end;

Jujur, untuk hal-hal seperti itu kadang saya harus buka buku lagi, ya maklumlah namanya juga programmer pemula dan otodidak pula *ngeles*.

Berkaca dari contoh kasus diatas, lalu apa yang seharusnya membedakan antara programmer otodidak dan programmer berlatar belakang informatika?

Menurut saya yang memiliki latar belakang informatika harus bisa mengungguli yang otodidak dengan menguasai teori-teori dasar ini. Kemampuan seperti menyusun ER Diagram, DFD, bit, Byte, alokasi memori dan hal-hal lainnya harus bisa dikuasai oleh yang berlatar belakang informatika. Bahkan akan lebih bagus jika programmer berlatar belakang informatika mampu menguasai itu semua namun dapat menjelaskannya dengan bahasa yang mudah dimengerti oleh orang lain. Bukan tidak mungkin programmer otodidak akan mempelajari hal seperti itu mengingat resources pemrograman sangat banyak beredar di internet. Ini tantangan yang akan dialami oleh lulusan informatika khususnya para programmer.

“Mengeluh”

  Sebuah kata sederhana yang mungkin jarang kita gunakan dalam kehidupan sehari-hari, tetapi seringkali kita praktekkan langsung baik secara sadar maupun tidak sadar. Beberapa waktu lalu saya berkumpul dengan teman-teman lama saya. Seperti biasanya kami membicarakan mengenai pekerjaan, pasangan hidup, masa lalu, dan berbagai macam hal lainnya.

Setelah pulang saya baru tersadar, bahwa kami satu sama lain saling berlomba untuk memamerkan keluhan kami masing-masing seolah-olah siapa yang paling banyak mengeluh dialah yang paling hebat.

“Bos gue kelewatan masa udah jam 6 gue masih disuruh lembur, sekalian aja suruh gue nginep di kantor!” “Kerjaan gue ditambahin melulu tiap hari, padahal itu kan bukan “job-des” gue” “Anak buah gue memang bego, disuruh apa-apa salah melulu”.

Kita semua melakukan hal tersebut setiap saat tanpa menyadarinya. Tahukah Anda semakin sering kita mengeluh, maka semakin sering pula kita mengalami hal tersebut. Sebagai contohnya, salah satu teman baik saya selalu mengeluh mengenai pekerjaan dia. Sudah beberapa kali dia pindah kerja dan setiap kali dia bekerja di tempat yang baru, dia selalu mengeluhkan mengenai atasan atau rekan-rekan sekerjanya. Sebelum dia pindah ke pekerjaan berikutnya dia selalu ribut dengan atasan atau rekan sekerjanya. Seperti yang bisa kita lihat bahwa terbentuk suatu pola tertentu yang sudah dapat diprediksi, dia akan selalu pindah dari satu pekerjaan ke pekerjaan berikutnya sampai dia belajar untuk tidak mengeluh.

Mengeluh adalah hal yang sangat mudah dilakukan dan bagi beberapa orang hal ini menjadi suatu kebiasaan dan parahnya lagi mengeluh menjadi suatu kebanggaan. Bila Anda memiliki dua orang teman, yang pertama selalu berpikiran positif dan yang kedua selalu mengeluh, Anda akan lebih senang berhubungan dengan yang mana? Menjadi seorang yang pengeluh mungkin bisa mendapatkan simpati dari teman kita, tetapi tidak akan membuat kita memiliki lebih banyak teman dan tidak akan menyelesaikan masalah kita, bahkan bisa membuat kita kehilangan teman-teman kita.

Yang menjadi pertanyaan adalah mengapa kita mengeluh? Kita mengeluh karena kita kecewa bahwa realitas yang terjadi tidak sesuai dengan harapan kita. Bagaimana kita mengatasi hal ini. Caranya sebenarnya gampang-gampang susah, kita hanya perlu bersyukur.

Saya percaya bahwa di balik semua hal yang kita keluhkan PASTI ADA hal yang dapat kita syukuri.

Sebagai ilustrasi, Anda mengeluh dengan pekerjaan Anda. Tahukah Anda berapa banyak jumlah pengangguran yang ada di Indonesia ? Sekarang ini hampir 60% orang pada usia kerja produktif tidak bekerja, jadi bersyukurlah Anda masih memiliki pekerjaan dan penghasilan. Atau Anda mengeluh karena disuruh lembur atau disuruh melakukan kerja ekstra. Tahukah Anda bahwa sebenarnya atasan Anda percaya kepada kemampuan Anda? Kalau Anda tidak mampu tidak mungkin atasan Anda menyuruh Anda lembur atau memberikan pekerjaan tambahan. Bersyukurlah karena Anda telah diberikan kepercayaan oleh atasan Anda, mungkin dengan Anda lebih rajin siapa tahu Anda bisa mendapatkan promosi lebih cepat dari yang Anda harapkan.

Bersyukurlah lebih banyak dan percayalah hidup Anda akan lebih mudah dan keberuntungan senantiasa selalu bersama Anda, karena Anda dapat melihat hal-hal yang selama ini mungkin luput dari pandangan Anda karena Anda terlalu sibuk mengeluh.

Try it now:

  1. Bersyukurlah setiap hari setidaknya satu kali sehari. Bersyukurlah atas pekerjaan Anda, kesehatan Anda, keluarga Anda atau apapun yang dapat Anda  syukuri. Ambilah waktu selama 10-30 detik saja untuk bersyukur kemudian lanjutkan kembali kegiatan Anda.
  1. Jangan mengeluh bila Anda menghadapi kesulitan tetapi lakukanlah hal berikut ini. Tutuplah mata Anda, tarik nafas panjang, tahan sebentar dan kemudian hembuskan pelan-pelan dari mulut Anda, buka mata Anda, tersenyumlah dan pikirkanlah bahwa suatu saat nanti Anda akan bersyukur atas semua yang terjadi pada saat ini.
  1. Biasakan diri untuk tidak ikut-ikutan mengeluh bila Anda sedang bersama teman-teman yang sedang mengeluh dan beri tanggapan yang positif atau tidak sama sekali. Selalu berpikir positif dan lihatlah perubahan dalam hidup Anda.
  1. “Semakin banyak Anda bersyukur kepada Tuhan atas apa yang Anda miliki, maka semakin banyak hal yang akan Anda miliki untuk disyukuri.”

Note :
Saya bersyukur karena Anda telah membaca email ini dan saya akan lebih bersyukur lagi jika Anda memberikan sedikit pelajaran ini kepada beberapa teman2 anda tentang artinya bersyukur.

Semoga dibaca dan bermanfaat

Jadi lakukan mulai Hari ini……!!!!!

Mengapa Cincin Pernikahan Harus Ditaruh di Jari Manis?

Tulisan ini gw kutip dari milis dengan beberapa perubahan redaksi seperlunya… )

Mengapa Cincin Pernikahan Harus Ditaruh di Jari Manis??  Ikuti langkah berikut ini, Tuhan benar2 membuat keajaiban (ini berasal dari kutipan Cina)

  • Pertama, tunjukkan telapak tangan anda, jari tengah ditekuk ke dalam;
  • Kemudian, 4 jari yang lain pertemukan ujungnya;
    memasangkan tangan
    Memasangkan jari
  • Permainan dimulai, 5 pasang jari tetapi hanya 1 pasang yang tidak terpisahkan;
  • Cobalah membuka ibu jari anda, ibu jari menwakili orang tua, ibu jari bisa dibuka karena semua manusia mengalami sakit dan mati.  Dengan demikian orang tua kita akan meninggalkan kita suatu hari nanti;
  • Tutup kembali ibu jari anda, kemudian buka jari telunjuk anda, jari telunjuk mewakili kakak dan adik anda, mereke memiliki keluarga sendiri, sehingga mereka juga akan meninggalkan kita;
  • sekarang tutup kembali jari telunjuk anda, buka jari kelingking, yang mewakili anak2.  cepat atau lambat anak2 juga akan meninggalkan kita;
  • selanjutnya, tutup jari kelingking anda, bukalah jari manis anda tempat dimana kita menaruh cincin perkawinan anda, anda akan heran karena jari tersebut tidak akan bisa dibuka. Karena jari manis mewakili suami dan istri, selama hidup anda dan pasangan anda akan terus melekat satu sama lain.

memang benar jari yang paling tinggi, paling tengah, dalam posisi seperti gambar tersebut, mengakibatkan jari manis tidak bisa dibuka. Tetapi kalau kedua Jari Tengah dipertemukan seperti keempat pasang jari yang lain pasti jari manis yang bandel tadi bisa dibuka. Apa maknanya ?

Kalau semua jari dipertemukan (tidak ada yg ditekuk), memang betul semua jari bisa di buka. Hanya besarnya bukaan jari manis paling kecil, dibanding bukaan jari-jari lainnya.

Itulah Kebesaran Tuhan, tapi manusia selalu berusaha merubahnya.
Jari manis akan terbuka bila ada pihak luar yang membantu membukanya, atau memotong jari manis itu.

Pasangan Perkawinan akan lepas dan bubar bila ada kekuatan-kekuatan dari pihak luar yang
Membantu Melepaskannya“.

pendapat lain..

Ikatan suci perkawinan bukanlah benda mati yang tidak bisa berubah. Kembali harus ada komitmen dari yang terikat untuk menjaga ikatan itu. Apa mau ikatan itu tetap kuat atau bagaimana kualitas ikatan itulah . . . . . Harus ada usaha entah itu dari dua pihak, atau semula satu pihak untuk akhirnya menjadi komitmen dua pihak juga. . . . .

mencari nama untuk anak

“What’s in a name? That which we call a rose by any other name would smell as sweet.”

apalah arti sebuah nama …. demikian kata om shakespeare soal nama. saya pribadi termasuk orang yg tidak begitu mementingkan makna apa dibalik sebuah nama apalagi nama saya juga ga bagus-bagus amat alias ga terlalu istimewa/unik :). namun ketika tiba giliran saya diberi tanggungjawab untuk mencari nama bagi anak saya yang sebentar lagi akan lahir maka tiba-tiba saja persoalan mencari nama dan makna nama menjadi persoalan yang cukup menyita waktu dan konsentrasi 🙂 apalagi dengan pertimbangan kesesuaian/keserasian makna dibalik nama, nama kecil, nama baptis plus marga ..halah.. satu hal yang hampir pasti menurut hasil USG jenis kelamin anak saya adalah laki-laki sehingga cukup membantu dalam arti saya bisa exclude nama-nama semacam : chyntia, sarah, yanti, siti, dan sejenisnya. namun pun demikian dari sekian banyak kriteria dan alternatif nama-nama bayi laki-laki hingga kini belum pasti mana yang akan diambil 😦 memang ternyata banyak sekali alternatif nama-nama yang bagus-bagus semacam george, revaldo, jack dll cuma kayaknya ga sreg juga kalo sekedar enak didengar. keluarga (terutama istri) maunya selain enak didengar juga bermakna ..halah…

lalu saya mencoba mencari bala bantuan di internet via google dengan keyword ‘tips + nama anak’ dan saya menemukan ‘9 tips memberi nama anak’ yang ternyata sudah tersebar di banyak lokasi (blog, situs, milis, dll) dan ga tau siapa yg pertama kali ‘menciptakan’ tips ini. kira-kira begini isi ke 9 tips tersebut :

1. Nama itu mengandung do’a.
Nama anak itu cermin harapan orang tua. Nama itu mengandung Do’a.Tetapi do’anya yang singkat saja. Kalau terlalu panjang nanti dikira Tahlil atau Wirid. Kalau dipanggil bukannya nengok, malah bilang “Amiinn..”

2. Nama jangan nyusahin orang Kelurahan
Nama anak mudah dibaca dan mudah ditulis. Meskipun tampaknya bagus,jangan pakai huruf mati yang digandeng-gandeng atau didobel-dobel (mis.Lloyd,Nikky, Thasya dll). Biasanya sama petugas Kelurahan akan terjadi salah tulis dalam pembuatan Akta Kelahiran, Kartu Keluarga, KTP dll.Nah… nggak enaknya lagi kalo kita minta revisi biasanya kena biaya lagi… dan prosesnya lama lagi.

3. Nama jangan cuma satu kata
Minimal ada First Name, Nick Name dan Family name gitu loh…. Ini penting terutama kalo pas lagi ngurus Paspor atau Visa. Nggak jadi berangkat ke Amrik hanya gara-gara namanya cuma Prakoso atau Pamuji atau Paryono khan esiaan…

4. Nama jangan terlalu panjang
Nama yang panjang bererot bisa bikin susah si pemilik nama. Disamping susah ngingetnya, juga ngerepotin waktu ngisi formulir pendaftaran masuk Perguruan Tinggi Negeri (dulu UMPTN). Itu lho..yang ngitemin buletan-buletan pakai pensil 2B. Capeek khaan… Nama panjang seperti Siti Hartati Riwayati Mulianingsih Adiningrum Mekar Berseri Sepanjang Hari…. adalah sangat-sangat not-recommended.

5. Nama anak bersifat internasional
Anak kita hidup dimasa depan, di era globalisasi dimana hubungan dengan dunia internasional amat sangat intens. Jadi jangan mempersulit anak dengan nama-nama yang sulit di-eja. Nama Saklitinov msalnya orang Jepang nyebutnya Sakuritino, orang Sunda bilang aktinop orang Amrik bilang Sechlaytinove… Syusah khaaannn Padahal maksudnya Sabtu Kliwon Tiga November…

6. Ketahuilah arti nama anak
Ketahuilah arti nama anak. Jangan memberikan nama hanya karena enak diucapkan atau bagus ditulisnya. Nama Jalmowono memang sepintas enak diucapkan dan bagus kalo ditulis tetapi ketahuilah bahwa Jalmowono itu artinya Orang Utan.

7. Jangan pakai nama artis.
Nama artis memang bagus-bagus, cuma masalahnya kalau artis itu kelakuannya baik… lha kalau jadi bahan gosip melulu khan jadi beban juga buat si anak. Lagian pakai nama artis itu tandanya anda gak kreatif dalam bikin nama.

8. Abjad huruf pertama nama anak.
Huruf pertama “A” pada nama anak ada enak gak enaknya. Gak enaknya kalau pas ada ujian/test/wawancara sering dipanggil duluan. Gak sempet nanya-nanya ama temannya. Tapi kadang-kadang juga pas giliran dapat pembagian apa gitu, dapetnya juga sering duluan. Sebaiknya ambil huruf pertama itu antara D sampai K. Cukupan lah… Huruf depan Z… wah.. biasanya adanya dibawah…

9. Jangan sok Kebarat-baratan
Jangan memberi nama anak dengan bergaya kebarat-baratan, biar dibilang keren. Kudu diinget, anda lahir dibumi Indonesia, orang Indonesia, kultur ya tetap orang Indonesia. Kalau nama keindo-indoan, tapi mukanya ya melayu-melayu juga, malu sendiri kan, anaknya ya ortunya.. Lagian kalo kejepit toh bilangnya “adawww….” bukan “Oh my God..”

plus 7 tips dari http://www.infoibu.com berikut ini :

1. Indah di dengar dan serasi.
Pilihlah nama yang terdengar indah sewaktu diucapkan dan serasi dengan nama keluarga anda, bila anda menggunakan nama keluarga dibelakang nama yang akan anda pilih.

2. Unik
Memilih nama yang unik tetap ok asalkan i tetap indah didengar, serasi dan mudah diucapkan. Unik tidak berarti menjadi nama yang terdengar aneh atau sulit diucapkan.

3. Makna Positif dalam kehidupan.
Memilih nama yang mengandung makna dan arti yang positif untuk kehidupan, ini salah satu yang penting, jangan memberi nama yang mengandung arti dan makna buruk. Ingat nama ini akan dibawa selamanya oleh anak anda.

4. Nama panggilan yang mudah
pilihlah nama yang mudah untuk mengambil nama singkat atau panggilan sehari-hari.

5. Pengucapan Yang Mudah.
Pilihlah nama yang mudah untuk diucapkan.

6. Memilih nama bagi anak laki dan perempuan
Pertimbangkn untuk memilih nama yang menunjukkan jenis kelamin yang jelas.

7. Tampunglah semua ide-ide nama yang ada dengan suatu daftar list, bisa dari majalah, tv, atau keluarga dan teman anda. Sebaiknya JANGAN memberitahu dahulu keputusan nama yang akan anda berikan kepada siapapun sampai kelahiran si kecil anda. Dan JANGAN membiarkan siapapun memaksa anda untuk memberikan nama yang anda tidak suka.

other resources (mungkin berguna juga buat rekan/teman yg sedang pusing cari nama buat anak 🙂 ) :

http://www.babynames.com
http://www.thinkbabynames.com/
http://www.babycenter.com/babyname
http://www.babynameguide.com
http://www.jasaumum.com

hmm… tips-tips nya bagus-bagus juga.. cuma masih bingung nih mau kasi nama apa .he.he.he.. ada idekah?

Nadia Jr

Kalo namanya “Marsa Nadia Ramadhani“, menurut anda?

Catatan saya tentang pendidikan IT di Indonesia

Berawal dari blogwalking dan menemukan artikel yang ditulis oleh Dudi Gunardi, tentang perbedaan programmer otodidak dan lulusan informatika saya jadi teringat diskusi di milis (eks) kampus saya dulu, yang topiknya selalu berulang-ulang setiap ada mahasiswa baru. Beberapa pertanyaan yang sering sekali muncul :

* Saya kuliah kok malah diajarin Pascal, bukannya VB.net atau Java ?
* Terlalu banyak matakuliah tidak berguna di S1 ilmu komputer, seperti kalkulus, matematika diskrit atau bahkan geometri!
* Sudah 3 tahun saya kuliah, saya tidak mendapatkan apa-apa (apalagi jika fasilitas kurang mencukupi)
* Kuliah terlalu banyak teori, belajar jaringan kok tidak langsung praktikum pasang-pasang kabel atau setting router ?
* Saya kok tidak diajari MS Office, Photoshop atau banyak bahasa pemrograman!
* dll

Banyak sekali dan sebagian besar berputar-putar di sana. Berbicara tentang kualitas lulusan (sarjana) di bidang informatika ini, atau muncul fenomena seperti yang mas Dudi tulis yang ujungnya berkaitan dengan kesiapan lulusan perguruan tinggi untuk bisa langsung bekerja. Gap!.

Saya sendiri mungkin selama 4-5 tahun kuliah S1 masih belum menemukan jawabnya dan bertanya-tanya. Bagaimana tidak, IT ternyata sangat mudah dipelajari oleh orang-orang yang tidak “makan perguruan tinggi”, itu anggapan saya dulu. Beda dengan bidang kedokteran atau arsitektur. Kok saya tidak pernah mendengar ada dokter atau arsitek yang berasal dari lulusan ekonomi atau pertanian ya ?

Seiring waktu saya memperoleh beberapa hal sbb.

Mispersepsi goal dari pendidikan tinggi level sarjana (S1-S3) . Ini yang kadang tidak disadari. Sepemahaman saya, jenjang S1 (ke atas) memang dirancang untuk pendidikan dengan framework akademik, sehingga di sana banyak diberikan pemahaman akan teori atau konsep berpikir. Memang ada beberapa yang dipadukan dengan keterampilan praktis, tapi itu sifatnya hanya pendukung saja. Satu kompetensi yang harus ada pada seorang sarjana adalah melakukan penelitian dan pengembangan keilmuan. Dalam konteks ilmu komputer/informatika, inilah alasan kenapa kuliah-kuliah “matematika diskrit”, “teori komputasi”, dll juga menjadi prioritas.

Sebagai komplemen diciptakanlah program yang sifatnya lebih praktis/keterampilan, seperti program diploma ataupun profesi. Kendati demikian, program ini juga tetap menekankan pada conceptual framework. Banyak orang yang mengasosiasikan program diploma sebagai “lower level” dari program sarjana, padahal sebetulnya tidak. Ada program D4 (sarjana terapan) yang sepemahaman saya ini selevel dengan S1. CMIIW.

Munculnya program-program profesi bisa menjadi “jembatan” sementara dari gap ini, Yang sudah lama ada misalnya profesi dokter, apoteker dan notaris. Baru-baru ini muncul program profesi akuntan atau bahkan insinyur untuk sarjana teknik. Demikian pula program profesi dalam bentuk sertifikasi keahlian (CISA, MCP, PMP, CCNA, dkk).

Kemudian pasti akan ada pertanyaan “kalau gitu, kenapa harus ada S1, bukannya kita kuliah supaya cepat bekerja?”.

Menurut saya ini kurang tepat. Alur berpikirnya terbalik. Bukan kita kuliah supaya bisa dapat kerja, tapi seharusnya pekerjaan (industri/bisnis)-lah yang membutuhkan orang-orang berkualifikasi S1. Lalu mengapa di Indonesia kenyataannya seperti ini ? karena industri di Indonesia masih terfokus pada produksi, tidak riset/perancangan. Seorang sarjana ilmu komputer, seharusnya masuk ke industri sebagai periset atau perancang sistem/solusi, bukannya tenaga programmer apalagi technical support IMO.

Jika anda hanya ingin cepat mahir menguasai teknik pemrograman Java, melakukan instalasi LAN atau cepat menguasai router CISCO sehingga bisa segera bekerja, kenapa harus kuliah S1 selama 5 tahun (apalagi biaya S1 sekarang mahal) ? Anda cukup memahami sedikit saja konsep pemrograman serta jaringan (otodidak saja) dan ikut program keterampilan/sertifikasi di lembaga-lembaga yang jumlahnya menjamur, dan perbanyak latihan. Itu saja!. Saya sendiri pernah menjadi programmer Delphi ya dengan otodidak. Tapi saat ini, ketika saya mulai bekerja di level perancangan atau bahkan manajemen, barulah buku-buku Software Engineering-nya Pressman yang diajarkan dulu mulai dibuka lagi.

Dengan bahasa lain apakah saya bisa mengatakan bahwa industri di Indonesia sebagian besar masih membutuhkan kualifikasi praktisi/profesi ketimbang seorang sarjana ?

Yang kedua, pertanyaan-pertanyaan tadi muncul karena mungkin mispersepsi tentang ilmu komputer itu sendiri.

Satu hal lain yang memang menjadi keunggulan sekaligus tantangan orang IT adalah bahwa perkembangan IT ini sangat pesat sehingga hal-hal yang bersifat skills memang harus selalu ditingkatkan dengan cepat. Dengan dukungan conceptual framework yang matang, logikanya orang yang punya latar belakang akademis IT akan lebih cepat menyesuaikan. Akan tetapi bagaimanapun, pada era informasi ini : knowledge is power, siapa yang lebih cepat dan banyak menguasai pengetahuan/informasi, dia akan memenangkan persaingan.