๋ฌธ์ ) Given a multi-dimensional array arr and a depth n, return a flattened version of that array. A multi-dimensional array is a recursive data structure that contains integers or other multi-dimensional arrays. A flattened array is a version of that array with some or all of the sub-arrays removed and replaced with the actual elements in that sub-array. This flattening operation should only be d..
์ ์ฒด ๊ธ
๐ฉ๐ป๐ป Frontend Developer
๋ฌธ์ ์ํฉ NextJS๋ก ๋น๋ํ ์ดํ์ ๋ธ๋ผ์ฐ์ ์์ reload๋ฅผ ํ๋ฉด ํ์ด์ง ๊ฒฝ๋ก๋ฅผ ์ ๋๋ก ์ฐพ์ง ๋ชป ํ๊ณ ์ด๊ธฐํ๋ฉด์ผ๋ก ๋ณด๋ด๋ฒ๋ฆฌ๋ ์ค๋ฅ๊ฐ ์๊ฒผ๋ค. ์ต์ข
์๋น์ค๋ฅผ ์๋๊ณ ์ด ๋ฌธ์ ๋ก ๊ฝค๋ ๊ณจ๋จธ๋ฆฌ๋ฅผ ์ฉ๊ณ ์์๋ค. ์์ธ ๋ธ๋ผ์ฐ์ ์์ ์์ฒญํ ์ฃผ์์ ์ค์ ๋ฆฌ์์ค์ ์ฃผ์(URL)์ด ๋ฌ๋ผ์ ์๊ธด ์ผ์ธ๋ฐ, ์ด๊ฒ ๋ก์ปฌ์์๋ ์ ๋์๊ฐ๊ธฐ ๋๋ฌธ์ ์ฒ์์ ์ ๋ง ๋ฌด์จ ์ผ์ธ์ง ์์๊ฐ ์์๋ค. static์ S3์ ์ฌ๋ฆฌ๋ฉด์ ์๊ธฐ๋ ๋ฌธ์ ๋ก nextjs๋ ๋๋ ํ ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ผ์ฐํ
์ ํ๋๋ฐ, ์ด๊ฑธ static์ด ์์ฑ๋๋ค. ์ด๋๋ก ๋ฐฐํฌํ๋ฉด ๊ธฐ๋ณธ url ์์๋ ๋ฌธ์ ๊ฐ ์์ง๋ง ๋ค์ ๋๋ ํ ๋ฆฌ๊ฐ ๋ถ๋ ๊ฒฝ์ฐ์ ๋ฌธ์ ๊ฐ ์๊ธด๋ค. ํด๊ฒฐ 1. next.config์ trailingSlash ์ต์
๋ฃ์ด์ฃผ๊ธฐ // next.config.js module.exp..

