2021-02-13(Sat)

항목

내용

학습 날짜

2021-02-13(토)

학습 시간

11:00~24:00

학습 범위 및 주제

Websocket

학습 목표

Chat Index view를 구현완료한다.

동료 학습 방법

-

상세 학습 내용

좋은 에러 공유는 1) 상황과 더불어 2) 에러메세지를 함께 공유하는 것이라는 인싸이트를 얻었다. 에러가 발생한 맥락을 짐작할 수 있게 도와주고, 결과적으로 빠른 fix를 돕는다.

문제)

특정 유저의 '대화하기' 버튼을 연달아누르면 두번째부터는 대화창을 통해 메세지를 보낼 수 없게 된다.

원인)

이미 대화 중인 유저의 '대화하기' 버튼을 누르면 websocket 구독을 unsubscribe하고 다시 subscribe한다. 그런데 이 과정이 시간차없이 진행되어 '구독경합' 현상을 일으킨 것이 원인이었다.

참고로 특정 유저의 '대화하기' 버튼을 누르고 다른 유저의 '대화하기' 버튼을 누르는 경우엔 이런 문제가 없다.

해결)

이미 대화 중인 유저의 '대화하기' 버튼을 누르면 아무런 동작을 하지 않도록 구현하면(굳이 채널을 unsubscribe 했다가 subscribe하지 않도록 하면) 해결된다.

이후 eunhkim님과 chat index view를 구현했다.

Batch 검사를 학습했다. 확실히 DB 접근 횟수를 줄이는 것이 성능에 크게 영향을 준다는 인싸이트를 얻었다. 아래코드로 실험했을 땐 연관 테이블을 includes 해주고 말고에 따라 4배가량 성능차이가 발생했다.

# 벤치마크 명령어 속도 측정 
puts Benchmark.measure { 100.times { code } }

학습 내용에 대한 개인적인 총평

너무 새벽 2시 30분 넘게까지 코딩했더니 피곤하다.. 컨디션을 위해 일찍 자고 일찍 일어날 수 있도록 시간대를 좀 조정해봐야겠다.

다음 학습 계획

  • Chat Index view 구현 완료

Last updated