본문 바로가기

분류 전체보기

(97)
[Kotlin] Kotlin 기본 문법 정리 (1편 - 변수와 상수, 함수 선언, 반복문, 조건문, 자료형, 배열) 1️⃣ 변수와 상수 var는 변수 선언, val는 상수 선언에 이용된다. val는 Java의 final과 동일하여 선언 시에만 값 초기화가 가능하다. 또한 타입 추론또한 지원하기 때문에 자료형을 명시하지 않아도 초기화하는 값으로 타입이 지정된다. var a: Int a = 20 var b: Int = 123 b = 15 val a: Int = 150 📌 null값 사용하기 코틀린에서 null값을 사용하기 위해서는 타입 뒤에 ?를 붙여줘야 한다. Java에서는 NPE로 귀찮은 일이 많았는데 코틀린에서 ?를 지원하기 때문에 좀더 쉽게 null 처리를 할 수 있다. var a: Int? = 10 a = null // 오류 발생 var b: Int? = null // 정상 또한 Swift에서와 같이 Chaini..
[iOS] iOS App의 Modularization (1편 - Bundle이란?) iOS App의 모듈화(Modularization) 최근 iOS 앱의 구조 및 의존성 관리, Framework에 대해 공부하면서 모듈화에도 자연스레 관심이 생겼다. 또한 진행중인 프로젝트에 디자인 시스템을 적용할 계획을 가지고 있기 때문에 근본부터 공부해나가기로 결정했다. 일단 가장 기초적인 부분이라고 생각하는 Bundle과 Package에 대해 간단히 살펴보기 전에, 모듈화가 주는 장점에 대해 나열해보았다. 1. 코드 아키텍쳐가 향상된다. 이는 UI Test 및 Unit Test를 조금 더 편하게 만들어준다. 2. 전체적인 소프트웨어가 분리되기 때문에 단위별로 이해하고 유지보수가 가능하게 된다. 3. 기능을 분리하여 책임이 확실해진다. 4. 다른 프로젝트에 재사용하기 편리해진다. 5. 오류의 범위 또한..
[iOS] FirebaseAuth를 통해 OAuth 2.0 소셜로그인 기능 구현하기 로그인이란? 로그인 기능은 사용자의 신원 정보를 필요로 하는 어플리케이션에서 필수적인 과정이다. 로그인을 통해서 사용자가 생성한 데이터를 사용자 별로 안전하게 저장할 수 있고, 다른 환경에서도 사용자 특화된 레이아웃이나 데이터를 제공할 수 있다. 그리고 소셜로그인이란 SNS에서 제공하는 로그인 기능을 통해서 다른 웹사이트 또는 앱에 로그인하는 것을 말하며, 로그인 방식의 하나인 동시에 OAuth 2.0을 통한 인증 방식 중의 하나이다. 소셜로그인을 이용하면 해당 서비스에 계정을 새로 만들 필요 없이 기존에 OAuth를 사용하는 서비스(구글, 카카오, 애플)의 인증 정보에 대한 권한을 가져와서 사용할 수 있다. iOS 앱에 대해서는 애플이 제공하는 소셜로그인 가이드가 존재한다. 그 중 하나가 특정 앱에서 ..
[iOS] Fastlane + Github Actions로 CI/CD 파이프라인 구축하기 (4편 - fastlane match로 인증서와 profile을 git 저장소에 관리하기) [iOS] Fastlane + Github Actions로 CI/CD 파이프라인 구축하기 (1편 - CI/CD란 무엇일까?) [iOS] Fatslane + Github Actions로 CI/CD 파이프라인 구축하기 (2편 - Github Actions 살펴보기) [iOS] Fatslane + Github Actions로 CI/CD 파이프라인 구축하기 (3편 - fastlane으로 TestFlight에 앱 업로드하기) Fastlane Match를 사용해서 Git Repo에 인증서와 프로필 관리하기 iOS 앱 개발 프로젝트를 진행하다 보면 Xcode 프로젝트 자체의 Signing, Profiles 등의 관리 문제로 인해 실제 개발 외의 세팅에 많은 시간이 소모되는 경향이 있다. 이러한 문제를 해결하는 방법..
[iOS] Fatslane + Github Actions로 CI/CD 파이프라인 구축하기 (3편 - fastlane으로 TestFlight에 앱 업로드하기) [iOS] Fastlane + Github Actions로 CI/CD 파이프라인 구축하기 (1편 - CI/CD란 무엇일까?) [iOS] Fastlane + Github Actions로 CI/CD 파이프라인 구축하기 (2편 - Github Actions 살펴보기) iOS 앱의 배포 과정 iOS 앱의 배포과정은 Xcode에서 schema를 정하고 archive하는 것으로 시작한다. 앱이 배포되기까지의 과정은 아래와 같이 크게 3가지의 작업으로 나눠 생각할 수 있는데 각 과정이 연속적이지 않기 때문에 수작업의 경우 기다렸다가 다시 실행해주는 소모적인 작업을 반복해야 한다. Archive - 앱을 아카이브하는 시간 Upload - AppStore Connect에 앱을 업로드하는 시간 Deploy - 테스트플라이..
[iOS] iOS 앱의 버전 관리에 대해(앱 버전 및 빌드 버전) 앱 버전 넘버링 앱 버전은 실제 사용자에게 보이는 Version이기 때문에, 일반적인 규칙에 따라 넘버링을 하는 것이 좋다. 앱 버전 넘버링은 보통 {MajorVersion}.{MinorVersion}.{Revision}의 형식으로 구성되는데, 예를 들어 1.2.25와 같은 형태를 가진다. Major Version은 앱에서 큰 변화가 있거나 완전히 새로운 기능이 생기는 경우에 증가시킨다. Minor Version은 주요 기능 하에서 부수적인 기능이나 수정이 이루어지는 등의 비교적 작은 변경점이 생겼을 때 증가시킨다. Revision(Build Number)는 작은 버그 수정, 코드 개선 등의 작은 작업이 이뤄질 때 증가시킨다. 빌드 버전 넘버링 빌드 버전은 개발자 내부적으로 확인하기 위한 버전 정보로, ..
[iOS] Fatslane + Github Actions로 CI/CD 파이프라인 구축하기 (2편 - Github Actions 살펴보기) [iOS] Fastlane + Github Actions로 CI/CD 파이프라인 구축하기 (1편 - CI/CD란 무엇일까?) Github Actions란? Github Actions는 Build, test, deploy 등의 종합적인 Workflow를 자동화할 수 있는 CI/CD 플랫폼이다. 코드 리뷰, 브랜치 관리, 이슈 우선순위 관리 등의 다양한 WorkFlow에 적용할 수 있다고 한다. 공식 문서 링크로 이동하면 Github Actions에 대한 전반적인 내용을 확인할 수 있다. Github Actions는 Events와 Workflow를 중심으로 자동화가 이루어지는 것이 가장 큰 특징이다. 사용자가 미리 정의한 Workflow는 특정 Github Events들이 발생하는 것을 감지하고 실행될 수 ..
[iOS] Fastlane + Github Actions로 CI/CD 파이프라인 구축하기 (1편 - CI/CD란 무엇일까?) CI/CD란? Continuous Integration / Continuous Delivery 지속적 통합, 빌드, 테스트 / 지속적 배포 개발자들이 코드를 짜고 테스트를 작성한 코드를 깃허브 Repository에 Push한다. 그러면 팀원들에게 그 내용이 공유가 된다. 여기서 CI/CD 서비스가 역할을 한다. CI/CD 서비스는 개발자가 미리 해둔 설정에 따라 빌드나 테스트를 자동으로 실행한다. 빌드가 성공적으로 되는 것이 확인이 되면, 심사 요청 또한 자동으로 진행한다. 만약 빌드나 테스트가 실패하면, 개발자들에게 어디가 실패했는지 메일이나 슬랙으로 알리고, 이를 인지한 개발자들은 문제가 있는 코드나 테스트를 수정할 수 있다. CI/CD 서비스는 위와 같은 과정을 반복하기 때문에, 새 버전의 소프트웨..
[PS] Swift에서 Queue 구현하기(Feat.백준 18258 시간초과 이슈..) 스위프트에서의 Queue 스위프트는 Queue라는 자료구조를 지원하지 않기 때문에, PS를 위해서 직접 구현해줘야 할 때가 있다. 효율적인 형태의 큐를 직접 구현해보자! 스택의 경우에는 스위프트 기본 제공 자료구조인 Array의 popLast() 메서드를 이용해서 시간복잡도 O(1)으로 간단히 구현할 수 있지만, queue에서 필요한 dequeue()에 사용할만한 메서드인 removeFirst()가 시간복잡도 O(N)인 관계로 커스텀 큐를 구현해줘야 한다! 스위프트를 이용한 Queue 구현 아이디어에는 크게 4가지가 있다. 1. 고전적인 방식으로 링크드 리스트 사용하기 : 공간복잡도가 좋지 않고, 접근성이 좋지 않음 2. Ring Buffer를 이용하기 : 정적 배열을 사용해야 하기 때문에 입력 받을 크..
[네트워크] Ch2 - Cookies & Web Caching [네트워크] Ch1 - 인터넷과 프로토콜, network edge [네트워크] Ch1 - Delay, loss, throughput in networks, Protocol layers, service models, Networks under attack: security, Internet history [네트워크] Ch2 - 네트워크의 원리 및 Application Layer [네트워크] Ch2 - Web과 HTTP ✨ 2.2.2 Cookies & Web Caching 📌 User-Server state: cookies 많은 웹 사이트들은 서버 사이드에서 클라이언트에 대한 history를 유지하기 위해 cookies를 사용한다. 앞서 프로토콜 자체는 stateless하다고 했는데, PCO가 줄어든다는 장..