
CI/CD 란? CI/CD, 개발자라면 한 번 쯤 들어봤을 단어! 하지만 직접 겪어본적은 없다. 실제 회사에서 사용하는 수준까지는 못해보겠지만 개인 앱에 적용하면서 맛을 보려고한다. 그전에 이게 뭔지 먼저 알아보고 시작하자! CI/CD 애플리케이션 개발 단계부터 배포까지의 모든 단계를 자동화를 통해서 좀 더 효율적이고 빠르게 사용자에게 빈번히 배포할 수 있는 것 CI (Continuous Integration, 지속적 통합) 새로운 코드 변경사항이 정기적으로 빌드 및 테스트 → 공유되는 레포지토리에 통합 → 충돌 감소 코드 검증에 들어가는 시간이 줄어든다. 개발 편의성이 증가한다. 테스트 코드를 통과한 코드만이 레포지토리에 통합되기 때문에 좋은 코드 퀄리티를 유지할 수 있다. CD (Continuous ..
접근제어 특정 코드의 접근을 다른 소스파일이나 모듈에서 제한하는 것이다. 이렇게 접근제어를 함으로써 특정 코드의 세부적인 구현을 감추고 딱 필요한만큼 공개해 다른 곳에서 사용할 수 있도록 한다. 클래스, 구조체, 열거형 등 개별 타입에도 적용할 수 있고 그 타입에 속한 프로퍼티, 메소드, 초기자, 서브스크립트에도 적용할 수 있다. 프로토콜은 그래서 전역상수, 변수, 함수같이 특정 문맥에 종속된다. Swift에서는 기본 접근레벨을 제공해 접근레벨의 처리를 쉽게할 수 있도록 돕는다. 그래서 사실 단일 타겟의 앱에서는 특별히 접근레벨을 전혀 명시하지 않아도 된다. 모듈과 소스파일 Swift의 접근제어는 모듈과 소스파일에 기반을 두고있다. 모듈을 코드를 배포하는 단일 단위로 하나의 프레임워크나 앱이 이 단위로 ..

면접 질문 중 Frame과 Bounds의 차이점에 대해서 질문을 받았다. 답변 도중 면접관님이 SuperView의 Bounds 값을 바꾸면 SubView의 Frame값은 어떻게 되나요? 라고 질문을 주셨다. SuperView에서 Bounds를 바꾸면 SubView가 움직이는 것으로 알고 있었기 때문에 움직인 값 만큼 변한다고 생각하고 답변을 했다. 그 결과는 직접 한번 해보면서 조금 더 알아보면 좋겠다는 말씀을 해주셨다. 그래서 면접 후 간단하게 테스트를 해볼겸 다시 정리한다. Frame SuperView의 좌표시스템안에서 View의 위치와 크기를 나타낸다. Frame 변경 FirstView의 frame을 바꿔주니 RootView의 좌표시스템 안에서 위치가 변경되는 것을 볼 수 있다. 현재 RootVie..
프로그래밍 패러다임 간단하게 설명하면 프로그래밍 스타일을 의미하며 전체적인 프로그래밍 방식을 말한다. 프로그래머에게 프로그래밍의 관점을 갖게 해주고 결정하는 역할을 한다. 객체지향 프로그래밍(OOP)과 프로토콜지향 프로그래밍(POP)에 대해서 알아보자. 객체지향 프로그래밍(OOP) 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 패러다임이다. 객체 중심의 프로그래밍으로서 부모 클래스의 상속을 통하여 수직 구조로 타입을 확장하는 방식으로 다형성을 구현한다. 특징 캡슐화 데이터와 코드의 형태를 외부로부터 알 수 없게하고, 데이터의 구조와 역할, 기능을 하나의 캡슐형태로 만드는 방법 추상화 클래스들의 공통적인 특성(변수, 메소드)들을..
Cocoapods, Carthage, SPM을 사용하는 이유는 라이브러리를 사용, 관리하기 위해서다. [iOS] 프레임워크와 라이브러리 프레임워크와 라이브러리에 대해 설명해보라하면 큰 틀과 느낌은 설명할 수 있을 것 같은데 자세히는 못할 것 같아서 알아본다. 자세히 설명을 못한다는건 모른다는 소리니까! 프레임워크 프레 harryjeon.tistory.com 라이브러리에 관한 내용은 이전 글에서 개념을 잡고오자. CocoaPods 장점 사용하기 쉽다. Dynamic, Static 라이브러리를 모두 지원한다. 대부분의 라이브러리가 지원한다. 의존성의 의존성까지 자동으로 관리해준다. 누구나 쉽게 어떤 의존성이 애플리케이션에 있는지 알 수 있다. 단점 라이브러리를 다운받아 설치하는데 시간이 오래걸린다. (pod..
프레임워크와 라이브러리에 대해 설명해보라하면 큰 틀과 느낌은 설명할 수 있을 것 같은데 자세히는 못할 것 같아서 알아본다. 자세히 설명을 못한다는건 모른다는 소리니까! 프레임워크 프레임워크를 직역해보자. frame(뼈대) work(일하다) 뼈대를 가지고 일하는 것이다. 정해진 레시피로 요리하는 밀키트로 예시로 들 수 있다. 일정한 형태의 틀(레시피)를 가지고 결과물을 만드는 것! 프레임워크란? 소프트웨어의 특정 문제를 해결하기 위해서 상호 협력하는 클래스와 인터페이스의 집합이다. 개발 시 필수적인 코드, 알고리즘, 데이터베이스 연동 등과 같은 기능을 위해 어느정도 뼈대를 제공해주는 것이다. 프레임워크가 제공하는 뼈대 위에 개발자가 코드를 작성하여 개발할 수 있다. 특징 개발자들이 따라야 할 가이드라인을 ..
[Swift] 고차함수 (1) - map, filter, reduce 고차함수 ? 매개변수로 함수를 갖는 함수를 말한다. Swift 표준 라이브러리에서는 다음과 같은 고차함수를 제공한다. map filter reduce 모두 컨테이너 타입(Array, Set, Dictionary 등)과 Optional 타입에서 사 harryjeon.tistory.com 저번에 map, filter, reduce에 대해서 알아봤다. 이번에는 map 중 flatMap, compactMap에 대해 알아보자. FlatMap 선언 func flatMap(_ transform: (Self.Element) throws -> ElementOfResult?) rethrows -> [ElementOfResult] transform은 컨테..
고차함수 ? 매개변수로 함수를 갖는 함수를 말한다. Swift 표준 라이브러리에서는 다음과 같은 고차함수를 제공한다. map filter reduce 모두 컨테이너 타입(Array, Set, Dictionary 등)과 Optional 타입에서 사용할 수 있다. 왜 ? 함수형 프로그래밍의 장점을 간편하게 이용할 수 있기 때문이다. for-in 구문에 비해 코드가 간결해진다. 코드 재사용, 컴파일러 최적화 측면에서 성능 차이가 있다. 멀티스레드 환경에서 부작용을 방지한다. map - 변형 map 함수는 컨테이너 내부의 기존 데이터를 변형하여 새로운 컨테이너를 생성한다. for-in 구문과 비슷한 동작원리이지만 map를 사용하게되면 클로저 상수를 통해 코드의 재사용이 용이해지고 컴파일러 최적화 측면에서 성능이..
Observable 특정 형태의 데이터를 전달하는 이벤트를 비동기적으로 생성할 수 있는 객체이다. Hot Observable과 Cold Observable로 구분할 수 있다. Hot Observable 이름 그대로 뜨거워서 계속 흘리고 있는 스트림 Observable 생성과 동시에 이벤트를 방출한다. 구독 여부와 상관없이 이벤트를 발생시키기 때문에 일단 동작하기 시작하면 리소스를 사용한다. 이전에 방출한 데이터에 대해서는 받을 수 없다. 여러 Observer가 데이터를 공유할 수 있다. Hot Observable에는 Subject가 있다. 예를들어 API를 호출할 때 여러 부분에서 이 결과가 필요하다면 매번 API를 호출하는 것 보다 그 결과를 공유한다면 더 효과적일 것이다. 이때 Hot Observab..
https://harryjeon.tistory.com/60 [RxSwift] 곰튀김님의 RxSwift 강의 (2) 이전 글 [RxSwift] 곰튀김님의 RxSwift 강의 (1) Subject 만들 때 부터 어떤 데이터를 내보낼지 정해져있다. Observable처럼 값을 받을 수도 있지만 (subscribe) 외부에서 값을 통제할 수도 있다. (onNext) AsyncSubje harryjeon.tistory.com 곰튀김님의 RxSwift 강의를 듣는 도중 Relay, Subject, Driver가 나왔다. 강의에서 설명을 해주셨고 정리도 해놨지만 조금 더 찾아보려고 한다. Subject PublishSubject 초기값이 없다. 다른 Observer가 Subscribe한 순간 아무런 값도 주지 않는다..
- Total
- Today
- Yesterday
- SwiftUI
- onTapGesture
- rxswift
- 곰튀김
- enumerations
- Xcode
- docker
- Swift
- strcut
- OCR
- file private
- Login
- AWS Fargate
- IOS
- 의미있는이름
- tabview
- ChatGPT
- Custom
- 카메라
- navigation
- kakao
- Generic
- MVVM
- AWS
- delegate
- Protocol
- CodingTest
- frame과 bounds 차이
- Git
- ObservedObject
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |