TIL(Today I Learned)

2월 15일(월)

학습내용

  • Kahoot
    • 메모리 영역 중 ARC와 관련있는 영역은 Heap이다.
    • ARC를 통한 인스턴스의 생명주기는 컴파일 타임에 결정된다. (자바는 런타임에 결정)
    • iOS 13부터 UI를 Scene으로 다룰 수 있다.
    • REMOVE는 HTTP 메서드에 속하지 않는다. DELETE 이다.
    • 웹브라우저에 입력한 HTTP 주소의 기본 요청은 GET이다.
    • HTTPS의 기본 포트는 443이다.
    • HTTPS는 HTTP프로토콜에서 TLS(SSL) 프로토콜을 사용하여 세션 데이터를 암호화한다.
    • HTTP요청에서 서버 오류로 인하여 정상적으로 응답하지 못할 떄의 상태코드는 500번대이다. (400번대는 클라이언트 요청 오류)
    • iOS 환경에서 뷰의 재사용은 테이블뷰 이외에서도 가능하다. (컬렉션뷰 등..)
    • 테이블뷰의 셀은 재사용 전에 자동으로 초기화되지 않으므로 따로 초기화를 해주어야 한다.
    • 컬렉션뷰는 가로방향과 세로방향 스크롤이 동시에 가능하지 않다. 한 방향만 가능하다.
    • 컬렉션뷰의 리스트 모양은 UICollectionLayoutListConfiguration을 이용하여 가능하다.
    • 컬렉션뷰의 레이아웃 커스텀은 UICollectionViewFlowLayout 클래스를 사용하여 가능하다.
    • 프로토콜의 기본구현은 프로토콜의 익스텐션을 활용하여 구현 할 수 있다.
    • 동시성은 논리적 개념, 병렬성은 물리적 개념이다.
    • 병렬처리는 멀티코어 환경에서만 가능하다.
    • 스위프트 타입의 모든 프로퍼티가 Thread-safe하지는 않다.
    • 두 개 이상의 프로세스나 스레드가 하나의 데이터를 공유할 때 데이터가 동기화 되지 않는 상황은 Race Condition이다.
    • NSCache는 메모리 캐시 전용이다.
    • 키체인의 정보는 앱을 삭제해도 유지할 수 있다.
  • Core Data
    • DB는 데이터의 집합, DBMS는 DB를 관리하기 위한 시스템이다.
    • CloudKit을 사용하여 다른 기기들과 연동할 수 있다.
    • iOS 1st-Party라서 안정성, 호환성이 좋다.
    • 수정/삭제를 위해 디스크에 있는 데이터를 메모리에 로드(객체화)해야된다는 단점이 있다. 다른 데이터베이스는 SQL문을 이용하여 디스크에서 바로 수정/삭제가 가능하다.(수정/삭제할 데이터의 필터링이 필요하면 메모리에 로드해야하는 경우도 있지만)
    • SQLite, Realm을 CoreData 대신 사용할 수 있다.(Realm은 요즘 안쓰는 추세이다.)
    • CoreData 모델을(데이터의 형태) 변경할 때는 Migration을 해야한다. (데이터의 형태를 바꾸어서 새로운 공간에 저장하는것, 또는 기존의 데이터 형태를 변경하여 새로운 형태에 맞게 저장하는 것)
    • CoreData 영구 저장소 타입의 종류는 XML(iOS는 불가), Binary, In-Memory, SQLite가 있다.
    • ORM은 객체를 데이터베이스에 저장 가능한 형태로 변환하는 것.
    • CoreData는 데이터베이스 역할을 수행할 수 있는 기능을 가지고 있는 프레임워크이다.
    • CoreData는 영구저장소, 인메모리 캐싱, 언도/리도 매니저 기능 등을 수행한다.

문제점/고민한점

  1. 객체 그래프란?
  2. In-memory Database란?

해결방법

  1. 여러 객체들이 서로 의존하면서 형성하는 네트워크를 객체 그래프라고 한다. (서로 의존하는 객체들의 집합?)
  2. 디스크가 아닌 메인 메모리를 사용하여 데이터를 저장하는 데이터베이스이다.

참고