Today I Learned
-
중첩된 DTO을 Validation할 때는 DTO 필드에 @Valid 어노테이션을 붙이기Today I Learned 2022. 12. 14. 01:51
게시글을 올리는 Controller의 구조를 리팩터링하고 있었다. 기존의 게시글 작성 API 요청에 대응하는 PostController에서 기존에 받고 있던 요청 DTO는 다음와 같이 하나의 DTO 객체에 모든 입력 필드 값이 있는 형태로 구성되어 있었다. // dtos/PostAndGameRequestDto.java import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; public class PostAndGameRequestDto { @NotBlank(message = "운동을 입력해주세요.") private String gameExercise; @NotBlank(message = "운동 날짜를..
-
한 번의 끝맺음을 준비하기Today I Learned 2022. 12. 11. 16:01
어제 정리했었던 마지막으로 해야 할 일들조차도 남은 시간 대비 너무 많은 것을 하려 하고 있었던 것 같았다. 선정했던 네 가지 작업들은 모두 애플리케이션의 완성도를 위해 중요하고 결국에는 반드시 마무리지어야 하는 것들이지만, 당장 내일로 다가온 Demo Day에서 보여줘야 할 가치를 준비하기 위해서는 그 안에서도 좀 더 정확한 우선순위 선정을 해 그에 집중할 필요가 있다고 느껴졌다. 발표 데모 데이에서는 8주 동안 프로젝트를 진행하면서 구현한 애플리케이션 서비스를 소개하고, 시연하는 과정을 보인다. 즉, 발표이다. 발표를 진행하면서 남기는 이미지가 사람들이 기억할 나의 이미지를 형성하는 데 큰 영향을 줄 것이다. 발표를 경청하는 사람들에게 가짜 데이터를 보여주는 것으로는 가치를 전달하는 데 한계가 있다...
-
이틀 앞으로 다가온 마감, '완성'된 상태를 만들기 위해 가장 우선되어야 할 작업은 무엇인가?Today I Learned 2022. 12. 10. 23:57
어제 저녁부터 에이미 디자이너님으로부터 전달받은 디자인 기획서대로 화면을 구현하기 위한 컴포넌트 스타일링을 진행하고 있다. 앱 로고를 적용하고 배치를 디테일하게 잡으면서 기존의 최소한의 디자인만을 구현해놓았던 애플리케이션을 사용자가 완성된 형태로 보면서 사용할 수 있도록 전환하고 있다. 현재까지 구현한 화면들 중 게시글 목록 조회, 게시글 상세 내용 조회, 로그인/회원가입 화면의 디자인 작업을 진행했다. 게시글 목록의 글 하나를 선택하면 글의 상세 정보를 확인할 수 있다. 로그인이 필요한 기능을 수행하려 할 경우 로그인 화면으로 이동할 수 있다. 아직 남은 작업이 상당량 존재하기 때문에 남은 시간과 남은 작업들을 살펴보면서 작업의 우선순위를 생각해보았다. 프로젝트를 진행하면서 만든 애플리케이션의 발표일은..
-
리팩터링을 하면서 피부로 느낀 작은 컴포넌트의 필요성Today I Learned 2022. 12. 9. 23:59
오늘 진행했던 주요 작업 중의 하나로 값 객체로 임시로 사용하고 있던 장소(Place) 객체를 Entity로 승격시키고, 그 과정에서 발생하는 타입 불일치 에러를 잡으면서 장소 기능을 사용하고 있던 게시글 목록 조회, 게시글 상세 정보 목록 조회, 게시글 작성 기능이 이전과 같이 작동하게 하는 작업이 있었다. 지금까지는 장소 객체를 그냥 텍스트와 다를 바 없이 사용하고 있었지만, 관리자 페이지에서 등록된 장소를 조회하거나 추가, 삭제할 수 있는 기능을 추가하면서 장소가 가져야 할 내용이 세분화될 필요성이 생겨 리팩터링을 진행했다. 백엔드 리팩터링은 PlaceRepository를 추가해 장소 데이터를 가져와야 하는 Service 레이어에서 인스턴스를 꺼내오고, 시그니쳐가 바뀌면서 발생하는 에러는 이제는 적..
-
어떻게 해야 지치지 않을 수 있을까Today I Learned 2022. 12. 8. 22:54
오늘은 그냥 이야기하겠다. 오전 6시에 도장에 나와서 작업을 진행하려고 했다. 도장에 나오는 것까지는 꾸역꾸역 나왔지만, 쉬운 작업조차도 할 수 없을 정도로 컨디션이 좋지 않아 9시가 되도록 아무것도 못하고 동료분의 야전침대에 누워 있었다. 일과 시간이 되었지만 여전히 상태가 좋지 않았고 그대로 있다가는 하루를 완전히 망칠 것 같아 병원에 가 수액을 맞았다. 수액을 맞고 피로가 조금은 가셨는데도 병원에서 도장에 돌아오는 발걸음이 너무 무거웠다. 태산같이 쌓인 작업을 생각하면 후다닥 돌아오지 않을 수가 없었는데도. 천천히 도장에 돌아왔다. 지친 것 같았다. 앞일은 모른다고 하지만, 그래도 이쯤 되면 '이때쯤에는 이 정도가 되겠구나'가 어느정도 예상이 된다. 마감이 가까워질수록 점점 짙게 들기 시작한 그런 ..
-
컴포넌트가 무시하지 못할 정도로 크기가 커지고 있을 때, 한 번쯤은 의심해봐야 했다.Today I Learned 2022. 12. 7. 23:58
https://innu3368.tistory.com/201 간단한 알림 기능 구현하기 현재 앱에서는 사용자가 운동에 참가를 신청하거나, 작성자가 사용자의 운동 참가 신청을 수락하는 등의 행동을 했을 때, 각 사용자가 그런 동작이 일어난 사실을 알기 위해서는 게시글을 직접 innu3368.tistory.com 오늘은 사용자가 앱 내에서 발생한 이벤트를 쉽게 확인할 수 있는 알림 기능 구현을 이어서 진행했다. 하지만 알림 기능에 대한 설명을 하기보다는, 기능을 구현하는 중간에 동료분과 홀맨님이 나눴던 이야기를 바탕으로 느낀 점을 중점적으로 적어보고자 한다. 오늘 이전까지의 알림 기능 구현 진척도이다. - 특정 이벤트가 발생할 때 (운동 참가 신청, 참가 신청 수락 등) 대상자에게 알림이 전달된다. - 사용자..
-
코딩 시간을 늘리고, 만들어진 코드를 최대한 노출시켜 피드백을 받는다?Today I Learned 2022. 12. 6. 23:58
홀맨님과 오후 시간에 진행한 타운 홀 미팅에서 WakaTime에 기록된 모두의 코딩 시간을 공유하며 이야기를 나누는 시간이 있었다. 자리에서 확인한 내 주간 평균 코딩 시간은 현업 개발자 아샬님이 업무와는 별도로 개인적으로 진행하시는 코딩 시간보다는 많았지만, 수련을 하는 입장에서 이 정도는 해야 충분히 한 것이라고 하기에는 다소 부족한 수치였다. 미팅에서 코딩 시간에 대해 들은 이야기를 내가 이해한 바는, 우리처럼 수련을 하는 입장에서는 실력의 상승이 코딩에 투입하는 시간과 비례하기 때문에 에디터에 코드를 입력하는 절대적인 코딩 시간을 늘려야 한다는 것이었다. 절대적인 코드를 쳐야 한다는 부분에 동의하지만, 지금처럼 매 주 목표를 잡고 구체적인 결과를 내야 하는 프로젝트에서는 코딩에 투입하는 시간만큼 ..
-
어드민 페이지를 구상해야 하는 이유Today I Learned 2022. 12. 5. 22:27
프로젝트를 진행하면서 어드민 기능을 추가하는 것을 별도로 계획하고 있지 않았다. 사용자 상호 관점에서 복잡도를 높이는 것을 프로젝트의 목표로 가져가고자 했고, 각 사용자가 올린 게시글에 다른 사용자의 신청 상태를 관리한다는 방식이 서로에게 관리자 역할을 수행하는 것이라고도 볼 수 있지 않나 생각했기 때문이었다. 그러나 오후에 노아 스프린트 매니저님께서 남은 1주일 동안 작게나마 관리자 페이지를 기획하고 구현해보는 경험을 가져보는 것이 좋겠다는 조언을 주셨다. 핵심 기능을 제외한 다른 기능들을 상당부분 구현하지 못한 상황에서, 관리자 기능을 기획하고 구현할 수 있는게 있을까 싶었다. 하지만 조금 생각을 달리해보니 관리자 페이지 구현을 병행하면서 현재 기능이 생각보다 폭넓게 확장되는 데 기폭제가 되어줄 수 ..