📚 성장을 위한 기록저장소 입니다.

전체 글
· Programming
요약 이 글은 로그인 기능의 보안을 강화하기 위한 인증과 인가에 대한 개선 방법을 다루고 있다. 기존의 단일 토큰 방식에서의 보안 취약점을 보완하기 위해 두 개의 토큰, 즉 accessToken과 refreshToken을 사용하는 방법을 소개하고 있다. 이를 통해 토큰 탈취 시의 리스크를 줄이기 위해 유효기간을 짧게 설정하고, 사용자 편의성을 유지하기 위해 슬라이딩 세션을 도입하는 방법을 설명하였다. 또한, refreshToken을 서버의 DB 대신에 redis 캐싱을 이용하여 저장함으로써 성능을 향상시키는 방법에 대해서도 언급하고 있다. 마지막으로, 보안성을 강화하기 위해 클라이언트 정보와 함께 refreshToken을 이용하여 새로운 accessToken을 발급하는 방법을 소개하고 있다. 전반적으로 ..
· Programming
결과테스트 세팅:테스트 환경: Mac M1 Air / RAM 16GB / SSD 256GB 테스트 시나리오: 1000명의 동시 사용자가 (약 3초 간격) 15번 반복 조회테스트 목적: 유명맛집에 걸려있는 Cache 성능과 안정성 검증Redis?Redis는 오픈 소스 인메모리 데이터 구조 저장소이다. 여기서 주목할 점은 인메모리 데이터 저장소라는 것!일반적인 데이터베이스와는 다르게 데이터를 메모리에 저장하는데, 하드웨어적으로 RAM 의 읽기, 쓰기 속도가 HDD, SDD보다 매우 많이 빠른 것이  가장 큰 장점이다. 그렇기 때문에, 데이터를 가져오는 속도에서 차이가 난다. 그렇다면 이게 다 일까?그럼 무조건 인메모리 데이터 저장소 구조가 좋은 거야?라고 생각한다면 당연한 것은 아니다!RAM이라는 특성을 생..
· Algorithm
문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 해설 성격 유형을 검사하고, 결과를 반환해야 하는 문제이다. 일반적인 검사처럼 선택지마다 점수를 부여하고, 점수를 기준으로 성격 유형을 나눈다. 첫번째로, 생각난 것은 딕셔너리로 {'R': 0, 'T': 0, 'C': 0, 'F': 0, 'J': 0, 'M': 0, 'A': 0, 'N': 0} 유형마다 점수를 저장하는 것이었다. 그리고 나서, 동의 선택지의 기준과 비동의 선택지의 기준을 선택지에서 얻은 점수를 더하면서, 모든 점수 계산이 끝났을때 높은 점수 순으로 성격유형을 만든다고 생각했다...
· Programming
복잡한 쿼리 어떻게? 여러 다른 서비스에 존재하는 피드들을 해시태그 기반으로 한 곳에서 모아 볼 수 있는 서비스 기능을 개발하는 과정에서, 게시글을 쿼리의 조건별로 필터링과 정렬을 하는 쿼리를 작성해야 했다. Typeorm을 처음 제대로 사용해 봤기 때문에 좀 헤맸지만, 결국 결과물은 만들어 냈다. api 조건을 살펴보자. 위의 내용에서 확인 할 수 있듯이, 쿼리 파라미터로 들어오는 조건에 따라 쿼리의 결과를 동적으로 필터링하여 데이터를 처리하여야 했다. 이 부분에서 typeorm의 querybuilder를 사용하였는데, 발생했던 문제를 기록으로 남겨야 겠다고 생각했다. 구현해야 할 조건은 다음과 같았다. 쿼리로 받아온 검색조건을 반영하여 데이터 처리하기 해당 게시글에 모든 해시태그 같이 보여주기 con..
· Programming
다대다 관계 설정을 위한 매핑 테이블 엔터티 스키마를 작성하는 중, typeorm에서 지원하는 @JoinTable(연결테이블)을 통해서 자동 생성 할 수 있는 것을 배웠다.
사용자를 연구하는 개발자
dev J