내일배움캠프/TIL 55

[Spring_4기 본캠프] Spring 심화 - 아웃소싱 프로젝트 | Day 57

더보기[목차]1. 프로젝트 발제- 요구사항 가이드2. 프로젝트 설계- 컨벤션 정하기- 프로젝트 컨셉, 구조, 흐름 정하기3. 프로젝트 기록- 프로젝트 타임 라인 -> 트러블 슈팅 4. 최종 마무리 단계- 시사점 도출- 이번 프로젝트의 중점 잡기1월 6일부터 새로운 심화 팀 프로젝트가 발제되었다. 그래도 전까진 프로젝트 진행을 하면서 개인적인 기록도 하고 TIL도 꾸준히 작성할 시간이 있었는데, 이번 프로젝트에는 팀장을 맡기도 했고, 내가 구현하게 된 사용자 인증/인가 부분에 대해 지식이 없는 상태로 기능을 구현해야 했던 터라 급하게 아무렇게나 모아놓았던 기록들을 정리해보고자 한다. 1. 데이터베이스와 ORM- 데이터베이스 스키마를 설계할 수 있다.- JPA를 이용해 데이터베이스와 연동할 수 있다.- JP..

[Spring_4기 본캠프] Spring 심화 - 쓰레드 | Day 56

1. Servlet : Java에서 Http 통신에 필요한 내용들을 편하게 받아 처리할 수 있게 하는 웹 애플리케이션 프로그래밍 기술▶ Http : 웹 개발에서 서버 간 데이터를 주고 받기 위한 프로토콜- Http는 요청(Request)과 응답(Response) 구조로 통신하는 것이 규칙이다.- POST, GET, PUT 등의 메서드로 동작 방식을 설명하는 규칙이 있다.▶ 프로토콜(Protocol) : 컴퓨터와 같은 기계들이 서로 데이터를 주고 받을 때 사용하는 약속/규칙▶ Servlet에서는 Http 규칙을 지키기 위해 다양한 객체를 지원한다. (HttpServletRequest/HttpServletResponse)▶ DispatchServlet : Spring MVC에서 개발해서 사용. Java에서 ..

[Spring_4기 본캠프] Spring 심화 - Java Exception | Day 55

1. Enum으로 전역예외처리하기@Getterpublic enum ErrorCode { // Basic INVALID_INPUT_VALUE(HttpStatus.BAD_REQUEST, "E1", "올바르지 않은 입력값입니다."), METHOD_NOT_ALLOWED(HttpStatus.METHOD_NOT_ALLOWED, "E2", "잘못된 HTTP 메서드를 호출했습니다."), INTERNAL_SERVER_ERROR(HttpStatus.INTERNAL_SERVER_ERROR, "E3", "서버에 에러가 발생했습니다."), NOT_FOUND(HttpStatus.NOT_FOUND, "E4", "존재하지 않는 엔티티입니다."), CONFLICT(HttpStatus.CONFLICT, ..

[Spring_4기 본캠프] Spring 심화 - 일정관리 앱 개선하기, 리팩토링 | Day 53

1. 필수 기능 가이드 ( 일정관리 앱 develop ver. 이용 ) 1) 유효성 검사 추가 : 입력 값에 대한 유효성 검사를 추가하여 정책에 맞는 데이터만 취합2) 예외 처리 강화 : 적절한 예외 처리 로직을 추가하여 오류 발생 시 사용자에게 명확한 피드백 제공3) 서비스의 도메인 로직을 엔티티에 위임하기  2. 도전 기능 가이드 ( 지급된 코드 이용 ) 1) 추가 기능 개선- 조건에 맞지 않는 경우 즉시 리턴하여, 불필요한 로직의 실행을 방지하고 성능을 향상시킨다. - 복잡한 if-else 구조에서 불필요한 블록을 없애고 코드를 간결하게 하기 2) 코드 클린업 - 불필요한 주석 제거하기- 코드 포맷팅 적용하기- 일관된 네이밍 컨벤션 적용하기 3) 중복 코드 제거- 프로그램 내에서 반볷적으로 사용되는..

[Spring_4기 본캠프] Spring 심화 - HttpMessageConverter | Day 52

HttpMessageConverter: Spring MVC 에서 요청과 응답의 데이터 형식을 변환하는 인터페이스Json Data를 Http Message Body에서 직접 읽거나 쓸 수 있다.HTTP 요청 본문을 객체로 변경하거나, 객체를 HTTP 응답 본문으로 변경할 수 있다.ByteArrayHttpMessageConverterbyte 배열 data를 처리MediaType : * / * (전체)반환 : octet-streamStringHttpMessageConverterString data를 처리MediaType : * / *반환 : text/plainMappingJackson2HttpMessageConverterJson Data를 처리한다.대상 : Object를 가장 많이 사용, HashmapMedi..

[Spring_4기 본캠프] 프로젝트 주간 - 프로젝트 발표와 피드백 정리 | Day 51

