Review
์๋
ํ์ธ์ :)dawonny ์
๋๋ค. ์ค๋ ๋ฆฌ๋ทฐํ ์ฑ
์ [ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ์คํ๋ง ์ธ ์ก์
(ํ ๋ง์ค ๋นํ๋ ์ง์)] ์
๋๋ค! ์ ๋ ํ์ฌ ํ๋ก ํธ์๋๋ฅผ ๊ณต๋ถํ๊ณ ์์ด์ ํ์คํ ํด๋ผ์ฐ๋๋ ์คํ๋ง์ ๊ดํ ๋ด์ฉ์ ๋ง์ด ์ ํ ์ผ์ ์๋์ ์ผ๋ก ์ ์๋๋ฐ์. ์ด๋ฒ์ ์ข์ ๊ธฐํ๋ก ์ฑ
์ ์ฝ์ด๋ณด๊ฒ ๋์ด์ ์ด ์ฐธ์ ํด๋ผ์ฐ๋์ ๋ํด์ ๊ด์ฌ์ ๊ฐ์ ธ๋ณด๋ ๊ฒฝํ์ ํด๋ณด์! ์ถ์์ต๋๋ค. ์ฑ
์ ์ฒซ ๋ชฉ์ฐจ๋ฅผ ๋ณด์๋๋ฐ ๊ทธ๋์ ๋ชฐ๋๋ ์ ๊ณผ ๋ถ์กฑํ๋ ์ง์์ ์ฑ์ธ ์ ์์ ๊ฑฐ๋ ๊ธฐ๋๊ฐ์ด ๋ค์์ต๋๋ค. ์ฑ
์ ๊ตฌ์ฑ์ 16๊ฐ์ ๋ชฉ์ฐจ๊ฐ 4๊ฐ์ ํํธ๋ก ๋๋์ด์ ธ ์์๊ณ ์ฑ
์ ์ฝ๊ธฐ ์ ๊ฐ์ฅ ๊ธฐ๋ํ๋ ํํธ๋ ์ฒซ ๋ฒ์งธ ํํธ์
๋๋ค. ์ฒซ ๋ฒ์งธ ํํธ๋ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ์ ๋ํ ์ค๋ช
์ด ์์๋๋ฐ ๊ทธ๋์ ์ฃผ์๋ค์๋ ๊ฐ๋
๋ค์ ์ ๋ฆฌํ ์ ์๋ ์ ์ด ์ข์์ต๋๋ค. ๋ํ, ํด๋ผ์ฐ๋ ํ๊ฒฝ..
Finds & Notes
์ค๋๋ง์ ๊นํ๋ธ ๋ฆฌ๋๋ฏธ ๊พธ๋ฏธ๊ธฐ๋ฅผ ํ๋ค๊ฐ ๊ธฐ์ ์คํ ๋ถ๋ถ์ ์์ฑํด๋ณด๊ณ ์ ธ์ ์์น๋ฅผ ํ๋ ์ค ๊ด์ฐฎ์ ๊ฒ์ ๋ฐ๊ฒฌํด์ ๊ณต์ ํฉ๋๋ค! ๊ฒฐ๊ณผ๋ฌผ์ ์์ ๊ฐ์์. 8๊ฐ์ง ์ ๋ ์ถ๊ฐํด๋ดค๋๋ฐ, ์์ ๊ฒ ๊ฐ์์. ์ ์ด๋ฏธ์ง์ฒ๋ผ ๊ธฐ์ ์คํ์ ๋ฑ์งํํ๋ก ๋ง๋๋ ๋ฐฉ๋ฒ์ด ์ ์ผ ๋ง์ด ์ฐ๋ ๋ฐฉ๋ฒ์ธ ๊ฒ ๊ฐ์๋ฐ์. ์ ๋ ์ด๊ฒ ๋ง๊ณ , ์ข ๋ ๋ฅ๊ธ๋ฅ๊ธํ๊ณ ๋ก๊ณ ๊ฐ ๋ ๋๋ณด์ด๋ ๋์์ธ์ ์ํ์ด์! ๋ง์นจ ํธ๋ฆฌํ๊ฒ ์ถ๊ฐํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋, ๋ ํฌ์งํฐ๋ฆฌ๋ฅผ ์ฐพ์ ์ ์์๋๋ฐ์. ๋ฐ๋ก skill-icons ์
๋๋ค. ์ฌ์ฉ๋ฒ ์ฌ์ฉ๋ฒ์ ๊ฐ๋จํฉ๋๋ค. [](https://skillicons.dev) ์ ์ฝ๋๋ฅผ Github README ์ ๋ณต๋ถํ๊ธฐ๋ง ํ๋ฉด..
Develop/React.js
ํ๋ก์ ํธ์์ ๋ฉ๋ด ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๋ฉด์ useRef ๊ธฐ๋ฅ์ ์ด ์ฐธ์ ์ ์ดํดํ๊ณ ์จ๋ณด๋ ค๊ณ ํ๋ค. ํ๋ฒ๊ฑฐ ๋ชจ์์ ๋ฉ๋ด ๋ฒํผ์ ํด๋ฆญํ๋ฉด → ๋ฉ๋ด๊ฐ ํผ์ณ์ง๋ค ํ๋ฒ๊ฑฐ ๋ชจ์์ ๋ฉ๋ด ๋ฒํผ์ ๋ค์ ํด๋ฆญํ๋ฉด → ๋ฉ๋ด๊ฐ ๋ซํ๋ค ํผ์ณ์ง ๋ฉ๋ด๋ฅผ ์ ์ธํ ํ๋ฉด์ ๋ค๋ฅธ ๋ถ๋ถ์ ํด๋ฆญํ๋ฉด → ๋ฉ๋ด๊ฐ ๋ซํ๋ค ๐ ์ด๊ฑธ ๊ตฌํํ๊ณ ์ ํจ!! useState, useRef, useEffect ํ
์ ์ฌ์ฉํด์ ๋ฉ๋ด์ ์ด๋ฆผ/๋ซํ/๋ฉ๋ด ๋ฐ๊นฅ ์์ญ ํด๋ฆญ์ ๋ฉ๋ด ๋ซํ ๊ธฐ๋ฅ์ ๊ตฌํํด๋ณด์. const [isMenuOpen, setIsMenuOpen] = useState(false); const menuRef = useRef(); // ๋๋กญ๋ค์ด ๋ฉ๋ด์ ๋ํ ์ฐธ์กฐ ๋จผ์ useState ํ
์ ์ฌ์ฉํด์ ๋ฉ๋ด์ ์ด๋ฆผ/๋ซํ ์ํ๋ฅผ ๋ํ๋ด๋ isMenuOpen ์ด๋ผ๋ ์..
Develop/React.js
TailwindCSS ์ ํฐํธ ์ ์ฉํ๋ ๋ฒ์ ์ ๋ฆฌํด๋ณด๋ คํ๋ค! ์ด์ ์ ํ์๋๋ฐ ์๊ฐ์ด ์๋์ ๋ค์ ์ฐพ์๋ดค๋ค. ๋์ค์ ๋ ์ ์ฐพ์๋ณด๋๋ก ... ํฐ๋ ๋ค์ด๋ก๋์ ์ ์ฅ https://fonts.google.com/ Browse Fonts - Google Fonts Making the web more beautiful, fast, and open through great typography fonts.google.com ์ฐ์ ์ ์ฌ์ดํธ์์ ํฐํธ๋ฅผ ๋ค์ด๋ฐ๋๋ค ํฐํธ ttf ํ์ผ์ ํ๋ก์ ํธ์ ๋ฃ์ด๋๋ค. ๋๋ src > assets ํด๋์ fonts ๋ผ๋ ํด๋๋ฅผ ํ๋ ๋ง๋ค์ด์ ์ฌ๊ธฐ์ ttf ํ์ผ์ ์ ์ฅํ๋ค. font-face @font-face { font-family: "Roboto"; src: url("../src/..
Review
์๋
ํ์ธ์! ์ด๋ฒ์ ์ฝ์ ๋์๋ ์ ๊ฐ ํ์์ ์ ํ๋ ์น, ํ๋ก ํธ์๋ ๋ถ์ผ์ ์กฐ๊ธ ๋ค๋ฅธ AI์ ๊ด๋ จ๋ ๋์์์ด์. ๋์์ ์ ๋ชฉ์ [๋ฉํฐ๋ชจ๋ฌ ์์ฑ AI ์ธ์ฌ์ด๋] ์
๋๋ค. ์ ๋ ํ์์ ๊ฐ๋ฐ์ ํ ๋, ๊ฐ์ธ ์์
์ ํ ๋์๋ GPT4๋ฅผ ์ ๋ง ์ ์ฌ์ฉํ๊ณ ์๋๋ฐ์! ์ ๋ฃ ๋ฒ์ ์ ๊ตฌ๋
ํ๊ณ ์ฌ์ฉํ๊ณ ์์๋งํผ, ์ด์ GPT4๊ฐ ์๋ ๋๋ก๋ ๋์๊ฐ์ง ๋ชปํ ๊ฒ ๊ฐ์ต๋๋ค. ์ ์ผ ์ ๋ช
ํ ๋ชจ๋ธ์ด ํํ๋ค ์์๋ GPT ์ด์ง๋ง ์ ๋ ์ด ์ฑ
์ ํตํด์ ๋ค๋ฅธ ๋ชจ๋ธ๋ค๋ ์ด๋ค ๋ค์ํ ํน์ง์ด ์๋์ง ์ ์ ์์์ด์. ๋ฉํฐ๋ชจ๋ฌ ์์ฑ AI ์ ๊ธฐ์ด์ ์ธ ๊ฐ๋
๋ถํฐ,์ด๋ป๊ฒ ํ์ฉํ๋ฉด ์ข์์ง,๊ทธ๋ฆฌ๊ณ ๋ฏธ๋์๋ ์ด๋จ์ง ์ ๋ง๊น์ง ๋ค๋ฃจ๊ณ ์์ด์ ์์ฑ AI ์ ๊ด์ฌ์ด ์์ผ์ ๋ถ๋ค์ด๋ผ๋ฉด ํฅ๋ฏธ๋กญ๊ฒ ์ฝ์ด๋ณผ ๊ตฌ์์ด ๋ง์ ๊ฒ ๊ฐ์์ต๋๋ค. ๋ํ ์ ์ ํ ๋ฉํฐ์์ฑ AI์ ..
Develop/TypeScript
keyof keyof ํค์๋๋ object ํ์
์ ๋ชจ๋ key ๋ฅผ ๊ฐ์ ธ์์ ์ ๋์จ ํ์
์ผ๋ก ๋ฐํํ๋ค. ์๋์ ์์๋ฅผ ๋ณด์ interface Person { age: number; name: string; } type PersonKeys = keyof Person; // "age" | "name" ์์์ PersonKeys ํ์
์ age์ name ์ค ํ๋์ ๋ฌธ์์ด ๊ฐ๋ง ๊ฐ์ง ์ ์๋ ๋ฆฌํฐ๋ด ํ์
์ด๋ค. Mapped Types Mapped Types ๋ฅผ ์ด์ฉํ๋ฉด, ๊ธฐ์กด์ ํ์
์ ์๋ก์ด ํ์
์ผ๋ก ๋ณํํ ์ ์๋ค. object ์ ๊ฐ ์์ฑ์ ๋ํด ๋ฐ๋ณต์ ์ผ๋ก ์ ์ฉ์ ํ ์ ์์ด์ ํ์
๋ณํ ๊ณผ์ ์ ๊ฐ๊ฒฐํ๊ฒ ๋ง๋ค์ด ์ค๋ค. type TypeChanger = { [Key in keyof MyType]: NewType;..
Develop/TypeScript
interface์ implements ๋ฅผ ์ฌ์ฉํ class ํ์
ํ์ธ interface ๋ object ์ ํ์
์ ์ง์ ํ ๋ ์ฌ์ฉํ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๋ ๋ค๋ฅธ ์ฉ๋๋ก, class ์ ํ์
์ ํ์ธํ ๋์๋ ์ฌ์ฉํ ์ ์๋ค. ์ด ๋, implements ํค์๋๋ ํ์ํ๋ค. ์๋์ ์์๋ฅผ ๋ณด์. class Car { model: string; price: number = 1000; constructor(a: string) { this.model = a; } } let ๋ถ๋ถ์ด = new Car('morning'); ์์ Car ํด๋์ค์์ ์์ฑ๋ ๊ฐ์ฒด๋ค์ model ๊ณผ price ์์ฑ์ ๊ฐ์ง๋ค. ํด๋์ค๊ฐ ํน์ ์์ฑ์ ๊ฐ์ง๊ณ ์๋์ง ํ์
์ผ๋ก ํ์ธํ๊ณ ์ถ์ ๋, interface ์ implements ํค์๋๋ฅผ ์ฌ..
Develop/TypeScript
๊ฐ๋
d.ts ํ์ผ์ TS์์ ํ์
์ ์๋ฅผ ์ ์ฅํ๋ ํ์ผ์ด๋ค. ์ฌ๊ธฐ์ 'd' ๋ Definition ์ ์ฝ์์ด๋ค. ์ด ํ์ผ๋ค์ TS ์ปดํ์ผ ๊ณผ์ ์์ JS๋ก ๋ณํ๋์ง ์์ผ๋ฉฐ, ํ์
์ ๋ณด๋ง ํฌํจํ๋ค. ์ฃผ๋ก 2๊ฐ์ง ์ฉ๋๋ก ์ฌ์ฉ๋๋ค. 1. ํ์
์ ์ ์ ์ฅ : ํ์
์ ๋ณด๋ง์ ๋ถ๋ฆฌํ์ฌ ์ ์ฅํ๊ณ , ํ์ํ ๊ณณ์์ import ํด์ ์ฌ์ฉํ๋ค 2. ๋ ํผ๋ฐ์ค ์ฉ : ํ๋ก์ ํธ์์ ์ฌ์ฉํ๋ ํ์
์ ์ ๋ฆฌํด๋์ ๋ฌธ์๋ก ํ์ฉํ ์ ์๋ค. d.ts ํ์ผ์์ ํ์
์ ์ํ๊ธฐ d.ts ํ์ผ ๋ด์์๋ ์ฃผ๋ก type ํค์๋, interface, ํจ์ ํ์
์ ์๋ฅผ ํฌํจํ ์ ์๋ค. ํจ์ ๋ณธ๋ฌธ์ ์ ์ํ ์๋ ์๊ณ , ํ๋ผ๋ฏธํฐ๊ณผ return ํ์
๋ง ์ง์ ํ ์ ์๋ค. export type Age = number; export type Multiply ..
Review
์๋
ํ์ธ์์ค๋ ๋ฆฌ๋ทฐํ ๋์๋ [๋ชจ๋ ๋ฆฌ์กํธ Deep Dive] ์
๋๋ค. ์ ๊ฐ ์น ํ๋ก ํธ์๋ ํ์ต์ ํ๋ฉด์ ๊ฐ์ฅ ์ฃผ์ํ๊ฒ ๊ณต๋ถํ๊ณ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ React ์ธ ๋งํผ, ์ ๋ง ์ฝ์ด๋ณด๊ณ ์ถ์๋ ์ฑ
์ธ๋ฐ์.์ด ์ฑ
์์๋ React ๊ฐ๋ฐ์๋ก์จ ์์๋์ด์ผ ํ ๋ด์ฉ์ ์ ๋ง ๋ค์ํ๊ฒ ๋ค๋ฃจ๊ณ ์์ด์.์ฑ
์์ ๋ค๋ฃจ๋ ๋ด์ฉ์ ๋์ดํด๋ณด์๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค. -๋ฆฌ์กํธ์์ ์์ฃผ ์ฐ๋ ์๋ฐ์คํฌ๋ฆฝํธ-ํจ์, ํด๋์ค, ํด๋ก์ , ์ด๋ฒคํธ ๋ฃจํ, ๋น๋๊ธฐ ํต์ ,-๋ฆฌ์กํธ ์ฝ๋๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์์ฑํ๊ธฐ ์ํ ํ์
์คํฌ๋ฆฝํธ ํ์ฉ๋ฒ-JSX, ๊ฐ์ DOM๊ณผ ๋ฆฌ์กํธ ํ์ด๋ฒ-ํจ์/ํด๋์ค ์ปดํฌ๋ํธ, ๋ ๋๋ง-๋ฉ๋ชจ์ด์ ์ด์
, ๋ฆฌ์กํธํ
-์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง, Next.js ํบ์๋ณด๊ธฐ-์ํ๊ด๋ฆฌ, ๋๋ฒ๊น
ํ๊ธฐ ์ํ ๋ฆฌ์กํธ ๊ฐ๋ฐ ๋๊ตฌ-์ข์ ๋ฆฌ์กํธ ์ฝ๋ ์์ฑ์ ์ํ ํ๊ฒฝ ๊ตฌ์ถ, ๋ฆฌ์กํธ..
Develop/TypeScript
JS ํ์ผ์ ์ ์ธ๋ ๋ณ์ TS ํ์ผ์์ ์ฌ์ฉํ๊ธฐ JS ํ์ผ์์ ์ ์ธ๋ ๋ณ์๋ฅผ TS ํ์ผ์์ ์ฌ์ฉํ๊ณ ์ถ์ ๋์๋ declare ํค์๋๋ฅผ ์ฌ์ฉํ๋ค. declare ํค์๋๋ฅผ ์ฌ์ฉํ๋ฉด TS ํ์ผ ๋ด์์ JS ํ์ผ์ ์ ์๋ ๋ณ์๋ ํจ์์ ํ์
์ ๋ช
์ํ ์ ์๋ค. declare let a: number; ์ ์์์ฒ๋ผ TS ํ์ผ์ declare ๋ฅผ ์ ์ธํ๋ฉด '๋ณ์ a ๋ number ํ์
์ด๋ฉฐ, ์ด๋ฏธ ์ด๋๊ฐ์ ์ ์๋์ด ์๋ค' ๋ผ๊ณ TS ์ปดํ์ผ๋ฌ์๊ฒ ์๋ฆฌ๋ ๊ฒ์ด๋ค. declare global 'declare global' ์ TS ๋ชจ๋ ๋ด์์ ์ ์ญ ๋ณ์๋ ํ์
์ ์ ์ธํ ๋ ์ฌ์ฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก TS ํ์ผ์ ์์ฒด scope ๋ฅผ ๊ฐ์ง๊ณ ์์ด, ํ์ผ ๋ด์์ ์ ์ธ๋ ๋ณ์๋ ํ์
์ ๊ทธ ํ์ผ ๋ด์์๋ง ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค. ํ์ง๋ง ๋..
Develop/TypeScript
Tuple type Tuple ์ ํ์
์คํฌ๋ฆฝํธ์์ ๊ณ ์ ๋ ์์ ์์๋ฅผ ๊ฐ์ง๋ฉด์, ๊ฐ ์์์ ํ์
์ด ๋ช
์์ ์ผ๋ก ์ง์ ๋ ๋ฐฐ์ด์ ํ์
์ด๋ค. ๊ฐ ์์์ ํ์
์ ๋ค๋ฅผ ์ ์๊ณ , ๋ฐฐ์ด์ ๊ธธ์ด๋ ๊ณ ์ ๋๋ค. ์๋ฅผ ๋ค์ด ์ฒซ๋ฒ์งธ ์์๊ฐ ๋ฌธ์์ด์ด๊ณ , ๋๋ฒ์งธ ์์๊ฐ ์ซ์์ธ ๋ฐฐ์ด์ ์ ์ํ๊ณ ์ถ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ ์ ์๋ค. let exampleTuple: [string, number] = ['hello', 42]; Tuple ์์ฉ : Rest Parameters ํจ์์ ๋งค๊ฐ๋ณ์๋ก '...' (rest ์ฐ์ฐ์)๋ฅผ ์ฌ์ฉํ๋ฉด ์ธ์๋ฅผ ๋ฐฐ์ด๋ก ๋ฐ์ ์ ์๋ค. ์ด ๊ธฐ๋ฅ์ tuple ์ด๋ ๊ฒฐํฉํด๋ณด์. ์๋ฅผ ๋ค์ด ์ฒซ๋ฒ์งธ ์ธ์๋ ๋ฌธ์์ด์ด๊ณ , ๋๋ฒ์งธ ์ธ์๋ ์ซ์์ฌ์ผ ํ๋ ๊ฒฝ์ฐ์ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ ์ ์๋ค. args ๋ผ๋ ๋ฐฐ์ด์ string..
Finds & Notes
README๋ฅผ ์์ฑํ๋ค๋ณด๋ฉด Architecture ์๊ฐ ๋ถ๋ถ์ ์๋์ ๊ฐ์ด ํด๋ ๊ตฌ์กฐ๋๋ฅผ ๋ฃ๊ณ ์ถ์ ๊ฒฝ์ฐ๊ฐ ์๋ค. ๊ตฌ๊ธ๋ง ํด๋ณด๋๊น ์ฝ๊ฒ ํ ์ ์๋ VSCode ํ์ฅ ํ๋ก๊ทธ๋จ์ด ์๊ธธ๋ ์๊ฐํ๋ค. VSCode Extension ์์ file-tree-generator ๋ฅผ ์ค์นํ๋ค ์ํ๋ ํด๋์์ ์ค๋ฅธ์ชฝ ํด๋ฆญ์ ํ๊ณ [Generate to Tree] ๋ฅผ ํด๋ฆญํ๋ค ๊ทธ๋ผ ์ด๋ ๊ฒ ํ๋ก์ ํธ ๊ตฌ์กฐ๋๊ฐ ๋ณด๊ธฐ์ข๊ฒ ๋ง๋ค์ด์ ธ์ ๋์จ๋ค. ์์ด์ฝ์ [icon on] [icon off] ๋ฒํผ์ ํตํด์ ๋ง๋ค์๋, ์ง์ธ์๋ ์๋ค. ๋ด์ฉ์ ๋ณต์ฌํด์ README ์์ฑ ๋์ ์ถ๊ฐํ ๋ ์ ์๋์ ๋ฐฑํฑ์ 3๊ฐ์ฉ ์ถ๊ฐํ๋ฉด ์์ฑ! ``` (๋ณต์ฌํ ๋ด์ฉ ๋ถ์ฌ๋ฃ๊ธฐ) ``` ์์ฃผ ์ธ ๊ฒ ๊ฐ๋ค!
Review
์๋
ํ์ธ์ dawonny์
๋๋ค. ์ด๋ฒ์ ์ฝ์ด๋ณธ ๋์์ ์ ๋ชฉ์ [ํ๋ก๋ํธ ๋งค๋์ง๋จผํธ์ ๊ธฐ์ (๋งท ๋ฅด๋ฉ์ด ์ง์)]์
๋๋ค ์ ๋ ํ๋ก์ ํธ ๊ฐ๋ฐ ๊ณผ์ ์์ ํ์๋ค๊ณผ ์ํตํ๋ฉฐ, PM ์ญํ ์ ์ํํ๋ ํ์๊ณผ์ ํ์
๊ฒฝํ๋ ์์ฃผ ์์๋๋ฐ์. ํ์
๊ณผ์ ์ค์ ์ ๋ ํ๋ก๋ํธ ๋งค๋์ (PM) ์ง๋ฌด์ ๋ํด ์ ๋ง ์กด๊ฒฝ์ค๋ฌ์์ก๊ณ ๋ํ ๋งค๋ ฅ์ ๋๋ผ๊ฒ ํ์ต๋๋ค. ์ด ์ฑ
์ ํ๋ก๋ํธ ๋งค๋์ ๊ฐ ํ๋ก๋ํธ์ ์ฑ๊ณต์ ์ํด ๋์๊ฐ์ผ ํ ๋ฐฉํฅ๊ณผ ํ์ค์ ์ธ ๋ฌธ์ ๋ค์ ์์งํ๊ฒ ๋ค๋ฃน๋๋ค. ํนํ, ๊ฐ๋ฐ์, ๋์์ด๋, ์์, ์ฌ์ฉ์์์ ํจ์จ์ ์ธ ์ํต ๋ฐฉ๋ฒ์ ๋ํ ๋ด์ฉ์ ๋งค์ฐ ํฅ๋ฏธ๋กญ๊ฒ ๋ค๊ฐ์์ด์. ์ ๋ง ‘๋ชจ๋์’ ‘์’ ์ํตํ ์ ์๋ ์ฌ๋์ด์ด์ผ ๋๊ฒ ๊ตฌ๋ ์ถ๋๋ผ๊ตฌ์. ์ ์๋ ๋ค์ํ ๋ฌธ์ ์ํฉ์ ์๋๋ฆฌ์ค๋ก ๋ณด์ฌ์ฃผ๋ฉด์, ์ด๋ฐ ๋ฌธ์ ์ํฉ๋ค์ ํด๊ฒฐํ๊ธฐ ์ํ ์ค์ง์ ์ธ ์กฐ์ธ์..
Review
์๋
ํ์ธ์, dawonny์
๋๋ค.์ด๋ฒ์ ์ฝ์ด๋ณธ ์ฑ
์ [๊ฐ๋ฐ์ ์ค๋๋ ๋ง์ ํผํผํ๊ฒ ์ฑ์ฅํ๊ธฐ(ํผ์ค๋ค๋ฅด ์์ฌ๋๋ฒ ์ธ ์ง์)] ์
๋๋ค. ๋ค๋ฅธ ๊ฐ๋ฐ์ ๊ด๋ จ ์์ ๋ค๊ณผ๋ ์ ๋ชฉ๊ณผ ํ์ง์ ๋ถ์๊ธฐ๊ฐ ๋ฌ๋ผ์ ๊ทธ๋ฐ์ง ์ฒซ์ธ์์ด ๊ท์ฌ์ ์ด์. ์ด ์ฑ
์ ๊ฐ๋ฐ์๋ค์ ์ํ ์๊ธฐ๊ณ๋ฐ์ ๊ฐ์์ต๋๋ค!์ ๋ ์ฌ์ค ‘์ด๋ป๊ฒ ์ด์์ผํ๋ค.’, ‘์ฑ๊ณตํ๋ ๋ฐฉ์์ ์ด๋ ๋ค’ -์ ๊ฐ์ด ๋งํ๋ ์ฑ
๋ค์ ๋นํ์ ์ผ๋ก ์ฝ๊ณ ๋ถ๋ด์ค๋ฌ์์ ๊ฑฐ๋ฆฌ๋ฅผ ๋๊ฒ ๋๋๋ฐ์.์ด ์ฑ
์์๋ ๊ฐ๋ฐ์๋ค์ด ๋ณธ์ธ๋ค์ ์์ฐ์ฑ์ ์ด๋ป๊ฒ ๋์ผ ์ ์๋์ง, ์ด๋ฅผ ๋์ด๊ธฐ ์ํด์ ์ด๋ค ๊ตฌ์ฒด์ ์ธ ๋ฐฉ๋ฒ์ ์ ์ฉํด์ผํ๋์ง,์ด ๋ฐฉ๋ฒ์ ๋ํ ๊ณผํ์ ์ธ ๊ทผ๊ฑฐ๋ ๋ฌด์์ธ์ง์ ๋ํด์ ์์ธํ๊ฒ ์ค๋ช
ํด์ค๋๋ค. ๊ทธ๋์ ๊ต์ฅํ ํฅ๋ฏธ๋กญ๊ฒ ์ฝ์์ด์. ๋์๊ธฐ๊ณ ์ถ์ ๋ฌธ์ฅ์๋ ์ธ๋ฑ์ค๋ฅผ ๋ถ์ด๊ณ ํ์๋ ํด๊ฐ๋ฉด์ ์ฝ์๋๋ฐ, ๋๋ถ์ ์๊ธฐ๋ฐ์ฑ์..
Review
์๋
ํ์ธ์. dawonny ์
๋๋ค. ์ผ๋ง์ ์นด์ด์คํธ์์ ์ด๋ฆฌ๋ SPARCS 2024 ํด์ปคํค์ ๋ค๋
์์ต๋๋ค!์ ๊ตญ์์ 80๋ช
, ์ด 20ํ์ด ์ฐธ์ฌํ๊ฒ ๋๋ ํด์ปคํค์ด์๋๋ฐ์.์ ๋ PM / ๋์์ธ / iOS / ์๋ฒ ๊ฐ๋ฐ์ด ๋ค ๋๋... ๋ค์ฌ๋ค๋ฅํ ์น๊ตฌ์๊ฒ ๊ฐ์ด ๋๊ฐ์๊ณ ์กธ๋ผ์ 2์ธ์ผ๋ก ์ฐธ์ฌํ๊ฒ ๋์์ด์!(๊ฐ์ธ ๋๋ 2์ธ ํ ์ ์ฒญ์ด ๊ฐ๋ฅํ์ต๋๋ค) ๋ฐ์์ ์ผ์ ์ด ๋๋๊ณ ์นดํ์ ๊ฐ์ ๋ถ๋ด๋ถ๋ด ์ง์์๋ฅผ ์ฐ๊ณ ์ ์ถํ๋๋ฐ ํฉ๊ฒฉํ๋๋ผ๊ตฌ์!์ง์์๋ ์๋๊ณผ ๊ฐ์ด ์์ฑํ์ต๋๋ค.[์ง์ ๋๊ธฐ]์ ๋ ์ปดํจํฐ๊ณตํ๋ถ์ ์
ํํ ํ ์ฒ์์ ๊ฐ๋ฐ์๋ ํผ์ ๊ณต๋ถํ๊ณ ์ผํ๋ ์ง์
์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค. ํ์ง๋ง ์ปดํจํฐ๊ณตํ๋ถ ํํ์ฅ์ด๋ ๊ตฌ๊ธ ํ์ ๊ฐ๋ฐ์ ๋์๋ฆฌ ์ด์์ง ํ๋ ๋ฑ์ ํ๋ฉด์ ๊ฐ๋ฐ์์๊ฒ ํ์ํ ๊ฒ์ ์ํต๊ณผ ํ์
์ด๋ฉฐ, ๋จ์ํ ํ๋ก๊ทธ๋จ์ ๊ตฌํํ๋ ๊ฒ..
Develop/React.js
๋ฌธ์ Vite๋ก ์์ฑํ React ํ๋ก์ ํธ๋ฅผ ๊ฐ๋ฐํ๋ ๊ณผ์ ์์ ๋๋ react-router-dom ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํด์ ๋ผ์ฐํ
์ ์งํํ๋ค. import { Route, Routes } from "react-router-dom"; import TreeBranchView from "./pages/TreeBranchView"; import MemberBranchView from "./pages/MemberBranchView"; function App() { return ( ); } export default App; ์ฝ๋๋ฅผ ๋ชจ๋ ์์ฑํ๊ณ Vercel ๋ก ๋ฐฐํฌํ ํ ๋ฐฐํฌ๋ ์ฃผ์๋ก ์ ์ํ๋๋ฐ ๋ถ๋ช
๋ก์ปฌ์์๋ ์ ๋ผ์ฐํ
๋์ด ์ ์๋์๋ ์ฃผ์๊ฐ, Vercel๋ก ๋ฐฐํฌํ ์ฃผ์๋ก ๋ค์ด๊ฐ์ ๋์๋ 404: NOT_FOUNT..
Finds & Notes
Vite ์ผ๋ก ์์ฑํ React ํ๋ก์ ํธ๋ฅผ ๊ฐ๋ฐ ์๋ฒ์์ ์คํ์ํฌ ๋ ๋ณดํต ํฐ๋ฏธ๋์์ npm run dev ๋ก ์คํํ๋๋ฐ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ๋ก๋ ํ์ธํ ์ ์์ผ๋ฉด ์ข์ ๊ฒ ๊ฐ์์ ๋ฐฉ๋ฒ์ ์ฐพ์๋ดค๋ค. ๋งฅ๋ถ๊ณผ ์์ดํฐ์ ์ฌ์ฉํ๋ค๋ ์ ์ ํ์ ์ค๋ช
ํด๋ณด๊ฒ ๋ค. ๋ฐฉ๋ฒ 1. ๋จผ์ ์์ดํฐ๊ณผ ๋งฅ๋ถ์ ๋์ผํ ์์ดํ์ด์ ์ ์ํด์ผํ๋ค. 2. ๋งฅ๋ถ ํฐ๋ฏธ๋์์ ๋ค์๊ณผ ๊ฐ์ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ๋ค ipconfig getifaddr en0 ๊ทธ๋ฌ๋ฉด IP ์ฃผ์๊ฐ ๋จ๋๋ฐ, https:// ๋ก ๋ชจ๋ฐ์ผ์์ ์ฌํ๋ฆฌ๋ก ์ ์ํ๋ฉด ๋๋ค. ํ์ง๋ง ๋๋ ์ ๋๋ก ์ฐ๊ฒฐ๋์ง ์์์ ์ถ๊ฐ์ ์ธ ๊ณผ์ ์ ํ๋ ๋ ํด์ค์ผํ๋ค. ref:https://dev.to/bhendi/how-to-open-your-vite-dev-server-on-your-mobile-k1k 3. React ํ..
Develop/TypeScript
React ํ๋ก์ ํธ ์์ฑ ํ์
์คํฌ๋ฆฝํธ์ ์
ํ
์ด ์๋ฃ๋ ์๋ก์ด ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ ๋ฒ์ด๋ค npx create-react-app ํ๋ก์ ํธ๋ช
--template typescript ๋ง์ฝ ๊ธฐ์กด ํ๋ก์ ํธ์ ํ์
์คํฌ๋ฆฝํธ๋ง ์ถ๊ฐํ๊ณ ์ถ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ํฐ๋ฏธ๋์ ์
๋ ฅํ๋ค npm install --save typescript @types/node @types/react @types/react-dom @types/jest Typescript๋ก ๋ง๋ React ํ๋ก์ ํธ ์ผ๋ฐ ํ๋ก์ ํธ์ ๋ค๋ฅธ ์ ์ ์ปดํฌ๋ํธ ํ์ผ์ js ๊ฐ ์๋ tsx ํ์ฅ์๋ฅผ ์ฌ์ฉํด์ผํ๋ค๋ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ฉด ๋ฆฌ์กํธ ํ๋ก์ ํธ์์ typescript ๋ฌธ๋ฒ์ ์ด๋์ ์์ฉํ ์ ์์์ง ์์๋ณด์ JSX ํ์
์ง์ ๋ฆฌ์กํธ์์๋ ๋ณ์๋ ์๋ฃ์ ๋ฅผ ๋ด์์ ์ธ ์ ์๋ค. ๋ฆฌ์กํธ..
Review
์๋
ํ์ธ์ dawonny ์
๋๋ค. ๊ฐ๋ฐ์ ์ง๋ฌด๋ฅผ ํฌ๋งํ๋ ์ ๋ ๊ฐ๋ฐ์ ํ ๋์ ๋งฅ๋ถ์ด ์ข๋ค๋ ๋ง์ ์ ๋ง ์์์ด ๋ค์ด์๋๋ฐ์.์์ดํฐ, ์์ดํจ๋, ์ ํ์์น, ์์ดํ… ๋ชจ๋ ๊ฒ ๋ค ์ ํ๊บผ๋ฉด์ ์ ์ ๋
ธํธ๋ถ์ ๋ค๋ฅธ ๊ธฐ์
์ ํ์ ์ฐ๊ณ ์์์ด์.๊ทธ๋์ ์ ๋ 6๊ฐ์ ์ ์ฏค์ ์ฒ์์ผ๋ก ๋งฅ๋ถ์ ๊ตฌ๋งคํ๊ฒ ๋์๋๋ฐ, ์ ๋ง ๋ค๋ฅธ ๊ธฐ๊ธฐ๋ค๊ณผ์ ์ฐ๋์ฑ์ด ์ต๊ณ ๋๋ผ๊ตฌ์. ํ์ฌ ์์ฃผ ์ ์ฐ๊ณ ์์ด์!ํ์ง๋ง ์ง๊ธ๊น์ง ์จ์๋ ์๋์ฐ ๊ธฐ๋ฐ์ด๋์ ๊ฝค ๋ง์ด ๋ค๋ฅด๊ธฐ์ ์ฒ์์ ๋ง์ด ํค๋งธ๋ ๊ธฐ์ต์ด ๋๋ค์.์ฃผ๋ณ ๋งฅ๋ถ ์ ์ ์ง์ธ๋ค์ ๋ณด๋ฉด์ ์ค์ ์ด๋ ์ ์ฉํ ๊ธฐ๋ฅ๋ค์ ํ๋ํ๋ ๋ฌผ์ด๋ณด๊ณ ๊ตฌ๊ธ๋งํ๋ฉด์ ์ ๋ง์ ๋งฅ๋ถ ํ๊ฒฝ์ ์ด์ฌํ ์ปค์คํ
ํ์ด์. ๊ทธ๋ฌ๋ค ใ๋๋ค! ๋งฅ๋ถ&์์ด๋งฅ - ๋งฅOS ์๋
ธ๋งใ ๋์๋ฅผ ์ข์ ๊ธฐํ๋ก ๋ฐ์๋ณด๊ฒ ๋์๋๋ฐ์.์ฒ์์ ๋งฅ๋ถ์ ์์ ๋ ์ด ์ฑ
์ด ์..
Develop/TypeScript
Generic function ํจ์(x: unknown[]) { return x[0]; } let a = ํจ์([4,2]) console.log(a) ์์ ๊ฐ์ ์ฝ๋๋ฅผ ๋ณด์. unknown ํ์
์ array ์๋ฃ๋ฅผ ์
๋ ฅํ๋ฉด, array์ ๋งจ ์ ์ฒซ๋ฒ์งธ์ ์์๋ฅผ ๋ฆฌํดํด์ฃผ๋ ํจ์๊ฐ ์๋ค๊ณ ํด๋ณด์. console.log ๋ก ์ฝ์์ ์ฐํ a ์ ํ์
์ ๋ญ๊น? unknown ์ด๋ค. ์
๋ ฅํ๋ array ๋ unknown ํ์
์ด๊ธฐ ๋๋ฌธ์ด๋ค. function ํจ์(x: unknown[]) { return x[0]; } let a = ํจ์([4,2]) console.log(a + 1) ๋๋ฌธ์ ์ด๋ฐ ๊ฒฝ์ฐ์๋ ์๋ฌ๊ฐ ๋ ๊ฒ์ด๋ค. ์๋ํ๋ฉด a ๋ unknown ํ์
์ธ๋ฐ, ์ซ์์ธ 1์ ๋ํ๋ ค๊ณ ํ๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐ..
Develop/TypeScript
type import export a.ts ํ์ผ์ ์๋ ๊ฒ์ b.ts์์ ์ฐ๊ณ ์ถ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค. (a.ts) export type Name = string | boolean; export type Age = (a :number) => number; (b.ts) import {Name, Age} from './a' let ์ด๋ฆ :Name = 'kim'; let ํจ์ :Age = (a) => { return a + 10 } namespace ๊ณผ๊ฑฐ์๋ ์๋ฐ์คํฌ๋ฆฝํธ์ import export ๋ฌธ๋ฒ์ด ์์๋ค ๊ทธ๋์ ์ฝ๋๋ฅผ ์จ์ ๋ค๋ฅธ ํ์ผ๋ค์ ์ผ์ข
์ ์ฒจ๋ถ์ฒ๋ผ ํ๋๋ฐ ์ด๋ฌ๋ฉด ํ์ผ์ด ๋ง์์ง ์๋ก ๋ณ์๋ช
์ด ๊ฒน์น๋ ์ํ์ด ๋ฐ์ํ ์ ์์๋ค. ๊ทธ๋์ ์ธ๋ถํ์ผ์์ ์ฌ์ฉํ์ง ์์ ๋ณ์๋ค์ ํจ์๋ก ๊ฐ์์..
Develop/TypeScript
protected class ์ ๊ด๋ จํด์, extends ๋ผ๋ ๋ฌธ๋ฒ์ ์ฐ๋ฉด class ๋ฅผ ๋ณต์ฌํด์ ์ฌ์ฉํ ์ ์๋ค. ๊ทผ๋ฐ private ์ผ๋ก ์ ์ธํ ๊ฒ์ ๊ธฐ์กด class ์์์๋ง ์ฌ์ฉํ ์ ์๋ค. extends ๋ก ๋ง๋ class ์์ ์๋ณธ์ class ์์ฑ์ ์ฐ๊ณ ์ถ๋ค๋ฉด protected ๋ก ์ ์ธํ๋ฉด ๋๋ค. private ์ด๋ ๊ฐ์ผ๋ฉด์๋, extends ๋ class ์์์๋ ์ฌ์ฉ๊ฐ๋ฅํ๊ฒ ํด์ค๋ค. class User { protected x = 10; } class NewUser extends User { doThis(){ this.x = 20; } } NewUser class ๋ User class ๋ฅผ extends ํ๋ค. NewUser ์์ this.x ์ฒ๋ผ x ๋ฅผ ์ฐ๋ ค๊ณ ํ๋ฉด, ๊ธฐ์กด์ privat..
Develop/TypeScript
๊ฐ์ฒด ์งํฅ ์ธ์ด์์ ์ ๊ณตํ๋ public, private, static, protected ์ ๊ฐ์ ํค์๋๋ค์ ํ์
์คํฌ๋ฆฝํธ์์ ์ฌ์ฉ๊ฐ๋ฅํ๋ค. public ํ์
์คํฌ๋ฆฝํธ๋ class ์์์ public ํค์๋๋ฅผ ์ฌ์ฉ๊ฐ๋ฅํ๋ค class User { public name: string; constructor(){ this.name = 'kim'; } } let user1 = new User(); user1.name = 'park'; ์ ์ฝ๋์์๋ public ์ผ๋ก ์ ์ธ๋ name ์ด๋ผ๋ ์์ฑ์ด ์๋ค. ์ด๋ ๊ฒ name ์ฒ๋ผ public ์ด ๋ถ์ ์์ฑ์ user1๊ณผ ๊ฐ์ ์์ object ๋ค์ด ๋ง์๋๋ก ์ฌ์ฉ/์์ ์ด ๊ฐ๋ฅํ๋ค. ๋ง์ฝ public ์ ์ ๋ถ์ธ ์ฑ๋ก ๋ง๋ ๋ค๊ณ ํด๋, ๊ธฐ๋ณธ์ ์ผ๋ก ์๋์ผ๋ก ์๋ฌด๊ฒ๋ ์๋ถ์ธ ๊ฒฝ..
Develop/React.js
์๋น์ค ํ๋ณด ํ์ด์ง๋ฅผ ๋ง๋ค๋ฉด์ ์คํฌ๋กค์ ๋ฐ๋ผ์ ํ๋ฉด์ ํน์ ์ปดํฌ๋ํธ๊ฐ ๋ํ๋ ๋, ์์์ ์์ฐ์ค๋ฝ๊ฒ ์ฌ๋ผ์ค๋ ์ ๋๋ฉ์ด์
์ ์ ์ฉํด๋ณด๊ณ ์ถ์ด์ก์ต๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ํ ๊ตฌ๊ธ๋ง์ ํด๋ณด๋ react-reveal ๊ณผ framer motion ์ด๋ผ๋ 2๊ฐ์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐพ์ ์ ์์๋๋ฐ, react-reveal ์ ๋ง์ง๋ง ์
๋ฐ์ดํธ๊ฐ ์ค๋๋๊ธฐ๋ ํ๊ณ npm install ์ ํด๋ณด๋ ๋ฒ์ ๋๋ฌธ์ ์ถฉ๋์ด ๋๋ ๋ถ๋ถ์ด ์์ด, framer motion ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ํํ์ต๋๋ค. framer motion ์ค์น npm install framer-motion ์ ์ฉ ๋ฐฉ๋ฒ ์ผ๋จ ์ ๊ฐ ๊ตฌํํ๋ ค๋ ๊ฒ์ ๋ค์๊ณผ ๊ฐ์์ต๋๋ค. ์คํฌ๋กค์ ๋ฐ๋ผ์ ํ๋ฉด์ ์์ ์ปดํฌ๋ํธ๊ฐ ๋ํ๋๋ฉด, ์์์ปดํฌ๋ํธ์ ์ ๋๋ฉ์ด์
์ด ์คํ๋ ๊ฒ. ์คํฌ๋กค์ ์ฌ๋ ค์ ์์์ปดํฌ๋ํธ๊ฐ ..
Finds & Notes
ํ ํ๋ก์ ํธ๋ฅผ ๊ธฐํํ๋ฉด์, ์์คํ
์ค๊ณ์ ๋ํ ํ๋ก์ฐ์ฐจํธ(flow chart)๋ ์์คํ
๊ตฌ์กฐ๋๋ฅผ ๊ทธ๋ฆด ์ผ์ด ๋ง์ ๊ฒ์ด๋ค. ์ด ๋ ai ๋ฅผ ์ฌ์ฉํด์ ๊ทธ๋ฆฌ๋ ๋ฐฉ๋ฒ์ ์๊ฐํด๋ณด๋ ค๊ณ ํ๋ค. ๋ ๊ฐ์ง๋ง ์์ผ๋ฉด ๋๋๋ฐ, chatGPT์ mermaid live ์ฌ์ดํธ์ด๋ค. Flow Chart ๊ทธ๋ฆฌ๊ธฐ ๋จผ์ , chatGPT์ ๋ค์๊ณผ ๊ฐ์ด ํ๋กฌํํธ๋ฅผ ์์ฑํ๋ค. ๋๋ ์์๋ก ํ ํ๋ก์ ํธ์ ํ๋ก์ฐ์ฐจํธ๋ฅผ ๊ทธ๋ ค๋ณด๋ คํ๋ค. ์ด ~~~ ํ๋ก์ ํธ์์ ํ์์ด ๊ฐ์์ค์ ๋์ฌํ๊ณ ๋์ฌ๋ฅผ ์ทจ์ํ๋ฉฐ ๋์ฌ ์ฌ๋ถ๋ฅผ ํ์ธํ ์ ์๋ ์์คํ
์ mermaid.live์์ ์ฌ์ฉ๊ฐ๋ฅํ flowchart ์ฝ๋๋ก ์์ฑํด์ค ๋๋ ์ด ์ฝ๋๋ฅผ ๋ณต์ฌํด์ mermaid live ๋ผ๋ ์ฌ์ดํธ์ ๋ค์ด๊ฐ ์ผ์ชฝ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ ๊ณต๊ฐ์ ๋ถ์ฌ๋ฃ๊ธฐ๋ฅผ ํ๋ค. https://mer..
Review
์๋
ํ์ธ์. ์ผ๋ง์ ์ ๊ฑด๊ตญ๋ํ๊ต์์ ์ด๋ฆฐ MADC ์ ๋ค๋
์์ด์! ์ผ์ 2023๋
12์ 02์ผ (ํ ) ์คํ 01:00 - ์คํ 07:00 ์ฃผ์ต MobileAppDeveloper'sConference ํ์ฌ ๊ฐ์ Mobile App Developer’s Conference (์ดํ MADC)๋ 12์ 2์ผ, ๊ฑด๊ตญ๋ํ๊ต ํ์ํ๊ด์์ ๊ฐ์ต๋๋ Android, iOS, Flutter๋ฅผ ๋ชจ๋ ์์ฐ๋ฅด๋ ๊ตญ๋ด ์ต์ด์ ๋ชจ๋ฐ์ผ ๊ฐ๋ฐ์ ์ปจํผ๋ฐ์ค์
๋๋ค. ์ ์ธํ UI๋ผ๋ ์๋ก์ด ๊ธฐ์ ์ ๋ฑ์ฅ์ผ๋ก ์ธ ํ๋ซํผ์ ์ฐจ์ด๊ฐ ์ ์ ์ค์ด๋ค๊ณ ์๋ ๊ฐ์ด๋ฐ, MADC๋ ์ธ ํ๋ซํผ์ ๊ณตํต์ ๊ณผ ์ฐจ์ด์ ์ ๋ชจ๋ ์ดํด๋ณด๊ณ , ๊ฐ๋ฐ์๋ค์ด ์์ ์๊ฒ ๋ง๋ ํ๋ซํผ์ ์ ํํ ์ ์๋๋ก ๋์์ฃผ๋ ์๋ฆฌ์
๋๋ค. ๋ํ, ์ฃผ๋์ด ๊ฐ๋ฐ์๋ค์ ์ํ ํน๋ณํ ์ธ์
๋ ๋ง๋ จ๋์ด ์์ต..
Ambassador/DEVOCEAN YOUNG
์๋
ํ์ธ์. ๋ฐ๋ณด์
์ 2๊ธฐ๋ก ํ๋ํ ์๋ค์์
๋๋ค! ๋ฒ์จ ์๋ฃ์๊น์ง, 2๊ธฐ์ ๋ชจ๋ ํ๋์ด ๋ง๋ฌด๋ฆฌ๋์์ด์. 9๊ฐ์ ๋์ ๊ธธ๋ค๋ฉด ๊ธด ์๊ฐ์ธ๋ฐ ์ ๋ง ๋น ๋ฅด๊ฒ ์ง๋๊ฐ ๊ฒ ๊ฐ์์. ์ ๊ฐ ๋ฐ๋ณด์
์ 2๊ธฐ๋ก ํ๋ํ๋ฉด์ ์ฃผ๋ณ์์ ๋ฐ๋ณด์
์์ ๊ดํ ์ง๋ฌธ์ ๊ต์ฅํ ๋ง์ด ๋ฐ๊ณ , ์ธ์คํ๋ฅผ ํตํด์๋ ๋ฒ์จ 3๊ธฐ์ ๋ํด์ ๋ฌผ์ด๋ณด์๋ ๋ถ๋ค๋ ๊ณ์ ๋ฐ์. ๊ทธ๋์ ํ๋ฒ ์๋ฃ ํ๊ธฐ์ ํจ๊ป ๋ฐ๋ณด์
์์ ๋ํด์ ์๊ฐํด๋ณด๋ ํฌ์คํ
์ ์์ฑํด๋ณผ๊นํฉ๋๋ค. ๋ฐ๋ณด์
์์ด ๋ญ์ผ? ๋ฐ๋ณด์
์(DEVOCEAN YOUNG)์ SKT ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ์ธ '๋ฐ๋ณด์
'์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ํ๋ ๋ํ์ ํ
ํฌ ์ธํ๋ฃจ์ธ์ ์ธ๋ฐ์. ๊ฐ๋ฐ๊ณผ ํ๋ก๊ทธ๋๋ฐ ๊ด๋ จ ์ฝํ
์ธ ๋ค์ ์ฐฝ์ํ๋ฉฐ ๊ฐ๋ฐ์ ์ํ๊ณ ๋ด์ ์ํต๊ณผ ๊ณต์ ๋ฌธํ๋ฅผ ํ์ฐํ๋ ๊ฒ์ด ์ฃผ ํ๋์ด์์! ๋ฐ๋ณด์
(DEVOCEAN) ์ SKT๊ฐ SKํ์ด๋์ค,..
Review
์ค๋๋ง์ ํ๊ธฐ ์ปจํ
์ธ ์ธ ๊ฒ ๊ฐ๋ค! ์ด๋ฒ์ ์ฑ์ ์จ๋ฆฌ์ค๋ฉ์์ ์ด๋ฆฐ 2023 Devfest WebTech ์ ๋ค๋
์๋ค. GDG Korea WebTech์์ ์ค๋นํ ์คํ๋ผ์ธ ์ด๋ฒคํธ์ธ๋ฐ, ์ด๋ฒ์๋ "์ฑ
์ฐ๋ ๊ฐ๋ฐ์"๋ผ๋ ์ฃผ์ ์๋ค. GDG DevFest ๋ GDG ์ปค๋ฎค๋ํฐ์์ ์ ์ธ๊ณ์ ์ผ๋ก ์งํํ๋ ์บ ํ์ธ์ด๋ฉฐ ๊ทธ ์์๋ก ํ์ฌ GDG Songdo, Busan ๋ฑ์์๋ ์์๋ DevFest ์ฐธ๊ฐ์ ์ฒญ์ ๋ฐ๊ณ ์๋ ์ค์ด๋ค. ๊ฐ๋ฐ์์ธ๋ฐ ์ฑ
์ ์ด๋ค- ๋ผ๋ ์ฃผ์ ๊ฐ ๊ถ๊ธํ๊ธฐ๋ ํ๊ณ , ์ธ๋ฏธ๋ ์ค์ '๊ธฐ์ ๋ธ๋ก๊ทธ๋ฅผ ์ด์ํ๋ฉฐ ๊ฐ๋ฐ ์กฐ์ง์ ์ฑ์ฅ ๊ณผ์ ์ ๊ธฐ๋กํ๋ ๋ฐฉ๋ฒ' ์ ๊ด์ฌ์ด ์๊ธฐ๊ธฐ๋ ํด์ ์ผ๋ฆฌ๋ฒ๋ ํฐ์ผ์ ๊ตฌ๋งคํด ๊ฐ๋ค. ์๊ฐํ 14:40 ~ 15:00 - ์
์ฅ ๋ฐ ์ฐธ๊ฐ ๋ฑ๋ก 15:10 - ํค๋
ธํธ 15:10 - 15:40 ์ฑ
์ฐ๋ ๊ฐ๋ฐ์..
Develop/Flutter & Dart
๋ฌธ์ ์ด๋ฏธ์ง๋ฅผ ์ถ๊ฐํ๋๋ฐ 'unable to load image asset' ์ด๋ผ๋ ์ค๋ฅ๊ฐ ๋จ๋ฉด์ ์ด๋ฏธ์ง๊ฐ ๋ ๋๋ง ๋์ง ์๋๋ค. 1. pubspec.yaml ํ์ผ ์ ๋๋ก ์ผ๋์ง ํ์ธ ๋์ด์ฐ๊ธฐ๋ ์ฌ๋ฐ๋ฅด๊ฒ ์์ฑํ๋ค. 2. ์ด๋ฏธ์ง ๊ฒฝ๋ก๋ฅผ ์ ์ผ๋์ง ํ์ธ ์คํ์์ด ์ ์์ฑํ๋ค. 3. ์ตํ์ ์๋จ ์คํ์ํค๋ ๊ฑธ ์ค๋จํ๊ณ , ํฐ๋ฏธ๋์ ๋ค์ด๊ฐ flutter clean ๋ช
๋ น์ด๋ฅผ ์์ฑํ๊ณ enter ๋ฅผ ๋๋ฅธ๋ค. ์ดํ์ ์ฝ๋๋ค์ ์ค๋ฅ๊ฐ ๊ฐ์๊ธฐ ์์ฒญ ๋ง์ด ์๊ธฐ๋๋ฐ, ์ ๊ฒฝ์ฐ์ง๋ง๊ณ ๋ค์ ๋๋ฒ๊น
์ ์คํํ๋ค. ์ด๋ฏธ์ง๊ฐ ์ ๋ ๋๋ง ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
Develop/React.js
๊ด๋ฆฌ์ ํ์ด์ง์ ๊ฐ๋จํ ๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ค๊ณ ํ๋๋ฐ ๋ฐฑ์๋ ์์ด ๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ ๊ตฌํํด์ผํ๋ ์ํฉ์ด์๋ค. ํ์ง๋ง ๋จ์ํ๊ฒ ํน์ ๋น๋ฐ๋ฒํธ๋ฅผ ์
๋ ฅํ์ ๋ ํน์ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ค ์ ์๋๋ก ์ฝ๋๋ฅผ ์ง๋ฉด ์๋ก๊ณ ์นจ ํ์ ๋ ๋ค์ ๋ก๊ทธ์ธ์ ํด์ผํ๋ค๋ ๋ถํธํจ์ด ์์๋ค. ๊ทธ๋์ ์ด๋ค ๋ฐฉ์์ ์ธ๊น ์๊ฐํ๋ค๊ฐ ์ฟ ํค๋ฅผ ์ฌ์ฉํด๋ณด๊ธฐ๋ก ํ๋ค. ๋๋ ์ฟ ํค๋ฅผ ๊ตฌํํ๋๋ฐ react-cookie(๋ฆฌ์กํธ ์ฟ ํค)๋ฅผ ์ฌ์ฉํ๋ค. ์ฟ ํค๋ localStorage ๋ฅผ ์ด์ ์ ์ด ์ ์ด ์๋๋ฐ ์ด๊ฒ๊ณผ ์ ์ฌํ๋ค๊ณ ๋๊ผ๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก key์ value, ๋ง๋ฃ๊ธฐํ์ด ์๋ ์ ์ฅ์ ๊ฐ๋
์ด๋ฉฐ, ๋ธ๋ผ์ฐ์ ์ ์ ์ฅ์ด ๋๋ค. ๋ธ๋ผ์ฐ์ (ํด๋ผ์ด์ธํธ)์ 300๊ฐ๊น์ง ์ ์ฅ์ด ๊ฐ๋ฅํ๋ฉฐ 1๊ฐ์ ์ฟ ํค ๋น 4KB ์ ๋์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค๊ณ ํ๋ค. ์ค์น npm install reac..