์ „์ฒด ๊ธ€ 30

[JS] ๊นŠ์€๋ณต์‚ฌ vs ์–•์€๋ณต์‚ฌ

๐Ÿ“Œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์›์‹œ๊ฐ’๊ณผ ์ฐธ์กฐ๊ฐ’ ์›์‹œ๊ฐ’ ์ฐธ์กฐ๊ฐ’ ํŠน์ง• ๋ฐ์ดํ„ฐ ๋ณต์‚ฌ๊ฐ€ ์ผ์–ด๋‚  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ƒˆ๋กœ ํ™•๋ณดํ•˜์—ฌ ๋…๋ฆฝ์ ์ธ ๊ฐ’์„ ์ €์žฅ ๋ฉ”๋ชจ๋ฆฌ์— ์ง์ ‘ ์ ‘๊ทผ์ด ์•„๋‹Œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์œ„์น˜(์ฃผ์†Œ)์— ๋Œ€ํ•œ ๊ฐ„์ ‘์ ์ธ ์ฐธ์กฐ๋ฅผ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผ mutability immutable mutable ์˜ˆ์‹œ string number bigint boolean undefined symbol ๊ทธ ์™ธ(array, object, function..) ๐Ÿ“Œ ์˜ˆ์‹œ - myArray์˜ ๋ฐ์ด์ฒ˜ ์ž์ฒด๋Š” ๋ณ„๋„์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„(Heap)์— ์ €์žฅ๋˜๋ฉฐ, ๋ณ€์ˆ˜์— ํ• ๋‹น ์‹œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ฃผ์†Œ(ํž™ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ๊ฐ’)์ด ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ด ๋ณ€์ˆ˜๊ฐ€ ๊ฐ€์ง€๊ณ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ด์šฉํ•ด์„œ ๋ณ€์ˆ˜์˜ ๊ฐ’์— ์ ‘๊ทผ - ๋ณ€์ˆ˜์˜ ๋ณต์‚ฌ๋‚˜ ์ˆ˜์ • ์‹œ ์ฐธ์กฐ ์—ฌ๋ถ€๋ฅผ ์ž˜ ๊ณ ๋ คํ•ด์•ผํ•จ ๐Ÿ“Œ ์–•์€..

[React] ๊ฐ€์ƒ๋”

๐Ÿ“Œ๊ฐ€์ƒ๋”์˜ ๊ฐœ๋… - ๊ณต์‹๋ฌธ์„œ ์ •์˜ The virtual DOM (VDOM) is a programming concept where an ideal, or “virtual”, representation of a UI is kept in memory and synced with the “real” DOM by a library such as ReactDOM. This process is called reconciliation. ๊ฐ€์ƒ์œผ๋กœ UI๋ฅผ ๋ฒ„์ธ„์–ผ๋”์— ์ €์žฅํ•ด๋‘์—ˆ๋‹ค๊ณ  Real Dom๊ณผ ์—ฐ๋™(sync) ์‹œ์ผœ์ฃผ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ปจ์…‰ ์ผ๋ช… reconciliation(ํ™”ํ•ด) ๊ณผ์ •์ด๋ผ ์ •์˜ ๐Ÿ“ŒDiffing ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ๋ฆฌ์•กํŠธ๋Š” Real Dom๊ณผ Virtual Dom์„ ์ฐธ๊ณ ํ•˜๋ฉด์„œ diffing ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•ด ๋ณ€ํ™”๊ฐ€ ์ผ..

[JS] var vs let vs const

var let const ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™” ์„ ์–ธ + ์ดˆ๊ธฐํ™” ๋™์‹œ ์ง„ํ–‰ ์„ ์–ธ, ์ดˆ๊ธฐํ™” ๋ถ„๋ฆฌ ์ง„ํ–‰ ์„ ์–ธ, ์ดˆ๊ธฐํ™” ๋ถ„๋ฆฌ ์ง„ํ–‰ ์Šค์ฝ”ํ”„ ํ•จ์ˆ˜์Šค์ฝ”ํ”„ ๋ธ”๋ก์Šค์ฝ”ํ”„ ๋ธ”๋ก์Šค์ฝ”ํ”„ ์žฌ์„ ์–ธ ๊ฐ€๋Šฅ ๋ถˆ๊ฐ€ ๋ถˆ๊ฐ€ ์žฌํ• ๋‹น ๊ฐ€๋Šฅ ๊ฐ€๋Šฅ ๋ถˆ๊ฐ€ ํ˜ธ์ด์ŠคํŒ… ํ˜ธ์ด์ŠคํŒ…๋จ TDZ TDZ ์ฐธ๊ณ  https://www.zerocho.com/category/ECMAScript/post/5757d74345041aaae7493479 https://www.zerocho.com/category/ECMAScript/post/5757d74345041aaae7493479 www.zerocho.com

