๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ

(105)
[iOS/Swift] ์œ ๋‹ˆ๋ฒ„์…œ ๋งํฌ(Universal Link) ์ ์šฉํ•˜๊ธฐ, ๋™์  ๋งํฌ ์ˆ˜์‹ ํ•˜๊ธฐ ์œ ๋‹ˆ๋ฒ„์…œ ๋งํฌ(Univeral Link) ๋ž€? iOS์—์„œ ๋”ฅ๋งํฌ*๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ ์›น์—์„œ ์•ฑ์„ ํ˜ธ์ถœํ•˜๋Š” ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•  ๋•Œ ์‚ฌ์šฉ! *๋”ฅ๋งํฌ(Deep Link) : ํŠน์ • ์ฃผ์†Œ๋‚˜ ๊ฐ’์„ ์ž…๋ ฅํ•˜๋ฉด ์•ฑ์ด ์‹คํ–‰๋˜๊ฑฐ๋‚˜ ์•ฑ ๋‚ด ํŠน์ • ํŽ˜์ด์ง€์— ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋งํฌ URI ์Šคํ‚ด ๋ฐฉ์‹ : ์•ฑ์— URI ์Šคํ‚ด(scheme) ๊ฐ’์„ ๋“ฑ๋กํ•˜์—ฌ ๋”ฅ๋งํฌ ์‚ฌ์šฉ ์•ฑ๋งํฌ(App Link) : Android ์ œ๊ณต - ๋„๋ฉ”์ธ ์ฃผ์†Œ๋ฅผ ์ด์šฉํ•œ ๋”ฅ๋งํฌ ์‚ฌ์šฉ ์œ ๋‹ˆ๋ฒ„์…œ ๋งํฌ (Universal Link) : iOS ์ œ๊ณต - ๋„๋ฉ”์ธ ์ฃผ์†Œ๋ฅผ ์ด์šฉํ•œ ๋”ฅ๋งํฌ ์‚ฌ์šฉ *Dynamic Link : ํŒŒ์ด์–ด๋ฒ ์ด์Šค์—์„œ ์ œ๊ณตํ•˜๋Š” ๋”ฅ๋งํฌ์˜ ์ผ์ข… ์œ ๋‹ˆ๋ฒ„์…œ ๋งํฌ๋ฅผ ์ด์šฉํ•˜๋ฉด, ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉ์ž๊ฐ€ ๋งํฌ ์ ‘๊ทผ ์‹œ, ์•ฑ์ด ์„ค์น˜๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ ์•ฑ์œผ๋กœ ์ด๋™ํ•˜๊ณ  ์—†์œผ..
[GitHub] ๊นƒ ํ† ํฐ ์ธ์ฆํ•˜๊ธฐ - Github ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ ์—†์ด pull/push ํ•˜๊ธฐ, Git requested URL returned Error 403 ํ•ด๊ฒฐ๋ฐฉ๋ฒ•, ์†Œ์ŠคํŠธ๋ฆฌ push ์˜ค๋ฅ˜ ํ•ด๊ฒฐ ์ด๋ฒˆ ์›์ธ์€ 21๋…„ 8์›” 13์ผ ์ดํ›„, 'ํŒจ์Šค์›Œ๋“œ ๊ธฐ๋ฐ˜ ์ธ์ฆ'์„ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ! ์ฆ‰, Git CLI๋‚˜ GitHub์— ์ ‘๊ทผํ•˜๋Š” ๊ธฐํƒ€ ์„œ๋น„์Šค ๋“ฑ์—์„œ ๋”๋Š” ํŒจ์Šค์›Œ๋“œ๋กœ ์ธ์ฆ์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋œป์œผ๋กœ ํŒจ์Šค์›Œ๋“œ๋ฅผ ํ†ตํ•œ ์ธ์ฆ์ด ๋งŒ๋ฃŒ๋˜๋ฉด Personal Access Token ๋˜๋Š” SSH Key๋ฅผ ํ†ตํ•ด์„œ ์ธ์ฆ์„ ์ง„ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ : remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-..
[OS] ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ (Memory Structure) - code, data, stack, heap ์ปดํ“จํ„ฐ์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. ๋จผ์ €, ์•„๋ž˜ ๊ทธ๋ฆผ์€ ํ”„๋กœ๊ทธ๋žจ์˜ ์ •๋ณด๋ฅผ ์ฝ์–ด ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋˜๋Š” ๊ณผ์ •์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰ํ•˜๊ฒŒ ๋˜๋ฉด OS๋Š” ๋ฉ”๋ชจ๋ฆฌ(RAM)์— ๊ณต๊ฐ„์„ ํ• ๋‹นํ•ด์ค๋‹ˆ๋‹ค. ์ด ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„(RAM)์€ ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด, ํฌ๊ฒŒ ์ฝ”๋“œ(Code), ๋ฐ์ดํ„ฐ(Data), ์Šคํƒ(Stack), ํž™(Heap) ์˜์—ญ์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. (๋งˆ์Œ์— ๋“œ๋Š” ์ด๋ฏธ์ง€๊ฐ€ ์—†์–ด์„œ ์ง์ ‘ ๋งŒ๋“ค๋‹ค....!!๐Ÿ˜–) ๊ทธ๋Ÿผ ๊ฐ ์˜์—ญ์ด ์–ด๋–ค ์—ญํ• ์„ ํ•˜๋Š”์ง€ ์•Œ์•„๋ด…์‹œ๋‹ค :) โ–ถ ์ฝ”๋“œ(Code) ์˜์—ญ ์šฐ๋ฆฌ๊ฐ€ ์ž‘์„ฑํ•œ ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์ €์žฅ๋˜๋Š” ์˜์—ญ์œผ๋กœ ๊ธฐ๊ณ„์–ด ํ˜•ํƒœ(0,1)๋กœ ์ €์žฅ ์‹คํ–‰ ํŒŒ์ผ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ช…๋ น์–ด๋“ค์ด ์˜ฌ๋ผ๊ฐ€๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์œผ๋กœ ํ•จ์ˆ˜, ์ œ์–ด๋ฌธ, ์ƒ์ˆ˜ ๋“ฑ์ด ์—ฌ๊ธฐ์— ์ง€์ •๋œ๋‹ค. CPU๋Š” ์ฝ”๋“œ ์˜์—ญ์— ์ €์žฅ๋œ ๋ช…๋ น์–ด๋“ค์„ ํ•˜๋‚˜์”ฉ ๊ฐ€์ ธ๊ฐ€์„œ ์‹คํ–‰ํ•œ๋‹ค. โ–ถ ๋ฐ์ดํ„ฐ(Da..
[Error, Xcode] iPhone is busy. Preparing debugger support for ~'s iPhone ํ•ด๊ฒฐํ•˜๊ธฐ ERROR - iPhone is busy. Preparing debugger support for ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ํ•ด๊ฒฐํ•˜๊ธฐ ํฐ์œผ๋กœ ๋นŒ๋“œ๋ฅผ ์‹œ๋„ํ•˜๋˜ ์ค‘ ๊ฐ‘์ž๊ธฐ ๋œฌ ์—๋Ÿฌ!! ๋นŒ๋“œ๋Š” Success์ธ๋ฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ๋กœ ์‹คํ–‰์ด ์•ˆ ๋˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด๋ณด์ž......!!!!!!!!! Solution Xcode > Window > Devices and Simulators ํ•˜๋‹จ์˜ + ํด๋ฆญ! Next ํด๋ฆญ! Done ํด๋ฆญ! ๊ทธ๋ฆฌ๋„ ๋‹ค์‹œ ๋นŒ๋“œํ•˜๋ฉด ํ•ธ๋“œํฐ์—์„œ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค! ์œ„ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์œผ๋กœ ์•ˆ๋˜๋Š” ๊ฒฝ์šฐ, ์•„์ดํฐ ์žฌ์‹œ๋™ํ•˜๋ฉด ๋˜ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค!๐Ÿ˜Š
[iOS] ํ‚คํŒจ๋“œ๊ฐ€ ํ™œ์„ฑํ™”๋  ๋•Œ TextField ๊ฐ€๋ฆฌ๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐํ•˜๊ธฐ, ํ‚คํŒจ๋“œ ํ•ธ๋“ค๋งํ•˜๊ธฐ ํ‚คํŒจ๋“œ๊ฐ€ ํ™œ์„ฑํ™” ๋˜์–ด ์˜ฌ๋ผ์™”์„ ๋•Œ TextField๊ฐ€ ๊ฐ€๋ ค์ง€๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ž ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•๋“ค์ด ์žˆ์ง€๋งŒ, NotificationCenter์„ ์‚ฌ์šฉํ•ด์„œ ํ•ด๊ฒฐํ•ด๋ณด์ž:) ์›ํ•˜๋Š” ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. PROCESS TextField์„ ํƒ์‹œ ํ‚คํŒจ๋“œ๊ฐ€ ์˜ฌ๋ผ์˜ด (*์•ˆ์˜ฌ๋ผ์˜ค๋Š” ๊ฒฝ์šฐ : Cmd + Shift + k) -> NotificationCenter๋ฅผ ํ†ตํ•ด ํ‚คํŒจ๋“œ๊ฐ€ ์˜ฌ๋ผ์˜ด์„ ์•ฑ์ด ์ธ์ง€ -> ๊ฐ€๋ ค์ง„ TextField๊ฐ€ ๋ณด์ด๋„๋ก ํ™”๋ฉด์ด ์˜ฌ๋ผ๊ฐ -> TextField์— ๊ฐ’ ์ž…๋ ฅ ํ›„ ํ‚คํŒจ๋“œ ๋‚ด๋ฆผ (ํ™”๋ฉด ํ„ฐ์น˜ or Done ํด๋ฆญ) -> ํ‚คํŒจ๋“œ๊ฐ€ ๋‚ด๋ ค๊ฐ์„ NotificationCenter๋ฅผ ํ†ตํ•ด ์•ฑ์ด ์ธ์ง€ -> ํ™”๋ฉด ์›์ƒ๋ณต๊ท€ 1. NotificationCenter - Observer ๋“ฑ๋ก ํ‚คํŒจ๋“œ๊ฐ€ ํ™œ์„ฑํ™” ๋˜๋Š”์ง€ ์•ˆ๋˜๋Š”์ง€ ํƒ์ง€ํ•  ..
[iOS] ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ค€๋น„ํ•˜๊ธฐ - Command Line Tool, LeadLine, Split, Components, map, print ์‚ฌ์šฉํ•˜๊ธฐ Swift๋กœ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์ค€๋น„, ์„ธํŒ…ํ•˜๊ธฐ Swift ์ž…๋ ฅํ•˜๊ธฐ Swift๋กœ ์ฝ”ํ…Œ๋ฅผ ์ค€๋น„ํ•˜๋ ค๊ณ  ํ•˜๋‹ˆ! ์–ด๋–ป๊ฒŒ ์ž…๋ ฅ์„ ๋ฐ›์•„์„œ ์ฒ˜๋ฆฌํ•˜์ง€...? Swift๋กœ ์ž…๋ ฅ์„ ๋ฐ›๊ธฐ ์œ„ํ•ด์„  project ์ƒ์„ฑ์‹œ, playground, app์ด ์•„๋‹Œ ์ƒˆ๋กœ์šด ํƒฌํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค! ์ฝ”ํ…Œ๋ฅผ ์œ„ํ•œ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ๋ฒ•, Swift์—์„œ ์ž…์ถœ๋ ฅ๋ฐ›๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค! ๐Ÿ‘ป 1. ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค๊ธฐ ๋จผ์ €, playground๋Š” sandbox์ด๊ธฐ ๋•Œ๋ฌธ์— commandline input์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค! (*์ƒŒ๋“œ๋ฐ•์Šค(sandbox) : ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ๋“ค์–ด์˜จ ํ”„๋กœ๊ทธ๋žจ์ด ๋ณดํ˜ธ๋œ ์˜์—ญ์—์„œ ๋™์ž‘ํ•ด ์‹œ์Šคํ…œ์ด ๋ถ€์ •ํ•˜๊ฒŒ ์กฐ์ž‘๋˜๋Š” ๊ฒƒ์„ ๋ง‰๋Š” ๋ณด์•ˆ ํ˜•ํƒœ) ๋”ฐ๋ผ์„œ, project๋ฅผ ์ƒ์„ฑ ์‹œ ํ…œํ”Œ๋ฆฟ์„ Command Line Tool๋กœ ์„ ํƒํ•˜์—ฌ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค! xc..
[Error, Xcode] Multiple commands produce Error ํ•ด๊ฒฐํ•˜๊ธฐ Multiple commands produce Error ํ•ด๊ฒฐํ•ด ๋ณด์ž ์œ„ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด Multiple commands produce Error ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.๐Ÿ˜Š ์ €์˜ ๊ฒฝ์šฐ ๋ณดํ†ต ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํฌํ•จํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•˜์„ ๋•Œ ๋งŒ๋‚ฌ๋˜ ์—๋Ÿฌ์ž…๋‹ˆ๋‹ค. ์ค‘๋ณต๋œ ํŒŒ์ผ๋ช…์ด ์žˆ๊ฑฐ๋‚˜, ์ค‘๋ณต๋œ ํƒ€๊ฒŸ์ด ์žˆ์–ด์„œ ์ถฉ๋Œ๋กœ ์ธํ•œ ์—๋Ÿฌ์ž…๋‹ˆ๋‹ค.๐Ÿ‘ป ์—๋Ÿฌ ๋‚ด์šฉ์ด ์นœ์ ˆํ•˜๊ฒŒ ๋ช…์‹œ๋˜์–ด ์žˆ์–ด์„œ ๊ฐ„๋‹จํ•ด ๋ณด์ด์ง€๋งŒ ์•ˆ๋˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์–ด์„œ ์ €๋Š” ์ค‘๋ณต๋œ ํŒŒ์ผ๊ณผ ์ค‘๋ณต๋œ ํƒ€๊ฒŸ 2๊ฐ€์ง€๋ฅผ ์ฒดํฌํ•˜์—ฌ ํ•ด๊ฒฐํ•˜์˜€์–ด์š”. Solution1. ํ•ด๋‹น ๋กœ๊ทธ์— ๋ช…์‹œ๋œ ๊ฒฝ๋กœ์˜ ํŒŒ์ผ ์‚ญ์ œ ํŒŒ์ผ์ด ์ค‘๋ณต๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜์—ฌ ์ค‘๋ณต๋œ ํŒŒ์ผ์„ ์‚ญ์ œํ•ด์ค๋‹ˆ๋‹ค. Project > Targets > Build Phases > Copy Bundle Resources ํ•ด๋‹น ..
[Swift] String(describing:) ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ ํด๋ž˜์Šค ์ด๋ฆ„ ์–ป๊ธฐ String(describing:) ๋ฉ”์†Œ๋“œ ์‚ฌ์šฉํ•˜์—ฌ float String, ํ˜„์žฌ ํด๋ž˜์Šค ์ด๋ฆ„ ๋ฐ›๊ธฐ Declaration init(describing instance: Subject) Swift์—์„œ ๊ฐ’์œผ๋กœ๋ถ€ํ„ฐ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์€ String( )์œผ๋กœ ํŠน์ • ๊ฐ’์„ ๊ฐ์‹ธ์„œ ๋ฌธ์ž์—ด(String)๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. Swift์˜ ๊ธฐ๋ณธ ํƒ€์ž…๋“ค์€ ๋ชจ๋‘ ์ด ๋ณ€ํ™˜์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, (์‚ฌ์‹ค ์ธํ„ฐํด๋ ˆ์ด์…˜์ด ๊ฐ€๋Šฅํ•œ ํƒ€์ž…๋“ค์€ ๋‹ค ๋œ๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.) ๊ทธ ์™ธ์— ์ด๋ฅผ ํ†ตํ•œ ์ง๋ณ€ํ™˜์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ํƒ€์ž…๋“ค์€ String(describing:)์„ ์ด์šฉํ•ด์„œ ๋ณ€ํ™˜ํ•˜๋ฉด ๋œ๋‹ค. Float -> String let stringValue = String(describing: floatValue) ๋ฐ˜๋Œ€๋กœ String -> Float let floatValue = CGFl..

๋ฐ˜์‘ํ˜•