profile
๐Ÿพ

ORM cookbook 5

์ผ๋ฐ˜์ ์ธ ์ง‘๊ณ„ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” Max, Min, Avg, Sum์ •๋ ฌ ๊ธฐ์ค€์„ ๋ฌด์ž‘์œ„๋กœ ์„ค์ •ํ•˜๊ธฐ๊ฒฐ๊ตญ ์ •๋ ฌ์„ ํ•ด์•ผํ•˜๋ฏ€๋กœ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์— ๋น„ํ•ด ๋น„์šฉ์ด ๋“ค ์ˆ˜ ์žˆ๋‹ค.ํ•„๋“œ๊ฐ’์ด ์—ฐ์†์ ์ธ ๊ฒฝ์šฐ ์ตœ์†Œ๊ฐ’๊ณผ ์ตœ๋Œ“๊ฐ’ ์‚ฌ์ด์˜ ๋‚œ์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ์ค‘๊ฐ„์— ์‚ญ์ œ๋œ ํ•ญ๋ชฉ์ด ๋งŽ์€ ๊ฒฝ์šฐ ์—ฌ๋Ÿฌ๋ฒˆ ๋ฃจํ”„๋ฅผ ๋Œ๋ฉฐ ์ฒดํฌ

2022๋…„ 5์›” 3์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€

ORM cookbook 4

๋™์ผํ•œ ๊ฐ’์„ ๊ฐ€์ง„ column์„ ๊ธฐ์ค€์œผ๋กœ ๋‘ ํ‘œ๋ฅผ ๊ฒฐํ•ฉํ•  ์ˆ˜ ์žˆ๋‹ค.select_related๋Š” ์ •๋ฐฉํ–ฅ ์ฐธ์กฐ ๋ชจ๋ธ์— ๋Œ€ํ•ด์„œ Joinํ•œ๋‹ค.ORM์€ ๋˜‘๋˜‘ํ•ด์„œ select_related๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๋”๋ผ๋„ ํ•„์š”์— ๋”ฐ๋ผ ์•Œ์•„์„œ JOINํ•ด์ฃผ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.์ •๋ฐฉํ–ฅ ์ฐธ์กฐ ๋ชจ๋ธ์˜ ํ•„๋“œ

2022๋…„ 5์›” 3์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€

ORM cookbook 3

User์™€ 1๋Œ€1๋กœ ์—ฐ๊ฒฐ๋œ UserParent ๋ชจ๋ธ์—์„œ, UserParent์ด๋ฉด์„œ User์ธ object๋ฅผ ์กฐํšŒํ•˜๋Š” ์ฟผ๋ฆฌOuterRef๋ฅผ ์ด์šฉํ•˜๋ฉด ์„œ๋ธŒ์ฟผ๋ฆฌ๊ฐ€ ์™ธ๋ถ€ ์ฟผ๋ฆฌ์˜ ์ •๋ณด๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค.https://docs.djangoproject.com/en/4.0

2022๋…„ 5์›” 3์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€

ORM cookbook 2

์•ž์œผ๋กœ ์‹คํ–‰ํ•  ๋ช…๋ น๋“ค์€ jupyter์—์„œ async error๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.https://stackoverflow.com/questions/61926359/django-synchronousonlyoperation-you-cannot-call-this-from-a

2022๋…„ 5์›” 3์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€

ORM cookbook 1

django ORM cookbook part1 ์ฃผํ”ผํ„ฐ ๋…ธํŠธ๋ถ์œผ๋กœ ORM cookbook์„ ๋”ฐ๋ผ์„œ ์—ฐ์Šตํ•œ ๋‚ด์šฉ์ด๋‹ค. https://opheliesaysone.tistory.com/16 ๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ์ฃผํ”ผํ„ฐ ๋…ธํŠธ๋ถ์„ ์„ค์ •ํ–ˆ๊ณ  ๋‚ด์šฉ, ์‹คํ–‰ํ•œ ์ฝ”๋“œ, ์‹คํ–‰๊ฒฐ๊ณผ๋ฅผ ๋งˆํฌ๋‹ค์šด์œผ๋กœ

2022๋…„ 5์›” 3์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
post-thumbnail

WSGI

