๐Ÿš€
Growth log
  • About me
  • I LEARNED
    • General
      • ๊ฐœ๋ฐœ์ž ๊ฟ€ํŒ
      • ๊ทธ๋กœ์Šคํ•ดํ‚น ๊ธฐ์ดˆ
      • ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋„๋ฉ”์ธ ์ง€์‹์€ ์–ผ๋งˆ๋‚˜ ์ค‘์š”ํ• ๊นŒ?
      • DTO ๋…ผ์Ÿ์— ๋Œ€ํ•˜์—ฌ
      • MSA๋ž€?
    • Seminar
      • ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ 100% - SLASH 21
      • TDD๊ฐ€ ์‹คํŒจํ•˜๋Š” ์ด์œ  - by ์ด๊ทœ์›๋‹˜
      • ๋Œ€๊ทœ๋ชจ ํŠธ๋ž˜ํ”ฝ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ํŠœ๋‹ ๋…ธํ•˜์šฐ ๋‹ค ์•Œ๋ ค ๋“œ๋ฆผ|๋ผ์ธ๊ฐœ๋ฐœ์‹ค๋ก
      • ๊ฒฐ์ œ ์‹œ์Šคํ…œ์˜ SDK์™€ API ๋””์ž์ธ - SLASH 21
    • Web
      • SOP์™€ CORS
    • Spring & OOP
      • DTO vs VO
    • Ruby On Rails
      • Rails lib ๋””๋ ‰ํ† ๋ฆฌ์— ๋Œ€ํ•˜์—ฌ
      • Rails์˜ concerns๋ž€?
      • Rails์—์„œ์˜ GC ์ž‘๋™์›๋ฆฌ
      • Eager loading vs Lazy loading
      • Rails ํ™˜๊ฒฝ ๊ตฌ์„ฑ
      • ActionCable
      • ๐Ÿ“”Perfect ruby on rails
        • MVC ํŒจํ„ด์ธ Rails
        • Ruby on Rails ๊ธฐ๋ณธ - ์ปจํŠธ๋กค๋Ÿฌ
        • Ruby on Rails ๊ธฐ๋ณธ - ๋ทฐ
        • Ruby on Rails ๊ธฐ๋ณธ - ๋ชจ๋ธ
        • ์Šค์บํด๋”ฉ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•œ Rails ๊ฐœ๋ฐœ ๊ธฐ์ดˆ
        • ๋ทฐ ๊ฐœ๋ฐœ
        • ๋ชจ๋ธ ๊ฐœ๋ฐœ
        • ๋ชจ๋ธ ๊ฐœ๋ฐœ - ๋‚™๊ด€์  ๋™์‹œ ์‹คํ–‰ ์ œ์–ด
        • ๋ชจ๋ธ ๊ฐœ๋ฐœ - ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๊ตฌํ˜„
        • ๋ชจ๋ธ ๊ฐœ๋ฐœ - Association
        • ๋ชจ๋ธ ๊ฐœ๋ฐœ - ์ฝœ๋ฐฑ
        • ๋ชจ๋ธ ๊ฐœ๋ฐœ - ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜
        • ๋ชจ๋ธ ๊ฐœ๋ฐœ - ๋ฐ์ดํ„ฐ ์ดˆ๊ธฐํ™”
        • ์ปจํŠธ๋กค๋Ÿฌ ๊ฐœ๋ฐœ - ์š”์ฒญ ์ •๋ณด ์ถ”์ถœ
        • ์ปจํŠธ๋กค๋Ÿฌ ๊ฐœ๋ฐœ - ์‘๋‹ต
        • ์ปจํŠธ๋กค๋Ÿฌ ๊ฐœ๋ฐœ - ์ƒํƒœ ๊ด€๋ฆฌ
        • ๋ผ์šฐํŒ… - RESTful
        • ๋ผ์šฐํŒ… - RESTful ์ธํ„ฐํŽ˜์ด์Šค์˜ ์‚ฌ์šฉ์ž ์ •์˜ํ™”
        • ๋ผ์šฐํŒ… - RESTful ํ•˜์ง€ ์•Š์€ ๋ผ์šฐํŠธ ์ •์˜
        • ํ…Œ์ŠคํŠธ
        • ํ…Œ์ŠคํŠธ - ์ค€๋น„
        • ํ…Œ์ŠคํŠธ - Unit ํ…Œ์ŠคํŠธ
        • ํ…Œ์ŠคํŠธ - Functional ํ…Œ์ŠคํŠธ
        • ํ…Œ์ŠคํŠธ - Integration ํ…Œ์ŠคํŠธ
        • ํด๋ผ์ด์–ธํŠธ ๊ฐœ๋ฐœ - Sprockets vs Webpacker
        • ํด๋ผ์ด์–ธํŠธ ๊ฐœ๋ฐœ - Sprockets
    • Node.js & Express
      • ๊ธฐ๋ณธ ๊ฐœ๋…
      • npx
    • Programing Language
      • Java
        • JavaDoc์— ๋Œ€ํ•ด
        • invocation์— ๋Œ€ํ•ด์„œ
        • ์–ด๋…ธํ…Œ์ด์…˜
        • ์ถ”์ƒํด๋ž˜์Šค & ์ธํ„ฐํŽ˜์ด์Šค
        • Package
        • ์˜ค๋ฒ„๋กœ๋”ฉ vs ์˜ค๋ฒ„๋ผ์ด๋”ฉ
      • Javascript
        • TCP School ํ›‘์–ด๋ณด๊ธฐ
          • ํƒ€์ž…
          • ํ˜• ๋ณ€ํ™˜
          • ๋ณ€์ˆ˜
          • ์—ฐ์‚ฐ์ž
          • ๋ฐ˜๋ณต๋ฌธ
          • ๋ฐฐ์—ด(array)
          • ํ•จ์ˆ˜
          • ํ•จ์ˆ˜ - ์Šค์ฝ”ํ”„์™€ ํ˜ธ์ด์ŠคํŒ…
          • ํ•จ์ˆ˜ - ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์ธ์ˆ˜
          • ํ•จ์ˆ˜ - ๋ฏธ๋ฆฌ ์ •์˜๋œ ์ „์—ญ ํ•จ์ˆ˜
          • ๊ฐ์ฒด
          • ํ”„๋กœํ† ํƒ€์ž…
          • DOM
          • BOM - Window ๊ฐ์ฒด
          • ์ด๋ฒคํŠธ(event)
      • Ruby
        • ๐Ÿ“”ํผํŽ™ํŠธ ๋ฃจ๋น„
    • DB
      • Redis
        • Redis ๊ฐœ์š”
      • Index(์ธ๋ฑ์Šค)?
      • DB Transaction & Lock
      • ๋™์‹œ์„ฑ ์ œ์–ด์— ๊ด€ํ•˜์—ฌ
      • Lock(์ž ๊ธˆ)์ด๋ž€?
      • ActiveRecord lock vs with_lock
      • Table lock vs Row lock
      • WHERE 1=1 ๊ตฌ๋ฌธ์— ๋Œ€ํ•˜์—ฌ
      • COUNT(*) vs COUNT(indexed column)
      • ๐Ÿ“•๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹ค์ „์ž…๋ฌธ
      • ๐Ÿ“”SQL ์ฒซ๊ฑธ์Œ
      • ๐Ÿ“”๋ชจ๋‘์˜ SQL
    • Design Patterns
      • Observer pattern
      • Flyweight pattern
      • Singleton pattern
    • OOP
      • ๐Ÿ“”์˜ค๋ธŒ์ ํŠธ
        • 6์žฅ ๋ฉ”์‹œ์ง€์™€ ์ธํ„ฐํŽ˜์ด์Šค
      • ํด๋ž˜์Šค๊ฐ„ ๊ด€๊ณ„ ๊ฐ„๋‹จ ์ •๋ฆฌ
    • Regex
    • Collaboration
      • Git
      • Sourcetree
  • DAILY REVIEW
    • 2021
      • August
        • 2021-08-25(Wed)
        • 2021-08-23(Mon)
        • 2021-08-11(Wed)
        • 2021-08-04(Wed)
        • 2021-08-03(Tue)
        • 2021-08-02(Mon)
      • July
        • 2021-07-29(Thu)
        • 2021-07-26(Mon)
        • 2021-07-23(Fri)
        • 2021-07-22(Thu)
        • 2021-07-21(Wed)
        • 2021-07-20(Tue)
        • 2021-07-19(Mon)
        • 2021-07-15(Thu)
        • 2021-07-14(Wed)
        • 2021-07-13(Tue)
        • 2021-07-12(Mon)
      • June
        • 2021-06-05(Sat)
        • 2021-06-04(Fri)
        • 2021-06-03(Thu)
        • 2021-06-02(Wed)
        • 2021-06-01(Tue)
      • May
        • 2021-05-31(Mon)
        • 2021-05-29(Sat)
        • 2021-05-28(Fri)
        • 2021-05-27(Thu)
        • 2021-05-26(Wed)
        • 2021-05-25(Tue)
        • 2021-05-24(Mon)
        • 2021-05-22(Sat)
        • 2021-05-21(Fri)
        • 2021-05-20(Thu)
        • 2021-05-19(Wed)
        • 2021-05-18(Tue)
        • 2021-05-17(Mon)
        • 2021-05-15(Sat)
        • 2021-05-13(Thu)
        • 2021-05-12(Wed)
        • 2021-05-11(Tue)
        • 2021-05-10(Mon)
        • 2021-05-03(Mon)
      • April
        • 2021-04-30(Fri)
        • 2021-04-29(Thu)
        • 2021-04-28(Wed)
        • 2021-04-27(Tue)
        • 2021-04-26(Mon)
        • 2021-04-24(Sat)
        • 2021-04-23(Fri)
        • 2021-04-21(Wed)
        • 2021-04-20(Tue)
        • 2021-04-19(Mon)
        • 2021-04-18(Sun)
        • 2021-04-16(Fri)
        • 2021-04-15(Thu)
        • 2021-04-14(Wed)
        • 2021-04-12(Mon)
        • 2021-04-11(Sun)
        • 2021-04-09(Fri)
        • 2021-04-08(Thu)
        • 2021-04-06(Tue)
        • 2021-04-05(Mon)
        • 2021-04-04(Sun)
        • 2021-04-03(Sat)
        • 2021-04-02(Fri)
        • 2021-04-01(Thu)
      • March
        • 2021-03-29(Mon)
        • 2021-03-28(Sun)
        • 2021-03-26(Fri)
        • 2021-03-25(Thu)
        • 2021-03-24(Wed)
        • 2021-03-23(Tue)
        • 2021-03-22(Mon)
        • 2021-03-21(Sun)
        • 2021-03-20(Sat)
        • 2021-03-17(Wed)
        • 2021-03-16(Tue)
        • 2021-03-15(Mon)
        • 2021-03-12(Fri)
        • 2021-03-11(Thu)
        • 2021-03-10(Wed)
        • 2021-03-09(Tue)
        • 2021-03-08(Mon)
        • 2021-03-07(Sun)
        • 2021-03-05(Fri)
        • 2021-03-03(Wed)
        • 2021-03-02(Tue)
        • 2021-03-01(Mon)
      • Feb
        • 2021-02-26(Fri)
        • 2021-02-25(Thu)
        • 2021-02-24(Wed)
        • 2021-02-23(Tue)
        • 2021-02-22(Mon)
        • 2021-02-19(Fri)
        • 2021-02-18(Thu)
        • 2021-02-17(Wed)
        • 2021-02-16(Tue)
        • 2021-02-15(Mon)
        • 2021-02-14(Sun)
        • 2021-02-13(Sat)
        • 2021-02-12(Fri)
        • 2021-02-10(Wed)
        • 2021-02-09(Tue)
        • 2021-02-08(Mon)
        • 2021-02-07(Sun)
        • 2021-02-05(Fri)
        • 2021-02-03(Wed)
        • 2021-02-02(Tue)
        • 2021-02-01(Mon)
      • Jan
        • 2021-01-29(Fri)
        • 2021-01-28(Thu)
        • 2021-01-27(Wed)
        • 2021-01-26(Tue)
        • 2021-01-25(Mon)
        • 2021-01-23(Sat)
        • 2021-01-22(Fri)
        • 2021-01-20(Wed)
        • 2021-01-19(Tue)
        • 2021-01-18(Mon)
        • 2021-01-12(Tue)
        • 2020-01-11(Mon)
        • 2021-01-08(Fri)
        • 2021-01-07(Thu)
        • 2021-01-06(Wed)
        • 2021-01-05(Tue)
        • 2021-01-04(Mon)
        • 2021-01-01(Fri)
    • 2020
      • Dec
        • 2020-12-30(Thu)
        • 2020-12-25(Fri)
        • 2020-12-24(Thu)
        • 2020-12-23(Wed)
        • 2020-12-22(Tue)
        • 2020-12-21(Mon)
        • 2020-12-18 (Fri)
      • Nov
        • 2020-11-30(Mon)
        • 2020-11-28(Sat)
        • 2020-11-26(Thu)
        • 2020-11-25(Wed)
        • 2020-11-24(Tue)
        • 2020-11-23(Mon)
        • 2020-11-22(Sun)
        • 2020-11-20(Fri)
        • 2020-11-19(Thu)
        • 2020-11-18(Wed)
        • 2020-11-17(Tue)
        • 2020-11-14(Sat)
        • 2020-11-13(Fri)
        • 2020-11-12(Thu)
        • 2020-11-11(Wed)
        • 2020-11-09(Mon)
        • 2020-11-07(Sat)
        • 2020-11-05(Thu)
        • 2020-11-04(Wed)
        • 2020-11-03(Tue)
        • 2020-11-02(Mon)
    • Good article ์•„์นด์ด๋น™
