Minggu, 27 Maret 2016

Weekly Report 28/3/2016 - Reyhan Razaby

Untuk minggu ini bisa dibilang tidak ada task yang selesai. Selain karena banyak kuis pada mata kuliah lain dan sakit selama dua hari (Kamis-Jumat), juga dikarenakan beberapa faktor teknis.

Pertama, terdapat miss communication dengan Iqbal pada pengambilan data dari database. Saya awalnya menanyakan pada Iqbal beberapa minggu lalu, bisa atau tidak jika saya mendapatkan data dari database dalam bentuk array, di mana satu index melambangkan satu tuple dan tiap atribut dipisahkan oleh semicolon ";" (seperti punya saya sebelumnya yang ada di GIT). Iqbal bilang iya. Namun, ternyata yang ada di dalam pikiran Iqbal berbeda dengan yang saya maksud. Yang saya maksud adalah Iqbal membentuk seperti itu di dalam mySQL-nya yang kemudian saya pecah di java dan dijadikan suatu objek Amalan atau Kategoti. Sedangkan ternyata yang Iqbal maksud, dia membentuk array dan semicolon tersebut dalam java juga, sehingga kalau saya pecah di java akan kerja 2 kali (digabungkan di java, kemudian dipisah lagi).

Kemudian saat saya ingin refactoring menjadi seperti yang Iqbal maksud, Luthfi memberitahu saya kalau ingin mengubah dari SharedPreferences menjadi SQLite supaya lebih mudah dalam menyesuaikan ke database. Jadi saat proses refactoring, saya juga menyesuaikan Luthfi pada proses penyetoran data ke penyimpanan internal tesebut.

Selain itu saya mengatur manajemen penyimpanan data karena masih ada yang bingung tentang ini, terutama Luthfi. Pada saat pertama kali login (setelah registrasi), di situlah database diakses untuk mengambil amalan mana yang akan dipilih dan dimasukkan ke memori internal. Jika logout, data dalam memori internal pada user tersebut dihapus. Jika login kembali, ambil lagi yang ada di database dan masukkan lagi ke memori internal. Pada saat user membuka aplikasi, data yang ada di memori internal dimasukkan ke struktur data seperti ArrayList, TreeMap atau HashMap (namun kondisi sekarang, saat berpindah halaman masih dipanggil berkali-kali karena belum membuat flag), dan jika keluar dari aplikasi, flag tersebut dihapus kembali supaya saat membuka kembali, data dari memori internal dtampung lagi ke struktur data yang ada. Database juga di-update pada proses edit, tambah dan hapus amalan, tak lupa diupdate pula yang ada di memori internal. Memori internal yang dimaksud di atas adalah dalam bentuk SQLite. Namun kami tetap memakai SharedPreferences hanya pada cursor (seperti pada perpindahan halaman pada Mainpage) dan flag (boolean).

Untuk task yang selanjutnya ingin saya kerjakan yaitu "Memilih amalan pada pertama login" belum selesai karena ingin sekalian disesuaikan dengan SQLite yang Luthfi buat. Progres ini masih dalam tahap layouting dan pembuatan Class Activity baru beserta penyusunan recyclerview-nya.

Saya juga membantu Farhan Dzikri dalam mendesain dan mengarahkannya (mungkin karena saya memiliki background desain). Dia menanyakan tentang warna dan tampilan yang ingin dipakai pada Mainpage

Weekly Report 27/3/2016 - Muhamad Iqbal

Weekly report kali ini saya bersama tim lebih banyak bermain di server. Pada minggu lalu aplikasi kami masih belum bisa menggunakan server sehingga pada pertemuan rutin hari selasa kami berencana untuk menanyakan masalah kami kepada mentor kami di Badr.

Pada hari selasa,  kami menuju badr untuk pertemuan rutin dan juga menanyakan masalah tentang server namun ternyata di sana mentor kami tidak ada karena ada urusan sehingga akhirnya kami harus menyelesaikannya sendiri. Beruntung akhirnya saya dapat mengakses server tersebut menggunakan winscp dan bisa menggunakan phpmyadmin.

