Archive

A collection of 34 issues

Latest

Cuckoo의 ArgumentCaptor를 소개합니다

원티드의 iOS 앱 프로젝트에서 사용하고 있는 모킹 프레임워크 Cuckoo에 포함된 ArgumentCaptor 가 무엇이고, 어떻게 사용하는지 간단하게 알아보도록 하겠습니다. 이게 뭔가요? ArgumentCaptor 는 Mock 객체에 입력되는 파라미터를 가로채서 직접 무언가를 할 수 있게 도와주는 객체입니다. verify(_:) 메소드를 통해 검증을 진행할 때 메소드의 파라미터로 이 ArgumentCaptor 객체를 넣어주게 되면 해당 메소드의 파라미터로

좀 더 나은 Collection View 를 위하여 - Diffable Data Source, Compositional Layout

Overview UICollectionView 에 최근 새로운 기능들이 추가되고 WWDC에서도 소개가 되고 있지만  국내에서는 그렇게 많이 알려지지 않고 있는 것 같다. 개인적인 관심이 부족했던 것일지도 모르겠지만 😅 한국어로 된 문서가 그렇게 많은 것 같지 않아 소개를 해보고자 한다. 이번에 소개하는 내용들은 iOS 13 또는 14 이상의 디바이스에서만 지원하는 기능이라 바로 사용하기는 쉽지 않겠지만,

iOS의 다크모드 - (2) 구현

저번 글에서는 다크 모드를 적용해야 하는 이유에 대하여 설명했다면, 이번에는 실제로 배포 중인 앱에 다크 모드를 적용하면서 사용했던 여러가지 기능들에 대한 이야기를 해 보려고 합니다. Color Assets Xcode 에서 제공하는 Asset 파일인 .xcassets 에는 생각보다 여러 종류의 데이터를 저장할 수 있습니다. 그 중 Color 데이터를 Asset 파일에 저장하면 다크 모드

2019년, 나의 한해를 돌아보며

다사다난했던 2019년이 마무리 되어 가고 있다. 올해는 개인적으로, 그리고 업무적으로도 많은 일을 해왔는데 한번 정리해 볼 만한 한해였다고 생각되서 끄적여본다. 이음 5.0 풀체인지 리뉴얼 “조엘 온 소프트웨어” 라는 책을 읽어보면 넷스케이프 브라우저를 예로 들어 코드를 “갈아 엎기”에 대해 경고하는 내용이 있는데, 바로 이 리뉴얼 작업이 그런 작업이었다. 5년

TIL: Catalina 에서 Python 스크립트 편하게 쓰기

제가 현재 몸담고 있는 회사인 원티드랩에서는 Lokalise 라는 번역 지원 Tool 을 사용하고 있습니다. 이 Tool 은 자체 API를 통해 각 환경에 맞는 Resource 파일을 받을 수 있도록 해 주는데, 저희는 빌드 전에 자동화 스크립트를 사용하여 Resource 파일들을 제 위치에 받아주는 작업을 하고 있습니다. 문제 발생 그런데 최근 macOS Catalina

Let'Swift 2019 참석 후기 - 1

올해도 돌아온 Let'Swift 에 참석하였습니다. 이번 컨퍼런스도 참 유익한 내용이 많았습니다. 아직 발표 자료들이 홈페이지에 모두 오픈되지 않았지만, 세션을 들으면서 정리한 내용을 공유해 봅니다. * 개인적인 의견도 중간중간 포함되어 있으니 참고 부탁드립니다. * 발표자료와 예제는 Let'Swift 홈페이지의 Program 섹션에서 공개되고 있습니다. Animations iPhone OS 3.0 부터 존재하던 CADisplayLink 라는 기능을 이제서야

Let'Swift 2019 참석 후기 - 2

지난 글에 이어 Let'Swift 2019 컨퍼런스 중 참석한 세션들에 대한 내용들을 공유해 봅니다. 그리고 좋았던 점과 아쉬웠던 점 몇가지를 이야기 하고자 합니다. * 개인적인 의견도 중간중간 포함되어 있으니 참고 부탁드립니다. * 발표자료와 예제는 Let'Swift 홈페이지의 Program 섹션에서 공개되고 있습니다. Swift 5.1 for SwiftUI 얼마 전에 공개된 Swift 5.1에는 SwiftUI 를

