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

Alternatif Pertama

1
2
3
4
5
6
7
8
9
10
11
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

1
2
3
4
5
6
7
8
9
10
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

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

1
2
3
4
5
6
7
8
9
10
11
public class Mahasiswa {
    private String nama;
    private Date tanggalLahir;
    private JenisKelamin jenisKelamin;

    // getter setter
}

public enum JenisKelamin{
    PRIA, WANITA
}

Class SimpanMahasiswaServlet

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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

1
2
3
4
5
6
7
8
9
10
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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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

1
2
3
4
5
6
7
8
9
10
11
12
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.

Memilih fotografer untuk peristiwa penting semisal pernikahan adalah pekerjaan yang memusingkan. Apalagi di jaman sekarang, harga kamera terus turun menjadi semakin murah. Kualitas gambar yang dihasilkan juga semakin bagus. Bahkan kamera DSLR yang paling murah, kualitas gambarnya sudah lebih dari cukup bila ingin sekedar tampil di media sosial. Dengan semakin murahnya harga kamera, banyak orang kemudian merasa bisa menangani event penting sekelas pernikahan. Padahal, fotografi hobi sangat berbeda dengan fotografi profesional.

Pada artikel kali ini, kita akan membahas salah satu fotografer yang aktif dalam komunitas fotografi yang saya ikuti, yaitu Alienco Photography. Alienco Photography dimotori oleh Ali Umar. Awalnya bekerja sebagai karyawan bank, tapi kemudian banting setir menjadi full time photographer.

Dengan mengamati hasil foto Alienco, kita bisa belajar bagaimana memilih fotografer yang tepat untuk dipercayakan menangani peristiwa penting kita yang tidak mungkin terulang lagi.

Ada banyak kriteria yang bisa digunakan kalau kita ingin memilih fotografer untuk mengabadikan peristiwa penting kita seperti misalnya pernikahan, wisuda, dan lain sebagainya. Beberapa kriteria tersebut diantaranya :

Di berbagai komunitas Agile, metodologi waterfall merupakan bulan-bulanan dan wajib untuk dibully. Jangankan bilang waterfall itu bagus, coba katakan Ada beberapa situasi di mana waterfall bisa dijalankan. Saya jamin 1000% Anda akan segera dibully seperti layaknya pendukung Justin Bieber hadir di konser Metallica.

Kalau ada satu hal penting yang saya dapatkan dari belasan tahun berkecimpung di dunia IT adalah ini

Banyak jargon, metodologi, framework, library, teknologi datang dan pergi setiap saat. Untuk tiap pilihan yang kita buat, ada biaya yang menyertainya. Yaitu waktu dan tenaga yang kita investasikan untuk mempelajari dan mengadopsi pilihan tersebut. Kunci agar kita bisa memilih hal yang tepat sehingga imbal hasil pilihan kita lebih besar dari biayanya adalah, gunakan akal sehat dan jangan gampang terbuai jargon dan marketing gimmick.

Prinsip akal sehat tersebut telah menyelamatkan saya dari berbagai teknologi gagal di masa lalu seperti misalnya:

  • Struts 1
  • EJB 1 dan 2
  • XA Transaction
  • JMS
  • dan lain sebagainya

Teknologi gagal bukan artinya teknologi tersebut tidak inovatif atau kurang canggih. Tapi biaya implementasinya jauh melebihi benefit yang diperoleh darinya.

Nah, kali ini dimana orang-orang ‘agile’ sibuk membully Waterfall, saya punya pendapat yang berbeda.

Waterfall justru adalah cara paling alami untuk membuat software

Wah kok bisa begitu?

Sejak tahun 2008, saya tidak lagi punya kewajiban untuk datang ke kantor setiap hari. Artinya, saya boleh bekerja (atau tidur-tiduran) di rumah setiap hari.

Wah enak sekali?

Demikian komentar dari semua orang yang ngobrol dengan saya mengenai masalah ini. Hmm, seperti segala sesuatu hal di dunia ini, semua ada plus dan minusnya. Tidak berarti semuanya menyenangkan.

Berikut beberapa poin yang saya dapatkan dari 6 tahun kerja di rumah:

Faktor Positifnya

  • Jatah waktu untuk kerja lebih maksimal. Dengan asumsi jam kerja sama-sama 9-5, gak ada waktu transport dan macet. Waktu tempuh dari kasur ke meja kerja cuma 1 menit :D
  • Mood juga relatif lebih baik karena gak perlu pepet-pepetan sama ojek/angkot di jalan.
  • More quality time bersama keluarga. Makan siang bisa bersama anak/istri.

