분류 전체보기 672

[일주일 회고] 5월 1주 차 (4월 25일 ~ 5월 3일)

한 일 (4월 25일 ~ 4월 30일)Unit Test 자동화내용테스트는 moti 2.0의 주요 목표 중 하나입니다.따라서 Unit Test 자동화도 꼭 적용하고 싶었고, 깃허브 액션으로 자동화를 성공했습니다.PR이 생성될 때, develop에 push할 때 Unit Test를 자동으로 수행합니다. 잘한 점Unit Test를 적용하면서 여러 시행착오가 있었습니다.이런 시행착오 속에서 Unit Test 자동화를 포기하지 않은 점이 뿌듯하네요.이 뿌듯함이 moti 2.0을 진행하면서 꾸준한 테스트를 이끌 원동력이 되지 않을까 싶습니다. 또, 이 과정을 포스팅으로도 남겼습니다. (보러 가기)옛날에는 문제가 생겼을 때 자연스럽게 기술 포스팅으로 이어졌는데,최근에는 의식적으로 신경을 써야한다는 걸 깨달았습니다.사..

[iOS] Unit Test를 GitHub Actions로 자동화하며 겪은 에러 해결 과정

Unit Test 자동화GitHub Actions를 활용하면 Xcode에서 작성한 Unit Test를 자동으로 체크할 수 있습니다.PR을 생성할 때, push를 할 때 등의 액션이 발생하면 Unit Test를 수행하는 방식입니다.Test 편의성과 안정성을 동시에 챙길 수 있으므로 꼭 필요한 과정입니다.  GitHub Actions로 자동화하며 겪은 에러저는 GitHub 안에서 개인 프로젝트 사이클을 돌리고 싶었기 때문에 GitHub Actions를 선택하였는데요.쉽게 가능할 줄 알았지만, 많은 에러를 겪었습니다. 고군분투의 흔적 ;;결과론적인 이야기지만, 앞에서부터 차근차근 살펴봤다면 쉽게 해결했을 텐데... 반성합니다 🥲성공한 Workflow는 최하단에 있으니 최종 결과만 필요하시면 쭉 내리시면 됩니..

iOS/개념 & 개발 2024.04.27

[일주일 회고] 4월 4주 차 (22일 ~ 26일)

한 일 (22일 ~ 24일)moti 2.0 개발 시작내용일이 바쁘다는 핑계로 미뤘던 moti 리팩토링을 시작했습니다. (Github Repository)지금까지 느낀 moti의 문제점과 저의 문제점을 개선하는 게 가장 큰 목표이고,주요 개선 사항은  1. 서버를 Firebase로 변경한다.  2. 테스트를 적극 연습한다.입니다.  잘한 점1.시작을 했다는 게 가장 잘한 거 같아요.시작으로 반을 채웠으니, 나머지 반도 열심히 채우겠습니다. 2.프로젝트의 목표를 명확히 정하고 글로 정리했습니다. (보러가기)해야 하는 것과 하지 말아야 할 것으로 나누어 적었더니 제가 이 프로젝트로 무엇을 이루고 싶은지 명확해졌어요.시간과 열정은 무한하지 않으니 효율적이고 알차게 다루려고 합니다..

[Swift] difference(from:)와 applying(_:)

difference(from:) difference(from:)은 두 개의 Collection 차이를 쉽게 구할 수 있는 메서드입니다. A와 B를 비교했을 때 무엇이 추가로 있고, 무엇이 없는지 알 수 있습니다. (A collection of insertions and removals that describe the difference between two ordered collection states.) 사용법도 간단합니다. let arr1 = [1, 2, 3, 4] let arr2 = [1, 3, 4, 5] let diff = arr2.difference(from: arr1) diff를 출력해 보면 arr1이 arr2가 되기 위해 무엇을 추가하고, 무엇을 빼야 하는지 알 수 있습니다. "Collect..

[Xcode] Placeholder가 있는 Code Snippet 작성 방법

Code Snippet Code Snippet은 미리 정한 짧은 키워드로 긴 코드를 자동 완성해주는 기능입니다. 아무리 긴 코드라도 미리 등록한 단축어를 입력하면 끝이니 생산성에 큰 도움을 줍니다. (전 Attributes, Constraints처럼 오타가 많이 나는 단어도 애용합니다 ㅎㅎ;) Code Snippet은 많이들 아시지만, placeholder가 포함된 code snippet은 잘 모르기도 합니다. Placeholder가 있다면 무엇을 넣어야 할지 파악하기 쉽고, Tab을 이용하여 입력 부분으로 바로 이동할 수도 있습니다. (중요) Placeholder를 포함한 Code Snippet 생성 Placeholder는 를 작성하면 됩니다. Code Snippet이 아니더라도 코드 입력창에서 을 작..

