[CocoaPods] Xcode16.0에서 pod install 안되는 이슈 해결
·
📱 iOS
Xcode16.0에서 pod install 안되는 이슈Xcode 16.0 업데이트 이후, CocoaPods로 install하면 에러가 발생하는 이슈가 있었다. 문제의 파일.xcodeproj/project.pbxproj관련 코코아팟 이슈 문제 해결 과정문제의 파일은 해당 경로이다.nano 프젝명.xcodeproj/project.pbxproj을 통해 CLI에서 편집기로 열어준다.objectVersion = 77; -> objectVersion = 56;으로 변경아래 두 파일 제거minimizedProjectReferenceProxies = 1;preferredProjectObjectVersion = 77;.pbxproj에서 단어 검색이 어려우면 nano에서 ctrl + W로 단어 찾으면 된다.다시 pod i..
[UIKit] Cell Identifier 지정할 때, 휴먼 에러를 방지하기
·
📱 iOS/UIKit
학습 목표TableView, CollectionView에서 Cell 등록할 때를 비롯하여Cell 이름을 알아야 할 때, identifier를 어떻게 작성해야 휴먼에러를 방지할 지 알아보기학습 내용첫 번째 방법: “Cell이름”으로 관리하기결론부터 말하면 제일 안 좋은 방법이다.final class IssueTableViewCell: UITableViewCell { }final class IssueListViewController: UIViewController { private let issueTableView = UITableView() override func viewDidLoad() { super.viewDidLoad() issueTableView.regi..
[UIKit] TableView에서 무한 스크롤 페이지네이션 처리
·
📱 iOS/UIKit
학습 목표무한 스크롤 페이지네이션 구현하기GitHub API에서 Issue와 Assignee 데이터를 받아오는 방법 이해하기TableView와 ViewModel을 활용한 무한 스크롤 구현학습 내용무한 스크롤 페이지네이션 구현본 프로젝트에서는 GitHub API로부터 Issue와 Assignee 데이터를 받아오고 있다. GitHub API는 기본적으로 한 페이지에 30개의 데이터를 제공하지만, 스크롤이 끝나갈 때 다음 페이지를 추가로 요청하는 무한 스크롤 방식으로 구현할 수 있다.1. 쿼리 파라미터 추가하기API 호출 시, URL에 페이지 번호를 쿼리로 추가해 페이지네이션을 처리한다. queryParameters에 페이지 정보를 넣어줘서 각 요청에 맞게 페이지가 포함된 URL을 생성할 수 있다.var qu..
[네이버 부스트캠프] 멤버십 1 ~ 4주차 회고록
·
✍🏻 회고록
개요부스트캠프에는 베이직 → 챌린지 → 멤버십, 총 3가지 단계가 있다.지난 글에서 2단계 과정인 챌린지를 수료한 내용에 대해 담았는데,현재 나는 챌린지를 수료하고, 멤버십 입과에 성공하여 최종 3단계를 진행하고 있다. 오늘은 네이버 커넥트재단의 부스트캠프 멤버십 과정을 시작한 지 벌써 4주차가 끝나는 금요일 밤이다.지난 1 ~ 4주차 간의 과정을 담아보겠다. 학습 내용확장성을 생각하며 프로그래밍하기미션은 챌린지와 달리 하루 단위가 아닌, 2주 단위이다.깃허브를 통해 1일 1PR을 보내고 팀원들의 PR을 보며 피드백을 하는 시간을 가진다. 매주 월요일마다 1주일에 대한 미션을 공개하기 때문에미션을 시작하는 첫 주에는 다음 주에 어떤 미션이 나올지 모르므로 확장성을 염두에 두고 코드 작성을 해야한다. 첫 ..
[네이버 부스트캠프] 챌린지 수료 회고록
·
✍🏻 회고록
https://blog.naver.com/kyxxn_/223542686446 [회고] 부스트캠프 웹・모바일 9기 챌린지를 마치고, 솔직담백 후기지난 4주간 내가 뭘 했고, 뭘 배우고 느꼈는지, 그리고 이 기간에 만난 좋은 사람들도 자랑할 거다. (본 게...blog.naver.com 글 발행일: 2024년 8월 10일
[ADR] 내 프로젝트에서 겪은 OCP 원칙에 대한 생각 정리
·
🖥️ Computer Science/🏛️ Software Architecture Patterns
ADRArchitecture decision record내 프로젝트에서 겪은 OCP 원칙에 대한 깊은 생각 정리학습 목표객체지향 SOLID 원칙 중 OCP에 대한 고민을 해본 경험을 적는다.현 프로젝트에 아키텍처를 OCP 원칙을 고려하여 생각해본다.학습 내용문제 상황먼저 위와 같은 모델이 있다.Shapable이라는 프로토콜을 도형 종류들이 채택하게끔 추상화 했다.그리고 Factory 패턴을 적용하여 Shapable 프로토콜을 채택한 도형을 만들어서 반환해주려고 한다.나는 여기서 Factory를 어떻게 만들어야 할 지 고민했다.하나의 ShapeFactory vs Shapable마다 Factory팩토리 패턴을 구현하기 위해 위 두가지 방법이 있을 것 같다.내가 생각한 두 가지 방법을 먼저 적어보겠다.하나의 ..
[GitHub] 하나의 PR 메세지에 PR 링크를 올려 잘게 쪼개기
·
🎸 기타/git
학습 목표현재 Upstream의 레포지토리를 Fork해서 작업하고 있다.그리고 PR은 하루에 단 한 번만 보내야 하는 상황이라, 잘게 쪼개서 PR 보내기를 할 수가 없다.Fork한 내 개인 브랜치들 간에 잘게 쪼갠 PR을 하나의 PR 메세지에 올려서 리뷰가 용이하게 해봤다.본 내용은 그 경험을 공유하는 글이다.학습 내용각각의 PR 링크는 모두 Kyxxn/swift-p2-canvas 레포지토리의 브랜치들 간에 PR 작업한 것들이다.Upstream에 1일 1PR을 위한 메인 브랜치를 만든다. ex) Day10Day10을 Base로 분기해서 Feature 혹은 Refactor 단위로 작업 브랜치를 만든다.작업 브랜치 기능 구현이 완료되면 Day10에 Merge 시킨다.1~3번 작업은 모두 내 개인 레포지토리에..
[Swift] struct가 아닌, enum으로 네임스페이스 관리하기
·
📱 iOS/Swift
학습 목표네임스페이스 개념 이해하기struct로 네임스페이스를 만든다면 ?enum으로 네임스페이스 만들기학습 내용네임스페이스란 ?프로젝트를 하다가 static func 정적 메소드를 사용할 일이 많아져서 정적 메소드를 모아둔 구조체를 만들어서 관리하고자 했다.이를 Swift에서는 네임스페이스라 부르는 듯하다. (관련된 애들을 묶어놓는 단위)그러나, 아래 코드는 문제를 가지고 있다.struct RandomUtil { static func generateSize() -> Size { let width = Double.random(in: 100...150) let height = Double.random(in: 100...150) return Size(width: w..
[UIView] frame & bounds (3)
·
📱 iOS/UIKit
아래 좌표계가 나와서 본편의 사진은 소들님 걸로 사용하겠습니다사진 출처: 개발자 소들이학습 목표frame과 bounds를 언제 사용하는지 알아보자ScrollView를 곁들인,,학습 내용1. Frame은 언제 사용할까frame은 UIView의 위치, 크기를 나타낼 때 사용됨SuperView로부터 위치를 계산해서, size에 따라 그려주는 역할즉, UIView의 위치 및 크기 설정 때 사용함ley myView: UIView = .init(frame: frame)이처럼 UIView의 좌표 잡을 때 사용됨2. Bounds는 언제 사용할까UIView의 위치, 크기를 나타낼 때 사용함위치(origin): 자신의 좌표계크기(size): View 영역 자체의 크기a. View를 회전한 후, View의 실제 크기를 알고..
[UIView] frame & bounds (2)
·
📱 iOS/UIKit
아래 좌표계가 나와서 본편의 사진은 소들님 걸로 사용하겠습니다사진 출처: 개발자 소들이학습 목표frame과 bounds 차이 다시 알아보기bounds를 왜 쓰는 건지 알아보기학습 내용frame vs bounds frameboundsorigin (x, y) 기준점Super View의 좌표계자신의 좌표계size (width, height) 기준점View 영역 모두를 감싸는 사각형View 영역 자체지난 주에 하나하나 실습하며 알아봤던 각각의 특징이다.이제 위치 (x, y)를 변경할 때, frame과 bounds가 어떻게 달라지는 지 알아보자frame의 origin 값을 변경하는 경우bounds가 아닌 frame의 origin은 SuperView의 영향을 받음즉, secondView가 바뀌면, thirdView..