2021-11 
๋งํฌ & ์ฝ์๊ฑฐ๋ฆฌ
A spooky error when you have a string bigger than 512MB in Chrome
Chrome ๋ธ๋ผ์ฐ์ ์์ ์ฒ๋ฆฌํ ์ ์๋ ์ต๋ ๋ฌธ์์ด์ ํฌ๊ธฐ๋ ์ผ๋ง์ผ๊น?
๊ฒฐ๋ก ๋ถํฐ ๋งํ์๋ฉด 512MB ์ด์์ ๋ฌธ์์ด์ ์ฒ๋ฆฌํ์ง ๋ชปํ๋ค. ์ต์ ๋ฒ์ ์ธ 95(Canary 97 ํฌํจ)์์ ์ ๋๋ก ์ฒ๋ฆฌํ์ง ๋ชปํ๋ฉฐ, ์ด๋ ๊ฐ์ chromium ๊ณ์ด์ธ Edge์ Opera๋ ๋ง์ฐฌ๊ฐ์ง๋ค. Firefox์ Safari์์ ์ ์ ๋์ํ๋ค.
const len = 536_870_888; // +1์ ํ๋ฉด?
const buf = new Uint8Array(len);
for (let i = 0; i < len; i++) {
buf[i] = "a".charCodeAt(0);
}
const str = new TextDecoder().decode(buf);
console.log(str.length); // 536870888 ์ถ๋ ฅ
// ๊ฐ๋จํ ๋ฐฉ๋ฒ์ผ๋ก๋ ์๋์ ๊ฐ์ด ํ
์คํธ ํด๋ณผ์๋ ์๋ค.
"a".repeat(536_870_888 + 1).length // Uncaught RangeError: Invalid string length
Mocking์ผ๋ก ์์ฐ์ฑ๊น์ง ์ฑ๊ธฐ๋ FE ๊ฐ๋ฐ

Front-end ๊ฐ๋ฐ์๊ฐ ์ฝ๊ฒ ๊ฒช๊ฒ ๋๋ ๋ฐฑ์๋ ๊ฐ๋ฐ ์์กด์ฑ์ ํด๊ฒฐํ๊ธฐ ์ํด Mocking์ ์ ๊ทน์ ์ผ๋ก ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ ์ํ๋ค.
MSW.js
๋ฅผ ์ด์ฉํ์ฌ Mocking์ ํ๊ณ , ๋ฐฑ์๋๊ฐ ์ค๋น๋์ง ์์ ๊ฒฝ์ฐ์๋ Front-end ๊ฐ๋ฐ์ ์งํํ ์ ์๋ค.
React Derived State ๋ค์ ๋ณด๊ธฐ

React
์ Derived State
์ ๋ํด์ ์์๋ณด๊ณ , Derived State
๋ฅผ ์ฌ์ฉํ๋ค ์๊ธด ๋ฌธ์ ๋ฅผ ํ์ธํ๊ณ ,
๊ฐ์ ๋ฐฉ๋ฒ์ธ FULLY CONTROLLED COMPONENT
, FULLY UNCONTROLLED COMPONENT + KEY
๋ฅผ ์๊ฐํ๋ค.
A Visual Guide to React Rendering - Cheat Sheet
React์์ ๋ถํ์ํ Re-rendering์ด ๋ฐ์ํ ์ ์๋ ์ผ์ด์ค๋ค์ ๋ชจ์ ๋์ Cheet Sheet์ด๋ค.
๊ฐ ์ผ์ด์ค๋ณ๋ก ์ํฉ์ ๋ณด์ฌ์ฃผ๊ณ , ํด๊ฒฐ์ฑ
์ ์ ์ํด ์ค๋ค.
๋์น๊ธฐ ์ฌ์ด ๋ถ๋ถ์ด๋ ์ด๋ณด React ๊ฐ๋ฐ์๋ผ๋ฉด ๊ผญ ์ฝ์ด๋ณด๊ธธ ์ถ์ฒํ๋ค.
JS์ ๊ฐ์ฒด๋ hash table์ด ์๋๋๋ค!

V8 ์์ง
์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ JS์ ๊ฐ์ฒด๊ฐ Hash Table
์ด ์๋ ๊ฒ์ ๊ณต๋ถํ ์๊ฐ ํ๋ฆ์ ๋ฐ๋ผ ์ ๋ฆฌํ ๊ธ์ด๋ค.
์ด ๊ธ์ ํตํด JS Object
๋ ์ด๋ค ๊ตฌ์กฐ๋ก ๋์ด ์๋์ง, Array
์ ์ํ์ ํผํฌ๋จผ์ค๋ฅผ ์ ๋ฆฌํ๊ฒ ๋์ํ๊ฒ ํ๋ ๋ฐฉ๋ฒ, ๋์ ํ์ดํ ์ธ์ด์ ํน์ง ๋ฑ์ ์ ์ ์๊ณ
๊ฒฐ๋ก ์ ์ผ๋ก ์ Hash Table
๋ก ๊ตฌํ๋์ง ์์ ์ด์ ๊น์ง ์ค๋ช
ํ๋ค.
ํฌ๋กฌ ์ต์คํ ์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ๋ค๋ฃฐ ๊ฒ์ธ๊ฐ? (ํผํธ์คํ๊ณผ์ โ ํฌ๋กฌ ์ต์คํ ์ ๊ฐ๋ฐ๊ธฐ)

