전체 글 14

[IOS] 앱의 생명주기(Life Cycle)

App Life Cycle App의 생명 주기는 App의 실행/종료 및 App이 Foreground/Background 상태에 있을 때, 시스템이 발생시키는 event에 의해 App의 상태가 전환되는 일련의 과정을 뜻합니다. App의 현재 상태에 따라 할 수 있는 것과 할 수 없는 것이 결정됩니다. 예를 들어 Foreground App은 사용자의 주의를 끌기 때문에 CPU를 포함한 시스템 리소스보다 우선순위가 높습니다. 반대로 Background App은 offscreen이기 때문에 가능한 적은 작업을 수행해야하고, 되도록 아무것도 수행하지 않아야 합니다. 또한 앱의 상태가 변경될 때 마다 그에 맞는 동작을 조정해야 합니다. App State Not Running Not Running은 앱이 아직 실행되..

IOS 2021.03.10

[CS] REST? REST API? RESTful?

출처 REST란 무엇인가? Representational State Transfer의 약자이다. 자원을 URI로 표시하고 해당 자원의 상태를 주고 받는 것을 의미한다. 자원(resource)의 표현(representation)에 의한 상태 전달 자원: 해당 소프트웨어가 관리하는 모든 것 Ex) 문서, 그림, 데이터, 해당 소프트웨어 자체 등 자원의 표현: 그 자원을 표현하기 위한 이름 Ex) DB의 학생 정보가 자원일 때, ‘students’를 자원의 표현으로 정한다. 상태(정보) 전달 데이터가 요청되어지는 시점에서 자원의 상태(정보)를 전달한다. JSON 혹은 XML를 통해 데이터를 주고 받는 것이 일반적이다. REST의 구성 요소 자원(Resource): URI 모든 자원에 고유한 ID가 존재하고, ..

CS/etc 2021.03.10

[Swift] 메모리를 참조하는 방법(strong, weak, unowned)

강한 참조 (Strong Reference) 해당 인스턴스의 소유권을 가진다. 자신이 참조하는 인스턴스의 retain count를 증가시킨다. 값 지정 시점에 retain이 되고 참조가 종료되는 시점에 release가 된다. 선언할 때 아무것도 적어주지 않으면 default로 strong이 된다.var test = Test() // retain count 1 증가 test = nil // retain count가 1 감소되어 0이 되면서 메모리 해제됨 약한 참조 (Weak reference) 해당 인스턴스의 소유권을 가지지 않고, 주소값만을 가지고 있는 포인터 개념이다. 자신이 참조하는 인스턴스의 retain count를 증가시키지 않는다. release도 발생시키지 않는다. 자신이 참조는 하지만 wea..

Swift/etc 2021.03.10

[Git] Git 명령어 모음

Git 명령어 add git add [파일] : stage area에 파일을 추가하여 commit 할 수 있도록 한다. commit git commit -m”mention” : stage area에 있는 파일들을 commit 한다. git commit -a -m”mention” : 이미 추가된 파일이 수정 중인 상황에서 stage area에 올리지 않아도 stage area에 올리고 바로 commit 한다. remote git remote add [저장소] [저장소주소] : 원격 저장소를 추가한다. git remote -v : 원격 저장소 목록을 보여준다. clone git clone [주소] [저장될 폴더] : git 원격 저장소에 있는 프로젝트를 내려받는다. git clone –depth [숫자] [..

Git 2021.03.09

[Swift] ARC란?

출처 value type과 달리 reference type은 하나의 인스턴스가 참조를 통해 여러곳에서 접근하기 때문에 언제 메모리에서 해제 되는지가 중요하다. 인스턴스가 적절한 시점에 메모리에서 해제되지 않으면 한정적인 메모리 자원을 낭비하게 되고, 이는 성능저하로 이어진다 Swift는 메모리 사용을 관리하기 위해 메모리 관리 기법인 ARC를 사용한다. ARC(automatic reference counting) 자동으로 메모리를 관리해주는 방식. 더이상 필요하지 않은 클래스의 인스턴스를 메모리에서 해제하는 방식으로 동작한다. 인스턴스가 언제 메모리에서 해제되어야 할지를 컴파일과 동시에 결정함 ARC의 장단점 장점 컴파일 당시 이미 인스턴스의 해제 시점이 정해져 있어서 인스턴스가 언제 메모리에서 해제될지..

Swift/etc 2021.03.08

[CS] 스레드(Thread)란?

스레드(Thread) 어플리케이션의 실행에 있어서 가장 기본적인 단위. 실행중인 어플리케이션은 최소 하나의 스레드로 구성된다. 각 스레드마다 별도의 스택이 있으며 각 스레드는 같은 어플리케이션에 있는 다른 스레드와 독립적으로 돌아간다. 스레드 끼리는 파일 핸들이나 메모리 같은 자원을 공유한다. 출처 네이티브 스레드(커널 레벨 스레트) 운영체제에서 생성하고 관리하는 스레드 녹색 스레드 운영체제 위의 소프트웨어 계층에서 구현된 스레드. 멀티코어를 활용할 수 없으며 동기 입출력을 구현하기 어렵다. 멀티코어 시스템이 주류를 이루게 되면서 녹색 스레드를 쓰지 않는 쪽으로 변함 선점형 스레딩(preemtive threading) 운영체제에서 아무때나 스레드 실행을 멈추고 다른 스레드를 실행시킬 수 있다. 때문에 운..

CS/etc 2021.03.07

[MVVM] MVVM패턴이란?

MVVM이란? MVVM은 Model - View - ViewModel의 약자로 소프트웨어 아키텍처 패턴입니다. (Model은 데이터, View는 유저 인터페이스, ViewModel은 뷰와 모델 사이를 연결) Model(모델)은 어떤 부분을 책임지고 있나요? 데이터 모델, 데이터 접근 레이어, 비즈니스 로직등이 포함되어 있습니다. 모델은 데이터를 얻거나 저장하거나 지우거나 업데이트에 대해 알고 있습니다. 이 작업들은 뷰모델에 의해 시작되며 모델이 데이터에 대한 작업을 마치면 뷰 모델에게 결과를 알립니다. 모델은 뷰모델이 소유하고 있고, 뷰나 뷰모델이 모델에 대해 들여다볼 수 없습니다. View(뷰)는 어떤 부분을 책임지고 있나요? 사용자 이벤트를 수신하고 데이터를 표시하는 유저 인터페이스를 책임집니다. (..

Swift/MVVM 2021.03.04

[Algorithm] 알고리즘이란?

알고리즘 알고리즘은 '절차'다. 구체적으로 설명하면, 알고리즘은 '문제나 과제를 해결하기 위한 처리 절차를 하나하나 구체적인 순서에 따라 표현한 아이디어나 생각' 이라고 할 수 있다. 알고리즘이란 '생각' 또는 '아이디어'이기 때문에 형태가 없다. 따라서 어떤 것을 다른 사람에게 전달하려면 눈에 보이도록 표현해야 한다. 레시피, 악보, 사용 설명서는 알고리즘을 다른 사람에게 전달하기 위해 사람이 이해하기 쉬운 문장, 사진, 도형, 일러스트 등을 이용해 표현한 것이다. 알고리즘의 예 요리의 레시피: 요리 절차 -> 문장화 -> 레시피 음악의 악보: 연주 절차 -> 도면화 -> 악보 가전제품 등의 사용 설명서: 기계 조작, 사용 절차 -> 일러스트화 ..

CS/Algorithm 2021.02.27