๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ 48

ํ•™์Šต์šฉ ๋ฐ์ดํ„ฐ์…‹์€ ์–ด๋–ป๊ฒŒ ๊ตฌ์ถ•ํ• ๊นŒ ?

๋ฐ์ดํ„ฐ๋ฅผ ์Œ“์•„๋‘๊ณ  ์žˆ์œผ๋‚˜ ๋ฐ์ดํ„ฐ ๊ฐ€์น˜๋ฅผ ๋ฐœ๊ตดํ•ด๋‚ด๋ ค๋Š” ๋…ธ๋ ฅ์„ ํ•˜์ง€ ์•Š๋˜ ์ง‘๋‹จ์ด ํ•™์Šต์šฉ ๋ฐ์ดํ„ฐ์…‹์„ ๋งŒ๋“ค๊ณ  ์‹ถ์–ดํ•œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ ?์ด๋Ÿฐ ๊ณ ๋ฏผ์„ ํ•˜๊ณ  ์žˆ๋Š” ์‚ฌ๋žŒ์ด๋ผ๋ฉด, ๋‚˜์™€ ๊ฐ™์ด ๊ณ ๋ฏผ์„ ํ–ˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์€ ๋งˆ์Œ์— ๊ธ€์„ ์ž‘์„ฑํ•จ. ์ตœ๊ทผ MLOps ๊นŒ์ง€๋Š” ์•„๋‹ˆ์ง€๋งŒ, ์•„๋ฌด๊ฒƒ๋„ ์—†๋Š” ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ์ž ์นœํ™”์  STT ๋ฅผ ๋ฝ‘์•„๋‚ด์•ผํ•˜๋Š” ์ƒํ™ฉ์— ์ง๋ฉดํ–ˆ๋‹ค. ํ• ๊ฑฐ๋ผ๋ฉด ์ œ๋Œ€๋กœ ํ•˜๊ณ  ์‹ถ์€ ๋งˆ์Œ์— ๊ฐ์„ ์žก๊ณ  ๊ณ ๋ฏผ์„ ํ•ด๋ดค๋‹ค. ์ง„์งœ ์‚ฌ๋žŒ๋“ค์ด '์ž˜' ์“ฐ๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฒฐ๊ณผ๋„ ๋น ๋ฅด๊ฒŒ ๋‚˜์™€์•ผํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฌผ์„ ์ˆ˜์ •ํ•ด์„œ ๋‹ค์‹œ ํ•™์Šต์‹œํ‚ค๋Š” ์žฌํ•™์Šต์˜ ๊ธฐ๋Šฅ๋„ ์žˆ์–ด์•ผ ํ–ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋˜ ์ดˆ๊ธฐ ํ•™์Šต์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋„ ํ•„์š”ํ–ˆ์œผ๋‹ˆ ์•„์ฃผ ๋ฐ‘๋ฐ”๋‹ฅ ๋ถ€ํ„ฐ ๋ญ”๊ฐ€๋ฅผ ์Œ“์•„์˜ฌ๋ฆฌ๋Š” ๊ฑฐ๋Œ€ํ•œ ์ผ์˜ ์‹œ์ž‘์ด ๋˜๊ฒ ๊ตฌ๋‚˜.. ๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ๊ทผ๋ฐ ๊ฒฐ๊ณผ๋ฌผ์„ '์ž˜' ๋ณด์—ฌ์ฃผ๊ณ  ๋ณด์—ฌ์ค€ ๊ฒฐ..

AI/MLOps 2024.11.12

AI_basic ) ์—ญ์ „ํŒŒ(BackPropagation)