๋ณต์กํ ์ฌ๋ฌ ํผ์ ๋ํด ์
๋ ฅ์ ์๋ํ ํด์ ํฌ๋กฌ ์ต์คํ
์
์ ๋ง๋๋ ๊ณผ์ ์์,
๋ฐ์ดํฐ๋ฅผ ์ ์ฅ์๋ฅผ ์ด๋ค ๊ฒ์ ์ ํํ์๋์ง ๋ ์ ์ฅ ์ฝ๋์ ์์น์ ๋ฐ๋ผ
๋ค๋ฅด๊ฒ ๋์ํ๋ ๋ถ๋ถ์ ์๊ฐํด ์ค๋ค.
๋ธ๋ผ์ฐ์ ์ ์ฌ์ฉ์ ์์ด์ ํธ๋ ์ ์ด๋ ๊ฒ ๋ณต์กํ๊ฒ ์๊ฒผ์๊น?

๋ธ๋ผ์ฐ์ ์ ์ฌ์ฉ์ ์์ด์ ํธ๊ฐ ๋ณต์กํ ์ญ์ฌ์ ์ธ ์ด์ผ๊ธฐ๋ฅผ ์ ์ ๋ฆฌํ ๊ธ์ด๋ค.
๊ฒฐ๋ก ์ ์ฐ์ ํ ๋ง๋๋ก ์์ฝํ์๋ฉด, ํธํ์ฑ์ ์ ์งํ๊ธฐ ์ํด์ ์ ๋๋ค.
- ์ธํฐ๋ท ์ต์คํ๋ก๋ฌ(IE)๊ฐ ๋ท์ค์ผ์ดํ ๋ธ๋ผ์ฐ์ ์ UA๋ฅผ ํ๋ด๋์ผ๋ก์จ, ์ฒ์์ผ๋ก UA๊ฐ ๋๋ฝํ์ง๊ธฐ ์์ํ๋ค.
- ๋ชจ์ง๋ผ ์ฌ๋จ์ด ๋ท์ค์ผ์ดํ ๋ธ๋ผ์ฐ์ ์ ๋ ๋ ์์ง์ ์คํ์์ค ํ๋ก์ ํธ๋ก ๊ณต๊ฐํ ํ๋ถํฐ๋ ๋ธ๋ผ์ฐ์ ๋ ๋ ์์ง ์ ๋ณด๋ UA์ ์ถ๊ฐ๋๊ธฐ ์์ํ๋ค.
- ๋ธ๋ผ์ฐ์ ์ ์ ์ดํ ๋ค์ํ ๋ธ๋ผ์ฐ์ ๊ฐ ์๊ฒผ๋๋ฐ, ํธํ์ฑ์ ์ ์งํ๊ธฐ ์ํด ๊ธฐ์กด ๋ธ๋ผ์ฐ์ UA์ ์คํธ๋ง์ ๊ณ์ ๋ง๋ถ์ด๋ค๋ณด๋ ์ง๊ธ๊ณผ ๊ฐ์ ๋์ฐํ ํํ๊ฐ ๋์ด๋ฒ๋ ธ๋ค.
๊ธ์ ์ฝ์ผ๋ฉด ๋ ์์ธํ ์ด์ผ๊ธฐ๋ฅผ ์ฝ์ ์ ์๋ค.
ํํ ๋ฆฌ์ผ
4 Essential Tips for Better Asynchronous Code in JavaScript
์๋ก์ด ํ๋ก๊ทธ๋๋ฐ ํ
ํฌ๋์ ๋ฐฐ์ฐ๋ ๊ฒ์ ๋จ์ํ ์ฝ๋๊ฐ '๋์'๋๋ ๊ฒ์์ '์ข์ ์ฝ๋'๋ก์ ๋ฐ์ ์ ์๋ฏธํ๋ฉฐ,
๋ ๋์ ๋น๋๊ธฐ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ณธ๋ฌธ์์ ์๊ฐํ๋ 4๊ฐ์ ํ์ ํญ์ ์ ์ฉํ ๊ฒ์ด๋ค.
Candy Crush in React

