[JavaScript] ํด๋กœ์ €

ํด๋กœ์ €(closure)๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ณ ์œ ์˜ ๊ฐœ๋…์ด ์•„๋‹Œ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ค‘์š”ํ•œ ํŠน์„ฑ์œผ๋กœ MDN์—์„œ๋Š” ํด๋กœ์ €๋ฅผ "ํ•จ์ˆ˜์™€ ๊ทธ ํ•จ์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ๊ณผ์˜ ์กฐํ•ฉ"์ด๋ผ๊ณ  ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํด๋กœ์ €๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„  ํ•จ์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์— ๋Œ€ํ•ด ์•Œ์•„์•ผํ•ฉ๋‹ˆ๋‹ค. ๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ”„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ํ•จ์ˆ˜๋ฅผ ์–ด๋””์„œ ์ •์˜ํ–ˆ๋Š”์ง€์— ๋”ฐ๋ผ ์ƒ์œ„ ์Šค์ฝ”ํ”„์ธ ๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ”„(์ •์  ์Šค์ฝ”ํ”„)๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. const x = 1; function foo () { const x = 10; bar(); } function bar () { console.log(X); } foo(); // 1 bar(); // 1 ์œ„ ์˜ˆ์ œ์˜ foo ํ•จ์ˆ˜์™€ bar ํ•จ์ˆ˜๋Š” ๋ชจ๋“œ ์ „์—ญ์—์„œ ์ •์˜๋œ ์ „์—ญ ํ•จ์ˆ˜๋กœ foo ํ•จ์ˆ˜์™€ bar ํ•จ์ˆ˜ ๋ชจ๋‘ ..

[๋„คํŠธ์›Œํฌ] ๋„์ปค(Docker)๋ž€?

๋„์ปค๋ž€? ๋„์ปค๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹ ์†ํ•˜๊ฒŒ ๊ตฌ์ถ•, ํ…Œ์ŠคํŠธ ๋ฐ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ์†Œํ”„ํŠธ์›จ์–ด ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. Go์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ๋ฆฌ๋ˆ…์Šค ์ปจํ…Œ์ด๋„ˆ ๊ธฐ์ˆ ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์˜คํ”ˆ์†Œ์Šค ๊ฐ€์ƒํ™” ํ”Œ๋žซํผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ํ™˜๊ฒฝ์„ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Œ OS๋ฅผ ๊ณต์œ , ๊ฒฉ๋ฆฌํ™”ํ•˜์—ฌ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ ์ฆ‰, ๋„์ปค๋Š” ๋…๋ฆฝ๋œ ํ™˜๊ฒฝ์„ ๋งŒ๋“ค์–ด์„œ ํ•˜๋“œ์›จ์–ด๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ™œ์šฉํ•˜๋Š” ๊ธฐ์ˆ ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Docker๋Š” ํ˜„์žฌ ๋งŽ์€ ์„œ๋น„์Šค์—์„œ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” ๊ธฐ์ˆ ๋กœ์„œ ํŠนํžˆ *MSA์˜ ๋‹จ์ ์ธ ๊ด€๋ฆฌ์˜ ๋ณต์žก์„ฑ์„ ํ•ด๊ฒฐํ•ด์ฃผ๊ธฐ ์œ„ํ•ด ์„œ๋น„์Šค์˜ ์ปจํ„ฐ์ด๋„ˆํ™”๊ฐ€ ์ด๋ฃจ์–ด์ง€๋ฉฐ Docker์™€ Kubernetes๊ฐ€ ๋งŽ์ด ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. *MSA : ์„œ๋น„์Šค๊ฐ„์˜ ์˜์กด์„ฑ์„ ์—†์• ๊ณ  ๊ธฐ๋Šฅ์„ ์ชผ๊ฐœ๋Š” ๊ฒƒ์„ ์ค‘์ ์ ์œผ๋กœ ์„ค๊ณ„ํ•œ ์•„ํ‚คํ…์ฒ˜ ๊ฐ€์ƒํ™”๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  ๊ฐ€์ƒํ™”๋ž€ ํ•˜๋‚˜์˜ ํ•˜๋“œ์›จ์–ด๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ€..

CS/Network 2022. 7. 27. 19:45
[JavaScript] ์‹คํ–‰ ์ปจํ…์ŠคํŠธ