ํŒŒ์ด์ฌ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์›น ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•œ ๋ช…์„ธ๊ฐ€ WSGIWAS๋Š” ๋™์ ์ธ ์ปจํ…์ธ ๋ฅผ ์‚ฌ์šฉ์ž์˜ ์š”๊ตฌ์— ๋”ฐ๋ผ DB์—์„œ ์กฐํšŒํ•˜๊ณ  ๋กœ์ง์— ๋”ฐ๋ผ ์ปจํ…์ธ ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์— ๋™์ ์ธ ์ปจํ…์ธ ๋งŒ์„ ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ •์ ์ธ ์ปจํ…์ธ  ๋˜ํ•œ ์š”๊ตฌํ•œ๋‹ค.WAS๊ฐ€ ์ •์ ์ธ ์ปจํ…์ธ ๊นŒ์ง€

2022๋…„ 5์›” 1์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€

UUID Field

lookup์„ pk๋กœ ํ•˜๋ฉด ๋ณด์•ˆ์ด ์œ„ํ—˜ํ•  ์ˆ˜ ์žˆ์Œsequential id๋ฅผ hashing์„ ํ†ตํ•ด ์•”ํ˜ธํ™”ํ•˜๋Š” ๊ฒƒ์€ ๊ทผ๋ณธ์ ์œผ๋กœ ๋šซ๋ฆฐ๋‹ค.๋ณด์•ˆ์ด ์ ์šฉ๋˜์ง€ ์•Š์€ ๋‹ค๋ฅธ object์˜ ์กด์žฌ๋ฅผ ์•Œ๊ณ  ๊ณต๊ฒฉ๋Œ€์ƒ์œผ๋กœ ์‚ผ์„ ์ˆ˜ ์žˆ๋‹ค.XSS ๊ณต๊ฒฉ์— ์ทจ์•ฝํ•จ์™œ?slug๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” uniq

2022๋…„ 4์›” 28์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€

[Core]security

SECRET_KEY

2022๋…„ 4์›” 27์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
post-thumbnail

AWS VPC ๊ธฐ๋ณธ ๋ฐ ์—ฐ๊ฒฐ ์˜ต์…˜

AWS ๋ฆฌ์†Œ์Šค ํ˜น์€ ์ธ์Šคํ„ด์Šค๋ฅผ ์„œ๋ธŒ๋„ท์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ๋งˆ์น˜ ๊ฐ€์ƒ์˜ ๊ฐœ์ธ ๋ฐ์ดํ„ฐ์„ผํ„ฐ์ฒ˜๋Ÿผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” AWS์˜ ๋„คํŠธ์›Œํฌ/๋ณด์•ˆ ์„ค์ •์ด๋‹ค.์™ธ๋ถ€ ์ธํ„ฐ๋„ท๋ง๊ณผ๋Š” ์ผ๋ถ€ ๋ฆฌ์†Œ์Šค๋งŒ ์—ฐ๊ฒฐ๋˜๋„๋ก ํ•˜๊ณ , ๋ณด์•ˆ์— ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์™ธ๋ถ€์— ๋…ธ์ถœ๋˜์ง€ ์•Š๋„๋ก ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.IP ์ฃผ์†Œ ๋ฒ”์œ„ ์„ ํƒ

2022๋…„ 4์›” 22์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€

django secret key ๊ด€๋ฆฌ

django์˜ ์ดˆ๊ธฐ \[settings.py](http://settings.py) ํŒŒ์ผ์—๋Š” django ์ž์ฒด์˜ secret key๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๊ณ  DB์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ๋ณด์•ˆํ‚ค๋ฅผ ํฌํ•จํ•ด์•ผํ•œ๋‹ค. ์ดํ›„ AWS ์„œ๋น„์Šค๋‚˜ ์„œ๋“œํŒŒํ‹ฐ API๋“ค์„ ๋ถ™์—ฌ ์“ธ ๋•Œ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ

2022๋…„ 4์›” 21์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€

IAM

AWS์˜ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ„์ • ๋˜๋Š” ๊ทธ๋ฃน์„ ์ƒ์„ฑํ•˜์—ฌ ๊ด€๋ฆฌํ•˜๋Š” ์„œ๋น„์Šค๊ฐ๊ฐ์˜ ๊ณ„์ •๋งˆ๋‹ค ์–ด๋–ค AWS์„œ๋น„์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์„ค์ •์ด ๊ฐ€๋ŠฅUser ๊ถŒํ•œ์„ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ Group, Role ๋“ฑ ๋‹ค์–‘ํ•œ entity์— ๋Œ€ํ•ด ๋ฆฌ์†Œ์Šค ์ ‘๊ทผ ์ •์ฑ…(policy)์„ ๊ด€๋ฆฌํ• 

2022๋…„ 4์›” 21์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
post-thumbnail

Git ๊ฐœ์š”์™€ ํ˜‘์—…์„ ์œ„ํ•œ workflow

Git-flow, GitHub-flow

2022๋…„ 4์›” 20์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€