์ „์ฒด ๊ธ€ 83

2023 ์˜คํ”ˆ์†Œ์Šค ์ปจํŠธ๋ฆฌ๋ทฐ์…˜ DevOps & MLOps (1) DevOpsํŽธ (์ง€์†์  ํ†ตํ•ฉ, ์ปจํ…Œ์ด๋„ˆํ™”)

๋“ค์–ด๊ฐ€๊ธฐ ์ „์— ์šด์ด ์ข‹๊ฒŒ๋„ 2023 ์˜คํ”ˆ์†Œ์Šค ์ปจํŠธ๋ฆฌ๋ทฐ์…˜ ์•„์นด๋ฐ๋ฏธ์— ์ง€์›ํ•˜์—ฌ ์ฐธ๊ฐ€ ์ค‘์ด๋‹ค. (์ž์„ธํ•œ ํ”„๋กœ๊ทธ๋žจ ์†Œ๊ฐœ โ˜ž 2023 ์˜คํ”ˆ์†Œ์Šค ์ปจํŠธ๋ฆฌ๋ทฐ์…˜ ์•„์นด๋ฐ๋ฏธ (contribution.ac)) ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค์™€ DevOps์— ๋Œ€ํ•ด ๋ฐฐ์šฐ๊ณ  ์‹ถ๋‹ค๋Š” ๋™๊ธฐ๊ฐ€ ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, ๊น€๋Œ€์šฐ ๋ฉ˜ํ† ๋‹˜์ด ์ง„ํ–‰ํ•˜์‹œ๋Š” "Git ํ™œ์šฉ ๋ฐ DevOps / MLOps"์ด๋ผ๋Š” ํ”„๋กœ์ ํŠธ์— ์ฐธ์—ฌํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๋ณธ ๊ณผ์ •์—์„œ๋Š” ํŒŒ์ด์ฌ(์›น ์„œ๋ฒ„, ๋จธ์‹ ๋Ÿฌ๋‹), Github Actions๊ณผ Azure ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•œ CI/CD๋ฅผ ๊ฒฝํ—˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹จ๊ณ„๋ณ„๋กœ ์ง„ํ–‰๋˜์—ˆ๋Š”๋ฐ ๋‚˜๋Š” ํŒŒ์ด์ฌ๊ณผ Git, ๋จธ์‹ ๋Ÿฌ๋‹๋„ ์ผ๋ถ€ (ํŠœํ† ๋ฆฌ์–ผ ์ •๋„) ๋‹ค๋ค„๋ณธ ๊ฒฝํ—˜์ด ์žˆ์–ด์„œ ๋ฐ”๋กœ DevOps ๊ณผ์ •์œผ๋กœ ๋„˜์–ด๊ฐˆ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์Šค์Šค๋กœ ๋„์ „ ๊ณผ์ œ๋ฅผ ์ง„ํ–‰ํ•˜๋˜ ๋ชจ๋ฅด๋Š” ๋ถ€๋ถ„์ด ์žˆ์œผ๋ฉด ํŒ€์›..

DevOps & MLOps 2023.08.05

Node.js, Express, Swagger๋ฅผ ์ด์šฉํ•œ RESTful API ์„ค๊ณ„ (4) JWT, OAuth2 ๊ตฌํ˜„ํ•˜๊ธฐ

