์ „์ฒด ๊ธ€

์ „์ฒด ๊ธ€

    [๋„คํŠธ์›Œํฌ] Introduction

    The network edge host: ๋„คํŠธ์›Œํฌ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ปดํ“จํ„ฐ client: ์„œ๋ฒ„์—๊ฒŒ ์ •๋ณด๋ฅผ ์š”์ฒญํ•˜๊ฑฐ๋‚˜ ๋ฐ›๋Š” ์ปดํ“จํ„ฐ server: ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ์š”์ฒญ์— ๋”ฐ๋ผ ์ •๋ณด๋ฅผ ๋ณด๋‚ด์ฃผ๋Š” ์ปดํ“จํ„ฐ Network edge: ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ๋ฐฉ์‹ TCP reliable ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์‹ค๋˜์ง€ ์•Š์Œ ๋ฐ์ดํ„ฐ์˜ transfer ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ์ง€ ์•Š์•„ ์ˆœ์„œ๊ฐ€ ๋ณด์žฅ๋จ flow control receiver์— ๋งž์ถฐ ์†๋„ ์กฐ์ ˆ congestion control ๋„คํŠธ์›Œํฌ์˜ ๋Šฅ๋ ฅ์— ๋งž์ถ”์–ด ์†๋„ ์กฐ์ ˆ resource high UDP reliableํ•˜์ง€ ์•Š์Œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š์•„๋„ ๋˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉ ex. real-time voice What’s a protocol? ํ”„๋กœํ† ์ฝœ์€ ๋‘˜ ์ด์ƒ์˜ ํ†ต์‹  ๊ฐœ์ฒด ๊ฐ„ ๊ตํ™˜๋˜๋Š” ๋ฉ”์‹œ์ง€ ํฌ๋งท๊ณผ ์ˆœ์„œ๋ฟ ..

    [์šด์˜์ฒด์ œ] System Structure

    ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ ๊ตฌ์กฐ CPU ๋ ˆ์ง€์Šคํ„ฐ CPU๋Š” ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ(์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๋ ˆ์ง€์Šคํ„ฐ)๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์˜ ๋ช…๋ น์„ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค. ์ธํ„ฐ๋ŸฝํŠธ ๋ผ์ธ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์ฃผ๋ณ€ ์žฅ์น˜๋Š” ์ธํ„ฐ๋ŸฝํŠธ ๋ผ์ธ์„ ์„ธํŒ…ํ•˜๊ณ  CPU๋Š” ๋งค๋ฒˆ ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•œ ํ›„ ์ธํ„ฐ๋ŸฝํŠธ ๋ผ์ธ์„ ์ฒดํฌํ•ด ์„œ๋น„์Šค ์š”์ฒญ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์˜ ์ž˜๋ชป๋œ ์ˆ˜ํ–‰์œผ๋กœ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ ๋ฐ ์šด์˜์ฒด์ œ์— ํ”ผํ•ด๊ฐ€ ๊ฐ€์ง€ ์•Š๋„๋ก ํ•˜๊ธฐ ์œ„ํ•œ ๋ณดํ˜ธ ์ ˆ์ฐจ ๋ชจ๋“œ๋น—์ด 0์ผ๋•Œ (๋ชจ๋‹ˆํ„ฐ ๋ชจ๋“œ = ์ปค๋„ ๋ชจ๋“œ = ์‹œ์Šคํ…œ ๋ชจ๋“œ) ์šด์˜์ฒด์ œ๊ฐ€ cpu์—์„œ ์‹คํ–‰ ์ค‘ ๋ฌด์Šจ์ผ์ธ์ง€ ๋‹ค ํ• ์ˆ˜์žˆ์Œ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ i/o device ์ ‘๊ทผ ๋ชจ๋“œ๋น—์ด 1์ผ ๋•Œ (์‚ฌ์šฉ์ž ๋ชจ๋“œ) ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์ด cpu๊ฐ–๊ณ ์žˆ์Œ ๋ณด์•ˆ์„ ์œ„ํ•ด ์ œํ•œ๋œ(ํ•œ์ •๋œ) instruction๋งŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ..

    [์šด์˜์ฒด์ œ] Introduction to Operating System

    ์šด์˜์ฒด์ œ๋ž€ ๋ฌด์—‡์ธ๊ฐ€? ์šด์˜์ฒด์ œ๋ž€? ์ปดํ“จํ„ฐ ํ•˜๋“œ์›จ์–ด ๋ฐ”๋กœ ์œ„์— ์„ค์น˜๋˜์–ด ์‚ฌ์šฉ์ž ์ปดํ“จํ„ฐ& ๋‹ค๋ฅธ ๋ชจ๋“  ์†Œํ”„ํŠธ์›จ์–ด์™€ ํ•˜๋“œ์›จ์–ด ์‚ฌ์ด๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค ์ข์€ ์˜๋ฏธ์˜ ์šด์˜์ฒด์ œ(์ปค๋„) ์šด์˜์ฒด์ œ์˜ ํ•ต์‹ฌ ๋ถ€๋ถ„์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์ฃผํ•˜๋Š” ๋ถ€๋ถ„ ๋„“์€ ์˜๋ฏธ์˜ ์šด์˜์ฒด์ œ ์ปค๋„ ๋ฟ ์•„๋‹ˆ๋ผ ๊ฐ์ข… ์ฃผ๋ณ€ ์‹œ์Šคํ…œ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ํฌํ•จํ•œ ๊ฐœ๋… ์šด์˜์ฒด์ œ์˜ ๋ชฉ์  ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ์ œ๊ณต ์šด์˜์ฒด์ œ๋Š” ๋™์‹œ ์‚ฌ์šฉ์ž / ํ”„๋กœ๊ทธ๋žจ๋“ค์ด ๊ฐ์ž ๋…์ž์  ์ปดํ“จํ„ฐ์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ๊ฒƒ ๊ฐ™์€ ํ™˜์ƒ์„ ์ œ๊ณต ํ•˜๋“œ์›จ์–ด๋ฅผ ์ง์ ‘ ๋‹ค๋ฃจ๋Š” ๋ณต์žกํ•œ ๋ถ€๋ถ„์„ ์šด์˜์ฒด์ œ๊ฐ€ ๋Œ€ํ–‰ ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์˜ ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌ - A resource allocator ํ”„๋กœ์„ธ์„œ, ๊ธฐ์–ต์žฅ์น˜, ์ž…์ถœ๋ ฅ ์žฅ์น˜ ๋“ฑ์˜ ํšจ์œจ์ ์ธ ๊ด€๋ฆฌ ์‚ฌ์šฉ์ž ๊ฐ„์˜ ํ˜•ํ‰์„ฑ ์žˆ๋Š” ์ž์› ๋ถ„๋ฐฐ ์ฃผ์–ด์ง„ ์ž์›์œผ๋กœ ์ตœ๋Œ€ํ•œ์˜ ..

    [Swift] reduce ์‚ฌ์šฉํ•˜๊ธฐ | sum

    Programmers ํ•˜์ƒค๋“œ ์ˆ˜๋ฅผ ํ’€๊ณ ๋‚˜์„œ, reduce๋ฅผ ์ด์šฉํ•œ ํ’€์ด๋ฅผ ๋งˆ์ฃผ์ณ๋ฒ„๋ ธ๋‹ค. // Programmers ํ•˜์ƒค๋“œ ์ˆ˜ ํ’€์ด func solution(_ x:Int) -> Bool { var sum_x = String(x).map{ Int(String($0))! }.reduce(0, +) return x % sum_x == 0 } ใ…‡ใ…‡.. ๋‚˜๋„ ๊ณต๋ถ€ํ•ด์ค„๊ฒŒ reduce ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ ๊ฐ’์„ ํ•˜๋‚˜๋กœ ํ†ตํ•ฉ(์—ฐ์‚ฐ)ํ•˜์—ฌ return * Swift์—์„œ๋Š” Python๊ณผ๋Š” ๋‹ฌ๋ฆฌ ๋ฐฐ์—ด์˜ ์ด ํ•ฉ์„ ๊ตฌํ•˜๋Š” ๋‚ด์žฅ ํ•จ์ˆ˜ sum์ด ์—†๋‹ค. ๋Œ€์‹  reduce๋ฅผ ์‘์šฉํ•ด์ฃผ๋ฉด ๋œ๋‹ค. (1) reduce(_: _:) public func reduce(_ initialResult: Result, _ nextPartialResult: (..

    [Swift] map, flatMap, compactMap ?

    Map, flatMap, compactMap map ๋ฐฐ์—ด ๋‚ด๋ถ€์˜ ๊ฐ’์„ ํ•˜๋‚˜์”ฉ mapping ๊ฐ ์š”์†Œ์— ๋Œ€ํ•œ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋“ค์„ ๋ฐฐ์—ด์˜ ์ƒํƒœ๋กœ ๋ฐ˜ํ™˜ func map(_ transform: (String) throws -> T) rethrows -> [T] import Foundation let cast = ["Vivien", "Marlon", "Kim", "Karl"] let lowercaseNames = cast.map { $0.lowercased() } print(lowercaseNames) // ["vivien", "marlon", "kim", "karl"] let letterCounts = cast.map{ $0.count } print(letterCounts) // [6..

    [Swift] inout? | ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๊ณ  ์ง€์†ํ•˜๊ธฐ

    What is inout? Swift์—์„œ ํ•จ์ˆ˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ์ƒ์ˆ˜์ด๋ฏ€๋กœ ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๊ฐ’์„ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€ ํ•จ์ˆ˜์—์„œ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๊ธธ ์›ํ•˜๊ณ  + ๋ณ€๊ฒฝ๋œ ๊ฐ’์ด ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ์ข…๋ฃŒ๋œ ํ›„์—๋„ ์ง€์†๋˜๊ธธ ์›ํ•  ๋•Œ inout ์‚ฌ์šฉ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๊ฐ’์„ ๋„˜๊ฒจ ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ func increment(_ number: Int){ number += 1 print(number) } increment(3) // Error: 'number' is a 'let' constant var number = 3 func increment(_ number: inout Int){ number += 1 print(number) } increment(&number) // 4 How to use inout?..

    [iOS] ์Šคํ† ๋ฆฌ๋ณด๋“œ ์—†๋Š” ํ™˜๊ฒฝ ๊ตฌ์ถ•ํ•˜๊ธฐ | No-storyboard

    ํ•ญ์ƒ ์Šคํ† ๋ฆฌ๋ณด๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•ด์™”๋Š”๋ฐ ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์Šคํ† ๋ฆฌ๋ณด๋“œ ์—†์ด ์ง„ํ–‰ํ•˜๊ณ ์ž ํ•œ๋‹ค. ์–ด์ฐจํ”ผ UIKit๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋•Œ๋ฌธ์— ๋‹ค ๋˜‘๊ฐ™์ง€๋งŒ, ๊ธฐ๋ณธ์ ์œผ๋กœ storyboard ์…‹ํŒ…์ด ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฐ๊ฒฐ๋งŒ ๋Š์–ด์ฃผ๋ฉด ๋œ๋‹ค. (Step 1) ์Šคํ† ๋ฆฌ๋ณด๋“œ ํ”„๋กœ์ ํŠธ์™€ ๋˜‘๊ฐ™์€ ์„ค์ •์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ด์ค€๋‹ค. (Step 2) ์™ผ์ชฝ์˜ Navigator์—์„œ Main.storyboard๋ฅผ ์‚ญ์ œํ•ด์ค€๋‹ค. (Step 3) Project > Targets > General > Deployment Info ์—์„œ Main Interface์— ์„ค์ •๋˜์–ด์žˆ๋Š” Main.Storyboard๋ฅผ ์‚ญ์ œํ•ด์ค€๋‹ค. (Step 4) Project > Targets > Info ์—์„œ Storboard Name์„ ์‚ญ์ œํ•ด์ค€๋‹ค. (Step 5) Scen..

    [iOS] App States & View Life Cycle | ์•ฑ์˜ ์ƒํƒœ์™€ ๋ทฐ์˜ ์ƒ๋ช…์ฃผ๊ธฐ

    ์ƒ๋ช…์ฃผ๊ธฐ(Lifecycle)์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€? ⇒ ์–ธ์ œ ํŠน์ • ๋กœ์ง์„ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฅผ ์–ด๋””์„œ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค๋ผ๋Š” ๋ฌธ์ œ๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ๋Š” ๊ฐœ๋… App States Not running: ์•ฑ์ด ์‹คํ–‰๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ข…๋ฃŒ๋œ ์ƒํƒœ Foreground: ํ™”๋ฉด์ด ๋‚˜ํƒ€๋‚œ ์ƒํƒœ inActive: ์ƒํ˜ธ์ž‘์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์ƒํƒœ, ํ™”๋ฉด์€ ๋ณด์ž„ ex) ์ „ํ™”๊ฐ€ ์™”์„ ๋•Œ, ์‹œ์Šคํ…œ ๋ฉ”์‹œ์ง€๊ฐ€ ๋–ด์„ ๋•Œ ('๋ฐฐํ„ฐ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค') Active: ์ƒํ˜ธ์ž‘์šฉ์ด ๊ฐ€๋Šฅํ•œ ์ƒํƒœ, ์•ฑ์ด ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ์ƒํƒœ Background: ํ™”๋ฉด์ด ์‚ฌ๋ผ์ง„ ์ƒํƒœ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ƒํƒœ์—์„œ ์‹ค์งˆ์ ์ธ ๋™์ž‘์„ ํ•˜๊ณ  ์žˆ๋Š” ์ƒํƒœ ex) ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ, ์œ ํŠœ๋ธŒ ์Œ์•… ์‹คํ–‰ Suspended: ๋ญ”๊ฐ€ ์žก์•„๋‘” ์ƒํƒœ ๋น ๋ฅธ ์žฌ์‹คํ–‰์„ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ตœ์†Œํ•œ์œผ๋กœ๋งŒ ์žก๊ณ (ํ• ๋‹นํ•˜๊ณ ) ์žˆ์Œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•˜๋ฉด ์‹œ์Šคํ…œ์ด Suspe..