๐ What I learned ์ด๋ ๊ฒ ํ๋์ ์ง์คํ์ง ๋ชป ํ๊ณ ์ด๋ฃฌ๊ฒ ์๋ ํ๋ฌ์ ๋ณด๋ธ ๊ฒ ๊ฐ๋ค. ํด๊ฐ์ฒ ์ด๋ผ์ ๋ง์์ด ๋ถ~๋ฌ๋ค๋ ํ๊ณ๋ฅผ ๋๋ฉด ๊ด์ฐฎ์๊น? ๋ฅ๋ ฅํ์ ๋ํ๊ณ ์ถ๋ค๋ ์์ฌ์ '์์ด'์ ์์ฌ์ ๋๊ณ , ๊ทธ ์๊ฐ๊ณผ ์ด์ด์ง๋ ํฌ์ธํธ๋ก ํฌํธํด๋ฆฌ์ค๋ฅผ ๊ฒธํ '์์ด'๋ง ์ฌ์ฉํ github pages๋ฅผ ๋ง๋ค์๋ค. ์ด๊ฒ์ ๊ฒ ์์ ๋์ง๋ง ์ ์ ์์ด๋ก ์ฌ๋ฆฐ ์ปจํ
์ธ ๋ ์์ง 2๊ฐ ๋ฐ์ ์๋ค. ๋ง์ค์ ์๋ ํ๋๋ ฅ์ ์ข์์ผ๋ ์์ฌ์ด ๊พธ์คํจ. ๐ป Work ๐ฑ ๋๋์ด ๋ค์ ํ์ด ๋ง๋ค์ด์ ธ๊ฐ๊ณ ์๋ ๊ฒ ๊ฐ๋ค. ๊ฐ๋ฐํ์ ๋น๋กฏํด์ ๋ค๋ฅธ ํ์๋ ์๋ก์ด ์ธ์ฌ๊ฐ ๋ค์ด์๊ณ ๋ชจ๋๋ค ์กฐ๊ธ์ฉ ์ ์ํด๊ฐ๋ฉด์ ์ด์์ ์ ์ํํด๊ฐ๋ ์ค์ด๋ค. ๋ ์ญ์ ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ค๊ณผ์ ํฐํคํ์นด๋ฅผ ๋ง์ถฐ์ผํ๋ ์ํฉ์ธ๋ฐ, ์ด์ ๊ฐ๋ฐ์๋ถ๋ค๊ณผ๋ ๋ ๋ค๋ฅธ ๊ฐ๋ฐ์คํ์ผ์ ์ ์ด๋ ๊ฒ ..

jekyll์ ์ฌ์ฉํด์ ํ
ํ๋ฆฟ์ ๊ฐ์ ธ์ค๋๋ฐ๊น์ง ๋ง์ ์ฐ์ฌ๊ณก์ ์ด ์์์ง๋ง ํด๋๋ค. ๊ถ๊ธํ์ ๋ถ๋ค์ ์๋์ ํฌ์คํ
์ ๋ณด๊ณ ์ค์๋ฉด ๋๋ค. ๐๐ป ์ฌ์ธ ๊ฒ ๊ฐ์ github pages ๋ก ๋ธ๋ก๊ทธ ๋ง๋ค๊ธฐ - ํ
ํ๋ฆฟ๊ฐ์ ธ์์ ์ค์ ํ๊ธฐ (1) ๋ฐฐํฌ๋ ์ฝ๊ฒ์ฝ๊ฒ! ๋๋ ์ฌ์ธ ๊ฒ ๊ฐ์ github pages๋ฅผ ๋ง๋ค์ด๋ด
์๋ค! ์์ ์ ๋ธ๋ก๊ทธ๊ฐ ํ์ํด์ ํฌํธํด๋ฆฌ์ค ๊ฒธํด์ pages๋ฅผ ๋ง๋ค์๋ค๊ฐ ์ง์ด์ ์ด ์์๋๋ฐ ์ด๋ฒ์ ์์ด์ฉ์ผ๋ก ํ๋ ํ์ํ ๊ฒ ๊ฐ์์ mindevlog.tistory.com ๊ฒฐ๋ก ์ ์ผ๋ก๋ ruby์์ด๋ jekyll ํ
ํ๋ฆฟ๊ฐ์ ธ์์ ์ธ ์ ์๋ค. ์ปค์คํ
ํ๊ณ ํ๋ ค๋ฉด ์ด์ฉ ์ ์์ด ๋ก์ปฌ์ ํด๋ก ํด์ ์จ์ผํ ๊ฒ ๊ฐ์ง๋ง... ๋ฌดํผ ๋๋ ๋ก์ปฌ์์๋ ์ธ ์ ์๊ฒ ๋ ์ํฉ์ด ๋์๊ณ , ๋ง๊ป ์ปค์คํ
์ ์์ํ์!!!! ๊ณ ๋ง์ ๋จน๊ธฐ ์์ํ..

