Node.js / NestJS

Node.js ์ฝ”์–ด API

fs, path, events, process, os, streams, buffers, child_process, worker threads

25 ๋ฉด์ ‘ ์งˆ๋ฌธยท
Junior
1

fs ๋ชจ๋“ˆ์—์„œ ํŒŒ์ผ์„ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‹ต๋ณ€

fs.readFile()์€ ํŒŒ์ผ ์ „์ฒด๋ฅผ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ฝ๊ณ  ๊ทธ ๋‚ด์šฉ์„ ์ฝœ๋ฐฑ์œผ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. fs.read() ๋ฉ”์„œ๋“œ๋„ ์žˆ์ง€๋งŒ ๋ถ€๋ถ„ ์ฝ๊ธฐ๋ฅผ ์œ„ํ•ด file descriptor์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. fs.readFileSync()๋Š” ๋™๊ธฐ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค. ์ด ๋น„๋™๊ธฐ API๋Š” ๋น„์šฉ์ด ํฐ I/O ์ž‘์—… ์ค‘์— event loop๋ฅผ ์ฐจ๋‹จํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

2

path.join()๊ณผ path.resolve()์˜ ์ฃผ์š” ์ฐจ์ด์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‹ต๋ณ€

path.join()์€ ๋‹จ์ˆœํžˆ ๊ฒฝ๋กœ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์—ฐ๊ฒฐํ•˜์ง€๋งŒ, path.resolve()๋Š” ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ฒฝ๋กœ๋ฅผ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋กœ ํ•ด์„ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด path.join('a', 'b')๋Š” 'a/b'๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ, path.resolve('a', 'b')๋Š” /current/dir/a/b ๊ฐ™์€ ์™„์ „ํ•œ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ๋ณด์žฅ๋ฐ›์œผ๋ ค๋ฉด path.resolve()๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

3

ํŒŒ์ผ์„ ๋ฎ์–ด์“ฐ์ง€ ์•Š๊ณ  ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด fs.writeFile()์— ์‚ฌ์šฉํ•˜๋Š” ํ”Œ๋ž˜๊ทธ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‹ต๋ณ€

'a'(append) ํ”Œ๋ž˜๊ทธ๋Š” ํŒŒ์ผ์„ ์ถ”๊ฐ€ ๋ชจ๋“œ๋กœ ์—ด์–ด ๊ธฐ์กด ๋‚ด์šฉ์„ ๋ณด์กดํ•˜๊ณ  ๋์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ 'w'(write) ํ”Œ๋ž˜๊ทธ๋Š” ํŒŒ์ผ์„ ๋ฎ์–ด์”๋‹ˆ๋‹ค. 'r'(read), 'wx'(write exclusive) ๋“ฑ ๋‹ค๋ฅธ ํ”Œ๋ž˜๊ทธ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”Œ๋ž˜๊ทธ๋Š” POSIX ์‹œ์Šคํ…œ์—์„œ ์ƒ์†๋˜์—ˆ์œผ๋ฉฐ ํŒŒ์ผ ์—ด๊ธฐ ๋™์ž‘์„ ์„ธ๋ฐ€ํ•˜๊ฒŒ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.

4

path ๋ชจ๋“ˆ์—์„œ . ์™€ .. ์„ธ๊ทธ๋จผํŠธ๋ฅผ ํ•ด์„ํ•˜์—ฌ ๊ฒฝ๋กœ๋ฅผ ์ •๊ทœํ™”ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

5

fs๋กœ ๋””๋ ‰ํ„ฐ๋ฆฌ์™€ ๋ˆ„๋ฝ๋œ ๋ชจ๋“  ์ƒ์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ฉ๋‹ˆ๊นŒ?

+22 ๋ฉด์ ‘ ์งˆ๋ฌธ

๊ธฐํƒ€ Node.js / NestJS ๋ฉด์ ‘ ์ฃผ์ œ

Node.js ๊ธฐ์ดˆ

Junior
20๊ฐœ ์งˆ๋ฌธ

๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

Junior
25๊ฐœ ์งˆ๋ฌธ

Express.js ๊ธฐ์ดˆ

