์ค๋ ์๋ก์ด ๋ฑ๋ก์ด ์์๋์์ต๋๋ค.
์ ์ด๋ฆ์ Yulia Seredich์ ๋๋ค. ์ฐ๋ฆฌ๋ Sergei Kazakov์ ํจ๊ป ์ด ๊ฒ์๋ฌผ์ ์ผ์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ ๋ค Yandex ๋ฏผ์คํฌ ์ฌ๋ฌด์์ ์ธํฐํ์ด์ค ๊ฐ๋ฐ์์ด์ ์ง๋ ๋ช ๋ ๋์ SRI๋ฅผ ์กธ์ ํ์ต๋๋ค.
๋ชจ์คํฌ๋ฐ ๋ฑ๋ก ๊ฐ์๋ฅผ ๊ณ๊ธฐ๋ก ์ฐ๋ฆฌ๋ ์ฌ๊ธฐ ๋ฏผ์คํฌ์ ์ด์ ํ๊ต์ ๋ํ ์
๋ฌธ ๊ณผ์ ๋ถ์์ ์ถํํ๊ณ ์์ต๋๋ค.
SRI ๊ณผ์ ์ ๋ด์ญ์ ์ถ์ ํ๋ฉด ํด๋ง๋ค ์ฐ๋ฆฌ๋ ํ๋ก๊ทธ๋๋จธ๋ฅผ ์ํ ์ธ ๊ฐ์ง ์ค์ํ ๊ธฐ์ ์ ํ
์คํธํ์ต๋๋ค.
- ๊ณต๋ค์ฌ ๋์ดํ ๊ฒ. ๋ชจ๋ ๊ฐ๋ฐ์๋ ๋ ์ด์์์ ํ ์ ์์ด์ผ ํฉ๋๋ค. ํ ์ ์ฒด๋ฅผ ์ํด ๋์์ธํ๋ Seryozha ์ผ์ด์ด ์๊ณ ์คํฌ๋ฆฝํธ๋ง ์์ฑํ๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋ชจ๋ ํ์์ ์กฐํ ๋ฐฉ๋ฒ์ ์ด๋ป๊ฒ ์๋์ง ๋ณด์ฌ์ฃผ์ด์ผ ํฉ๋๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ. ๋ฌธ์ ๊ฐ ๋ ์ด์์์๋ง ๊ตญํ๋๋ค๋ฉด ์ธํฐํ์ด์ค ๊ฐ๋ฐ ํ๊ต๊ฐ ์๋๋ผ ๋ ์ด์์ ๋์์ด๋ ํ๊ต๊ฐ ์์ ๊ฒ์ ๋๋ค. ์๋ฆ๋ต๊ฒ ๋์์ธ๋ ์ธํฐํ์ด์ค๊ฐ ๋ถํํด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ํญ์ JS์ ๊ณผ์ ๊ฐ ์์ง๋ง ๋๋ก๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ณผ์ ์ด๊ธฐ๋ ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ด๋ฅผ ๋๋ฌด๋ ์ข์ํฉ๋๋ค.
- ๋ฌธ์ ํด๊ฒฐ์ ์๋ง๋ ๊ฐ๋ฐ์์ ๊ฐ์ฅ ์ค์ํ ๊ธฐ์ ์ผ ๊ฒ์ ๋๋ค. ์ธํฐํ์ด์ค ์์ฑ๊ณผ ๊ด๋ จํ์ฌ ์ํฉ์ ๋งค์ฐ ๋น ๋ฅด๊ฒ ๋ณํํ๊ณ ์์ต๋๋ค. ๋ฃจ์ด์ค ์บ๋ด์ ๋ง๊ณผ ๊ฐ์ต๋๋ค. "๊ฐ์ ์๋ฆฌ์ ๋จธ๋ฌผ๋ ค๋ฉด ์ต๋ํ ๋นจ๋ฆฌ ๋ฌ๋ ค์ผ ํ๊ณ , ๋ค๋ฅธ ๊ณณ์ผ๋ก ๊ฐ๋ ค๋ฉด ๋ ๋ฐฐ ๋ ๋นจ๋ฆฌ ๋ฌ๋ ค์ผ ํฉ๋๋ค." ์ฐ๋ฆฌ๋ ๋งค์ผ ์๋ก์ด ๊ธฐ์ ์ ์ ํ๊ฒ ๋ฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ด๋ฅผ ๊ณ ๋ คํ๊ณ ์ดํดํ ์ ์์ด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ์ธ ๋ฒ์งธ ๊ณผ์ ์์๋ ์ด๋ณด ๊ฐ๋ฐ์๊ฐ ์ผ๋ฐ์ ์ผ๋ก ์ต์ํ์ง ์์ ๊ธฐ์ ์ ๋ํ ์ดํด๋ฅผ ์ ์ํ์ต๋๋ค.
๊ฐ ์์ ์ ๋ถ์ํ๋ฉด์ ์ฌ๋ฐ๋ฅธ ์ ์ฐจ๋ฟ๋ง ์๋๋ผ ํํ ๋ฐ์ํ๋ ์ค์์ ๋ํด์๋ ์๋ ค๋๋ฆฝ๋๋ค.
์์ 1: ํฌํธํด๋ฆฌ์ค
์ฒซ ๋ฒ์งธ ์์ ์ ๋ ์ด์์ ๋ฐฉ๋ฒ์ ์๊ณ ์๋ Yandex.Collections ๋์์ด๋ Alexey Cherenkevich์ ๊ทธ์ ์๋น์ค ๋๋ฃ์ธ ์ธํฐํ์ด์ค ๊ฐ๋ฐ์ Sergey Samsonov๊ฐ ์ํํ์ต๋๋ค.
์กฐ๊ฑด
ํฌํธํด๋ฆฌ์ค ์น์ฌ์ดํธ๋ฅผ ๋ง๋์ธ์: ์์ ๊ณผ ํ์ , ํ๊ต์ ๋ํ ๊ธฐ๋์ ๋ํด ์๋ ค์ฃผ์ธ์. ์ฌ์ดํธ๋ ์ ์๋ ๋ ์ด์์๊ณผ ์ต๋ํ ์ผ์นํด์ผ ํฉ๋๋ค(๋ ์ด์์ ๋งํฌ:
1000px ,600px ,320px ,์ฌ์ ). ์ฐ๋ฆฌ๋ ๋ ์ด์์์๋ง ๊ด์ฌ์ด ์์ผ๋ฏ๋ก JavaScript๋ฅผ ์ฌ์ฉํ์ง ๋ง์ญ์์ค.ํ์ธํ ๋ ๋ค์ ์ฌํญ์ ๊ณ ๋ คํฉ๋๋ค.
- ๋ค์ฌ์ฐ๊ธฐ ํฌ๊ธฐ, ์์ ์ ํ์ฑ, ๊ธ๊ผด ์คํ์ผ, ๊ธ๊ผด ํฌ๊ธฐ;
- ์๋ฏธ๋ก ์ ๋ ์ด์์;
- ๋ค์ํ ์ํ์ ์์ ์กด์ฌ: ์ปค์๋ฅผ ๊ฐ๋ฆฌํค๋ฉด ๋ฒํผ๊ณผ ๋งํฌ ํ์, ํ์ฑ ์ ๋ ฅ ํ๋ ๊ฐ์กฐ ํ์ ๋ฑ
- ๋ธ๋ผ์ฐ์ ๊ฐ ํธํ์ฑ(์ธ๊ธฐ ๋ธ๋ผ์ฐ์ ์ ์ต์ ๋ฒ์ ์์ ํ ์คํธ๋จ)
์ฅ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ต์ CSS ์๋ฃจ์ ์ฌ์ฉ: flexbox, ๊ทธ๋ฆฌ๋ ๋ฑ
- ์ ์ํ ๋ ์ด์์
- ์ ์ฒ๋ฆฌ๊ธฐ ๋ฐ/๋๋ ํ์ฒ๋ฆฌ๊ธฐ ์ฌ์ฉ, ์กฐ๋ฆฝ, ์ถ์, ์ถ๋ ฅ ์ฝ๋ ์ต์ ํ
- HTML ์์ ์ ํจ์ฑ ๊ฒ์ฌ, ์์ํ๋ ํ์ผ ์ ๋ก๋ ๋ฒํผ.
์์ ์ด ์๋นํ ๋ฐฉ๋ํ๋ฏ๋ก ์๋ํ์ง ์๋ ์์ ์ ๊ฑด๋๋ธ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ ์๊ฐ ์ฝ๊ฐ ๋ฎ์์ง์ง๋ง ์ฌ์ ํ ์ง์์ ์ ์ฆํ ์ ์์ต๋๋ค. ์๋ฃ๋๋ฉด ๊ทํ์ ํฌํธํด๋ฆฌ์ค์ GitHub์ ์์ค ์ฝ๋์ ๋ํ ๋ ๊ฐ์ ๋งํฌ๋ฅผ ๋ณด๋ด์ฃผ์ญ์์ค.
๊ณผ์ ์์ ์ ์ํ ๋ ์ด์์์ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ, ํ๋ธ๋ฆฟ, ๋ฐ์คํฌํฑ์ ํ๋ฉด๋ฟ๋ง ์๋๋ผ ์ค์ ์ฌ์์๋ ๋ง์ถฐ์ ธ ์์์ต๋๋ค.
์ฒซ ๋ฒ์งธ ์์ ํ์ธ ๊ฒฐ๊ณผ์ ์ต๋ํ ๊ฐ๊ด์ฑ์ ๋ถ์ฌํ๊ธฐ ์ํด ์ด๋ฒ ํ์ธ์๋ ๋ง์ ๊ธฐ์ค์ด ์์์ต๋๋ค.
๊ธฐ์ค
๋์์ธ๋ ์น์ฌ์ดํธ. ์ด๊ฒ์ ๋น์ฐํ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ์ด๋ค ์ฌ๋๋ค์ ์๊ฐ์ ์ ์ฝํ๊ณ ์ถ์๊ฑฐ๋ ํ ์ ์์๊ธฐ ๋๋ฌธ์ ์ผ๋ถ ๋ธ๋ก์ ์์ ํ ๊ฑด๋๋ฐ์์ต๋๋ค. ๋ ์ด์์์ ๋๋ต ๋ค ๊ฐ์ง ๊ธฐ๋ณธ ํ๋ฉด์ผ๋ก ๋๋ ์ ์์ต๋๋ค. ์๋ฐํ๊ฐ ํฌํจ๋ ๊ธฐ๋ณธ ํ๋ฉด, SRI์ ๊ธฐ๋ ์ฌํญ ๋ชฉ๋ก์ด ํฌํจ๋ ๋ธ๋ก, ํฌํธํด๋ฆฌ์ค๊ฐ ํฌํจ๋ ๋ธ๋ก, ์ฐ๋ฝ์ฒ ์ ๋ณด๊ฐ ํฌํจ๋ ๋ธ๋ก์ ๋๋ค. ์น์ ์ผ๋ก ๋ง๋ค ์๋ ์๊ณ ๊ฐ๋จํ div๋ฅผ ์ฌ์ฉํ์ฌ ๋ง๋ค ์๋ ์์ต๋๋ค. ๊ฐ์ฅ ์ค์ํ ์ ์ ๋ค ๊ฐ์ ๋ธ๋ก์ ๋ชจ๋ ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
๋ ์ด์์๊ณผ ๋ ์ด์์ ์ค์. ๋์์ด๋๋ ์์์๊ฐ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๋ณ๋์ ์ฌ์(์์, ํ์ดํฌ๊ทธ๋ํผ, ๋ฒํผ ์ํ ๋ฑ)์ ๋ง๋ค์์ต๋๋ค. ํ๋จ์๋ ์ฒซ ํ๋ฉด์ ๋ค์ฌ์ฐ๊ธฐ์ ๊ธฐ๋ฅ์ ๋ํ ํํธ๊ฐ ์์์ต๋๋ค. ๋์์ด๋์ ๋ชจ๋ ์๊ตฌ ์ฌํญ์ ๊ณ ๋ คํ ์ง์๋ค์ด ๋งค์ฐ ๊ธฐ๋ปค์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ฒซ ๋ฒ์งธ ํ๋ฉด์ ๋ทฐํฌํธ ๋์ด ์ด์์ด์ด์ผ ํ์ต๋๋ค.
์ ์ํ ๋ ์ด์์ - ์ด๊ฒ์ ์ธ ๊ฐ์ง ํด์๋์์ ๋ ์ด์์์ ๋ชจ๋ ๊ฒ์ด ํฝ์ ๋จ์๊ฐ ๋๋๋ก ์ธํฐํ์ด์ค๊ฐ ๋จ์ง ๋ ์ด์์๋์ง ์์ ๊ฒฝ์ฐ์ ๋๋ค. ์ค๊ฐ ์ํ์์๋ ๋ ์ด์์์ด ๋ฌด๋์ ธ์๋ ์ ๋ฉ๋๋ค. ์ผ๋ถ๋ ์ปจํ ์ด๋์ ์ต๋ ๋๋น๋ฅผ ์ ํํ๊ณ ๋ชจ๋ ๊ฒ์ 1920ํฝ์ ๋ก ์ค์ ํ๋ ๊ฒ์ ์์ด๋ฒ๋ ธ๊ณ , ์ผ๋ถ๋ ๋ฐฐ๊ฒฝ์ ์๋ง์ผ๋ก ๋ง๋ค์์ง๋ง ์ ๋ฐ์ ์ผ๋ก ํ๋ณด์๋ค์ ์ด ์์ ์ ์ ๋์ฒํ์ต๋๋ค.
์๋ฏธ๋ก ์ ๋ ์ด์์. ๋งํฌ๊ฐ , ๋ฒํผ โ ์ผ๋ก ๋์์ธ๋์ด์ผ ํ๋ค๊ณ โ๊ทธ๋ค์ ์ธ์์ ๋ช ๋ฒ์ด๋ ๋งํ์ต๋๊น?โ ๋คํํ๋ ๋๋ถ๋ถ์ ์ง์์๋ค์ด ์ด ์๊ตฌ ์ฌํญ๋ ์ถฉ์กฑํ์ต๋๋ค. SRI์ ๊ธฐ๋์ ๋ชจ๋๊ฐ ์จ๊ฒจ์ง ๋ชฉ๋ก์ ์ธ์ํ์ง๋ ๋ชปํ์ฌ div ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ง๋ค์์ง๋ง ๊ทธ๋ค์ง ๋์์ง๋ ์์ต๋๋ค. ํ์ํ ๋ถ๋ถ๊ณผ ํ์ํ์ง ์์ ๋ถ๋ถ ๋ฑ ์์ ์ด ์๊ณ ์๋ ๋ชจ๋ ์๋ฏธ ํ๊ทธ๋ฅผ ์ฝ์ ํ ํ๋ณด์๊ฐ ์์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ชฉ๋ก ๋์ - ๋ฐ . ๊ฒฐ๊ตญ ์๋ฏธ๋ก ์ ํ์ด์ง ๊ตฌ์ฑ๊ณผ ๊ฐ ๋ธ๋ก์ ๋ชฉ์ (๋๋ถ๋ถ์ ์ฌ๊ธฐ์์ ๊ด๋ฆฌํจ), ์ ์ฒ๋ฆฌ๊ธฐ ๋ฐ/๋๋ ํ์ฒ๋ฆฌ๊ธฐ(๋ช๋ช์ ์ฌ๊ธฐ์์ ๊ด๋ฆฌํ์ง๋ง)์ ์ฌ์ฉ์ ์ดํดํ๋ ๊ฒ์ ๋๋ค. ๋ํ ์์ ์ด ์์์ต๋๋ค. ๋๋ถ๋ถ less ๋ฐ scss๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
์๋ํ๋ ์ฌ๋ผ์ด๋. ๊ณผ์ ์์ JS๋ฅผ ์ฌ์ฉํ ์ ์๋ค๊ณ ์ผ์ต๋๋ค. ์ฌ๊ธฐ์์ ๋ฌธ์ ํด๊ฒฐ ๋ฅ๋ ฅ์ด ํ
์คํธ๋์์ต๋๋ค. ์ฌ๋ฌ ๊ฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ผ์ด๋๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ . ๋ชจ๋ ๋ง๋ฒ์ ์ ํ๊ธฐ ์์ค #button-N:checked ~ .slider-inner .slider-slides์์ ๋ฐ์ํฉ๋๋ค. ์
๋ ฅ ์ฒดํฌ๋ฐ์ค ์ค ํ๋๋ฅผ ํด๋ฆญํ๋ฉด ์ฒดํฌ๋ ์ํ๊ฐ ๋ฉ๋๋ค. ์ด๋ฅผ ํ์ฉํ์ฌ ์ฌ๋ผ์ด๋๊ฐ ํฌํจ๋ ์ปจํ
์ด๋์ ํ์ํ ๋ฒ์ญ์ ํ ๋นํ ์ ์์ต๋๋ค: ๋ณํ: ๋ฒ์ญ(-33%). ์ฌ๋ผ์ด๋์ ๊ตฌํ์ ๋ณผ ์ ์์ต๋๋ค.
๋๋กญ๋ค์ด ๋ชฉ๋ก. ์ฌ๊ธฐ์ ๋ชจ๋ ๊ฒ์ด ๋ด๋ ค์ก์ต๋๋ค. ์ ์ฌํ ์ ํ๊ธฐ: .accordion-item input:checked ~ .accordion-item__content. ๊ตฌํ๋ ๋ชจ์ต์ ๋ณผ ์ ์์ต๋๋ค
:hover, :active ๋ฐ :focu* ์ํ์ ๊ฐ์ฉ์ฑ. ๋งค์ฐ ์ค์ํ ์ ์ ๋๋ค. ์ธํฐํ์ด์ค์์ ์ํธ ์์ฉ ์ค ํธ์ํจ์ ์ด์ ๋ฌ๋ ค ์์ต๋๋ค. ์ฌ์ฉ์๋ ํญ์ ์์ ์ ํ๋์ ๋ํ ํผ๋๋ฐฑ์ ๋ฐ์์ผ ํฉ๋๋ค. ์ด ํญ๋ชฉ์ ์ค๋ฌธ์ง์์ ์ํธ์์ฉ ์ ๋ฐ์ ๊ฑธ์ณ ํ์ธ๋์์ต๋๋ค. "์ ํํ๊ธฐ" ๋ฒํผ์ ํด๋ฆญํ๋๋ฐ ์๊ฐ์ ์ผ๋ก ์๋ฌด ์ผ๋ ์ผ์ด๋์ง ์์๋ค๋ฉด(์์ฒญ์ด ์ ์ก๋์์์๋ ๋ถ๊ตฌํ๊ณ ) ์ด ๋ฒํผ์ ๊ณ์ํด์ ํด๋ฆญํ๊ฒ ๋๋ฏ๋ก ์ด๋ ์๋ชป๋ ๊ฒ์ ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก XNUMX๊ฐ์ ์์ฒญ์ด ์ ์ก๋๊ณ XNUMX๋ฒ์ ํ์ ์ ๋ฐ๊ฒ ๋ฉ๋๋ค. ๋ชจ๋ฐ์ผ ์ฅ์น์๋ ๋ง์ฐ์ค๊ฐ ์๋ค๋ ์ ์ ์์ด์๋ ์ ๋ฉ๋๋ค. ์ด๋ ๋ง์ฐ์ค ์ค๋ฒ๊ฐ ์์ด์ผ ํจ์ ์๋ฏธํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ฏธ๋ก ์ ๋ํ ์์ ์ ์ถฉ์กฑํ ์ฌ๋๋ค์๊ฒ ์ํฅ์ ๋ฏธ์น์ง ์์ ๋ ํ๋์ ์์ ์ ๋๋ค. ์ปจํธ๋กค์ด ๋ํํ ์์๊ฐ ์๋ ๊ฒฝ์ฐ ์ปจํธ๋กค ์๋ก ๋ง์ฐ์ค๋ฅผ ๊ฐ์ ธ๊ฐ๋ฉด ์ปค์๊ฐ ํ์ค์ผ๋ก ์ ์ง๋ฉ๋๋ค. hover์ ๋ํ ๋ฐ์์ ์์ฑํ์์๋ ๋ถ๊ตฌํ๊ณ ๋งค์ฐ ์ด์์ ํด ๋ณด์ ๋๋ค. ์ปค์๋ฅผ ๊ณผ์ํ๊ฐํ์ง ๋ง์ธ์: ํฌ์ธํฐ.
์ ๋๋ฉ์ด์ . ์์์ ํจ๊ป ๋ฐ์ํ๋ ๋ชจ๋ ๋ฐ์์ด ์ํํ๊ฒ ์งํ๋๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ธ์์์ ์๊ฐ์ ์ธ ๊ฒ์ ์๊ธฐ ๋๋ฌธ์ ๋ง์ฐ์ค ์ค๋ฒ ๋ฐ ํ์ฑ ์ํ์์ ์ ํํ๋ ๊ฒ๋ง์ผ๋ก๋ ์ธํฐํ์ด์ค๋ฅผ ๋์ฑ ์ฆ๊ฒ๊ฒ ๋ง๋ค ์ ์์์ต๋๋ค. ์, ์ฌ๋ผ์ด๋์ ๋ชฉ๋ก์ ์ ๋๋ฉ์ด์ ์ ์ ์ฉํ ์ฌ๋๋ค์ ์ผ๋ฐ์ ์ผ๋ก ํ๋ฅญํฉ๋๋ค.
์ต์ ๊ธฐ์ ์ฌ์ฉ. ๋ง์ ์ฌ๋๋ค์ด flex๋ฅผ ์ฌ์ฉํ์ง๋ง ๊ทธ๋ฆฌ๋๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์ ์๋ฃํ ์ฌ๋์ ์๋ฌด๋ ์์์ต๋๋ค. flex๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉ๋๋ฉด ํฌ์ธํธ๊ฐ ๊ณ์ฐ๋ฉ๋๋ค. ์ด๋ฌํ ์ ์ฐ์ฑ์ผ๋ก ์ธํด ๋ ์ด์์์ด ์ด๋๊ฐ์์ ๋ถ๋ฆฌ๋ ๊ฒฝ์ฐ ์์ฝ๊ฒ๋ ์ถ๊ฐ ํฌ์ธํธ๋ฅผ ๋ฐ์ง ๋ชปํ์ต๋๋ค.
์์ ๊ฒ์ฆ. ํ์ํ ๊ฒ์ ์์์ ๊ฐ ์ ๋ ฅ์ ํ์ ์์ฑ์ ์ถ๊ฐํ๋ ๊ฒ๋ฟ์ด์์ต๋๋ค. ์ด๋ฉ์ผ ํญ๋ชฉ์ ์ด๋ฉ์ผ๋ก ์ธ์ฆํด์ฃผ์ ๋ถ๋ค๊ป ํฌ์ธํธ๋ฅผ ์ถ๊ฐํ์์ต๋๋ค.
ํ์ผ ์ ๋ก๋ ๋ฒํผ ์คํ์ผ ์ง์ . ์ฐ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ ์กฐํฉ์ ๋ณผ ๊ฒ์ผ๋ก ์์ํ์ต๋๋ค. ํ์ผ์ ์ ํํฉ๋๋ค . ๋ค์์ผ๋ก ์ ๋ ฅ์ ์จ๊ธฐ๊ณ ๋ ์ด๋ธ์ ์คํ์ผ์ ์ง์ ํด์ผ ํ์ต๋๋ค. ๋ ๋ค๋ฅธ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ํฌ๋ช ํ ์ ๋ ฅ์ ๋ง๋ค์ด ๋ฒํผ ์์ ๋๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์คํ์ผ ์ง์ ์ ํ์ฉํ๋ ๊ฒ์ ์๋๋๋ค. , ์ด๋ฌํ ์๋ฃจ์ ์ ์์ ํ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ๋ผ๊ณ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ผ๋ฒจ์ ๋ง๋๋ ๊ฒ์ด ์๋ฏธ์ ๋ ์ ํํฉ๋๋ค.
๋ธ๋ผ์ฐ์ ๊ฐ ํธํ์ฑ. ์ฐ๋ฆฌ๋ ๋ ๊ฐ์ง ์ต์ ๋ฒ์ ์ ์ต์ ๋ธ๋ผ์ฐ์ (IE๊ฐ ์๊ณ ์ฐธ๊ฐ์๋ค์ ์ด์ด ์ข์์)์ iPhone์ Safari ๋ฐ Android์ Chrome์์ ๋ชจ๋ ๊ฒ์ด ๊ด์ฐฎ์์ง ํ์ธํ์ต๋๋ค.
๋ฐ๋๋ก ๋๊ตฐ๊ฐ๊ฐ JS๋ Bootstrap์ ์ฌ์ฉํ๋ฉด ์ ์๊ฐ ์ฐจ๊ฐ๋ฉ๋๋ค. ๋ ๋ค ์ ์ฒด ์์ ์ ๋ชฉ์ ์ ๋ฌด๋๋จ๋ฆฌ๊ฒ ๋ฉ๋๋ค. ๋ํ Bootstrap ์ฐธ๊ฐ์๋ ๋ง์ด๋์ค๋ฅผ ๋ฐ์์ ๋ฟ๋ง ์๋๋ผ ์๋ฏธ ๋ฐ ๊ตฌํ ์์์ ๋ํด์๋ ๋ง์ ์ ์๋ฅผ ์์์ต๋๋ค.
์ธํฐ๋ท ์ด๋๊ฐ์ ์ฌ์ดํธ๋ฅผ ํธ์คํ ํ ์ฌ๋๋ค์ ํน๋ณํ ์ด์ ์ ์ป์ง ๋ชปํ์ง๋ง ๋ฆฌ๋ทฐ์ด๋ค์ ์ ์ฅ์๋ฅผ ๋ค์ด๋ก๋ํ์ฌ ์ปดํจํฐ์์ ๋ก์ปฌ๋ก ์คํํ ํ์๊ฐ ์์ด์ ๋งค์ฐ ๊ธฐ๋ปค์ต๋๋ค. ๊ทธ๋์ ์ด๊ฒ์ ์นด๋ฅด๋ง์ ํ๋ฌ์ค ์ญํ ์ ํ์ต๋๋ค.
์ฒซ ๋ฒ์งธ ์์ ์ ์ฃผ๋ก ํ์์๊ฒ ๋งค์ฐ ์ ์ฉํ์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ์๋ฝํ์ง ์์ ์ฌ๋๋ค์ ์ด์ ์ค๋น๋ ์ด๋ ฅ์๋ฅผ ๊ฐ๊ฒ ๋ฉ๋๋ค. ๋ชจ๋ ์๋ต์ ์๋์ค๋ฝ๊ฒ ์ฒจ๋ถํ๊ฑฐ๋ gh-ํ์ด์ง์ ๊ฒ์ํ ์ ์์ต๋๋ค.
์์ 2: ์ด์ก ๊ฒฝ๋ก
์ด ์์ ์ ์์ฑ์๋ ๊ฒ์ ์ธํฐํ์ด์ค ๊ทธ๋ฃน Denis Balyko์ ์ฑ ์์์ ๋๋ค.
์กฐ๊ฑด
๋ณ ์ง๋๊ฐ ์๋์? ๊ฐ ๋ณ์ ์ด๋ฆ์ ๋ฌผ๋ก , ํด๋น ๋ณ์์ ๋ค๋ฅธ ๋ณ๊น์ง์ ๊ฑฐ๋ฆฌ๋ ๊ด์ด ๋จ์๋ก ํ์๋ฉ๋๋ค. ์ธ ๊ฐ์ง ์ธ์๋ฅผ ์ทจํด์ผ ํ๋ ์๋ฃจ์ ํจ์๋ฅผ ๊ตฌํํฉ๋๋ค. ํค๊ฐ ๋ณ์ ์ด๋ฆ์ด๊ณ ๊ฐ์ด ๋ณ๊น์ง์ ๊ฑฐ๋ฆฌ(์ฐ์ฃผ์์์ ์ผ๋ฐฉํฅ ๊ตํต)์ธ ๊ฐ์ฒด์ ๋ณ์ ์ด๋ฆ์ ๋๋ค. ๊ฒฝ๋ก์ ์์์ ๊ณผ ๋์ - ๊ฐ๊ฐ ์์๊ณผ ๋. ์ด ํจ์๋ ์์ ๋ณ์์ ๋ ๋ณ๊น์ง์ ์ต๋จ ๊ฑฐ๋ฆฌ์ ๋ฐ๋ผ์ผ ํ ๊ฒฝ๋ก๋ฅผ ๋ฐํํด์ผ ํฉ๋๋ค.
๊ธฐ๋ฅ ์๋ช :
const solution = function(graph, start, finish) { // ะะฐัะต ัะตัะตะฝะธะต }
์ ๋ ฅ ๋ฐ์ดํฐ ์์:
const graph = { start: { A: 50, B: 20 }, A: { C: 40, D: 20 }, B: { A: 90, D: 90 }, C: { D: 160, finish: 50 }, D: { finish: 20 }, finish: {} }; const start = 'start'; const finish = 'finish';
์์ ์ถ๋ ฅ:
{ distance: 90, path: ['start', 'A', 'D', 'finish'] }
์ฐธ๊ณ : ์๋ฃจ์ ์ค์ผ๋ ํค์ src/ ํด๋์ ์์ต๋๋ค. ์๋ฃจ์ ์ Solution.js์ ๋ฃ์ผ์ธ์.
๋ ๋ฒ์งธ ์์ ์ ๊ฒ์ฆ์ ๊ฐ์ฅ ์๋ํ๋๊ณ ๊ฐ๊ด์ ์ด์์ต๋๋ค. ๋๋ถ๋ถ์ ์ฌ๋๋ค์ Dijkstra์ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๋ ๊ฒ์ด ํ์ํ๋ค๊ณ ์ถ์ธกํ์ต๋๋ค. ์ค๋ช ์ ์ฐพ์๋ด๊ณ ์๊ณ ๋ฆฌ์ฆ์ JS๋ก ๊ตฌํํ ๋ถ๋ค์ ์๊ณ ํ์ จ์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ๊ณผ์ ๋ฅผ ํ์ธํด ๋ณด๋ ๊ฐ์ ์ค๋ฅ๊ฐ ์๋ ๋ ผ๋ฌธ์ด ๋ง์ด ๋ณด์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ธํฐ๋ท์์ ์ฝ๋ ์กฐ๊ฐ์ ๊ฒ์ํ์ฌ ์ฐธ๊ฐ์๋ค์ด ์๊ณ ๋ฆฌ์ฆ์ ๋ณต์ฌํ ๊ธฐ์ฌ๋ฅผ ์ฐพ์์ต๋๋ค. ๋ง์ ์ฌ๋๋ค์ด ์์ฑ์์ ์๊ฒฌ๊ณผ ํจ๊ป ๊ธฐ์ฌ์ ์ฝ๋๋ฅผ ๋ณต์ฌํ๋ค๋ ๊ฒ์ด ์ฌ๋ฐ์ต๋๋ค. ์ด๋ฌํ ์ํ์ ๋ฎ์ ์ ์๋ฅผ ๋ฐ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ด๋ค ์ถ์ฒ์ ์ฌ์ฉ๋ ๊ธ์งํ์ง ์์ง๋ง, ์ฐ๋ฆฌ๋ ์ฌ๋์ด ์์ ์ด ์ด ๋ด์ฉ์ ํ๊ตฌํ๊ธฐ๋ฅผ ์ํฉ๋๋ค.
๊ธฐ์ค
ํ ์คํธ์ ๋ํ ์ฃผ์ ํฌ์ธํธ๊ฐ ๋ถ์ฌ๋์์ต๋๋ค. ๋๋ก๋ ์ฌ๋๋ค์ด ์ ์ฅ์๋ฅผ ์กฐ์ํ๊ณ ํด๋ ์ด๋ฆ์ ๋ฐ๊พธ๋ฉฐ ํ์ํ ํ์ผ์ ์ฐพ์ ์ ์๋ค๋ ์ด์ ๋ง์ผ๋ก ํ ์คํธ๊ฐ ์คํจํ ๊ฒ์ด ๋ถ๋ช ํ์ต๋๋ค. ์ฌํด ์ฐ๋ฆฌ๋ ๊ทธ๋ฐ ์ฌ๋๋ค์ ๋์ฐ๋ ค๊ณ ๋ ธ๋ ฅํ๊ณ ๊ทธ๋ค์ ์ํด ๋ชจ๋ ๊ฒ์ ์ ์๋ฆฌ๋ก ๋๋๋ ค ๋์์ต๋๋ค. ํ์ง๋ง ๋ด๋ ์๋ ์ฝํ ์คํธ ์์คํ ์ผ๋ก ์ ํํ ๊ณํ์ด๊ณ , ์ด๋ ๋ ์ด์ ์ฉ์๋์ง ์์ ๊ฒ์ ๋๋ค.
๋ํ "์ธ๊ฐ", ์๋ ๊ธฐ์ค๋ ์์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋จ์ผ ์ฝ๋ ์คํ์ผ์ด ์์ต๋๋ค. ๊ณต๋ฐฑ ๋์ ํญ์ ์ฌ์ฉํด๋ ์ ์๊ฐ ์ฐจ๊ฐ๋์ง ์์ผ๋ฉฐ ๊ทธ ๋ฐ๋๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. ์๋ ค์ง ๊ท์น์ ๋ฐ๋ผ ์์๋ฐ์ดํ๋ฅผ ํฐ๋ฐ์ดํ๋ก ๋ฐ๊พธ๊ณ ์ธ๋ฏธ์ฝ๋ก ์ ๋ฌด์์๋ก ๋ฐฐ์นํ๋ ๊ฒ์ ๋ ๋ค๋ฅธ ๋ฌธ์ ์ ๋๋ค.
์๋ฃจ์ ์ ๋ช ํ์ฑ๊ณผ ๊ฐ๋ ์ฑ์ ๋ณ๋๋ก ๊ณ ๋ ค๋์์ต๋๋ค. ์ธ๊ณ์ ๋ชจ๋ ์ปจํผ๋ฐ์ค์์๋ ํ๋ก๊ทธ๋๋จธ์ ์ง์ ์ค 80%๊ฐ ๋ค๋ฅธ ์ฌ๋์ ์ฝ๋๋ฅผ ์ฝ๋ ๊ฒ์ด๋ผ๊ณ ๋งํฉ๋๋ค. ํ์๋ค๋ ํ๋ ์ดํฐ์ ์๋ก์ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ์ต๋๋ค. ๊ทธ๋์ ์ด ๊ธฐ์ค์ ์๋นํ ๋น์ค์ ์ฐจ์งํ์ต๋๋ค. ํ ๊ธ์ ์ด์์ ๋ณ์๊ฐ ์๋ ์ํ๋ ์์ผ๋ ๊ทธ๋ฌ์ง ๋ง์ธ์. Stella Chang์ ์๊ฒฌ๊ณผ ๋์ผํ ์๊ฒฌ์ ์ ์ธํ๋ฉด ์ฐธ๊ฐ์๋ค์ ์๊ฒฌ์ ๋งค์ฐ ๊ณ ๋ฌด์ ์ด์์ต๋๋ค.
๋ง์ง๋ง ๊ธฐ์ค์ ์๋ ํ ์คํธ์ ์กด์ฌ์ ๋๋ค. ์์์ ์ฌ๋๋ค๋ง์ด ๊ทธ๊ฒ์ ์ถ๊ฐํ์ง๋ง ๋ชจ๋ ์ฌ๋์๊ฒ ๊ทธ๊ฒ์ ์นด๋ฅด๋ง์ ํฐ ํ๋ฌ์ค๊ฐ ๋์์ต๋๋ค.
์ฌ๋ฐ๋ฅธ ์๋ฃจ์ :
const solution = function(graph, START, FINISH) {
// ะัั ะฝะต ะฑะตัะฟะปะฐัะฝะพ ะฒ ััะพะผ ะผะธัะต
const costs = Object.assign({[FINISH]: Infinity}, graph[START]);
// ะะตัะฒะฐั ะฒะพะปะฝะฐ ัะพะดะธัะตะปััะบะธั
ะฝะพะด
const parents = { [FINISH]: null };
Object.keys(graph[START]).reduce((acc, child) => (acc[child] = START) && acc, parents)
const visited = [];
let node;
// ะัะตะผ ยซะดะตััะฒะพะณะพยป ัะพะดะธัะตะปั, ะพัะผะตัะฐะตะผ ะฟัะพะนะดะตะฝะฝัะต
do {
node = lowestCostNode(costs, visited);
let children = graph[node];
for (let n in children) {
let newCost = costs[node] + children[n];
// ะัั ะฝะต ะพัะตะฝะตะฝะฐ ะธะปะธ ะฝะฐััะปัั ะฑะพะปะตะต ะดะตััะฒัะน ะฟะตัะตั
ะพะด
if (!costs[n] || costs[n] > newCost) {
costs[n] = newCost;
parents[n] = node;
}
}
visited.push(node);
} while (node)
return {
distance: costs[FINISH],
path: optimalPath(parents)
};
// ะะพะทะฒัะฐั ะฝะฐะทะฐะด ะฟะพ ัะฐะผัะผ ยซะดะตััะฒัะผยป ัะพะดะธัะตะปัะผ
function optimalPath(parents) {
let optimalPath = [FINISH];
let parent = parents[FINISH];
while (parent && parent !== START) {
optimalPath.push(parent);
parent = parents[parent];
}
optimalPath.push(START);
return optimalPath.reverse();
}
// ะะธะฝะธะผะฐะปัะฝะฐั ััะพะธะผะพััั ะธะท ัะตะบััะตะน ะฝะพะดั ััะตะดะธ ะฝะตะฟัะพัะผะพััะตะฝะฝัั
function lowestCostNode(costs, visited) {
return Object.keys(costs).reduce((lowest, node) => {
if (lowest === null || costs[node] < costs[lowest]) {
if (!visited.includes(node)) {
lowest = node;
}
}
return lowest;
}, null);
};
};
์์ 3: ์ด๋ฒคํธ ์บ๋ฆฐ๋
์ธํฐํ์ด์ค ๊ฐ๋ฐ์ Sergey Kazakov์ Alexander Podskrebkin์ด ์ค๋นํ์ต๋๋ค.
์กฐ๊ฑด
์ผ์ ์ ํ์ํ ๋ฏธ๋ ๋ฌ๋ ฅ์ ์์ฑํด ๋ณด์ธ์. ์ํ๋ ์ผ์ ์ ํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด 2019๋ ํ๋ก ํธ์๋ ์ปจํผ๋ฐ์ค ์ผ์ ์ ๋๋ค.
๋ฌ๋ ฅ์ ๋ชฉ๋ก์ฒ๋ผ ๋ณด์ฌ์ผ ํฉ๋๋ค. ๋ค๋ฅธ ๋์์ธ ์๊ตฌ ์ฌํญ์ ์์ต๋๋ค. ์ด๋ฒคํธ ์๋ฆผ์ 3์ผ, 7์ผ, 14์ผ ์ ์ ๋ฏธ๋ฆฌ ์ค์ ํ ์ ์์ต๋๋ค. ์ธํฐ๋ท์์ ์ฒ์ ๋ค์ด๋ก๋ํ ํ์๋ ์บ๋ฆฐ๋๊ฐ ์ด๋ฆฌ๊ณ ์คํ๋ผ์ธ์ผ๋ก ์๋ํด์ผ ํฉ๋๋ค.
์ ์ฉํ ์๋ฃ
ํ๋ก ํธ์๋ ์ปจํผ๋ฐ์ค ์ผ์ :
confs.tech/javascript?topics=javascript%2Bcss%2Bux ์๋น์ค ์์ ์:
๊ฐ๋ฐ์.mozilla.org/ru/docs/Web/API/Service_Worker_API/Using_Service_Workers
๊ฐ๋ฐ์.google.com/web/fundamentals/primers/service-workers ์๋ฆผ API:
๊ฐ๋ฐ์.mozilla.org/ru/docs/Web/API/Notifications_API
์ธ ๋ฒ์งธ ์์ ์ ํ ์คํธํ๊ธฐ์ ๊ฐ์ฅ ํฅ๋ฏธ๋ก์ ์ต๋๋ค. ๊ฐ๊ฐ ๊ณ ์ ํ ์๋ฃจ์ ์ด ๋๋ฌด ๋ง์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ฐ๋ฆฌ๋ ํ๋ณด์๊ฐ ์ต์ํ์ง ์์ ๊ธฐ์ ์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋์ง, ์ฆ ๊ทธ๊ฐ ์ฐ๊ตฌํ๋ ๋ฐฉ๋ฒ์ ์๊ณ ์๋์ง, ์์ ์ ์๋ฃจ์ ์ ํ ์คํธํ๋์ง ํ์ธํ์ต๋๋ค.
๊ธฐ์ค
์ ํ ๋ฌ๋ ฅ. ์, ์์ง ๋ฐฐ์น๊ฐ ํ์ํ์ต๋๋ค. ์กฐ๊ฑด์ ๋๋ฌด ๋ฌธ์ ๊ทธ๋๋ก ๋ฐ์๋ค์ด๊ณ CSS ์ฝ๋ ํ ์ค๋ ์ฝ์ ํ์ง ์๋ ์ฌ๋๋ค๋ ์์์ต๋๋ค. ๊ทธ๋ค์ง ๋งค๋ ฅ์ ์ด์ง๋ ์์์ง๋ง ๋ชจ๋ ๊ฒ์ด ์๋ํ๋ฉด ํฌ์ธํธ๊ฐ ์ค์ด๋ค์ง ์์์ต๋๋ค.
์์ค์์ ์ด๋ฒคํธ ๋ชฉ๋ก ๊ฐ์ ธ์ค๊ธฐ. ์ด๋ ๋ ์ด์์ ์์ ์ด ์๋๋ฏ๋ก ํฌํจ๋ ์ด๋ฒคํธ ๋ชฉ๋ก์ ๊ณ์ฐ๋์ง ์์ต๋๋ค. ์ธ์ ๋ ์ง ํ์๋ฅผ ์ทจ์ํ๊ฑฐ๋ ์ผ์ ์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์ ํ์๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. ๊ทธ๋์ ์ธ๋ถ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ณ , ๋ฐ์ JSON์ ๊ธฐ๋ฐ์ผ๋ก ๋ ์ด์์์ ๋ ๋๋งํ๋ ์์ ์ด ํ์ํ์ต๋๋ค. ์ด๋ค ๋ฐฉ์์ผ๋ก๋ (fetch ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ XMLHttpRequest๋ฅผ ์ฌ์ฉํ์ฌ) ๋ฐ์ดํฐ๋ฅผ ์ป๋ ๊ฒ์ด ์ค์ํ์ต๋๋ค. ์ด๋ค ์ฌ๋์ด ๊ฐ์ ธ์ค๊ธฐ์ฉ ํด๋ฆฌํ์ ์ถ๊ฐํ๊ณ ์ถ๊ฐ ์ ๋ณด์ ์์ ์ ์ ํ์ ํ์ํ ๊ฒฝ์ฐ ์ด๋ ํ๋ฌ์ค๋ก ๊ฐ์ฃผ๋์์ต๋๋ค.
์ค๋ฅ ์๋ ์๋น์ค ์์ปค ๋ฑ๋ก ์ฒซ ๋ฒ์งธ ๋ค์ด๋ก๋ ํ์๋ ์คํ๋ผ์ธ์ผ๋ก ์์
ํ ์ ์์ต๋๋ค.
์๋ฆผ์ ์ค์ ํ๋ ๊ธฐ๋ฅ๊ทธ๋์ ์ค์ ๋ก๋ 3, 7, 14์ผ ํ์ ์๋ํฉ๋๋ค. ์๋ฆผ API๋ฅผ ์ดํดํ๋ ๊ฒ์ด ํ์ํ์ต๋๋ค.
๋ฐํ ํ๋ฉด์ ์์ด์ฝ์ ๋ฐฐ์นํ๋ ๊ธฐ๋ฅ (PWA). ํ์ผ์ ์กด์ฌ๋ฅผ ํ์ธํ์ต๋๋ค
์ฝ๋ ์คํ์ผ ๋ฐ ํ๋ก์ ํธ ๊ตฌ์กฐ. ๋ ๋ฒ์งธ ์์ ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋จ์ผ ์ฝ๋ ์คํ์ผ์ ์ดํด๋ณด์์ต๋๋ค(๋น๋ก ์ฐ๋ฆฌ ์ฝ๋ ์คํ์ผ๊ณผ ์ผ์นํ์ง ์๋๋ผ๋). ์ด๋ค ์ฌ๋๋ค์ ๋ฆฐํฐ๋ฅผ ๋ง์ณค์ต๋๋ค. ์ ๋ง ์ข์ต๋๋ค.
์ฝ์ ์ค๋ฅ. ์ฝ์์ ๋ฌธ์ ๊ฐ ์๋ค๋ ํ์๊ฐ ์๊ณ ์ฐธ๊ฐ์๊ฐ ์ด์ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ด์ง ์์ ๊ฒฝ์ฐ ์ ์๊ฐ ์ฐจ๊ฐ๋ฉ๋๋ค.
๊ฒฐ๊ณผ
์ฐธ๊ฐ์๋ค์ ๊ฒฐ์ ์์ ์ฌ๋ฏธ์๋ ์ ์ ๋ฌด์์ ๋๊น?
- ํ ์ค๋ฌธ์ง์๋ ๋ค์๊ณผ ๊ฐ์ ํ ์คํธ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. โํ๋ก๊ทธ๋๋จธ ์น๊ตฌ๊ฐ ์ ๊ฐ React ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋๋ ๋ฐ ๋์์ ์ฃผ์์ต๋๋ค. ๋๋ ๊ทธ์๊ฒ ๋ฐฉ๋ฒ๊ณผ ์ด์ ์ ๋ํ ์ง๋ฌธ์ ํผ๋ถ์๊ณ ๊ทธ๋ ๋์๊ฒ ๋งํ์ต๋๋ค. ์ ๋ง ๋ง์์ ๋ค์์ด์. ๋ ์๊ณ ์ถ์ด์.โ ์ฐ๋ฆฌ๋ ์ด ์ง์์๋ฅผ ์จ ๋ง์์ ๋คํด ์์ํ๊ณ ์์์ง๋ง ์ํ๊น๊ฒ๋ ํ๋ณด์์ ์น๊ตฌ๋ ์ง์์๊ฐ ์๋ํ๋ ๋ฐ ๋ณ๋ก ๋์์ด ๋์ง ์์์ต๋๋ค.
- ํ ํ๋ณด์๋ RAR ์์นด์ด๋ธ๊ฐ ์๋ GitHub์ ๋ํ ๋งํฌ๋ฅผ ๋ณด๋์ต๋๋ค. ์ด์ ๋ํด ์ธ๊ธํ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค. ๐
- ๋ ๋ค๋ฅธ ํ๋ณด์๋ Solution.js ํ์ผ ์ฒซ ์ค์ ๋๊ธ์์ ์์ ์ด ์๊ณ ๋ฆฌ์ฆ์ ๋ณต์ฌํ๋ค๋ ์ฌ์ค์ ์์งํ๊ฒ ์ธ์ ํ๋ค.
76๋ช ์ ํ๋ณด์๋ก๋ถํฐ ์ง์์๋ฅผ ๋ฐ์ 23๋ช ์ ์ ๋ฐํ์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ฏผ์คํฌ๋ฟ๋ง ์๋๋ผ ๋ชจ์คํฌ๋ฐ, ์ํธํํ ๋ฅด๋ถ๋ฅดํฌ, ์ฌ์ง์ด ํํ๋ฅด์คํ์์๋ ์ค๋ฌธ์ง๋ฅผ ๋ณด๋์ต๋๋ค. ๊ทธ ์ค ์ผ๋ถ๋ ํ์ฌ ์ง์ ์ผ๋ก ์ธํด ์ฐ๋ฆฌ๋ฅผ ๋๋ผ๊ฒ ํ์ต๋๋ค. ๊ทธ ์ค ํ ๋ช ์ ๋ฒ์ํ ์ ๋ฌธ๊ฐ์ด๊ณ ๋ค๋ฅธ ํ ๋ช ์ ์๊ณผ๋ํ์์ด์์ต๋๋ค.
๊ทธ ๊ฒฐ๊ณผ ์์ ์๋ฃ ์ฑ๊ณต๋ฅ ์ ํฅ๋ฏธ๋ก์ด ๋ถํฌ๊ฐ ๋ํ๋ฌ์ต๋๋ค. ์ฐธ๊ฐ์๋ค์ ์ฒซ ๋ฒ์งธ ์์ ์ ํ๊ท 60%, ๋ ๋ฒ์งธ ์์ ์ 50%, ์ธ ๋ฒ์งธ ์์ ์ด ๊ฐ์ฅ ์ด๋ ค์ ํ๊ท 40% ์ ๋ ์๋ฃํ์ต๋๋ค.
์ธ๋ป ๋ณด๋ฉด ์์ ์ด ๋ณต์กํ๊ณ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค. ๊ทธ ์ด์ ๋ ๊ฐ๋ฅํ ํ ๋ง์ ํ๋ณด์๋ฅผ ์ ๊ฑฐํ๊ณ ์ถ๊ธฐ ๋๋ฌธ์ด ์๋๋๋ค. ๊ณต๋ถํ๋ ๋์ ํ์๋ค์ ์ฑํ ๋ง๋ค๊ธฐ, ์ด๋ฆฐ์ด๋ฅผ ์ํ Yandex.Music, ๋ ์จ์ ์์กดํ๋ ์ฌ๋๋ค์ ์ํ Yandex.Weather ๋ฑ ์ค์ ์์ ์ ์ง๋ฉดํ๊ฒ ๋ฉ๋๋ค. ์ด๋ฅผ ์ํด์๋ ์์ ๊ธฐ๋ฐ์ด ํ์ํฉ๋๋ค.
80๋ ์ SRI ์ ํ ๊ณผ์ ๋ฅผ ๋ณด๊ณ ์ ๋ ํ์ง ๋ชปํ ๊ฑฐ๋ผ๊ณ ์๊ฐํ๋ ๊ธฐ์ต์ด ๋ฉ๋๋ค. ์ด ์๊ฐ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ์์์ ์กฐ๊ฑด์์ฃผ์ ๊น๊ฒ ์ฝ๊ณ ์์ํ๋ ๊ฒ์ ๋๋ค. ์กฐ๊ฑด์ ์๋ฃจ์ ์ ๊ฑฐ์ XNUMX%๊ฐ ํฌํจ๋์ด ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ธ ๋ฒ์งธ ์์ (๊ฐ์ฅ ์ด๋ ค์ด ์์ )์ ์กฐ๊ฑด์์๋ MDN์ ์๋น์ค ์์ปค ๋ฐ ์๋ฆผ API์ ๋ํ ๋งํฌ๋ฅผ ์ถ๊ฐํ์ต๋๋ค. ๋งํฌ ๋ด์ฉ์ ๊ณต๋ถํ ํ์๋ค์ ์ด๋ ต์ง ์๊ฒ ์์ํ์ต๋๋ค.
์์ผ๋ก SRI ์
ํ์ ๊ณํํ๊ณ ์๋ ์ง์์, ๋ฏผ์คํฌ ํ๊ต์ ์
ํํ์ง ๋ชปํ ์ง์์, ๋ค๋ฅธ ์ํ ๊ณผ์ ๋ฅผ ์์ํ๋ ์ง์์๊ฐ ์ด ๊ธ์ ๊ผญ ์ฝ์์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค. ๋ณด์๋ค์ํผ ๊ทธ๋ ๊ฒ ํ๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค. ๋น์ ์ ์์ ์ ๋ฏฟ๊ณ ์ ์์ ๋ชจ๋ ์กฐ์ธ์ ๋ฃ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
์ถ์ฒ : habr.com