Powered by GitBook
On this page
  • ์ƒ์„ธ ํ•™์Šต ๋‚ด์šฉ
  • Node.js ํ•™์Šต ๋ฉ”๋ชจ
  • Node.js์˜ ์•„ํ‚คํ…์ณ
  • npx
  • ํ•™์Šต ๋‚ด์šฉ์— ๋Œ€ํ•œ ๊ฐœ์ธ์ ์ธ ์ดํ‰
  • ๋‹ค์Œ ํ•™์Šต ๊ณ„ํš

Was this helpful?

  1. DAILY REVIEW
  2. 2021
  3. April

2021-04-02(Fri)

Previous2021-04-03(Sat)Next2021-04-01(Thu)

Last updated 4 years ago

Was this helpful?

ํ•ญ๋ชฉ

๋‚ด์šฉ

ํ•™์Šต ๋‚ ์งœ

2021-04-02(๊ธˆ)

ํ•™์Šต ์‹œ๊ฐ„

11:00~23:00

ํ•™์Šต ๋ฒ”์œ„ ๋ฐ ์ฃผ์ œ

node.js, express.js

ํ•™์Šต ๋ชฉํ‘œ

qr-checkin ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•™์Šตํ•œ๋‹ค.

๋™๋ฃŒ ํ•™์Šต ๋ฐฉ๋ฒ•

