July 8, 2023 • ☕️ 7 min read
워케이션 지은님 감사합니다
unload
이벤트윈도우의 unload
이벤트는 문서나 하위 리소스가 언로딩 중일 때 발생하는 이벤트이다.
그러나 다음 케이스를 다루기 어려운 이유로 unload
이벤트의 사용을 지양해야 한다.
unload
의 대체재로 visibilitychange
나 pagehide
이벤트를 사용할 수 있다.
visibilitychange
visibilitychange
이벤트에 리스너로 등록된 함수는 웹페이지의 visibility 상태가 변하면, 즉 사용자가 탭을 다른 탭으로 변경하거나 원래 탭으로 복귀하는 등의 행동을 취하면 실행된다.pagehide
pagehide
이벤트를 받는다visibilitychange
는 지원하지 않는 브라우저도 있기 때문에, pagehide
를 쓰면 좋겠다
Ref https://developer.mozilla.org/en-US/docs/Web/API/Window/unload_event#usage_notes
안정성과 멱등성
Idempotency-Key: {IDEMPOTENCY_KEY}
Ref https://blog.tossbusiness.com/articles/dev-1?from=category
@font-face
에서 url()
표기법으로 작성한 요청은 CORS 요청으로 발생한다. 하지만 preload link
는 기본적으로 non-CORS 요청이므로 이를 CORS 요청으로 맞춰주기 위해서 crossorigin attribute를 사용한다.
Ref
type IntegerByLength<
N extends number,
Acc extends number[] = []
> = Acc["length"] extends N
? Acc[number]
: IntegerByLength<N, [...Acc, Acc["length"]]>;
Ref https://stackoverflow.com/questions/39494689/is-it-possible-to-restrict-number-to-a-certain-range
vitest(jest)
에서 toBe
는 참조값 검사, toEqual
은 값들을 검사한다.
vitest(jest)
spy 사용법
const review = new Review();
vi.spyOn(review, "updateReviewContent");
// review.updateReviewContent가 호출되었는지 확인
expect(updateSpy).toHaveBeenCalled();
EventTarget.dispatchEvent
로 발생한 이벤트의 경우 false
change
이벤트는 엔터 키를 누르거나 리스트에서 옵션을 선택하는 등 변경점을 ‘반영’해야 발생한다input
이벤트는 단순히 요소의 value
가 변할 때마다 발생한다.👩🏫 즉, input
이벤트가 발생했다고 해서, change
이벤트가 발생할 것이 보장되지는 않는다.
정의
<dl>
: list<dt>
: term - dl 안에 사용<dd>
: details - dt 다음에 사용접근성
<dt>
와 <dd>
를 1:1로 쌍을 이룰 때 사용하는 것이 가장 정확한 의미를 읽어낼 수 있기 때문이다.<dl>
태그 또한 <ul>
이나 <ol>
과 마찬가지로 화면에 보이는 병렬 배치를 위해 여러 개를 사용하지 않도록 해야 한다.예시
<dl>
<dt>알뜰배달</dt>
<dd>알뜰배달 설명이에요.</dd>
<dt>한집배달</dt>
<dd>한집배달 설명이에요.</dd>
</dl>
String.prototype.repeat()
- 문자열을 주어진 횟수만큼 반복해 붙인 새로운 문자열을 반환한다. 2022년 말에 나온 최신 문법 🤩document.scrollingElement
- 문서를 스크롤하는 요소를 뜻한다. 대부분은 문서의 루트 요소인 document.documentElement
이다.PointerEvent.isPrimary
- pointerEvent를 발생한 주체가 기본 포인터 장치일때 true 값이다. 기본 포인터만 마우스 이벤트를 생성한다.https://via.placeholder.com/ 사이트에서 플레이스홀더 이미지를 쉽게 만들 수 있다.
크기 커스텀 등 다양한 기능이 많다.
ex) https://via.placeholder.com/375x125/eb4034
WebSocket의 기능을 향상할 WebTransport API가 나왔고, SVG에 crossorigin
속성이 추가되었고, 베타 브라우저가 등장했다.
Ref https://web.dev/web-platform-06-2023/
크롬 소스코드만으로 많은 걸 까볼 수 있구만 😲
중요한 컨텐츠는 SSR로 내리고, 에러바운더리도 꼼꼼히 감싸고, 이미지 최적화들도 모두 해놓은 것을 보니 역시 까다로운 회사라는 생각이 든다.
Ref https://yceffort.kr/2023/05/what-is-in-naver
useContextSelector
는 React Context와 useContext
에서 발전된 hook으로, Context의 변화로 인한 모든 컴포넌트의 리렌더를 막기 위해 지연 접근방식을 적용해 선택적인 업데이트를 수행한다.
이 hook과 함께 RFC에 Speculative Mode를 제안했다. Speculative Mode에서는 React가 실제로 업데이트가 필요한지 확인할 때까지 모든 업데이트 생성을 지연시킨다.
Ref
팀원들과 부산 워케이션에 다녀왔다! 비가 가끔 왔지만 전반적으로 시원하고 좋았고, 음식들도 다 맛있었고, 일하는 공간과 호텔도 나쁘지 않았다.
일주일이라는 길고도 짧은 시간 동안 팀원들을 더 잘 이해하고 친해질 수 있었던 소중한 시간이었다.
우당탕탕 워케이션을 추진했었는데, 모두 고맙다고 말해주셔서 기쁘다 😁
신나게 놀며 재충전하고 온 만큼 남은 2023년도 더 알차게 채워나갈 수 있을 것 같다!