WinSCP digunakan untuk menyimpan file .php yang digunakan untuk mengambil data dari server ke browser yang berbentuk JSON lalu di parsing oleh aplikasi. File aplikasi yang saya upload ada 4 buah file .php yaitu db_config.php, db_connect.php, get_amalan.php, get_kategori.php.


db_config.php dan db_connect.php digunakan untuk mengakses server agar data bisa diambil dan ditampilkan.




get_amalan.php dan get_kategori.php digunakan untuk mengambil data dan menampilkannya berbentuk JSON



Data yang akan ditampilkan adalah sebagai berikut

Setelah server sudah dapat digunakan saatnya menggunakan pada aplikasi namun masih ada error yang terjadi sehingga data masih belum dapat ditampilkan dalam aplikasi dan juga nanti saya akan mengubah cara akses server yaitu menggunakan laravel untuk selanjutnya.

Weekly Report 27/3/2016 - Luthfi Kurnia Putra

    Untuk Weekly Report kali ini, mungkin tidak sebanyak minggu lalu kali ya, tapi cukup banyak perubahan yang terjadi di aplikasi (setidaknya itu yang saya lihat :)) ). Akan saya ceritakan satu-satu. Jika dirangkum mungkin akan terbagi menjadi dua bagian. Yaitu Server Badr dan SQLite

   Untuk yang server Badr, mungkin akan saya ceritakan dulu yang terjadi kemarin di Badr. Saat kami ke Badr kemarin, kami tidak dapat menemui Pak Yono karena beliau sedang ada urusan dengan klien beliau. Pada saat itu kami memutuskan, mengapa tidak bertanya saja kepada engineer Badr saja mengenai pekerjaan kami?

   Kemudian kami memutuskan untuk bertanya kepada coder-coder Badr. Tapi sekali lagi, kami menemui jalan buntu karena kebanyakan dari developer mobile milik Badr ikut pergi dengan Pak Yono. Hal ini sempat membuat tim kami kebingungan. Kami mau ngerjain apa seminggu kedepan? Kemudian, kami dengan sangat terpaksa harus menjajal server Badr sendirian.

   Tapi, the good news is, saya akhirnya mendapatkan akses ke server. Kami sempat dibingungkan oleh berbagai macam hal seperti permission dan banyak hal lainnya. Tapi pada akhirnya, saya berhasil menginstall Composer untuk Laravel di server. Tinggal memasukkan Client Laravel milik Hardi dan seharusnya server sudah dapat beroperasi.

   Untuk anda yang belum begitu memahami Composer, apa sih itu Composer? Well, kalo ditanya begitu sebenernya saya pribadi juga kurang tau itu apa ( berhubung belom pernah ngurus server ampe segitunya :D ). Tapi dari pengetahuan yang saya punya, Composer itu kayak semacam dependency manager dari Laravel (gak cuman Laravel sebenernya, framework terkenal lain kayak Yii juga make Composer sebagai dependency manager-nya).

    Nah apalagi tuh dependency manager? Biar mudahnya sih gini, Framework itu kan punya banyak file yang dia miliki, kebanyakan dari file-file tersebut dependensi satu dengan yang lainnya. Nah, jika misalnya ada salah satu file yang di-update oleh si pemilik framework, maka secara otomatis file-file lain yang dependensi dengan file itu harus ikut di cek juga (cek apakah masih kompatibel apa harus ikutan di-update juga). Nah tujuan dependency manager adalah untuk mengotomatisasi proses tersebut.

   Yang kedua adalah SQLite, nah apa sih sebenernya ini SQLite ini? SQLite basically adalah semacam Local Database yang disediakan Android untuk keperluan penyimpanan data lokal. Nah yang saya lakukan minggu ini kebanyakan adalah mempelajari SQLite ini dan mengaplikasikannya ke kode Evaluasi Ibadah.

   Terus, saya tau darimana informasi SQLite ini? Sebenarnya, setelah saya cari-cari informasi dari kelompok-kelompok PPL yang lain, banyak dari mereka yang memakai SQLite, selain karena "keren" (iya beneran keren wkwkwk). Sistem yang dipakai juga standar (yang dimaksud standar disini karena banyak perusahaan-perusahaan apps besar yang make, ex:Whatssapp). Sehingga banyak juga coder professional yang familiar dengan SQLite.

    Nah seminggu ini saya mencoba untuk me-refactor pekerjaan Reyhan yang sudah membuat database dengan memanfaatkan SharedPreferences. Nah apalagi itu SharedPreferences? dan apa bedanya dengan SQLite?

   Sebelumnya, metode penyimpanan lokal di Android itu ada tiga (lebih tepatnya yang saya tau cuman tiga .___. ). Yang pertama itu SharedPreferences, yang kedua SQLite, dan yang ketiga adalah cache. Khusus untuk yang cache saya belum tau banyak. Karena  saya lihat juga jarang yang memakai itu.

   Well, Untuk perbedaan antara SQLite dengan SharedPreferences, perbedaan utamanya adalah cara penyimpanannya. SQLite dapat membuat tabel dan sebagainya sebagai struktur data penyimpanan. Kalo SharedPreferences? SharedPreferences itu kalo diibaratkan kayak sebuah HashMap raksasa yang bisa menyimpan value String, boolean, dan Integer. Dimana setiap "key" hanya dapat untuk menyimpan satu value saja.

    Kalo dibayangkan cukup repot kan kalau menyimpan di SharedPreferences? Kita sebagai programmer harus tau setiap key yang untuk setiap value yang disimpan. Maka dari itu cukup merepotkan mengimplementasikan database dengan SharedPreferences. Tapi sekarang sudah saya rubah ke SQLite agar lebih mudah kedepannya.


