April 27, 2024 • ☕️☕️ 8 min read
.env
파일을 통해 특정 환경에서 앱을 실행시킨다Ref https://docs.nestjs.com/techniques/configuration
Ref
어느 요소의 콘텐츠가 자신의 배경 및 부모와 어떻게 혼합되어야 하는지 지정한다.
이미지가 여러 레이어로 겹쳐 있거나, 이미지 위에 있는 텍스트의 색상을 블렌딩하여 표현하고 싶을 때 사용한다.
포토샵에서 사용하는 블렌드 모드와 유사하다.
Ref
항공기 조종사들은 다음에 누가 비행기를 착륙시킬지를 결정할 때 서로 직접 대화하지 않습니다. 모든 통신은 비행기 관제탑을 통해 이루어집니다.
🤔 중재자 vs 옵저버?
중재자의 주목적은 시스템 컴포넌트들의 집합 간의 상호 의존성을 제거하는 것이다. 그러면 이러한 컴포넌트들은 대신 단일 중재자 객체에 의존하게 된다. 옵저버 패턴의의 목적은 객체들 사이에 단방향 연결을 설정하는 것으로, 여기서 일부 객체는 다른 객체의 종속자 역할을 한다.
Ref
XMLHttpRequest 요청 중 timeout이 발생했을 때 기본값으로, HTTP 응답을 받지 못한 상태를 가리킨다. 웹 서버가 응답을 보내기 전에 클라이언트가 연결을 닫았음을 나타내는 데 사용된다.
http status code는 3자리 수로, ‘0’은 http status code도 아니다.
참고로 nginx loki에서는 status 499로 찍힌다. HTTP 표준 상태코드가 아니며, nginx 전용으로 사용된다.
fetch()
API는 CORS, 네트워크 오류 등은 reject하지만 404, 500같은 서버 응답 오류는 reject가 아닌 resolve로 처리한다. 이때 오류가 발생하지 않으므로 catch에 잡히지 않는다.
fetch()
의 정확한 성공 여부는 res.ok
를 통해 직접 알아내야 한다.
Ref https://developer.mozilla.org/ko/docs/Web/API/Fetch_API/Using_Fetch
node_modules 없이 import하는 방법
--experimental-network-imports
(Nodejs 18+).mjs 확장자 없이 esm 사용하는 방법
--experimental-default-type="module"
커맨드 옵션을 줄줄이 쓰지 않아도 되게끔 hashbang 활용하기 (=standalone executable로 만들기)
#!/usr/bin/env -S NODE_TLS_REJECT_UNAUTHORIZED=0 node --experimental-default-type module --experimental-network-imports
@babel/standalone
사용하기
<script type="text/babel" data-presets="react" data-type="module"></script>
@babel/standalone
에서 text/babel
을 인식하여 트랜스파일한다이제 display: block에도 align-content: center를 적용해서 수직 정렬을 할 수 있다
Ref https://web.dev/blog/align-content-block?hl=en
Layout Viewport와 Visual Viewport는 다르다. (실제 레이아웃이 표시되는 영역과 사용자에게 보여지는 화면 ex. 줌인/아웃, 가상키보드로 인한 표시 등)
iOS 만 그렇게 동작하고 있었으나. 크롬 108 버전부터 동일하게 동작한다.
(다만 안드로이드의 경우 웹뷰에서 setSoftInputMode("resize")
를 지원하고 있다.)
해당 메서드를 사용하는 경우 레이아웃 크기가 변동되기 때문에 iOS 와 동작이 다르다
위 이슈로 인해 css fixed 속성을 가진 경우 keyboard에 가려지는 현상이 발생한다.
Ref https://developer.chrome.com/blog/viewport-resize-behavior/
n == ToString(ToInt(n))
을 만족하면 인덱스가 될 수 있다.const a = {}; a[-0] = 3; a["-0"] = 9 // { -0: 9, 0: 3 }
NaN
은 숫자이므로, NaN != NaN
이지만 a[NaN] = 3
을 무한히 반복한다고 무한한 수의 NaN
키가 추가돼 블랙홀이 되진 않는다. "NaN"
이 될 뿐…@builtin
, @installed
등등 여러가지 키워드로 검색할 수 있다정부에서 컴포넌트라니… 피그마 디자인 리소스라니… 낯설다 🤣
Ref https://uiux.egovframe.go.kr/guide/index.html
네이버 통합 검색이 개떡같이 입력해도 찰떡같이 검색결과를 찾아주는 것을 보고 신기했는데, (그리고 그렇게 빨리!) 프론트에서 성능 모니터링을 하는 방식을 소개하고 있다.
Beacon API라는 것을 사용하는데, 빌트인으로 이런 기능이 있는지도 몰랐음 😲
수없이 들어온 LCP라는 web-vital 성능 지표로 웹 성능 대시보드를 만들기까지 하다니 역시 대기업이다(?)
Ref https://d2.naver.com/helloworld/9227596
useActionState
hook
<form>
Actions, useFormStatus
<form>
사용useOptimistic
use
그리고 개인적으로 눈에 띈 Improvement
ref
as a prop
forwardRef
를 쓸 필요가 없다 😲<head>
태그 밖에서 <title>
, <link>
, <meta>
사용Ref https://react.dev/blog/2024/04/25/react-19
공통되는 코드를 이렇게까지 분리하는 게 맞나? 하는 생각이 들 때 다시 한번 읽어보면 좋은 글
Ref https://velog.io/@gomjellie/The-Wet-Codebase
‘아직은 불편한 점’에 대해 생각해봐야 할 것들
Ref https://fe-developers.kakaoent.com/2022/220623-webpack-module-federation/
이번주는 사내 TIL 이벤트가 있어서 내용이 아주 많았구만 😇
드물게 약속이 하나도 없는 한 주였지만 혼자서 아주 알차고도 바쁘고 힘들게;; ㅋㅋㅋ 보내버렸다.
날씨가 벌써 여름이 되려나봐… 오지마…