TIL

    [Sesac IOS] 46일차 TIL

    46일차 내용을 정리한 글 입니다. Learned 현지화(Localization) 1) 개요 지역의 특성에 맞게 앱을 변화시켜 언어, 문화 등 환경이 다른 여러 곳에서 앱을 사용할 수 있도록 지원하는 서비스 일반적으로 기기에 설정된 시스템 언어에 따라 현지화가 이루어지지만 iOS 버전 13.0 이상부터 앱 내에서 선호하는 언어를 변경할 수 있는 기능이 추가됨. 2) 애플의 현지화 날짜, 길이, 무게, 가격, 화폐 기호 등 지역마다 다르게 표현될 수 있는 값들을 내부 API를 통해 지역에 맞게 표현할 수 있게 함. Localizable, InfoPlist, plural같은 파일 내부에 지역에 따른 고정 텍스트, 권한 요청 문구, 단수 및 복수 표현을 대응할 수 있음. NOTE Localization, In..

    [Sesac IOS] 45일차 TIL

    45일차 내용을 정리한 글입니다. Learned ARC(Automatic Reference Counting) 1) 개요 Swift에서 앱의 메모리를 관리하는 시스템으로서, 참조 타입 인스턴스의 참조 횟수를 통해 자동으로 메모리에서 해지하거나 유지함. 참조 횟수에 대한 관리는 참조 타입(클래스, 클로저)의 인스턴스에만 적용되고 값 타입(구조체, 열거형)에는 적용되지 않음. 인스턴스가 생성되면 ARC는 적절한 크기의 메모리를 할당하여 인스턴스에 대한 정보와 저장 프로퍼티의 값을 담는데, 참조 횟수가 0이되면 ARC는 해당 인스턴스가 더 이상 사용되지 않는다고 판단하여 메모리에서 해지하고 공간을 확보함. 또한 해당 인스턴스에 대한 참조 횟수가 최소 하나라도 존재한다면 메모리에서 해지되지 않음. NOTE Swi..

    [Sesac IOS] 43~44일차 TIL

    43~44일차 수업을 정리한 글입니다. Learned 반응형 프로그래밍 (Reactive Programming) 1) 개요 객체지향, 함수형 프로그래밍 같은 프로그래밍 패러다임 중 하나로서, 데이터의 흐름과 변경사항의 전파에 중점을 둔 선언적 프로그래밍 패러다임임. 한 예시로, 엑셀의 스프레드 시트에서 C=A+B, D=C+A라는 연산을 선언해두고 A 또는 B의 값이 변경되면 변경사항이 전파되어 C 의 값이 자동으로 변하고 그에 따라 D의 값도 변경되는 데이터의 흐름이 만들어짐. 이런 관점을 프로그래밍에 활용해 프로그램을 설계하는 것이 반응형 프로그래밍이고 이 반응형 프로그래밍과 어울리는 아키텍쳐 패턴이 MVVM임. 명령형 프로그래밍 vs 선언적 프로그래밍 명령형 프로그래밍은 시간 순서대로 작업을 처리할 ..

    [Sesac IOS] 42일차 TIL

    42일차 수업 내용을 공부한 글입니다. Learned MVC 1. 개요 Model-View-Controller로 이루어진 iOS의 대표적인 아키텍쳐 패턴으로서 일반적으로 하나의 앱 화면을 제어하는데 최소 하나의 MVC 패턴이 사용됨. 2. Model 데이터의 구조를 정의하는 영역으로 View(UI)와 상관없는 독립적인 영역임. Model 밖의 다른 영역과 의사소통은 Controller를 통해 전달되며 그 방식으로 Notification이나 Key-Value Observing(KVO)이 사용됨. Key-Value Observing 객체 프로퍼티의 변경사항을 다른 객체에 알리기 위해 사용하는 프로그래밍 패턴 3. View 화면에 보여지는 시각적인 UI를 담당하는 영역으로 UIView 객체가 이에 해당됨. C..

    [Sesac IOS] 41일차 TIL

    41일차 수업을 정리한 글입니다. Learned URLSession 1. 개요 네트워크 통신을 위한 API를 제공해주는 클래스로, 설정한 URL로 데이터를 주고 받을 수 있고 타임 아웃, 캐시 정책 등의 설정 기능을 포함함. 기본적으로 제공되는 Shared 객체를 사용하거나 URLSessionConfiguration 객체를 가지고 새로운 URLSession 객체를 생성할 수 있음. URLSessionConfiguration은 URLSession의 세부적인 동작과 정책들을 결정하는 객체로서, 타임아웃, 캐싱 정책, 백그라운드 전송 등을 설정할 때 사용함. URLSessionConfiguration으로 설정할 수 있는 것들 셀룰러 연결 여부, 타임 아웃 간격, 리소스 요청 최대 시간, 캐시 활성화 여부, 캐..

    [Sesac IOS] 40일차 TIL

    40일차 수업 내용을 정리한 글입니다. Learned Codable 1. 개요 A type that can convert itself into and out of an external representation. Codable is a type alias for the Encodable and Decodable protocols. Encodable과 Decodable 프로토콜을 모두 포함하는 typealias (Encodable과 Decodable 중 하나만 지원한다면 사용 불가) 클래스, 구조체같은 내부 객체가 JSON같은 외부적 표현으로 변환(convert)될 수 있도록 인코딩 및 디코딩이 가능하게 해주는 기능을 함. JSON 형식 뿐만 아니라, 데이터를 디스크에 저장하거나 네트워크로 전송할 때 필요..

    [Sesac IOS] 39일차 TIL

    39일차 수업 내용을 정리한 글입니다. Learned 높은 성능의 Swift Code를 작성하는 방법 1. 최적화 활성화 Swift는 코드를 최적화하기 위해 설정할 수 있는 3가지 레벨 (optimization level)을 제공하고 있으며 각 레벨마다 최적화의 수준이 다르다. Onone: 최소한의 최적화를 수행하고 모든 디버그 정보를 보존함. 주로 Debug 모드에서 사용됨. O: 대부분의 Release 모드(제품 출시용 코드)에서 사용되는 최적화 레벨로서, 컴파일러가 적극적으로 최적화를 수행하며 디버그 정보가 손실될 수 있음. Osize: 컴파일러가 성능보다 코드의 크기를 우선 시 하여 최적화를 수행함. 2. Whole Module Optimization (WMO) Swift는 기본적으로 각 파일을 ..

    [Sesac IOS] 38일차 TIL

    Leaned Realm DB 백업 1) .realm 파일 자체를 백업 앱에서 사용하는 DB 파일의 스키마와 복구할 파일의 스키마가 동일할 때 단순히 파일을 교체하여 쉽게 백업 및 복구가 가능함. 하지만 사용자의 앱 버전마다 스키마가 다를 경우 사용하는 DB의 구조가 각각 다르기 때문에 복구 시 충돌이 발생할 수 있음. 또한 백업한 데이터를 Realm이 아닌 데이터베이스에서 사용하기 어렵다는 단점이 있음. 2) Json으로 변환하여 백업 마이그레이션, 스키마 업데이트 등 DB 구조 변화에 유연하게 대응할 수 있으며 Realm외에 다른 데이터베이스 또는 다른 플랫폼에서 비교적 사용하기 편리함. 단, 개발 시간이 늘어날 수 있다는 단점이 있음. 파일 앱을 활용한 백업 및 복구 Zip 라이브러리를 사용해서 백..

    [Sesac IOS] 37일차 TIL

    37일차 수업 내용을 정리한 글입니다. Learned App Sandbox System 1) 개요 앱이 보호받는 영역(샌드박스) 안에서만 동작하도록 제한해서 보안을 유지하는 애플의 시스템 샌드박스 시스템으로 인해 설치된 앱은 각자 고유의 영역을 가지고 있으며, 기본적으로 자신의 영역 외에 다른 앱에 접근할 수 없고 외부 앱에서도 접근이 불가능함. 샌드박스는 크게 Bundle, Data, Cloud Container와 하위 디렉토리로 나뉨. 2) Bundle Container 프로젝트의 info.plist, resource(asset, font 등)가 포함됨. 컴파일 소스(.swift 파일)이 바이너리 형태의 실행 파일로 저장되고 Xib파일, 설치된 라이브러리에 대한 정보가 들어감. 3) Data Cont..

    [Sesac IOS] 36일차 TIL

    36일차 수업 내용을 정리한 글입니다. Learning Transaction 1) 개요 논리적인 작업 수행의 단위로서 DBMS에서는 사용자의 요청(쿼리)에 응답하여 데이터베이스에 접근하고 상태를 변환(CRUD) 시키는 상호작용의 단위를 의미함. 만약 작업이 도중에 중단되었을 경우 처음 상태로 돌아가고(roll back) 모든 작업을 마칠 경우 commit 된다. DBMS의 성능은 1초당 수행하는 트랜잭션의 수(TPS)로 측정됨. TPS : Transaction Per Second 2) 필요성 송금 과정에서 내 계좌에서 돈이 출금됐을 때 오류로 인해 작업이 중단되면 상대의 계좌에는 입금되지 않는 문제가 발생할 수 있음. 위 사례 뿐만 아니라 여러 클라이언트에서 동시에 DB 서버에 쿼리를 요청할 때 등 문제..