Well, that's it for now. Thank You For Reading.

Weekly Report 27/3/2016 - Muhamad Farhan Dzikri

Pada minggu ini yang saya kerjakan adalah mendesign user interface halaman mainpage agar sesuai dengan material design. Pertama-tama saya mengubah Metric & Keylines agar sesuai dengan guideline disini. Yang saya ubah adalah margin left dan right menjadi 16px, tinggi item menjadi 72px. Kemudian saya mengganti ukuran font agar sesuai dengan guideline disini, menjadi 20sp.
Sehingga hasil awalnya menjadi seperti ini :


Sayangnya dalam material design tidak saya temukan dropdown list seperti yang kami gunakan diatas, jadi saya bingung untuk menentukan warna dan ukuran fontnya. Akhirnya saya mencoba mengikuti Subtitle sebagaimana di google drive,


Meski Subtitle tidak dapat di klik dan collapse, namun tampilannya sangat mirip dengan list kami. Jadi untuk dropdown list saya mengikuti Subtitle di material design. Tingginya saya ubah menjadi 48dp, ukuran fontnya 16sp dengan warna #777777, dan backroundnya #EEEEEE. Listnya sendri saya ubah backround colornya menjadi #FFFFFF agar sesuai dengan contoh dan saya tambahkan jarak 1px untuk memisahkannya dengan list lain. Untuk font disini sebenarnya yang digunakan adalah Roboto-Medium, namun setelah saya mencoba mengimport-nya malah terjadi error. Sehingga font yang saya gunakan disini masih Roboto_Normal. 
Hasil akhirnya seperti berikut.

Yang masih kurang disini adalah shadow yang memisahkan list dan subtitle. Saya sudah mencoba mempelajarinya, sejauh ini yang saya ketahui adalah shadow tidak ada atributnya di xml dan harus dibuat manual kemudian ditambahkan di backround. Selain itu subtitle posisinya harus tetap diatas walaupun di slide keatas. Hal ini juga belum saya temukan caranya.

Minggu, 20 Maret 2016

Weekly Report 21/3/2016 - Reyhan Razaby

Selama satu minggu terakhir saya mengerjakan task di sprint 1 saya. Yang sebelumnya hanya bisa tampil pada 1 tanggal, sekarang sudah bisa berganti halaman ke tanggal lainnya (tidak ada batasan ke tanggal berapapun). Selain itu data sudah bisa disimpan ke memori internal HP, namun belum bisa disimpan ke server karena masih bermasalah entah di servernya atau di jaringannya.

Selasa, 15 Maret 2016 saya mulai mencoba mendesain ulang class yang ada di dalamnya sehingga hasilnya terdapat class baru PageOfDay yang mengatur setiap halaman pada class Mainpage. Selain itu ada class LocalStorage  yang memanage penyimpanan ke memori internal HP. Ada class AmalanManager yang akan menyimpan seluruh amalan si user beserta informasi kategorinya. Dan terkahir class CalendarManager untuk mengolah penanggalan.