. ์—ญ์ „ํŒŒ 1๋‹จ๊ณ„(BackPropagation Step 1)์ˆœ์ „ํŒŒ๊ฐ€ ์ž…๋ ฅ์ธต์—์„œ ์ถœ๋ ฅ์ธต์œผ๋กœ ํ–ฅํ•œ๋‹ค๋ฉด ์—ญ์ „ํŒŒ๋Š” ๋ฐ˜๋Œ€๋กœ ์ถœ๋ ฅ์ธต์—์„œ ์ž…๋ ฅ์ธต ๋ฐฉํ–ฅ์œผ๋กœ ๊ณ„์‚ฐํ•˜๋ฉด์„œ ๊ฐ€์ค‘์น˜๋ฅผ ์—…๋ฐ์ดํŠธํ•ด๊ฐ‘๋‹ˆ๋‹ค. ์ถœ๋ ฅ์ธต ๋ฐ”๋กœ ์ด์ „์˜ ์€๋‹‰์ธต์„ N์ธต์ด๋ผ๊ณ  ํ•˜์˜€์„ ๋•Œ, ์ถœ๋ ฅ์ธต๊ณผ N์ธต ์‚ฌ์ด์˜ ๊ฐ€์ค‘์น˜๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋‹จ๊ณ„๋ฅผ ์—ญ์ „ํŒŒ 1๋‹จ๊ณ„, ๊ทธ๋ฆฌ๊ณ  N์ธต๊ณผ N์ธต์˜ ์ด์ „์ธต ์‚ฌ์ด์˜ ๊ฐ€์ค‘์น˜๋ฅผ ์—…๋ฐ์ดํŠธ ํ•˜๋Š” ๋‹จ๊ณ„๋ฅผ ์—ญ์ „ํŒŒ 2๋‹จ๊ณ„๋ผ๊ณ  ํ•ด๋ด…์‹œ๋‹ค.์—ญ์ „ํŒŒ 1๋‹จ๊ณ„์—์„œ ์—…๋ฐ์ดํŠธ ํ•ด์•ผ ํ•  ๊ฐ€์ค‘์น˜๋Š” w5,w6,w7,w8 ์ด 4๊ฐœ์ž…๋‹ˆ๋‹ค. ์›๋ฆฌ ์ž์ฒด๋Š” ๋™์ผํ•˜๋ฏ€๋กœ ์šฐ์„  w5์— ๋Œ€ํ•ด์„œ ๋จผ์ € ์—…๋ฐ์ดํŠธ๋ฅผ ์ง„ํ–‰ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฒฝ์‚ฌ ํ•˜๊ฐ•๋ฒ•์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ๊ฐ€์ค‘์น˜ w5๋ฅผ ์—…๋ฐ์ดํŠธ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ∂Etotal / ∂w5๋ฅผ ๊ณ„์‚ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ∂Etotal/∂w5๋ฅผ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฏธ๋ถ„์˜ ์—ฐ์‡„ ๋ฒ•์น™(C..

AI 2024.11.06

AI_Basic ) ์„ ํ˜•ํšŒ๊ท€ ( Linear Regression )

https://ko.wikipedia.org/wiki/%EC%84%A0%ED%98%95_%ED%9A%8C%EA%B7%80 ์„ ํ˜• ํšŒ๊ท€ - ์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „. ๋…๋ฆฝ๋ณ€์ˆ˜ 1๊ฐœ์™€ ์ข…์†๋ณ€์ˆ˜ 1๊ฐœ๋ฅผ ๊ฐ€์ง„ ์„ ํ˜• ํšŒ๊ท€์˜ ์˜ˆ ํ†ต๊ณ„ํ•™์—์„œ ์„ ํ˜• ํšŒ๊ท€(็ทšๅž‹ๅ›žๆญธ, ์˜์–ด: linear regression)๋Š” ์ข…์† ๋ณ€์ˆ˜ y์™€ ํ•œ ๊ฐœ ์ด์ƒ์˜ ๋…๋ฆฝ ๋ณ€์ˆ˜ (๋˜๋Š” ์„ค๋ช…ko.wikipedia.org ์„ ํ˜•ํšŒ๊ธฐ๋Š” ์ˆ˜์น˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ " ์˜ˆ์ƒ๋˜๋Š” ๊ฐ’์ด 00์ด๋‹ค " ๋ผ๋Š” ์งˆ๋ฌธ์— ๋‹ตํ•˜๊ธฐ ์œ„ํ•œ ์˜์—ญ์ด๋‹ค. ์„ ํ˜•ํšŒ๊ธฐ์—์„œ๋Š” ์˜ˆ์ƒ๊ฐ’(์ถ”์ •๋˜๋Š” ๊ฐ’)์ด ์„ ํ˜•์ผ ๊ฒƒ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•œ๋‹ค. ์˜ˆ์ธก๊ฐ€๋Šฅํ•œ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค ๋•Œ ์„ ํ˜•์ด๋ผ๋ฉด,์–ด๋–ค ์„ ํ˜•์˜ ์˜ˆ์ธก๊ฐ€๋Šฅํ•œ ํ•จ์ˆ˜๊ฐ€๋ชฉ์ ์— ๊ฑธ๋งž๋Š” ๊ฒฝํ–ฅ์„ฑ์„ ๋‚˜ํƒ€๋‚ด๋Š”์ง€๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋•Œ ๊ฒฝํ–ฅ์„ฑ์„ ์ฐพ๊ธฐ ..

AI 2024.11.06

