Document
42
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)์ ์ํด ์ ๋ ฌ๋์ด ์์ด์ผ ํ๋ค. ๊ท๋ชจ ํ์ฅ์ฑ : ๋ง์ ํธ๋ํฝ์ ๊ฐ๋นํ ์ ์๋๋ก ํ์ฅ ๊ฐ๋ฅํด์ผ ํ๋ค. ๊ณ ๊ฐ์ฉ์ฑ : ์์คํ
์ ์ผ๋ถ์ ์ฅ์ ๊ฐ ๋ฐ์ํ๊ฑฐ๋, ๋๋ ค์ง๊ฑฐ๋, ์์์น ๋ชปํ ๋คํธ์ํฌ ๋ฌธ์ ๊ฐ ์๊ฒจ๋ ์์คํ
์ ์ง์ ๊ฐ๋ฅํด์ผ ํจ ๊ฐ๋ต์ ๊ท๋ชจ ์ถ์ ..
[๊ฐ์ ๋ฉด์ ์ฌ๋ก๋ก ๋ฐฐ์ฐ๋ ๋๊ท๋ชจ ์์คํ
์ค๊ณ ๊ธฐ์ด] 12์ฅ. ์ฑํ
์์คํ
์ค๊ณ
2023.04.13
1๋จ๊ณ. ๋ฌธ์ ์ดํด ๋ฐ ์ค๊ณ ๋ฒ์ ํ์ ํ์ด์ค๋ถ ๋ฉ์ ์ , ์์ฑ(WeChat), ์์ธ ์ฑ(WhatsApp) ์ฒ๋ผ 1:1 ์ฑํ
์ ์ง์คํ๋ ์ฑ, ์ฌ๋(Slack) ๊ฐ์ ๊ทธ๋ฃน ์ฑํ
์ ์ค์ ์ ๋ ์
๋ฌด์ฉ ์ฑ, ๊ฒ์ ์ฑํ
์ ์ฐ์ด๋ ๋์ค์ฝ๋(Discord) ๊ฐ์ด ๋๊ท๋ชจ ๊ทธ๋ฃน์ ์ํต๊ณผ ์๋ต์ง์ฐ(latency)์ด ๋ฎ์ ์์ฑ ์ฑํ
์ ์ง์คํ๋ ์ฑ ์๊ตฌ์ฌํญ 1. ์๋ต์ง์ฐ์ด ๋ฎ์ 1:1 ์ฑํ
๊ธฐ๋ฅ 2. ์ต๋ 100๋ช
๊น์ง ์ฐธ์ฌํ ์ ์๋ ๊ทธ๋ฃน ์ฑํ
๊ธฐ๋ฅ 3. ์ฌ์ฉ์์ ์ ์ ์ํ ํ์ ๊ธฐ๋ฅ 4. ๋ค์ํ ๋จ๋ง ์ง์. ํ๋์ ๊ณ์ ์ผ๋ก ์ฌ๋ฌ ๋จ๋ง์ ๋์ ์ ์ ์ง์ 5. ํธ์ ์๋ฆผ 6. 5,000๋ง DAU(Daily Active User: ์ผ๋ณ ๋ฅ๋ ์ฌ์ฉ์ ์) ์ฒ๋ฆฌ 2๋จ๊ณ. ๊ฐ๋ต์ ์ค๊ณ์ ์ ์ ๋ฐ ๋์ ๊ตฌํ๊ธฐ ์ด ์ฑํ
์๋น์ค๋ ์๋ ๊ธฐ๋ฅ ..
[๊ฐ์ ๋ฉด์ ์ฌ๋ก๋ก ๋ฐฐ์ฐ๋ ๋๊ท๋ชจ ์์คํ
์ค๊ณ ๊ธฐ์ด] 11์ฅ. ๋ด์ค ํผ๋ ์์คํ
์ค๊ณ
2023.04.13
๋ด์ค ํผ๋ ๋? ํ ํ์ด์ง ์ค์์ ์ง์์ ์ผ๋ก ์
๋ฐ์ดํธ ๋๋ ์คํ ๋ฆฌ๋ค๋ก, ์ฌ์ฉ์ ์ํ ์ ๋ณด ์
๋ฐ์ดํธ, ์ฌ์ง, ๋น๋์ค, ๋งํฌ, ์ฑ ํ๋(app activity), ๊ทธ๋ฆฌ๊ณ ํ์ด์ค๋ถ์์ ํ๋ก์ฐํ๋ ์ฌ๋๋ค, ํ์ด์ง, ๋๋ ๊ทธ๋ฃน์ผ๋ก๋ถํฐ ๋์ค๋ '์ข์์(likes)' ๋ฑ์ ํฌํจํ๋ ๊ฒ ๋น์ทํ ์ ํ์ ๋ฌธ์ ๋ก ํ์ด์ค๋ถ ๋ด์ค ํผ๋, ์ธ์คํ๊ทธ๋จ ํผ๋, ํธ์ํฐ ํ์๋ผ์ธ ์ค๊ณ ๋ฑ์ด ์๋ค๊ณ ํ๋ค. 1๋จ๊ณ. ๋ฌธ์ ์ดํด ๋ฐ ์ค๊ณ ๋ฒ์ ํ์ ๋ชจ๋ฐ์ผ ์ฑ, ์น ๋ชจ๋ ์ง์ํด์ผํจ ์๋ก์ด ์คํ ๋ฆฌ ์ฌ๋ฆฌ๊ธฐ ๋ฐ ๋ณด๊ธฐ ๋ค ๊ฐ๋ฅํด์ผํ๋ค. ํผ๋ ๋์ด์ ๊ฐ๋จํ๊ฒ ์๊ฐ ํ๋ฆ ์ญ์(reverse chronological order)์ผ๋ก : ์ต์ ์ ํ ๋ช
์ ์ฌ์ฉ์๋ ์ต๋ 5000๋ช
์ ์น๊ตฌ๋ฅผ ๊ฐ์ง ์ ์์ ํธ๋ํฝ ๊ท๋ชจ๋ ์ฝ 1,000๋ง๋ช
ํผ๋์๋ ์ด๋ฏธ์ง๋ ๋น๋์ค..