반응형 전체 글861 Swift 5.5의 async/await 살펴보기 Swift는 전통적(?)으로 GCD(Grand Central Dispatch)라 불리는 병렬 프로그래밍 패러다임을 제공해왔다. 하지만 이 방식은 GCD(Grand Central Dispatch)의 Dispatch Queue를 활용한 모델로 현재로 치자면 코딩하기가 귀찮은 좀 구식인 스타일이었다. 문법만 보면 사실상 Objective-C를 위한 기능이라고 생각될 정도였으니 말이다. 어쨌든 이를 개선하기 위한 여러 요구가 있어왔다. 그리고 드디어 Swift 5.5부터 새로운 비동기 프로그래밍 패턴으로 동시성(Concurrency) 개념이 지원되면서 (이제야) async와 await 키워드가 도입되었다. 내부에서는 여전히 GCD를 사용할 수는 있겠으나 표면적으로 이제는 동시성을 이용한다고 생각하면 될 것 같다.. 2021. 7. 13. 아직은 절망스러운(?) Xcode 13 Beta의 Vim 모드 이번 WWDC21은 소프트웨어적으로는 정말 새롭고 풍부한 변화의 발표가 있었다. 물론 국내 언론 기사에는 OS가 새로 나왔다 정도만 나오고 당연히 상세한 내용이 나오진 않았지만 말이다.어쨌든 이번 행사에서 Xcode 13도 발표되었는데 이 발표에서 직접 언급되지 않았지만 여러 사람들을 통해 알려진 신기능이 있다. 바로 Vim 모드다.Vim 모드 켜기Xcode 13의 첫 베타 기준으로 Preferences - Text Editing - Editing 항목을 들여다보면 제일 아래에서 Enable Vim key bindings 체크박스를 발견할 수 있었다.체크를 하게되면 이제 Vim 모드가 가동된다.위 스크린샷의 코드 하단에 검은 네모 박스가 커서다. 아직 입력 모드로 전환하지 않은 상태라 커서가 블록으로 표.. 2021. 6. 16. Apple WWDC21 6월 7일 개최 오늘 새벽 - 이번에도 어김없이 - 애플에서 WWDC21 개최 소식을 메일과 뉴스룸을 통해 알려왔다. 개최 시각은 미국 동부 기준이라 한국으로 치면 6월 8일 새벽 2시일 것 같다. 당연하겠지만 이번에도 온라인 생중계로 열리게 된다. WWDC란 World Wide Developer Conferences의 약자로 직역하면 전 세계 개발자 회의다. 즉 개발자들을 위한 이벤트다. 늘 이야기하지만 애플이 아이폰을 발표하는 일반인을 대상으로 한 신제품 발표회와는 거리가 있는 행사다. 다만 일반인들에게도 크게 영향이 갈 만한 내용이 있으니 바로 키노트다. 이 WWDC 키노트에는 여러 발표가 있는데 예를 들자면 소프트웨어와 관련한 변화다. 아마도 iOS나 macOS, iPadOS, tvOS, watchOS의 차기 버.. 2021. 5. 25. SwiftUI - self is immutable??? SwiftUI 프로그래밍 패러다임에 아직 익숙하지 않다 보니 삽질을 하면서 배우는 게 많은 것 같다. 이번 글의 주제는 제목처럼 가변적인 내(?)가 뭐가 문제인가 하는 내용이다.우선 간단한 예제를 보자. 아래의 예는 특정 SwiftUI 뷰 구조체인데 뷰가 표시될 때 타이머를 돌려서 주기적으로 뭔가를 하기 위한 코드이다.struct SomeView: View { var timer: Timer? = nil var body: some View { VStack { Text("Timer!") } .onAppear { // compile error timer = Timer() } }}위에서 .. 2021. 5. 18. SwiftUI View Custom Initializer SwiftUI View 구조체는 자동으로 @Binding 프로퍼티를 초기화 매개변수로 지정하는 생성자를 만든다. 바인딩은 당연하게도 외부에서 값을 전달받아야 하는 프로퍼티이기 때문이다.그런데 이렇게 하나라도 바인딩 프로퍼티가 있으면 나만의 생성자를 작성하는 것에서 난관이 있을 수 있다.예를 보자. 아래는 CustomView 라는 View에 바인딩 프로퍼티가 하나 선언된 예다.struct CustomView: View { @Binding var name: String ...}앞서 이야기했다시피 바인딩 프로퍼티는 자동으로 생성자에 매개변수로 값을 전달받는 인터페이스를 가진다. 그래서 위의 뷰는 아래와 같은 형태로 인스턴스를 생성해서 사용해야 한다.struct ContentView: View { .. 2021. 5. 17. gccemacs를 (당분간) 포기했다 gccemacs를 쓰는 것은 퍼포먼스 때문이었다. 해당 OS의 바이너리 포맷으로 컴파일하는 Native Compilation 기능은 당연히 바이트 컴파일만 된 스크립트보다 로딩 및 파싱이 빨라야 한다. 컴파일하는 시간이 오래 걸린다는 점을 제외하곤 모든 것이 좋으리라 생각했다. macOS에서 gccemacs 설치하기(feat. emacs-plus)Homebrew를 통해 설치할 수 있는 이맥스(Emacs) 중 몇 안 되는 GUI가 제대로 돌아가는(?) 프로젝트인 emacs-plus에서 오랜 시간 동안 native-comp 즉 gccemacs를 지원하기 위한 논의와 개발이 있었다. 한참을 지.seorenn.tistory.com물론 시작부터 단점이 있었다. 아직 Emacs 28 버전에서만 지원된다는 점이 있다.. 2021. 5. 12. 2021년 4월 애플 이벤트 간략 정리 예고된 대로 한국 시간 2021년 4월 21일 새벽 애플이 깜짝 이벤트를 열었었나 보다. 물론 이 표현은 필자가 이 시간에 안 보고 잤다는 의미다. (사실은 전날 밤 미국 주식 시장이 떨어지고 있는 것을 지켜보고 한숨을 쉬다 그냥 잤지만 말이다) 어쨌거나 뉴스룸 배포 내용을 기반으로 매우 주관적인 기준으로 간략히 정리해보자. 신형 아이패드 프로 모두들 예상했던대로 아이패드 신형이 발표에 나왔다. 대부분 예상대로이긴 한데 맥 전용일 거라 생각했던 M1을 박아 넣은 것은 약간 예상외였다. 물론 이렇게 예상한 사람은 충분히 많았으며 그저 개인적인 판단이었을 뿐이다. 어쨌거나 프로 라인업이라면 불가능한 이야기는 아닐 테니 그렇게 놀라운 이슈는 아니긴 하다. 다르게 생각하자면 애플 실리콘 M 시리즈는 아이패드 프.. 2021. 4. 21. 애플 4월 21일 깜짝 이벤트 애플이 한국 시간으로 4월 21일 새벽 2시에 스페셜 이벤트 행사 개최에 대한 소식을 메일로 알려왔다. 앞서 애플은 WWDC21 개최 일정을 발표했기 때문에 그 사이에 뭔가 있지는 않을 것 같다는 느낌이 들었는데 완전히 착각했나 보다. 어쨌든 행사가 있을지도 모른다는 세간의 예측이 빗나가나 했더니만 조금 늦게나마 적중한 셈이 되었다. 무슨 내용이 나올까? 일단 애플은 행사 내용에 대해서는 항상 함구했기 때문에 명확한 것을 알 수 없다. 그저 새로움을 강조하고 화면에 뭔가 펜으로 휘갈긴 듯한 상징 이미지가 보일 뿐이다. 그렇다면 애플 펜슬과 관련된 행사가 있지 않을까 예상을 할 수도 있다. 그리고 애플 펜슬이 등장한다면 아이패드를 연관해서 생각할 수 있다. 즉 신형 아이패드와 애플 펜슬에 관한 내용이 나올.. 2021. 4. 14. 앱스토어 업로드 시 ITMS-90034 문제 어느 날 앱 업데이트를 정리하고 업로드를 했다. 그런데 곧이어 아래와 같은 내용의 메일을 받게 되었다. 중요한 내용은 아래 한 줄이다. ITMS-90034: Missing or Invalid Signature - The bundle foo.bar at bundle path Foobar is not signed using an Apple submission certificate. Apple Submission Certificate라는 처음 듣는 인증서를 요구하는 듯한 오류다. 도대체 이 녀석은 뭘까? 해결 해결법은 아주 쉽다. 다시 빌드해서 올리면 된다. 다만 앞서 업로드된 바이너리와 동일한 빌드 번호를 쓰면 중복된 바이너리라며 업로드에 실패하니 빌드 번호를 증가시키거나 바꿔서 다시 시도해보자. 참 어이없.. 2021. 4. 9. M1은 사후 업그레이드가 가능하다? 최초의 애플 실리콘으로 발매된 M1의 경우 램이 M1 SoC 안에 내장되어 있어서 성능을 폭발적으로 이끌어낸 반면 업그레이드가 매우 어렵다는 단점이 있었다. 그런데 오늘 알게 된 맥루머스의 한 페이지를 통해 M1의 램을 별도로 업그레이드하는 것이 가능하다는 이야기를 접할 수 있었다.아래가 맥루머스의 해당 글 링크다. 영문이지만 번역기로 읽기에도 수월한 내용이었다. M1 Mac RAM and SSD Upgrades Found to Be Possible After PurchaseTechnicians in China have reportedly succeeded in upgrading the memory and storage of the M1 chip, suggesting that Apple's integra.. 2021. 4. 6. 2021년 6월 7일 WWDC 개최 예정 올해도 애플이 미국 시간으로 6월 7일 개발자 행사로 유명한 WWDC - World-wide Developers Conference - 를 개최한다고 뉴스레터를 보내왔다. 축약하여 이번 행사의 이름은 WWDC21이다. 역시 사람들의 눈초리는 매서웠다. 이미지에 안경을 쓴 미모지가 등장하는 것을 보고 여기서 애플의 안경형 디바이스가 발표되지 않겠냐 하는 의심(?)을 하기 시작했다. 개인적인 판단으로 애플 글라스는 좀 회의적이긴 한데 그렇다고 가능성이 없는 건 아니라고 생각되기도 한다. 그밖에 맥북이나 21이라는 배지 숫자 등도 뭔가 숨겨진 메시지가 있을 것 같기는 하다. 어쨌든 WWDC의 주요 행사는 개발자들의 관심을 살만한 소식일 것이다. 대표적으로 애플의 OS군 즉 macOS, iOS, iPadOS, .. 2021. 3. 31. 어느 날 맥 캘린더 앱에서 오류가 발생하기 시작했다 어느 날 내 업무용 맥의 캘린더 앱이 혼자서 미친 듯이 점프 뛰기를 시작했다. 그래서 캘린더를 열어보니 아래와 같은 팝업이 떴다.서버에 오류가 발생했다니 뭐가 뭔지 알 수 없는 오류다. 도대체 무슨 일이 생긴 것일까?문제사실 명확한 문제를 정의하는 게 쉽지는 않다. 어쩌다 보니 아래와 같은 오류 팝업도 떴기 때문이다.CalDAVAccountRefreshQueueableOperation 작업에서 403 오류가 발생했다고 이해가 된다. 403은 보통 허용되지 않은 접근을 의미하고 대체로 인증이 되지 않았거나 인증 관련 문제로 볼 수 있다.삽질이 문제를 해결하기 위해 정보를 찾아봤지만 명확한 원인과 해답을 찾을 수는 없었다.그래서 전통적인 방법을 시도해봤다. 사용한 방법은 단순했다. 설정(Preferences.. 2021. 2. 19. 2021년 2월 1일자 앱스토어 리뷰 가이드라인 업데이트 애플 앱스토어 심사 가이드라인이 업데이트되었다. 대충 살펴보자. 정말 대충 살펴봤고 주관적으로 이해했기 때문에 틀린 해석이 있을 수 있다. 원문은 하단 관련 글에 링크를 붙여 놓았으니 참고하자.1.4.3: 홍보가 불가능한 것들, 예를 들어 담배나 마약 혹은 과도한 양의 주류 등의 홍보는 허용되지 않는다. 이미 애플은 이런 지침을 가지고 있었기에 가이드라인에 좀 더 명확하게 정리된 수준인 것 같다.2.3: 앱을 다운로드하거나 구입할 때 무엇을 얻는지 명확하게 설명해야 한다. 그냥 당연한 설명만 하라는 이야기 같다. 즉 이미 있던 지침이라 좀 더 명확하게 정리된 수준 같다.2.3.7: 고유한 앱 이름을 제출해야 하고 메타데이터나 스크린샷 등에 앱과는 관계가 없는 상표나 타사의 유명한 앱, 가격 정보 등을 적.. 2021. 2. 2. 신형 맥북프로에 관한 루머 맥 루머스를 통해 접한 이 소식에서 언급하고 있는 - 이제는 루머 생산 전문가라고 장난 삼아 불러도 손색이 없는 - 밍치 궈의 신형 맥북 프로에 대한 예상을 간단히 정리해보자면 이렇다:14인치, 16인치 두 종류아이폰스러움을 적용한 새 디자인자석형(MagSafe) 연결 지원터치 바를 제거하고 물리 펑션키 복원당연하게도 애플 실리콘더 많은 포트들이 항목들에 사견을 더해보자. 크기에 관한 루머는 생각보다 많이 나왔기 때문에 거의 사실로 보인다. 새 디자인도 가능성이 높은 게 한동안 디자인이 계속 바뀌지 않았다. 터치 바 제거는 터치 바의 무쓸모성과 함께 이미 ESC 키는 물리키로 복원된 사례를 볼 때 역시 가능성이 높아 보인다. 애플 실리콘 탑재는 당연히 확정일 테지만 당분간 인텔 칩셋 탑재 모델을 병행 .. 2021. 1. 15. macOS에서 gccemacs 설치하기(feat. emacs-plus) Homebrew를 통해 설치할 수 있는 이맥스(Emacs) 중 몇 안 되는 GUI가 제대로 돌아가는(?) 프로젝트인 emacs-plus에서 오랜 시간 동안 native-comp 즉 gccemacs를 지원하기 위한 논의와 개발이 있었다. 한참을 지켜보다 잠깐 모니터링을 깜빡한 사이 기쁘게도 이 기능이 어느 정도 동작하는지 코드에 반영이 되어 있었다. 그래서 당장 설치를 시도해봤다.참고로 gccemacs는 이름에서 느낄 수 있듯이 Emacs Lisp 네이티브 컴파일을 지원하는 이맥스다.전제 조건으로 Emacs 28.x 버전만 지원된다는 단점이 있다. 이 버전은 개발 중인 불안정 버전인 만큼 실 업무에 사용하기에는 주의가 필요할 것 같다.설치 커맨드는 아래와 같다.brew install emacs-plus@2.. 2021. 1. 11. iOS 시뮬레이터의 이상한 노란색(?) 문제 Xcode 12.3을 설치한 이후 무슨 일이 있었는지는 모르겠는데 Title Bar나 Alert Popup 등의 배경색이 노랗게 보이는 문제가 발생하기 시작했다. 아래 스샷이 그 증거(?)다.전부 문제가 있는 것도 아니고 유독 저런 제목이나 팝업 배경 같은 - 아마도 이게 Tint Color였던가? - 것들만 노랗게 이상하게 표시되고 있었다. 무슨 오줌 액정 문제도 아니고 참 거슬린다. Accessibility에서 뭔가 설정되었나 찾아봐도 다 꺼져 있었다.이 문제는 시뮬레이터의 버그로 의심된다. 그리고 다행히도 수정이 가능했다.고치는 방법은 메뉴에서 File - GPU Selection - Prefer Integrated GPU를 선택한 후 시뮬레이터를 재시동한다. 참고로 원래 설정되어 있던 값은 Aut.. 2021. 1. 8. SwiftUI에서 경고 팝업(Alert) 표시하기 SwiftUI에서는 경고 팝업(Alert Dialog)을 띄우는 방법이 좀 생소하다. 솔직히 말해서 좀 귀찮다. 어쨌든 방법을 찾았기에 글로 살짝 풀어서 정리해본다. 참고로 순수 SwiftUI 코드만 쓰기 때문에 모양은 좀 다르지만 macOS와 iOS 모두에서 동작한다.경고 팝업을 띄우기 위해서는 Alert 구조체를 이용한다. 아래는 Alert 인스턴스를 생성하는 예제다.Alert(title: Text("Alert"), message: Text("Alert Dialog"), dismissButton: .default(Text("Close")))상상대로라면 이 코드를 특정 View의 body에 넣으면 될 것 같다. 그런데 그게 잘 안 된다. 아래와 같은 오류가 나면서 말이다.Retur.. 2021. 1. 7. 알림의 홍수를 견디며 살아가기 가입한 서비스가 많고 설치한 앱들도 많다. 거기다 요즘은 전염병으로 재난 알림 문자도 계속 온다. 알림이 안 오는 시간이 없다. 말 그대로 알림의 홍수다. 깃헙(GitHub): 직업이 개발자이고 취미 중 하나도 개발이다 보니 깃헙은 필수적으로 사용하고 있다. 이 깃헙의 알림은 이메일을 통해서 날아온다. 이것만 해도 사실 큰 문제는 없을지도 모르겠다. 대신 깃헙 사이트에서 또 별도의 알림을 모아 놓은 곳이 있고 이걸 안 보면 봐야 할 것 같은 배지를 계속 표시한다. 어떻게든 이런 알림을 중복으로 봐야 한다는 말이다. 깃헙 앱: 깃헙 측에서 앱이 나왔다고 엄청나게 광고를 하길래 어느 날은 깃헙 앱을 설치했다. 그런데 그 이후로 이 앱을 통해서도 동일한 내용의 푸시 알림이 온다. 즉 중복 알림이다. 다행히도 .. 2020. 12. 31. 이전 1 ··· 36 37 38 39 40 41 42 ··· 48 다음 728x90 반응형