[HellCoders] Study 7์ผ์ฐจ

์˜์•„ยท2021๋…„ 8์›” 11์ผ
0

HellCoders Study

๋ชฉ๋ก ๋ณด๊ธฐ
7/9
post-thumbnail

๐Ÿ”ฅ ์˜ค๋Š˜ํ•˜๋ฃจ๋Š”?

  • ์•Œ๊ณ ๋ฆฌ์ฆ˜
    ์Šคํ„ฐ๋”” ์กฐ์›๋ถ„๋“ค์ด ๋ชจ๋‘ ํ† ์š”์ผ์— ์žˆ๋Š” ํ† ์Šค ์ฝ”๋”ฉํ…Œ์ŠคํŠธ์— ์ฐธ๊ฐ€ํ•ด์„œ ๊ฒฝํ—˜์ด๋ผ๋„ ํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค. ์•„์ง ์Šคํ„ฐ๋”” ์‹œ์ž‘ํ•œ์ง€ ์–ผ๋งˆ๋˜์ง€ ์•Š์•„์„œ ํฐ ๊ธฐ๋Œ€๋Š” ์—†์ง€๋งŒ, ๊ธฐํšŒ๊ฐ€ ์ƒ๊ฒผ์„๋•Œ ์ฐธ์—ฌํ•ด๋ณด๋Š”๊ฑด ์ข‹์€๊ฒƒ ๊ฐ™๋‹ค.
    ํ•˜๋ฃจ 3๋ฌธ์ œ.. ์ด๊ฒƒ๋„ ํž˜๋“ค์ง€๋งŒ ๊พน ์ฐธ๊ณ  ๊ณ„์†ํ•ด๋ด์•ผ์ง€ .. ๋งค์ผ ๊ฐ€์žฅ ์–ด๋ ค์› ๋˜ ๋ฌธ์ œ๋ฅผ ์•„๋ž˜ ํ’€์ด๋กœ ๋‚จ๊ฒจ๋†“๊ณ  ๋ณต์Šตํ•ด์•ผ๊ฒ ๋‹ค.

  • ์ž๊ธฐ์†Œ๊ฐœ ํŽ˜์ด์ง€๋งŒ๋“ค๊ธฐ
    ์–ด์ œ ์ž‘์—…ํ•˜๋˜ ํ”„๋กœ์ ํŠธ ๋ถ€๋ถ„ ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค. ์ง€๊ธˆ์€ ๊ธฐ๋ณธ์ ์ธ ๋ ˆ์ด์•„์›ƒ๋งŒ ์žก์•„๋†”์„œ ์ˆ˜์ •ํ•ด์•ผํ•  ๋ถ€๋ถ„์€ ๋‚จ์•„์žˆ๋‹ค. ์›๋ž˜ ์ฒ˜์Œ์—๋Š” ํ”„๋กœ์ ํŠธํŽ˜์ด์ง€ ์‹œ์—ฐ์„ gif๋กœ ํ•˜๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ ๋…นํ™”ํ•œ ์˜์ƒ์„ gif๋กœ ๋ณ€ํ™˜ํ•˜๋‹ˆ ์šฉ๋Ÿ‰์ด ํ›จ์”ฌ ์ปค์ ธ์„œ ๊ทธ๋ƒฅ ๋น„๋””์˜คํŒŒ์ผ์„ ์‚ฌ์šฉํ•ด์„œ ๊ตฌํ˜„ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.
    ์˜์ƒ์— ๋งˆ์šฐ์Šค๋ฅผ ์˜ฌ๋ฆฌ๋ฉด ์˜์ƒ์ด ์žฌ์ƒ๋˜๊ณ , ์˜์ƒ๋ฐ–์œผ๋กœ ๋งˆ์šฐ์Šค๊ฐ€ ๋‚˜๊ฐ€๋ฉด ์˜์ƒ์ด ์ •์ง€๋˜๋Š” ํ˜•ํƒœ๋กœ ๋งŒ๋“ค์—ˆ๋‹ค.
    ๋‚ด์ผ์€ who page๋ฅผ ๊ตฌ์ƒํ•˜๊ณ , ๋นจ๋ฆฌ ์ด๋ ฅ์„œ๋ฅผ ์ž‘์„ฑํ•ด์„œ ๊ธฐํšŒ๊ฐ€ ์ƒ๊ธฐ๋ฉด ๋ฐ”๋กœ ์ง€์› ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ค€๋น„ํ•ด์•ผ๊ฒ ๋‹ค.


