๋ชฉ๋กTotal (69)

suvera-dev ๐Ÿฅฆ

Swift) SOLID ์›์น™ in Swift

SOLID ์›์น™์ด๋ž€ ? SOLID ์›์น™์ด๋ž€ ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„์— ๋” ์ข‹์€ ์•„ํ‚คํ…์ณ๋ฅผ ์„ค๊ณ„ํ•˜๊ธฐ ์œ„ํ•ด ์ง€์ผœ์•ผํ•˜๋Š” ์›์น™๋“ค์˜ 5๊ฐ€์ง€๋ฅผ ์•ž์˜ ์•ฝ์–ด๋งŒ ๋”ฐ์„œ ์ •๋ฆฌํ•œ ๋‹จ์–ด์ž…๋‹ˆ๋‹ค. SOLID ์›์น™์„ ์™œ ์•Œ์•„์•ผํ•˜์ฃ  ? ๊ฐœ๋ฐœ์„ ํ•  ๋•Œ ๋‹น์žฅ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ๋„ ์ค‘์š”ํ•˜์ง€๋งŒ, ์ƒˆ๋กญ๊ฒŒ ์–ด๋–ค ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ํ•„์š”ํ•  ๋•Œ ๋”์šฑ ์ƒ์‚ฐ์„ฑ ์žˆ๊ณ  ์œ ์—ฐํ•˜๊ฒŒ ๋Œ€์ฒ˜๊ฐ€ ๊ฐ€๋Šฅํ•ด์•ผ ์ข‹๊ฒ ์ฃ .? ์ด๋Ÿฌํ•œ ์ข‹์€ ์„ค๊ณ„๋ฅผ ์œ„ํ•œ ์ตœ์†Œํ•œ์˜ ์›์น™๋“ค์„ ์ •๋ฆฌํ•œ๊ฒŒ SOLID ์›์น™์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ์š”. VIPER๋‚˜ MVVM๋„ ๋ชจ๋‘ ์ด๋Ÿฐ ์›์น™์— ์ž…๊ฐํ•ด์„œ ๋งŒ๋“ค์–ด์กŒ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. SOLID ์›์น™์„ ์ ์šฉํ•˜์—ฌ ์„ค๊ณ„ํ•˜๋ฉด ! 1. ์žฌ์‚ฌ์šฉ๊ณผ ์œ ์ง€๊ด€๋ฆฌ๊ฐ€ ์‰ฌ์šด, ๋ณ€๊ฒฝ์— ์œ ์—ฐํ•œ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํŠผํŠผํ•œ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋ฉฐ ๋†’์€ ํ™•์žฅ์„ฑ์„ ๊ฐ€์ง€๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. 2. ๋†’์€ ..

Language/Swift 2022. 4. 14. 22:06
RxSwift) subscribe, bind, drive ์ฐจ์ด

RxSwift ์—์„œ ๊ตฌ๋…์„ ํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์„œ๋“œ 3๊ฐ€์ง€ ! ์›๋ž˜๋Š” subscribe ๋งŒ ์•Œ๊ณ ์žˆ์—ˆ๊ณ , UI ์ž‘์—…ํ•ด์ค„๋•Œ bind ๋งŒ ์ผ๋Š”๋ฐ .. ์ฐจ์ด๋ฅผ ์ž˜ ๋ชจ๋ฅด๊ณ  ๊ทธ๋ƒฅ ์“ด ๊ฒƒ ๊ฐ™๋‹ค ใ…‹ใ…‹ subscribe๋Š” ๋ง๊ทธ๋Œ€๋กœ ๊ตฌ๋…ํ•˜๋Š”๊ฑฐ ๊ตฌ๋…๋Œ€์ƒ์˜ ์ƒํƒœ๊ฐ€ ๋ณ€ํ•˜๋ฉด ๊ฐ’์„ ๋ฐ›์•„์™€์„œ ์ฒ˜๋ฆฌ ๋ณ€ํ•˜๋Š” ๋‹ค์Œ๊ฐ’, ์—๋Ÿฌ, ๋๋‚  ๋•Œ๋ฅผ ์•Œ๊ณ  ์ฝ”๋“œ ๊ตฌํ˜„ ๊ฐ€๋Šฅ. UI ์ž‘์—…์— ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”์„œ๋“œ๋Š” bind ์™€ drive bind๋Š” Observable๊ณผ Observer๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด์ฃผ๋Š” ์—ญํ•  - bind์˜ ๋‚ด๋ถ€์—๋Š” subscribe ๊ฐ€ ์žˆ์Œ - ์˜ต์ €๋ฒ„๋ธ”์ด ๋ฐฉ์ถœํ•œ ์ด๋ฒคํŠธ๋ฅผ ๊ทธ๋Œ€๋กœ binder์—๊ฒŒ ์ „๋‹ฌ ๊ทธ๋ฆฌ๊ณ  binder๋Š” UI ์—…๋ฐ์ดํŠธ์— ์‚ฌ์šฉ๋˜๋Š” ์˜ต์ €๋ฒ„์˜ ์ผ์ข… - bind๋Š” onNext ์ด๋ฒคํŠธ์— ๋Œ€ํ•ด์„œ๋งŒ ๋ฐ˜์‘ํ•˜๊ณ  error์ด๋ฒคํŠธ๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ์—๋Ÿฌ ๋กœ๊ทธ๋ฅผ..

Language/RxSwift 2022. 4. 14. 08:45
Design Pattern ) ๋””์ž์ธ ํŒจํ„ด ๊ฐœ์š”

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

iOS/Design Pattern 2022. 4. 13. 06:14
Algorithm) Dynamic programming

Dynamic programming(๋™์ ๊ณ„ํš๋ฒ•)์ด๋ž€ ? ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰์‹œ๊ฐ„ ํšจ์œจ์„ฑ์„ ๋น„์•ฝ์ ์œผ๋กœ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ• -> ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ตœ๋Œ€ํ•œ์œผ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํšจ์œจ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž‘์„ฑ ! ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์‹œ : ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด - n ๋ฒˆ์งธ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜ = (n-1)๋ฒˆ์งธ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜ + (n-2)๋ฒˆ์งธ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜ - ๋‹จ, 1๋ฒˆ์งธ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜ = 1,2 ๋ฒˆ์งธ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜ = 1 # ํ”ผ๋ณด๋‚˜์น˜ ํ•จ์ˆ˜ ์†Œ์Šค์ฝ”๋“œ def fibo(x): if x == 1 or x == 2: return 1 return fibo(x-1) + fibo(x-2) print(fibo(4)) -> But, ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์˜ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•˜๋ฉด ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค. ๋ฐ”๋กœ f(n) ํ•จ์ˆ˜์—์„œ n์ด ์ปค์ง€๋ฉด ์ปค์งˆ์ˆ˜๋ก ์ˆ˜ํ–‰ ์‹œ๊ฐ„์ด ๊ธฐํ•˜..

Algorithm/CodingTest - Python 2022. 4. 9. 03:09