Tag: 우아한테크코스

AWS의 Blue-Green 배포 구현 방법 알아보기

문제 배경우아한테크코스에서 프로젝트를 진행할 때는 우아한테크코스에 AWS 계정을 제공해줘서 EC2를 비용 걱정없이 갯수 상관없이 사용할 수 있었다. 하지만 우아한테크코스를 수료하고 나서는 AWS 계정 제공이 되지 않아서 팀원들이 자체 AWS 계정을 만들어서 인프라를 구축해야 했다. 이때 AWS에서는 프리티어로 RDS 인스턴스 한 개와 EC2 인스턴스 한 개

Java11의 HttpClient로 서버에서 다른 API로 요청 보내기

도입 배경Github Oauth를 통해 인증인가를 구현하던 과정에서 깃허브에서 발급된 코드를 통해 Github API에 Github Access Token을 발급 요청을 보내야했다. 그리고 발급된 Github Access Token을 통해 해당 사용자의 정보를 요청해야 했다. 선택 가능한 방법들서버에서 HTTP 요청을 보낼 수 있는 방법은 여러가지가 있다.

RestDocs의 Custom Snippet으로 에러코드 쉽게 문서화하기

배경RestDocs로 테스트를 통과한 API에 대해서 문서화를 할 수 있다.우리 프로젝트에서는 정상 요청 흐름을 중점으로 API 문서화했다.하지만 해당 API에서 발생 가능한 애외 상황에 대한 응답도 정리해줘야 했다.그래서 우리는 백엔드 단에서 발생하는 예외에 매핑되는 예외 코드를 만들어서 예외 상황 발생 시 해당 예외 코드를 바디에 담아서 반환하도록 해서

인증 인가에 사용되는 토큰을 어디에서 관리할까? (이론 편)

이번 포스트에서는 우아한테크코스 팀 프로젝트에서 리프레시 토큰을 적용하게 된 계기를 정리해본다. 배경우아한기크코스 팀 프로젝트 회의 중 현재 우리가 사용하고 있는 인증 인가 방식을 현업에서도 유효한가에 대해 의논한 적이 있다.당시 팀 프로젝트의 인증 인가는 JWT 액세스 토큰을 세션 스토리지에 저장해놓는 방식으로 운영하고 있었다. 문제 상황이 방식에는 크게

Spring boot에서 JWT 토큰 발급 구현하기

도입 배경우아한테크코스에 프로젝트를 진행하는데 사용자의 정보를 기억해야 하는 상황이 필요한 경우가 있다. 예를 들면 사용자가 작성한 리뷰를 삭제하거나 수정할 수 있어야 한다. 그러려면 현재 접속한 사용자가 이전에 리뷰를 작성한 사용자임을 알아낼 수 있어야 한다. 일단 사용자를 구분하기 위해서 로그인을 해서 사용자를 구분해서 관리할 수 있도록 했다. 이때 사

조합으로 체스 말 이동 범위 검사하기!

요약 체스 말 객체들이 해당 위치로 이동할 수 있는지 검증하는 로직이 중복된 경우가 있었다.이를 따로 분리해서 중복을 제거하고자 했다. 도입 배경체스 말 종류 구현하기체스 말 객체(Piece)는 자신의 위치와 이동할 위치를 전달받아서 이동할 위치로 이동할 수 있는지 확인한다. 123456789101112131415161718192021public abs

상속과 조합

상속의 위험성상속은 중복코드를 없애고 코드 재사용을 하기 위해 등장한 개념이다.내가 필요로 하는 클래스와 매우 유사한 클래스가 있다면 해당 클래스를 상속하면 같은 코드를 여러번 쓸 필요가 줄어든다. 상속은 코드 재사용을 위해 캡슐화를 희생시킨다. 부모 클래스의 코드를 재활용하기 위해 자식 클래스도 재활용할 코드를 모두 공개되기 때문이다. 경고 1. 자식

Enum에서 메서드 참조와 BiFunction 사용하기

