Django REST Framework์ ๋ฐํ์ผ๋กํ ์ฟ ๋ฎค์ ์ปค๋ฎค๋ํฐ ์์ฃผ์ RESTful API ์๋ฒ์ ๋๋ค. ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ณ์ ์ฟ ๋ฎค์์ ํน์ดํ๊ฒ ์ปค๋ฎค๋ํฐ ๋๋ฉ์ธ ์ธ์๋ ์ธ์ฆ์ด๋ ํ์ฌ์ผ์ ์ ๊ณต ๋ฑ ๊ฒฝํฌ๋ํ๊ต ๊ด๋ จ ๋ช ๊ฐ์ง ๊ธฐ๋ฅ๋ค์ ์ํํ๊ณ ์์ต๋๋ค.
API Documentation - POSTMan์ ๋ฌธ์ํ ๊ธฐ๋ฅ์ ์ด์ฉํด ์ฟ ๋ฎค์ ์ ์ฒด API๋ค์ ๋ฌธ์ํํ๊ณ ์์ต๋๋ค.
-
์ปค๋ฎค๋ํฐ ๋๋ฉ์ธ ์์ฃผ์
RESTful API
๋ฅผ ์ ๊ณตํฉ๋๋ค.- ์ผ๋ฐ ๊ฒ์ํ CRUD
- ์ผ๋ฐ ๊ฒ์๊ธ CRUD
- ์คํฐ๋๋ฅ ๊ฒ์ํ CRUD
- ์คํฐ๋๋ฅ ๊ฒ์๊ธ CRUD
- ํ์๊ฐ์ , ๋ก๊ทธ์ธ
- ํ์ฌ์ผ์ ์กฐํ
-
๋ง์ดํฌ๋ก์๋น์ค ๊ฐ์๋
๋ฉ์์ง ํ
๋ฅผ ๋ฐํ์ผ๋ก ๋น๋๊ธฐ์ ์ผ๋ก ์์ ํ๋ฉฐ๋์จํ๊ฒ ๊ฒฐํฉ
(Loosely coupled)ํฉ๋๋ค.์๋ฅผ ๋ค์ด ๊ฒ์๊ธ ์์ฑ ์
SNS
๋ก ์์ฑ ์ด๋ฒคํธ๋ฅผ Publishํฉ๋๋ค.- ๊ฒ์๊ธ ์์ฑ ํ Article Model instance๋ฅผ JSON์ผ๋ก ๋ณํํฉ๋๋ค. (DRF Serializer๋ก ์ง๋ ฌํํ๋ ๊ฒ์ด ์๋๋ผ ๋จ์ ์ง๋ ฌํ)
- JSON ๋ฐ์ดํฐ๋ฅผ SNS์ Publish ํฉ๋๋ค.
SNS
์์ ๊ตฌ๋ ์กฐ๊ฑด๊ณผ ์ ๋ณด๋ฅผ ์ด์ฉํด ์ฌ๋ฐ๋ฅธSQS
์๊ฒ ์ด๋ฒคํธ๋ฅผ ์ ๋ฌํฉ๋๋ค.- ์ฌ๋ฐ๋ฅธ SQS ๊ตฌ๋
์(consumer)๊ฐ ๋ฉ์์ง๋ฅผ ๋ฐ์ ๊ฒ์๊ธ ์์ฑ์ ๋ํ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด ์ฟ ๋ฎค์ ์๋ฆผ ์๋น์ค์ธ alimi๋ ๊ฒ์๊ธ ์์ฑ์ ๋ํ ์ด๋ฒคํธ๋ฅผ ๋ฐ์ Author๊ฐ ๊ฒ์๊ธ์ ๋ํ ๋๊ธ ์์ฑ๊ณผ ๊ฐ์ ์ถ๊ฐ์ ์ธ ์๋ฆผ๋ค์ ๋ฐ์๋ณผ ์ ์๋๋ก ํด๋น ๊ฒ์๊ธ์ ๊ตฌ๋ ์ํต๋๋ค.
-
pip dependency
$ pip freeze > requirements.txt # requirements.txt ์์ฑ ํ pkg-resources==0.0.0 line์ ์ง์์ค์ผํ ์ ์์ต๋๋ค.
-
mysqlclient dependency - MySQL์ ์ด์ฉํ๊ธฐ ์ํด์ ํ์ํ ubuntu์ ํจํค์ง๋ค ์ ๋๋ค.
sudo apt-get install python3-dev
sudo apt-get install libmysqlclient-dev
- ์ผ๋ฐ ubuntu์์๋
libmysqlclient-dev
, python ubuntu container์์๋default-libmysqlclient-dev
(?). ์๋ง ํ์๋ก๋ง ํด๋ ๋ ๊ฒ์ผ๋ก ์ถ์ธกํฉ๋๋ค.
- ์ผ๋ฐ ubuntu์์๋
pip install mysqlclient
pip install wheel
-
๋ค์ํ ํ๊ฒฝ์ ๋ฐ๋ฅธ config ์ ์ฉํ๊ธฐ
KHUMU_ENVIRONMENT
๊ฐ์ ํตํด ์ด์ฉํ ํ๊ฒฝ์ ์ค์ ํ ์ ์์ต๋๋ค. (LOCAL
|DEV
, default๋LOCAL
)KHUMU_ENVIRONMENT
์ ๊ฐ์ ๋ฐ๋ผconfig/local.yaml
ํน์config/dev.yaml
๋ฑ์ ์ค์ ํ์ผ์ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค์ ์ ์ ์ฉํฉ๋๋ค.settings.py
์์ ๊ฐ์ข ํ๊ฒฝ์ ๋ง๋ ์ค์ ์ ๋์ ์ผ๋ก ์ ์ฉํฉ๋๋ค.
Selenium
๊ณผ chrome driver
๋ฅผ ์ฌ์ฉ ํฉ๋๋ค. chrome driver
๋ project root์ ์์นํด์ผ ํฉ๋๋ค.
โ ์ด๋ ์ฐ๋ฆฌ๊ฐ ๊ฐ๋ฐํ๋ "์ฝ๋"๊ฐ ์๋ "์คํ ํ์ผ"์ด๊ธฐ์ Git์๋ ํฌํจํ๊ณ ์์ง ์์ผ๋ ๋ก์ปฌ ๊ฐ๋ฐ ์์๋ ๋ฐฐํฌ ์์๋ chrome driver
์ project root์ ์์น์์ผ์ผ ํจ์ ์ฃผ์ํด์ฃผ์ธ์.
curl https://chromedriver.storage.googleapis.com/89.0.4389.23/chromedriver_linux64.zip -o chromedriver.zip && unzip chromedriver.zip
์์ ์์ ...
์ปค๋ฎค๋ํฐ ๊ฒ์ํ์ ๊ฒ์๋ฌผ
๊ฒ์๋ฌผ์ ๋ํ ์ข์์
๊ฒ์๋ฌผ์ ๋ํ ๋ถ๋งํฌ
community tab์ ์กด์ฌํ๋ ๊ฒ์ํ๋ค.
- category - ํ๋จ์ (
official
|department
|lecture
|free
)
Board๋ฅผ ์์
- category - (
lecture
|civil(๊ณต๋ฌด์)
|certificate(์๊ฒฉ์ฆ)
|career(์ทจ์ค)
)
Board๋ฅผ ์์
category - (university
| khumu(์ฟ ๋ฎค์ ๊ณต์ง์ฌํญ - ํ์ํ ๊น? ใ
ใ
ใ
๊ทธ๋ฅ ์ด๋ ๋ฐ๋ก ๋์ฐ๋ ๊ฒ ๋ซ์ง ์์ผ๋ ค๋)
| council(ํ์ํ)
)
๊ฒ์ํ์ ๋ํ Follow
(์์ ) StudyBoard์ AnnouncementBoard ์ ๋ํ Follow๋ ์ง์
khumu-comment์์ ๊ด๋ฆฌ
๊ตญ์ ์บ ํผ์ค, ์์ธ์บ ํผ์ค์ ๋ํ ์ ๋ณด. MVP์์๋ ๊ตญ์ ์บ ํผ์ค๋ง ๋ค๋ฃจ๊ธฐ ๋๋ฌธ์ ์์ธ ์บ ํผ์ค๋ ์์ง ๋ฏธ์ง์
๊ฒฝํฌ๋ํ๊ต์ ๋จ๊ณผ๋(์ฌ์ค ์๋ฒฝํ ๋จ๊ณผ๋๋ ์๋๊ณ ์๊ฐ์ ์ฒญํ ๋ ์ฃผ๋ก ์ฐ๋ฆฌ๊ฐ ์ ํํ๋ ๋จ์์)
๊ฒฝํฌ๋ํ๊ต์ ํ๊ณผ ๋ฐ์ดํฐ
๊ฒฝํฌ๋ํ๊ต์ ๊ฐ์ (e.g. ๋ฏธ์ ๋ถ ๊ฐ์)
๋์ผํ ๊ฐ์๋ฅผ ๋ฌถ์ด ๊ณตํต์ ์ธ ๋ด์ฉ์ ์์ฃผ๋ก ํํํ๋ ๊ฐ์(๊ตฐ)
๊ฒฝํฌ๋ํ๊ต์ ๊ฐ๋ณ ๊ฐ์ (e.g. ๋ฏธ์ ๋ถ ์ ์ ๊นOO๊ต์๋ ๊ฐ์, ๋ฏธ์ ๋ถ ์ ์ ๋ฐOO ๊ต์๋ ๊ฐ์, ๋ฏธ์ ๋ถ ํ๋ชฉ ์ดOO ๊ต์๋ ๊ฐ์)
๊ฐ๋ณ ๊ฐ์ ์์ฒด์ ๋ํ ๋ฐ์ดํฐ
์๋ฆผํญ์ ๋์ค๋ ์๋ฆผ ๋ด์ฉ
is_read
- ํ์ฌ ์๋ฆผ์ ์ฝ์๋์ง. GET API๋ฅผ ์ด์ฉํด ์ฝ์ผ๋ฉด ๋ฐ๋กis_read
๋ true๊ฐ ๋๋ค.
is_activated
- ๊ตฌ๋ ์ด ํ์ฑํ๋์ด์๋์ง.- ๋๊ธ์ ๋ฌ๊ฑฐ๋ ๊ธ์ ์์ฑํ๋ฉด ๊ตฌ๋
์ด ํ์ฑํ๋
ArticleNotificationSubscription
์ด ๊ฐ ์์ฑ๋จ. - ์ดํ Unsubscribeํ๋ฉด
is_activated
๋false
๊ฐ ๋๋ค. ํ ๋ฒ ๊ตฌ๋ ์ ๋นํ์ฑํ ์์ผฐ๋๋ฐ ๋๊ธ์ ๋ฌ ๋๋ง๋ค ํ์ฑํ๋๋ ๊ฒฝ์ฐ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํจ.
- ๋๊ธ์ ๋ฌ๊ฑฐ๋ ๊ธ์ ์์ฑํ๋ฉด ๊ตฌ๋
์ด ํ์ฑํ๋
KhumuUser์ push device token์ ์ ์ฅํจ. ํ KhumuUser๋ ์ฌ๋ฌ device token์ ๊ฐ์ง ์ ์์.
์ธํฌ 21 ๊ด๋ จ ์์ ํน์ ์ข ์ข RESTfulํ ์์ฒญ์ด ์๋ CLI๋ก ์ธํด trigger๋๋ ๋ช ๊ฐ์ง ๋์๋ค์ **"Job"**์ด๋ผ๋ ๊ฐ๋ ์ผ๋ก ์ ์ํ๊ณ ์์ต๋๋ค.
(์์ง ์๋ฌ ํธ๋ค๋ง๊ณผ ์ ํํ ๋ก๊ทธ ์ถ๋ ฅ์ด ๋ฏธํกํ๊ณ , ๊ด๋ฆฌ๊ฐ ํ๋ค์ด ๋ง์ดํฌ๋ก์๋น์ค๋ก ๋บ ์๊ฐ๋ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํนํ๋ ์กธ์ ์, ํดํ์, ๋ถ์ ๊ณต, ๋ณต์์ ๊ณต์๋ค์ ๋ํ ์ผ์ด์ค๋ ๋๋น๊ฐ ํ๋ ์ํฉ์ ๋๋ค... ํน์๋ผ๋ ๋์์ฃผ์ค ํ์ฐ๋ถ๋ค ๊ณ์๋ฉด ๋ง์ํด์ฃผ์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค!!!)
KhuAuthJob
- ์ธํฌ21์ ์ธ์ฆํ๋ ์์KhuLectureCollectorJob
- ์ธํฌ21์ ์ธ์ฆ ํ ์กด์ฌํ๋ ๊ฐ์ ์ ๋ณด๋ฅผ ์์งํ๋ ์์KhuLectureSyncJob
- ์ธํฌ21์ ์ธ์ฆ ํ ํด๋น ๊ณ์ ์ด ์๊ฐ ์ค์ธ ๊ฐ์์ ํ๊ณผ์ ๊ฒ์ํ์ Followํ๋ ์์StudentQrCodeJob
- ์ ์ฅ๋ ํ๋ฒ์ ์ด์ฉํด QrCode๋ฅผ ์ป์ด์ค๋ ์์MigrateHaksaScheduleJob
- ํ์ฌ์ผ์ csv ํ์ผ์ database์ migrateํ๋ ์์ .