Monday, May 30, 2011

Common Keyword OOP (Static, Final, Abstract)

Di java dan C# (karena cuman didalam bahasa itu yang saya tau), terdapat keyword:

final menunjukkan bahwa class/method/variable yang dideclare dengan keyword final tidak dapat di override ataupun diubah valuenya (khusus untuk variable). Keyword final tidak dapat digabungkan dengan keyword abstract, karena sifatnya bertentangan (compile-error).

Karakteristik final:
- Biasanya digunakan untuk deklarasi konstan digabungkan dengan static keyword. Contoh: public static final MOVE = 1;
- Pengubahan value terhadap variable final; override dan overloading method; pewarisan/inheritance final class akan terjadi compile-error.

abstract menunjukkan bahwa class/method (agak lupa abstract variable ada di C# apa tidak) bersifat abstrak yang memaksa subclass / child nya untuk mengimplementasi method/class tersebut, jika tidak maka akan terjadi compile-error.

Karakteristik abstract:
- Harus di-implemen / di override oleh subclass / child nya, jika tidak akan compile error.
- Untuk abstract class, memiliki karakteristik yang serupa dengan interface tapi tidak sama.
- Tidak ada abstract variable dalam Java. (CMIIW)
- abstract class dapat memiliki konkrit method (tidak abstract), ini merupakan salah satu pembeda dengan interface.

Dahulu saya paling kesulitan memahami static keyword, namun beruntung sekarang saya sudah cukup paham tentang static, sebelum itu anda harus paham istilah dibawah ini:

instance = representasi/contoh/bentuk dari blueprint yang ada. Contohnya seperti Budi adalah representasi dari Manusia.
instantiate = istilah dari pembuatan untuk 1 instance.

static menunjukkan bahwa class/method/variable yang didefinisikan sebagai static hanya memiliki 1 instance untuk semua. Contohnya adalah dalam pembuatan object X terhadap class HURUF (1 atau lebih object), hanya akan ada 1 instance static method/variable yang dibuat/digenerate untuk 1 object tersebut. Method/variable static tsb adalah milik class HURUF, bukan milik object X, sehingga semua object akan mengakses 1 instance static yang sama milik class HURUF.
static sangat sering digunakan

Karakteristik static:
static keyword sering digabungkan dengan final untuk pembuatan konstan.
- Class dapat bersifat static, namun setiap member class harus bersifat static (mengikuti aturan dan fungsi dari static keyword), tidak mungkin bukan class yang hanya ada 1 instance dalam JVM, tetapi member class nya bisa lebih dari 1 instance?
- static metod tidak dapat mengakses non-static method/variable.
- static method dapat mengakses static method/variable.
- Untuk mengakses non-static method/variable, harus melakukan instantiate terlebih dahulu.

Prinsip diatas sesuai dengan fungsi dari static keyword. Bukankah sangat aneh bahwa 1 instance yang konkrit (static) memiliki instance yang tidak konkrit / belum jelas? untuk mengaksesnya maka harus dilakukan instantiated terlebih dahulu.
 
Semoga informasi ini berguna untuk anda.

Jika ada salah, mohon koreksinya :)
Maksud hati hanya mao sharing yang saya tau kok :D

SQL Case Statement / If Else Statement

Belakangan ini baru dapet tes SQL sederhana tapi sayangnya saya sama sekali tidak mudeng / blank dan tidak mahir dalam SQL. Hal dikarenakan terlalu jarang menggunakan SQL dalam bidang pekerjaan. Hanya query-query sangat sederhana saja, alhasil query sederhana seperti IF-ELSE statement standard dalam SQL saja saya lupa :(

Berikut catatan pribadi saya yang diambil dari sumber-sumber di internet:

Saya ingin mengambil result/show column yang hasilnya tergantung pada isi table yang bersangkutan.
Misal:
  - Ingin menampilkan kolom "TipeHarga" dengan nilai yang diperoleh dari "Harga" yang terdapat pada table.
- Jika "Harga" > 1000 maka isi kolom "TipeHarga" = Mahal , jika tidak, maka "TipeHarga" = Murah.


Lewat SQL, hal ini bisa diperoleh dengan kata kunci case , when-then-else.

CASE [expression]
    WHEN [value | Boolean expression] THEN [return value]
    [ELSE [return value]]
END


Contoh:

SELECT CASE WHEN Harga >= 1000
            THEN 'Mahal'
            ELSE 'Murah'          END as TipeHarga
  From X

Maka yang tampil adalah kolom "TipeHarga" untuk masing-masing "Harga" < 1000 maka isinya adalah 'Murah', sebaliknya > 1000 isinya 'Mahal'

Dapat juga seperti ini:
SELECT CASE Harga
                WHEN 1 Then '1 Rupiah'
                WHEN 1000 Then '1000 Rupiah'
                WHEN 5000 Then '5000 Rupiah'
                ELSE 'Tidak Diketahui'
END  as 'Status' 
From X

Contoh query lengkapnya :
select P.Name
     , P.Type
     , PS.SalePrice as Price
     , case when PS.SalePrice > 200
            then 'Expensive'
            else 'Value' end AS PriceType
  from Product P
inner
  join ProductSale PS
    on P.ProductID = PS.ProductID
 where P.Category = @Category
   and P.Vendor = @Vendor
order by P.Name desc


Maaf kalo ada salah, cuman mao sharing yang saya tau :p
Saran dan Kritik sangat diharapkan :)

