Developer.TokkiSea(20)
-
framework not found CoreAudioTypes / AudioUnit 해결 방법
골치아픈 링크 에러가 뜬다. 위에서 AudioUnit.framework 와 CoreAudioTypes.framework 를 제거 하고 CoreAudio.framework 와 AudioToolbox.framework 가 추가되어 있는지 확인 한다. 해봤던거라도 다시 한번 해보세요..!!! 이후 빌드를 해보면 해결이 되거나.. 심볼을 못찾는 에러가 뜨거나. 사용중인 특정 함수를 못찾는 에러가 뜬다. 임포트 되어있나 확인하고 Static Library 로 바꿔줘 보세요..
2022.03.08 -
420YpCbCr8 Conversion to ARGB , RGBA 변환 방법
개인 메모용 입니다. 카메라등에서 들어오는 이미지 버퍼의 420YpCbCr8 포멧을 ARGB 나 RGBA 로 변환하는 방법이예요. (이직 관계로 요즘 일이 너무 많아서 TokkiSea는 신경을 못쓰고 있군요.) argbBuffer 은 ARGB 포맷이고 RGBA 로는 포인터 +1 를 해주면 되겠지만 맨 끝 포인터가 미할당 영역이라 무슨일이 일어날지 몰라요. RGBX로 사용하면 문제는 없을듯합니다. // YpCbCr Format // kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange : Bi-Planar Component Y'CbCr 8-bit 4:2:0, video-range (luma=[16,235] chroma=[16,240]). // kCVPixelFormatTyp..
2022.03.03 -
Swift - UICollectionView fixing center when rotate/landscape 방법
임시 메모 글입니다.(나중에 다듬을거예요..) 아래 코드를 이용하면 콜렉션뷰의 가로/세로 보기 전환 시 편하게 진행중이던 index 에 고정 됩니다. class RootPreviewVC: UIViewController { private lazy var collectionView: UICollectionView = { let collectionView = UICollectionView(frame: .zero, collectionViewLayout: collectionViewLayout) ... return collectionView }() private var prevIndexPathAtCenter: IndexPath? private var currentIndexPath: IndexPath? { let c..
2021.12.29 -
RxSwift 정리 6 - UI (TableView .bind .drive .orEmpty)
TableView.rx 기존 방식이라면 UIViewController에 TableView 하나 추가 delegate와 dataSource를 UIViewController에 연결하고 UITableViewDelegate, UITableViewDataSource 를 상속한 다음 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) 를 오버라이딩 한후 UITableViewCell 추가하고 클래스를 만들어 연결하고.. 과정을 생략할 수 있습니다. 그냥 UITableView 추가하고 I..
2021.08.24 -
RxSwift 정리 5 - operators(.withLatestFrom .sample .amb .switchLatest .retry(when:))
.withLatestFrom() .sample() .withLatestFrom : 가장 최근 발생값을 계속 subscribe한다. .sample : 가장 최근 발생값을 subscribe한다. 이후 새로운 값이 없다면 발생값이 없다. sample = withLatestFrom + distinctUntilChanged() 와 같다. let button = PublishSubject() let textField = PublishSubject() button.withLatestFrom(textField) // textField.sample(button) .subscribe(onNext: { value in print(value) }) textField.onNext("Typ") textField.onNext("T..
2021.08.23 -
RxSwift 정리 4 - operators(.startWith .concat .concatMap .marge .combineLatest .zip)
.startWith() 시작 값을 지정 let numbers = Observable.of(2, 3, 4) let observable = numbers.startWith(1) observable.subscribe(onNext: { value in print(value) }) // 1,2,3,4 .concat() 두 시퀸스를 합친다.(순서에따라 앞,뒤 주의) 동작 > first subscribe 하고 complete 발생한후 second를 subscribe한다. let first = Observable.of(1, 2, 3) let second = Observable.of(4, 5, 6) Observable.concat([first, second]).subscribe(onNext: { value in prin..
2021.08.23 -
RxSwift 정리 3 - operators(.flatMap .flatMapLatest .materialize .dematerialize .share)
계속 해서 연산자 입니다. .flatMap() 모든 시퀸스를 하나의 시퀸스로 모아서 발생 시킨다. .flatMapLatest() 가장 마지막의 시퀸스로 발생 시킨다. .materialize(), .dematerialize() score 는 Int 이다. materialize() 를 붙여주면 RxSwift.Event 형태로 바꾸어 준다. ( ".next(1)" 이 찍힘 ) Error, Complete 등 이벤트를 확인 할 수 있다. .dematerialize() 를 붙여주면 다시 Int 로 바뀐다. ( 다시 "1" 이 찍힘 ) struct Student { var score: ReplaySubject } let A = Student(score: ReplaySubject.createUnbounded()) l..
2021.08.20 -
RxSwift 정리 2 - SubJect, operators(기본)
메모용 연산자는 너무너무도 많아서 새로운 연산자 마다 별도로 작성할 예정입니다. 여기서는 많이쓰는 기본적인것만 작성합니다. .ignoreElements().elementAt().filter().skip().skipWhile().skipUntil().take().takeWhile().takeLast().takeUntil().distinctUntilChanged().distinctUntilChanged().delay.buffer.throttle.debounce.toArray().map.enumerated() RxSwift의 장점 !! 비동기화 프로그래밍을 쉽고 강력하게 할 수 있다. Rx 가 붙은 다른 언어로 즉시 사용할 수 있다. RxSwift 작성 -> RxJava로 즉시 사용 가능 PublishSubj..
2021.08.20 -
RxSwift 정리 1 - Observable 생성
RxSwift 메모 용도 정리입니다. RxSwift Reactive Progreamming with Swift 책을 기준으로 작성되었습니다. Observable(sequence) 생성 let one = 1,two = 2,three = 3 1개요소만 생성 : .just() let observable1 = Observable.just(one,scheduler: MainScheduler.instance) scheduler: MainScheduler.instance 요소 생성시에도 스레드를 선택해줄수 있습니다. 종류는 다음에 설명, 여러 요소 생성 : .of() let observable2 = Observable.of(one,two,three) //Observable let observable3 = Observ..
2021.08.20 -
프로그래머스 - Swift algorithm - BALLOON 단어 찾기
"BAOOLLNNOLOLGBAX" 이런 형태의 문자가 입력되면 BALLOON을 몇개나 만들수 있는지를 알아내는 문제다. C++의 char 정도로 for 문 돌면서 찾고 지우면 너무 쉽게 결과가 나올것 같다. 하지만 Swift 는 Charecter 와 String 의 사용이 자연스럽지 못해서 조금은 어려울 수 있다. public func findBALLOON(_ S : inout String) -> Int { let searchArr : Array = ["B","A","L","L","O","O","N"] var foundCount : Int = 0 var bRoop : Bool = true while(bRoop) { if !S.contains("B") { // 첫 글자 B 조차 없으면 시작도 하지 않는다...
2021.08.04 -
프로그래머스 - Swift algorithm 0, 1 배열에서 1 덩어리 찾기
가로 세로 2차원 배열에서 "0"과 "1"을 배열하고 "1"이 가로세로 연결되었을 때 한 묶음으로 간주하여 총 몇 묶음인가, 또 가장 많은 "1"이 연결된 수를 구하는 문제다. 이런 식이다. 좌, 우 끝부터 보면 8개의 "1" 이 연결되어 있고 좌, 아래는 3개, 우, 상에는 3개, 우/하에는 10개의 "1"이 연결되어 있다. 결과는 총 4덩어리고 제일 큰 덩어리는 10개라서 정답은 4,10을 구하는 문제였다. 알고보니 DFS, BFS라는 알고리즘이다. // 문제 입력 var maps : [[Int]] = [[1,1,0,1,1],[0,1,1,0,0],[0,0,0,0,0],[1,1,0,1,1],[1,0,1,1,1],[1,0,1,1,1]] print(DPS_algorithm(&maps)) // 체크할 X,Y..
2021.08.02 -
SwiftUI 스터디 4. List, GeometryReader, Animation, Selection, SF Symbols
3편에 이어서 이번에는 List를 해보겠습니다. 실무 수준에 쓸 수 있도록 이것저것 해보았습니다만 그래도 부족한 느낌이 드네요. 리스트에 사용할 데이터 구조체를 하나 만들어 줍니다. struct ListData { let id: String let level: Int let nickName: String static func getUsers() -> [ListData] { return [ ListData(id: "TokkiSea", level: 25, nickName: "토끼씨"), ListData(id: "jellapi", level: 70, nickName: "젤라피"), ListData(id: "Sukki", level: 90, nickName: "수기"), ListData(id: "Rabbit",..
2021.06.03