๊ฒฝ๋ถ๋ํ๊ต ํ์๋ค์ด ์ด์ด์ด๊ธฐ๋ฅผ ๊ตฌํ ์ ์๋ ํ๋ซํผ์ ๋๋ค. '์ด์ด์ด๊ธฐ'๋ ํ ์ฌ๋์ด ํน์ ์ฌ์ ๋ก ์๋ํ ๊ณต๊ฐ์ ๊ณ์ฝ ๊ธฐ๊ฐ์ ๋ค ์ฑ์ธ ์ ์์ ๋, ์๋์ธ์ ๋ช ์์ ํ๋ฝ ํ์ ๋ค๋ฅธ ์ฌ๋์๊ฒ ํด๋น ๊ณ์ฝ์ ์ด์ ํ๋ ๊ฒ์ผ๋ก ์ ์ํฉ๋๋ค.
ํ์ฌ, ๊ฒฝ๋ถ๋ํ๊ต ์ฃผ๋ณ์์ ์ด์ด์ด๊ธฐ๋ฅผ ์ํ๋ ํ์๋ค์ ์ฃผ๋ก '์๋ธ๋ฆฌํ์'์ด๋ผ๋ ๋ํ ์ปค๋ฎค๋ํฐ์ ์ด์ด์ด๊ธฐ ๊ฒ์ํ์ ํ์ฉํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ธฐ์กด ์ด์ด์ด๊ธฐ ๊ฒ์ํ์ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
- ์ ๋ณด ์ฐ์ฌ: ์๋ธ๋ฆฌํ์ ์ด์ด์ด๊ธฐ ๊ฒ์ํ์๋ ์ด์ด์ด๊ธฐ ๊ฒ์๊ธ ์ธ์๋ ์๋ง์ ๊ฒ์๊ธ์ด ์์ฌ ์์ด, ์ํ๋ ์ ๋ณด๋ฅผ ์ฐพ๊ธฐ ์ด๋ ต์ต๋๋ค. ์ด๋ก ์ธํด ํ์๋ค์ด ํ์ํ ์ ๋ณด๋ฅผ ๋น ๋ฅด๊ฒ ์ป๊ธฐ ์ด๋ ต์ต๋๋ค.
- ๊ฒ์๊ธ ํ์์ ๋ค์์ฑ: '์๋ธ๋ฆฌํ์' ๊ฒ์ํ์์๋ ๊ฒ์๊ธ ์์ฑ ํ์์ ์ ํ์ด ์์ด์ ์ ๋ณด๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํํฐ๋งํ๊ธฐ ์ด๋ ต์ต๋๋ค. ๊ฒ์๊ธ์ ์ ๋ชฉ๊ณผ ๋ด์ฉ, ํ์์ด ์ ๊ฐ๊ฐ์ด๋ฉฐ, ์ด๋ก ์ธํด ์ด์ด์ด๊ธฐ ๊ด๋ จ ์ ๋ณด ๊ฒ์์ด ์ด๋ ต์ต๋๋ค.
- ๋นํจ์จ์ ์ธ ์ํต๋ฐฉ์: '์๋ธ๋ฆฌํ์'์์ ํ์๋ค์ ๋๊ธ์ ๋จ๊ธฐ๊ฑฐ๋ ์ชฝ์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์์ผ๋ก์จ ์ํตํ ์ ์๋๋ฐ, ๋๊ธ๋ก๋ ๊ฐ์ธ์ ๋ณด๋ฅผ ์ด์ผ๊ธฐํ๊ธฐ ์ด๋ ต๊ณ , ์ชฝ์ง๋ ์ค์๊ฐ ๋ํ๊ฐ ๋ถ๊ฐ๋ฅํ๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
์ฐ๋ฆฌ ์๋น์ค๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ํ์๋ค์๊ฒ ๋ ํจ์จ์ ์ธ ์ด์ด์ด๊ธฐ ํ๋ซํผ์ ์ ๊ณตํฉ๋๋ค. ํ์๋ค์ ์๋น์ค๋ฅผ ํตํด ์ฝ๊ณ ๋น ๋ฅด๊ฒ ์ ๋ณด๋ฅผ ์ป์ ์ ์์ผ๋ฉฐ, ์ผ๊ด๋ ํ์์ผ๋ก ์ ๋ณด๋ฅผ ๊ฒ์ํ๊ณ ๊ณต์ ํ ์ ์์ต๋๋ค.
์ด์ด์ด๊ธฐ๋ฅผ ์ํ๋ ๊ฒฝ๋ถ๋ํ๊ต ํ์ ๋ฐ ์ด์ด์ด๊ธฐ๋ฅผ ์ ๊ณตํ๋ ค๋ ํ์, ์๋์ธ์ ๋์์ผ๋ก ํฉ๋๋ค.
๋งํฌ
- ์ ๋ขฐ์ฑ ์๋ ์ด์ด์ด๊ธฐ ์ ๋ณด ์ ๊ณต: ์ฌ์ฉ์๋ค์ ์ ์ ํ์ธ, ํ๊ฐ ๋ฐ ๋ฆฌ๋ทฐ ์์คํ ๋ฑ์ ํตํด ์์ ํ๊ณ ์ ๋ขฐ์ฑ ์๋ ์ด์ด์ด๊ธฐ ์ ๋ณด๋ฅผ ์ป์ ์ ์์ต๋๋ค. ์ด๋ก ์ธํด ํ์๋ค์ ๋ ์ฝ๊ฒ ์ํ๋ ์ด์ด์ด๊ธฐ ์ต์ ์ ์ฐพ์ ์ ์์ผ๋ฉฐ, ์ฌ๊ธฐ๋ ๊ฐ์ง ์ ๋ณด์ ๋ ธ์ถ๋ ์ํ์ ์ค์ผ ์ ์์ต๋๋ค.
- ํธ๋ฆฌํ ๊ฑฐ๋ ๊ณผ์ : ์ฐ๋ฆฌ์ ํ๋ซํผ์ ํธ๋ฆฌํ ์ฑํ ์์คํ ๊ณผ ์ ๋ณด ๊ฒ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ์ฌ์ฉ์๋ค์ด ํจ์จ์ ์ผ๋ก ๊ฑฐ๋๋ฅผ ์งํํ ์ ์์ต๋๋ค. ์ด๋ก์จ ์ฌ์ฉ์๋ค์ ๋ถํ์ํ ์๊ฐ๊ณผ ์๋์ง๋ฅผ ์ ์ฝํ๊ณ , ์ด์ด์ด๊ธฐ๋ฅผ ๋น ๋ฅด๊ฒ ์งํํ ์ ์์ต๋๋ค.
- ์ง์ญ ํ์ฅ: ์ด๊ธฐ์๋ ๊ฒฝ๋ถ๋ํ๊ต๋ฅผ ์ค์ฌ์ผ๋ก ์๋น์ค๋ฅผ ์์ํ๊ฒ ์ง๋ง, ํ๋ซํผ์ด ์์ ๋๊ณ ์ฑ๊ณต์ ์ผ๋ก ์ด์๋ ๊ฒฝ์ฐ ๋ค๋ฅธ ๋ํ๊ต๋ ํ๊ต ์ฃผ๋ณ ์ง์ญ์ผ๋ก ํ์ฅํ ์ ์์ต๋๋ค. ๋ค์ํ ์ง์ญ์์ ์ด์ด์ด๊ธฐ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ฉด ๋ ๋ง์ ํ์๋ค์ด ํ๋ซํผ์ ํ์ฉํ ์ ์์ ๊ฒ์ ๋๋ค.
- ์ถ๊ฐ ์๋น์ค ๋ฐ ๊ธฐ๋ฅ ๋์ : ์ด์ด์ด๊ธฐ ์ ๋ณด ์ ๊ณต ์ด์ธ์๋ ์ฃผ๊ฑฐ์ ๊ด๋ จ๋ ๋ค๋ฅธ ์๋น์ค๋ฅผ ์ ๊ณตํ์ฌ ํ๋ซํผ์ ํ์ฅํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํ์๋ค์ ์ํ ๊ฐ๊ตฌ ๋์ฌ, ์ฒญ์ ์๋น์ค, ์ด์ฌ ์๋น์ค ๋ฑ์ ์ถ๊ฐ๋ก ์ ๊ณตํ์ฌ ํ๋ซํผ์ ๋์ฑ ํ๋ถํ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
๐ก ๋ณ์ง์ญ (Jiseob-Byeon) : alfred.j.byeon@gmail.com
๐ก ์ด์ง์ (jisu74) : lgs010704@gmail.com
๐ก ๋ ธ์ ์ (noFlowWater) : noyusu98@gmail.com
VSCode ํฐ๋ฏธ๋์ ์ด๊ณ , ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์ฌ ํ๋ก์ ํธ๋ฅผ ๋ก์ปฌ ์์คํ ์ ํด๋ก ํฉ๋๋ค.
git clone -b dev https://github.com/noFlowWater/KNUCON.git
๋ฐฑ์๋ ์๋ฒ๊ฐ oracle DBMS์ ํต์ ํ๊ธฐ ์ํด ํ์ด์ฌ oracledb ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค. oracledb ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ ์ํด์ oracle instantclient๊ฐ ํ์ํฉ๋๋ค.
https://www.oracle.com/kr/database/technologies/instant-client/downloads.html
Windows ๋ฒ์ (64bit, 32bit)์ ๋ง๋ ํด๋ผ์ด์ธํธ๋ฅผ ์ค์นํฉ๋๋ค.
https://www.oracle.com/kr/database/technologies/instant-client/downloads.html
mac x86 ๋ฒ์ (dmg)์ ๋ค์ด๋ก๋ํฉ๋๋ค. oracle์์๋ ๊ณต์์ ์ผ๋ก ์ ํ ์ค๋ฆฌ์ฝ ๋ฒ์ instantclient๋ฅผ ์ ๊ณตํ์ง ์์ต๋๋ค. ์์ instant-client๋ฅผ ์ค์นํ์ฌ ์ฌ์ฉํ๋ฉด ๊ฒฝ๊ณ ๋ฉ์์ง๊ฐ ๋์ค์ง๋ง oracledb ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ ๋ฌธ์ ๋ ์์์ต๋๋ค. ์ดํ ์ ํ ์ค๋ฆฌ์ฝ ๋ฒ์ ์ instantclient๊ฐ ๋์จ๋ค๋ฉด, ํด๋น ํด๋ผ์ด์ธํธ๋ฅผ ์ค์นํ์ฌ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
๋ค์ด๋ก๋ ๋ dmg ํ์ผ์ ๋๋ธํด๋ฆญํด ๋ง์ดํธํฉ๋๋ค.
์ ์ฌ์ง์ฒ๋ผ ๋์จ๋ค๋ฉด ์ ์์ ์ผ๋ก ๋ง์ดํธ ๋ ๊ฒ์ ๋๋ค.
๋ง์ดํธ ํ ํฐ๋ฏธ๋์์
cd /Volumes/instantclient-basic-macos.x64-19.8.0.0.0dbru
๋ก ๋ง์ดํธ๋ ๊ฒฝ๋ก๋ก ์ด๋ํ์ฌ
./install_ic.sh
๋ฅผ ์คํํฉ๋๋ค.
install_ic.sh ํ์ผ์ ๋ง์ดํธ๋ ํด๋ ๋ด์ ํ์ผ์ Downloads๋ก ๋ณต์ฌํฉ๋๋ค. Downloads ํด๋ ์๋ instantclient-basic-macos.x64-19.8.0.0.0dbru ํด๋๊ฐ ์ ์์ฑ๋์๋ค๋ฉด eject ํฉ๋๋ค.
cd /opt/oracle
๋ก ๊ธฐ์กด์ /opt/oracle ํด๋๊ฐ ์กด์ฌํ๋์ง ํ์ธํฉ๋๋ค.
ํด๋๊ฐ ์๋ค๋ฉด,
sudo mkdir /opt/oracle
์ ํตํด oracle ํด๋๋ฅผ ์์ฑํฉ๋๋ค.
์ดํ
mv $HOME/Downloads/instantclient-basic-macos.x64-19.8.0.0.0dbru /opt/oracle/instantclient-basic-macos.x64-19.8.0.0.0dbru
๋ฅผ ํตํด instantclient ํด๋๋ฅผ ์ด๋ํฉ๋๋ค.
oracle instantclient์์ sql ํ์ผ์ ์คํํฉ๋๋ค.
START /path/to/file/Dacsternary_Tables_Init.sql START /path/to/file/Dacsternary_Insert.sql
ํ์ํ ํจํค์ง ์ ๋ณด๋ BE/ ํด๋ ๋ด requirements.txt ํ์ผ์ ์ ์ฅ๋์ด ์์ต๋๋ค.
pip install requirements.txt
๋ก ํ์ํ ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค.
pip ๋์ pip3๋ฅผ ์ฌ์ฉํ๋ค๋ฉด
pip3 install requirements.txt
๋ก ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค.
ํ์ํ ํจํค์ง ์ ๋ณด๋ FE/ ํด๋ ๋ด packages.json ํ์ผ์ ์ ์ฅ๋์ด ์์ต๋๋ค.
npm install
๋๋
npm i
๋ก ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค.
FE/ ํด๋์์
npm run dev
๋ก ์๋ฒ๋ฅผ ์คํํฉ๋๋ค.
https://localhost:5173 ์ผ๋ก ํ๋ก ํธ์๋ ์๋ฒ๊ฐ ์คํ๋ฉ๋๋ค.
ํ๋ก ํธ์๋ ์๋ฒ IP ์ฃผ์๋ฅผ ๋ณ๊ฒฝํ๋ ค๋ฉด FE/packages.json ํ์ผ์
"dev": "vite --host {IP ์ฃผ์} --port ํฌํธ๋ฒํธ",
๋ถ๋ถ์ ์์ ํ๋ฉด ๋ฉ๋๋ค.
ํ๋ก ํธ์๋ ์๋ฒ ์ฃผ์ ์์ ํ์๋ BE/main.py์ origins ๋ฆฌ์คํธ์ ๋ณ๊ฒฝํ IP๋ฅผ ์ถ๊ฐํด์ผํฉ๋๋ค.
origins=[
... ,
"{๋ณ๊ฒฝํ IP ์ฃผ์}",
]
BE/ ํด๋์์
uvicorn main:app --reload
๋ฅผ ์คํํฉ๋๋ค.
https://localhost:5173 ์ผ๋ก ๋ฐฑ์๋ ์๋ฒ๊ฐ ์คํ๋ฉ๋๋ค.
ํ๋ก ํธ์๋ ์๋ฒ IP ์ฃผ์๋ฅผ ๋ณ๊ฒฝํ๋ ค๋ฉด --reload ๋ค์
--host {IP ์ฃผ์} --port {ํฌํธ ๋ฒํธ}
๋ฅผ ์ถ๊ฐํฉ๋๋ค.
๋ฐฑ์๋ ์๋ฒ ์ฃผ์ ์์ ํ์๋ FE/src/lib/request.js์ _url ์ฃผ์๋ฅผ ๋ณ๊ฒฝํด์ผํฉ๋๋ค.
let _url = '{๋ณ๊ฒฝ๋ ์ฃผ์}' + url;