Skip to content

Instantly share code, notes, and snippets.

@zadr
zadr / steps.txt
Last active Jul 17, 2022
MacPorts install without root privileges
View steps.txt
# fetch MacPorts sources
curl -LO https://distfiles.macports.org/MacPorts/MacPorts-2.4.1.tar.gz
# extract them and get into the dir
tar -jxf MacPorts-2.4.1.tar.gz
cd MacPorts-2.4.1
# configure things
## If you want MacPorts to run in a custom prefix, pass in the following arguments: --prefix=/usr/local --with-unsupported-prefix --with-applications-dir=/Applications
./configure --with-no-root-privileges --with-install-user=$USER --with-install-group=staff --silent
View libcompression.swift
// license: i dunno. pick one that works for you. Apache 2.0? that seems reasonable. Let me know if it doesn't work for some reason.
import Foundation
import Compression // https://developer.apple.com/library/mac/documentation/Performance/Reference/Compression/
public enum Compression {
public enum Algorithm {
case LZFSE
case LZ4
case LZMA
@zadr
zadr / CV.m
Created Mar 8, 2017
UIImage from CMSampleBuffer
View CV.m
#import <CoreMedia/CoreMedia.h>
#import <CoreVideo/CoreVideo.h>
#import <UIKit/UIKit.h>
// https://developer.apple.com/library/content/qa/qa1702/_index.html
+ (UIImage * _Nullable)imageWithSampleBuffer:(CMSampleBufferRef _Nonnull)sampleBuffer {
UIImage *returnValue = nil;
CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
CVPixelBufferLockBaseAddress(imageBuffer, 0); {
@zadr
zadr / framework-diff.sh
Last active Jun 22, 2020
objc framework diffing for all .frameworks in xcode
View framework-diff.sh
set -x
set -k INTERACTIVE_COMMENTS=1 # treats everything after # as being a comment
# vars
export XCODE_RELEASE_PATH="/Applications/Xcode-11.5.app"
export XCODE_BETA_PATH="/Applications/Xcode-12-beta.app"
export XCODE_FRAMEWORKS_PATH="Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks"
export OUTPUT="${HOME}/Desktop/iosapidiff"
mkdir "${OUTPUT}"
@zadr
zadr / gist:8410252
Last active May 16, 2020
-[UIView snapshotImage] should totally be an API. But, it isn't, so, here.
View gist:8410252
@interface UIView (za_snapshotting)
- (UIImage *) za_snapshotImage;
@end
@implementation UIView (za_snapshotting)
- (UIImage *) za_snapshotImage {
UIGraphicsBeginImageContextWithOptions(self.bounds.size, self.opaque, self.window.screen.scale);
[self drawViewHierarchyInRect:self.bounds afterScreenUpdates:YES];
@zadr
zadr / tttt.swift
Last active Feb 9, 2020
terminal's tiny todo tool
View tttt.swift
// 1. copy file to $PATH somewhere
// 2. chmod a+x it
// 3. run with `tttt` or `tttt [task to track]`
// 4. check out ~/Desktop/todo.txt
#!/usr/bin/env swift
import Foundation
let dateFormatter = DateFormatter()
@zadr
zadr / results.txt
Last active May 27, 2019
locking microbenchmarking
View results.txt
NSLock: 1.175440 sec
NSLock+IMP Cache: 1.120450 sec
pthread_mutex: 0.750234 sec
OSSpinlock: 0.364442 sec
@synchronized: 2.958938 sec
dispatch_sync: 0.816864 sec
objc_sync_enter: 3.057307 sec
MacBook Pro (Retina, 15-inch, Mid 2015)
2.2 GHz Intel Core i7
View UIBezierPath+Smoothing.swift
import UIKit
extension UIBezierPath {
// reference: https://github.com/erica/iOS-6-Cookbook/blob/master/C01%20Gestures/08%20-%20Smoothed%20Drawing/UIBezierPath-Points.m
var points: [CGPoint] {
var bezierPoints = [CGPoint]()
cgPath.applyWithBlock { (element: UnsafePointer<CGPathElement>) in
if element.pointee.type != .closeSubpath {
bezierPoints.append(element.pointee.points.pointee)
@zadr
zadr / ??.swift
Last active Apr 26, 2017
Ternary-ish operators without an else clause
View ??.swift
infix operator ?? : Branching
precedencegroup Branching {
associativity: left
lowerThan: ComparisonPrecedence // also accounts for NilCoalescingPrecedence
}
/// Ternary-y operators without an else clause
///
/// - Parameter lhs: The Boolean value to evaluate
@zadr
zadr / icons.jsx
Last active Mar 30, 2017
one-off Adobe Illustrator script to export a document with one artboard to iOS app icons
View icons.jsx
var originalDocumentSize = 1024
var folder = Folder.selectDialog();
var document = app.activeDocument;
document.artboards.setActiveArtboardIndex(0);
if (document && document.artboards[0]) {
// Icons for Universal Apps; https://developer.apple.com/library/content/qa/qa1686/_index.html
scaleArtboardAndSave((512 / originalDocumentSize) * 100);