๋ฐฐํฌ๋ ์ฝ๊ฒ์ฝ๊ฒ! ๋๋ ์ฌ์ธ ๊ฒ ๊ฐ์ github pages๋ฅผ ๋ง๋ค์ด๋ด
์๋ค! ์์ ์ ๋ธ๋ก๊ทธ๊ฐ ํ์ํด์ ํฌํธํด๋ฆฌ์ค ๊ฒธํด์ pages๋ฅผ ๋ง๋ค์๋ค๊ฐ ์ง์ด์ ์ด ์์๋๋ฐ ์ด๋ฒ์ ์์ด์ฉ์ผ๋ก ํ๋ ํ์ํ ๊ฒ ๊ฐ์์ ๋ณธ๊ฒฉ์ ์ผ๋ก ๋ค์ ์์ํด๋ณด๋ ค๊ณ ํฉ๋๋ค. ์ค์๊ฐ์ผ๋ก ํ์ด์ง๋ฅผ ๋ง๋ค์ด๊ฐ๋ฉด์ ์ฌ๊ธฐ์ ๊ธ์ ์ฌ๋ฆด๊ฑฐ๋ผ์ ํฌ์คํ
์ด ๋ฆ์ด์ง ์๋ ์์ด์. ํ๋ฒ ์ฐจ๊ทผ์ฐจ๊ทผ ์ ์ด๋ณด๋ ค๊ณ ํฉ๋๋ค. ์ฐ์ ์ ์ผ๋ก ์ ๋ jekyll theme๋ฅผ ์ฌ์ฉํ ๊ฑฐ๋ผ์ ๋ด๊ฐ ํ์ด์ง๋ฅผ ๋ง๋๋ ๋ชฉ์ ์ ๋ง๊ฒ๋. ๋ฌด๋ฃ๋ก ์ ๊ณตํ๋ ํ
ํ๋ฆฟ ์ค ํ๋๋ฅผ ์ ์ ํ์ต๋๋ค. jamstackthemes.dev jekyllthemes.org jekyllthemes.io jekyll-themes.com ์ ๊ฐ ์ ํํ ํ
๋ง๋ https://jekyllthemes.io/theme/mediumis..

