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

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

    2020-03

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

    Request - Simplified HTTP client: Deprecated!

    24K ๊นƒํ—™ Star์™€ ๋งค์ฃผ 18M ๊ฑด์˜ ๋‹ค์šด๋กœ๋“œ, ๊ทธ๋ฆฌ๊ณ  ๋ฌด๋ ค 48K ๊ฐœ์˜ ํŒจํ‚ค์ง€๋“ค์ด ์˜์กดํ•˜๊ณ  ์žˆ๋Š” ์ธ๊ธฐ HTTP ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ 'Request'๊ฐ€ ์ง€๋‚œ 2์›” 20์ผ์„ ๊ธฐ์ ์œผ๋กœ deprecate ๋˜์—ˆ๋‹ค.

    ์ง€๋‚œ 10์—ฌ ๋…„๊ฐ„(2009๋…„ ์‹œ์ž‘) ์œ ์ง€๋˜์—ˆ๋˜ ์ด ํ”„๋กœ์ ํŠธ์˜ ๊ฐœ๋ฐœ์ž์ธ Mikeal Rogers๋Š” ์ง€๋‚œ ๋ช‡ ๋…„๊ฐ„ ๋น ๋ฅด๊ฒŒ ๋ณ€ํ™”ํ•œ JavaScript ์ƒํƒœ๊ณ„์˜ ๋ณ€ํ™”๋“ค๋กœ ์ธํ•ด request์˜ ์ฝ”์–ด ํŒจํ„ด์€ ์‹œ๋Œ€์— ๋’ค๋–จ์–ด์ง€๊ฒŒ ๋˜์—ˆ๊ณ , ์ƒํƒœ๊ณ„๋ฅผ ์œ„ํ•œ ์ตœ์„ ์ฑ…์€ ๋ฉ”์ธํ„ฐ๋„Œ์Šค ๋ชจ๋“œ๋กœ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ๊ทธ ์ด์œ ๋ฅผ ๋ฐํ˜”๋‹ค. ๋ณด๋‹ค ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ ๋งํฌ๋ฅผ ํ†ตํ•ด ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

    (์˜์ƒ) dotJS 2019 - Vladimir Agafonkin - Fast by default: algorithmic performance optimization in practice

    ๋ณ‘๋ชฉ์ง€์ ์„ ์ฐพ๊ณ  ์™œ ๋А๋ฆฐ์ง€ ์ƒ๊ฐํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค์–ด๋ผ!

    Javascript์—์„œ ํผํฌ๋จผ์Šค๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์„ ๋‹ค์–‘ํ•œ ๊ฒฝํ—˜๊ณผ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์„ค๋ช…ํ•œ๋‹ค.

    Some Tips for the Web VR Beginners

    ๋‹จ๋ˆ 5 ๋‹ฌ๋Ÿฌ๋งŒ ์žˆ์–ด๋„ VR ์ฝ˜ํ…์ธ ๋ฅผ ์ฆ๊ธธ ์ˆ˜ ์žˆ๋Š” ์„ธ์ƒ, Web VR ๊ฐœ๋ฐœ ํŒ์„ ๊ณต์œ ํ•œ๋‹ค.

    Web VR์„ ๊ฐœ๋ฐœํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์–ด๋–ค ๊ฒƒ๋“ค์„ ๊ณ ๋ฏผํ•ด๋ด์•ผ ํ•˜๋Š”์ง€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ธŒ๋ผ์šฐ์ €์™€ ๊ธฐ๊ธฐ์˜ ์ธก๋ฉด์—์„œ ์ด์•ผ๊ธฐํ•œ๋‹ค.

    Good bye, Clean Code

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

    ์ฝ”๋“œ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ณด์ด๋Š”์ง€๋งŒ ๋ณด๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ๋‹ค์–‘ํ•œ ์‚ฌ๋žŒ๋“ค๋กœ๋ถ€ํ„ฐ ์–ด๋–ป๊ฒŒ ๋ฐœ์ „์‹œ์ผœ ๋‚˜๊ฐˆ์ง€๊ฐ€ ์ค‘์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๊ฒฝํ—˜์„ ํ† ๋Œ€๋กœ ์ด์•ผ๊ธฐํ•œ๋‹ค.

    A Guide to Console Commands | CSS-Tricks

    console์€ ๊ฐ„๋‹จํžˆ ๋‹ค๋ฃจ๊ธฐ์—๋Š” ์•Œ์•„์•ผํ•  ๊ฒƒ๋“ค์ด ์˜์™ธ๋กœ ๋งŽ๋‹ค.

    ์šฐ๋ฆฌ๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ฒ˜์Œ ์‹œ์ž‘ํ•  ๋•Œ ๋‹ค๋ค˜๋˜ console์˜ ๋‹ค์–‘ํ•œ ํ™œ์šฉ๋ฒ•, ๊ธฐ๋Šฅ์„ ์ž์„ธํžˆ ๊ฐ€์ด๋“œํ•œ๋‹ค.

    Bulletproof node.js project architecture ๐Ÿ›ก๏ธ

    Express.js๋Š” node.js๋กœ REST API๋ฅผ ๊ฐœ๋ฐœํ•  ๋•Œ ์ •๋ง ์ข‹์€ ํ”„๋ ˆ์ž„์›Œํฌ์ด์ง€๋งŒ, node.js ํ”„๋กœ์ ํŠธ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑํ•ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ๊ทธ ๋ˆ„๊ตฌ๋„ ์•Œ๋ ค์ฃผ์ง€ ์•Š๋Š” ๊ฑด ํฐ ๋ฌธ์ œ๋‹ค.

    Express.js ๊ธฐ๋ฐ˜์˜ node ํ”„๋กœ์ ํŠธ๋ฅผ ์–ด๋–ป๊ฒŒ ์„ค๊ณ„/๊ตฌ์„ฑํ•ด์•ผ ํ•˜๋Š”์ง€ ์ž์„ธํ•˜๊ฒŒ ์„ค๋ช…ํ•œ๋‹ค. ํ•œ๊ธ€๋กœ ๋ฒˆ์—ญ๋œ ๊ธ€(#๋ฐ”๋กœ๊ฐ€๊ธฐ)๋„ ์žˆ๋‹ค.

    The ultimate guide to proper use of animation in UX

    ์‚ฌ์šฉ์ž ๊ฒฝํ—˜(UX)์„ ์œ„ํ•ด ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๊ณ ๋ คํ•ด์•ผ ํ•˜๋Š” ์ข…ํ•ฉ์ ์ธ ๊ฐ€์ด๋“œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค. Timing Function์— ๋”ฐ๋ผ ์ ํ•ฉํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜๋“ค์€ ๋ฌด์—‡์ธ์ง€, ์ธํ„ฐํŽ˜์ด์Šค ์• ๋‹ˆ๋ฉ”์ด์…˜์˜ ๊ฐ€์žฅ ์ตœ์ ํ™”๋œ ์†๋„๋Š” 200~500ms ์‚ฌ์ด(๋‹ค์ˆ˜์˜ ๋ฆฌํฌํŠธ์— ๊ทผ๊ฑฐํ•œ)๋ผ๋Š” ๋‚ด์šฉ๋“ค์„ ์†Œ๊ฐœํ•˜๋ฉฐ, ๊ฐ ํ•ญ๋ชฉ ๋ณ„๋กœ ์ œ๊ณต๋˜๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์ฐจ์ด์ ๋“ค์„ ์ง์ ‘ ์ฒด๊ฐํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

    ex) ์†๋„์™€ ๊ด€๋ จํ•ด์„œ๋Š” ๋„ˆ๋ฌด ๋น ๋ฅด์ง€๋Š” ์•Š์ง€๋งŒ ์‚ฌ์šฉ์ž๋“ค์˜ ๊ธฐ๋‹ค๋ฆผ์„ ์ตœ์†Œํ™”ํ•œ ์†๋„์˜ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ ์šฉ์˜ ํ•„์š”์„ฑ์— ๋Œ€ํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์˜ˆ์ œ

    Design Better Forms

    ์ธ์ƒ์€ ์งง๊ณ  ์‚ฌ์šฉ์ž๋Š” ํผ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ธฐ ๊บผ๋ ค ํ•œ๋‹ค.

    ์‚ฌ์šฉ์ž์—๊ฒŒ ์–ด๋–ป๊ฒŒ ํผ์„ ์ œ๊ณตํ•ด์•ผ ํšจ๊ณผ์ ์ด๊ณ  ์™„๋ฃŒ์œจ์ด ๋†’์€์ง€ ์„ค๋ช…ํ•˜๋Š” ๊ธ€. ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์—์„œ ํผ์„ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ํ•„๋…!

    7 design psychology fundamentals every designer should know

    ํ”„๋กœ๋•ํŠธ๋ฅผ ๊ฐœ๋ฐœํ•  ๋•Œ ๋ฉ˜ํƒˆ๋ชจ๋ธ์„ ์—ผ๋‘ํ•ด ๋‘๋ฉด ์‚ฌ์šฉ์ž์˜ ๋ฐ˜์‘์„ ์„ฑ๊ณต์ ์œผ๋กœ ์ด๋Œ์–ด ๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

    ์ธ๊ฐ„์˜ 7๊ฐ€์ง€ ์‹ฌ๋ฆฌ์ ์š”์†Œ๋ฅผ UX์— ์–ด๋–ป๊ฒŒ ๋…น์—ฌ์•ผ ์‚ฌ์šฉ์ž์˜ ์ข‹์€ ๋ฐ˜์‘์ด ๋‚˜์˜ค๋Š”์ง€ ์„ค๋ช…ํ•ด ์ค€๋‹ค.

    Why Apple's Notification Bubbles Are so Stressful

    iPhone์˜ ์ž ๊ธˆ์„ ํ•ด์ œํ•  ๋•Œ๋งˆ๋‹ค ์‹œ๋ป˜๊ฑด ์•Œ๋ฆผ ๋ฒณ์ง€๋กœ ๋ถ€ํ„ฐ ๊ณต๊ฒฉ์„ ๋ฐ›๋Š”๋‹ค.

    ๋‚˜์€ UX๋Š” ์ž‘์€ ๋ณ€ํ™”๋กœ๋ถ€ํ„ฐ ์‹œ์ž‘๋œ๋‹ค. ํ•„์ž๊ฐ€ "์ธ์ง€ ๊ณผ๋ถ€ํ™”"๋ผ๊ณ ๊นŒ์ง€ ์ผ์ปซ๋Š” ์•Œ๋ฆผ ๋ฒณ์ง€ ์ŠคํŠธ๋ ˆ์Šค๋ฅผ ์–ด๋–ค ์ž‘์€ ๋ณ€ํ™”๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์ด์•ผ๊ธฐํ•œ๋‹ค.

    ๋„ค์ด๋ฒ„ ์ง€๋„ vs ์นด์นด์˜ค๋งต ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ๋น„๊ต (Mobile) / (PC)

    ๋„ค์ด๋ฒ„ ์ง€๋„์™€ ์นด์นด์˜ค๋งต์„ Mobile๊ณผ PC ๋‘ ํ”Œ๋žซํผ์—์„œ ์Œ์„ฑ๊ฒ€์ƒ‰, ๋ณต์‚ฌ, ์ฆ๊ฒจ์ฐพ๊ธฐ ๋“ฑ ๋‹ค์–‘ํ•œ ์ธก๋ฉด์—์„œ ๋น„๊ตํ•œ ๊ธ€. ๋‘ ์ง€๋„ ์„œ๋น„์Šค๋ฅผ ๋ชจ๋‘ ์„ค์น˜ํ•˜๊ณ  ์ƒํ™ฉ์— ๋”ฐ๋ผ ์ ์ ˆํžˆ ์ด์šฉํ•˜๊ณ  ์žˆ๋Š” ํ•„์ž์˜ UX์— ๋Œ€ํ•œ ๊นŠ์€ ์ธ์‚ฌ์ดํŠธ๋ฅผ ์—ฟ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

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

    The Top ~~50~~ 100+ Developer Tools 2019

    2019๋…„ ํ•œ ํ•ด๋™์•ˆ StackShare ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๊ณต์œ ๋œ 4๋ฐฑ๋งŒ ๊ฐœ ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ–ˆ๊ณ , ํ”„๋ŸฐํŠธ/๋ฐฑ์—”๋“œ๋ถ€ํ„ฐ ๋””์ž์ธ ํˆด ๊ทธ๋ฆฌ๊ณ  ํ˜‘์—… ํˆด๊นŒ์ง€ 18๊ฐ€์ง€์˜ ๋ฒ”์ฃผ๋กœ ๋ถ„๋ฅ˜ํ•ด์„œ ์ˆœ์œ„ํ™”ํ–ˆ๋‹ค.

    ๋‹ค์–‘ํ•œ ์ธก๋ฉด์—์„œ ๋น„๊ต๋ฅผ ํ†ตํ•ด ์˜๋ฏธ ์žˆ๋Š” ์„ ํƒ์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” ์ฐธ๊ณ  ์ž๋ฃŒ๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค.

    stackshare์—์„œ๋Š” UBER, Airbnb, Shopify ๋“ฑ ๊ธฐ์—…๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ์ˆ  ์Šคํƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งํฌ์—์„œ ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ์ˆ  ์Šคํƒ๊ณผ ๋‹ค๋ฅธ ๊ธฐ์—…๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ์ˆ  ์Šคํƒ์„ ๋น„๊ตํ•˜๋Š” ๊ฒƒ๋„ ์ ์ ํ•œ ์žฌ๋ฏธ๊ฐ€ ๋˜์ง€ ์•Š์„๊นŒ?

    30 seconds of code

    2018๋…„ ๊นƒํ—™ Top ํ”„๋กœ์ ํŠธ๋กœ ์„ ์ •๋˜๊ธฐ๋„ ํ–ˆ๋˜ ์ด ํ”„๋กœ์ ํŠธ๋Š” ์ฝ”๋“œ ์ž‘์„ฑ ์‹œ ๋งž๋‹ฅ๋œจ๋ฆด ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋“ค์˜ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ๋‹ค์–‘ํ•˜๊ณ  ์งค๋ง‰ํ•œ ์ฝ”๋“œ ์Šค๋‹ˆํŽซ ๋ชจ์Œ๋“ค์„ ์ œ๊ณตํ•œ๋‹ค. JavaScript ์™ธ์—๋„ CSS, React, Python ๋“ฑ ์ด 7๊ฐ€์ง€ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๋ฐ ์–ธ์–ด๋“ค์˜ ๋ถ„๋ฅ˜๋กœ ์ œ๊ณต๋œ๋‹ค.

    // ex) ๋ฐฐ์—ด ๋‚ด์— ์กด์žฌํ•˜๋Š” ๊ต์ฐจ ๊ฐ’์„ ๊ตฌํ•˜๋Š” ์Šค๋‹ˆํŽซ
    const intersectionBy = (a, b, fn) => {
      const s = new Set(b.map(fn));
      return [...new Set(a)].filter(x => s.has(fn(x)));
    };
    
    intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor); // [2.1]
    

    ์ถ”๊ฐ€๋กœ 2018๋…„ Top ๊นƒํ—™ ํ”„๋กœ์ ํŠธ๋กœ ์„ ์ •๋˜์—ˆ๋˜ ๋‹ค์Œ ํ”„๋กœ์ ํŠธ๋„ ์œ ์šฉํ•˜๊ฒŒ ์ฐธ๊ณ ํ• ๋งŒํ•˜๋‹ค.

    • 33-js-concepts JavaScript ๊ฐœ๋ฐœ์ž๋“ค์ด ์•Œ์•„๋‘๋ฉด ์ข‹์„ ์ฃผ์š”ํ•œ 33๊ฐ€์ง€ ๊ฐœ๋…๋“ค์— ๋Œ€ํ•œ ์„ค๋ช…๊ธ€๊ณผ ๋™์˜์ƒ๋“ค์˜ ๋ฐฉ๋Œ€ํ•œ ๋ชฉ๋ก์„ ์ œ๊ณตํ•œ๋‹ค. ์ด๋“ค ๊ฐœ๋…๋“ค ์ค‘์—๋Š” Call Stack, Expression(ํ‘œํ˜„์‹) vs Statement(๋ฌธ์žฅ)์˜ ์ฐจ์ด ๋“ฑ์„ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

    Google Lighthouse: Firefox Add-ons

    Chrome ๋ธŒ๋ผ์šฐ์ €์˜ ๊ธฐ๋ณธ ์„ฑ๋Šฅ ์ธก์ • ๋„๊ตฌ์ธ Lighthouse๋ฅผ ์ด์ œ Firefox์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

    fullcalendar/fullcalendar

    ์ด๋ฒคํŠธ drag & drop์ด ๊ฐ€๋Šฅํ•œ full-sized ๋‹ฌ๋ ฅ์ด๋‹ค.

    myliang/x-spreadsheet

    ์›น ์—‘์…€. ์—‘์…€ function ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.