반응형

개발 Story 10

개발자가 CI 시스템을 알아야 하는 이유.

ReadCI systems are the blood to automate tasks for the whole team. Learn how to use it, and you’ll learn how to optimize your company’s current CI system, which can help you jump to the next step of your career.- Riccardo Cipolleschi -   Step up Your Career With CIDiscover how learning to work with a continuous integration system can help your careerbetterprogramming.pub Opinion  개발자 초년기때는 CI라는 ..

개발 Story 2023.02.07

Clean Architecture + MVVM in iOS Swift

Patterns... 패턴은 개발자들의 경험과 지식으로 만들어진 문제해결 가이드라인과도 같다. 패턴하면 주로 디자인 패턴을 떠올리지만, 아키텍쳐 패턴도 존재한다. 그리고 아키텍쳐 패턴은 프로젝트 전반적으로 적용된다. 아키텍쳐 패턴이 적용되려면 프로젝트에 참여하는 모든 개발자들과 어느정도 합의가 이루어지는 게 좋다. 아키텍쳐 패턴은 처음에 앱을 구성 하는 시점에 최적의 패턴이 적용되는 건 아니다. 분명 각 앱의 성격이나 개발자들의 방식에 따라서 더 잘 어울리는 아키텍쳐가 있을테지만, 개발하다보면 앱의 성격이 바뀌기도 하고 예상과는 다른 요구사항이 들어오기도 하고 새로운 문제가 발생하기도 하며, 개발자들의 구성이 바뀌기도 하기 요구되는 아키텍쳐가 바뀔수도 있다. 또, 새로운 언어가 등장하고 새로운 API가 ..

개발 Story 2022.09.02

M1 issue - Homebrew 설치 에러. (command not found: brew)

2달 전에 M1 맥프로를 받고 개발 환경을 설정했다. 생각보다 그 과정이 녹록치 않았다. 기본적인 소프트웨어 설치부터 잘 되지 않아 좌절을 겪으며 알게 된 내용들을 기록해둔다. Homebrew 설치 방법이다. Homebrew 공식 페이지에 나와있는데로 설치하면 안된다.원래 설치 방법(인텔맥) 과 command not found: brew/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"원래 가이드대로 설치하고 실행하면, 터미널에서  brew를 찾을 수 없다고 나온다. zsh: command not found: brew M1에서 설치 Path 가 기존 인텔칩과 달라서 brew 를 못찾는 ..

개발 Story 2022.05.07

SOLID 원칙. 리팩토링 할 때 알아두면 좋은 개념.

