๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ

CSS์ ๊ฝ, Flexbox
[CSS] ํ๋ฉด ์ค์ ๋ฐฐ์น (Flexbox/Grid) | Engineering Blog by Dale Seo [CSS] ํ๋ฉด ์ค์ ๋ฐฐ์น (Flexbox/Grid) Engineering Blog by Dale Seo www.daleseo.com ์ด๋ฒ์์ผ๋ง๋ก CSS Flex๋ฅผ ์ตํ๋ณด์ ์ด ํํ ๋ฆฌ์ผ์ “์ฐจ์ธ๋ CSS ๋ ์ด์์” ์๋ฆฌ์ฆ์ ์ฒซ๋ฒ์งธ ํฌ์คํธ์ ๋๋ค. ์ด๋ฒ์์ผ๋ง๋ก CSS Flex๋ฅผ ์ตํ๋ณด์ ์ด๋ฒ์์ผ๋ง๋ก CSS Grid๋ฅผ ์ตํ๋ณด์ ๋ฒ์จ๋ถํฐ ์คํฌ๋กค์ ์๋ฐ์ด ๋๊ปด์ง๊ณ ,‘์ข ํธ์ํ๊ฒ ๋ studiomeal.com *์๋ฆฌ๋์ ๋ฌด๋ฃ ์ ํ๋ธ ์์์ ๋ณด๊ณ ๋ฐฐ์ด ๊ฒ๋ค์ ์ ๋ฆฌํ ํฌ์คํ ์ ๋๋ค! 1. flexbox๋ ์ปจํ ์ด๋ ๋ฐ์ค์ ์ ์ฉ๋๋ ์์ฑ๊ฐ๋ค์ด ์กด์ฌํ๊ณ , ๊ทธ ์ปจํ ์ด๋ ๋ฐ์ค ์์ ์๋ ์์ดํ ๋ค์ ์ ์ฉ๋๋ ์์ฑ๊ฐ๋ค๋ ์กด์ฌ..