[React] ํ•จ์ˆ˜ํ˜•๊ณผ ํด๋ž˜์Šคํ˜•์˜ ์žฅ๋‹จ์  ๋น„๊ต

ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ ์„ ์–ธ๋ฐฉ์‹ 1. state, lifeCycle ๊ด€๋ จ ๊ธฐ๋Šฅ ์‚ฌ์šฉ ๋ถˆ๊ฐ€(v16.8๋ถ€ํ„ฐ Hook์œผ๋กœ ํ•ด๊ฒฐ) 2. ํด๋ž˜์Šคํ˜•๋ณด๋‹ค ๋ฉ”๋ชจ๋ฆฌ ์ž์›์„ ๋œ ์‚ฌ์šฉ 3. ์ปดํฌ๋„ŒํŠธ ์„ ์–ธ์ด ํŽธํ•จ 1. class ํ‚ค์›Œ๋“œ ํ•„์š” 2. render() ๋ฉ”์†Œ๋“œ ๋ฐ˜๋“œ์‹œ ํ•„์š” 3. Component๋กœ ์ƒ์†์„ ๋ฐ›์•ผํ•จ 4. state, lifeCycle ๊ด€๋ จ ๊ธฐ๋Šฅ ์‚ฌ์šฉ ๊ฐ€๋Šฅ state 1. useState ํ•จ์ˆ˜๋กœ state๋ฅผ ์‚ฌ์šฉ 2. useState ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๋ฐฐ์—ด์ด ๋ฐ˜ํ™˜๋˜๋Š”๋ฐ ์ฒซ๋ฒˆ์งธ ์›์†Œ๋Š” ํ˜„์žฌ ์ƒํƒœ, ๋‘๋ฒˆ์งธ ์›์†Œ๋Š” ์ƒํƒœ๋ฅผ ๋ฐ”๊ฟ”์ฃผ๋Š” ํ•จ์ˆ˜ 1. constructor ์•ˆ์—์„œ this.state ์ดˆ๊ธฐ ๊ฐ’ ์„ค์ • ๊ฐ€๋Šฅ 2. this.setState()๋ฅผ ํ†ตํ•ด state๊ฐ’์„ ๋ณ€๊ฒฝ props 1. props๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ..

[์†Œ๊ฐœํŒ…์„œ๋น„์Šค] ๋ฐฉ ์ž…์žฅ ์ฝ”๋“œ ๋ถ€์—ฌํ•˜๋Š” ์˜ค๋ฅ˜ ํ•ด๊ฒฐ

๐Ÿ“Œ ์ƒํ™ฉ์ •๋ฆฌ 1. ์—ญํ•  ์„ ํƒ ํ™”๋ฉด์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์—ญํ• ์„ ์„ ํƒํ•œ๋‹ค 2. ์„ ํƒํ•œ ์—ญํ•  ์ •๋ณด๋ฅผ ์„œ๋ฒ„๋กœ ๋ณด๋‚ด๋ฉด, ์„œ๋ฒ„๊ฐ€ ๋žœ๋ค ๋งค์นญ ๊ณต์‹์— ๋งž์ถฐ์„œ ๋งค์นญ ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค 3. ๋งค์นญ ์ •๋ณด๋ฅผ ์ด์šฉํ•ด ๋ฏธํŒ… ์„œ๋น„์Šค์— ์ž…์žฅํ•œ๋‹ค ๐Ÿ“Œ ํ•ด๊ฒฐ๊ณผ์ • 1. ๋งค์นญ ๋Œ€๊ธฐ์‹ค๋กœ ์ด๋™ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ •์˜ 1-1. ๋งค์นญ ๋Œ€๊ธฐ์‹ค๋กœ ์ด๋™ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์†Œ๊ฐœํŒ… ์‹œ์ž‘ํ•˜๊ธฐ ๋ฒ„ํŠผ์— ๊ฑธ์–ด์คŒ 1-2. ์ฐธ๊ณ ๋กœ ์—ญํ•  ์ฝ”๋“œ๋ฅผ ์ค‘์•™๊ด€๋ฆฌ์†Œ์— ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์€ ์•„๋ž˜์™€ ๊ฐ™์ด ์ •์˜๋˜์–ด ์žˆ์Œ 2. ๋งค์นญ ๋Œ€๊ธฐ์‹ค์— ์ž…์žฅํ•˜๋ฉด ๋ฐ”๋กœ ๋งค์นญ ์ •๋ณด ๋ฐ›์•„์˜ค๋Š” matchStart ํ•จ์ˆ˜ ์‹คํ–‰ 2-1. classํ˜• ํ•จ์ˆ˜์—์„œ ์ค‘์•™๊ด€๋ฆฌ์†Œ์— ์žˆ๋Š” state๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•, ์Šฌ๋ผ์ด์Šค์˜ ์•ก์…˜ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๊ตฌ๊ธ€๋ง์„ ํ†ตํ•ด ์ฐพ์•˜์Œ 3. matchStartํ•จ์ˆ˜๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๋™์ž‘ํ•จ 3-1. history๋ฅผ ์‚ฌ์šฉ..

