Skip to content

Instantly share code, notes, and snippets.

View laiso's full-sized avatar
☀️

laiso laiso

☀️
View GitHub Profile
本書への推薦の言葉
エリック・リースによるまえがき
監訳者まえがき
はじめに
謝辞
第Ⅰ部 Lean UXへのイントロダクションと基本原則
1章  かつてないほどに高まるLean UXの重要性
デザインは常に進化している
@laiso
laiso / qiita_unfollow.js
Last active May 17, 2017 02:08
Qiita unfollowスクリプト
// http://qiita.com/:user/following_users を開き1ページづつコンソールで実行
jQuery('.tableList_avatarCell a').map( (i, url) => { return url + '/unfollow' }).map( (i, url) => { jQuery.post(url) })
class ViewController: UIViewController {
@IBOutlet weak var button: UIButton!
private var viewModel: ViewModel!
private let disposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
viewModel = ViewModel(buttonTap: self.button.rx.tap.asObservable())
// ViewModel
completion = myStream.asObservable()
.flatMapLatest {
performOrError()
}
// ViewCOntroller
viewModel.completion.observeOn(MainScheduler.instance)
.retryWhen(showAlert(error:))
.subscribe(onNext: { [weak self] in
@laiso
laiso / Rx+APIHimotoKit.swift
Created April 14, 2017 07:01
RxSwift(RxCocoa)+APIKit+Himotoki
import RxSwift
import RxCocoa
import APIKit
extension Reactive where Base: URLSession {
func response<T: Request>(_ request: T) -> Observable<T.Response> {
var req: URLRequest
do {
req = try request.buildURLRequest()
} catch {
@laiso
laiso / ViewController.swift
Last active April 10, 2017 09:56
Data Binding for a progress HUD in Swift
viewModel.showLoadingHUD.asDriver(onErrorJustReturn: false)
.drive(onNext: { show in
if show {
HUD.show(.progress)
} else {
HUD.hide()
}
})
.addDisposableTo(disposeBag)
@laiso
laiso / ViewController.swift
Last active April 6, 2017 12:15
Error Handling in RxSwift
// MARK: Submit Button - action
viewModel.loggedIn.asObservable()
.observeOn(MainScheduler.instance)
.retryWhen { errorObservable -> Observable<Error> in
errorObservable.map { [weak self] error in
let alert = ErrorAlertBuilder(error: error).build()
self?.present(alert, animated: true, completion: nil)
return error
}
@laiso
laiso / CodePiece.swift
Created April 6, 2017 10:28
Himotoki便利感が発揮された #CodePiece
// Implementation
import Himotoki
// https://pay.jp/docs/api/#error
struct APIError: Decodable {
let code: APIErrorCode
let message: String
let statusCode: Int
let type: APIErrorType
@laiso
laiso / CodePiece.swift
Last active March 21, 2017 04:28
完了してもキャンセルしてもtearDownをdriveするんだというのを表現したい https://twitter.com/laiso/status/844021792750555137 #CodePiece
let tearDown = Driver.combineLatest(cancelButton.rx.tap.asDriver(),
viewModel.completetion.asDriver(onErrorJustReturn: false)) { ($0, $1) }
.drive(onNext: { [unowned self] in
HUD.hide()
self.view.endEditing(true)
self.dismiss(animated: true, completion: nil)
})
tearDown.addDisposableTo(disposeBag)
@laiso
laiso / bookmarklet.js
Last active February 23, 2017 11:20
icons
// in browser
document.write(jQuery("img.ProfileCard-avatarImage").toArray().reduce((txt, img)=>{ return txt + "\n" + img.src }, ""))
// console
pbpaste | xargs -P 10 wget