๐ ์ ํ๋ธ ๋๊ธ์์ ํ๊ตญ์ธ ์ฐพ๊ธฐ
- ์ด ๊ธ์ ๊ฐ์ธ์ ์ธ ๋ถ์์ด๋ฉฐ YouTube๊ฐ ์์ค ์ฝ๋๋ฅผ ๊ณต๊ฐํ๊ธฐ ์ ๊น์ง๋ ์ด ๊ธ์ ๊ฒ์ฆํ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์ด ์ ์ ๋ ํ์๊ณ ๊ธ์ ์ฝ์ด์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.

YouTube๋ ์ธ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ๋๊ธ์ ๋ณด๋ ๊ธฐ๋ฅ์ด ์๋ค. ์ด ๊ธ์ ๊ทธ ๋ถํธํจ์ ์กฐ๊ธ์ด๋๋ง ํด์ํ๊ธฐ ์ํด ๊ฐ๋ฐํ "YouTube ๋๊ธ ์ธ์ด ํํฐ"์ ์ํ, ๋ฒ ํ, ๊ทธ๋ฆฌ๊ณ ์ ์ ์ถ์ ๋ฒ์ ๊น์ง์ ๊ฐ๋ฐ ์ด์ผ๊ธฐ๋ฅผ ๋ด์๋ค.
anaclumos/youtube-comment-language-filter
- Chrome ๊ณ์ด ์ค์น ๋งํฌ (Chrome, Brave, Naver Whale, Microsoft Edge)
- Firefox ๊ณ์ด ์ค์น ๋งํฌ
0. ๊ตฌ์
ํ๋ฃจ๋ ๋ถํธํจ์ ๋๋ผ๋ ์์ค ํธ๊ธฐ์ฌ์ด ๋ค์ด YouTube์ ๋๊ธ HTML์ด ์ด๋ป๊ฒ ๋ฌถ์ฌ์๋์ง ๋ฏ์ด๋ณด์๋ค. console์์ ์ด๋ฐ์ ๋ฐ ๊ฐ๋ค์ ์
๋ ฅํด๋ณด๋ค๊ฐ ํ๊ธ์ด ํฌํจ๋ ๋๊ธ๋ง ๋จ๊ธฐ๊ณ ์น ์ง์์ฃผ๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ง๋ค์๋ค. ๊ณผ๊ฑฐ ํ๊ธ๊ณผ ์ ๋์ฝ๋ ๊ท์น์ ๊ด๋ จ๋ ํ๊ธ๊นจ๊ธฐ.py๋ผ๋ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ ๊ฒฝํ์ด ๋์์ด ๋๋ค.
๐งผ ์ด๊ธฐ ํํฐ ์คํฌ๋ฆฝํธ. YouTube ๋๊ธ์์ ํ๊ธ์ด ํฌํจ๋์ด ์์ง ์์ผ๋ฉด ๊ทธ ๋๊ธ์ ์ง์๋ฒ๋ฆฌ๋ ์๋ฆฌ์ด๋ค. GitHub ์ ์ฅ์์ ์ฒซ ์ปค๋ฐ์๋ ์ ์ฅ๋์ด ์๋ค.
var commentList = document.getElementsByTagName('ytd-comment-thread-renderer')
var comment
function containsUnicode(str, startUnicode, endUnicode) {
for (var i = 0; i < str.length; i++) {
if (startUnicode.charCodeAt(0) <= str.charCodeAt(i) && str.charCodeAt(i) <= endUnicode.charCodeAt(0)) {
return true
}
}
return false
}
for (var x = 0; x < commentList.length; x++) {
comment = commentList[x].childNodes[1].childNodes[1].childNodes[3].childNodes[3].innerText
if (containsUnicode(comment, '๊ฐ', 'ํฃ')) {
// comment = "ํ๊ธ์ \n" + comment;
} else {
// console.log(typeof commentList[x]);
commentList[x].parentNode.removeChild(commentList[x])
x--
}
}
for (var x = 0; x < commentList.length; x++) {
console.log(commentList[x].childNodes[1].childNodes[1].childNodes[3].childNodes[1].innerText)
// ์์ฑ์ ์ด๋ฆ๊ณผ ์์ฑ๋ ์ง๊ฐ ๊ฐ์ด ๋ฌถ์ฌ์๋ค. "์ด๋ฆ\n์์ฑ๋ ์ง"
console.log(commentList[x].childNodes[1].childNodes[1].childNodes[3].childNodes[3].innerText)
// ๋๊ธ!
}
// End of code
/* ์ฐธ๊ณ : ์ด ์ฝ๋๋ ์ด๊ธฐ ์ฝ๋์ด๋ฉฐ, ์ผ๋ถ ๊ฒฝ์ฐ์์๋ ์ ์ ๋์ํ์ง๋ง
* ์ฌ๋ฌ ์๋ฌ๊ฐ ๋ฐ์ํ๋ฉฐ ์ฑ๋ฅ ์ ํ ๋ฌธ์ ๊ฐ ์์๋ค.
* ๋๋ฒ๊น
๊ณผ ์ฑ๋ฅ ๊ฐ์ ์์
์ด ์งํ๋ ์ฝ๋๋ GitHub์ ์
๋ก๋๋์ด ์๋ค.
*/
์ด๋ ์ด ์ฝ๋๋ฅผ ํ๋ก์ ํธ๋ก ํค์ธ ์ ์๊ฒ ๋ค๊ณ ์๊ฐํ๋ค. ํ์ง๋ง ์ด ์คํฌ๋ฆฝํธ๋ ๋ช ๊ฐ์ง ๋ฌธ์ ์ ์ด ์์๋ค.
- ์ฐ์ ์ฝ์์์ ์ฝ๋๋ฅผ ๋ถ์ฌ ๋ฃ์ด์ผ ํ๋ ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ฐ๊ธฐ ์ด๋ ต๊ณ ๋ถํธํ๋ค.
- ์๋์ ์ผ๋ก ์คํ๋์ง ์์๊ธฐ์ ๋๊ธ์ด ์๋ก ๋ก๋ฉ๋๋ฉด ์ฝ์์์ ๋ค์ ์คํํด์ผ ํ๋ค.
- ํ๊ธ๋ง ๊ฑธ๋ฌ๋ผ ์ ์๋ค๋ ์ ์์ ์ฉ๋๊ฐ ๋ฌด์ฒ ์ ํ์ ์ด์๊ณ , ์คํ ์๋๊ฐ ๋๋ ธ๋ค.
์ด ๋ฌธ์ ์ ๋ค์ ํด๊ฒฐํ๋ ๊ฒ์ด ์์ฐ์ค๋ฌ์ด ๊ฐ๋ฐ ๋ชฉํ๊ฐ ๋์๋ค. ์ฐ์ ํฌ๋กฌ ์ต์คํ ์ ์ ๋ง๋๋ ๊ฒ์ด ๊ฐ์ฅ ํธ๋ฆฌํ ๊ฒ์ด๋ผ ์๊ฐํ๋ค.
- ์ฃ์ง๋ ์จ์ผ๋ ํฌ๋ก๋ฏธ์ ๊ธฐ๋ฐ์ด๋ฉฐ ํ์ด์ดํญ์ค ์ ๋์จ๋ ํฌ๋กฌ ์ต์คํ ์ ์ผ๋ก ๋ง๋ค ์ ์๋ค.
- ์ฌํ๋ฆฌ๋ YouTube 4K ๋์์ ์ฌ์์ด ์ ๋๊ธฐ ๋๋ฌธ์ ์ฌํ๋ฆฌ ์ฌ์ฉ์๋ค๋ YouTube๋ฅผ ๋ณผ ๋ ํฌ๋ก๋ฏธ์์ ์ฐ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
- ์ธํฐ๋ท ์ต์คํ๋ก๋ฌ๋ YouTube ์ง์์ด ๋๊ฒผ๋ค.
๋ํ ์ปดํจํฐ๋ฅผ ์ ๋ชจ๋ฅด๋ ์ฌ๋๋ค๋ ์ฌ์ฉํ๊ธฐ ํธํ๋ ค๋ฉด "YouTube์ ๊ธฐ๋ฅ์ธ ๊ฒ์ฒ๋ผ" ๋์์๊ณผ ๋๊ธ ์ฌ์ด ์์นํด ์์ด์ผ ํ๋ค๊ณ ์๊ฐํ๋ค. ๊ทธ๋์ผ๋ง ์ฌ์ฉ์๊ฐ ๋ง์ฐ์ค ์ปค์๋ฅผ ๋์์์์ ๋๊ธ๋ก ์ฎ๊ฒจ๊ฐ๋ฉด์ ์์ฐ์ค๋ฝ๊ฒ ์ฌ์ฉํ ์ ์๋ค. ๊ทธ๋์ ํฌ๋กฌ ์ต์คํ ์ ์๋ ๋ณ๋ค๋ฅธ ๊ธฐ๋ฅ์ด ์๊ณ YouTube ํ๋ฉด ์์ฒด์ ์ง์ ๋ฉ๋ด๋ฅผ ์ฝ์ ํ๋๋ก ๋ง๋ค๊ณ ์ถ์๋ค.

