반응형

Xcode에서 자꾸 인증을 하라고 한다. "Authentication failed because no credentials were provided" 대응.

오랜만에 개발 환경을 설정하니 하나하나가 다 허들이다. 심지어 M1 맥북을 새로 수령해서 환경을 만들려니, 은근 자잘하게 인텔맥과 달라서 더 손이 많이 갔다. 하나씩 해결하면서 개발 환경으르 맞춰나가다가 드디어! Xcode가 열린 순간, 다시 한번 에러가 발생했다. Xcode 왼쪽 사이드바 하단에서 라이브러리 하나가 "Uncategorized. Authentication failed because the credentials were missing" 이라고 에러를 뱉고 있었다. 다 됐다고 생각했을 때 또 에러를 만나니 이제 그만두고 퇴근하고 싶었다. 하지만 다시 한번 힘을 내서 원인을 뒤져본다. 사이드 바에서 엑스표시가 뜨는 문구를 클릭하면 얼럿이 뜬다. ssh key로 로그인을 하라는 얼럿이다. 기존 ..

iOS 2022.02.11 0

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

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

개발 Story 2021.12.07 0

swift. 중첩 클로져(nested closure)에서 weak self 사용?

weak self weak self 는 순환 참조(strong reference cycle)를 방지하기 위해 사용한다. 일반적으로는 escaping closure에서 self를 사용할 때, 캡쳐리스트에 선언해두고 사용한다. escaping closure에서 self를 캡쳐하면 strong reference cycle(Automatic Reference Counting in Swift Docs)이 발생하기 쉽기 때문이다. class Fetcher { var x: String? func callFetch() { self.fetchSomething { [weak self] error in self?.x = "finished" print("error : \(error)") } } func fetchSometh..

Swift 2022.04.27 0

개발자가 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 0

Clean Architecture + MVVM in iOS Swift

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

개발 Story 2022.09.02 0

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 0

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

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

개발 Story 2022.05.04 0

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 0

xcrun SPM error: fatal: cannot use bare repository '/Users/user/Library/Caches/...' (safe.bareRepository is 'explicit')

문제$ xcrun swift run .........Fetched https://github.com/apple/swift-argument-parser from cachewarning: 'swift-async-algorithms': skipping cache due to an error: Couldn’t fetch updates from remote repositories: fatal: cannot use bare repository '/Users/user/Library/Caches/org.swift.swiftpm/repositories/swift-async-algorithms-c3a8d752' (safe.bareRepository is 'explicit')......해결~/.gitconfig 에서 ..

iOS 2024.11.11 2

UITests Error가 발생할 때 No target application path specified via test configuration

UITest를 실행하려고 할 때, 아래와 같은 에러가 발생하는 경우. UITest file을 어느 Target에 추가 했는지 확인해봐야 한다. 내 경우에는 UnitTests Tartget에 UITests를 추가해서 발생한 문제였고, UITest Target을 별도로 생성해서 UITest를 구성함으로써 문제를 해결했다. ErrorMessage: testLaunchPerformance(): No target application path specified via test configuration:

iOS 2023.02.20 0

Xcode14 Apple Clang Compiler gnu++20

Xcode14 ReleaseNote Xcode14 Release Note Apple Clang Compiler를 보면 C++ 컴파일러의 기본 옵션이 변경(93456065)된 걸 알 수 있다. 더보기 Apple Clang Compiler New Features New C++ projects you create in Xcode use C++20 language dialect by default. (93456065) Several C++20 and C++2b papers have been implemented: C++20 papers that have been implemented: P0692R1 - Access checking on specializations P0388R4 - Permit conversio..

iOS 2023.01.03 0

swift. 중첩 클로져(nested closure)에서 weak self 사용?

weak self weak self 는 순환 참조(strong reference cycle)를 방지하기 위해 사용한다. 일반적으로는 escaping closure에서 self를 사용할 때, 캡쳐리스트에 선언해두고 사용한다. escaping closure에서 self를 캡쳐하면 strong reference cycle(Automatic Reference Counting in Swift Docs)이 발생하기 쉽기 때문이다. class Fetcher { var x: String? func callFetch() { self.fetchSomething { [weak self] error in self?.x = "finished" print("error : \(error)") } } func fetchSometh..

Swift 2022.04.27 0

swift final class. final 키워드

어느 날 PR 리뷰에 이런 코멘트가 달렸다. class newClass { > >final 키워드를 붙여주세요. 새로 생성한 class는 한 곳에서 단 한가지 용도로 사용되었다. 사실 final을 생각하면서 붙이지 않았다. 그래서 생각해보기로 했다. swift org에서 final을 이렇게 설명하고 있다. You can prevent a method, property, or subscript from being overridden by marking it as final. final을 지정하면, overriding을 컴파일 단계에서 막는다. class 에 final을 붙이면 해당 클래스는 subclassing 할 수 없다. 상속 불가. override 불가. 상속과 method override를 막는 효..

Swift 2022.04.22 0

log4j 취약점, 원격 코드 실행 (RCE, Remote Code Excution) 이슈 정리

얼마 전에 log4j 취약점 사태로 떠들썩했다. 살짝 뒷북이지만, 어떤 일이 있었는지 한 번 알아봤다. Log4J 취약점 사태? 2021년 11월 24일 알리바바 클라우드 보안팀 Chen Zhaojun 이 Apache 소프트웨어 재단에 최초 보고한 이슈이다. 해당 취약점을 본격적으로 알리기 시작한 트위터는 현재 삭제되었으며, Github Advisory Database의 CVE-2021-44228 로 게재되어있다. 전세계 대부분의 서버에서 사용하는 JAVA와 JAVA에서도 널리 사용되는 주요 인터페이스인 Log4j에서 원격 코드 실행(RCE, Remote Code Excution) 취약점이 있었다는 사실이 알려져서 전세계가 떠들썩 했던 것이다. 시끄러울만도 했다. 각 나라의 주요 공공기관에서도 사용하고 ..

Others 2022.01.13 0

iPhone vs Android?

얼마 전에 "iPhone vs Adnroid" 라는 주제로 대화를 나눴다. (링글에서) 링글을 홍보하고자 쓴 글은 아니지만, 링글은 미국 원어민과 영어로 대화를 나눌 수 있는 유로 플랫폼이다. No.1 일대일 화상영어 링글 스탠퍼드 MBA출신이 만든 1:1 화상 영어 명문대 원어민 튜터의 똑똑한 수업을 경험하세요! www.ringleplus.com 이번 주에 내가 골랐던 주제가 iPhone vs Android 였는데, 내게는 그저 '일'이 었던 이 Device에 대해 평소보다 깊게 생각해볼 수 있었다. 이 참에 그 생각들을 적어놓는다. 전 세계적으로 Android 사용자가 더 많은데 비해, 미국만 iOS 사용자 비율이 높은 이유는? 사실... 부끄럽게도 나는 점유율이 어떤지 잘 몰랐다. 그런데 미국에서는..

Others 2021.12.14 0

디즈니 플러스 가격, 동시접속 넷플릭스와 비교하면?

디즈니 플러스가 2021년 11월 12일에 한국에 출시 됐다. 넷플릭스는 잘 구독하고 있었는데, 디즈니 플러스도 구독해야 하는 고민이 스쳤다. 디즈니 애니메이션은 물론이고, 마블 시리즈를 좋아하기 때문이었다. 극장에서 만나지 못한 디즈니 캐릭터와 마블 캐릭터들의 뒷이야기를 볼 수 있다는 게 참 매력적이었다. 얼마 전에 구독을 시작한 친구가 우리집에 어린 아이가 있으니, 디즈니 플러스 구독하면 좋을 것 같다고 추천까지 하고 갔다. 그래서 가격과 동시접속 등의 디즈니플러스 구독정보를 한 번 알아보고, 넷플릭스와 비교해봤다. 먼저 구독중인 넷플릭스 부터 보면, 상품 종류별로 요금과 동시접속 인원수, 화질 등이 다르다. 넷플릭스 프리미엄 상품인 경우, 월 17,000원이고 동시 접속 4명이다. 보통은 4명이 그..

Others 2021.12.12 0
반응형