๐๐๐๐ฅ๐
์ต์ ํฌ์คํธ
-
2023๋ ์ ๋ง์น๋ฉฐ ๋จ๊ธฐ๊ณ ์ถ์ ์ด์ผ๊ธฐ๋ค
2023๋ ์ ๋ง์น๋ฉฐ ๋จ๊ธฐ๊ณ ์ถ์ ์ด์ผ๊ธฐ๋ค
2023.12.302๋ ์ฐจ๋ฅผ ๋ณด๋ด๋ฉฐ ์ฌํด๋ถํฐ๋ 2๋ ์ฐจ ๊ฐ๋ฐ์๋ก์์ ์ถ์ ์ด์๋ค. ์ฒ์ ์ ์ ์ผ๋ก ์ ์ฌํด ์ ๋ฌด๋ฅผ ์์ํ ๋๋ ์ด์ ํ๋๋ฅผ ๋ฐ์ ๋๋ง๋ค ๋ด๊ฐ ํด๊ฒฐ ๋ชปํ๋ ๋ฌธ์ ์ผ๊น ๋ฒ๋ฒ ๋จ์๋๋ฐ, ์ด์ ๋ ์์ ํ์จ๊ณผ ํจ๊ป ์๋ฌด๋ ์ง๋ ์๊ฒ ์ด์ํด๊ฒฐ์ ์์ํ๋ค. ์ฌ๋์์ ๋๋ฅผ ๋ฉ์ ํ๋ ํ์๊ฐ ๋ง์์ง๊ณ , ํ๋ํ๋ ๋ค ํ์๋ค์๊ฒ ๋ฌผ์ด๋ณด๋ฉด์ ๊ฒฐ์ ์ ๋ด๋ฆฌ๋ ๋ด๊ฐ ํ ํ ๋ฉค๋ฒ๋ค๊ณผ ๋ ผ์ํด ์ง์ ๊ฒฐ์ ์ ๋ด๋ฆด ๋, ๊ทธ๋ฆฌ๊ณ ๊ทธ ๊ฒฐ์ ์ ํ์ ์ด ์์ ๋๋ฉด "์ธ์ ๋ด๊ฐ ์ด๋ ๊ฒ ๋์ง" ํ๊ณ ๊ด์ค๋ ๋ฟ๋ฏํดํ๊ธฐ๋ ํ๋ค. ์ฌํด๋ ์ฝ๋์ ์ธ ๊ธฐ์ฌ๋ฅผ ๋ง์ด ํ ํ ํด์๋ค. ์ด๋ค ๋ ์ ํ๋ฃจ์ PR์ 5๊ฐ์ฉ ์ฌ๋ฆฌ๊ธฐ๋ ํ๋ค. ๋ด๊ฐ ๋ง๋ ์์ ํ ์๋ก์ด ํ๋ฉด์ด ์๋น์ค์ ๋ค์ด๊ฐ๊ธฐ๋ ํ๊ณ , ๊ธฐ์กด ๋ ๊ฑฐ์๋ฅผ SwiftUI๋ก ๋ฐ๋ฐ๋ฅ๋ถํฐ ๋ค์ ์ง ํ๋ฉด๋ค๋ ์๊ฒผ๋ค. ๋ด๊ฐ ๋ง๋ ํ๋ฉด๋ค์ด .. -
[์ค์ํํธ ๋์์ธํจํด] ํ ํ๋ฆฟ ๋ฉ์๋ ํจํด(Template Method Pattern)
[์ค์ํํธ ๋์์ธํจํด] ํ ํ๋ฆฟ ๋ฉ์๋ ํจํด(Template Method Pattern)
2022.04.23ํ ํ๋ฆฟ ๋ฉ์๋ ํจํด ํ ํ๋ฆฟ ๋ฉ์๋ ํจํด์ ์๊ณ ๋ฆฌ์ฆ์ ๊ณจ๊ฒฉ์ ์ ์ํฉ๋๋ค. ํ ํ๋ฆฟ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ์๊ณ ๋ฆฌ์ฆ์ ์ผ๋ถ ๋จ๊ณ๋ฅผ ์๋ธํด๋์ค์์ ๊ตฌํํ ์ ์์ผ๋ฉฐ, ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌ์กฐ๋ ๊ทธ๋๋ก ์ ์งํ๋ฉด์ ์๊ณ ๋ฆฌ์ฆ์ ํน์ ๋จ๊ณ๋ฅผ ์๋ธํด๋์ค์์ ์ฌ์ ์ํ ์๋ ์์ต๋๋ค. - ํค๋ํผ์คํธ ๋์์ธ ํจํด ํ ํ๋ฆฟ ๋ฉ์๋ ํจํด์ ๋จ๊ณ์ ์ธ ๊ณผ์ ์ ๊ฐ์ง๊ณ ์๋ ์๊ณ ๋ฆฌ์ฆ์ ์ถ์์ ์ผ๋ก ์ ์ํ๊ณ , ๊ทธ ์ค ์ผ๋ถ๋ฅผ ์๋ธ ํด๋์ค์์ ํ์์ ๋ฐ๋ผ ์ง์ ๊ตฌํํ ์ ์๊ฒ ํฉ๋๋ค. ๋ง์ฝ ์ฐ๋ฆฌ๊ฐ ํ์๊ฐ์ ์ ๊ตฌํํ๋ค๊ณ ํ๋ค๋ฉด, ์๋์ฒ๋ผ ๋จ๊ณ๋ฅผ ๋๋ ์ ์๊ฒ ์ฃ . ์์ด๋๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค. ์ค๋ณต๊ฒ์ฌ๋ฅผ ํ๋ค. ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค. ๋น๋ฐ๋ฒํธ ๊ท์น์ ํ์ธํ๋ค. ๋น๋ฐ๋ฒํธ๋ฅผ ๋ค์ ์ ๋ ฅ๋ฐ๋๋ค. ๋ ๋น๋ฐ๋ฒํธ๊ฐ ์ผ์นํ๋์ง ํ์ธํ๋ค. ๊ฐ์ ์๋ฃ๋ฅผ ํ์ํ๋ค. ์ด ๋, ๋ง์ฝ ์ํฉ์ ๋ฐ.. -
[์ค์ํํธ ๋์์ธํจํด] ๋ฐ๋ณต์ ํจํด(Iterator Pattern)
[์ค์ํํธ ๋์์ธํจํด] ๋ฐ๋ณต์ ํจํด(Iterator Pattern)
2022.04.23๋ฐ๋ณต์ ํจํด(Iterator Pattern) ๋ฐ๋ณต์ ํจํด์ ์ปฌ๋ ์ ์ ๋ด๋ถ ๊ตฌํ์ ๋ ธ์ถํ์ง ์์ผ๋ฉด์ ์ปฌ๋ ์ ์ ๋ชจ๋ ์์์ ์ ๊ทผํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ๋ฐ๋ณต์ ํจํด์ ์ปฌ๋ ์ ๊ฐ์ฒด๋ก๋ถํฐ ๋ฐ๋ณต์ ์ผ๋ก ์ปฌ๋ ์ ์์์ ์ ๊ทผํ๋ ์ญํ ์ ๋ถ๋ฆฌํด๋ด๋ ํจํด์ ๋๋ค. ๋ฐ๋ณต์ ํจํด์ ์ฌ์ฉํ๋ฉด ์ปฌ๋ ์ ์ ์์ ์ ์์๋ค์ ๊ด๋ฆฌํ๋ ์ญํ ์๋ง ์ง์คํ ์ ์๊ณ , ์ด๋ค ์์ฒญ์ ์ํด ํน์ ํ ์์๋ฅผ ์ธ๋ถ๋ก ์๋ ค์ฃผ๋ ์ฑ ์์ Iterator์๊ฒ ๋ชจ๋ ๋งก๊ธธ ์ ์๊ฒ ๋์ฃ . ์ ์์์๋ ์ปฌ๋ ์ ์ ๋ด๋ถ ๊ตฌํ์ ์ธ๋ถ๋ก ๋ ธ์ถํ์ง ์๋๋ค๊ณ ํ๋๋ฐ์, ์ด ์๋ฏธ๋ ์ค์ ๋ก ์ฌ์ฉ๋๋ ์ปฌ๋ ์ ์ด ๋ฐฐ์ด์ธ์ง, ๋ฆฌ์คํธ์ธ์ง์ ๊ฐ์ ์ค์ ๊ตฌ์กฐ์๋ ์ ํ ์๊ด์์ด ๊ฐ ์์๋ค์ ์ ๊ทผ์ ๊ฐ๋ฅํ๊ฒ ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๊ทธ๋ฅ Iterator๋ฅผ ๋ฐ์์ ๋์ ๋๋ฌํ ๋๊น์ง ๋ค์ ์์.. -
[์ค์ํํธ ๋์์ธํจํด] ์ปค๋งจ๋ ํจํด(Command Pattern)
[์ค์ํํธ ๋์์ธํจํด] ์ปค๋งจ๋ ํจํด(Command Pattern)
2022.02.20์ปค๋งจ๋ ํจํด(Command Pattern) The command pattern encapsulate a request as an object, thereby letting you parameterize other objects different requests queue or log request and support undoable operation ์ปค๋งจ๋ ํจํด์ ์ด๋ค ๊ฐ์ฒด๋ก ๋ณด๋ด๋ ์์ฒญ์ ์บก์ํํ๋ ํจํด์ ๋๋ค. ๋ฐ๋ผ์ ์์ฒญ์ ๋ณด๋ด๋ ๊ฐ์ฒด๋, ์์ฒญ์ ๋ฐ๋ ๊ฐ์ฒด์ ์๊ด์์ด ์์ฒญ ์์ฒด๋ฅผ ๊ฐ์ฒด๋ก ์บก์ํ ํ๋ ํจํด์ด์ฃ . ์ด๋ ๊ฒ ์์ฒญ์ ์บก์ํ ํ๋ค๋ฉด, ์ด๋ค ์์ ์ ๋ํ ์์ฒญ๋ค์ ๊ฐ์ฒด๋ก ๋ง๋ค์ด ๋๊ณ , ํ์์ ๋ฐ๋ผ์ ๊ฐ์ฒด์๊ฒ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. ์์ฒญ์ ๋ํ ๊ฐ์ฒด๋ค์ ๋ฆฌ์คํธ์ ๋ด์๋๋ฉด ์ด๋ค ์ ์ฐจ์ .. -
[์ค์ํํธ ๋์์ธํจํด] ์ฑ๊ธํค ํจํด(Singleton Pattern)
[์ค์ํํธ ๋์์ธํจํด] ์ฑ๊ธํค ํจํด(Singleton Pattern)
2022.02.12์ฑ๊ธํค ํจํด(Singleton Pattern) The singleton pattern ensures a class has only one instance and provides a global point of access to it. ์ค๋์ ํญ์ ๋ ผ๋์ ์ค์ฌ์ ์๋ ์ฑ๊ธํค ํจํด์ ๋ํด์ ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค..! ์ฑ๊ธํค ํจํด์ ๊ฐ์ฒด์ ์ธ์คํด์ค๊ฐ ํ ๋ฒ ๋ง๋ค์ด์ง ์ดํ์๋ ํด๋น ๊ฐ์ฒด์ ๋ํ ์๋ก์ด ์ธ์คํด์ค๊ฐ ์ ๋ ๋ง๋ค์ด์ง์ง ์๋๋กํ๋ ๋์์ธ ํจํด์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ์์ญ์์ ํด๋น ์ธ์คํด์ค์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋๋ก ํฉ๋๋ค. ์ฑ๊ธํค ํจํด์ ์๋ฆฌ ์ฑ๊ธํค ํจํด์ ํต์ฌ์ ๋จ ํ๋์ ์ธ์คํด์ค๋ง ์ฒ์์ ์์ฑํ๊ณ , ์๋ก์ด ์ธ์คํด์ค๋ฅผ ์์ฑํ ์ ์๋๋ก ํ๋ ๊ฒ์ ์์ต๋๋ค. ๊ทธ๋ผ ์ด๋ป๊ฒ ํ ์ ์์๊น์? ๋จผ์ ์๋ก์ด ์ธ์คํด์ค๋ฅผ ์์ฑํ .. -
์ค๋์ ๋ฐฐ์ #126
์ค๋์ ๋ฐฐ์ #126
2022.02.112022.02.11 ์ค๋์ ๋ฐฐ์ ์ค๋ ํ ์ผ. ์ฑ๊ธํค, ์ปค๋งจ๋, ์ด๋ํฐ ํจํด ๊ณต๋ถ. ํฌ์คํธ ์ด์ ์์ฑํ๊ธฐ ์ ์ฌ ์ค๋น ์ค๋ ์๋ก ๋ฐ๊ฒฌํ ๊ฒ. ์ค๋์ ๋์์ธ ํจํด์ ๊ฐ๋จํ๊ฒ ํ๊ณ ๋์ค์ ์ฝ์ด๋ณผ ์๋ฃ๋ค์ ์์งํ๋ค. iOS Architectures Explained: Which One Best Fits My Project? And know when to use MVC, MVVM, VIPER, and Coordinator patterns betterprogramming.pub Part 6: Swift Tricks That Junior iOS Developers Might not Know Know better, be better. medium.com Faรงade Design Pattern in Swift, and .. -
[์ค์ํํธ ๋์์ธํจํด] ์ถ์ ํฉํ ๋ฆฌ ํจํด(Abstract Factory Pattern)
[์ค์ํํธ ๋์์ธํจํด] ์ถ์ ํฉํ ๋ฆฌ ํจํด(Abstract Factory Pattern)
2022.02.10์ถ์ ํฉํ ๋ฆฌ ํจํด The abstract factory pattern provides an interface of creating families of related or dependent objects without specifying their concrete classes. ์ด์ ํฌ์คํธ์์ ํฉํ ๋ฆฌ ๋ฉ์๋ ํจํด์ ๋ํด ์ ๋ฆฌํด๋ณด์๋๋ฐ์, ์ถ์ ํฉํ ๋ฆฌ ํจํด์ ํฉํ ๋ฆฌ ๋ฉ์๋ ํจํด๊ณผ ์์ฃผ ์ ์ฌํฉ๋๋ค. ๋ ๋์์ธ ํจํด์ ์ฐจ์ด๋ฅผ ์ด์ผ๊ธฐ ํ๋ค๋ฉด ํฉํ ๋ฆฌ ๋ฉ์๋ ํจํด์ ํ๋์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํด ์ฌ์ฉํ๊ณ , ์ถ์ ํฉํ ๋ฆฌ ํจํด์ ์ฌ๋ฌ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํด์ ์ฌ์ฉํ๋ค๊ณ ํ ์ ์์ด์. ์ฌ์ค ๊ธฐ์ ์ ์ผ๋ก๋ ํฉํ ๋ฆฌ ๋ฉ์๋ ํจํด๊ณผ ์ถ์ ํฉํ ๋ฆฌ ํจํด์ด ๋ค๋ฅธ ์ ์ด ์์ด์. ์์กด์ฑ ์ฃผ์ ๊ด์ ์์๋ ๊ฐ์ ์ญํ ์ ํ๊ธฐ ๋๋ฌธ์ด์ฃ . ํ.. -
[์ค์ํํธ ๋์์ธํจํด] ํฉํ ๋ฆฌ ๋ฉ์๋ ํจํด(Factory Method Pattern)
[์ค์ํํธ ๋์์ธํจํด] ํฉํ ๋ฆฌ ๋ฉ์๋ ํจํด(Factory Method Pattern)
2022.02.09ํฉํ ๋ฆฌ ํจํด (Factory Pattern) ๋จผ์ ํฉํ ๋ฆฌ ํจํด์ ๋ํด์ ์ ๋ฆฌํด๋ด ์๋ค. ํฉํ ๋ฆฌ ํจํด์ ์ด๋ค ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋, ๊ทธ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ๊ฐ์ฒด์์ ์ง์ ๊ฐ์ฒด์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์๋๋ผ, ํฉํ ๋ฆฌ๋ผ๋ ๊ฐ์ฒด์๊ฒ ๊ทธ ์์ ์ ๋งก๊ฒจ ์์กด์ฑ์ ์ฃผ์ ๋ฐ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ํฉํ ๋ฆฌ ํจํด์ ์ ํ์ํ ๊น์? ํฉํ ๋ฆฌ ํจํด์ ๊ฐ์ฅ ํฐ ์ฅ์ ์ ๊ฐ์ฒด์ ์์ฑ์ ํ ๋ฒ ์บก์ํํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ์ด๋ ๊ฒ ์บก์ํํ์ ๋๋ ๋ ๊ฐ์ง ํจ๊ณผ๋ฅผ ์ป์ ์ ์๋๋ฐ์, ์ฒซ๋ฒ์งธ ํจ๊ณผ๋ ์ธ์คํด์ค์ ์์ฑ์ ๋น์ฆ๋์ค ๋ก์ง์ด ๋ผ์ด์์ ๋, ์ด ๋ก์ง์ ์์กด์ฑ์ ๊ฐ์ง๋ ๊ฐ์ฒด๋ก๋ถํฐ ๋ถ๋ฆฌํ ์ ์๋ค๋ ๊ฒ์ด๊ณ , ๋๋ฒ์งธ ํจ๊ณผ๋ ๋คํ์ฑ์ ํตํด ์ธ์ ๋ ์ง ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ ํฉํ ๋ฆฌ๋ฅผ ์ ์ฐํ๊ฒ ๋ณ๊ฒฝํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ๋ง์ฝ ์ด๋ค ์ธ์คํด์ค๋ฅผ ๋ง๋๋ ๊ณผ์ ์ด ๋ฐ๋๋ค๊ณ .. -
์ค๋์ ๋ฐฐ์ #125
์ค๋์ ๋ฐฐ์ #125
2022.02.082022.02.08 ์ค๋์ ๋ฐฐ์ ์ค๋ ํ ์ผ. ๋ฐ์ฝ๋ ์ดํฐ ํจํด ํฌ์คํธ ์ ๋ฆฌ NSCache ์ฝ๋ ๋ฏ์ด๋ณด๊ธฐ ์ค๋ ์๋ก ๋ฐ๊ฒฌํ ๊ฒ. ๋ฐ์ฝ๋ ์ดํฐ ํจํด์์ Decorator ๊ฐ์ฒด๋ ์์ ์ด ์ถ๊ฐ๋ ๋์ ๊ฐ์ฒด์ ์ธํฐํ์ด์ค๋ ์ถ์ํด๋์ค๋ฅผ ๊ตฌํํ๊ณ , ๋์์ ์์ ํ๋ค. ์ด๋ ๊ฒ ํ๋ ์ด์ ๋ ์ฌ๋ฌ ๋ฐ์ฝ๋ ์ดํฐ๋์ ์ฐ์์ ์ผ๋ก ์ฐ๊ฒฐํ๊ณ , ๋ฉ์๋ ํธ์ถ์ ์ฌ๊ท์ ์ผ๋ก ์ํํด์ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ธฐ ์ํด์์ด๋ค. NSCache๋ LRU์ LFU์ ํ์ด๋ธ๋ฆฌ๋์ด๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก LRU๋ก ๊ฐ์ฅ ์ค๋์ ์ ์ฐธ์กฐํ ๊ฐ์ฒด๋ฅผ ์ ๊ฑฐํ๋ ค๊ณ ํ์ง๋ง ๊ทธ ๊ฐ์ฒด์ ์ฐธ์กฐํ์๊ฐ ์บ์ ๋ด์ ์๋ ๊ฐ์ฒด๋ค์ ์ฐธ์กฐ ํ์ ํ๊ท ๋ณด๋ค ๋๋ค๋ฉด ์ ์๋ฏธํ ๊ฐ์ฒด๋ก ํ๋จํด์ ์ ๊ฑฐํ์ง ์๊ณ ๋ค์์ผ๋ก ์ค๋์ ์ ์ฐธ์กฐํ ๊ฐ์ฒด๋ฅผ ํ์ธํ๋ค. NSCache์์ setObject๋ฅผ ํ ๋ cost๋ฅผ ์์ค๋ค๋ฉด ๊ทธ๋ฅ.. -
[iOS] NSCache์ ์บ์ ์ ์ฑ ๋ฏ์ด๋ณด๊ธฐ
[iOS] NSCache์ ์บ์ ์ ์ฑ ๋ฏ์ด๋ณด๊ธฐ
2022.02.08NSCache ์ค๋์ ๊ฐ๋ฒผ์ด ์ด๋ฏธ์ง ์บ์์ ์์ฃผ ์ฌ์ฉํ์ง๋ง, ๋ฌด์ฌ์ฝ ์ฌ์ฉํด์ค๊ธฐ๋ง ํ๋ NSCache๊ฐ ๋ด๋ถ์ ์ผ๋ก ์ด๋ค ์ ์ฑ ์ ๋๊ณ ์๋์ง ํ์ธํด๋ณด๋ ค๊ณ ํฉ๋๋ค. ๊ณต์๋ฌธ์์๋ NSCache๊ฐ ๋ค์ํ ์๋ ์ ๊ฑฐ ์ ์ฑ (auto-eviction policy)์ ์ฌ์ฉํด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๋ค๊ณ ์๊ฐํ๊ณ ์๋๋ฐ์, ์ด๋ค ์ ์ฑ ์ ์ฌ์ฉํ๋์ง ์๋ ค์ฃผ๊ณ ์์ง๋ ์์์. ๊ทธ๋์ Foundation์ ๋ค์ด๊ฐ๋ Objective-C ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ libs-base์์ NSCache์ ์์ค์ฝ๋๋ฅผ ์ฐพ์ ์ ์์๊ณ , ์ด ์์ค์ฝ๋๋ฅผ ๋ฏ์ด๋ณด๋ ค๊ณ ํฉ๋๋ค..! ์ ๊ฑฐ Objc๋ ๋ฆฌ๋ฉ์ ์๋ฒฝํ๊ฒ ๋ชปํด์ ํ๋ฆฐ ์ ๋ณด๊ฐ ์์ ์๋ ์์ด์..! ํท๊ฐ๋ฆฌ๋ ๋ถ๋ถ์ ์ ๋ชจ๋ฅด๊ฒ ๋ค๊ณ ๋จ๊ฒจ๋๊ฒ์! ์ฝ๋๋ ์ฌ๊ธฐ์์ ํ์ธํ ์ ์์ด์! ๊ทธ๋ผ ์์ํ๊ฒ ์ต๋๋ค! GitHub ..