2022-10 
๋งํฌ & ์ฝ์๊ฑฐ๋ฆฌ
Schema Validation Layer
const { data } = await axios.get<Post>(
'https://jsonplaceholder.typicode.com/posts'
);
API ์๋ต์ผ๋ก ๋ฐ์ data๊ฐ Post ํ์ ์ด๋ผ๋ ๊ฒ์ ํ์ ํ ์ ์์๊น?
data๊ฐ Post ํ์ ์ด ์๋๋ผ๋ฉด ํ๋ก๊ทธ๋จ์ด ์์ ํ๋ค๋ ๊ฒ์ ์ด๋ป๊ฒ ๋ณด์ฅํ ์ ์์๊น?
์ ์ฌ์ง์ฒ๋ผ ํ์ ์คํฌ๋ฆฝํธ๋ก ํ๋ คํ๊ฒ ํ์ ์ ์์ฑ์ ํ์ง๋ง ํ๋ก๊ทธ๋จ์ด ๊นจ์ง๋ ๊ฒฝํ์ ๋ง์ด ํ ๊ฐ๋ฐ์๋ผ๋ฉด ์ฌ๋ฐ๊ฒ ์ฝ์ ์ ์๋ ๊ธ์ด๋ค
CSS Transform ๋ถํ
CSS์ transform ์์ฑ์ ๋ชจ๋ ์์ฑ์ ๋ฌธ์์ด๋ก ๋์ดํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์์ ์ด ๋ฒ์กํ๊ณ ์ด๋ ค์ ๋ค.
์ด์ 3๊ฐ์ ๋ธ๋ผ์ฐ์ ์์ ๋ชจ๋ transform์ ์ธ๋ผ์ธ์ผ๋ก ๋ค์ด๊ฐ๋ ์์ฑ๋ค์ด ๊ฐ๊ฐ์ CSS ์์ฑ์ผ๋ก ์ง์๋๋ค.
As-Is
.target:hover {
transform: translateX(50%) rotate(30deg) scale(2);
}
To-Be
.target:hover {
translate: 50% 0;
rotate: 30deg;
scale: 2;
}
61 Frontend Web Development Buzz Words
ํ๋ก ํธ์๋์์ ๋ง์ด ์ฐ์ด๋ Buzzword 61์
Buzzword: ํน์ ๋ถ์ผ ์ฌ๋๋ค๋ผ๋ฆฌ ์ฐ๋ ์ ํ์ด
๋ฒ์ด ์ฌ๋ ์ฃผ์๋ฅผ ์์๊ฑฐ๋ฆฌ๋ฏ ์ด๋๋ฅผ ๊ฐ๋ ์ด๋ค ํน์ ํ ๋ง์ ์์ฃผ ๋ฃ๊ฒ ๋๋ค๋ ์๋ฏธ์์ buzzword๋ผ๋ ๋ง์ด ๋ง๋ค์ด์ก๋ค
Translating Typescript Errors with a VS Code Extension - Open Source Friday
๊นํ ์ ํ๋ธ ์ฑ๋์์ Open Source Friday๋ก Typescript Error Translator์ ๊ฐ๋ฐ์๋ฅผ ๊ฒ์คํธ๋ก ์ด๋ํด์ ์งํํ ๋ด์ฉ์ ๋ด๊ณ ์๋ค.
Typescript Error Translator ๋ฐ๋ชจ์ ๊ฐ๋ฐ ๊ณผ์ ์ ์๊ฐํ๋ฉด์ ๊ฐ๋ตํ๊ฒ vscode extension ๊ฐ๋ฐ์ ๊ธฐ์ด๊ฐ ๋๋ ๋ด์ฉ๋ ํจ๊ป ์๊ฐํ๋ค.
Typescript Error Translator์ ๊ธฐ์ฌํ๋ ๋ฐฉ๋ฒ๋ ๋ค๋ฃจ๊ณ ์์ผ๋ ๊ด์ฌ ์๋ค๋ฉด ํ๋ฒ ์ฐธ์ฌํด ๋ณด์!
The new wave of Javascript web frameworks
์๋กญ๊ฒ ์ด ์์ญ์ ๋ง ๋ฐ์ด๋๋ ์ด๋ค์๊ฒ๋ ์ค๋๋ ์ ํ๋ ์์ํฌ ์ํ๊ณ๋ฅผ ๋ฐ๋ผ์ก๋ ๊ฒ์ ์ด๋ ค์ด ์ผ์ด๋ค. ์ด๋ค์๊ฒ๋ ๋์ฒด๋ก ์ง๋ฃจํ ์๋ ์๋ ํ์ฌ ์์ ์ ์ฃผ๋์ ๊ธฐ์ (๋๋ ์ต์ํ)์ ์ ํํ ํ, ๋ฆ์ ์ ํ์ ํ๋ ๊ฒ์ด ์ต์ ์ ๋ฐฉ๋ฒ์ผ ์ ์๋ค.
์ด ๊ธ์ ๋๊ท๋ชจ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถ์์ ๊ณผ๊ฑฐ์ ๋ฌธ์ ์ ๋ค์ ํด๊ฒฐํ๊ธฐ ์ํ ํ๋ ์์ํฌ๋ค์ ๋ฑ์ฅ๊ณผ ์งํ๋ฅผ ์๊ฐํ๋ค.
CSR vs SSR case study
SSR์ ์ง๋ ๋ช ๋ ๋์ Next.js์ Remix๋ฅผ ํตํด ์ธ๊ธฐ๋ฅผ ๋์ฌ์๊ณ , ์ฃผ๋ก ์ฑ๋ฅ์ ํฅ์์ ๊ฐ์กฐํด ์ค๊ณ ์๋ค. ์ด๋ ๋ฐ๋๋ก CSR์ด ๋๋ฆฌ๋ค๋ ๊ฒ์ ์์ํ๊ฒ ๋ง๋ ๋ค.
์ด ํ๋ก์ ํธ๋ SSR ๋ฐฉ์๊ณผ์ ๋น๊ต๋ฅผ ํตํด CSR ๋ฐฉ์์ ์ ์ฌ์ฑ์ ํ์ธํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ฉฐ, ์ด๋ฅผ ์ํด ๊ธฐ๋ณธ์ ์ธ CSR ์ฑ์ ๊ตฌํ(Webpack 5๋ก ๋น๋/๋ฒ๋ค๋ง ๋๋) ํ๊ณ code-splitting๊ณผ ์์ฒญ๋ค์ ๋๋ถ๋ถ ๋ณ๋ ฌํ์์ผ ๋ก๋ฉ ์๊ฐ์ ๋จ์ถํ๋๋ก ๊ตฌํ๋์ด ์๋ค.
ํ๋ก์ ํธ๋ ๊ฒฐ๋ก ์ ์ผ๋ก CSR์ ๋ ๋๋ง ์ฑ๋ฅ์ด SSR๊ณผ ๋น๊ต ์ ๋๋ฑํ๋ฉฐ, ๋๋ก ๋ ๋น ๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋ํ๋์์ ๋ณด์ฌ์ค๋ค. ๋ํ pre-rendering์ ํตํด ์๋ฒฝํ SEO ๋์์ด ๊ฐ๋ฅํจ์ ๋ณด์ฌ์ฃผ๊ณ ์๋ค.
Porting Tests from Cypress to Playwright with AI
Cypress์ Playwright๋ ํ๋ก ํธ์๋์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ e2e ํ ์คํธ ํ๋ ์์ํฌ๋ค.
์ ์๋ ํ๋ก์ ํธ์ ํ ์คํธ ์ฝ๋๋ฒ ์ด์ค๋ฅผ Cypress์์ Playwright๋ก OpenAI์์ ๊ฐ๋ฐํ GPT-3 ์ธ๊ณต์ง๋ฅ ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ํฌํ ํ ๋ฐฉ๋ฒ์ ์๊ฐํ๊ณ ์๋ค.
JavaScript APIs You Donโt Know About
Page Visibility API, Web Share API, Broadcast Channel API, Internalization API ๋ฑ ๋น๊ต์ ์์ํ Web API์ ๋ํด ์๊ฐํ๋ ๊ธ์ด๋ค.
ํํ ๋ฆฌ์ผ
Build Your Own React
React๋ฅผ ์ฒ์๋ถํฐ ๊ฐ๋ฐํ๋ ๊ณผ์ ์ ๋ค๋ฃฌ๋ค.
ํ์์ React์ ๊น์ ๋์ ๋ฐฉ์์ ๊ถ๊ธ์ฆ์ ๊ฐ๊ณ ์์๋ค๋ฉด ์ฌ๋ฐ๊ฒ ์ฝ์ ์ ์์ ๊ฒ์ด๋ค
ํ๊ธ๋ฒ์ญ๋ ์กด์ฌํ๋ค.
TypeScript tips and Tricks with Matt
10๊ฐ์ ํ์ ์คํฌ๋ฆฝํธ ์ฑ๋ฆฐ์ง ๋ฌธ์ ์ ํด์ค์ ํตํด์ ํ์ ์คํฌ๋ฆฝํธ ํ์ ๋ ๋ฒจ ํ๋ก๊ทธ๋๋ฐ์ ๊ธฐ์ด๋ถํฐ ์ตํ ์ ์๋ค
์์์ ํตํด ํ์ ๋ ๋ฒจ ํ๋ก๊ทธ๋๋ฐ์ ์ต์ํด์ก๋ค๋ฉด type-challenges๋ฅผ ๋ค์ ํ๋ฒ ๋์ ํด ๋ณด๋ ๊ฒ๋ ์ข์ ๊ฒ์ด๋ค
Web Scraping Google With Node JS
์ด ํํ ๋ฆฌ์ผ์ Node.js ์ํ๊ณ์ ์น ์คํฌ๋ํ๊ณผ ํ์ฑ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํด ๊ตฌ๊ธ์ ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ์คํฌ๋ํ ํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํ๋ค. ์ด๋ฅผ ํตํด JavaScript๋ก ์น ์คํฌ๋ํ๊ณผ ๋ฐ์ดํฐ ์ถ์ถ๊ณผ ๋ง์ด๋ ํ๋ ๋ฐฉ๋ฒ์ ํ์ตํ ์ ์๋ค.
Throttle and Debounce in Javascript and React
Debounce์ Throttle์ JavaScript์์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ต์ ํ ๊ธฐ๋ฒ๋ค ์ค ํ๋์ด๋ฉฐ, ์ด๋ฅผ React์์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ธ ์ ์๋ค.
Debounce ๋?
- ์์ฃผ ์คํ๋๋ ์ก์ ์ ์ง์ฐ, ๊ทธ๋ฃนํ ๋๋ ๋ง์ง๋ง ์์ฒญ์๋ง ์คํ๋๋๋ก ํด ์ฑ๋ฅ์ ์ต์ ํํ๋ ๊ธฐ๋ฒ์ด๋ค.
Throttle ์ด๋?
- ์คํ์ ์๋(๋น๋)๋ฅผ ์ ํ์์ผ ์ฑ๋ฅ์ ์ต์ ํํ๋ ๊ธฐ๋ฒ์ผ๋ก, debounce์ ์ ์ฌํ์ง๋ง ๊ท์น์ ์ธ ์คํ์ ๋ณด์ฅํ๋ค.
Introduction Learn HTML
๊ตฌ๊ธ์ web.dev ํ์์ Estelle Weyl์ด ์์ฑํ HTML ํํ ๋ฆฌ์ผ์ ๊ณต๊ฐํ๋ค. ํด๋น ํํ ๋ฆฌ์ผ์๋ Document ๊ตฌ์กฐ, ๋ฉํ๋ฐ์ดํฐ, ์๋งจํฑ HTML ๋ฑ์ ๋ด์ฉ์ ํฌํจํ๊ณ ์๋ค. ํ์ฌ ๋ชจ๋ ๊ณต๊ฐ๋ ์ํ๋ ์๋๋ฉฐ, ์์ผ๋ก ๋ช ๋ฌ์ ๊ฑธ์ณ ๋จ๊ณ์ ์ผ๋ก ๊ณต๊ฐํ๋ค๊ณ ํ๋ค.
์ง๋ FE News 2021๋ 6์ํธ์์๋ Learn CSS๊ฐ ์๊ฐ๋๊ธฐ๋ ํ๋ค. HTML๊ณผ CSS ํํ ๋ฆฌ์ผ๋ฟ ์๋๋ผ ๋ค์ ํํ ๋ฆฌ์ผ๋ ์ ๊ณตํ๋ค.
jschallenger
JavaScript์ JavaScript DOM API๋ฌธ์ ๋ค์ ํ๋ฉด์ ์ตํ๋ ํํ ๋ฆฌ์ผ ์ฌ์ดํธ์ด๋ค.
์ฝ๋์ ๋๊ตฌ
Fig

