naver/fe-news ๋‰ด์Šค๋ ˆํ„ฐ ๋ทฐ์–ด (๋น„๊ณต์‹)

๋ชฉ์ฐจ
๋ชฉ์ฐจ

    2021-03

    ๋งํฌ & ์ฝ์„๊ฑฐ๋ฆฌ

    NASA: PRE-LANDING SIMULATION

    ์–ผ๋งˆ ์ „ ๋ฏธ๊ตญ ํƒ์‚ฌ ๋กœ๋ด‡์ด ํ™”์„ฑ์— ์ฐฉ๋ฅ™ํ–ˆ๊ณ , NASA๋Š” ์‹ค์‹œ๊ฐ„ ์ฐฉ๋ฅ™ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ์›น์— ๊ณต๊ฐœํ–ˆ๋‹ค. WebGL ๊ธฐ์ˆ ์ด ์‚ฌ์šฉ๋œ ์ด ์‹œ๋ฎฌ๋ ˆ์ด์…˜์— ๋Œ€ํ•ด WebGL์˜ ๊ฐ„ํŒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ three.js ๊ฐœ๋ฐœ์ž๊ฐ€ ๋‚จ๊ธด ํŠธ์œ—์ด ์ธ์ƒ์ ์ด๋‹ค.

    ๋ฐœ์ „๋œ ์›น ๊ธฐ์ˆ ์ด ์ด์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์˜์—ญ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์€ ๊ต‰์žฅํžˆ ๊ณ ๋ฌด์ ์ธ ์ผ์ด๋‹ค.

    (์ฐธ๊ณ ๋กœ #์ด๊ณณ์—์„œ NASA๊ฐ€ JavaScript๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์žˆ๋Š” ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋“ค์„ ํ™•์ธํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.)

    An architectural overview for WebRTC โ€” A protocol for implementing video conferencing

    COVID-19 ์‹œ๋Œ€์—์„œ๋Š” ํ™”์ƒ ํšŒ์˜ ๋„๊ตฌ๋“ค์€ ์ด์ œ ํ•„์ˆ˜๊ฐ€ ๋˜์—ˆ๋‹ค. ์›น์—์„œ ํ™”์ƒ ํšŒ์˜ ๋„๊ตฌ๋ฅผ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด์„  WebRTC(Web Real-Time Communication)์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

    ๊ธ€์˜ ์ €์ž๋Š” ๋‹จ์ผ ๋ช…๋ น์–ด ์‹คํ–‰๋งŒ์œผ๋กœ ํ™”์ƒ์œผ๋กœ ์ฝ”๋“œ ์ž‘์„ฑ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” CLI ๋„๊ตฌ์ธ Git Streamer ๊ฐœ๋ฐœ๊ณผ์ •์„ ํ†ตํ•ด ํ•™์Šต๋œ ํ™”์ƒํšŒ์˜ ๋„๊ตฌ ๊ฐœ๋ฐœ์˜ ๊ธฐ๋ณธ์  ๊ฐœ์š”/๊ฐœ๋…๋“ค์„ ์„ค๋ช…ํ•œ๋‹ค.

    Web platform's hidden gems - Shape Detection API

    ์˜ค๋Š˜๋‚  ์Šค๋งˆํŠธํฐ์€ ๋‹ค์–‘ํ•œ ์˜์—ญ๊ณผ ์ผ์ƒ์ƒํ™œ์—์„œ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค. ๋Œ€ํ‘œ์ ์ธ ํ™œ์šฉ ์˜์—ญ๋“ค ์ค‘ ํ•˜๋‚˜๋Š” ๊ฒฐ์ œ๋ฅผ ์œ„ํ•ด QR ์ฝ”๋“œ๋‚˜ ๋ฐ”์ฝ”๋“œ๋ฅผ ์ฝ์–ด๋‚ด๋Š” ํŽ˜์ด ๋“ฑ์˜ ์‹œ์Šคํ…œ์ด ๊ทธ๋Ÿฌํ•˜๋‹ค.

    ์›น์—์„œ ์ด๋Ÿฌํ•œ ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ? ๋งŽ์€ ์ด๋“ค์—๊ฒŒ ์ž˜ ์•Œ๋ ค์ง€์ง€ ์•Š์€ ShapeDetection API์€ ์›น์—์„œ QR/๋ฐ”์ฝ”๋“œ, ์–ผ๊ตด์ธ์‹ ๊ทธ๋ฆฌ๊ณ  ๋ฌธ์ž์ธ์‹(OCR)์ด ๊ฐ€๋Šฅํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.

    [์ฐธ๊ณ ] The Shape Detection API: a picture is worth a thousand words, faces, and barcodes

    Generators in Javascript: How to use them

    Generator๋Š” ์ผ๋ฐ˜ ํ•จ์ˆ˜์™€ ์œ ์‚ฌํ•˜๋‚˜, ์ด์ „ ์‹คํ–‰์ด ์ข…๋ฃŒ๋œ ์ง€์ ์˜ ์ƒํƒฏ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ์š”์ฒญ์— ๋”ฐ๋ผ ์ข…๋ฃŒ๋œ ์‹œ์ ๋ถ€ํ„ฐ ์‹คํ–‰์„ ๋‹ค์‹œ ์ง€์†ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜๋‹ค.

    ES6 ๋ช…์„ธ์— ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ, ๋“ฑ์žฅํ•œ์ง€ ๋งŽ์€ ์‹œ๊ฐ„์ด ํ˜๋ €๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‹ค์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ์•„์ง๊นŒ์ง€ ๊ทธ์— ๋น„๋ก€ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ์ด ๊ธ€์„ ํ†ตํ•ด ๋‹ค์‹œ ํ•œ๋ฒˆ ๊ธฐ๋ณธ์  ์ดํ•ด์™€ ํ•จ๊ป˜ ์–ด๋–ค ๊ฒฝ์šฐ์— ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์„์ง€ ํ™•์ธํ•ด ๋ณด์ž.

    [์ฐธ๊ณ ] JAVASCRIPT.INFO: ์ œ๋„ˆ๋ ˆ์ดํ„ฐ

    JS minification benchmarks

    ํ˜„์žฌ JavaScript minifier ๋„๊ตฌ๋Š” ๊ณผ๊ฑฐ์˜ UglifyJS๊ฐ€ defacto ๋„๊ตฌ๋กœ ์‚ฌ์šฉ๋˜์—ˆ๋˜ ๊ฒƒ๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ๋‹ค์–‘ํ•œ ๋„๊ตฌ๋“ค์ด ๊ฐœ๋ฐœ๋˜๊ณ  ์žˆ๋‹ค.

    ์–ด๋–ค ๊ฒƒ์ด ๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ์‹คํ–‰๋ ๊นŒ? ์œ ๋ช…ํ•œ ํ”„๋กœ์ ํŠธ๋“ค์˜ ๋นŒ๋“œ ํŒŒ์ผ์„ ๋Œ€์ƒ์œผ๋กœ ์ˆ˜ํ–‰ํ•œ ๋ฒค์น˜๋งˆํฌ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

    Things You Can Do With CSS Today

    CSS๋Š” ์ตœ๊ทผ ๋ช‡ ๋…„ ๋™์•ˆ ์ •๋ง ๋น ๋ฅด๊ฒŒ ๋ฐœ์ „ํ•˜๊ณ  ์žˆ๋‹ค. ๊ทธ๋งŒํผ ์šฐ๋ฆฌ๊ฐ€ ๋†“์นœ ์œ ์šฉํ•œ ๊ธฐ๋Šฅ๋“ค๋„ ๋งŽ์„ ๊ฒƒ์ด๋‹ค.

    ์ด ๊ธ€์—์„œ๋Š” ์ตœ์‹  CSS ๊ธฐ์ˆ ๋“ค๋กœ ํ•  ์ˆ˜ ์žˆ๋Š” Masonry layout, :is selector, CSS function, Aspect ratio ๋“ฑ์˜ ํ™œ์šฉ์ ์ธ ๊ธฐ๋Šฅ๋“ค์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ณ  ์žˆ๋‹ค.

    Test your JavaScript skills Series' Articles

    JavaScript ์ธํ„ฐ๋ทฐ์— ์ž์ฃผ ๋“ฑ์žฅํ•˜๋Š”, ํ—ท๊ฐˆ๋ฆฌ๊ธฐ ์‰ฌ์šด ๋ฌธ์ œ๋ฅผ 16๊ฐ€์ง€ ์˜ˆ์ œ์™€ ํ•จ๊ป˜ ์ •๋ฆฌํ•ด ๋†“์€ ์•„ํ‹ฐํด์ด๋‹ค. ์ฐจ๋ก€์ฐจ๋ก€๋กœ ์ฝ์–ด๋ณธ๋‹ค๋ฉด JavaScript์— ๋Œ€ํ•œ ์ž์‹ ์˜ ๊ธฐ๋ณธ๊ธฐ๋ฅผ ๋ถ€๋‹ด ์—†์ด ํ™•์ธํ•ด ๋ณด๊ณ  ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

    ํŠœํ† ๋ฆฌ์–ผ

    JavaScript's Memory Management Explained

    JavaScript ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด์„œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š” ๋ณ€์ˆ˜, ํ•จ์ˆ˜, ๊ฐ์ฒด ๋“ฑ์€ ์–ด๋””์— ์–ด๋–ป๊ฒŒ ์ €์žฅ๋˜๊ณ  ์‚ฌ์šฉ๋ ๊นŒ? ๊ทธ๋ฆฌ๊ณ  ๋” ์ด์ƒ ํ•„์š” ์—†๊ฒŒ ๋˜์—ˆ์„ ๋•Œ ์–ด๋–ป๊ฒŒ GC(Garbage Collection)๊ฐ€ ์ด๋ค„์ง€๊ฒŒ ๋ ๊นŒ?

    ์ด ๊ธ€์€ JavaScript ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ๊ถ๊ธˆ์ฆ์„ ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•ด ์ค„ ๊ฒƒ์ด๋‹ค.

    Letโ€™s Create a Chrome Extension To Add New Features To Medium

    ์›น ์„œ๋น„์Šค๋ฅผ ์ด์šฉ ์ค‘์— ์–ด๋–ค ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜๋ฉด ์ข‹๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์„ ํ•ด๋ณธ ๊ฒฝํ—˜์ด ์žˆ๋Š”๊ฐ€? Chrome ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด extension์„ ๊ฐœ๋ฐœํ•จ์œผ๋กœ์จ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

    ์ด ๊ธ€์—์„œ๋Š” Chrome extension์ด ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์„ค๋ช…๊ณผ ์‹ค์ œ๋กœ Medium์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” extension์— ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ์˜ˆ์ œ๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ๋‹ค.

    ์ฝ”๋“œ์™€ ๋„๊ตฌ

    json-to-simple-graphql-schema

    JSON์— ๋™์ผํ•œ ํ•„๋“œ๋ฅผ ๊ฐ–๋Š” 2๊ฐœ์˜ ํƒ€์ž…์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ:

    {
      "id": "some-id-0",
      "name": "A fun object",
      "color": {
        "id": "color-id-1",
        "name": "Test color"
      },
      "favoriteColor": {
        "id": "color-id-1",
        "name": "Test color"
      }
    }
    

    ์•ฑ์„ ํ†ตํ•ด ์‹คํ–‰๋˜๋ฉด, ๋‹ค์Œ์˜ ์Šคํ‚ค๋งˆ๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.

    
    type FavoriteColor {
      id: String
      name: String
    }
    
    type Color {
      id: String
      name: String
    }
    
    type AutogeneratedMainType {
      id: String
      name: String
      favoriteColor: FavoriteColor
      color: Color
    }
    
    # Types with identical fields:
    # FavoriteColor Color
    It called out the two types with identical fields.
    
    

    JSON ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ graphql schema๋กœ ๋ณ€ํ™˜ํ•ด ์ฃผ๋Š” ๋„๊ตฌ์ด๋‹ค.

    JSON ๊ธฐ๋ฐ˜์œผ๋กœ API ํ†ต์‹ ํ•˜๋Š” ํ”„๋กœ์ ํŠธ์— graphql์„ ์ ์šฉํ•˜๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด ์ด ๋„๊ตฌ๊ฐ€ ๊ต‰์žฅํžˆ ์œ ์šฉํ•˜๊ฒŒ ์“ฐ์ผ ๊ฒƒ์ด๋‹ค.

    <SpeedTyper />

    ๊ฐœ๋ฐœ์ž๋“ค์„ ์œ„ํ•œ ์ฝ”๋“œ ํƒ€์ดํ•‘ ํ•™์Šต(๊ฒŒ์ž„) ๋„๊ตฌ๋กœ, ์‹ค์ œ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋“ค์˜ ์ฝ”๋“œ๋“ค์„ ์‚ฌ์šฉํ•œ๋‹ค. ์†๋„์™€ ์ •ํ™•์„ฑ์„ ๊ธฐ์ค€์œผ๋กœ ๋‹ค๋ฅธ ์ด๋“ค๊ณผ ๊ฒฝ์Ÿํ•˜๊ฑฐ๋‚˜ ์ฝ”๋“œ ํƒ€์ดํ•‘ ์Šคํ‚ฌ์„ ์Šค์Šค๋กœ ํ•™์Šตํ•ด ๋ณผ ์ˆ˜๋„ ์žˆ๋‹ค.

    Parallel.js

    Parallel.js๋Š” Node.js์™€ ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์—์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ณ‘๋ ฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ์ž‘์€ ์šฉ๋Ÿ‰(1.49KB - gzipped)์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, Node.js ํ™˜๊ฒฝ์—์„œ๋Š” child processes, ๊ทธ๋ฆฌ๊ณ  ์›น ํ™˜๊ฒฝ์—์„œ๋Š” ์›น ์›Œ์ปค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

    RunJS

    Javascript ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋ฐ์Šคํฌํ†ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‹ค.

    ๊ธฐ๋ณธ์ ์œผ๋กœ typescript๋ฅผ ์ง€์›ํ•˜๊ณ  npm ํŒจํ‚ค์ง€๋“ค์„ ์„ค์น˜ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํ”„๋กœํ† ํƒ€์ดํ•‘์ด๋‚˜ ํ…Œ์ŠคํŠธ ๋“ฑ ๊ฐ„๋‹จํ•œ ์ž‘์—…์— ์‚ฌ์šฉํ•˜๊ธฐ ์•Œ๋งž์•„ ๋ณด์ธ๋‹ค.

    Remotion

    Remotion์€ ๋ฆฌ์•กํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น„๋””์˜ค์™€ ๋ชจ์…˜ ๊ทธ๋ž˜ํ”ฝ์„ ์ œ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‹ค. CSS, Canvas, SVG, WebGL ๊ฐ™์€ ์›น ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•ด ๋น„๋””์˜ค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.