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.


Weekly Report 21/3/2016 - Muhamad Hardi Ramli

Minggu ini menjadi minggu sulit yang saya jalani. Beberapa hal belum bisa diselesaikan karena beberapa masalah yang kami hadapi.
Pada pertemuan rutin hari Selasa, kami membahas mengenai beberapa masalah teknis yang kami hadapi. Beberapa informasi yang kami terima adalah server untuk aplikasi yang digunakan baru bisa diterima pada hari Sabtu, sehingga belum bisa dicoba. Sehingga, saya mulai beralih fokus dan mencoba dengan Postman dan localhost.


Saat melakukan coding untuk login saya mengalami beberapa masalah yang masih belum bisa saya pecahkan, pertama mengenai testing android pada emulator, karena saya ingin mencoba dengan koneksi dengan localhost. Saya sudah mendapat beberapa informasi mengenai cara koneksi localhost dengan mengganti alamat localhost dengan 10.0.2.2 atau 10.0.3.2 jika menggunakan emulator Genymotion. Namun ketika dicoba saya masih mengalami connection time-out. Saya memikirkan mungkin kesalahan berada diantara masalah koneksi atau pada kode yang telah saya buat. Hal ini sudah saya jelaskan kepada Luthfi.


Hal lain yang saya kerjakan adalah membuat register dan pengiriman email konfirmasi. Hal ini sudah saya kerjakan namun hanya dibagian Laravel dan percobaan dengan Postman. Masalah yang saya hadapi pada Android sama dengan masalah pada login. Hal ini saya akan coba pecahkan secepatnya karena hal ini menghambat laju Sprint.
Beberapa hal yang ingin saya jelaskan adalah mengenai penggunaan Volley sebagai library tambahan yang membantu Android dalam mengirimkan paket data. Volley adalah library network yang lebih berfokus pada pengiriman data kecil seperti POST/GET form, JSON, dan paket data kecil lain seperti gambar atau komentar. Karena tugasnya lebih spesifik, Volley dapat melakukan pengiriman paket data lebih cepat.
Volley lebih banyak berfokus pada 2 kelas, RequestQueue dan Request. Melakukan pembuatan Request lalu dilanjutkan dengan mengirimkan Request tersebut lewat RequestQueue. Request dibuat dengan parameter tipe metode (POST,GET,dll), dan URL tujuan, dan listenernya. Tergantung dari jenisnya kita dapat menentukan variabel yang akan dikirimkan atau diterima. Berikut ini adalah penjelasan tambahan yang dapat membantu mengenai penggunaan dan pengenalan Volley.

