์ด๋ฒ์ ์ฒ์์ผ๋ก SQL์ ์จ๋ณด๋ฉด์ ์๊ฒ ๋ ์ฌ๋ฌ ๊ฒฝํ๋ค์ ์ ๋ฆฌํด๋ณธ๋ค. ์ฌ์์์ค sql์ ๊น์ด ๊ณต๋ถํด๋ณธ ์ ์ด ์์ด์ ์ฝ๊ฐ์ ๊ผผ์์ ์ผ๋งค๊ฐ ๊ฐ๋ ์์ฌ์๋ค. 1. Select ์ ์์ ์๋ธ์ฟผ๋ฆฌ ์ฌ์ฉ const selectItemsByCount = async (connection, limit, offset) => { const selectItemsByCountQuery = ` SELECT (select count(*) from wish where wish.item_id = item.item_id) wish_count, item.item_id, item.title, item.price, item.safety_pay, item.location, item.created_at, image.image_path FROM i..
๐ง๐ป ์งง์ํธํก/~ 2021
๊ตฐ๋๋ฅผ ๋ง ์ ์ญํ๊ณ ๋์ ์ด๊ฒ์ ๊ฒ ์ด์ฌํ ํด๋ณด์์ด์nodejs์์ ์ด๋ฏธ์ง ๋ฑ์ ํ์ผ์ ๋ฉํฐํํธ ํ์์ผ๋ก ์
๋ก๋ํ ๋ multer ๋ผ๋ ํจํค์ง๋ฅผ ์ค์นํด์ ๋ฏธ๋ค์จ์ด๋ก ์ด์ฉํ๋ค. npm i multer npm i multer-s3 aws-sdk s3.json { "accessKeyId": "AKIAVLEU2D2EIKMGBVQS", "secretAccessKey": "", "region": "ap-northeast-2" } ์ด์ ํฌ์คํ
์์ IAM์ ์ค์ ํ๊ณ ๋ฐ์ ์ด์ธ์คํค์ ์ํฌ๋ฆฟํค๋ฅผ ๋ฃ์ด๋๋ค. ์ด ์ํฌ๋ฆฟ ํค๊ฐ ์ ์ถ์ด ๋๋ฉด ์ฒญ๊ตฌ์์ ์์ฒญ๋ ์ก์๊ฐ ์ฐํ๊ณ ์ถ์ด ๊ฒจ์ธ์ ํ๊ด๋ฌธ ๋ฐ์ผ๋ก ๋ด์ซ๊ธธ์๋ ์์ผ๋๊น ๊ผญ๊ผญ ์ฃผ์ํ๋ค. region์๋ s3 ๋ฒํท์ ์ค์ ๋ ๋ฆฌ์ ์ ์ ๋๋ค. ์์ธ์ด๋๊น ๋ณดํต์ ap-northeast-2 ๋ก ๋์ด ์์๊ฑธ. multer.js multer์ ๊ด..
์ด๋ฏธ์ง ์
๋ก๋ ๊ธฐ๋ฅ์ nodejs๋ก ๊ตฌํ ์ค์ด๋ค. ์ด์ ์ ์ฒ์ ๊ฐ๋จํ๊ฒ ํ๋ ํ๋ก์ ํธ์์๋ ๋จ์ํ ์๋ฒ์ ๋ก์ปฌ ๋๋ ํ ๋ฆฌ์ ์ด๋ฏธ์ง ํ์ผ์ ์ ์ฅํ๊ณ , ๋ค์ ๋ถ๋ฌ์ฌ๋๋ ์ด๋ฏธ์งํ์ผ์ base64๋ก ๋ณํํด ๋ค์ ๋๊ฒจ์ฃผ์๋ค. ์ด๋ฒ์๋ ์๋ง์กด์ S3์ ์ด๋ฏธ์ง๋ฅผ ์
๋ก๋ํด๋ณด๋ ค๊ณ ํ๋ค. nodejs์์ S3 ์๋น์ค๋ฅผ ์ด์ฉํ๋ ค๋ฉด ๋จผ์ S3 ๋ฒํท์ ์์ฑํ๊ณ , IAM์ ์๋ก์ด ์ฌ์ฉ์๋ฅผ ๋ฑ๋กํด ์ด์ธ์ค ํค๋ฅผ ๋ง๋ค์ด์ ์ฌ์ฉํ๋ค. 1. S3 ๋ฒํท S3 ๋ฒํท ์์ฑ์ ํ ๋๋ ๋ชจ๋ ํผ๋ธ๋ฆญ ์ก์ธ์ค ์ฐจ๋จ์ ํ๊ณ ๋์ด๊ฐ๋ค. ๋ฒํท์ ์์ฑํ ๋ค์์๋ ๋ฒํท ์ ์ฑ
์ ์์ ํด์ฃผ์ด์ผ ํ๋ค. ๋ฒํท ์ด๋ฆ ํด๋ฆญ > ๊ถํ > ๋ฒํท ์ ์ฑ
์์ ๋ณผ ์ ์๋ค. ๋ฒํท ์ ์ฑ
์ JSON ํ์์ผ๋ก ๋์ด ์๋๋ฐ, ์ ์ฑ
์์ฑ๊ธฐ๋ฅผ ์ด์ฉํด์ ์ฝ๊ฒ ๋ง๋ค ์ ์๋ค. ๋ฒํท ARN์ ํด๋ฆญ..
๋ฐ๋ก ์ง์ ํฌ์คํ
์์ antd ๊ทธ๋ฆฌ๋๋ฅผ ์ด์ฉํด์ ๋ธ๋ผ์ฐ์ ํ๋ฉด ์ฌ์ด์ฆ์ ๋ฐ๋ผ ๋ฐ์ํ๋ ํ์ด์ง๋ฅผ ๋ง๋ค์ด ๋ณด์๋ค. ์ ํํ 768px์ ๋ฐ๋๋์ง ๋ณด๋ ค๊ณ ํ์ฌ ํ๋ฉด์ ๋๋น๋ฅผ ๋ฆฌ์กํธ ์ปดํฌ๋ํธ์ ๋์์ฃผ๋ ค๊ณ ํ๋ค. 1. resize ์ด๋ฒคํธ resize ์ด๋ฒคํธ๋ document view์ ํฌ๊ธฐ๊ฐ ๋ณ๊ฒฝ๋ ๋ ๋ฐ์ํ๋ค. ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋๋ง๋ค width state์ ๋ธ๋ผ์ฐ์ ์ ๋๋น๊ฐ ์ ์ฅ๋๋๋ก ํ๋ค. useEffect๋ฅผ ์ด์ฉํด์ ์ปดํฌ๋ํธ๊ฐ ๋ง์ดํธ ๋ ๋ ํด๋น ํจ์๋ฅผ ์คํํ๋ค. const [width, setWidth] = useState(window.innerWidth); const handleResize = () => { setWidth(window.innerWidth); }; useEffect(() => { windo..
๊ต์์ผ๋ก ์น๋์์ธ ์์
์ ๋ค์ ํ์ ์๊ธดํ๊ฒ ์ฐ๋ ๋ช ์๋๋ ๊ฒ๋ค ์ค ํ๋. ๊ทธ ๋๋ ํฌํ ์ต์ผ๋ก ์ผ์ผํ ํฝ์
์ฌ๊ฐ๋ฉด์ ๊ทธ๋ฆฌ๋ ๋ ์ด์ด๋ฅผ ๋ง๋ค์ด ์ฌ์ฉํ์๋๋ฐ, ํผ๊ทธ๋ง์์ ๋งค์ฐ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ผ๋ก ๊ทธ๋ฆฌ๋๋ฅผ ๋ง๋ค ์ ์๋ค. Antd์์ ์ ๊ณตํ๋ ๊ทธ๋ฆฌ๋ ์์คํ
์ผ๋ก ๋ฐ์ํ ์น์ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋ค. Grid - Ant Design Child elements depending on the value of the start,center, end,space-between, space-around, which are defined in its parent node typesetting mode. ant.design antd์์ Row์ Col ์ปดํฌ๋ํธ๋ฅผ ๋ถ๋ฌ์ ์ฌ์ฉํ๋ค. ; Col ์ปดํฌ๋ํธ๋ค์ Row ์ปดํฌ๋ํธ์ ์์์ด ๋๋ค..
์ด์ ์ ํผ์ ์งํํ๋ ํ๋ก์ ํธ๋ฅผ ๊น์ ์ฌ๋ฆด ๋, ํด๋ผ์ด์ธํธ ๋๋ ํ ๋ฆฌ์ ์๋ฒ ๋๋ ํ ๋ฆฌ๋ฅผ ํ๋์ ๋ ํฌ์งํ ๋ฆฌ์ ๋ชจ์์ ์ฌ๋ ธ๋ค. ๋์ค์ ์ฝ๋๋ฅผ ์์ ํ๊ณ ์
๋ฐ์ดํธํด์ผ ํ๊ฑฐ๋ ๋ณด๊ธฐ์ ์กฐ๊ธ ๋ถํธํ๋ ๊ฒฝํ์ด ์์๋ค. ํด๋ผ์ด์ธํธ์ ์๋ฒ ๋๋ ํ ๋ฆฌ๋ฅผ ๊ฐ๊ฐ์ ๋ ํฌ์งํ ๋ฆฌ๋ก ๋ถ๋ฆฌ๋ฅผ ํด์ ๋ฐ๋ก ์ ์ฅํ๊ธฐ๋ก ํ๋ค. ์์๋ก ์ด๋ฆ์ ์ง์ด์ ์ฐ์๋ฉด, project โโโ client โโโ server ๋ก ๋ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ๊ฐ๊ฐ project-client โโโ .... project-server โโโ .... ๋ ๊ฐ์ ๋ณ๋์ ๋ ํฌ์งํ ๋ฆฌ๋ก ๋ถ๋ฆฌ๋ฅผ ํ ์์ . 1. ๊ฐ๊ฐ์ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ์์ฑํ๋ค. ๋์ ๊ฒฝ์ฐ์ topster-frontend, topster-backend ๋ ๊ฐ๋ฅผ ๋ง๋ค์ด์ฃผ์๋ค. 2. git subtree split ๋ถ๋ฆฌํ ํ๋ก์ ํธ..
Node.js Express ์๋ฒ๋ฅผ AWS EC2 ์์ ๋ฐฐํฌ๋ฅผ ํด๋ณด์. EC2์ git, npm, node.js ์ค์น ๋ฑ์ ์ฌ์ ์ธํ
์ ์๋ตํ๊ณ ๋์ด๊ฐ๋ค. Node.js ํ์ผ๋ค๊ณผ ํจํค์ง๋ฅผ ๋ชจ๋ ๋ด๋ ค๋ฐ์ ํ์ ํ์ผ์ ์คํ์ํค๋ ๊ฒ์ผ๋ก ์๋ฒ๋ฅผ ๋๋ฆด ์๋ ์๋ค. node index.js ํด๋ผ์ด์ธํธ์์ ๋ด ์๋ฒ์ api๋ก ์์ฒญ์ ๋ณด๋๋๋, ๋ฆฌ์กํธ ํ๋ก ํธ๊ฐ ๋ฐฐํฌ๋ url์๋ HTTPS ๋ณด์์ด ๋์ด ์์ง๋ง, ์์ฒญ์ ๋ณด๋ด๋ ๋ด ์๋ฒ์ url์ ๊ทธ๋ ์ง ์๋ค. ๋ฐ๋์ HTTPS ๊ฑธ๋ฆฐ ์ฃผ์๋ก ์์ฒญ์ ๋ณด๋ด์ผ ํ๋ค. [Nginx] ๋๋ฉ์ธ ์ฐ๊ฒฐ, HTTPS ์ ์ฉ (Let's Encrypt) ์ฐธ๊ณ 1 1. ๋๋ฉ์ธ ์ฐ๊ฒฐ ์ด์ ์ ๊ฐ๋น์์์ ๊ตฌ๋งค๋ฅผ ํด๋๊ณ ์์ฐ๋ ๋๋ฉ์ธ์ด ์์ด์, ๊ทธ ๋๋ฉ์ธ์ ๋ด IP๋ฅผ ์ฐ๊ฒฐํ๋ค. 10๋ถ ์ ๋ ๊ธฐ๋ค๋ฆฌ๋ฉด ..
AWS EC2 ์์ Nginx๋ก ๋ฆฌ์กํธ ํ๋ก์ ํธ๋ฅผ ๋ฐฐํฌํ๋ ๊ฒฝํ ์ ๋ฆฌ๋ฅผ ์ํ ๊ธ. ์ด์ ์ ์๋ธ ๋๋ฉ์ธ์ SSL ์ธ์ฆ๊น์ง ๋ง์ณค๋ค. ๊ทธ๊ฑธ ๊ทธ๋๋ก ์ฌ์ฉํ ์์ ์ด๋ค. [Nginx] ์๋ธ ๋๋ฉ์ธ ์ค์ , HTTPS ์ ์ฉ ์ฐธ๊ณ 1 ์ฐธ๊ณ 2 'dev.9yujin.shop' ๊ทธ๋ฆฌ๊ณ 'prod.9yujin.shop' ์ด๋ ๊ฒ ๋ ๊ฐ์ ์๋ธ ๋๋ฉ์ธ์ ๋ง๋ค์ด๋ณด์. 1. ๊ฐ๋น์ DNS ๋ ์ฝ๋ ์์ ๊ฐ๋น์์์ ๋จผ์ CNAME์ผ๋ก ์๋ฒ ๋๋ฉ์ธ์ ๋ฑ๋กํด์ค๋ค. dev์ prod ๋๊ฐ๋ฅผ ์์ฑ. 9yujin.tistory.com React ํ์ผ ๋น๋, ์๋ฒ ์
๋ก๋ yarn ํจํค์ง ๋งค๋์ ๋ฅผ ์ฐ๊ณ ์์๋ค. ํ๋ก์ ํธ ํ์ผ์ ๋น๋ํด์ค๋ค. yarn build ํ์ผ์ง๋ผ๋ฅผ ์ด์ฉํด EC2์ ๋น๋ํ ํ์ผ์ ์
๋ก๋ํ๋ค. ๊ฒฝ๋ก๋ /home/ubuntu/test/..