์‹ค์ „ํ•ดํ‚น ๊ฐ€์ด๋“œ) Basic Pentesing [ ๋Œ€ํ‘œ์  ์ทจ์•ฝ์  ๋ถ„์„ ] - 1. ์ •๋ณด์ˆ˜์ง‘ ๋‹จ

1. ์ง„๋‹จ์ž ( ๊ณต๊ฒฉ์ž ) ์•„์ดํ”ผ ์ฃผ์†Œ ํ™•์ธNAT ๋„คํŠธ์›Œํฌ [ 192.168.0.0/24 ] ๋กœ ์ง€์ •ํ–ˆ์—ˆ์Œ.๋„คํŠธ์›Œํฌ ๋งˆ์Šคํ„ฐ 24 [ 255.255.255.0 ] ์œผ๋กœ 17๋ฒˆ์งธ ๋„คํŠธ์›Œํฌ์— ํ• ๋‹น ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Œ.์ง„๋‹จ์ž(๊ณต๊ฒฉ์ž)๋Š” 17๋ฒˆ์งธ ๋„คํŠธ์›Œํฌ๋ฅผ ๊ฐ–๊ฒŒ ๋˜์—ˆ์Œ. 2. ๋Œ€์ƒ ( ํ”ผํ•ด์ž ) ์‹๋ณ„-์ง„๋‹จ ๋Œ€์ƒ ์•„์ดํ”ผ ์ฃผ์†Œ ์ฐพ๊ธฐNetdiscover ๋„๊ตฌ sudo netdicover -i eth0 -r 192.168.0.0/241,2,3 ์œผ๋กœ ํ• ๋‹น ๋œ ๊ฒƒ์€ Virtualbox ๋Š” ํ• ๋‹น๋˜์–ด ์žˆ๋Š” ์ฃผ์†Œ์ด๋‹ค. ๋”ฐ๋ผ์„œ 18์ด ํƒ€๊ฒŸ์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.ARP ํ”„๋กœํ† ์ฝœ์„ ํ™œ์šฉํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ์„ธ๊ทธ๋จผํŠธ์—์„œ ์—ฐ๊ฒฐ ๋œ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ์Šค์บ๋„ˆ  Netenum ๋„๊ตฌ๋ณธ์ธ์˜ IP ์ฃผ์†Œ๋˜ํ•œ ํฌํ•จ์‹œํ‚จ๋‹ค.sudo apt install irp..

์˜คํ”„๋ผ์ธ ํ™˜๊ฒฝ์—์„œ Git ์‚ฌ์šฉ ๋ฐฉ๋ฒ•: SSH๋กœ ์›๊ฒฉ ์ €์žฅ์†Œ ์ ‘๊ทผํ•˜๊ธฐ

Git์€ ๋ถ„์‚ฐ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์œผ๋กœ, ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ์ด ์—†์–ด๋„ ์ฝ”๋“œ์˜ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ์˜คํ”„๋ผ์ธ ํ™˜๊ฒฝ์—์„œ๋Š” ๋กœ์ปฌ ๋„คํŠธ์›Œํฌ๋‚˜ ์™ธ๋ถ€ ๋””์Šคํฌ๋ฅผ ํ™œ์šฉํ•ด ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, SSH๋ฅผ ์ด์šฉํ•ด ์ง์ ‘์ ์ธ ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ ์—†์ด๋„ ์›๊ฒฉ ์ €์žฅ์†Œ์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” SSH๋ฅผ ํ™œ์šฉํ•œ ์›๊ฒฉ ์ €์žฅ์†Œ ์ ‘๊ทผ ๋ฐฉ์‹๊ณผ ํ•จ๊ป˜, ์˜คํ”„๋ผ์ธ ํ™˜๊ฒฝ์—์„œ Git์„ ํšจ๊ณผ์ ์œผ๋กœ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. svn ๊ฐ™์€ ํ˜•์ƒ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์„  ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ์œผ๋‚˜, github ๊ฐ€ ์ต์ˆ™ํ•œ ์šฐ๋ฆฌ๋Š” ์˜คํ”„๋ผ์ธ ํ™˜๊ฒฝ์—์„œ๋„ svn ์„ ์‚ฌ์šฉํ•ด๋ด…์‹œ๋‹ค. ๋ชฉ์ฐจ์˜คํ”„๋ผ์ธ ํ™˜๊ฒฝ์—์„œ Git์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋กœ์ปฌ์—์„œ Git ์ €์žฅ์†Œ ์ƒ์„ฑ ๋ฐ ์ดˆ๊ธฐ ์„ค์ •Git ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•œ ๊ธฐ๋ณธ์ ์ธ ๋ฒ„์ „ ๊ด€๋ฆฌ์˜คํ”„๋ผ์ธ ํ™˜๊ฒฝ์—์„œ ์›๊ฒฉ ์ €..

