๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป ๋ถ€์ŠคํŠธ์ฝ”์Šค CS50 ์ฝ”์นญ์Šคํ„ฐ๋”” 2๊ธฐ 5์ฃผ์ฐจ

์ด์€๋นˆ EUNBINยท2021๋…„ 2์›” 23์ผ
0
post-thumbnail

๋ถ€์ŠคํŠธ์ฝ”์Šค CS50 ์ฝ”์นญ์Šคํ„ฐ๋”” 5์ฃผ์ฐจ ์ฃผ์ œ๋Š” '๋ฉ”๋ชจ๋ฆฌ' !

์•ˆ ์ค‘์š”ํ•œ ์ฃผ์ œ๊ฐ€ ์—†๋‹ค ์ •๋ง,,,,
ํšจ์œจ์„ ์œ„ํ•ด์„œ๋ผ๋ฉด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์•ˆ ๋”ฐ์งˆ ์ˆ˜๊ฐ€ ์—†๋‹ค

5์ฃผ์ฐจ์—์„œ๋Š” ํฌ์ธํ„ฐ์™€ malloc(), free() ๋“ฑ
๋ฉ”๋ชจ๋ฆฌ์™€ ๊ด€๋ จ๋œ ๋‚ด์šฉ์— ๋Œ€ํ•ด ์ง‘์ค‘์ ์œผ๋กœ ๋ฐฐ์šฐ๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ๋‹ค




๐Ÿ“Œ 5์ฃผ์ฐจ ๋ฉ”๋ชจ๋ฆฌ

ํฌ์ธํ„ฐ(pointer) : ์ปดํ“จํ„ฐ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ฃผ์†Œ
์–ด๋–ค ๋ณ€์ˆ˜์— ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•  ๋•Œ๋Š” * ์—ฐ์‚ฐ์ž ์‚ฌ์šฉ

์˜ˆ์‹œ) int *p = &n;
p๋Š” int๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ์ด๋ฉฐ, n์˜ ์ฃผ์†Œ๋ฅผ p์— ์ €์žฅ
*p๋Š” p์˜ ์ฃผ์†Œ๋กœ ๊ฐ€์ค˜, &n์€ n์˜ ์ฃผ์†Œ ๋กœ ์ง€์ •
์ฃผ์†Œ๋Š” ๋ฐ˜๋“œ์‹œ ํฌ์ธํ„ฐ์— ์ €์žฅํ•ด์•ผ ํ•จ
๋‹จ์ˆœํžˆ p๊ฐ€ n์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋„ ๋ฌด๋ฐฉ

๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น : ๋ฉ”๋ชจ๋ฆฌ ์ผ๋ถ€๋ถ„์„ ๊ฐ€์ ธ์™€์„œ ๊ทธ๊ณณ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋ฅผ ์ฃผ๋Š” ๊ฒƒ
malloc() : ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ํ•จ์ˆ˜, ๊ด„ํ˜ธ ์•ˆ์—๋Š” ํ• ๋‹น ๋ฐ›์„ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๋ฅผ ์ž…๋ ฅ
free() : ํ• ๋‹น๋˜์—ˆ๋˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ฐ˜ํ™˜

heap overflow : malloc()์„ ๊ณ„์† ํ˜ธ์ถœํ•ด์„œ ๋„ˆ๋ฌด ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•ด ๋ฉ”๋ชจ๋ฆฌ ์† ๋‹ค๋ฅธ ๋‚ด์šฉ์„ ๋ฎ์–ด์”€
stack overflow : ์ž๊ธฐ ์ž์‹ ์„ ๊ณ„์† ํ˜ธ์ถœํ•˜๋Š” ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ๋•Œ ๋ฐœ์ƒ
buffer overflow : ์‚ฌ์ง„, ํŒŒ์ผ์ด ์ž˜ ์—ด๋ฆฌ์ง€ ์•Š๊ณ  ํ™”๋ฉด์ด ์ •์ง€ํ•˜๊ฑฐ๋‚˜ ์•„์˜ˆ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š” ์ƒํ™ฉ์ด ์ƒ๊ธฐ๋Š” ๊ฒƒ

