블로그 이미지 로컬 마이그레이션 & Cloudflare R2 이전기
블로그를 오래 운영하다 보면 이미지가 깨지기 시작한다. GitHub issue에 드래그해서 올렸던 이미지, velog에서 옮겨온 이미지, esdrop 링크들. 언제 사라질지 모르는 외부 의존성들이 쌓여있었다. 오늘 하루를 통째로 써서 정리했다. 물론 python 안쓴지 오래라 자동화 코드는 AI를 통해 작성되었다. 문제 파악 714개 포스트...
블로그를 오래 운영하다 보면 이미지가 깨지기 시작한다. GitHub issue에 드래그해서 올렸던 이미지, velog에서 옮겨온 이미지, esdrop 링크들. 언제 사라질지 모르는 외부 의존성들이 쌓여있었다. 오늘 하루를 통째로 써서 정리했다. 물론 python 안쓴지 오래라 자동화 코드는 AI를 통해 작성되었다. 문제 파악 714개 포스트...
생각보다 빨리 끝나서 오늘 미리 좀 해보려고 한다. 아무래도 Actor쪽이다보니 빨리하는게 좋다고 판단했다. Actor의 경우 Swift Concurrency & 격리(Isolation) 핵심 개념 정리, 미니프로젝트같이 언급을 많이 했어서 패스하도록 한다. RunningCenter Actor 기본 구조 구현 RunWay에서는 GPS, ...
Swift Concurrency & 격리(Isolation) 핵심 개념 정리 Matt Massicotte의 강연을 바탕으로 정리한 Swift Concurrency 가이드. 단순한 문법 습득을 넘어, 왜 이렇게 설계되었는지를 이해하는 것을 목표로 한다. 1. 왜 Swift Concurrency인가? 관습(Convention)에서 ...
RunViewModel 만들기 현재까지 LocationService와 HealthKitService를 각각 구현했다. 하지만 View가 이 서비스들을 직접 들고 있으면 데이터 수집과 화면 표시가 한곳에 섞이게 된다. 또한 이후 위치 정보와 HealthKit 데이터를 조합해야 하는 시점이 오면 View에서 처리하기에는 책임이 커지게 된다. 그래서 R...
HealthKitService 만들기 이전글에서 구현한 CoreLocation만큼 중요한 기능이다. 여기도 나중에 참고하면 좋게 하기위해 나름 자세하게 써보려 한다. 1. HealthKit 추가하기 이렇게 추가를 해준다. 2. Info.plist에 추가 이젠 수동으로 info를 관리하니 예전처럼 추가만 해주면 된다. 이전글에 있...
LocationService 만들기 러닝앱에서 빠지면 안되는 가장 중요한 요소이다. 오늘은 이걸 만들고 mockui하나 만들어서 시뮬레이터와, 실기기 테스트를 할 예정 다만 Swift6로 만들기때문에 초기에 잘 해놔야할 것 같다. 이미 알고 있는 부분이 많긴하지만, 그래도 디테일하게 하나 하나 작성을 하면서 가보려 한다. 이유는 그냥 나중에 ...
시작하게 된 이유 Swift Concurrency를 공부하면서 Actor를 제대로 써보고 싶었다. 단순히 @MainActor를 클래스에 붙이는 것 말고, 별도의 격리 영역을 만들어서 데이터를 처리하는 구조를 직접 만들어보고 싶었다. 미니 프로젝트 목표 Timer로 임의의 데이터를 생성해서 Actor에 흘려보내고, 그 결과를 ViewModel...
개인 장기? 프로젝트를 진행해본다. 1. 프로젝트 만들기 위의 표처럼 기본적인 세팅을 하고 들어간다. 사실 개인적으로 여기서 가장 큰 핵심은 Swift6을 사용했다는 점이다. 확실히 Swift 5를 쓰다가 최근에 Swift 6을 접하니 Concurrency부분이 상당히 빡셌다. 즉 그만큼 철저한 Thread 관리가 필요하다는걸 느꼈는데, ...
우선 ReadMe에 아래와 같이 보완사항에 대해서 리스트를 적었었다. 보완해야 할 점 iOS 앱 ObservableObject + @Published → @Observable 마이그레이션 ProfileViewModel 로딩/성공/실패 상태 관리 추가 FavoriteViewModel → scan 으로 리팩토링 FavoritesView...
Widget 적용하기 이제 GitExplorer의 마지막 단계인 Widget 적용하기이다. 이전에이미 정리를 해본적이 있기에, 이걸 참고해서 빠르게 적용을 해보려 한다. 사실 이전에도 WidgetKit을 처음접할때 했던게 Github Repo였어서 결이 비슷할지도 모른다. 1. Widget Extension 만들기 Target을 추가해서 ...