-

์ƒ์„ธ ํ•™์Šต ๋‚ด์šฉ

์˜ค๋Š˜๋ถ€ํ„ฐ ๋ฉ”ํƒ€-์Šคํ„ฐ๋”” ์ž๋ฃŒ๋„ ๋‚จ๊ฒจ๋ณด๊ฒ ๋‹ค.

ํด๋กœ์ € ์ž๋ฃŒ ์ค‘ ๋ํŒ์™•

C๋กœ ์น˜๋ฉด ์ผ์ข…์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฆญ์— ํ•ด๋‹นํ•˜๋Š” ํ˜„์ƒ์ด var ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด์„œ๋Š” ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ผ์–ด๋‚œ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ์— ๋‚จ์•„์žˆ๋‹ค๋‹ˆ. ๊ฑฑ์ •๋งˆ๋ผ ์“ฐ๊ณ ๋‚˜์„œ null ์ฒ˜๋ฆฌํ•ด์ฃผ๋ฉด GC๊ฐ€ ์ฒ˜๋ฆฌํ•ด์ฃผ๋‹ˆ๊นŒ!

Node.js ํ•™์Šต ๋ฉ”๋ชจ

์“ฐ๋ ˆ๋“œ ๊ธฐ๋ฐ˜ vs ๋น„๋™๊ธฐ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜

