Skip to content

Instantly share code, notes, and snippets.

@uliwitness
uliwitness / NSEvent.m.dump
Last active August 3, 2022 00:27
68000 Disassembly of a Classic MacOS Objective-C file
Names:
1: __func__
2: __FUNCTION__
3: __PRETTY_FUNCTION__
4: @509
5: L_OBJC_SELECTOR_REFERENCES_0
6: @512
7: L_OBJC_SELECTOR_REFERENCES_1
8: -[NSEvent initWithMacEvent:window:]
@uliwitness
uliwitness / main.swift
Last active December 10, 2019 19:52
Command line argument parsing function
import Foundation
extension Array where Array.Element == String {
func parseKeyValue(prefix: String = "--", suffix: String = "", valueSeparator: String = "=", removePrefix: Bool = true, removeSuffix: Bool = true, separateArguments: Bool = true, endIndicator: String = "--") -> Dictionary<String, String> {
var unlabeled = [String]()
return parseKeyValue(prefix: prefix, suffix: suffix, valueSeparator: valueSeparator, removePrefix: removePrefix, removeSuffix: removeSuffix, separateArguments: separateArguments, endIndicator: endIndicator, unlabeled: &unlabeled)
}
func parseKeyValue(prefix: String = "--", suffix: String = "", valueSeparator: String = "=", removePrefix: Bool = true, removeSuffix: Bool = true, separateArguments: Bool = true, endIndicator: String = "--", unlabeled: inout [String]) -> Dictionary<String, String> {
var result = Dictionary<String, String>()
class Observer: Subscription {
public func unsubscribe() {
...
}
public func request(_ demand: Subscribers.Demand) {
// We only inform on changes.
print("Demand for \(demand) received.")
}
@uliwitness
uliwitness / retroactiveProtocols.swift
Last active August 5, 2019 14:21
You can make an existing type conform to a protocol you define later in Swift.
class OriginalClass {
var fooProp: Int = 15
func sayHello(_ string: String) {
print("Hello \(string) \(fooProp)")
}
}
protocol MockProtocol {
var fooProp: Int { get }
module Jekyll
class PageVariationsGenerator < Generator
safe true
def generate(site)
pagesCopy = site.pages.dup
site.config['pagevariations'].each_entry do |variation|
pagesCopy.each_entry do |page|
pageCopy = page.dup
oldPermalink = pageCopy.data['permalink']
writertest.swift:18:8: error: cannot invoke 'write' with an argument list of type '(T)'
impl.write(foo)
^
writertest.swift:18:8: note: expected an argument list of type '(T.WriterImplType.ValueType)'
impl.write(foo)
^
@uliwitness
uliwitness / Extract Files into separate Git Repository.sh
Last active March 16, 2019 14:02
Extract individual files from a Github repository
#!/bin/bash
GIT='/Applications/Xcode.app/Contents/Developer/usr/bin/git'
#$SOURCEREPO=$1
#$DESTREPO=$2
SOURCEREPO=/Users/uli/Programming/FileExplorer/UliKit
DESTREPO=/Users/uli/Programming/FileExplorer/ULIXattrMetadataStore
MYDIR=`dirname "$0"`
@uliwitness
uliwitness / Output.log
Last active December 7, 2018 20:32
SchedulerTestApp
pendingTasks = [Task<E>{ (0/65) @ 600 <-- F }, Task<F>{ (0/66) @ 500 <-- C }, Task<B>{ (0/62) @ 900 <-- A }, Task<A>{ (0/61) @ 1000 <-- C }, Task<D>{ (0/64) @ 700 <-- A }, Task<C>{ (0/63) @ 800 <-- * }]
Worker 1: --
Worker 2: --
Worker 3: --
currentTasks = [Task<C>{ (0/63) @ 800 <-- * }]
Worker 1: Task<C>{ (1/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (2/63) @ 800 <-- * }
@uliwitness
uliwitness / gist:c10b3ebfb997a2814a01aacd1228a7e5
Created August 28, 2018 03:12
This is a valid PNG image file stored in a URL.
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEYAAABICAYAAABLJIP0AAAMJ2lDQ1BJQ0MgUHJvZmlsZQAASImVlwdUk8kWgOcvqSS0QChSQm+iFOnSawABqYKNkAQSSgwJQcSOLCqwFlQsWNFVEdtaAFlsWLAi2PvDAoqyLupiQ+VNEkBXz3vvvHvO/P+XO3fu3Hsz/5wZANRiOGJxNqoOQI4oTxIbGsCakJzCIj0GCKABbWAHzDhcqdg/JiYSQBl6/1Pe3YTWUK7Zy3393P9fRYPHl3IBQGIgp/Gk3BzIhwDAXbliSR4AhB6oN5ueJ4ZMhFECLQkMELK5nDOU7C7nNCVHKmziYwMhpwJApnE4kgwAVOVxsfK5GdCPajlkBxFPKILcBNmHK+DwIH+GPDInZxpkNWvI1mnf+cn4h8+0YZ8cTsYwK3NRCDlIKBVnc2b8n+X435KTLRuawww2mkASFivPWV63rGkRcqZBPidKi4qGrAn5upCnsJdzl0AWljBo/4ErDYQ1A0wAUBqPExQB2QCyqSg7KnJQ75MuDGFDhrVH44V57HjlWJQnmRY76B8t4EuD44aYI1HMJbcplWUl+A/63Cjgs4d8NhYK4pOUcaJt+cLEKMiqkO9Ls+IiBm1eFAoCo4ZsJLJYeczwP8dAuiQkVmmDmedIh/LCPAVCdtQgR+YJ4sOUY7EpXI4iNl3ImXzphMihOHn8oGBlXlgRX5QwGD9WIc4LiB203ybOjhm0x5r42aFyvSnkVml+3NDY3jy42JT54kCcFxOvjA3XyuSExyhjwG1BJAgEQYAFZLClgWkgEwhbe+p74C9lTwjgAAnIAHxgP6gZGpGk6BHBZxwoBH9C4gPp8LgARS8f5EP9l2Gt8mkP0hW9+YoRWaALcg6IANnwt0wxSjQ8WyJ4CjXCn2bnwlizYZP3/aRjqQ3piMHEIGIYMYRog+vjPrgXHgmffrA54e64x1Bc3+wJXYR2wmPCDUIH4c5UYZHkh8hZYBzogD
@uliwitness
uliwitness / 1 coroutines.cpp
Created September 9, 2017 10:11
Example of two equivalent programs as an illustration how you can transform coroutines into blocks. Pseudocode
void main()
{
int foo = rand();
int result1 = await doSomethingAsync(foo);
printf( "Result 1: %d", result1 );
int result2 = await doSomethingAsync(foo + 1);
printf( "Result 2: %d", result2 );
return 0;
}