์ ์ฒด ๊ธ
-
Mermaid๋ก ๋ค์ด์ด๊ทธ๋จ ํธํ๊ฒ ๊ทธ๋ฆฌ๊ธฐEtc 2025. 3. 22. 12:59
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ ๊ฐ๋ฐ๊ณผ๋ ์กฐ๊ธ ๋ณ๋์ง๋ง, ํธํ ํด์ด ์์ด ์๊ฐํด๋ณผ๊น ํฉ๋๋ค ๐Mermaid๋ผ๋๊ฑธ๋ก ๋ค์ด์ด๊ทธ๋จ์ ํธ๋ฆฌํ๊ฒ ๊ทธ๋ฆด ์ ์์ด์ ๐๐ป Mermaid?Mermaid๋ ํ ์คํธ ๊ธฐ๋ฐ์ผ๋ก ๋ค์ํ ๋ค์ด์ด๊ทธ๋จ์ ์์ฑํ ์ ์๋๋ก ๋์์ฃผ๋ ์์ฃผ ํธ๋ฆฌํ ํด์ ๋๋ค!๋งํฌ๋ค์ด ๋ฌธ์ ๋ด์์ ๋ค์ด์ด๊ทธ๋จ์ ์ฝ๊ฒ ์ฝ์ ํ ์ ์๊ณ , Github, notion ๋ฑ ๋ค์ํ ํ๋ซํผ์์๋ ์ง์์ ํด์ค๋๋ค. ํนํ ์ ๋ LucidChart์ Confluence๋ฅผ ๋ง์ด ์ฌ์ฉํ๊ณ ์๋๋ฐ ์์ฃผ ์ ๊ฒฉ์ ๋๋ค. Mermaid๋ JavaScript๋ก ๊ตฌํ๋์ด ์์ด์ ๋ณ๋์ ์ํํธ์จ์ด ์ค์น ์์ด๋ ๋ธ๋ผ์ฐ์ ํ๊ฒฝ์์ ์์ฝ๊ฒ ์ฌ์ฉ์ด ๊ฐ๋ฅํด์.ํนํ ๊ฐ๋ฐ์๊ฐ ์ฝ๋์ฒ๋ผ ์น๋ฉด์ ์ฝ๊ณ ๋น ๋ฅด๊ณ ๊ทธ๋ฆฌ๊ณ ๋ ํจ์จ์ ์ผ๋ก ๋ค์ด์ด๊ทธ๋จ์ ์..
-
MarqueeSwiftUI 2025. 3. 18. 19:00
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ Marquee์ ๋ํด ์์๋ณด๊ณ ๊ฐ๋จํ SwiftUI๋ก ๊ตฌํํด๋ณด๋ ค๊ณ ํฉ๋๋ค. ๐๐ป Marquee?Marquee๋ ํ ์คํธ๊ฐ ์ข์ฐ ํน์ ์ํ ํํ๋ก ์๋์ผ๋ก ์ด๋ํ๋ UI ์์์ ๋๋ค.์ผ๋ฐ์ ์ธ ์ฐ์์ผ๋ก๋ ๋ง์ด๋ค ๋ณด์ จ๋ฏ, ๊ณต์ง์ฌํญ์ด๋ ์ฃผ์ ์์ธ์ ๊ฐ์ ํ์ ๋ฑ์์ ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค!์ด๋ค๊ฑด์ง๋ ์๋ ์ค์ ๊ตฌํํ๋ฉด์ ๋ ์์ธํ ๋ณผ๊ป์ใ ใ UIKit์์๋ UIView.animate๋ฅผ ํ์ฉํด Marquee ํจ๊ณผ๋ฅผ ๊ตฌํํด๋ณผ ์ ์์ฃ .๊ทธ๋ฐ๋ฐ ์ด๋ฒ ํฌ์คํ ์ SwiftUI์ ์ด์ ์ด๋ผ GeometryReader, Animation ๋ฑ์ ์กฐํฉํด ํ๋ฒ Marquee ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์ด๋ณผ๊น ํฉ๋๋ค. ๊ทธ๋ผ ์์ํด๋ณผ๊น์?Marquee in SwiftUI์ฝ๋๋ถํฐ ๋ณด์์ฃ ! struct Content..
-
iOS์์ ์๋ฒ ๊ณผ๋ถํ ๊ฐ์ง ๋ฐ API ํธ์ถ ์ต์ ํiOS 2025. 3. 15. 09:51
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ iOS์์ ์๋ฒ ๊ณผ๋ถํ๋ฅผ ๊ฐ์งํ๊ณ ์ด์ API ํธ์ถ์ ์ต์ ํ ํ๋ ๋ช๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ํด ํ๋ฒ ๋ค๋ค๋ณผ๊น ํฉ๋๋ค ๐๐ปIntroiOS๋ฟ ์๋๋ผ ๋ชจ๋ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์์๋ ์๋ฒ์ ์ํํ ํต์ ์ด ํ์์ ์ด์ฃ .ํ์ง๋ง ๊ณผ๋ํ API ํธ์ถ์ ์๋ฒ์ ๋ถ๋ด์ ์ฃผ๊ธฐ์ ์ฑ๋ฅ ์ ํ, ํธ๋ํฝ ์ด๊ณผ, ๋น์ฉ ์ฆ๊ฐ ๋ฑ์ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํ ์๊ฐ ์์ด์.๋ฐ๋ผ์ ์๋ฒ์ ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ , ๊ณผ๋ถํ ์ฌ๋ถ๋ฅผ ํ๋จํด ์ ์ ํ API ํธ์ถ์ ์กฐ์ ํ๋ ์ ๋ต์ด ํ์์ ์ ๋๋ค. Criteria for determining server overload์๋ฒ ๊ณผ๋ถํ๋ผ๋๊ฑธ ํ๋จํ๋ ๊ธฐ์ค์ ๋ํด ํ๋ฒ ์๊ธฐํด๋ณผ๊น ํฉ๋๋ค.์ฐ๋ฆฌ๋ ์๋ฒ๊ฐ ๋๋ ค์ก๋ค? ๋ผ๋๊ฑธ ๊ฐ์ผ๋ก ํ๋จํ๊ธฐ๋ณด๋ค ๋ฐ์ดํฐ๋ฅผ ํตํด ์ธก์ ํด์ผ ํ์ฃ . ์ด๋ค ๋ฐฉ๋ฒ๋ค์ด ์๋์ง ๋ณผ..
-
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 ์ฌ์ฉ ์ ๋ฐ์์ํค๋ ์ต์ ๋์ ์ฒ๋ฆฌํ๋๊ฒ์ ๋ํด ๋์ผํ๊ฒ ์ฒ๋ฆฌ๋ฅผ ..