Minggu, 01 Mei 2016

Weekly Report 01/5/2016 - Muhamad Iqbal

Dalam minggu ini, ada beberapa hal yang saya kerjakan salah satunya yaitu membahas masalah server yang masih bermasalah. Selasa kemarin kami bersama pak Yono malakukan sprint review dan mencoba menyelesaikan masalah server yang masih error. Setelah beberapa lama ternyata masalah belum bisa terselesaikan sehingga pihak menyarankan untuk mengganti library.

Selain itu saya sendiri mengerjakan beberapa hal yaitu mengerjakan REST API di laravel. Karena kemarin saya masih menggunakan API yang manual dibuat sekarang saya mencoba untuk membuatnya di framework laravel namun masi terdapat error data belum dapat muncul. Kemungkinan masalahnya adalah controller yang masih error.

Setelah itu kami membahas tentang klaim nilai yang masih banyak yang belum terklaim oleh kami. Salah satunya adalah bagian Software requirement & visibility. Dokumen tersebut dapat dilihat di google drive kami.

Weekly Report 5/2/2016 - Reyhan Razaby

Minggu ini saya membuat halaman Statistics seperti di bawah ini. Secara fungsional halaman ini belum berfungsi, karena yang akan mengimplementasikannya adalah Luthfi.


Code Activity tersebut sudah saya push ke sini

Selain itu saya melakukan refactoring lagi pada class PageOfDay. Awalnya pada Mainpage, setiap tanggal yang tampil adalah amalan-amalan (beserta kategorinya) dengan objek baru (menggunakan syntax "new"), sehingga jika ada 22 amalan pada suatu tanggal, maka akan dibuat 22 objek amalan baru (bahkan belum termasuk objek kategori). Setelah saya refactor, setiap tanggal tidak membuat objek amalan maupun kategori baru lagi, tetapi memakai objek yang sudah ada pada TreeMap "amalanOfUser" yang ada pada class AmalanManager. 

Hasil refactor di atas sudah saya push ke sini

Refactor selanjutnya adalah saya mengupdate library Expandable RecyclerView menjadi versi 2.1.1 (sebelumnya versi 1.x). 


Keuntungannya, pada library yg baru ini bisa mengatur layout parent (kategori) tampil dalam kondisi ter-expand pada posisi tertentu. Kerugiannya adalah tidak ada animasi pada icon chevron jika kategori diexpand. Oleh karena itu, saya atur animasinya secara manual di dalam method yang memanggil jika layout kategori tersebut disentuh.

Hasilnya sudah saya push ke sini 

Weekly Report 01/5/2016 - Luthfi Kurnia Putra

    Jujur saja, bagi saya minggu ini adalah minggu yang cukup membingungkan untuk saya karena banyak hal yang sedang saya pikirkan (Ya, dalam hal ini PPL juga masuk dalam perhitungan). Sebut saja dalam hal "klaim nilai". Hal ini sangat menyita perhatian saya pada minggu ini sehingga kebanyakan kegiatan minggu ini berakar dari hal tersebut.
    Sebenarnya saya baru memikirkan hal ini pada saat di Badr (gak sengaja sih sebenernya). Secara insidental, kami meminta pendapat Pak Yono mengenai tabel klaim yang dimiliki oleh seseorang (karena sebenernya kita agak penasaran mengenai klaim tersebut sebenarnya harus melakukan apa). Kemudian, secara tidak terduga Pak Yono bilang "Wah kompetensi ini tidak ada di projek kalian". Hal ini yang membuat saya jadi kepikiran mengenai tabel klaim penilaian.
   Setelah kami semua "menemukan" bahwa beberapa kompetensi mandatory tidak di-provide di project yang kami kerjakan, maka untuk pertemuan selanjutnya. Pak Yono mengusulkan untuk membicarakan khusus mengenai kompetensi yang akan kita klaim beserta penjelasannya. Pak Yono juga berencana mengundang beberapa software engineer Badr untuk membicarakan mengenai kompetensi-kompetensi ini.
    Selanjutnya, untuk hal-hal yang sudah saya kerjakan sendiri. Sebenarnya secara teknis tidak terlalu banyak. Saya sudah membuat dokumen MVP bersama teman-teman. Saya mengisi bagian fitur-fitur beserta penjelasan dari dokumen tersebut. Dokumen MVP ini sudah tersedia di folder Google Drive milik tim kami. Status dokumen ini sebenarnya msih belom final dikarenakan harus adanya klarifikasi dari pihak Badr jika dokumen ini benar isinya.
   Kemudian saya juga sudah mempelajari banyak hal juga untuk minggu ini (walaupun secara teknis saya belum ngoding bagian tersebut). Salah satu yang menyita waktu saya adalah fitur dari Android yang bernama Service.
    Jika teman-teman belum terlalu mengerti mengenai Service, secara sederhana, Service adalah layanan yang membuat kode dapat bekerja pada background process. Layanan ini memungkinkan pengguna untuk melakukan aktivitas aplikasi walaupun aplikasi tersebut sudah ditutup oleh pengguna.
    Lalu, guna Service untuk aplikasi kami itu apa ya? Sebenarnya, rencana dari saya sendiri saya ingin memanfaatkan layanan service ini untuk notifikasi. Berbicara mengenai algoritma, layanan ini akan menjalankan kode yang akan selalu mengecek timestamp dan tanggal dari device. Jika ada notifikasi yang memenuhi prasyarat tanggal, timestamp, maupun hari yang dimaksud, maka notifikasi yang bersangkutan akan muncul.
    Kemudian untuk notifikasi sendiri sejauh ini saya melihatnya (masih) mudah untuk diimplementasikan (belom dicoba sih ...). Tapi sejauh ini Android menyediakan kelas khusus untuk memanggil layanan notifikasi ini. Kemudian notifikasi (seharusnya) akan berjalan sesuai dengan harapan kami.
    Ya, itu dia laporan saya untuk minggun ini. Semoga bermanfaat untuk teman-teman semua. Selamat malam !

