Skip to content

Instantly share code, notes, and snippets.

@bricklife
bricklife / lldb-plugin-curl.py
Created January 13, 2017 08:10
LLDB Plugin - curl
#!/usr/bin/env python
import lldb
def process(debugger, command, result, internal_dict):
lldb.debugger.HandleCommand("""
expr -l swift --
func $process(URLRequest: NSURLRequest) {
func curl(URLRequest: NSURLRequest) -> String {
guard let URLString = URLRequest.URL?.absoluteString else {
extension UIControl {
var rac_tap: SignalProducer<Void, NoError> {
return rac_signalForControlEvents(.TouchUpInside)
.toSignalProducer()
.map { _ in () }
.flatMapError { _ in SignalProducer.empty }
}
}
@bricklife
bricklife / CodePiece.swift
Created June 10, 2016 02:52
同じものをRxSwiftで組んでみた。こちらは期待通りの動き。RACのほうはスケジューラ内の仮想時間がadvanceした時刻に即進んじゃうのね #CodePiece
import RxSwift
import RxTests
let scheduler = TestScheduler(initialClock: 0)
Observable<Int>.interval(10, scheduler: scheduler)
.subscribe { _ in print(scheduler.now) }
scheduler.advanceTo(60)
@bricklife
bricklife / CodePiece.swift
Created June 10, 2016 02:49
ReactiveCocoaにもTestSchedulerがあったけど、RxSwiftのと比べると必要最低限な実装という印象。このコードも期待通りの動きをしない #CodePiece
import Result
import ReactiveCocoa
let scheduler = TestScheduler(startDate: NSDate(timeIntervalSince1970: 0))
timer(10, onScheduler: scheduler)
.start { _ in print(scheduler.currentDate) }
scheduler.advanceByInterval(60)
@bricklife
bricklife / CodePiece.swift
Created April 27, 2016 02:03
Swift 2.2の型推論、これくらいはがんばってほしいなぁ #CodePiece
let OK = {
"Test"
}
let NG = {
let s = "Test"
return s
}
// error: unable to infer closure return type in current context
@bricklife
bricklife / CodePiece.swift
Created April 20, 2016 15:12
RxSwiftで昇竜拳判定、まずは入力猶予6フレ固定、右+Pの同時押しなし、歩き昇竜なしならこんな感じかな。動作確認どうしよう #CodePiece #rxswift
import RxSwift
enum 入力: Int {
case 左下 = 1, 下, 右下, 左, 右 = 6, 左上, 上, 右上
case パンチ = 0x10
}
let 入力川 = PublishSubject<入力>()
_ = 入力川
@bricklife
bricklife / CodePiece.swift
Created April 20, 2016 06:46
うおー、HistoricalScheduler便利だ! #CodePiece #rxswift
import Foundation
import RxSwift
let now = NSDate()
let scheduler = HistoricalScheduler(initialClock: now)
_ = Observable<Int>.interval(0.5, scheduler: scheduler)
.subscribe { print($0) }
scheduler.advanceTo(now.dateByAddingTimeInterval(1))
@bricklife
bricklife / CodePiece.swift
Created March 28, 2016 14:49
RxSwiftのmergeをconcatと同等の使い勝手にしてみるテスト #CodePiece
extension ObservableType {
public func merge<O: ObservableConvertibleType where O.E == E>(second: O) -> Observable<E> {
return [asObservable(), second.asObservable()].merge()
}
}
extension SequenceType where Generator.Element : ObservableType {
public func merge() -> Observable<Generator.Element.E> {
return Merge(source: toObservable())
}
import Foundation
import RxSwift
enum ズンドコ: UInt32 {
case ズン
case ドコ
}
let ズンドコ川 = Observable<Int>.interval(0.5, scheduler: MainScheduler.instance)
.map { _ in ズンドコ(rawValue: arc4random_uniform(2))! }
import Foundation
import RxSwift
enum ズンドコ: UInt32 {
case ズン
case ドコ
}
let ズンドコ川 = Observable<Int>.interval(0.5, scheduler: MainScheduler.instance)
.map { _ in ズンドコ(rawValue: arc4random_uniform(2))! }