2021-05 
๋งํฌ & ์ฝ์๊ฑฐ๋ฆฌ
Real-world CSS vs. CSS-in-JS performance comparison
CSS-in-JS๋ Front-end ๊ฐ๋ฐ ์์ญ์ ํ๊ณ ํ ํ์๋ฆฌ๋ฅผ ์ฐจ์งํด ๋๊ฐ๊ณ ์์ด ๋ณด์ด๋ฉฐ, ํนํ๋ React ์์ญ์์ ๋ ๋๋๋ฌ์ ธ ๋ณด์ธ๋ค.
๋งคํด ์กฐ์ฌ๋๋ "State of CSS 2020" ์ค๋ฌธ์กฐ์ฌ์์๋ ๋ํ์ ์ธ CSS-in-JS ๋๊ตฌ์ธ Styled Components๋ฅผ ๋ค์ด๋ณธ ์ ์ด ์๋ค๊ณ ๋ต๋ณํ ์ด๋ 14.3%์ ๋ถ๊ณผํด CSS-in-JS๋ ์ด์ ๋๋ฆฌ ์๋ ค์ง ๊ฐ๋ฐ ๋ฐฉ์์ด๋ผ ๋งํ ์ ์์ด ๋ณด์ธ๋ค.
์ด ๊ธ์ ์ฃผ์ CSS-in-JS ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ๋ํ ํ์ค ์ธ๊ณ(real-world) ์ ํ๋ฆฌ์ผ์ด์ ์์์ ์ฑ๋ฅ ๋น๊ต๋ฅผ ์๊ฐํ๋ค. ๊ทธ๋ฌ๋ CSS-in-JS๋ ์ด๋ค ์์ผ๋ก๋ ๋ก๋ฉ ์ฑ๋ฅ(JS ํ์ผ ํฌ๊ธฐ๊ฐ ์์ ๊ฒ์ด ๋ ๋์ ์ฑ๋ฅ์ ๊ธฐ๋)์ ์ํฅ์ ๋ฏธ์น ์๋ฐ์ ์๊ธฐ ๋๋ฌธ์, ๋ก๋ฉ ์ฑ๋ฅ์ ๋ฏผ๊ฐํ๋ค๋ฉด CSS-in-JS๋ ์ฌ๋ฌ๋ถ์ ์ ํ์ง๊ฐ ์๋ ์๋ ์๋ค.
Working With Strings in Modern JavaScript
์ด ๊ฐ์ด๋๋ JavaScript์์ ๋ฌธ์์ด์ ๋ค๋ฃจ๊ธฐ ์ํด ํ์ํ ๋ชจ๋ ๋ด์ฉ์ ๋ด๊ณ ์์ผ๋ฉฐ, ๋ฌธ์์ด์ ์์ฑ, ์กฐ์ ๊ทธ๋ฆฌ๊ณ ๋น๊ต ๋ฐฉ๋ฒ์ ๋ํ ๋ชจ๋ ๋ด์ฉ์ ๋ค๋ฃจ๊ณ ์๋ค.
Slow and Steady: Converting Sentryโs Entire Frontend to TypeScript
์ค๋ฅ ๋ก๊น ํ๋ซํผ/๋๊ตฌ์ธ Sentry๊ฐ ๋ชจ๋ ์ฝ๋ ๋ฒ ์ด์ค๋ฅผ JavaScript์์ TypeScript๋ก ์ ํํ ๊ฒฝํ์ ์๊ฐํ๋ ๊ธ๋ก, 12๋ช ์ด์์ ์์ง๋์ด๋ง ํ์ด ์ฐธ์ฌํด 1.1k ์ฌ๊ฐ์ ํ์ผ๋ค์์ 95k ๋ผ์ธ์ ๋ํ ์ฝ๋๋ค์ ๋ํ ์์ ์ด ์งํ๋์๋ค๊ณ ํ๋ค.
How to actually test UIs
UI๋ฅผ ํ ์คํธํ๋ ๊ฒ์ ์ฝ์ง ์์ ์ผ์ด๋ค. ๋งค ๋ฆด๋ฆฌ์ค๋ง๋ค ์๋กญ๊ณ ๋ง์ ๊ธฐ๋ฅ๋ค๋ก ์ธํด UI์ ์ํ๋ ๋น๋กํด์ ์ฆ๊ฐํ๊ณ , ๋ชจ๋ ํ ์คํธ ๋๊ตฌ๋ค์ "์ฝ๊ณ , ๋น ๋ฅด๊ณ , ์ ํํธ๋ฌ์ง์ง ์๋" ํ ์คํธ๋ฅผ ๋ง๋ค ์ ์๋ค๊ณ ๋งํ์ง๋ง ํ์ค์ ๊ทธ๋ ์ง ์๋ค.
Storybook ์ปค๋ฎค๋ํฐ ๋ด์ 10๊ฐ ํ๋ค์ด ์ฌ์ฉํ๋ UI ํ ์คํธ ํ ํฌ๋์ ํตํด ์ด๋ป๊ฒ ์ค์ฉ์ ์ธ ํ ์คํธ ์ ๋ต์ ๋ง๋ค ์ ์๋์ง๋ฅผ ์๊ฐํ๋ค.
[V8 Deep Dives] Random Thoughts on Math.random()
V8์์ Math.random
์ ECMA specification๋ถํฐ torque
, C++
๋ก ๋์ด์๋ ๊ตฌํ ๋ก์ง์ ๋ฐ๋ผ๊ฐ ๋ณธ๋ค.
์ด๋ฅผ ํตํด ์ Math.random
์ด ๋ณด์์ ์ฌ์ฉํ๋ฉด ์ ๋๋์ง ํ์ธํด ์ค๋ค.
V8์ ๋ํด์ ๊ด์ฌ์ด ์๊ฒผ๋ค๋ฉด ์๋ ๊ธ๋ค์ ์ถ๊ฐ๋ก ์ฝ์ด๋ณผ ๊ฒ์ ์ถ์ฒํ๋ค.
Javascript Closure๋ Private ๋ณ์ ๋ง๋๋ ์ฉ๋์ธ๊ฐ?
Javascript Closure์ ๋ํด์ ์ด๋ป๊ฒ ์ ๊ทผํ๋ฉด ์ข์์ง์ ๋ํ ์ข์ ๋ฐฉํฅ์ ์ ์ํด ์ค๋ค.
ํ์ด์ค๋ถ React Korea
๊ทธ๋ฃน์ ๋๊ธ์ ์ข์ ์๊ฒฌ์ด ์์ด ๋งํฌ๋ฅผ ์ฒจ๋ถํ๋ค.
https://www.facebook.com/groups/react.ko/permalink/2834835133443307/
์ ๋ ฅ์ ๋ค๋ฃจ๋ ๋ค์ํ ๋ฐฉ๋ฒ
React์์๋ Form์ ์๊ฐ ๋ง์์ง์๋ก ์ฝ๋์ ์ํ ๊ด๋ฆฌ๊ฐ ๋ณต์กํด์ง๊ณ ์ด๋ ค์ฐ๋ฉฐ, ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ๊ฒช์ ์ ์๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด useImperativeHandle
, Uncontrolled Component
์ ์ค๋ช
ํ๊ณ , ์ด๋ฐ ๋ถ๋ถ์ด ๊ณ ๋ ค๋์ด ์๋ react-hook-form
์ ์๊ฐํ๋ค.
Webpackโs Hot Module Replacement Feature Explained
Webpack์์ HMR์ด ์ ์๊ฒผ๋์ง, HMR์ด ์ด๋ค ๋ฐฉ์์ผ๋ก ์ผ์ด๋๋์ง ๊ฐ๋จํ๊ฒ ์ค๋ช ํ๊ณ , ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ์๋ ค์ค๋ค.
ํํ ๋ฆฌ์ผ
JavaScript Game For Beginners: Sprite Animation