iOS의 다크모드 - (1) 배경

애플이 이번 WWDC 2019에서 iOS 13을 발표하면서 전면에 내세운 기능은 다크 모드. macOS Mojave에서 처음 선보였던 다크 모드를 iOS 13에 도입하는 것을 발표하면서 많은 박수를 받았다. 발표 당시에 공개했던 영상을 보고 가자. 애플의 기술 선택 최근의 애플은 어느 정도의 성숙기를 거친 기술만 제품에 적용을 하고 있는 것으로 보인다. 초기 애플의

Carthage 의존성 이슈 관리하기

iOS 개발을 하면서 가장 많이 접하게 되는 CLI Tool은 Package Manager가 아닐까 싶다. 개인적으로 지금까지 주로 사용하던 패키지 매니저는 CocoaPods 이었는데 새로운 회사로 이직을 하면서 본격적으로 Carthage를 사용하게 되었다. Carthage를 사용하면서 겪었던 몇가지 이슈에 대하여 공유를 해보고자 한다. Carthage 의 특성 카르타고의 Github 페이지에 나온 첫 설명문은 아래와 같다. Carthage

모바일 스이카 비밀번호를 잃어버렸을때

도쿄 여행을 가게 되면 한번쯤은 쓰게 되는 교통카드 스이카(Suica). 이 카드가 있다면 일본내 많은 철도회사 및 스이카 가맹점에서 결제가 가능하고, 편의점 이용시 소비세 8%로 인한 잔돈이 발생하지 않는다는 점에서 여행객들에게 참 좋은 아이템 입니다. 아이폰의 애플 페이 기능을 사용하는 모바일 스이카는 아이폰 8 이상(일본 판매 기종은 7부터)

iOS 개발 도우미, Fastlane을 간단히 써봤다.

지난 2주간 테스트를 짜봤으니 이제 이걸 어떻게 써먹을지 고민해봤다. 테스트가 잘 되면 이제 CI 같은걸 고민 할 수 있을 것 같다. 하지만 iOS의 경우 배포도 그렇고 CI 서버가 Mac 이어야 해서 외부 서비스를 사용하기에는 너무 비쌌다. 그래서 고민을 좀 하다가 Fastlane 을 제대로 써보자는 생각으로 사용해봤다. 엄밀히 말하자면 테스트 시리즈에는

아, 나도 테스트 코드 짠다! - (2) Xcode UI 테스트 작성

프론트엔드 또는 앱 개발을 할때는 사용자의 입력을 받게 되는데, 사용자의 입력이 제대로 처리 되는지를 테스트를 하기 위해 UI 테스트를 하게 된다. 이 테스트는 사람이 할 수도 있지만, 매번 업데이트 될 때마다 같은 기능을 사람이 직접 테스트 하는건 시간 낭비일 경우가 많다. 시간 낭비는 개발자의 도리가 아니기에, 이런 테스트를 기계가 할

아, 나도 테스트 코드 짠다! - (1) XCTest를 이용한 테스트 코드 작성

개발을 업으로 삼은지 7년차가 되는 시점이지만, 테스트 코드를 한 번도 작성해보지 못한건 반성해야 할 부분일지도 모르겠다. 일정에 치여서 테스트 코드 같은건 엄두도 못냈고, 거쳐온 회사들은 테스트 코드를 제대로 작성하고 있는 곳이 없었다. 명언 제조기 박명수옹 (47세) 그러다 마침 일정이 비는 시기가 찾아왔고 팀 내부에서도 테스트 코드의 중요성이 언급되기 시작했다. 실제로

iOS 자동 갱신 구독 기능 구현에 대한 회고 - (2) 앱 심사 리젝

이번 업데이트 진행중에 총 세번의 리젝을 당했는데, 대부분이 개발자가 생각하지 않았을 이슈들이었다. 처음 자동 갱신 구독 기능을 넣기로 했다면 아래 사항들을 잘 따져보는게 좋을것이다. 어이없는 실수 리뷰 요청을 올린 다음날은 토요일이었다. 나는 내가 속해 있는 커뮤니티의 컨퍼런스에 참여하기 위해 이동하고 있던 중이었다. 그러다 아무 생각 없이 업무 메일을 열어 봤는데,

iOS 자동 갱신 구독 기능 구현에 대한 회고 - (1) 시작