Minggu, 24 April 2016

Weekly Report 25/4/2016 - Reyhan Razaby

Kami sudah menentukan MVP kami, yaitu fitur-fitur yang ada pada aplikasi Evaluasi Ibadah yang lama (buatan Badr asli) beserta tambahan dari kami. Detailnya ada di bawah ini:
Fitur lama:
1. Amalan dapat dicheck / diisi jika terlaksana
2. Pada halaman utama bisa pindah-pindah hari ke kanan (later) dan ke kiri (earlier)
3. Amalan dapat diedit, dihapus dan ditambah baru
4. Setiap amalan memiliki atribut berupa nama, jenis (check / isian) dan target
5. Dapat dilihat statistik tiap amalan berdasarkan target yang sudah ditentukan
6. Ada fitur pengingat (notifikasi) yang dapat diatur jam nya. Namun hanya bisa 1 pengingat, itupun secara keseluruhan, bukan tiap amalan.
(aplikasi dapat diunduh di sini)

Fitur tambahan dari kami:
1. Pengguna dapat daftar melalui akun Evaluasi Ibadah atau akun Google
2. Data disimpan ke server juga
3. Setiap amalan memiliki kategori
4. Ada atribut baru pada amalan, yaitu pengulangan (hari, minggu, bulan) dan deskripsi amalan tersebut
5. Setiap amalan memiliki lebih dari satu notifikasi yang bisa diatur jamnya

Selain itu banyak refactoring yg saya lakukan agar memenuhi best practice dalam pemrograman android.
Di antaranya adalah mengubah penamaan table dan atribut pada SQLite (pada class Localstorage) yang dibuat luthfi. Awalnya dia menamakan table dan atribut langsung menuliskan nama table atau atributnya (seperti yg terlihat pada gambar 1) yang kemudian masing2 nama table dan atribut saya buat variabelnya (seperti gambar 2). Jadi untuk selanjutnya, untuk pemanggilan nama table dan atribut dapat dilakukan seperti di gambar 3.
Gambar 1
Gambar 2
Gambar 3


Refactoring selanjutnya pada program kami melakukan pembuatan class LocalStorage baru di setiap Activity, sehingga lebih memakan memory. Untuk itu, saya buatkan class EvaluasiIbadah yang mengextends class Application sehingga class ini hanya perlu dipanggil sekali selama aplikasi menyala. Class EvaluasiIbadah ini menyimpan class LocalStorage yang akan digunakan pada Activity lain sehingga tidak perlu membuat class LocalStorage lagi di setiap Activity tersebut. Karena di class EvaluasiIbadah ini, saya membuat aksesor dengan method public dan static. Tidak hanya class LocalStorage yang disimpan di class EvaluasiIbadah ini, tetapi juga class penolong lainnya yang dibutuh kan oleh beberapa atau semua Activity. Bentuk class kurang terlihat pada gambar 4 di bawah ini.

Gambar 4


Pada pembuatan amalan dan kategori built-in dilakukan di class AmalanManager. Pembuatan object-object ini hanya dilakukan pada pengguna baru yang belum memilih amalan-amalan yang ingin dievaluasi (pada halaman Welcome). Bagi yang sudah pernah memilih amalan, jika dia menutup aplikasi dan membuka lagi, tidak perlu memilih amalan lagi dan tidak perlu mengambil dari database server, cukup database local. Jika dia melakukan logout dan login lagi, tidak perlu memilih amalan lagi, namun perlu ambil data yang di database server. Di bawah ini potongan kodingan yang melakukan hal di atas.
Gambar 5

Gambar 6
Gambar 7

Semua yang berkaitan dengan kodingan di atas sebenarnya saya lakukan sejak 2 minggu lalu, jadi sudah terpush ke GIT pada minggu lalu

Weekly Report 24/4/2016 - Muhammad Farhan Dzikri

