+ it dev nextjs redis [REDIS] ๐ Node.js ์์ redis ๋ชจ๋ ์ฌ์ฉ๋ฒ (์บ์ฑ & ์ธ์ ์คํ ์ด)Node ํ๋ก์ ํธ์์ pm2๋ก ๋ค์ค ํด๋ฌ์คํฐ ์ธํ๋ผ๋ฅผ ๊ตฌ์ถํ๋ค๋ฉด ์ธ์ ๋ถ์ผ์น ๋ฌธ์ ๊ฐ ์๊ธฐ๊ฒ ๋ง๋ จ์ด๋ค. ๋ง์ผ ์๋ฒ๊ฐ ์ข ๋ฃ๋์ด ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ ๋ผ๊ฐ๋ฉด ์ ์์๋ค์ ๋ก๊ทธ์ธ์ด ๋ชจ๋ ํ๋ ค๋ฒ๋ฆฌ๊ฒ ๋๋ค. ๋ฐ๋ผ์ ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ธ์ ์์ด๋์ ์ค์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ธ๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๋ ํธ์ด๋ค. ์ด๋ ๊ฐ๋ฐ์๋ค์ด ๋ง์ด ์ฌ์ฉํ๋ ๊ฒ์ด Redis db์ด๋ค. ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํด๋ ๋์ง๋ง, ์ธ์ ์ ๋น ๋ฆฟ๋น ๋ฆฟํ๊ฒ ์๋ต์ ํด์ผ๋๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ธ ๋ ๋์ค๋ฅผ ์ฌ์ฉํ๋ค. ์ง๊ธ๋ถํฐ Node ํ๋ก์ ํธ์์ Redis์ ์ฐ๊ฒฐํ๊ณ ์ฌ์ฉํ๋ ๋ฒ์ ์์๋ณด์. Redis Database ์ค์น ๋ ๋์ค๋ฅผ ๋ก์ปฌ์ ์ค์นํด๋ ๋๊ณ , ํด๋ผ์ฐ๋๋ก๋ ์ฌ์ฉํ ์๊ฐ ์๋ค. ๋ง์์ ๋๋ ๊ฒ์ ๊ณจ๋ผ ์ค์นํ์. ๊ฐ์ธ์ ์ผ๋ก ๋ก์ปฌ ๋ณด๋ค๋ ํด๋ผ์ฐ๋๋ก ํ.. wono | discuss | tweet + it blog cloud (์ ๋ฆฌ) ย 7๊ฐ์ฌ ํด๋ผ์ฐ๋ ย ๋น ๋ฅด๊ฒ ๋ฐฐ์๋ณด์-2024ํด๋ผ์ฐ๋๋ย ์ฐ์ ํ๋๋ง ์ํ๋ฉด ๋๋ค. ๋ชจ๋ ๊ฒ์ ํ ์ ์๋ค. ๊ณ์ ์๋ก์ด ์๋น์ค๊ฐ ๋์ค๊ธฐ ๋๋ฌธ์ด๋ค. CSP (ํด๋ผ์ฐ๋ ์๋น์ค ์ ๊ณต์ ์ฒด) ? ๊ธ๋ก๋ฒ ํด๋ผ์ฐ๋ CSP - ย ์๋ง์กด, MS, Google, Oracle ๊ตญ๋ด ํด๋ผ์ฐ๋ CSP- ย ๋ค์ด๋ฒ ํด๋ผ์ฐ๋, ย Kakao Cloud , ๊ฐ๋น์ ํด๋ผ์ฐ๋ <1> ์๋ง์กด AWS <2> ๋ค์ด๋ฒ ํด๋ผ์ฐ๋ <3> wono | discuss | tweet + ์ฐ์ ํด๋ผ์ฐ๋ [๊ณต๊ฐ์ฐจํธ] ํ๊ตญ ํด๋ผ์ฐ๋ ํ๋ซํผ TOP10โฆ์๋ง์กดยทMSยท๊ตฌ๊ธยท๋ค์ด๋ฒยทKT ้ [๋ด์ค์คํ์ด์ค=๊น์ ์ ๊ธฐ์] ํ๊ตญ์์ ํด๋ผ์ฐ๋์๋น์ค(CSP) ์ด์ฉ ํ๋ซํผ์ ์๋ง์กด AWS๊ฐ 60.2%๋ก ๊ฐ์ฅ ๋์ ๊ฒ์ผ๋ก ๋ํ๋ฌ๋ค. 2์๋ MS ์ ์ (Azure)๋ก ์ด์ฉ ๋น์ค์ 24.0%์๋ค. ๊ณผํ๊ธฐ์ ์ ๋ณดํต์ ๋ถ๊ฐ 19์ผ ๋ฐํํ โ2023๋ ๋ถ๊ฐํต์ ์ฌ์ ์คํ์กฐ์ฌ ๊ฒฐ๊ณผโ์ ๋ฐ๋ฅด๋ฉด ํด๋ผ์ฐ๋์๋น์ค(CSP) ์ด์ฉ ํ๋ซํผ์ โฒ์๋ง์กด AWS, โฒMS ์ ์ (Azure)์ wono | discuss | tweet + it ops rdbms Aurora MySQL vs Aurora PostgreSQL wono | discuss | tweet + it ops nextjs ec2 AWS EC2๋ก Next.js ๋ฐฐํฌํ๊ธฐNext.js๋ Vercel์ด ๊ฐ๋ฐํ๊ณ ์๊ณ , ๋น์ฐํ Vercel์ ๋ฐฐํฌํ๋ ๊ฒ์ด ๊ฐ์ฅ ํจ์จ์ ์ด๋ผ ๋ฏฟ์ด ์์ฌ์น ์์ผ๋ฉฐ ๋ค๋ฅธ ๋ฐฐํฌ ๋ฐฉ์์ ์๊ฐ์น๋ ์์๋ค.๊ทธ๋ฐ ์ค๋งํ ์๊ฐ์ 'ํจ์จ' ๋๋ '์ ํ๊ณผ ์ง์ค' ์ด๋ผ๋ ํค์๋๋ก ํฉ๋ฆฌํ ํด์์์ง๋ ๋ชจ๋ฅด๊ฒ ๋ค. ๊ฒฐ๊ตญ Next.js ๋ฐฐ wono | discuss | tweet + it dev nextjs React์์ ์ค๋ณตํธ์ถ(aka. ๋ฐ๋ฅ)์ ๋ง๋ ์๋ฒฝํ ๋ฐฉ๋ฒ์์ธ ์๋ ํ์ธ์. ์ต๊ทผ์ ํ๋ฆฌํฐ ๋์ ํ๋ก ํธ์๋ ์ ํ์ ๋ง๋๋ ๊ฒ์ ๊ด์ฌ์ด ๋ง์๋ฐ์. ์ฌ์ํด๋ณด์ด๋ ๋ํ ์ผ์ ์ผ๋ง๋ ๋ฅ์ํ ์ฒ๋ฆฌํ๋๋๊ฐ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์์ ์ค๋ ฅ ์ฒ๋ ์ค ํ๋๋ผ๊ณ ์๊ฐํ์ด์. ์ ๋ ์ฌ๋ฌ ์์น๋ค์ ์ธ์ฐ๊ณ ์์ง๋ง, ์ค๋์ ์ค๋ณตํธ์ถ (aka ๋ฐ๋ฅ)์ ๋ฐฉ์งํ๋ ์๋ฒฝํ ๋ฐฉ๋ฒ์ ํ๊ตฌํด๋ณผ ๊ฒ์ ๋๋ค. ๋ฌธ์ ์ธ์ ์๋น์ค๋ฅผ ๊ฐ๋ฐํ๋ค๊ฐ, ์ค๋ณตํธ์ถ์ด ๋ฐ์ํด์ ์ฌ๋ฌ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ๊ฒฐ์ ์์ฒญ์ด 2๋ฒ ๋ค์ด๊ฐ ์๋ ์๊ณ , ๊ฒ์๋ฌผ ์์ฑ์ด 2๋ฒ ๋ ์๋ ์๊ณ , ๋๊ธ์ด 2๋ฒ ์จ์ง ์๋ ์์ต๋๋ค. ์ด๋ก ์ธํด ๋น์ฆ๋์ค์ ์ผ๋ก๋ ์ํฅ์ ๋ฏธ์น ์๋ ์์ต๋๋ค. ์๊ฒ๋ ์๋ฒ ์๋ฌ ์๊ฐ ๋ง์์ ธ์, noisy ํด์ง ์ ์์ฃ . ์ด๋งํผ ์ค์๋๊ฐ ๋๊ณ , ํ๋ก ํธ์๋ ํ๋ฆฌํฐ์ ํฐ ์ญํ ์ ํ๋ค๊ณ ์๊ฐํ๋๋ฐ์. ์ค์ ๋ก ์ ๋ ๋ช ํํ ํด.. wono | discuss | tweet + it dev nextjs [react ๋ฆฌ์กํธ] ์ด๊ฐ๋จ ์ค๋ณต ํด๋ฆญ ๋ชปํ๊ฒ ํ๊ธฐ (feat. ๋ก๋ฉํ๋ฉด)1. ์ด๋ป๊ฒ?state๋ฅผ ํตํด ๋ฒํผ์ ๋๋ฅด๋ฉด ์๋ฃ๋ ๋๊น์ง ๋ฒํผ์ ํด๋ฆญ ๊ธฐ๋ฅ์ ์์ ์ ์ค๋ณต ํด๋ฆญ์ ๋ชปํ๊ฒ ํจ. 2. ์ ์ฉ1) ๋ถ๋ฆฌ์ธ ํ์ ์ State ๋ฅผ ๋ง๋ค์ด ์ค๋ค. const [isBtnDisable, setIsBtnDisable] = useState(false); 2) ๋ฒํผ์ state (true, false) ๋๊ฐ์ง ์ํ๋ฅผ ์ ์ํด์ค๋ค.*์ฌ๊ธฐ์ ๋ฒํผ ๋์ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์๋ค. *ํด๋ฆญ ํ ์ฒ๋ฆฌ ์ค์ ์์ ํด๋ฆญ์ด ๋ถ๊ฐ๋ฅํ๊ฒ ํ์๋ค. - ํด๋ฆญ ์ (onClick ํ๋กํผํฐ๊ฐ ์์)isBtnDisable === false ์ผ ๋ ๋ฒํผ์ ์ด๋ ๊ณ // isBtnDisable === false && - ํด๋ฆญ ํ (onClick ํ๋กํผํฐ๊ฐ ์์)isBtnDisable === true ์ผ ๋ (ํด๋ฆญ ํ) ๋ฒํผ์ ์ด๋ ๋ค.. wono | discuss | tweet + it dev nextjs (React) ์ปค๋จธ์ค ํ๋ก์ ํธ : ๊ฒฐ์ ๋ฒํผ ์ค๋ณต ํด๋ฆญ ๋ฐฉ์งํ๊ธฐ๋ฒ๊ทธ๋ฅผ ์ ๋ฐํ๋ ์ ์ ์ "์ด์ํ๋"์ ์์ธกํ๋ฉด์ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ๋ ์ฌ๊ฐ ์ฌ์ด ์ผ์ด ์๋๋ค. wono | discuss | tweet + it dev nextjs NextJS 13 <button onClick={}> Event handlers cannot be passed to Client Component props wono | discuss | tweet + it dev nextjs script Next.js์์ Script Component ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐNext.js๋ก ์คํฌ๋ฆฝํธ ํ๊ทธ๋ฅผ ์ถ๊ฐํ๋ค ์ ์ฐจ ์ถ๊ฐํ๋ค ๋ณด๋ฉด \_document.tsx ์์ ๋ง์ script ํ๊ทธ๋ค์ด ์๊ฒจ๋๊ฒ ๋ ์ ์ด ์์์ด์. ์ฒ์์๋ \_document ํ์ผ์ด ๋ญ์ง๋ ๋ชจ๋ฅด๊ณ ๋ชจ๋ ์คํฌ๋ฆฝํธ ํ๊ทธ ๋ค์ ๋ค ์ง์ด ๋ฃ์๋ ์ ๋ ์์์ด์. ์ด๋์ ๊ผญ ๊ณต wono | discuss | tweet + it dev nextjs script NextJS API: next/script์ด API ์ฐธ์กฐ ํ์ด์ง๋ Script ์ปดํฌ๋ํธ์ ์ฌ์ฉ ๊ฐ๋ฅํ props๋ฅผ ์ดํดํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ๊ธฐ๋ฅ ๋ฐ ์ฌ์ฉ๋ฒ์ Optimizing Scripts ํ์ด์ง๋ฅผ ์ฐธ์กฐํ์ธ์.๋ค์์ Script ์ปดํฌ๋ํธ์ ์ฌ์ฉ ๊ฐ๋ฅํ props์ ์์ฝ์ ๋๋ค.<Script /> ์ปดํฌ wono | discuss | tweet + it dev nextjs script [NEXT JS] ์ธ๋ถ JSํ์ผ ์ฌ์ฉํ๊ธฐ์ด๋ฒ์ ๋ค์ด๋ฒ์์ ์ ๊ณตํ๋ ๋งต API๋ฅผ ์ด์ฉํด๋ณด๋ ค ํ๋๋ฐ, ์์ ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก HTML๋ก ๋์ด์๊ณ , ์ธ๋ถ JSํ์ผ์ scriptํ๊ทธ๋ก ๋ถ๋ฌ์ค๋ ํ์์ผ๋ก ์๋ฌธ์ด ์ง์ฌ์ ธ ์์์ต๋๋ค. ์๋๋ ๋ค์ด๋ฒ Dynamic Map API๋ฅผ ์ฌ์ฉํ HTML ์์ ์ ๋๋ค. ์ ์ฝ๋์ script๋ฅผ ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ด ์ฝ๋์ ๊ฐ์ด ์ธ๋ถ JSํ์ผ์ ๋ถ๋ฌ์ค๋ ๊ฒ์ ์ ์ ์์์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉด Reactํ๊ฒฝ์ธ NextJS์์๋ ์ด ํ์ผ์ ์ด๋ป๊ฒ ๋ถ๋ฌ์ฌ ์ ์์๊น์? ๐NextJS์์ ์ ๊ณตํ๋ Script๋ฅผ ์ด์ฉํ๋ค import Script from 'next/script' export default function Dashboard() { return ( ) } Nextjs ์ ๊ณตํ๋ Script์ปดํฌ๋ํธ๋ฅผ ์ด์ฉํ์ฌ ์์ ๊ฐ์ด J.. wono | discuss | tweet + it dev react script React์์ <script> ํ๊ทธ๋ก ์๋ฐ์คํฌ๋ฆฝํธ ๋ถ๋ฌ์ค๊ธฐEngineering Blog by Dale Seo wono | discuss | tweet + it ops aws ssl EC2์ HTTPS ์ ์ฉํ๊ธฐ์ฌ์ค ์์ ํฌ์คํ ์์ HTTPS ์ ์ฉ๋ฐฉ๋ฒ์ ๋ํด ๋ค๋ฃจ๊ธฐ๋ ํ์์ผ๋, ์ฌ๊ธฐ์๋ ๋ฌธ์ ์ ์ด ํ๋ ์๋ค. >> HTTPS ์ ์ฉํ๊ธฐ ๋๋ฉ์ธ๋ง ์ ๋ ฅํ ๊ฒฝ์ฐ์ ๋ํด์๋ https๊ฐ ์ ์ ์ฉ๋์ง๋ง API์ ์๋ํฌ์ธํธ์ ๊ฒฐํฉ๋๋ ์๊ฐ https ์ ์ฉ์ด ์ ๋๋ค. ๊ทธ๋์ ์ด๋ฒ ํฌ์คํ ์์ wono | discuss | tweet + it ops nextjs aws nextjs ์๋น์ค ๊ฐ๋ฐ๋ถํฐ ์ด์๊น์งnextjs ์๋น์ค ๊ฐ๋ฐ๋ถํฐ ์ด์๊น์ง. GitHub Gist: instantly share code, notes, and snippets. wono | discuss | tweet + it arc auth SSO (Single Sign-On) ์๋ฒฝ ์ค๋ช SSOย (Singleย Sign-On)ย ์๋ฒฝย ์ค๋ช SSO(Singleย Sign-On)๋ย ์ฌ๋ฌย ์ ํ๋ฆฌ์ผ์ด์ ๊ณผย ์์คํ ์ย ๋ํดย ํย ๋ฒ์ย ๋ก๊ทธ์ธ์ผ๋กย ์ ๊ทผํ ย ์ย ์๊ฒย ํด์ฃผ๋ย ์ธ์ฆย ๋ฐฉ์์ ๋๋ค.ย ์ฆ,ย ์ฌ์ฉ์๊ฐย ํย ๋ฒย ๋ก๊ทธ์ธํ๋ฉดย ์ถ๊ฐย ์ธ์ฆย ์์ดย ์ฌ๋ฌย ์๋น์ค์ย ์ ๊ทผํ ย ์ย ์๋๋กย ํ๋ย ๊ธฐ์ ์ ๋๋ค.ย ์ด๋ย ๊ธฐ์ ์ย ์ฌ๋ฌย ์์คํ ์ด๋ย ์นย ์ ํ๋ฆฌ์ผ์ด์ ,ย ํฌํธย ์ฌ์ดํธ์ย ๊ฐ์ย ๋ค์คย ์๋น์ค๋ฅผย ์ ๊ณตํ๋ย ํ๊ฒฝ์์ย ์ฌ์ฉ์ย ๊ฒฝํ์ย ๊ฐ์ ํ๊ณ ย ๋ณด์์ย ๊ฐํํ๊ธฐย ์ํดย ๋๋ฆฌย ์ฌ์ฉ๋ฉ๋๋ค.ย ##ย SSO์ย ๊ฐ๋ ๊ณผย ํ์์ฑSSO๋ย ์ฌ์ฉ์๊ฐย ์ฌ๋ฌย ์์คํ ์ย ๊ฐ๊ฐ์ย ๊ณ์ ์ผ๋กย ๋ก๊ทธ์ธํ ย ํ์ย ์์ด,ย ํย ๋ฒย ๋ก๊ทธ์ธ์ผ๋กย ๋ชจ๋ ย ์์คํ ์ย ์ ๊ทผํ ย ์ย ์๋๋กย ํ๋ย ์ธ์ฆย ๋ฐฉ์์ ๋๋ค.ย SSO๋ย ์ฃผ๋กย ๋๊ท๋ชจย ์กฐ์ง์์ย ์ง์๋ค์ดย ๋ค์ํย ์์คํ ๊ณผย ์ ํ๋ฆฌ์ผ์ด์ ์ย ์ ๊ทผํ ย ๋ย ์ฌ์ฉ๋ฉ๋๋ค.ย ์ฌ์ฉ์ย ์ ์ฅ.. wono | discuss | tweet + it ops fe nextjs aws Next.js์ AWS ECS, CI/CD ๊ทธ๋ฆฌ๊ณ CDN์ ๊ณ๋ค์ธ - by ์๊ฑดํ๋ - ํ๋ก ํธ์๋ ์๋ชจ์ 240529YouTube์์ ๋ง์์ ๋๋ ๋์์๊ณผ ์์ ์ ๊ฐ์ํ๊ณ , ์ง์ ๋ง๋ ์ฝํ ์ธ ๋ฅผ ์ ๋ก๋ํ์ฌ ์น๊ตฌ, ๊ฐ์กฑ๋ฟ ์๋๋ผ ์ ์ธ๊ณ ์ฌ๋๋ค๊ณผ ์ฝํ ์ธ ๋ฅผ ๊ณต์ ํ ์ ์์ต๋๋ค. wono | discuss | tweet + ์ฐ์ ๊ฐ๋ฐ์ ์ฐ๋ด 2024 ๊ฐ๋ฐ์ ์ฐ๋ด ํ์ค: ์์ธ ๋ถ์ ๋ฐ ์ธ์ฌ์ดํธ๊ฐ๋ฐ์ ์ฐ๋ด ํ์ค: ์์ธ ๋ถ์ ๋ฐ ์ธ์ฌ์ดํธ์๋ ํ์ธ์, ๊ฐ๋ฐ์ ์ฌ๋ฌ๋ถ! ์ค๋์ ๋ง์ ๋ถ๋ค์ด ๊ถ๊ธํดํ์๋ '๊ฐ๋ฐ์ ์ฐ๋ด ํ์ค'์ ๋ํด ์์ธํ ์์๋ณด๊ฒ ์ต๋๋ค. ์ด ๊ธ์์๋ ๋ค์ํ ์ธก๋ฉด์์ ๊ฐ๋ฐ์ ์ฐ๋ด์ ๋ถ์ํ๊ณ , ์ฌ๋ฌ๋ถ์ ์ปค๋ฆฌ์ด์ ๋์์ด ๋ ๋งํ ์ธ์ฌ์ดํธ๋ฅผ ์ ๊ณตํ๊ณ ์ ํฉ๋๋ค.๋ชฉ์ฐจ๊ฐ๋ฐ์ ์ฐ๋ด ๊ฐ์๊ฒฝ๋ ฅ๋ณ ์ฐ๋ด ๋ถ์๊ธฐ์ ์คํ๋ณ ์ฐ๋ด ์ฐจ์ด์ง์ญ๋ณ ์ฐ๋ด ๋น๊ตํ์ฌ ๊ท๋ชจ์ ๋ฐ๋ฅธ ์ฐ๋ด ์ฐจ์ด์ฐ๋ด ํ์ ํ๊ฐ๋ฐ์ ์ฐ๋ด์ ๋ฏธ๋ ์ ๋ง๊ฒฐ๋ก ๊ฐ๋ฐ์ ์ฐ๋ด ๊ฐ์๊ฐ๋ฐ์์ ์ฐ๋ด์ ๋ค์ํ ์์์ ์ํด ๊ฒฐ์ ๋ฉ๋๋ค. ์ฃผ์ ์์๋ก๋ ๊ฒฝ๋ ฅ, ๊ธฐ์ ์คํ, ํ์ฌ ๊ท๋ชจ, ์ง์ญ ๋ฑ์ด ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๊ฐ๋ฐ์์ ์ฐ๋ด์ ๋ค๋ฅธ ์ง์ข ์ ๋นํด ๋์ ํธ์ด์ง๋ง, ์ค์ ๊ธ์ก์ ์ด๋ฌํ ์์๋ค์ ๋ฐ๋ผ ํฌ๊ฒ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค.์ต๊ทผ ์กฐ์ฌ์ ๋ฐ๋ฅด๋ฉด, ํ๊ตญ์ ๊ฐ๋ฐ์ ํ๊ท ์ฐ๋ด์ ๋ค.. wono | discuss | tweet + ์ํ ์ ๊ธฐ๋งคํธ ์ ์ํ ์ ๊ธฐ๋งคํธ ๊ตฌ๋งค๊ฐ์ด๋ : 4๊ฐ์ง ๊ธฐ์ค (์ ์ํ,์ฉ๋&ํฌ๊ธฐ,์ฌ์ฉ๊ด๋ฆฌ,๋ถ๊ฐ๊ธฐ๋ฅ)์ ๋ฌธ๊ฐ๊ฐ ์ฅ๊ธฐ๊ฐ ์ ๊ธฐ๋งคํธ๋ฅผ ์ค ์ฌ์ฉํ๋ฉฐ ์ ๋ฆฌํ ํต์ฌ ๊ตฌ๋งค ๊ธฐ์ค (๊ตฌ๋งค๊ฐ์ด๋/์ถ์ฒ) wono | discuss | tweet + ์ํ ์ ๊ธฐ๋งคํธ ํ์๋งคํธ ํ์๋งคํธ? ์นด๋ณธ๋งคํธ? ๊ธฐ์กด ๋งคํธ์ ๋ญ๊ฐ ๋ค๋ฅธ์ง ์์๋ณด์!์ถ์ด ๋ ์จ ๋๋ฌธ์ ์ ๊ธฐ๋งคํธ ํ๋ ์ฌ๋ ค๊ณ ์ฐพ์๋ณด๋ค ์๊ฒ๋ ์ ๊ธฐ๋งคํธ, ์จ์๋งคํธ๋ณด๋ค ์ข๋ค๋ ํ์๋งคํธ(์นด๋ณธ๋งคํธ)! ์ฐพ์๋ณด๋ ํ์๋งคํธ๋ผ๋ฆฌ์ ์ฐจ์ด๊ฐ ๋ค์ํ๋ฐ, ๋งํ๋ ์ฌ๋๋ง๋ค ์ ์๊ฐ ๋ฌ๋ผ์ ... wono | discuss | tweetNext
+ it dev nextjs redis [REDIS] ๐ Node.js ์์ redis ๋ชจ๋ ์ฌ์ฉ๋ฒ (์บ์ฑ & ์ธ์ ์คํ ์ด)Node ํ๋ก์ ํธ์์ pm2๋ก ๋ค์ค ํด๋ฌ์คํฐ ์ธํ๋ผ๋ฅผ ๊ตฌ์ถํ๋ค๋ฉด ์ธ์ ๋ถ์ผ์น ๋ฌธ์ ๊ฐ ์๊ธฐ๊ฒ ๋ง๋ จ์ด๋ค. ๋ง์ผ ์๋ฒ๊ฐ ์ข ๋ฃ๋์ด ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ ๋ผ๊ฐ๋ฉด ์ ์์๋ค์ ๋ก๊ทธ์ธ์ด ๋ชจ๋ ํ๋ ค๋ฒ๋ฆฌ๊ฒ ๋๋ค. ๋ฐ๋ผ์ ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ธ์ ์์ด๋์ ์ค์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ธ๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๋ ํธ์ด๋ค. ์ด๋ ๊ฐ๋ฐ์๋ค์ด ๋ง์ด ์ฌ์ฉํ๋ ๊ฒ์ด Redis db์ด๋ค. ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํด๋ ๋์ง๋ง, ์ธ์ ์ ๋น ๋ฆฟ๋น ๋ฆฟํ๊ฒ ์๋ต์ ํด์ผ๋๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ธ ๋ ๋์ค๋ฅผ ์ฌ์ฉํ๋ค. ์ง๊ธ๋ถํฐ Node ํ๋ก์ ํธ์์ Redis์ ์ฐ๊ฒฐํ๊ณ ์ฌ์ฉํ๋ ๋ฒ์ ์์๋ณด์. Redis Database ์ค์น ๋ ๋์ค๋ฅผ ๋ก์ปฌ์ ์ค์นํด๋ ๋๊ณ , ํด๋ผ์ฐ๋๋ก๋ ์ฌ์ฉํ ์๊ฐ ์๋ค. ๋ง์์ ๋๋ ๊ฒ์ ๊ณจ๋ผ ์ค์นํ์. ๊ฐ์ธ์ ์ผ๋ก ๋ก์ปฌ ๋ณด๋ค๋ ํด๋ผ์ฐ๋๋ก ํ.. wono | discuss | tweet
+ it blog cloud (์ ๋ฆฌ) ย 7๊ฐ์ฌ ํด๋ผ์ฐ๋ ย ๋น ๋ฅด๊ฒ ๋ฐฐ์๋ณด์-2024ํด๋ผ์ฐ๋๋ย ์ฐ์ ํ๋๋ง ์ํ๋ฉด ๋๋ค. ๋ชจ๋ ๊ฒ์ ํ ์ ์๋ค. ๊ณ์ ์๋ก์ด ์๋น์ค๊ฐ ๋์ค๊ธฐ ๋๋ฌธ์ด๋ค. CSP (ํด๋ผ์ฐ๋ ์๋น์ค ์ ๊ณต์ ์ฒด) ? ๊ธ๋ก๋ฒ ํด๋ผ์ฐ๋ CSP - ย ์๋ง์กด, MS, Google, Oracle ๊ตญ๋ด ํด๋ผ์ฐ๋ CSP- ย ๋ค์ด๋ฒ ํด๋ผ์ฐ๋, ย Kakao Cloud , ๊ฐ๋น์ ํด๋ผ์ฐ๋ <1> ์๋ง์กด AWS <2> ๋ค์ด๋ฒ ํด๋ผ์ฐ๋ <3> wono | discuss | tweet
+ ์ฐ์ ํด๋ผ์ฐ๋ [๊ณต๊ฐ์ฐจํธ] ํ๊ตญ ํด๋ผ์ฐ๋ ํ๋ซํผ TOP10โฆ์๋ง์กดยทMSยท๊ตฌ๊ธยท๋ค์ด๋ฒยทKT ้ [๋ด์ค์คํ์ด์ค=๊น์ ์ ๊ธฐ์] ํ๊ตญ์์ ํด๋ผ์ฐ๋์๋น์ค(CSP) ์ด์ฉ ํ๋ซํผ์ ์๋ง์กด AWS๊ฐ 60.2%๋ก ๊ฐ์ฅ ๋์ ๊ฒ์ผ๋ก ๋ํ๋ฌ๋ค. 2์๋ MS ์ ์ (Azure)๋ก ์ด์ฉ ๋น์ค์ 24.0%์๋ค. ๊ณผํ๊ธฐ์ ์ ๋ณดํต์ ๋ถ๊ฐ 19์ผ ๋ฐํํ โ2023๋ ๋ถ๊ฐํต์ ์ฌ์ ์คํ์กฐ์ฌ ๊ฒฐ๊ณผโ์ ๋ฐ๋ฅด๋ฉด ํด๋ผ์ฐ๋์๋น์ค(CSP) ์ด์ฉ ํ๋ซํผ์ โฒ์๋ง์กด AWS, โฒMS ์ ์ (Azure)์ wono | discuss | tweet
+ it ops nextjs ec2 AWS EC2๋ก Next.js ๋ฐฐํฌํ๊ธฐNext.js๋ Vercel์ด ๊ฐ๋ฐํ๊ณ ์๊ณ , ๋น์ฐํ Vercel์ ๋ฐฐํฌํ๋ ๊ฒ์ด ๊ฐ์ฅ ํจ์จ์ ์ด๋ผ ๋ฏฟ์ด ์์ฌ์น ์์ผ๋ฉฐ ๋ค๋ฅธ ๋ฐฐํฌ ๋ฐฉ์์ ์๊ฐ์น๋ ์์๋ค.๊ทธ๋ฐ ์ค๋งํ ์๊ฐ์ 'ํจ์จ' ๋๋ '์ ํ๊ณผ ์ง์ค' ์ด๋ผ๋ ํค์๋๋ก ํฉ๋ฆฌํ ํด์์์ง๋ ๋ชจ๋ฅด๊ฒ ๋ค. ๊ฒฐ๊ตญ Next.js ๋ฐฐ wono | discuss | tweet
+ it dev nextjs React์์ ์ค๋ณตํธ์ถ(aka. ๋ฐ๋ฅ)์ ๋ง๋ ์๋ฒฝํ ๋ฐฉ๋ฒ์์ธ ์๋ ํ์ธ์. ์ต๊ทผ์ ํ๋ฆฌํฐ ๋์ ํ๋ก ํธ์๋ ์ ํ์ ๋ง๋๋ ๊ฒ์ ๊ด์ฌ์ด ๋ง์๋ฐ์. ์ฌ์ํด๋ณด์ด๋ ๋ํ ์ผ์ ์ผ๋ง๋ ๋ฅ์ํ ์ฒ๋ฆฌํ๋๋๊ฐ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์์ ์ค๋ ฅ ์ฒ๋ ์ค ํ๋๋ผ๊ณ ์๊ฐํ์ด์. ์ ๋ ์ฌ๋ฌ ์์น๋ค์ ์ธ์ฐ๊ณ ์์ง๋ง, ์ค๋์ ์ค๋ณตํธ์ถ (aka ๋ฐ๋ฅ)์ ๋ฐฉ์งํ๋ ์๋ฒฝํ ๋ฐฉ๋ฒ์ ํ๊ตฌํด๋ณผ ๊ฒ์ ๋๋ค. ๋ฌธ์ ์ธ์ ์๋น์ค๋ฅผ ๊ฐ๋ฐํ๋ค๊ฐ, ์ค๋ณตํธ์ถ์ด ๋ฐ์ํด์ ์ฌ๋ฌ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ๊ฒฐ์ ์์ฒญ์ด 2๋ฒ ๋ค์ด๊ฐ ์๋ ์๊ณ , ๊ฒ์๋ฌผ ์์ฑ์ด 2๋ฒ ๋ ์๋ ์๊ณ , ๋๊ธ์ด 2๋ฒ ์จ์ง ์๋ ์์ต๋๋ค. ์ด๋ก ์ธํด ๋น์ฆ๋์ค์ ์ผ๋ก๋ ์ํฅ์ ๋ฏธ์น ์๋ ์์ต๋๋ค. ์๊ฒ๋ ์๋ฒ ์๋ฌ ์๊ฐ ๋ง์์ ธ์, noisy ํด์ง ์ ์์ฃ . ์ด๋งํผ ์ค์๋๊ฐ ๋๊ณ , ํ๋ก ํธ์๋ ํ๋ฆฌํฐ์ ํฐ ์ญํ ์ ํ๋ค๊ณ ์๊ฐํ๋๋ฐ์. ์ค์ ๋ก ์ ๋ ๋ช ํํ ํด.. wono | discuss | tweet
+ it dev nextjs [react ๋ฆฌ์กํธ] ์ด๊ฐ๋จ ์ค๋ณต ํด๋ฆญ ๋ชปํ๊ฒ ํ๊ธฐ (feat. ๋ก๋ฉํ๋ฉด)1. ์ด๋ป๊ฒ?state๋ฅผ ํตํด ๋ฒํผ์ ๋๋ฅด๋ฉด ์๋ฃ๋ ๋๊น์ง ๋ฒํผ์ ํด๋ฆญ ๊ธฐ๋ฅ์ ์์ ์ ์ค๋ณต ํด๋ฆญ์ ๋ชปํ๊ฒ ํจ. 2. ์ ์ฉ1) ๋ถ๋ฆฌ์ธ ํ์ ์ State ๋ฅผ ๋ง๋ค์ด ์ค๋ค. const [isBtnDisable, setIsBtnDisable] = useState(false); 2) ๋ฒํผ์ state (true, false) ๋๊ฐ์ง ์ํ๋ฅผ ์ ์ํด์ค๋ค.*์ฌ๊ธฐ์ ๋ฒํผ ๋์ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์๋ค. *ํด๋ฆญ ํ ์ฒ๋ฆฌ ์ค์ ์์ ํด๋ฆญ์ด ๋ถ๊ฐ๋ฅํ๊ฒ ํ์๋ค. - ํด๋ฆญ ์ (onClick ํ๋กํผํฐ๊ฐ ์์)isBtnDisable === false ์ผ ๋ ๋ฒํผ์ ์ด๋ ๊ณ // isBtnDisable === false && - ํด๋ฆญ ํ (onClick ํ๋กํผํฐ๊ฐ ์์)isBtnDisable === true ์ผ ๋ (ํด๋ฆญ ํ) ๋ฒํผ์ ์ด๋ ๋ค.. wono | discuss | tweet
+ it dev nextjs (React) ์ปค๋จธ์ค ํ๋ก์ ํธ : ๊ฒฐ์ ๋ฒํผ ์ค๋ณต ํด๋ฆญ ๋ฐฉ์งํ๊ธฐ๋ฒ๊ทธ๋ฅผ ์ ๋ฐํ๋ ์ ์ ์ "์ด์ํ๋"์ ์์ธกํ๋ฉด์ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ๋ ์ฌ๊ฐ ์ฌ์ด ์ผ์ด ์๋๋ค. wono | discuss | tweet
+ it dev nextjs NextJS 13 <button onClick={}> Event handlers cannot be passed to Client Component props wono | discuss | tweet
+ it dev nextjs script Next.js์์ Script Component ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐNext.js๋ก ์คํฌ๋ฆฝํธ ํ๊ทธ๋ฅผ ์ถ๊ฐํ๋ค ์ ์ฐจ ์ถ๊ฐํ๋ค ๋ณด๋ฉด \_document.tsx ์์ ๋ง์ script ํ๊ทธ๋ค์ด ์๊ฒจ๋๊ฒ ๋ ์ ์ด ์์์ด์. ์ฒ์์๋ \_document ํ์ผ์ด ๋ญ์ง๋ ๋ชจ๋ฅด๊ณ ๋ชจ๋ ์คํฌ๋ฆฝํธ ํ๊ทธ ๋ค์ ๋ค ์ง์ด ๋ฃ์๋ ์ ๋ ์์์ด์. ์ด๋์ ๊ผญ ๊ณต wono | discuss | tweet
+ it dev nextjs script NextJS API: next/script์ด API ์ฐธ์กฐ ํ์ด์ง๋ Script ์ปดํฌ๋ํธ์ ์ฌ์ฉ ๊ฐ๋ฅํ props๋ฅผ ์ดํดํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ๊ธฐ๋ฅ ๋ฐ ์ฌ์ฉ๋ฒ์ Optimizing Scripts ํ์ด์ง๋ฅผ ์ฐธ์กฐํ์ธ์.๋ค์์ Script ์ปดํฌ๋ํธ์ ์ฌ์ฉ ๊ฐ๋ฅํ props์ ์์ฝ์ ๋๋ค.<Script /> ์ปดํฌ wono | discuss | tweet
+ it dev nextjs script [NEXT JS] ์ธ๋ถ JSํ์ผ ์ฌ์ฉํ๊ธฐ์ด๋ฒ์ ๋ค์ด๋ฒ์์ ์ ๊ณตํ๋ ๋งต API๋ฅผ ์ด์ฉํด๋ณด๋ ค ํ๋๋ฐ, ์์ ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก HTML๋ก ๋์ด์๊ณ , ์ธ๋ถ JSํ์ผ์ scriptํ๊ทธ๋ก ๋ถ๋ฌ์ค๋ ํ์์ผ๋ก ์๋ฌธ์ด ์ง์ฌ์ ธ ์์์ต๋๋ค. ์๋๋ ๋ค์ด๋ฒ Dynamic Map API๋ฅผ ์ฌ์ฉํ HTML ์์ ์ ๋๋ค. ์ ์ฝ๋์ script๋ฅผ ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ด ์ฝ๋์ ๊ฐ์ด ์ธ๋ถ JSํ์ผ์ ๋ถ๋ฌ์ค๋ ๊ฒ์ ์ ์ ์์์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉด Reactํ๊ฒฝ์ธ NextJS์์๋ ์ด ํ์ผ์ ์ด๋ป๊ฒ ๋ถ๋ฌ์ฌ ์ ์์๊น์? ๐NextJS์์ ์ ๊ณตํ๋ Script๋ฅผ ์ด์ฉํ๋ค import Script from 'next/script' export default function Dashboard() { return ( ) } Nextjs ์ ๊ณตํ๋ Script์ปดํฌ๋ํธ๋ฅผ ์ด์ฉํ์ฌ ์์ ๊ฐ์ด J.. wono | discuss | tweet
+ it dev react script React์์ <script> ํ๊ทธ๋ก ์๋ฐ์คํฌ๋ฆฝํธ ๋ถ๋ฌ์ค๊ธฐEngineering Blog by Dale Seo wono | discuss | tweet
+ it ops aws ssl EC2์ HTTPS ์ ์ฉํ๊ธฐ์ฌ์ค ์์ ํฌ์คํ ์์ HTTPS ์ ์ฉ๋ฐฉ๋ฒ์ ๋ํด ๋ค๋ฃจ๊ธฐ๋ ํ์์ผ๋, ์ฌ๊ธฐ์๋ ๋ฌธ์ ์ ์ด ํ๋ ์๋ค. >> HTTPS ์ ์ฉํ๊ธฐ ๋๋ฉ์ธ๋ง ์ ๋ ฅํ ๊ฒฝ์ฐ์ ๋ํด์๋ https๊ฐ ์ ์ ์ฉ๋์ง๋ง API์ ์๋ํฌ์ธํธ์ ๊ฒฐํฉ๋๋ ์๊ฐ https ์ ์ฉ์ด ์ ๋๋ค. ๊ทธ๋์ ์ด๋ฒ ํฌ์คํ ์์ wono | discuss | tweet
+ it ops nextjs aws nextjs ์๋น์ค ๊ฐ๋ฐ๋ถํฐ ์ด์๊น์งnextjs ์๋น์ค ๊ฐ๋ฐ๋ถํฐ ์ด์๊น์ง. GitHub Gist: instantly share code, notes, and snippets. wono | discuss | tweet
+ it arc auth SSO (Single Sign-On) ์๋ฒฝ ์ค๋ช SSOย (Singleย Sign-On)ย ์๋ฒฝย ์ค๋ช SSO(Singleย Sign-On)๋ย ์ฌ๋ฌย ์ ํ๋ฆฌ์ผ์ด์ ๊ณผย ์์คํ ์ย ๋ํดย ํย ๋ฒ์ย ๋ก๊ทธ์ธ์ผ๋กย ์ ๊ทผํ ย ์ย ์๊ฒย ํด์ฃผ๋ย ์ธ์ฆย ๋ฐฉ์์ ๋๋ค.ย ์ฆ,ย ์ฌ์ฉ์๊ฐย ํย ๋ฒย ๋ก๊ทธ์ธํ๋ฉดย ์ถ๊ฐย ์ธ์ฆย ์์ดย ์ฌ๋ฌย ์๋น์ค์ย ์ ๊ทผํ ย ์ย ์๋๋กย ํ๋ย ๊ธฐ์ ์ ๋๋ค.ย ์ด๋ย ๊ธฐ์ ์ย ์ฌ๋ฌย ์์คํ ์ด๋ย ์นย ์ ํ๋ฆฌ์ผ์ด์ ,ย ํฌํธย ์ฌ์ดํธ์ย ๊ฐ์ย ๋ค์คย ์๋น์ค๋ฅผย ์ ๊ณตํ๋ย ํ๊ฒฝ์์ย ์ฌ์ฉ์ย ๊ฒฝํ์ย ๊ฐ์ ํ๊ณ ย ๋ณด์์ย ๊ฐํํ๊ธฐย ์ํดย ๋๋ฆฌย ์ฌ์ฉ๋ฉ๋๋ค.ย ##ย SSO์ย ๊ฐ๋ ๊ณผย ํ์์ฑSSO๋ย ์ฌ์ฉ์๊ฐย ์ฌ๋ฌย ์์คํ ์ย ๊ฐ๊ฐ์ย ๊ณ์ ์ผ๋กย ๋ก๊ทธ์ธํ ย ํ์ย ์์ด,ย ํย ๋ฒย ๋ก๊ทธ์ธ์ผ๋กย ๋ชจ๋ ย ์์คํ ์ย ์ ๊ทผํ ย ์ย ์๋๋กย ํ๋ย ์ธ์ฆย ๋ฐฉ์์ ๋๋ค.ย SSO๋ย ์ฃผ๋กย ๋๊ท๋ชจย ์กฐ์ง์์ย ์ง์๋ค์ดย ๋ค์ํย ์์คํ ๊ณผย ์ ํ๋ฆฌ์ผ์ด์ ์ย ์ ๊ทผํ ย ๋ย ์ฌ์ฉ๋ฉ๋๋ค.ย ์ฌ์ฉ์ย ์ ์ฅ.. wono | discuss | tweet
+ it ops fe nextjs aws Next.js์ AWS ECS, CI/CD ๊ทธ๋ฆฌ๊ณ CDN์ ๊ณ๋ค์ธ - by ์๊ฑดํ๋ - ํ๋ก ํธ์๋ ์๋ชจ์ 240529YouTube์์ ๋ง์์ ๋๋ ๋์์๊ณผ ์์ ์ ๊ฐ์ํ๊ณ , ์ง์ ๋ง๋ ์ฝํ ์ธ ๋ฅผ ์ ๋ก๋ํ์ฌ ์น๊ตฌ, ๊ฐ์กฑ๋ฟ ์๋๋ผ ์ ์ธ๊ณ ์ฌ๋๋ค๊ณผ ์ฝํ ์ธ ๋ฅผ ๊ณต์ ํ ์ ์์ต๋๋ค. wono | discuss | tweet
+ ์ฐ์ ๊ฐ๋ฐ์ ์ฐ๋ด 2024 ๊ฐ๋ฐ์ ์ฐ๋ด ํ์ค: ์์ธ ๋ถ์ ๋ฐ ์ธ์ฌ์ดํธ๊ฐ๋ฐ์ ์ฐ๋ด ํ์ค: ์์ธ ๋ถ์ ๋ฐ ์ธ์ฌ์ดํธ์๋ ํ์ธ์, ๊ฐ๋ฐ์ ์ฌ๋ฌ๋ถ! ์ค๋์ ๋ง์ ๋ถ๋ค์ด ๊ถ๊ธํดํ์๋ '๊ฐ๋ฐ์ ์ฐ๋ด ํ์ค'์ ๋ํด ์์ธํ ์์๋ณด๊ฒ ์ต๋๋ค. ์ด ๊ธ์์๋ ๋ค์ํ ์ธก๋ฉด์์ ๊ฐ๋ฐ์ ์ฐ๋ด์ ๋ถ์ํ๊ณ , ์ฌ๋ฌ๋ถ์ ์ปค๋ฆฌ์ด์ ๋์์ด ๋ ๋งํ ์ธ์ฌ์ดํธ๋ฅผ ์ ๊ณตํ๊ณ ์ ํฉ๋๋ค.๋ชฉ์ฐจ๊ฐ๋ฐ์ ์ฐ๋ด ๊ฐ์๊ฒฝ๋ ฅ๋ณ ์ฐ๋ด ๋ถ์๊ธฐ์ ์คํ๋ณ ์ฐ๋ด ์ฐจ์ด์ง์ญ๋ณ ์ฐ๋ด ๋น๊ตํ์ฌ ๊ท๋ชจ์ ๋ฐ๋ฅธ ์ฐ๋ด ์ฐจ์ด์ฐ๋ด ํ์ ํ๊ฐ๋ฐ์ ์ฐ๋ด์ ๋ฏธ๋ ์ ๋ง๊ฒฐ๋ก ๊ฐ๋ฐ์ ์ฐ๋ด ๊ฐ์๊ฐ๋ฐ์์ ์ฐ๋ด์ ๋ค์ํ ์์์ ์ํด ๊ฒฐ์ ๋ฉ๋๋ค. ์ฃผ์ ์์๋ก๋ ๊ฒฝ๋ ฅ, ๊ธฐ์ ์คํ, ํ์ฌ ๊ท๋ชจ, ์ง์ญ ๋ฑ์ด ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๊ฐ๋ฐ์์ ์ฐ๋ด์ ๋ค๋ฅธ ์ง์ข ์ ๋นํด ๋์ ํธ์ด์ง๋ง, ์ค์ ๊ธ์ก์ ์ด๋ฌํ ์์๋ค์ ๋ฐ๋ผ ํฌ๊ฒ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค.์ต๊ทผ ์กฐ์ฌ์ ๋ฐ๋ฅด๋ฉด, ํ๊ตญ์ ๊ฐ๋ฐ์ ํ๊ท ์ฐ๋ด์ ๋ค.. wono | discuss | tweet
+ ์ํ ์ ๊ธฐ๋งคํธ ์ ์ํ ์ ๊ธฐ๋งคํธ ๊ตฌ๋งค๊ฐ์ด๋ : 4๊ฐ์ง ๊ธฐ์ค (์ ์ํ,์ฉ๋&ํฌ๊ธฐ,์ฌ์ฉ๊ด๋ฆฌ,๋ถ๊ฐ๊ธฐ๋ฅ)์ ๋ฌธ๊ฐ๊ฐ ์ฅ๊ธฐ๊ฐ ์ ๊ธฐ๋งคํธ๋ฅผ ์ค ์ฌ์ฉํ๋ฉฐ ์ ๋ฆฌํ ํต์ฌ ๊ตฌ๋งค ๊ธฐ์ค (๊ตฌ๋งค๊ฐ์ด๋/์ถ์ฒ) wono | discuss | tweet
+ ์ํ ์ ๊ธฐ๋งคํธ ํ์๋งคํธ ํ์๋งคํธ? ์นด๋ณธ๋งคํธ? ๊ธฐ์กด ๋งคํธ์ ๋ญ๊ฐ ๋ค๋ฅธ์ง ์์๋ณด์!์ถ์ด ๋ ์จ ๋๋ฌธ์ ์ ๊ธฐ๋งคํธ ํ๋ ์ฌ๋ ค๊ณ ์ฐพ์๋ณด๋ค ์๊ฒ๋ ์ ๊ธฐ๋งคํธ, ์จ์๋งคํธ๋ณด๋ค ์ข๋ค๋ ํ์๋งคํธ(์นด๋ณธ๋งคํธ)! ์ฐพ์๋ณด๋ ํ์๋งคํธ๋ผ๋ฆฌ์ ์ฐจ์ด๊ฐ ๋ค์ํ๋ฐ, ๋งํ๋ ์ฌ๋๋ง๋ค ์ ์๊ฐ ๋ฌ๋ผ์ ... wono | discuss | tweet