애플 앱스토어에서는 사용자의 최초 확인 한번으로 매달 결제가 이루어지게 하는 자동 갱신 구독 (Auto-Renewable Subscription) 기능을 지원한다. 이 기능은 본래 잡지나 서적에 해당하는 앱에만 적용되었지만, WWDC 2016을 기점으로 모든 앱에서 사용 가능하도록 바뀌었다. 이 기능은 개발사에게 매우 유리한 구매 형식인데, 사용자가 1년 이상 정기구독을 유지할 경우 애플에서 가져가는 수수료가 30%

iOS 9 버전에서 유니버셜 링크로 앱 실행이 안될때

** 2017. 10. 24 - 다른 사례에 대한 내용이 추가되었습니다* 유니버셜 링크는 특정한 페이지 주소를 클릭했을때 앱에서 해당 컨텐츠를 볼 수 있도록 만들어진 특수한 딥링크입니다. 애플이 이 유니버셜 링크라는 기능을 선보인건 iOS 9 버전부터 였습니다. 뭐, 물론 애플이 새로 내놓은 기능들이 바로 제대로 동작하는걸 기대하는건 희망사항일 뿐입니다. 저희 회사에서도 유니버셜 링크를

Xcode 9에서 올린 빌드가 iTunes Connect 에서 보이지 않을때

iOS 11 대응을 위해 Xcode 9을 설치하신 개발자 분들이 많을거라고 생각됩니다. 저도 제가 관리하는 앱들의 iOS 11 대응을 진행하고 있습니다. 그러다 릴리즈 작업 도중 특이사항을 하나 발견하여 공유하고자 합니다. 저는 iOS 11 출시 후 새 SDK에서 빌드 후에 발생하던 여러 문제를 잡고 릴리즈를 준비하고 있었습니다. Xcode 9 설치 후에 Organizer의

Lighthouse: 가상화폐 시세 조회

항상 그랬지만 내가 직접 뭔가를 만들기 시작하는 계기는 항상 "불편함"을 느낄때였다. 이번에도 그랬다. 용돈이나 벌어볼까 싶은 생각에 가상화폐에 소액을 집어 넣었는데, 아이디와 비번을 입력하고 보안을 위해 걸어놓은 OTP 번호를 입력하는 일이 너무나도 번거로웠다. 물론 조회를 위한 앱이 몇가지 있긴 했지만, "앱은 예뻐야 한다" 라는 기준에 충족되지 않는 앱들 뿐이었다.

중국산 기계식 키보드, AJAZZ geek AK33 구입기

최근 중국산 전자제품들이 꼬리에 꼬리를 물고 국내에 소개되고 있습니다. 미친 가성비, 대륙의 실수 같은 키워드를 달고 말이죠. 반쯤은 대세를 따라, 반쯤은 호기심으로. 커뮤니티에 이야기가 돌던 중국산 키보드를 하나 구매해보았습니다. 과연 중국산 키보드도 쓸만 할까요? 한국에 양질의 중국 전자제품이 밀물처럼 들어오게 된 계기라고 한다면 단연히 샤오미의 공이 컸다. 10400mAh 외장 배터리가

윈도우 기능 추가시 트랙잭션 관련 오류가 생기는 경우 해결방법 (0x80071A90)

예전부터 골치를 앓고 있었던 오류가 하나 있었는데, Windows의 기능을 추가하려고 할때 발생하는 알 수 없는 오류였다. 윈도우 8땐가 그 전부터였던가 모르겠지만 정말 오래 끌었던 오류였다. 함수에서 다른 트랙잭션용으로 예약된 이름을 사용하려고 했습니다. 이 오류가 발생하면 윈도우 기능을 추가하거나 제거하는 중에 작업이 중단된다. 그래서 여태까지 IIS나 FTP 서버를 설치하지 못하고 있었다.

KT LTE egg+ A 2주일 사용기

KT에서 새로운 LTE 에그 2종을 출시했다. Wibro와 LTE를 모두 지원하지만 LTE를 우선으로 연결하는 에그는 이번이 처음이다. 그 중 고급형인 LTE egg+ A 모델을 2주일간 사용해 보았다. 빠른 속도와 부가 기능이 풍부한 이 에그를 하나하나 살펴보자. ** 이 광고를 보고 심쿵한건 나뿐만이 아닐거라고 믿는다.* 솔직히 말하자. 난 물건을 살때 외관을 엄청나게 중요시