[์›น] ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ๋™์ž‘ ๊ณผ์ • - ๋ Œ๋”๋ง ์—”์ง„

๐Ÿ“Œ ๋ธŒ๋ผ์šฐ์ €์˜ ๊ณตํ†ต์ ์ธ ๊ตฌ์กฐ - User Interface : ์ฃผ์†Œ ํ‘œ์‹œ์ค„, ์ด์ „/๋‹ค์Œ/์ƒˆ๋กœ๊ณ ์นจ ๋ฒ„ํŠผ ๋“ฑ ์›นํŽ˜์ด์ง€๋ฅผ ์ œ์™ธํ•˜๊ณ  ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉ ํ•˜๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค - Broswer Engine : ์œ ์ € ์ธํ„ฐํŽ˜์ด์Šค์™€ ๋ Œ๋”๋ง ์—”์ง„์„ ์—ฐ๊ฒฐํ•˜๋Š” ๋ธŒ๋ผ์šฐ์ € ์—”์ง„ - Rendering Engine : HTML๊ณผ CSS๋ฅผ ํŒŒ์‹ฑํ•˜์—ฌ ์š”์ฒญํ•  ์›น ํŽ˜์ด์ง€๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋ Œ๋”๋ง ์—”์ง„ - Networking : ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ์ˆ˜ํ–‰ - Javascript Interpreter : ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ธํ„ฐํ”„๋ฆฐํ„ฐ(ex. ํฌ๋กฌ์—์„œ V8) - UI Bacend : ์ฒดํฌ๋ฐ•์Šค๋‚˜ ๋ฒ„ํŠผ๊ณผ ๊ฐ™์€ ๊ธฐ๋ณธ์ ์ธ ์œ„์ ฏ์„ ๊ทธ๋ ค์ฃผ๋Š” UI Backend - Data Persistance : ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€๋‚˜ ์ฟ ํ‚ค์™€ ๊ฐ™์ด ๋ณด์กฐ ๊ธฐ์–ต์žฅ์น˜์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š”..

[Operating System] ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ

๐Ÿ“Œ ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ ํ”„๋กœ์„ธ์Šค : ํ”„๋กœ๊ทธ๋žจ์„ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์—์„œ ์‹คํ–‰์ค‘์ธ ์ž‘์—…, ๊ฐ๊ฐ ๋ณ„๋„์˜ ์ฃผ์†Œ๊ณต๊ฐ„ ํ• ๋‹น(๋…๋ฆฝ์ ) ์Šค๋ ˆ๋“œ : ํ”„๋กœ์„ธ์Šค ์•ˆ์—์„œ ์‹คํ–‰๋˜๋Š” ์—ฌ๋Ÿฌ ํ๋ฆ„ ๋‹จ์œ„, stack๋งŒ ๋”ฐ๋กœ ํ• ๋‹น ๋ฐ›๊ณ  ๋‚˜๋จธ์ง€ ์˜์—ญ์€ ๊ณต์œ  - ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ, ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ ๊ฐ™์ด ์ƒ์„ฑ๋จ(Main Thread) โœ” ํ”„๋กœ์„ธ์Šค์˜ ๊ตฌ์กฐ Code : ์ฝ”๋“œ ์ž์ฒด๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ(ํ”„๋กœ๊ทธ๋žจ ๋ช…๋ น) Data : ์ „์—ญ๋ณ€์ˆ˜, ์ •์ ๋ณ€์ˆ˜, ๋ฐฐ์—ด ๋“ฑ Stack : ์ง€์—ญ๋ณ€์ˆ˜, ๋งค๊ฐœ๋ณ€์ˆ˜, ๋ณต๊ท€ ์ฃผ์†Œ์™€ ๋กœ์ปฌ ๋ณ€์ˆ˜์™€ ๊ฐ™์€ ์ž„์‹œ ์ž๋ฃŒ, ๋ฆฌํ„ด ๊ฐ’(์ž„์‹œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ) Heap : ํ”„๋กœ์„ธ์Šค ์‹คํ–‰ ์ค‘์— ๋™์ ์œผ๋กœ ํ• ๋‹น๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ โœ” ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ธ”๋ก(Process Control Block, PCB) ๊ฐœ๋… - ํŠน์ • ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์ค‘์š”ํ•œ ์ •๋ณด..

[Network]๋ธ”๋กœํ‚น, ๋…ผ๋ธ”๋กœํ‚น, ๋™๊ธฐ, ๋น„๋™๊ธฐ