์ด์ ๋ชฉํ๊ฐ ๊ตฌ์ฒดํ๋์๋ค.
- ์ด ํฌ๋กฌ ์ต์คํ ์ ์ ๋์์๊ณผ ๋๊ธ ์ฌ์ด์ ์ธ์ด๋ฅผ ์ปจํธ๋กคํ๋ ์ธํฐํ์ด์ค๋ฅผ ์ฝ์ ํ ๊ฒ์ด๋ค.
- ๊ทธ ์ธํฐํ์ด์ค๋ฅผ ํตํด ๋ชจ๋ ๋๊ธ์ด ์๋์ ์ผ๋ก ํํฐ๋งํ ์ ์์ ๊ฒ์ด๋ค. ๋๊ธ์ ๋ ๋ถ๋ฌ์๋ ๊ณ์ ๊ทธ๋๋ก ์๋ํ ๊ฒ์ด๋ค.
- ์๋ก์ด ์ธ์ด๋ฅผ ์ถ๊ฐํ ๋ ํฐ ์ด๋ ค์์ด ์๋๋ก ํ์ฅ์ฑ์ ๊ฐ์ถฐ์ผ ํ๋ค.
- ๋ฉ๋ํ ์ ์์ ์ ๋๋ก ๋นจ๋ผ์ผ ํ๋ค.
์ฐธ๊ณ : versioning
๋ฒ์ ์ซ์๋ฅผ ๋ถ์ฌํ๋ ๋ฐฉ์์ ์ฌ๋๋ง๋ค, ๋จ์ฒด๋ง๋ค ๋ค๋ฅด๋ค. ์ด ๊ธ์์๋ ๋ค์๊ณผ ๊ฐ์ ๋ถ๋ฅ๋ฅผ ๋ฐ๋ฅธ๋ค.
- ์ผ์ ์๋ฆฌ๋ ๋ฉ์ด์ ์ ๋ฐ์ดํธ๋ฅผ ๋ปํ๋ค.
- ์ฒซ ๋ฒ์งธ ์์์ ์ ๊ธฐ๋ฅ์ ์ถ๊ฐ, ๋ ๋ฒ์งธ ์์์ ์ ๋ฒ๊ทธ ์์ ์ ๋ปํ๋ค.
- ์ธ ๋ฒ์งธ ์์์ ์ ์ฝ๋ ์์ ์์ ์์ด ์คํ ์ด์ ์ฌ์ ๋ก๋๋ฅผ ํ ๋ ์ฌ์ฉํ๋ค.
| ์ด๋ฆ | ๋ฒ์ | ์ค๋ช |
|---|---|---|
| ์ํ | 0.1+ | ์ต์ํ์ ๊ธฐ๋ฅ, ์์์๊ฒ ๋ฐฐํฌ/ํผ๋๋ฐฑ |
| ๋ฒ ํ | 0.9+ | ์ต์ด ๊ตฌ์ ๋๋ถ๋ถ ๊ตฌํ, ๋ค์์๊ฒ ๋ฐฐํฌ/ํผ๋๋ฐฑ |
| ์ ์ | 1+ | ์ง์์ ๊ฐ์ , ๋๊ตฌ์๊ฒ๋ ๋ฐฐํฌ/ํผ๋๋ฐฑ |
1. ์ํ ๋ฒ์ ์ ์ต๋ํ ๋นจ๋ฆฌ
์ํ ๋ฒ์ (๋ ์ ํํ๊ฒ๋ Minimum Viable Product)์ ๋ง๋ค๊ธฐ ์ํด์๋ ์ต์ํ์ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋ฅ์ด ๋์ํด์ผ ํ๋ค. ๋ ๊ตฌ์ฒด์ ์ผ๋ก๋ ๋ค์ ๋ชฉํ๊ฐ ๋ฌ์ฑ๋์ด์ผ ํ๋ค.
- ๋๊ธ์ด ์๋ก ๋ก๋ฉ๋ ๋๋ง๋ค ์๋์ ์ผ๋ก ์ฌ์คํ๋์ด์ผ ํ๋ค.
- ์ธ์ ๋ ์ง ๋ค์ ์ ์ฒด ๋๊ธ์ ๋ณผ ์ ์์ด์ผ ํ๋ค.
- ์ํด๋ฆญ ์ค์น๋ฅผ ํ ์ ์์ด์ผ ํ๋ค.
๊ฐ์ฅ ๋จผ์ "์ด๋ป๊ฒ ์๋์ ์ผ๋ก ์ฌ์คํ๋๊ฒ ๋ง๋ค ๊ฒ์ธ๊ฐ"๋ฅผ ๊ณ ๋ฏผํ๋ค.
๋ฐฉ๋ฒ 1. ์๊ฐ ๊ธฐ๋ฐ ์๋ ์ฌ์คํ
ํ์ง๋ง YouTube ๋์์์ ์ผ์๋ง์ ๋์์๋ง ๊ฐ์ํ๋ ์ฌ๋๋ค์๊ฒ๋ ์ฑ๋ฅ์ ๋ญ๋น์ผ ๊ฒ ๊ฐ์๋ค. ๊ทธ๋ ๋ค๊ณ ์ฌ์คํ ๊ฐ๊ฒฉ์ด ๋๋ฌด ๊ธธ๋ฉด ๋๊ธ์ ์ฝ์ ๋ ๋ถํธํจ์ด ์๊ธธ ๊ฒ์ด๋ค. ๊ฐ์ฅ ๋จผ์ ๋ ์ฌ๋ ธ์ง๋ง ๊ฐ์ฅ ๋จผ์ ์ ์ ๋ฐฉ๋ฒ์ด๋ค.
๋ฐฉ๋ฒ 2. YouTube์ ๋ก๋ฉ ์์ด์ฝ ๊ฐ์ง
YouTube์ ๋ก๋ฉ ์์ด์ฝ
ํ์ธํด๋ณด๋ ๋ก๋ฉ ์์ด์ฝ์ด ์๊ธธ ๋๋ง๋ค ๋๊ธ ์๋์ <can-show-more> ํ๊ทธ๊ฐ ๋ํ๋ฌ๋ค ์ฌ๋ผ์ก๋ค. ์ฆ ๋๋
ํ๋ YouTube์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๊ฐ <can-show-more> ํ๊ทธ๋ฅผ ์ฝ์
ํ๋ ์๊ฐ์ ํฌ์ฐฉํ์ฌ ๊ฐ์ด ํํฐ๊ฐ ์ฌ์คํ๋๋๋ก ํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ค์๋ค.

