일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- ssh-action
- Signature
- 동등성
- 해커톤
- 이코테
- remove
- 딕셔너리
- HashCode
- 너디너리
- Payload
- makeus
- github action
- nestJS
- CICD
- 동일성
- 왕실의나이트
- loop
- 라이징캠프
- 나동빈
- 컴공선배
- JWT
- equlas
- CMC
- forloop
- 이것이취업을위한코딩테스트다
- object
- 우테코
- Hackathon
- 동빈북
- 우아한테크코스
- Today
- Total
목록전체 글 (38)
iamjooon2님의 블로그
보호되어 있는 글입니다.
보호되어 있는 글입니다.

요즘 진행중인 프로젝트에서는 API 응답이 성공했는지, 혹은 실패했는지를 포함한 기본 응답 포맷을 사용한다 ResponseBodyAdvice 인터페이스를 구현하여 컨트롤러의 ResponseEntity가 생성된 후, HttpMessageConverter를 거쳐 직렬화 되기 전에 공통된 응답을 감싸 보내는 형식이다 게시글 적으면서 알게 된건데, 이런걸 봉투 패턴(Envelope Pattern) 이라 하더라 아무튼 각설하고, 이 기본 응답엔 isSuccess 필드가 하나 있어서 성공하면 isSuccess : true, 실패하면 isSuccess : false를 기본으로 반환하려 한다 감싸 보내는 코드는 다음과 같다 @Getter public class BaseResponse { private final boo..
자신과 동갑이거나 어린데 벌써부터 탁월한 연주자들을 유튜브나 페이스북으로 보면서 열등감과 자괴감 등에 빠진 특히 어린 친구들이 많을 거다. 정보가 넘쳐나고 모든 것들을 확인할 수 있는 시대이기 때문에. 어쩔 수 없는 것 같다.나도 20살 때 마냥 드럼을 좋아하는 일반 전문대 경영학과 학생이었는데. 나랑 동갑내기 학생들의 연주를 공연 등에서 보고 왔을 때도, 또 그때부터 유명했던 비슷한 또래 연주자들을 보면서도 나도 많은 감정을 느꼈다. 내가 10년을 쳐도 저 친구들만큼이라도 칠 수 있을까라는 감정을 꽤 자주 느끼고. 열등감을 느꼈지만 연습도 열심히 했다. 그런데 점점 지나고 보니 깨닫게 된 것은. 연주는 따라잡고 뒤쳐지는 게 없는 거였고, 컬러가 달라지는 거였다. 연주로 따라잡는다는 게 대체 어떻게 판단..

이전 포스트에서 Java의 synchronized를 이용하여 동시성 문제를 해결해보았는데요 @Transactional 적용이 안된다는 점과, 스케일 아웃 환경에서 동시성 보장이 안된다는 문제가 있었습니다 이 두 문제를 해결할 수 있는 방법으로, 분산 락을 이용하는 방법을 소개해보려 합니다 분산된 환경에서 동일 자원에 접근하는 경우, 동시에 한 개의 프로세스만 접근 가능하도록 하기 위해 사용하는 락을 분산락(Distribution Lock)이라고 합니다. 처음 공부할 때 헷갈린 포인트가 X-lock이니, S-Lock등의 키워드였습니다. 모두 분산된 환경에서의 잠금을 구현하기 위한 방법들이고, 그 구현 방법으로 크게 낙관적 락(Optimistic Lock), 비관적 락(Pessmistic Lock), MyS..

프로젝트를 진행하면서 꼭 한 번 만나고싶었던 문제가 바로 동시성문제였는데요 선착순으로 실행되는 기능이 없고, 좋아요 기능이 있지만 서비스 기획상 치명적이지 않아서, 동시성 문제를 만날 일이 없었습니다 그래서 따로 찾아 공부하고 익혀 정리해보려 합니다 먼저, 동시성 문제란 무엇일까용 공대생의 친구 위키피디아에 동시성 제어를 검색해보았습니다 정보기술과 컴퓨터 과학에서, 특히 컴퓨터 프로그래밍, 운영 체제, 멀티프로세서, 데이터베이스 분야에서 동시성 제어(concurrency control)는 가능한 빠른 조회와 동시에 병행되는 동작의 정확한 결과가 발생하는 것을 보증한다. 라고 합니다 제 언어로 정리해보자면, 동시에 여러 사용자가 접근할 때 발생하는 문제 라고 정리해볼 수 있겠습니다. 코드 예제와 함께 보겠..

집사의고민 프로젝트의 기능 개발은 완료되었고, 이제 리팩터링 및 성능 개선을 고민하고 있는 상황입니다. 그러던 중, 쉽게 바뀌지 않는 API를 캐싱하는 것은 어떨까라는 생각이 들었는데요. 적용 과정과 선택한 기술에 대한 근거를 정리하고자 합니다. 그 전에, 캐시는 무엇일까요 공대생의 친구, 위키백과에게 물어봤습니다 캐시(cache, 문화어: 캐쉬, 고속완충기, 고속완충기억기)는 컴퓨터 과학에서 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다. 캐시는 캐시의 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약하고 싶은 경우에 사용한다. 캐시에 데이터를 미리 복사해 놓으면 계산이나 접근 시간없이 더 빠른 속도로 데이터에 접근할 수 있다. 라고 합니다. 제..

집사의고민 프로젝트에서는 소셜 로그인을 사용하고는데요 사용자 경험 측면에서 회원가입 과정이 간소해지고, 우리 사이트에서 관리해야할 사용자 정보 역시 줄어들어, 보안 측면에서도 이점이 있다고 생각했기 때문이었습니다 하지만 이 소셜로그인 과정에서 문제가 되는 점이 하나 있었는데요 코드와 함께 보자면 @Transactional public TokenDto login(String authCode) { // 외부 인프라 호출 String accessToken = oAuthClient.getAccessToken(authCode); OAuthMemberResponse oAuthMemberResponse = oAuthClient.getMember(accessToken); Member member = memberRepo..

우아한테크코스 프로젝트를 진행하면서 java Optional의 orElse, orElseGet을 아주 제대로 배울 기회가 생겨 정리해본다 후딱 계기가 된 코드부터 살펴보자. public String createToken(String authCode) { String accessToken = oAuthClient.getAccessToken(authCode); OAuthMemberResponse oAuthMemberResponse = oAuthClient.getMember(accessToken); Member member = memberRepository.findByEmail(oAuthMemberResponse.getEmail()) .orElse(memberRepository.save(oAuthMemberR..
우아한테크코스 레벨 3 프로젝트를 진행하면서, 테스트코드 작성을 새로 배우고 있다. 나는 크루들과 테스트에 관한 이야기를 나눌 때 마다 스스로를 클래시스트라고 말했다. 외부 API 사용 같이 '실제 객체를 테스트 할 수 없는 상황이 아니면, 연관된 모든 객체를 직접 테스트해야 그것이 진짜 테스트다'라고 생각했다. 일일히 메서드들을 모킹할 때마다 가독성이 떨어지고, 테스트 해야하는 메서드 하나를 위해, 연관된 수많은 메서드를 짜맞추는 것이 말이 안맞는다고 생각했다. 그렇게 난 레벨2 까지 Controller단은 RestAssured, Service와 Repository는 @SpringBootTest 어노테이션을 이용하여 테스트를 진행했다. 하지만 이런 내 신조는 레벨 3가 되어 아주 보기좋게 깨지고 말았다..