์ด๊ฒ์ ๊ฒ ํด๋ก ์ฝ๋ฉํด๋ณด๋ฉฐ ๋ง๋ค๋ ์์ ์ ๋ง์ด ์ ํ๋ mongoDB. ์ด ๋๋ ๊ทธ์ ๋ฐ๋ผํ๊ธฐ ๊ธ๊ธํด์ mongoDB ๋ atlas ๋ถ๋๊ฒ ๋ญ๊ฐ ๋ค๋ฅธ์ง ๋ชฐ๋๋ค. ๊ทธ๋ฅ ์
๋ฐ์ดํธ ๋ฒ์ ผ์ธ๊ฐ? ๋ผ๋ฉฐ ์ดํ๋ฆฌ์ผ์ด์
์ ๊ทธ์ ์๋ํ๊ฒ ๋ง๋ค๊ธฐ์ ๋ฐ๋นด๋ ๊ทธ ์์ . ์ด์ ์ง์์ ํ์ ๋ํ๊ฐ์ผํ๋ ์๊ฐ์ด ์๋ค. MongoDB ์คํ ์์ค NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ฉฐ, ๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ์กฐํ๋ฅผ ์ํ ๋ค์ํ ๊ธฐ๋ฅ๊ณผ ์ ์ฐ์ฑ์ ์ ๊ณตํ๋ค. MongoDB Atlas MongoDB์ ๊ด๋ฆฌํ ํด๋ผ์ฐ๋ ์๋น์ค๋ก, MongoDB ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํด๋ผ์ฐ๋์์ ์ฝ๊ฒ ๋ฐฐํฌ, ์ด์ ๋ฐ ํ์ฅํ ์ ์๋๋ก ์ง์ํ๋ค MongoDB vs MongoDB Atlas 1. ๋ฐฐํฌ ๋ฐ ์ด์ MongoDB MongoDB๋ฅผ ์ง์ ์ค์นํ๊ณ ๊ด๋ฆฌํด์ผํ๋ค. ์๋ฒ์ ํ์ฅ, ๋ณต์ ์ค์ ๋ฑ์..
๊ฐ๋ฐ์๋ก ์ปค๋ฆฌ์ด๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ผํ๊ธฐ ์์ํ ์ง 1๋
์ด ์ง๋ฌ๋ค. ๊ทธ๋ ๊ฒ ๊ณ ๋ํ๊ณ ๊ณ ๋ํ๋ 1๋
์ด ์ง๋ฌ๋ค. '1๋
์ฏค ์ง๋๋ฉด ๋๋ ๊ฝค๋ ๋ง์ด ์ฑ์ฅํด์๊ฒ ์ง?', '์ด๊ฒ์ ๊ฒ ๋ค ํ ์ค ์๊ฒ ์ง?', '๊ฐ๋ฐ์ ๋ํ ์ด๋ ์ ๋ ๊ฐ์ด ์กํ์๊ฒ ์ง?' ๋ฑ์ ๋ ์ค์ค๋ก๊ฐ ๊ฐ์ก๋ ๊ธฐ๋๋ค์ด ๋ง์๋ค. ๊ฐ๋จํ๊ฒ ์จ๋จธ๋ฆฌ ํด๋ณด์๋ฉด ์ค์ค๋ก์๊ฒ ๋ง์กฑ์ค๋ฌ์ด ์ฑ์ฅ์ ์์ง ์๋ ๊ฒ ๊ฐ๋ค. ํ์ง๋ง ์ฑ์ฅ์ ์ ํ๋ค๊ณ ๋ ๋ชปํ๊ฒ ์ง. ์ด์จ๋ '๊ฒฝํ์น'๋ฅผ ์ป์์ผ๋๊น ๋ง์ด๋ค. ์์ง๊น์ง๋ ์ด๋๋ก ๊ฐ ์ด์ง์ ํ๋ค๊ณ ํ์ ๋, '์ ์
'์ ํ์ดํ์ ๋ผ์ง ๋ชปํ๋ ์ํ์ธ 30๋ ์ค๋ฐ์ ์ ์
'ํ๋ก ํธ์๋' ๊ฐ๋ฐ์์ ํ๊ณ ์ด์ ์ฌ๋ฌ ๊ฐ์ง ๋๋ ์ ์ ์ด์ผ๊ธฐํด๋ณผ๊น ํ๋ค. 1. ๊ฐ๋ฐ์ผ๋ก ๋จน๊ณ ์ด ์ ์๊ฒ ๊ตฌ๋! ์ง๋ 1๋
์ ๋์ด์ผ๋ณด๋ฉด์ ์ ์ผ ๋จผ์ ๋ ์๊ฐ์ ๋ฐ๋ก ํ๋๋ค. "์~! ๋..
container๋ฅผ ์์ผ๋ก ์ฑ์ฐ๋ ๊ฒ์ด ์๋๋ผ ์ด๋ฏธ์ง๋ก ๋ฃ์ด์ผ ํ ๊ฒฝ์ฐ๋ ์๋ค. ์ด๋, ๊ฐ๋จํ๊ฒ~ ๋ ๊ฐ์ง ์ ๋์ ๋ฐฉ๋ฒ์ด ์๋ค! 1. src ์ด๋ฏธ์ง ์ฃผ์๋ฅผ ์ธ ๋ Container( width: 155.0.w, decoration: BoxDecoration( image: DecorationImage( image: NetworkImage( src ), fit: BoxFit.cover ), ), ) 2. image assets ์ ์ธ ๋ Container( width: 155.0.w, decoration: BoxDecoration( image: DecorationImage( image: AssetImage('/assets/image.png'), fit: BoxFit.cover ), ), ) ์ด๋ฏธ์ง ์ฃผ์๋ฅผ ์ด..

