์ ์ฒด๋ณด๊ธฐ114 [๋์์ธํจํด] ์ ๋ต(Strategy) ํจํด ์ ๋ต(Strategy) ํจํด์ ๋ต ํจํด(Strategy Pattern)์ ๊ฐ์ฒด์ ํ๋ ๋ฐฉ์์ ์บก์ํํ์ฌ ๋์ ์ผ๋ก ๊ต์ฒดํ ์ ์๋๋ก ํ๋ ๋์์ธ ํจํด์ ๋๋ค. ์ด ํจํด์ ๊ฐ์ฒด์ ํ์(behavior)๋ฅผ ํด๋์ค๋ก ๋ถ๋ฆฌํ๊ณ , ๋ฐํ์์ ๊ทธ ํ๋์ ์ ํํ๊ฑฐ๋ ๋ณ๊ฒฝํ ์ ์๋๋ก ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฝ๋์ ์ ์ฐ์ฑ๊ณผ ํ์ฅ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.1. ์ ๋ต ํจํด์ ๊ธฐ๋ณธ ๊ฐ๋ ๊ตฌ์ฑ ์์:Context: ํน์ ์ ๋ต์ ์ฌ์ฉํ๋ ํด๋ผ์ด์ธํธ ํด๋์ค์ ๋๋ค. ์ด ํด๋์ค๋ Strategy ๊ฐ์ฒด๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ํ์์ ๋ฐ๋ผ ์ด๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.Strategy: ์ ๋ต์ ๊ณตํต ์ธํฐํ์ด์ค๋ฅผ ์ ์ํฉ๋๋ค. ์ด ์ธํฐํ์ด์ค๋ ํน์ ์์ (ํ๋)์ ๋ํด ๊ณตํต๋ ๋ฉ์๋๋ฅผ ์ ์ธํฉ๋๋ค.Concrete Strategy: Strategy ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ .. 2024. 8. 24. [๋์์ธํจํด] ๋ฐ์ฝ๋ ์ดํฐ ํจํด ๋ฐ์ฝ๋ ์ดํฐ ํจํด (Decorator Pattern)๋ฐ์ฝ๋ ์ดํฐ ํจํด์ ๊ฐ์ฒด ์งํฅ ๋์์ธ ํจํด ์ค ํ๋๋ก, ๊ฐ์ฒด์ ๋์ ์ผ๋ก ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์๋ ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด ํจํด์ ๊ธฐ์กด์ ํด๋์ค๋ฅผ ์์ ํ์ง ์๊ณ ๋ ๊ฐ์ฒด์ ์ถ๊ฐ์ ์ธ ์ฑ ์์ ๋ถ์ฌํ ์ ์๊ฒ ํด์ค๋๋ค. ๋ฐ์ฝ๋ ์ดํฐ ํจํด์ ์์ ๋์ ์กฐํฉ(composition)์ ํตํด ๊ธฐ๋ฅ์ ํ์ฅํ๋ ๋ฐฉ๋ฒ์ ์ ์ํ๋ฉฐ, ์ด๋ ๊ฐ์ฒด ์งํฅ ์ค๊ณ์ ๊ฐ๋ฐฉ-ํ์ ์์น(Open-Closed Principle)์ ์ค์ํ๋ ๋ํ์ ์ธ ์์ ๋๋ค.1. ๋ฐ์ฝ๋ ์ดํฐ ํจํด์ ๊ธฐ๋ณธ ๊ฐ๋ ๊ตฌ์ฑ ์์:์ปดํฌ๋ํธ(Component): ๊ธฐ๋ณธ ์ธํฐํ์ด์ค๋ ์ถ์ ํด๋์ค์ด๋ฉฐ, ๊ตฌ์ฒด์ ์ธ ๊ฐ์ฒด๋ค์ด ์ด๋ฅผ ๊ตฌํํฉ๋๋ค.์ฝํฌ๋ฆฌํธ ์ปดํฌ๋ํธ(Concrete Component): ์ค์ ๊ธฐ๋ฅ์ ๊ตฌํํ ํด๋์ค์ ๋๋ค. ๋ฐ์ฝ๋ ์ดํฐ.. 2024. 8. 23. [C++] std::optional์ ๋ชจ๋ ๊ฒ std::optional์ ๋ํ ์์ธํ ์ค๋ช ๊ณผ ์ค๋ฌด ์์ std::optional์ C++17์์ ๋์ ๋ ๋งค์ฐ ์ ์ฉํ ๊ธฐ๋ฅ์ผ๋ก, ๊ฐ์ด "์์ ์๋ ์๊ณ ์์ ์๋ ์๋" ์ํฉ์ ์์ ํ๊ณ ๋ช ์์ ์ผ๋ก ํํํ ์ ์์ต๋๋ค. ์ด๋ ์ด์ ์ nullptr, NULL, ํน์ ํน๋ณํ ๊ฐ(์: -1)์ ์ฌ์ฉํ์ฌ "๊ฐ ์์"์ ํํํ๋ ๋ฐฉ์๋ณด๋ค ํจ์ฌ ๋ ์์ ํ๊ณ ๋ช ํํ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๊ฒ ํด์ค๋๋ค.1. std::optional์ ๊ธฐ๋ณธ ๊ฐ๋ std::optional์ ํ ํ๋ฆฟ ํด๋์ค์ด๋ฉฐ, ์ด๋ค ํ์ T์ ๋ํด std::optional๋ก ์ฌ์ฉ๋ฉ๋๋ค. ์ด ํ์ ์ T ํ์ ์ ๊ฐ์ ๊ฐ์ง ์๋ ์๊ณ , ๊ฐ์ด ์์์ ๋ํ๋ด๋ std::nullopt ์ํ์ผ ์๋ ์์ต๋๋ค.์ ์ธ ๋ฐ ์ด๊ธฐํ:std::optional maybeInt;std::o.. 2024. 8. 22. [c++] constexpr์ ๋ชจ๋ ๊ฒ constexpr๋ C++11์์ ๋์ ๋ ํค์๋๋ก, ์ปดํ์ผ ํ์์ ๊ณ์ฐ์ด ๊ฐ๋ฅํ ์์ ํํ์์ ์ ์ํ ์ ์๊ฒ ํด์ค๋๋ค. ์ด ํค์๋๋ ์ฃผ๋ก ํจ์๋ ๋ณ์๋ฅผ ์ปดํ์ผ ํ์์ ํ๊ฐํ์ฌ ํ๋ก๊ทธ๋จ์ ํจ์จ์ฑ์ ๋์ด๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. C++17 ์ดํ๋ก๋ ์ฌ์ฉ ๋ฒ์๊ฐ ๋์ฑ ํ์ฅ๋์ด ํจ์์ ๋ณ์๋ฟ๋ง ์๋๋ผ ๋ณต์กํ ์ฐ์ฐ๊ณผ ์กฐ๊ฑด๋ฌธ์ ํฌํจํ ๋ค์ํ ํํ์๋ ์ปดํ์ผ ํ์์ ๊ณ์ฐํ ์ ์๊ฒ ๋์์ต๋๋ค.constexpr์ ํน์ง ๋ฐ ์ฌ์ฉ ๋ฐฉ๋ฒ1. constexpr ๋ณ์constexpr ๋ณ์๋ฅผ ์ฌ์ฉํ๋ฉด ๊ทธ ๊ฐ์ด ์ปดํ์ผ ํ์์ ๊ฒฐ์ ๋๋๋ก ๋ณด์ฅ๋ฉ๋๋ค.constexpr int myValue = 10; // ์ปดํ์ผ ํ์์ myValue๋ 10์ผ๋ก ๊ณ ์ ๋จ2. constexpr ํจ์constexpr ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋น ํจ์๊ฐ ์ปดํ์ผ ํ์์ ํธ์ถ.. 2024. 8. 21. Asyncio - ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ ์ฃผ์ ๊ฐ๋ ํ์ด์ฌ์ asyncio ๋ชจ๋์ ๋น๋๊ธฐ I/O, ์ด๋ฒคํธ ๋ฃจํ, coroutines ๋ฐ ํ์คํฌ(task) ๊ด๋ฆฌ ๋ฑ์ ํตํด ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ์ ์ง์ํ๋ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. asyncio๋ฅผ ์ฌ์ฉํ๋ฉด ๋คํธ์ํฌ ๋ฐ ์น ์์ผ, ๋ฐ์ดํฐ๋ฒ ์ด์ค, ํ์ผ I/O ๋ฑ์ ์์ ์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.์ด๋ฒคํธ ๋ฃจํ (Event Loop):์ด๋ฒคํธ ๋ฃจํ๋ ์ฝ๋ฃจํด๊ณผ ์ฝ๋ฐฑ์ ๊ด๋ฆฌํ๊ณ , I/O ์์ ์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ์ญํ ์ ํฉ๋๋ค.asyncio.run() ํจ์๋ฅผ ํตํด ์ด๋ฒคํธ ๋ฃจํ๋ฅผ ์์ํ ์ ์์ต๋๋ค.์ฝ๋ฃจํด (Coroutine):async def๋ก ์ ์๋ ํจ์์ ๋๋ค.await ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ์ฝ๋ฃจํด์ด๋ ๋น๋๊ธฐ ์์ ์ ๊ธฐ๋ค๋ฆฝ๋๋ค.ํ์คํฌ (Task):์ฝ๋ฃจํด์ ์ด๋ฒคํธ ๋ฃจํ์์ ์คํํ ์ ์๋ ๋จ์๋ก ๋ณํํฉ๋๋ค... 2024. 6. 23. ์ฝ๋ฃจํด ์ฝ๋ฃจํด์ ๊ธฐ๋ณธ ๊ฐ๋ ํ์ด์ฌ์ ์ฝ๋ฃจํด(coroutine)์ ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ์ ๊ตฌํํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ธฐ๋ฅ์ ๋๋ค. ์ฝ๋ฃจํด์ ํจ์์ ์ ์ฌํ์ง๋ง, ์คํ ์ค์ ์ผ์ ์ค์งํ๊ณ ๋์ค์ ๋ค์ ์์ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋์์ฑ์ ๊ด๋ฆฌํ๊ณ I/O ์์ ์ ๋น๋๊ธฐ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ํ์ด์ฌ์ ์ฝ๋ฃจํด์ async ๋ฐ await ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ํ๊ณ ์ ์ดํฉ๋๋ค.์ ์: ์ฝ๋ฃจํด ํจ์๋ async def ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ ์๋ฉ๋๋ค.ํธ์ถ: ์ฝ๋ฃจํด ํจ์๋ฅผ ํธ์ถํ๋ฉด ์คํ๋์ง ์๊ณ ์ฝ๋ฃจํด ๊ฐ์ฒด๋ฅผ ๋ฐํํฉ๋๋ค.์ผ์ ์ค์ง์ ์ฌ๊ฐ: ์ฝ๋ฃจํด ๋ด๋ถ์์ await ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ์ฝ๋ฃจํด์ ํธ์ถํ๊ฑฐ๋ ๋น๋๊ธฐ ์์ ์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค. ์ด๋ ์ฝ๋ฃจํด์ ์ผ์ ์ค์ง๋๋ฉฐ, ํด๋น ์์ ์ด ์๋ฃ๋๋ฉด ๋ค์ ์คํ์ ์ฌ๊ฐํฉ๋๋ค. ์ฝ๋ฃจํด์ ์์ ๋ค.. 2024. 6. 23. ์ด์ 1 2 3 4 5 6 ยทยทยท 19 ๋ค์