TIL : CSR vs SSR

์˜ค๋Š˜์˜ ๊ฐ•์˜ ๐Ÿง‘โ€๐Ÿ’ป

์„œ๋ฒ„์‚ฌ์ด๋“œ ๋ Œ๋”๋ง (๊ฐœ๋ฐœ์ž๋ผ๋ฉด ์ƒ์‹์œผ๋กœ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•˜๋Š” ๊ฐœ๋… ์ •๋ฆฌ โญ๏ธ)
https://youtu.be/iZ9csAfU5Os (๋“œ๋ฆผ์ฝ”๋”ฉ by ์—˜๋ฆฌ๐Ÿงšโ€โ™€๏ธ)

๐Ÿงญ ์›น ์—ญ์‚ฌ๋ถ€ํ„ฐ ์‹œ์ž‘

  • 1990๋…„๋Œ€ ์ดˆ => Static Site๋ฅผ ์ฃผ๋กœ ์‚ฌ์šฉ (๋‹ค๋ฅธ ๋งํฌ๋ฅผ ํด๋ฆญํ•˜๋ฉด ์ „์ฒด ํŽ˜์ด์ง€๊ฐ€ ๋‹ค์‹œ ๋กœ๋”ฉ๋จ ) => ๊นœ๋นก์ž„ ํ˜„์ƒ๋ฐœ์ƒ

  • 1996๋…„ => <iframe> ๋„์ž… (๋ถ€๋ถ„์ ์œผ๋กœ ๋ฌธ์„œ๋ฅผ ๋ฐ›์•„์™€์„œ ์—…๋ฐ์ดํŠธ ๊ฐ€๋Šฅ)

  • 1998๋…„=> XMLHttpRequest => ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ๋ถ€๋ถ„์ ์œผ๋กœ ๋ฐ›์•„ ์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ๋จ (์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ ์œผ๋กœ)

  • 2005๋…„ Ajax => SPA(Single Page Application) => ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์™€ ๋ถ€๋ถ„์ ์œผ๋กœ ํŽ˜์ด์ง€๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์„œ ์‚ฌ์šฉํ•จ.
    =>์‚ฌ์šฉ์„ฑ์ด ํฌ๊ฒŒ ์ฆ๋Œ€
    => ์‚ฌ์šฉ์ž์˜ ์ปดํ“จํ„ฐ ์‚ฌ์–‘์ด ์ข‹์•„์ง์— ๋”ฐ๋ผ ๋งŽ์€ ์–‘๋„ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ด์กŒ๋‹ค.
    ์ดํ›„ ํ˜„์žฌ ์šฐ๋ฆฌ๊ฐ€ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” Angular, React, Vue.js ์ƒ๊น€

=> ์œ„ 3๊ฐ€์ง€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ,ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•ด์„œ ๋งŒ๋“  ์›นํŽ˜์ด์ง€๋ฅผ CSR (Client Side Rendering) ์ด๋ผ๊ณ  ํ•œ๋‹ค.


๐ŸŒž CSR(Client Side Rendering)