์ฐธ๊ณ : ๏ปฟBuilding RESTful APIs Using Node.js and Express | Coursera JSON Web Token Introduction - jwt.io ์ด ํฌ์ŠคํŠธ์—์„œ๋Š” coursera์˜ ๏ปฟBuilding RESTful APIs Using Node.js and Express | Coursera ๋ฅผ ์ˆ˜๊ฐ•ํ•˜๋ฉฐ ๋ฐฐ์šด ์ฃผ์š” ๊ฐœ๋…๊ณผ ๊ณผ์ œ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ๋ฐœ์ƒํ•œ ์ด์Šˆ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ €์˜ ๊ฐœ์ธ์ ์ธ ์ดํ•ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ ๋ชจ๋“  ์ •๋ณด๊ฐ€ ์ตœ์‹ ์ด๊ฑฐ๋‚˜ ์™„์ „ํ•œ ๊ฒƒ์€ ์•„๋‹ˆ๋ฏ€๋กœ ํ•ญ์ƒ ๊ฐœ์„ ์˜ ์—ฌ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฝ๋Š” ๋™์•ˆ ์–ด๋–ค ํ”ผ๋“œ๋ฐฑ์ด๋‚˜ ์ถ”๊ฐ€์ ์ธ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์œผ์‹œ๋‹ค๋ฉด ์–ธ์ œ๋“ ์ง€ ๋Œ“๊ธ€๋กœ ์•Œ๋ ค์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. 4. Authentication & Authorization ๊ตฌํ˜„ํ•˜๊ธฐ: JWT &..

์›น 2023.07.30

Node.js, Express, Swagger๋ฅผ ์ด์šฉํ•œ RESTful API ์„ค๊ณ„ (3) Swagger ์‚ฌ์šฉํ•˜๊ธฐ

์ฐธ๊ณ : ๏ปฟBuilding RESTful APIs Using Node.js and Express | Coursera ์ด ํฌ์ŠคํŠธ์—์„œ๋Š” coursera์˜ ๏ปฟBuilding RESTful APIs Using Node.js and Express | Coursera ๋ฅผ ์ˆ˜๊ฐ•ํ•˜๋ฉฐ ๋ฐฐ์šด ์ฃผ์š” ๊ฐœ๋…๊ณผ ๊ณผ์ œ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ๋ฐœ์ƒํ•œ ์ด์Šˆ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ €์˜ ๊ฐœ์ธ์ ์ธ ์ดํ•ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ ๋ชจ๋“  ์ •๋ณด๊ฐ€ ์ตœ์‹ ์ด๊ฑฐ๋‚˜ ์™„์ „ํ•œ ๊ฒƒ์€ ์•„๋‹ˆ๋ฏ€๋กœ ํ•ญ์ƒ ๊ฐœ์„ ์˜ ์—ฌ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฝ๋Š” ๋™์•ˆ ์–ด๋–ค ํ”ผ๋“œ๋ฐฑ์ด๋‚˜ ์ถ”๊ฐ€์ ์ธ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์œผ์‹œ๋‹ค๋ฉด ์–ธ์ œ๋“ ์ง€ ๋Œ“๊ธ€๋กœ ์•Œ๋ ค์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. 3. Swagger๋กœ API ๋ฌธ์„œํ™”ํ•˜๊ธฐ TASK 3 ์ €์ˆ˜์ค€ ๊ณ„์ธต์—์„œ ๊ณ ์ˆ˜์ค€ ๊ณ„์ธต์œผ๋กœ ์˜ฌ๋ผ๊ฐ€๋ฉฐ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ๋‚ด๊ฒŒ๋Š” ๋” ํšจ์œจ์ ์ธ ๊ฒƒ ๊ฐ™๋‹ค. ์•ž์„  ์˜ˆ์ œ..

์›น 2023.07.29

Node.js, Express, Swagger๋ฅผ ์ด์šฉํ•œ RESTful API ์„ค๊ณ„ (2) Express ํ”„๋ ˆ์ž„์›Œํฌ ์‚ฌ์šฉํ•˜๊ธฐ