Rabu, 16 Maret 2016 saya mengimplementasikan class yang sudah saya desain ke dalam file java. Banyak kendala di sini karena saya masih banyak buta syntax dan belum beradaptasi dengan class Calendar.

Kamis, 17 Maret 2016, kami sekelompok mengerjakan bersama dari pukul 3 sore sampai 11 malam dan saya masih belum selesai mengimplementasi secara sempurna karena awalnya saya menyimpan object ke memori internal menggunakan Gson. Ternyata Gson tidak bisa menyimpan object yang kompleks sedangkan yang saya akan simpan sangat kompleks (HashMap dengan Key berupa object lain dan Value berupa ArrayList objek lain). Akhirnya saya menyimpan data berupa String ke SharedPreferences biasa (tanpa Gson).

Jumat, 18 Maret 2016 kami menginap di fasilkom sampai Sabtu pagi dan alhamdulillah progress saya sudah hampir selesai, tinggal menampilkan Calendar Dialog seperti gambar di bawah sebelah kiri ini.

Dan Minggu 20 Maret 2016 saya sudah selesai mengimplementasikan desain yang sudah saya buat pada selasa lalu.

Di bawah ini adalah tampilan aplikasi kami sementara.


File tersebut sudah saya push ke GIT

Selain itu saya bersama Farhan sudah merundingkan tentang standar guideline yang akan kami gunakan. Konsepnya adalah material design (dapat dilihat di sini untuk lebih jelas). Dan kami sudah mendapatkan icon dari pihak Badr itu sendiri. Di bawah ini adalah icon Evaluasi Ibadah untuk aplikasi kami.
Supaya matching, untuk warna dalam aplikasi kami mengambil dari warna icon tersebut. Yaitu #65cced, #222222 dan #505155

Weekly Report 21/3/2016 - Muhamad Iqbal

Pada minggu ini ada cukup banyak hal yang saya lakukan namun dalam menjalankan sprint 1 kali ini namun masih belum mencapai target yang maksimal. Banyak masalah yang timbul mulai dari faktor teknis maupun faktor non-teknis.

Pada hari selasa pada pertemuan rutin di Badr kami membahas beberapa masalah teknis seperti server yang akan digunakan, usulan menggunakan library tambahan yaitu volley yang digunakan untuk mengambil atau menyimpan data di server.

Setelah pertemuan tersebut saya melakukan coding untuk mainpage aplikasi agar dapat mengambil data dari server lalu dapat ditampilkan pada aplikasi. Pada saat itu saya menggunakan http client untuk melakukan pengambilan dan pengiriman tetapi ternyata setelah satu hari melakukan coding saya mengetahui bahwa saat ini sudah tidak bisa dipakai sehingga saya beralih ke volley.

Kendala yang saya alami adalah emulator yang tidak dapat digunakan sehingga saya tidak bisa mengecek apakah kodingan saya sudah benar dan dapat berjalan dengan baik. Masalahnya sepertinya adalah terletak di spesifikasi laptop saya yang kurang mumpuni untuk menjalan kan android emulator.

Weekly Report 21/3/2016 - Muhammad Farhan Dzikri

Yang saya kerjakan selama satu minggu terakhir adalah mendesign ulang halaman login dan register dengan guideline material design. Design sebelumnya yang saya kerjakan masih sementara karena belum dibicarakan oleh pihak badr. Setelah saya berdiskusi dengan designer badr saya mendesign ulang mengikuti color pallete pilihan badr dan material design.



Setelah berdiskusi dengan tim, maka halaman yang dipilih adalah yang berwana hitam.
Setelah itu saya juga mencodingnya di android studio, beserta dengan halaman registernya.



Kedua halaman ini sudah saling berkaitan, jika di klik register akan menuju halaman register, jika di klik halaman login akan menuju halaman login. Setelah mendesignnya saya juga melakukan commit di git sehingga designnya sudah terintegrasi dengan codingan teman2.

Halaman register juga sudah bisa memberikan response jika nama email dan password yang diberikan tidak valid.