본문 바로가기
반응형

etc30

오늘도 Xcode에게 졌다 Xcode에서 Flutter 프로젝트를 디버깅할 일이 있어서 이런저런 삽질을 하다가 아래와 같은 오류를 만났다. invalid reuse after initialization failure '초기화 실패 후 잘못된 재사용'이라는 말의 의미는 도대체 무엇일까? 원인 알 수 없다. 만약 원인을 알았다면 이번 글의 제목에 '졌다'라는 단어가 안 들어갔을 것이다. 해결 단순하게도 Command + Shift + K 키를 눌러서 프로젝트 폴더를 청소하고 나서 다시 빌드하니 문제가 해결되었다. 이 글을 왜 쓰나 왜긴 열 받아서 쓰지. 😤 솔직히 이런 말도 안 되는 오류가 최근 자주 보이는 것에서 애플에 불만이 좀 많다. 그냥 Xcode를 포기하고 터미널 기반의 개발 환경을 구축할 수 있게 해주는 편이 더 낫지 않겠나? 2021. 9. 3.
iTerm에서 한글 자소가 분리되어 보이는 현상 개인적으로 터미널과 셸을 좋아해서 iTerm 또한 종종 사용하는데 파일명에 한글을 거의 쓰질 않아서 거의 문제를 못 겪었었다. 그런데 macOS의 언어를 한국어로 바꾼 이후로 터미널에서 한글이 깨지는 현상 - 정확히 말해서 자소가 분리되어 보이는 현상 - 을 종종 겪게 되었다. 참고로 사용하는 iTerm의 버전은 3.x다. 보통 iTerm3로 표기한다. 어쨌든 이 문제를 수정해보자. 문제 해결하기 해결 방법은 단순하다. 설정(Preferences)을 열어서 Profiles 항목의 Text 탭을 열어보자. 중앙의 Unicode 항목 근처에서 Unicode Normalization Form을 찾을 수 있는데 기본 값은 None으로 되어있다. 이 설정을 클릭해서 NFC로 바꿔주자. 이후 바로 결과가 적용되기 .. 2021. 7. 30.
재배치된 항목 넌 도대체 뭐냐? 어느 순간부터 macOS를 업데이트할 때마다 데스크탑 폴더에 '재배치된 항목'이라는 링크가 생성되는 일이 반복되고 있다. 지워버려도 딱히 동작에는 문제가 없는데 도대체 이 파일은 무엇일까? 정체 해당 링크를 더블클릭하면 폴더 내용이 뜬다. 대충 아래와 같은 문서와 다른 디렉터리가 포함되어 있는 것을 볼 수 있다. .lpdf 확장자의 문서 파일을 읽어보면 대충 용도를 알 수는 있다. 단순하게 말해서 새 버전으로 업데이트하는 도중 호환되지 않거나 옮길 수 없는 등 여러 사유로 인해서 모호해진 파일을 일단 이 위치로 옮겨두는 것으로 이해가 된다. 필요하다면 내용물을 비교해서 원래대로 살리거나 머지하거나 알아서 하라는 이야기다. 내용물을 확인해보니 UNIX 그룹 설정과 유사한 형태의 텍스트 파일이 들어있었다. .. 2021. 7. 29.
아직은 절망스러운(?) Xcode 13 Beta의 Vim 모드 이번 WWDC21은 소프트웨어적으로는 정말 새롭고 풍부한 변화의 발표가 있었다. 물론 국내 언론 기사에는 OS가 새로 나왔다 정도만 나오고 당연히 상세한 내용이 나오진 않았지만 말이다. 어쨌든 이번 행사에서 Xcode 13도 발표되었는데 이 발표에서 직접 언급되지 않았지만 여러 사람들을 통해 알려진 신기능이 있다. 바로 Vim 모드다. Vim 모드 켜기 Xcode 13의 첫 베타 기준으로 Preferences - Text Editing - Editing 항목을 들여다보면 제일 아래에서 Enable Vim key bindings 체크박스를 발견할 수 있었다. 체크를 하게되면 이제 Vim 모드가 가동된다. 위 스크린샷의 코드 하단에 검은 네모 박스가 커서다. 아직 입력 모드로 전환하지 않은 상태라 커서가 블.. 2021. 6. 16.
어느 날 맥 캘린더 앱에서 오류가 발생하기 시작했다 어느 날 내 업무용 맥의 캘린더 앱이 혼자서 미친 듯이 점프 뛰기를 시작했다. 그래서 캘린더를 열어보니 아래와 같은 팝업이 떴다. 서버에 오류가 발생했다니 뭐가 뭔지 알 수 없는 오류다. 도대체 무슨 일이 생긴 것일까? 문제 사실 명확한 문제를 정의하는 게 쉽지는 않다. 어쩌다 보니 아래와 같은 오류 팝업도 떴기 때문이다. CalDAVAccountRefreshQueueableOperation 작업에서 403 오류가 발생했다고 이해가 된다. 403은 보통 허용되지 않은 접근을 의미하고 대체로 인증이 되지 않았거나 인증 관련 문제로 볼 수 있다. 삽질 이 문제를 해결하기 위해 정보를 찾아봤지만 명확한 원인과 해답을 찾을 수는 없었다. 그래서 전통적인 방법을 시도해봤다. 사용한 방법은 단순했다. 설정(Pref.. 2021. 2. 19.
불행히도 M1이 웹 앱의 약세를 부르지는 않을 것이다 ARM 아키텍처를 탑재한 M1 SoC가 발표되고 이 칩셋이 들어간 맥이 정식 발매되면서 또 다른 주목을 받고 있는 것이 바로 iOS 앱의 호환성 여부였다. 동일한 아키텍처이기 때문에 맥에서 iOS 앱을 돌릴 수 있는 길이 열리기 때문이다. 그리고 실제 발표된 제품에서는 정말 (일부) iOS 앱들이 아주 매끄럽게 돌아가는 모습을 볼 수 있었다. 이와 관련해서 많은 사람들의 생각들이 이슈화 되고 있는데 개인적으로 눈길을 끄는 건 애플 생태계에서 웹 앱이 줄어들지 않을까 하는 이야기다. M1과 애플판 월드가든 크로스 앱 플랫폼의 탄생...맥 OS 웹앱은 사라지는가 - 테크잇 학습 차원에서 틈틈이 해외 전문가들이 블로그나 미디어 그리고 책에서 쓴 글을 정리하고 있습니다. 이번 포스팅도 그중 하나고요. 거칠고 오.. 2020. 12. 11.
Xcode의 부산물(?) 청소 쉽게 하기 Xcode가 가끔 꼬여서 이상 동작을 하는 경우 아래 터미널 커맨드로 Xcode의 똥[...]들을 치우는 경우가 종종 있었습니다. $ rm -rf ~/Library/Developer/Xcode/DerivedData 그런데 Big Sur부터인지 아닌지 확실치는 않지만, 이제는 저장 공간 관리 앱에서 손쉽게 필요 없는 개발자용 파일을 삭제할 수 있게 지원되고 있습니다. 위처럼 프로젝트 아카이브나 Xcode 캐시, 프로젝트 빌드 데이터 및 인덱스를 선택해서 삭제 버튼만 누르면 깔끔하게 청소가 됩니다. (그런데 지금은 무슨 버그가 있는지 프로젝트 빌드 데이터 및 인덱스는 깔끔하게 지워지지는 않기는 합니다) 장점으로는 애플에서 직접 지원하는 앱이기 때문에 터미널 커맨드에 비해 안전하다는 점이겠지만, 단점으로 삭제.. 2020. 11. 16.
Flutter의 Widget에서 앱 활성화 여부 파악하기 앱이 활성화될 때, 즉 백그라운드 상태에서 포그라운드 상태로 앱이 다시 올라왔을 때 위젯이 이 상태를 직접 파악하는 방법은 기존적으로 제공되지 않습니다. 앱 단위에선 onResume이나 onPause가 제공되는 것과는 다르게 말이죠. 제 경우 iOS 앱에서 백그라운드 태스크 앱이 백그라운드 상태에서 동작하다 포그라운드로 활성화될 때 UI 갱신이 누락되는 현상이 있어서 앱 활성화 여부를 알아낼 수 있어야 했습니다. 이와 관련해 정보를 찾아보던 도중 다행히도 제가 원하는 기능을 제공하는 Widget Bindings Observer라는 것을 발견할 수 있었습니다. 아래 예제는 특정 StatefulWidget에서 WidgetBindingsObserver를 사용해 앱의 상태 변화를 추적하는 코드를 구현한 예제입니.. 2020. 11. 13.
Org Mode에서 노션(Notion)으로 갈아타기 제법 오랜 기간 동안 개인적인 용도의 노트들을 Org Mode를 이용해 작성하고 관리했었습니다. 하지만 최근에는 노션(Notion)이 무료 플랜의 제한을 많이 풀게 되면서 노션으로 노트 플랫폼을 이주했습니다. 이번 글은 왜 노트 플랫폼을 옮겼나 간단히 매우 주관적으로 정리해보는 글입니다. Org Mode Org Mode는 이맥스(Emacs)의 킬러 소프트웨어라 불릴 정도로 유명한 빌트인 확장입니다. 이 확장에는 문서나 어젠다와 관련된 다양한 기능이 모여 있습니다. Org Mode 자체에도 플러그인 확장을 추가하여 Org 문서 기반의 데이터베이스를 구축하는 등 Org Mode는 사실상 Org 문서 기반의 플랫폼으로 볼 수 있습니다. 앞서 이미 갈아탔다고는 표현했지만 개인적인 용도의 노트를 정리하기 위한 용.. 2020. 10. 16.
Flutter에서 애플 앱스토어 업로드 시 최소 버전 표기 문제 Flutter를 업그레이드한 이후인지, 아니면 Xcode 12로 업그레이드 이후인지는 명확하지 않지만, 어느 날 fastlane 연동으로 앱스토어 업로드를 진행하는 도중에 아래와 같은 오류 메시지를 만났습니다. ERROR ITMS-90208: "Invalid Bundle. The bundle Runner.app/Frameworks/App.framework does not support the minimum OS Version specified in the Info.plist." 이 문제를 해결해봅시다. 약간 삽질을 하긴 했지만 이 문제의 해결은 생각보다 간단했습니다. 프로젝트와 타겟 그리고 앱 프레임워크의 최소 요구 버전(MinimumOSVersion)을 동일하게 맞춰주니 해결되었습니다. 우선 Xcode.. 2020. 10. 13.
iOS 시뮬레이터에서 애플 인증이 실패하는 문제 언제부터였는지 모르겠지만 Xcode 12가 등장하기 약간 이전부터 iOS 시뮬레이터에서 애플 인증이 실패하는 문제를 겪었습니다. 물론 이전에는 잘 되던 프로젝트였습니다. 에러도 특별히 알려주는 에러 없이 그냥 실패했습니다. 이 문제는 시뮬레이터 보안이 강화되면서 나타난 현상으로 쉽게 말해 시뮬레이터에서 이중 인증을 진행하면 해결됩니다. 시뮬레이터에서 AppleID로 로그인된 상태에서 설정(Preferences)으로 들어가서 제일 상단의 이름이 표시되는 곳을 누른 뒤 암호 및 보안(Password & Security)을 들어갑니다. 그러면 여기에 Apple ID를 사용하는 앱(Apps Using Apple ID) 항목이 보입니다. 여길 누르면 이중 인증을 요청하게 됩니다. 이후에는 사용자가 설정한 기기로 .. 2020. 9. 20.
flutter: 당신의 Xcode는 너무 구버전이예요! 이 글은 팁이라기보다는 그저 로그에 가깝습니다. 어느 날 flutter run 커맨드로 개발 중인 프로젝트를 실행시켜 보다 아래와 같은 메시지를 보게 되었습니다. Your Xcode version may be too old for your iOS version. 네. 바로 제목의 그 내용이지요. 스크린샷으로 보면 빨갛게 아주 기분 나쁜(?) 뭔가 해결해야 할 문제로 보입니다. 그런데 문제는 이 메시지의 내용이었습니다. 왜냐하면 제가 당시 사용하던 Xcode는 12 버전으로 정식 릴리즈 된 지 하루 정도 지난, 당시 가장 최신 버전이었기 때문이었죠. 구글은 검색엔진 빼고는 뭔가 나사가 빠진 것 같다는 느낌을 종종 받는데 flutter도 비슷한 느낌을 자주 받습니다. 물론 사람이 만드는 거니 실수는 없을 수.. 2020. 9. 18.
깃헙 페이지 VS 일반 블로깅 플랫폼 한동안 이 블로그를 방치하면서까지 깃헙 페이지를 열심히 관리하고 있었습니다. 하지만 GitHub을 마이크로소프트에서 인수한 뒤로 크고 작은 서버 장애들이 발생하고 있네요. 그러다 보니 깃헙 페이지(GitHub Pages)의 단점들이 조금씩 눈에 들어오기 시작했습니다. 그래서 약간의 화풀이(?) 겸 다시 일반적인 블로그 플랫폼으로 옮겨올까 하는 진지한 고민을 하는 김에 일반 블로깅 플랫폼과 깃헙 페이지의 경험을 비교해보는 글을 한번 써보고자 합니다. 깃헙 페이지의 장점 원하는 마크업 언어 및 에디터 사용 가능 아마도 가장 큰 장점은 이것일 것 같습니다. 원하는 언어로 원하는 에디터로 편하게 글을 작성할 수 있다는 큰 장점이 있습니다. 개인적으로는 이맥스에서 글쓰기에 좋게 흰색 배경이라는 변태(?) 같은 색.. 2020. 7. 21.
Flutter에서 써드파티 모듈을 수동으로 집어넣기 Flutter는 오픈소스 의존성 시스템을 지원하며 따라서 커뮤니티에서 서드파티 패키지가 활발히 개발되고 있습니다. 그런데 간혹 이런 모듈 패키지들 중 있었으면 하는 기능이 빠져있거나 버그가 있거나 등 여러 이슈가 있을 수 있습니다. 이 경우 소스를 가져와서 직접 수정한 후 빌드해야 하는 경우가 될 수도 있습니다. 그렇다면 소스를 가져와서 어떻게 하면 될지를 간략히 정리해 봅시다. 간략히 정리하는 이유는 정말 간단하기 때문이지요. 😏 우선 원하는 모듈의 소스를 가져옵니다. 보통은 Github에서 가져올 테니 git clone 커맨드를 써서 복제하면 됩니다. 복제되는 위치는 마음대로 놓을 수 있습니다. 그다음으로 pubspec.yaml 파일을 열어서 의존성 목록에 아래와 같은 형식으로 해당 모듈의 소스가 위.. 2020. 6. 9.
macOS에서 앱 별로 언어 설정하기 개인적인 사유로 macOS의 언어를 영어로 세팅하고 사용하고 있습니다. 아무래도 개발자라 객기 부리고 싶었기... 때문은 아니고 간혹 번역된 메시지가 더 이해하기 어려운 경우가 많다 보니 이렇게 쓸 수밖에 없는 상황이지요. 그런데 시스템 언어를 영어로 세팅해 놓으면 약간의 문제가 있습니다. 사파리(Safari)가 영어 모드로 동작하기 때문에 다국어를 지원하는 사이트를 접속해도 영어로 웹페이지가 표시된다는 문제를 예로 들 수 있습니다. 만약 유튜브에서 구독 목록을 보는데 한국어 제작자가 올린 영상들 제목이 영어이면 많이 이상하고 불편하겠지요? 😢 iOS는 시스템 언어와 별개로 앱 별 언어 설정이 가능한데 macOS는 왜 없나 생각만 하고 있었습니다. 그런데 눈을 크게 뜨니 macOS에서도 앱 별로 언어를 .. 2020. 4. 11.
보안을 버리고 기능을 얻는다는 것? 이 글은 Command-E라는 로컬 서치 엔진의 등장을 보고 느낀 감정(?)을 정리한 글입니다. 결코 광고나 비난의 목적은 없음을 밝힙니다. 안드로이드에서 느꼈던 그것(?) 구글의 유명한 스마트폰 OS인 안드로이드의 과거는 지금과는 약간 달랐다. 당시 스마트폰 시장의 선두 주자였던 애플의 아이폰을 따라잡기 위해서였을까? 안드로이드는 아이폰이 제공하지 않는 수많은 기능들을 무장하고 있었다. 당연히 이러한 기능을 원하는 사용자들의 호평은 이어지기 마련이었다. 하지만 이런 화려한 편리 기능의 이면을 나는 좀 심각하게 보고 있었다. 안드로이드에서 제공하는 편리했던 기능들 중 특히 아이폰에선 제공하지 않는 기능들은 사용자의 개인적인 영역을 일부 열어서 가능했던 기능들이 많다. 대표적인 희생양(?)이 메시지함이다... 2020. 4. 9.
728x90
반응형