Saturday, May 28, 2011

Children Learn What They Live With

Judul diatas mempunyai makna :
"Anak kecil belajar dari tempat dimana dia hidup/tinggal bersama"

Anak akan selalu belajar dari orang dewasa dan sekitarnya.

Jika anak banyak dicela, ia akan terbiasa menyalahkan..
Jika anak banyak dimusuhi, ia belajar menjadi pemberontak..
Jika anak hidup dalam ketakutan, ia selalu merasa cemas dalam hidupnya..
Jika anak sering dikasihani, ia belajar meratapi nasibnya..
Jika anak dibesarkan dalam olok-olok, ia akan menjadi seorang pemalu..
Jika anak dikelilingi rasa iri, ia tak akan puas dengan apapun yang dimilikinya..

Jika anak dibesarkan dalam pengertian, ia akan tumbuh menjadi penyabar..
Jika anak senantiasa diberi dorongan, ia akan berkembang dengan percaya diri..
Jika anak dipuji, ia akan terbiasa menghargai orang lain..
Jika anak diterima dalam lingkungannya, ia akan belajar menyayangi..
Jika anak tidak banyak dipersalahkan, ia akan senang menjadi diri sendiri..
Jika anak dibesarkan dalam kejujuran, ia akan terbisa melihat kebenaran..
Jika anak ditimang tanpa berat sebelah, ia akan besar dalam nilai keadilan..
Jika anak dibesarkan dalam rasa aman, dia akan mengandalkan diri dan mempercayai orang lain..
Jika anak tumbuh dalam keramahan, ia akan melihat bahwa dunia itu sungguh indah..
Kita sering mendengar bahwa anak kecil akan mencontoh hampir semua prilaku dan tingkah laku orang yang disekitarnya. Oleh karena itu, jika anda memiliki anak, tinggal bersama anak, dan menghabiskan waktu bersama anak, jagalah prilaku anda, tunjukkan hal yang positif, bukan hal yang negatif. Karena anak akan meniru apapun yang dilihat dia, baik ataupun buruk, benar ataupun salah.
So, berilah contoh yang baik kepada anak."


Saturday, May 21, 2011

Quote of Success

IT'S BETTER TO LIGHT A CANDLE THAN TO CURSE THE DARKNESS
Artinya : Akan lebih baik jika kita berusaha mencari jalan keluar dari suatu masalah dibandingkan kita terus menerus menyalahkan sesuatu dari masalah/kegagalan yg sedang kita alami

FAILURE COSTS NOTHING AND SUCCESS CAN STEAL EVERYTHING

Artinya : Kegagalan-kegagalan anda tidak akan ada artinya/tidak akan merugikan anda karena ketika anda Sukses, ia dapat mencuri/membalikan segala hal dari kegagalan-kegagalan yang telah kita alami.

GOD DIDN'T BRING ME THIS FAR TO LEAVE ME NOW
GOD HAS BIGGER AND BETTER PLAN FOR ME, THAN I HAD FOR MY SELF
Artinya : Kalau dari terjemahannya saja kayanya uda cukup jelas :)
Terjemahan :
Tuhan tidak akan membawaku sejauh ini hanya untuk meninggalkanku.
Tuhan punya rencana yang lebih besar dan baik untukku, lebih daripada yang kumiliki untuk diriku.

Wednesday, May 11, 2011

Macam - Macam Testing Dalam Software Dan Hardware

Testing adalah bagian yang sangat penting dalam sebuah development (pengembangan) sistem informasi begitu juga dalam commercial software (perangkat lunak komersil/yang di jual ke publik) dan biasanya testing tidak terlalu diperhatikan lebih sebagaimana mestinya. Testing biasanya dilakukan setelah tahap  coding selesai dan sebelum tahap publikasi / finishing. Testing dilakukan dalam software dan hardware yang baru ataupun yang sedang direvisi/diperbaiki.

