I hereby claim:
- I am jstn on github.
- I am ouellette (https://keybase.io/ouellette) on keybase.
- I have a public key ASCnfu-Ia5yAtEsb4pUhLwOpUbODSRFNuSJDG6LcbLPwxwo
To claim this, I am signing this object:
/* | |
`arc4random_uniform` is very useful but limited to `UInt32`. | |
This defines a generic version of `arc4random` for any type | |
expressible by an integer literal, and extends some numeric | |
types with a `random` method that mitigates for modulo bias | |
in the same manner as `arc4random`. | |
`lower` is inclusive and `upper` is exclusive, thus: | |
### JSTN | |
jstn.vt220.19200:\ | |
:cb:ce:ck:lc:fd#1000:hw:ht:np:sp#19200:tt=vt220:im=\r\n . .o8 oooo\r\n .o8 "888 `888\r\n.o888oo oooo oooo ooo. .oo. .oo. 888oooo. 888 oooo d8b\r\n 888 `888 `888 `888P"Y88bP"Y88b d88' `88b 888 `888""8P\r\n 888 888 888 888 888 888 888 888 888 888\r\n 888 . 888 888 888 888 888 888 888 888 888 .o.\r\n "888" `V88V"V8P' o888o o888o o888o `Y8bod8P' o888o d888b Y8P\r\n\r\n\r\n%s %r %m (%t)\r\n%h\r\n\r\n: | |
### |
// requires a bridging header with this: | |
// #import <CommonCrypto/CommonCrypto.h> | |
func MD5(_ string: String) -> String? { | |
let length = Int(CC_MD5_DIGEST_LENGTH) | |
var digest = [UInt8](repeating: 0, count: length) | |
if let d = string.data(using: String.Encoding.utf8) { | |
d.withUnsafeBytes { (body: UnsafePointer<UInt8>) in | |
CC_MD5(body, CC_LONG(d.count), &digest) | |
} |
/* | |
var t = Timer() | |
t.start() | |
// do something | |
t.stop() | |
print("took \(t.seconds)") | |
*/ |
import UIKit | |
extension UIViewController { | |
func animateKeyboardWillChangeFrame(n: NSNotification?, animations: (keyboardFrameEnd: CGRect) -> Void) { | |
if let info = n?.userInfo as? Dictionary<String,AnyObject> { | |
let frameBeginValue = info[UIKeyboardFrameBeginUserInfoKey] as NSValue | |
let frameEndValue = info[UIKeyboardFrameEndUserInfoKey] as NSValue | |
let durationNumber = info[UIKeyboardAnimationDurationUserInfoKey] as NSNumber | |
let curveNumber = info[UIKeyboardAnimationCurveUserInfoKey] as NSNumber |
/* | |
No-Starve and Read/Write mutexes, based on GCD in Swift 3.0 | |
Inspired by the Little Book of Semaphores: http://greenteapress.com/wp/semaphores/ | |
*/ | |
import Foundation | |
final class NoStarveMutex { | |
private final let _semaphoreA = DispatchSemaphore(value: 1) | |
private final let _semaphoreB = DispatchSemaphore(value: 0) |
[Unit] | |
Description=netdata | |
After=network.service | |
Requires=network.service | |
[Service] | |
Type=oneshot | |
RemainAfterExit=true | |
ExecStart=/usr/sbin/netdata | |
ExecStop=/usr/bin/killall netdata |
{ | |
"caret_extra_bottom": 2, | |
"caret_extra_top": 2, | |
"caret_extra_width": 1, | |
"caret_style": "phase", | |
"color_scheme": "Packages/Base16 Color Schemes/Themes/base16-oceanicnext.tmTheme", | |
"create_window_at_startup": false, | |
"ensure_newline_at_eof_on_save": true, | |
"fold_buttons": false, | |
"folder_exclude_patterns": |
I hereby claim:
To claim this, I am signing this object:
function git_prompt() { | |
local dirty="" | |
if [[ -n $(git ls-files --other --exclude-standard 2> /dev/null) ]]; then | |
dirty="*" | |
fi | |
if ! git diff --quiet 2> /dev/null; then | |
dirty="*" | |
fi |