๐Ÿชด ์„ฑ์žฅ์ผ์ง€

์ฑ… ํ–‰๋ณตํ•œ ์ด๊ธฐ์ฃผ์˜์ž(์›จ์ธ ๋‹ค์ด์–ด)์˜ ๋‚ด์šฉ์— ์ž๊ทน๋ฐ›์•„ ์‹œ์ž‘ํ•˜๋Š” ์†Œ๋ฐ•ํ•œ ์„ฑ์žฅ๊ธฐ๋ก

์‚ด์•„์žˆ๋Š” ๊ฝƒ๊ณผ ์ฃฝ์€ ๊ฝƒ์€ ์–ด๋–ป๊ฒŒ ๊ตฌ๋ณ„ํ•˜๋Š”๊ฐ€?
์„ฑ์žฅํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์‚ด์•„ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.
์ƒ๋ช…์˜ ์œ ์ผํ•œ ์ฆ๊ฑฐ๋Š” ์„ฑ์žฅ์ด๋‹ค!

๐ŸŒณ ํ‚ค์›Œ๋“œ ์ตœ๋Œ€ํ•œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌ, ์ถ”ํ›„์— ๋ณด๋ฉด์„œ ์Šค์Šค๋กœ ์„ค๋ช…

๋„คํŠธ์›Œํฌ ๋ฌผ๋ฆฌ ๊ณ„์ธต(OSI์˜ 1๊ณ„์ธต)

๋ฌผ๋ฆฌ ๊ณ„์ธต

  • 0๊ณผ 1๋งŒ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋น„ํŠธ์—ด์„ ์ „๊ธฐ ์‹ ํ˜ธ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ์กด์žฌํ•˜๋Š” ๊ณ„์ธต
  • ์ปดํ“จํ„ฐ์™€ ๋„คํŠธ์›Œํฌ ์žฅ๋น„๋ฅผ ์—ฐ๊ฒฐ ๋ฐ ์„œ๋กœ ๊ฐ„์— ์ „์†ก๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ „๊ธฐ ์‹ ํ˜ธ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณ„์ธต

์ „๊ธฐ ์‹ ํ˜ธ ์ข…๋ฅ˜

  • ์•„๋‚ ๋กœ๊ทธ ์‹ ํ˜ธ: ํŒŒํ˜•(๋ฌผ๊ฒฐ ๋ชจ์–‘)์œผ๋กœ ์ฃผ๋กœ ์ „ํ™” ํšŒ์„ , ๋ผ๋””์˜ค ๋ฐฉ์†ก ๋“ฑ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์‹ ํ˜ธ
  • ๋””์ง€ํ„ธ ์‹ ํ˜ธ: ๋ง‰๋Œ€ ๋ชจ์–‘์œผ๋กœ ์ปดํ“จํ„ฐ์˜ 0๊ณผ 1 ๋น„ํŠธ์—ด์„ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์ „๊ธฐ ์‹ ํ˜ธ

๋žœ ์นด๋“œ

๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์†ก์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฉ”์ธ ๋ณด๋“œ ๋‚ด์— ์žˆ๋Š” ๋žœ ์นด๋“œ ํ˜น์€ ๋ณ„๋„์˜ ๋žœ ์นด๋“œ๋ฅผ ์‚ฌ์šฉ

๋„คํŠธ์›Œํฌ ์ „์†ก ๋งค์ฒด

์ „์†ก ๋งค์ฒด๋ž€ ๋ฐ์ดํ„ฐ๊ฐ€ ํ๋ฅด๋Š” ๋ฌผ๋ฆฌ์ ์ธ ์„ ๋กœ๋กœ ํฌ๊ฒŒ ์œ ์„ ๊ณผ ๋ฌด์„ ์œผ๋กœ ๊ตฌ๋ถ„

ํŠธ์œ„์ŠคํŠธ ํŽ˜์–ด ์ผ€์ด๋ธ”(์œ ์„ )

์ผ๋ฐ˜์ ์œผ๋กœ ํ”ํžˆ ๋žœ ์ผ€์ด๋ธ”, ๋žœ ์„ ์ด๋ผ ๋ถ€๋ฅด๋Š” ์ผ€์ด๋ธ” ์ผ€์ด๋ธ”์˜ ์–‘์ชฝ ๋์—๋Š” RJ-45๋ผ๋Š” ์ปค๋„ฅํ„ฐ๊ฐ€ ๋ถ™์–ด์žˆ๋‹ค.(๋žœ ๊ฝ‚์œผ๋ฉด ๋”ธ๊น ์†Œ๋ฆฌ๋‚˜๋Š” ๋ถ€๋ถ„)