์‹คํ–‰ ์ปจํ…์ŠคํŠธ(execution context)๋ž€? ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋Š” ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๊ณ  ์ฝ”๋“œ์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์‹ค์ œ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ์˜์—ญ์œผ๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ํ•ต์‹ฌ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. ์†Œ์Šค์ฝ”๋“œ์˜ ํƒ€์ž… ECMAScript ์‚ฌ์–‘์€ ์†Œ์Šค์ฝ”๋“œ๋ฅผ 4๊ฐ€์ง€ ํƒ€์ž…์œผ๋กœ ๊ตฌ๋ถ„ํ•˜๋Š”๋ฐ ํƒ€์ž…์— ๋”ฐ๋ผ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ณผ์ •๊ณผ ๊ด€๋ฆฌ ๋‚ด์šฉ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์†Œ์Šค์ฝ”๋“œ ํƒ€์ž… ์„ค๋ช… ์ „์—ญ ์ฝ”๋“œ - ์ „์—ญ์— ์กด์žฌํ•˜๋Š” ์†Œ์Šค์ฝ”๋“œ - ์ตœ์ƒ์œ„ ์Šค์ฝ”ํ”„์ธ ์ „์—ญ ์Šค์ฝ”ํ”„ ์ƒ์„ฑ - ์ „์—ญ ์ฝ”๋“œ๊ฐ€ ํ‰๊ฐ€๋˜๋ฉด ์ „์—ญ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๊ฐ€ ์ƒ์„ฑ ํ•จ์ˆ˜ ์ฝ”๋“œ - ํ•จ์ˆ˜ ๋‚ด๋ถ€์— ์กด์žฌํ•˜๋Š” ์†Œ์Šค์ฝ”๋“œ - ์ง€์—ญ ์Šค์ฝ”ํ”„๋ฅผ ์ƒ์„ฑ - ํ•จ์ˆ˜ ์ฝ”๋“œ๊ฐ€ ํ‰๊ฐ€๋˜๋ฉด ํ•จ์ˆ˜ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๊ฐ€ ์ƒ์„ฑ eval ์ฝ”๋“œ - ๋นŒํŠธ์ธ ์ „์—ญ ํ•จ์ˆ˜์ธ eval ํ•จ์ˆ˜์— ์ธ์ž๋กœ ์ „๋‹ฌ๋˜์–ด ์‹คํ–‰๋˜๋Š” ์†Œ..

[JavaScript] ๋นŒํŠธ์ธ ๊ฐ์ฒด

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด์˜ ๋ถ„๋ฅ˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํฌ๊ฒŒ 3๊ฐœ์˜ ๊ฐ์ฒด๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ข…๋ฅ˜ ์„ค๋ช… ํ‘œ์ค€ ๋นŒํŠธ์ธ ๊ฐ์ฒด - ESMAScript ์‚ฌ์–‘์— ์ •์˜๋œ ๊ฐ์ฒด - ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์—ญ์˜ ๊ณตํ†ต ๊ธฐ๋Šฅ์„ ์ œ๊ณต - ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ํ™˜๊ฒฝ๊ณผ ๊ด€๊ณ„์—†์ด ์–ธ์ œ๋‚˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅ - ์ „์—ญ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋กœ์„œ ์ œ๊ณต๋จ - ๋ณ„๋„์˜ ์„ ์–ธ ์—†์ด ์ „์—ญ ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ์–ธ์ œ๋‚˜ ์ฐธ์กฐ ๊ฐ€๋Šฅ ํ˜ธ์ŠคํŠธ ๊ฐ์ฒด - ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ํ™˜๊ฒฝ์—์„œ ์ถ”๊ฐ€๋กœ ์ œ๊ณตํ•˜๋Š” ๊ฐ์ฒด (ESMAScript ์‚ฌ์–‘์— ์ •์˜๋œ ๊ฐ์ฒดX) - ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ : *ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ Web API๋ฅผ ํ˜ธ์ŠคํŠธ ๊ฐ์ฒด๋กœ ์ œ๊ณต - Node.js ํ™˜๊ฒฝ : ๊ณ ์œ ์˜ API๋ฅผ ํ˜ธ์ŠคํŠธ ๊ฐ์ฒด๋กœ ์ œ๊ณต ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ์ฒด - ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ •์˜ํ•œ ๊ฐ์ฒด (ํ‘œ์ค€ ๋นŒํŠธ์ธ ๊ฐ์ฒด์™€ ํ˜ธ์ŠคํŠธ ๊ฐ์ฒด์ฒ˜๋Ÿผ ๊ธฐ๋ณธ ์ œ๊ณต๋˜๋Š” ๊ฐ์ฒดX)..

[JavaScript] strict mode

