Skip to content

Instantly share code, notes, and snippets.

@shoheiyokoyama
shoheiyokoyama / delete-mergepbx.sh
Last active November 12, 2021 08:17
Script to delete mergepbx
#!/bin/sh
MERGEPBX_TARGET=mergepbx
MERGEPBX_PREFIX=/usr/local/bin
MERGEPBX_BUILD_DIR=/tmp
echo "Deleting mergepbx..."
git config --global --unset merge.mergepbx.name
git config --global --unset merge.mergepbx.driver
let killua = Player(level: Variable(50))
let gon = Player(level: Variable(50))
let bisque = Player(level: Variable(70))
let player = PublishSubject<Player>()
player.asObservable()
.flatMapWithIndex { player, index -> Observable<Int> in
if index < 2 {
return player.level.asObservable()
}
player.asObservable()
.flatMapFirst { $0.level.asObservable() }
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
player.onNext(killua) // 50
killua.level.value = 51 // 51
player.onNext(gon) // level of gon isn't printed.
gon.level.value = 51 // new level of gon also isn't printed.
player.asObservable()
.flatMapLatest { $0.level.asObservable() }
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
player.onNext(killua) // 50
killua.level.value = 51 // 51
player.onNext(gon) //50
gon.level.value = 51 // 51
let disposeBag = DisposeBag()
struct Player {
var level: Variable<Int>
}
// players
let killua = Player(level: Variable(50))
let gon = Player(level: Variable(50))
button.rx.tap
.flatMap { API.fetchData }
.subscribe(onNext: { data in
self?.updateUI(with: data)
})
.disposed(by: disposeBag)
button.rx.tap
.subscribe(onNext: { [weak self] in
API.fetchData
.subscribe(onNext: { data in
self?.updateUI(with: data)
})
.disposed(by: self?.disposeBag!)
})
.disposed(by: disposeBag)
// Reference: [Transforming_Operators.xcplaygroundpage](https://github.com/ReactiveX/RxSwift/blob/master/Rx.playground/Pages/Transforming_Operators.xcplaygroundpage/Contents.swift)
let disposeBag = DisposeBag()
struct Player {
var score: Variable<Int>
}
let 👦🏻 = Player(score: Variable(80))
let player = Variable(👦🏻)
player.asObservable()
@shoheiyokoyama
shoheiyokoyama / DispatchWorkItem-wait-timeout.swift
Created May 6, 2017 08:42
DispatchWorkItem wait(timeout)
let queue = DispatchQueue(label: "queue", attributes: .concurrent)
let workItem = DispatchWorkItem {
sleep(3)
print("done")
}
queue.async(execute: workItem)
let time: DispatchTime = .now() + .seconds(1)
let result: DispatchTimeoutResult = workItem.wait(timeout: time)
@shoheiyokoyama
shoheiyokoyama / DispatchWorkItem-wait-timeout.swift
Created May 6, 2017 08:42
DispatchWorkItem wait(timeout)
let queue = DispatchQueue(label: "queue", attributes: .concurrent)
let workItem = DispatchWorkItem {
sleep(3)
print("done")
}
queue.async(execute: workItem)
let time: DispatchTime = .now() + .seconds(1)
let result: DispatchTimeoutResult = workItem.wait(timeout: time)