์ผ€์ด๋ธ”์˜ ์ข…๋ฅ˜

  • UTP(Unshielded Twist Pair)

    • ๊ตฌ๋ฆฌ ์„  8๊ฐœ๋ฅผ 2๊ฐœ์”ฉ ๊ผฌ์•„ ๋งŒ๋“  ๋„ค ์Œ์˜ ์ „์„ ์œผ๋กœ ๋”ฐ๋กœ ์‹ค๋“œ ๋ณดํ˜ธ๊ฐ€ ๋˜์–ด์žˆ์ง€ ์•Š์•„ ๋…ธ์ด์ฆˆ์˜ ์˜ํ–ฅ์„ ๋ฐ›๊ธฐ ์‰ฌ์›€
    • ์ €๋ ดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ฐ˜์ ์œผ๋กœ ๋งŽ์ด ์‚ฌ์šฉ
  • STP(Shielded Twist Pair)

    • 2๊ฐœ์”ฉ ๊ผฌ์•„ ๋งŒ๋“  ์„ ์„ ์‹ค๋“œ๋กœ ๋ณดํ˜ธํ•œ ์ผ€์ด๋ธ”
    • ์‹ค๋“œ๊ฐ€ ์žˆ์–ด ๋…ธ์ด์ฆˆ๊ฐ€ ์ ์œผ๋‚˜ ๊ฐ€๊ฒฉ์ด ๋น„์‹ธ ๋ณดํŽธ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€๋Š” ์•Š์Œ

ํ†ต์‹  ๊ทœ๊ฒฉ์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜

  • ๋‹ค์ด๋ ‰ํŠธ ์ผ€์ด๋ธ”

    • 8๊ฐœ์˜ ๊ตฌ๋ฆฌ ์„ ์„ ๊ฐ™์€ ์ˆœ์„œ๋กœ ์ปค๋„ฅํ„ฐ์— ์—ฐ๊ฒฐํ•œ ์ผ€์ด๋ธ”
    • ์ฃผ๋กœ ์ปดํ“จํ„ฐ์™€ ์Šค์œ„์น˜๋ฅผ ์—ฐ๊ฒฐํ•  ๋•Œ ์‚ฌ์šฉ
  • ํฌ๋กœ์Šค ์ผ€์ด๋ธ”

    • 8๊ฐœ์˜ ๊ตฌ๋ฆฌ ์„  ์ค‘ ํ•œ์ชฝ ์ปค๋„ฅํ„ฐ์˜ 1, 2๋ฒˆ ์—ฐ๊ฒฐ์„ ๋‹ค๋ฅธ ์ชฝ ์ปค๋„ฅํ„ฐ์˜ 3, 6๋ฒˆ์— ์—ฐ๊ฒฐํ•œ ์ผ€์ด๋ธ”
    • ์ปดํ“จํ„ฐ๋ผ๋ฆฌ ์ง์ ‘ ์—ฐ๊ฒฐํ•  ๋•Œ(์ปดํ“จํ„ฐ ๊ฐ„ ์ง์ ‘ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ๋•Œ๋Š”, ์–‘์ชฝ ๋ชจ๋‘ 1,2๋ฒˆ์„ ์‚ฌ์šฉํ•˜๊ธฐ์— ์ด๋ ‡๊ฒŒ ํฌ๋กœ์Šคํ•œ ๊ฒƒ)

๋ฆฌํ”ผํ„ฐ์™€ ํ—ˆ๋ธŒ

๋ฆฌํ”ผํ„ฐ

์ผ๊ทธ๋Ÿฌ์ง„ ์ „๊ธฐ ์‹ ํ˜ธ๋ฅผ ๋ณต์›(์ •ํ˜•)ํ•˜๊ณ  ์ฆํญํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ๋„คํŠธ์›Œํฌ ์ค‘๊ณ„ ์žฅ๋น„
์ฆ‰, ์ผ€์ด๋ธ”์ด ๋„ˆ๋ฌด ๊ธธ์–ด์ง€๋ฉด ์ผ์–ด๋‚˜๋Š” ์ „๊ธฐ ์‹ ํ˜ธ์˜ ์†์‹ค์„ ์ค‘๊ฐ„์—์„œ ๋ณต์›(๊ณ ์†๋„๋กœ ํœด๊ฒŒ์†Œ์ฒ˜๋Ÿผ)
์š”์ฆ˜์—” ๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ ์žฅ๋น„์—์„œ ๋ฆฌํ”ผํ„ฐ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๊ธฐ์— ์žฅ๋น„๋กœ์„œ ๋ฆฌํ”ผํ„ฐ๋Š” ๊ฑฐ์˜ ์“ฐ์ง€ ์•Š๋Š”๋‹ค.

ํ—ˆ๋ธŒ

