1์๋ถํฐ ๊พธ์คํ ์งํํด์๋ ํฝ๋ฏธ์ ํ๋ก์ ํธ์์ spring boot๋ก ์๋ฒ ๋จ์ ์ฌ๊ธฐ ๋๊ณผ ๊ฐ์ด ๊ฐ๋ฐํ๋ค.
ํซํ ํ๊ทธ๋ฅผ ๊ตฌํํด์ผ ํ๋๋ฐ ์๊ธฐ ์ ์ ํ๊ฒ ์ ๋ฐ์ดํธ ๋์ด์ผ ํ๋ ์ ๋ณด๋ผ ์ด๋ป๊ฒ ๋ก์ง์ ์ง์ผํ ์ง ๊ณ ๋ฏผ์ด ๋ง์์๋ค.
๊ทธ ๊ฐ์ ์์ด๋์ด ํ์๋ถํฐ ๊ตฌํ ๊ณผ์ ๊น์ง ๊ธฐ๋กํด๋ณด์๋ค.
repository: github.com/produce1886/pick-me-up-server
โจ ์์ด๋์ด ํ์
#1 ๋
๋งจ ์ฒ์์๋ ์๋์ ๊ฐ์ด ์ด๋ฏธ ์์ฑ๋์ด ์๋ ํ ์ด๋ธ์ ์์ ํ์ง ์๋ ๋ฐฉํฅ์ผ๋ก ์๊ฐํด๋ณด์๋ค.
(projects์ portfolios์ ์ปฌ๋ผ๋ค์ ๋ง์ด ์๋ต๋์ด ์์ต๋๋ค.)
๋ด๊ฐ ์ ์ํ๋ ๋ด์ฉ์ด๋ค. ๊ตฌํํ๊ธฐ ์ด๋ ต๋ค๊ณ ๋๊ปด์ง๋ ๋ถ๋ถ์ ์ด ์์ผ๋ก ํํํด๋ดค๋ค.
- GET /tags : ํ๊ทธ ์ค์ฝ์ด ์์ผ๋ก ํซํ ํ๊ทธ๋ฅผ ๋ถ๋ฌ์จ๋ค.
- ๊ฒ์๋ฌผ(ํฌํธํด๋ฆฌ์ค, ํ๋ก์ ํธ) ์กฐํ ์ [tag] ํ
์ด๋ธ์ ์ค์ฝ์ด๊ฐ ์ฌ๋ผ๊ฐ๋ค.
- created_date๋ฅผ ๊ธฐ์ค์ผ๋ก ํ ๋ฌ์ด ์ง๋๋ฉด ํด๋น ๊ธ์ ํ๊ทธ ๋์ ์ค์ฝ์ด(==๊ฒ์๋ฌผ์ viewcnt ๊ฐ)์ ๋บ๋ค.
1. ํ๊ทธ์ ๋ณํ๋ฅผ ํฌ์ฐฉํด์ ์ ์์ ํด์ฃผ๋ ๊ฒ ์ด์
- ๊ฒ์๋ฌผ ์
๋ฐ์ดํธ ์ค ํ๊ทธ๊ฐ ์๋ก ์ถ๊ฐ๋ ๋ view_cnt ๋งํผ ํ๊ทธ ์ค์ฝ์ด์ ๋ํจ
- ๊ฒ์๋ฌผ ์
๋ฐ์ดํธ ์ค ํ๊ทธ๊ฐ ์ญ์ ๋ ๋ view_cnt ๋งํผ ํ๊ทธ ์ค์ฝ์ด์์ ๋บ
- ๊ฒ์๋ฌผ ์ญ์ ์ view cnt ๋งํผ ํ๊ทธ ์ค์ฝ์ด์์ ๋บ
2. ์์ ์ ํ๋ฒ์ฉ createdDate๊ฐ ํ์ฌ - 30์ผ(์์๋ก ์ ํ ๊ธฐ๊ฐ)๋ณด๋ค ์ง๋ ๋ ์ด๋ฉด ํ๊ทธ์ ์ค์ฝ์ด๋ฅผ ๋ฆฌํ๋ ์ฌํ๊ธฐ (๊ตฌํ ๋ฐฉ๋ฒ ๋ชจ๋ฆ)
์ฌ๊ธฐ ๋์ ๋ฆฌ๋ทฐ์ด๋ค.
์ผ๋จ 2๋ฒ์ ๊ฒฝ์ฐ ์ค์ผ์ค๋ง ๊ธฐ๋ฅ์ ํ์ฉํ ์ ์๋ค๊ณ ์๋ ค์ฃผ์ จ๋ค.
ํ์ง๋ง ๊ฒ์๋ฌผ์ด ๋ง์๋ฐ ๊ทธ ์๊ฐ์ ๊ธฐ์ตํด์ ์ผ์ ์๊ฐ์ด ์ง๋๋ฉด ์ค์ฝ์ด์์ ๋นผ๋ ๊ฑธ ์ด๋ป๊ฒ ํด์ผํ๋ ๊ฒ์ ์ด๋ป๊ฒ ๊ตฌํํ ์ง ๊ณ ๋ฏผ์ด๋ผ๊ณ ํ์ จ๋ค.
๋๋ ์ ์ ์ผ๋ก ๋์ํ๋ค.
#2 ์ฌ๊ธฐ๋
์ดํ ์ฌ๊ธฐ๋์ด ์ ์ํ์ ๋ด์ฉ์ด๋ค.
- GET /tags : ํ๊ทธ ์ค์ฝ์ด ์์ผ๋ก ํซํ ํ๊ทธ๋ฅผ ๋ถ๋ฌ์จ๋ค.
- ์ค์ผ์ค๋ง์ผ๋ก ์ง๊ธ ๊ฒ์๋ฌผ์ ์ญ ์กฐํํด์ ๊ฐ๊ฐ์ ๊ฒ์๋ฌผ์ ํ๊ทธ ์ค์ฝ์ด์ ๊ฐ๊ฐ ๊ฒ์๋ฌผ ์กฐํ์์ ๋๊ธ์ ๋ฐ์์ ๋ฐ์ํ๋ค.
- ๋ฐ์ดํฐ๋ ๊ฒ์๋ฌผ๋ง๋ค ํน์ ์๊ฐ์ ์กฐํ์, ๋๊ธ์๋ฅผ ๊ฐ์ด ์ ์ฅํ๋ค.
ex) 2/7์ผ 2์์ 1๋ฒ ๊ฒ์๋ฌผ์ ์กฐํ ์๋ 3์ด๊ณ , ๋๊ธ ์๋ 4์์์ ์บก์ณํ๋ฏ์ด ์ ์ฅ
- ์์์ ์ฃผ๊ธฐ๋ฅผ ๋์ด ์กฐํ์, ๋๊ธ ์ ์ฐจ์ด์ ๋ํ ๊ฐ์ผ๋ก ํ๊ทธ ์ค์ฝ์ด ๊ฐ์ ๋ณํํ๋ค.
ex) ์ฃผ๊ธฐ๊ฐ 1์ผ์ธ ๊ฒฝ์ฐ, 2/8 ์กฐํ์๊ฐ 2์ด๋ฉด 2/7์ผ์ ์กฐํ์์ -1 ์ฐจ์ด๊ฐ ๋๋ฏ๋ก ์ด ๊ฐ์ ๊ทธ๋๋ก ๋ํจ
2/8์ ๊ฒ์๋ฌผ์ด ์ญ์ ๋์๋ค๋ฉด -3(์กฐํ์), -4(๋๊ธ์) ๊ฐ๊ฐ์ ๊ฐ์ค์น ๊ฐ์ ๋บ.
๋ฆฌ๋ทฐ: ๋๋ ๊ณ์ฐ ์์ ์ ์ ํ๊ฒ ๊ตฌํํด๋ด๋๊ฒ ๋ณต์กํ๊ฒ ๋๊ปด์ก๋ค. ๋ ๊น์ ๊ณ ๋ฏผ์ ๋น ์ก๋ค.
#3 ๋
๋๋ ๋ ๋ค์ ์๋์ ๊ฐ์ ์์ด๋์ด๋ฅผ ๋ค์ ์ ์ํ๋ค.
๋จผ์ [tag_history] ํ ์ด๋ธ์ ์๋ก ๋ง๋ค์๋ค.
- ๊ฒ์๋ฌผ์ 1๋ฒ ์กฐํํ๋ฉด 1๋ฒ์ ๋ํด์ ํ๊ทธ ํ์คํ ๋ฆฌ์ ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ๊ฐ ๋๋ค.
- ๊ฒ์๋ฌผ์ด ์์ฑ๋๊ฑฐ๋ ๋๊ธ์ด ๋ฌ๋ฆด ๋์๋ ์ค์ฝ์ด์ ๊ฐ์ค์น๋ฅผ ๋์ด ์ ์ฅํ๋ ๊ฒ๋ ํ ์ ์๋ค.
-
์ ์ฅ๋ ์ค์ฝ์ด๋ฅผ ์ค ์ํ๋ ๋ ์ง ์ฌ์ด์ ์ ๋ณด๋ง ๋ถ๋ฌ์ ์ค์ฝ์ด๋ฅผ ํฉํด ์ ๋ ฌํ๊ณ top 5 ์ ๋์ ํ๊ทธ๋ฅผ ์๋ตํด์ค๋ค.
์ด ์ฌ์ง์ ๊ทธ๋ ๋น์์ ์์ฑํด๋ณด์๋ sql ๋ฌธ์ด๋ค.
ํ๋ก์ ํธ๋ JPA๋ก ์งํ๋๊ณ ์์ง๋ง ์์ง JPA๋ฅผ ์ ๋ค๋ฃจ์ง ๋ชปํ๊ณ ์๋ค. ๊ทธ๋์ ๋ ์ ํํ ์ ๋ฌ์ ์ํด, ๋ด๊ฐ ์๋ ๋ฒ์ ๋ด์์ ์ํด ์ฟผ๋ฆฌ๋ฌธ์ ์์ฑํด ๊ฒฐ๊ณผ๋ฅผ ํ์ธํด๋ณด์๋ค.
๋ฆฌ๋ทฐ: ์ง๊ด์ ์ธ ๋ฐฉ๋ฒ์ด์ง๋ง db์ ๋๋ฌด ๋ง์ ๋ฐ์ดํฐ๊ฐ ์์ด๊ณ ๋ ๋ค์ ๋ง์ ๋ฐ์ดํฐ๊ฐ ์ง์์ง๋ค. ๋ํ ์ฑ๋ฅ์ด ๋จ์ด์ง๋ ๊ฒ๋ ๊ฑฑ์ ๋์ ๋ณด์ํ๋ ๊ฒ์ด ์ข๊ฒ ๋ค๊ณ ํ์ จ๋ค.
์ด๋ฌํ ๊ด์ ์์๋ ์ ํ ์๊ฐํด๋ณด์ง ์์์ ํฅ๋ฏธ๋ก์ ๋ค!
#4 ์ฌ๊ธฐ๋
์ฌ๊ธฐ๋์ด ๋ด ๋ฐฉ๋ฒ์ ์ ์ ํ ์์ด์ ๋ค์ ์ ์ํด์ฃผ์ จ๋ค.
- tags์ current_score์ ๋จ๊ฒจ๋๊ณ ์ด๋ฒคํธ(๊ฒ์ ํค์๋, ๊ฒ์๋ฌผ ์์ฑ, ๋๊ธ ์์ฑ, ๊ฒ์๋ฌผ ์กฐํ ๋ฑ)๊ฐ ์์ฑ๋ ๋๋ง๋ค current_score์ ์ด๋ฒคํธ๋ง๋ค์ ์ ์ ํ ๊ฐ์ค์น๋ก ์ค์ฝ์ด ๊ฐ์ ๋ํ๋ค.
- ์ฃผ๊ธฐ์ ์ผ๋ก(15๋ถ ์ ๋์ ํ ) tag_history์ score์ ๊ฐ์ ์ฎ๊ธด ํ tags์ current_score๋ 0์ผ๋ก ์ด๊ธฐํํ๋ค.
- tag_history์ ๋ฐ์ดํฐ๋ก ํซํ ํ๊ทธ๋ฅผ ๋ถ๋ฌ์ค๊ฒ ๋๋ค.
- tag_history์ ๋ฐ์ดํฐ๋ ์ฃผ๊ธฐ์ ์ผ๋ก (1์ผ ์ด์์ ํ
) ์ญ์ ํ๋ค.
์ฌ๊ธฐ๊น์ง ๋ ผ์ ํ ์ด๋ ์ ๋์ ๊ฐ๋ฐ ํ๋ฆ์ ์ก๊ฒ ๋์๋ค.
๋ ๊ตฌ์ฒด์ ์ธ ์ฌํญ์ ๊ตฌํํ๋ฉด์ ๋ฐ๊ฟจ๋ค.
โจ ๊ตฌํ
2์ 3์ฃผ์ฐจ (02.15~02.21)์ ๊ตฌํํ๋ค.
์ฌ๊ธฐ๋์ #PR 52, 54, 55
1. ์ฃผ๊ธฐ์ ์ผ๋ก [tag] ํ ์ด๋ธ์ current_score ๊ฐ์ [tag_history] ํ ์ด๋ธ์ score๋ก ์ฎ๊ธฐ๊ณ current_score์ 0์ผ๋ก ๋ฆฌ์ ํ๋ค. ํ์ฌ ์ ํ ์ฃผ๊ธฐ๋ 3์๊ฐ ๋ง๋ค ์ด๋ค.
@Scheduled(cron = "0 0 0/3 * * ?")
2. ์ฃผ๊ธฐ์ ์ผ๋ก [tag_history] ํ ์ด๋ธ์ created_date ๊ฐ์ ์ฐธ์กฐํ์ฌ ํ์ฌ timestamp๋ณด๋ค ์ผ์ ์๊ฐ ์ด์ ์ ์ ๋ณด๋ ์ญ์ ํ๋ค. ๋งค์ผ ์๋ฒฝ 6์๋ง๋ค ๋ฆฌ์ ๋๋๋ก ๊ตฌํ๋์ด ์๋ค.
@Scheduled(cron = "0 0 6 * * ?")
public void removeOldHistory() {
}
3. GET /tagsํ ๋๋ง๋ค tag_history๋ฅผ tag_id๋ก ๋ฌถ์ด์ score sum์ ๊ฐ์ ธ์จ ํ์ ๋์ ์์๋๋ก ๋ณด์ฌ์คฌ๋ค.
์ด ๋ถ๋ถ์ ์ฝ๋๋ ์ข ๋ ๊ณต๋ถํด๋ด์ผ ์ดํดํ ์ ์์ ๊ฒ ๊ฐ์ ์ฝ๋๋ ๊ณต๋์ผ๋ก ๋๊ฒ ๋ค
๋์ #PR 53
1. ๊ฒ์๋ฌผ 1๋ฒ์กฐํ ์ ํ๊ทธ์ ์ค์ฝ์ด +1
๊ฒ์๋ฌผ์ ์กฐํํ๋ฉด ํ๊ทธ์ ์ ์๋ฅผ 1์ ์ฌ๋ฆฐ๋ค.
ex) spring๊ณผ summer๋ฅผ ํ๊ทธ๋ก ๊ฐ์ง๊ณ ์๋ ๊ฒ์๋ฌผ์ 1๋ฒ ์กฐํํ๋ฉด ์๋์ ๊ฐ์ด +1์ฉ ์ฆ๊ฐํ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
2-1. ๊ฒ์๋ฌผ ์์ ํ ๋ tag ์ญ์ ๋ก์ง
๊ฒ์๋ฌผ์ ์์ ํ ๋ u ํ๊ทธ๋ฅผ ์ญ์ ํ๋ ๊ฒฝ์ฐ, ๋ค๋ฅธ ๊ฒ์๋ฌผ์์๋ u ํ๊ทธ๋ฅผ ์ฌ์ฉํ๊ณ ์์ง ์๋ค๋ฉด [tag] ํ
์ด๋ธ์์ ์ญ์ ํ๋ค.
2-2. ๊ฒ์๋ฌผ ์ญ์ ํ ๋ tag ์ญ์ ๋ก์ง
u,v ํ๊ทธ๋ฅผ ๊ฐ์ง๊ณ ์๋ A ๊ฒ์๋ฌผ์ ์ญ์ ํ ๋ u ํ๊ทธ๋ B ๊ฒ์๋ฌผ์์ ์ฐ๊ณ ์์ง๋ง v ํ๊ทธ๋ ๊ทธ ์ด๋ค ๊ฒ์๋ฌผ์์๋ ์ฌ์ฉํ๊ณ ์์ง ์์ ๋ [tag] ํ ์ด๋ธ์์ ์์ ํ ์ญ์ ํ๋ ๋ก์ง๋ ์์ ๋์ผํ๊ฒ ๊ตฌํํ๋ค.
3. ํ๊ทธ ์ ์๊ฐ ์ฌ๋ผ๊ฐ๋ ์ด๋ฒคํธ๊ฐ ๋ค์ํด์ง์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ฐ์ค์น ๋ถ์ฌ
ํ๊ทธ ์ ์๊ฐ ์ฌ๋ผ๊ฐ๋ ์ด๋ฒคํธ๋ฅผ ๋๋ ธ๊ณ , ๊ฐ๊ฐ ์ ์ ํ ๊ฐ์ค์น๋ฅผ ๋ถ์ฌํ์ฌ ๋ํ๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก [tag] ํ ์ด๋ธ์ ์ด๋ฏธ ์กด์ฌํ๋ ํ๊ทธ์ด๋ฉด ๋์ ํด์ ๋ํ๊ณ
์์ง ์กด์ฌํ์ง ์๋ ํ๊ทธ์ด๋ฉด ํ๊ทธ๋ฅผ ์์ฑํ ํ ๊ฐ์ ๋ํ๋ ๋ก์ง์ ๊ฐ์ ธ๊ฐ๋ค.
-
๊ฒ์๋ฌผ ์กฐํ ์ ํ๊ทธ ์ค์ฝ์ด +1 (์์ 1๋ฒ์์ ๊ตฌํ๋์์)
-
๊ฒ์๋ฌผ ์์ฑ ์ ํ๊ทธ ์ค์ฝ์ด +5
-
๊ฒ์๋ฌผ ์์ ์ ์๋ก์ด ํ๊ทธ๊ฐ ์์ฑ๋๋ฉด +5
-
๋๊ธ ์์ฑ ์ ํ๊ทธ ์ค์ฝ์ด +2
์์ง ๊ตฌํํ์ง ์์์ง๋ง, ๊ฒ์ ์ด๋ฒคํธ์ ๋ํด์๋ ํ๊ทธ ์ค์ฝ์ด๊ฐ ์ฌ๋ผ๊ฐ์ผ๋ฉด ์ข๊ฒ ๋ค
'๊ฐ๋ฐ์ด์ผ๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ผ์ฃผ์ผ๋์ ๊ฐ๋จํ๊ฒ ํด๋ก ์ฝ๋ฉ #springboot (0) | 2021.06.18 |
---|---|
DSC KR Solution Challenge hackathon (0) | 2021.02.19 |