Minggu, 08 Mei 2016

Weekly Report 08/5/2016 - Muhamad Iqbal

Minggu ini kami bersama pihak badr lebih banyak membahas tentang materi-materi mandatory yang harus diklaim. Kami membahas materi per materi tentang penjelasannya per materi sehingga kita dapat mengklaim nilai tersebut. Ada banyak sekali materi yang belum saya klaim disini sehingga saya cukup pusing memikirkan apa yang saya harus lakukan agar dapat mendapat klaim dalam waktu 4 pertemuan lagi.

Pertama hal yang telah saya lakukan adalah merubah sedikit skema relational yaitu menghapus tabel yang kira-kira tidak perlu dan juga menyesuaikan dengan local database yang ada di aplikasi.
Lalu hal yang saya lakukan adalah mengoreksi beberapa hal yang ada di dokumen Requirement Elicitation, Analysis, Specification.

Selain itu juga saya melanjutkan membuat Rest API di laravel yang belum bisa berjalan. Sebelumnya saya masih belum terlalu paham dengan controller dan routesnya sehingga kemarin saya mencoba memahami lagi dan Alhamdulillah masalahnya terselesaikan dan bisa berjalan namun ternyata timbul masalah baru lagi yaitu proses sql state nya untuk mengambil data dari database terjadi kesalahan pada penamaan sehingga terjadi error kembali dan saya masih belum menemukan solusinya bagaimana. Data rest API sudah saya push dalam gitlab

Weekly Report 09/5//2016 - Reyhan Razaby

Kamis lalu, saya membuat diagram flow tentang alur dari program kami. Sebenarnya ini sudah kami buat sebelum memasuki sprint 1, hanya saja masih berantakan dan belum detail. Yang versi saat ini sudah bisa dilihat di bawah ini




Versi pdf nya bisa dilihat di sini.

Selain itu kami telah membuat Requirement Elicitation, Analysis, Specification
Di sana dijelaskan latar belakang yang berisi alasan mengapa aplikasi Evaluasi Ibadah dibuat. Selain itu juga dituliskan fitur apa yang dibutuhkan berdasarkan latar belakang dan kebutuhan user tersebut. Kemudian diikuti oleh spesifikasi produk yang dihasilkan beserta funcional dan non-functional requirement

Kemudian selama liburan kemarin, saya mengimprove pada halaman Mainpage. Sebelumnya, pada perpindahan halaman harus menggunakan tombol chevron pada header. Kini sudah bisa dengan cara me-swipe halaman tersebut untuk pindah halaman. Kodingan ini sudah saya push ke GIT

