분류 전체보기 338

[런닝 코스 공유 서비스] - 18. 회원 프로필 업로드

🏅오늘의 목표회원 프로필 사진 등록 기능 구현✅ 진행한 작업회원 프로필 사진 등록 기능 구현📃 개발내용로컬에 프로필 사진을 저장할 수 있도록 구현하고 추후 AWS S3 스토리지에 저장되도록 구현할 예정MultipartFileSpringFramework 에서 HTTP 멀티파트 요청으로 전송된 파일을 표현하는 인터페이스파일 처리를 위한 다양한 메서드 제공메모리 또는 임시 디스크 공간에 파일 내용 저장ProfileImageService@Service@RequiredArgsConstructor@Slf4jpublic class ProfileImageService { private static final String PROFILE_IMAGE_DIR = "uploads/profile-images"; p..

[런닝 코스 공유 서비스] - 17. Oauth 로그인

🏅오늘의 목표Oauth 로그인 - 구글Oauth 로그인 - 네이버✅ 진행한 작업Oauth 로그인 - 구글Oauth 로그인 - 네이버📃 개발내용OAuth 도입 장점로그인 개발 / 유지보수 부담 감소비밀번호 저장, 해싱, 변경, 분실 처리 로직이 없어도 됨신뢰성 있는 사용자 정보 제공구글, 네이버 등 직접 검증된 정보 제공소셜 연동 쉽게 구현 가능사용자 진입 장벽 낮음보안적으로 우수함인증/인가를 제공업체에게 위임단점추가 정보 부족기본 프로필 정보만 제공되므로 닉네임/약관 동의 등 별도 처리외부 서비스 의존도 증가프로바이더별 파싱 방식이 다름동일 이메일로 다른 소셜 로그인 가능성providerId로 구분 필요구현Google 과 Naver 설정은 아래의 블로그를 참고 바란다.https://ddururiiii..

[백준] 1904 : 01타일 (Python/파이썬)

문제 링크https://www.acmicpc.net/problem/1904문제길이가 N인 이진 문자열을 만든다.사용할 수 있는 조각은 다음 두 가지뿐이다."1" (길이 1)"00" (길이 2)길이가 정확히 N이 되도록 만들 수 있는 모든 경우의 수를 구하시오.단, 결과는 15746으로 나눈 나머지를 출력한다.입력N출력길이가 N인 이진 문자열의 경우의 수 %15746예제입력4출력5정답 및 풀이import sysinput = sys.stdin.readlinen =int(input())dp = [0] * (n +2)dp[1] =1dp[2] =2for iinrange(3, n +1): dp[i] = (dp[i -1] + dp[i -2]) %15746print(dp[n])풀이dp = [0] * (n + 2)..

백준 2026.01.12

[런닝 코스 공유 서비스] - 16. AccessToken 블랙리스트

🏅오늘의 목표Access Token 블랙리스트 구현✅ 진행한 작업Access Token 블랙리스트 구현📃 개발내용AccessToken 블랙리스트블랙리스트란?로그아웃 이후에도 유효 기간이 남은 AccessToken 을 서버에서 차단하는 기능왜 필요할까?JWT 는 stateless 구조라 서버는 토큰을 기억하지 않음로그아웃을 해도 AccessToken 은 유효 기간이 끝날 때까지 계속 사용 가능해서 문제 발생예시로그인 → Access Token 탈취로그아웃 요청Refresh Token 만료 → 유효시간 남아있는 Access Token 악용 가능프론트에서 AccessToken 삭제가 불충분한 이유프론트에서 제거 → 내 브라우저에서는 안 씀 → 서버에선 여전히 쓸 수 있는 토큰서버에서 차단하지 않으면 보안적..

[런닝 코스 공유 서비스] - 15. Refresh Token

🏅오늘의 목표Refresh Token 도입로그아웃✅ 진행한 작업Refresh Token 도입로그아웃📃 개발내용Refresh Token 도입 이유현재 Access Token 만 있고 , Refresh Token 은 없음Refresh Token 이 없으면, 사용자는 자주 로그인 해야 함보안성과 사용자 경험을 둘 다 챙길 수 있음Access Token vs Refresh Token구분Access TokenRefresh Token목적API 요청 인증Access Token 재발급사용 위치매 API 요청 시Access Token 만료 시유효 기간짧음 (보통 5~30분)김 (보통 7일~30일)노출 위험상대적으로 높음상대적으로 낮아야 함저장 위치클라이언트 메모리 / 쿠키서버(DB/Redis) + HttpOnly 쿠..

[런닝 코스 공유 서비스] - 14. 회원가입 전, 이메일 인증

🏅오늘의 목표회원가입 전, 이메일 인증 구현✅ 진행한 작업이메일 인증 구현📃 개발내용이메일 인증 시 기대효과사용자 신원 확인사용자가 제공한 이메일 주소가 실제로 존재하며, 사용자가 그 주소에 접근할 수 있음을 확인실제 계정과 가짜 계정을 구분보안 강화이메일 인증 과정을 통해 비밀번호 재설정, 계정 변경 사항 알림 등 알릴 수 있음SMTP간이 우편 전송 프로토콜(Simple Mail Transfer Protocol)의 약자이메일 전송에 사용되는 네트워크 프로토콜Redis vs DB기능RedisDB자동 만료✅ TTL 지원❌ 크론잡 필요조회 속도✅ 매우 빠름 (메모리)△ 상대적으로 느림임시 데이터✅ 적합△ 부적합영구 저장❌ 휘발성✅ 영구 저장사용 목적인증 토큰 (10분)인증 완료 여부 (영구)- TTL(T..

[런닝 코스 공유 서비스] - 13. 회원 정보 조회 및 수정

🏅오늘의 목표회원 정보 조회회원 정보 수정✅ 진행한 작업회원 정보 조회 API회원 정보 수정 API📃 개발내용UserService - 회원 정보 조회public ProfileDto getMyProfile(UUID userUuid){ // 유저 찾기 User user = userRepository.findByUuid(userUuid) .orElseThrow(() -> new BaseException(UserErrorCode.USER_NOT_FOUND)); // 프로필 검증 if (user.getProfile() == null) { throw new BaseException(UserErrorCode.PROFILE_NOT_FOUND); } return profileMapper.toDto(..

[런닝 코스 공유 서비스] - 12. 회원 , 프로필 도메인 및 회원가입 API 구현

🏅오늘의 목표회원 (User) , 프로필 (Profile) 도메인 구현회원가입 API 구현✅ 진행한 작업회원 엔티티 생성프로필 엔티티 생성회원 서비스 생성회원가입 API 구현📃 개발내용회원(User) 엔티티 생성@Entity@Table(name="users")@Getter@NoArgsConstructor(access = AccessLevel.PROTECTED)public class User extends BaseEntity { @Column(nullable = false, unique = true, length = 255) private String email; // 이메일(아이디) @Column(nullable = false, length = 60) private String password; //..

[JWT] - Access Token , Refresh Token 만료

Access Token / Refresh Token 만료는 어떻게 판단할까?JWT 기반 인증을 사용하다 보면 의문점이 생긴다“엑세스 토큰이나 리프레시 토큰이 만료됐는지 어떻게 알 수 있을까?이 글에서는 실제 서비스 흐름을 기준으로 토큰 만료를 어떻게 판단하고 처리하는지 정리한다.전체 인증 흐름JWT 인증의 기본 흐름은 다음과 같다.사용자 로그인서버가 Access Token + Refresh Token 발급클라이언트는 API 요청 시 Access Token 전송서버는 Access Token 검증만료 시 Refresh Token 으로 재발급 시도Refresh Token 도 만료되면 재로그인 요구Access Token 만료Access Token 은 보통 JWT 형식이며, 내부에 만료 시간(exp) 클레임이 포..

CS 2026.01.11

[백준] 15651 : N과 M (3) (Python/파이썬)

문제 링크https://www.acmicpc.net/problem/15651문제자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.1부터 N까지 자연수 중에서 M개를 고른 수열같은 수를 여러 번 골라도 된다.입력첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 7)출력한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다.수열은 사전 순으로 증가하는 순서로 출력해야 한다.예제입력4 2출력1 11 21 31 42 12 22 32 43 13 23 33 44 14 24 34 4정답 및 풀이import sysinput = sys.stdin.readlinen,..

백준 2026.01.11