Skip to content

Instantly share code, notes, and snippets.

@rayfix
rayfix / GroupTests.m
Created March 16, 2014 00:29
Groups from NSArray
//
// GroupTests.m
//
// Created by Ray Fix on 3/15/14.
//
#import <XCTest/XCTest.h>
#import "NSArray+Groups.h"
@interface GroupTests : XCTestCase
@rayfix
rayfix / gist:02ca4d9537af011dd12f
Created June 22, 2014 07:56
Compute Probability of Ace of Diamonds in a Poker Hand
func testPokerAceOfDiamonds()
{
let handsWithAceOfDiamonds = Binomial(n: 51, choose: 4)
let allPossibleHands = Binomial(n: 52, choose: 5)
let probabilityOfAceOfDiamonds = handsWithAceOfDiamonds / allPossibleHands
XCTAssertEqual(probabilityOfAceOfDiamonds, Rational(5,52))
let probabilityOfNoAceOfDiamonds = Rational(1) - probabilityOfAceOfDiamonds
@rayfix
rayfix / didSet_on_array.swift
Created April 7, 2015 18:53
didSet on array crashes my playground
// Playground - noun: a place where people can play
import UIKit
var str = "Hello, playground"
struct Thing {
var arr: [Int] = [] {
didSet {
@rayfix
rayfix / ctor.cpp
Created April 8, 2015 23:29
How to construct C++11
//
// main.cpp
// forward
//
// Created by Ray Fix on 4/8/15.
// Copyright (c) 2015 Pelfunc, Inc. All rights reserved.
//
#include <iostream>
@rayfix
rayfix / subscriptions_spec.rb
Created April 22, 2015 01:37
Multiple expect invocations inside a single test example
require 'active_support/all'
class Subscription
def initialize(created_at:)
@created_at = created_at
end
attr_reader :created_at
def months_subscribed
((Date.today - created_at.to_date) / 30).round
struct TaggedThing<Tag, Thing> {
var value: Thing
}
protocol A {} // Phantom Type
protocol B {} // Phantom Type
var a = TaggedThing<A, Int>(value: 1)
var b = TaggedThing<B, Int>(value: 2)
@rayfix
rayfix / gist:ea2595e5b1e123e849ec
Created July 1, 2015 15:44
A UIView that conforms
import UIKit
// Rather than a generic type with constraints on being a UIView and conforming to Extra
// you could do something like this.
protocol UIViewConvertable {
var uiview: UIView { get }
}
extension UIView : UIViewConvertable {
var uiview: UIView { return self }
}
@rayfix
rayfix / InitRestKit.m
Created August 5, 2011 07:23
First mapping
- (void)mapObjects:(RKObjectManager*)objectManager
{
RKObjectMapping* widgetMapping = [RKObjectMapping mappingForClass:[widget class]];
[widgetMapping mapKeyPath:@"id" toAttribute:@"widgetID"];
[widgetMapping mapAttributes:@"name", @"description", nil];
[widgetMapping mapKeyPath:@"public" toAttribute:@"isPublic"];
[widgetMapping mapKeyPath:@"created_at" toAttribute:@"createdAt"];
[widgetMapping mapKeyPath:@"updated_at" toAttribute:@"updatedAt"];
[objectManager.mappingProvider setMapping:widgetMapping forKeyPath:@"widget"];
}
@rayfix
rayfix / gist:1135157
Created August 9, 2011 20:51
mapping problem ... crud operations
RKObjectMapping* channelMapping = [RKObjectMapping mappingForClass:[Channel class]];
// Core data
//channelMapping.primaryKeyAttribute = "channelID";
// For now using NSObject derived thing
[channelMapping mapKeyPathsToAttributes:
@"id", @"channelID",
@"created_at", @"createdAt",
@"updated_at", @"updatedAt",
@rayfix
rayfix / gist:1150539
Created August 17, 2011 00:41
What is the best format for RestKit?
RestKit allows a great deal of customization and can probably be made to handle most formats.
Since I have full control over the server (now), I want to put the onus on the server as much
as possible and reduce unnecessary bandwidth. However, I want to keep the RestKit side code
as easy, and concise as possible.
So suppose I have a set of widget classes with ids and names with standard CRUD operations.
I have an index action which could potentially return a large number of widgets and so need
to be paginated. Here is one way I thought of.
Create Action