์ ์ฒด ๊ธ
[Swift] self
self.ํ๋กํผํฐ๋ช // ํด๋์ค๋ ๊ตฌ์กฐ์ฒด ์์ ์ ์ธ์คํด์ค์ ์ํ ํ๋กํผํฐ self ํค์๋๋ ์๋ต์ด ๊ฐ๋ฅํ์ง๋ง, ๋ง์ฝ ํ๋กํผํฐ์ ์ผ๋ฐ ๋ณ์์ ์ด๋ฆ์ด ๊ฐ์ ๊ฒฝ์ฐ ๊ตฌ๋ถ์ ์ํด์ self๋ฅผ ๊ผญ ์จ์ฃผ์ด์ผํ๋ค. class A { var name: String init(name: String) { self.name = name } } ์ด๋์ ๋ผ์ด์ ๋ด๋ถ์ ์๋ name ์ ์ง์ญ๋ณ์ > ๋งค๊ฐ๋ณ์ > ์ธ์คํด์ค ํ๋กํผํฐ ์์๋ก ๋ฌด์์ ์ง์นญํ๋์ง ์ฐพ์. ๊ทธ๋์ name = name ์ ๊ฒฝ์ฐ ๋๊ฐ ๋ค ๋งค๊ฐ๋ณ์๋ฅผ ์ง์นญํ๊ฒ ๋จ. ์ด๋, ์ธ์คํด์ค ํ๋กํผํฐ๋ก ์ง์นญํ๊ธฐ ์ํด์ self๋ฅผ ์ฌ์ฉํจ.
[Swift] Guard๋ฌธ๊ณผ If๋ฌธ
guard์ if์ ์ฐจ์ด๋ guard๋ ํญ์ else๋ฌธ์ ๊ฐ๋๋ค๋ ๊ฒ์ด๋ค. ⇒ else๋ฌธ์ ๊ฐ์ ํ๊ธฐ ๋๋ฌธ์ ์์ธ์ฒ๋ฆฌ์ ์ฉ์ดํ๋ค! func guardTest(person: [String: String]) { guard let name = person["name"] else { // else ๋ฅผ ์์ฐ๋ฉด compile error print("person is nil") return } print("Name: \\(name)") guard let location = person["location"] else { print("location is nil") return } print("Location: \\(location)") } guardTest(person: ["name": "Jedi"]) print() g..
[์ด์์ฒด์ ] Process Management | ์์คํ ์ฝ, CPU burst time
ํ๋ก์ธ์ค ์์ฑ ๋ถ๋ชจ ํ๋ก์ธ์ค๊ฐ ์์ ํ๋ก์ธ์ค๋ฅผ ์์ฑ → ๋ณต์ ์์ฑ ์ ์ฒด ํ๋ก์ธ์ค๋ ํธ๋ฆฌ ๊ณ์ธต๊ตฌ์กฐ ํ์ฑ ํ๋ก์ธ์ค๋ ์คํ์ ์ํด ์์์ ํ์๋ก ํจ ์ด์์ฒด์ ๋ก๋ถํฐ ๋ฐ๋๋ค. ์์์ ๊ณต์ ๋ถ๋ชจ์ ์์์ด ์์์ ๊ณต์ ํ ์ ์์ง๋ง ๋ ๋ฆฝ์ ์ธ ์์์ ๊ฐ๋ ๊ฒ์ด ์์น Copy-on-write(COW) write๊ฐ ๋ฐ์ํ์ ๋(๋ด์ฉ์ ๋ณํ๊ฐ ์์ ๋) ๋ถ๋ชจ์ code, data, stack ๋ฑ์ copy ํ๋ค. ์ํ (Execution) ๋ถ๋ชจ์ ์์ ์ ๊ณต์กดํ๋ฉฐ ์ํ๋๋ ๋ชจ๋ธ ์์์ด ์ข ๋ฃ(terminate)๋ ๋๊น์ง ๋ถ๋ชจ๊ฐ ๊ธฐ๋ค๋ฆฌ๋(wait - blocked) ๋ชจ๋ธ ์ฃผ์ ๊ณต๊ฐ(Address space) ์์์ ๋ถ๋ชจ์ ๊ณต๊ฐ์ ๋ณต์ฌํจ (binary and OS data) ์์์ ๊ทธ ๊ณต๊ฐ์ ์๋ก์ด ํ๋ก๊ทธ๋จ์ ์ฌ๋ฆผ fork() ์์ค..
[์ด์์ฒด์ ] ํ๋ก์ธ์ค (2) | ๋๊ธฐ/๋น๋๊ธฐ์ ์ ์ถ๋ ฅ, Thread
๋๊ธฐ์ ์ ์ถ๋ ฅ๊ณผ ๋น๋๊ธฐ์ ์ ์ถ๋ ฅ ๋๊ธฐ์ ์ ์ถ๋ ฅ(synchronous I/O) I/O ์์ฒญ ํ ์ ์ถ๋ ฅ ์์ ์ด ์๋ฃ๋ ํ์์ผ ์ ์ด๊ฐ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ๋์ด๊ฐ ๊ตฌํ ๋ฐฉ๋ฒ 1 I/O๊ฐ ๋๋ ๋๊น์ง CPU๋ฅผ ๋ญ๋น์ํด ๋งค์์ ํ๋์ I/O๋ง ์ผ์ด๋ ์ ์์ ๊ตฌํ ๋ฐฉ๋ฒ 2 (์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ) I/O๊ฐ ์๋ฃ๋ ๋๊น์ง ํด๋น ํ๋ก๊ทธ๋จ์๊ฒ์ CPU๋ฅผ ๋นผ์์ I/O ์ฒ๋ฆฌ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ค์ ๊ทธ ํ๋ก๊ทธ๋จ์ ์ค ์ธ์ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์๊ฒ CPU๋ฅผ ์ค ๋น๋๊ธฐ์ ์ ์ถ๋ ฅ (asynchronous I/O) I/O๊ฐ ์์๋ ํ ์ ์ถ๋ ฅ ์์ ์ด ๋๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์ ์ด๊ฐ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ์ฆ์ ๋์ด๊ฐ ⇒ ๋ ๊ฒฝ์ฐ ๋ชจ๋ I/O์ ์๋ฃ๋ ์ธํฐ๋ฝํธ๋ก ์๋ ค์ค Thread A thread(or lightweight process) is a basic un..
[๋คํธ์ํฌ] Network Layer - Application Layer(1) | HTTP
Application Layer HTTP Transport Layer TCP/UDP Network Layer IP Link Layer WIFI, LTE, Ethernet Physical Layer ๋ผ์ฐํฐ๋ ๋คํธ์ํฌ Layer๊น์ง๋ง ์กด์ฌ (Network, Link, Physical) Process์ Socket์ ์ด์ฉํ์ฌ ๋ค๋ฅธ ์ปดํจํฐ๋ผ๋ฆฌ ํต์ IP์ฃผ์, Port๋ฒํธ ์ฌ์ฉ HTTP Hyper Text transfer protocol = Hypertext๋ฅผ ์ ๋ฌํ๋ ํ๋กํ ์ฝ Application Layer์ ํ๋กํ ์ฝ ์ค ํ๋ HTTP ํน์ง ์ฒ์์ TCP๊ฐ Connection์ ๋งบ์ผ๋ฉด ์ดํ HTTP ๋ฉ์์ง๊ฐ ๊ตํ ์ ๋ขฐ์ฑ ์๋ ํต์ ๊ฐ๋ฅ ๋ฉ์์ง ๊ตํ ์ TCP Connection ์์ฑ ํ์ stateless ์๋..
[์ด์์ฒด์ ] ํ๋ก์ธ์ค (1) | Process State, Context Switch, Scheduler
ํ๋ก์ธ์ค์ ๊ฐ๋ ⇒ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ ํ๋ก์ธ์ค์ ๊ตฌ์ฑ : ํ๋ก๊ทธ๋จ ์ฝ๋(text section), ํ๋ก๊ทธ๋จ ์นด์ดํฐ, ํ๋ก์ธ์ ๋ ์ง์คํฐ Stack: ๋ฐ์ดํฐ๋ฅผ ์ผ์์ ์ผ๋ก ์ ์ฅํ๋ ์์ญ Data section: ํ๋ก๊ทธ๋จ์ ๊ฐ์ ์ฃผ์ ๊ณต๊ฐ Heap: ์ฝ๋ ์์ญ๊ณผ๋ ๋ณ๋๋ก ์ ์ง๋๋ ์์ ์์ญ Code: ์คํ ๋ช ๋ น์ ํฌํจํ๋ ๋ฉ๋ชจ๋ฆฌ์ด๊ฑฐ๋ ๋ชฉ์ ํ์ผ์ ์๋ ํ๋ก๊ทธ๋จ ์์ญ ํ๋ก์ธ์ค์ ๋ฌธ๋งฅ(context) CPU ์ํ ์ํ๋ฅผ ๋ํ๋ด๋ ํ๋์จ์ด ๋ฌธ๋งฅ Program Counter ๊ฐ์ข register ํ๋ก์ธ์ค์ ์ฃผ์ ๊ณต๊ฐ code, data, stack ํ๋ก์ธ์ค ๊ด๋ จ ์ปค๋ ์๋ฃ๊ตฌ์กฐ PCB Kernel stack ํ๋ก์ธ์ค์ ์ํ (Process State) ํ๋ก์ธ์ค๋ ์ํ(state)๊ฐ ๋ณ๊ฒฝ๋๋ฉฐ ์คํ๋๋ค. Running C..
[Error] Missing Info.plist value. A value for the Info.plist key 'CFBundleIconName' is missing in the bundle '{bundleid}'.
App Store Connect์ ์ฑ ์ฌ์ฌ๋ฅผ ์ฌ๋ฆฌ๊ธฐ ์ํด Xcode Project๋ฅผ Archive ํ๋ ค๊ณ ํ์์ผ๋ Upload ๋์ค ๋ค์๊ณผ ๊ฐ์ ์๋ฌ๊ฐ ๋ํ๋ฌ๋ค. Missing Info.plist value. A value for the Info.plist key 'CFBundleIconName' is missing in the bundle '{bundleid}'. Apps built with iOS 11 or later SDK must supply app icons in an asset catalog and must also provide a value for this Info.plist key. For more information see http://help.apple.com/xcode/mac/cu..
[์ด์์ฒด์ ] Program Execution | ํ๋ก๊ทธ๋จ ์คํ
ํ๋ก๊ทธ๋จ์ ์คํ ๋ฉ๋ชจ๋ฆฌ์ฃผ์๋ฅผ ๋ฐ๊พผ๋ค = ์ ํํ๋ค virtual memory ์์์ ๋ค๋ฅธ ์์ญ์ผ๋ก ์ ํ ๋ถ๊ฐ ์ปค๋ ์ฃผ์ ๊ณต๊ฐ ์ปค๋ ์ฝ๋: ํจ์ ํํ๋ก ์ธํฐ๋ฝํธ๋ค์ ๋ํด ๋ฌด์จ ์ผ์ ํด์ผํ ์ง ๋ค์ด์์ data: ํ๋์จ์ด๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ์๋ฃ๊ตฌ์กฐ๋ค์ด ๋ค์ด์์ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉํ๋ ํจ์ ํจ์(function) ์ฌ์ฉ์ ์ ์ ํจ์ 'code' - ์ฌ์ฉ์ ์ ์ ํจ์ / ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์ ์์ ์ ํ๋ก๊ทธ๋จ์์ ์ ์ํ ํจ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์ ์์ ์ ํ๋ก๊ทธ๋จ์์ ์ ์ํ์ง ์๊ณ ๊ฐ๋ค ์ด ํจ์ ์์ ์ ํ๋ก๊ทธ๋จ์ ์คํ ํ์ผ์ ํฌํจ๋์ด ์์ ์ปค๋ ํจ์ 'code' - ์ปค๋ ํจ์ ์ด์์ฒด์ ํ๋ก๊ทธ๋จ์ ํจ์ ์ปค๋ ํจ์์ ํธ์ถ = ์์คํ ์ฝ ํ๋ก๊ทธ๋จ์ ์คํ A์ ํ๋ก๊ทธ๋จ ์คํ ~ ์ข ๋ฃ