์ฐธ๊ณ : ๏ปฟBuilding RESTful APIs Using Node.js and Express | Coursera ์‹œ์ž‘ํ•˜๊ธฐ | Axios Docs (axios-http.com) Installing Express (expressjs.com) Express routing (expressjs.com) ์ด ํฌ์ŠคํŠธ์—์„œ๋Š” coursera์˜ ๏ปฟBuilding RESTful APIs Using Node.js and Express | Coursera ๋ฅผ ์ˆ˜๊ฐ•ํ•˜๋ฉฐ ๋ฐฐ์šด ์ฃผ์š” ๊ฐœ๋…๊ณผ ๊ณผ์ œ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ๋ฐœ์ƒํ•œ ์ด์Šˆ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ €์˜ ๊ฐœ์ธ์ ์ธ ์ดํ•ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ ๋ชจ๋“  ์ •๋ณด๊ฐ€ ์ตœ์‹ ์ด๊ฑฐ๋‚˜ ์™„์ „ํ•œ ๊ฒƒ์€ ์•„๋‹ˆ๋ฏ€๋กœ ํ•ญ์ƒ ๊ฐœ์„ ์˜ ์—ฌ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฝ๋Š” ๋™์•ˆ ์–ด๋–ค ํ”ผ๋“œ๋ฐฑ์ด๋‚˜ ์ถ”๊ฐ€์ ์ธ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์œผ์‹œ๋‹ค๋ฉด ์–ธ..

์›น 2023.07.29

Node.js, Express, Swagger๋ฅผ ์ด์šฉํ•œ RESTful API ์„ค๊ณ„ (1) RESTful Service๋ž€, ๋ฐ”๋‹๋ผJS๋กœ RESTful API ๊ตฌํ˜„ํ•˜๊ธฐ

์ฐธ๊ณ : ๏ปฟBuilding RESTful APIs Using Node.js and Express - Documenting and Building REST API’s using Vanilla Node.js - 1์ฃผ | Coursera A Vanilla Node.js REST API without Frameworks such us Express | Engineering Education (EngEd) Program | Section ์ด ํฌ์ŠคํŠธ์—์„œ๋Š” coursera์˜ ๏ปฟBuilding RESTful APIs Using Node.js and Express | Coursera ๋ฅผ ์ˆ˜๊ฐ•ํ•˜๋ฉฐ ๋ฐฐ์šด ์ฃผ์š” ๊ฐœ๋…๊ณผ ๊ณผ์ œ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ๋ฐœ์ƒํ•œ ์ด์Šˆ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ €์˜ ๊ฐœ์ธ์ ์ธ ์ดํ•ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ ๋ชจ๋“  ์ •..

์›น 2023.07.28

๋„์ปค ๊ธฐ์ดˆํŽธ (1) Why Docker

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

๋„์ปค 2023.06.25

์ฝ”๋“œ์™€ํŠธ ํ”„๋กœ์ ํŠธ (2) ๊ฐœ๋ฐœ ๊ณ„ํš ์ˆ˜๋ฆฝํ•˜๊ธฐ (์Šคํƒ, ๊ฐœ๋ฐœ ์ปจ๋ฒค์…˜, ๊ฐœ๋ฐœ ์ผ์ • ๋“ฑ)

