์ ์ฒด ๊ธ
-
Xcode rsync.samba deny file-write-create ์ค๋ฅ ๋ถ์๊ธฐXcode 2025. 3. 12. 10:06
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ ๊ธฐ์ ์ ์ธ ์๋ก์ด๊ฑธ ์์๊ฐ๋๊ฒ๋ณด๋ค ์ค์ ๊ฒช์ Xcode์์ ๋ฐ์ํ ์ ์๋ ์ค๋ฅ์ ๋ํด ํ์ ํด๋ด ๋๋ค ๐ What's Error?์ต๊ทผ Xcode์์ iOS ํ๋ก์ ํธ๋ฅผ ๋น๋ํ๋ ๊ณผ์ ์์ Sendbox: rsync.samba deny(1) file-write-create ์ค๋ฅ๋ฅผ ๊ฒฝํํ์ด์! ํด๋น ์ค๋ฅ๋ rsync(Samba ๊ด๋ จ ํ๋ก์ธ์ค)๊ฐ ํน์ ๋๋ ํฐ๋ฆฌ์ ํ์ผ์ ์์ฑํ๋ ค ํ ๋, macOS์ ๋ณด์ ์ ์ฑ ์ผ๋ก ์ธํ์ฌ ์ฐจ๋จ๋๋ฉด์ ๋ฐ์ํ๋ ๋ฌธ์ ์ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก๋ SMB(Network File System) ๊ณต์ ๋๋ ํฐ๋ฆฌ, Xcode์ ์๋ก์ด ์๋๋ฐ์ค ์ ์ฑ , macOS์ ๋ณด์ ์ ํ ๋ฐ ๋๋ ํฐ๋ฆฌ ๊ถํ ๋ฌธ์ ๋ก ์ธํด์ ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ด์. ๊ทธ๋ ๊ธฐ์ ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋..
-
Server-Driven UIiOS 2025. 3. 7. 18:08
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ Server-Driven UI์ ๋ํด ํบ์๋ณด๊ฒ ์ต๋๋ค ๐๐ปServer-Driven UI?์๋ฒ ๋๋ฆฌ๋ธ UI๋ผ๋๊ฑด ์ฑ์ UI๋ฅผ ์๋ฒ์์ ๋์ ์ผ๋ก ์ ์ํ๊ณ , ํด๋ผ์ด์ธํธ๋ ์ด๊ฑธ ํด์ํด์ ํ๋ฉด์ ๊ตฌ์ฑํ๋ ๋ฐฉ์์ ๋งํด์ ๐์ฆ, ํ๋ฉด์ ๊ตฌ์ฑํ๋ ์ปดํฌ๋ํธ ์์๋ค์ JSON ๋ฑ์ ํ์์ผ๋ก ์๋ฒ์์ ๋ด๋ ค์ฃผ๋ฉด ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ฅผ ํด์ํด์ UI๋ฅผ ๋์ ์ผ๋ก ๋ ๋๋งํฉ๋๋ค.๊ฒฐ๊ตญ ์งํฅํ๋ ๋ชฉํ๋ ์ฑ ๋ฐฐํฌ ์์ด UI ๋ณ๊ฒฝ์ด ์์ ๋กญ๊ณ , A/B ํ ์คํธ ๋ฑ์ ์ฉ์ดํ๋ค๋ ํน์ง์ด ์์ฃ ! ๊ทธ๋ผ ์๋ฒ์์ ์ด๋ป๊ฒ ๋ด๋ ค์ฃผ๋๊ฑด์ง ํ๋ฒ ์ดํด๋ณผ๊ป์. JSON ๊ธฐ๋ฐ UI ์ ์์๋ฒ๋ UI ์์๋ค์ JSON ํํ๋ก ์ ์ํด์ ํด๋ผ์ด์ธํธ์ ์ ๋ฌํด์ค๋๋ค. ์๋ ์๋ฒ ๋ฆฌ์คํฐ์ค ์๋ฅผ ๋ณผ๊น์? { "title": "๋ฉ์ธ ํ..
-
Factory PatterniOS 2025. 3. 3. 19:25
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ Factory Pattern์ ๋ํด iOS๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฐ๋จํ ์ ๋ฆฌํด๋ณด๋ ค ํฉ๋๋ค ๐๐ปFactory Pattern?Factory Pattern์ ๊ฐ์ฒด ์์ฑ์ ์ค์ ์ง์คํํด ๊ด๋ฆฌํ๋ Creational(์์ฑ) ๋์์ธ ํจํด์ ๋๋ค.Factory Pattern์ ํตํด์ ๊ฐ์ฒด ์์ฑ ๋ก์ง์ ํ ๊ณณ์ ๋ชจ์ ์ ์๊ณ , ๋ณ๊ฒฝ์ด ํ์ํ ๋ ์ต์ํ์ ์์ ์ผ๋ก ์ ์ง๋ณด์ ํ ์ ์๋ค๋ ์ฅ์ ์ด ์์ฃ ! Factory Pattern์ ํต์ฌ ๊ฐ๋ ์ ๋ช๊ฐ์ง๊ฐ ์์ด์ ๐ 1๏ธโฃ ๊ฐ์ฒด ์์ฑ์ ์บก์ํํด ํด๋ผ์ด์ธํธ ์ฝ๋์์ ๊ฐ์ฒด ์์ฑ ๋ก์ง์ ์จ๊น2๏ธโฃ ๊ฐ์ฒด์ ๊ตฌ์ฒด์ ์ธ ๊ตฌํ์ ์จ๊ธฐ๊ณ ์ธํฐํ์ด์ค (Protocol)์ ํตํด ์ฌ์ฉ3๏ธโฃ ๊ฐ์ฒด ์์ฑ ๋ฐฉ์์ ๋ณ๊ฒฝํด๋ ํด๋ผ์ด์ธํธ ์ฝ๋์ ์ํฅ์ ์ฃผ์ง ์์ ๊ทธ๋ผ ..
-
Swift Protocol ๋ค์ค ์ฑํSwift 2025. 2. 26. 19:54
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ Swift Protocol๊ณผ ๋ค์ค ์ฑํ์ ๋ํด ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค ๐๐ป ์ฌ์ค, ๋ด์ฉ ์์ฒด๋ ๊ธฐ์ด์ ์ด๊ณ ๊ฐ๋จํ์ง๋ง ์ฒ์ ๊ฐ๋ฐ์ ์์ํ๊ณ Swift๋ฅผ ๋ฐฐ์ฐ์๋ ๋ถ๋ค์ ํท๊ฐ๋ ค ํ๊ฑฐ๋ ์๋ฌธ์ ํ๋ ์ง์ ์ด ๊ฐํน ์์ด ํ๋ฒ ์ฝ๊ฒ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํฉ๋๋ค!Protocol?Swift์์ ํ๋กํ ์ฝ์ ํน์ ์๊ตฌ์ฌํญ์ ์ ์ํ๋ ์ฒญ์ฌ์ง์ด์ฃ .ํด๋์ค, ๊ตฌ์กฐ์ฒด, ์ด๊ฑฐํ์ด ํด๋น ํ๋กํ ์ฝ์ ์ฑํํ๋ฉด ํ๋กํ ์ฝ์ด ์ ์ํ ์๊ตฌ์ฌํญ์ ์ถฉ์กฑํด์ผ ํฉ๋๋ค. protocol Greetable { var name: String { get } func greet() -> String}struct Person: Greetable { var name: String func greet() -> S..
-
RxSwift - withUnretainedRxSwift 2025. 2. 21. 07:54
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ RxSwift์ withUnretained์ ๋ํด ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค ๐๐ปRxSwift๋ฅผ ์ฌ์ฉํ๋ฉด์ ๋ฉ๋ชจ๋ฆฌ ๋์ ํน์ ๊ฐํ ์ํ ์ฐธ์กฐ ๋ฌธ์ ๋ฅผ ๋ง๋ ์ ์๋ ์ํฉ์ด ๋ง์ต๋๋ค.๋ฌผ๋ก ์ด๋ฅผ ์ํด weak self๋ฅผ ์ฌ์ฉํ์ฌ ํด๊ฒฐํ ์ ์์ง๋ง, ๊ท์ฐฎ์์์..?๊ทธ๋์ ๋ณด๋ค ๊ฐ๋ ์ฑ์ด ์ข๊ณ ํธ๋ฆฌํ๊ฒ withUnretained๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ผ ํ๋ฒ withUnretained๊ฐ ๋ฌด์์ด๊ณ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง ์์๋ณผ๊น์? withUnretained?withUnretained๋ RxSwift์์ weak self ํจํด์ ๋ณด๋ค ๋ช ํํ๊ณ ์์ ํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๋์์ฃผ๋ ์ฐ์ฐ์์ ๋๋ค.์ฆ, ๊ธฐ์กด weak self ์ฌ์ฉ ์ ๋ฐ์์ํค๋ ์ต์ ๋์ ์ฒ๋ฆฌํ๋๊ฒ์ ๋ํด ๋์ผํ๊ฒ ์ฒ๋ฆฌ๋ฅผ ..
-
RxSwift/RxCocoa - TraitsRxSwift 2025. 2. 17. 08:49
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ RxSwift์ Traits์ ๋ํด ์ ๋ฆฌํด ๋ณด๊ฒ ์ต๋๋ค ๐๐ปTraits?์ฐ์ RxSwift์์ Observable์ ๋งค์ฐ ์ ์ฉํ ์คํธ๋ฆผ์ด์ง๋ง, ๋๋ก๋ ํน์ ํ ์ก์ ์ ๊ฐ์ ํ๊ณ ์ถ์๋๊ฐ ์์ ์ ์์ต๋๋ค.Traits์ด ์ด๋ฐ ํน์ ํ ํจํด์ ๋ฐ๋ฅด๋ Observable์ ๋ณํ์ผ๋ก ๊ทธ ์ญํ ์ ํด์ค๋๋ค.์ฆ, Observable๋ก๋ ์๋ onNext, onError, onCompleted ๋ฑ์ ๋ค ์ฒ๋ฆฌํ๋ค๋ฉด Traits์ ํ์ํ๊ฒ๋ง ์ฒ๋ฆฌํ ์ ์์ฃ . RxSwift์ RxCocoa์์๋ ๋ค์๊ณผ ๊ฐ์ Traits๋ค์ ์ ๊ณตํฉ๋๋ค ๐ 1๏ธโฃ Single2๏ธโฃ Completable3๏ธโฃ Maybe4๏ธโฃ Driver5๏ธโฃ Signal6๏ธโฃ ControlProperty7๏ธโฃ Cont..
-
RxSwift/RxCocoa - subscribe vs bind vs driveRxSwift 2025. 2. 14. 11:19
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ RxSwift์์์ bind, subscribe, drive์ ์ญํ ๊ณผ ์ด๋ค ์ฐจ์ด๊ฐ ์๋์ง์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค ๐๐ป์ค๋ ์ ๋ฆฌํด๋ณผ ์ด subscribe, bind, drive๋ ๊ฐ๊ฐ ๋ชฉ์ ๊ณผ ํน์ง์ด ๋ค๋ฅด๊ธฐ์ ์ ์ ํ ์ฌ์ฉํ๋๊ฒ์ด ์ข์ต๋๋ค. ๊ทธ๋ ๊ธฐ์ ์ด ์ธ๊ฐ์ง์ ๋ํด ์ฐจ์ด์ ์ ํ์คํ ์๊ณ ์ด๋ค ์ํฉ์์ ์ด๋ค๊ฑธ ์ฌ์ฉํ ์ง ์ฒดํฌํด๋ณด์ฃ ! ๐ฏโ๏ธ ๊ทธ์ ์ ํ๋ ์ง๊ณ ๊ฐ๋ณผ๊ป์. RxSwift์์์ ํต์ฌ ๊ฐ๋ ์ Observable๊ณผ Observer์ฃ .์ฌ๊ธฐ์ Observable์ ๋ฐ์ดํฐ๋ฅผ ๋ฐฉ์ถํ๋ ์คํธ๋ฆผ์ด๊ณ , Observer๋ ๋ฐฉ์ถ๋ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ณ ์ฒ๋ฆฌํ๋ ๊ฐ์ฒด ์ญํ ์ ํฉ๋๋ค.์ด ๋ ๊ฐ๋ ์ ํตํด์ ์ฐ๋ฆฌ๋ ๋ฐ์ํ ํ๋ก๊ทธ๋๋ฐ์ ๊ตฌํํ๋๊ฒ์ด์ฃ .์ฌ๊ธฐ์ subscribe, bind..
-
Hot Observable vs Cold ObservableRxSwift 2025. 2. 11. 10:24
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ Rx์์์ Hot/Cold Observable์ ๋ํด ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค ๐๐ป ๋จผ์ , RxSwift์์ Observabled์ ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ๋ค๋ฃจ๋ ํต์ฌ์ ์ธ ์์์ด๋ฉฐ, Observable์ ์ฑ๊ฒฉ์ ๋ฐ๋ผ์ Hot / Cold ์ข ๋ฅ๋ก ๋๋ ์ง๊ฒ ๋ฉ๋๋ค.์ด ๋๊ฐ์ง๋ ๊ตฌ๋ ์์ ๊ณผ ๋ฐ์ดํฐ ์์ฑ ๋ฐฉ์์ ๋ฐ๋ผ ์ฐจ์ด๋ฅผ ๊ฐ์ง๊ณ ์์ด์ ๐ค ๊ทธ๋์, ์ด๋ฒ ํฌ์คํ ์์๋ Hot / Cold Observable์ ๊ฐ๋ ๋ถํฐ ๋ด๋ถ ๋์ ๋ฐฉ์๊ณผ ์ฑ๋ฅ์ ์ธ ๋ถ๋ถ ๊ทธ๋ฆฌ๊ณ ์์๊น์ง ํ๋ฒ ๋ด์๋ณด๊ฒ ์ต๋๋ค! Hot ObservableHot Observable์ ๊ตฌ๋ ์๊ฐ ์ถ๊ฐ๋๋๋ผ๋ ๊ธฐ์กด ์คํธ๋ฆผ์ ๊ณต์ ํ๋ Observable์ ๋๋ค.์ฆ, ๋ฐ์ดํฐ ์์ฑ์ด ํน์ ์ด๋ฒคํธ๋ ์ธ๋ถ ํธ๋ฆฌ๊ฑฐ์ ์ํด ์์๋๋ฉฐ, ๊ตฌ๋ ์๊ฐ..