읽은 책과 학습 내용을 바탕으로 정리한 기록입니다.
스트리밍 연결에 문제가 생기면 기존 연결을 정리하고, 일정 시간이 지난 뒤 다시 연결하도록 처리하고 있었다. 그런데 새 연결이 정상적으로 만들어진 뒤에도 몇 초 후 다시 연결이 끊기는 경우가 발생했는데, 처음에는 다른 원인으로 생각했지만, 알고 보니 이전 연결에서 시작된 실패 처리 로직이 아직 끝나지 않은 상태였다.기존에는 generation으로 이전 작업을 걸러내고 있었다initialize()가 실행될 때마다 generation 값을 증가시키고, 각 초기화 작업에서는 자신이 시작된 시점의 값을 가지고 있었다.const myGeneration = ++initGeneration;실패 처리 로직에 진입할 때도 현재 작업이 최신인지 확인했다.if (myGeneration !== initGeneration) {..
예전에는 CSS에 새로운 기능이 나오면 꽤 챙겨보는 편이었다. 이전에는 CSS로 까다로운 UI를 다룰 일이 많아서 그러기도 했던 것 같다. 요즘은 그런 관심이 많이 줄었다. 지금 하는 일에서 CSS를 깊게 만질 일이 없는 것도 있고, AI를 쓰기 시작하면서 모르는 속성이나 구현 방법이 있어도 AI를 활용해 바로 해결하는 일이 많아지다 보니, 하나의 속성을 따로 찾아보고 깊게 볼 일이 줄어든 것도 큰 것 같다. 그러다 최근 정말 오랜만에 Josh 블로그에 들어가 최근에 올라온 글들을 보다가 Getting Started with Anchor Positioning을 읽었다. Tooltip이나 dropdown처럼 어떤 요소를 기준으로 다른 요소를 띄우는 UI를 CSS에서 처리할 수 있게 해주는 기능이다. An..
이번에 프론트엔드 기능을 작업하면서 백엔드 코드도 함께 수정하게 됐다. 백엔드에서 새로운 GraphQL Query를 추가해본 적은 있지만, 조회 로직과 페이지네이션, 기존 데이터 처리까지 한 흐름으로 다뤄본 것은 이번이 처음이었다. 구현은 클로드가 다 했지만, 백엔드는 아직 익숙하지 않다 보니 작업이 끝난 뒤 실제로 데이터가 어떤 흐름으로 조회되고 반영되는지 다시 확인해서 정리해보았다. Query이번 기능에서는 기존 조회와 별도로 새로운 기준으로 데이터를 가져오는 GraphQL Query를 추가했다. GraphQL에서 하나의 Query가 실제 데이터를 반환하기까지는 프로젝트 구조에 따라 몇 개의 계층을 거치는데, 현재 프로젝트에서는 대략 다음과 같은 형태였다.Schema→ Resolver→ Model→..