본문 바로가기

분류 전체보기

(63)
Git Flow 협업하기 어제는 배달의민족 "코드리뷰"에 관한 세미나가 있어 시청하고 후기를 작성하느라 GitFlow를 공부만 하다가 멈췄다. 그럼 이제 실제로 더미 프로젝트를 만들어서 만들고 합치고 지지고 복고를 시작해볼려고한다. 자 우선 깃레포를 만들고 거기에 프로젝트를 넣어준다(이 부분은 너무 쉽기에 설명은 패스...) 그리고 바로 add , commit , push 하지 말고 .gitignore , .gitattributes 설정해주고 들어갑니다 gitignore에는 기본적으로 무시해야할것들을 추가해주기 위해 # Created by https://www.gitignore.io/api/xcode,swift,cocoapods # Edit at https://www.gitignore.io/?templates=xcode,swif..
팀단위 개발 준비하기 - Git Flow 이해 Vincent Driessen가 만든 Git으로 브랜치를 나눠 개발하는 방식 중 하나입니다. 특징은 5종류의 브랜치를 이용하여 저장소를 운영하게 됩니다. 5종류의 브랜치는 아래와 같습니다. Master(main) Release Develop Feature Hotfix 1. Master 가장 먼저 master 브랜치는 실제 제품으로 출시되고 운영되는 브랜치를 의미합니다. 여러 개발자들이 만든 기능을 합치고 테스트를 거쳐 이상이 없는지 확인합니다. 2. Release master 브랜치에 통합하기 전에 완성된 기능을 테스트 하는 브랜치를 의미합니다. 보통 제품으로 출시되기 전의 버전을 관리합니다. 3. Develop 여러 엔지니어들이 개발한 기능들을 통합해 놓은 브랜치를 의미합니다. 다음 버전을 대비하기 위..
Tuist , Swinject , Clean Architecture , MVVM - Coordinator Tuist가 뭔지 너무궁금해!! 로 시작해서 민소네님의 블로그를 보고 Swinject도 너무 궁금해!! 하다보니 모듈화를 해보고싶어!! 가 됬고 어떻게 계층을 나누고 모듈화를 해야하나 싶어서 일단 Clean Architecture를 이용해서 Domain과 네트워크 영역을 나눠보자!! 로 시작된 내 프로젝트... 시작한지는 생각보다 꽤 시간이 지났는데 평일에는 기초공부 , 주말에 지금 작성하고있는 프로젝트를 만들어야지로 시작했는데 이직기간과 맞물리다보니 평일에 기초공부와 과제 , 주말엔 면접 준비 및 개발과제 하다보니 조금씩 조금씩 미뤄줘서 이제야 완성해서 글을 쓰게 된다 해당 프로젝트를 만들면서 기존의 MVVM - Coordinator패턴으로 이뤄졌던 프로젝트에 Tuist , Swinject , Clea..
가상 메소드 테이블(Virtual method table) 가상 메소드 테이블이란? 가상 메소드 테이블은 동적 디스패치를 지원하기 위해 프로그래밍 언어에서 사용되는 메커니즘이다. 클래스가 가상 함수을 정의할 때마다, 대부분의 컴파일러들은 클래스에 숨겨진 멤버 변수를 추가하는데, 이것은 함수들에 대한 포인터들의 배열들을 가리킨다 이 부분을 이해하기위해 클래스에 함수가 동작하는 메모리 방식을 이해해야하는데 제가 그림툴을 잘 못써서 직접 적어서 보여드리면 그냥 주저리 주저리 설명을 드리면 클래스를 상속받은 변수 A에서 test라는 함수를 실행을 시키게되면 데이터영역에 클래스의 함수를 찾아가고 그 함수는 코드영역의 메모리 주소값을 찾아가 코드를 실행시키는 과정이 일어난다. 자세한 설명이 필요하다면 다른자료 or 앨런님의 강의를...! 그럼 본론으로 돌아가 가상 함수 테..
Restful API 에서 Rest는 뭐의 줄임말일까? https://tibetsandfox.tistory.com/19 REST(Representational State Transfer)란? REST란? REST는 Representational State Transfer의 줄임말로 애플리케이션 개발의 *아키텍처 중 하나입니다. (*아키텍처 : 애플리케이션을 설계, 제작하는데 사용하는 패턴과 기술의 총칭) 직역하자면 '대표 tibetsandfox.tistory.com https://www.redhat.com/ko/topics/api/what-is-a-rest-api REST API(RESTful API, 레스트풀 API)란 - 서버, 구현, 사용법 REST API(RESTful API)란 REST 아키텍처의 제약 조건을 준수하는 애플리케이션 프로그래밍 인터페이..
Hashable , Equatable , Identifiable https://developer.apple.com/documentation/swift/hashable Apple Developer Documentation developer.apple.com Hashable Hashable을 알기전 해쉬값 (Hash Value)을 알아야한다 그래서 해쉬값이란? -> 데이터를 간단한 숫자로 변환한 것 자세히 설명하면 : 원본 데이터를 해쉬 함수 (hash function)을 사용하여 64bit의 Int값으로 변환한 것이다. public protocol Hashable : Equatable { *// Hashable Protocol의 정의* var hashValue: Int { get } func hash(into hasher: inout Hasher) } 그렇다면 Hash..
프레임워크와 라이브러리 차이점 프레임워크 특징 정해진 규칙을 개발자가 따라야한다 제어의 역전 (Inversion of Control) 이 일어난다. 개발을 편하게 하기 위해 사용한다 -> ex) UIKit 라이브러리 특징 개발자가 코드를 제어할 수 있다.(언제 요청하고 , 응답받고 , 처리할 지 모두 주체가 결정한다.) 라이브러리는 개발자가 개발하는데 필요한 것 들을 모아둔것 단순 활용가능한 도구들의 집합을 이야기한다. -> ex) Alamofire 개념적으로 보았을때 둘의 가장 큰 차이는 엄청 심플하다 누가 누구를 컨트롤 하는가? 내가 코드를 컨트롤하냐? -> 라이브러리 누군가 만든 규칙을 따르냐 -> 프레임워크
Tuist 3.x 라이브러리 등록 방법 Tuist 관련 자료들을 보면 모두 버전이 2.x 타겟으로 되어있어 사용할때 디플리케이트 된 함수라고 떠서 머리가 조금 아프다. 그래서 이번에 직접 Doc를 보면서 Tuist 의 사용법을 공부했다. 기존이랑 많이 변하게된 부분이 라이브러리를 사용하는 부분인데 기존의 코드와 다르게 Dependencies 파일을 Tuist에 만들어준 후 SPM으로 사용할 라이브러리를 등록한다. import ProjectDescription let dependencies = Dependencies( swiftPackageManager: .init([ .remote(url: "https://github.com/ReactiveX/RxSwift.git", requirement: .upToNextMajor(from: "6.5.0")..