요약 int matchCount와 boolean bonusMatch를 BiFunction를 통해 해당 Enum 객체를 찾을 수 있다. 문제 배경 (안좋은 사례 모음) 로또 순위를 Enum LottoRank로 등수와 상금을 관리하고자 한다.LottoRank가 맞춘 번호 갯수와 보너스 번호 맞춤여부를 전달받아 등수를 판별해야 한다. LottoRank에

Junit으로 parameterized test

요약 @ParameterizedTest 어노테이션과 함께 @MethodSorce나 @ValueSource를 통해 한 테스트 메서드에 여러번 파라미터를 넘길 수 있다. @MethodSource 도입 배경 자동차 이름의 글자 갯수가 5개 이하여야 하고, 자동차 이름이 빈 문자열이면 안되고 등등 다양한 제약 사항을 테스트해보고 싶다고 하자.근데 테스트 코드

우아한테크코스 자동차 경주 미션 회고

아직도 내가 모르는 게 이렇게 많다니. 우테코 첫 미션을 하면서 배운 것도 많지만 그보다 더 많이 내가 모르고 있다는 걸 알게됐다.같이 공부하는 크루들도 출중한 사람이 엄청 많았다. 그에 비하면 내 코드는 뭐… 바보 같을 때가 많았다. 페어 프로그래밍으로 같이 하면서, 처음엔 나 혼자하는게 더 빠르지 않을까 싶기도 했었는데,같이하는 페어의 독특한 생각을 많

자바 사용자 정의 예외 만들기

요약 예외를 상속하는 클래스를 통해 예외를 만들 수 있다.생성자를 통해 에러 메시지를 초기화 할 수 있다. 배경 12345public void checkCarNameEmpty(String carName) { if (carName == null || carName.equals("")) { throw new R

자바 일급 컬렉션 활용해보기

요약 일급 컬렉션은 컬렉션 객체를 감싸는 객체를 말한다.일급 컬렉션은 객체를 만들 때 검증해야 할 로직을 모아 둘 수 있다.일급 컬렉션은 해당 컬렉션이 행해야 할 책임을 모아 둘 수 있다. 불변성을 지키기 위해서는 setter 금지. 일급 컬렉션의 멤버 변수를 초기화할 때 가져온 인자를 새로운 주소값으로 재할당 getter 할 때 불변 객체 반

자바에서 정규 표현식 잘 활용하기

요약 Pattern 클래스와 Matcher 클래스를 활용해서 자바 정규 표현식을 잘 표현한다. 특히 Matcher클래스에 정규 표현식을 compile(String)하고, matcher(String)으로 대상 문자열을 전달해준다.이때 find()메서드를 반드시 실행해줘야 정상적으로 Matcher 객체에 관련 내용이 할당된다!! Pattern 클래스로 정규

우아한테크코스 4기 최종 코딩테스트 후기

최종 코딩테스트 문제 링크https://github.com/woowacourse/java-pairmatching-precourse 아쉬운 점검증 로직 중복과정, 레벨, 미션을 입력받을 때, 해당 과정, 레벨, 미션이 존재하는지 검증해야 된다.나는 이를 검사하는 메서드를 각 열거형 객체가 가지고 있도록 하고 findByName메서드로 이름에 맞는 객체를 가져

우아한테크코스 4기 프리코스 3주차 회고

우아한 테크코스 4기 프리코스 3주차 회고3주차 문제 및 내 답안 링크https://github.com/woowacourse/java-vendingmachine-precourse 마주한 문제들MVC 패턴 적용MVC 패턴은 Model, View, Controller를 기준으로 객체들을 분류해서 프로그램을 만드는 패턴이다.2주차 피드백에 비즈니스 로직에 출력

우아한테크코스 4기 프리코스 2주차 회고

우아한 테크코스 4기 프리코스 2주차 회고2주차 문제 & 내 제출 답안https://github.com/woowacourse/java-racingcar-precourse https://github.com/yangdongjue5510/java-racingcar-precourse 마주한 문제들책임을 클래스들에게 분배하기이번 문제는 메서드를 분리하는 것에