์ ์ฒด ๊ธ
-
Safari Web Extensions ํ๊ตฌํด๋ณด๊ธฐ (with. WWDC 20)MacOS 2023. 4. 6. 10:56
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ๋ถํฐ ๋ช์ฃผ๊ฐ์ ์กฐ๊ธ ํน๋ณํ๊ฑธ ํด๋ณผ๊นํด์. ๋ฐ๋ก ์ฌํ๋ฆฌ ํ์ฅ ํ๋ก๊ทธ๋จ์ ๋ง๋ค์ด๋ณผ๊น ํฉ๋๋ค๐๐ป ๊ทธ๋์ ๋จผ์ WWDC 20์์ Safari Web Extensions์ ๋ํด ๋ฐํ๊ฐ ์์ด์ ์ค๋ ๊ทธ๊ฑฐ๋ถํฐ ํ์ตํด๋ณด๋ คํฉ๋๋ค๐ ์์ macOS ๊ฐ๋ฐ์ด๋ Safari Web Extensions ์ ์ชฝ ๊ฐ๋ฐ์๋ ์ง์์ด ์ ํ ์์ด ์ ๊ฐ ๋๋ผ๊ธฐ์ ๋จผ์ ๋ฐฐ์ฐ๋ฉด ์ข์๊ฒ ์์ฃผ๋ก ํ์ต์ค์ ๋๋ค! ๋ง์ ๋์ ๋ฐ ์ง์ ๋ถํ๋๋ฆฝ๋๋ค๐๐ป ๊ธฐ์กด Safari์ ํ์ฅ ์์ฝ ์์คํ Safari 14 ์ ๋ฒ์ ๋ค์์ ํ์ฅ ์์ฝ ์์คํ ๋ฐฉ์์ ๋ํด ์ค๋ช ํฉ๋๋ค. Content Blockers ๐๐ป iOS / macOS์์๋ง ์๋ํ๋ฉฐ ์ด๋ ์๋์ ์ ์ ๊ฐ์ธ์ ๋ณด๋ณดํธ๋ฅผ ์ํด ๊ณ ์๋์์ต๋๋ค. Share Extensions ๐๐ป..
-
Swift 5.8Swift 2023. 4. 4. 09:27
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์ ์ง๋๋ฌ 30์ผ์ ๋ฆด๋ฆฌ์ฆ๋ Swift 5.8์ ๋ํด ์ด๋ค๊ฒ๋ค์ด ๋ํ๋ฌ๊ณ ๋ณ๊ฒฝ๋์๋์ง ํ์ตํด๋ณด๊ฒ ์ต๋๋ค๐๐ป Swift 5.8 2023๋ 3์ 30์ผ ๊ณต์์ ์ผ๋ก Swift 5.8์ด ์ถ์๋์์ต๋๋ค. ์ด๋ฒ ๋ฆด๋ฆฌ์ฆ์์๋ ํฅํ ๊ธฐ๋ฅ์ ๋จํธ์ ์ฑํ์ ์ง์ํ๋ ๊ธฐ๋ฅ, ํฅ์๋ ๊ฐ๋ฐ์ ํ๊ฒฝ, Swift-DocC, SPM ๋ฐ SwiftSyntax๋ฅผ ํฌํจํ Swift ์์ฝ ์์คํ ์ ํด ๊ฐ์ , ํฅ์๋ Windows ์ง์ ๋ฑ ์ธ์ด ๋ฐ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ์ฃผ์ ์ฌํญ๋ค์ด ์ ๋ฐ์ดํธ ๋์์ต๋๋ค! ์ฃผ๋ก ๋๊ปด์ง๊ฒ์ ์๋ก์ด ๊ธฐ๋ฅ๋ค์ด ๋ง ์์์ ธ ๋์๋ค๊ธฐ ๋ณด๋ค๋ ๊ธฐ์กด Swift์ ์ฌ์ฉ๋๋ ๊ธฐ๋ฅ๋ค์ ๊ฐ์ ์ด ๋ง์๋๊ฒ ๊ฐ์ต๋๋ค. ๋ฆด๋ฆฌ์ฆ๋ Swift 5.8์ ์ฌ์ฉํ๋ ค๋ฉด ๊ฐ์ ๋ ์ ์ ๋ฐ์ดํธ๋ฅผ ์ ๊ณตํ Xcode 14..
-
์ฟ ํค๋ก ์์ ํ๊ฒ HLS m3u8 ์์ ์ ๊ทผํ๊ธฐiOS 2023. 3. 30. 16:14
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ HLS์ m3u8ํ์ผ์ด ๋ญ์ง ๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ์์๋ค์ ์ฟ ํค๋ฅผ ํตํด ์ด๋ป๊ฒ ์์ ํ๊ฒ ๋ฆฌ์์ค์ ์ ๊ทผํ ์ ์๋์ง ํ์ตํด๋ณด๊ณ ๊ตฌํํด๋ณด๊ฒ ์ต๋๋ค๐๐ป ์ฐ์ ์ฟ ํค๋ก ์์ ํ๊ฒ ์์์ ์ ๊ทผํ๊ธฐ์ HLS์ m3u8์ด๋ผ๋ ๊ฐ๋ ์ ๋ํด ์์๋ณด์์ฃ ๐บ๐ป HLS (HTTP Live Streaming) ํ์ค HTTP ๊ธฐ๋ฐ ์คํธ๋ฆฌ๋ฐ ํ๋กํ ์ฝ๋ก HLS๋ผ๊ณ ํํ ๋ถ๋ฆฝ๋๋ค. ์ฆ, ์ฝ๊ฒ ๋งํด ๊ฐ์ฅ ํํ ์ฌ์ฉ๋๋ ๋น๋์ค ์คํธ๋ฆฌ๋ฐ ํ๋กํ ์ฝ์ด๋ผ๊ณ ํ์ฃ . HTTP ํ์ผ ์กฐ๊ฐ๋ค๋ก ๋น๋์ค ํ์ผ์ ๋๋๊ณ ์ด๋ฅผ HTTP ํ๋กํ ์ฝ์ ์ด์ฉํด ์ ์กํฉ๋๋ค. ํด๋ผ์ด์ธํธ ๋จ์์๋ ์ด๋ฐ HTTP ํ์ผ์ ๋ก๋ํ ํ ๋น๋์ค๋ฅผ ์ฌ์์ํฌ ์ ์์ฃ ! ๊ทธ๋ผ ์ HLS๋ฅผ ์ฌ์ฉํ๋๋? ์ด์ ๋ํ ๋ฌผ์์๋ HLS ์ฅ์ ์ค ํ๋๋ก ๋ชจ๋ ์ธํฐ๋ท ..
-
Swift Concurrency - @MainActor ์ฌ์ฉํ๊ธฐConcurrency 2023. 3. 27. 10:47
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ @MainActor๋ฅผ ์ฌ์ฉํด ๋ฉ์ธ ํ์์ UI ์ ๋ฐ์ดํธ๋ฅผ ์๋์ผ๋ก ์ ๋ฌํ๋ ๋ฐฉ๋ฒ์ ๋ํด ํ์ตํด๋ณด๊ฒ ์ต๋๋ค๐๐ป โ๏ธ UI ์ ๋ฐ์ดํธ๋ ๊ผญ ๋ฉ์ธ ์ค๋ ๋์์ ์งํ๋์ด์ผ ํ๋ค ์ฐ์ ๋ค๋ค ์๋ค์ํผ iOS์์ UI ์ ๋ฐ์ดํธ์ ๊ดํ๊ฑด ๋ชจ๋ ๋ฉ์ธ ์ค๋ ๋์์๋ง ์ ๋ฐ์ดํธ ํด์ผํ๋ค๋ ์ ์ ๋๋ค. ๋ง์ฝ ๋ฉ์ธ ์ค๋ ๋๊ฐ ์๋ ํ ๋ฐฑ๊ทธ๋ผ์ด๋ ๊ฐ์ ์ค๋ ๋์์ UI ์ ๋ฐ์ดํธ๋ฅผ ์น๋ค๋ฉด ์๊ธฐ์น ๋ชปํ ๋์์ด ๋ฐ์ํ ์ ์๊ณ ๋ํ ๊ฒฝ๊ณ ๋ฅผ ๋ด๋ณด๋ด์ฃ ! ๋ฐ๋ผ์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋์์ ์ง์ ํน์ ๊ฐ์ ์ ์ผ๋ก ์์ ์ ์ํํ ๋๋ง๋ค UI ๋ ๋๋ง๊ณผ ๊ด๋ จํ ์์ฑ ๋ฐ ๋ฉ์๋์ ์ ๊ทผํ๊ธฐ ์ ์ ๊ผญ ๋ฉ์ธ ์ค๋ ๋๋ก ์ด๋์์ผ์ผ ํฉ๋๋ค. ๋ฌผ๋ก ๋น์ฐํ๊ฑฐ ์๋์ผ? ๋ผ๊ณ ์๊ฐ๋ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ค์ ์์ ์ ํ๋ค๋ณด๋ฉด ๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋์..
-
AVPlayer in SwiftUI (feat. PIP)SwiftUI 2023. 3. 23. 15:15
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ SwiftUI์์ ์ปค์คํ ํ AVPlayer๋ฅผ ํตํด ๋์์ ํ๋ ์ด์ด ๊ตฌ์ถ์ ํด๋ณด๊ฒ ์ต๋๋ค๐ ์ฐ์ ๋ฐ๋๋ผ SwiftUI ํ๊ฒฝ์์ ๊ตฌ์ถ์ ์งํํ์์ต๋๋ค. VideoPlayer์ ๋จ์ iOS 14๋ถํฐ SwiftUI์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ VideoPlayer๋ผ๋๊ฒ์ด ์์ต๋๋ค. ๋ฌผ๋ก ๊ฐ๋จํ ๊ตฌํ์ ๋๋ ํด๋น API๋ฅผ ํตํด ๊ตฌ์ถํ ์ ์์ง๋ง, ์ธ๋ถ์ ์ธ ์กฐ์์ด ํ์ํ ๊ฒฝ์ฐ UIKit์์ ์ ๊ณตํ๋ AVPlayer๋ฅผ ์ง์ ์ปค์คํ ํ๊ฒ ๊ตฌ์ฑํด์ผ ๋ฉ๋๋ค๐ฅน ๊ทธ๋ผ ์ด๋ฒ ํฌ์คํ ์์๋ ํฐ ์ค๋ช ๋ณด๋ค๋ ์ฝ๋๋ก ๊ฐ์ด ๋ณด๊ฒ ์ต๋๋ค! ์์ฐธ! ์ฐ์ ํด๋น ํ๋ก์ ํธ ํ๊ฒ์์ ์๋ ์ค์ ์ ์ผ์ค์ผํฉ๋๋ค. ๐๐ป Signing & Capabilites > Background Modes > Audio, Airplay,..
-
Swift Concurrency - ActorConcurrency 2023. 3. 20. 11:16
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ Actor๊ฐ ๋ฌด์์ธ์ง ๊ฐ๋จํ ์ดํด๋ณด๊ณ Swift Concurrency์์ ์ด๋ป๊ฒ ํ์ฉ๋๋์ง ํ์ตํด๋ณด๊ฒ ์ต๋๋ค๐๐ป ์ฐ์ Swift์์๋ ๋ค๋ค ์์๋ค์ํผ ๋ค์ํ ์ ํ์ ํด๋์ค, ๊ตฌ์กฐ์ฒด, ์ด๊ฑฐ ํ์ ๋ฑ์ผ๋ก ์ ์ํ ์ ์์ต๋๋ค. ๊ฑฐ๊ธฐ๋ค Swift 5.5์์๋ถํฐ๋ Swift Concurrency๊ฐ ๋์ ๋๋ฉด์ actor๋ผ๋ ์๋ก์ด ์ ํ์ด ์ง ํ๊ณ ๋ํ๋ฌ์ด์โญ๏ธ ๊ทธ๋ผ ์ฐ์ actor ํ์ ์ ์ ์ด๋ป๊ฒ ๊ธฐ์กด ์ ํ์ ๊ฐ์ง๊ณ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ์๊น์? ๋ฐ์ดํฐ ๊ฒฝํฉ ๋ฐฉ์ง Swift์ ์๋ก์ด ์ ํ์ธ actor์ ๊ฐ์ฅ ํต์ฌ์ ์ธ ์ฅ์ ์ค ํ๋๋ race condition, ์ฆ ๋ฐ์ดํฐ ๊ฒฝํฉ์ด๋ผ๋๊ฒ์ ๋ฐฉ์งํด์ค ์ ์์ต๋๋ค. ๋ ๊ฐ์ ๊ฐ๋ณ ์ค๋ ๋๊ฐ ๋์์ ๋์ผํ ๋ฐ์ดํฐ์ ์์ธ์คํ๊ฑฐ๋ ๋ณ๊ฒฝํ๋ ค๊ณ ํ ๋..
-
Swift Concurrency - ์ด์ ๋ฒ์ ์์ ๋น๋๊ธฐ ์์คํ API ์ฌ์ฉํ๊ธฐConcurrency 2023. 3. 16. 13:54
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ ๋น๋๊ธฐ ์์คํ API๋ฅผ ์ด์ ๋ฒ์ ์์ ์ฌ์ฉํ ์ ์๋๋ก ๊ตฌํํ๋ ํ์ต์ ํด๋ณด๊ฒ ์ต๋๋ค๐ Swift Concurrency๊ฐ iOS 13๋ถํฐ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๊ฒ ๋์์ด๋ ๊ณ์ ๋๋ฒจ๋กญ์ ๊ฑฐ์ณ ์์ต๋๋ค. (๋น์ฐํ์ง๋ง!?) ๊ทธ๋ ๊ธฐ์ ์ค๋ ์์๋ก ๋ค์ด๋ณผ iOS 15 ์ด์์์ URLSession ๋คํธ์ํน์์ ํธํ๊ฒ async/await๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง ๊ทธ ํ์ ๋ฒ์ ์ธ iOS 13, 14๋์์๋ ์ง์ ์ฌ์ฉํ์ง ๋ชปํ๋ ๋ถํธํจ์ด ์์์ด์๐ญ ์ด์ ํฌ์คํ ์์๋ ์ ๊น ๋์๋๋ฐ Swift 5.5 ๋ถํฐ ๋น๋ก์ ๊ธฐ์กด ์ฝ๋์์๋ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๊ฒ ๋ณํํ๋ค๊ณ ํ์ฃ ? ์ฆ Xcode 13.2๋ถํฐ ํธํ์ด ๋์ง๋ง ๊ทธ ๊ธฐ์ค์ด OS๋ก๋ iOS 15, macOS Monterey์ ๋๋ค. ๊ทธ๋์ ์ค๋ ..
-
Swift Concurrency - Throwing & ๋น๋๊ธฐ Swift ํ๋กํผํฐConcurrency 2023. 3. 14. 08:47
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ ํ๋กํผํฐ์ ๋ํด ์กฐ๊ธ ๋ค๋ค๋ณผ ์์ ์ด์์. ์ ํํ๋ Throwing ๋ฐ ๋น๋๊ธฐ ์์ฑ์ ํ๋กํผํฐ๋ฅผ ํ์ตํด๋ณด๊ฒ ์ต๋๋ค๐๐ป Throwing ํ๋กํผํฐ ์์๋ก ๋๋ฌด ์ต์ํ ์๋์ ๊ฐ์ Result ํ์ ์ ๋ฐํํ๋ throws ๋ฉ์๋๊ฐ ์๋ค๊ณ ์๊ฐํด๋ณผ๊ป์. func handleLoginResult(_ result: Result) throws { let user = try result.get() ... } ์ฌ๊ธฐ์ get ๋ฉ์๋๋ ์ค์ ๋ก ์ด๋ค ์ข ๋ฅ์ ์์ ๋ ์ํํ์ง ์๊ณ try ํค์๋๋ฅผ ์ฌ์ฉํด Result ๊ฐ์ ๋ง๋ค ์ ์๊ธฐ์ ํ๋กํผํฐ๋ก ์ ์ธํ ์ ์์ด์. ์ ๊ทธ๋ผ ์๋์ ๊ฐ์ด ๋ง๋ค ์ ์๊ฒ ์ฃ ? extension Result { var value: Success { get thr..