This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Replace the name of my Swift module, Prosumma, with your own, or this will not compile. | |
As of 1.0, Swift lacks mixins (as in Ruby) or the ability to extend protocols (as in C#), which means lots of | |
cumbersome boilerplate. I've tried to cut down on that with this little snippet. First, you'll notice that | |
there are no actual minimum and maximum functions defined. To achieve that, do the following: | |
var lowest: Int? = [5, 4, 3].most(<) | |
var highest: Int? = [5, 4, 3].most(>) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
The reason this does not return a value is that SequenceType | |
is very general. It has no methods for modifying the sequence, | |
only traversing it. | |
Instead, we pass our "unique" method a closure that tells it | |
how to add a value to our result. The result is not visible | |
at all to this method. It is captured by our closure. | |
The reason we don't pass the result as a parameter is because it |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Git Only: Perform a Git operation only when in a whitelisted directory. | |
# | |
# This is really only useful when combined with git-gat. For instance, let's | |
# say we want to create a branch in two of our side-by-side repos, we can say: | |
# | |
# git gat only Repo1 Repo2 -- checkout -b feature1 | |
# | |
# This will create and checkout a branch called feature1, but only in Repo1 and Repo2. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
######################### | |
# .gitignore file for Xcode4 / OS X Source projects | |
# | |
# Version 2.0 | |
# For latest version, see: http://stackoverflow.com/questions/49478/git-ignore-file-for-xcode-projects | |
# | |
# 2013 updates: | |
# - fixed the broken "save personal Schemes" | |
# | |
# NB: if you are storing "built" products, this WILL NOT WORK, |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ruby | |
# The MIT License (MIT) | |
# | |
# Copyright (c) 2016 Gregory Higley (Prosumma) | |
# | |
# Permission is hereby granted, free of charge, to any person obtaining a copy | |
# of this software and associated documentation files (the "Software"), to deal | |
# in the Software without restriction, including without limitation the rights | |
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
extension UIColor { | |
convenience init(hex: UInt, alpha: CGFloat = 1.0) { | |
let red = CGFloat((hex & 0xFF0000) >> 0x10) / 255.0 | |
let green = CGFloat((hex & 0x00FF00) >> 0x8) / 255.0 | |
let blue = CGFloat(hex & 0x0000FF) / 255.0 | |
self.init(red: red, green: green, blue: blue, alpha: alpha) | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
XCODE='Xcode'; | |
XCODEPATH="$(xcode-select -p)"; | |
if [[ $XCODEPATH =~ /([^/]+)\.app ]]; then | |
XCODE="${BASH_REMATCH[1]}" | |
fi; | |
open -a "$XCODE" "${1:-.}"; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- https://wiki.postgresql.org/wiki/Aggregate_Median | |
CREATE OR REPLACE FUNCTION _final_median(NUMERIC[]) | |
RETURNS NUMERIC AS | |
$$ | |
SELECT AVG(val) | |
FROM ( | |
SELECT val | |
FROM unnest($1) val | |
ORDER BY 1 | |
LIMIT 2 - MOD(array_upper($1, 1), 2) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
extension CGContext { | |
// via https://stackoverflow.com/a/50419334/27779 | |
func drawSemicircle(from: CGPoint, to: CGPoint, clockwise: Bool) { | |
let center = CGPoint(x: 0.5 * (from.x + to.x), y: 0.5 * (from.y + to.y)) | |
let radius = 0.5 * hypot(to.x - from.x, to.y - from.y) | |
let startAngle = atan2(to.y - from.y, to.x - from.x) | |
let endAngle = startAngle + .pi | |
move(to: from) | |
addArc(center: center, radius: radius, startAngle: startAngle, endAngle: endAngle, clockwise: clockwise) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
infix operator ??!: NilCoalescingPrecedence | |
/** | |
If the left-hand side in nil, the error on the right-hand side is thrown. Otherwise, | |
the unwrapped value is returned. For example: | |
``` | |
// Instead of this… | |
guard let x = y else { |
OlderNewer