본문 바로가기

Etc.16

비밀번호 재설정링크로 이메일 전송 기능 구현하기 목차개요비밀번호 찾기 설계토큰 설계 (Redis vs DB)구현결론1. 개요이메일이나 SNS 계정 로그인 같은 방식이 현재는 많이 대중화되어 있지만, 아직도 많은 서비스가 자체 계정 시스템을 사용하고 있으며, 사용자는 종종 비밀번호를 잊어버린다.이때 재설정 기능이 없다면 사용자는 로그인을 포기하거나 서비스를 이탈할 확률이 있다.비밀번호 재설정 기능은 다양한 사이트에서 여러가지 제안을 제시한다.그 중 제 프로젝트의 경우 이메일을 이용해 ID를 만들기 있으므로 이메일인증을 통해 재설정 하는 기능을 만들어보려고 한다.2. 비밀번호 찾기 설계사용자가 이메일 입력 후 비밀번호 재설정 요청서버가 1회용 토큰을 생성해 저장토큰이 포함된 재설정 링크를 이메일로 발송사용자가 링크 클릭 → 새 비밀번호 입력 화면으로 이동.. 2025. 5. 20.
단축 URL을 사용하는 이유는 무엇이고 구현해보자 목차개요나의 경험그래서 단축 URL에 장점이 뭔데?구현하기구현하기 1차구현하기 2차구현하기 3차결론1. 개요프로젝트를 진행하면서 게시글 공유하기 기능을 구현하던 중 단축 URL에 대한 이야기가 나왔다. 평소 유튜브나 네이버 블로그 등 공유하기 버튼을 누르면 길었던 URL 구조가 단축된 경우를 볼 수 있을 것이다.평소에는 그냥 가볍게 지나왔는데 이번 프로젝트를 통해서 단축 URL을 왜 사용하고 구현하는 방법에 대해서 차근차근 정리해보려고 한다.레츠고~2. 나의 경험먼저 나는 카카오톡 같이 URL 링크를 친구들과 대화방에서 주고 받을때 경험을 해봤다. 보통 PC 주소를 그대로 복사해서 전달할때 아래 쿠팡 링크 같이 길게 전달되는 경우가 종종 있었다. 그래서 카톡 대화창이 길어지면 아래에 있는 전체보기 버튼이.. 2025. 4. 16.
좋아요 수를 이용해 동시성 처리 비교하기 목차개요좋아요 설계좋아요 수 설계동시성 문제비관적 락(Pessimistic Lock) 낙관적 락(Optimistic Lock)비관적 락(Pessimistic Lock) vs 낙관적 락(Optimistic Lock)결론1. 개요좋아요 기능을 구현하면서 마주할 수 있는 문제들과 상황을 정리해보려고 한다.특히, 좋아요 기능뿐만 아니라 데이터의 무결성을 보장하기 위해 동시성 처리를 어떻게 해야할지는 중요한 과제인데 이번 정리를 통해 차근차근 알아보자.2. 좋아요 설계기본적인 요구사항은 다음과 같다.각 사용자는 게시글마다 좋아요를 누를 수 있다.좋아요를 했다면 취소도 가능하다.idPKpost_id게시글 아이디user_id사용자 아이디created생성일시좋아요는 별도 테이블로 관리되며 post_id와 user_id.. 2025. 3. 9.
댓글 알고리즘으로 무한 depth 구현하기 목차개요최대 2depth 댓글댓글 생성 삭제댓글 목록 조회무한 depth 댓글댓글 생성 삭제댓글 목록 조회결론1. 개요처음에는 최대 2depth의 대댓글을 구현하고 이후 추가적으로 무한 depth의 대댓글을 구현해보았다.depth가 늘어날수록 계층 구조를 효율적으로 관리하고 성능, 댓글 정렬등 고려해야 할 상황이 많다.아래 어떤 알고리즘을 사용했고 구현했는지 차근차근 정리를 해보았다. 2. 최대 2depth 댓글2-1. 댓글 생성 삭제기본적인 요구사항은 다음과 같다.계층별로 오래된순으로 정렬을 한다.하위 댓글이 모두 삭제되어야 상위 댓글을 삭제할 수 있다.하위 댓글이 X, 댓글 즉시 삭제하위 댓글이 O, 댓글 삭제 표시여기서 댓글 2를 삭제하게 돠면 아래와 같다.댓글2 하위 계층에 댓글5가 존재하기 때문.. 2025. 2. 20.
Github Actions으로 Sonar Cloud와 Slack 알림 설정하기 목차개요시나리오 소개사전 작업 구성워크플로우 구성마치며1. 개요Github Actions를 이용하여 CI/CD 파이프라인 구성에 대한 이해를 해보려고 한다.Github Actions는 Github 레포지토리를 이용해 간단하게 설정하고 사용하기 쉽다. 별도의 서버나 외부서비스를 구축할 필요 없이 Github에서 제공하는 기능으로 CI를 실행할 수 있기에 Github Actions를 선택하였다.2. 시나리오 소개요구사항특정 path 에 대해서만 실행 (multi-board에 src/**)main branch로 PR이 생성 & 동기화 될 때 테스트 작업 실행 (CI)PR이 main으로 merge 되면 배포 (CD)배포 성공 여부 슬랙으로 전송위에 요구사항을 반영한 대략적인 플로우는 다음과 같다.main bra.. 2025. 1. 23.
파일마다 EOL(EndOfLine) 넣어야 하는 이유는 무엇일까? 목차개요EoL은 무엇인가?파일 마지막게 개행을 왜 해야할까?IDE 설정으로 해결하기.editorconfig 파일로 해결하기결론1. 개요프로젝트 진행중에 코드리뷰를 받았던 내용 중 다음과 같이 EoL을 설정해주는게 좋다는 리뷰를 받았다.예전부터 파일마다 개행을 넣어야 한다고는 들었으나, ‘왜 넣어야 하는지?’ 에 대한 의문만 가지고 관행적으로 넣었었다.이번 기회를 통해 무심하게 생각했던 내용에 대해서 정리해보려고 한다.2. EoL은 무엇인가?EOL(End Of Line)은 “줄의 끝” 이라는 의미로 주로 프로그래밍 파일 형식에서 운영 체제에 따라 서로 다른 방식으로 표현되어진다.3. 파일 마지막게 개행을 왜 해야할까?이유는 POSIX 기반의 규칙에 기반한다. 많은 프로그램이 이 규칙에 따라 구현되어 있으면.. 2024. 11. 29.