๋ธ”๋กœํ‚น/๋…ผ๋ธ”๋กœํ‚น - ๋ธ”๋กœํ‚น/๋…ผ๋ธ”๋กœํ‚น์€ ํ˜ธ์ถœ๋œ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœํ•œ ํ•จ์ˆ˜์—๊ฒŒ ์ œ์–ด๊ถŒ์„ ๊ฑด๋„ค์ฃผ๋Š๋ƒ ์•„๋‹ˆ๋ƒ์˜ ์ฐจ์ด๋‹ค - ํ•จ์ˆ˜ A,B๊ฐ€ ์žˆ๊ณ , A์•ˆ์—์„œ B๋ฅผ ํ˜ธ์ถœํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •(์ œ์–ด๊ถŒ์€ B๊ฐ€ ์žˆ์Œ) Blocking : ์ œ์–ด๊ถŒ์„ ๋„˜๊ฒจ์ฃผ์ง€ ์•Š์•„์„œ, ํ˜ธ์ถœํ•œ A๋Š” B๊ฐ€ ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผํ•จ Non-blocking : ํ•จ์ˆ˜ B๊ฐ€ ํ•  ์ผ์„ ๋งˆ์น˜์ง€ ์•Š์•˜์–ด๋„ A์—๊ฒŒ ์ œ์–ด๊ถŒ์„ ๋ฐ”๋กœ ๋„˜๊น€, A๋Š” B๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋ฉฐ ๋‹ค๋ฅธ ์ผ ๊ฐ€๋Šฅ ๋™๊ธฐ/๋น„๋™๊ธฐ - ๋™๊ธฐ/๋น„๋™๊ธฐ๋Š” ์ผ์„ ์ˆ˜ํ–‰ ์ค‘์ธ ๋™์‹œ์„ฑ์ด ์ค‘์š” - ์œ„์™€ ๊ฐ™์ด ๊ฐ€์ • ์‹œ, ํ•จ์ˆ˜ A์™€ B๊ฐ€ ์žˆ์„๋•Œ, B์˜ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋‚˜ ์ข…๋ฃŒ์ƒํƒœ๋ฅผ A๊ฐ€ ์‹ ๊ฒฝ์“ฐ๊ณ  ์žˆ๋Š๋ƒ ์•„๋‹ˆ๋ƒ์˜ ์ฐจ์ด - ๋น„๋™๊ธฐ๋Š” callback์ด ์˜ค๊ธฐ ์ „๊นŒ์ง€ ํ˜ธ์ถœํ•œ ํ•จ์ˆ˜๋Š” ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ์ผ ๊ฐ€๋Šฅ ๋™๊ธฐ, Synchronous : ํ•จ์ˆ˜ A๋Š” ํ•จ์ˆ˜ B๊ฐ€ ์ผ์„..

[JS] ๋™๊ธฐ ์ฒ˜๋ฆฌ์™€ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ

๋™๊ธฐ ์ฒ˜๋ฆฌ์™€ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ - ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ๋‹จ ํ•˜๋‚˜์˜ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ ์Šคํƒ์„ ๊ฐ€์ง - ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ํ•œ๋ฒˆ์— ํ•˜๋‚˜์˜ ํƒœ์Šคํฌ๋งŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•จ - ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ํƒœ์Šคํฌ๋งŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ฒ˜๋ฆฌ์— ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ํƒœ์Šคํฌ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ๋ธ”๋กœํ‚น(Blocking, ์ž‘์—…์ค‘๋‹จ)์ด ๋ฐœ์ƒ ์˜ˆ์‹œ - ๋™๊ธฐ ์ฒ˜๋ฆฌ //sleep ํ•จ์ˆ˜๋กœ setTimeout ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•ด๋ณด์ž //sleep ํ•จ์ˆ˜๋Š” ์ผ์ •์‹œ๊ฐ„(delay)๊ฐ€ ๊ฒฝ๊ณผํ•œ ํ›„ ์ฝœ๋ฐฑ ํ•จ์ˆ˜(func)๋ฅผ ํ˜ธ์ถœ function sleep(func, delay) { const delayUntil = Date.now() + delay; while (Date.now() < delayUntil); func() } function foo() { c..

[JS] ์ฝœ๋ฐฑ ํ•จ์ˆ˜

์ฝœ๋ฐฑํ•จ์ˆ˜ ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ๋‹ค๋ฅธ ํ•จ์ˆ˜์˜ ๋‚ด๋ถ€๋กœ ์ „๋‹ฌ๋˜๋Š” ํ•จ์ˆ˜(๋‹ค์‹œ, ์ „ํ™”) ์˜ˆ์‹œ //์™ธ๋ถ€์—์„œ ์ „๋‹ฌ๋ฐ›์€ f๋ฅผ n๋งŒํผ ๋ฐ˜๋ณต ํ˜ธ์ถœ function repeat(n,f) { for (var i = 0; i