읽은 좋은 글들 (~22.5.10)
이 글은 메일링, 블로그, 구글링 등을 통해 읽은 좋은 글들을 모아놓은 글이다.
JavaScript
JavaScript Symbol의 근황
Symbol
에 대한 간략한 소개. 지나가다가 Symbol.iterator
만 몇 번 본 적 있지 Symbol
그 자체에 대해서는 무지했는데, 이 글을 통해 간략하게나마 알게 되었다. 훑어보기에 좋은 글이다.
How return await can slow down your code
return await someAsyncFunc()
형식의 사용이 성능 상 좋지 않은 점에 대해 설명하는 글.
// 1
async function doWait() {
return await work();
}
// 2
async function dontWait() {
return work();
}
// 3
function justReturn() {
return work();
}
세 코드 모두 결과는 같다. 다만 퍼포먼스 관점에서는 3번이 제일 낫다. 왜냐하면 1, 2번 코드는 work()
가 하는 일이 promise 이든 non-promise 이든, 무조건 이벤트 루프를 타기 때문이다.
(사실 2번은 좀 명확하지 않다. 본문의 벤치마크 결과에서 async () => await work()
가 느린 건 명확하게 나왔는데, 뜬금없이 다른 예를 () => await work()
라고 표시하고 있기 때문이다. 문맥상 async () => work()
의 오기일 것 같긴 하다.)
본문에는 위 내용에 더해 벤치마크 방법과 결과, 에러 핸들링 방식, eslint 로 1,2번 형식을 방지하는 방법 등이 나와있다. 읽어보기를 권한다.
React
Testing Overview - React
React 에서 테스트를 하고 싶다고? 그렇다면 멀리 갈 필요 없다. 공식 문서에 너무나도 잘 정리가 되어있다. 해당 문서인 오버뷰는 물론 하위 문서들도, 짧지만 알차게 작성되어 있다.
그동안 "javascript test framework" 등으로 구글링만 하며 공식 문서를 무시했었던 과거를 반성해본다.
덧붙여 React Native 를 위한 공식 문서도 따로 있다.
File-based routing with React Router
Next.js 없이 file-based 라우팅을 구현하는 글. 문제는 CRA나 Webpack dev server 없이, Vite 라는 툴을 사용해야 하는 것 정도.
Vite 의 Glob Import 기능이 주요하게 쓰인다. Vite 없이 이 기능만 쓸 수 없나 하고 구글링을 좀 해보았는데 찾지 못했다. 그나마 비슷한 게 import-glob 정도. 이 코드를 참고해 Webpack loader 를 직접 구현해야 하지 않을까 싶다.
이 글은 시리즈 중 첫 편이다. 시리즈의 다른 글들도 천천히 살펴 볼 생각이다.
use-clamp-text
여러 줄의 문자열을 원하는 줄 수 만큼만 보여주고 생략처리를 해주는 라이브러리(hook). 코드가 길지 않아서 (173라인) 천천히 읽어봐도 괜찮다. 내부적으로 이진 탐색을 사용했다.
Etc
웹프론트엔드 개발자의 Rust 돌려까기
Rust 를 사용?학습?해 본 프론트엔드 개발자의 후기. GC 가 없고 소유권이라는 개념을 사용하며 진입장벽이 높다고 한다. 나중에 한 번 학습해봐야겠다.
Refresh Token과 Sliding Sessions를 활용한 JWT의 보안 전략
JWT 토큰을 사용해 세션을 관리할 때 전략 별로 어떤 장단점이 있는지 정리한 글이다. 글에서 분류한 전략은 네 가지가 있다.
- Access Token 사용
- Sliding Session 전략 + Access Token 사용
- Access Token + Refresh Token 사용
- Sliding Session 전략 + Access Token + Refresh Token 사용
각 전략의 장단점은 본문에 잘 나와있다. 결론은 적용하려는 서비스의 특성에 맞게 올바른 전략을 사용해야 한다는 것이다.
[TIL] Why need refresh token?
Refresh Token 그 자체는 Access Token 과 같은 토큰일 뿐이다. Access Token 보다 보안상 우위에 있을 수는 없다. Refresh Token 의 보안은 서버 측에서 안전한 DB/store 에 저장하면서 관리해야지만 의미가 있다.
라는 내용이다.