Skip to content

Instantly share code, notes, and snippets.

View genkernel's full-sized avatar
Reverse engineering delicious coffee.

Anton genkernel

Reverse engineering delicious coffee.
View GitHub Profile
@genkernel
genkernel / ImageUtils.m
Created August 3, 2012 15:15
iOS. Load image downsampled to specified max pixel size.
+ (UIImage *)thumbnailImageFromURL:(NSURL*)imageUrl downsampledToMaxPixelSize:(NSNumber *)maxPixelSize {
NSDictionary *opts = @{
(id)kCGImageSourceThumbnailMaxPixelSize: maxPixelSize,
(id)kCGImageSourceCreateThumbnailWithTransform: (id)kCFBooleanTrue,
(id)kCGImageSourceCreateThumbnailFromImageIfAbsent: (id)kCFBooleanTrue
};
CGImageSourceRef src = CGImageSourceCreateWithURL((__bridge CFURLRef)imageUrl, NULL);
CGImageRef thumbnail = CGImageSourceCreateThumbnailAtIndex(src, 0, (__bridge CFDictionaryRef)opts);
UIImage *img = [UIImage imageWithCGImage:thumbnail];
@genkernel
genkernel / Singleton
Created May 17, 2013 10:09
Modern Objective-C Singleton method. Updated with 'instancetype'.
+ (instancetype)sharedInstance {
static id instance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
instance = self.new;
});
return instance;
}
#sudo vim /Library/LaunchDaemons/io.redis.redis-server.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>io.redis.redis-server</string>
<key>ProgramArguments</key>
<array>
@genkernel
genkernel / ValidModel-example1.swift
Last active July 7, 2018 17:19
ValidModel-example1
struct User: Decodable {
let username: String
let email: String
let accountType: AccountType
let rank: Int
let badges: [Badge]
}
@genkernel
genkernel / ValidModel-example2.swift
Last active July 7, 2018 19:29
ValidModel-example2
private struct InputUser: Decodable {
var email: String
var password: String
}
private struct InputUserContract: ModelContract {
typealias M = InputUser
let email: PropertyPolicy = (\M.email, EmailValidator()))
let password: PropertyPolicy = (\M.password, StringValidator(length: (min: 8, max: 20)))
@genkernel
genkernel / ValidModel-example3.swift
Created July 7, 2018 19:41
ValidModel-example3
class LoginViewController_ByExample: UIViewController {
private var user = InputUser(email: "", password: "")
private let userContract = InputUserContract()
private let formValidator = ModelValidator()
// MARK: - UITextFieldDelegate
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let delayed = {