๋Œ€๋ถ€๋ถ„์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ Blocking I/O๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ๋ฐ–์— ์—†์—ˆ๋‹ค.

  • Blocking I/O๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์–ด๋–ค ์ž์›์„ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•  ๋•Œ ๊ทธ ์ž์›์„ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ์œ ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด, ๊ทธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ทธ ์ž์›์˜ ์‚ฌ์šฉ์„ ๋๋งˆ์น  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

  • ๋ฌธ์ œ๋Š” Blocking I/O ์ž์ฒด๊ฐ€ ์“ฐ๋ ˆ๋“œ ์ง€์—ฐ์„ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. I/O ์š”์ฒญ์„ ํ•˜๊ณ  ์‘๋‹ต์ด ์˜ฌ ๋•Œ๊นŒ์ง€ ์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€ ์•Š๊ณ  ์‹œ๊ฐ„์„ ๋‚ญ๋น„ํ•˜๊ฒŒ ๋œ๋‹ค!

  • ๋˜ํ•œ ์Šค์ผ€์ฅด๋ง ์ž์ฒด์— ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„๊ณผ ์“ฐ๋ ˆ๋“œ๊ฐ€ ๋งŽ์•„์งˆ ์ˆ˜๋ก ๋Š˜์–ด๋‚˜๋Š” Context switch ๋น„์šฉ๋„ ๋ฌด์‹œํ•  ์ˆ˜ ์—†๋‹ค.

  • ๋Œ€์•ˆ์œผ๋กœ๋Š” ์“ฐ๋ ˆ๋“œ๋“ค์„ ๋ณ„๋„๋กœ ๊ด€๋ฆฌํ•˜๊ฑฐ๋‚˜, ๋” ์ž‘์€ ๋‹จ์œ„๋กœ ์ชผ๊ฐœ์–ด VM ๋“ฑ์œผ๋กœ ์‹ค์ œ ์“ฐ๋ ˆ๋“œ๋กœ ๋ถ„๋ฐฐํ•˜๋Š” ๋ฐฉ์‹ ๊ฐ™์€ ๋Œ€์•ˆ์ด ๋“ฑ์žฅํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋…ธ๋“œ์˜ ๋ฐฉ์‹๋„ ๋Œ€์•ˆ์ด๋‹ค. ์–ด๋–ค ์‹์ด๋ƒ๋ฉด..

