Skip to content

Instantly share code, notes, and snippets.

View ui.sh
#!/bin/bash
# Universal Install Script
# https://xkcd.com/1654/
pip install "$1" &
easy_install "$1" &
brew install "$1" &
npm install "$1" &
yum install "$1" &
View RACSignal+continueInBackground.m
- (RACSignal*) continueInBackground
{
return [[RACSignal createSignal:^(id<RACSubscriber> subscriber) {
UIApplication* app = UIApplication.sharedApplication;
__block UIBackgroundTaskIdentifier taskID;
RACCompoundDisposable* compoundDisposable = [RACCompoundDisposable compoundDisposable];
RACDisposable* backgroundTaskDisposable = [RACDisposable disposableWithBlock:^{
[app endBackgroundTask:taskID];
}];
@neilpa
neilpa / CollectionViewDataSource.swift
Created Oct 28, 2015 — forked from andymatuschak/CollectionViewDataSource.swift
Type-safe value-oriented collection view data source
View CollectionViewDataSource.swift
//
// CollectionViewDataSource.swift
// Khan Academy
//
// Created by Andy Matuschak on 10/14/14.
// Copyright (c) 2014 Khan Academy. All rights reserved.
//
import UIKit
@neilpa
neilpa / concatSplices.swift
Last active Oct 8, 2015
Building collections from signals[-of-signals] of collection mutations
View concatSplices.swift
//
// A half-baked approach (not thread-safe, poor disposable management) for creating
// aggregate collections from multiple signals of collection mutations. In this
// case we are concating multiple mutation streams into a single container. So for
// each inner signal we need to offset subsequent splices by the count of preceding
// items (which can be recovered by scanning previous splices).
//
// Example:
//
// let (first, sink1) = SignalProducer<Splice<Int>, NoError>.buffer()
View iterate.swift
// Similar to `enumerate` but provides the collection's index type
// rather than an Int for the position
public func iterate<C: CollectionType>(collection: C) -> SequenceOf<(C.Index, C.Generator.Element)> {
var index = collection.startIndex
// type-inference doesn't want to work without this
return SequenceOf { _ -> GeneratorOf<(C.Index, C.Generator.Element)> in
return GeneratorOf {
if index == collection.endIndex {
return nil
@neilpa
neilpa / Random.swift
Last active Aug 29, 2015
Randomness
View Random.swift
protocol Randomizable {
static func random() -> Self
}
protocol IntervalRandomizable: Randomizable, Comparable {
static func random(interval: HalfOpenInterval<Self>) -> Self
static func random(interval: ClosedInterval<Self>) -> Self
}
extension CGFloat: Randomizable {
@neilpa
neilpa / bootstrap.log
Created Feb 14, 2015
Build failure running `carthage bootstrap --platform Mac` on carthage itself
View bootstrap.log
Build settings from command line:
SDKROOT = macosx10.10
=== BUILD TARGET Argo-Mac OF PROJECT Argo WITH CONFIGURATION Release ===
Check dependencies
Write auxiliary files
/bin/mkdir -p /Users/neilpa/Library/Developer/Xcode/DerivedData/Argo-czmyyxcfvpfzykehbpwpttdwpnbh/Build/Intermediates/Argo.build/Release/Argo-Mac.build
write-file /Users/neilpa/Library/Developer/Xcode/DerivedData/Argo-czmyyxcfvpfzykehbpwpttdwpnbh/Build/Intermediates/Argo.build/Release/Argo-Mac.build/unextended-module-overlay.yaml
View zipWith.swift
private enum Either<T, U> {
case Left(Box<T>)
case Right(Box<U>)
}
public func zipWith<T, U, E>(otherSignal: Signal<U, E>)(signal: Signal<T, E>) -> Signal<(T, U), E> {
return Signal { observer in
var lock = NSRecursiveLock()
lock.name = "org.reactivecocoa.ReactiveCocoa.zipWith"
@neilpa
neilpa / translit.swift
Created Feb 5, 2015
Simple CLI around CFStringTransform for Unicode to ASCII transliteration
View translit.swift
#!/usr/bin/env swift
//
// Naive wrapper around CFStringTransform that attempts to transliterate
// Unicode strings to lower-case ASCII
//
// http://nshipster.com/cfstringtransform/
//
import Foundation
@neilpa
neilpa / nv21-convert.sh
Last active Apr 15, 2019
Use ffmpeg to convert raw Android camera frame buffers
View nv21-convert.sh
# Assuming the raw byte[] buffer from onPreviewFrame was written at $1
INPUT=$1
# Need preview size since we dumped to a raw file w/out header info
SIZE=1280x960
# Converting to JPEG
ffmpeg -f image2 -vcodec rawvideo -s $SIZE -pix_fmt nv21 -i $INPUT out.jpeg
# Converting to PNG
You can’t perform that action at this time.