Living life and Make it Better

life, learn, contribute

Endy Muhardin

Software Developer berdomisili di Jabodetabek, berkutat di lingkungan open source, terutama Java dan Linux.

Apache Maven

Membuat kandang ayam berbeda dengan membuat rumah. Demikian pula membuat rumah berbeda dengan membangun mall. Jumlah pekerja yang terlibat jauh berbeda. Keragaman bahan baku dan peralatannya tidak sama. Kita cuma membutuhkan beberapa papan kayu, paku, dan palu dalam membuat kandang ayam. Tapi tentunya kita tidak bisa menggunakan bahan, alat, dan cara kerja yang sama dalam pembangunan gedung.

Hal yang sama berlaku di pembuatan software. Untuk tugas kuliah, cukup install Netbeans atau Eclipse, kita bisa kerjakan aplikasi sampai selesai. Akan tetapi, untuk membangun aplikasi besar, dibutuhkan persenjataan yang lebih lengkap, diantaranya:

  • version control
  • build tools
  • automated testing
  • continuous integration
  • issue tracker
  • dan lain sebagainya

Dalam artikel ini, kita akan membahas tentang apa itu build tools, mengapa kita gunakan, dan bagaimana cara menggunakannya.

Lanjut membaca ...


Membuat Blog Gratis di Openshift

Pengen cepat jadi expert?

Caranya sederhana. Cukup bikin blog, kemudian konsisten menulis tentang topik tertentu paling tidak seminggu sekali.

Waduh, menulis itu sulit. Apalagi konsisten.

Makanya saya bilang sederhana, bukan mudah :)

Sebetulnya membuat blog jaman sekarang sudah semakin mudah dan murah. Tanpa keluar uang sepeserpun kita sudah bisa punya blog bagus. Desain tampilan juga banyak tersedia free. Bahkan desain gratis tersebut sudah responsive, artinya tetap bagus dilihat dari berbagai ukuran layar.

Setelah blog kita jadi, tempat menaruhnya pun gratis. Beberapa yang populer diantaranya: wordpress, tumblr, dan lain sebagainya.

Buat kita para programmer, tersedia juga aplikasi blog yang geeky, diantaranya jekyll, octopress (dibangun di atas jekyll), middleman, ghost, dan teman-temannya.

Berbagai aplikasi yang saya sebutkan di atas memiliki kesamaan, semuanya adalah static content generator. Artinya, dia mengkonversi tulisan kita menjadi HTML. File HTML tersebut tinggal kita upload ke webserver merek apapun. Dia juga tidak butuh database server. Ini akan sangat menyederhanakan kebutuhan di sisi server.

Pada artikel ini, kita akan membahas cara membuat blog menggunakan Jekyll dan kemudian memasangnya di PaaS provider Openshift.

Lanjut membaca ...


Scope Variabel

Masih dari pertanyaan di grup Facebook, berikut kode programnya (saya edit sedikit supaya sesuai)

Alternatif Pertama

public class CobaPertama (){
        String a;
        public void coba1(){
                a = "ari";
                System.out.println(a);
        }
        public void coba2(){
                a = "ira";
                System.out.println(a);
        }
}

Alternatif Kedua

public class CobaKedua (){
        public void coba1(){
                String a = "ari";
                System.out.println(a);
        }
        public void coba2(){
                String a = "ira";
                System.out.println(a);
        }
}

Pertanyaannya sebagai berikut

lebih cepatan mana y masta performance aplikasi yg entar kt buat

Lanjut membaca ...


Mengapa kita membuat class

Ada pertanyaan di grup Facebook yang cukup menarik untuk kita bahas di sini. Sample code yang ditanyakan saya modifikasi sedikit supaya lebih cocok.

Class Mahasiswa

public class Mahasiswa {
    private String nama;
    private Date tanggalLahir;
    private JenisKelamin jenisKelamin;
    
    // getter setter
}

public enum JenisKelamin{
    PRIA, WANITA
}

Class SimpanMahasiswaServlet

public class SimpanMahasiswaServlet extends HttpServlet {

    private MahasiswaDao md = new MahasiswaDao();

    public void doPost(HttpServletRequest req, HttpServletResponse resp){
        Mahasiswa m = new Mahasiswa();
        
        m.setNama(req.getParameter("nama"));
        
        SimpleDateFormat formatTanggal = new SimpleDateFormat("yyyy-MM-dd");
        m.setTanggalLahir(formatTanggal.parse(req.getParameter("tanggal")));
        
        m.setJenisKelamin(JenisKelamin.valueOf(req.getParameter("jenis")));
        
        md.simpan(m);
    }

}

Class MahasiswaDao

public class MahasiswaDao {
    public void simpan(Mahasiswa m){
        String sql = "INSERT INTO mahasiswa values (?,?,?)";
        PreparedStatement ps = koneksi.prepareStatement(sql);
        ps.setString(1, m.getNama());
        ps.setDate(2, new java.sql.Date(m.getTanggalLahir().getTime()));
        ps.setString(3, m.getJenisKelamin().name());
        ps.executeUpdate();
    }
}

Pertanyaan : Lebih kenceng mana contoh kode di atas (menggunakan class Mahasiswa) dibandingkan langsung saja pakai Map/Array ?

Supaya lebih jelas, berikut contoh yang pakai array.

public class SimpanMahasiswaServlet extends HttpServlet {

    private MahasiswaDao md = new MahasiswaDao();

    public void doPost(HttpServletRequest req, HttpServletResponse resp){
        String[] m = new String[3];
        
        m[0] = req.getParameter("nama");
        m[1] = req.getParameter("tanggal");
        m[2] = req.getParameter("jenis");
        
        md.simpan(m);
    }

}

Class MahasiswaDao

public class MahasiswaDao {
    public void simpan(String[] m){
        String sql = "INSERT INTO mahasiswa values (?,?,?)";
        PreparedStatement ps = koneksi.prepareStatement(sql);
        
        for(int i=0; i<m.length; m++){
            ps.setString(i, m[i]);
        }
        
        ps.executeUpdate();
    }
}

Pembuatan class Mahasiswa di atas merupakan salah satu implementasi prinsip encapsulation dalam OOP. Class Mahasiswa disebut dengan istilah domain class, yaitu class yang dibuat untuk memodelkan kasus yang akan dibuat.

Lanjut membaca ...


Pembagian Kerja dalam Programming

Ada pertanyaan bagus di Forum Java Programmer Indonesia di Facebook

Foto

Bagaimana cara pembagian tugas kalau mengerjakan aplikasi dengan tim?

Berikut pendekatan yang biasa saya gunakan

Lanjut membaca ...