์ด์ „์— ํŒ€๋ฏธ์…˜ ํ’€๋‹ค๊ฐ€ ํฌ์ธํ„ฐ๋ฅผ ์ฒ˜์Œ ๋ณด๊ณ  ๊ตฌ๊ธ€๋ง์„ ํ•ด๋ดค๋Š”๋ฐ
์ „ํ˜€.. ์ •๋ง ์ „ํ˜€.. ๊ฐ์ด ์žกํžˆ์ง€๊ฐ€ ์•Š์•„์„œ ๋ง‰๋ง‰ํ–ˆ์—ˆ๋‹ค

์ด๋ฒˆ์— ๊ฐ•์˜ ๋“ค์œผ๋ฉด์„œ ํฌ์ธํ„ฐ๊ฐ€ ์กฐ๊ธˆ ์ต์ˆ™ํ•ด์ง€๊ธฐ ์‹œ์ž‘ํ–ˆ๊ณ 
์‚ด์ง์€ ๊ฐ์ด ์žกํžŒ ๊ฒƒ ๊ฐ™์•˜๋‹ค โœจ

์ €๋ฒˆ์ฃผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ‘œ๊ธฐ๋ฒ•๋ณด๋‹ค๋Š” ์ดํ•ด๊ฐ€ ์ž˜๋๋‹ค..ใ…Žใ…Ž


์•„์ง ํ‘œ๊ธฐ๋ฒ•์ด ํ—ท๊ฐˆ๋ฆฌ๊ธด ํ•˜์ง€๋งŒ ํ€ด์ฆˆ๋„ ๋ฌด๋‚œํ•˜๊ฒŒ ํ†ต๊ณผ!




๐Ÿ“Œ 5์ฃผ์ฐจ ํŒ€๋ฏธ์…˜

์•„๋ž˜ ๋‚ด์šฉ์€ ์ด๋ฒˆ ํŒ€๋ฏธ์…˜์„ ํ†ตํ•ด '๋ฉ”๋ชจ๋ฆฌ์™€ Overflow ๊ฐœ๋…'์— ๋Œ€ํ•ด ์ฐพ์•„๋ณด๊ณ  ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ด๋‹ค


1) ์ˆ˜์—…์—์„œ ์–ธ๊ธ‰๋˜์—ˆ๋˜ Heap overflow์™€ stack overflow์— ๋Œ€ํ•ด์„œ ์–ด๋–ค ๊ฒฝ์šฐ์— ๋ฐœ์ƒ์ด ๋˜๋Š”์ง€ ์„œ์ˆ ํ•ด์ฃผ์„ธ์š”.

ํž™(Heap) ์˜์—ญ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์ปค๋‹ค๋ž€ ์˜์—ญ์œผ๋กœ, ์‚ฌ์šฉ์ž์— ์˜ํ•ด ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ๋™์ ์œผ๋กœ ํ• ๋‹น๋˜๊ณ  ํ•ด์ œ๋œ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ์˜ ๋‚ฎ์€ ์ฃผ์†Œ์—์„œ ๋†’์€ ์ฃผ์†Œ์˜ ๋ฐฉํ–ฅ์œผ๋กœ ํ• ๋‹นํ•˜๋ฉฐ, malloc() ๋˜๋Š” new ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด ํ• ๋‹นํ•˜๊ณ  free() ๋˜๋Š” delete ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด ํ•ด์ œ๋œ๋‹ค.

์Šคํƒ(Stack) ์˜์—ญ์€ ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ๊ณผ ๊ด€๊ณ„๋˜๋Š” ์ง€์—ญ๋ณ€์ˆ˜์™€ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ €์žฅ๋˜๋Š” ์˜์—ญ์ด๋‹ค. ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ๊ณผ ํ•จ๊ป˜ ํ• ๋‹น๋˜๋ฉฐ ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ์ด ์™„๋ฃŒ๋˜๋ฉด ์†Œ๋ฉธํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ์Šคํƒ ์˜์—ญ์— ์ €์žฅ๋˜๋Š” ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ ์ •๋ณด๋ฅผ ์Šคํƒ ํ”„๋ ˆ์ž„(Stack Frame)์ด๋ผ๊ณ  ํ•œ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์ด ์ž๋™์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์ž„์‹œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์œผ๋กœ, ๋ฉ”๋ชจ๋ฆฌ์˜ ๋†’์€ ์ฃผ์†Œ์—์„œ ๋‚ฎ์€ ์ฃผ์†Œ์˜ ๋ฐฉํ–ฅ์œผ๋กœ ํ• ๋‹น๋œ๋‹ค.