Software Vendor (Penjual Perangkat Lunak) yang menyediakan software infrastruktur yang kritikal/penting seperti Sistem Operasi harus melakukan sejumlah testing kepada ribuan penggunanya (user), yang dimana mereka mengharapkan perbaikan-perbaikan atau kemajuan di versi software berikutnya yang mereka gunakan. Mereka lebih mengharapkan hal tersebut daripada mencoba sebuah buggy software (perangkat lunak yang punya banyak kesalahan/error/tidak stabil) dan melaporkannya ke vendor.

Berikut ini adalah ringkasan jenis-jenis / tipe-tipe atau macam-macam testing yang dikumpulkan saya sebagai penulis.
Semua jenis testing ditulis dalam bahasa Inggris, karena jika diterjemahkan, akan terasa aneh baik bagi penulis dan mungkin juga bagi pembaca.
Test = Uji coba

Acceptance Test
Test yang dilakukan oleh user-user / pengguna terhadap sistem yang baru atau sistem yang telah diubah dengan tujuan memperoleh persetujuan terhadap sistem yang sedang di testing dan go live (siap dipakai). Dikenal juga sebagai UAT (User Acceptance Test)..

Active Test
Melakukan test data dan menganalisa hasilnya. Kebalikan dari "Passive Test" (liat dibawah).

Ad Hoc Test
Test non-formal tanpa Test Case (lihat bawah).

Age Test (aging)
Mengevaluasi kemampuan sistem dalam melaksanakan tugas2nya di masa yang akan datang. Untuk melakukan test ini, hardware dan/atau data uji coba dimodifikasi ke tanggal yang akan datang

Alpha Test
Tahapan testing paling awal di sebuah laboratorium. Setelah itu, baru release Beta Testing.

Automated Test
Menggunakan software untuk menguji coba software (A Software Testing a Software).
Walaupun begitu, testing ini masih memerlukan intervensi manusia untuk memonitor tahapan2/langkah2 dari analasis atau error yang ada.

Beta Test
Test yang dilakukan oleh end users (pengguna akhir). Tahap testing yang dilakukan setelah Alpha Testing.

Black Box Test
Test terhadap software yang didasarkan atas hasil keluarannya saja (output) tanpa pengetahuan mendalam tentang kode-kode atau logika yang terdapat didalam software tersebut. Kebalikan dari "white box test" dan "gray box test."

Environment Test
Test sebuah software baru yang menentukan apakah semua transaksi antara input, output dan media penyimpanan berjalan sebagaimana mestinya.

Functional Test
Uji coba terhadap kebutuhan fungsional software, seperti menu dan kunci perintah (key commands).

Fuzz Test
Test terhadap software bugs dengan memberikan data yang dihasilkan secara acak.


Gray Box Test 
Uji coba software dengan adanya pengetahuan di kode / logika internal software tersebut. Kebalikan dari "white box test" dan "black box test."

Negative Test / Dirty Test
Menggunakan inputan yang salah/tidak sesuai untuk mengetes kemampuan error handling program.

Passive Test
Memonitor hasil dari sistem yang sedang berjalan tanpa melakukan tes data yang unik terhadap sistem. Kebalikan dari "active test" (diatas).

Recovery Test
Menguji kemampuan sistem untuk recover/pulih dari hardware atau software failure. Misalnya, gagal booting, overheat, overload data processing, transaksi putus karena koneksi down, dll. Apa yang akan terjadi?

Regression Test
Menguji coba software yang telah direvisi untuk melihat apakah fungsi-fungsi sebelumnya dapat berjalan dengan baik atau mengalami pengaruh.

Smoke Test
Menyalakannya dan melihat apa yang terjadi. (Testing untuk harware)

System Test
Testing keseluruhan di laboratorium dan di lingkungan pengguna (user environment).

Test Case
Sekumpulan data percobaan, program percobaan dan hasil tes yang diharapkan.

Test Scenario
Sekumpulan dari Test Case.

Test Suite
Kumpulan dari Test Case dan Tes Scenario yang telah dirangkum dengan detail.

Unit Test
Tes yang hanya dilakukan untuk satu komponen saja dalam suatu sistem. Kebalikan dari "system test."

White Box Test
Tes sebuah software dengan pengetahuan lengkap akan kode-kode / logikal-logika yang terdapat didalam software yang diujicoba. Kebalikan dari "black box test" and "gray box test."

Sumber : Answer.com
Diedit dan diterjemahkan seluruhnya oleh penulis.

Maaf kalo ada salah, cuman mao sharing yang saya tau :D