Python
-
๐ Crontab crontab์ Linux ์ด์์ฒด์ ์์ ์๊ฐ ๊ธฐ๋ฐ ์ก ์ค์ผ์ค๋ฌ์ด๋ค. ์ฆ, ์ํ๋ ์๊ฐ์ ์ํ๋ ์์ ์ ์ํํ ์ ์๊ฒ ํด์ฃผ๋ ์์ ์ค์ผ์ค๋ฌ๋ผ๊ณ ๋ณด๋ฉด ๋๋ค. ์๋ฅผ ๋ค์ด ์ฅ๊ณ ์์ ๋ก๊ทธ์ธ์ ํ์ ๋, session์ผ๋ก ๊ตฌํ๋ ๋ก๊ทธ์ธ์ด๋ผ๋ฉด django-session์ session์ ๋ณด๊ฐ ์ ์ฅ๋์๋ค๊ฐ ๋ก๊ทธ์์ํ๋ฉด ์ญ์ ๊ฐ ๋๋ค. ํ์ง๋ง ๋ธ๋ผ์ฐ์ ๊ฐ ๋ซํ๊ฑฐ๋ ๋ง๋ฃ์๊ฐ์ด ์ง๋๊ฒ ๋๋ฉด session์ ๋ณด๋ ์ ์ง๋๋ฉฐ ๋ก๊ทธ์์ ์ฒ๋ฆฌ๊ฐ ๋๊ธฐ ๋๋ฌธ์ ๊ณ์๋๋ ๋ก๊ทธ์ธ ๋ง์์ง๋ฉด ๋ถํ์ํ session ๋ฐ์ดํฐ๊ฐ ์์ฌ ์๋ฆฌ๋ฅผ ์ฐจ์งํ๊ฒ ๋๋ค. ์ด๋ ํน์ ์๊ฐ์ด ๋๋ฉด ๋ง๋ฃ๊ฐ ๋ session์ ๋ณด๋ฅผ ์ญ์ ํด ์คฌ์ผ๋ฉด ์ข๊ฒ ๋ค. ์์ ๊ธฐ๋ฅ์ ๋์ ํด์ฃผ๋ ๊ฒ์ด ๋ฐ๋ก crontab!!์ด๋ค. ๐ฑ django-crontab ์ค์น ๋จผ์ ๋ค์..
[Django] django-crontab ์ค์ผ์ค๋ฌ ์์ฑ๐ Crontab crontab์ Linux ์ด์์ฒด์ ์์ ์๊ฐ ๊ธฐ๋ฐ ์ก ์ค์ผ์ค๋ฌ์ด๋ค. ์ฆ, ์ํ๋ ์๊ฐ์ ์ํ๋ ์์ ์ ์ํํ ์ ์๊ฒ ํด์ฃผ๋ ์์ ์ค์ผ์ค๋ฌ๋ผ๊ณ ๋ณด๋ฉด ๋๋ค. ์๋ฅผ ๋ค์ด ์ฅ๊ณ ์์ ๋ก๊ทธ์ธ์ ํ์ ๋, session์ผ๋ก ๊ตฌํ๋ ๋ก๊ทธ์ธ์ด๋ผ๋ฉด django-session์ session์ ๋ณด๊ฐ ์ ์ฅ๋์๋ค๊ฐ ๋ก๊ทธ์์ํ๋ฉด ์ญ์ ๊ฐ ๋๋ค. ํ์ง๋ง ๋ธ๋ผ์ฐ์ ๊ฐ ๋ซํ๊ฑฐ๋ ๋ง๋ฃ์๊ฐ์ด ์ง๋๊ฒ ๋๋ฉด session์ ๋ณด๋ ์ ์ง๋๋ฉฐ ๋ก๊ทธ์์ ์ฒ๋ฆฌ๊ฐ ๋๊ธฐ ๋๋ฌธ์ ๊ณ์๋๋ ๋ก๊ทธ์ธ ๋ง์์ง๋ฉด ๋ถํ์ํ session ๋ฐ์ดํฐ๊ฐ ์์ฌ ์๋ฆฌ๋ฅผ ์ฐจ์งํ๊ฒ ๋๋ค. ์ด๋ ํน์ ์๊ฐ์ด ๋๋ฉด ๋ง๋ฃ๊ฐ ๋ session์ ๋ณด๋ฅผ ์ญ์ ํด ์คฌ์ผ๋ฉด ์ข๊ฒ ๋ค. ์์ ๊ธฐ๋ฅ์ ๋์ ํด์ฃผ๋ ๊ฒ์ด ๋ฐ๋ก crontab!!์ด๋ค. ๐ฑ django-crontab ์ค์น ๋จผ์ ๋ค์..
2023.05.22 -
๐ ํ์ด์ฌ์์์ ๋คํ์ฑ Java ์ธ์ด์ ๋คํ์ฑ์ ๋ค๋ฃจ๋ฉด์ ์ค๋ฒ๋ผ์ด๋ฉ๊ณผ ์ค๋ฒ๋ก๋ฉ์ ๋ํด ์์๋ณด์๋ค. ๊ทธ๋ ๋ค๋ฉด Python์์๋ ์ธ์ด์ ๋คํ์ฑ์ด ์๋์ง ์ดํด๋ณด๋ ค๊ณ ํ๋ค. Java ์ค๋ฒ๋ผ์ด๋ฉ๊ณผ ์ค๋ฒ๋ก๋ฉ [Java] Java ๋คํ์ฑ๊ณผ ์ค๋ฒ๋ก๋ฉ, ์ค๋ฒ๋ผ์ด๋ฉ ๐ Java ๋คํ์ฑ โ๏ธ ๋คํ์ฑ ์ด๋ ํ๋์ ํจ์, ํด๋์ค๊ฐ ๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก ๋์ํ๋ ๊ฒ์ ๋งํ๋ค. Java์์๋ ์ฃผ๋ก ์ค๋ฒ๋ก๋ฉ(Overloading)๊ณผ ์ค๋ฒ๋ผ์ด๋ฉ(Overriding) ์ ํตํด์ ๋คํ์ฑ์ ์ง์ํ๋ค. ๐ฑ ์ค geminihoroscope.tistory.com ๐ฑ ์ค๋ฒ๋ก๋ฉ(Overloading) โ๏ธ ํ์ด์ฌ์์๋ ์ค๋ฒ๋ก๋ฉ์ ์ ์์ผ๋ก ์ง์ํ์ง ์๋๋ค๊ณ ํ๋ค. ํ์ง๋ง ๊ตฌํ์ ๊ฐ๋ฅํ์ง๋ง ์ค๋ฒ๋ก๋ฉ์ ๋จ๋ฐํ๋ฉด ์ฝ๋๊ฐ ๋ณต์กํด์ง๋ค. โ๏ธ ํ์ด์ฌ์์๋ ์ฐ์ฐ์ ์ค..
[Python] ํ์ด์ฌ ์ค๋ฒ๋ผ์ด๋ฉ๊ณผ ์ค๋ฒ๋ก๋ฉ๐ ํ์ด์ฌ์์์ ๋คํ์ฑ Java ์ธ์ด์ ๋คํ์ฑ์ ๋ค๋ฃจ๋ฉด์ ์ค๋ฒ๋ผ์ด๋ฉ๊ณผ ์ค๋ฒ๋ก๋ฉ์ ๋ํด ์์๋ณด์๋ค. ๊ทธ๋ ๋ค๋ฉด Python์์๋ ์ธ์ด์ ๋คํ์ฑ์ด ์๋์ง ์ดํด๋ณด๋ ค๊ณ ํ๋ค. Java ์ค๋ฒ๋ผ์ด๋ฉ๊ณผ ์ค๋ฒ๋ก๋ฉ [Java] Java ๋คํ์ฑ๊ณผ ์ค๋ฒ๋ก๋ฉ, ์ค๋ฒ๋ผ์ด๋ฉ ๐ Java ๋คํ์ฑ โ๏ธ ๋คํ์ฑ ์ด๋ ํ๋์ ํจ์, ํด๋์ค๊ฐ ๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก ๋์ํ๋ ๊ฒ์ ๋งํ๋ค. Java์์๋ ์ฃผ๋ก ์ค๋ฒ๋ก๋ฉ(Overloading)๊ณผ ์ค๋ฒ๋ผ์ด๋ฉ(Overriding) ์ ํตํด์ ๋คํ์ฑ์ ์ง์ํ๋ค. ๐ฑ ์ค geminihoroscope.tistory.com ๐ฑ ์ค๋ฒ๋ก๋ฉ(Overloading) โ๏ธ ํ์ด์ฌ์์๋ ์ค๋ฒ๋ก๋ฉ์ ์ ์์ผ๋ก ์ง์ํ์ง ์๋๋ค๊ณ ํ๋ค. ํ์ง๋ง ๊ตฌํ์ ๊ฐ๋ฅํ์ง๋ง ์ค๋ฒ๋ก๋ฉ์ ๋จ๋ฐํ๋ฉด ์ฝ๋๊ฐ ๋ณต์กํด์ง๋ค. โ๏ธ ํ์ด์ฌ์์๋ ์ฐ์ฐ์ ์ค..
2023.05.16 -
๐ ํ์ด์ฌ์ผ๋ก ๊ตฌํํ๋ ๋จธ์ ๋ฌ๋ / ๋ฅ๋ฌ๋ ์์๋ณด๊ธฐ โ๏ธ ์ด์ ์๋ ํซ์ด์๊ฐ ๋๊ณ ์๋ ์ธ๊ณต์ง๋ฅ ๋ถ์ผ์ธ ๋จธ์ ๋ฌ๋ ๊ณผ ๋ฅ๋ฌ๋ ์ ๋ํต์ ๊ณต๋ถํด๋ณด๋ ค๊ณ ํ๋ค. โ๏ธ ๋จธ์ ๋ฌ๋ ๊ณผ ๋ฅ๋ฌ๋ ์ ๊ตฌ๊ธ ํ ์ํ๋ก์ฐ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๊ณ ๋น ๋ฅด๊ฒ ๊ฐ๋ฐํ ์ ์์ง๋ง ์ด ๋จธ์ ๋ฌ๋๊ณผ ๋ฅ๋ฌ๋์ ๋ด๋ถ ๊ตฌ์กฐ๊ฐ ๋ธ๋๋ฐ์ค๋ก ์ ๊ณต๋๊ธฐ ๋๋ฌธ์ ์ด๋ป๊ฒ ๋์๋๋์ง, ๋๋ ์ฝ๋๋ก ์ด๋ป๊ฒ ๊ตฌํ๋๋์ง ์ ์ ์๋ค๋ ๋จ์ ์ด ์๋ค. โ๏ธ ๊ทธ๋์ ์ ํ๋ธ ๋ฐ์ฑํธ๋์ ๋จธ์ ๋ฌ๋ / ๋ฅ๋ฌ๋ ๊ฐ์๋ฅผ ๋ค์ผ๋ฉฐ ํ์ด์ฌ์ผ๋ก ์ด๋ป๊ฒ ์๋๋๋ฉฐ ์ฝ๋๋ก๋ ์ด๋ป๊ฒ ๊ตฌํ์ด ๋๋์ง ์์๋ณด๋ ค๊ณ ํ๋ค. ๋จธ์ ๋ฌ๋ ๊ฐ์ ๐ฑ 4์ฐจ ์ฐ์ ํ๋ช ๋ฐฐ๊ฒฝ โ๏ธ ํ์์ ๋ฐ๋ผ ์ ์๋ ์กฐ๊ธ์ฉ ๋ค๋ฅด์ง๋ง, ๋์ฒด๋ก 4์ฐจ ์ฐ์ ํ๋ช ์ ๋ชจ๋ ๊ฒ์ด ์ฐ๊ฒฐ๋์ด(Connectivity) ์๋ ํ๊ฒฝ์์ ์ธ๊ณต์ง๋ฅ(Ar..
[๋ฅ๋ฌ๋] ๋ฅ๋ฌ๋์ด๋?๐ ํ์ด์ฌ์ผ๋ก ๊ตฌํํ๋ ๋จธ์ ๋ฌ๋ / ๋ฅ๋ฌ๋ ์์๋ณด๊ธฐ โ๏ธ ์ด์ ์๋ ํซ์ด์๊ฐ ๋๊ณ ์๋ ์ธ๊ณต์ง๋ฅ ๋ถ์ผ์ธ ๋จธ์ ๋ฌ๋ ๊ณผ ๋ฅ๋ฌ๋ ์ ๋ํต์ ๊ณต๋ถํด๋ณด๋ ค๊ณ ํ๋ค. โ๏ธ ๋จธ์ ๋ฌ๋ ๊ณผ ๋ฅ๋ฌ๋ ์ ๊ตฌ๊ธ ํ ์ํ๋ก์ฐ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๊ณ ๋น ๋ฅด๊ฒ ๊ฐ๋ฐํ ์ ์์ง๋ง ์ด ๋จธ์ ๋ฌ๋๊ณผ ๋ฅ๋ฌ๋์ ๋ด๋ถ ๊ตฌ์กฐ๊ฐ ๋ธ๋๋ฐ์ค๋ก ์ ๊ณต๋๊ธฐ ๋๋ฌธ์ ์ด๋ป๊ฒ ๋์๋๋์ง, ๋๋ ์ฝ๋๋ก ์ด๋ป๊ฒ ๊ตฌํ๋๋์ง ์ ์ ์๋ค๋ ๋จ์ ์ด ์๋ค. โ๏ธ ๊ทธ๋์ ์ ํ๋ธ ๋ฐ์ฑํธ๋์ ๋จธ์ ๋ฌ๋ / ๋ฅ๋ฌ๋ ๊ฐ์๋ฅผ ๋ค์ผ๋ฉฐ ํ์ด์ฌ์ผ๋ก ์ด๋ป๊ฒ ์๋๋๋ฉฐ ์ฝ๋๋ก๋ ์ด๋ป๊ฒ ๊ตฌํ์ด ๋๋์ง ์์๋ณด๋ ค๊ณ ํ๋ค. ๋จธ์ ๋ฌ๋ ๊ฐ์ ๐ฑ 4์ฐจ ์ฐ์ ํ๋ช ๋ฐฐ๊ฒฝ โ๏ธ ํ์์ ๋ฐ๋ผ ์ ์๋ ์กฐ๊ธ์ฉ ๋ค๋ฅด์ง๋ง, ๋์ฒด๋ก 4์ฐจ ์ฐ์ ํ๋ช ์ ๋ชจ๋ ๊ฒ์ด ์ฐ๊ฒฐ๋์ด(Connectivity) ์๋ ํ๊ฒฝ์์ ์ธ๊ณต์ง๋ฅ(Ar..
2023.05.08 -
[22.11.27] ๐ ๊ตฌํํ๊ณ ์ ํ๋ ํ๋ฉด 1. ์ด์ ๊ฐ๋ฐ ๋จ๊ณ์์ ์ฌ์ดํธ๋ฅผ ๋ฑ๋กํ์ฌ ํด๋น ์ฌ์ดํธ์ Tag๋ฅผ Many-to-Many๊ด๊ณ๋ก ๋ฑ๋กํ๋ ์งํ 2. ์ด์ ํ๊ทธ๊ฐ ๋ฑ๋ก๋ ์ฌ์ดํธ๋ฅผ ์ต์ ์์ผ๋ก 4~6๊ฐ ์กฐํ ํ ๋ฑ๋ก๋ ๋ชจ๋ ํ๊ทธ๋ฅผ ์กฐํํ์ฌ ํ๋จ์ Tag buttonํํ๋ก ๋์ ์ผ๋ก ๋ฟ๋ ค์ฃผ๋ ์์ ์ ์งํํ ๊ฒ์ด๋ค. 3. ์์ ๊ฐ์ด ์งํํ๊ธฐ ์ํด์ Siteํญ๋ชฉ์ ์กฐํํ ๋ฟ ์๋๋ผ Many-to-Many๊ด๊ณ๋ก ๋ฑ๋ก๋ ํ๊ทธ๋ ์กฐํ๋ฅผ ํด์ผํ๊ธฐ ๋๋ฌธ์ Serializer ์์ ์ ์งํํ๊ฒ ๋์๋ค. ๋ฌผ๋ก api 2๊ฐ๋ฅผ ์์ฒญํ์ฌ ๊ฐ๊ฐ ์ฌ์ดํธ ๋ฐ์ดํฐ, ํ๊ทธ ๋ฐ์ดํฐ ์กฐํํ ์๋ ์์ง๋ง 2๋ฒ์ ์์ฒญํ๋ค๋ ๊ฒ ์์ฒด๊ฐ ๋นํจ์จ์ ์ด๋ฉฐ drf์ ์กด์ฌํ๋ serialize๋ฅผ ํ์ฉํ์ง ๋ชปํ๋ค๊ณ ํ๋จ 1. views.py > TagsA..
[ISSUE] Tag ํฌํจ๋ Site ๋ชจ๋ธ์ serialize ์ฒ๋ฆฌ[22.11.27] ๐ ๊ตฌํํ๊ณ ์ ํ๋ ํ๋ฉด 1. ์ด์ ๊ฐ๋ฐ ๋จ๊ณ์์ ์ฌ์ดํธ๋ฅผ ๋ฑ๋กํ์ฌ ํด๋น ์ฌ์ดํธ์ Tag๋ฅผ Many-to-Many๊ด๊ณ๋ก ๋ฑ๋กํ๋ ์งํ 2. ์ด์ ํ๊ทธ๊ฐ ๋ฑ๋ก๋ ์ฌ์ดํธ๋ฅผ ์ต์ ์์ผ๋ก 4~6๊ฐ ์กฐํ ํ ๋ฑ๋ก๋ ๋ชจ๋ ํ๊ทธ๋ฅผ ์กฐํํ์ฌ ํ๋จ์ Tag buttonํํ๋ก ๋์ ์ผ๋ก ๋ฟ๋ ค์ฃผ๋ ์์ ์ ์งํํ ๊ฒ์ด๋ค. 3. ์์ ๊ฐ์ด ์งํํ๊ธฐ ์ํด์ Siteํญ๋ชฉ์ ์กฐํํ ๋ฟ ์๋๋ผ Many-to-Many๊ด๊ณ๋ก ๋ฑ๋ก๋ ํ๊ทธ๋ ์กฐํ๋ฅผ ํด์ผํ๊ธฐ ๋๋ฌธ์ Serializer ์์ ์ ์งํํ๊ฒ ๋์๋ค. ๋ฌผ๋ก api 2๊ฐ๋ฅผ ์์ฒญํ์ฌ ๊ฐ๊ฐ ์ฌ์ดํธ ๋ฐ์ดํฐ, ํ๊ทธ ๋ฐ์ดํฐ ์กฐํํ ์๋ ์์ง๋ง 2๋ฒ์ ์์ฒญํ๋ค๋ ๊ฒ ์์ฒด๊ฐ ๋นํจ์จ์ ์ด๋ฉฐ drf์ ์กด์ฌํ๋ serialize๋ฅผ ํ์ฉํ์ง ๋ชปํ๋ค๊ณ ํ๋จ 1. views.py > TagsA..
2023.05.06 -
[22.11.26] ๐ ManytoMany ๊ด๊ณ๋ฅผ ๊ฐ์ง ๋ ๋ชจ๋ธ Bulk Create ์์ โ๏ธ ํ์ฌ ์์ ๊ฐ์ด ๋ฑ๋ก๋ ํญ๋ชฉ์ ๋ํด ํ๊ทธ๋ฅผ ์ถ๊ฐํ๋ ๊ธฐ๋ฅ์ ๊ฐ๋ฐ ๊ตฌํ ์ค์ด๋ค. ๋ฑ๋ก๋ ํญ๋ชฉ์ Scrap Parsing์ ํตํด ํน์ ์ฌ์ดํธ์ ๊ด๋ จํ url, ์ธ๋ค์ผ, ์ ๋ชฉ ๋ฑ์ ์ ์ฅํ์ฌ ์ ๊ทผํ ์ ์๊ฒ ๊ตฌํํ ํํฉ ํ๋ฉด์ด๋ค. ํน์ ์ฌ์ดํธ๋ฅผ ์ ํํ์ฌ bulk(๋ค์ค)๋ก ํ๊ทธ๋ฅผ ๋ฑ๋กํ ์ ์๊ฒ ์คํฌ๋ฆฝํธ ๊ตฌํ ์ ํํ ๊ฐ Site์ Tag Model์ด ManytoMany ๊ด๊ณ๋ก ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง 1. ๋ชจ๋ธ ์ฝ๋ ๐ Tag Model class Site(models.Model): """ ํญ๋ชฉ์ ๊ดํ ๋ฐ์ดํฐ ๋ชจ๋ธ """ title = models.CharField(verbose_name='ํ์ดํ', max_length=100)..
[ISSUE] ManytoMany ๊ด๊ณ๋ฅผ ๊ฐ์ง ๋ ๋ชจ๋ธ Bulk Create ์์[22.11.26] ๐ ManytoMany ๊ด๊ณ๋ฅผ ๊ฐ์ง ๋ ๋ชจ๋ธ Bulk Create ์์ โ๏ธ ํ์ฌ ์์ ๊ฐ์ด ๋ฑ๋ก๋ ํญ๋ชฉ์ ๋ํด ํ๊ทธ๋ฅผ ์ถ๊ฐํ๋ ๊ธฐ๋ฅ์ ๊ฐ๋ฐ ๊ตฌํ ์ค์ด๋ค. ๋ฑ๋ก๋ ํญ๋ชฉ์ Scrap Parsing์ ํตํด ํน์ ์ฌ์ดํธ์ ๊ด๋ จํ url, ์ธ๋ค์ผ, ์ ๋ชฉ ๋ฑ์ ์ ์ฅํ์ฌ ์ ๊ทผํ ์ ์๊ฒ ๊ตฌํํ ํํฉ ํ๋ฉด์ด๋ค. ํน์ ์ฌ์ดํธ๋ฅผ ์ ํํ์ฌ bulk(๋ค์ค)๋ก ํ๊ทธ๋ฅผ ๋ฑ๋กํ ์ ์๊ฒ ์คํฌ๋ฆฝํธ ๊ตฌํ ์ ํํ ๊ฐ Site์ Tag Model์ด ManytoMany ๊ด๊ณ๋ก ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง 1. ๋ชจ๋ธ ์ฝ๋ ๐ Tag Model class Site(models.Model): """ ํญ๋ชฉ์ ๊ดํ ๋ฐ์ดํฐ ๋ชจ๋ธ """ title = models.CharField(verbose_name='ํ์ดํ', max_length=100)..
2023.05.06 -
[22.11.26] ๐ ์ค๋ณต๋๋ฉฐ ๊ฐ ํจ์์ ์ฌ์ ์ ์ฒ๋ฆฌ๋๋ ์์ decorator ๐ SiteBulkAPIView - ๋ฒํฌ ์ฆ๊ฒจ์ฐพ๊ธฐ, ์ญ์ class SiteBulkAPIView(APIView): """ ๋ฒํฌ ํญ๋ชฉ ์ฆ๊ฒจ์ฐพ๊ธฐ, ์ญ์ api """ def get_list(self): pk_ids: list = self.request.data.get('pk_ids') return get_list_or_404(Site, id__in=pk_ids) def validate_ids(self): pk_ids: list = self.request.data.get('pk_ids') for id in pk_ids: get_object_or_404(Site,id=id) return self.get_list() def put(..
[ISSUE]decorator๋ฅผ ์ด์ฉํ ์ค๋ณต์์ ์ ์ฒ๋ฆฌ[22.11.26] ๐ ์ค๋ณต๋๋ฉฐ ๊ฐ ํจ์์ ์ฌ์ ์ ์ฒ๋ฆฌ๋๋ ์์ decorator ๐ SiteBulkAPIView - ๋ฒํฌ ์ฆ๊ฒจ์ฐพ๊ธฐ, ์ญ์ class SiteBulkAPIView(APIView): """ ๋ฒํฌ ํญ๋ชฉ ์ฆ๊ฒจ์ฐพ๊ธฐ, ์ญ์ api """ def get_list(self): pk_ids: list = self.request.data.get('pk_ids') return get_list_or_404(Site, id__in=pk_ids) def validate_ids(self): pk_ids: list = self.request.data.get('pk_ids') for id in pk_ids: get_object_or_404(Site,id=id) return self.get_list() def put(..
2023.05.05 -
[22.11.20] Try to apply generics DestroyAPIView Generics View๋ฅผ ์ฌ์ฉํ์ง ์๋ ์ด์ โ๏ธ DRF๋ก ์๋ฒ๋จ์ rest_framework๊ฐ ์ง์ํด์ฃผ๋ generics View๋ฅผ ์ฌ์ฉํ์ง ์๊ณ APIView๋ง์ ์ด์ฉํ์ฌ ํ๋ก์ ํธ๋ฅผ ์งํํ๊ธฐ๋ก ๊ฒฐ์ ํ์๋ค. โ๏ธ ๊ทธ๋ ๊ฒ ๊ฒฐ์ ํ ์ด์ ๋ generics ํ View๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๋๊ฐ ๊ฐ๊ฒฐํด์ง๊ณ ๊ฐ๋ฐํ๊ธฐ ํธ๋ฆฌํด์ง๊ธด ํ์ง๋ง ํ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ๊ทธ๋ ๊ฒ ๊ฐ๊ฒฐํด์ง๊ณ ์๋๋๋ ๋ก์ง์ ํ์ ํ์ง ์๊ณ ๋ฌด๋ถ๋ณํ๊ฒ ์ฌ์ฉํ๋ ๊ฒ์ ์ฐ๋ คํ์ฌ ์ฒ์์๋ ์์ ๋กญ๊ฒ customizing์ด ๊ฐ๋ฅํ APIView๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ํ๋ค. APIView๋ก ์์ฑ๋ Bulk Delete โ๏ธ ํญ๋ชฉ์ ๋ค์ค์ผ๋ก ์ญ์ ํ๊ธฐ ์ํ ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ์ํด ํด๋ผ์ด์ธํธ ๋จ์์ ..
[ISSUE] gernerics view, DestroyAPIView ์ ์ฉ[22.11.20] Try to apply generics DestroyAPIView Generics View๋ฅผ ์ฌ์ฉํ์ง ์๋ ์ด์ โ๏ธ DRF๋ก ์๋ฒ๋จ์ rest_framework๊ฐ ์ง์ํด์ฃผ๋ generics View๋ฅผ ์ฌ์ฉํ์ง ์๊ณ APIView๋ง์ ์ด์ฉํ์ฌ ํ๋ก์ ํธ๋ฅผ ์งํํ๊ธฐ๋ก ๊ฒฐ์ ํ์๋ค. โ๏ธ ๊ทธ๋ ๊ฒ ๊ฒฐ์ ํ ์ด์ ๋ generics ํ View๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๋๊ฐ ๊ฐ๊ฒฐํด์ง๊ณ ๊ฐ๋ฐํ๊ธฐ ํธ๋ฆฌํด์ง๊ธด ํ์ง๋ง ํ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ๊ทธ๋ ๊ฒ ๊ฐ๊ฒฐํด์ง๊ณ ์๋๋๋ ๋ก์ง์ ํ์ ํ์ง ์๊ณ ๋ฌด๋ถ๋ณํ๊ฒ ์ฌ์ฉํ๋ ๊ฒ์ ์ฐ๋ คํ์ฌ ์ฒ์์๋ ์์ ๋กญ๊ฒ customizing์ด ๊ฐ๋ฅํ APIView๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ํ๋ค. APIView๋ก ์์ฑ๋ Bulk Delete โ๏ธ ํญ๋ชฉ์ ๋ค์ค์ผ๋ก ์ญ์ ํ๊ธฐ ์ํ ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ์ํด ํด๋ผ์ด์ธํธ ๋จ์์ ..
2023.05.05 -
โ๏ธ ์ซ์๊ฐ ์ฒ, ๋ง ๋จ์ ์ด์์ผ๋ก ์ปค์ง๋ฉด ํ ๋ฒ์ ๋ช์๋ฆฌ ์์ธ์ง ์ฝ๊ธฐ๊ฐ ์ด๋ ต๋ค. 123958674 โ๏ธ ์ซ์์ ์๋ฆฟ ์๋ฅผ ์ฝ์ด ์ฒ์๋ฆฌ ๋ง๋ค ","๋ฅผ ์ฐ์ด์ฃผ๋ ๋ก์ง์ ๋ฃ์ด Python์ ํจ์๋ก ๋ง๋ค ์ ์๊ฒ ์ง๋ง, Python์์๋ format์ด๋ผ๋ ํจ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ์ด์ฉํ์ฌ ์ฒ์๋ฆฌ ๋ง๋ค ","๋ฅผ ์ฝ์ ํ์ฌ ๋ณด์. price = 123958674 print(format(price, ',d')) print(format(price, ',f')) โ๏ธ format() ํจ์์ ์ฒซ ๋ฒ์งธ ์ธ์๋ก ","๋ฅผ ์ฝ์ ํ ๊ฐ, ๋ ๋ฒ์งธ ์ธ์๋ก๋ "d" ๋๋ "f"๋ฅผ ๋ฃ์ด์ค๋ค. format(price, ',d'): ์ ์ํ์ผ๋ก format(price, ',f'): ์ค์ํ์ผ๋ก โค format() ์ฒ๋จ์ ์ฝ์ print(form..
[Python] format(์ฒ๋จ์ ์ฝค๋ง ์ฝ์ ํ๊ธฐ)โ๏ธ ์ซ์๊ฐ ์ฒ, ๋ง ๋จ์ ์ด์์ผ๋ก ์ปค์ง๋ฉด ํ ๋ฒ์ ๋ช์๋ฆฌ ์์ธ์ง ์ฝ๊ธฐ๊ฐ ์ด๋ ต๋ค. 123958674 โ๏ธ ์ซ์์ ์๋ฆฟ ์๋ฅผ ์ฝ์ด ์ฒ์๋ฆฌ ๋ง๋ค ","๋ฅผ ์ฐ์ด์ฃผ๋ ๋ก์ง์ ๋ฃ์ด Python์ ํจ์๋ก ๋ง๋ค ์ ์๊ฒ ์ง๋ง, Python์์๋ format์ด๋ผ๋ ํจ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ์ด์ฉํ์ฌ ์ฒ์๋ฆฌ ๋ง๋ค ","๋ฅผ ์ฝ์ ํ์ฌ ๋ณด์. price = 123958674 print(format(price, ',d')) print(format(price, ',f')) โ๏ธ format() ํจ์์ ์ฒซ ๋ฒ์งธ ์ธ์๋ก ","๋ฅผ ์ฝ์ ํ ๊ฐ, ๋ ๋ฒ์งธ ์ธ์๋ก๋ "d" ๋๋ "f"๋ฅผ ๋ฃ์ด์ค๋ค. format(price, ',d'): ์ ์ํ์ผ๋ก format(price, ',f'): ์ค์ํ์ผ๋ก โค format() ์ฒ๋จ์ ์ฝ์ print(form..
2023.05.04 -
๐ ์์นด๋ ์ ์ฌ๋(Jaccard Similarity) ์์นด๋ ์ ์ฌ๋๋ ๋ชจ๋๋ค ๋ค ์๊ณ ์๋ ๊ฐ๋ ์ด๋ค. ๋ด๊ฐ ๋ง์ฝ์ A์ B๋ผ๋ ์์ดํ ์ด ์ผ๋ง๋ ์ ์ฌํ์ง ๋น๊ตํ๊ณ ์ถ๋ค๋ผ๊ณ ํ๋ค๋ฉด ๋๋ถ๋ถ์ด ์์นด๋ ์ ์ฌ๋ ๊ฐ๋ ๋ชจ๋ฅด๋๋ผ๋ ๊ทธ ๋ฐฉ๋ฒ์ ๋ ์ฌ๋ฆด ๊ฒ์ด๋ค. ๊ทธ๋ ๋ค๋ฉด ์์นด๋ ์ ์ฌ๋๋ฅผ ์ด๋ป๊ฒ ๊ตฌํ๋์ง ํ ๋ฒ ์์๋ณด์. โค ์์นด๋ ์ ์ฌ๋ ๊ณต์ ์์ ๋ณด์ด๋ ๊ฒ์ฒ๋ผ ๊ณต์์ด ๋๋ฌด๋ ๊ฐ๋จํ๋ค. ๋ ์์ดํ A์ B์ ๊ต์งํฉ์์ ํฉ์งํฉ์ ๋๋ ๊ฐ์ด ๋ฐ๋ก ์์นด๋ ์ ์ฌ๋๋ฅผ ๊ตฌํ๋ ๊ณต์์ด๋ค. ์ด๋ฅผ ๋ฐ์ดํฐ ๊ธฐ๋ฐ์ผ๋ก ์ดํดํ๊ธฐ ์ํด ๊ณ์ฐํด ๋ณด์. โค ์ข ๋ชฉ ์ ์ฌ๋ ๋ฐ์ดํฐ ์์ ๋ณดํต ๋ฌธ์ ์ ์ฌ๋ ๊ฐ์ ์์ฐ์ด ์ฒ๋ฆฌ ๊ด๋ จ์ผ๋ก ์ค๋ช ์ ํ๋๋ฐ ์ดํด๋ฅผ ์ฝ๊ฒ ํ๊ธฐ ์ํด ์ฃผ์ ์ข ๋ชฉ์ด ์ผ๋ง๋ ์ ์ฌํ์ง ์ธก์ ํด ๋ณด์. A ์ ์ ์ ์ฃผ์ ์ข ๋ชฉ ์ผ์ฑ์ ์, ํ ์ฌ๋ผ, LG์ ..
[๋ฅ๋ฌ๋] ์์นด๋ ์ ์ฌ๋(Jaccard Similarity) ๊ฐ๋ ์ดํด๐ ์์นด๋ ์ ์ฌ๋(Jaccard Similarity) ์์นด๋ ์ ์ฌ๋๋ ๋ชจ๋๋ค ๋ค ์๊ณ ์๋ ๊ฐ๋ ์ด๋ค. ๋ด๊ฐ ๋ง์ฝ์ A์ B๋ผ๋ ์์ดํ ์ด ์ผ๋ง๋ ์ ์ฌํ์ง ๋น๊ตํ๊ณ ์ถ๋ค๋ผ๊ณ ํ๋ค๋ฉด ๋๋ถ๋ถ์ด ์์นด๋ ์ ์ฌ๋ ๊ฐ๋ ๋ชจ๋ฅด๋๋ผ๋ ๊ทธ ๋ฐฉ๋ฒ์ ๋ ์ฌ๋ฆด ๊ฒ์ด๋ค. ๊ทธ๋ ๋ค๋ฉด ์์นด๋ ์ ์ฌ๋๋ฅผ ์ด๋ป๊ฒ ๊ตฌํ๋์ง ํ ๋ฒ ์์๋ณด์. โค ์์นด๋ ์ ์ฌ๋ ๊ณต์ ์์ ๋ณด์ด๋ ๊ฒ์ฒ๋ผ ๊ณต์์ด ๋๋ฌด๋ ๊ฐ๋จํ๋ค. ๋ ์์ดํ A์ B์ ๊ต์งํฉ์์ ํฉ์งํฉ์ ๋๋ ๊ฐ์ด ๋ฐ๋ก ์์นด๋ ์ ์ฌ๋๋ฅผ ๊ตฌํ๋ ๊ณต์์ด๋ค. ์ด๋ฅผ ๋ฐ์ดํฐ ๊ธฐ๋ฐ์ผ๋ก ์ดํดํ๊ธฐ ์ํด ๊ณ์ฐํด ๋ณด์. โค ์ข ๋ชฉ ์ ์ฌ๋ ๋ฐ์ดํฐ ์์ ๋ณดํต ๋ฌธ์ ์ ์ฌ๋ ๊ฐ์ ์์ฐ์ด ์ฒ๋ฆฌ ๊ด๋ จ์ผ๋ก ์ค๋ช ์ ํ๋๋ฐ ์ดํด๋ฅผ ์ฝ๊ฒ ํ๊ธฐ ์ํด ์ฃผ์ ์ข ๋ชฉ์ด ์ผ๋ง๋ ์ ์ฌํ์ง ์ธก์ ํด ๋ณด์. A ์ ์ ์ ์ฃผ์ ์ข ๋ชฉ ์ผ์ฑ์ ์, ํ ์ฌ๋ผ, LG์ ..
2023.04.28 -
(2021/09/15 am 09:00) ์ด์ ๋ REST API๋ฅผ ํตํด์ ae(๋๋ฐ์ด์ค) ์์ฑ, cnt(์ปจํ ์ด๋) ์์ฑ, cin(๋ฐ์ดํฐ ์ ๋ ฅ) ์์ฑ ๋ช ๋ น์ด๋ฅผ ์ฃผ์ด์ Mobius ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ์ค์ตํด ๋ณด์๋ค. ์ค๋์ ๋ชจ๋๊ณผ PC๋ฅผ ์ฐ๊ฒฐํ์ฌ Wifi or ์ธํฐ๋ท์ด ์๋ค๋ ๊ฐ์ ํ์ ๋ชจ๋์์ ๋ฐ์ดํฐ๋ฅผ Mobius์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ๊ธฐ๋ฅ์ ์ค์ตํ ์์ ์ด๋ค. 1. Python Source ๊ฐ์ฌ๋์ด ์๋ ค์ฃผ์ url ์ฃผ์ : https://url.kr/w5n4ca IoT์๋น์ค ๊ฐ๋ฐ์ ์ํ ํด๋ผ์ฐ๋ ํ๋ซํผ๊ณผ LPWA ๋คํธ์ํฌ ํ์ฉ - Google Drive ์ด ํด๋์ ํ์ผ์ด ์์ต๋๋ค.์ด ํด๋์ ํ์ผ์ ์ถ๊ฐํ๋ ค๋ฉด ๋ก๊ทธ์ธํ์ธ์. drive.google.com ํด๋น ์ฃผ์์์ Python source๋ฅผ ..
[IoT ์๋น์ค] ๋ชจ๋์ ์ด์ฉํ ๊ธฐ๋ณธ๊ธฐ๋ฅ ์ค์ต(2021/09/15 am 09:00) ์ด์ ๋ REST API๋ฅผ ํตํด์ ae(๋๋ฐ์ด์ค) ์์ฑ, cnt(์ปจํ ์ด๋) ์์ฑ, cin(๋ฐ์ดํฐ ์ ๋ ฅ) ์์ฑ ๋ช ๋ น์ด๋ฅผ ์ฃผ์ด์ Mobius ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ์ค์ตํด ๋ณด์๋ค. ์ค๋์ ๋ชจ๋๊ณผ PC๋ฅผ ์ฐ๊ฒฐํ์ฌ Wifi or ์ธํฐ๋ท์ด ์๋ค๋ ๊ฐ์ ํ์ ๋ชจ๋์์ ๋ฐ์ดํฐ๋ฅผ Mobius์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ๊ธฐ๋ฅ์ ์ค์ตํ ์์ ์ด๋ค. 1. Python Source ๊ฐ์ฌ๋์ด ์๋ ค์ฃผ์ url ์ฃผ์ : https://url.kr/w5n4ca IoT์๋น์ค ๊ฐ๋ฐ์ ์ํ ํด๋ผ์ฐ๋ ํ๋ซํผ๊ณผ LPWA ๋คํธ์ํฌ ํ์ฉ - Google Drive ์ด ํด๋์ ํ์ผ์ด ์์ต๋๋ค.์ด ํด๋์ ํ์ผ์ ์ถ๊ฐํ๋ ค๋ฉด ๋ก๊ทธ์ธํ์ธ์. drive.google.com ํด๋น ์ฃผ์์์ Python source๋ฅผ ..
2021.09.15