์๋์ ๊ธ์ ์ธํ๋ฐ "์ค๋ฌด์ค์ฌ! FE ์
๋ฌธ์๋ฅผ ์ํ React" ๊ฐ์๋ฅผ ๋ฃ๊ณ ๋ ํ์ ์ ๋ฆฌํ๊ณ ๊ธฐ๋กํ ๊ธ์
๋๋ค. ์ปดํฌ๋ํธ๋?React๋ ์ปดํฌ๋ํธ๋ผ๋ ๋จ์๋ก ํ๋ฉด์ด ๊ตฌ์ฑ์ค์ค๋ก ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ์บก์ํ๋ ์ฝ๋ ์กฐ๊ฐํ๋์ JSX๋ฅผ ๋ฐํํ๋ ํจ์ ์ปดํฌ๋ํธ ๋ง๋ค๊ธฐ์๋์ App ์ปดํฌ๋ํธ๋ฅผ Hello ์ปดํฌ๋ํธ์ World ์ปดํฌ๋ํธ๋ก ๋ถ๋ฆฌํ๊ธฐexport default function App() { return ( Hello, World );} [ App.js ] import Hello from "./Hello.js";import World from "./World.js";export default function App() { return ( ..
List (๋ฆฌ์คํธ): ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ ์์๋๋ก ์ ์ฅํ๋ ๋ณ๊ฒฝ ๊ฐ๋ฅํ ์ํ์ค ์๋ฃํ ๋ฆฌ์คํธ์ ํน์ง์์๊ฐ ์กด์ฌ๊ฐ๋ณํ ์๋ฃํ๋๊ดํธ([])๋ก ํ๊ธฐ์ด๋ค ์๋ฃํ์ด๋ผ๋ ์ ์ฅ ๊ฐ๋ฅ0 ๊ฐ ์ด์์ ๊ฐ์ฒด๋ฅผ ํฌํจํ๋ฉฐ ๋ฐ์ดํฐ ๋ชฉ๋ก์ ์ ์ฅmy_list_1 = [1, 'a', 3, 'b', 5]my_list_2 = [1, 2, 3, 'Python', ['hello', 'world', '!!!']] > ๋น์ด์๋ ๋ฆฌ์คํธ ์์ฑa = list()b = [] ๋ฆฌ์คํธ์ ์ธ๋ฑ์ฑ( indexing )my_list = [1, 'a', 3, 'b', 5]print(my_list[0]) # 1print(my_list[1]) # aprint(my_list[2]) # 3print(my_list[3]) # bprint(my_list[4]) #..
UIScrollView์ UIPageControl์ ์ด์ฉํ ํ์ด์ง ์ ํ UI์ค์ ViewController์ UIScrollView์ PageControl์ ์ฌ๋ฆฐ ํ ScrollView์ ๋ ์ด์์์ Top, Bottom, Left, Right ๋ชจ๋ safeArea์ 0์ผ๋ก ๋ง์ถฅ๋๋ค. ScrollView์ Page Control๋ ๋ฐ๋ก ์์นํ๋๋ก ์์ด์ผ ํฉ๋๋ค. ViewController์ ์ฐ๊ฒฐ @IBOutlet weak var scrollView: UIScrollView! @IBOutlet weak var pageControl: UIPageControl! Page ์ค์ ์ฐ์ page๋ฅผ ์ค์ ํ๊ธฐ ์ํด ๋ณ๊ฒฝํ ํ์ด์ง๊ฐ ๋ค์ด๊ฐ UIView ๋ฐฐ์ด ์ ์ธํด์ค๋๋ค. var pages: [UIView] = [] ๊ทธ๋ค์..
UIPageControl UIPageControl์ ์ฌ๋ฌ ํ์ด์ง๋ ์ฌ๋ฌ ์ฅ์ ์ฌ์ง๋ค์ ์์น๋ฅผ ํ์ํ๋ ์ผ๋ จ์ ์ ๋ค์
๋๋ค. pages ๊ด๋ฆฌ var currentPage: Int : PageControl์์ ํ์๋๋ ํ์ฌ ํ์ด์ง ( ํ์ฌ ์์น ํ์ ) ( 0์ด ํ์ฌ ํ์ด์ง ) var numberOfPages: Int : ํ์ด์ง ์ ( ํ์ํ ์ ์ ๊ฐ์) ( default : 0 ) var hidesForSinglePage: Bool : ํ์ด์ง๊ฐ ํ๋๋ง ์์ ๋, PageControl์ ์จ๊น ์ฌ๋ถ ๊ฒฐ์ ( true : ์จ๊น, false : ์์จ๊น ( default ) ) Page Indicator ์ ์์ ์ง์ var pageIndicatorTintColor: UIColor? : ์ ํ๋์ง ์์ pageIndi..
์ค๋์ Scroll View์ ๋ ์ด์์์ ์ก๋ ๊ฒ์ ๋ํด์ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํฉ๋๋ค! ScrollView ScrollView๋ ์คํฌ๋กค์ด ๊ฐ๋ฅํ Content์์ญ ๋ด์์ ์์ ์ Content๋ฅผ ํ์ํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ํ๋ซํผ์ ์ ํฉํ Scroll gesture๋ฅผ ์ํํ ๋, ScrollView๋ ๊ธฐ๋ณธ content์ ์ด๋ ๋ถ๋ถ์ด ๋ณด์ด๋์ง ์กฐ์ ํฉ๋๋ค. ScrollView๋ ์ํ, ์์ง ํน์ ๋ ๊ฐ ๋ค ์คํฌ๋กคํ ์ ์์ต๋๋ค. ํ์ง๋ง, ์ค ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง๋ ์์ต๋๋ค. TableView์ CollectionView๋ ScrollView๋ฅผ ์์๋ฐ๊ณ ์๊ธฐ ๋๋ฌธ์ ์๋์ผ๋ก ์คํฌ๋กค์ด ๊ฐ๋ฅํฉ๋๋ค. ScrollView ์ ์ฉ 1) ViewController์ ScrollView๋ฅผ ์ฌ๋ ค์ AutoLayout ์ค์ ํ๊ธฐ Library ์ฐฝ์..
HTTP ํ๋กํ ์ฝ์ด๋? HTTP ํ๋กํ ์ฝ์ด๋ "HyperText Transfer Protocol"์ ์ค์๋ง๋ก ์น์์ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ๊ธฐ ์ํ ๊ท์ฝ ๋๋ ํ๋กํ ์ฝ์
๋๋ค. ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ํ์ดํผ ๋ฌธ์๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐ ์ฌ์ฉ์ด ๋๋๋ฐ์! ์ด๋, ํด๋ผ์ด์ธํธ๋ ์น์ฌ์ดํธ๋ฅผ, ์๋ฒ๋ ์๋ฒ ์ปดํจํฐ๋ผ๊ณ ์๊ฐํ์๋ฉด ๋ผ์! ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ฉด, ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ต์ ํ๋ ์์ฒญ/์๋ต ํํ๋ก ๋ฐ์ดํฐ ์ ๋ฌ์ด ์ด๋ฃจ์ด์ ธ์. ๋ํ HTTP๋ ์ด๋ฏธ์ง, ์์, ์์ฑ, ํ์ผ JSON ๋ฑ ๋ชจ๋ ํํ์ ๋ฐ์ดํฐ๋ฅผ ํต์ ํ ์ ์์ต๋๋ค. HTTP๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋น์ฐ๊ฒฐ์ฑ์ ๊ฐ์ง๋๋ค. ๋น์ฐ๊ฒฐ์ฑ์ด๋ผ๋ ๊ฒ์ ์ ์ ๋ณด๋๋ ๋ฐ์ดํฐ์ ํ์ ๋ณด๋๋ ๋ฐ์ดํฐ ๊ฐ์ ์ฐ๊ด์ฑ์ด ์ ํ ์๋ค๋ ๊ฒ์ด์์! ๊ฐ ์์ฒญ๋ง๋ค ๋ฐ์ดํฐ๊ฐ ๋
๋ฆฝ์ ์ผ๋ก ์ฒ๋ฆฌ๋๊ธฐ ๋..
์ค๋์ ARC ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ๋ํด์ ๊ณต๋ถํด ๋ณผ๊น ํฉ๋๋ค! ๊ทธ๋ผ ์์ํด ๋ณผ๊น์?! โจ ์ค์ํํธ๋ ARC ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ํ ์์ญ์์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. ์.. ๊ทธ๋ ๋ค๋ฉด ํ ์์ญ์ด ๋์ฒด ๋ญ๊ธธ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌ๋ฅผ ํด์ฃผ์ด์ผ ํ ๊น์?! ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ ์ค Heap ์์ญ Heap ์์ญ์ ๋ฐํ์ ์ค ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ด ํ์ํ ๊ฒฝ์ฐ์ ๋์ ์ผ๋ก ํ ๋น๋ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ๊ณณ์
๋๋ค. ๊ทธ๋ผ ๋์ ํ ๋น์ด ๋ญ๋ฐ์?! ๋์ ํ ๋น์ด๋ ์คํ ์์ญ์ฒ๋ผ ์ ํด์ง ๊ณณ์ ๋ฐ์ดํฐ ๋ฑ๋ฑ ๋ค์ด๊ฐ๊ณ ๋์ค๋ ๊ฒ์ด ์๋๋ผ ๋ฉ๋ชจ๋ฆฌ์ ๋น์์ ธ ์๋ ๊ณต๊ฐ์ ์ฐพ์์ ํฌ๊ธฐ๋ ์์กด๊ธฐ๊ฐ์ ์ ํ์ฌ ํ ๋นํ ์ ์๋ ๋ฐฉ๋ฒ์
๋๋ค. Heap ์์ญ์๋ ์ฐธ์กฐ ํ์
์ ๋ฐ์ดํฐ๋ง ์ ์ฅ์ด ๋ฉ๋๋ค. ๋ฐํ์ ์ค ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ด ํ์ํ ๊ฒฝ์ฐ Heap ์์ญ์ ์ ์ฅ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋์ ์ผ๋ก ํ ๋น ์ฐธ..
์๋
ํ์ธ์! ์ค๋์ split๊ณผ components์ ์ฐจ์ด์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. split์ components๋ ๋ฌธ์์ด์ ํน์ ๋ฌธ์์ด์ ๊ธฐ์ค์ผ๋ก ๋๋ ์ ์๋ ๋ฌธ์์ด ๋ฌธ๋ฒ์ด์์. ์ฐ์ split์ components์ ์ฐจ์ด๋ฅผ ๋น๊ตํ๊ธฐ ์ ์ ๊ฐ๊ฐ์ ์ ์์ ๋งค๊ฐ๋ณ์๋ค์ ์ญํ ์ ์ดํด๋ด
์๋ค. Split func split( separator: String, maxSplits: Int = .max, omittingEmptySubsequences: Bool = true ) -> [Substring] split๋ Swift Standard Library ์ ํฌํจ์ด ๋์ด์์ด์, import ์์ด๋ ์ฌ์ฉํ ์ ์๋ ๋ฌธ๋ฒ์
๋๋ค! split๋ separator, maxSplits, omittingEmptySubseque..