오늘 오후 2시부터 6시까지 장장 4시간의 발표회를 마치고 진이 모두 빠진 상태에서 겨우겨우 기억을 더듬어 다른 조의 발표에서 기억하면 좋을 피드백을 정리하고자 한다.새배개는 전에 이론 학습을 할 때 제대로 공부하진 않았지만 키워드로 내용을 대충이라도 파악하기 위해 만들어낸 코너인데, 그것을 발전 시켜서 이번엔 피드백에서 얻은 시사점과 나는 어떠했는지 평가해보고 다음에는 어떻게 해야할지에 대해 3단계로 나눠 간단히 한 줄 요약해보려고 한다. 시사점 1) 각 기술과 로직을 사용하게 된 이유에 대해서 생각해라.→ 나는 어땠는가? : 관례적으로 한다길래, 다른 사람들이 추천하는 방식이길래, 이것 외에는 다른 방법은 어려워서 등의 이유로 기술과 로직을 선택할 때 설득력있는 이유가 없었다.→ 어떻게 하겠는가? :..

[Spring_4기 본캠프] 프로젝트 주간 - KPT 회고 | Day 50

정말 찰나같았던 첫 번째 Spring 프로젝트 주간이 끝이났다. 시작할 때는 일주일이라는 시간이 굉장히 길다고 느꼈는데, 마감이 다가올수록 문제가 계속 발생해서 필수 기능을 구현해내는 것조차 빠듯했다. 힘들었지만 얻은 것은 많았던 이번 프로젝트에서 얻은 시사점을 정리하고, KPT 회고를 진행하려고 한다.  ◆ 시사점 의사소통의 중요성과 깃 허브의 올바른 사용법    팀 프로젝트를 진행하면서 가장 힘들었던 점은 git pull 로 다른 팀원이 진행한 것을 받았을 때 내 코드와 충돌이 일어나는 것이었다. 팀원과 나의 버전이 달라 git pull 을 할 때마다 충돌이 나고 충돌을 해결하는 과정 자체가 스트레스로 느껴질 정도였다..또한, 소통이 잘 되지 않아 주요 코드의 변경사항 이를테면 BaseEntity 의..

[Spring_4기 본캠프] 프로젝트 주간 - 트러블 슈팅 2 | Day 49

이제 글을 시작하자마자 트러블슈팅부터 써야하는 슬픔.. 그래도 오늘 활동으로 얻은 인사이트가 많아 다행이다.바로 트러블 슈팅을 시작해보자! 1. 에러명 : Unable to read JSON value   각자의 브랜치에서 작업하던 것을 레포지토리로 옮기기 위해 dev에서 다같이 버전을 맞추기로 했다. 역시나 수많은 충돌이 일어났는데, 그 중 merge가 잘못되었는지 잘 되던 팔로우하기 기능에서 에러가 났다. JSON value를 읽을 수 없다는 에러였다. 우리 조는 JWT Token 인증 방식을 채택해 프로젝트를 진행하고 있는데, 포스트맨에서 토큰을 전달해줄 때 뭔가 잘못되었다는 에러같았다. 팀원분께서 디버깅 돌리는 걸 보고 알려달라고 부탁드려 에러가 난 부분에 디버깅을 돌려봤다. sout으로 acce..

[Spring_4기 본캠프] 프로젝트 주간 - 트러블 슈팅 1 | Day 48

뉴스피드 만들기 팀 프로젝트를 시작한 후 팔로우 관계를 구현하는 역할을 맡게 되었다. 팔로우 관계라는 것 자체가 간단하게 생각하면 팔로우하는 사람과 팔로우를 받는 사람으로 나뉘지만 비즈니스 로직으로 이를 구현하려니 계속 개념이 헷갈려서 트러블 슈팅을 하면서 헷갈리는 개념을 글로 정리하고자 한다.  ◆ 트러블 슈팅 1. 에러명 Application Run Failed  기능을 구현하기 전에 빌드를 하기 위해 애플리케이션을 실행했는데 Access 가 Denied되었다는 에러가 뜨면서 빌드가 되질 않았다.MySQL WorkBench에서도 접속이 불가능하고, 비밀번호가 틀렸다는 오류창이 떴다. 하지만 나는 비밀번호를 바꾼 적이 없고 어제까지만 해도 잘 연결되던 MySQL이 갑자기 접속이 불가능하다고 해서 당황했..

[Spring_4기 본캠프] 프로젝트 주간 - 뉴스피드 만들기 (첫 번째) 요구사항 정리 | Day 47

1. 목적과 기능1) 데이터베이스와 ORM - 데이터베이스 스키마를 설계할 수 있다.- JPA를 이요해 데이터베이스와 연동할 수 있다.- JPA를 통해 CRUD 작업을 할 수 있다. 2) 인증- 사용자 인증과 인가의 기본 원리와 차이점을 이해하고 있다.- JWT를 이해하고 활용할 수 있다. 3) REST API- 기능에 알맞게 REST API 설계를 할 수 있다.- Spring Boot를 이용해 REST API를 구현할 수 있다. 4) 협업 및 버전 관리- Git을 사용해 소스 코드 버전 관리를 할 수 있다.- Git branch를 이용하여 브랜치 관리 - Pull Request와 코드 리뷰 과정에 대해 이해할 수 있다. [ 뉴스 피드 NewsFeed ]- 게시글 CRUD 기능   * 제한 사항 : 게시..