CSR์€ ์„œ๋ฒ„์—์„œ ๋ฐ›์•„์˜ค๋Š” html,js๋“ฑ ํŒŒ์ผ์„ ๋ฐ›๋Š” ์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ ค์„œ ์ฒซ ํ™”๋ฉด์ด ๋Šฆ๊ฒŒ ๋œจ๋Š” ๋‹จ์ ์ด ์žˆ๊ณ ,
SEO(Search Engine Optimization)๊ฐ€ ์ข‹์ง€ ๋ชปํ•˜๋‹ค. SEO => ๊ฒ€์ƒ‰์—”์ง„ ์ตœ์ ํ™”
SEO๋Š” html๋‚ด๋ถ€์˜ ์ฝ”๋“œ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋Š”๋ฐ, CSR์€ html์ด ๋น„์–ด์žˆ๋‹ค. ๊ตฌ๊ธ€์—์„œ๋Š” ๊ฐœ์„ ํ–ˆ๋‹ค๊ณ ๋Š” ํ•˜์ง€๋งŒ seo๊ฐ€ ์ข‹์ง€ ๋ชปํ•˜๋‹ค.

=> TTV์™€ TTI๊ฐ€ ๊ฐ™๋‹ค.


๐ŸŒ SSR(Server Side Rendering)

SSR(Sever Side Rendering)์€ ์ฒ˜์Œ ๋กœ๋”ฉ์ด ๋น ๋ฅด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“ ์ปจํ…์ธ ๊ฐ€ html ๋ฌธ์„œ์— ๋‹ด๊ฒจ ์žˆ์–ด์„œ SEO์—๋„ ์ข‹๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ 1990๋…„ ์ดˆ์™€ ๊ฐ™์ด ๋ธ”๋งํ‚น ์ด์Šˆ๊ฐ€ ์žˆ์–ด์„œ ์ฉ ์ข‹์ง€ ๋ชปํ•œ UX๋ฅผ ๊ฒฝํ—˜ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ์„œ๋ฒ„์— ๊ณผ๋ถ€ํ•˜๊ฐ€ ๊ฑธ๋ฆฌ๊ธฐ ์‰ฝ๋‹ค. ( ์‚ฌ์šฉ์ž๊ฐ€ ๋งŽ์„ ์ˆ˜๋ก ํด๋ฆญ์ˆ˜๊ฐ€ ์ฆ๊ฐ€๋˜๋ฉฐ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•ด์•ผํ•  html์˜ ์ˆ˜๊ฐ€ ๋งŽ์•„์ง€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.)
์ฒซ ํ™”๋ฉด์ด ๋นจ๋ฆฌ ๋กœ๋”ฉ๋˜๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ, ๋™์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” JS๋ฅผ ์ƒ๋Œ€์ ์œผ๋กœ ๋Šฆ๊ฒŒ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ํŽ˜์ด์ง€๋ฅผ ํด๋ฆญํ•ด๋„ ์•„๋ฌด๋Ÿฐ ๋ฐ˜์‘์ด ์—†์„ ์ˆ˜ ์žˆ๋‹ค.

=> TTV,TTI ๊ณต๋ฐฑ์ด ๋ฐœ์ƒํ•œ๋‹ค. (๊ธธ๋‹ค..)


๐Ÿ”ฅ ๋งˆ๋ฌด๋ฆฌ

  • TTV (Time To View): ์‚ฌ์šฉ์ž๊ฐ€ ์›น ํŽ˜์ด์ง€๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์‹œ์ ์ด๋‹ค.

  • TTI (Time To Interact) : ์‚ฌ์šฉ์ž๊ฐ€ ์›นํŽ˜์ด์ง€์—์„œ ์ธํ„ฐ๋ ‰์…˜ ํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ์ ์ด๋‹ค.

=> ์‚ฌ์ดํŠธ์— ๋งก๊ฒŒ TTV,TTI์˜ ์ฐจ์ด๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ๊ณ ๋ คํ•ด์•ผํ•จ


โค๏ธ SSG(Static Site Generation)

  • React + Gatsby : ๋ฆฌ์•กํŠธ๋กœ ๋งŒ๋“ค์–ด์ง„ ์›น์„ ์ •์ ์œผ๋กœ html๋กœ ๋งŒ๋“ค์–ด ๋‘๊ณ , ์„œ๋ฒ„์— ๋ฐฐํฌํ•ด๋‘”๋‹ค.(JSํŒŒ์ผ๋„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋–„๋ฌธ์— ์ •์ ์ธ ์›นํŽ˜์ด์ง€๋กœ ๋ณผ ์ˆ˜๋Š” ์—†๋‹ค.)
  • React + Next.js