๋ฆฌํ”ผํ„ฐ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ „๊ธฐ ์‹ ํ˜ธ๋ฅผ ๋ณต์›ํ•˜๊ณ  ์ฆํญํ•˜๋Š” ๊ธฐ๋Šฅ
์‹ค์ œ๋กœ ํ†ต์‹ ํ•˜๋Š” ํ†ต๋กœ์ธ ํฌํŠธ๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ๋ฆฌํ”ผํ„ฐ ํ—ˆ๋ธŒ๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค.
๋ฆฌํ”ผํ„ฐ์™€ ๋‹ค๋ฅด๊ฒŒ ํฌํŠธ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ์ปดํ“จํ„ฐ ์—ฌ๋Ÿฌ๋Œ€์™€ ํ†ต์‹  ๊ฐ€๋Šฅ

์ปดํ“จํ„ฐ1, 2, 3, 4, 5๊ฐ€ ํ—ˆ๋ธŒ์— ์—ฐ๊ฒฐ๋˜์–ด์žˆ๊ณ  1์—์„œ 2๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์†ก์‹ ํ•  ๋•Œ, ํ—ˆ๋ธŒ์— ์—ฐ๊ฒฐ๋œ ๋‚˜๋จธ์ง€ ์ปดํ“จํ„ฐ(3, 4, 5)์—๋„ ๋ฐ์ดํ„ฐ๊ฐ€ ์ „์†ก๋œ๋‹ค. 3~5์—๊ฒŒ๋Š” ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ์ด๊ธฐ์— ํ—ˆ๋ธŒ๋ฅผ ๋”๋ฏธ ํ—ˆ๋ธŒ๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•˜๊ณ  ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์กด์žฌํ•˜๋Š” ๊ฒƒ์ด ์Šค์œ„์น˜

JavaScript ํ”„๋กœํผํ‹ฐ ์–ดํŠธ๋ฆฌ๋ทฐํŠธ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ํ”„๋กœํผํ‹ฐ์˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ”„๋กœํผํ‹ฐ ์–ดํŠธ๋ฆฌ๋ทฐํŠธ๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž๋™ ์ •์˜ํ•œ๋‹ค.

  • ํ”„๋กœํผํ‹ฐ์˜ ๊ฐ’(value)
  • ๊ฐ’์˜ ๊ฐฑ์‹  ๊ฐ€๋Šฅ ์—ฌ๋ถ€(writable)
  • ์—ด๊ฑฐ ๊ฐ€๋Šฅ ์—ฌ๋ถ€(enumerable)
  • ์žฌ์ •์˜ ๊ฐ€๋Šฅ ์—ฌ๋ถ€(configurable)

ํ”„๋กœํผํ‹ฐ ์–ดํŠธ๋ฆฌ๋ทฐํŠธ์—๋Š” ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ, Object.getOwnPropertyDescriptor ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ„์ ‘์ ์œผ๋กœ ํ™•์ธ ๊ฐ€๋Šฅํ•˜๋‹ค.

๋ฐ์ดํ„ฐ ํ”„๋กœํผํ‹ฐ์™€ ์ ‘๊ทผ์ž ํ”„๋กœํผํ‹ฐ

  • ๋ฐ์ดํ„ฐ ํ”„๋กœํผํ‹ฐ: ํ‚ค์™€ ๊ฐ’์œผ๋กœ ๊ตฌ์„ฑ๋œ ์ผ๋ฐ˜์ ์ธ ํ”„๋กœํผํ‹ฐ(์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์ƒ๊ฐํ•˜๋Š” ํ‚ค์™€ ๋ฒจ๋ฅ˜)
  • ์ ‘๊ทผ์ž ํ”„๋กœํผํ‹ฐ: ์ž์ฒด์ ์œผ๋กœ ๊ฐ’์„ ๊ฐ–์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ํ”„๋กœํผํ‹ฐ์˜ ๊ฐ’์„ ์ฝ๊ฑฐ๋‚˜ ์ €์žฅํ•  ๋•Œ ํ˜ธ์ถœ๋˜๋Š” ์ ‘๊ทผ์ž ํ•จ์ˆ˜๋กœ ๊ตฌ์„ฑ๋œ ํ”„๋กœํผํ‹ฐ
    • get, set ๊ฐ™์€ ๋…€์„๋“ค(ใ…‚ใ„ทใ…‚ใ„ท)

๊ฐ์ฒด ๋ณ€๊ฒฝ ๋ฐฉ์ง€

  • ๊ฐ์ฒด ํ™•์žฅ ๊ธˆ์ง€: Object.preventExtensions
  • ๊ฐ์ฒด ๋ฐ€๋ด‰: Object.seal
  • ๊ฐ์ฒด ๋™๊ฒฐ: Object.freeze, ์˜ค๋กœ์ง€ ์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅ -> ์–˜๋งŒ ๊ธฐ์–ตํ•ด๋„ ๋ ๋“ฏ

