전체 글 45

6주차 미니프로젝트 회고

기간 : 02/11 (금) ~ 02/17 (목) 이번 주차 주제 : 협업 & 하나의 프로젝트 구현 개인 목표 : FrontEnd와의 커뮤니케이션, API, DB 명세서 구체화 자신이 쓴 코드에 이유가 있는 것, 왜 이렇게 접근할 생각을 했는지, 이 방식을 선택한 근거가 있는지, 더 나은 방법을 위해 무엇을 찾아봤는지? 생각하며 코드를 구현하기 이번주 내가 배운 것 백앤드 API를 만들고 프론트와 연결하는 방법 CORS 설정 JWT를 이용한 로그인 구현 Swagger 설정 프로젝트에서 DB 모델링 및 연관관계 적용하기 배운점 처음으로 프론트엔드와 협업을 진행했다. 혼자서 구현하는 것보다 더 구체적으로 API와 요청, 응답 메시지를 설정해야할 필요성을 느꼈다. 또한 API를 설계할 때 프론트와 같이 모여서 ..

5주차 주특기 심화 회고

기간 : 02/04 (금) ~ 02/10 (목) 이번 주차 주제 : API 개발 & 주어진 테스트 코드를 통해 요구사항 해결 개인 목표 : 개인과제 매운맛까지 완료하기 이번주 내가 배운 것 백앤드 지금까지 배운 것들을 종합하여 요구 사항에 맞게 로직을 구현 음식점 API구현 주문 API를 구현하면서 조금이나마 주문 프로세스에 대해 알게 됐다. 개인 공부로 SpringWebFlux를 공부 WebFlux를 통한 채팅서버 클론코딩 배운점 과제로 제시된 요구사항을 하나씩 해결해가며 API 로직 구현 방법에 더욱 익숙해질 수 있었다. UI 없이 온전히 백앤드 서버 API 구축하는 방법을 익힐 수 있었다. Spring의 3계층을 역할 별로 구분해서 구현하는 데 더 익숙해졌고, service 단에서 복잡한 비즈니스 ..

4주차 주특기 숙련 회고

기간 : 01/28 (금) ~ 02/03 (목) 이번 주차 주제 : 주특기에 익숙해지고 조금 더 생각하며 로직 짜기 개인 목표 : 프로젝트에 시큐리티 적용, JPA 연관관계 적용, CRUD 연습 이번주 내가 배운 것 백앤드 스프링 시큐리티 세션방식으로 로그인 적용, 시큐리티 필터 사용해서 커스텀 하기 OAuth2로 구글, 카카오 연동 JPA의 연관관계, 영속성 컨택스트 적용하고 익숙해지기 RESTful API 작성해보기 게시글 페이징 처리 적용 validation 사용 공통 예외 처리 → 공통 ErrorResponse 만들기 배운점 과제 시작 전 API를 혼자 짜보았다. REST API를 짜고 싶었는데 작성 후 매니저님한테 피드백 받으면서 수정했다. API를 먼저 설계하고 개발에 들어가니까 편했다. 이번..

3주차 주특기 기초 회고

기간 : 01/21 (금) ~ 01/27 (목) 이번 주차 주제 : 메타인지 [무엇을 알고 무엇을 모르는지 아는 것] 개인 목표 : CRUD, 시큐리티로 OAuth2, JWT 적용해보기 이번주 내가 배운 것 백앤드 스프링 시큐리티, 적용 (세션 방식, JWT 방식) JPA의 연관관계, 영속성 컨택스트 서비스단의 필요성과 트랜잭션 DB 격리수준 스프링부트의 트랜잭션 흐름 페이징 처리 WEB HTTP 요청방식 MIME 타입 XSS, CSRF 배운점 스프링부트를 이용해서 간단한 게시판 CRUD를 만들었다. 인풋은 많은데 API를 만드는 것부터 로직을 짜는 것까지 정형화가 안 되어있다보니 아웃풋을 어떤 것을 선택하고 작성해야할지 헷갈렸었다. 하지만 그냥 내가 원하는대로 짜면 되는 것 같다. CRUD를 작성하는..

2주차 프로젝트 회고

기간 : 01/14 (금) ~ 01/20 (목) 이번 주차의 주제: 알고리즘 문제를 해결하는 경험을 많이 해보는 것, 자바 문법에 익숙해지기 목표 : 컴퓨팅적 사고, 언어 기초 다지기 배운점 기본적인 알고리즘 문제를 통해 자바 언어의 사용법을 익혔다. 달리기반을 선택해서 조원들과 함께 40문제를 풀었다. 처음엔 풀만했지만 단계가 올라갈수록 문제에 접근하는 방법이 생각나지 않아서 힘들때가 많았다. 그래도 꾸준히 풀다보니 비슷한 문제들은 어떻게 접근해야하고 어떤 자료구조를 사용하면 좋을지 감이 잡혀갔다. 시간복잡도와 공간복잡도에 대해서는 좀 더 공부해야겠다. 문제를 푸는 것에 그치는 것이 아니라 담당 문제를 정해 조원들에게 풀이 방식을 발표하는 시간을 가졌다. 내가 어떻게 접근했고 문제를 풀었는지 남한테 설..

