Capacity Planning

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

Memahami Authentication

Menjelang penghujung bulan Ramadhan, ada yang bertanya di milis JUG. Alhamdulillah, ada kesempatan bersedekah di detik-detik terakhir bulan puasa ;) Karena pertanyaannya membutuhkan jawaban yang cukup panjang, baiklah kita jawab di blog saja.

Berikut pertanyaannya.

Saya pernah menggunakan Spring Security Framework. Tapi kalau cuma pakai, tanpa ngerti konsep dasar dan cara kerjanya dasarnya sakit kepala juga akhirnya kalau semua terjadi secara automagically.

Jadi kalau murni tanpa menggunakan Framework apapun :

  • Bagaimana membuat proses loginnya? dari beberapa artikel yang saya baca (saya baru tahu) katanya login username dan passwordnya dimasukan kedalam HTTP Header.

Contohnya :

Authorization:Basic c2VzdWF0dUB5YWhvby5jb206YmlzbWlsbGFo

dimana c2VzdWF0dUB5YWhvby5jb206YmlzbWlsbGFo adalah Base64 encoding dari sesuatu@yahoo.com:bismillah (username:password)

benarkah begitu?

  • Bagaimana server mengenali client jika kita menggunakan method GET? (ini pertanyaan konsep sangat mendasar sekali). Mungkin jawabannya ya dengan token.

  • Tapi ditaruh dimana? apakah dengan saya tempelkan saja di URL? misal

GET /thewebapp/category/324?token=abcde1234

atau saya masukkan dalam HTTP header? tapi dengan header apa?

Dan berikut jawaban saya

Desain Skema Database

Pada artikel sebelumnya, kita telah belajar bagaimana memulai membuat aplikasi, yaitu dengan cara:

  • membuat daftar fitur
  • membuat UI Mockup

Kedua langkah di atas membantu kita untuk memvisualisasikan apa yang ada di imajinasi kita menjadi bentuk yang bisa dilihat oleh banyak orang. Ada beberapa keuntungan dari proses visualisasi ini, yaitu:

  • mengurangi kepusingan, karena apa yang sebelumnya cuma dibayangkan, sekarang terlihat bentuknya
  • menunjukkan kekurangan dalam imajinasi kita. Seringkali saya mendapati ada informasi yang kurang sehingga harus ditanyakan lagi ke user. Kali lain, saya mendapati ternyata perpindahan antar screen tidak sistematis sehingga membingungkan user. Atau saya terlalu kompleks mendesain tampilan yang seharusnya bisa lebih sederhana.
  • menjadi bahan diskusi dengan user, menghindarkan kita dari membuat sesuatu yang tidak dibutuhkan user.
  • sebagai pedoman kita untuk merancang skema database

Poin terakhir tersebut akan menjadi bahasan kita pada artikel kali ini.

Saya tidak akan membahas tentang teori normal form. Seharusnya para mahasiswa informatika sudah mempelajarinya di mata kuliah Basis Data yang biasanya diberikan di semester 3. Silahkan ambil lagi mata kuliah tersebut di tahun/semester depan kalau ternyata Anda ketiduran waktu dosennya menerangkan. Sedangkan pembaca yang tidak kuliah di informatika (seperti saya), bisa baca-baca referensi dari Wikipedia atau tutorial di sini.

Artikel ini ditulis dengan asumsi pembaca sudah paham apa itu normal form. Silahkan belajar dulu kalau belum paham, baru kembali lagi ke sini.

Tahapan Membuat Aplikasi

Seperti sudah dijelaskan pada artikel sebelumnya, anjuran saya buat mereka yang ingin mahir pemrograman adalah

Buatlah aplikasi production barang 5-10 buah. Insya Allah setelah itu Anda akan mahir.

Setelah kita menguasai dasar-dasar pemrograman seperti:

  • konsep variabel dan tipe data
  • control flow (looping, branching, jumps)
  • pengelompokan (function, class, package)