์‹ฑ๊ธ€ ์“ฐ๋ ˆ๋“œ์™€ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์˜ ๋น„๋™๊ธฐ I/O ์ฒ˜๋ฆฌ

๋…ธ๋“œ๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋“ค์„ ์‹ฑ๊ธ€ ์“ฐ๋ ˆ๋“œ์™€ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์˜ ๋น„๋™๊ธฐ I/O ์ฒ˜๋ฆฌ๋กœ ํ•ด๊ฒฐํ•˜๊ณ  ์žˆ๋‹ค. ๋…ธ๋“œ๋Š” I/O ์ž‘์—…์ด ์‹œ์ž‘๋˜๋ฉด I/O ์ž‘์—… ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ , ๋ฐ”๋กœ ๋‹ค์Œ ์ž‘์—…์„ ์‹คํ–‰ํ•ด๋ฒ„๋ฆฐ๋‹ค. ๋Œ€์‹  I/O ์ž‘์—…์ด ์ข…๋ฃŒ๋˜๋ฉด ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๊ณ , ์ด ์ด๋ฒคํŠธ๋Š” ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค์˜ ์ด๋ฒคํŠธ ํ์— ๋“ฑ๋ก๋˜๊ฒŒ ๋œ๋‹ค. ๋…ธ๋“œ๋กœ ๊ฐœ๋ฐœ๋œ ํ”„๋กœ์„ธ์Šค๋Š” ์ด ์ด๋ฒคํŠธ ํ์— ๋“ฑ๋ก๋œ ์ƒˆ๋กœ์šด ์ด๋ฒคํŠธ๋ฅผ ๊ฐ์ง€ํ•˜์—ฌ, ํ•ด๋‹น ์ด๋ฒคํŠธ ์‹œ ์ˆ˜ํ–‰ํ•˜์—ฌ์•ผ ํ•  ์ž‘์—…์„ ์‹คํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค.

์ด๋ฒคํŠธ ๋ฃจํ”„