[WEB] JWT 정리

JWT란 💡 JSON Web Token의 줄임말로, JSON 객체를 사용해 정보를 안정성 있게 전달하는 웹표준 예를 들어, 로그인 기능을 생각해보면 사용자가 로그인하면 서버에서 회원임을 인증하는 토큰을 넘겨줌으로써 이후 회원만 접근할 수 있는 서비스 영역에서 신분을 확인하는 데 쓰일 수 있습니다. 웹에서 인증이 필요한 이유 인증은 프론트엔드 관점에서 봤을 때 사용자의 로그인, 회원가입과 같이 사용자의 도입부분을 가리키곤 합니다. 반면 서버사이드 관점에서 봤을 때는 모든 API 요청에 대해 사용자를 확인하는 작업입니다. 사용자 A와 사용자 B가 앱을 사용한다고 가정하겠습니다. 두 사용자는 기본적으로 정보가 다르고 보유하고 있는 컨텐츠도 다릅니다. 따라서 서버에서는 A,B가 요청을 보냈을 때 누구의 요청인지..

WEB 2022.01.21

1주차 프로젝트 회고

기간 : 01/10 (월) ~ 01/13 (목) 이번 주차의 주제: 적응, 배운 기능 적용, 함께 일하고 싶은 사람되기 배운점 몰입의 중요성.. 항해 시스템에 적응하자 100시간을 하며 임계점을 넘어보자 팀으로 프로젝트를 진행하면서 협업의 중요성에 대해 알게 되었다. 협업툴로 깃헙을 사용했는데 병합하는 과정에서 충돌이 많았고 메인브랜치의 부재, 깃헙 로그인 문제 등에서 시간을 뺏겼다. 충돌을 해결하는 과정은 조금 익숙해진 것 같다. 깃헙의 협업 플로우에 대해 조금 경험할 수 있었다. 서버는 Flask로 사용, 템플릿 엔진으로 Jinja2를 사용하면서 서버사이드렌더링에 대해 더 알게 되었다. SSR과 CSR의 차이점, 장단점을 정리해야겠다. 프로젝트를 진행할 때 앞단의 중요성, API 설계, DB 모델링,..

[Spring] 예외처리(Exception Handling) 정리

@ExceptionHandler와 @ControllerAdvice 예외처리를 위한 메서드를 작성하고 @ExceptionHandler를 붙인다. 전역 예외 처리 클래스를 작성할 때는 @ControllerAdvice를 붙인다. (패키지 지정 가능) -> 모든 컨트롤러에서 예외처리 적용 클래스 내에서 예외처리 @Controller public class ExceptionController { @ExceptionHandler(Exception.class) public String cather(Exception e) { return "error"; } @ExceptionHandler(NullPointerException.class) public String cather2(Exception e) { return "..

[Spring] 쿠키(Cookie)와 세션(Session)에 대해 알아보자

HTTP 프로토콜의 특징 HTTP의 특성을 알아보고 쿠키와 세션이 필요한 이유에 대해 알아보자 1. 무상태 프로토콜(Stateless) 통신이 끝나면 상태를 유지하지 않는 특징 클라이언트의 요청과 그에 따른 서버의 응답이 끝나면 통신이 끝나며 해당 상태 정보는 유지되지 않는다. 2. 비 연결성(Connectionless) 클라이언트가 요청을 한 후 응답을 받으면 그 연결을 끊어 버리는 특징 비 연결성을 가지는 HTTP에서는 실제로 요청을 주고 받을 때만 연결을 유지하고 응답을 주고나면 TCP/IP 연결을 끊는다. 이를 통해 최소한의 자원으로 서버 유지를 가능하게 한다. 쿠키와 세션은 위의 두 가지 특징을 해결하기 위해 사용한다. 쿠키(Cookie)란? 클라이언트를 식별할 때 사용. 클라이언트(브라우저) ..

[Spring] Redirect와 Forward에 대해 알아보자

JSP에서 Redirect와 Forard 처리 과정 Redirect - 위와 같이 Redirect는 요청이 2번이며, 각 요청은 서로 다른 객체(request)이다. - 첫 번째 요청을 GET으로 하던 POST로 하던 Redirect로 인해서 두 번째 요청을 보낼 때는 자동으로 GET으로 요청을 보낸다. 예시 1. 클라이언트가 /doc으로 요청을 보낸다. ( 1번째 요청: 수동 ) 2. 서버에서 응답 헤더를 통해 300번(Redirect)대의 상태코드와 메시지를 응답한다. (300번대는 Body정보가 없다.) 3. 클라이언트는 응답메시지를 보고 자동으로 다른 URL (/doc_new) 로 재요청을 한다. ( 2번째 요청: 자동 GET으로 ) 4. 서버는 요청에 대한 응답메시지를 클라이언트에 보낸다. 실생..