-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature(#256): 프로그래스바 드래그 기능 구현 #260
Feature(#256): 프로그래스바 드래그 기능 구현 #260
Conversation
- 프로그래스 바 드래그 기능 구현
- 오타 수정 prograssBar -> progressBar - 프로그래스바 드래그로 프레임을 탐색할 수 있다. - 쓰로틀링 적용으로 성능적, 사용자 경험적 개선
❌ Deploy Preview for boarlog failed.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
고생 많으셨습니다! 👍👍 성능 개선이 구체적으로 보여서 굉장히 멋지네요 ㅎㅎ
frontend/src/pages/Review/Review.tsx
Outdated
@@ -27,7 +27,7 @@ const Review = () => { | |||
let fabricCanvasRef = useRef<fabric.Canvas>(); | |||
let canvasCntRef = useRef<number>(0); | |||
|
|||
const [prograssBarState, setPrograssBarState] = useState<"disabled" | "playing" | "paused">("disabled"); | |||
const [progressBarState, setprogressBarState] = useState<"disabled" | "playing" | "paused">("disabled"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
제가 또 오타를 냈군요..
frontend/src/pages/Review/Review.tsx
Outdated
// onFrameIdRef.current = window.requestAnimationFrame(onFrame); | ||
// setprogressBarState("playing"); | ||
// } | ||
// --> 프로그래스 바를 드래그 할 때, 마우스 클릭을 유지한 경우 타이머가 멈춰야해서 이 부분을 추후 리뷰에서 승인 후 제거하겠습니다. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
더 논의해 보면 좋을 것 같아요!
} else { | ||
clearInterval(timerRef.current); | ||
const handleProgressBarMouseMove = (event: React.MouseEvent) => { | ||
console.log("ff"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이 부분 삭제해도 좋을 것 같습니다!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
감사합니다! 반영하겠습니다!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
성능 개선을 위한 큰 선택지인 디바운싱과 쓰로틀링 중에 현재 발생한 문제와 기능의 핵심적인 목적을 바탕으로 어떤것을 활용하실지 잘 판단하신 것 같습니다. 성능 개선은 매번 신기한 것 같습니다 :) 코드 잘 읽었습니다.
} else { | ||
clearInterval(timerRef.current); | ||
const handleProgressBarMouseMove = (event: React.MouseEvent) => { | ||
console.log("ff"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
디버깅을 위한 용도였다면 지워주시면 좋을 것 같습니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ㅎㅎ 반영 완료했습니다!
if (throttle) return; | ||
else { | ||
setThrottle(true); | ||
setTimeout(() => { | ||
handleProgressBarDrag(event); | ||
|
||
setThrottle(false); | ||
}, 250); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
쓰로틀링을 이렇게 적용하는거군요! 매번 신기한 것 같습니다. 👏👏
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
감사합니다!
작업 개요
프로그래스바 드래그 기능 구현 close #256
작업 사항
고민한 점들(필수 X)
문제 - MouseMove 이벤트가 너무 많이 발생해 부하 발생 가능성
MouseMove 이벤트는 마우스의 좌표가 바뀔 때마다 발생합니다.
단순히 프로그래스 바를 랜더링 하는 수준에서는 감당 가능한 부하겠지만, 프로그래스바의 이동에 따라 다시보기 화면 전체를 랜더링 하는 경우는 부하가 커질 것이라고 판단했습니다. 그리고 추후 다시보기의 내용을 쪼개서 요청을 보내 캔버스를 랜더링 할 경우 요청이 너무 많아 클라이언트 뿐만 앙니라 서버에도 큰 부하가 발생할 수 있을 것이라고 판단했습니다.
문제 해결
해결 - 쓰로틀링 적용
디바운싱 vs. 쓰로틀링(쓰로틀링을 적용한 이유)
쓰로틀링을 적용했을 때 예상되는 단점
예상되는 단점에도 이런 성능 개선을 위한 방법을 선택해도 되는 이유
개선의 결과(성능, 사용자 경험)
관련 노션 게시글
스크린샷(필수 X)
2023-12-11.11.06.34.mov
추가사항
드래그 중 마우스가 프로그래스바를 넘어가면 생기는 문제를 해결했습니다.