Weekly Report 21/3/2016 - Luthfi Kurnia Putra

    Yang sudah saya lakukan minggu ini sebenarnya sangat banyak sekali (Silakan lihat di commit gitlab :( ). Tapi banyak sekali hal-hal yang belum dapat diselesaikan karena banyaknya tugas dari mata kuliah lain. Berikut akan saya coba untuk ceritakan satu persatu.

    Pertama, kegiatan saya di Badr Interactive. Pada saat disana kami sudah berembug untuk membicarakan masalah teknis seperti kode dan database. Pada saat disana, kami diinformasikan bahwa server development belum siap (Kami baru bisa mengakses server pada hari Sabtu, sehingga sangat sulit untuk mengejar deadline sprint ini. :(((( ). Kami juga sudah menetapkan desain dan tema yang fix. Beberapa sudah diimplementasikan oleh Hipster kami, Farhan.

   Yang Kedua, acara menginap. Nah ini sebenarnya yang membuat saya cukup kecewa dengan akhirnya. Pada hari Jum'at, kami semua memutuskan untuk menginap yang bertujuan untuk mengejar task-task sprint kami yang sudah tertinggal. Beberapa task kode berhasil diselesaikan, kebanyakan dari sisi desain login dan register (karena sudah fix desainnya).

    Akan tetapi, ada satu hal yang tidak bisa kami selesaikan pada acara menginap ini (yang sangat disayangkan sebenarnya). Hal itu adalah Timeout Error dari Volley yang sampai sekarang belum bisa kami solve. Akan coba saya ceritakan apa errornya.

    Jadi dari kode server yang sudah dibuat oleh Hacker kami, Hardi, sudah berhasil mengirim paket data yang diinginkan (HTTP Request sudah diuji melalui aplikasi Postman). Akan tetapi, setelah dikirim tidak ada respon yang berarti dari server (tidak ada HTTP Response yang datang ke Client Application kami) sehingga karena tidak memiliki balasan, aplikasi mengeluarkan Error Timeout.

    Kami sudah mencoba dua pendekatan, yaitu pengiriman paket memakai String dan pengiriman paket dengan format JSON. Keduanya sama-sama tidak mengeluarkan response yang diinginkan. Tebakan kami ada dua, yang pertama Laravel yang kami buat tidak bekerja sesuai dengan yang diinginkan. Yang kedua adalah AVD (Android Virtual Device) yang kami pakai untuk simulasi tidak mampu untuk terkoneksi ke koneksi localhost PC (Walaupun sudah kami akal-akali, AVD sepertinya masih tetap mencoba untuk tetap connect ke localhostnya sendiri).

   Kemudian, untuk menjawab mengapa kami masih memakai localhost? Alasannya cukup sederhana, kami masih tidak bisa menggunakan key untuk ke servernya (dalam hal ini .ppk). Entah karena saya yang salah memakainya atau ada sesuatu dari server side yang kami tidak tahu.

   Jadi, dengan sangat berat hati, sepertinya kami tidak mampu untuk menyelesaikan sprint kami tepat waktu dan harus menggunakan waktu dari buffer sprint untuk mengerjakan task sprint 1. Sepertinya yang akan kami lakukan adalah mencoba menyelesaikan seluruh task yang tersisa di Sprint 1 ini sampai minggu UTS tiba dan akan me-reschedule seluruh jadwal kami agar menyesuaikan dengan timeline yang ada.

   Kemudian, untuk saya sendiri, apa sesuatu yang sudah saya lakukan dan dapat dilihat hasilnya? Yang sudah saya buat dan berhasil mungkin hanyalah Skema Relasional dan ERD yang sudah final. Untuk skema relasional dan ERD dapat dilihat di Google Drive tim kami. Untuk pekerjaan yang lain, dengan sangat menyesal saya belum dapat menyelesaikannya. Saya harap kami bisa menyelesaikan seluruh task-task di Sprint 1 sebelum minggu UTS dimulai.


Minggu, 13 Maret 2016

Weekly Report 14/3/2016 - Muhamad Iqbal

Pada minggu ini apa yang saya lakukan bersama anggota tim adalah pada hari selasa kami bersama mentor kami Pak Yono mendiskusikan tentang timeline.

Selain itu kami juga memutuskan untuk menggunakan aplikasi baru yaitu slack sebagai alat komunikasi dan diskusi dalam kelompok.

Weekly Report 14/3/2016 - Muhamad Hardi Ramli


Yang kami kerjakan selama minggu ini adalah saya dan anggota tim lain mulai mendiskusikan mengenai timeline bersama dengan Pak Yono. Selain itu, pada tutorial yang dikerjakan minggu lalu terjadi error karena pada saat saya coba lagi tidak bisa mengambil akses token, padahal sebelumnya sudah sempat bisa. Tim kami juga mulai daftar dan mencoba Slack sebagai salah satu media komunikasi tim.

Untuk timeline hal ini didiskusikan secara bersama-bersama pada hari Kamis. Biarpun belum semua pekerjaan diberikan waktu, namun sudah hampir semua pekerjeaan diberikan waktu awal pengerjaan dan batas akhirnya. Timeline ini akan digunakan sebagai bahan acuan pembuatan Gantt Chart yang dibuat oleh Farhan.

Tim kami sudah mulai mencoba menggunakan Slack sebagai media komunikasi dan diskusi. Namun, saya masih belum terlalu sering menggunakannya. Biasanya saya hanya memperhatikan mengenai hal baru dan beberapa masalahnya.

Pada kode yang saya kerjakan minggu lalu, terjadi keanehan karena tiba-tiba terjadi error mengenai masalah invalid user credential padahal pada minggu lalu sudah bisa dicoba. Setelah diperbaiki dengan mengupdate Kernel.php sehingga memiliki

'oauth-user' => 'LucaDegasperi\OAuth2Server\Middleware\OAuthUserOwnerMiddleware',
'oauth-client' => 'LucaDegasperi\OAuth2Server\Middleware\OAuthClientOwnerMiddleware',
'check-authorization-params' => 'LucaDegasperi\OAuth2Server\Middleware\CheckAuthCodeRequestMiddleware',

pada $routeMiddleware dan beberapa file tambahan seperti GrantsTableSeeder.php. (perubahan lengkap bisa dilihat disini).





OAuth2 bekerja dengan pertukaran pesan antara klien dan server API. Biasanya, klien akan memberi pesan kepada server API bahwa klien akan ingin mengakses data dan API akan memberikan balasan berupa autentikasi, biasanya lewat pesan HTTP. API akan memberi balasan dengan memberikan akses token secara langsung atau berupa URL.

Pada OAuth2 beberapa cara supaya klien dapat mengakses akses tokennya, hal ini pada OAuth2 disebut dengan grant types. Grant types yang pertama yang biasanya jarang digunakan adalah Implicit grant, pada implicit grant hampir semua pekerjaan dilakukan secara client-side dan memberikan kode autentikasi lewat URL. Cara kedua adalah lewat authorization code, perbedaan dari hal sebelumnya adalah API server akan mengappend authorization code, bukan memberi access_token lewat URL.

Berikut adalah video beberapa penjelasan mengenai OAuth2 dan penggunaannya dalam masalah autentikasi


Dalam hal masalah yang dihadapi Luthfi mengenai git, saya sudah berusaha membantu ketika terjadi masalah tersebut karena saya pernah menghadapinya. Biasanya, hal tersebut bisa diselesaikan dengan cara pull terlebih dahulu, atau di push secara paksa menggunakan --force (biasanya hal kedua dilakukan jika keadaannya darurat karena beresiko), namun ternyata hal tersebut masih tidak membantu masalah git tersebut.

Weekly Report 14/3/2016 - Luthfi Kurnia Putra

   Untuk minggu ini, beberapa hal yang sudah saya kerjakan antara lain adalah menyusun Timeline bersama seluruh anggota tim dan juga penggabungan pekerjaan antara kode milik saya dengan kode milik Reyhan. Tentunya hal ini akan kita bahas lebih lanjut. Kemudian ada beberapa masalah yang terjadi di Git kami sehingga kode gabungan kami tadi tidak bisa di push ke master. Sampai saat ini saya masih mencari bagaimana penyelesaiannya.

   Pertama, untuk kodenya terlebih dahulu. Pada kode yang sudah kami gabungkan, User sudah dapat login kedalam aplikasi dengan menggunakan Google Sign In. Dan ada kabar baik dan juga kabar buruknya. Tentunya pembaca masih ingat mengenai trouble yang saya hadapi kemarin mengenai tidak jalannya halaman Mainpage saya karena Google Sign In? Kabar baiknya adalah, kode implementasi ExpandableRecyclerView milik Reyhan mampu bekerja dengan baik walaupun dikombinasikan dengan Google Sign In (Tentunya hal ini membuat saya sangat lega).

   Kabar buruknya adalah, kode milik Reyhan belum mengimplementasi fitur SlideView, Tanggal, dan Last Update yang sudah saya buat sebelumnya. Sehingga butuh waktu ( lagi :(( ) untuk mengimplementasikan ketiga fitur tersebut. Untuk melihat kode yang dimaksud tadi, bisa dilihat dalam bentuk .zip di Google Drive pada folder RecyclerView. File bernama EvaluasiIbadah1.2.zip

   Kemudian untuk Timeline, kami sudah berembuk bersama di hari kamis untuk membuat Timeline dari proyek dengan menetapkan tanggal dan deadline untuk setiap task yang ada. Hasil dari diskusi sudah kami post ke Google Drive dalam bentuk Gantt Chart yang dibuat oleh Farhan.

   Kemudian, untuk kegiatan yang sudah kami lakukan di kantor Badr kemarin adalah memasukkan seluruh user story ke dalam trello beserta evaluasi terakhir mengenai Sprint. Menurut estimasi kami sendiri, proyek ini akan jadi MVPnya setelah tiga sprint. Akan tetapi, sesuai kata Pak Yono, kami menyediakan 2 sprint lagi untuk sebagai sprint buffer dari Sprint kami.

Weekly Report 14/3/2016 - Reyhan Razaby

Saya sudah membuat mockup pada halaman Edit Mode menggunakan Balsamiq (dapat dilihat di sini)
Halaman ini muncul jika ditekannya ikon pensil (di sebelah atas) yang ada pada halaman utama (yang sudah dibuat oleh Hardi).
Di bawah ini saya tampilkan gambar halaman Edit Mode tersebut.

Halaman Edit Mode Jika ikon "ellipsis" amalan disentuh Jika pilihan "Edit amalan" disentuh

Jika pilihan "Archive" disentuh, maka layout amalan yang dipilih akan disembunyikan.

Jika tombol "plus" pada toolbar
disentuh
Jika pilihan "Tambah kategori"
disentuh

Jika pilihan "Tambah amalan" disentuh, maka akan muncul halaman "Tambah amalan" yang sudah dibuat oleh Luhfi.

Selain itu saya mulai membuat Mainpage yang sudah saya push ke Gitlab (bisa dilihat di sini)
Hasil sementara dapat dilihat pada gambar di bawah ini

Saya menggunakan ExpandableRecyclerView untuk membuat layout tersebut. Pertama saya menambahkan compile 'com.bignerdranch.android:expandablerecyclerview:1.0.3' pada dependencies sehingga menjadi seperti di bawah ini:
Data yang saya pakai juga masih sementara, yaitu dibuat secara manual di dalam ArrayList pada java, belum di simpan ke JSON maupun database.
Untuk membedakan amalan yang berjenis check dan isian, saya membuat variabel final di class Amalan seperti di bawah ini
Dan untuk kategori amalan yang tidak berisi amalannya, tetap akan ditampilkan teks dengan tulisan "Tidak ada amalan (kategori) pada hari ini". Kasus tersebut dihandle dengan cara tetap membuat suatu amalan ke dalam ArrayList of amalan, namun dengan nama null. Sehingga ketika layout amalan tersebut ingin di-bind, maka akan ada method khusus di dalam pengondisian seperti di bawah ini:
method "bindKosong" itulah yang akan menampilkan tulisan tersebut, sedangkan method "bind" akan menampilkan layout amalan seperti biasa.

Selain itu saya juga sudah membuat akun aplikasi Slack untuk berkomunikasi tentang teknis pembuatan aplikasi ini.

Di Slack ini, "code-job" adalah channel untuk membahas kodingan atau pemrograman pada java, "design-job" tentang tampilan atau branding, "general" tentang proyek ini secara umum (misal ERD, ganttchart, dll), dan channel "random" hanya untuk membahas topik di luar PPL (misalnya ngomongin artis, game, makanan, dll)

Weekly Report 14/3/2016 - Muhamad Farhan Dzikri

Yang saya dan tim kerjakan selama satu minggu terakhir adalah membahas pembagian tugas, timeline kerja, waktu fitur mulai dikerjakan hingga wktu fitur harus selesai dikerjakan. Hal ini kami bahas bersama diluar waktu pertemuan kuliah PPL dan pertemuan mingguan di kantor mentorship. Hasilnya dapat dilihat di link drive berikut:

https://docs.google.com/spreadsheets/d/1cVPckEF9rsAT8LJ5yf_BE-ytySnzuy1PwjjTlZ3e3Pc/edit

Setelah itu, progress yang saya kerjakan sendiri adalah membuat timeline di aplikasi Project Timeline, aplikasi ini kurang lebih fungsinya sama dengan Gantt Chart. Hasilnya saya publikasikan ke teman-teman di drive serta di slack. Berikut adalah screenshootnya:



Setelah itu, saya mencoba mendesign user interface login aplikasi Evaluasi Ibadah di Android studio. Desainnya saya ikuti dengan hasil mock up yang telah saya buat beberapa minggu lalu. Fitur login masih belum bias digunakan, karena masih ada kendala untuk connect ke server. Button yang berfungsi hanya "Logout" dan "Register Here". Tombol "Logout" ada di halaman MainActivity, jika di klik akan membawa ke halaman login, tombol "Register Here" akan membawa ke halaman Register.

Halaman Login

Halaman Main Activity

Halaman Register





Minggu, 06 Maret 2016

Weekly Report 6/3/2016 - Muhamad Farhan Dzikri

Yang kami kerjakan selama satu minggu kemarin adalah membahas lebih detail user story dan membuat 'manday' dari masing-masing fitur yang akan kami implementasi. Selain itu kami juga menambahkan person in charge untuk masing-masing task. Person in Charge (PIC) adalah orang yang akan bertanggung jawab terhadap penyelesaian suatu task dan fitur. PIC belum seluruhnya dituliskan pada tiap task, karena kami akan masing-masing fokus untuk menyelesaikan task pertama terlebih dahulu. Kemudian kami juga membuat ER diagram bersama, bentuknya masih belum di fiksasi, namun hasilnya sudah dapat dilihat di link berikut

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIB-HnKT5uKDXdXv1PZ6pbc8viU57jObNdFlrTHRZqDBrNwmJ_SKRt0IUfI3GZ2jwZNFvvsKJwovacS1yPWPjYQPuSc40wh-pF8rySBoglWC9VNWEtF8eaaunGZjRPwS-ACd6ilMuToIA/s1600/PPL+ERD+temporary.png

Untuk pekerjaan individu saya mencoba menggunakan balsamiq dan mendesign wireframe untuk login, registrasi, serta response page nya. Hasilnya dapat dilihat di gambar berikut





Weekly Report 6/3/2016 - Reyhan Razaby

Kamis lalu, kelompok kami menentukan manday dan memasukkan task-task ke masing-masing sprint. Dan juga telah menentukan siapa saja PIC dari sprint 1. Sprint sisanya belum karena keterbatasan waktu. Untuk hasilnya dapat dilihat di sini

Kelompok kami juga sudah membuat ERD untuk memudahkan kami dalam membuat skema pada basisdata. ERD ini masih belum sempurna, karena para anggota kelompok kami sudah agak lupa tentang ilmu basisdata yang pernah kami dapatkan pada semester 4 lalu.

Selain itu, saya sendiri sudah megeksplorasi beberapa hal tentang pembuatan aplikasi android. Saya mencoba membuat aplikasi penghitung IP (seperti gambar di bawah). Guna saya membuat aplikasi ini supaya saya lebih cepat beradaptasi dengan Android Studio dan mengasah kemampuan layouting pada file xml dan menghubungkannya dengan proses logikanya pada file java.




Dan di bawah ini adalah beberapa kodingan dari aplikasi tersebut

Implementasi dari tombol "Hitung IP"


Implementasi perhitungan IP dari matkul yang diambil

Instance variable dari class MatkulSekarang




Weekly Report 6/3/2016 - Muhamad Iqbal

Selama minggu ini, ada beberapa hal yang saya dan teman-teman team saya lakukan yaitu menyempurnakan project plan kami dengan membuat user story, manday, PIC setiap task dan ERD untuk database.

Di hari selasa kemarin, teman-teman tim saya dikenalkan dengan konsep yang bernama Manday. Manday adalah suatu satuan ukur yang mengkalkulasikan berapa lama seseorang untuk mengerjakan task tersebut. Manday juga digunakan untuk menentukan bayaran yang nanti akan diminta untuk suatu proyek, dalam hal ini proyek aplikasi. Pada hari selasa tersebut saya tidak dapat hadir sehingga saya mulai membantu mengerjakan konsep manday keesokan harinya.


Pada hari kamis, kami berkumpul kembali untuk membahas PIC serta ERD untuk database. PIC ada seseorang yg bertanggung jawab dalam suatu kelompok task yang saling terhubung. Kami juga membuat ERD tetapi ERD kami masih tergambar secara kasar dan kemungkinan perlu disempurnakan kembali. Untuk user story, PIC dan manday dapat dilihat google drive dan untuk melihat ERD dapat dilihat di inggu, 06 Maret 2016 Weekly Report 6/3/2016 - Luthfi Kurnia Putra

Weekly Report 6/3/2016 - Muhamad Hardi Ramli

Dalam minggu ini, saya bersama teman-teman yang lain menyempurnakan Project Plan dengan menambahkan detail seperti User Story. Pada hari Selasa, kami berdiskusi dengan project owner mengenai dan membahas User Story yang dibuat.

Hal lain yang didiskusikan lainnya adalah mengenai manday dan PIC. Manday digunakan untuk mengkalkulasi lama kerja dan orang yang dibutuhkan. Biasanya manday digunakan untuk menentukan bayaran yang nantinya akan diminta untuk suatu proyek, dalam hal ini proyek aplikasi.

Selain itu ERD untuk database juga sudah mulai didiskusikan, namun begitu kami agak kesulitan karena setelah dilihat masih banyak beberapa nilai multi value. ERD ini masih ingin diperbaiki kembali supaya lebih baik. (draft ERD versi online ada pada Weekly Report 6/3/2016 - Luthfi Kurnia Putra
).

Hal lain yang saya kerjakan dalam minggu ini adalah saya mencoba dan melakukan tutorial laravel 5 dan oAuth 2.0 untuk autentikasi dengan menggunakan token. Token tersebut akan digunakan untuk autentikasi user login pada android. Laravel nantinya akan berperan sebagai middleware untuk menghubungkan ke database. Namun demikian, untuk melakukan server request pada androidnya saya masih belum bisa mengerjakannya. Kode sementara dapat dilihat di git pribadi & latihan saya pada link berikut ini.

Weekly Report 6/3/2016 - Luthfi Kurnia Putra

     Untuk seminggu ini, kelompok saya sepakat untuk membuat Project Plan secara keseluruhan terlebih dahulu. Dimulai dengan melengkapi User Story yang sudah ada saat di Badr kemarin. Task-task tersebut dievaluasi oleh PO kami, Pak Yono, untuk dipastikan apakah User Story yang kami buat sudah cukup baik atau belum.

    Kemudian, kami juga dikenalkan dengan konsep "Manday". Dimana "Manday" merupakan satuan ukur yang menggambarkan berapa hari satu orang dapat mengerjakan suatu task. "Manday" ini, katanya, sudah banyak dipakai oleh klien-klien Badr Interactive. Selain untuk estimasi, "Manday" ini juga berguna untuk menetapkan harga dari suatu proyek. Konsep penghitungan "Manday" ini kami sertakan juga di Project Planning kami di Google Drive.

    Setelah mendapat User Story yang sudah matang. Pada hari Kamis, kami mengadakan pertemuan untuk membicarakan PIC. Secara umum, PIC (Person in Charge) yang kami maksudkan disini adalah orang-orang yang di-assign untuk suatu kelompok task tertentu yang saling terhubung. Yang saya inginkan nantinya, PIC-PIC ini akan bertanggung jawab secara penuh terhadap task yang akan diambilnya. Pada spreadsheet yang kami sertakan di drive, kolom PIC belum terisi penuh. Ini disebabkan karena kami memprioritaskan pembagian untuk Sprint satu terlebih dahulu.



    Kemudian kami juga membuat ERD. Walaupun masih dikatakan jauh dari aturan ERD yang sempurna (Ya tadinya mikirnya gamau diklaim soalnya :( ) tetapi kurang lebih, tim kami mengerti apa yang sudah dituliskan didalamnya. Rencananya ERD ini akan terus disempurnakan, karena kami tidak begitu yakin dengan desain ERD yang ada sekarang karena kami nilai terlalu 'boros'.

   Untuk saya pribadi, saya juga sudah melakukan sedikit coding dimana saya mencoba untuk membuat sebuah login dengan Google API. Sejauh ini, kode yang saya buat sudah berhasil untuk mengimplementasikan login Google dengan baik. Akan tetapi ada masalah yang timbul.

   Setelah login, kode pada main page yang saya buat sebelumnya kebanyakan tidak bekerja. Seperti misalnya kode RecycleView. Kode tersebut sama sekali tidak bekerja. Sampai detik saya menulis di blog ini, saya belum menemukan penyebabnya. Akan tetapi setidaknya, login saya berhasil. Kode login saya yang masih error tersebut sudah saya upload di Gitlab.

   Sebelumnya untuk RecycleView, jika pembaca sekalian belum begitu mengenal istilah tersebut. RecycleView adalah sebuah widget yang disediakan oleh Android untuk membuat tampilan list yang berulang. Contoh-contohnya misalkan seperti daftar kontak dan daftar chat di aplikasi LINE dan Whatsapp, kedua aplikasi tersebut menggunakan RecycleView dalam pengimplementasian kode mereka. Sehingga didapatkan list objek-objek yang serupa akan tetapi memiliki konten-konten yang berbeda (misalnya kontak satu dengan yang lain punya nama dan foto yang beda, cuman kalo di display sama).

Dan untuk kabar baiknya, Sprint kami akan dimulai minggu ini. Doakan kami ya pembaca :)

Sekian laporan dari saya, semoga bermanfaat :)

Luthfi