ํฐ๋ฏธ๋์ IDE์์ ๋ณด๋ ์๋์์ฑ ๋ฐ์ค๋ฅผ ์ถ๊ฐํด ์ฃผ๋ ํ๋ก๊ทธ๋จ์ด๋ค.
์์ง์ macOS๋ง ์ง์๋๊ณ , windows/linux๋ ๊ฐ๋ฐ ์ค์ด๋ค.
Zsh-hangul

ls๋ฅผ ์น๋ ค๊ณ ํ๋๋ฐ ํ๊ธ๋ก ์ ๋ ฅ๋์ด์ ใ ฃใด๊ฐ ์ ๋ ฅ๋ ๊ฒฝํ์ด ๋ง์ ๊ฒ์ด๋ค.
์ด๋ฐ ํ์ ์ ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด ์ฃผ๋ ํ๋ฌ๊ทธ์ธ ํ๋ก๊ทธ๋จ์ด๋ค.
The Fuck

๋ช ๋ น์ด๋ฅผ ์๋ชป ์ ๋ ฅํ์ ๋, ๊ทธ ๋ช ๋ น์ด๋ฅผ ๊ณ ์ณ์ ์๋ํ ๋ช ๋ น์ผ๋ก ๋ฐ๊ฟ์ฃผ๋ ํ๋ก๊ทธ๋จ์ด๋ค.
์๋ฅผ ๋ค์ด, git commit
์ git comit
์ผ๋ก ์๋ชป ์
๋ ฅํ์ ๋, git commit
์ผ๋ก ๋ฐ๋ก ๋ฐ๊ฟ์ฃผ๋ ๊ฒ์ด๋ค.
Auto-Animate