์ด๋ฒคํŠธ ๋ฃจํ”„(Event Loop)๋ผ๋Š” ๊ฒƒ์€ ์ž‘์—…์„ ์š”์ฒญํ•˜๋ฉด์„œ ๊ทธ ์ž‘์—…์ด ์™„๋ฃŒ๋˜์—ˆ์„ ๋•Œ ์–ด๋–ค ์ž‘์—…์„ ์ง„ํ–‰ํ• ์ง€์— ๋Œ€ํ•œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์ง€์ •ํ•˜์—ฌ ๋™์ž‘์ด ์™„๋ฃŒ๋˜์—ˆ์„ ๋•Œ ํ•ด๋‹น ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰๋˜๋Š” ๋ฐฉ์‹์˜ ๋™์ž‘ ๋ฐฉ์‹์„ ๋งํ•œ๋‹ค.

์ด๋Ÿฐ ๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฒคํŠธ ๋ฃจํ”„๋Š” ์–ด๋–ค ์š”์ฒญ์ด ๋ฐœ์ƒํ•˜๋ฉด ๊ทธ ์ž‘์—…์— ๋Œ€ํ•ด ์“ฐ๋ ˆ๋“œ ์‹คํ–‰๋งŒ์„ ์ผ์œผํ‚ฌ ๋ฟ์ด๋‹ค.

Node.js์˜ ์•„ํ‚คํ…์ณ

์ดˆ์ฐฝ๊ธฐ์˜ Node.js ์•„ํ‚คํ…์ณ.

์ง€๊ธˆ์€ ๊ธฐ์ˆ ์ด ๋ฐœ์ „ํ•˜์—ฌ ์œ„์ฒ˜๋Ÿผ libev์˜ ์ข…์†์„ฑ์„ ์ œ๊ฑฐํ•˜๊ณ  libeio์™€ libev๋ฅผ ์“ฐ๋Š” ๋ฒ„์ „์œผ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค.

npx

๋ผ์ด๋ธŒ ์ฝ”๋”ฉ์„ ๋ณด์•„ํ•˜๋‹ˆ, ๋ชจ๋“ˆ์„ ๋ฐ›์„ ๋•Œ npm, npx, yarn ๋“ฑ์„ ํ˜ผ์šฉํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋А๊ปด์ง„๋‹ค. ํŠนํžˆ Sequelize๋ฅผ ๋‹ค๋ฃฐ ๋•Œ npx ๋ฅผ ๋งŽ์ด ์“ฐ๊ธฐ์— ์ด ๋…€์„์ด ๋ฌด์—‡์ธ์ง€ ๊ถ๊ธˆํ•ด์ ธ ๋ฒ„๋ ธ๋‹ค.

๊ทธ๋ž˜์„œ npx๋Š” ๋ญ˜๊นŒ?

npx๋Š” ์ƒˆ๋กœ์šด ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ ๋ชจ๋“ˆ์ด ์•„๋‹ˆ๋ผ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ ๋ชจ๋“ˆ์ธ npm(Node Package Module)์˜ 5.2.0 ๋ฒ„์ „๋ถ€ํ„ฐ ์ƒˆ๋กœ ์ถ”๊ฐ€๋œ ๋„๊ตฌ์ด๋‹ค!

npx ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด, npm ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€์žˆ๋Š” ํŒจํ‚ค์ง€๋ฅผ ์‰ฝ๊ฒŒ ์„ค์น˜ํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” CLI ๋„๊ตฌ์ด๋‹ค.

  • npm: Package Manager(๊ด€๋ฆฌ)

  • npx: Package Runner(์‹คํ–‰)

์™œ npx๊ฐ€ ๋„์ž…๋  ํ•„์š”๊ฐ€ ์žˆ์—ˆ์„๊นŒ?

๊ณผ๊ฑฐ npm์œผ๋กœ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•  ๋•Œ ๋‘ ๊ฐ€์ง€ ์ผ€์ด์Šค๊ฐ€ ์žˆ์—ˆ๋‹ค.

  1. ์ „์—ญ์œผ๋กœ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜์—ฌ ์˜์กด์„ฑ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ์ „์ฒด์ ์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•

  2. ํŠน์ • ํ”„๋กœ์ ํŠธ์—๋งŒ ์˜์กด์„ฑ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•