๋ฐฉ๋ฒ 3. MutationObserver
์ดํ ์๋ฐ์คํฌ๋ฆฝํธ์ MutationObserver๋ฅผ ์๊ฒ ๋์๋ค. ๊ด์ฐฐ ๋์์ธ target๊ณผ ๊ด์ฐฐ ์กฐ๊ฑด์ธ config๋ฅผ ์ค์ ํ ํ config์ ๋ง๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์ผ์ด๋๋ฉด callback ํจ์๋ฅผ ์คํํ๋ ๊ฒ์ด์๋ค. YouTube ๋๊ธ HTML์ target์ผ๋ก ์ผ์๊ณ , HTML ๋ด์ childNodes์ attributes์ ๋ณ๊ฒฝ์ ๋ฐ์ํ๋๋ก ํ๋ค. ์ํ๋ ๋๋ก ๋๊ธ์ด ๋ก๋ฉ๋ ๋๋ง๋ค ์ฌ์คํ๋์๋ค. 1๋ฒ ํด๊ฒฐ.
ํ์ง๋ง ์ฑ๋ฅ์ด ํฌ๊ฒ ๋จ์ด์ก๋ค. ์ฐ์ console.log๊ฐ ์๋ง ๋ฒ ์คํ๋๋ค๋ ๊ฒ์ ํ์ธํ๊ณ ์ด๋ฅผ ์ง์ฐ๋ ์ธ๋งํ ์ ๋๋ก ๋นจ๋ผ์ก๋ค. ์๋๋ฅผ ์กฐ๊ธ์ด๋๋ง ๊ฐ์ ํ๊ธฐ ์ํด ๋งค๋ฒ ๋๊ธ์ ์ธ์ด ํ
์คํธ๋ฅผ ์งํํ๋ ๋์ ๋๊ธ์ display:none;์ผ๋ก ๊ฐ๋ฆฌ๊ณ HTML ํ๊ทธ๋ก ํ์ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋กํด๋๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค. ์ ์ฒด ๋๊ธ์ ๋ณด๋ ๋ฒํผ์ ํด๋ฆญํ๋ฉด display:none;์ ์์ ๋๋ก ํ๋ค. ๊ทธ๋ฌ๋ค๊ฐ ๋ค์ ์ฌ์คํํ๋ฉด ์์ ๊ธฐ๋กํด๋ ํ๊ทธ๋ง์ผ๋ก ํ๋จํ๋ค. 2๋ฒ ํด๊ฒฐ. (๋์ค์์ผ ์์์ง๋ง ์จ์ ํ ํด๊ฒฐ์ด ์ ๋์๋ค. ์ด๋ ๊ฒ annotation์ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ์๋๋ฅผ ๋ณ๋ก ๊ฐ์ ํ์ง ์์๊ณ ๋ฌธ์ ๋ง ๋ ๋ง๋ค์๋ค. ๋ฒ ํ ๋ฒ์ ์ค 2๋ฒ YouTube์ SPA์ค๋ฌ์ ์ฐธ๊ณ .)
์ดํ 3์ผ ๋์ ํฌ๋กฌ ์ต์คํ ์ ์ ๊ตฌ์กฐ์ ๋ํด์ ๋ฐฐ์ฐ๋ฉด์ ํฌ๋กฌ ์ต์คํ ์ ์ ํ ์์ ๊ธฐ์กด ์ฝ๋๋ฅผ ์ด์ํ๋ ์์ ์ ํ๋ค. ํฌ๋กฌ ์ต์คํ ์ ์ ๊ณต์ ๋ฌธ์, ์คํ ์ค๋ฒํ๋ก, ๊ทธ๋ฆฌ๊ณ ํฌ๋กฌ ์ต์คํ ์ ์ ๋ํ Udemy ๊ฐ์๋ฅผ ์ฃผ๋ก ์ฐธ๊ณ ํ๋ค. 3๋ฒ ํด๊ฒฐ.
์ํ ๋ฒ์ ์์ฑ