Minggu ini saya menyelesaikan mock up "tambah amalan" baru di corel draw. Halaman ini saya buat dengan mengikuti design google calendar dan mengikuti guideline material design.



Jika amalan baru sudah selesai dibuat maka akan menuju halaman berikut.


Halaman ini juga masih berupa mock up yang saya buat di corel draw. Designnya mengikuti dari halaman material design dengan mini floating button. Selain itu halaman juga dapat dituju jika amalan di klik dari halaman utama.

Kemudian saya mengimplementasikan halaman "tambah amalan" di android studio. Hasilnya seperti berikut:


Tinggi masing-masing baris adalah 56dp, sebagaimana aturan dari material design. Namun kolom "Nama Amalan" di paling atas adalah 64dp karena harus membuat padding top 8dp.
Jarak tulisan dari kiri adalah 72dp, jarak icon adalah 16dp, dan sizenya 24dp.

Iconnya sendiri harus dibuat dan dicocokan dengan style material design.
Berikut adalah beberapa hal yang saya pelajari

1. Icon harus ditampilkan dari depan. Bukan dari atas, atau menyamping, sehingga icon berbentuk flat dan tidak 3d.

2. Icon disimplifikasi, jangan terlalu mendetail dan rumit.

3. Ujung dari icon rounded dan tidak memakai stroke thin line.


4. Posisi icon diletakkan di atas pixel, bukan di tengah2 antara dua pixel, meskipun dari jarak jauh hasilnya akan sama. 

5. Garis icon memiliki lebar konsisten sebesar 2 pixel





Halaman ini sudah bisa menentukan kategori, tipe amalan, pengulangan setiap hari/minggu/bulan serta menambahkan deskripsi. Namun target dan notifikasi belum berfungsi.








Weekly Report 24/4/2016 - Muhamad Hardi Ramli

Pada minggu ini beberapa hal yang saya lakukan adalah memperbaiki kodingan yang ada pada server supaya server bisa digunakan. Hal ini sudah berhasil diperbaiki dengan cara memperbaiki konfigurasi database dan konfigurasi environment (pada .env) sesuai dengan konfigurasi server.

Selain itu saya juga mulai mengupdate ServerAuthentication supaya dapat digunakan di client dan menambahkan kelas bantuan JsonServerRequest untuk melakukan pemanggilan database, namun saya masih mendapat error code 400 (Client side error). Hal ini akan saya tanyakan saat pertemuan Badr selanjutnya. Jika masih tidak bisa menggunakan volley, mungkin akan diganti dengan menggunakan HttpParser dari kelas yang disediakan oleh Android.


Untuk kode selengkapnya sudah dimasukkan ke git berikut. Untuk minggu selanjutnya, saya akan mencoba memperbaiki error 400 tersebut, dan setup melakukan POST dan GET untuk fitur lain, terutama pemanggilan amalan dan kategori tiap user.

Minggu, 17 April 2016

Weekly Report 17/4/2016 - Muhamad Iqbal

Pada minggu ini beberapa hal yang saya lakukan adalah mengubah library rest client yang sebelumnya saya menggunakan volley library menjadi retrofit library.

Setelah banyaknya masalah yang saya dapatkan minggu-minggu sebelumnya saat menggunakan volley akhirnya saya memutuskan untuk menggantinya dengan retrofit apalagi menurut beberapa artikel yang saya baca retrofit lebih cepat dalam menjalankan request dibandingkan yang lain sehingga memantapkan untuk mengganti rest api tersebut.

Rest (representational state transfer) adalah suatu arsitektur metode komunikasi yang dijalankan via HTTP melibatkan proses pembacaan halaman web tertentu yang memuat sebuah file XML atau JSON.

Secara garis besar kodingan retrofit saya seperti berikut

variabel retrofit dibuar dengan base url yaitu url rest api lalu kita mengunakan converter gson karena api yang kita akses bertipe json.

RestApi digunakan untuk mengambil file json dari root_url menjadi bentuk objek oriented yang class nya sudah dibuat bernama kategori yang berada di class model.




call digunakan untuk mendapatkan hasil parsing dan diolah data tersebut sesuai kemauan kita.

Selama beberapa hari saya mempelajari retrofit dan mengimplementasi ke aplikasi Evaluasi Ibadah namun masih terjadi error. Lalu saya coba untuk membuat aplikasi sederhana yang berfungsi hanya untuk menampilkan database namun masih error. Setelah saya teliti ternyata program tidak dapat masuk ke method onResponse sehingga aplikasi tidak dapat mengambil data.

Lalu saya mencoba untuk mencoba mengganti ROOT_URL dengan API yang saya dapatkan dan ternyata bisa dan data dapat ditampilkan di aplikasi sehingga saya berkesimpulan bahwa masalah yang terjadi sebelumnya karena url database yang tidak dapat diakses padahal kemarin saya akses melalui browser bisa.