Quiz 정답 체크 이번 글에서는 사용자가 퀴즈에서 정답을 맞췄을 경우 db에 정답 상태(correct=true)를 저장하는 과정을 작성했다. 설계 구현할 기능을 아래와 같이 나누어 생각했다. 단계 Front Back 주요 처리 1 퀴...
Levenshtein distance를 활용한 빈칸 채우기
Levenshtein distance를 활용한 빈칸 채우기 빈칸 채우기 문제는 예문에서 특정 단어를 빈칸으로 대체해 퀴즈를 구성하는 방식이다. 그러나 db에 저장된 단어가 예문에서 변형되어 작성된 경우 기존 로직으로는 이를 처리하지 못해 예문이 퀴즈로 인식되지 않고 그대로 출력되는 문제가 발생했다. 예를 들어 문제 단어가 run일 때 예문에는...
Quiz 조회하기
Quiz 조회 최적화 과정 사용자(user_id)별로 정답을 맞히지 못한 퀴즈(correct = false)를 무작위로 10개 조회하는 기능을 구현했다. 처음에는 간단한 방법을 선택했지만 성능 문제로 인해 최적화 과정을 거쳤고 이를 작성했다. *study_id, user_id, correct 컬럼을 활용했다. 1. 초기 구현 : ORDE...
Gutter
Editor gutter 어느 순간 pr을 열어 둔 상태에서 코드 변경 시 Editor gutter(코드 라인 옆 여백)에 변경된 부분이 핑크색으로 표시되어 불편했다. 코드를 변경 하면 초록색으로 눈에 띄어야 하는데 핑크색과 겹치면서 눈에 잘 띄지 않았다. File Status Colors 구글링 결과 File Status Color...
Quiz 저장하기
Quiz 저장하기 Quiz 기능을 구현하기 위해 데이터를 저장하고 조회하는 과정을 진행했다. 이 글에서는 저장 과정을 중점적으로 다루며 조회 기능은 다음 글에서 확인 할 수 있다. Quiz 저장 Quiz는 사용자가 학습한 단어를 기반으로 생성된다. 저장 방식 설계 시 두 가지 방안을 검토했다. 1. Quiz 테이블의 status 활용...
단어 학습 기능 개선
단어 학습 기능 개선 학습해야 할 단어를 효과적으로 관리하기 위해 Redis를 활용해 캐싱 기능을 도입하고 학습 데이터를 조회 및 저장하는 방식을 개선했다. 이번 글에서는 문제 해결 과정과 주요 구현 내용을 정리했다. 전체 코드는 여기에서 확인 할 수 있다. 문제점 발견 사용자가 하루에 학습해야 할 10개의 단어 중 일부(예: 8...
Redis cache를 활용한 학습 데이터
Redis Cache 적용 : Redis Cache를 활용한 학습 데이터 TTL 관리 단어 학습 기능을 구현하며 오늘 학습할 단어는 반복 조회가 가능해야하고 이전(yesterday) 또는 이후 학습할 단어(tomorrow)와 명확히 구분되도록 해야 했다. 이를 해결하기 위해 Redis Cache를 도입했다. 캐시를 활용하며 발생할 수 있는 ...
성능 최적화 요약
성능 최적화 요약 Chat Project Chat Project를 진행하면서 성능 개선을 위해 여러 가지 최적화 작업을 진행했다. 이를 통해 로딩 시간, 조회 속도 및 응답 시간을 크게 개선했다. 아래는 각 주요 최적화 작업과 성능 테스트 결과의 요약이다. 더 자세한 내용은 관련 링크에서 확인할 수 있다. 1. 채팅 기록 파일 조회 속도 개...
단어 학습하기
단어 학습하기 이 전에는 엑셀을 통해 db를 저장했다면 이제는 해당 db를 활용해 단어를 학습하는 기능을 구현했다. 전체코드는 eng에서 확인할 수 있다. 구현 동작 예시 주요 기능 구현 사항 1. 사용자가 학습하지 않은 단어 조회 2. 사용자가 학습한 단어 저장 DB 설계 단어 학습 기능을 구현하기 위해 user_id...
Db 저장하기
New Project 새로운 프로젝트를 시작했다. 영어 공부에 대한 필요성이 느껴져 코딩 연습과 함께 영어 공부 사이트를 만들어 보려고 했다. 전체코드는 eng에서 확인할 수 있다. IDEA 아이디어는 별도의 노션에서 계속 정리하고 있으며, 중간에 추가 및 수정이 많아 현재까지 완료한 작업들을 정리하기로 했다. 현재 기본적인 구조는 ...