Aturan Penulisan Database Yang Biasa Saya Lakukan

Kali ini saya coba menuliskan kebiasaan (atau aturan?) yang saya buat sendiri untuk diri saya sendiri dalam membuat aplikasi. Aturan/convention yang saya buat ini bukan hal baru. Ini hanyalah rangkuman dari berbagai best practice dalam menulis code atau membangun aplikasi. Saat ini baru sempat untuk menulis tentang database convention. Kedepannya, saya berharap ada banyak yang bisa saya tambahkan. Saya juga meletakkan dokumen ini di Github, dan berharap bisa dapat masukan yang bagus.

Berikut daftar dari aturan penulisan database yang baru saja saya tulis dan disimpan di Github:

  1. use english language for name of fields and tables.
  2. Table names are lowercase, plural, and underscored without abbreviation except for commonly used. example: usersrulesorganitation_units.
  3. Field names are lowercase, and without abbreviation except for commonly used like id or uid.
  4. Field names with two or more words are underscored. Example: first_namelast_name, etc.
  5. Use `id` as name of primary key for all tables with int data type for auto increment or char(32) for UUID/GUID.
  6. use the (singular) name of the related table followed by _id for foreign keys. Example: user_id that reference to users table.
  7. Upper casing SQL keywords and built-in functions. Example:
    SELECT first_name,
        last_name,
        CONCAT(first_name, last_name) AS full_name
    FROM users;
    
  8. Avoid asterisk (*) symbol on select clause.

Untuk mendapatkan update terbaru dari daftar di atas, silahkan berkunjung ke repo Github.

Iklan

Create Simple Jquery Plugin To Add An Arrow On Active Menu

Sometime I need to put an arrow on active menu visited by website user or visitor on simple way as image below.

menu

Firstly, prepare HTML image for arrow and a list of menus

...
...
<img class="up_arrow" src="images/up_arrow.png" />
<div class="menu left">
    <a href="#" class="active">About Us</a>
    <a href="#">The Dream</a>
    <a href="#">Events</a>
    <a href="#">Contact Us</a>
    <a href="#">Affiliates</a>
</div>
...
...

set absolute and hide the image on CSS file for first load

.up_arrow {
    position: absolute;
    display: none;
}

add javascript and write it as jquery plugin

(function($) {
    $.fn.putMenuArrow = function() {
        $('.up_arrow').css({
            'display': 'block',
            'position': 'absolute',
            'left': ($(this).offset().left + $(this).outerWidth() / 2) - 17, // 17 is width of arrow image
            'top': $(this).offset().top - 19 //19 is height of arrow image
        });
    }
}(jQuery));


// call putMenuArrow plugin
$(document).ready(function() {
    $('.menu a.active').putMenuArrow();

    $('.menu a').click(function(e) {
        e.preventDefault();
        $('.menu a').removeClass('active');
        $(this).addClass('active');
        $(this).putMenuArrow();
    });
});

The complete demo can be found at:

Tipe-tipe Programmer Dengan Dengan Tumpukan Project-nya

Jika seorang programmer biasa mengerjakan 3 project, atau bahkan lebih, secara bersamaan, ada beberapa kemungkinan mengenai programmer tersebut. Bukan satu project dan project lainnya lagi idle karena menunggu feedback user, atau lagi user testing. Tapi benar-benar tiga project yang jalan secara bersamaan. Waktu perharinya dibagi 30% untuk coding project A, 30% untuk coding project B, dan seterusnya.

Kemungkinan pertama, ia bekerja 16 jam perhari. Mungkin managernya berdiri dibelakang mengawasi sambil bawa cambuk. Yang seperti ini sering kita temui meski tidak bawa cambuk beneran sih…

Kemungkinan kedua, programmernya sangat sakti dengan kemampuan tingkat dewa. Dengan hanya 8 jam sehari, 3 project selesai dengan mulus walaupun timline masing-masing project sangat ketat. Tapi kenyataannya, programmer tingkat dewa sangat susah didapat. Kalau sudah dapat programmer tipe ini, jangan dilepas deh, soalnya mudah lepas karena banyak yang ngincer 🙂

Kemungkinan ketiga, programmernya pinter seperti programmer kebanyakan, tapi cuek bebek. Deadline yang terpampang tidak terlihat. Yang penting dia bekerja. Semua project molor jauh dari target bukan urusannya. Atau bahkan jika tidak ada yang kelar, ia tetap cuek melnggang tanpa ada rasa bersalah. Prinsipnya cuma satu, “Seberat-beratnya pekerjaan, akan terasa ringan kalau tidak dikerjakan”. Nah.. loh.. 🙂