์ฝ”๋“œ ์น˜๊ธฐ ์ „์— ์ •ํ•  ๊ฒƒ๋“ค ๊ธฐํš ๋‹จ๊ณ„๊ฐ€ ๋งˆ๋ฌด๋ฆฌ๋˜๊ณ  ์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ๊ฐœ๋ฐœํ•  ์ผ๋งŒ ๋‚จ์•˜๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ์—๊ฒŒ ๋ฏธ์…˜์ด ๋–จ์–ด์กŒ๋‹ค. ์ผ์ฃผ์ผ ์•ˆ์— MVP ์ œ์ž‘ํ•˜์—ฌ ๋ฐœํ‘œํ•˜๊ธฐ๊ฐ€ ๊ทธ๊ฒƒ์ด์—ˆ๋‹ค. ๋‹น์‹œ ๊ฑฑ์ •๋˜๋Š” ์ ์ด ํ•œ ๋‘ ๊ฐ€์ง€๊ฐ€ ์•„๋‹ˆ์—ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ๊ผฝ์•„๋ณด์ž๋ฉด, ํŒ€์›๋“ค ํ”„๋กœ์ ํŠธ ๊ฒฝํ—˜์ด ์—†๊ฑฐ๋‚˜ ์ ์€๋ฐ ๊ดœ์ฐฎ์„๊นŒ? (๊ฒฝ๋ ฅ์ž ํŒ€์› C ์ œ์™ธ) ๋ฉ”ํƒ€๋ฒ„์Šค, ์˜ค๋””์˜ค, ๊ณต๋™ ํŽธ์ง‘ ์—๋””ํ„ฐ ๋ชจ๋‘ ์ฒ˜์Œ ๋„์ „ํ•˜๋Š” (์–ด๋ ค์›Œ๋ณด์ด๋Š”) ๊ธฐ์ˆ ์ธ๋ฐ ์•„๋ฌด๊ฒƒ๋„ ๋ชจ๋ฅด๋Š” ์šฐ๋ฆฌ๊ฐ€ ๊ดœ์ฐฎ์„๊นŒ? ๊ฑฐ์˜ ๋Œ€๋ถ€๋ถ„(90% ์ด์ƒ) ์ฒ˜์Œ ๋งŒ์ ธ๋ณด๋Š” ์Šคํƒ์ธ๋ฐ ๊ดœ์ฐฎ์„๊นŒ? (ํŠนํžˆ ๋‚˜) (์œ„ ๋ชจ๋“  ๋‚œ๊ด€์„ ๊ทน๋ณตํ•˜๊ณ ) ํ•œ๋‹ฌ์ด๋ผ๋Š” ์‹œ๊ฐ„ ์•ˆ์— ํ€„๋ฆฌํ‹ฐ ์žˆ๊ฒŒ ์™„์„ฑํ•  ์ˆ˜ ์žˆ์„๊นŒ? ๋‚ด๊ฐ€ ๋ชปํ•ด๋„ ์šฐ๋ฆฌ ํŒ€ ์ค‘ ๋ˆ„๊ตฐ๊ฐ€๋Š” ํ•  ์ˆ˜ ์žˆ๊ฒ ์ง€๋ผ๋Š” ๋งˆ์Œ๊ฐ€์ง๋ฐ–์—” ๋‹ต์ด ์—†์—ˆ๋‹ค. ์šฐ๋ฆฌ์—๊ฒ ์—ด์‹ฌํžˆ ์ž‘์„ฑํ•œ ํ• ์ผ์„ ์•Œ๋ ค์ฃผ๋Š” ๊ธฐ๋Šฅ ๋ช…์„ธ..

IT, ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•™์Šต ๊ด€๋ จ ์œ ์šฉํ•œ ์‚ฌ์ดํŠธ ์ด์ง‘ํ•ฉ (๊ณ„์† UPDATE)