Html/css ๊ตฌ์ฑํ๋๋ฐ ์ ์ฉํ ์ฌ์ดํธ
0. ์์ด๋์ด/์น ๋ ์ด์์ ๋ธ๋ ์ธ ์คํ ๋ฐ https://excalidraw.com/ 1. ์ค์๊ฐ Html/css/js ์ ์ฉ์ํ ๋ณผ ์ ์๋ ์ฌ์ดํธ JS Bin - Collaborative JavaScript Debugging 2. ์๊น์ ๊ณ ๋ฅด๊ณ ์ถ์ ๋, ์๊น ๊ณ ๋ฅด๋ฉด uI ์ปฌ๋ฌ ๋ฐฐ์น๊ตฌ์ฑ๊น์ง ๋ฏธ๋ฆฌ๋ณด์ฌ์ค๋ค Color Tool - Material Design 3. ์ด๋ฏธ์ง ํ์ผ์ ์ํ๋ ํฌ๊ธฐ๋ก ๋ณ๊ฒฝ, 16x16 / 32x32 / 64x64 / 128x128 / 256x256๋ฑ https://www.iloveimg.com/ko 4. ์ด๋ฏธ์ง ํ์ผ๋ก ํ๋น์ฝ ์์ฑ https://www.websiteplanet.com/ 5. ๋์์ด๋๋ค์ด ์ ๊ณตํด์ฃผ๋ ๋ฌด๋ฃ ์์ด์ฝ ๋ชจ์ https://fontawesome.com/ svg t..
![[ํ์
์คํฌ๋ฆฝํธ] ๊ฐ์ฒด์งํฅ์ ๊ฝ composition(๋ถ์ : ์์์ ๋ฌธ์ ์ )](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3KjwP%2FbtrAaOEBJh3%2FBZDNnsW9umfnHUkzbyWpq0%2Fimg.png)
[ํ์ ์คํฌ๋ฆฝํธ] ๊ฐ์ฒด์งํฅ์ ๊ฝ composition(๋ถ์ : ์์์ ๋ฌธ์ ์ )
Favor Composition over inheritance "์์ ๋์ ์ ์ปดํฌ์ง์ (๋ป: ๊ตฌ์ฑ์์๋ค, ๊ตฌ์ฑ)์ ๋ ์ ํธํ์ธ์." ํ์ ์คํฌ๋ฆฝํธ OOP์ ๊ฝ, composition์ ๋ค๋ฃจ๊ธฐ ์ ์ ์์์ ๋ฌธ์ ์ ์ ๋ํด์ ๋จผ์ ์ ํ์๊ฐ ์๋ค. ๋ฏธ๋ฆฌ ๋งํ์๋ฉด, composition์ ๋ณต์กํ๊ฒ ์์์ ์์ง ๊ตฌ์กฐ๊ฐ ๊ธธ์ด์ง๋ ๋์ ์ ์์์ ๋ ๋ฒจ์ ํ ๋จ๊ณ๋ก๋ง ์ ์งํ ์ ์๋๋ก ๋์์ฃผ๋ ๊ธฐ๋ฒ์ด๋ค. ๋ฌธ์ ์ ๋ ๋ฏธ๋ฆฌ ๋งํ์๋ฉด, composition์ฉ์ผ๋ก ๊ฐ์ ธ๋ค ์ฐ๋ ํด๋์ค์ ๊ฐ์ ธ์ค๋ ํด๋์ค ์ฌ์ด์ ์ปคํ๋ง์ด ๋๋ฌด ์ฌํ๋ค๋ ์ ์ด ์๋ค.( ๊ฐ์ ธ๋ค ์ฐ๋ ํด๋์ค๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ๋ค๋ฅธ ํด๋์ค๋ก ๋ฐ๊พธ๊ณ ์ถ๋ค๋ฉด, ๊ฐ์ ธ๋ค ์ฐ๋ ํด๋์ค์ ์ฐ๊ฒฐ๋ ๋ชจ๋ ํด๋์ค์ ๋ค์ด๊ฐ์ ์ฝ๋๋ฅผ ์ ๋ฐ์ดํธํด์ผ ํ๋ค.-> ๋ ํ์ฅ์ด ์ฝ๊ณ ์ ์ฐํ ํ ํฌ๋์ ๋ค์ ํฌ์คํ ์..
![[ํ์
์คํฌ๋ฆฝํธ] ๋คํ์ฑ(polymorphism)์ด ๋ญ๊ฐ ์ข์ ๊ฒ์ผ๊น?](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2UAxo%2FbtrAaPbYbH4%2FZ94i6X6VSieDk7NPvwxgek%2Fimg.png)
[ํ์ ์คํฌ๋ฆฝํธ] ๋คํ์ฑ(polymorphism)์ด ๋ญ๊ฐ ์ข์ ๊ฒ์ผ๊น?
ํฌ์คํ ์ ๋ชฉ์ ํด๋ต์ ์๋ ์ฝ๋์ ์๋ค. ์๋ ์ฝ๋๋ฅผ ๋ณด๊ณ ๋, ์ง์ํ๊ธฐ ์ด๋ ต๋ค๋ฉด ํฌ์คํ ๊ฐ์ฅ ์๋์ ๊ธฐ์ฌํด๋์๋ค! //ํํธ1 const machines = [ new CoffeMachine(25, 25), new CafeLatteMachine(15, 25, 25, "S1"), new saltCoffeeMachine(5, 10), new CoffeMachine(25, 25), new CafeLatteMachine(15, 25, 25, "S1"), new saltCoffeeMachine(5, 10), ]; machines.forEach((machine) => { console.log("------------์ปคํผ๋จธ์ ๊ฐ๋~!------------"); console.log(machine.makeCoffee(1..
![[ํ์
์คํฌ๋ฆฝํธ] ์ปคํผ๋จธ์ ํด๋์ค <-์์- ์นดํ๋ผ๋ผ๋จธ์ ํด๋์ค](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKvYsQ%2Fbtrz5wYkvaA%2FIrQe0KMvf9b7LWbAfgg82K%2Fimg.png)
[ํ์ ์คํฌ๋ฆฝํธ] ์ปคํผ๋จธ์ ํด๋์ค <-์์- ์นดํ๋ผ๋ผ๋จธ์ ํด๋์ค
์ปคํผ๋จธ์ ํด๋์ค๊ฐ ๋ค์๊ณผ ๊ฐ์ด ์๋ค. type CoffeeCup = { orderShot: number; hasMilk: boolean; }; interface CoffeeMaker { makeCoffee(shots: number): CoffeeCup; } //์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ํด๋์ค์ด๋ค. class CoffeMachine implements CoffeeMaker { private static ONE_SHOT_CAPSULE: number = 3; private static ONE_CUP_WATER: number = 10; static makeMachine(beans: number, water: number): CoffeMachine { return new CoffeMachine(beans, wat..
[ํ์ ์คํฌ๋ฆฝํธ] OOP ๋คํ์ฑ, ์์ ๊ฐ๋ ํ์คํ๊ฒ ์ ๋ฆฌ
๋คํ์ฑ ์ ์ : ๋คํ์ฑ์ด๋ ํ๋์ ์ด๋ฆ(๋ฐฉ๋ฒ)์ผ๋ก ๋ง์ ์ํฉ์ ๋์ฒํ๋ ๊ธฐ๋ฒ์ด๋ค. ํจ๊ณผ : ๊ฐ๋ ์ ์ผ๋ก ๋์ผํ ์์ ์ ํ๋ ํจ์๋ค์ ๋๊ฐ์ ์ด๋ฆ์ ๋ถ์ฌํ ์ ์์ผ๋ฏ๋ก ์ฝ๋๊ฐ ๋ ๊ฐ๋จํด์ง๋ ํจ๊ณผ๊ฐ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ฝ๋์ ์ฌ์ฌ์ฉ, ์ฝ๋ ๊ธธ์ด ๊ฐ์๊ฐ ๋์ด ์ ์ง๋ณด์๊ฐ ์ฉ์ดํ๋๋ก ๋์์ค๋ค. ์์ ์ค๋ช ์ ์กฐ๊ธ ๋ ํ์ด ์ค๋ช ํ์๋ฉด, ์๋์ ๊ฐ๋ค. ๋คํ์ฑ์ [์์]์์ ๋น๋กฏ๋๋ ํฐ ์ฅ์ ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ์ฝ๋ค. ๋คํ์ฑ์ ์์์ ํตํด ๋์ผ ์ด๋ฆ์์๋ ๊ทธ ๊ธฐ๋ฅ์ ๋ณ๊ฒฝํ๋ ๊ฒ์ ๊ฐ๋ฅํ๊ฒ ํด์ค๋ค. ๋คํ์ฑ : ๊ฐ์ ์ด๋ฆ์ ๋ถ๋ ๋๋ฐ ๋ค๋ฅธ ํ์์ ํ๋ ๊ฒ(๊ฐ์ ๋์์ด์ง๋ง ๋ค๋ฅธ ๊ณผ์ ๊ณผ ๊ฒฐ๊ณผ๊ฐ ๋์ด) [ํด๋์ค ์์] extends ํด๋์ค ์์์ ์ ์ด์ฉํ๋ฉด ๊ณตํต์ ์ธ ๊ธฐ๋ฅ์ ๊ทธ๋๋ก ์ฌ์ฌ์ฉํ๋ฉด์, ์์ํด๋์ค์์๋ง ์กฐ๊ธ ๋ ์์ํด๋์ค์ ํน..
[ํ์ ์คํฌ๋ฆฝํธ] ์ ๋ค๋ฆญ ํ์ ๋ณ์นญ
type MyEvent = { target: T; type: string; }; type ButtonEvent = MyEvent; let myEvent: MyEvent = { target: "ํ๊ธธ๋์ด๋ฒคํธ", type: "click", }; type TimedEvent = { event: MyEvent; from: Date; to: Date; }; function trggerEvent(event: MyEvent): void { console.log(event); } trggerEvent({ target: "ํฉ์ง์ด์ด๋ฒคํธ", type: "mouseover", }); ์ ๋ค๋ฆญ ํ์ ๋ณ์นญ : ํ์ ๋ณ์นญ๊ณผ ํ ๋น ๊ธฐํธ(=) ์ฌ์ด์๋ง ์ ๋ค๋ฆญ ํ์ ์ ์ ์ธํ ์ ์๋ค. type MyEvent = { target: T; ty..
![[ํ์
์คํฌ๋ฆฝํธ] 2๊ฐ ์ด์์ ์ ๋ค๋ฆญ ์ ์ฉํด๋ณด๊ธฐ(์ถ๋ก , ๋ช
์, ํ๋ก๋ฏธ์ค ์ ๋ค๋ฆญ๊น์ง)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLj8Yn%2FbtrzZz2jP9b%2FKMeozITQ9XtknvEy8LbKK1%2Fimg.png)
[ํ์ ์คํฌ๋ฆฝํธ] 2๊ฐ ์ด์์ ์ ๋ค๋ฆญ ์ ์ฉํด๋ณด๊ธฐ(์ถ๋ก , ๋ช ์, ํ๋ก๋ฏธ์ค ์ ๋ค๋ฆญ๊น์ง)
2๊ฐ ์ด์์ ์ ๋ค๋ฆญ ์ ์ฉํด๋ณด๊ธฐ ์ด์ function map(array: unknown[], f: (item: unknown) => unknown): unknown[] { let result = []; for (let i = 0; i U): U[] { let result = []; for (let i = 0; i < array.length; i++) { result[i] = f(array[i]); } return result; } : ์ธ์ ๋ฐฐ์ด ๋ฉค๋ฒ์ ํ์ ์ ๋๋ณํ๋ T, ๋ฐํ ๋ฐฐ์ด ๋ฉค๋ฒ ํ์ ์ ๋๋ณํ๋ U..
[ํ์ ์คํฌ๋ฆฝํธ] ํจ์ํธ์ถ ์๊ทธ๋์ฒ์ ์ ๋ค๋ฆญ
function filter(array: T[], f: (item: T) => boolean): T[] { let result = []; // tslint:disable-next-line: prefer-for-of for (let i = 0; i boolean): T[] }; let names = [{ ์ด๋ฆ: "smith" }, { ์ด๋ฆ: "kate" }, { ์ด๋ฆ: "max" }]; //1. T๋ number๋ก ํ์ ๋จ console.log(filte..
[ํ์ ์คํฌ๋ฆฝํธ] ํธ์ถ ์๊ทธ๋์ฒ(ํ์ ์๊ทธ๋์ฒ)๋?
ํจ์ ์๊ทธ๋์ฒ๋ ์ปดํ์ผ๋ฌ๊ฐ ํจ์๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํ ๊ตฌ์ฑ์์๋ฅผ ๋งํ๋ค. ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ง๋ค ์๊ทธ๋์ณ๋ฅผ ๊ตฌ์ฑํ๋ ์์๊ฐ ๋ค๋ฅด์ง๋ง ๋์ฒด์ ์ผ๋ก ์๋์ ์์๊ฐ ํฌํจ๋์ด ์๋ค. ํจ์์ ์ด๋ฆ ๋งค๊ฐ๋ณ์(Parameter)์ ๊ฐ์ (์ต์ ๋) ๋งค๊ฐ๋ณ์์ ์๋ฃํ (์ต์ ๋) ๋ฐํํ๋ ๊ฐ์ ์๋ฃํ ๋ง์ฝ ๋ ํจ์์ ์ด๋ฆ, ๋งค๊ฐ๋ณ์์ ๊ฐ์, ๊ทธ ํ์ ์ด ๋ชจ๋ ๊ฐ๋ค๋ฉด ์ด ๋ ํจ์์ ์๊ทธ๋์ฒ๋ ๊ฐ๋ค๊ณ ํ ์ ์๋ค. ํจ์์ ์ ์ฒด ํ์ ์ ํํํ๋ ๋ฐฉ๋ฒ function sum(a: number, b: number): number { return a + b; } numberํ์ ์ ์ธ์ ๋๊ฐ๋ฅผ ๋ฐ์ numberํ์ ์ ๋ฐํํ๋ค๋ ๋ป์ ํ์ ์คํฌ๋ฆฝํธ์ ํจ์ ํ์ ๋ฌธ๋ฒ (a: number, b: number) => number ์ด๋ฐ ์์ ํํ์ ํธ์ถ ์..