Weekly Report 08/5//2016 - Luthfi Kurnia Putra

    Hal yang saya lakukan untuk minggu ini sebenarnya tidaklah banyak dari segi coding (walaupun beberapa coding task sudah saya kerjakan). Saya sendiri lebih berfokus ke masalah klaim nilai saya yang belum terpenuhi. Untuk itu untuk seminggu terakhir saya berusaha untuk melakukan sisa kompetensi tersebut dengan sebaik-baiknya.
    Untuk coding task sendiri, yang sudah saya lakukan adalah menyelesaikan fitur kami untuk sprint kali ini. Yaitu fitur statistik amalan. Fitur ini sudah berjalan sebagaimana mestinya (Tinggal beberapa tes terakhir sampai bisa dipresentasikan di sprint review). Dan sejauh ini, untuk fitur yang kami belum implementasikan tinggal tiga. Yaitu notification, tutorial pemakaian, dan login. Untuk fitur notification, saya dan Reyhan memegang task ini. Terutama untuk bagian background process, saya yang mengerjakan hal tersebut (dan sedang in progress). Kode mengenai service juga sudah saya push ke git kelompok kami dan bisa dilihat oleh teman-teman.
    Kemudian, mengenai subkompetensi yang saya berusaha kejar untuk minggu ini antara lain berhubungan dengan Unit Test dan Continous Integration. Untuk cerita mengenai kedua hal ini akan saya jelaskan dibawah.
    Pertama saya mulai dengan Unit Test terlebih dahulu. Kemarin saya sudah mencari Unit Test yang 'total' untuk platform Android dan ternyata hal tersebut tidaklah berhasil. Maka dari itu, saya sendiri memutuskan untuk memakai JUnit saja untuk melakukan Unit Testing.
    Mengenai JUnit itu sendiri, Junit adalah platform unit testing yang dikhususkan untuk platform Java. Saya tau mengenai informasi JUnit ini dari rapat kemarin selasa di Badr. Setelah saya search di Google mengenai penggunaan JUnit untuk Android Studio, secara kebetulan, ternyata Android Studio sudah menyediakan library JUnit pada IDE-nya. Yang kemudian saya langsung pakaikan untuk mengetes objek-objek vital untuk aplikasi. Kode Unit Testing ini sudah saya buat dan saya push di git beserta pekerjaan saya, yaitu Service.
    Untuk Kelas yang saya uji dengan Unit Testing, kelas tersebut bernama EvaluasiIbadah. Kelas ini berguna untuk menampung Application Context dari Aplikasi Evaluasi Ibadah beserta objek-objek vital. Sebagai contoh misalnya, objek Local Database dan objek Notification Service di-inisialisasi di kelas ini.
    Kemudian, untuk kompetensi selanjutnya, yaitu Continous Integration. Jika dijelaskan, Continous Integration itu sendiri merupakan proses dimana saat kita mem-push file ke git, maka file tersebut juga akan di-build oleh server untuk dicek kebenaran kodenya. Jika ada error, maka aplikasi Continous Integration ini akan melaporkan error tersebut kepada kita.
    Untuk project kami, saya memutuskan untuk menggunakan Gitlab CI sebagai software Continous Integration saya. Gitlab CI menurut saya sendiri tidak terlalu praktis untuk Android karena butuh proses menyetting yang luar biasa lama. Akan tetapi, saya menemukan source code milik seseorang yang ada di-internet untuk melakukan ini. Dan akhirnya, CI berhasil diimplementasikan di projek kami.
    Jika saya jelaskan secara singkat, untuk mengimplementasikan CI di git manapun, dibutuhkan dua komponen utama. Yang pertama adalah Runner dan yang kedua adalah file .yaml. Runner merupakan software yang digunakan untuk me-run program nantinya di dalam server. Beberapa Runner harus di-install terlebih dahulu untuk menggunakannya. Akan tetapi, karena saya memakai GItlab CI dan projek saya berada di Gitlab, maka Gitlab menawarkan fasilitas yang bernama Gitlab Shared Runner.
    Shared Runner itu sendiri adalah Runner milik Gitlab yang di-share kepada pengguna-penggunanya. Runner ini bersifat generik dan bisa digunakan oleh banyak jenis bahasa pemrograman. Shared Runner inilah yang saya gunakan untuk project kami.
    Akan tetapi, timbul masalah baru. sebuah Runner, baik Shared maupun tidak, harus dikonfigurasikan terlebih dahulu baru kemudian bisa digunakan. Konfigurasi ini membutuhkan file yang memiliki ekstensi .yaml. Gitlab CI menggunakan .gitlab-ci.yaml untuk konfigurasi Shared Runnernya. Disini kesulitan saya mulai terasa.
    Beberapa bahasa pemrograman yang sudah banyak dipakai seperti Python dan Ruby memiliki template konfigurasi sendiri yang membuat user tidak perlu mencari-cari file konfigurasi yang dibutuhkan. Akan tetapi, Android tidak memiliki template file seperti itu. Yang berarti, saya harus mencarinya sendiri. Beruntungnya, saya menemukan git seseorang yang mau men-share konfigurasi git miliknya. Saya mendapatkannya dari sini .
    Selain dari dua hal diatas, saya juga mencoba untuk me-review kode-kode yang saya sudah pernah push sebelumnya. Kode-kode tersebut sudah saya komen langsung di gitlab dan bisa dicek untuk masing-masing push.
   Untuk memenuhi kompetensi desain review, saya juga akan me-review beberapa halaman aplikasi yang saya rasa masih kurang 'cocok' untuk saya dari segi desain. Untuk yang pertama adalah halaman berikut :

    Halaman berikut merupakan halaman statistik amalan milik aplikasi kami. Menurut saya sendiri, tampilan yang disajikan masih terkesan terlalu 'ramai' karena jarak tulisan yang sangat sempit dan juga ukuran tulisan yang kecil. Solusi yang saya tawarkan adalah dengan menambahkan Card View (Ini ada di library Android untuk Material Design) sehingga terlihat dengan sangat jelas satu entri dengan entri yang lainnya. Selain itu Card View sendiri sudah menerapkan Material Design milik Google sehingga seharusnya list akan jauh lebih rapih dan memiliki batas yang cukup jelas.





   Kemudian untuk halaman yang ini adalah tampilan halaman utama dari aplikasi kami. Halaman ini sebenarnya sudah cukup baik. Akan tetapi, desain dari halaman ini masih menyalahi Material Design. Hal ini disebabkan Material Design memiliki konsep dimana setiap view yang ada diperlakukan seperti kertas. View baru akan selalu berada diatas View lama yang menjadi kontainernya. Dan batas antara view dan kontainernya seharusnya terlihat dengan jelas.
    Seperti misalnya kita melihat di bagian tab Sholat. di sublistnya, kita bisa melihat bahwa list terkesan sebagai satu kertas yang padu. Dimana harusnya ke-empat viewlist tersebut seharusnya terpisah satu dengan yang lainnya.
    Solusi yang saya tawarkan kembali ke CardView, dimana jika kita memakai CardView, maka batas antara sublist dengan sublist lainnya akan terlihat dengan jelas. Ukuran CardView juga dapat dirubah dan diatur sehingga ContainerView dari sublist-sublist tersebut dapat terlihat.
   Untuk referensi, berikut adalah contoh tampilan menggunakan CardView :

     Jika kita lihat baik-baik, maka akan terlihat jelas batas dari masing-masing entri data. Keunggulan dari CardView itu sendiri juga adalah untuk mempermudah formatiing dari tampilan yang diinginkan. Seperti misalnya tampilan diatas. Kita dapat mengatur dibagian manakah foto ingin ditampilkan, nama ingin ditaruh, dan sebagainya. Sehingga, selain rapih dan indah, tampilan yang dihasilkan juga konsisten.
    Segitu dulu dari saya. Semoga informasi yang saya tuturkan minggu ini bermanfaat untuk teman-teman semua. Sampai ketemu minggu depan!