Develop 2024.11.05

MLOps : Kubeflow์™€ MLflow ๋น„๊ต: ์˜จํ”„๋ ˆ๋ฏธ์Šค MLOps ํ™˜๊ฒฝ์—์„œ Kubeflow๊ฐ€ ์ ํ•ฉํ•œ ์ด์œ 

MLOps๋Š” ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์˜ ๊ฐœ๋ฐœ๋ถ€ํ„ฐ ๋ฐฐํฌ ๋ฐ ๊ด€๋ฆฌ๊นŒ์ง€์˜ ๊ณผ์ •์„ ์ž๋™ํ™”ํ•˜๊ณ  ์ตœ์ ํ™”ํ•˜๋Š” ๊ธฐ์ˆ ๋กœ, ์ตœ๊ทผ ๋งŽ์€ ๊ธฐ์—…๋“ค์ด ๋„์ž…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์˜จํ”„๋ ˆ๋ฏธ์Šค ํ™˜๊ฒฝ์—์„œ๋Š” ๋ฐ์ดํ„ฐ ๋ณด์•ˆ๊ณผ ์„ฑ๋Šฅ ๋ฌธ์ œ๋กœ ์ธํ•ด ํด๋ผ์šฐ๋“œ ๋Œ€์‹  ์ž์ฒด ์ธํ”„๋ผ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด Kubeflow์™€ MLflow์™€ ๊ฐ™์€ ๋„๊ตฌ๋“ค์ด ํ™œ์šฉ๋˜๋Š”๋ฐ, ๊ฐ๊ฐ์˜ ํŠน์ง•๊ณผ ์žฅ๋‹จ์ ์„ ์ดํ•ดํ•˜์—ฌ ์ ํ•ฉํ•œ ๋„๊ตฌ๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Kubeflow์™€ MLflow์˜ ์ฃผ์š” ์ฐจ์ด์ ์„ ์ค‘์‹ฌ์œผ๋กœ ์˜จํ”„๋ ˆ๋ฏธ์Šค ํ™˜๊ฒฝ์—์„œ Kubeflow๋ฅผ ์„ ํƒํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋ฅผ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.๋ชฉ์ฐจKubeflow์™€ MLflow ๊ฐœ์š”Kubeflow์™€ MLflow์˜ ์ฃผ์š” ์ฐจ์ด์ ์˜จํ”„๋ ˆ๋ฏธ์Šค ํ™˜๊ฒฝ์—์„œ Kubeflow๊ฐ€ ์ ํ•ฉํ•œ ์ด์œ ๊ฒฐ๋ก 1. Kubeflow์™€ MLflow ๊ฐœ์š”Ku..

AI/MLOps 2024.11.05

Kubeflow๋กœ MLOps ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•ํ•˜๊ธฐ: ๊ฐœ๋…๋ถ€ํ„ฐ ์‹ค์Šต๊นŒ์ง€

Kubeflow๋Š” Kubernetes ์œ„์—์„œ ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ ๊ฐœ๋ฐœ ๋ฐ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ(MLOps)์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” ์˜คํ”ˆ์†Œ์Šค ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. Kubeflow๋Š” ๋ชจ๋ธ ํ•™์Šต, ์‹คํ—˜, ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ ํŠœ๋‹, ๋ฐฐํฌ๊นŒ์ง€ ๋จธ์‹ ๋Ÿฌ๋‹ ํŒŒ์ดํ”„๋ผ์ธ์˜ ๋ชจ๋“  ๋‹จ๊ณ„์—์„œ ์ž๋™ํ™”์™€ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ, ํšจ์œจ์ ์ธ MLOps ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Kubeflow์˜ ์ฃผ์š” ๊ธฐ๋Šฅ๊ณผ ๊ฐ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ MLOps ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹จ๊ณ„๋ณ„๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.๋ชฉ์ฐจKubeflow ๊ฐœ์š”Kubeflow ์„ค์น˜Kubeflow์˜ ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†ŒํŒŒ์ดํ”„๋ผ์ธ ์ƒ์„ฑ ๋ฐ ์‹คํ—˜๋ชจ๋ธ ๋ฐฐํฌ ๋ฐ ๊ด€๋ฆฌKubeflow์˜ ์žฅ๋‹จ์ 1. Kubeflow ๊ฐœ์š”Kubeflow๋Š” ๋จธ์‹ ๋Ÿฌ๋‹ ์›Œํฌํ”Œ๋กœ์šฐ์˜ ๋ชจ๋“  ๋‹จ๊ณ„๋ฅผ Kubernetes ์œ„์—์„œ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ..

