Generator nomer berpola

Problem

Dibutuhkan pola unik untuk identitas transaksi. Bisa meng-cover setidaknya satu juta transaksi. Hendak dikombinasikan dengan transaksi penawaran, sales order, invoice, dan akuntansi.

Pola harus nyaman dioperasikan. Mudah dibaca, diingat, disalin dari format digital ke fisik / sebaliknya, dientri, di-select, di-copy, di-paste, di-share, taruh semua event yg mungkin terjadi disini.

Brainstorming

Mengingat syarat “nyaman” di atas.  Maka jumlah digit menjadi sangat penting. Makin sedikit makin baik.  Misalnya: Nomer 4321 tentu lebih mudah diingat ketimbang 4456123. Nomer 2783 tentu lebih mudah dibaca dari DFDZ1X9.

Maka hendaknya kita buat pola dengan jumlah digit yang minim. Namun tetap mengcover sebanyak mungkin jumlah transaksi. Komputasi ketika kodefikasi juga harus dibuat “semurah” mungkin.  Jangan sampai sistem jadi lambat karena proses ini. Continue reading “Generator nomer berpola”

Filter kolom dengan kemiripan kata

Problem

Terdapat sebuah data mentah yang berisi nama area dan beberapa kolom penting lain. Filterlah semua kota yang termasuk dalam daerah Jakarta, Bogor, Depok, Tangerang, dan Bekasi aka JABODETABEK.

Solusi panjang

SELECT * FROM area WHERE name ilike '%jakarta%';
SELECT * FROM area WHERE name ilike '%bogor%';
...
SELECT * FROM area WHERE name ilike '%bekasi%';

Ribet dan menyalahi kaidah Don’t Repeat Yourself. Harus kembali di-union agar mudah dilihat di satu tempat. Bisa juga disandingkan menggunakan operator OR seperti berikut :

select * from area where name ilike '%jakarta%' or name ilike '%bogor%' or name ilike .... dst

Tetep saja panjang dan berulang-ulang.

Solusi ringkas

SELECT
    *
FROM
    area
WHERE
    LOWER(name)
    SIMILAR TO '%(jakarta|bogor|depok|bekasi|tangerang)%';

Ringkas. hasil langsung berkumpul di satu tempat.

Return Early

Bila ada if di baris N dan letak else jauh dari N. Dan if elsenya bersarang begitu banyak. Sudah pasti ada yang tidak beres. format penulisan seperti ini istilahnya long nested if. Format ini setidaknya punya tiga efek negatif :

1. Membuat kode sulit difahami.
2. Kemungkinan bugs lebih tinggi.
3. Proses debug menjadi lebih lama.

Sebagai contoh mari amati kode berikut. Ide kode sangatlah sederhana: kirim sms bila nomer tujuan dan pesan sudah valid . Pastikan request berasal dari alamat IP yang diizinkan. Selainnya tolak dan berikan pesan error.

Continue reading “Return Early”