-
메가테라 웹 개발자 과정 8주차 (2) 주간 회고주간 회고 2022. 8. 14. 23:58
주차 이름에 '(2)'를 붙이는 주차의 마지막 주가 끝났다. (다시 주차 이름에 '(2)'를 붙일 일은 없었으면 좋겠다. 그러려면 오늘도 죽고 내일도 죽는다는 마인드로... ^^)
넘을 수 있을까? 싶었던 고비를 넘으며
이번 주차는 상향곡선과 하향곡선을 몇 번 왔다갔다 했다. 지난 주차에 Java를 이용해 웹 서버를 개설해 만들었던 마카오뱅크를 이번 주에도 만드는 것은 같았지만 만드는 방식이 Spring 프레임워크를 이용하는 것으로 달랐다. 같은 앱을 만드는 것이었지만 Spring 프레임워크가 Java 웹 서버에서 수행해줘야 하는 특정한 작업들을 다소 간단하게 처리해주기도 했고, 이미 알고 있는 Repository나 Service 같은 내용들은 설명이 간소화되었기 때문에 강의의 러닝타임이 비교적 길지 않았다.
안심하고 강의를 보고 있었는데 어느 순간부터 코딩쇼가 펼쳐지기 시작하면서 첫 어려움이 찾아왔다. 과정들을 거쳐오면서 전에 모르던 새로운 내용을 봤을때 느꼈던 어려움은 이미 충분히 겪었기 때문에 월~수요일 동안 반복과제를 착실히 수행하면서 첫 고비는 어렵지 않게 극복할 수 있었다.
두 번째 고비는 수요일에 찾아왔다. 퀘스트 과제로 주어졌던 마카오 레터의 요구사항에 중간에 추가된 내용이 있었는데, Repository에 저장되어 있는 게시물의 제목을 페이지별로 5개씩만 리스트업해서 출력되도록 하는 요구사항이었다. 지금까지는 HTTP 요청 헤더를 웹에 전달하는 데 <form> 요소에 메서드를 지정한 뒤, 요소 내부에 submit type인 버튼을 클릭해 웹 서버에 전달되도록 하는 방식만을 쓰고 있었기에 요청이 어떻게 전달되도록 해야 할지 막막하게만 느껴졌다. 그뿐만이 아니라 게시물 컬렉션에서 어떻게 필요한 부분만 꺼내오게 할 것인지, 그 필요한 부분은 어떻게 구분시켜줘야 할지도 어렵게 느껴졌다.
일단 문제가 너무 커 보였기에 해결할 수 있는 문제의 부분을 조금 나눴다. 수요일 밤에는 일단 게시글 수에 맞춰서 페이지 넘버링이 뜨게만 해 보는 것을 시도했다. 링크에 어떤 내용을 줄지는 일단 나중에 생각하기로 하고 가져온 게시글 리스트의 크기를 이용해 넘버링의 개수를 조건에 따라 생성하도록 했다.
그리고 목요일, 3시간여 동안 뭘 어떻게 해야 링크를 누르는 것만으로도 요청이 가게 할 수 있는 걸까를 고민했다. 링크에 요청 양식을 직접 때려넣어야 하나? 뭔가 다른 더 깔끔한 방법은 없을까?를 머리로 고민했지만 결과가 나온 것은 없었다.
그 이상 고민을 해도 더 나은 방법이 떠오를 것 같지는 않다는 생각이 들었고, 일단 링크에라도 한번 퀘스트 과제 예시처럼 값을 넣어봐야겠다고 결정을 내리고 구현을 시도했다. Controller에서 해당 주소로 GetMapping되는 메서드에 다른 요청 파라미터를 받듯이 전달되는 페이지 값의 파라미터를 추가하고, 링크에는 과제 예시와 같은 양식으로 값을 때려넣었다. 그리고 View로부터 Repository까지 연결되는 구조를 세우고 난 뒤 실행을 시켜 보니... 정상적으로 선택한 페이지의 번호 값이 전달되면서 번호 값을 기준으로 그에 맞는 게시물들을 Service를 이용해 가지고 나오는 것을 확인할 수 있었다.
꽤나 크게 느껴졌던 문제를 생각보다 술술 풀어나가면서 얻었던 인사이트는 다음과 같다.
- 문제가 너무 크다고 느껴지면, 해결할 수 있는 부분부분으로 문제를 나눠서 접근해 보자.
- 이렇게 해 봐도 되나? 되려나? 안 되지 않을까? 싶으면 일단 한 번 때려박아 보자. 때려박고 나서 되는지 안 되는지 눈으로 직접 확인해 보자.
'주간 회고' 카테고리의 다른 글
메가테라 웹 개발자 과정 10주차 주간 회고 (0) 2022.08.28 메가테라 웹 개발자 과정 9주차 주간 회고 (0) 2022.08.21 메가테라 웹 개발자 과정 7주차 (2) 주간 회고 (0) 2022.08.08 메가테라 웹 개발자 과정 6주차 (2) 주간 회고 (0) 2022.07.31 메가테라 웹 개발자 과정 5주차 (2) 주간 회고 (0) 2022.07.22 - 문제가 너무 크다고 느껴지면, 해결할 수 있는 부분부분으로 문제를 나눠서 접근해 보자.