Creative HTTP 404 Error


Lagi iseng browsing di internet, cari-cari tentang design web, lalu tidak sengaja saya masuk ke dalam sebuah page error 404. Error 404 adalah error dimana page yang direquest tidak ditemukan (Page Not Found). Tapi yang unik dari page ini adalah, halaman nya yang dimodifikasi sehingga menarik untuk dilihat (padahal halaman error lho). Menurut saya hal seperti baik untuk diterapkan, karena dapat mengalihkan perhatian user. Saya mencoba browsing di Paman Google dengan kata kunci “creative 404 error”, ternyata result yang keluar adalah berbagai blog yang membahas tentang hal ini (Wah ternyata saya sudah ketinggalan jaman nih :p).

Gambar-gambar di bawah adalah kutipan isi dari berbagai blog orang lain yang saya temukan:

Propeller

Propeller

B3ta

Cuoma

Tinsanity

latelategifts

CssTricks

RetardZone

PatternTap

Funned

Larknews

Southpark Studios

Dawdle

vi-su

martinkorner

palmflying

galiacho

Well.. If you like this page. Please give all the credit to the original site at:

http://www.hongkiat.com/blog/60-really-cool-and-creative-error-404-pages/

http://www.smashingmagazine.com/2007/08/17/404-error-pages-reloaded/

Advertisement

Kettle design pilih yang simple atau yang kompleks?


Saya ingin mentransformasi data pada 2 table dengan menggunakan Kettle. Saya ingin membuat sebuah design yang simple saja, jangan yang terlalu rumit, tapi design yang saya buat ini harus powerfull. Maksud dari powerfull ini adalah aman, recoverable, bisa mengatasi berbagai masalah yang mungkin terjadi.

Pemikiran seperti ini sangat lazim muncul jika anda masih baru atau sudah mempelajari Data Transformation Design, tidak hanya pada Kettle tapi juga tool yang lainnya. Saya sendiri pun sampai saat ini masih terus mencari sebuah design yang seperti itu. Mana yang paling cocok diterapkan pada sistem yang ada saat ini.

Contoh design yang paling sederhana adalah seperti berikut:

Simple Design

Simple Design

Design seperti di atas sangat mudah sekali dimengerti, tetapi jika kita ingin menggunakan design seperti ini untuk scheduled job, sangatlah tidak dianjurkan. Kenapa tidak dianjurkan? Karena pada design seperti di atas mau tidak mau, kita akan men-truncate table tujuan terlebih dahulu sebelum transformasi dilakukan, jika tidak makan akan terjadi error duplikasi data. Hal inilah yang akan menimbulkan beragam masalah, terutama koneksi jaringan anda bermasalah:

  1. Jika data yang dikirim besar, apakah proses transformasi akan sukses?
  2. Jika proses transformasi gagal, maka data di table tujuan sudah terlanjur di-truncate. Bagaimana cara me-restore data tersebut?

Hal-hal classic seperti ini lah yang ditakuti akan terjadi. Lalu bagaimana cara mengatasi masalah ini? Akan saya coba berikan solusinya pada tulisan ini, tapi sebelumnya kita coba lihat contoh design kettle yang jauh lebih kompleks.

Contoh design yang kompleks:

Bisa dilihat di:

Data Transfer Loop Handling (Bagian 1)
Data Transfer Loop Handling (Bagian 2)

Complex Design

Complex Design

Kalau kita lihat dari design seperti di atas, mungkin yang akan keluar pertama kali dipikiran anda: “Itu apa yah? Kok kayaknya rumit sekali.”
Setidaknya itulah yang keluar dipikiran saya :p
Tapi jika anda mencoba untuk mempelajari-nya tidak sesulit pada kesan pertama kok. Hehe..

Tenang saja, saya solusi yang saya berikan jauh lebih sederhana daripada design di atas. Tapi pilihan tetap ada di tangan anda. 😉

Mari langsung saja ke inti permasalahannya, solusi yang akan saya berikan sebenarnya tidak terlalu jauh dari design yang paling sederhana yang kita bahas pertama kali. Jika kita perhatikan dan analisa lebih jauh design awal, sebenarnya masalah yang paling besar atau saat yang paling rentan adalah pada saat kita akan sudah men-truncate table tujuan sampai data selesai ditransfer. Kita bisa mempersingkat waktu antara men-truncate table sampai data selesai ditransfer dengan cara mempergunakan bantuan 1 buah table lagi yang akan digunakan sebagai temporary table.

Jadi kria-kira scenario-nya dalah sebagai berikut:

  1. Kita men-create sebuah Temporary Table
  2. Kettle mentransfer data dari Table Input ke Table Temporary
  3. Table Output di drop
  4. Lalu Table Temporary di rename menjadi Table Output

Dengan begitu resiko data yang hilang/gagal di transfer akan menjadi sangat kecil. Tentu saja karena masih ada resiko tranformasi data gagal. Maka pada tahap no.1 kita akan tambahkan sql script untuk melakukan penge-cekan apakah Table Temporary masih exist atau tidak, jika ya akan di drop.

Kira-kira Design-nya seperti ini:

Solution Design

Solution Design

Mengenai bagaimana cara untuk mengcreate table, mendrop table, mengecek apakah table x exist atau tidak, tidak saya bahas pada artikel ini. Karena setiap Database mempunyai native sql yang berbeda-beda.

Semoga tulisan ini bermanfaat bagi anda.