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

๐ŸŽ iOS

(71)
[iOS, Network] Wireshark๋กœ ๋„คํŠธ์›Œํฌ ํŒจํ‚ท ๋ถ„์„ํ•˜๊ธฐ(3) - Wireshark๋กœ SSL Handshake(TLS Handshake) ๊ณผ์ • ๋ถ„์„ SSL Handshake(TLS Handshake) SSL handshake๋Š” HTTP์— ์ ‘์†ํ•˜๋Š” ๊ณผ์ •์œผ๋กœ 3 way handshake ๊ฐ€ ๋๋‚œ ๋’ค์— ์ด๋ฃจ์–ด์ง€๋Š” ๊ณผ์ •์ด๋‹ค. ํ†ต์‹ ๊ณผ์ •์—์„œ ์†ก์‹ ์ž์™€ ์ˆ˜์‹ ์ž๊ฐ€ ์•”ํ˜ธํ™” ํ†ต์‹ ์„ ์œ„ํ•œ ๋ฐฉ๋ฒ•๊ณผ ์ˆ˜๋‹จ์— ๋Œ€ํ•ด ๊ณต์œ ํ•œ๋‹ค. ์ฆ‰, ์•”ํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•˜๊ธฐ ์œ„ํ•œ Client์™€ Server์˜ ํ˜‘์ƒ ๊ณผ์ •. ํ˜‘์ƒ ๊ณผ์ •์—์„œ๋Š” SSL ์ธ์ฆ์„œ ์ „๋‹ฌ, ๋Œ€์นญํ‚ค(๋น„๋ฐ€ํ‚ค) ์ „๋‹ฌ, ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฒฐ์ •, SSL/TLS ํ”„๋กœํ† ์ฝœ ๊ฒฐ์ • ๋“ฑ์ด ํฌํ•จ. (1) Client Hello (ํด๋ผ์ด์–ธํŠธ -> ์„œ๋ฒ„) : ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋‚˜์—ด ๋ฐ ์ „๋‹ฌ ํด๋ผ์ด์–ธํŠธ๋Š” ํ†ต์‹ ํ•˜๊ณ ์ž ํ•˜๋Š” TLS ๋ฒ„์ „, ์ž์‹ ์ด ์ง€์›ํ•˜๋Š” cipher ๋ฆฌ์ŠคํŠธ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ƒ์„ฑํ•œ ๋‚œ์ˆ˜ ์ •๋ณด๋ฅผ ๋ณด๋‚ธ๋‹ค. Cipher Suite์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋”ฐ๋ผ ๋ฐ์ด..
[iOS, Network] Wireshark๋กœ ๋„คํŠธ์›Œํฌ ํŒจํ‚ท ๋ถ„์„ํ•˜๊ธฐ(2) - Wireshark๋กœ HTTP Handshake, 3 Way-Handshake ๋ถ„์„ํ•˜๊ธฐ ์‚ฌ์ „ Setting์„ ํ†ตํ•ด ์•„์ดํฐ ํŒจํ‚ท ๋ฏธ๋Ÿฌ๋ง์— ์„ฑ๊ณตํ–ˆ๋‹ค๋ฉด, ์•„์ดํฐ์—์„œ ์ผ์–ด๋‚˜๋Š” ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์„ Wireshark๋ฅผ ํ†ตํ•ด ํŒจํ‚ท ๋ถ„์„ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ HTTP Handshake, ๋ฐ์ดํ„ฐ ํ†ต์‹ ๊ณผ์ •์„ ํ™•์ธํ•ด๋ณด์ž! โญ๏ธ ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•โญ๏ธ Wireshark๋ฅผ ์‹คํ–‰ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์—ฐ๊ฒฐ๋œ ๋””๋ฐ”์ด์Šค๋ฅผ ์„ ํƒํ•˜์—ฌ ์บก์ฒ˜ ์‹œ์ž‘(์‚ฌ์ „ Setting์—์„œ ํ™•์ธ) ์•„์ดํฐ์œผ๋กœ ์‚ฌํŒŒ๋ฆฌ ์‹คํ–‰ ์‚ฌํŒŒ๋ฆฌ์—์„œ ๋„ค์ด๋ฒ„์— ์ ‘์† ์บก์ฒ˜๋ฅผ ์ข…๋ฃŒ ํ›„ ํŒจํ‚ท ๋ถ„์„ [ ์‚ฌ์ „ Setting ๋ฐฉ๋ฒ• ] [iOS, Network] Wireshark๋กœ ๋„คํŠธ์›Œํฌ ํŒจํ‚ท ๋ถ„์„ํ•˜๊ธฐ(1) - iOS ํŒจํ‚ท ์บก์ณํ•˜๊ธฐ โญ๏ธ ์ค€๋น„์‚ฌํ•ญ โญ๏ธ Xcode ์„ค์น˜ ์•„์ดํฐ์˜ ํŒจํ‚ท์„ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Remote Virtual Interface ์‚ฌ์šฉ Xcode๋ฅผ ์„ค์น˜ํ•ด์•ผ ์„ค์น˜๋œ๋‹ค. Wireshark ์„ค์น˜..
[iOS, Network] Wireshark๋กœ ๋„คํŠธ์›Œํฌ ํŒจํ‚ท ๋ถ„์„ํ•˜๊ธฐ(1) - iOS ํŒจํ‚ท ๋ฏธ๋Ÿฌ๋ง โญ๏ธ ์ค€๋น„์‚ฌํ•ญ โญ๏ธ Xcode ์„ค์น˜ ์•„์ดํฐ์˜ ํŒจํ‚ท์„ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Remote Virtual Interface ์‚ฌ์šฉ Xcode๋ฅผ ์„ค์น˜ํ•ด์•ผ ์„ค์น˜๋œ๋‹ค. Wireshark ์„ค์น˜ ๋„คํŠธ์›Œํฌ ํŒจํ‚ท์„ ๋ถ„์„ํ•  ๋•Œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ํˆด๋กœ, ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์—์„œ ๋ฌด๋ฃŒ๋กœ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋‹ค. https://www.wireshark.org/download.html โญ๏ธ ์‚ฌ์šฉ ๋ฐฉ๋ฒ• โญ๏ธ 1. ์•„์ดํฐ๊ณผ mac ์—ฐ๊ฒฐํ•˜์—ฌ ์•„์ดํฐ UDID ํ™•์ธ Finder๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ๋œ ์•„์ดํฐ์˜ UDID ์ •๋ณด ํ™•์ธ ๊ฐ€๋Šฅํ•˜๋‹ค. *UDID(Unique Device IDentifier) : iOS, tvOS, macOS๋ฅผ ์‹คํ–‰ํ•˜๋Š” Apple ๊ธฐ๊ธฐ์˜ ๊ณ ์œ ํ•œ ๊ธฐ๊ธฐ ์‹๋ณ„์ž 2. ํŒจํ‚ท ๋ฏธ๋Ÿฌ๋ง ์‹œ์ž‘ ์•ž์„œ ํ™•์ธํ•œ UDID์ •๋ณด์™€ rvictl ๋ช…๋ น์–ด ์‚ฌ์šฉํ•˜์—ฌ ํŒจํ‚ท ๋ฏธ..
[iOS] ์˜์กด์„ฑ ์ฃผ์ž…(Dependency Injection, DI) ์ด๋ž€ ? Swift ์—์„œ ์ ์šฉํ•˜๊ธฐ, ์˜์กด ๊ด€๊ณ„ ์—ญ์ „ ๋ฒ•์น™ ์˜์กด์„ฑ ์ฃผ์ž…์„ ๊ณ ๋ฏผํ•˜๊ฒŒ ๋œ ๊ณ„๊ธฐ ํ”„๋ ˆ์ž„์›Œํฌ ๋‚ด์—์„œ ๋‹ค๋ฅธ add-on ํ”„๋ ˆ์ž„์›Œํฌ api๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, dynamic ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ํ”„๋กœ์ ํŠธ ๋‚ด embed ํ•œ ๊ฒฝ์šฐ, ํ•ด๋‹น api๊ฐ€ ์ •์ƒ ํ˜ธ์ถœ๋˜์ง€๋งŒ, embed ํ•˜์ง€ ์•Š๊ณ  ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ, ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๋ฐ, ์ด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ๊ตฌํ˜„์ด ํ•„์š”ํ–ˆ๋‹ค. ์˜์กด์„ฑ ์ฃผ์ž…(DI, Dependency Injection) ์ด๋ž€? ๋จผ์ €, ๋‘ ๋‹จ์–ด๋ฅผ ๋œฏ์–ด์„œ ๋ณด๋ฉด, ์˜์กด์„ฑ(Dependency) ์ด๋ž€ ? ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ์ฒด ์‚ฌ์ด์— ์˜์กด ๊ด€๊ณ„๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ์ฝ”๋“œ๋กœ ์ดํ•ดํ•ด๋ณด์ž. ์ฆ‰, ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ํด๋ž˜์Šค A๊ฐ€ B๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•˜๊ณ  ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, 'A ๊ฐ์ฒด๊ฐ€ B ๊ฐ์ฒด๋ฅผ ์˜์กดํ•œ๋‹ค' ๋ผ๊ณ  ํ•œ๋‹ค. ๋ฌด์Šจ ๋ง์ด๋ƒ ์œ„ ์ฝ”๋“œ์˜ B ํด๋ž˜์Šค name ๋ณ€์ˆ˜๋ฅผ name2๋กœ ๋ณ€๊ฒฝํ•ด๋ณด๋ฉด, ๋ฐ”๋กœ A ํด๋ž˜์Šค..
[Swift] ํ•จ์ˆ˜(Function) - ๊ณ ๊ธ‰ [Contents] ํ•จ์ˆ˜ Overloading ์ค‘์ฒฉ ํ•จ์ˆ˜ ์ข…๋ฃŒ๋˜์ง€ ์•Š๋Š” ํ•จ์ˆ˜ (Nonreturning function) ๋ฐ˜ํ™˜ ๊ฐ’์„ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜ ( @discardableResult ์†์„ฑ ) ์™€์ผ๋“œ์นด๋“œ ์‹๋ณ„์ž (Omitting Argumetn Labels) ๊ฐ€๋ณ€ ๋งค๊ฐœ๋ณ€์ˆ˜ (Variadic Parameters) ํ•จ์ˆ˜ ํƒ€์ž… (Function Types) ๐ŸŽ ํ•จ์ˆ˜ Overloading ๋จผ์ € ์˜ค๋ฒ„๋กœ๋”ฉ์ด๋ž€ ๊ฐ™์€ ์ด๋ฆ„์˜ ํ•จ์ˆ˜๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ์ •์˜ํ•˜๊ณ  ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋‹ค๋ฅด๊ฒŒ ํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ํ˜ธ์ถœ์— ์‘๋‹ต ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค. ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ํƒ€์ž…์ด ๋‹ค๋ฅด๊ฑฐ๋‚˜ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋‹ค๋ฅด๋‹ค๋ฉด ์ด๋ฆ„์ด ๊ฐ™์€ ํ•จ์ˆ˜๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. func hello(name: Int){ } func hello(name: String){ } func..
[Error, Xcode] Missing package product <package name> [์—๋Ÿฌ๋‚ด์šฉ] Missing package product 'SnapKit' Missing package product [ํ•ด๊ฒฐ๋ฒ•1] File > Swift Packages > Reset Package Caches [ํ•ด๊ฒฐ๋ฒ•1] File > Swift Packages > Update to Latest Package Versions https://stackoverflow.com/questions/60952549/xcode-11-4-compile-error-missing-package-product-package-name Xcode 11.4 compile error 'Missing package product ' When I integrate a local package in my Xcode project ever..
[Swift] ํ•จ์ˆ˜(Function) - ๊ธฐ๋ณธ โœ”๏ธ ํ•จ์ˆ˜์˜ ์ •์˜ ์• ํ”Œ ๊ฐœ๋ฐœ๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด Swift์—์„œ ํ•จ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜๋œ๋‹ค. [Definition] Functions are self-contained chunks of code that perform a specific task. You give a function a name that identifies what it does, and this name is used to “call” the function to perform its task when needed. ํ•จ์ˆ˜(Functions)๋Š” ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž์ฒด์ ์œผ๋กœ ํฌํ•จ๋œ(self-contained) ์ฝ”๋“œ ๋ฉ์–ด๋ฆฌ(chunks) ์ด๋‹ค. ํ•จ์ˆ˜๊ฐ€ ๋ฌด์—‡์„ ํ•˜๋Š”์ง€ ์‹๋ณ„๊ฐ€๋Šฅํ•œ ์ด๋ฆ„์„ ์ฃผ๊ณ , ์ด๋Ÿฌํ•œ ์ด๋ฆ„์€ ํ•„์š”ํ• ๋•Œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ˜ธ์ถœ(ca..
[Swift] ์Šค์œ„ํ”„ํŠธ ๋ฐ˜๋ณต๋ฌธ(Loops, Repetitive Statement) ์Šค์œ„ํ”„ํŠธ ๋ฐ˜๋ณต๋ฌธ(Loops, Repetitive Statement) for๋ฌธ while๋ฌธ ๐ŸŽ for๋ฌธ ์ผ์ • ํšŸ์ˆ˜ ๋™์•ˆ ๋ฐ˜๋ณตํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ ๋ฒ”์œ„ ์—ฐ์‚ฐ์ž๋Š” a...b ๋˜๋Š” a.. 1 { integers.removeLast() print(integers) } [์˜ˆ๋ฌธ- while๋ฌธ์œผ๋กœ 1๋ถ€ํ„ฐ 10๊นŒ์ง€์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ] var x = 1 while x 0

๋ฐ˜์‘ํ˜•