React
๋ฅผ ์ด์ฉํด Candy Crush
๊ฒ์์ ๋ง๋ค์ด๋ณด๋ ํํ ๋ฆฌ์ผ ์์์ด๋ค.
์ฝ๋์ ๋๊ตฌ
vscode.dev(!)

stackoverflow์ 2021 ํต๊ณ์ ๋ฐ๋ฅด๋ฉด VS Code
๋ ๊ฐ์ฅ ๋ง์ ๊ฐ๋ฐ์๋ค์ด ์ ํํ๋ IDE์ด๋ค.
์ด๋ฐ VS Code
์ ์น ๋ฒ์ ์ด ๊ณต๊ฐ๋์๋ค.
VS Code
๋ฅผ ์ค์นํ ์ ์๋ ํ๊ฒฝ(iPad, Chromebook)์์๋ ์คํ์ด ๊ฐ๋ฅํ๋ค.
github
์ ๊ฒฝ์ฐ clone ์์ด https://vscode.dev/github.com/microsoft/vscode
์ง์ ์ ๊ทผ๋ ๊ฐ๋ฅํ๋ค.
Live Share
์ ๊ฒฝ์ฐ์๋ ์ค์น ์์ด ํ์
์ ํ ์ ์๋ค.
๋ํ GitHub ํ๋ก์ ํธ์ ๊ฒฝ์ฐ, ๋๋ฉ์ธ์ .com
โ .dev
๋ก ๋ณ๊ฒฝํ๋ฉด ์์ฝ๊ฒ ์จ๋ผ์ธ VSCode๋ก ํ๋ก์ ํธ๋ฅผ ์ด์ด๋ณผ ์ ์๋ค.
ex. https://github.com/facebook/react โ https://github.dev/facebook/react
Sucrase
Babel๊ณผ ๊ฐ์ ํธ๋์คํ์ผ๋ฌ๋ ๋ ๊ฑฐ์ ๋ธ๋ผ์ฐ์ ์์์ ์คํ์ ์ํด ๋ชจ๋ ์ฝ๋๋ฅผ ๋ณํํ์ง๋ง, Sucrase๋ ๊ฐ๋ฐ์๋ค ๋๋ค์๊ฐ ๊ฐ๋ฐ ํ๊ฒฝ์์ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๊ณ ๊ฐ์ ํด JavaScript ์ฝ๋๋ ๋ณํํ์ง ์๊ณ , ๊ผญ ํธ๋์คํ์ผ์ด ํ์ํ JSX๋ TypeScript์ ์ง์คํด ๋น ๋ฅด๊ฒ ๋น๋๋ฅผ ์ํํ๋ ๋๊ตฌ๋ค.
๋ค์์ 36๋ง ๋ผ์ธ์ ์ฝ๋์ ๋ํ ๋ฒค์น๋งํฌ ๊ฒฐ๊ณผ๋ก, Babel ๋ณด๋ค 20๋ฐฐ ๋น ๋ฅธ ์ฑ๋ฅ์ ๋ณด์ฌ์ค๋ค.
Time Speed
Sucrase 1.64 seconds 220221 lines per second
swc 2.13 seconds 169502 lines per second
esbuild 3.02 seconds 119738 lines per second
TypeScript 24.18 seconds 14937 lines per second
Babel 27.22 seconds 13270 lines per second
React Hooks in Svelte

Svelte ๋ฒ์ ์ผ๋ก ํฌํ ๋ React Hooks ์์ ๋ค ๋ชจ์
TypeScript Boilerplate for 2021
2021๋ ์์ ์์ ๋น ๋ฅด๊ฒ TypeScript ๊ธฐ๋ฐ ํ๋ก์ ํธ๋ฅผ ์์ํ ์ ์๋ boilerplate๋ก, TS4, esbuild(optional), Jest, TypeDoc ๋ฑ์ ์ฌ์ฉํ๋ค.
VSCode์์ Bracket Pair Colorizer ์ญ์ ํ๊ณ ๋ด์ฅ ๊ธฐ๋ฅ ์ฌ์ฉํ๊ธฐ

๊ดํธ(Bracket)์ ์์ ๋ง์ถ์ด ์ฃผ๋ VS Code
์ ๋๊ตฌ๋ก Bracket Pair Colorizer
ํ๋ฌ๊ทธ์ธ์ด ์์ง๋ง,
์ฑ๋ฅ ์ด์๋ก ์์ฒด์ ์ผ๋ก ๋์ผํ ๊ธฐ๋ฅ์ ํ๋ ์ต์
์ ์ ๊ณตํ๋ค๊ณ ํ๋ค. ์ด ๊ธ์ ๋ฐ๋ผ๊ฐ๋ฉด ์ฝ๊ฒ ์ค์ ์ ๋ณ๊ฒฝํ ์ ์๋ค.