config>SecurityConfig에 다음 코드를 붙여놓는다. @Configuration @EnableSwagger2 public class SwaggerConfiguration { @Bean public Docket docket() { return new Docket(DocumentationType.SWAGGER_2) .useDefaultResponseMessages(false) .apiInfo(apiInfo()) .select() //모든 경로의 api를 사용한다. .apis(RequestHandlerSelectors.basePackage("com.example.umc3_teamproject")) .paths(PathSelectors.any()) .build() ; } private ApiInfo..
BackEnd
개요 일단 JWT에 대한 개념부터 알고가자! JWT는 JSON Web Token의 약자로, 로그인 인증 기능에서 사용하는 토큰을 만들 때 사용하는 기술이다. JWT를 구현하는 방법은 두 가지이다. 1. jwt-java 라이브러리를 사용하여 JWT를 생성하고 파싱하는 방법 2. spring security 라이브러리 이용하기 이번에 로그인 로직을 짤 때 일반 로그인은 1번으로, 소셜 로그인은 2번 로직으로 짜게 되어 JWT와 많이 친해질 수 있었다. 이번 글은 1번 방법에 대한 설명이다. 2번 방법(JWT+소셜로그인) 에 대한 설명은 이쪽에서 확인 가능하다. UMC 동아리에서 제공해준 템플릿 중 로그인 구현 방법 코드를 인용하였다. 아래 코드로 자세히 알아보자. service/JwtService.java ..
EC2를 배포하는 방법에는 여러가지가 존재한다. ec2+nginx와 ec2+docker 방식 중에 고민하다 후자를 선택했다. Docker란? Docker 사용방법 일단 도커란 무엇인가? 간단히 리눅스 컨테이너를 만들고, 사용할 수 있는 컨테이너화 기술 이걸 이미지?라고 통칭하는 것 같다. 도커 사용 방법 일단 docker 이미지 업로드로 먼저 시험해보자! 구글링 키워드 - docker 이미지 pull 실습 Docker Desktop을 깔아서 보면서 하면 좋다. 로그인할 때 github 이름으로 해야 함 주의 특히나 github 세미 이름..?? Youngseo-Jeon0313으로 하면 안되고 jeonyoungseo로 했어야 했다. 나중에 배포할 때에도 이름을 jeonyoungseo/umc3-server ..
SPRING의 가장 강력한 점은 IOC, DI에 있다. DI란, 스프링이 다른 프레임워크와 차별화되어 제공하는 의존 관계 주입 기능으로, 객체를 직접 생성하는 게 아니라 외부에서 생성한 후 주입 시켜주는 방식이다. @Bean 어노테이션과 연결지어 생각하는 것이 좋다. 우리는 @Bean을 만들어놓고 그 안에 방법2처럼 setter() 또는 생성자 등을 이용한다. 연결지어 Bean은 위 사진처럼 객체를 만들어서 활용하는 틀로 생각하면 좋다. Bean은 SingleTon으로 생성되는 것으로, Spring Framework에서 딱 한 개가 만들어진다. 그래서 우리는 이 틀 안에서 특성 값을 '특정' 해놓으면 안된다. 그런 방법보다 값을 생성자 또는 setter로 '할당'하자. IoC(제어의 역전)은, SPRIN..
ERD 및 API 설계 이제 서버를 실질적으로 구현해볼 시간이다! 일단 기능사항을 분석하여 ERD를 설계해야 한다. 우리 글에서 발견한 길 팀은 GUI를 보면서 필요한 기능사항을 분석하여 ERD로 표현하였다. 서로 놓치는 부분이 없게 하기 위해 회의로 즉각 진행하였다. 아래에 기억에 남는 내용들을 기록해보았다! delete 부분은 어떻게 처리할까요? 아예 DB 상에서 없애는 방법보다는 boolean 값으로 없앴다는 처리를 남기는 방법을 사용하기로 했다(soft delete) 다대다 관계의 것은 매핑테이블을 통해 1대 다 / 다대 1로 풀자. 즉 단방향으로만 관계를 표현하도록 노력하자. 이를 위해 매핑 테이블을 만들었다. id는 LONG으로, 티어(브론즈, 플래티넘 등)는 enum으로, 데이터 생성/수정시..
간단한 소개 아래 있는 내용을 구현하면 된다. 이 때 JAVA Convention, Commit Convention 등 지켜야 할 사항이 있다. 이번에 지켜보고 싶었던 사항들 1. 구현 전에 readme에 기능을 작성하고, 그에 맞춰서 commit해보기 2. 커밋 메시지를 자세히, 제대로 작성해보기 (읽어봤을 때 이해가 되도록) 3. 예외 사항(IllegalArgumentException) 또한 고려하며 기능목록을 작성하기 4. 주석처리 깔끔하게 해보기 5. refactoring 제대로 하여 반복되는 코드 없도록 하기 6. Test로 삼을 만한 더미 데이터 만들어보기 7. 일급콜렉션 적용시켜보기 위 내용으로 TDD 훈련해보기! TDD, 정의는 쉽고 체화는 참으로 어렵다. 정의는 쉽다. 테스트를 먼저 만들..
지원 내년엔 꼭 부트캠프를 해보고 싶은 마음이 있다. 다양한 사람들을 만나보고도 싶고, 구현해보고 싶은 서버 툴을 어떻게 짜야할지 감도 안 오는 수준에서 벗어나고 싶은 갈망이 컸다. 그래서 제일 먼저 모집하는 우테코를 지원해보기로 했고, 합격하지 않더라도 프리코스에서 많이 얻어갈 수 있다는 말에 솔깃해 지원하게 되었다. 10월 26일 (수) ~ 11월 22일(화)까지 4주간 일주일에 한 개씩 과제를 제출해야 하고, 제출했던 과제를 기반으로 12월 17일(토)에 코딩테스트 후 합격자를 발표한다. 1주차 과제 이번 우테코 1주차 과제에서 요구하는 것은 그리 어렵진 않았으나, 양이 조금 많다. 아무래도 양 때문에 시간을 갈아넣는 희생은 감수해야 하는 것 같다. 알고리즘 문제 7문제를 풀고, 이 문제들을 테스트..
학교 DB 수업 시간에 교수님께서 학교 시스템 DB 설계할 때 드는 돈이 100억이라고 말씀하셔서 매우 놀랐다. 학생과 수업 간 DB를 잠깐만 생각해봐도, 고려해야 할 사항도 많고 실수 없이 깔끔하게 짜야 하는 부분들이 많다. 암튼, 이번에 4, 5주차 UMC 과제가 ERD 설계 / Query문 / QuickDBD 이용 / MySQL 로 DB 설계 이라서, 배달의 민족 DB를 한번 설계해 보기로 했다. 1. DB 설계자 입장에 섰을 때 거쳐야 하는 과정 1. database에 저장되어야 할 정보가 무엇인지 생각한다. 2. 그렇게 해서 어떤 프로젝트가 돌아가게 하는지 고려한다. 3. 개념을 설계한다. --정형적이지 않은 요구사항을 정형화한다. (ex. 제약조건이 무엇인가? 20학번 학생이 들어야 하는 필수..
진짜 이번 2학년 여름방학이 아니면 운동을 배워볼 시간이 없을 것 같아서 큰 마음을 먹고 웨이트를 배웠었다. 피티쌤이 나랑 동갑에 나랑 MBTI 하나만 다른 ENFJ였고 그 분도 맨날 운동하셔서 같이 파트너 운동도 하고 진짜 재밌었다. 개꿀잼 암튼 그런 일이 있었다. 그래서 운동도 제대로 해보고 싶을 겸, 또 기록하고 저장해두는 걸 좋아하는 나를 떠올리며 내가 가지고 있는 기술 스택을 모아서 구현할 수 있는, 프로젝트 하나를 피그마로 구성해 보았었다. 대충 이렇다.. 그냥 진짜 내가 쓰고 싶어서 만들어본 거라 내 주관이 잔뜩 있는 데다가 왕 허접하다.. 그래서 저 중에 아주 일부분을 구현해보았다! 그냥 간단한 CRUD이다. 일기는 실시간 전송으로 현재 날짜와 내용이 전송된다. import axios fr..
평소 backend가 잘 구현되었는지 확인할 때, frontend에서 axios / fetch 등으로 데이터를 보내고 front에서 만들어진 데이터를 DB에서 직접 확인해보는 단계를 밟아왔다. 하지만 backend만 맡아서 개발하려고 할 시에는 그런 단계를 밟을 수가 없다. 그래서 postman이나 node js로 데이터를 만들어 검사해보는 과정이 필요하다. 그럼 데이터를 많이 만드는 데 공을 들이느라 시간 낭비 아닐까?? 라는 생각이 들 수 있다. 데이터양에 부담 가질 필요는 없다. 요청이 한 개라면 데이터는 사실 한, 두개? 만 만들어보면 되고, 요청이 여러 개라면(여러 사용자의 댓글이라거나, 댓글에 댓글이 또 달리게 되는 대댓글 등) 데이터는 그래도 세, 네 개 정도만 만들어 테스트해보면 된다. 1..