์ด๋ ๊ฒ 2020๋ 3์ 6์ผ๋ถํฐ ๊ฐ๋ฐ์ ์์ํด์ 3์ 11์ผ์ ์ฒซ ์ํ ๋ฒ์ ๊ฐ๋ฐ์ด ๋๋ฌ๋ค. ์๊ท๋ชจ์ ํ ์คํฐ๋ค์๊ฒ ์ํ ๋ฒ์ ์ ๊ณต์ ํ์ผ๋ฉฐ ์ฝ ์ผ์ฃผ์ผ ๋์ ์ฌ์ฉ์ ๋ฆฌ๋ทฐ๋ฅผ ์์งํ๋ฉด์ ๊ฐ์ ์ ๊ณผ ๋ฒ๊ทธ๋ฅผ ์ฐ๊ตฌํ๋ค.

2. ๋ฒ ํ ๋ฒ์
์ํ ๋ฒ์ ์์ ์ฌ๋ฌ ๋ฌธ์ ์ ์ ์ฐพ์ ๊ฐ์ ํ๋ค.
โ YouTube์ Lazy Loading ๋ฌธ์
YouTube๋ ์ฝํ ์ธ ๋ฅผ Lazy Load ํ๋ค. Lazy Loading์ ๋ชจ๋ ์ ๋ณด๋ฅผ ํ ๋ฒ์ ๋ถ๋ฌ์ค์ง ์๊ณ ๊ธฐ๋ค๋ฆฌ๋ค, ์ ๋ณด๊ฐ ํ์ํ ๋ ์ ๋ณด๋ฅผ ๋ถ๋ฌ์ค๋ ๋ฐฉ๋ฒ์ ๋ปํ๋ค. Lazy Loading์ ์ฉ๋์ด ํฐ ์ด๋ฏธ์ง์ ์ฃผ๋ก ์ ์ฉํ์ง๋ง, YouTube๋ ํ ๋ฐ ๋ ๋์๊ฐ HTML ์์ฒด๋ฅผ Lazy Load ํ๋ค! (์ ํํ์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ๊ฐ๋ฐ ๋น์ ๊ทธ๋ ๊ฒ ํ์ธํ๋ค.)
๋์์ ํ์ด์ง์ ์ฒ์ ๋ค์ด์ฌ ๋ ๋๊ธ ์ธํฐํ์ด์ค์ ํด๋นํ๋ HTML์ ์กด์ฌํ์ง ์๋๋ค. ์ฌ์ฉ์๊ฐ ๋๊ธ์ ๋ณด๋ ค ์คํฌ๋กค์ ์์ํ๋ฉด ๊ทธ์ ์์ผ ํ์ ๋ก๋ฉ ์์ด์ฝ์ด ๋ณด์ด๋ฉด์ ๋๊ธ HTML์ ๋ถ๋ฌ์จ๋ค. (์? ๊ทธ๋์ผ ๋๊ธ DB ์ฟผ๋ฆฌ๋ฅผ ์ค์ผ ์ ์๊ธฐ ๋๋ฌธ์. ์๋ฆฌํ ํด๊ฒฐ์ฑ
๊ฐ์๋ค.) ์ฆ ์ต์คํ
์
์ด ์คํ๋๋ document_end ์์ ์๋ ๋๊ธ HTML์ด ์กด์ฌํ์ง ์๊ธฐ ๋๋ฌธ์ ์ต์คํ
์
์ด ์ค๋ฅ๋ฅผ ๋ธ ๋ค ๊ณง๋ฐ๋ก ์ข
๋ฃ๋์๋ค.

ํด๊ฒฐ์ฑ
YouTube์ Lazy Loading์ผ๋ก ๋๊ธ์ ๋ด์ฉ์ ๋ณด์ด์ง ์๋๋ผ๋ ๋๊ธ ์ฐฝ ์์ฒด์ ํํฐ ๋ฉ๋ด๋ฅผ ์ฝ์
ํด ๋์ผ๋ฉด ์ ์์ ์ผ๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค. ๋คํํ๋ ๋๊ธ ์ฐฝ์ ๋ํ๋จผํธ๊ฐ ๋ก๋ฉ์ด ๋ ํ (document_end ์์ ) ์ ์ ๋ค ๊ณง๋ฐ๋ก ๋ก๋ฉ์ด ๋์๋ค. ๋๋ฌธ์ ๋๊ธ HTML์ด ์กด์ฌํ์ง ์์ ๊ฒฝ์ฐ 0.5์ด๋ง๋ค ๋๊ธ ์ฐฝ์ Xpath๋ก ์ฌ๊ฒ์ํ๋๋ก ์ค์ ํ๋ค.
์์ ์ผ์ ํ ์๊ฐ๋ง๋ค ์ฌ์๋ํ๋ ๊ฒ์ ์ฐ์ฐ ๋ญ๋น๋ผ์ ๋ฐฐ์ ํ๊ธฐ์ ์กฐ๊ธ ์์ํ ๊ฒ ๊ฐ๋ค. ์์ ๊ฒฝ์ฐ๋ ์ผ์ ์๊ฐ๋ง๋ค ๋๊ธ์ ์ฌ๊ฒ์ฌํ๋ ๊ฒ์ด๊ธฐ์ ํ์ด๋จธ๊ฐ ๋ฌดํํ ๋ฐ๋ณต๋๋ ๋ฐ๋ฉด ์ด ๊ฒฝ์ฐ๋ ๋๊ธ ์ฐฝ์ด ๋ก๋ฉ๋ ๋๊น์ง๋ง ์ฌ์๋ํ๋ค. ์ค์ ๋ก ์ด ํด๊ฒฐ์ฑ ์ 1~2์ฐจ๋ก ์ฌ์๋์ ์ ์์ ์ผ๋ก ์ข ๋ฃ๋๋ค. ๊ทธ๋ณด๋ค ๋ ์ค๋ ๊ฑธ๋ฆฌ๋ฉด YouTube ์์ฒด๋ฅผ ๋ชป ๋ณผ ์ ๋๋ก ์ธํฐ๋ท์ด ๋๋ฆฐ ๊ฒ์ด๋ค.

