Skip to content

Instantly share code, notes, and snippets.

@ole
ole / mount.txt
Created Jun 6, 2019
macOS Catalina mounts the read-only system volume at / and the read-write data volume at /System/Volumes/Data
View mount.txt
% mount
/dev/disk1s6 on / (apfs, local, journaled)
devfs on /dev (devfs, local, nobrowse)
/dev/disk1s5 on /System/Volumes/Data (apfs, local, journaled, nobrowse)
/dev/disk1s4 on /private/var/vm (apfs, local, journaled, nobrowse)
map -hosts on /net (autofs, nosuid, automounted, nobrowse)
map auto_home on /home (autofs, automounted, nobrowse)
% ls /System/Volumes/Data
Device Users
@ole
ole / load-misaligned.swift
Last active Jun 25, 2019
Load misaligned data from a blob of bytes. I don't know if this is correct.
View load-misaligned.swift
import Foundation
let data = Data([0, 0, 0, 0, 0, 0x11, 0x22, 0x33, 0x44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
data.count
extension UnsafeRawBufferPointer {
func loadUnaligned<T>(fromByteOffset offset: Int, as: T.Type) -> T {
// Allocate correctly aligned memory and copy bytes there
let alignedPointer = UnsafeMutableRawPointer.allocate(byteCount: MemoryLayout<T>.stride, alignment: MemoryLayout<T>.alignment)
defer {
@ole
ole / date-format-strings.swift
Last active Oct 8, 2020
Type-safe date format strings using string interpolation. Requires Swift 5.0.
View date-format-strings.swift
// Type-safe date format strings using string interpolation
// Requires Swift 5.0.
import Foundation
enum DateFormatComponent {
case era(AlphaStyle)
case year(MinimumDigits)
case yearForWeekOfYear(MinimumDigits)
case quarter(AlphaNumericStyle)
@ole
ole / amazon-transcribe-swift-community-podcast-0001.md
Created Jan 23, 2019
Swift Community Podcast Episode 1: Transcript (autogenerated with the Amazon Transcribe service)
View amazon-transcribe-swift-community-podcast-0001.md

0.54–21.25
John Sundell Welcome to the very first episode of the Swift Community Podcast. A show for the Swift community by the Swift Community. I am one of your hosts, John Sindel. And with me, I have two wonderful co hosts, the first of which you might know as the host of the Swift coders podcast. Mr. Garric Nahapetian. How's going Garric?

21.38–24.27
Garric Nahapetian Excellent. Thank you so much for having me. How you doing?

24.46–35.97
John Sundell I'm doing great. And we also have our third and final co host for this episode. And it's none other than the creator of Swift itself. Mr Chris Lattner. How's it going, Chris?

35.98–40.75

@ole
ole / objc-extension-override-without-dynamic.swift
Created Jan 11, 2019
Overriding at-objc methods defined in extensions without the dynamic keyword
View objc-extension-override-without-dynamic.swift
// Paste this into an iOS playground in Xcode and run
// Expected output:
// ParentVC: handled in ParentCoordinator
// ChildVC: handled in ChildCoordinator
// UIViewController: accountLogin() not handled
import UIKit
NSSetUncaughtExceptionHandler { exception in
print("Exception: \(exception.name)\(exception)")
View headAndTail.swift
// Challenge: Fill out this extension
//
// I have a solution for this return type:
//
// var headAndTail: (head: Element, tail: AnySequence<Element>)?
//
// I don't think it can be done with tail: SubSequence.
extension Sequence {
/// Destructures `self` into the first element (head) and the rest (tail).
/// Returns `nil` if the sequence is empty.
@ole
ole / AsyncOperation.swift
Created Aug 19, 2018
An (NS)Operation subclass for async operations
View AsyncOperation.swift
import Foundation
/// An abstract class that makes building simple asynchronous operations easy.
/// Subclasses must override `main()` to perform any work and call `finish()`
/// when they are done. All `NSOperation` work will be handled automatically.
///
/// Source/Inspiration: https://stackoverflow.com/a/48104095/116862 and https://gist.github.com/calebd/93fa347397cec5f88233
open class AsyncOperation: Operation {
public init(name: String? = nil) {
super.init()
@ole
ole / UIAlertController+TextField.swift
Last active Nov 15, 2020
A UIAlertController with a text field and the ability to perform validation on the text the user has entered while the alert is on screen. The OK button is only enabled when the entered text passes validation. More info: https://oleb.net/2018/uialertcontroller-textfield/
View UIAlertController+TextField.swift
import UIKit
/// A validation rule for text input.
public enum TextValidationRule {
/// Any input is valid, including an empty string.
case noRestriction
/// The input must not be empty.
case nonEmpty
/// The enitre input must match a regular expression. A matching substring is not enough.
case regularExpression(NSRegularExpression)
View pattern-matching.swift
/// Ignores `value` and just evaluates `pattern`.
/// Can be used to evaluate arbitrary expressions in a switch.
func ~=<A>(pattern: @autoclosure () -> Bool, value: A) -> Bool {
return pattern()
}
let (x, y, z) = (0, 0, 1)
switch () /* can be anything */ {
case x > 0: print("x matches")
View UIBezierPath-cutout.swift
import UIKit
let containingRect = CGRect(x: 0, y: 0, width: 100, height: 100)
let path1 = UIBezierPath(rect: containingRect)
let circleRect = CGRect(x: 50, y: 10, width: 80, height: 80)
let circleCenter = CGPoint(x: circleRect.midX, y: circleRect.midY)
let radius = circleRect.height / 2
/*
You can’t perform that action at this time.