์ด์ ์๋น์ค์ ์คํ
์ด์ง ๋จ๊ณ ์๋น์ค์ ๊ฐ๊ทน์ด ๋ ์ด ๊ฐ์๋ก ์ฌํด์ง๊ณ ์๋ค. ๊ธฐ์กด์ ์ด์๋๋ ์๋น์ค์ ์์ ์ด๋, ๋ฒ๊ทธ ํน์ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํด์ผํ ๋ ๋๊ฐํ ๋๊ฐ ์๋ค. ์๋ก์ด ๋ธ๋์น์์ ์์
์ ํ๊ณ ์คํ
์ด์ง ๋จ๊ณ์์ QA ํ์ ์งํ์ ํด์ผํ๋ค๋ณด๋ ๊ผฌ์ฌ์ ์คํ
์ด์ง์ ์๋ ์ด์ ์๋น์ค์๋ ์๋ ํ์ผ์ด merge ๋์ด์์ ๋๋ ์๊ณ ์๊ฒ๋ชจ๋ฅด๊ฒ ์ด์ํ๊ฒ ๊ผฌ์ผ ๋๊ฐ ์๋ค. ...์ ์๊ธธ๊ฒ ๊ฐ์๊ฐ? .... ์๊ธด๋ค. ์๋ ๋๋ถ๋ถ์ ํ์
์ ํ๋๊น ๋ง์ด๋ค .... ใ
..... ์์์น๋ชปํ๊ฒ ์๊ธด๋ค์์์์ ๋ฌดํผ ์ด๋ฐ ๋๊ฐํ ์ํฉ์์ ํด๋น ์์
์ปค๋ฐ๋ค๋ง cherrypick์ด๋ผ๋ ๊ฒ์ผ๋ก ๋ฝ์๋ด์ ์ด์ ์๋น์ค์ merge ์์ผ๋ฒ๋ฆฐ๋ค. Cherry Pick (์ฒด๋ฆฌํฝ) - ํน์ commit๋ง์ ๊ฐ์ ธ์ค๋ ๊ฒ โถ Cherry Pick..