์ดํ ๋ถ์ฐจ์ ์ธ ๋ฒ๊ทธ๋ค์ด ๋ฐ์ํ๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋ฅ์ํ๊ฒ ๋ค๋ฃจ์ง ๋ชปํ๊ธฐ์ ํน์ ํจ์๋ฅผ ์ผ์ ์๊ฐ ๋ค์ ํจ์จ์ ์ผ๋ก ์ฌ์๋ํ๋ ๋ฐฉ๋ฒ์ ๋ชฐ๋๊ธฐ ๋๋ฌธ์ด๋ค. ๋์์ URL๋ก ์ ๊ทผํ๊ฑฐ๋ ๊ฒ์ ๊ฒฐ๊ณผ์์ YouTube ๋์์์ผ๋ก ๊ณง๋ฐ๋ก ์ ๊ทผํ๋ฉด YouTube๊ฐ ๋ฌดํ ๋ก๋ฉ๋๋ ๋ฒ๊ทธ๊ฐ ๊ฐํน ๋ฐ์ํ๋ค. ์ด์ ๋ฅผ ์๊ณ ๋ณด๋ JS๋ฅผ ์ผ์ ์๊ฐ ๋ค์ ์ฌ์๋ํ๋๋ก ๋ง๋ค์ด์ผ ํ๋๋ฐ ์ผ์ ์๊ฐ์ ๊ธฐ๋ค๋ฆฌ๋๋ก ๋ง๋ค๋ฉด์ ๋ค๋ฅธ JS์ ์คํ์ ๋ง์๊ธฐ ๋๋ฌธ์ด์๋ค. ์ด ๋ฒ๊ทธ๋ GitHub Issue #4์์๋ ํ์ธํ ์ ์์ผ๋ฉฐ v1.1.4์์ ์ต์ข ์ ์ผ๋ก ์์ ๋์๋ค. (๋ฒ๊ทธ๊ฐ 20๋ฒ์ ํ๋ฒ ๊ผด๋ก ๋ํ๋ฌ๋ค. ์ค๋ฅ ์ํฉ์์ ๋ฒ๊ทธ๋ฅผ ์ฐพ๋ ๊ฒ๋ณด๋ค ์ค๋ฅ ์ํฉ ์์ฒด๋ฅผ ์ฌํํ๋ ๊ฒ์ด ๋ ์ด๋ ค์ ๋ค.)
โก YouTube์ HTML ์ปดํฌ๋ํธ ์ฌํ์ฉ ๋ฌธ์
ํฌ๋กฌ ์ต์คํ
์
์ด ์น์ฌ์ดํธ์ ์ ๊ทผํ์ฌ ๋ด์ฉ์ ๋ณ๊ฒฝํ๊ธฐ ์ํด์ manifest.json์ ์ต์คํ
์
์ด ์ ๊ทผํ ์ฃผ์๋ฅผ ๋ชจ๋ ์์ฑํด์ผ ํ๋ค. ์ฒ์์๋ ๋์์ ํ์ด์ง์์๋ง ์คํ๋๋ฉด ๋ ๊ฒ์ด๋ผ ์๊ฐํ๊ธฐ์ https://*.youtube.com/watch*๋ฅผ ์ฌ์ฉํ๋ค. ํ์ง๋ง YouTube ํ ํ๋ฉด์ผ๋ก ๋ค์ด์ ๋์์์ผ๋ก ์ ๊ทผํ ๊ฒฝ์ฐ์ ๋ฌธ์ ๊ฐ ์๊ฒผ๋ค.
YouTube๋ HTML์ ์ปดํฌ๋ํธ๋ฅผ ๋ค์ ์ฌํ์ฉํ๋ค. YouTube ๋์์์ ๋ณด๋ค๊ฐ i ๋ฒํผ์ ๋๋ฌ ๋ฏธ๋ํ๋ ์ด์ด๋ฅผ ์คํํด๋ณธ ์ ์ด ์๋ค๋ฉด ๋์น์ฑ ์ ์์ ๊ฒ์ด๋ค. YouTube๋ ๋์์ ํ์ด์ง๋ก ์ด๋ํ๋ ๊ฒ์ด ์๋๋ผ, ๋จ์ง โ ๊ธฐ์กด ํ๋ฉด์ ๊ฐ๋ฆฌ๊ณ โก ์ ํ์ด์ง๋ฅผ ์์ ๋์ด ๋ค โข ์น ์ฃผ์์ฐฝ์ ์ฃผ์๋ง ๋ฐ๊พธ์ด ๋๋ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ ๋น์ฐํ i ๋ฒํผ์ ๋๋ฌ ๋ฏธ๋ํ๋ ์ด์ด๋ฅผ ๋์ฐ๋ฉด ๋์์์ ์ฌ์ํ๊ธฐ ์ ์ ๋ณธ ์ฐฝ์ด ๊ทธ๋๋ก ๋ค์ ๋ํ๋๋ ๊ฒ์ด๋ค.
๊ทธ๋ ๋ค๊ณ manifest.json์ https://*.youtube.com/*๋ฅผ ์ฌ์ฉํ๋ฉด ๋๊ธ ์ฐฝ์ด ์๋ ํ์ด์ง์์๋ ์๋ฑํ ๊ณณ์ ํํฐ ๋ฉ๋ด๊ฐ ์ฝ์
๋์๋ค.

๋ํ ๋์์ ํ์ด์ง์์ ์ ์์ ์ผ๋ก ํํฐ ๋ฉ๋ด๊ฐ ์ฝ์ ๋์๋๋ผ๋ ํํฐ๋ฅผ ์ผ ์ฑ ๋ค๋ฅธ ๋์์์ผ๋ก ์ด๋ํ๊ฒ ๋๋ฉด "์ด์ ๋์์์ ๋๊ธ์ ์ธ์ด"์ ๋ง์ถ์ด "ํ์ฌ ๋์์์ ๋๊ธ"์ ํํฐ๋งํ๋ ๊ฒฝ์ฐ๋ ๊ฐํน ๋ฐ์ํ๋ค. ์ด ๋ํ YouTube์ ๋๊ธ ์ปดํฌ๋ํธ ์ฌํ์ฉ ๋๋ฌธ์ ๋ฐ์ํ ๋ฌธ์ ๊ฐ์๋ค. ์๊น ์๋ ๊ฐ์ ์ ์ํด ๋๊ธ HTML์ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ๋ชจํด๋์๋ค๊ณ ํ๋๋ฐ ์ด ๊ฒฐ๊ณผ ๋ํ ๋ค์ฃฝ๋ฐ์ฃฝ ์์ฌ ์ค๋ฅ๋ฅผ ๋ ํฌ๊ฒ ๋ง๋ค์๋ค.
ํด๊ฒฐ์ฑ
์ต์คํ ์ ์ด ์น์ฌ์ดํธ ์ ์์ ๋ชจ๋ํฐ๋งํ๋ค. ์ ์ํ๋ ๋๋ฉ์ธ์ด YouTube๋ผ๋ฉด ํํฐ๋ฅผ ์ฝ์ ํ ์ค๋น๋ฅผ ํ๊ณ , ๋๋ฉ์ธ์ ๊ทธ๋๊ทธ๋ ์๋์ผ๋ก ๊ฒ์ฌํ์ฌ youtube.com/watch๋ผ๋ฉด ๊ทธ๋ ํํฐ๋ฅผ ์ฝ์ ํ๋ค.

