Fork me on GitHub

2021-03-23: Node.js 15.12.0(fs.promises 성능 개선), strict CSP, CSS Auditing Tools

Translator: U-Yeong Ju Edit on GitHub See Revisions

JSer.info #532 - Node.js 15.12.0이 릴리스 됐다.

fsreadFile / writeFile에 대한 Promise 버전인 fs.promisesreadFile / writeFile가 느리다는 Issue가 있다.

Node.js 15.12.0에는 이 성능 문제에 대한 개선 내용이 포함됐다.

그 외로는 crypto.create{Public,Private}Key가 JWK 객체를 지원, AbortSignal.abort() 구현, worker_threads 모듈에 {get,set}EnvironmentData가 추가됐다.


Mitigate cross-site scripting (XSS) with a strict Content Security Policy (CSP)에서 Content Security Policy (CSP)를 사용한 XSS의 영향을 줄일 수 있는 접근법에 대해 다루고 있다.

CSP에는 특정 URL을 화이트 리스트로 다루는 설정이 있는데, 허가한 URL에 JSONP 등의 엔드포인트가 있을 때 CSP가 우회 되는 문제가 알려져 있다.

때문에 nonce 기반이나 hash 기반의 strict한 CSP 설정을 하여 CSP가 우회 돼 버릴 가능성을 줄인다.
이 글에서는 nonce 기반과 hash 기반의 strict CSP 설정을 다루는 방법에 대해서 작성돼 있다.


CSS Auditing Tools — Smashing Magazine에는 CSS의 Audit 도구가 알기 쉽게 한데 정리돼 있다.

각각의 도구를 소개하고 어떠한 항목을 측정하거나 조사할 수 있는지 정리돼 있다.


헤드라인


Node v15.12.0 (Current) | Node.js

nodejs.org/en/blog/release/v15.12.0/

node.js ReleaseNote

Node.js 15.12.0 릴리스.
crypto.create{Public,Private}Key가 JWK 객체를 지원하며 fs.promises의 writeFile과 readFile의 성능 문제가 개선됐다.
AbortSignal.abort() 구현, worker_threads 모듈에 {get,set}EnvironmentData가 추가됐다.


V8 release v9.0 · V8

v8.dev/blog/v8-release-90

V8 ReleaseNote

V8 v9.0 릴리스.
RegExp#insices 구현, super 속성에 접근할 때의 성능 개선, JavaScript에서 Wasm의 함수를 호출할 때의 성능 개선.


Release v7.3.0 · GoogleChrome/lighthouse

github.com/GoogleChrome/lighthouse/releases/tag/v7.3.0

performance Tools ReleaseNote Chrome

Lighthouse 7.3.0 릴리스.
새로운 audit으로 csp-xss를 실험적으로 추가.


jasmine/3.7.0.md at main · jasmine/jasmine

github.com/jasmine/jasmine/blob/main/release_notes/3.7.0.md

JavaScript library ReleaseNote testing

Jasmine 3.7 릴리스.
Node.js의 Source Maps에 대응, Array.prototype를 확장하고 있을 때에 일부 테스트가 누락되는 문제 수정, .and.callFake에서 Generator 함수를 지원한다.


ECMAScript proposal updates @ 2021-03 | ECMAScript Daily

ecmascript-daily.github.io/ecmascript/2021/03/22/ecmascript-proposal-update

ECMAScript news

2021년 3월에 변경된 TC39의 ECMAScript Proposal 정리.
Module Fragments가 Stage 1으로, Array#findLast가 Stage2로, Temporal가 Stage 3로 각각 갱신됐다.


sinon/CHANGELOG.md at master · sinonjs/sinon

github.com/sinonjs/sinon/blob/master/CHANGELOG.md#1000--2021-03-22

JavaScript testing library ReleaseNote

Sinon.js 10.0.0 릴리스.
IE 11, Legacy Edge, Legacy Safari 지원 종료.


아티클


Mitigate cross-site scripting (XSS) with a strict Content Security Policy (CSP)

web.dev/strict-csp/

CSP article security

도메인 허가 목록을 이용한 CSP 보다도 strict 설정을 이용한 CSP를 권장한다는 글.
nonce와 strict-dynamic 기반의 CSP설정으로 막을 수 있는 XSS, nonce 기반과 hash 기반의 CSP 설정, CSP 도입 절차에 대해 정리돼 있다.


Supabse 팀은 어떻게 프런트엔드의 고속화에 성공했는가 - 벤쿠버에서 생각중(일본어)

jp.taishikato.com/posts/making-the-supabase-dashboard-supa-fast

performance article

Making the Supabase Dashboard Supa-fast의 일본어 번역글.
베이스라인과 목표 설정, 번들 사이즈 개선, 성능 문화 등에 대해서 다룬다.


The #1 tip to familiarize with new JavaScript Codebases

www.kevinpeters.net/the-fastest-way-to-understand-new-code-bases

JavaScript article

code-complexity를 사용한 코드의 복잡도 분석에 대해 이야기한다.
Complexity와 Churn에 대해서 설명하고 있다.


CSS Auditing Tools — Smashing Magazine

www.smashingmagazine.com/2021/03/css-auditing-tools/

CSS article Tools

CSS의 Audit 도구를 정리 소개하는 글.
CSS 셀렉터의 Specificity, 복잡도 측정, Code Coverage, 지속적인 분석 등.


Next 10 years of Node.js — Understanding the needs of the Node.js constituencies | by Node.js | Mar, 2021 | Medium

nodejs.medium.com/next-10-years-of-node-js-understanding-the-needs-of-the-node-js-constituencies-2f95a1df6a6f

node.js article

Node.js의 다음 10년에 관해 이야기한다.


소프트웨어, 도구, 라이브러리


101arrowz/isoworker: Isomorphic workerization with context support

github.com/101arrowz/isoworker

browser node.js library

WebWorker와 worker_threds에 대응한 Worker 라이브러리.
Inline Code를 Worker 코드로 생성하고, Worker에 클래스나 함수를 포함한 데이터를 전달하여 실행한 결과를 얻을 수 있다.


taoqf/node-html-parser: A very fast HTML parser, generating a simplified DOM, with basic element query support.

github.com/taoqf/node-html-parser

HTML DOM library

HTML 파서와 DOM API를 제공하는 라이브러리.
파싱한 결과 객체를 DOM API와 같은 메서드로 조작할 수 있다.


Hello from tRPC | tRPC

trpc.io/

JavaScript browser node.js library TypeScript React Next.js

HTTP 통신의 데이터 레이어 라이브러리.
TypeScript와 yup / zod 등의 벨리데이터 기반으로 서버 측의 API 엔드포인트를 정의하며 그 타입을 클라이언트에서도 이용할 수 있는 구조 제공.
React 용 Hooks와 SSR에 대응한 클라이언트 라이브러도 공개돼 있다.


Charts.css

chartscss.org/

CSS library

CSS만으로 제작한 그래프 라이브러리.
다양한 종류의 차트 표현을 제공한다.


도서


Learning TensorFlow.js

learning.oreilly.com/library/view/learning-tensorflowjs/9781492090786/

JavaScript MachineLearning book

2021년 7월 추간 예정인 TensorFlow.js 입문서.


Pull Request to this article
JSer.info Slackに参加する