Jira의 REST API 문서를 읽고 얻은 인사이트를 공유합니다유저가 소유한 리소스 - /users/me/resources vs /resources유저가 소유한 리소스를 나타내는 REST API URI를 설계할 때 원칙에 따른다면/resources: 현재 로그인한 유저와 관계 없는 전체 리소스/users/me/resources: 현재 로그인한 유저가 소유한 리소스이렇게 명명을 해야할 것 같다.그러나 현실적으로 Jira 처럼 로그인해서 쓰는 애플리케이션은 내 데이터만 볼 수 있는 경우가 많고, 그렇다면 대부분의 api가 /users/me 하위에 위치하게 되어 리소스 분류가 안 되어 좋은 설계는 아닌 것 같다는 생각이 들었다. 그래서 Jira는 어떻게 하는 지 찾아 봤다.예시: /rest/api/3/das..
Essay
FCM을 이용해서 습관 알림을 구현하는 방식에는 아래와 같은 이슈가 있습니다. 사이드 프로젝트로 정해진 시간에 알림을 보내는 기능을 구현하면서 생각했던 이슈를 공유합니다. 참고로 클라이언트는 PWA로 구현하고 있습니다.이슈기기가 인터넷에 연결되어 있지 않을 때 동작하지 않습니다동시에 1000개의 메세지만 전송할 수 있습니다. 1000개가 넘어가면 사용자가 지정한 시간에 보낼 수 없습니다.https://stackoverflow.com/questions/42927065/limit-of-bulk-firebase-cloud-messaging#comment83876716_42928210해결법구글에서는 캘린더 앱과 같은 예시에서는 로컬 알림을 스케줄링 할 것을 권장합니다.https://firebase.google...
문제점 header의 설정값 (global한 값)을 바꾼 뒤 다른 페이지로 이동하면 바꾼 값이 적용되지 않는 현상이 발생했다 원인 header의 설정값은 apollo useQuery를 이용해 불러오고 있었는데, refetch로 변경한 뒤 다시 불러올 때는 예전 캐시 값을 읽어와서 값이 변경되지 않았다. 배경 header에서 사용하고 있던 api 쿼리문은 variable을 전달하지 않으면 가장 마지막에 읽었던 값을, variable을 주면 해당 값을 반환하는 api였다. () => 마지막에 읽었던 값 (variable) => variable에 대응되는 값 이런 상황에서 사용자가 값을 변경하면 두 번째 방법으로 호출하고, 초기에 fetch할 때는 첫 번째 방법으로 호출하여 마지막에 읽었던 값이 반환되기를 기..
문제점 임시회원이 회원가입을 하는 요청을 전송할 때 기존 임시회원 id를 보내지 않는 문제가 발생했다 배경 회원가입 페이지의 useEffect에서 auth0 인증의 callback을 탐지해 회원 정보를 생성하는 요청을 보낸다. 그러나 인증정보 컴포넌트의 useEffect가 먼저 실행되어 임시회원의 인증정보를 지운다. 따라서 회원가입 요청을 보내는 시점에서는 임시회원의 id가 이미 지워져 있었다. 기존에는 이를 해결하기 위해 backup을 사용했으나, 백업 시점이 임시회원 id가 이미 지워진 후라 정상 작동하지 않았다. 해결법 그러나 인증정보 삭제 이전에 백업 코드를 넣기보다는, 임시회원 인증정보가 지워지는 시점을 회원가입 요청 성공 callback으로 변경하여 회원가입 요청을 보내는 시점에는 임시회원 인..
https://github.com/apollographql/apollo-client/issues/7436#issuecomment-821243699 Infinite loop when using a cache-and-network fetchPolicy · Issue #7436 · apollographql/apollo-client Intended outcome: I have a component that retrieves some data using useQuery and renders a chart. Until now I used these options: fetchPolicy: 'cache-and-network', nextFetchPolicy: 'cac... github.com `useQuery( QUER..
프로그래밍을 하다 보면 설계 상으로는 모듈이나 컴포넌트를 분리하고 상속하는 것이 바람직한데, 이것을 사람이 이해할 수 있는 한가지 개념, 단어로 치환하는 것이 어려울 때가 있다. 나는 그럴 때 분리했을 때의 효용(주로 재사용성)을 고려한다. 재사용되지 않고, 앞으로도 재사용할 지 알 수 없다면 일단 가독성 쪽의 손을 들어준다. 또 그렇게 하는 편이 오버 엔지니어링을 방지하는 데 좋기도 하다. 필요하면 그 때 리팩토링하면 되니까. 그러나 분리하고 상속했을 때 재사용하여 유지보수성에서 이득을 얻을 수 있다면 분리한다. 고심해서 이름을 짓기는 하는데 누군가 처음 보면 이상하다고 생각할 길고 해괴한 이름들은 보통 이렇게 만들어진다. 이를테면 오늘은 전에 작업한 것과 비슷한 요구사항에 대응하기 위해서 기존 컴포넌..
좋아하는 일을 하다보면 잘하게 된다. 흔히 퍼져있는 믿음이다. 그러나 이런 통설과는 다르게 즐기기만 하다 보면 자동으로 탁월한 실력을 갖게 되는 것은 아니다. 지식과 자신감 간의 관계를 설명하는 더닝 크루거 곡선의 축을 노력과 재미로 치환해도 크게 다르지 않다고 생각한다. 위 그래프에 따르면 무지의 꼭대기에서 큰 재미를 얻을 수 있는데, 목표가 재미인 사람은 저 구간에 집중해야 효율이 좋을 것이다. 노력대비 쉽게 큰 성취감을 맛볼 수 있는 구간이다. 우리가 쉽게 접근할 수 있는 자료(도서, 강의 등)도 대부분 이 구간을 대상으로 한다. 하지만 높은 성과를 이뤄내려면 결과물에 이르기까지 시간도 오래 걸리고 고통이 뒤따른다. 이 과정은 재미가 없을수도 있다. 어려운 내용을 이해하고 해결책을 찾느라 두통이 올..