๋ ์ค์ ์ฝ๋ ์ถ๊ฐ๋ก ์์ฐ์ค๋ฌ์ด ์ ๋๋ฉ์ด์ ํจ๊ณผ๋ฅผ ์ถ๊ฐํ ์ ์๋ ๊ฐ์ฑ๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ
Pico.js

JavaScript 200์ค๋ก ๋ง๋ค์ด์ง ์ผ๊ตด์ธ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
MemLab

MemLab์ Meta์์ ๊ณต๊ฐํ JavaScript ๋ฉ๋ชจ๋ฆฌ ํ ์คํ ์คํ์์ค ํ๋ ์์ํฌ๋ก ์๋ํ๋ ๋ฉ๋ชจ๋ฆฌ ๋์ ํ์ง๋ฅผ ํด์ค๋ค. ํ ์คํธ ์๋๋ฆฌ์ค(Puppeteer API)๋ฅผ ์์ฑํ ํ, ํ ์คํธ๋ฅผ ์คํํ๋ฉด ๋ธ๋ผ์ฐ์ ์์ JavaScript Heap ๋ฉ๋ชจ๋ฆฌ ์ค๋ ์ท์ ํตํด ๋์๋ฅผ ํ์นจ ํ๋ค. ์ด ๊ณผ์ ์ ๋ค์์ ์ด 6๋จ๊ณ๋ฅผ ํตํด ์คํ๋๋ค.
- Browser Interaction
- Diffing the heap
- Refining the list of memory leaks
- Generating retainer traces
- Clustering retainer traces
- Reporting the leaks
[์ฐธ๊ณ ] ์ถ๊ฐ๋ก Meta ์์ง๋์ด๋ง ๋ธ๋ก๊ทธ์ ์๊ฐ ๊ธ๋ ์ฝ์ด๋ณด๋ผ.
JSON crack
์ค์ฒฉ๋ ๊ตฌ์กฐ์ ๋ณต์กํ JSON ๋ฐ์ดํฐ๋ ์ฝ๊ฒ ์ฝ๊ธฐ ์ด๋ ต๋ค. ์ด ๋๊ตฌ๋ JSON ๋ฐ์ดํฐ๋ฅผ ํธ๋ฆฌ ํํ์ ์๊ฐ์ ๊ทธ๋ํ๋ก ํํํด ๋ฐ์ดํฐ์ ๊ตฌ์กฐ์ ํํ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ํ์ ํ ์ ์๋๋ก ๋์์ค๋ค.