Document
44
0519 ์์
ํ์ ๋ด์ฉ
2023.05.19
1. createReactApp ๋ง๊ณ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ํ๋ ๋ฐฉ๋ฒ ์์ ์ฝ๋ ํ๋ ์์ฑ --------- 1. History API๊ฐ ๋ญ๋ฐ - history API : ๋ธ๋ผ์ฐ์ ์ ์ธ์
๊ธฐ๋ก์ ์กฐ์ํ ์ ์๋ ๋ฉ์๋๋ฅผ ๋ด๊ณ ์๋ ๊ฐ์ฒด - ๋ค๋ก ๊ฐ๊ธฐ, ์์ผ๋ก ๊ฐ๊ธฐ, ํ์ด์ง ์ด๋ ๋ฑ์ ์กฐ์ํ ์ ์์ - history ๋ ์ธ์
๊ธฐ๋ก(ํ์ด์ง ๋ฐฉ๋ฌธ ๊ธฐ๋ก)์ ๋ํ ์ ๊ทผ ๋ฐฉ๋ฒ๊ณผ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ ๊ฒ - history.back() : ๋ค๋ก๊ฐ๊ธฐ - history.forward() : ์์ผ๋ก ๊ฐ๊ธฐ - history.go() : ์ธ์
๊ธฐ๋ก ๋ด ํ์ด์ง๋ก ์ด๋ // chrome ์ผ์ ํ์ธ ์์ผ์ฃผ๊ธฐ 2. BrowserRouter ์์์ ๊ธฐ๋ฅ, History API์์ ๊ด๋ จ์ฑ 3. Route ์ฌ์ฉ๋ฒ ๋ฐ ๋ฐ์ดํฐ ํ์ 4. export ..
0518 ์์
ํ์ ๋ด์ฉ
2023.05.19
๋ฆฌ์กํธ์ ํน์ง 3๊ฐ์ง 1. ์ ์ธํ(Declarative) : ํ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด html, css, js๋ก ๋๋ ์ ์ ๊ธฐ ๋ณด๋ค๋ ํ๋์ ํ์ผ์ ๋ช
์์ ์ผ๋ก ์์ฑํ ์ ์๊ฒ JSX๋ฅผ ํ์ฉํ ์ ์ธํ ํ๋ก๊ทธ๋๋ฐ์ ์งํฅ const name = 'yoonhyewon' const element = Hello,{name} 2. ์ปดํฌ๋ํธ ๊ธฐ๋ฐ (Component-Based) - ํ๋์ ๊ธฐ๋ฅ ๊ตฌํ์ ์ํด ์ฌ๋ฌ ์ข
๋ฅ์ ์ฝ๋๋ฅผ ๋ฌถ์ด๋ ์ปดํฌ๋ํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐํจ 3. ๋ฒ์ฉ์ฑ (Learn Once, Write Anywhere) - js ํ๋ก์ ํธ ์ด๋์๋ ์ ์ฐํ๊ฒ ์ ์ฉ ๊ฐ๋ฅ - facebook ์์ ๊ด๋ฆฌ๋๊ณ ์์ด ์์ ์ ์ด๋ฉฐ, ์ ๋ช
ํ๊ณ , ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ ๋ชจ๋ฐ์ผ ๊ฐ๋ฐ๋ ๊ฐ๋ฅํจ - 2020๋
๊ธฐ์ค ๊ฐ์ฅ ์ ๋ช
ํ ํ๋ก ํธ์๋ ๊ธฐ์ - ..
517 ์์
ํ์ ๋ด์ฉ
2023.05.18
[], {}, () ๋๊ดํธ [] 1. list ๋์ด ํน์ list ์ธ๋ฑ์ค ์ง์ ex) list[0], list[1] ์ค๊ดํธ {} 1. dictionary ๋ง๋ค๋ {'key':'value'} 2. style tag ์ง์ ์ 3. ํน์ function์ ๋ํด ์ ์ ํ ๋ function test(){} ํ์์ด ๋๊ฒ ์ฃ .. 4. for / if ๋ฑ์ ๋ฌธ๋ฒ ์ ํ์ํ ๋ ์๊ดํธ () 1. for๋ if ๊ฐ์ ๋ฌธ๋ฒ์ ์กฐ๊ฑด ์ ๋ฃ์ ๋ JSON (Javascript Object Notation) ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ฑฐ๋ ์ ์กํ ๋ ๋ง์ด ์ฌ์ฉ๋๋ "๊ฒฝ๋" Data ๊ตํ ํ์ ์ฝ๊ฒ ๋งํด์ javascript์์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค ๋ ์ฌ์ฉํ๋ ํํ์์ ์๋ฏธ -- ์ฌ๋ ๊ธฐ๊ณ ๋ชจ๋ ์ดํดํ๊ธฐ ์ฌ์ฐ๋ฉฐ ์ฉ๋์ด ์์์ ๋ฐ์ดํฐ ์ ์ก์ ๋ง์ด ์ฐ์ด..
516 ๊ฐ์ ํ์ ๋ด์ฉ (callback/promise)
2023.05.16
// settimeout : ์คํํ ํจ์, ์ด(๋ฐ๋ฆฌ์ธ์ปจ ๋จ์) [callback] ์ฝ๋ฐฑํจ์ : ๊ฐ๋จํ๊ฒ ๋ค๋ฅธ ํจ์์ ๋งค๊ฐ๋ณ์๋ก ๋๊ฒจ์ค ํจ์๋ฅผ ์๋ฏธ ๋งค๊ฐ๋ณ์๋ก ๋๊ฒจ๋ฐ์ ํจ์๋ ์ผ๋จ ๋งค๊ฐ๋ณ์ ๋จผ์ ๋๊ฒจ๋ฐ์๋ ์ํ์์ ์ผ์ ์์ (๋)๊ฐ ๋๋ฉด ๋์ค์ ํธ์ถ(call back)ํ๋ค๋ ์๋ฏธ // ์ฝ๋ฐฑํจ์๊ฐ ํ์ํ ์ด์ 1. ๋ณ์์ ์ ํจ๋ฒ์ (scope) 2. ๋๊ธฐ/๋น๋๊ธฐ(synchronous/Asynchronous) -> ์ด๋ฐ ๊ฑธ ์ํด์ ํจ์๋ฅผ ํ์ฉํ๋ ํ๋์ ๋ฐฉ๋ฒ๋ก ์ ์ธ ๋ถ๋ถ ์ ์ฉํ๋ฐ.. ๋ด๊ฐ a~z๊น์ง console ์ฐ๋ ํ์๋ฅผ ์ ์ดํ๊ณ ์ถ์ผ๋ฉด ์ฝ๋๊ฐ ๋๋ฌด ๋ณต์กํด์ง๋ค.. -> Callback Hell -- ์์ฑ์ ์
์ฅ์์๋ ํฌ๊ฒ ๋ฌธ์ ๊ฐ ์๋ ์๋ ์์ผ๋ ์ด๊ฑธ ์ถํ์ ๋๊ตฐ๊ฐ ์ ์ง๋ณด์ ํ๋ค๊ณ ์๊ฐํ๋ฉด? hell ์ด๋ค...
[javascript] Async/Sync ๋๊ธฐ ๋น๋๊ธฐ BasicChaining ๊ตฌํ (+Promise ๊ตฌํ)
2023.05.16
'part-2/02_promiseConstructor.js' ํ์ผ์ ๊ตฌํํ๊ณ , ํ
์คํธ๋ฅผ ํต๊ณผํฉ๋๋ค. callback์ด๋ผ๋ ๋งค๊ฐ๋ณ์(parameter) ๋์ , Promise์ resolve, reject ํจ์๋ฅผ ์ด์ฉํ์ธ์. part-2/03_basicChaining.js์, ์์ ์์ฑํ getDataFromFilePromise๋ฅผ ์ด์ฉํด์ ํ์ด์ผ ํฉ๋๋ค. fs ๋ชจ๋์ ์ง์ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋๋๋ค. getDataFromFilePromise๋ฅผ ์ด์ฉํด, 'files/user1.json' ํ์ผ๊ณผ 'files/user2.json' ํ์ผ์ ๋ถ๋ฌ์ค๊ณ , ๋ ํ์ผ์ ํฉ์ณ์ ์ต์ข
์ ์ผ๋ก ๋ ๊ฐ์ฒด๊ฐ ๋ด๊ธด ๋ฐฐ์ด์ ๋ง๋๋ ๊ฒ์ด ๋ชฉํ์
๋๋ค. ํ์ผ ๊ฒฝ๋ก๋ฅผ ์ฐพ์ ๋, user1Path ๋ฐ user2Path๋ฅผ ์ด์ฉํ์ธ์. then์ด ์ด๋ค ..
515 ์์
ํ์ ๋ด์ฉ ๋ฉ๋ชจ
1
2023.05.15
1. each // [ for-each ] // 1. collection(๋ฐฐ์ด ํน์ ๊ฐ์ฒด)๊ณผ ํจ์ iteratee(๋ฐ๋ณต๋๋ ์์
)๋ฅผ ์ธ์๋ก ์ ๋ฌ๋ฐ์ (iteratee๋ ํจ์์ ์ธ์๋ก ์ ๋ฌ๋๋ ํจ์์ด๋ฏ๋ก callback ํจ์) // 2. collection์ ๋ฐ์ดํฐ(element ๋๋ property)๋ฅผ ์ํํ๋ฉด์ // 3. iteratee์ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ธ์๋ก ์ ๋ฌํ์ฌ ์คํํฉ๋๋ค. _.each = function (collection, iteratee) { // TODO: ์ฌ๊ธฐ์ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. if (Array.isArray(collection)) { for (let idx = 0; idx ์ธ์๊ฐ ์ง์ํ๋ณ ์กฐ๊ฑด์ ๋ถํฉํ๋ ์ง์ ๋ํ ๊ฒฐ๊ณผ ๊ฐ์ true ๋ก ๋ฑ์ด ์ค๊ฑฐ์ if (์ง์ํ๋ณ(์ง์ํ๋ณ ์ธ์๊ฐ..
230512 ์ง๋ฌธ ๋ต๋ณ ์ค๋น
2023.05.15
[ ES5 ] function BbangFrame(zearyo1, zearyo2){ this.base = zearyo1; this.main = zearyo2; } var creambbang = new BbangFrame('๋ฐ๊ฐ๋ฃจ', 'ํฌ๋ฆผ') console.log(creambbang) var strawberrybbang = new BbangFrame('์๊ฐ๋ฃจ','๋ธ๊ธฐ') console.log(strawberrybbang) [ ES6 ] class BbangFrame2{ constructor(zearyo1,zearyo2){ this.base = zearyo1; this.main = zearyo2; } } let patbbang = new BbangFrame2('๋ฐ๊ฐ๋ฃจ','ํฅx2') console.log(p..
[Javascript] ๋ด์ฅ ๊ณ ์ฐจ ํจ์
2023.05.03
1. filter : ๋ฐฐ์ด ๋ฉ์๋ - ๋ชจ๋ ๋ฐฐ์ด์ ์์ ์ค์์ ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์๋ฅผ ๊ฑธ๋ฌ๋ด๋ ๋ฉ์๋ - filter ๋ฉ์๋ ์ฌ์ฉ ์์ // ํจ์ ํํ์ const isEven = function (num) { return num%2 === 0; } let arr = [1,2,3,4]; // '์ง์'๋ฅผ ํ๋ณํ๋ ํจ์๊ฐ ์กฐ๊ฑด์ผ๋ก์ filter ๋ฉ์๋์ ์ ๋ฌ์ธ์๋ก ์ ๋ฌ๋๋ค. let output = arr.filter(isEven); console.log(output); // ->> [2,4] const isLteFive = function (str) { // Lte = less than equal return str.length > ['hello', 'code', 'happy'] - filter ํ์ฉ ..
[Javascript] ๊ณ ์ฐจํจ์
2023.05.03
๊ณ ์ฐจํจ์ Higher order function - ํจ์๋ฅผ ์ ๋ฌ์ธ์(argument)๋ก ๋ฐ์ ์ ์๊ณ , ํจ์๋ฅผ ๋ฆฌํดํ ์ ์๋ ํจ์ ์ฝ๋ฐฑํจ์ callback function - ๋ค๋ฅธ ํจ์(caller)์ ์ ๋ฌ์ธ์(argument)๋ก ์ ๋ฌ๋๋ ํจ์ - ์ด๋ค ์์
์ด ์๋ฃ๋์์ ๋ ํธ์ถํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์์, ๋ต์ ์ ํ๋ฅผ ๋ปํ๋ ์ฝ๋ฐฑํจ์๋ผ๋ ์ด๋ฆ์ด ๋ถํ์ง ์ปค๋ง ํจ์ - ํจ์๋ฅผ ๋ฆฌํดํ๋ ํจ์ - ๋ฐ๋ก ์ปค๋ง ํจ์๋ผ๋ ์ฉ์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋, ๊ณ ์ฐจ ํจ์๋ผ๋ ์ฉ์ด๋ฅผ 'ํจ์๋ฅผ ์ ๋ฌ์ธ์๋ก ๋ฐ๋ ํจ์'์๋ง ํ์ ํด ์ฌ์ฉํ๊ธฐ๋ ํจ - ๊ณ ์ฐจ ํจ์๊ฐ ์ปค๋ง ํจ์๋ฅผ ํฌํจ 'ํจ์๋ฅผ ๋ฆฌํดํ๋ ํจ์'์ 'ํจ์๋ฅผ ์ ๋ฌ์ธ์๋ก ๋ฐ๋ ํจ์' ๋ชจ๋, ๊ณ ์ฐจ ํจ์๋ก ์ฌ์ฉ 1. ๋ค๋ฅธ ํจ์๋ฅผ ์ธ์๋ก ๋ฐ๋ ๊ฒฝ์ฐ function double(num) { re..

[๊ฐ์ ๋ฉด์ ์ฌ๋ก๋ก ๋ฐฐ์ฐ๋ ๋๊ท๋ชจ ์์คํ
์ค๊ณ ๊ธฐ์ด] 15์ฅ. ๊ตฌ๊ธ ๋๋ผ์ด๋ธ ์ค๊ณ
2023.04.13
1๋จ๊ณ. ๋ฌธ์ ์ดํด ๋ฐ ์ค๊ณ ๋ฒ์ ํ์ ๊ธฐ๋ฅ์ ์๊ตฌ์ฌํญ ํ์ผ ์ถ๊ฐ. ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ผ๋ก๋ ๊ตฌ๊ธ ๋๋ผ์ด๋ธ ์์ผ๋ก drag-and-drop ๊ฐ๋ฅํ๋๋ก ํ์ผ ๋ค์ด๋ก๋ ์ฌ๋ฌ ๋จ๋ง์ ํ์ผ ๋๊ธฐํ. ํ ๋จ๋ง์์ ํ์ผ ์ถ๊ฐ ์ ๋ค๋ฅธ ๋จ๋ง์๋ ์๋์ผ๋ก ๋๊ธฐํ ํ์ผ ๊ฐฑ์ ์ด๋ ฅ ์กฐํ(revision history) ํ์ผ ๊ณต์ ํ์ผ์ด ํธ์ง๋๊ฑฐ๋ ์ญ์ ๋๊ฑฐ๋ ์๋กญ๊ฒ ๊ณต์ ๋์์ ๋ ์๋ฆผ ํ์ ๋น๊ธฐ๋ฅ์ ์๊ตฌ์ฌํญ ์์ ์ฑ: ์ ์ฅ์ ์์คํ
์์ ์์ ์ฑ์ ๋งค์ฐ ์ค์. ๋ฐ์ดํฐ ์์ค ๋ฐ์ํ๋ฉด ์๋จ ๋น ๋ฅธ ๋๊ธฐํ ์๋ ๋คํธ์ํฌ ๋์ญํญ: ๋๋ฌด ๋ง์ด ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์ ๋ถํธ ์ด๋ ๊ท๋ชจ ํ์ฅ์ฑ: ์์ฃผ ๋ง์ ์์ ํธ๋ํฝ๋ ์ฒ๋ฆฌ ๊ฐ๋ฅํด์ผ ํจ ๋์ ๊ฐ์ฉ์ฑ: ์ผ๋ถ ์๋ฒ์ ์ฅ์ ๊ฐ ๋ฐ์ํ๊ฑฐ๋, ๋๋ ค์ง๊ฑฐ๋, ๋คํธ์ํฌ ์ผ๋ถ๊ฐ ๋๊ฒจ๋ ์์คํ
์ ๊ณ์ ์ฌ์ฉ ๊ฐ๋ฅํด์ผ ํจ ๊ฐ๋ต..

[๊ฐ์ ๋ฉด์ ์ฌ๋ก๋ก ๋ฐฐ์ฐ๋ ๋๊ท๋ชจ ์ค๊ณ ์์คํ
๊ธฐ์ด] 14์ฅ. ์ ํ๋ธ ์ค๊ณ
2023.04.13
1๋จ๊ณ. ๋ฌธ์ ์ดํด ๋ฐ ์ค๊ณ ๋ฒ์ ํ์ ์๋์ ๊ฐ์ ๊ธฐ๋ฅ์ ๊ฐ๋ ๋น๋์ค ์คํธ๋ฆฌ๋ฐ ์๋น์ค ์ค๊ณ์ ์ด์ ์ ๋ง์ถ ์์ ๋น ๋ฅธ ๋น๋์ค ์
๋ก๋ ์ํํ ๋น๋์ค ์ฌ์ ์ฌ์ ํ์ง ์ ํ ๊ธฐ๋ฅ ๋ฎ์ ์ธํ๋ผ ๋น์ฉ infrastructure cost ๋์ ๊ฐ์ฉ์ฑ๊ณผ ๊ท๋ชจ ํ์ฅ์ฑ, ๊ทธ๋ฆฌ๊ณ ์์ ์ฑ ์ง์ ํด๋ผ์ด์ธํธ: ๋ชจ๋ฐ์ผ ์ฑ, ์น ๋ธ๋ผ์ฐ์ , ๊ทธ๋ฆฌ๊ณ ์ค๋งํธ TV ๊ฐ๋ต์ ๊ท๋ชจ ์ถ์ ์ผ๊ฐ ๋ฅ๋ ์ฌ์ฉ์DAU ์๋ 5๋ฐฑ๋ง(5million) ํ ์ฌ์ฉ์๋ ํ๋ฃจ์ ํ๊ท 5๊ฐ์ ๋น๋์ค ์์ฒญ 10%์ ์ฌ์ฉ์๊ฐ ํ๋ฃจ์ 1๋น๋์ค ์
๋ก๋ ๋น๋์ค ํ๊ท ํฌ๊ธฐ๋ 300MB ๋น๋์ค ์ ์ฅ์ ์ํด ๋งค์ผ ์๋ก ์๊ตฌ๋๋ ์ ์ฅ ์ฉ๋ : 150TB CDN ๋น์ฉ ํด๋ผ์ฐ๋ CDN์ ํตํด ๋น๋์ค๋ฅผ ์๋น์คํ ๊ฒฝ์ฐ CDN์์ ๋๊ฐ๋ ๋ฐ์ดํฐ์ ์์ ๋ฐ๋ผ ๊ณผ๊ธ ์๋ง์กด์ ํด๋ผ์ฐ๋ํ๋ก ํธC..

[๊ฐ์ ๋ฉด์ ์ฌ๋ก๋ก ๋ฐฐ์ฐ๋ ๋๊ท๋ชจ ์์คํ
์ค๊ณ ๊ธฐ์ด] 13์ฅ. ๊ฒ์์ด ์๋์์ฑ ์ค๊ณ
2023.04.13
๊ฒ์์ด ์๋์์ฑ (autocomplete, typehead, search-as-you-type, incremental search)์ ๊ดํ ์ด์ผ๊ธฐ. 1๋จ๊ณ. ๋ฌธ์ ์ดํด ๋ฐ ์ค๊ณ ๋ฒ์ ํ์ ์๊ตฌ์ฌํญ ๋น ๋ฅธ ์๋ต์๋ : ์ฌ์ฉ์๊ฐ ๊ฒ์์ด๋ฅผ ์
๋ ฅํจ์ ๋ฐ๋ผ ์๋์์ฑ ๊ฒ์์ด๋ ์ถฉ๋ถํ ๋นจ๋ฆฌ ํ์๋์ด์ผ ํจ ํ์ด์ค๋ถ ๊ณต์ ๋ฌธ์ ๊ธฐ์ค ์์คํ
์๋ต์๋๋ 100๋ฐ๋ฆฌ์ด ์ด๋ด์ฌ์ผ ํ๋ค ์ฐ๊ด์ฑ ์ ๋ ฌ : ์์คํ
์ ๊ณ์ฐ ๊ฒฐ๊ณผ๋ ์ธ๊ธฐ๋(popularity) ๋ฑ์ ์์ ๋ชจ๋ธ(ranking model)์ ์ํด ์ ๋ ฌ๋์ด ์์ด์ผ ํ๋ค. ๊ท๋ชจ ํ์ฅ์ฑ : ๋ง์ ํธ๋ํฝ์ ๊ฐ๋นํ ์ ์๋๋ก ํ์ฅ ๊ฐ๋ฅํด์ผ ํ๋ค. ๊ณ ๊ฐ์ฉ์ฑ : ์์คํ
์ ์ผ๋ถ์ ์ฅ์ ๊ฐ ๋ฐ์ํ๊ฑฐ๋, ๋๋ ค์ง๊ฑฐ๋, ์์์น ๋ชปํ ๋คํธ์ํฌ ๋ฌธ์ ๊ฐ ์๊ฒจ๋ ์์คํ
์ ์ง์ ๊ฐ๋ฅํด์ผ ํจ ๊ฐ๋ต์ ๊ท๋ชจ ์ถ์ ..