ํž™ ์˜์—ญ์ด ํด์ˆ˜๋ก ์Šคํƒ ์˜์—ญ์ด ์ž‘์•„์ง€๊ณ  ์Šคํƒ ์˜์—ญ์ด ํด์ˆ˜๋ก ํž™ ์˜์—ญ์ด ์ปค์ง„๋‹ค. ์Šคํƒ์˜ ์ง€์—ญ๋ณ€์ˆ˜๋Š” ์‚ฌ์šฉ๋˜๊ณ  ์†Œ๋ฉธํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ ์šฉ๋Ÿ‰์ด ๋ถˆํ™•์‹คํ•˜๋‹ค. ๋”ฐ๋ผ์„œ ์Šคํƒ ์˜์—ญ์—์„œ์˜ ์ฃผ์†Œ๊ฐ’์€ ๋ฐ‘์—์„œ๋ถ€ํ„ฐ ์ฑ„์›Œ์ง€๋ฉฐ ๊ทธ ๋‹ค์Œ ์ฃผ์†Œ๋Š” ์„ ์–ธ๋œ ์ˆœ์„œ๋Œ€๋กœ ์ •ํ•ด์ง„๋‹ค. ๋ฐ˜๋ฉด ํž™ ์˜์—ญ์—์„œ์˜ ์ฃผ์†Œ๊ฐ’์€ ์œ„์—์„œ๋ถ€ํ„ฐ ์ฑ„์›Œ ๋‚ด๋ ค์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋‘ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์˜ ์ฃผ์†Œ๊ฐ€ ๊ฒน์น˜๊ฒŒ ๋˜๋Š” ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ(Overflow)๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ํž™์ด ์œ„์—์„œ๋ถ€ํ„ฐ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›์•„ ๋‚ด๋ ค์˜ค๋‹ค๊ฐ€ ์Šคํƒ์˜์—ญ์„ ์นจ๋ฒ”ํ•˜๋Š” ๊ฒฝ์šฐ ๋˜๋Š” ์Šคํƒ์ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›์•„ ์˜ฌ๋ผ๊ฐ€๋‹ค๊ฐ€ ํž™ ์˜์—ญ์„ ์นจ๋ฒ”ํ•˜๋Š” ๊ฒฝ์šฐ์— ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.


[์ฐธ๊ณ  ์ž๋ฃŒ ์ถœ์ฒ˜]
https://hwan-shell.tistory.com/13
https://velog.io/@hidaehyunlee/%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B5%AC%EC%A1%B0%EB%A5%BC-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90



2) Strcpy์™€ strncpy์˜ ์ฐจ์ด์ ์„ ์„œ์ˆ ํ•ด๋ณด์„ธ์š”. (์–ด๋–ค ๊ฒƒ์„ ์ถ”์ฒœํ•˜๋Š”์ง€์™€ ๊ทธ ์ด์œ ์— ๋Œ€ํ•ด์„œ ์„œ์ˆ ํ•ด์ฃผ์„ธ์š”.)

Strcpy()๋Š” string copy์˜ ์•ฝ์ž๋กœ์„œ strcpy(char dst, const char src)์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•œ๋‹ค. Dst๋Š” destination, src๋Š” source์˜ ์ค„์ž„๋ง๋กœ, src ๋ฌธ์ž์—ด์„ dst ๋ฒ„ํผ์— ๋ณต์‚ฌ, ์ €์žฅํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ํ•˜์ง€๋งŒ src ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ dst ๋ฒ„ํผ๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ด๋Ÿฐ ์ทจ์•ฝ์ ์„ ์ด์šฉํ•˜์—ฌ root ๊ถŒํ•œ์˜ ์‰˜์„ ํš๋“ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์•…์˜์ ์ธ ์ฝ”๋“œ๋ฅผ ์‹ฌ์–ด๋ฒ„๋ฆด ์ˆ˜๋„ ์žˆ๋‹ค. ์ด๋ฅผ ๋Œ€์‘ํ•˜๊ธฐ ์œ„ํ•ด strncpy()๊ฐ€ ๋“ฑ์žฅํ–ˆ๋‹ค.

