Skip to content

Instantly share code, notes, and snippets.

View oozoofrog's full-sized avatar

oozoofrog oozoofrog

View GitHub Profile
@oozoofrog
oozoofrog / XCTRxHandle
Last active May 2, 2018 05:44
aysynchronous Rx Observable test handle function
public func XCTRxHandle<Element>(_ description: String = "XCTAssertForRx", testcase: XCTestCase, timeout: TimeInterval = 1, queue: DispatchQueue = DispatchQueue(label: "Rx queue"), observable: Observable<Element>, trigger: @autoclosure @escaping () -> Void = {}(), value onNext: @escaping (Element?) -> Void = { _ in }, completed: @autoclosure @escaping () -> Void = {}(), error onError: @escaping (Error?) -> Void = { _ in }, result: (XCTWaiter.Result) -> Void = { _ in } ) {
let expect = testcase.expectation(description: description)
expect.assertForOverFulfill = false
let bag = DisposeBag()
queue.async {
observable.subscribe({ (event) in
switch event {
case .error(let error):
onError(error)
extension WKNavigationType: CustomStringConvertible {
public var description: String {
switch self {
case .backForward: return "backForward"
case .formResubmitted: return "formResubmitted"
case .formSubmitted: return "formSubmitted"
case .linkActivated: return "linkActivated"
case .other: return "other"
case .reload: return "reload"
final class RoutingModule {
weak var rootViewController: UIViewController?
var navigationController: UINavigationController? {
if let navigation = self.rootViewController as? UINavigationController {
return navigation
} else {
return self.rootViewController?.navigationController
}
//
// WKWebView+Rx.swift
// RxGround
//
// Created by eyemac on 2017. 9. 2..
// Copyright © 2017년 rollmind. All rights reserved.
//
import WebKit
import RxSwift
@oozoofrog
oozoofrog / SwiftSecurity
Last active April 9, 2017 02:49
swift Security status
import Foundation
import Security
public struct SwiftSecurity {
public enum SwiftSecurityError: Error {
case error(SecStatus)
}
@oozoofrog
oozoofrog / convert.sh
Last active October 10, 2016 14:31
multiple codecs and formats convert script with ffmpeg
#!/bin/bash
abort()
{
echo >&2 ' ABORTED '
exit 1
}
trap 'abort' 0
@oozoofrog
oozoofrog / file0.txt
Last active September 5, 2016 03:08
FFmpeg->AVFrame(Audio)->AVAudioEngine再生のやり方。+ Accelerateフレームワークの能力も借ります。 ref: http://qiita.com/funcodes/items/87dc9981e74ba2b79b2b
let audioContext: UnsafeMutablePointer<AVCodecContext>
// プレイするサウンドの基本設定
let audioFormat: AVAudioFormat(
commonFormat: .pcmFormatFloat32,
sampleRate: Double(audioContext.pointee.sample_rate),
channels: 2, // サウンドシステムのoutputチャンネルを超えたらクラッシューが発生されます。
interleaved: false)
@oozoofrog
oozoofrog / file0.txt
Last active September 4, 2016 07:25
AVFrameのtupleのデータをArrayで変換 ref: http://qiita.com/funcodes/items/7b91c6b740f42ea66a04
typedef struct AVFrame {
...
uint8_t *data[AV_NUM_DATA_POINTERS]; // AV_NUM_DATA_POINTERS = 8
...
@oozoofrog
oozoofrog / file0.swift
Last active September 4, 2016 07:08
FFmpeg 3.xで新しく追加されたAPIの分析。 ref: http://qiita.com/funcodes/items/20b7c78723c6d1c4a958
defer {
avcodec_send_packet(avctx, NULL)
while true {
if AVERROR_EOF == avcodec_receive_packet(avctx, frame) {
break
}
}
}
while 0 <= av_read_frame(avctx, packet) {
// avcodec_decode_video2[audio4](...)を下のコードに変更します。
@oozoofrog
oozoofrog / Castable.swift
Last active August 20, 2016 12:03
freeing Unsafe<Mutable>Pointer casing
protocol Castable {}
protocol UnsafePointerProtocol: NilLiteralConvertible {
associatedtype Memory
init(nilLiteral: ())
init<Memory>(_ from: UnsafeMutablePointer<Memory>)
init<Memory>(_ from: UnsafePointer<Memory>)
var memory: Memory { get }
func mutable<M>() -> UnsafeMutablePointer<M>