๋‹ค๋งŒ, ๊ฐ์ฒด ๋™๊ฒฐ๋„ ์ค‘์ฒฉ ๊ฐ์ฒด๋Š” ์™„์ „ํžˆ ๋™๊ฒฐ์‹œํ‚ค์ง€ ๋ชปํ•œ๋‹ค.(์–•์€ ๋ณต์‚ฌ์™€ ๊นŠ์€ ๋ณต์‚ฌ์ฒ˜๋Ÿผ ์–•์€ ๋™๊ฒฐ์ž„) ์žฌ๊ท€๋ฅผ ํ†ตํ•œ ๊นŠ์€ ๋™๊ฒฐ ๊ตฌํ˜„(๊นŠ์€ ๋ณต์‚ฌ์ฒ˜๋Ÿผ ๋ฌด์กฐ๊ฑด ์•Œ๊ณ  ์žˆ์–ด์•ผํ•˜๋Š” ๊ฑด ์•„๋‹ˆ์ง€๋งŒ ๊ธฐ์–ตํ•ด๋‘์ž!)

function deepFreeze(target) {
  if (target && typeof target === 'object' && !Object.isFrozen(target)) {
    Object.freeze(target);
    Object.keys(target).forEach((key) => deepFreeze(target[key]));
  }
  return target;
}

JavaScript ์ƒ์„ฑ์ž ํ•จ์ˆ˜

๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ธ ์ƒ์„ฑ์ž ํ•จ์ˆ˜

  • ํ•จ์ˆ˜๋Š” new ์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ ํ˜ธ์ถœ๋˜๋ฉด ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋กœ ๋™์ž‘ํ•˜๋ฉฐ ์•”๋ฌต์ ์œผ๋กœ ์ธ์Šคํ„ด์Šค๋ฅด ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • ์ผ๋ฐ˜ ๊ฐ์ฒด๋Š” ํ˜ธ์ถœํ•  ์ˆ˜ ์—†์ง€๋งŒ, ํ•จ์ˆ˜๋Š” ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

constructor

  • constructor: ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ, ํ•จ์ˆ˜ ํ‘œํ˜„์‹, ํด๋ž˜์Šค(ํด๋ž˜์Šค๋„ ํ•จ์ˆ˜๋ผ๋Š” ์ )
  • non-constructor: ๋ฉ”์„œ๋“œ(ES6์—์„œ์˜ ๋ฉ”์„œ๋“œ ์ถ•์•ฝ ํ‘œํ˜„), ํ™”์‚ดํ‘œ ํ•จ์ˆ˜

new.target๊ณผ ์Šค์ฝ”ํ”„ ์„ธ์ดํ”„ ์ƒ์„ฑ์ž ํŒจํ„ด

new.target์€ ํ•จ์ˆ˜ ์ž์‹ (์ƒ์„ฑ์ž ํ•จ์ˆ˜)๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

// new.target์„ ์ด์šฉํ•ด new ์—ฐ์‚ฐ์ž๋ฅผ ์•ˆ์ผ์„ ๋•Œ์— ๋Œ€ํ•œ ๋ฐฉ์ง€
function Dog(name, age) {
  if (!new.target) {
    return new Dog(name, age);
  }

  this.name = name;
  this.age = age;
}
// new.target์„ ์‚ฌ์šฉํ•˜์ง€๋ชปํ•  ๋•Œ(ES6 ์ด์ „)
// ์Šค์ฝ”ํ”„ ์„ธ์ดํ”„ ์ƒ์„ฑ์ž ํŒจํ„ด ์ด์šฉ
// new ํ‚ค์›Œ๋“œ๋ฅผ ์•ˆ์“ฐ๋ฉด this๊ฐ€ ์ „์—ญ ๊ฐ์ฒด์— ๋ฐ”์ธ๋”ฉ๋˜๋ฏ€๋กœ

function Dog(name, age) {
  if (!(this instanceof Dog)) {
    return new Dog(name, age);
  }

  this.name = name;
  this.age = age;
}

๋นŒํŠธ์ธ ์ƒ์„ฑ์ž ํ•จ์ˆ˜

Object, Function ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋Š” new ์—ฐ์‚ฐ์ž๊ฐ€ ์—†์ด ํ˜ธ์ถœํ•ด๋„ new ์—ฐ์‚ฐ์ž๋ฅผ ๋ถ™์ธ ๊ฒƒ์ฒ˜๋Ÿผ ๋™์ž‘ํ•œ๋‹ค.
๋ฐ˜๋ฉด String, Number, Boolean ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋Š” new ์—ฐ์‚ฐ์ž ์—†์ด ํ˜ธ์ถœํ•˜๋ฉด ๊ฐ๊ฐ ๋ฌธ์ž์—ด, ์ˆซ์ž, ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.(์šฐ๋ฆฌ๊ฐ€ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๋ณ€๊ฒฝํ•  ๋•Œ, String, Number, Boolean์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ด์œ )