์ด ๊ฒฝ์ฐ ์ต์คํ ์ ์ ์ค์นํ ๋ "์ฌ์ฉ์์ ๋ฐฉ๋ฌธ ๊ธฐ๋ก์ ์ฝ์ ์ ์์" ๊ถํ์ด ํ์ํ๋ค. ์ด ๋๋ฌธ์ ํด๋น ์ปค๋ฐ๊ณผ ์ค์น ์๋ฃ ํ์ด์ง์ ์ฌ์ฉํ๋ ๊ถํ์ ๋ํด์ ์ค๋ช ์ ์ ์ด๋์๋ค. GitHub ์คํ ์์ค๋ฅผ ๋ณด๋ฉด ์๊ฒ ์ง๋ง ๋ฐฉ๋ฌธ ๊ธฐ๋ก์ ์ธ๋ถ๋ก ์ ์ก๋์ง ์๋๋ค.
๋ํ ํํฐ๋ฅผ ์ผ ์ฑ ํ์ด์ง๊ฐ ๋์ด๊ฐ ๋๋ ์ ์์ ์ผ๋ก ํํฐ๋ง ๋ ์ ์๋๋ก โ ํ์ด์ง๊ฐ ๋์ด๊ฐ๋ฉด โก ๋ชจ๋ ํํฐ์ ํํฐ ๊ฒฐ๊ณผ๋ฅผ ์ด๊ธฐํํ๊ณ โข ์ด๋ํ ํ์ด์ง์ ๋๊ธ์ ์๋ก ๋ถ๋ฌ์ โฃ ๋๊ธฐํ ์ ์๋๋ก ์ค์ ํด ์ฃผ์๋ค.
๊ฐ๋ ๋ฌธ์ ๊ฐ ์ฌ๋ฐํ๊ธด ํ๋ค. ํ์ง๋ง ์ด๋ ์คํ๋ ค YouTube ์์ฒด์ ๋ฒ๊ทธ์ธ ๊ฒ ๊ฐ์๋ค. ์ด ์ต์คํ ์ ์ ์ฌ์ฉํ์ง ์์๋ YouTube ์น์ ๋๊ธ ์์คํ ์ ์๋ชป๋ ๋๊ธ์ด ๋ํ๋๊ฑฐ๋ ์์์ ๋๊ธ์ด ์๋ก ์์ด๋ ๋ฑ ๋ค์ํ ๋ฒ๊ทธ๋ก ์ ๋ช ์ด ๋๋ค. ์ด ๊ฒฝ์ฐ ์๋ก ๊ณ ์นจ์ ํ๋ฉด ํด๊ฒฐ๋๋ค.
โข ์๋์ ๊ดํ ๋ฌธ์
์ํ ๋ฒ์ ์์ ํํฐ ์ฑ๋ฅ์ด ๋ฌด์ฒ ์ ์ข์๋ค๊ฐ console.log๋ฅผ ๋ชจ๋ ์ ๊ฑฐํ๋ ๊ฒ๋ง์ผ๋ก ์ ์๋ฏธํ ์๋ ๊ฐ์ ์ด ์์๋ค๊ณ ํ๋ค. ์ฌ์ฉ์๊ฐ ๋๊ธ์ ์ฝ๋ ์๊ฐ๋ณด๋ค๋ง ํํฐ ์๋๊ฐ ๋น ๋ฅด๋ฉด ์ฌ์ฉ์ ๋ฌด๋ฆฌ๊ฐ ์์๊ธฐ์ ์๋ ๊ฐ์ ๋ณด๋ค ์์ ๋ฌธ์ ๋ค์ ๊ณ ์น๋ ๊ฒ์ด ์ฐ์ ์ด์๋๋ฐ, ๋์ค์ ํ์ธํ๋ ์ด๋ฐ ๋ฌธ์ ์๋ค.
for (var comment of commentList) {
if (comment.id === '') {
var commentString = comment.childNodes[1].childNodes[1].childNodes[3].childNodes[3].childNodes[1].innerText
if (containsSelectedLang(commentString)) {
comment.id = 'contains-SelectedLang'
} else {
comment.id = 'no-SelectedLang'
}
}
if (comment.id === 'no-SelectedLang') {
comment.style = 'display: none'
}
}
commentString์ comment ์ฃผ์๋ YouTube์ ์
๋ฐ์ดํธ๋ก ๋ช ์ฐจ๋ก ๋ฐ๋์๊ธฐ์ ํ์ฌ ์๋ํ์ง ์๋๋ค.
ํด๊ฒฐ์ฑ
๋ฌธ์ ์ ์ ์ฒซ ์ค์ var comment of commentList์ด๋ค. ์๋ฅผ ๋ค์ด 80๊ฐ์ ๋๊ธ์ ๋ํ ๊ฒ์ฌ๋ฅผ ๋ง์ณค๊ณ 20๊ฐ์ ๋๊ธ์ ์๋ก ๋ก๋ฉํ๋ค๊ณ ํ ๋ ์ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ฉด ๊ธฐ์กด 80๊ฐ ๋๊ธ๋ ๋ค์ ๋ถ๋ฌ์ ์ฌ๊ฒ์ฌํ๋ค. ์ด๋๊น์ง ๊ฒ์ฌํ๋์ง ํ์ธํ๋ ๋ณ์๋ฅผ ์ถ๊ฐํด์ ์ฑ๋ฅ์ ๊ฐ์ ํ ์ ์์๋ค.
var commentNum = 0
var shownCommentNum = 0
// ...
for (var i = commentNum; i < commentList.length; i++) {
commentNum++
CLFFooter.textContent = commentNum + ' comments analyzed, ' + shownCommentNum + ' comments shown.'
var commentString = commentList[i].childNodes[2].childNodes[2].childNodes[3].childNodes[3].innerText
if (!containsSelectedLang(commentString, StartCharset, EndCharset)) {
commentList[i].style = 'display: none'
} else {
shownCommentNum++
}
}
๋ฐฉ๊ธ ์ฝ๋์ ์ฝ๊ฐ์ ๋ํ
์ผ์ด ๋ค๋ฅด๋ค. ์ฌ๊ธฐ์๋ ๋ค๋ฅธ ๋ถ๋ถ๋ณด๋ค ๋ค ๋ฒ์งธ ์ค์ for ๊ตฌ์กฐ ๋ณ๊ฒฝ์ด ์ ์ผ ์ค์ํ๋ค.
๊ธฐ์กด์ ์ฌ์ฉํ๋ annotation์ ์ด์ฉํ ์๋ ๊ฐ์ ์ฝ๋๋ YouTube์์ ๋์์์ ๋๋๋ค ๋ ์ค๋ฅ๋ฅผ ์ผ์ผํค๋ ๋ฐ๋์ ์ ๋ถ ์ญ์ ํ๋ค. ์์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์๋๋ฅผ ๊ฐ์ ํ๊ณ ๋๋ ๋ถํธํจ ์์ด ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
HTML ๋ฒํผ์ ์๋ ๋ฌธ์
๋ํ ์ํ ๋ฒ์ ์์๋ ๋ฒํผ์ ํ์ฉํ๋๋ฐ, ์ด๋ฅผ HTML Select๋ก ๋ณ๊ฒฝํ๋ค. ์ด๋ ๋ค๊ตญ์ด ์ง์์ ๊ธฐ๋ฐ์ ๋ง๋ จํ๊ธฐ ์ํจ๋ฟ๋ง ์๋๋ผ ๋ฒํผ์ ๋๋ฆฐ ๋ฐ์ ์๋์ ๋ํ ํด๊ฒฐ์ฑ
์ด์๋ค. ๊ธฐ์กด์ ๋ฒํผ์ ํด๋ฆญํ๋ฉด ์ค์ ์คํ์ด ๋ ๋๊น์ง ์ฝ 0.2์ด๊ฐ๋์ ์ฐ์ฐ ์๊ฐ์ด ์์๋ค. ์ด ์งง์ ์๊ฐ ๋์ ๋ฒํผ์ ์ฐํํ๊ฒ ๋๋ฉด ๋ฐ๋ณต์ ์ผ๋ก ํํฐ๊ฐ ๊บผ์ก๋ค ์ผ์ง๋ ๋ฐ๋์ YouTube๊ฐ ๋ฉ์ถ๋ ๋ฌธ์ ๊ฐ ์์๋ค. HTML Select๋ฅผ ํ์ฉํ๊ฒ ๋๋ฉด ์ฐํ๊ฐ ๋ถ๊ฐ๋ฅํด์ง๋ฉฐ 0.2์ด ์์ Select Value๋ฅผ ์ฌ๋ฌ ์ฐจ๋ก ๋ฐ๊พธ๋ ๊ฒ์ ์ด๋ ค์ฐ๋ฏ๋ก UI ์ ์ธ ํด๊ฒฐ์ฑ
์ ์ ์ํ๋ค๊ณ ์๊ฐํ๋ค.
โฃ ๊ธ์ ํ๋ณ์ ์ ๋ขฐ์ฑ์ ๊ดํ ๋ฌธ์
์๋ฐํ๊ฒ ์ด์ผ๊ธฐํ ๋ ์ด ์ต์คํ ์ ์ ์ธ์ด ํ๋ณ์ด ์๋ ๊ธ์ ํ๋ณ์ ์ฌ์ฉํ๋ค. ํ๊ธ ๋ฐ์ ํ๋ณํ์ง ๋ชปํ๋ค๋ ๋จ์ ์ ๊ฐ์ ํ๊ธฐ ์ํด ๋ฒ ํ ๋ฒ์ ์์ ์ ๋์ฝ๋ ์์ญ์ผ๋ก ๊ธ์ ๊ตฌ๋ณ์ด ์ฌ์ด CJK (ํ์, ๊ฐ๋, ํ๊ธ) ๋ฌธ์๋ฅผ ์ถ๊ฐํ๋ค. ์ด ๋ถ๋ถ์ ์ ๋ง ์ค๊ตญ์ธ๊ณผ ์ผ๋ณธ์ธ์ด ์ฌ์ฉํ ์ ์๋๋ก ๋ง๋ค์๋ค๊ธฐ๋ณด๋ค๋ ํ๋ณ ์ธ์ด๋ฅผ ์ถ๊ฐํ ์ ์๋์ง ๊ทธ ํ์ฅ์ฑ์ ํ์ธํ๊ธฐ ์ํจ์ด์๋ค.
๋ํ "๊ธ์ ์งํฉ ์ค ํ ๊ธ์๋ผ๋ ํฌํจํ๋ฉด ํต๊ณผ"๋ผ๋ ๊ท์น์ ์ ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๊ธ์ ํ๋ณ์ ์ค๋ฅ๊ฐ ์ฆ๊ฒ ๋ฐ์ํ๋ค. ์๋ฅผ ๋ค์ด...
I like the performance! This video is ์ต๊ณ !
...์ ๊ฐ์ ๋ฌธ์ฅ์ "์์ด"๋ก ํ๋ณ๋์ด์ผ ํ๋, "ํ๊ตญ์ด"์ "์์ด"๋ก ๋์์ ํ๋ณ๋๋ค. ๋๋ฌธ์ ์ด๋ฆ ๋ฑ์ ๊ณ ์ ๋ช ์ฌ๊ฐ ์ง์์ ์ผ๋ก ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ ์ ๋นํ๊ฒ ํํฐ๊ฐ ๋์ง ์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. ํ๊ธ ๋ฌธ์ฅ์ ์๋จ์ด ํ ๊ธ์๋ผ๋ ํฌํจ๋๋ฉด ์์ด๋ก ํ๋ณ๋๊ณ , ์ผ๋ณธ์ด ๋ฌธ์ฅ์ ํ์๊ฐ ํ ๊ธ์๋ผ๋ ์์ผ๋ฉด ์ค๊ตญ์ด๋ก ํ๋ณ๋๋ ๋ฌธ์ ๊ฐ ์๋ค.
ํด๊ฒฐ์ฑ ..?
์์ง ์๋ฒฝํ๊ฒ ๊ณ ์น์ง ๋ชปํ๋ค. ์ผ๋จ ๊ธ์ ํ๋ณ์ด๋ผ๋ ํน์ง์ ๋ณด๋ค ๋ช ํํ ๋ํ๋ด๊ธฐ ์ํด v1.2์์๋ ์ธ์ด์ ์ด๋ฆ์ด ์๋ ๊ธ์์ ์ด๋ฆ์ ์ฌ์ฉํ๋๋ก ์์ ํ์๋ค. ๊ถ๊ทน์ ์ผ๋ก ์์ฐ์ด ์ฒ๋ฆฌ ๋ชจ๋์ ํ์ฌํ ๊ณํ์ด ์๋ค. ํ์ง๋ง ํฌ๋กฌ ์ต์คํ ์ ์ ์ ์ฑ ๋ฌธ์ ๋ก ์ด๋ฐ ๋ชจ๋์ ์ฌ์ฉํ๋ ค๋ฉด ์ง๊ธ ์ฝ๋์ ์๋น ๋ถ๋ถ์ ๋ฏ์ด๊ณ ์ณ์ผ ํ๋ ๋ฌธ์ ๊ฐ ์๊ฒจ ์ด๋ฅผ ์ฐ๊ตฌํ๋ ์ค์ด๋ค.
3. ์ ์ ๋ฒ์
ํํฐ ๊ทธ ์์ฒด์ ์ฑ๋ฅ์ด๋ ๊ธฐ๋ฅ์ ๊ฐ์ ์ ์์ง๋ง ์ต์คํ ์ ๋ถ๋ถ์์ ์ฌ์ฉ์ฑ์ ๊ฐ์ ํ๋ค. ์ค์ ์ฐฝ์ ์ ์ํ์ฌ ์ฌ์ฉํ์ง ์๋ ์ธ์ด๋ค์ ๊ฐ์ถ ์ ์๋๋ก ํ์์ผ๋ฉฐ ์ค์น ์งํ ์ด๋ฆด ๋๋ฉ ํ์ด์ง๋ฅผ ๋ง๋ค์๋ค. ๋ฒ๊ทธ ์ ๋ณด๋ฅผ ์ํ ๊ฐ๋จํ ์๋ด๋ฌธ๋ ์ ์ํด๋์๋ค. ํ๋ก๋ชจ์ ์ด๋ฏธ์ง๋ ๋ค์ ์ ์ํ๋ค.

