일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 인프런강의
- IOS프로그래밍
- 카카오톡채팅봇
- 우리를위한프로그래밍
- 토플공부수기
- 파이썬웹크롤링
- 토플
- 프로그래머스
- IOS
- 인프런파이썬
- nodeJS
- 파이썬
- 스위프트
- 유학토플
- 인프런파이썬강의
- Python3
- 노드JS
- 인프런오리지널
- 웹크롤링
- swift
- 교환학생토플
- SwiftUI
- 파이썬중급강의
- rxswift
- JS
- 리프2기
- 인프런
- uikit
- 파이썬중급
- 자바스크립트
- Today
- Total
목록앱 (52)
먹고 기도하고 코딩하라
요즘 회사에서 다운로드 작업을 하고 있다. 까다로운데, 또 까다로운만큼 해결할 때의 쾌감이 장난 아닌 작업이다. 정처기 공부할 때 DRM 봤을 때는 이게 나랑 연관 있는 얘기 될 줄 몰랐지.. 팔자에도 없는 줄 알았더니 -_- 아무튼 이 태스크 때문에 이슈가 조금 있어서, 왜 iOS 버전에 따라 태스크를 달리 써야 하는지, 또 이 태스크가 근본적으로 무슨 차이가 있는지 좀 알아봤다. 사실 AVAssetDownloadTask는 iOS 9+, AVAggregateAssetDownloadTask는 iOS 11+ 이상을 지원해서 11 이상을 지원하는 우리 앱에서는 사실 일괄적으로 Aggregate 써도 상관없긴 한데, 또 이게 으른의 사정과 내부적인 이슈가 있어서 버전별로 태스크를 나눠 쓰고 있다. Swift로..
파이썬으로 문제를 풀다가 최근에는 스위프트로 문제를 푸는 연습을 했다. 제일 난감했던 것 중 하나는 스위프트 String은 인덱스를 지정할 때 그냥 Int형 숫자를 쓸 수 없고 String.index 타입을 써야 한다는 거다. String에 extension으로 커스텀 코드 추가하면 배열 접근하듯이 쓸 수 있게 만들 수 있는데, 문제 한 개 풀 때마다 귀찮아서 그 짓 어떻게 하나 싶기도 하다. 어차피 문자열 안 다룰 수는 없으니까 그냥 겸사겸사 index를 같이 본다. 문자열 인덱싱 var lyrics = "Thunder only happens when it's raining" print(lyrics[lyrics.startIndex])// T print(lyrics[lyrics.index(before: ..
iOS 개발자라면 iOS 13과 함께 등장한 sceneDelegate를 모를 수가 없을 텐데, 우리 앱은 최소 지원 버전이 iOS 11이다. 지금까지는 sceneDelegate를 도입하지 않고 AppDelegate만 관리했다. 어쨌든 Info에 scene manifest 설정을 안 하고 sceneDelegate 도입을 안 하면 13 이상 버전도 appDelegate를 타긴 타니까. 이번에 카플레이를 지원하게 되면서 sceneDelgate를 도입하게 됐다. 카플레이 스크린을 띄우려면 CPTemplateApplicationSceneDelegate라고 카플레이 씬에 대한 delegate가 필요한데, UISceneDelegate가 없이 단독으로 카플레이 씬만 띄우고 delegate 만드는 게 불가능했기 때문이다..
회사 들어와서 작은 업무 하나 맡고 운영 이슈 처리하다가 카플레이를 첫 프로젝트로 받았다. 애플 카플레이는 폰과 차를 연동해서 차에서 폰을 쉽게 사용하기 위해 만들어졌다. (운전 중 폰하면 위험하니까) 카플레이라서 음악 앱만 될 것 같지만 꼭 그렇지만도 않다. 우리 회사 앱 주력 서비스가 플레이어다 보니까, 카플레이를 지원해달라는 요구가 몇 년 전부터 있긴 했나보다. 오랜 숙원사업처럼 남아 있었는데 인력이 모자라서 진행하질 못하다가 이번에 내가 들어와서 맡게 됐다. 카플레이는 해본 적이 없지만... 뭐 일이라는 게 항상 해본 것만 할 수는 없는 거니까. 그나마 J님과 M 대리님이 미리 위키에 써두신 게 있어서 그걸 참고하면서 뚝딱뚝딱 만들었고 이제 QA를 목전에 두고 있다. 카플레이를 개발하면서 웃겼던(..
회사 와서 딥링크가 뭔지 첨 알았다. 모르는 게 많고 내가 업무를 통해 배워갈 게 많다는 게 좋긴 한데 잘 이해 못해서 버벅일까봐 그게 좀 걱정.. 아무튼, 코드 분석하면서 deeplink 어쩌구 되어 있는 건 보긴 봤는데 정확히 뭔지는 모르겠지만 당장의 분석에 크게 필요하지 않은 거라서 넘겼는데 공부하면 좋을 것 같다고 하셔서 주말 걸쳐서 공부했다. 우선 딥링크는 하이퍼 링크의 모바일판과도 같다. 특정 주소나 값을 입력하면 앱이 실행되거나, 앱의 특정 화면으로 이동한다. 음.. 예를 들면, 핸드폰하다가 쿠팡 물건 광고가 뜨는 경우를 생각해볼 수 있겠다. 쿠팡 앱이 설치되어 있을 때 광고를 누르면, 바로 쿠팡 앱이 켜지면서 그 상품으로 넘어가는 이런 게 딥링크의 일종이라고 할 수 있을 것 같다. 서버에서..
업무 프로세스에 어느 정도 적응이 되어가고 이슈도 몇 개 쳐내고 있던 중에 J님이 FCM이나 딥링크, 다이나믹 링크를 보면 좋을 것 같다고 조언을 해주셔서 지난 금요일 오후에는 계속 FCM 푸시 보내는 걸 연습했다. 비록 잘 안 돼서 삽질을 엄청 했지만... -_- 이런 걸로 삽질하면 되게 머쓱한데 무안 주시지도 않고 잘 봐주셔서 너무 감사했다. 어떤 부분에서 잘 안 됐는지만 간단히 적어보려 한다. 1. 일단 공식 문서에 너무 의존하지 않는다. 이상한 말이긴 한데 구글 파이어베이스 쪽에서 제공하는 공식 문서는 약간 옛날 느낌이라, 첫 번째 프로젝트 만들어서 고대로 했을 때는 망해버렸다. (ㅠㅠ) 그리고 자동 번역된 거 보느니 원문 보는 게 훨씬 나을 수도 있다. (빠른, 목표-C 이렇게 돼 있는 거 보고..
네줄요약 : 테이블뷰는 단일 컬럼만 가능하다는 제약 사실을 기억하고 결정하자. 둘 사이의 가장 큰 차이점은 레이아웃이다. 테이블뷰를 사용해도 될 요구사항에는 굳이 컬렉션뷰를 사용하지 말고 테이블뷰를 쓰는 게 좋다. 이유는, 컬렉션뷰는 보일러플레이트 코드 때문에 코드 양이 늘어나기 때문이다. 일단 TableView와 CollectionView 간 공통점과 차이점을 간단히 정리하면 이 정도 쓸 수 있다. TableView CollectionView 공통점 * 셀을 기반으로 여러 데이터를 표현할 수 있다. (테이블뷰는 UITableViewCell, 컬렉션뷰는 UICollectionViewCell) * UIScrollView의 서브 클래스이다. * dataSource, delegate 구현이 필요하다. (del..
Observable을 생성할 수 있는 오퍼레이터들은 다음과 같은 것들이 있다. subscribe는 문서 하단에서 설명하겠다. Observable 생성 오퍼레이터 just(_ element: T) -> Observable 1개의 요소만 갖고 방출하는 Observable 시퀀스를 만들어 반환한다. 엄밀히 말하면 1개의 아이템을 그 아이템을 방출하는 Observable로 변환하는 오퍼레이터다. From과 비슷하지만, From은 배열이나 순회 가능한 요소들을 받아서 순회해서 방출하지만, just의 경우 배열을 받아도 배열 자체를 방출한다. just에 1개 이상의 요소를 매개변수로 줄 수 없다. 이 경우 컴파일 에러가 난다. Observable .just(1) .subscribe(onNext: { print($0..