๊ต์œก ํ”„๋กœ๊ทธ๋žจ, ์ด๋ฒคํŠธ, ์„ธ๋ฏธ๋‚˜ ๋“ฑ IT ๊ต์œก/์„ธ๋ฏธ๋‚˜/์›จ๋น„๋‚˜ ์ •๋ณด | SharedIT - IT ์ง€์‹ ๊ณต์œ  ๋„คํŠธ์›Œํฌ ์˜จ์˜คํ”„๋ฏน์Šค :: ๋ชจ์ž„๋ฌธํ™” ํ”Œ๋žซํผ ์ด๋ฒคํ„ฐ์Šค Festa! ๋ชจ์ž„๊ณผ ์ด๋ฒคํŠธ๋ฅผ ์ฃผ์ตœํ•˜๋Š” ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ• ICT ์ด๋…ธ๋ฒ ์ด์…˜์Šคํ€˜์–ด ๊ณผํ•™๊ธฐ์ˆ ์ •๋ณดํ†ต์‹ ๋ถ€ HPC ์ด๋…ธ๋ฒ ์ด์…˜ ํ—ˆ๋ธŒ KISA ํ•œ๊ตญ์ธํ„ฐ๋„ท์ง„ํฅ์› ์„œ์šธICT์ด๋…ธ๋ฒ ์ด์…˜์Šคํ€˜์–ด ์ •๋ณดํ†ต์‹ ์‚ฐ์—…์ง„ํฅ์› ์„œ์šธ ์ฒญ๋…„์ทจ์—…์‚ฌ๊ด€ํ•™๊ต ํ•œ๊ตญ์ „ํŒŒ์ง„ํฅํ˜‘ํšŒ ํ•œ๊ตญ์ •๋ณด๋ณดํ˜ธ์‚ฐ์—…ํ˜„ํšŒ ํ•œ๊ตญ์ฝ˜ํ…์ธ ์ง„ํฅ์› ์—…๋ฌด์†Œ๊ฐœ - TTA ๋Œ€ํ‘œํ™ˆํŽ˜์ด์ง€(๊ตญ๋ฌธ) TTA์•„์นด๋ฐ๋ฏธ ํ•œ๊ตญ๋ฐ์ดํ„ฐ์‚ฐ์—…์ง„ํฅ์› - ๋ฉ”์ธ (kdata.or.kr) ์ด๋…ธ๋ฒ ์ด์…˜ ์•„์นด๋ฐ๋ฏธ KITRI ํ•œ๊ตญ์ •๋ณด๊ธฐ์ˆ ์—ฐ๊ตฌ์› ํ•œ๊ตญํด๋ผ์šฐ๋“œ์ปดํ“จํŒ…์—ฐ๊ตฌ์กฐํ•ฉ CCCR ์•„์นด๋ฐ๋ฏธ : ํด๋ผ์šฐ๋“œ ๊ด€๋ จ ๊ธฐ์ˆ , DevOps ๋“ฑ ๊ต์œก์ด ๋งŽ์Œ ๋ฏธ๋ž˜๋‚ด์ผ ์ผ๊ฒฝํ—˜ ์‚ฌ์—… : ๊ณ ์šฉ๋…ธ๋™๋ถ€๊ฐ€ ์ฃผ๋„ํ•˜๋Š”..

๊ทธ ์™ธ 2023.06.06

์ฝ”๋“œ์™€ํŠธ ํ”„๋กœ์ ํŠธ (1) ํŒ€ ๋นŒ๋”ฉ & ์„œ๋น„์Šค ๊ธฐํš

ํฌ์ŠคํŒ… ์‹œ๋ฆฌ์ฆˆ ์†Œ๊ฐœ ๋‚˜๋Š” ํฌ๋ž˜ํ”„ํ†ค์ •๊ธ€ ๋ถ€ํŠธ์บ ํ”„ 1๊ธฐ ์ˆ˜๋ฃŒ์ƒ์ด๋‹ค. ํฌ๋ž˜ํ”„ํ†ค์ •๊ธ€์€ ์Šคํƒ ์Œ“๊ธฐ ์œ„์ฃผ์˜ ๋ถ€ํŠธ์บ ํ”„๋ผ๊ธฐ ๋ณด๋‹ค๋Š” ์ „์‚ฐํ•™ ์ง€์‹์„ ์Œ“์œผ๋ฉด์„œ ์—”์ง€๋‹ˆ์–ด๋กœ์„œ ๊ธฐ์ดˆ๋ฅผ ๋‹ฆ๋Š”๋ฐ ๋ฐฉ์ ์„ ๋‘๋Š” ๋ถ€ํŠธ์บ ํ”„๋‹ค. 5๊ฐœ์›” ๊ฐ„์˜ ์—ฌ์ • ์ค‘ ๋งˆ์ง€๋ง‰ ๋Œ€๋ฏธ๋ฅผ ์žฅ์‹ํ•˜๋Š” “๋‚˜๋งŒ์˜ ๋ฌด๊ธฐ ๊ฐ–๊ธฐ” ์ปค๋ฆฌํ˜๋Ÿผ์€ ์ง€๊ธˆ๊นŒ์ง€ ๋ฐฐ์› ๋˜ ๊ฒƒ์„ ๊ฒฐ๊ณผ๋ฌผ๋กœ ๋ณด์—ฌ์ฃผ๋Š” ๊ณผ์ •์ด๋‹ค. ๋‚˜๋Š” 5๋ช…์˜ ํŒ€์› ์ค‘ ํ•œ ๋ช…์œผ๋กœ์„œ "์ฝ”๋“œ์™€ํŠธ(NA-MAAN-MOO/Codewarts: ๋ชจ๊ฐ™์ฝ” ์˜จ๋ผ์ธ ๊ฐ€์ƒ๊ณต๊ฐ„ ํ”Œ๋žซํผ, ์ฝ”๋“œ์™€ํŠธ (github.com))"๋ผ๋Š” ์›น ๋ฉ”ํƒ€๋ฒ„์Šค ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ–ˆ์œผ๋ฉฐ, ๊ณต๋™ ์ž‘์—… ์—๋””ํ„ฐ ๊ธฐ๋Šฅ ๊ตฌํ˜„์„ ๋„๋งก์•˜๋‹ค. ์–ด๋–ป๊ฒŒ ํ•ด์„œ๋“  ์ œํ•œ๋œ ์‹œ๊ฐ„ ๋™์•ˆ ์›ํ•˜๋Š” ์•„์›ƒํ’‹์„ ๋‚ด๊ธฐ ์œ„ํ•ด ๋ฌด์ˆ˜ํžˆ ๋งŽ์€ ์‚ฝ์งˆ์„ ํ–ˆ๊ณ , ์ง€๊ธˆ์— ์™€์„œ ํ•˜๋Š” ๋ง์ด์ง€๋งŒ ์•ˆ๋˜๋Š” ๊ฑธ ๋˜๊ฒŒ ํ•˜๋ ค๊ณ  ์—„์ฒญ ์• ์ผ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ..

๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ & ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค ์‹คํ—˜ํ•˜๊ธฐ with Python

๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๊ณผ ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค ๊ฐœ๋…์„ ๊ณต๋ถ€ํ•˜๋‹ค๊ฐ€ ํŒŒ์ด์ฌ์œผ๋กœ ์ง์ ‘ ํ…Œ์ŠคํŠธํ•ด๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„ ๊ณต๋ถ€ํ•ด๋ณด์•˜๋‹ค. ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๊ณผ ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค์˜ ์ฐจ์ด ์š”์•ฝ ๋™์‹œ์— ์—‘์…€ ํŒŒ์ผ์„ ์—ฌ๋Ÿฌ ๊ฐœ ์—ฐ๋‹ค = ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค ํ•œ ์—‘์…€ ํŒŒ์ผ์—์„œ ๋ฐ์ดํ„ฐ ์ •๋ ฌ, ํ•„ํ„ฐ๋ง ์ž‘์—…, ํ•จ์ˆ˜ ๊ณ„์‚ฐ ๋“ฑ์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•œ๋‹ค = ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค ํ™˜๊ฒฝ์—์„œ๋Š” ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ์ž‘์—…์— ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Œ (๋‚ด๊ฐ€ a๋ผ๋Š” ์—‘์…€ ํŒŒ์ผ์— ์ž‘์—…ํ•˜๋Š”๋ฐ bํŒŒ์ผ์˜ ๋‚ด์šฉ์ด ์ˆ˜์ •๋˜๊ฑฐ๋‚˜ ํ•˜์ง€ ์•Š์œผ๋‹ˆ…) ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ๋Š” ์œ ์ €๊ฐ€ ๋™์‹œ์— ์—ฌ๋Ÿฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋‚˜, ์ด ์ž‘์—… ๊ฐ„ ๋™๊ธฐํ™”๊ฐ€ ์ฃผ์š” ์ด์Šˆ๊ฐ€ ๋œ๋‹ค. ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์‹ฑ ํ™˜๊ฒฝ์—์„œ๋Š” ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊นจ์ ธ๋„ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ์˜ํ–ฅ ์—†์Œ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ํŒŒ์ด์ฌ์œผ๋กœ ์‹คํ—˜ํ•˜๊ธฐ import threading import ..