주토피아 (2016)

** 스포일러는 없습니다. 이미 다들 보셨겠지만.* [캡틴 아메리카: 시빌워] 의 한국 개봉에 맞춰 기세가 한풀 꺾인 주토피아. 사실 진작부터 봐야겠다는 생각은 있었지만 주말마다 스케쥴이 빡빡했던 관계로 보지 못하고 있었다. 근데 더 미루면 일에 치여서 극장에서 못 볼것 같아서 겨우 짬을 내 극장에 갔다 왔다. 사실 이 영화를 보기 전부터 저 요망한

서비스를 내리면서

지난 12월부터 회사에서 기획하고 서버를 만들고 운영해왔던 서비스가 오늘부로 서비스 종료되었다. 수익부진으로 인한 폐업. 당시 10명이었던 회사에서 하나둘 사람들이 떠나가면서 7명만이 끝까지 남았다. 어떻게든 서비스를 굴려보고 싶었지만, 지금이 회사를 접기 참 좋은 때라는걸 사장님도 알고 계셨던 모양이다. 뭔가를 열심히 만들어서 사람들이 좋아해주면 나는 그걸로 즐거움을 느낀다. 하지만 이런 일은 아직

라즈베리 파이 2 세팅 삽질기

라즈베리 파이가 나온지 5년이 지났다. 저런 작은걸로 뭘 하겠냐 하는 사람도 많았지만 꾸준히 사랑을 받았고, 최근에는 성능이 개선된 새로운 모델도 출시되었다. 개인적으로 예전부터 궁금했던 물건이었는데 기회가 닿지 않아 만져볼 기회가 없었다. 구입 그러다 마침 지인발 공동구매를 통해 SD 카드와 방열판까지 함께 저렴한 가격에 입수했다. 배송비 제외 4만원. 상당히 저렴한 금액으로

Ulysses 와 Daedalus Touch 함께 쓰기

이 포스팅은 2015년 3월 21일에 작성된 글이며, 블로그 이전으로 인해 재 작성된 글입니다. 몇일 전에 Markdown을 지원하는 아이폰 노트 프로그램을 찾다가 우연히 발견한게 바로 이 Daedalus Touch였다. Markdown을 지원하는 노트 앱 중에서는 Letterspace라는 좋은 앱이 있었지만 왠지 모르게 2% 부족한 느낌을 항상 받아왔었고, 애초에 Letterspace는 노트 내의 To-do 기능을 마음에

쿠시카츠 다루마 홍대 본점을 가다

이 포스팅은 2015년 3월 9일에 작성된 글이며, 블로그 이전으로 인해 재 작성된 글입니다. 얼마 전에 모 소셜커머스 사이트에 딜이 올라와서 구매하고 방문했다. 일본 오사카를 세번정도 다녀왔지만, 명물이라는 쿠시카츠를 못 먹어봐서 아쉬움이 컸다. 그런 의미에서 한국에도 체인점이 들어와서 정말 다행이라고 생각한다. 쿠시카츠 하나를 먹으려고 비행기를 타고 오사카까지 다녀올 수는 없지 않는가.

유통기한 4일 남은 피자비빔면을 먹어 보았다.

산지 꽤 오래 됐지만 공간의 부재를 이유로 과자 박스 안에서 잠들어 있었던 컵라면을 꺼냈다. 불닭 볶음면을 필두로 한 매운 비빔면이 유행할 시기에 출시된 제품으로 기억한다. 출시 당시에는 농심에서 뭐 이런 괴식을 내는가라고 나름 이름을 날렸지만 괴식이란 무릇 떨어지는 별똥별 마냥 잠시 반짝했다가 사라지는 법. 지금도 판매하고 있는지는 알 수가 없다.

hello world 에 대한 짤막한 고찰

프로그래밍을 잠깐이라도 접해본 사람이라면 누구나 아는 문장이 있다. Hello world 라는 두 단어로 이루어진 문장. 문장이라고 해야 할지도 잘 모를 이 문장은 프로그래밍 언어를 처음 시작한 사람이 화면에 문자를 출력하려고 할때 출력 시키는 문자들의 집합이다. 익숙한 사람이라면 딱히 이상해 보이지 않는 이 문장이 뭐가 문제라고 나는 이런 글을 쓰고 있는걸까.