본문으로 건너뛰기

· 약 5분
arch-spatula

이 글은 별거 없습니다.

vercel에 storybook을 배포하는 방법은 놀랍게도 간단합니다. 사실 문제가 많고 플랫폼이 거부할 줄 알았는데 아니였습니다. 최초 배포 이후 다음 릴리즈하면 장애가 발생할 것이라고 생각했는데 그렇지 않습니다.

· 약 42분
arch-spatula

오늘은 발렌타인 데이입니다. 저는 여자에게 받는 초코렛은 못 받아도 스스로 IDE는 선물로 줄 수 있을 것같습니다.

neovim을 설정하는 여정입니다. 이제 일상적으로 c 언어를 사용해야 할 때 사용할만할 정도로 개발환경이 좋아졌습니다.

· 약 10분
arch-spatula

제목에 어그로가 엄청난데 진짜 별거 없습니다. 그리고 이 블러킹 현상은 브라우저에서 발생했고 보완하는 과정입니다. 정량적인 성능 개선은 전혀 아니고 오히려 성능은 떨어집니다. 하지만 사용자는 페이지 이동하는데 대기시간이 짧아질 뿐입니다.

요약하면 Promise.all()을 100개 그대로 보내지말고 현재 브라우저 에이전트의 최대 TCP 연결량 기준으로 분할합시다. Promise.all()에 그냥 반복문 한번 감싸주세요. 페이지 이동도 비동기 요청인데 Task Queue가 100개 뒤에 Enqueue될지 6개 뒤에 Enqueue할지는 시각적으로 보이는 성능 차이가 큽니다. 엄밀하게 자바스크립트에서 블러킹현상이 발생하는 것이 아닙니다. 그져 Task Queue에서 병목이 발생하고 모든 요청을 응답 받기 전까지 다른 페이지 이동에 대한 동작을 처리할 수 없게 됩니다. 반복문으로 분할 요청하면 블러킹 수준이 한참 낮아집니다.

개인적으로 주말에 다니는 스터디에서 배운 것도 약간 가미되었습니다.

· 약 8분
arch-spatula

MSW 설정하면서 번들사이즈다 2배가 된 문제가 발생했습니다. 원래 보통 300kb 정도되는 번들 사이즈가 600정도로 커졌습니다.

원래 MSW는 개발하면서 백엔드를 mocking하는 것입니다. 그래서 개발하는 동안에만 있어야 하고 build에는 포함되면 안됩니다. 이 문제를 해결하는 글입니다.

참고로 일반적으로 권장하는 번들 사이즈는 500kb 미만입니다.

· 약 18분
arch-spatula

리액트에서 컴포넌트 차원에서 예외처리하는 방법입니다. 에러를 발생할 수 있고 우아하게 처리하는 방법을 소개합니다.

물론 저의 방법은 우아하지 않습니다.

참고로 저는 React-Query와 조합해서 사용하는 것도 다룹니다.

· 약 5분
arch-spatula

백엔드를 배포하는데 deno deploy는 실망스러운 것이 너무 많아서 다른 배포 옵션을 고려하기 시작했습니다. 그래서 요금폭탄 안당할 안전한 배포 플랫폼을 찾기 시작했습니다.

· 약 3분
arch-spatula

Super Oak 테스트에 도입했습니다. 부분만 적용할 수 있었습니다. 하지만 이 라이브러리에 메인테이너가 없는 것 같습니다.

인정하겠습니다. deno는 fresh를 제외하면 시기상조입니다. Nest.js를 배우고 포팅하고 십네요.

· 약 16분
arch-spatula

빠르고 더럽게 fetch로 만들었던 API를 mongoose로 리팩토링하는 과정을 다룹니다.

한가지 함정이 있습니다. 또 deno deploy에서 사용할 수 없습니다. 앞으로 개발할 때는 docker image부터 찾겠습니다. ㅂㄷㅂㄷ

· 약 9분
arch-spatula

지금 구현해야 하는 것은 삭제시 경고 modal(더 구체적으로 Dialog)입니다. 이 작업을 기록하는 이유는 react portal로 구현하는 것이 처음이기 때문에 기록합니다.

· 약 6분
arch-spatula

Deno Deploy로 배포하고 있는데 서버가 재시작하면 Module 스코프로 1번만 실행해야 할 함수 모두 재실행하고 서버의 키가 바뀌는 문제가 발생했습니다. 이 문제를 해결하기 위해서 항상 동일한 key를 만들도록 해결했습니다.

· 약 7분
arch-spatula

예전에 포트폴리오 프로젝트를 진행할 때 동료가 custom hook을 추가했었습니다. 하지만 아쉬운 점이 많아서 개선한 버전을 다시 만들었습니다.

원래는 있는 줄 몰랐던 hook입니다.

· 약 2분
arch-spatula

switch case를 사용할 수 있는 상황이면 map 혹은 object를 사용할 수 있습니다. 저는 신입 엔지니어라서 무조건 안티패턴이고 코드 스멜이라고 강하게 주장해야 하기는 하지만 별로 그렇게 하고 싶지는 않습니다. 저는 개인적으로 생각이 복잡할 때는 사용해도 괜찮다고 봅니다.

· 약 3분
arch-spatula

버튼에 로딩 스피너를 추가하는 방법입니다. button은 다양한 너비를 갖을 수 있고 또 입력한 텍스트 길이만큼 고정되어야 합니다. 로딩인 상황에 button의 너비가 줄어드는 일도 막아야 합니다.

· 약 8분
arch-spatula

이유가 있다면 더 간소하고 성능이 더 좋습니다. HMR 지원이 상당히 빠릅니다. 그리고 설치 마법사가 직관적이고 친절합니다. 시작하거나 실험 프로젝트에 활용하기 적합합니다.

물론 예외도 있습니다. 처음 테스트를 공부하는 입장에서는 CRA 활용하는 것이 좋습니다.

· 약 7분
arch-spatula

Deno oak에 테스트 코드를 작성하면서 cookie 설정이 특이하다는 점을 발견했습니다.

deno oak의 testing에서 set과 get은 서로 무관합니다. createMockContext으로 만든 context(이하 ctx)는 ctx.cookies.set으로 넣었다고 ctx.cookies.get으로 꺼낼 수 있는 것은 아닙니다. 모두