์ด๋Ÿฌํ•œ ์˜์กด์„ฑ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ์ „์—ญ์ด๋‚˜ ๋กœ์ปฌ์— ์„ค์น˜๋œ ์ฑ„ ๊ด€๋ฆฌ๊ฐ€ ๋˜๋ฉด ์„ค์น˜๋œ ์œ„์น˜์— ๋”ฐ๋ผ ๋”ฐ๋กœ ๊ด€๋ฆฌํ•ด์ค˜์•ผํ•œ๋‹ค๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ๋ฐœ์ƒํ•œ๋‹ค.

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

ํ•™์Šต ๋‚ด์šฉ์— ๋Œ€ํ•œ ๊ฐœ์ธ์ ์ธ ์ดํ‰

๋‹ค๋ฅธ ๊ฒƒ๋ณด๋‹ค ์‹ค์ œ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๋Š” ๊ฐˆ์ฆ์ด ๋„ˆ๋ฌด ์ปค์ง„ ์ƒํƒœ์ด๋‹ค. ๋ฌด์—‡๋ณด๋‹ค ์‚ฌ๋žŒ๋“ค์ด ๋งŽ์ด ์“ฐ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์‹ถ๋‹ค. cub3d tester๋„ ์‚ฌ๋žŒ๋“ค์ด ๋งŽ์ด ์จ์ฃผ๋‹ˆ๊นŒ ์ฆ๊ฒ๋”๋ผ. ๋งˆ์นจ ๊ด€์‹ฌ์žˆ์—ˆ๋˜ ๊ฒƒ๋“ค์ด ๋ชจ์—ฌ์žˆ๋‹ค.

  • node

  • QR์ฝ”๋“œ

  • ์ƒ์šฉ ์„œ๋น„์Šค์— ํ…Œ์ด๋ธ” ๋ถ™์ด๊ธฐ

์‚ฌ์‹ค ๋‚˜๋ฅผ ์ œํ•œํ•˜๋Š”๊ฑด ๋‚˜ ๋ฐ–์— ์—†๋‹ค. ๋†€ ์‹œ๊ฐ„์— node & express ๊ณต๋ถ€ํ•ด๋ณด์ž, ๊ทธ๋ƒฅ ์ž ์„ ๋œ ์ž๋ฉด ๋˜์ง€ ๋ญใ…Žใ…Ž :)

flow๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ํ•  ๊ฒƒ์ด๋‹ค.

  1. node ๊ธฐ์ดˆ ํ•™์Šต (์™„๋ฃŒ)

  2. QR ์ฝ”๋“œ ๋ฆฌ๋”๊ธฐ ๋œฏ์–ด๋ณด๊ธฐ (์ง„ํ–‰ ์ค‘)

  3. ํ…Œ์ด๋ธ” ๋ถ™์ด๊ธฐ

  4. ๋ถ™์ธ ํ…Œ์ด๋ธ”์— ์ด๋ฒคํŠธ ์ž…๋ ฅํ•˜๋Š” ์–ด๋“œ๋ฏผ ํŽ˜์ด์ง€ ๊ฐœ๋ฐœ

๋‹ค์Œ ํ•™์Šต ๊ณ„ํš

  • QR ์ฝ”๋“œ ๋ฆฌ๋”๊ธฐ์— ํ…Œ์ด๋ธ” ๋ถ™์ด๊ธฐ

image

jekim๋‹˜๊ณผ ๊ด€๋ จํ•ด์„œ ํ† ๋ก ํ•˜๋‹ค๊ฐ€ ์ด ๋ฅผ ๊ณต์œ  ๋ฐ›์•˜๋‹ค.

image
image

๊ฐ ๋ชจ๋“ˆ๋ณ„ ์—ญํ• ์€ ์ด ๋ฅผ ์ฐธ๊ณ .

์Œฉ๋šฑ๋งž๊ฒŒ node & express ํ•™์Šต์„ ์‹œ์ž‘ํ–ˆ๋‹ค. spring๋„ ๋„˜ ์žฌ๋ฐŒ๊ฒŒ ํ•˜๊ณ  ์žˆ์—ˆ๊ธดํ•œ๋ฐ, ์— ์ด๋ฒคํŠธ ํ…Œ์ด๋ธ”์„ ๋ถ™์—ฌ๋ณด๊ณ  ์‹ถ์–ด์ ธ์„œ..ใ…Žใ…Ž;

https://poiemaweb.com/js-closure
๋งํฌ
๋งํฌ
์ฐธ๊ณ 
QRcheckin