iOS
-
DI & SwinjectiOS 2021. 8. 3. 22:07
안녕하세요. 그린입니다🟢 이번 포스팅에서는 Swinject에 대해 알아보겠습니다🧑🏻💻 Swinject? Swinject는 의존성 주입 프레임워크입니다. 한마디로 정의하기가 참 어려운데 그럼 먼저 의존성 주입이 어떤것인지 알아봐야겠죠? 의존성 주입? Dependency Injection이라고도 불리며 객체지향을 설계하고 코딩할때 중요한 부분입니다. 복잡한 개발을 하면 할수록 코드간 의존성이 생길수가 있습니다. 예를들어 간단히 아래와 같은 코드가 있다고 가정해봅시다. class Person { var action = Action() func startWalk() { self.action.walk() } } 이럴때 startWalk 함수 호출을 하기 위해서는 Action 클래스가 정의되야합니다. 이럴경우 A..
-
Test Doubles - fake, stub, mockiOS 2021. 7. 22. 08:19
안녕하세요. 그린입니다🟢 이번 포스팅에서는 Test Double의 3가지 종류에 대해 알아보고 구분해보겠습니다🧑🏻💻 우선 테스트 더블?? 테스트 더블은 자동화 테스트에서 실제와 유사하게 동작하면서 단순한 개체를 사용하여 동작시켜보거나 하는 테스트 과정에서 복잡성을 낮추고 독립된 코드를 테스트 검증할 수 있는 테스트 환경에서 이러한 테스트 개체가 사용되는것 입니다. 테스트 더블의 종류 1) fake - 상용되는 앱 로직 구현과 동일하게 가짜로 앱 로직 구현을 만들고 서버 DB대신 인메모리 DB를 정의하여 해당 정보로 테스트 (프로덕션 구현보다 좀 더 단순하게 만들 수 있음) - 예를들어 네트워크 통신을 하여 서버 DB를 받아 데이터를 뿌려주는 로직을 fake로는 네트워크 통신을 하지 않고 테스트 객체를 ..
-
ReactorKit으로 랜덤 통신 구현하기iOS 2021. 7. 10. 09:30
안녕하세요. 그린입니다🟢 이번 포스팅에서는 ReactorKit으로 랜덤한 통신을 구현해보겠습니다🧑🏻💻 우선 간략한 기능을 설명드리겠습니다. ReactorKit을 이용하여 리액터를 다룰 수 있는 아주 간단한 예제로 통신 시 GET에 ID 인덱스를 넘겨 통신할때 해당 인덱스를 랜덤하게 뽑고 통신 및 파싱한 후 ID와 타이틀을 UI에 3초마다 자동 갱신되도록 뷰를 업데이트 하는 기능을 가집니다🧑🏻💻 여기 포스팅에서는 필수 파일에 대한 구현들만 간단히 소개하고 아래 제 Git 레포 주소를 남겨두겠습니다! 더 참고하실 분들을 Git을 참고해주세요👍🏻 1. Model 1) JSON 구조체 - 통신 후 JSON 데이터를 파싱할 구조체를 생성합니다. import Foundation struct RandomInfo:..
-
Run LoopiOS 2021. 6. 1. 19:17
안녕하십니까. 그린입니다🟢 이번 포스팅에서는 Run Loop(런루프)에 대해 학습해보겠습니다🧑🏻💻 런루프.. 어디서 많이 보고 런루프의 이벤트 처리 그림도 봤었는데 막상 생각해보니 제대로 이해하고 있지 않더라구요. 그래서 이번 기회에 한번 파해쳐보겠습니다! Run Loop : 작업 스케쥴링과 전달된 이벤트를 처리하는 이벤트 처리 루프 : 런루프는 유저가 이벤트를 일으키고 그 이벤트들을 처리하는 프로세스 : 대표적으로 UIApplication이 메인 런루프를 뷰의 이벤트 및 업데이트를 처리해줄 때 활용 : 메인 런루프는 뷰와 관련 있기때문에 뷰하면 어디다..!? 메인 스레드에서 동작 : 런루프의 목적은 스레드에 작업이 있으면 하게하고 없으면 쉬도록 하는것에서 나옴 아래는 메인 스레드의 런루프 과정 동작을..
-
CI / CDiOS 2021. 4. 29. 16:50
안녕하세요. 그린입니다🟢 이번 포스팅에서는 CI / CD에 대해 간략하게 학습해보겠습니다🧑🏻💻 CI - Continuous Integration (지속적 통합) - 빌드하고 테스트 자동화하는것 까지 의미 (최소한 테스트가 가능해야함) - 정기적 빌드 / 테스트 되어 팀 레파지토리에 통합하는 것을 말함 (앱의 변경사항) - 팀의 개발자들이 형상관리 툴로 공유하여 사용하는 환경이 되어야함 (깃헙 등) - Jenkins 같은 CI tool에 소스코드 변경을 보내고 처리 (빌드, 테스트, 머지를 진행하고 완료 결과를 알림) CD - Continuous Delivery / Deployment (배포 자동화) - CD가 되기 위해 항상 CI가 선행되어야함 - SW가 신뢰 가능한 수준에서 배포될 수 있도록 지속 관..
-
Machine LearningiOS 2021. 4. 20. 19:26
안녕하세요. 그린입니다🟢 이번 포스팅에서는 머신러닝에 대해 학습해보고 iOS 환경에서 머신러닝을 적용해보도록 하겠습니다🧑🏻💻 머신러닝 - 인공지능(AI)의 일종 분야로 초기에는 조건문을 통해 규칙을 정하고 인공지능을 구현하였는데 빠지는 조건이나 한계가 있어 기기 스스로 사례와 경험을 통해 학습하도록 한것을 머신러닝🤖 - 머신러닝 모델 생성하는 단계: training - 머신러닝 모델 사용해서 응답 받는 단계: prediction CoreML - 앱에 머신러닝(CoreML) 모델을 통합하는 애플의 프레임워크 - 앱은 Core ML API / 사용자 데이터를 가지고 기기에서 학습하고 예측하고 조정함 - 모델은 사진분류 / 픽셀에서 개체 감지 등의 모델 훈련 (코드 작성이 불가능하거나 비현실적인 작업 수행)..
-
Core AnimationiOS 2021. 4. 1. 18:44
안녕하세요. 그린입니다🟢 이번 포스팅에서는 저번 Core Graphics에 이어 Core Animation에 대해 학습하겠습니다🧑🏻💻 Core Animation? : 시각적 요소에 대해 그래픽 랜더링 및 구성을 통해 애니메이션을 만드는 프레임워크 : 시작 및 끝 포인트의 매개변수를 구성하고 애니메이션을 구현하면 Task가 자동으로 일을 수행함! : 드로잉 작업을 그래픽 하드웨어로 전달하여 레이어 객체가 조작할 수 있도록 렌더링 작업을 가속화해 앱 속도 및 품질의 다운없이 높은 프레임과 자연스러운 애니메이션을 보여줍니다👏 -> UIKit와 AppKit와 밀접한 관계!! : 드로잉 시스템 자체가 아닌 앱의 콘텐츠를 Layer를 가지고 관리한다는 점에서 코어 그래픽스와의 차이🌟 : 코어 애니메이션은 뷰가 아..
-
Homebrew & Vapor ToolboxiOS 2021. 3. 30. 14:30
안녕하세요. 그린입니다🟢 이번 포스팅에서는 Homebrew와 Vapor Toolbox에 대해 학습해보겠습니다👏 Homebrew? : 홈브루(Homebrew)는 오픈소스 소프트웨어 패키지 관리 시스템의 일종으로 macOS의 소프트웨어 설치를 지원해준다. 즉, macOS용 패키지 관리자로 소프트웨어의 쉬운 설치와 업데이트 및 삭제 등을 관리해준다. Homebrew 설치 및 패키지 관리 1) Xcode Command Line Tool 설치 $ xcode-select --install 2) Homebrew 설치 $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" : 터미널에 해당 커맨..