Skip to content

개인회고 Week4

Limpet edited this page Dec 2, 2022 · 1 revision

🧑‍🚀기종

Fact

  • 사진 파편을 만들고 움직임
  • 셰이더 프로그래밍
  • 갤러리 페이지 히스토리 라우팅
  • 그 외 잡다한 버그수정, 스타일수정, 등등…

Feeling

  • 타입스크립트는 나쁘다
  • 고통을 받긴 했지만 어떻게든 운영되고 있는 느낌이었다
  • react-three/fiber, drei, spring 등은 정말 api 명세서가 되어 있지 않구나는 것을 느꼈다
    • 기술 스택 고려할 때 튜토리얼이 잘 되어 있는 것을 선택해야겠다고 생각했다

Finding

  • 사원수가 뭐하는 놈인지 알게 되었음
  • 사진 파편을 구현하는 데 메시 수백개로 표현하는 것은 렌더 콜을 불러일으키기 때문에 성능이 나쁘며, 지오메트리를 useFrame을 이용해서 변경하는 것 역시 CPU에서 대량의 작업을 수행하기 때문에 애니메이션을 CPU로 구현하기로 했음
    • 사진 파편 애니메이션을 glsl로 구현하고, react-spring/three를 이용해서 uniform의 값을 넘겨주고 싶었으나 uniforms 객체가 리렌더링되면 새로 매터리얼에 할당되므로 기존에 있던 셰이더와 연동되는 uniforms 객체를 참조하지 못해서 애니메이션이 작동하지 않는 문제가 발생함
    • 원인은 useMemo인 것으로 밝혀졌고, useMemo가 react strict mode에서 호출될 때 const lerp = useMemo(()⇒({lerp:1}), []) 과 같은 꼴로 사용하더라도 2번 호출되어 각기 다른 객체를 반환하기 때문에 동일성을 보장하고자 useRef를 사용하여 해결함
  • zustand의 setter 함수를 const {setValue} = valueStore();와 같은 형태로 사용하면 리렌더링이 일어나는 것을 알게 되었음
    • const setValue = valueStore( store⇒store.setValue )와 같은 형태로 작성하도록 리팩토링할 예정
  • 코드를 보는 실력이 늘어났을지도

Feedback

  • 사진 파편 움직이는 거 정말 미쳤고, 최적화도 잘되어있어서 정말 짱이라고 생각하는 기능입니다.GOOD!(세연)
  • 사진 파편이랑 워드 클라우드 정말 미친 것 같습니다! 되게 개별적인 요소들이 많은 것 같은데 최적화가 잘 되어있다는게 대단한 것 같습니다. 개인적으로 최적화 안 된 버전 fps와 현재 버전 fps를 비교하는 글이 있으면 이런 요소들이 잘 부각될 수 있지 않을까 싶습니다. 👍 (종찬)
  • 사진 파편 렌더링 성능에 깜짝 놀랐습니다. 셰이더 코드는 알아먹긴 힘들지만 궁금하네요 정말로 (정욱)

🥷세연

Fact

  • 동기화 기능 구현
  • 링크 공유 기능 추가 및 자잘한 수정
  • SSE 도입하여 로딩 프로그래스 바 구현 (페어프로그래밍)
  • 메인 페이지 유령 캐릭터 모델링 및 이동 구현 (페어프로그래밍)

Feeling

  • 애니메이션 구현 어렵다.. 뭔가 잘 안된다 → 정욱님이 원인을 찾으셨다 역시 라이브러리를 그냥 쓰면 안되고 이에 대한 이해가 필요하다고 느꼈다

Finding

  • SSE 에 대해 알게 되었다.
  • blender를 다루는 법을 조금 알게 되었다.
  • react-spring에 대해 조금 알게 되었다.

Feedback

  • 분야 가리지 않고 뚝딱뚝딱 만들어내시는 모습이 정말 멋진 것 같습니다! 저는 프론트하라고 하면 잘 못하는데 진정한 풀스택의 귀감이 아니실까 싶습니다 ㅎㅎ. 페어프로그래밍도 되게 재밌었습니다! (종찬)
  • 저도 rotation 돌리는거 재밌었습니다. 동서남북이 45도 틀어진것 뿐인데 왜이리 헷갈리던지 ㅋㅋ.. (정욱)
  • 동기화+로딩 프로그레스 기능 수고하셨습니다😇 캐릭터 이동에 대한 고통을 듣고 있는데 힘들어하는 게 느껴지시더라고요.(기종)

🙉정욱

Fact

  • 헤더에 유저 인포 및 로그아웃 기능 추가
  • 공유하기 기능 구현
    • 공유하기 모달 디자인, 공유API 연결
  • history 기능 구현
    • history 사이드바 history 변경 모달 디자인
    • 유저의 모든 history 가져오기
    • 해당 history gallery 데이터 가져오기
  • 조회수 기능 구현

Feeling

  • threejs 애니메이션 관련해서 다시 한번 어려움을 느꼈다.
  • 이번주는 뭔가 시간이 빨리 가는 느낌이 들었다. (새벽까지 개발하지 않아서 그런가..)
  • 리액트는 파도파도 끝이없음

Finding

  • useFrame 내부에서 상태값 변경이 일어날 시 최적화 이슈가 있음을 알게 되었음
    • ref를 사용하거나 최대한 상태값 변경을 줄이는 방향으로 진행해야함
  • 라이브러리의 타입스크립트 완벽 지원이 얼마나 중요한지 너무 와닿는 일주일이었다. 그럴 일이 있을지는 모르겠지만 만약 라이브러리를 개발하게 된다면 신경쓸게 정말 많아보인다.
  • threejs의 position 계산 방식, scale 등 여러 요소들을 학습하게 되었다.

Feedback

  • 같이 애니메이션 방향별 rotation 값 계산할때 재미있었어요! ㅋㅋ 페어프로그래밍 이래서 하나 싶었습니당(세연)
  • 프론트엔드 리팩토링 하시는 거 보면 지식의 깊이가 다른 게 느껴지십니다 ㄷㄷ (기종 + 종찬)
  • 리액트 관련 지식이 정말 깊다는 것을 느꼈읍니다 (기종)

🕵️종찬

Fact

  • Notion 데이터 처리 관련
    • Fastapi와 연동하여 이미지 픽셀 저장
    • 노션 페이지 링크 저장
    • 각 그룹별 키워드 저장
  • SSE 도입하여 로딩 프로그래스 바 구현 (페어프로그래밍)
  • 표지판 만들기
  • 서버 계층화 관련 리팩토링

Feeling

  • Crontab관련 기능 구현 도중, 우연히 DB상에서 전체 데이터에서 검색하는 것에 대한 어려움을 깨달음.
  • 3D 모델링 해보니까 뭔가 뿌듯하다. 프론트 쪽 코드에 벽돌이라도 한 장 쌓은 느낌이다.
  • SSE가 기술적으로 꽤 어려울 거라고 생각했는데, 생각보다 쉬웠다.

Finding

  • SSE에 대해서 알게 되었다.
    • SSE가 어떤 방식으로 통신하고, Nginx에서 어떻게 하면 오류가 발생하는 지 이해하게 되었다.
  • blender를 다루는 법에 대해 조금 알게 됐다.
  • 어제 실험해봤을때 인덱싱을 걸어주고 인덱스 기준으로 탐색하는 걸 확인했는데, 전체 시간은오히려 느려지는 걸 발견했다.
    • lastSharedModified를 기준으로 유저 100,000개를 탐색했다.
    • 아마도 한날 한시에 생성된 유저들이다보니 중복되는 값이 많아 인덱스가 제 성능을 발휘하지 못하는 것 같다.
    • 다음엔 각 유저마다 값을 다르게 주고 실험해 볼 생각이다.

Feedback

  • 리얼 풀스택 종찬님.. SSE Nginx 오류까지 금방 해결하시고 능력자십니다!(세연)
  • SSE가 생각보다 쉬우셨다니 놀라운 재능! (정욱)
  • 서버 성능에 대해 관심이 많다는 것을 느꼈습니다.
스프린트 계획 회의
🕖 데일리 회의
week1
week2
week3
week4
week5
week6
📔 팀 회고
🗓 개인 회고
🏝️Ground Rule
⚙️ Tech Spec
Clone this wiki locally