iOS/Xcode 2024.04.03

[을지로 맛집] 온점 리뷰 / 장터국밥 맛집 / 육회 비빔밥 맛집 / 숯불구이 맛집

기본 정보 가게 이름 온점 을지로점 메뉴 & 가격 장터국밥 12,000원 육회 비빔밥 13,000원 온점 시그니처 갈비 (250g) 38,000원 밑반찬 온점의 밑반찬입니다. 깍두기, 배추김치, 시금치나물, 오징어젓갈(추정)이 나와요. 밑반찬의 간이 세지 않고 메인 요리랑 함께 먹기 딱 좋더라고요. 특히 시금치는 갈 때마다 리필까지 하면서 맛있게 먹고 있어요. 장터국밥 첫 번째 메뉴는 장터국밥입니다. 정말 괜찮은 점심 메뉴예요. 온점이 좋은 품질의 소고기 숯불구이를 팔고 있는데요. 정육하고 남은 고기로 여러 국을 끓이는 거 같더라고요. 이 장터국밥에도 고기가 정말 푸짐하게 들어갑니다. 건더기로는 소고기, 우거지, 무, 파가 들어가고, 딱 깔끔하게 매콤한 정도로만 고춧가루가 들어갑니다. 장터국밥하면 자극적..

[iOS] DTO의 Optional 속성과 앱의 하위 호환성 고민 (결론 없음 주의)

* 혼자 고민한 과정을 기록 목적으로 적은 포스팅입니다. 읽기 전 참고 부탁드립니다 :) DTO DTO는 서버와 통신하는 API의 데이터를 디코딩, 인코딩하기 위한 객체입니다. { "id": 1000, "name": "다이어트", "continued": 10, "lastChallenged": "2011-04-10T20:09:31Z" } 가령 API로 오는 데이터가 위와 같다면, struct CategoryDTO: Codable { let id: Int let name: String let continued: Int let lastChallenged: Date } CategoryDTO는 id, name, continued, lastChallenged 속성을 가지게 됩니다. 이때 각 속성은 Non-옵셔널이 ..

iOS/개념 & 개발 2024.03.20

[건대 맛집] 정면 리뷰 / 국수 맛집 / 미쉐린가이드 서울 2024

기본 정보 가게 이름 정면 메뉴 & 가격 2인 세트(백면 or 홍면 2개, 단호박 식혜 1개) 21,000원 - 백면, 홍면 9,000원 - 단호박 식혜 3,500원 가게 입구 가게 입구입니다. 화이트톤 건물에 큰 간판 대신 글자를 양각으로 만들어서 세련된 느낌을 줬어요. 가게 입구에는 정면의 대표 메뉴 두 가지가 있습니다. 대표 메뉴라기 보단 유일한 메뉴입니다 ㅎㅎ 정면은 두 가지 국수 + 단호박 식혜만 파는 가게입니다. 미쉐린가이드 서울 2024에도 등재되었다고 해요. 이거까진 몰라는데 입구에 붙어 있어서 대단하구나 싶었어요. 회사 동료분에게 여길 방문 했다고 말하니 유튜브에도 출연하신 적이 있더라고요? https://youtu.be/_5sXa9n_cgY?si=85uK6-0fbl4leVRi 사장님께서..

[Swift] 프로토콜 메서드의 매개변수 기본 값 설정 (Defining default parameters for protocol methods)

서론 프로토콜 타입을 사용할 때 불편한 점이 하나 있습니다. 메서드 파라미터에 기본 값을 사용할 수 없다는 점입니다. 예를 들어, UseCase의 execute 파라미터로 page를 전달해야 한다고 합시다. protocol UseCaseProtocol { func execute(page: Int) } struct UseCase: UseCaseProtocol { func execute(page: Int) { // Logic } } let useCase: UseCaseProtocol = UseCase() useCase.execute(page: 1) 그러면 위 코드처럼 항상 page를 전달해줘야 해요. page에 기본 값을 설정하고 싶어도 프로토콜 메서드에는 Default argument를 설정할 수 없다는 ..

[iOS] ProxyMan 설치부터 Response 관찰까지

서론 앱을 개발할 때 서버와 API 통신을 자주 합니다. API 통신 개발 과정에서 문제가 생겼을 때 디버깅을 위해 Postman, Swagger를 사용하기도 합니다. Postman, Swagger도 좋은 방법이지만, 실제 내 앱이 어떤 요청과 응답을 주고 받는지 궁금할 때가 있습니다. if let requestBody = urlRequest.httpBody, let requestBodyString = String(data: requestBody, encoding: .utf8) { print("[요청 데이터]\n\(requestBodyString)") } if let responseBody = try? encoder.encode(body), let responseBodyString = String(dat..

iOS/개념 & 개발 2024.02.21
반응형