본문 바로가기

삶은계란 (Diary)

(36)
Grid와 List를 함께 써보자. 애플의 앱들을 보면 한 가지 View가 아니라 여러 View를 조화롭게 사용하는 것을 확인할 수 있다. 대표적인 예로 '미리알림'앱이 그러한데 쪼개서 보면 오른쪽과 같이 LazyVGrid와 List를 함께 쓴 것을 볼 수 있다. 참 간단하고 예쁜데 구성하려면 생각만큼 만만치는 않다는 것이 문제다. 이런 비슷한 구조의 인터페이스를 JusTheme에서 사용한 적이 있는데, 이때 사용한 '억지' 방법과 최근 알게 된 조금 더 정석에 가까운 방법을 소개해 보고자 한다. 0. 모든 문제의 시작 이게 어려운 이유는 ScrollView와 LazyVGrid, ListView의 특성 때문이다. ScrollView는 자신에게 포함 된 Child들을 통해 크기를 조절하는데, LazyVGrid와 ListView는 화면 밖에 ..
앱스토어 '서드파티 SDK의 API 권한 소명' 문제 해결하기 최근 Tower Of Babel의 베타 테스트를 위해 빌드를 올린 후 위와 같은 메일을 받게 됐다. 주어진 링크와 내용을 확인해 보면 서드파티 SDK가 API를 사용하는 경우 왜 사용하는지 소명하라는 이야긴데, 작년에 개발자 대상 키노트와 커뮤니티를 통해 올해 초 이것이 필수로 적용될 것이라는 소식을 들은 바 있어 바로 대응할 수 있었다. 딱히 코드를 뒤집어 엎어야 하는 기술적인 문제는 아니고, 단순히 사용되는 API에 대해 이유만 적어주면 끝나는 부분이라 혹시나 겁을 먹고 헤맬 누군가를 위해 짧게 남겨 본다. 일단 참 친절하게도 빌드를 앱스토어 커넥트에 올리게 되면 위와 같은 메일이 바로 날아오게 된다. 해당 메일을 참고해서 작업을 진행하면 되는데, TowerOfBabel은 별 기능 없는 게임이라 Sy..
노승환 작가와 북촌을 걷다. (세기P&C 리코 GR 북촌출사 후기) 묵은 한 해를 보내고 새로운 한 해를 맞이하고, 한 겨울 답지 않은 날씨들이 마냥 싫지만은 요즘 방앗간을 그냥 지나치지 못하는 나는 어김없이 쇼핑몰을 보고 있었다. 할인 이벤트는 없나 찾던 나의 시선에 한 배너가 눈에 띄었던 것 같다. GR3든 3x든 처음 사게 되면 매뉴얼을 보든, 먼저 쓰는 사람의 조언을 듣든 스승이 될 만한 무언가가 있어야 한다. 커뮤니티에서는 입문용 바이블처럼 추천되는 영상이 있는데 이 영상 속 인물이 한국의 GRist인 노승환 작가다. 결국엔 개인의 취향과 습관에 맞게 변하겠지만 뭘 어떻게 해야할지 막연하다면 해당 영상을 참고하는 것 만으로 당장 내일의 촬영이 간편해질 정도니 참고해 보자. 사진에 관심이 많고, 이걸 즐기는 것도 좋아하다보니 사진전 정도는 꼬박꼬박 챙겨 다니며 쌓..
2023년을 마무리 하며 길고도 알찼지만 늘 돌이켜 보면 별 거 없는 한 해의 마지막 날이다. 올 해를 뒤돌아 보며 어떤 일이 있었는지 간단히 정리를 해 봤다. 여행, 출사 1월 서울 야간 출사 3월 부산 여행 5월 인천 출사 5월 경복궁 야간개장 5월 한강 소풍 5월 서울 식물원 6월 부산 여행 7월 인천 캠핑 8월 대전 여행 10월 국립중앙박물관 출사 10월 경주 여행 12월 포항 여행 여행을 가면 사진을 찍었고, 사진을 찍으러 여행을 다녔다. 1년동안 많은 것을 보고, 많은 것을 느꼈다. 같은 곳이라도 다른 사람과 가면 새로운 느낌, 새로운 것이 보인다는 것을 다시 깨달았고, 혼자 훌쩍 떠나는 여행은 굉장히 가볍지만 새로운 인연을 만날지 모른다는 설렘이 존재한다는 것을 알았다. 커리어 12월 까지 두 번의 면접이 있었고, ..
ERROR: Failed to install the app on the device. 오류 ERROR: Failed to install the app on the device. 최근 Xcode를 사용하다가 갑자기 위와 같은 오류가 뜨기 시작했다. 불과 30초 전에 테스트할 때만 해도 잘 됐는데 폰을 재부팅해도, 맥을 재부팅해도 해결되지 않으니 미칠 것 같았는데 문제 해결은 간단하다. 해당 오류는 Xcode 15와 iOS17을 사용할 때 발생하는 문제로 해결 순서는 다음과 같다. 테스트 기기 연결 해제 테스트 기기의 설정으로 이동 Developer 메뉴로 이동 맨 위의 Clear Trusted Computers 실행 테스트 기기 연결 재인증 깔끔하게 해결된다.
Python 코드 패키징 하기 (1) 블로그에 게시글이 없다고 몸이 쉬는 것은 아니다. Justheme는 새 업데이트가 앱스토어에 등록 됐고, 새로운 유틸리티 앱인 TintTrobe도 성공적으로 등록돼 서비스 중이다. 최근에는 알고리즘 공부를 하던 스터디 모임에서 마일 스톤이라도 하나 놓을 겸 시작한 작은 프로젝트에 박차를 가하는 중이었다. 언어 중에 가장 문법이 단순하다고 평가받는 Python을 사용하는 모임이었는데, 이를 사용해 간단한 게임을 만들어 보자고 한 게 여기까지 왔다. Coffee Burger Code Coffee Burger Code cbc.montaigne.io 팀 이름도 굉장히 희한하지만 모든 작업의 경과나 소식들은 위의 팀 사이트를 참고하면 된다. 좌우간 우리와 같은 이유이든, 프로그래밍을 처음 접한 사람이든 완성시켰다..
Xcode archive시 'Asset validation failed' 문제 만든 앱을 앱스토어에 등록하기 위해서는 Archive를 반드시 진행해야 한다. 아직 만든 앱이 몇 개 되지 않은 상황에서 자주 만나게 되는 상황 중에 하나가 'Asset validation failed' 에러다. 해당 에러는 같은 이름으로 여러 내용으로 구성되는 경우가 있는데, 내 경우 'you need to include all of the orientations to support iPad multitasking.'인 경우가 많다. iPad OS는 iOS와 다르게 스플릿 뷰, 사이드 뷰, 스테이지 매니저등의 여러 방식의 멀티태스킹 환경을 지원하는데, 해당 기능을 온전히 지원하기 위해선 모든 기기 방향의 인터페이스를 반드시 지원하도록 설정해야 한다. 바로 프로젝트의 이 부분이다. 아직 내 프로젝트들은 ..
PHPickerViewController가 특정 이미지를 불러오지 못하는 문제 서비스 중인 JusTheme의 업데이트를 준비하던 도중 작업에 필요한 유틸리티 앱을 만들었다. 스토어 등록을 위해 마무리 준비를 하던 도중 특정 이미지를 불러오지 못하는 문제를 발견해서 이를 수정했다. 결론부터 말하자면 PHPicker는 현재 애플에서 제공하는 가이드라인 대로 작업하면 WebP를 제대로 표시할 수 없다. 애플이 권장하는 PHPicker의 구현 방식은 다음과 같다. Meet the new Photos picker - WWDC20 - Videos - Apple Developer Let people select photos and videos to use in your app without requiring full Photo Library access. Discover how the PHPi..
app-ads.txt 문제를 firebase로 해결해 보자. 포스팅이 잠깐 뜸한 사이 앱을 출시했다. 초기버전은 심사 통과가 목적이었기 때문에 구현하려던 몇 가지 기능을 포기한 상태였는데 그중 하나가 배너 광고이다. admob을 사용해 배너 광고를 다는 것까지는 좋았는데 이내 위와 같은 알림이 등장했다. 뭐 대단한 수익을 바라고 탑재하는 것은 아니지만 문제가 생길 수 있다니 이번 기회에 어떻게 하는 건지 알아 두도록 하자. 보통은 개발자 홈페이지나 blogger를 사용하는데, 내 경우 개발자 페이지는 존재하지도 않고, 앱 상세 페이지 등을 전부 티스토리의 페이지로 연결해 사용하고 있다. 가장 이상적인 방법은 티스토리에 해당 파일을 추가하는 것인데 23년 6월 기준 어떤 방법을 써도 티스토리로는 불가능하니 마음 편하게 다른 방법을 찾아보는 것이 좋다. 그렇게 대안으..
Github에 push가 안 되는 경우 아 세상에... 별 거 안 건드렸는데(프로젝트를 클로닝 하고 Xcode 베탈 깔긴 했다 🤣) 작업한 내용이 local에서 remote로 push가 되지 않는다. 😇 Xcode에 Github을 다시 연결해 봐도, remote를 몇 번 다시 연결해 봐도 상황은 변하지 않는다. 사실 비슷한 문제를 작년에 겪은 적이 있었다. 당시에는 지금보다 작업량이 더 많은 상황이었기 굉장히 패닉이었는데 덕분에 제대로 배웠는지 뭐가 문젠지 알 수 있었다. 위 사진을 보면 main branch의 head와 현재 local repogitory의 head가 어긋난 걸 알 수 있다. 지금 같은 상황이 펼쳐지면 remote, local, main 세 개의 head가 제멋대로인 상태라 상황을 한눈에 보기 어려운데, console로 보면..