오늘은 어제에 이어서 방 생성하기 기능 구현(프론트)을 작업했다. 사실 어제 끝낼 수 있을 것이라 생각했는데, 생각보다 쉽지가 않아서 오늘도 겨우 구현을 끝내고 집에 갔다(새벽 1시쯤). 오늘 놀랐던 점을 이야기해보자면
- 누군가 옆에 있으면 코드가 잘 보인다.
코드 작업을 하면서 async await 관련 문제가 있었다. 그런데 지나가는 사람을 붙잡고 이러한 문제를 겪고 있다고 이야기를 하니까, 누군가에게 이야기를 하는 것만으로도 문제를 해결할 수 있었다. 우선 한번은 await을 어떤 값에 선언한 후 리턴 시켜줘야 했는데 그러지 않았던 것이었고, 나머지 한번은 잘 기억이 안 나지만 사소한 이유였다. 아무튼 다른 사람에게 설명을 하면서 최대한 논리적으로, 어디서 안 되는지를 설명하려고 노력하다 보니까 문제를 짚을 수 있었던 것이 아닐까? 만약 막힐 때면 혼자서 누군가에게 설명한다고 생각하고 이야기해봐야겠다.
- 소켓의 on emit에 대해 진실히 느껴보기
테스트때는 소켓을 거의 건들여보지도 못했는데, 이번에는 소켓을 구현하면서 어떻게 작동이 되는지 조금이나마 진실하게 느껴볼 수 있었다. 프론트엔드에서 (주로) 어떤 이벤트가 발생했을 때(예를 들어 버튼을 클릭했을 때, 혹은 페이지로 이동했을 때) 소켓 연결이 일어날 것이고, emit을 시켜주면 똑같은 이름으로 백엔드에서 on으로 받아줘야 한다. 티키타카가 잘 이뤄져야 한다.
- socket.id는 소켓을 connection하는 함수 내부에서만 받아올 수 있다. 별의 별 방법을 다 써봐도 외부에서는 뽑아올 수 없다. Socket객체가 비동기적으로 받아오더라도, socket.id를 찍어보면 undefined가 뜬다. 이는 아직도 왜 그런지 정확히 모르겠다.
- socket의 handshake기능
동기 분들 중 소켓 고수가 있는데, 조금 여쭤보니 socket에는 handshake라는 기능이 있다. 이 기능이 진짜 알짜배기라고, 너무 좋은 기능이라고 하셨다. 하지만 지금 기능구현하는데 너무 바빠서 어떤 기능인지 정확히 찾아보진 못했다. authorization할 때 너무 잘 쓰였다고 하는데, 우리는 authorization하는 기능이 없기 때문에 아직 찾아보지 않았다.
- 소켓 렌더링 주의할 것
소켓이 on emit으로 이뤄져 있기 때문에 무한 렌더링이 일어날 수 있다. useEffect로 잘 관리해주자.
- git stash 기능 써먹기, 개꿀
오늘 윤학님이 새벽 1시반까지 같이 기다려서 기능구현까지 같이 마무리하고, 연결짓는 작업을 하고 같이 퇴근했다. 택시 잡는 것까지 기다려주셨는데, 190윤학님이 같이 계셔주니까 세상 든든했다.. 감사한 키다리 윤학님
팀원들이랑은 사이가 너무 좋다. 너무 좋아서 코드가 질적으로 안 좋진 않을까? 생각하긴 했는데 전혀 아닌 것 같다. 글쎄 모르겠다 좀 더 지내봐야 알겠다. 우선 서로 격려해주고, 모르는 것이 있으면 공유하는 문화가 너무 좋다. 공유하면서 할 때가 확실히 더 잘 되는 것 같다. 내가 모르는 부분을 짚을 수도 있고, 짚어줄 수도 있다. 그래도 확실히 의견이 있으면, 바로바로 이야기를 하고, 나무라지 않는 커뮤니티가 형성되어 있다. 의견이 안 받아지면 설득을 하기도 한다. 확실히 느낀 점은, 설명을 할 때 그냥 어물쩍 넘어가지 말고, 코드로 직접 예시를 들어가면서 컴퓨터 화면에서 직관적으로 보이게 했을 때가 훨씬 내 생각 전달이 잘 되는 것 같다. 커뮤니케이션 기술을 배워가는 것 같다.