(๋“œ๋ฆผ์ฝ”๋”ฉ by ์—˜๋ฆฌ๐Ÿงšโ€โ™€๏ธ : ํ•ญ์ƒ ๋งŽ์€ ๋„์›€์„ ๋ฐ›๋Š” ๊ฐ์‚ฌํ•œ ์—˜๋ฆฌ๋‹˜!! ์˜ค๋Š˜๋„ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.)


๐Ÿคฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด

๊ฑฐ๋ฆฌ๋‘๊ธฐ ํ™•์ธํ•˜๊ธฐ


function solution(places) {
    let answer = [];

    for (let i = 0; i < places.length; i++) {
        answer.push(keep_dist(places[i]));
    }

    return answer;
}

// ๊ฑฐ๋ฆฌ๋‘๊ธฐ ํ™•์ธ
function keep_dist(place) {
    place = place.map(v => v.split(''));

    for (let row = 0; row < 5; row++) {
        for (let col = 0; col < 5; col++) {

            if (place[row][col] === 'P') {
                // ๊ฐ€๋กœ ํ•œ์นธ ์ฒดํฌ
                if (col < 4 && place[row][col + 1] === 'P') {
                    return 0;                    
                }
                // ๊ฐ€๋กœ ๋‘์นธ ์ฒดํฌ
                if (col < 3 && place[row][col + 2] === 'P' && place[row][col + 1] === 'O') {
                    return 0;
                }

                // ์„ธ๋กœ ํ•œ์นธ ์ฒดํฌ
                if (row < 4 && place[row + 1][col] === 'P') {
                    return 0;                  
                }
                // ์„ธ๋กœ ๋‘์นธ ์ฒดํฌ
                if (row < 3 && place[row + 2][col] === 'P' && place[row + 1][col] === 'O') {
                    return 0;
                }

                // ์•„๋ž˜ ์™ผ์ชฝ ๋Œ€๊ฐ
                if (row < 4 && place[row + 1][col - 1] === 'P') {
                    if (place[row + 1][col] === 'O' || place[row][col - 1] === 'O') {
                        return 0;
                    }
                }
                //์•„๋ž˜ ์˜ค๋ฅธ์ชฝ ๋Œ€๊ฐ
                if (row < 4 && col < 4 && place[row + 1][col + 1] === 'P') {
                    if (place[row + 1][col] === 'O' || place[row][col + 1] === 'O') {
                        return 0;
                    }
                }
            } 
        }
    }

    return 1;
}

์Œ ์ฒ˜์Œ์— ๋ฌธ์ œ ์„ค๋ช…์— ๋งจํ•ดํŠผ๊ฑฐ๋ฆฌ๋ผ๋Š” ๋‹จ์–ด๊ฐ€๋‚˜์™€์„œ ๊ทธ๋•Œ๋ถ€ํ„ฐ ๊ฒ๋จน๊ณ  ๋ฌธ์ œ๋ฅผ ํ‘ผ ๊ฒƒ ๊ฐ™๋‹ค.

(๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ๋ณด๊ณ  ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•ด๋ณด๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ๋‹ค.) ๐Ÿคฎ

์•ฝ๊ฐ„ ํ•˜๋‚˜ํ•˜๋‚˜ ๊ฒฝ์šฐ๋ฅผ ๋‹ค ์ƒ๊ฐํ•ด์„œ if๋ฌธ ๋ถ„๊ธฐ๋ฅผ ๋‚˜๋ˆ ์„œ ์ฝ”๋“œ๊ฐ€ ์ž‘์„ฑ ๋œ ๊ฒƒ ๊ฐ™๋‹ค.

profile
์ฝ”๋”ฉ ๋ฐฐ์šฐ๋Š” ์•„์ด

0๊ฐœ์˜ ๋Œ“๊ธ€