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

๐ŸŽ iOS/๐Ÿ“– ๊ฐœ๋…5

[Network] TLS/SSL ์•”ํ˜ธํ™” ํ†ต์‹  ํ”„๋กœํ† ์ฝœSSL(Secure Socket Layer) / TLS(Transport Layer Security)๋Š” ๋ชจ๋‘ ์›น ๋ธŒ๋ผ์šฐ์ €์™€ ์›น ์„œ๋ฒ„ ๊ฐ„ ํ†ต์‹ ์„ ์•”ํ˜ธํ™”ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค. SSL์€ ์›น ๋ธŒ๋ผ์šฐ์ € ๊ฐœ๋ฐœ์‚ฌ์—์„œ ๋งŒ๋“  ํ”„๋กœํ† ์ฝœ๋กœ ์ธํ„ฐ๋„ท ๊ธฐ์ˆ  ํ‘œ์ค€ํ™” ๋‹จ์ฒด์ธ IETF๊ฐ€ TLS๋กœ ๋‹ค์‹œ ์„ค๊ณ„ํ•˜์—ฌ ์ธํ„ฐ๋„ท ํ‘œ์ค€์œผ๋กœ ์‚ผ์•˜๋‹ค.๐Ÿ“– ์žฅ์ ๊ธฐ๋ฐ€์„ฑ(์•”ํ˜ธํ™”) : ์„œ๋ฒ„์™€ ์ฃผ๊ณ  ๋ฐ›๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์Šค๋‹ˆํ•‘ ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•œ๋‹ค.๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ : ํŒจํ‚ท ์ „๋‹ฌ ๊ณผ์ •์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ œ 3์ž์— ์˜ํ•ด์„œ ์•…์˜๋กœ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•œ๋‹ค.์„œ๋ฒ„ ์ธ์ฆ : ์„œ๋ฒ„๊ฐ€ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋ฒ„๋ผ๋Š” ๊ฒƒ์„ ํ™•์ธํ•œ๋‹ค.๐Ÿ“– ์•”ํ˜ธํ™”TLS๋Š” ๋ณด์•ˆ๊ณผ ์„ฑ๋Šฅ์ƒ์˜ ์ด์œ ๋กœ ๋‘ ๊ฐ€์ง€ ์•”ํ˜ธํ™” ๋ฐฉ๋ฒ•์„ ํ˜ผ์šฉํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค. ์•”ํ˜ธํ™”๋ฅผ ์œ„ํ•ด์„œ๋Š” ํ‚ค๊ฐ€ ํ•„์š”ํ•˜๋‹ค.์ด๋•Œ ์•”ํ˜ธํ™”์™€ ๋ณตํ˜ธํ™”์— ์‚ฌ์šฉํ•˜๋Š” ํ‚ค๋Š”.. 2024. 10. 28.
[ํŒจ๋Ÿฌ๋‹ค์ž„] ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์•ˆ๋…•ํ•˜์‹ญ๋‹ˆ๊นŒ, ๋ฏผํŠธ์ž…๋‹ˆ๋‹ค. ๐Ÿ˜ˆ WWDC Swift Macro๋ฅผ ๋ณด๋‹ค ๋ณด๋‹ˆ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํŠน์ง•์„ ๋งŽ์ด ์‚ด๋ฆฐ ๊ฒƒ ๊ฐ™์•„์„œ ํ•œ ๋ฒˆ ์ •๋ฆฌํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค.์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ํŒจ๋Ÿฌ๋‹ค์ž„์—๋Š” ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ, ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐˆ์€ ํ”„๋กœ๊ทธ๋žจ์˜ ์ƒํƒœ ๋ณ€๊ฒฝ๊ณผ ๊ฐ€๋ณ€ ๋ฐ์ดํ„ฐ ์‚ฌ์šฉ์„ ์ตœ์†Œํ™”ํ•˜๊ณ , ์ˆœ์ˆ˜ ํ•จ์ˆ˜์™€ ๋ถˆ๋ณ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ•์กฐํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๋Š” ์ ‘๊ทผ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ํ•œ ๋งˆ๋””๋กœ ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ๊ฐ€ ์—†๋Š” ๊ธฐ๋Šฅ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์— ์ง‘์ค‘ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ด๊ณ , ๋ถ€์ž‘์šฉ(Side Effect)์„ ์ค„์ด๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํŠน์ง•๋“ค์— ๋Œ€ํ•ด์„œ ์ข€ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ด…์‹œ๋‹ค.Random ํ•จ์ˆ˜๋Š” ์ ˆ๋Œ€ ์ˆœ์ˆ˜ํ•  ์ˆ˜ ์—†๋‹ค.์ˆœ์ˆ˜ ํ•จ์ˆ˜๋ž€ ๋ฌด์—‡์ผ๊นŒ์š”? ๋™์ผํ•œ Input์—๋Š” ์–ธ์ œ๋‚˜ .. 2024. 10. 23.
[iOS]Unit Test์˜ ์‚ฌ์šฉ ์ด๋ฒˆ ๊ณผ์ œ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๊ฐ€์žฅ ํ•„์š”์„ฑ์„ ์ ˆ์‹คํžˆ ๋Š๊ผˆ๋˜ ๊ฒƒ์ด ๋ฐ”๋กœ ์ด test์˜€๋‹ค. ์—ฌ๊ธฐ๊นŒ์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์„, ์•ˆ์ „ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ํ™•์‹ ํ•˜๊ณ  ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์งœ๊ณ  ์‹ถ์€ ๊ทธ ๋งˆ์Œ..!! ๊ทธ๋Ÿฐ๋ฐ ๋งˆ์นจ ํ™œ๋™ํ•™์Šต์—์„œ Unit Test์™€ TDD๊ฐ€ ๋‚˜์™”๊ธธ๋ž˜, ์ •๋ฆฌํ•ด๋ณด์•˜๋‹ค. Unit Test Unit Test๋Š” ๋ฉ”์„œ๋“œ๋ณ„ ๊ธฐ๋Šฅ์ด ์˜๋„ํ•œ ๋Œ€๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ๋Š”์ง€ ๊ฒ€์ฆํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์†Œ์Šค ์ฝ”๋“œ์˜ ํŠน์ • ๋ชจ๋“ˆ์ด ์˜๋„๋œ๋Œ€๋กœ ์ •ํ™•ํžˆ ์ž‘๋™ํ•˜๋Š”์ง€ ๊ฒ€์ฆํ•˜๋Š” ์ ˆ์ฐจ๋ฅผ ํ†ตํ•ด ์ž‘์„ฑํ•œ ์ฝ”๋“œ์˜ ์•ˆ์ •์„ฑ์„ ๋ถ€์—ฌํ•œ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์–ด๋–ค Test๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ• ๊นŒ? FIRST ์›์น™ Fast ๋น ๋ฅด๊ฒŒ Independent / Isolated ๋…๋ฆฝ์ ์œผ๋กœ Repeatable ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ Self-Validating ์Šค์Šค๋กœ ๊ฒ€์ฆํ•˜๋Š” Timely ์ ์‹œ์— F. ํ…Œ์ŠคํŠธ๋ผ๋Š” ๋ชฉ์ ์— ๋งž.. 2024. 2. 5.
[๋””์ž์ธ ํŒจํ„ด]Delegate Pattern delegate pattern์€ ์ฃผ๋กœ ํ™”๋ฉด์˜ ์ „ํ™˜์—์„œ ์‚ฌ์šฉ๋œ๋‹ค. ํ™”๋ฉด์€ ์–ด๋–ป๊ฒŒ ์ „ํ™˜๋ ๊นŒ? 1๋ฒˆ ํ™”๋ฉด๊ณผ 2๋ฒˆ ํ™”๋ฉด์ด ์žˆ๋‹ค. ๋‹ค์‹œ ๋งํ•ด, 1๋ฒˆ view controller์™€ 2๋ฒˆ view controller๊ฐ€ ์žˆ๋‹ค. 1๋ฒˆ view controller์—์„œ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ 2๋ฒˆ view controller๋กœ ํ™”๋ฉด์ด ๋„˜์–ด๊ฐˆ ๋•Œ, 1๋ฒˆ ํ™”๋ฉด์€ ๋‹จ์ˆœํžˆ ์‚ฌ๋ผ์ง€๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. 2๋ฒˆ ํ™”๋ฉด์ด 1๋ฒˆ ํ™”๋ฉด์˜ ์œ„์— ์Œ“์ด๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋•Œ 2๋ฒˆ ํ™”๋ฉด์ด ์ƒ๊ธฐ๋ฉด์„œ 2๋ฒˆ view conroller๋Š” ์ดˆ๊ธฐํ™”๋˜์–ด ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์œผ๋กœ 1๋ฒˆ view controller๋กœ๋ถ€ํ„ฐ ์ •๋ณด๋“ค์„ ๋ฐ›์•„์˜ค๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋งŒ์ผ 2๋ฒˆ ํ™”๋ฉด์—์„œ ๋’ค๋กœ๊ฐ€๊ธฐ ๋ฒ„ํŠผ์œผ๋กœ ๋‹ค์‹œ 1๋ฒˆ ํ™”๋ฉด์œผ๋กœ ๋Œ์•„๊ฐ€๊ฒŒ ๋˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ? 1๋ฒˆ ํ™”๋ฉด์ด ๋‚˜์˜ค๋ฉด์„œ ์ƒˆ๋กญ๊ฒŒ 1๋ฒˆ view contro.. 2024. 1. 27.
[๋””์ž์ธ ํŒจํ„ด]Observer Pattern ์˜ท๊ฐ€๊ฒŒ์—์„œ ์ผํ•  ๋•Œ ์žˆ์—ˆ๋˜ ์ผ์ด๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ฌด์ž‘์œ„์ ์œผ๋กœ ํ• ์ธ ํ–‰์‚ฌ๋ฅผ ์—ด์—ˆ๋Š”๋ฐ ํƒ€์ด๋ฐ์„ ๋†“์นœ ์†๋‹˜๋“ค์ด ํ•œ๊ฒฐ๊ฐ™์ด ํˆฌ๋œ๊ฑฐ๋ฆฌ๊ณ ๋Š” ํ–ˆ๋‹ค. ํ• ์ธ ํ•  ๋•Œ ๋ฌธ์ž ์ข€ ์ฃผ๋ฉด ์ข‹๊ฒ ๋‹ค๊ณ . ๋งค๋ฒˆ ๋ฉฐ์น  ์ „๊นŒ์ง€ ํ• ์ธ ํ–ˆ๋‹ค๋Š” ๊ฑธ ์•Œ๊ณ  ๋‚˜๋ฉด ์†์ƒํ•˜๋‹ค๊ณ . ์˜ต์ €๋ฒ„ ํŒจํ„ด์€ ์ด๋Ÿฌํ•œ ์†๋‹˜๋“ค์„ ์œ„ํ•œ ๋ฌธ์ž ๋ฐœ์†ก๊ณผ ๊ฐ™๋‹ค. “๊ด€์ฐฐ์ž”๋ผ๋Š” ๋‹จ์–ด๋ฅผ ๋ณด๋ฉด ํ•ด๋‹น ์ด๋ฆ„ํ‘œ๋ฅผ ๋‹ฌ๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๋Š” ์–ด๋– ํ•œ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•  ๊ฒƒ ๊ฐ™์€๊ฐ€? ๋ˆ„๊ตฐ๊ฐ€๋ฅผ ๋ฉด๋ฐ€ํžˆ ์ง€์ผœ๋ณด๋Š” ์—ญํ• ์€ ์•„๋‹๊นŒ? ์˜ต์ €๋ฒ„ ํŒจํ„ด์—์„œ๋Š” ์ด ์˜ต์ €๋ฒ„์˜ ์˜๋ฏธ๊ฐ€ ์กฐ๊ธˆ ๋‹ค๋ฅด๋‹ค. ๋‹จ์ˆœํžˆ ์ง€์ผœ๋ณธ๋‹ค, ๋ณด๋‹ค๋Š” `์—ฐ๋ฝ์„ ๊ธฐ๋‹ค๋ฆฐ๋‹ค`๋ผ๋Š” ๊ฒƒ์ด ๋” ์˜ณ์€ ํ‘œํ˜„์ผ ๊ฒƒ์ด๋‹ค. ๋งˆ์น˜ ์˜ท๊ฐ€๊ฒŒ ํ• ์ธ ํ–‰์‚ฌ ๋ฌธ์ž๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์†๋‹˜๊ณผ ๊ฐ™๋‹ค. ์˜ท๊ฐ€๊ฒŒ๋ฅผ ์ฃผ์‹œํ•˜๊ณ , ๊ด€์ฐฐํ•˜์ง€๋งŒ ๊ฒฐ๊ตญ ์˜ท๊ฐ€๊ฒŒ์—์„œ ๋ฌธ์ž๋ฅผ ๋ณด๋‚ด์ฃผ์–ด์•ผ ์†๋‹˜์€ ํ–‰๋™์„ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ท๊ฐ€๊ฒŒ๋ฅผ ๋“ค๋ฆด์ง€, .. 2024. 1. 27.