ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ - Reversi Agent
ยท
๐Ÿฅ”Project/Reversi Agent
๊ฐœ์š”๋‚ด ๋™์ƒ์€ ๋ฐ”๋‘‘ ์œ ๋‹จ์ž์ด๋‹ค. ๊ทธ๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ๋ณด๋“œ๊ฒŒ์ž„์—์„œ ๋‚˜๋ฅผ ๋Šฅ๊ฐ€ํ•˜๋Š” ์‹ค๋ ฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.๊ทธ๋Ÿฐ ๊ทธ์—๊ฒŒ ๋‚ด๊ฐ€ ๋Œ€ํ•ญํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๊ฒŒ์ž„์€ ๋ฆฌ๋ฒ„์‹œ ๊ฒŒ์ž„์ด๋‹ค.๊ทธ๋Ÿฌ๋‚˜ ์ตœ๊ทผ ๋ช‡ ๋ฒˆ์˜ ๋‚ด๊ธฐ ๊ฒŒ์ž„์—์„œ ํŒจ๋ฐฐํ•˜๋ฉด์„œ, ๋‚˜์˜ ๋งˆ์ง€๋ง‰ ์ž์กด์‹ฌ๋งˆ์ € ์œ„ํ˜‘๋ฐ›๊ณ  ์žˆ์Œ์„ ๊นจ๋‹ฌ์•˜๋‹ค.๊ธฐ์ˆ ์˜ ํž˜์„ ๋นŒ๋ ค์„œ๋ผ๋„ ๋‚ด ๋™์ƒ์„ ์ด๊ฒจ๋จน๊ณ  ๋งํ…Œ๋‹ค.๋ฆฌ๋ฒ„์‹œ ๊ฒŒ์ž„(์˜ค๋ธ๋กœ)https://ko.wikipedia.org/wiki/%EC%98%A4%EB%8D%B8%EB%A1%9C ์˜ค๋ธ๋กœ - ์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „.ko.wikipedia.org  ๋‘ ๋ช…์ด 8 x 8์นธ์˜ ํŒ ์œ„์—์„œ ๊ฐ๊ฐ ๋‹ค๋ฅธ ์ƒ‰์˜ ๋Œ์„ ๋ฒˆ๊ฐˆ์•„ ๋†“์œผ๋ฉฐ ์ง„ํ–‰ํ•œ๋‹ค.๊ทœ์น™์ฒ˜์Œ์— ํŒ ๊ฐ€์šด๋ฐ์— ์‚ฌ๊ฐํ˜•์œผ๋กœ ์—‡๊ฐˆ๋ฆฌ๊ฒŒ ๋ฐฐ์น˜๋œ ๋Œ 4๊ฐœ๋ฅผ ๋†“๊ณ  ์‹œ์ž‘ํ•œ๋‹ค.๋Œ์€ ๋ฐ˜๋“œ์‹œ ์ƒ๋Œ€..
[Threepark] 3. ๋ชจ๋ธ ์„œ๋น™ - (1) Flask ์ž‘์„ฑ
ยท
๐Ÿฅ”Project/[Project] Threepark
์ด๋ฒˆ์—๋Š” GPU์„œ๋ฒ„์— ์˜ฌ๋ฆด Flask ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.Flask์—์„œ๋Š” ๋ชจ๋ธ์„ ๋กœ๋“œํ•˜๊ณ , ๋ฐฑ์—”๋“œ API์— ํ•„์š”ํ•œ AI์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.GPU๋น„์šฉ ๋ฌธ์ œ๋กœ, GPU๊ฐ€ ๊ผญ ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋งŒ ์ด ์„œ๋ฒ„์—์„œ ๋™์ž‘ํ•œ๋‹ค.์†Œ๊ฐœFlask์—์„œ๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.1. generate comment : ์ผ๊ธฐ ์ž‘์„ฑ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ์‘์› ๋ฌธ๊ตฌ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.2. generate image : ๋ฐฑ์—”๋“œ๋กœ๋ถ€ํ„ฐ ์ด๋ฏธ์ง€ ์ƒ์„ฑ ํ”„๋กฌํ”„ํŠธ๋ฅผ ๋ฐ›๊ณ , ํŠœ๋‹๋œ ๋””ํ“จ์ „ ๋ชจ๋ธ์„ ๋กœ๋“œํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.3. emotion classification : ์ผ๊ธฐ ์ž‘์„ฑ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ๊ฐ์ • ๋ถ„์„ํ•œ๋‹ค.4. recommend music : ๊ฐ์ • ๋ถ„์„ ๊ฒฐ๊ณผ์™€ ํฌ๋กค๋ง์„ ํ†ตํ•ด ์ˆ˜์ง‘ํ•œ ์Œ์•… ๋ฐ์ดํ„ฐ์˜ ๊ฐ์ •๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ์‚ฌ์šฉํ•ด ์œ ์‚ฌ๋„๋ฅผ ํ†ตํ•œ ์Œ์•… ์ถ”์ฒœ, ๊ฒฐ๊ณผ ์ด 5๊ฐ€์ง€ ๋ฐ˜ํ™˜  Image์ด..
[Threepark] 3. ๋ฐฑ์—”๋“œ ๊ตฌํ˜„ - (8) DRF ๊ฐœ๋ฐœ | API๋ฌธ์„œ Swagger
ยท
๐Ÿฅ”Project/[Project] Threepark
API ๊ตฌํ˜„์ด ๋๋‚ฌ๋‹ค๋ฉด ํ”„๋ก ํŠธ๋กœ ๊ฐ API์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋„˜๊ฒจ์ค˜์•ผ ์ž‘์—…์ด ๊ฐ€๋Šฅํ•˜๋‹ค.์ด๊ฒƒ์„ ์šฐ๋ฆฌ๋Š” Swagger๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•œ๋‹ค. ์žฅ๊ณ  REST Framework์—์„œ swagger๋ฅผ ํ†ตํ•ด API๋ฅผ ๋ฌธ์„œํ™” ํ•ด๋ณด์ž.๋จผ์ € drf-ysag์— ๋Œ€ํ•œ ๋ฌธ์„œ๋Š” ์•„๋ž˜์˜ ๋งํฌ๋ฅผ ํ†ตํ•ด ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ƒ์„ธํ•œ ์ •๋ณด๋ฅผ ์›ํ•œ๋‹ค๋ฉด ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ํ™œ์šฉํ•˜์ž.https://drf-yasg.readthedocs.io/en/stable/install๊ฐ€์ƒํ™˜๊ฒฝ์„ ํ™œ์„ฑํ™” ํ•˜๊ณ  install ํ•˜์ž.pip install -U drf-yasgsettings.pysettings.py์— ๋‹ค์Œ์ด ์ถ”๊ฐ€๋˜์–ด์•ผ ํ•œ๋‹ค.INSTALLED_APPS = [ ... 'django.contrib.staticfiles', # required for serving..
[Threepark] ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์™€ ํ•ต์‹ฌ ๊ธฐ๋Šฅ ๊ตฌํ˜„
ยท
๐Ÿฅ”Project/[Project] Threepark
์ด๋ฒˆ ํฌ์ŠคํŒ…์€ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„ ๊ตฌ์ถ•๊ณผ์ •๊ณผ ํ•ต์‹ฌ ๊ธฐ๋Šฅ ๊ตฌํ˜„์— ๋Œ€ํ•ด ์•Œ์•„๋ณธ๋‹ค.๊ฐœ๋ฐœ ํ™˜๊ฒฝ๊ณผ ์„œ๋ฒ„ ๊ตฌ์„ฑํ•˜๊ธฐ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ฐ๋ฒ  ์„œ๋ฒ„๋ฅผ ๋จผ์ € ์ƒ์„ฑํ•˜๋„๋ก ํ•œ๋‹ค.RDS๋ฅผ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ๋กœ ํ•˜์˜€๊ณ , MySQL์„ ์‚ฌ์šฉํ•œ๋‹ค.๋ฐ์ดํ„ฐ๋ฒ ์ด์ŠคRDS์ƒ์„ฑAWS์— ํšŒ์›๊ฐ€์ž…์„ ์™„๋ฃŒํ•œ ์ƒํƒœ๋กœ ์‹œ์ž‘ํ•œ๋‹ค.AWS ์ฝ˜์†”์˜ ์„œ๋น„์Šค์—์„œ RDS๋กœ ๋“ค์–ด๊ฐ„๋‹ค. ์ด๋•Œ ์ƒ๋‹จ์˜ region์„ ์„œ์šธ๋กœ ๋ฐ”๊ฟ”์•ผ ํ•œ๋‹ค.์ด์ œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์„ฑ์„ ๋ˆŒ๋Ÿฌ RDS์ธ์Šคํ„ด์Šค ์ƒ์„ฑ์„ ์‹œ์ž‘ํ•œ๋‹ค.๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์„ฑ ๊ณผ์ •ํ‘œ์ค€ ์ƒ์„ฑ์„ ์„ ํƒํ•œ๋‹ค.์šฐ๋ฆฌ๋Š” MySQL์„ ์‚ฌ์šฉํ•  ์˜ˆ์ •์ด๋ฏ€๋กœ MySQL์„ ํƒ.๋ฐ”๋กœ ์•„๋ž˜ ์—”์ง„ ๋ฒ„์ „์„ ํ™•์ธํ•˜์ž์šฐ๋ฆฌ๋Š” ํ”„๋ฆฌํ‹ฐ์–ด๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋ฏ€๋กœ ํ”„๋ฆฌํ‹ฐ์–ด ์„ ํƒ.์‚ฌ์šฉํ•  RDS ์ธ์Šคํ„ด์Šค์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜๊ณ , ๋งˆ์Šคํ„ฐ ์‚ฌ์šฉ์ž๋ฅผ ์„ค์ •ํ•œ๋‹ค. ๋งˆ์Šคํ„ฐ ์‚ฌ์šฉ์ž ์ด๋ฆ„..
[Capstone Design] 3. ๋ฐฑ์—”๋“œ ๊ตฌํ˜„ - (7) DRF ๊ฐœ๋ฐœ | VIEW
ยท
๐Ÿฅ”Project/[Project] Threepark
ํŽธ๋ฆฌํ•œ API์˜ ๊ตฌ์„ฑ์„ ์œ„ํ•ด์„œ Mixins์™€ GenericViewSet์„ ์‚ฌ์šฉํ•œ๋‹ค.๊ธฐ๋ณธ์ ์œผ๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค. class DiaryViewSet(GenericViewSet, # ๋ฏน์Šค์ธ ์‚ฌ์šฉ์„ ์œ„ํ•ด ๊ผญ ์ถ”๊ฐ€ mixins.ListModelMixin,#๋ฆฌ์ŠคํŠธ API mixins.CreateModelMixin,#์ƒ์„ฑ API mixins.RetrieveModelMixin,#์กฐํšŒ API mixins.UpdateModelMixin,#์ˆ˜์ • API. ๋ถ€๋ถ„ ์ˆ˜์ •๊ณผ ์ „์ฒด ์ˆ˜์ • ์žˆ์Œ mixins.DestroyModelMixin):#์‚ญ์ œ API # ์•„๋ž˜ ํผ๋ฏธ์…˜~์ฟผ๋ฆฌ์…‹..
[Capstone Design] 3. ๋ฐฑ์—”๋“œ ๊ตฌํ˜„ - (6) DRF ๊ฐœ๋ฐœ | PERMISSION
ยท
๐Ÿฅ”Project/[Project] Threepark
๋ทฐ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ์— ์•ž์„œ์„œ ์ ‘๊ทผ์˜ ์ œ์–ด๋ฅผ ์œ„ํ•œ ์ปค์Šคํ…€ permissions๋ฅผ ์ž‘์„ฑํ•˜์ž. permissions.py๋จผ์ € permissions.py๋ฅผ settings.py๊ฐ€ ์žˆ๋Š” ํด๋”์— ์ƒ์„ฑํ•œ๋‹ค.์ด ํด๋”์— ์ปค์Šคํ…€ permissions๋ฅผ ์ž‘์„ฑํ•  ๊ฒƒ์ด๋‹ค. import permissions.py์˜ ์ƒ๋‹จ์— ๋‹ค์Œ์„ import ํ•ด์•ผ ํ•œ๋‹ค.from rest_framework import permissions Permission ์ž‘์„ฑ์ด ์„ธ๊ฐ€์ง€์˜ permission์„ ์ž‘์„ฑํ• ๊ฒƒ์ด๋‹ค.1. ๋ณธ์ธ์˜ ๋ฐ์ดํ„ฐ๋งŒ ์ ‘๊ทผ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” IsOwner2. ๋ณธ์ธ๋งŒ ์ˆ˜์ •,์‚ญ์ œํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋˜ ํ—ˆ์šฉ๋œ ํŒ”๋กœ์›Œ์—๊ฒŒ๋Š” ์กฐํšŒํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” IsOwnerOrReadOnly3. ํŒ”๋กœ์ž‰ ์‹ ์ฒญ ์‹œ ๋ณธ์ธ๊ณผ ํŒ”๋กœ์ž‰ ์‹ ์ฒญ์— ๊ด€๋ จ๋œ ์‚ฌ๋žŒ๋งŒ ์กฐํšŒ,ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” I..
[Capstone Design] 3. ๋ฐฑ์—”๋“œ ๊ตฌํ˜„ - (5) DRF ๊ฐœ๋ฐœ | SERIALIZER
ยท
๐Ÿฅ”Project/[Project] Threepark
๋ชจ๋ธ ์ž‘์„ฑ์„ ์™„๋ฃŒ ํ›„ ์‹œ๋ฆฌ์–ผ๋ผ์ด์ €๋ฅผ ์ž‘์„ฑํ•˜๋„๋ก ํ•œ๋‹ค. ์‹œ๋ฆฌ์–ผ๋ผ์ด์ €์˜ ๊ฒฝ์šฐ ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋Š”๊ฒฝ์šฐ ๋Œ€์ฒด๋กœ all๋กœ ์ž‘์„ฑํ•˜์˜€์œผ๋ฉฐ, ํŠน์ˆ˜ํ•œ ๊ฒฝ์šฐ์ธ community์™€ diary๋งŒ ์‚ดํŽด๋ณธ๋‹ค. Diary์ผ๊ธฐ์˜ ๊ฒฝ์šฐ ํฌ๊ฒŒ ์ผ๊ธฐ ๋‚ด์šฉ๊ณผ, ์ผ๊ธฐ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ƒ์„ฑ๋œ ์Œ์•…, ์ด๋ฏธ์ง€, ๊ฐ์ • ๋ฐ์ดํ„ฐ๋กœ ํฌ๊ฒŒ ๋‚˜๋ˆ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด์ค‘ ์Œ์•…์˜ ๊ฒฝ์šฐ๋Š” diary๋ชจ๋ธ์—์„œ fk๋กœ ์ฐธ์กฐํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์Œ์•… ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ผ๊ธฐ์™€ ์—ฐ๊ฒฐํ•˜๋Š” ๋ถ€๋ถ„์€ ๋”ฐ๋กœ ๊ตฌ์„ฑํ–ˆ๋‹ค.๋”ฐ๋ผ์„œ ์‹œ๋ฆฌ์–ผ๋ผ์ด์ €๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.1. ์ˆœ์ˆ˜ํ•˜๊ฒŒ ์ผ๊ธฐ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ณ , ๋‹ค๋ฅธ ์—ฐ๊ด€ ๋ฐ์ดํ„ฐ๋Š” only read๋กœ ์ฝ์„์ˆ˜๋งŒ ์žˆ๋„๋ก ํ•˜๋Š” DiarySerializer2. ์ผ๊ธฐ ๋‚ด์šฉ์„ ํ† ๋Œ€๋กœ ์Œ์•…์„ ์ถ”์ฒœํ•˜๊ณ , ์Œ์•…-์ผ๊ธฐ๋ฅผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” DiaryMusicSerialize..
[Capstone Design] 3. ๋ฐฑ์—”๋“œ ๊ตฌํ˜„ - (4) DRF ๊ฐœ๋ฐœ | DB & MODEL
ยท
๐Ÿฅ”Project/[Project] Threepark
์ด์ œ DB Schema๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ , django์˜ Model์„ ์ž‘์„ฑํ•˜์ž DB Schema ๊ตฌ์„ฑDB ์Šคํ‚ค๋งˆ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌ์„ฑํ•œ๋‹ค.๊ณ„ํš์˜ ๊ณผ์ •์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ๊ตฌ์ƒํ–ˆ๋‹ค. (์ด๋ฏธ์ง€ ์ž์ฒด๋Š” ๊ฒฐ๊ณผ ์ด๋ฏธ์ง€๋‹ค) - ์œ ์ € ์ •๋ณด์˜ ๊ฒฝ์šฐ django์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ•จ ๋ชจ๋ธ์ด ๋งŽ์€ ํŽธ์ด๋ฏ€๋กœ user, follow, diary, music, image, emotion์˜ ๊ฒฝ์šฐ๋งŒ ์ด์•ผ๊ธฐ ํ•ด ๋ณธ๋‹ค. User ์œ ์ €๋ชจ๋ธ์€ django์˜ auth๋ชจ๋ธ์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•œ๋‹ค.from django.db import modelsfrom django.contrib.auth.models import AbstractUser, BaseUserManagerclass UserManager(Base..
[Capstone Design] 3. ๋ฐฑ์—”๋“œ ๊ตฌํ˜„ - (3) Django์— RDS ์—ฐ๊ฒฐํ•˜๊ธฐ
ยท
๐Ÿฅ”Project/[Project] Threepark
์ด๋ฒˆ์—๋Š” django ์™€ AWS RDS๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณธ๋‹ค. ์„ค์น˜pip install boto3pip install mysqlclient Settings.pyํ”„๋กœ์ ํŠธ์˜ settings.py์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•œ๋‹ค.  ๊ฐœ๋ณ„ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋“ค์€ ์ด์ „ ํฌ์ŠคํŒ…์„ ํ†ตํ•ด์„œ ์ƒ์„ฑํ•œ .envํŒŒ์ผ์— ์ •์˜ํ•œ๋‹ค.๋ชจ๋‘ ์ €์žฅํ•˜๊ธฐ๋ฅผ ํ•œ๋ฒˆ ๋ˆ„๋ฅด๊ณ ,migration์„ ์ง„ํ–‰ํ•œ๋‹ค.python manage.py migrate