tidak serta merta kita bisa langsung membuat aplikasi. Analoginya, walaupun kita mahir menggunakan pengolah dokumen seperti MS Word atau Open Office, tidak berarti kita bisa menulis seri lanjutan dari Harry Potter and the Deathly Hallows.

Inilah sebabnya banyak pemegang sertifikasi pemrograman seperti Oracle Certified Java Programmer yang tidak bisa membuat aplikasi, walaupun mendapatkan nilai yang tinggi.

Ada berbagai macam aplikasi, diantaranya:

  • aplikasi bisnis, yaitu aplikasi yang membantu pencatatan kegiatan bisnis. Contohnya aplikasi akunting, purchasing, perpustakaan, mini-market, bank, payment gateway, dan sebagainya
  • aplikasi sistem, yaitu aplikasi yang memungkinkan berbagai perangkat bekerja sama. Contohnya sistem operasi, device driver, embedded system, dan lainnya
  • dan berbagai kategori aplikasi lainnya.

Artikel kali ini akan kita batasi hanya untuk membahas aplikasi bisnis. Mengapa demikian? Karena aplikasi bisnis adalah genre aplikasi yang paling banyak dibuat orang. Sebagai ilustrasi, kita hanya mengenal beberapa sistem operasi populer, yaitu Microsoft Windows, Linux, MacOS. Bandingkan dengan aplikasi bisnis, untuk proses akuntansi saja berapa ribu aplikasi yang tersedia. Bahkan walaupun sudah ada yang gratis dan lengkap, tetap saja banyak perusahaan yang minta dibuatkan aplikasi sejenis. Jadi dari sisi komersial dan ketersediaan lapangan kerja, pembuatan aplikasi bisnis tetaplah pangsa pasar terbesar.

Pada artikel ini, kita akan membahas proses berpikir dan tahapan mulai dari penjabaran aplikasi yang akan dibuat, sampai menjadi skema database dan desain aplikasi berorientasi objek (object-oriented).

Aplikasi Prakarya vs Aplikasi Production

Salah satu pertanyaan yang sering ditanyakan di forum programmer adalah

Saya ingin belajar bahasa pemrograman [isi bahasa yang Anda sukai di sini], bagaimana ya caranya supaya bisa mahir?

Dan jawaban saya selalu sama

Coba buatlah aplikasi berkualitas production barang 5 - 10 kali, setelah itu insya Allah akan mahir.

Jawaban di atas memang singkat, tapi jalan untuk menuju kesana sungguh tidak mudah dan tidak singkat. Apalagi untuk pemula, setidaknya ada dua pertanyaan besar:

  1. Apa sih aplikasi production itu?
  2. Bagaimana cara membuat aplikasi?

Pertanyaan pertama akan kita jawab pada artikel ini. Sedangkan pertanyaan kedua akan kita jawab pada artikel selanjutnya.

Membuat Subreport Jasper Dalam SpringMVC

Pada artikel ini, kita akan membuat implementasi download file PDF/XLS dari aplikasi web. Fitur ini akan kita implementasi menggunakan library Jasper Report dan framework Spring MVC.

Projectnya akan kita buat menggunakan Maven, supaya bisa dibuka dengan baik (portable) di berbagai IDE. Untuk bisa memahami artikel ini dengan baik, pembaca harus sudah paham tentang Spring Framework dan Spring MVC. Yang belum paham Spring Framework bisa membaca artikel terdahulu tentang Dependency Injection. Sedangkan pembahasan tentang Spring MVC bisa dibaca di rangkaian artikel berseri tentang membuat aplikasi web dengan Spring MVC.

Source code lengkap dapat diakses di repository Github. Bagi yang ingin tahu urutan langkah-langkah implementasinya, bisa lihat commit history.

Cara Mengetahui IP Address Dari MAC Address

Jaman sekarang banyak sekali perangkat-perangkat aneh yang menarik untuk dioprek, misalnya Raspberry PI, PC on a stick, Smart TV, Harddisk NAS, dan sebagainya. Semua perangkat aneh ini terhubung ke jaringan baik melalui kabel maupun WiFi.