Strncpy()๋Š” string new copy์˜ ์•ฝ์ž๋กœ strncpy(char dst, const char src, size_t len)์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•œ๋‹ค. Src ๋ฌธ์ž์—ด์˜ length ๋งŒํผ dst ๋ฒ„ํผ์— ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— src ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ ์ œํ•œ๋˜์–ด ์žˆ์–ด ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ์— ์žˆ์–ด ์•ˆ์ „ํ•˜๋‹ค. ํ•˜์ง€๋งŒ strncpy์˜ ๊ฒฝ์šฐ์—๋„ ๋ฒ„ํผ์˜ ํฌ๊ธฐ์™€ ๋™์ผํ•œ ์ž…๋ ฅ ๋ฌธ์ž์—ด์˜ ๊ฒฝ์šฐ ์ข…๋‹จ ๋ฌธ์ž null์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ„ํผ์˜ ํฌ๊ธฐ์™€ ๊ฐ™์€ ๋ฌธ์ž์—ด๋„ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค.


[์ฐธ๊ณ  ์ž๋ฃŒ ์ถœ์ฒ˜]
https://m.blog.naver.com/PostView.nhn?blogId=on21life&logNo=221479472885&proxyReferer=https:%2F%2Fwww.google.com%2F



3) ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ธฐํ™”, ๋ณต์‚ฌ, ์ด๋™, ๋น„๊ต์™€ ๊ฐ™์€ ํ•จ์ˆ˜๊ฐ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ๋ฐฉ๋ฒ•์„ ์ˆ™์ง€ํ•˜๊ณ , ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ ํ›„ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘์ด ๋˜๋Š”์ง€ ํ™•์ธํ•ด๋ณด์„ธ์š”.

  1. ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ธฐํ™” memset()

๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ๋•Œ์—๋Š” memset()์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. Memset()์„ ์‚ฌ์šฉํ•  ๋•Œ์—๋Š” ์ดˆ๊ธฐํ™”ํ•  ๋ณ€์ˆ˜(ํฌ์ธํ„ฐ ๋ณ€์ˆ˜), ์ดˆ๊ธฐํ™” ํ•ด์ค„ ๊ฐ’, ์ดˆ๊ธฐํ™” ํ•ด์ค„ ์˜์—ญ์˜ ํฌ๊ธฐ ์ˆœ์œผ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ž…๋ ฅํ•ด์ค€๋‹ค. Memset()์„ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” memset()์ด ์ •์˜๋˜์–ด ์žˆ๋Š” string.h ํŒŒ์ผ์„ ํฌํ•จํ•ด์•ผ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.


  1. ๋ฉ”๋ชจ๋ฆฌ ๋ณต์‚ฌ memcpy()

Memcpy()๋Š” string.h ํŒŒ์ผ์— ์ •์˜๋˜์–ด ์žˆ์œผ๋ฉฐ, ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ณต์‚ฌํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. Memcpy(๋ณต์‚ฌํ•  ์ฃผ์†Œ, ๋ณต์‚ฌํ•  ๊ฐ’, ๋ณต์‚ฌํ•  ๊ธธ์ด)๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.


  1. ๋ฉ”๋ชจ๋ฆฌ ์ด๋™ memmove()

Memmove() ๋˜ํ•œ string.h ํŒŒ์ผ์— ์ •์˜๋˜์–ด ์žˆ์œผ๋ฉฐ, ์‚ฌ์šฉ๋ฒ•์€ memmove(์˜ฎ๊ธธ ์œ„์น˜, ๋ณต์‚ฌ ์‹œ์ž‘ ์œ„์น˜, ๋ณต์‚ฌํ•  ๊ธธ์ด) ์ด๋‹ค. Memmove()๋Š” memcpy()์™€ ๋‹ฌ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ๊ฒน์ณ๋„ ๋œ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์–ด memcpy()๋ณด๋‹ค ์ž์ฃผ ์‚ฌ์šฉ๋˜๊ณค ํ•œ๋‹ค.


  1. ๋ฉ”๋ชจ๋ฆฌ ๋น„๊ต memcmp()

