이번주에 배운 내용의 핵심들을 간략하게 정리하고
리마인드할 수 있도록 기록한다.
스프링 시큐리티를 사용하여 회원가입/로그인/로그아웃/페이지 권한설정을 해봤다.
config 파일 설정법을 익혔다.
filterChain 메서드를 통해 form login과 logout 그리고 login 실패시 페이지 이동 url을 설정해줬다.
http.authorizeRequests() 메서드에서 mvc.matchers를 사용하여 url 별로 요청 권한을 설정하였다.
Stored Function과 Stored Procedure를 개념과 문법을 익히고, 현업에서 언제 사용되는지, 또 어떤 문제점이 있어서 사용되지 않는지 알게되었다.
강의는 쉬운 코드 데이터베이스 강좌에서 들을 수 있었다.
(백엔드 개발자에게 아주 좋은 유튜버시니 꼭 강의를 들어보면 좋을 것 같습니다.)
이번에 다니고 있는 부트캠프에서 팀프로젝트로 과제를 내주었다.
그래서 팀원들과 상의하여 간단한 영화추천사이트를 만들었다.
아래는 영화추천사이트를 만든 코드를 볼 수 있는 github 링크이다.
https://github.com/ksungsu/A5/tree/master
가장 어려웠던 부분은 팀간의 커뮤니케이션이었다.
아무래도 온라인으로 진행되다 보니 원활한 커뮤니케이션이 어려웠던 것 같다.
다음기회에는 팀 단위로 프로젝트를 최대한 진행해보고 싶다.
현실은 개인이 아닌 팀 단위로 움직이기 때문에 협업해보는 경험이 정말 중요하다고 생각한다.
부트캠프를 지원해서 다니는 것도 팀프로젝트를 경험해보기 위함이었기 때문에 원활한 커뮤니케이션을 경험해보려고 노력해야겠다.
그리고, 프로젝트를 진행하면서 DB에서 가져온 데이터를
내가 짠 html 형식으로 화면에 뿌려주려고 했는데,
json 형식으로 화면에 뿌려지는 문제가 발생했다.
저녁을 외식으로 가서 먹었는데 외식을 가면서도, 밥을 먹으면서도
왜 그런 문제가 발생하는지 고민해봤다.
너무 궁금해서 당장 노트북을 켜고 문제를 해결해보고 싶다는 생각이 들었다.
결국 밥먹고 오자마자 문제를 해결했는데, 이유는 서버측에서 html을 rendering 해주지 않아서 발생한 문제였다.
또한, 상세 페이지를 구현하기 위해 mongoDB에서 id를 가져오는데, id 값을 프론트에서 인식하지 못하는 문제가 발생했었다.
평소에 10시면 잠자는데 이 날은 문제 해결이 잡힐 듯 말듯해서 11시까지 고민하다가 결국 문제가 뭔지 찾아내고 해결했다.
문제는 MongoDB에서 id 값을 Object로 넘겨준다는 것이었다.
그래서 프론트로 넘겨줄 때 str로 데이터형을 변환해준 다음 넘겨줬어야했다.
trigger, transaction, ACID를 배웠다.
trigger를 사용했을 때 문제가 발생한 지점을 파악하기 어려워 유지보수가 어렵다는 사실을 배웠다.
traisaction의 개념과 사용되는 예시에 대해 배웠다.
데이터베이스 ACID 각각의 개념에 대해 배웠다.
News entity에서 setter를 사용하지 않고 글 수정하기 기능을 구현하려 했는데 애초에 setter를 사용하지 않을 필요가 없었다.
setter를 가급적이면 사용하지 않아야한다는 사실만 기억하고 있었지, 명확한 이유는 알지 못하고 있었다.
알고보니 어디서 필드 값이 set됐는지 추적하기 어렵다는 이유 때문에 setter를 가급적이면 사용하지 않아야 했던 것이다.
그래서 set된 시점을 추적하기 쉽게 메서드 형식으로 set 해주도록 코드를 구현하였다.
하루 2시간 이상씩 4일에 걸쳐 피자배달거리 문제를 풀 수 있었다.
조합 + DFS가 들어간 문제였는데, 문제를 이해하는 것부터가 어려웠다.
그래도, 강의를 보지 않고 실오라기 같은 해결 가능성을 믿고 포기하지 않고 계속 풀어낸 내 자신이 대견하다!
스케줄, Serialization, recoverable, Isolation 등을 배웠다. 각 개념을 조금 상세하게 배웠는데, 스케줄 방식이 너무 다양해서 Serialization, recoverable 개념을 다시 한번 복습하고 나만의 세계관으로 정리해야할 것 같다.
준영속 상태에 대해 이해하고,
변경 감지와 병합의 차이를 배웠다.
병합을 사용할 때 주의해야할 점을 배웠고
가급적이면 변경 감지를 사용해야한다는 점을 배웠다.
JPA 의존관계 주인과, 일대다에서 외래키가 다(n)에 위치해야하는 이유를 명확하게 이해하고
카테고리와 뉴스를 다대다로 두고 의존관계 설정을 했다.
중간 매핑 테이블 NewsCategory를 생성했다.
인내심 있게 달려온 나 자신에게 칭찬하고 싶다.
갑작스럽게 열심히 달리기 시작하면서 포기하고 싶었던 순간이 많았다.
내 안에 있는 요정(?)들의 온갖 부정적인 얘기와
온갖 유혹들을 견뎌내고 열심히 달리고 있는 내 자신이 대견하다!
처음에는 많이 힘들었는데 이제는 적응되었는지 그리 힘들지는 않다.
게임도 접고, 유튜브도 접으면서 거의 대부분의 시간을 개발 공부에 몰두하고 있는데
스스로의 부족함을 항상 느끼게되는 것 같다.
앞으로 가야할 길이 너무 많고 부담이되기도 하지만,
포기하지 않고 실오라기 끈이더라도 놓치 않고 계속 나아가고 싶다.