Di mayoritas jaringan WiFi yang ada, alamat IP diberikan secara otomatis (DHCP), sehingga kita tidak tahu berapa alamat IP untuk perangkat yang ingin kita akses. Tambahan lagi, beberapa router wifi juga kurang bagus antarmukanya seperti pada gambar berikut

Masa yang dicantumkan cuma MAC Address saja? Hostnamenya juga Unknown lagi -_-

Untungnya, ada cara untuk mengkonversi MAC Address menjadi IP. Berikut caranya

Menjadi Mahasiswa Hi-Tech

Seperti sudah diceritakan pada posting sebelumnya, saya sudah beberapa tahun ini mengajar di Universitas Pancasila. Total sudah lebih dari 6 kelas yang saya ajar. Kalau satu kelas saja isinya 30 orang, maka setidaknya ada 180 mahasiswa yang telah mengikuti perkuliahan saya.

Memperhatikan perilaku ratusan mahasiswa dalam mengikuti kuliah, saya menemui suatu kondisi yang ironis.

Dari sekian banyak mahasiswa, tidak ada satupun yang mengikuti perkuliahan sesuai dengan kondisi jaman sekarang. Semuanya, tanpa terkecuali, masih kuliah seperti halnya saya kuliah di tahun 1997 dulu. Ya benar, selama 17 tahun tidak ada perubahan metodologi sama sekali.

Padahal ini mahasiswa jurusan IT, yang sepatutnya menjadi yang terdepan dalam hal memahami dan memanfaatkan teknologi terkini. Mereka masih saja:

  • mendengarkan saya berceloteh di depan kelas
  • mencatat celotehan saya dan gambar-gambar yang saya buat di papan tulis
  • pada saat mau ujian, belajar dari catatan tersebut

Tidak sebanding dengan persenjataan masing-masing individu:

  • Smartphone. Segelintir pakai iPhone, dan mayoritas pakai Android. Minimal Blackberry.
  • Internet Nonstop. Baik paket data dari smartphone maupun internet gratis dari kampus.
  • Sesi kuliah saya selalu diadakan di lab komputer. Masing-masing orang menghadapi PC di depan mukanya.

Nah, lalu bagaimana seharusnya??

Ada beberapa poin yang seharusnya dilakukan mahasiswa jaman sekarang:

  1. Jangan mencatat
  2. Tinggal di awan
  3. Kolaborasi menggunakan social networking
  4. Belajar dari internet

Waduh, tidak mencatat gimana mau ingat? Tidak bawa buku lalu mau menulis dimana? Bukannya orang bilang Facebook itu tidak produktif?

Mari kita bahas..

Silabus Kuliah Pemrograman

Melanjutkan rutinitas 2 tahun terakhir, minggu ini musim perkuliahan semester genap di Universitas Pancasila dimulai. Saya kebagian pegang Pemrograman 2 di kelas reguler, dan Pemrograman 4 di kelas karyawan. Buat para fans yang pengen ketemu dipersilahkan cari saya di Fakultas Teknik Universitas Pancasila setiap Kamis jam 18-21 dan Jumat jam 09-11.

Berikut adalah silabus perkuliahan dari Pemrograman 1 sampai Pemrograman 4. Silabus ini akan sering saya update mengikuti perkembangan jaman.

JavaScript Development Stack

Pada artikel sebelumnya, kita telah sukses menyiapkan kombinasi framework di sisi server. Nah sekarang kita akan siapkan persenjataan untuk aplikasi clientnya.

Artikel bagian kedua ini berselang waktu agak lama dari artikel sebelumnya karena saya bingung :D Nah saya yakin kebingungan ini juga akan dialami oleh rekan-rekan yang baru belajar server-side-javascript. Ada beberapa hal yang membuat saya bingung, yaitu:

  • arsitektur aplikasi dan bahasa pemrograman
  • development tools
  • integrasi aplikasi pada saat development
  • integrasi aplikasi pada saat production

Sebagai gambaran, bentuk akhir dari aplikasi yang akan dibuat seperti ini