Mypage
MyPage 단순히 사용자가 영어 공부를 하고 문제를 푸는 단순한 과정만 있어서 학습한 데이터를 분석해서 제공하는 MyPage를 구현하게 되었다. 이번 글에서는 학습 시간 및 풀이 시간과 학습 레벨을 시각화하는 내용을 작성했다. 추후에는 더 다양한 분석 데이터를 추가해 MyPage를 확장할 계획이다. 학습 시간과 풀이 시간 ...
MyPage 단순히 사용자가 영어 공부를 하고 문제를 푸는 단순한 과정만 있어서 학습한 데이터를 분석해서 제공하는 MyPage를 구현하게 되었다. 이번 글에서는 학습 시간 및 풀이 시간과 학습 레벨을 시각화하는 내용을 작성했다. 추후에는 더 다양한 분석 데이터를 추가해 MyPage를 확장할 계획이다. 학습 시간과 풀이 시간 ...
Quiz 정답 체크 이번 글에서는 사용자가 퀴즈에서 정답을 맞췄을 경우 db에 정답 상태(correct=true)를 저장하는 과정을 작성했다. 설계 구현할 기능을 아래와 같이 나누어 생각했다. 단계 Front Back 주요 처리 1 퀴...
Levenshtein distance를 활용한 빈칸 채우기 빈칸 채우기 문제는 예문에서 특정 단어를 빈칸으로 대체해 퀴즈를 구성하는 방식이다. 그러나 db에 저장된 단어가 예문에서 변형되어 작성된 경우 기존 로직으로는 이를 처리하지 못해 예문이 퀴즈로 인식되지 않고 그대로 출력되는 문제가 발생했다. 예를 들어 문제 단어가 run일 때 예문에는...
오답 퀴즈 랜덤으로 뽑기 사용자의 오답(correct = false) 중에서 10개를 랜덤으로 뽑아 보여주는 기능이 필요했다. 처음엔 단순하게 ORDER BY RAND()를 썼다. SELECT * FROM quiz WHERE correct = false AND user_id = :userId ORDER BY RAND() LIMIT 10 그...
Route 53 호스팅 영역 삭제 방법 사용하지 않는 Route 53 호스팅 영역 때문에 비용이 발생했다. 1. 기본 SOA(권한 시작)과 NS(이름 서버) 레코드를 제외하고 호스팅 영역과 관련된 모든 레코드를 삭제한다. 2. 호스팅 영역에서 삭제를 누르면 끝 aws
Editor gutter 어느 순간 pr을 열어 둔 상태에서 코드 변경 시 Editor gutter(코드 라인 옆 여백)에 변경된 부분이 핑크색으로 표시되어 불편했다. 코드를 변경 하면 초록색으로 눈에 띄어야 하는데 핑크색과 겹치면서 눈에 잘 띄지 않았다. File Status Colors 구글링 결과 File Status Color...
Quiz 저장하기 Quiz 기능을 구현하기 위해 데이터를 저장하고 조회하는 과정을 진행했다. 이 글에서는 저장 과정을 중점적으로 다루며 조회 기능은 다음 글에서 확인 할 수 있다. Quiz 저장 Quiz는 사용자가 학습한 단어를 기반으로 생성된다. 저장 방식 설계 시 두 가지 방안을 검토했다. 1. Quiz 테이블의 status 활용...
단어 학습 기능 개선 학습해야 할 단어를 효과적으로 관리하기 위해 Redis를 활용해 캐싱 기능을 도입하고 학습 데이터를 조회 및 저장하는 방식을 개선했다. 이번 글에서는 문제 해결 과정과 주요 구현 내용을 정리했다. 전체 코드는 여기에서 확인 할 수 있다. 문제점 발견 사용자가 하루에 학습해야 할 10개의 단어 중 일부(예: 8...
Redis Cache 적용 : Redis Cache를 활용한 학습 데이터 TTL 관리 단어 학습 기능을 구현하며 오늘 학습할 단어는 반복 조회가 가능해야하고 이전(yesterday) 또는 이후 학습할 단어(tomorrow)와 명확히 구분되도록 해야 했다. 이를 해결하기 위해 Redis Cache를 도입했다. 캐시를 활용하며 발생할 수 있는 ...
성능 최적화 요약 Chat Project Chat Project를 진행하면서 성능 개선을 위해 여러 가지 최적화 작업을 진행했다. 이를 통해 로딩 시간, 조회 속도 및 응답 시간을 크게 개선했다. 아래는 각 주요 최적화 작업과 성능 테스트 결과의 요약이다. 더 자세한 내용은 관련 링크에서 확인할 수 있다. 1. 채팅 기록 파일 조회 속도 개...