Tantangannya

  • Harus bisa self-motivating. Gak ada yang menghalangi kita dari bantal dan kasur. Jadi begitu sudah punya to do list untuk hari ini, ya harus memacu diri sendiri untuk segera bekerja.
  • Selain diri sendiri, juga harus bisa mengkondisikan anggota keluarga. Istri/anak harus bisa menghayati bahwa kerja di rumah artinya kerja. Tidak berarti karena ada di rumah bisa diajak main atau disuruh anter ke minimarket. Butuh waktu berbulan-bulan untuk mengkondisikan hal ini.
  • Kadangkala tetap harus berangkat dari rumah kalau benar-benar butuh zero interruption. Saya biasanya ke perpustakaan pemda dekat rumah. Teman saya yang sesama pekerja rumahan lebih suka kerja di kafe. Saya pernah baca di internet ada orang yang suka kerja di taman.
  • Susah untuk berhenti kerja. Programmer kalau sudah ketemu error biasanya penasaran. Tinggal satu bug lagi bisa makan waktu berjam-jam. Kalau di gedung perkantoran, jam 18 biasanya AC dan lampu dimatikan, sehingga mau gak mau ya harus pulang. Nah kalo di rumah, on terus. Tanpa sadar, tiba-tiba sudah jam 3 malam ;)
  • Hati-hati bahaya gak bisa pulang. Kalau kita kerja di kantor, begitu kita suntuk, kita bisa pulang, menemui suasana berbeda, kemudian istirahat. Nah, kalau kerjanya di meja makan, gimana mau ganti suasana? Akhirnya bisa burn-out.

Nah, mudah-mudahan ini bisa menambah wawasan rekan-rekan yang mempertimbangkan untuk kerja di rumah ataupun project manager yang ingin mengijinkan programmernya coding di rumah.

Baca juga beberapa artikel berikut yang membahas masalah ini

Dalam membuat aplikasi, biasanya ada nilai variabel yang ingin kita simpan di file konfigurasi, supaya pada saat isinya berubah tidak perlu melakukan kompilasi ulang. Misalnya konfigurasi koneksi database. Alamat database server, username, dan password biasanya sering berubah, tergantung tempat di mana aplikasi dideploy.

Ada beberapa hal yang biasanya menjadi pertanyaan, yaitu:

  1. Di mana sebaiknya kita menyimpan file tersebut?
  2. Bagaimana caranya supaya aplikasi kita portable? Portable artinya bisa dicopy paste ke berbagai komputer dengan lokasi folder berbeda-beda.
  3. Bagaimana cara membaca file konfigurasi tersebut?

Pertanyaan ini diajukan salah satu member di grup Netbeans Indonesia

Berikut screenshot kode program yang sudah dia buat

Hampir seluruh aktivitas yang saya lakukan dengan komputer (smartphone juga termasuk komputer) menggunakan aplikasi open source. Jaman sekarang, aplikasi open source sudah jauh mengungguli aplikasi closed source baik dalam hal fitur, user-friendliness, reliability, dan kecepatan development (bug fix, fitur baru, enhancement, dan sebagainya).

Selama ini kita hanya tahu pakai saja. Download, instal, pakai, happy. Kita juga hanya tahu bahwa open source = kode programnya bisa dilihat, dimodifikasi, dan dibagikan ke siapa saja. Sebenarnya ada aspek lain dari open source yang juga menarik, penting, dan banyak sekali manfaatnya buat para pembaca blog saya yang utamanya adalah programmer, software project manager, dan juga pengusaha di sektor IT. Aspek tersebut adalah software development process yang terjadi sehingga semua produk canggih ini bisa berada di tangan kita saat ini.

Kehandalan manajemen proyek open source bisa kita lihat bukti nyatanya di distro linux Ubuntu. Coba lihat beberapa fakta berikut:

  • Ubuntu rilis setiap enam bulan sekali, yaitu tiap bulan April dan Oktober.
  • Sejak rilis pertama, belum pernah terjadi keterlambatan rilis.
  • Kontributor Ubuntu (programmer, pembuat dokumentasi, desain tampilan, tukang burn CD, tukang update website, tukang upload iso, admin server, dsb) datang dari seluruh dunia. Bekerja 24 jam sehari 7 hari seminggu dengan timezone yang berbeda-beda. Jadi kalau kita masih kerja di ruangan yang sama, hanya dipisahkan cubicle saja, datang bareng, makan siang bareng, pulang bareng, sebaiknya jangan terlalu sering mengeluh di socmed ;p
  • Jumlah kontributornya ribuan orang. Bahasanya berbeda-beda. Lokasinya juga berbeda-beda.
  • Tulang punggung Ubuntu adalah kernel Linux dan desktop manager Gnome. Harus menunggu Gnome rilis dulu, baru Ubuntu bisa dikerjakan. Jangan sampai di tengah-tengah development Ubuntu, ada perubahan signifikan yang terjadi di Gnome sehingga Ubuntu harus rombak total.
  • Ubuntu basisnya adalah distro Debian varian unstable. Proses development harus memperhatikan agar jangan sampai menyimpang terlalu jauh dari Debian supaya tetap bisa sinkronisasi pada saat Debian naik versi.
  • Ubuntu digunakan orang dari seluruh dunia, sehingga harus bisa mendukung berbagai bahasa, format angka, format tanggal, dan berbagai variasi lainnya.
  • Kompatibilitas antar rilis harus terjaga, supaya orang bisa upgrade dengan mudah.

Nah, apa rahasianya supaya bisa seperti itu?

Ada pertanyaan bagus di milis IT Project Management, sebagai berikut

Mohon di-share caranya menentukan spesifikasi minimal hardware yang dibutuhkan sebuah sistem. contoh http://en.wikipedia.org/wiki/System_requirements Kriteria apa saja yang digunakan dalam memilih hardware? Terutama menentukan jumlah RAM dan Speed Processor nya. Apakah cukup dari jumlah concurrent user? Atau menggunakan metode trial-and-error. Kalaupun trial-and-error, tentunya ada standar yang digunakan sebagai benchmark awal ya kan? Bagaimana standar awal tersebut?

Mari kita bahas