Memcmp()๋„ string.h ํŒŒ์ผ์— ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ ์‚ฌ์šฉ๋ฒ•์€ memcmp(๋น„๊ตํ•  ๊ฐ’1, ๋น„๊ตํ•  ๊ฐ’2, ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜)์ด๋‹ค. ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๊ฐ™๋‹ค๋ฉด 0, ๋น„๊ตํ•  ๊ฐ’1์ด ํฌ๋ฉด 1, ๋น„๊ตํ•  ๊ฐ’1์ด ์ž‘์œผ๋ฉด -1์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.



[์ฐธ๊ณ  ์ž๋ฃŒ ์ถœ์ฒ˜]
https://m.blog.naver.com/errorsoft666/221875718137
https://m.blog.naver.com/PostView.nhn?blogId=sharonichoya&logNo=220508334439&proxyReferer=https:%2F%2Fwww.google.com%2F
https://aossuper8.tistory.com/22




๐Ÿ“Œ 5์ฃผ์ฐจ ๋ผ์ด๋ธŒ ๊ฐ•์˜

ํ‰์ผ ์Šคํ„ฐ๋””๋ฅผ ๊ตฌํ•œ ๋’ค ๊ธˆ์š”์ผ์— ๋ผ์ด๋ธŒ๋กœ ๊ฐ•์˜๋ฅผ ๋“ค์„ ์ˆ˜ ์—†๊ฒŒ ๋ผ์„œ
ํ† ์š”์ผ์— 3~10์‹œ์— ๋…นํ™”๋ณธ์œผ๋กœ ๊ฐ•์˜๋ฅผ ๋“ค์„๋žฌ๋Š”๋ฐ...
๋‹ค๋ฅธ๊ฑฐ ํ•˜๋‹ค๊ฐ€ 10์‹œ 3๋ถ„์—์•ผ ์ƒ๊ฐ์ด ๋‚˜๋ฒ„๋ ธ๋‹ค ๐Ÿ˜ญ๐Ÿ˜ญ๐Ÿ˜ญ

๋งˆ์ง€๋ง‰ 6์ฃผ์ฐจ ๋ผ์ด๋ธŒ ๊ฐ•์˜๋Š” ์ ˆ๋Œ€ ๋†“์น˜์ง€ ๋ง์•„์•ผ์ง€ใ… ใ… 



๐Ÿ“Œ 5์ฃผ์ฐจ ํ›„๊ธฐ

C์–ธ์–ด๋ž‘ ์งฑ์นœ์ด ๋œ๊ฑด ์•„๋‹ˆ์ง€๋งŒ CS์— ๋Œ€ํ•œ ๊ฐœ๋…์„ ์žก์•„๊ฐ€๋Š” ๊ฒƒ ๊ฐ™์•„ ๊ธฐ๋ถ„์ด ์ข‹๋‹ค
C์–ธ์–ด๋ฅผ ๋ณธ๊ฒฉ์ ์œผ๋กœ ๋ฐฐ์šฐ๊ฒ ๋‹ค! ๋ณด๋‹ค๋Š” ๊ธฐ์ดˆ๋ฅผ ๋‹ค์ง€๊ณ  ์‹ถ์–ด์„œ ์‹œ์ž‘ํ•œ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์—,,,,

์ด๋ ‡๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•ด์„œ๋„ ๊ณต๋ถ€ํ–ˆ์œผ๋‹ˆ ์•ž์œผ๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ, ๋ฆฌ์•กํŠธ๋กœ ๊ฐœ๋ฐœ์„ ํ•  ๋•Œ์—๋„
๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋‚ญ๋น„ํ•˜๊ณ  ์žˆ์ง„ ์•Š์€์ง€๋„ ์‚ดํŽด๋ณด๋„๋ก ์ฃผ์˜ํ•ด์•ผ ๊ฒ ๋‹ค ๐Ÿ”ฅ

profile
Frontend Engineer & Value Creator

0๊ฐœ์˜ ๋Œ“๊ธ€