์ „์ฒด ๊ธ€

์ „์ฒด ๊ธ€

    [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์˜ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ~ ์ข…๋ฃŒ