React-Query ์ฅ์ ์ค์ ํ๋์๋ ์บ์ฑ์ด์ผ๊ธฐ๋ฅผ ํด๋ณด๋ ค๊ณ ํฉ๋๋ค. ์บ์ฑ์ ์ด์ผ๊ธฐ ์ ์ ์์๋๋ฉด ์ข์ tool์ด ์์ต๋๋ค. ๋ฐ๋ก ReactQueryDevtools ์ด๋ผ๋ ๊ฒ์ผ๋ก ๋ฐ์ดํฐ๊ฐ fetching ๋๊ณ ๊ทธ ์ํ๊ฐ์ด๋ผ๋๊ฐ ๋ด๋ถ ๋ด์ฉ์ ์์ธํ ๋ณผ ์ ์๊ฒ ๋์์ฃผ๋ tool์
๋๋ค. react query ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ ๊ณตํ๋ ๊ฐ๋ ฅํ ๋๊ตฌ์
๋๋ค. โถ ReactQueryDevtools ์ฌ์ฉ๋ฒ import { ReactQueryDevtools} from 'react-query/devtools'; //์ด๋ ๊ฒ import ํฉ๋๋ค function App() { return ( ); } ์๋์ ๊ฐ์ด ํ๋ฉด ํ๋จ ์ค๋ฅธ์ชฝ์ ๋ฌ ๋ฒํผ์ ๋ณด์ค ์ ์์ด์. ํด๋ฆญ์ ํ๋ฉด ์ค๋ฅธ์ชฝ ํ๋ฉด์ฒ๋ผ ๋น๋๋ค. tools ์์์ fresh ,..
React-Query ๋น๋๊ธฐ ํต์ fetch, axios ๋ฑ์ ์ฌ์ฉํ๋ฉด์ ์๋ฒ ์ํ ๊ด๋ฆฌ ๋ฐ ๋น๋๊ธฐ ๋ก์ง์ ์ฝ๊ฒ ๋ค๋ฃจ๊ฒ ํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋น๋๊ธฐ ํต์ ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ช ๊ฐ์ง ์์ง๋ง react-query๋ฅผ ์ฌ์ฉํ๋ฉด ์์ฒญ์ ๋ณด๋ด๋ ์ฝ๋ฐฑํจ์๋ฅผ ์ ๋ฌํ๊ธฐ๋ง ํ๋ค๋ฉด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ ๊ณตํด์ฃผ๋ ๋ง์ ๊ธฐ๋ฅ๋ค(์บ์ฑ, ๊ฐ ์
๋ฐ์ดํธ, ์๋ฌ ํธ๋ค๋ง ๋ฑ)์ ์ด์ฉํ ์ ์์ผ๋ฉฐ ์ฝ๋๋ ๋งค์ฐ ๊ฐ๋จํด์ง๋๋ค. ์ฌ์ฉํ๋ ์ด์ ์๋ฒ๋ก๋ถํฐ ๊ฐ์ ๊ฐ์ ธ์ค๊ฑฐ๋ ์
๋ฐ์ดํธ๋ฅผ ํด์ผํ๋ ๋ก์ง์ store์์ ๊ฐ๋ฐํด์ผํ๋ ๊ฒฝ์ฐ๋ค์ด ๋ง์ต๋๋ค. store๋ client์์ state๋ฅผ ์ ์งํ๋ฉด์ ๋ด๋ถ์ client data ์ server data ๊ฐ ๊ณต์กด์ ํ๊ฒ ๋๋ ์๊ฐ์ด ์๊ฒจ๋ฉ๋๋ค. ๋ฐ์ดํฐ๋ค์ด ์๋ก ์ํธ์์ฉํ๋ฉด์ ํผ๋์ ๋น์ด๋ด๋๋ฐ react-query๋ฅผ ..
์ฝ 1์ฌ๋
๊ฐ๊น์ด ํ๋ฌํฐ๋ก ์ฑ์ ์ ์ํ๊ณ ์๋๋ฐ ์ฌ์ ํ ์์ํ ๊ฐ๋
๋ค์ ์ ๋๋ก ์์ง ๋ชป ํ๋ค๋ ์๊ฐ์ด ๋ค์๋ค. GetX๋ก ์ํ ๊ด๋ฆฌ๋ฅผ ํ๋ฉด์ stateless ์์ ฏ๋ง ์ฌ์ฉํ๊ณ ์๋๋ฐ ์ฌ์ค stateful์ด๋ผ๊ณ getx๋ฅผ ๋ชป ์ฐ๋ ๊ฒ์ ์๋๋ค. ๊ทธ๋ฐ๋ฐ ๊ฐ๋
์ด ํ์คํ์ง ์๋ค๋ณด๋ ๊ทธ์ ์ ์ฐ๊ฒ ๋๋ ์ํฉ์ด ๋ฐ์. ๊ทธ๋ฆฌ๊ณ ํ๋ฉด์์์ ํด๋ฆญ ์ด๋ฒคํธ๋ง์ผ๋ก ์์ ฏ์ด ๋ณ๊ฒฝ๋์ผํ๋ ๋ ์ด์์์ ๊ตฌ์ฑํ๊ฒ ๋๋ฉด์ ๊ทธ๋ฅ stateless๋ก ์จ์ผํ๋๊ฑธ๊น getx๋ก ๊ด๋ฆฌํด์ผํ๋ ๊ฑธ๊น๋ผ๋ ์๋ฌธ์ด ๋ค์๊ณ , ์ด๋ค ๋ฐฉ๋ฒ์ด ๋ ์ข์ ๋ฐฉ๋ฒ์ธ์ง ์์๊ฐ ์์ด์ ๊ฐ๋
์ ๋ฆฌ๋ฅผ ๋ค์ ํ๋ฒ ํด๋ณด๋ ค๊ณ ์์ฑํด๋ณธ๋ค. โ
Stateless Widget ํ๋ฉด์ด ๋ก๋๋ ๋ ํ ๋ฒ๋ง ๊ทธ๋ ค์ง๋ state๊ฐ ์๋ ์์ ฏ์ผ๋ก ๋ณ๊ฒฝ์ด ํ์ํ Data๊ฐ ์๋ ๊ฒ์ ์๋ฏธ ์ด๋ฒคํธ ..