AI/MLOps 2024.11.05

[ Python ] dataclass ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ

Python์˜ Dataclass: ๊ฐœ๋…๊ณผ ํ™œ์šฉ๋ฒ•Python์˜ dataclass๋Š” ์ฝ”๋“œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐํ™”ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ๋งค์šฐ ์œ ์šฉํ•œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. Python 3.7๋ถ€ํ„ฐ ๋„์ž…๋œ dataclass๋Š” ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ ์ฝ”๋“œ๋ฅผ ์ค„์ด๊ณ , ๋” ๊ฐ€๋…์„ฑ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” dataclass์˜ ๊ธฐ๋ณธ ๊ฐœ๋…, ํŠน์ง•, ์‚ฌ์šฉ๋ฒ•, ๋‹ค์–‘ํ•œ ์˜ต์…˜์„ ํฌํ•จํ•œ ์‹ฌํ™” ๋‚ด์šฉ๊นŒ์ง€ ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค.1. Dataclass๋ž€?dataclass๋Š” ๋‹จ์ˆœํžˆ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•  ๋•Œ ์œ ์šฉํ•œ Python์˜ ๋‚ด์žฅ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž, __repr__, __eq__ ๋“ฑ ์—ฌ๋Ÿฌ ๋ฉ”์„œ๋“œ๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด ์คŒ์œผ๋กœ์จ ๋ฐ˜๋ณต์ ์ธ ์ฝ”๋“œ๋ฅผ ์ค„์ด๊ณ , ๊ฐ€๋…์„ฑ์„ ๋†’์—ฌ์ค๋‹ˆ๋‹ค.from datacla..

Develop 2024.11.03

[ DAO, DTO, VO / Python ์—์„œ ] DAO, DTO, VO ์— ๋Œ€ํ•ด

Python์—์„œ DAO, DTO, VO๋ž€? ๊ฐœ๋…๊ณผ ์˜ˆ์ œPython์„ ๋น„๋กฏํ•œ ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ๊ตฌ์กฐํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ๋””์ž์ธ ํŒจํ„ด๊ณผ ๊ฐ์ฒด ์œ ํ˜•์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ํ†ต์‹ ํ•˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ DAO(Data Access Object), DTO(Data Transfer Object), VO(Value Object)์™€ ๊ฐ™์€ ๊ฐœ๋…์ด ์ž์ฃผ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ฐ๊ฐ์˜ ๊ฐœ๋…๊ณผ ํŠน์ง•, ๊ทธ๋ฆฌ๊ณ  Python์—์„œ์˜ ๊ตฌํ˜„ ์˜ˆ์ œ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.1. DAO (Data Access Object)DAO๋ž€?DAO๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋‚˜ ํŒŒ์ผ ๋“ฑ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๊ณ  ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. DAO๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ์ง์ ‘์ ์ธ ์ƒํ˜ธ์ž‘์šฉ์„ ๋‹ด๋‹นํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ จ ์ฝ”๋“œ์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋ถ„๋ฆฌํ•˜์—ฌ ..

[ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ / Python ] ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋Š” ์™œ ์‚ฌ์šฉํ•˜๊ณ , ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•ด์•ผํ• ๊นŒ

1. ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋Š” ํ•˜๋‚˜์˜ ํ•จ์ˆ˜๋ฅผ ๋‹ค๋ฅธ ํ•จ์ˆ˜์— ์ธ์ž๋กœ ์ „๋‹ฌํ•˜์—ฌ, ์›๋ณธ ํ•จ์ˆ˜์— ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. Python์—์„œ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋Š” @ ๊ธฐํ˜ธ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. @๋ฐ์ฝ”๋ ˆ์ดํ„ฐdef ํ•จ์ˆ˜์ด๋ฆ„(): pass ์œ„ ๊ตฌ๋ฌธ์€ ํ•จ์ˆ˜์ด๋ฆ„ = ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ(ํ•จ์ˆ˜์ด๋ฆ„)๊ณผ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹จ์ˆœ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋Š” ์–ด๋–ค ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ๋งˆ๋‹ค ๊ทธ ํ•จ์ˆ˜์˜ ์ด๋ฆ„์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. def simple_decorator(func): def wrapper(): print(f"Calling function: {func.__name__}") func() return wrapper@simple_decoratordef say_hello(): ..