Minggu, 01 Mei 2016

Weekly Report 5/2/2016 - M Farhan Dzikri

Yang minggu ini saya lakukan adalah fokus ke klaim mandatory.
Pertama-tama saya mencoba memahami apa yang dimaksud dari Description ans Subcompetences di drive nilai.
Untuk memahaminya saya mencoba browsing dan (mendownload) dan membaca kembali buku RPL Software Engineering Practitioner’s Approach edisi ke 7 oleh Roger S Pressman
Beberapa hal yang saya pelajari adalah





Kemudian saya juga bertanya kepada asdos untuk lebih memahami Description and Subcompetences. Namun jawaban dari asdos kurang memuaskan, nampaknya asdos juga kurang paham mengenai hal ini. Asdos bahkan juga bertanya kepada mahasiswa lain untuk mengetahui arti dari yang dimaksud. Akhirnya yang saya dapatkan hanya begini:
Akhirnya saya juga bertanya kepada mentor Pak Yuono untuk memahami lebih lanjut. Pak Yuono dengan singkat menjelaskan beberapa maksud dari hal tersebut. Menurut Pak Youno beberapa dari kompetensi mandatory tersebut tidak cocok untuk di apply ke project kami. Hal tersebut saya tandai di gambar di bawah ini dengan warna hitam



Kemudian saya mengajak teman2 untuk mengerjakan klaim mandatory yang mudah terlebih dahulu. Entah kenapa kelompok saya terlihat kurang semangat dalam hal ini, sehingga saya yang harus mendorong mereka semua untuk datang, berkumpul dan mengerjakan Software/Product Requirement and Visibility.



Hasilnya adalah Product Proposal, Requirement Elicitation Analysis and Spesification, dan sebagainya.

Selain itu saya juga melakukan coding dan mempelajari local storage (diajarkan oleh lutfi dan aril). Saya mencoba menarik data dari local storage berupa array of string yang berisi nama2 kategori amalan. Sebelumnya isinya adalah default kategori amalan saja, jika kategori ditambah atau dihapus, maka isinya tidak berubah. Namun stelah saya coding saya berhasil menarik data tersebut.






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 !