July 30, 2022 • ☕️ 6 min read
4기 크루들과의 만남
<head>
<link rel="canonical" href="https://www.mysite.com/shop">
</head>
Ref https://developers.google.com/search/docs/advanced/sitemaps/overview?hl=ko
trailing slash 는 URL이 바라보는 리소스가 파일인지 디렉토리인지 구분하게 해준다. 그러나 기존에 우리가 접하던 대부분의 웹사이트와 달라 보여 직관적이지 않게 느껴질 수 있다.
www.baemin.com/newsletter <= newsletter라는 파일을 의미
www.baemin.com/newsletter/ <= newsletter라는 디렉토리를 의미 + 디렉토리를 바라볼경우 기본파일은 index.html 파일을 가리킨다
next.js에서 next.js.config
파일에 아래와 같이 traillingSlash
옵션을 true
로 주면 trailing slash가 있는 url을 trailing slash를 제거하고 리다이렉션 해준다. ex) /about/ -> /about
module.exports = {
trailingSlash: true,
};
👩🏫 s3에서 trailing slash로 서브디렉토리 index.html로 접근하려면 객체 레벨 리다이렉트가 가능한 s3 정적호스팅이 활성화 되어있어야 한다. s3 정적호스팅을 사용하지 않을 경우 request url rewrite처리가 필요한데, cloudfront function을 생성해서 해결할 수 있다.
role="dialog"
붙이면 이 마크업은 “dialog”임을 명시한다.
aria-labelledby
은 다이얼로그 제목을 나타내는 요소의 ID reference list
를 명시한다.
ID reference list
는 띄어쓰기로 구분하여 여러개의 id를 입력한다. (ex: aria-labelldby="id1 id2 id3"
)aria-labelledby
는 브라우저가 접근 가능한 요소의 우선순위를 따질 때 가장 우선 순위가 높다. (스크린리더 혹은 tab으로 요소들 사이에서 이동할 때 가장 먼저 접근한다)aria-labelledby
를 사용하는 경우가 있다.aria-describedBy
는 다이얼로그 내용(설명)을 나타내는 요소의 ID reference list
를 명시한다.<div
role="dialog"
aria-labelledby="dialog-title"
aria-describedby="dialog-desc"
>
<h1 id="dialog-title">제목</h1>
<div id="dialog-desc">설명</div>
</div>
위 예제에서,
aria-labelledby="dialog-title"
→ h1
요소를 가리킨다.aria-describedby="dialog-desc"
→ div
요소를 가리킨다.최신 버전의 storybook 번들러는 디폴트로 webpack 4버전을 사용한다. webpack 5버전을 사용하기 위해서는 간단한 추가 설정을 해줘야한 다.
@storybook/builder-webpack5
, @storybook/manager-webpack5
를 각각 devDependency로 추가한 후, storybook의 main.js 에서 아래 설정을 추가해주면 된다.
module.exports = {
core: {
builder: "webpack5",
},
};
HTTP header에 underscore를 쓰는 것은 HTTP 스펙상 오류는 없지만, nginx 등의 웹서버에서는 이를 CGI 명령어로 해석하여 제대로 받아들이지 못하는 경우가 있다. header에 underscore(_
) 대신 dash(-
)를 사용하거나, nginx의 underscores_in_headers
설정을 on
으로 바꿔서 해결할 수 있다.
Ref https://www.grouparoo.com/blog/dont-use-underscores-in-http-headers https://dev.to/thesameeric/dont-use-underscores-in-your-http-headers-gfp
InvalidateQueries
vs removeQueries
InvalidateQueries
는 해당 쿼리키의 캐시값을 stale
상태로 만든다.
removeQueries
는 해당 쿼리키에 해당하는 캐시값 자체를 삭제한다.
inner span의 line-height가 16이고, vertical padding이 각각 2px일 때,
flex
이면 최종 height가 19.99px로 딱 맞아 떨어지지만.block
이면 최종 height는 20.895px로 한참 다르다. (목표는 20px)왜 그런지는 모르겠다 🤷♀️
[0-9]
와 \d
의 차이Huffman-coding은 \d
를 ASCII 숫자로 인식하기 때문에, [0-9]
를 사용하는 것이 바람직하다. (성능은 더 안 좋을 지도?)
It seems to me very dangerous to use
\d
, It is a poor design decision in the language, as in most cases you want[0-9]
. Huffman-coding would dictate the use of\d
for ASCII numbers.
Ref https://stackoverflow.com/questions/890686/should-i-use-d-or-0-9-to-match-digits-in-a-perl-regex
new Date()
로 날짜 생성 시, IE에서 날짜를 파싱하지 못하는 경우가 있기 때문이다. (ex. 2022. 07. 30
은 OK, 2022-07-30
은 에러) (Ref)map<U>(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[];
/(a|b|c)/
보다 /[abc]/
가 성능이 좋다.new RegExp('s')
보다 /s/
가 성능이 좋다.나의 소중한 2019년 맥북 프로 16인치는… 애플 공인센터를 거쳐 사설에 가셨다. 애플은 진짜 양아치놈들이 맞다. 사설에서 적당한 가격으로 수리해주면 좋겠다…
이번주는 기능개발에만 거의 몰두했다. 하고싶었던 피쳐라 이것저것 사소한 것 의견도 내가면서 열심히 개발하고 있다. 이번 스프린트에 무사히 잘 나갔으면!
밋업 발표도 잘 마무리했다. 발표까지 해버렸으니 이제 그룹을 더 부흥시킬 일만 남았다…
유캔두에 참여했던 4기 크루들을 만났당. 한 기수 지났을 뿐인데 정말 연령대가 훅 낮아졌다. 코치님과 3-4기 크루들과 신나게 떠들다 왔다. 양평방 조아