분류 전체보기
[한배:국악 매트로놈] Xcode Cloud를 통한 CI/CD 도입기
기획이 늘어나고 코드를 개선하면서 코드를 분리하거나 이관하는 경우가 발생하였다. 수정된 코드를 신규 Release 전에 기능을 확인하지만 따로 QA를 진행할 리소스는 없기 때문에 배포 후 기존에 발생하지 않았던 기능적 문제가 있는 부분을 발생하고 추가 Release를 진행하게 되는 경우가 꽤 많았다. 신규 코드 배포 시 테스트, 아카이빙, 배포하는 과정 x 2를 수행하게 되면서 배포에 들어가는 시간을 단축하고 싶었다. 또한 매 배포 후 확인되는 문제 사항에 대해서 코드의 품질이 일관적이지 않음을 깨닫고 CI/CD를 도입함을 통해서 배포 이전에 최소한의 코드 품질을 자동적으로 유지할 수 있도록 조치를 취해야 겠다는 생각이 크게 들었다.1. CI/CD에 대하여CI란? 공유 저장소의 선택된 브랜치에 코드를..
[설정] Xcode Cloud workflow 확인 및 생성 불가 문제 해결
CI/CD 도입을 위해서 Xcode Cloud를 사용하기로 결정하고 팀 내에서 사용하기 위해서 설정을 하면서 발생한 문제 상황에 대해서 기록합니다. 1. xcode 프로젝트에서 workflow 생성 안됨 - signing & capabilities에 등록된 Provisioning Profile은 프로젝트 소유주의 것을 등록해서 사용하기 때문에, Apple ID의 Account에 등록된 개인 Team 계정과 일치하지 않아서 아래 오류가 발생하게 된다."To Keep the capabilities and entitlements consistent between your project and Xcode Cloud, update the target settings"""ProjectName" could n..
[한배:국악 매트로놈] 클린아키텍처 첫 도입기
처음 Swift 개발을 시작했을 때는 문법을 배우고 앱을 개발하는 프로세스에 집중을 하게 된다. 지금까지 나는 이러한 상황 속에 있었고, 주변에 있는 경험많은 개발자들이 아키텍처의 필요성에 대한 이야기를 할 때 아직 내가 도달하기엔 어려운 이야기라고 생각했다. 그리고 드디어 이제는 아키텍처를 도입해도 될 때라는 생각이 들어 마지막 프로젝트에서 클린아키텍처를 적용해보는 과정을 기록해보려고 한다.1. 시스템 아키텍처란?시스템 아키텍처는 시스템의 구조를 정의하고 구성 요소 간의 관계를 설계하는 방법을 말합니다. 아키텍처라는 용어를 여기저기서 참 많이 들어보는 것 같은데 대략적인 느낌만 있고, 그 실체를 설명하라고 하면 항상 어렵다고 느끼는 경우가 있을 것이다. 위에서 설명하는 정의가 어렵게 느껴지지만 아키텍..
[MC3] 내 기준 가장 이상적인 팀플레이
이번 프로젝트는 기존에 인사만 나눠봤지 직접적으로 대화를 해보지 러너들과 함께 5인의 팀을 결성하게 되었다. 우리팀은 디자인 3명, 개발자 2명으로 구성되었고 따로 리더나 서기를 맡고자 하는 사람이 없는 상황이다. 이런 상황에서 내가 어필했던 규칙은 5명이 페어로 매일 번갈아가면서 (사회자, 기록자)의 역할을 맡는 것이였다. 나를 제외한 모든 팀원이 따로 사회자와 기록자를 지정해본 경험도 없었고, 기록자체를 꾸준히 진행한 경험도 없었다. 따라서 다른 팀원들에게는 새로운 테스크가 추가된다는 것이 부담스러웠을 수도 있는 상황이였다. 내가 생각한 사회자의 역할은 준비를 많이 해야하고, 누군가 정해진 업무로 맡아야 하는 것이 아니라 사회자의 역할이 명확하게 필요한 상황에서의 개입이였다. 각자 자유롭게 의견을 ..
[Bridge3] 나의 1순위 내재적 동기를 찾아서
매크로 챌린지의 팀 구성 방식이 공개되었다. 매크로는 지금까지 자율적으로 팀을 구성하도록 진행해왔고, 이번에도 마찬가지였다. 알럽나이들의 이야기를 들어보면 이맘때쯤 뒤에서 서로 나중을 기약하는 이야기들을 나눈다고 했다. 무조건 어벤저스로 불리우는 사람들과 같은 팀을 하고 싶은 생각은 없었다. 최근 그 생각이 더 강해졌다. 기술이 뛰어난 팀원이지만 나랑 열정의 정도가 다를 수 있다. 나랑 주제에 대한 관심도는 다르지만 협업과 소통의 방식에서 잘 맞을 수도 있을 것이다. 함께 팀원을 해본 사람에 대해서는 조금 더 알 수 있겠지만, 우리와 또 함께할 다른 팀원들 사이에서의 시너지가 어떻게 나올지는 또 모르는 일이다. 나는 예언자가 아닌 평범한 인간으로 내가 선택한 팀원들과의 3개월이 어떤 방식으로 진행될지, ..
[백준-2583] 영역 구하기 #DFS #BFS
1. 백준-2583 영역 구하기https://www.acmicpc.net/problem/2583 2. 알고리즘 카테고리 : DFS, BFS3. 나의 풀이 알고리즘(1차) : DFS- 알고리즘을 보면서 리트코드의 섬찾기와 동일한 문제라고 생각이 들었다. 따라서 0인 공간을 따라서 상하좌우를 탐색하는 재귀 형식으로 문제를 풀이하였으나 "런타임 에러 (RecursionError)"를 보게 되었다. https://leetcode.com/problems/number-of-islands/- Recursion Error는 Recursion이 시스템 설정 이상으로 깊게 들어가서 발생하는 오류로 임시적인 해결 방법으로는 sys.set recursion limit을 이용하여 한계치를 임의로 올려주는 방법이 있다. 하지만 ..
[NC2] 애플 생태계에서 수영해보기
NC2를 진행하기에 앞서 애플 생태계를 알아가는 과정이 매우 흥미로웠다. 200명이 50개의 Apple에서 제공하는 프레임워크와 기술들을 알아보았고 나누는 시간이 있었는데, 이렇게나 다양한 기술을 제공하고 있다는 것에 놀랐고 개발의 범위가 엄청나게 다양할 수 있다는 것을 알게 되었다. 그리고 생각보다 UIKit기반으로 만들어진 기술들이 많다보니 UIKit에 대한 공부 없이는 더 발전할 수 없을 것 같다고 생각하게 되었다. UIKit을 꼭 하자!보다는 해당 프레임워크가 어떻게 동작하는지, 어떤 특성이 있는지를 공부해보면 기술을 응용하는데 좋을 것 같다고 생각했다. 내가 하고싶었던 1,2순위 기술은 아니였지만 러너들이 작성해준 기술 설명을 읽다가 나름 흥미로워보여 선택한 3순위 RoomPlan이 배정되었다..
[백준-11279,1927] 최대힙, 최소힙 #힙
1. 백준-11279 최대힙, 1927 최소힙https://www.acmicpc.net/problem/11279https://www.acmicpc.net/problem/19272. 알고리즘 카테고리 : 힙3. 나의 풀이 알고리즘(1차) : 힙import heapqmax_heap = []input_count = int(input())for _ in range(input_count): i = int(input()) if i == 0: if len(max_heap) == 0: print(int(i)) else: print(-heapq.heappop(max_heap)) else: heapq.heappush(max_hea..