일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 파이썬중급
- SwiftUI
- 인프런강의
- 노드JS
- 웹크롤링
- Python3
- rxswift
- 파이썬웹크롤링
- IOS프로그래밍
- 인프런오리지널
- 파이썬
- 유학토플
- 인프런파이썬
- JS
- 스위프트
- 자바스크립트
- uikit
- 토플
- 프로그래머스
- 리프2기
- 교환학생토플
- 파이썬중급강의
- 토플공부수기
- 인프런파이썬강의
- IOS
- 우리를위한프로그래밍
- 인프런
- swift
- nodeJS
- 카카오톡채팅봇
- Today
- Total
목록전체 글 (137)
먹고 기도하고 코딩하라
이번에 회사 앱 위젯 개선 작업을 했다. 위젯 작업은 원래 다른 분께서 하시던 작업이었으나, 그 분께는 다른 메인 작업이 있어 작업을 가져왔다.WidgetKit과 SwiftUI로 레이아웃을 만드는 방법만 안다면 위젯은 그렇게 어려운 작업은 아니다. 다만 이번에 오프라인 모드에서 이미지를 가져오는 작업이 조금 까다로웠어서 포스팅한다. 문제오프라인 모드에서는 기기에 저장된 이미지 path를 불러와서 썸네일을 보여줘야 한다.그런데, path가 정확하고(documents) 이미지도 실재하는데 위젯에 표현이 안 된다.원인WidgetKit은 경량화 app extension이다. WidgetKit에서는 로컬에 저장된 파일들을 마음대로 접근할 수 없다.그러니까 실제로 Documents 디렉터리에 저장이 돼 있어도 읽..
회사에서 이번에 맥을 세콰이어로 업데이트하고 Xcode도 16으로 업데이트하면서 소소한 문제가 있었습니다.해결하는 과정에서 팀과 공유하는 차원으로 문서를 썼는데, 혹시 누군가에게 도움이 될까 싶어 블로그에도 올립니다. 목차Xcode 15 이하 버전 사용법문제 케이스iOS 18 Simulator Runtime이 영원히 다운로드되지 않음Sentry pod 문제로 빌드 불가기타 pod 문제로 빌드 불가UIViewController에 .tab(UITab?) 변수 추가로 인한 기존 변수 리네임iOS 18: 콜렉션뷰로 가져갈 셀이 아니라면 dequeue하지 말 것 Xcode 15 이하 버전 사용법MacOS 15 Sequoia로 업데이트하면, 기존에 사용하던 Xcode 15는 바로 열어 사용할 수 없습니다.대신 사..
이번에 회사 앱이 iOS 15.0을 minimum deployment로 올리게 되었다. 여러 가지 이유가 있는데, 이유 중 하나는 StoreKit1이 iOS 18.0 이상 버전에서 deprecated된다는 사실이었다. Original API for In-App Purchase | Apple Developer DocumentationOffer additional content and services in your app using the Original In-App Purchase API.developer.apple.com 대신 Swift 기반의 IAP 방식을 사용해서 인앱 결제를 구현하도록 권유하고 있다. In-App Purchase | Apple Developer DocumentationOffer co..
UICollectionViewFlowLayout에는 prepare() 메소드와 layoutAttributesForElement(in rect: CGRect) → [UICollectionViewLayoutAttributes]? 라는 메소드가 있어 이것을 오버라이드할 수 있다.prepare : 현재 레이아웃을 업데이트하도록 레이아웃 객체에게 지시레이아웃 업데이트는 콜렉션뷰가 처음 콘텐츠를 보여줄 때와 뷰 변경으로 인해 레이아웃이 명시/암시적으로 유효성을 잃을 때 발생매 레이아웃 업데이트 동안 콜렉션뷰는 prepare()을 먼저 호출해 레이아웃 객체에게 다음 레이아웃 수행을 위한 준비를 하도록 함layoutAttributesForElement : 특정 직사각형 영역 내의 모든 셀과 뷰의 레이아웃 attrib..
원래 비동기 작업 처리에 RxSwift를 주로 이용해서 앱을 만들었는데, 올해부터는 Swift Concurrency를 주로 사용해서 비동기 작업을 하고 있다. 개인적으로 Combine은 기존에 RxCocoa를 사용하던 UI 작업이나 비동기 작업 결과를 가공하는 데에 쓰기 좋고, async-await은 통신 작업과 같이 비동기 작업에서의 RxSwift를 대체하는 느낌이 강하다고 생각한다.하반기 시작하면서 회사 앱에도 Swift Concurrency를 도입해서 기존 컴플리션 핸들러(!)를 사용해서 깊은 depth를 가진 코드를 변경하고자 통신부를 async-await 사용할 수 있도록 감싸는 작업을 했다. 기존 통신 로직은 이랬다.Requester를 만든다. 필요한 헤더, 베이스 URL, 쿼리, 바디 등은 ..
결론만 먼저 쓰자면, metatype이 되는 그 클래스의 init에 required를 붙여주면 해결되는 문제다.그런데 왜 그래야 할까? 이유는 맥락과 차근차근 설명하는 걸로~ 기존에 쓰던 통신 코드를 async-await처럼 사용할 수 있을까 고민하다가 기존 Requester 객체에서 complete 컴플리션 핸들러와 failed 컴플리션 핸들러를 continuation resume하는 것으로 변경하면 되겠다는 생각에 그렇게 수정했다. (추후 포스팅 예정)통신에 앞서, 먼저 필요한 옵션을 생성하도록 되어 있다. 이 옵션은 프로토콜을 준수한 구체 클래스를 생성해서 집어넣는다. 엔드포인트, 쿼리, 바디 등 여러 가지 옵션을 포함한다. 그런데 엔드포인트만 지정하는 기본 옵션이라면 API 클래스마다 이 옵션까지..
일단 추천부터..참고로 분갈이는 내돈내산입니다.돈 받고 후기쓴 거면 눈에 흙이 들어가도 암말 않겠습니다. 더나무 블로그 : 네이버 블로그서울*경기 출장분갈이 전문업체전문업체입니다 언제든지 문의주세요 ! https://smartstore.naver.com/thenamuublog.naver.com강남역 인근에서 스파티필름 분갈이를 할 수 있는 업체를 알아보다가 사장님의 블로그를 발견하고 오픈카톡을 남겼습니다.정말 친절하게 상담해주셨고요, 가격도 미리 알려주신 금액에서 추가금 없이 깔끔하게 진행되었습니다.휴일을 제외하고 하루만에 작업이 완료되어 직접 사무실로 가져다주셨는데요.좀 더 넓은 토분으로 스파티필름을 이사시켰는데, 마음에 듭니다.식물도 기뻐하는 느낌 ^^사장님이 아주 친절하시고 가격도 괜찮은 편이라고 ..
이미 2월은 한 달도 전에 끝났지만, 늦게라도 회고를 올린다. 1년 단위로 회고를 하려니까 뭔가 사건은 많았는데 추적하기 버거운 양이라서 앞으로는 분기마다 1번씩은 회고하려고 한다. 직장: 기술 작년 11월, 3.0.0 버전 메이저 업데이트 이후에 겨울 동안은 규모가 큰 작업을 하지는 않았다. 그래도 좀 중요한 작업을 꼽자면… 12월에 ReactorKit, Realm 사내 세미나를 진행했다. 테스트 코드를 아주 일부 도입했다. 세미나로 추진력을 얻어 1월에는 회원가입 마케팅 동의 페이지에 ReactorKit을 최초로 도입했다. ReactorKit은 프로젝트 일부에만 도입할 수 있다는 장점이 있어 좋다. 앱 내 다운로드된 클립 파일이나 캐시 등을 전부 삭제할 수 있는 기능을 만들었다. 앱 내 샌드박스의 /..