Making Dooitkoo : Stupid Bug

Beberapa hari yang lalu nemuin bug yg bikin web app crash. Ga tau kenapa bug ini ga ada sebelumnya. Padahal sebelum bug ini ketauan ga ada update yg di-pull ke production. Hari ini nemuin bug lagi … beuh. Gini deh kalo kerja sendiri ga ada yg bantuin QA.

Untuk bikin hotfix, saya bikin dulu git branch.

mac$ git checkout -b hotfix_stupid_bug

Benerin bug di branch ini, terus tes lokal. Push ke git repo biar bisa dites di staging.

mac$ git push origin

Login ke staging. Pull terus aktifin branch.

staging$ git pull
staging$ git branch --track hotfix_stupid_bug origin/hotfix_stupid_bug
staging$ git checkout hotfix_stupid_bug

Tes dulu di staging. Semua keliatannya OK. Bug udah dibasmi.

Balik ke lokal. Merging branch ke master. Terus push ke repository & hapus branch.

mac$ git checkout master
mac$ git merge hotfix_stupid_bug
mac$ git branch -d hotfix_stupid_bug
mac$ git push origin

Login ke production & update.

live$ git pull

Whewww…

Making Dooitkoo – Bagian 7 : Dashboard

Lanjutan dari Bagian 6

Semua aplikasi yang punya banyak konten terstruktur pasti punya yang namanya dashboard. Untuk Dooitkoo, saya ingin dashboard bisa nampilin sekilas info tentang masing-masing subjek. Jadi sekali lirik, user bisa liat status terakhir semua subjek dalam bulan yang bersangkutan. Karena tujuannya “sekilas info”, ga ada pilihan bulan & tahun. Kalo misalnya user buka aplikasi pada bulan Mei 2013, info yang ditampilin adalah data bulan Mei 2013. Kalo buka di bulan April 2014, data yg ditampilin juga data bulan April 2014. Bulan & tahun diambil dari seting komputer user (local date & time).

Flow di Dashboard juga sederhana. Awalnya user lihat daftar subjek. Dia punya pilihan lihat ringkasan salah satu subjek atau bikin subjek baru. Kalo pilih liat ringkasan, dia punya pilihan untuk edit, hapus, atau buka subjek yang bersangkutan.

Dashboard flow

Continue reading Making Dooitkoo – Bagian 7 : Dashboard

Making Dooitkoo – Bagian 6 : The Client

Di sisi klien (browser) saya pakai beberapa library, yang utama adalah KnockoutJS, sebuah library javascript yang menyediakan fasilitas data-binding antara elemen HTML dan data (model). Selain Knockout, saya juga pake antara lain:

  • jquery
  • moment
  • accounting
  • toastr
  • yepnope
  • amplify

Karena saya terbiasa koding pake bahasa yang strongly & statically-typed (ActionScript 3.0), pengalaman pertama dengan JavaScript terasa sangat menyebalkan. Error ga jelas, ga ada compile-time checking, refactoring yg kadang malah bikin error, dsb. Tapi karena udah niat belajar untuk menguasai JavaScript, sebelnya ditahan-tahan aja. Lama-lama juga terbiasa.

Struktur aplikasi

Struktur klien ga terlalu rumit. Hanya ada 4 komponen utama yaitu:

  1. ViewModel
  2. Data Object
  3. Modul Data Service. Semua request ke server harus lewat module ini.
  4. Publisher-subscriber (pub-sub) channel. Mirip konsep event-bus di flash/flex.

Continue reading Making Dooitkoo – Bagian 6 : The Client

Making Dooitkoo – Bagian 5

Lanjutan dari bagian 4

Controller

Controller adalah otak dari aplikasi yang bertugas menghandel rekues dari klien dan melakukan operasi CRUD terhadap model. Dalam Laravel, controller secara default disimpan dalam direktori /application/controllers/. Kontroler bisa menghandel rekues HTTP biasa atau restful. Kalo rekues biasa, non-restful, semua public function yang menghandel rekues harus berawalan action_.

class Home_Controller extends BaseController{

	public action_index(){ ... }

	public action_login(){ ... }

	public action_logout(){ ... }
}

Continue reading Making Dooitkoo – Bagian 5