์ค์ ๊ฒ์ ๊ฐ๋ฐ์์ ๋ง์ด ์ฌ์ฉํ๋ Image Sprites ๊ธฐ๋ฒ์ JavaScript canvas๋ก ๊ตฌํํ ๊ณผ์ ์ ๋ด์ ์์์ด๋ค. ํด๋น ์ ํ๋ธ ์ฑ๋์ Javascript๋ก ๋ง๋๋ ๊ฒ์, ์ ๋๋ฉ์ด์ ์ ๋ํ ์๋ฃ๊ฐ ๋ง์ผ๋ ๊ด์ฌ์ด ์๋ค๋ฉด ํ์ธํด๋ด๋ ์ข๋ค.
์ฝ๋์ ๋๊ตฌ
Equality in JavaScript
JavaScript ๋ฌธ๋ฒ์ ํตํด ๋๋ฑ ์ฐ์ฐ์(==
)๋ฅผ ์ํํ๋ ๊ฒฝ์ฐ, ์๊ฐํ๋ ๊ฒ๊ณผ๋ ๋ค๋ฅธ ๋นํฉ์ค๋ฌ์ด ๊ฒฐ๊ณผ๋ฅผ ์ป๊ฒ ๋ ๋๊ฐ ์๋ค.
[] == "" // true
[] == 0 // true
undefined == null // true
...
// ๊ทธ๋ง ์์๋ณด๋๋ก ํ์. -,-
์ด๋ค ๊ฐ๊ณผ ๋น๊ตํ์ ๋ true/false ์ธ์ง ์ ๊ธฐ์ต๋์ง ์๋๋ค๋ฉด ๋น๊ต ํ ์ด๋ธ์ ํตํด ํ์ธํด ๋ณด์. ์ถ๊ฐ๋ก ๋ค์ํ ์ฌ๋ก๋ค๊ณผ ์ค๋ช ์ ๋ชจ์๋ wtfjs๋ ํ์ธํด ๋ณด์.
Debug Why React (Re-)Renders a Component
React์ ๋ ๋๋ง, Virtual Dom์ ๊ฐ๋จํ ์ค๋ช ํ๊ณ , ๋ ๋๋ง์ด ๋ ์ด์ ๋ฅผ ์ ์ ์๋ ํด์ ์๋ ค์ค๋ค.
- ๋ ๋๋ง์ ์๊ฐํ: React DevTools์ ์ค์
- ๋ ๋๋ง ๋ ์ด์ : React DevTools์ Profiler
- hook์ ๋ ๋๋ง ๋ ์ด์ Why Did You Render
์ด ๊ธ์ ํตํด React๊ฐ Component๋ฅผ ๋ค์ ๋ ๋๋ง ํ๋ ์ด์ ์ ๋์์ ์๊ฐํํ๊ณ ๋๋ฒ๊น ํ๋ ๋ฐฉ๋ฒ์ ์ ์ ์๋ค.
Solving a Mystery Behavior of parseInt() in JavaScript
parseInt
๊ฐ ์๋ ์ฝ๋์ ๊ฒฝ์ฐ ์๋๋๋ก ๋์ํ์ง ์๋ ์์ธ์ ์์๋ณธ๋ค.
parseInt(0.0000005); // => 5
parseInt(999999999999999999999); // => ?
Using the Switch(true) Pattern in JavaScript
switch true ํจํด์ ๋ํด์ ์ค๋ช ํ๊ณ ์ด๊ฒ์ด ์ธ์ ์ ์ฉํ์ง ์๋ ค์ค๋ค.
switch (true) {
case !user:
throw new Error("User must be defined.");
case !user.firstName:
throw new Error("User's first name must be defined");
case typeof user.firstName !== "string":
throw new Error("User's first name must be a string");
// ...lots more validation here
default:
return user;
}
Thunder Client
VS Code ํ๋ฌ๊ทธ์ธ์ผ๋ก Rest API ํด๋ผ์ด์ธํธ ๋๊ตฌ๋ก ์ ๋ช ํ Postman๊ณผ ์ ์ฌํ ๊ธฐ๋ฅ๋ค์ ์ ๊ณตํ๋ค.
Pkg
Next.js๋ฅผ ๊ฐ๋ฐํ Vercel์์ ๊ฐ๋ฐํ ๋๊ตฌ๋ก, ๊ฐ๋ฐํ Node.js ํจํค์ง๋ฅผ Node.js๊ฐ ์ค์น๋์ง ์์ ํ๊ฒฝ์์๋ ์คํ ๊ฐ๋ฅํ ํ์ผ๋ก ๋ง๋ค์ด ์ค๋ค.
Appsmith
JavaScript ๊ธฐ๋ฐ์ ๋น์ฃผ์ผ ๊ฐ๋ฐ ํ๋ซํผ์ผ๋ก ๋ด๋ถ ๋๊ตฌ๋ค์ ๋น ๋ฅด๊ณ ์ฝ๊ฒ ๋ง๋ค ์ ์๊ฒ ํ๋ค. ๋นํธ์ธ ๋ ์์ ฏ๋ค์ ๋๋๊ทธ ๋๋กญ์ผ๋ก ๋์ด๋ค ๋์ ํ, ์๋น์ค์ API๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฒ๋ง์ผ๋ก ์ํธ์์ฉํ๋ ํ์ด์ง๋ฅผ ์์ฑํ ์ ์๋ค.