전체 글
[IOS] NaverMap SDK 사용 중 알게된 Git LFS에 대하여
출시 프로젝트 중에 사용한 네이버 지도 SDK를 Git에 업로드하기 위해서 사용했던 방법을 공유한다. 1. Git LFS 란? LFS는 Large File Storage의 약자로, Git에서 관리중인 파일을 원격 서버에 업로드할 때 GitHub에는 업로드 가능한 용량 제한(100MB 미만)이 존재한다. Git LFS는 오디오, 비디오 같은 큰 용량의 파일을 GitHub에 업로드 하려고 할 때 해당 파일들을 다른 원격 서버에 별도로 저장하고 GitHub에는 그 파일에 대한 포인터만 저장하게 해주는 오픈소스이다. 2. 사용 방법 1) Git LFS 설치 먼저 homebrew를 사용해서 Git LFS를 설치해준다. $ brew install git-lfs 홈브루가 설치돼있지 않다면 아래 링크에서 설치해주자. ..
시플 개인정보 처리방침
('https://lietenant-k.tistory.com/'이하 '시플 - 시트릿 플레이스')은(는) 「개인정보 보호법」 제30조에 따라 정보주체의 개인정보를 보호하고 이와 관련한 고충을 신속하고 원활하게 처리할 수 있도록 하기 위하여 다음과 같이 개인정보 처리방침을 수립·공개합니다. ○ 이 개인정보처리방침은 2022년 10월 2일부터 적용됩니다. 제1조(개인정보의 처리 목적) ('https://lietenant-k.tistory.com/'이하 '시플 - 시트릿 플레이스')은(는) 다음의 목적을 위하여 개인정보를 처리합니다. 처리하고 있는 개인정보는 다음의 목적 이외의 용도로는 이용되지 않으며 이용 목적이 변경되는 경우에는 「개인정보 보호법」 제18조에 따라 별도의 동의를 받는 ..
[IOS] CocoaPod의 pod install 오류에 대하여
코코아팟을 사용해 네이버 지도 SDK를 설치하던 중 터미널에서 에러 메시지를 받았다. pod파일 내에 라이브러리의 버전 또는 깃허브 주소를 명시하지 않아서 생긴 문제는 있었지만 이번에 겪은 오류는 아예 다른 문제였기에 포스팅을 한다. 1. 문제 LoadError - dlsym(0x7f8926035eb0, Init_ffi_c): symbol not found - /Library/Ruby/Gems/2.6.0/gems/ffi-1.13.1/lib/ffi_c.bundle /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require' /System/Lib..
[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는 기본적으로 각 파일을 ..