Refatoring을 입에 달고 사는 개발자들 개발에서는 언제나 리팩토링이라는 단어나 언급된다. 처음엔 잘 짜여진 코드라 할 지라도 시간이 지나 API가 변경이되고, 요구사항이 추가 혹은 삭제되기도 하면서 결국엔 레거시가 되어버리기 때문이다. 어쩌면 좋은 코드라는 건 시간에 따라 바뀌는 트렌드와 같다. 개발자는 그 트렌드에 맞추기 위해 고군분투하며 리팩토링을 외칠 수 밖에 없다. 그리고 리팩토링할 때 아래와 같은 개념으르 알아두면 좋다. SOLID 원칙 프로그래머가 유지 보수와 확장성이 좋은 소프트웨어를 만들고자 할 때, 적용하면 좋은 원칙이다. Robert C. Martin 아저씨가 명명한 내용이다. 각 앞글자가 의미하는 문구는 아래 표와 같다. SRP (Single responsibility prin..

개발 Story 2022.05.04

iPad 기능. 어떤 걸 개발 해볼까.

iPad에 맞는 화면을 만들어보고 싶은데, 어떤 화면부터 만들어야 좋을지 모르겠다. iPAD스러운 앱을 만들 때 고려해볼 만한 기능은 어떤 것들이 있는지 알아봤다. iPad 기능들. Multitasking SplitViews & sidebars Multiple Windows (Enabling Multiple Windows on iPad) PopOver Band Selection & Pointer Accessories References https://www.raywenderlich.com/27454008-ipados-15-tutorial-what-s-new-for-developers. Specifying the Scenes Your App Supports Introducing Multiple Window..

개발 Story 2022.05.01

Realm m1 issue. Could not find module 'RealmSwift' for target 'arm64-apple-ios-simulator'; found: i386, x86_64-apple-ios-simulator, x86_64, i386-apple-ios- simulator, at:`path`

'arm64-apple-ios-simulator' m1 맥북으로 바꾼 뒤로, 빌드에 어려움을 겪는다. 시뮬레이터 아키텍쳐에 x86뿐 아니라, arm64가 추가 되면서 생긴 이슈이다. (다른 포스팅에서 좀 더 상세히 다뤄보자) 그래서 arm64-apple-ios-simulator 어쩌고 하는 에러가 뜨는 것이다. 시뮬레이터 아키텍쳐 때문에 생긴 이슈이기 때문에 디바이드 빌드하면 문제 없이 잘 동작한다. 그래도 시뮬레이터 빌드를 하고 싶으니까, 해결을 해본다. 해결 방법은 시뮬레이터 빌드인 경우에 arm64는 빼라고 하는 것이다. 그런데 3rd party 라이브러리를 가져다 쓰는 경우에는 경우에 따라 설정을 바꾸는 방법이 다르다. cocoapod으로 연동한 경우에는 podfile에서 configuration..

개발 Story 2022.04.15

multiple release에 맞는 브랜치 전략(Branch Strategies)? #1- git flow/ github flow / gitlab flow 알아보기

협업하다보면 꼭 필요한 부분이 바로 브랜치 전략(branch strategies)이다. 몇몇 팀을 경험하면서 느낀 점이 있다. 대부분의 팀이 gitflow를 채택해서 쓰고 있지만, 각 팀마다 전통적인 gitflow전략에서 조금씩(조금 많이...?) 변형을 주고 있었다. 그럼에도 불구하고 모두들 '우리는 gitflow를 쓰고 있어요'라고 이야기한다. 아마 처음 브랜치 전략을 세울 때 gitflow에서 시작했기 때문인 것 같다. 사실 개발하는 소프트웨어의 특성과 배포 방식이나 스케쥴에 따라서 알맞은 전략이 다르다. 그래서 전통적인 gitflow만을 고집하는 것도 융통성이 없는 것일지도 모르겠다. 최근에는 여러 버전의 피쳐를 동시에 개발하고, 각 버전별 테스트와 배포의 시간차가 거의 없는 팀의 브랜치를 들여다..

개발 Story 2022.03.24

개발 속도를 올려주는 Xcode 단축키 모음

개발할 때 자신이 사용하는 툴의 단축키를 아는 건 개발자에게 중요하다. 일단 키보드에서 손을 떼지 않고 모든 작업을 해내는 모습이 프로처럼 보이기도 하고, ㅎㅎ 실제로 키보드와 마우스를 왔다갔다하는 시간을 모으면 꽤 많은 시간을 아낄 수 있다. 또 개발 흐름을 끊기지 않고 이어갈 수 있다. 그런데도 불구하고 내가 쓰는 단축키는 많지 않았다. 필요할 때 마다 마우스로 손을 옮겼는데, 그때 마다 '이 단축키 알아둬야지' 하면서도 '지금은 바쁘니까 일단 넘어가자' 했다. 참 모순적인 행동이었다. 자주 사용했던, 앞으로도 유용할 Xcode 단축키를 지금 정리해둔다. 화면 관련 CMD + SHIFT + Y 디버그 창 오픈/클로즈 CMD + 0 왼쪽 사이드바 오픈/클로즈 CMD + 1~9 왼쪽 사이드바 프로젝트트리..

개발 Story 2021.12.20

다중 작업이 동시에 끝날 때 까지 기다리려면 DispatchGroup

순서에 상관없이 여러 작업이 끝난 뒤에 어떤 작업이 실행되어야 하는 경우가 있다. 몇년 전에 나도 같은 케이스를 만나서 두 작업이 모두 완료 되는 순간을 어떻게 알 수 있을까 고민한 적이 있다. 다양한 방법을 사용할 수 있겠지만, 나는 그 때 DispatchGroup을 활용하기로 결정했다. 예를 들어 Thumbnail과 Description을 별도의 URL에서 받아서 노출해야 하는 경우가 있다고 해보자. 썸넬을 받아오는 Task 하나, 글자를 받아오는 Task 하나가 각각 동시에 실행 되도록 한다. 둘 중 어느 작업이 먼저 끝날지는 알 수 없다.(또한 어느 것을 먼저 받아오는 것이 더 효율적인지도 알 수 없다. 그 판단은 시스템이 한다.) 두 작업이 모두 완성 되면, 두가지 정보를 조합해서 화면에 노출하..

개발 Story 2021.12.07

REST API로 전환하면 "앱" 은 괜찮나요?(REST, RESTful API)

REST API로 전환하면 "앱" 은 괜찮나요? 몇년 전에 서버 개발자가 질문을 이런 질문을 한 적이 있다. REST API로 전환하면 "앱" 입장에서는 괜찮은가요? 서버에서 REST API를 적용해보자는 말이 나왔기 때문이었다. 혹시 앱에서 할 일이 더 많아지는 건 아닌지, 아니면 앱에서 관리가 더 쉬워지는지 물은 것이었다. 나는 어쩐지 앱 입장에서 장단점을 이야기해야 할 것 같았다. 그런데 그런 지식은 내머릿속에 없었다. 그동안 나는 서버에서 주는 API 명세만 있으면, 명세대로 데이터를 요청하고 받았다. 같은 회사의 서버 뿐 아니라, 필요에 따라 다른 팀이나 오픈 API를 사용하는 일도 있었기에 그 중에는 분명 REST API도 있었다. 하지만 나는 API 의 형태나 방식을 따지고 구분한 적은 없었..

개발 Story 2021.10.07
반응형