์์ ์ ์์ ์คํ์ ํด๋ณด์๋๋ฐ, ํ๋ก๋ชจ์ ์ด๋ฏธ์ง๊ฐ ์์ ๋์ ์์ ๋ ์ ์ ๊ด๊ฐ ์๋ ์ฝ 4๋ฐฐ ์ ๋ ์ฐจ์ด๊ฐ ๋ฌ๋ค.
๋ง์ง๋ง์ผ๋ก ํฌ๋กฌ ์ต์คํ ์ ์ ํ์ด์ดํญ์ค ์ ๋์จ์ผ๋ก ์ด์ํ๋ค. ์ด ๋ถ๋ถ์ ๋ํด์๋ ์ด์ ์ ์์ฑํ Porting a Chrome Extension to Firefox Add-on ๊ธ์์ ํ ์ฐจ๋ก ๋ค๋ฃฌ ์ ์ด ์๋ค.
v1์ ๋ํ ์ดํ
v1๊น์ง ์ถ์๋ฅผ ํ๋ฉฐ ์ผ๋์ ๋ ๊ฒ์ ์๋ฌด ์๊ฐ ์์ด ์ธ ์ ์๋ ๊ฒฐ๊ณผ๋ฌผ์ ๋ง๋๋ ๊ฒ์ด์๋ค. ์ต์คํ ์ ์ด ๋์ค์ ๋ฒ๊ทธ๋ฅผ ์ผ์ผ์ผ์ ์คํ๋ ค ์ต์คํ ์ ์ ์ ๊ฒฝ์ ์ฐ๊ธฐ ์์ํ๋ฉด YouTube ๋ณด๋ ํฅ์ด ๋ค ๊นจ์ ธ๋ฒ๋ฆฐ๋ค.
ํ์ง๋ง ์ง๊ธ์ v1์ ํฅ์ ๊นจ๋จ๋ฆฌ์ง ์๋๋ค. ๊ทธ๋ฅ ์๋ฌด ์๊ฐ ์์ด ๋ง ์จ๋ ์ ์๋ํ๋ค. (It just all... works!)