strict mode๋ž€? ES5๋ถ€ํ„ฐ ์ถ”๊ฐ€๋œ strict mode(์—„๊ฒฉ ๋ชจ๋“œ)๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด์˜ ๋ฌธ๋ฒ•์„ ์ข€๋” ์—„๊ฒฉํžˆ ์ ์šฉํ•˜์—ฌ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๊ฑฐ๋‚˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์˜ ์ตœ์ ํ™” ์ž‘์—…์— ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ์— ๋Œ€ํ•ด ๋ช…์‹œ์ ์ธ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์˜ค๋ฅ˜๋ฅผ ์ค„์—ฌ ์•ˆ์ •์ ์ธ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํ•ด๊ฒฐ์ฑ…์œผ๋กœ, ์ž ์žฌ์ ์ธ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๊ธฐ ์–ด๋ ค์šด ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์ธ strict mode๋ฅผ ๋งŒ๋“ค๊ณ  ๊ทธ ํ™˜๊ฒฝ์—์„œ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. *ESLint : ์ •์  ๋ถ„์„๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์Šค์บ”ํ•˜์—ฌ ๋ฌธ๋ฒ•์  ์˜ค๋ฅ˜๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ž ์žฌ์  ์˜ค๋ฅ˜๊นŒ์ง€ ์ฐพ์•„๋‚ด๊ณ  ์˜ค๋ฅ˜์˜ ์›์ธ์„ ๋ฆฌํฌํŒ…ํ•ด์ฃผ๋Š” ์œ ์šฉํ•œ ๋„๊ตฌ. ๋ฆฐํŠธ ๋„๊ตฌ๋ฅผ ํ™œ์šฉํ•˜๋ฉด strict mode์™€ ์œ ์‚ฌํ•œ ํšจ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์–ด ์‹ค์ œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋Š” ESLint..

[JavaScript] ํ”„๋กœํ† ํƒ€์ž…

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋ช…๋ นํ˜•, ํ•จ์ˆ˜ํ˜•, ํ”„๋กœํ† ํƒ€์ž… ๊ธฐ๋ฐ˜ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ง€์›ํ•˜๋Š” ๋ฉ€ํ‹ฐ ํŒจ๋Ÿฌ๋‹ค์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. C++๋‚˜ ์ž๋ฐ”์™€ ๊ฐ™์€ ํด๋ž˜์Šค ๊ธฐ๋ฐ˜ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ณด๋‹ค ํšจ์œจ์ ์ด๋ฉฐ ๋” ๊ฐ•๋ ฅํ•œ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋Šฅ๋ ฅ์„ ์ง€๋‹ˆ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋ช…๋ น์–ด ๋˜๋Š” ํ•จ์ˆ˜์˜ ๋ชฉ๋ก์œผ๋กœ ๋ณด๋Š” ์ „ํ†ต์ ์ธ ๋ช…๋ นํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ ˆ์ฐจ์ง€ํ–ฅ์  ๊ด€์ ์—์„œ ๋ฒ—์–ด๋‚˜ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋…๋ฆฝ์  ๋‹จ์œ„, ์ฆ‰ ๊ฐ์ฒด์˜ ์ง‘ํ•ฉ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ํ‘œํ˜„ํ•˜๋ ค๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์ž…๋‹ˆ๋‹ค. // ์ด๋ฆ„๊ณผ ์ฃผ์†Œ ์†์„ฑ์„ ๊ฐ–๋Š” ๊ฐ์ฒด const person = { name: 'Lee', address: 'Seoul' }; const circle = { radius: 5, getDiameter() { return 2 * radi..

[์šด์˜์ฒด์ œ] ๋ฌธ๋งฅ ๊ตํ™˜(Context Switching)์ด๋ž€?

๋ฌธ๋งฅ ๊ตํ™˜์ด๋ž€? ๋ฌธ๋งฅ ๊ตํ™˜์€ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์‚ฌ์šฉ ์ค‘์ธ ์ƒํƒœ์—์„œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด, ์ด์ „์˜ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ(๋ฌธ๋งฅ)์„ ๋ณด๊ด€ํ•˜๊ณ  ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๋ฅผ ์ ์žฌํ•˜๋Š” ์ž‘์—…์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ํ•œ ํ”„๋กœ์„ธ์Šค์˜ ๋ฌธ๋งฅ์€ ๊ทธ ํ”„๋กœ์„ธ์Šค์˜ ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ธ”๋ก(PCB)์— ๊ธฐ๋ก๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. PCB(Process Control Block)๋ž€? ์šด์˜์ฒด์ œ๊ฐ€ ์‹œ์Šคํ…œ ๋‚ด์˜ ํ”„๋กœ์„ธ์Šค๋“ค์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ์œ ์ง€ํ•˜๋Š” ์ •๋ณด๋“ค์„ ๋‹ด๋Š” ์ปค๋„ ๋‚ด ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ์ปค๋„ ์ฃผ์†Œ ๊ณต๊ฐ„์˜ data ์˜์—ญ์— ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. PCB์— ์ €์žฅ๋˜๋Š” ๋‚ด์šฉ๋“ค Process ์ƒํƒœ : CPU๋ฅผ ํ• ๋‹นํ•ด๋„ ๋˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ • PC๊ฐ’ : ๋‹ค์Œ์— ์ˆ˜ํ–‰ํ•  ๋ช…๋ น์–ด์˜ ์œ„์น˜๋ฅผ ๊ฐ€๋ฅดํ‚ด CPU Register : CPU ์—ฐ์‚ฐ์„ ์œ„ํ•ด ํ˜„ ์‹œ์ ์— ๋ ˆ์ง€์Šคํ„ฐ์—..

CS/Operating System 2022. 7. 23. 14:00