본문 바로가기

전체 글

(65)
Fastlane , Github Action 이용하기 이직을 준비하면서 새로운 프로젝트를 할 팀원들을 구하고 있었고 DDD라는 좋은 사이드프로젝트 동아리가 있어 iOS개발팀으로써 DDD사이드 프로젝트를 진행하게되었고 팀원과 이야기하여 서로의 요구를 만족하는 기술들을 찾던중 팀원과 나 둘다 CI / CD에 상당히 관심이 많아 작업을 진행하게 되었고 평소 Local or 물리맥에서만 진행했던 작업들을 GithubAction 을 통해 진행할려고하니 변경해야할 사항 찾아봐서 고쳐야할 사항들이 많아 많은 공부를 하게되었다. Fastlane이란? App을 빌드하고 앱스토어에 업로드하고 심사제출, 테스트빌드 업로드, 테스터 초대 등 번거롭고 오래 걸리는 작업들을 Fastlane을 통해서 자동화할 수 있습니다. 1. Fastlane 설치 brew install fastl..
우아한테크세미나 코드리뷰편을 보고 난 후 느낀점 이번에 새롭게 회사를 이직하게되면서 1인 개발이 아닌 팀단위 iOS 개발 프로젝트를 참여하게 될 예정이였기에 기존에 코드리뷰를 해본 경험이 적은 나는 새로운 팀에가서 빠르게 적응을 하기위해 코드리뷰에 대해 찾아보고 있었고 그러던 와중 우아한 테크 세미나에 코드리뷰편을 진행한다는 소식을 듣고 온라인으로 풀로 시청을 하며 코드리뷰에 자세히 알 수 있었다. 전체적인 내용을 적으면서 내가 느낀점을 적겠습니다. 좋은 설계를 유지해야 생산성을 만들 수 있다. 더보기 리팩토링 2판을 읽고있는데 해당책의 저자가 했던 말과 동일한 이야기를 시작으로 세미나가 시작이 되었다. 공학의 특성은? 공학 = 설계 + 빌드 설계 : 예측하기 어렵고 , 급여가 비싸고 창의적인 사람들이 필요 빌드 : 좀 더 예측하기 쉬움 설계와 빌드가..
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..