๐ ์ดํํ ์ฝ๋ฉ ์๊ฐ 9hour
๐๐ผ -
๐๐ผ -
[๋งํฌ ๋ชฉ๋ก]
Web Developer Bootcamp 2021
๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ ํํ ๋ฆฌ์ผ
input value๋ฅผ ์ ๋ ฅํ ๋๋ก ์ ๋ฐ์ดํธํ๊ธฐ
input.addEventListenr('input', function(e) {
hi.innerText = input.value;
})
์ ๋ ฅํ๋ ๋๋ก ์ ์ ๋ค์ ๋ณด์ฌ์ฃผ๊ธฐ
const heading = document.querySelector('h1');
const input = document.querySelector('input');
input.addEventListener('input', function (e) {
if (!this.value) {
heading.innerText = `Enter Your Username`;
} else {
heading.innerText = `Welcome, ${this.value}`;
}
});
// Alternative Solution
let header = document.querySelector('h1');
let input = document.querySelector('input');
input.addEventListener('input', () => {
header.innerHTML =`Welcome, ${input.value}`;
if (input.value === ""){
header.innerHTML = 'Enter Your Username';
}
});
Event Bubbling
event๊ฐ lower level ๋ถํฐ higher level๊น์ง trigger๋๋ ๊ฒ
๋ค์ ์ฝ๋๋ก bubbling์ ๋ง์ ์ ์๋ค
e.stopPropagation();
์์ฑํ ํธ์ ์ง์ฐ๊ธฐ
tweetsContainer.addEventListener('click',function(e) {
e.target.nodeName === 'LI' && e.target.remove();
})
์์ ์ค๋ช
๋ฐ์ดํฐ์ ๊ธฐ๋ฅ์ด ํด๋์ค๋ก ์บก์ํ๋ ์ปดํจํฐ ์์์ ๋ฌถ์์ ๊ฐ์ฒด๋ผ ํ๋ค
์๋์ฑ :private public
์์ :๋ถ๋ชจ ํด๋์ค- ์์ ํด๋์ค
๋คํ์ฑ : override
์ธํฐํ์ด์ค
์ถ์ ํด๋์ค
์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ - ์์ฃผ ์ฌ์ฉ๋๋ ๋ก์ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ง๋ค์ด ๋ ์ ์๋ค
ํ๋ก์ธ์ค
ํ๋ก์ธ์ค: ์ปดํจํฐ์์ ํ๋ก๊ทธ๋จ์ด ์คํ๋ผ์ ๋์๊ฐ๊ณ ์๋ ์ํ
๋ฉํฐํ์คํน : ์ฌ๋ฌ ๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ํจ๊ป ๋๋ฆฌ๊ณ ์๋ค, ๋์์ , ๋ณ๋ ฌ์
๋์์ฑ(concurrency) : ํ๋ก์ธ์ค ํ๋๊ฐ ์ฌ๋ฌ ์์
๋ค์ ์ผ๋ถ๋ถ์ฉ ์งํํ๋ ๊ฒ - context switching
๋ณ๋ ฌ์ (parallelism) : ํ๋ก์ธ์ค ํ๋์ ์ฝ์ด ์ฌ๋ฌ ๊ฐ๊ฐ ๋ฌ๋ ค์ ๊ฐ๊ฐ ๋์์ ์์
์ ์ํํ๋ ๊ฒ, ๋์ผ์ฝ์ด, ์ฟผ๋์ฝ์ด ๋ฑ,
์ปดํจํฐ๋ ํ๋ก์ธ์ค๋ง๋ค ์์์ ๋ถํ ํด์ ํ ๋นํ๋ค
์ค๋ ๋
ํ๋ก์ธ์ค๋ง๋ค ์ฃผ์ด์ง ์์์ ์ฌ์ฉ
ํ ํ๋ก์ธ์ค ์์ ๋ ๊ฐ์ ์ค๋ ๋ ์คํ -> ๊น๋ค๋กญ๊ณ ์ค๋ฅ ๋ง์
๋๋ฒ๊น
์ํํธ์จ์ด ๋ฌธ์ ์ ์์ธ ์ฐพ์, ๊ฐ๋ฐ ์ค์ธ ์ํ๋ก ์ฐ์ด๊ธฐ๋
์ปดํ์ผ๋ฌ
์ฝ๋ฉ -> ์ปดํจํฐ ์์๋ณผ ์ ์๋๋ก ๋ฏธ๋ฆฌ ํด๋์ผ๋ฉด ์ปดํ์ผ๋ฌ
์ปดํ์ผ๋ฌ(ํ๋ก๊ทธ๋จ)์ด ์ฝ๋์ ๊ธฐ๊ณ์ด ๋๋ ์ค๊ฐ์ธ์ด๋ก ๋ฒ์ญ -> ์ปดํ์ผ ์ธ์ด๋ผ๊ณ ํ๋ค(.class) -> jvm์ด๋ผ๋ ์๋ฐ ๊ฐ์ ๋จธ์ ์ด ์ค์น๋ ๋ชจ๋ ์ข
๋ฅ์ ๊ธฐ๊ณ์์ ํต์ฉ๋๋ค - ์ํํธ์จ์ด ๋์
์ธํฐํ๋ฆฌํฐ (์คํฌ๋ฆฝํธ ์ธ์ด)
์ฝ๋ฉ -> ์ปดํจํฐ ์์๋ณผ ์ ์๋๋ก ๊ทธ๋๊ทธ๋ ํ๋ฉด ์ธํฐํ๋ฆฌํฐ
์ค์๊ฐ ํต์ญ, ์๋ฐ์คํฌ๋ฆฝํธ, ํ์ด์ฌ, ๋ฃจ๋น
์ฝ๋ ์์ ๊ณผ ์
๋ฐ์ดํธ ์์, ์ปดํ์ผ๋ฌ ์ธ์ด์ ๋นํด ์คํ ์๋๋ ๋๋ฆฌ๋ค
ํ๋ก๊ทธ๋๋ฐ ์ฝ๋๊ฐ ์ฝ๊ฒ ๋์ถ๋๊ธฐ๋ ํจ
๋น๋
์ฝ๋ ํ์ผ + ๋ผ์ด๋ธ๋ฌ๋ฆฌ + ์ด๋ฏธ์ง + ๊ธฐํ => ๋ณํ ๋ฐ ์์ถ : ๋น๋
์ฌ์ฉ์๊ฐ ๋ฐ๋ก ์คํํ ์ ์๋๋ก ํ๋ค (.exe)
์ฝ๋ ์์ถ์ผ๋ก ์ ์ฒด ํฌ๊ธฐ ์ค์ด๊ฑฐ๋ ๋๋
ํ
์ปดํ์ผ ์ธ์ด๋ก ๋ง๋ค์ด์ง ์ํํธ์จ์ด๋ ๋น๋์ ์ปดํ์ผ ์์
์ด ํฌํจ๋ผ ์๋ ๊ฒ
๋ฐฐํฌ
๋น๋ํ ๊ฒฐ๊ณผ๋ฌผ์ ์ฌ์ฉ์์๊ฒ ์ ๋ฌํ๋ ๊ณผ์
ํ๊ฒฝ: ์ํํธ์จ์ด๊ฐ ๋์ํ๋ ๊ณต๊ฐ
ํ๊ฒฝ ๋ณ์ : ์ปดํจํฐ๋ง๋ค ์ง์ ๋ ๊ฐ
๊ฐ๋ฐ์ฉ(dev) ๋ฐฐํฌ์ฉ(prod) ๋ผ๋ ํ๊ฒฝ ๋ณ์ ๊ฐ์ ๋ฃ๊ณ ๊ทธ์ ๋ฐ๋ผ ์กฐ๊ฑด์ ์ฃผ์ด์ ๊ฐ๋ฐ์ฉ ๋ฐฐํฌ์ฉ ๊ตฌ๋ถ
๋ผ์ด๋ธ๋ฌ๋ฆฌ: ๋ชจ๋ํ๋ ์ฝ๋, ๋๋ ๊ทธ ๋ฌถ์ (๋ฆฌ์กํธ)
ํ๋ ์์ํฌ: ์ํํธ์จ์ด์ ๊ธฐ์ด ์ค๊ณ๊ฐ ํ๋ก๊ทธ๋๋ฐ๋ผ ์๋ ๊ฒ (์คํ๋ง, ์ฅ๊ณ , ๋ทฐ)
๋งํฌ
class๋ ์ฐ๊ด ์๋ data๋ฅผ ํ ๋ฐ ๋ฌถ์ด๋๋ container๊ฐ์ ๊ฒ
class person{ //class
name; //property //์์ฑ(field)
age; //property //์์ฑ(field)
speak(); //function //ํ๋(method)
}
fields + methods -> class
method ์์ด fields๋ง ์๋ ๊ฒ์ ๋ฐ์ดํฐ ํด๋์ค๋ผ๊ณ ํ๋ค
์บก์ํ : ํด๋์ค ๋ด์์ ๋ด๋ถ์ ์ผ๋ก ๋ณด์ฌ์ง๋ ๋ณ์์ ๋ฐ์ ๋ณด์ด๋ ๋ณ์๊ฐ ๋๋ ๊ฒ (incapsulation)
class: ์ฒญ์ฌ์ง, ํ, ํ
ํ๋ฆฟ (teplate, declare once, no data in), ๋ถ์ด๋นต ํ
์ ์๋ง ํ ๊ฒ์ด๋ผ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ์ง ์์
object: ํด๋์ค์ ์ค์ ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ ๋ง๋๋ ๊ฒ, instance of a class, created many times, data in, ํฅ๋ถ์ด๋นต, ํฌ๋ฆผ๋ถ์ด๋นต, ํผ์๋ถ์ด๋นต
ํจ์ ํ๋๋ก ๋ค์ํ ๊ธฐ๋ฅ์ ์คํํ ์ ์๋ค
๋งํฌ
clss declaration
object ์์ฑ -> const object = new class(constructor fields);
c์ธ์ด : procedure์ธ์ด - ํจ์ ํธ์ถ ์คํ ์ธ์ด
java: object oriented programming ์ธ์ด
class: ์ปคํผ ๋ฒค๋ฉ ๋จธ์
property
const name = "Mike"; //๋ฌธ์์ด string
const name1 = "Mike"; //ํฐ๋ฐ์ดํ
const name1 = 'Mike'; //์์๋ฐ์ดํ - ์ญ์ฌ๋ฌ์ฌ๋ก ํน์๋ฌธ์ ์ธ์ ๊ฐ๋ฅ
const name1 = `Mike`; //๋ฐฑํฑ - ๋ฌธ์์ด ๋ด๋ถ ๋ณ์ ํํ
const age = 30; //์ซ์ํ
const a = true; // boolean
null //์กด์ฌํ์ง ์๋ ๊ฐ
undefined //๊ฐ์ด ํ ๋น๋์ง ์์๋ค -> ๋ณ์ ์ ์ธ๋ง ํ๊ณ ํ ๋นํ์ง ์์ผ๋ฉด
let age;
console.log(age) //undefined
//๊ฐ์ฒดํ
//์ฌ๋ณผํ
console.log(typeOf null); //object, ๊ฐ์ฒด์ ์๋ฃํ์ ์์๋ผ ์ ์๋ค, ๋ค๋ฅธ ํ๋ก๊ทธ๋๋จธ์ ์ฝ๋๋ฅผ ๋ณด๊ฑฐ๋ api ์์ ๋ฐ์์จ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํด์ผ ํ ๋ ์์ฃผ ์ธ ์ ์๋ค
//์ฌ๊ธฐ์ null์ด ๊ฐ์ฒด๋ผ๊ณ ๋์ค์ง๋ง ๊ฐ์ฒด๊ฐ ์๋๋ค, ์๋ฐ์คํฌ๋ฆฝํธ ์ด๊ธฐ ๋ฒ์ ์ ์ค๋ฅ์
์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ฌธ์ํ ์ซ์ํ ์์ด์ ์ธ ์ ์์ผ๋ ๋ฌธ์ํ์ผ๋ก ๋ณ๊ฒฝ๋จ
get์ด๋ผ๋ ํค์๋๋ก ๊ฐ ๋ฆฌํด
set์ผ๋ก ๊ฐ ์ค์ - value ๋ฐ์์์ผ ํจ
์คํํ๊ฒฝ(JRE) + ๊ฐ๋ฐ๋๊ตฌ(JDK) + ๋ผ์ด๋ธ๋ฌ๋ฆฌ(API)
pc ์ ํ๋ฆฌ์ผ์ด์
- IJ, eclipse
์น ์ ํ๋ฆฌ์ผ์ด์
- ์คํ๋ง ํ๋ ์์ค
๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์
(์๋๋ก์ด๋)
๋น
๋ฐ์ดํฐ - hadoop(๊ธฐ๋ณธ ํ๋ซํผ)
๊ฒ์(๋ง์ธ ํฌ๋ํํธ), ๊ณผํ, ์ํ๊ธฐ๊ธฐ ๋ฑ
๋ชจ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด(๊ฐ์ฒด์งํฅ+ํจ์ํ)
๋ฐฐ์ฐ๊ธฐ ์ฌ์ด ๊ฐ์ฒด์งํฅ ์ธ์ด
์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ (๊ฐ๋น์ง ์ปฌ๋ ํฐ, GC)
๋ฉํฐ ์ฐ๋ ๋๋ฅผ ์ง์
ํ๋ถํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
์ด์์ฒด์ ์ ๋
๋ฆฝ์ (์ฌ๋ฌ ์ด์์ฒด์ ์์ ์คํ ๊ฐ๋ฅ)
-> JVM ์๋ฐ ๊ฐ์ ๋จธ์ ๋๋ถ์ write once, run anywhere
๋ฉ์๋ - ํด๋์ค ๊ฒ์ํ ์ ์์