Junior
20๊ฐœ ์งˆ๋ฌธ

NestJS ๊ธฐ์ดˆ

Junior
23๊ฐœ ์งˆ๋ฌธ

REST API ์„ค๊ณ„

Junior
20๊ฐœ ์งˆ๋ฌธ

๊ฒ€์ฆ๊ณผ DTO

Junior
20๊ฐœ ์งˆ๋ฌธ

API ๋ฌธ์„œํ™” ๋ฐ ๊ณ„์•ฝ

Junior
20๊ฐœ ์งˆ๋ฌธ

์—๋Ÿฌ ์ฒ˜๋ฆฌ

Junior
20๊ฐœ ์งˆ๋ฌธ

๋‹จ์œ„ ํ…Œ์ŠคํŠธ

Junior
20๊ฐœ ์งˆ๋ฌธ

์ž‘์—… ์Šค์ผ€์ค„๋ง

Junior
15๊ฐœ ์งˆ๋ฌธ

NestJS ๋ชจ๋“ˆ๊ณผ DI

Mid-Level
20๊ฐœ ์งˆ๋ฌธ

๊ตฌ์„ฑ ๋ฐ ํ™˜๊ฒฝ ๊ด€๋ฆฌ

Mid-Level
20๊ฐœ ์งˆ๋ฌธ

JWT ์ธ์ฆ

Mid-Level
25๊ฐœ ์งˆ๋ฌธ

์ธ๊ฐ€ ๋ฐ RBAC

Mid-Level
20๊ฐœ ์งˆ๋ฌธ

TypeORM์„ ์‚ฌ์šฉํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

Mid-Level
30๊ฐœ ์งˆ๋ฌธ

Prisma ORM

Mid-Level
25๊ฐœ ์งˆ๋ฌธ

๋ฏธ๋“ค์›จ์–ด์™€ ์ธํ„ฐ์…‰ํ„ฐ

Mid-Level
20๊ฐœ ์งˆ๋ฌธ

ํŒŒ์ผ ์—…๋กœ๋“œ

Mid-Level
15๊ฐœ ์งˆ๋ฌธ

WebSockets

Mid-Level
20๊ฐœ ์งˆ๋ฌธ

NestJS๋ฅผ ์‚ฌ์šฉํ•œ GraphQL

Mid-Level
25๊ฐœ ์งˆ๋ฌธ

์—”๋“œํˆฌ์—”๋“œ ํ…Œ์ŠคํŠธ

Mid-Level
20๊ฐœ ์งˆ๋ฌธ

Redis๋ฅผ ์‚ฌ์šฉํ•œ ์บ์‹ฑ

Mid-Level
20๊ฐœ ์งˆ๋ฌธ

Bull์„ ์‚ฌ์šฉํ•œ ํ

Mid-Level
20๊ฐœ ์งˆ๋ฌธ

DevOps, Logging, CI/CD

Mid-Level
25๊ฐœ ์งˆ๋ฌธ

Docker ๋ฐ ์ปจํ…Œ์ด๋„ˆํ™”

Mid-Level
25๊ฐœ ์งˆ๋ฌธ

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค

Senior
30๊ฐœ ์งˆ๋ฌธ

๋ณด์•ˆ ๋ชจ๋ฒ” ์‚ฌ๋ก€

Senior
25๊ฐœ ์งˆ๋ฌธ

์„ฑ๋Šฅ ๋ฐ ํด๋ผ์šฐ๋“œ ๋ฐฐํฌ

Senior
30๊ฐœ ์งˆ๋ฌธ

๋‹ค์Œ ๋ฉด์ ‘์„ ์œ„ํ•ด Node.js / NestJS์„ ๋งˆ์Šคํ„ฐํ•˜์„ธ์š”

๋ชจ๋“  ์งˆ๋ฌธ, flashcards, ๊ธฐ์ˆ  ํ…Œ์ŠคํŠธ, ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์—ฐ์Šต, ๋ฉด์ ‘ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์— ์ ‘๊ทผํ•˜์„ธ์š”.

๋ฌด๋ฃŒ๋กœ ์‹œ์ž‘ํ•˜๊ธฐ