[회고] 네이버 부스트캠프 웹・모바일 8기 그룹 프로젝트 1주 차 회고 & 기술적 고민
·
경험 회고/네이버 부스트캠프 웹・모바일 8기
서론 11월 6일부터 네이버 부스트캠프 웹・모바일 8기 그룹 프로젝트 1주 차가 시작되었습니다. Mobile/FE 2~3명, BE 2명이 모여 하나의 프로젝트를 진행하는 활동입니다. 네이버 부스트캠프 웹・모바일 8기 그룹 프로젝트는 6주동안 진행되며 마지막 6주 차에는 현업 개발자분들 앞에서 결과 발표를 하게됩니다. 기획 이번 1주 차는 기획 주였습니다. 6주 간 어떤 앱을 만들지 고민하고 기획, 디자인하는 시간이었는데요. 저희 팀은 기획은 다함께, UX는 iOS 파트가, 디자인은 제가 진행했습니다. 기획자가 따로 없고 iOS, BE 개발자가 서로의 기술적 고민을 충족시키기 위한 기능을 생각해내는게 쉽지 않았는데요. 긴 시간 회의하고 각 파트에서 양보하면서 타협점을 잘 찾은 거 같습니다. (사실 아직도 ..
[iOS] XCTest에서 비동기 테스트하기 (XCTestExpectation)
·
iOS/개념 & 개발
서론 UnitTest 사용해보기와 XCTest 성능 측정 (Command Line 환경)에서 UnitTest를 하는 방법과 성능 측정 방법을 다뤘습니다. 이전에는 동기 메서드만 테스트만 다뤄서 이번에는 비동기 테스트에 대해 말해보려고 합니다. 대부분의 앱에는 네트워크 통신이 필요합니다. 네트워크 통신은 오래 걸리는 작업이기 때문에 반드시 비동기로 처리해야 합니다. 같은 이유로 네트워크 테스트도 비동기로 테스트해야 하며, 다른 동기 테스트와 분리해야 합니다. 비동기 테스트 비동기 메서드를 동기 테스트 코드와 똑같이 테스트하면 제대로 테스트할 수 없습니다. 비동기 메서드의 결과가 나오기 전에 테스트 함수가 종료되기 때문입니다. 그래서 비동기 메서드가 종료될 때까지 기다리는 작업이 필요한데요. 이를 위해 XC..
[iOS] Xcode 15 #Preview 사용해보기 (+ 무선 Preview)
·
iOS/개념 & 개발
서론 Xcode 15.1 Beta에서 IBDesignable이 Deprecated 되었습니다. Xcode 15부터 생긴 #Preview 매크로를 적극 권장하기 위한 처리가 아닐까 생각이 들어서 이번 기회에 #Preview를 사용해 보기로 했습니다. 막상 사용해 보니 생각보다 더 편하고 유용해서 이렇게 포스팅까지 하게 되었네요. 특히 무선 Preview가 상상 이상이라 놀라웠습니다. 하나하나 천천히 살펴봅시다! Preview 관련 WWDC를 다룬 포스팅도 봐주시면 감사하겠습니다 ㅎㅎ #Preview #Preview를 사용하는 방법은 정말 간단합니다. #Preview { 보고 싶은 뷰 } 위 코드만 소스 파일 최상위에 적어주면 됩니다. 그럼 Xcode 화면이 분리돼서 Preview가 보입니다. Xcode가 ..
[WWDC23] Build programmatic UI with Xcode Previews
·
WWDC/iOS
What are previews Preview는 뷰를 구성하는 코드 스니펫입니다. #Preview 매크로를 사용하면 뷰를 반환합니다. Preview는 앱에 컴파일 되고, Xcode의 캔버스에 바로 나타나서 뷰를 미리 확인할 수 있습니다. Preview를 사용하면 개발자가 작업을 더 빨리 할 수 있습니다. 반복적인 일을 줄여주고, 불필요한 코드를 없앨 수 있기 때문입니다. Preview를 사용하고 소스 코드를 수정하면 Xcode는 두 가지 일을 동시에 처리합니다. 첫 번째는 어디가 변경되었는지 살펴보고, 최소한의 부분만 컴파일합니다. 두 번째는 Preview를 다시 실행합니다. 개발자가 코드를 수정만 하면 Xcode가 자동으로 최소한의 범위만 컴파일해서 Preview를 업데이트하는 것입니다. 심지어 여러 ..
[회고] 네이버 부스트캠프 웹・모바일 8기 멤버십 7, 8주 차 회고 & 기술적 고민
·
경험 회고/네이버 부스트캠프 웹・모바일 8기
서론 6주 차 회고를 하고 거의 2주 간 포스팅이 없었습니다. 그만큼 네이버 부스트캠프가 바빴고 알찼답니다 ㅎㅎ 이번 7, 8주 차에는 페어 프로그래밍이라는 걸 했습니다. 혼자서 할 때보다 1.5배로 힘들고 2배 재밌었던 경험이었습니다 ㅎㅎㅎ 바로 회고해 봅시다. 페어 프로그래밍 위에서 말했듯 7, 8주 차에는 페어 프로그래밍을 진행했습니다. 두 명이 짝을 지어서 네비게이터, 드라이버로 나눠서 같이 작업하는 방식이에요. 내비게이터는 지시하는 역할, 드라이버는 지시를 듣고 실행하는 역할입니다. 페어 프로그래밍에서 가장 중요한 건 분업이 아니라 하나의 컴퓨터로 같이 작업을 하는 것입니다. 그래서 저희는 한 명이 화면 공유를 해서 작업하는 방식을 선택했어요. 하나의 코드를 두 명이 대화하면서 짠다는 게 괜찮이..
[회고] 네이버 부스트캠프 웹・모바일 8기 멤버십 6주 차 회고 & 기술적 고민
·
경험 회고/네이버 부스트캠프 웹・모바일 8기
서론 벌써 6주 차가 되었네요. 6주 차에는 새로운 시도를 많이 해봤습니다. 다른 분들의 MVVM 패턴을 보면서 이렇게도 사용할 수 있구나, 이런 방법도 있구나 많이 배웠어요. MVVM + state 첫 번째 시도한건 MVVM에 state를 적용하는 것입니다. 기존에는 MVVM의 데이터를 바인딩해서 사용했습니다. 이렇게 사용하니 데이터 흐름을 파악하기 어렵다는 단점이 있었습니다. View가 예상과 다르게 나올 때 어디가 문제인지 파악하기가 어려웠어요 ㅠㅠ state를 적용한 분의 코드를 보니 ViewController가 특정 state일 때 이렇게 뷰가 변하는구나!라는 흐름이 한 눈에 보여 좋았습니다. 저도 데이터를 직접 바인딩하는 게 아니라 간단하게나마 state를 적용했더니 흐름이 좀 개선이 되더라고..
[iOS] Delegate에 AnyObject 채택은 필수일까?
·
iOS/개념 & 개발
서론 언제나 그렇듯 아래와 같이 Delegate를 만들고 있었습니다. protocol OOODelegate: AnyObject { func ... } 근데 아차! 싶었습니다. Delegate에 왜 AnyObject를 붙여야 하지?라는 생각을 따로 안 해봤더라고요. 어렴풋이 알고는 있었지만 따로 생각을 해보거나 글로 정리한 적이 없어서 이렇게 포스팅하기로 결정했습니다. iOS에서는 언제 Delegate를 쓸까? Delegate는 Delegate를 채택하는 누군가에게 나의 행위를 위임합니다. Delegate를 사용하는 곳에서는 메서드를 호출만 하고, Delegate를 채택하는 곳에서 메서드를 구현하는 것입니다. iOS에서는 주로 유저 이벤트에 따른 행위를 구현할 때 Delegate를 사용합니다. 예를 들어,..
[회고] 네이버 부스트캠프 웹・모바일 8기 멤버십 5주 차 회고 & 기술적 고민
·
경험 회고/네이버 부스트캠프 웹・모바일 8기
서론 이번 5주 차에서는 세 번째 앱을 만들고 있습니다. 5주 차는 이미 알고 있던 개념을 더 자세히 알게 된 주차였던 거 같아요. 요즘 너무 피곤해서 핵심적인 내용만 짧고 굵게 다뤄보려고 합니다. UITableView 활용 기존에도 UITableView는 자주 사용했지만 테이블뷰의 다양한 기능을 활용하진 않았습니다. 그냥 텍스트 데이터를 표시하는 정도로 활용했고, 그거보다 복잡해지면 UICollectionView를 사용했던 거 같아요. 하지만 이번 주차에서 UITableView의 능력(?)을 알게 되었습니다. Editing 모드, 슬라이드 메뉴를 기본적으로 지원해줘서 훨씬 편하게 구현할 수 있더라고요. 물론 UIListContentConfiguration라는게 있지만, 그래도 테이블뷰와 콜렉션뷰를 고민..
[iOS] FPS 측정하기 - CADisplayLink
·
iOS/개념 & 개발
CADisplayLink CADisplayLink는 화면의 업데이트 주기(VSYNC 주기)로 동작하는 타이머 객체입니다. CADisplayLink를 사용하면 디스플레이 주사율에 맞춰서 특정 함수를 호출시킬 수 있는데요. 애니메이션과 그래픽 렌더링을 정확한 타이밍에 수행할 수 있어서 더 부드럽고, 최적화할 수 있습니다. 또한, Actual Frame Rates와 Frames Per Second를 측정할 수 있습니다. Actual Frame Rates는 기기가 출력하는 초당 프레임 수를, FPS는 실제로 표시되는 프레임 수를 나타냅니다. 마지막으로 preferredFrameRateRange를 설정하여 프레임 수를 제어할 수 있습니다. OS가 알아서 최적화를 하지만 강제할 필요가 있는 경우 preferredF..
[강남구 맛집] 바토스 파르나스몰점 리뷰 / 타코 맛집 / 마가리타 맛집
·
🐱 정주는 쉬는 중 :]/맛집
기본 정보 가게 이름 바토스 파르나스몰점 위치 서울 강남구 테헤란로 521 지하 1층 F-25호 메뉴 & 가격 언텐틱 마가리타 - 클래식 12,500원 언텐틱 마가리타 - 시그니처 14,900원 신선한 과카몰리와 칩스 11,900원 칠리 라임 쉬림프 타코 15,900원 프레시 치킨 14,900원 메뉴판 메뉴판입니다. 저희는 수많은 영어에 어지러워져서 서버분에게 메뉴를 추천 받았습니다. 신선한 과카몰리와 칩스, 새우 타코, 프레시 치킨을 주문했고, 마가리타를 클래식, 시그니처 한 잔씩 주문했습니다. 오펜하이머를 보고나서 방문한 곳이라 마가리타를 마셔보고 싶었답니다 ㅋㅋ 기본 메뉴 기본으로 주는 메뉴입니다. 나초칩과 칠리 소스에요. 2명이라 두 개가 나온 거 같아요. 고소해서 에피타이저로 괜찮았습니다. 마가..
유정주