분류 전체보기

    [네트워크] 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..