naver/fe-news ๋‰ด์Šค๋ ˆํ„ฐ ๋ทฐ์–ด (๋น„๊ณต์‹)

๋ชฉ์ฐจ
๋ชฉ์ฐจ

    2023-05

    ๋งํฌ & ์ฝ์„ ๊ฑฐ๋ฆฌ

    Revisionist Engineering

    ๋ฏธ๊ตญ์˜ ์œ ๋ช…ํ•œ ๋ฒค์ฒ˜ ์บํ”ผํ„ธ์ธ ์„ธ์ฟผ์ด์•„ ์บํ”ผํ„ธ ์›น์‚ฌ์ดํŠธ์— ๊ณต๊ฐœ๋œ Ryan Dhal์˜ ์ธํ„ฐ๋ทฐ ๋‚ด์šฉ์ด๋‹ค.

    ์ง€๊ธˆ์€ Node.js์™€ Deno๋ฅผ ๊ฐœ๋ฐœํ•œ ๊ฐœ๋ฐœ์ž๋กœ ์œ ๋ช…ํ•˜์ง€๋งŒ, ๊ณผ๊ฑฐ ์˜์–ด ๊ฐ•์‚ฌ๋กœ ๋‚จ์•„๋ฉ”๋ฆฌ์นด์—์„œ ์ƒํ™œ์„ ํ•˜๋‹ค ๊ฒฝ์ œ์  ์ด์œ ๋กœ ์ธํ•ด ์‚ฌ์ดํŠธ ๊ตฌ์ถ• ์ผ์„ ํ•˜๋ฉด์„œ Front-end ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค๊ณ  ํ•œ๋‹ค.

    ์ดํ›„, 2008๋…„ 9์›” ๊ตฌ๊ธ€์˜ V8 ์—”์ง„ ๊ณต๊ฐœ๋ฅผ ๊ธฐ์ ์œผ๋กœ ๋…์ผ ์พฐ๋ฅธ์˜ ์Šคํƒ€๋ฒ…์Šค์—์„œ 6๊ฐœ์›”๊ฐ„ ๊ฐœ๋ฐœํ•œ ๋์— Node.js๊ฐ€ ํƒ„์ƒ๋˜์—ˆ๋‹ค๋Š” ์ผํ™” ๋“ฑ์„ ์ฝ์–ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

    Node.js Just Released Version 20!

    Node.js์˜ version 20์ด ์ถœ์‹œ๋˜์—ˆ๋‹ค.
    Node.js 20์—์„œ๋Š” Permission Model, Stable Test Runner์ด ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ๊ณ , V8๋„ 11.3์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ๋˜์—ˆ๋‹ค.
    Node.js 0.10๋ฒ„์ „๋ถ€ํ„ฐ ์‚ฌ์šฉํ•œ ์ž‘๊ฐ€๋Š” ์ด๋Ÿฐ ๋ณ€ํ™”๋“ค์— ๋Œ€ํ•ด ์กฐ๊ธˆ ๋” ์ž์„ธํ•˜๊ณ  ์ข€ ๋” ์ฝ๊ธฐ ํŽธํ•˜๊ฒŒ ์†Œ๊ฐœํ•œ๋‹ค.

    Dissecting Npm Malware: Five Packages And Their Evil Install Scripts

    npm์— ๋ฐฐํฌ๋œ ํŒจํ‚ค์ง€๋“ค์€ ํ›…์„ ํ†ตํ•ด ์„ค์น˜ ๊ณผ์ •(pre/post install)์—์„œ ์Šคํฌ๋ฆฝํŠธ๋“ค์„ ์ˆ˜ํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
    ์ฆ‰, ํŒจํ‚ค์ง€๊ฐ€ ์„ค์น˜๋  ๋•Œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์กฐ์šฉํžˆ ์Šคํฌ๋ฆฝํŠธ๋“ค์ด ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ง์ด๊ธฐ๋„ ํ•˜๋‹ค. npm ๋ฉ€์›จ์–ด ํŒจํ‚ค์ง€๋“ค์˜ ์‚ฌ๋ก€๋ฅผ ํ†ตํ•ด ์–ด๋–ค ์‹์œผ๋กœ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ํƒˆ์ทจํ•˜๋Š”์ง€๋ฅผ ์‚ดํŽด๋ณธ๋‹ค.

    [์ฐธ๊ณ ] ์ถ”๊ฐ€์ ์œผ๋กœ ๋‹ค์Œ์˜ ๊ธ€๋„ ๊ฐ™์ด ์ฐธ๊ณ ํ•ด ๋ณด๊ธฐ ๋ฐ”๋ž€๋‹ค.

    Introducing storage on Vercel

    Next.js์˜ ๊ฐœ๋ฐœ์‚ฌ Vercel์—์„œ ๋‹ค์–‘ํ•œ Storage ์„œ๋น„์Šค๋“ค์„ ๊ณต๊ฐœํ–ˆ๋‹ค. ๊ณต๊ฐœํ•œ ์„œ๋น„์Šค๋“ค์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

    • Vercel KV: ์„œ๋ฒ„๋ฆฌ์Šค Redis, powered by Upstash
    • Vercel Postgres: ์„œ๋ฒ„๋ฆฌ์Šค pgSQL database, powered by Neon
    • Vercel Blob(Private Beta): ์—ฃ์ง€ ์ปดํ“จํŒ…์„ ํ™œ์šฉํ•œ ํŒŒ์ผ ์—…๋กœ๋“œ ๋ฐ ์„œ๋น™, powered by Cloudflare R2

    WASM + Kubernetes: Beyond Containers

    Wasm์€ ๋‹ค์–‘ํ•œ ์–ธ์–ด์— ํšจ์œจ์ ์ด๊ณ  ์•ˆ์ „ํ•œ ๋Ÿฐํƒ€์ž„์„ ์ œ๊ณตํ•˜๋Š” ํฌํ„ฐ๋ธ” ์ปดํ“จํŒ…์˜ ๋ฏธ๋ž˜๋ฅผ ๋Œ€ํ‘œํ•œ๋‹ค. ์ง€๋‚œ ํ•œ ํ•ด ๋™์•ˆ ๊ด€๋ฆฌํ˜• ํ”Œ๋žซํผ, ํˆด๋ง, WASI์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ํ‘œ์ค€ํ™” ์ž‘์—… ๋“ฑ ๋ฐฑ์—”๋“œ์—์„œ Wasm์˜ ์„ฑ์žฅ์ด ํญ๋ฐœ์ ์œผ๋กœ ์ฆ๊ฐ€ํ–ˆ๋‹ค.

    ์ด๋Š” ๋ฏธ๋ž˜์˜ ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋ฐ”๋ผ๋ณผ ๋•Œ ๋‹ค์Œ์˜ ์งˆ๋ฌธ๋“ค์„ ๋– ์˜ฌ๋ฆฌ๊ฒŒ ๋งŒ๋“ ๋‹ค.

    • ์–ธ์ œ Wasm์ด ์˜ฌ๋ฐ”๋ฅธ ์„ ํƒ์ธ๊ฐ€?
    • ํŠนํžˆ ๊ธฐ์กด ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์•„ํ‚คํ…์ฒ˜์™€ Kubernetes ์ธํ”„๋ผ์— ๋Œ€๊ทœ๋ชจ๋กœ ํˆฌ์žํ•œ ์กฐ์ง์˜ ๊ฒฝ์šฐ ์–ธ์ œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ผ๊นŒ?
    • K8s ๋‚ด์—์„œ Wasm ์›Œํฌ ๋กœ๋“œ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๊ธฐ์กด ํด๋Ÿฌ์Šคํ„ฐ ๋ฆฌ์†Œ์Šค์™€ ์šด์˜์„ ํšจ์œจ์ ์œผ๋กœ ํ™œ์šฉํ•จ์œผ๋กœ์จ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์„๊นŒ?

    ์ด ๊ฐ•์—ฐ์€ Adobe๊ฐ€ K8s ๋‚ด๋ถ€์˜ ๋ฐฑ์—”๋“œ์—์„œ Wasm์„ ํ™œ์šฉํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๋ฉฐ, ๊ธฐ์กด K8s ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์—์„œ Wasm ํด๋ผ์šฐ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์•„ํ‚คํ…์ฒ˜์™€ Wasm ๋ฉ€ํ‹ฐํ…Œ๋„Œ์‹œ๋ฅผ ์œ„ํ•ด ์ทจํ•˜๊ณ  ์žˆ๋Š” ๋‹จ๊ณ„๋ฅผ ์†Œ๊ฐœํ•œ๋‹ค.

    ECMAScript ๋ช…์„ธ ์ดํ•ด 1๋ถ€

    ์ด ๊ธ€์€ v8.dev์˜ Understanding the ECMAScript spec, part 1๋ฅผ ๋ฒˆ์—ญํ•œ ๊ธ€์ด๋‹ค.
    ECMAscript spec์„ ๋ณด๊ฒŒ ๋˜๋ฉด, ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ์ธํ•˜์—ฌ ๋ฌธ์„œ๋ฅผ ์ฝ๊ธฐ๋ฅผ ํฌ๊ธฐํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋Ÿฐ ์‚ฌ๋žŒ๋“ค์„ ๋•๊ณ ์ž ์ด ๊ธ€์€ ์ž‘์„ฑ๋˜์—ˆ๋‹ค.
    1๋ถ€์—์„œ๋Š” hasOwnProperty์˜ ๋ช…์„ธ๋ถ€ํ„ฐ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ด ์ค€๋‹ค.

    ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ๋„˜์–ด - ๋ฌธ์ œ์˜ ๊ทผ๋ณธ์ ์ธ ์›์ธ ์ฐพ์•„๊ฐ€๊ธฐ Part 1

    ์ •์ฒด๋ฅผ ์•Œ ์ˆ˜ ์—†๋Š” CORS ์—๋Ÿฌ๋ฅผ ๋งŒ๋‚˜๋ฉด์„œ ๊ธ€์ด ์‹œ์ž‘๋œ๋‹ค.
    ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์ฐพ์•„ "์ฃผ๋จน๊ตฌ๊ตฌ์‹ ๋ฐฉ๋ฒ•"์œผ๋กœ ๋ฌธ์ œ๋ฅผ ๋ฆฌ์ŠคํŠธ์—… ํ•˜๊ณ  ํ•˜๋‚˜ํ•˜๋‚˜ ์ฐพ์•„๊ฐ„๋‹ค.
    ๊ทธ๋Ÿฌ๋˜ ์ค‘ ํŠน์ • React ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์—์„œ require๋กœ css ํŒŒ์ผ์„ ๊ฐ€์ง€๊ณ  ์˜ค๋Š” ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  import ๊ตฌ๋ฌธ์œผ๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค.
    ์ด ๊ธ€์€ ์—ฌ๊ธฐ์„œ๋ถ€ํ„ฐ ๋ณธ๋ก ์ด๋‹ค.
    ๋” ๊ทผ๋ณธ์ ์ธ ์›์ธ์„ ์ฐพ์•„ ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ์‹œํ–‰์ฐฉ์˜ค๋ฅผ ๊ฒช์œผ๋ฉฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ณผ์ •์„ ๊ณต์œ ํ•œ๋‹ค.

    ํ•œ๊ธ€ ์ž๋™์™„์„ฑ์„ ์œ„ํ•œ ์ •๊ทœ์‹

    ํ•œ๊ธ€ ์ž๋™์™„์„ฑ์„ ์œ„ํ•œ ์ •๊ทœ์‹

    ํ•œ๊ธ€์€ ์ž์Œ, ์ค‘์„ฑ, ์ข…์„ฑ์˜ ์กฐํ•ฉ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด ์กฐํ•ฉ ์ค‘์—๋Š” ๊ฒ€์ƒ‰์ด ์ž˜๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.
    ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“  ํ•œ๊ธ€ ์ •๊ทœ์‹ ์ƒ์„ฑ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์†Œ๊ฐœํ•˜๊ณ , ๊ตฌํ˜„ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•œ๋‹ค.

    30 Practical Tips for Effective User Interface Design

    UI๋ฅผ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋Š” 30๊ฐ€์ง€์˜ ๊ฐ„๋‹จํ•œ ํŒ์„ ์„ค๋ช…ํ•˜๊ณ  ์žˆ๋‹ค.
    ์‰ฝ๊ฒŒ ๋„์ž…ํ•ด ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋‚ด์šฉ์ด ๋งŽ์•„์„œ ์•„ํ‹ฐํด์„ ์ฝ์–ด๋ณด๊ณ  ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์— ๊ณง๋ฐ”๋กœ ์ ์šฉํ•ด ๋ณด๋Š” ๊ฒƒ์€ ์–ด๋–จ๊นŒ?

    • ์ˆœ์ˆ˜ํ•œ ๊ฒ€์€ ์ƒ‰์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ
    • ๊ท ์ผํ•œ ๊ฐ„๊ฒฉ(8์˜ ๋ฐฐ์ˆ˜ ์‚ฌ์šฉ)
    • ๋Œ€์†Œ๋ฌธ์ž์˜ ์ ์ ˆํ•œ ์‚ฌ์šฉ
    • ํ…์ŠคํŠธ ํผ์—์„œ์˜ ์ •๋ ฌ๊ณผ ์Šคํƒ€์ผ ๋“ฑ

    Should I use e.code or e.key when handling keyboard events?

    ํ‚ค๋ณด๋“œ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด code์™€ key ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–ด๋–ค ํ‚ค๊ฐ€ ๋ˆŒ๋ ธ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
    ๋ณดํ†ต์˜ ๊ฒฝ์šฐ ๋‘ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์ง€๋งŒ, ๋•Œ๋กœ๋Š” ๊ตฌ๋ถ„ํ•˜์—ฌ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
    ์ด ๊ธ€์—์„œ๋Š” ๋‘ ํ”„๋กœํผํ‹ฐ์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ์‚ดํŽด๋ณธ๋‹ค.

    Conditionally adaptiveย CSS. Browser behavior that might improve your performance

    Link ํƒœ๊ทธ์˜ media ์†์„ฑ์„ ํ™œ์šฉํ•˜์—ฌ ํ˜„์žฌ viewport ์‚ฌ์ด์ฆˆ์— ๋งž๋Š” CSS ํŒŒ์ผ์„ ์กฐ๊ฑด๋ถ€ ๋กœ๋“œํ•ด ์ดˆ๊ธฐ ๋กœ๋”ฉ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•œ๋‹ค.
    viewport ์‚ฌ์ด์ฆˆ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ media ์ŠคํŽ™์— ์žˆ๋Š” ๋‹ค์–‘ํ•œ ํ”ผ์ฒ˜๋“ค์„ ํ™œ์šฉํ•ด ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์ œ์‹œํ•˜๊ณ  ์žˆ๋‹ค.
    ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ๋Š” ๊ณ ํ•ด์ƒ๋„ ํ™”๋ฉด์ด๋‚˜ ์‚ฌ์šฉ์ž์˜ ์ƒ‰์ƒ ํ™˜๊ฒฝ์„ค์ •์— ๋งž๊ฒŒ ์กฐ๊ฑด๋ถ€๋กœ ๋กœ๋“œ์‹œํ‚ค๋Š” ๊ฒƒ์ด๋‹ค.

    IndexedDB ๊ฐ„๋‹จ ์ •๋ฆฌํ•˜๊ธฐ

    ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ ์ฃผ๋กœ Cookie ํ˜น์€ Local Storage๋ฅผ ์ด์šฉํ•ด์„œ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค.
    ํ•˜์ง€๋งŒ, ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์€ ์šฉ๋Ÿ‰์˜ ์ œํ•œ๊ณผ ์ €์žฅํ•  ๋ฐ์ดํ„ฐ์˜ ํƒ€์ž…์— ํ•œ๊ณ„๊ฐ€ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
    ์ด๋Ÿฌํ•œ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ธŒ๋ผ์šฐ์ € ํ‘œ์ค€ Database์ธ IndexedDB(๊ณผ๊ฑฐ ์ด๋ฆ„: WebSimpleDB)๋ฅผ ์•Œ์•„๋ณธ๋‹ค.

    ํŠœํ† ๋ฆฌ์–ผ

    React Visualized

    ์‹œ๊ฐ์  ํ˜•ํƒœ๋กœ React ๋“ฑ์žฅ์˜ ์—ญ์‚ฌ์  ๋ฐฐ๊ฒฝ๊ณผ ํ•จ๊ป˜, React๋ฅผ ๋ฐฐ์šฐ๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ชจ๋“  ๊ธฐ๋ณธ์  ๊ฐœ๋…์„ ๋‹ค๋ฃฌ๋‹ค.
    ๊ฐ ๊ธฐ์ˆ ์  ์ฝ˜์…‰ํŠธ ๋“ฑ์— ๋Œ€ํ•ด์„  ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ๋ฅผ ์ œ๊ณตํ•ด ์ƒํ˜ธ์ž‘์šฉ์„ ํ†ตํ•ด ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€๋ฅผ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์ด๋“œ๋‹ค.

    Next.js and Rust: An Innovative Approach to Full-Stack Development

    ์‚ฌ์šฉ์ž ๋“ฑ๋ก์„ ํ†ตํ•œ ๋กœ๊ทธ์ธ ๊ธฐ๋ฐ˜์˜ ๋…ธํŠธ ์•ฑ์„ ๋งŒ๋“ค์–ด ๋ณด๋Š” ํŠœํ† ๋ฆฌ์–ผ์ด๋‹ค.
    Front-end๋Š” Next.js๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ,
    Back-end๋Š” Rust ์›น ํ”„๋ ˆ์ž„์›Œํฌ์ธ Axum์„ ํ™œ์šฉํ•œ๋‹ค.

    Creating a typewriter animation effect with only CSS

    @keyframes ์™€ @steps๋ฅผ ์ด์šฉํ•ด typewriter animation์„ ๋งŒ๋“ค์–ด ๋ณธ๋‹ค.

    ์ฝ”๋“œ์™€ ๋„๊ตฌ

    Dexie.js

    const oldFriends = await db.friends
      .where('age').above(75)
      .toArray();
    
    // or make a new one
      await db.friends.add({
      name: 'Camilla',
      age: 25,
      street: 'East 13:th Street',
      picture: await getBlob('camilla.png')
    });
    

    Dexie.js๋Š” ์›น ๋ธŒ๋ผ์šฐ์ € ํ‘œ์ค€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ธ IndexedDB๋ฅผ ๋ž˜ํ•‘ ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.
    IndexedDB๋ฅผ ๋” ์šฐ์•„ํ•˜๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค.

    next-route-visualizer

    NextJs์˜ router๋ฅผ ๋ณด๊ธฐ ์‰ฝ๊ฒŒ ์‹œ๊ฐํ™” ์‹œ์ผœ์ค€๋‹ค.

    GitHub Language Statistics

    ์ด ํŽ˜์ด์ง€๋Š” GitHub์—์„œ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ณ„๋กœ Pull Requests, Starts, Pushes, Issues์˜ ์ˆ˜์— ๋Œ€ํ•œ ๊ทธ๋ž˜ํ”„๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

    Jscanify

    opencv.js๋ฅผ ํ™œ์šฉํ•œ ๋ชจ๋ฐ”์ผ ๋ฌธ์„œ ์Šค์บ๋„ˆ ๋„๊ตฌ๋กœ, ์‚ฌ์ง„ ์ดฌ์˜๋œ ๋ฌธ์„œ๋ฅผ ์ž˜ ์Šค์บ” ๋œ ๋ฌธ์„œ๋กœ ๋ณ€ํ™˜ํ•ด ์ค€๋‹ค.