๋๋ถ์ด์ ์ต์ด ๋ชฉ์ ์ด์๋ ํ๊ตญ์ด ๋๊ธ ์ฐพ๊ธฐ๋ ํ ์ก์ ๊ณณ ์์ด ๊ฑฐ์ ์๋ฒฝํ๊ฒ ์๋ํ๋ค. ๊ฒฐ๊ตญ ํ๊ตญ์ด ๋๊ธ์๋ ํ๊ธ์ด ํ ๊ธ์๋ผ๋ ๋ค์ด๊ฐ ํ ๋๊น.
์์ผ๋ก
v2๋ฅผ ๊ฐ๋ฐํ๊ณ ์๋ค. v1์์ ๊ฐ์ฅ ๋ง์ด ๋ค์ด์จ ํผ๋๋ฐฑ์ "์คํ์ผ์ ์ถ๊ฐ"์ "์ธ์ด ํ๋ณ ๊ฐ์ "์ด๋ค. ํฌ๋กฌ ์ต์คํ
์
์ ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ ๋๋ฌธ์ ํฌ๋กฌ ์ต์คํ
์
์์ฒด์์ ์ธ๋ถ ํ์ผ์ด๋ ๋ชจ๋์ ์ถ๊ฐํ๋ ๊ฒ์ด ๋งค์ฐ ๋ณต์กํ๋ค. npm ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ ๋ฒ๊ฑฐ๋กญ๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ Webpack์ด๋ผ๋ ๊ฒ์ ์ฌ์ฉํด์ผ ํ๋๋ฐ, ๊ทธ๋ฅผ ์ํด์๋ ์๋นํ ๋ถ๋ถ์ ์ฝ๋๋ฅผ ์ฌ์์ฑํด์ผ ํ๋ค. ๊ทธ๋ผ์๋ ์ฌ๋ฌ ๊ฐ์ง ์ฌ๋ฏธ์๋ ํ์ฉ ๋ฐฉํฅ์ด ๋ ์ค๋ฅด๊ธฐ ๋๋ฌธ์ v2๋ฅผ ์งฌ์งฌ์ด ์ ์ํ๊ณ ์๋ค.
YouTube์์ ๊ณ ์์ ์ผ๋ก ํ๊ธ ๋๊ธ์ ๋๊ธ ์์์์ ๋ฎ์ถ์ด ํ๊ตญ ์์์ ์ธ๊ตญ์ธ์ ์ ์ ๋น์จ์ ์คํํ๋ ์ค์ด๋ผ๋ ์ด์ผ๊ธฐ๋ ๋์ค๊ณ ์๊ธฐ ๋๋ฌธ์ ์ ๋ ์ด ํ๋ก์ ํธ๊ฐ ์ฌ๊ธฐ์ ๋๋ ๊ฒ ๊ฐ์ง ์๋ค.
๊ทธ๋์ ์ ๋ชฉ์ด ํํธ 1์ด๋ค. ์ธ์ ๊ฐ v2๊ฐ ์์ฑ๋๊ฑฐ๋ ๋ง๋ ํ ๊ธฐ์ต๋ ๋ฌด์จ ์ผ์ด ์๊ธด๋ค๋ฉด ์ด ๊ธ์ ํํธ 2๋ฅผ ๋ง๋ ์ ์์ ๊ฒ์ด๋ค.