Code Monkey home page Code Monkey logo

tutorial-1's Introduction

Tutorial 1

Refleksi 1

Pada tutorial kali ini, saya telah menerapkan beberapa prinsip clean code. Saya selalu berusaha untuk memberi nama-nama variabel yang singkat, tetapi jelas dalam kode saya. Selain itu, saya juga secara aktif berusaha untuk menulis fungsi-fungsi yang kecil dan hanya melakukan satu hal saja, yaitu sesuai dengan nama fungsinya. Namun, saya merasa kode saya masih kurang dalam aspek keamanan. Yang menurut saya paling menonjol, kode saya belum mengimplementasikan sistem autentikasi dan otorisasi. Hal itu mengakibatkan semua orang dapat mengubah dan menghapus produk milik siapa pun. Selain itu, pada saat ini, saya masih mengoper ID produk yang ingin di-edit melalui parameter URL. Konsekuensi hal tersebut adalah seseorang dapat mengirim request untuk meng-edit barang tanpa harus melalui website saya, seperti dengan menggunakan aplikasi Postman. Selain itu, saya masih belum mengimplementasikan kode untuk mencegah serangan CSRF sehingga itu dapat menjadi sebuah vulnerability juga.

Refleksi 2

  1. Setelah menulis unit test dan functional test, saya semakin yakin dengan kebenaran program saya. Dengan adanya tes-tes yang otomatis ini, saya dapat memeriksa kebenaran program saya dengan mudah setiap kali saya membuat perubahan. Saya tidak perlu khawatir lagi apakah saya ada yang terlewat seperti ketika saya mengetes program saya secara manual. Menurut saya, kita sebaiknya menulis setidaknya satu test untuk tiap method yang ada di dalam kelas yang ingin kita test. Kemudian, mengenai 100% code coverage, menurut saya hal tersebut tidak menandakan program yang bebas dari bug dan error. Code coverage adalah sebuah metric yang mengukur berapa persen source code dari program kita yang dieksekusi saat menjankan suatu test suite. Namun, test suite tersebut tetap harus dibuat oleh kita sehingga masih ada kemungkinan human error, seperti tidak memikirkan suatu edge case saat menulis tes-tesnya.
  2. Menurut saya, kebersihan kode tersebut akan menurun apabila dilakukan hal seperti itu. Saya mengakatan demikian karena salah satu prinsip penting clean code adalah DRY atau don't repeat yourself. Kedua test suite tersebut pasti akan banyak memiliki kode yang sama karena prosedur yang dilakukan keduanya sangat mirip. Dengan adanya kode yang mirip pada dua tempat berbeda, kita akan lebih susah membuat perubahan pada kode karena sekarang kita harus mengubahnya pada dua tempat. Hal tersebut dapat meningkatkan risiko lupa dan tidak teliti. Karena dua test suite ini masih berkaitan dengan pembuatan produk, menurut saya tidak apa-apa jika digabungkan menjadi satu test suite saja. Dengan digabungkannya menjadi satu, kita dapat membuat satu fungsi seperti fungsi setup() yang akan pergi ke halaman Create Product dan membuat beberapa produk baru. Setelah itu, baru kita dapat membuat fungsi-fungsi lain untuk mengecek kebenaran produk-produk yang dibuat oleh fungsi setup() tadi, seperti mengecek jumlah produk yang telah dibuat, mengecek namanya, dan sebagainya.

Tutorial 2

Refleksi

  1. Isu-isu yang saya perbaiki pada latihan ini adalah

    • Menambahkan elemen <caption> ke dalam tabel HTML untuk memperbaiki isu tabel HTML yang tidak memiliki deskripsi
    • Menggunakan bantuan https://app.stepsecurity.io yang direkomendasikan GitHub untuk memperbaiki isu-isu keamanan pada file .yml, seperti isu token permissions.
    • Mengubah field injection menjadi constructor injection pada kelas controller dan service
    • Menghilangkan modifier public pada semua kelas test \

    Strategi yang saya gunakan untuk mengatasi masalah ini adalah melihat rekomendasi yang diberi GitHub dan SonarCloud. Kemudian, saya pahami mengapa hal itu direkomendasikan dan baru saya imlpementasikan pada kode saya.

  2. Menurut saya iya, implementasi saya sudah memenuhi definisi CI/CD. Continuous integration merujuk pada praktek pengembangan software di mana tiap perubahan yang dilakukan developer dites dan diintegrasikan ke dalam codebase secara otomatis oleh sebuah build script. Continuous deployment merujuk pada praktek pengembangan software yang men-deploy kode baru ke lingkungan production secara otomatis tiap kali ada perubahan. Pada codebase saya, kedua hal itu sudah terpenuhi. CI dipenuhi dengan GitHub Actions yang menjalankan test secara otomatis tiap kali kode baru di-push. Selain itu, SonarCloud juga akan melakukan static code analysis pade codebase untuk mendeteksi isu-isu, seperti bug dan code smell. CD dipenuhi deployment otomatis ke Koyeb setiap kali ada perubahan kode di branch main. Deployment otomatis ini sudah datang dari Koyeb-nya sendiri sehingga tidak perlu membuat GitHub Workflow baru.

tutorial-1's People

Contributors

bimantorow avatar step-security-bot avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.