Skip to content

Instantly share code, notes, and snippets.

View jdg's full-sized avatar

Jonathan George jdg

View GitHub Profile
@jdg
jdg / delete_contacts_example.m
Created December 18, 2015 06:36
Delete all iOS contacts using the Contacts.framework
- (void) deleteAllContacts {
CNContactStore *contactStore = [[CNContactStore alloc] init];
[contactStore requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted, NSError * _Nullable error) {
if (granted == YES) {
NSArray *keys = @[CNContactPhoneNumbersKey];
NSString *containerId = contactStore.defaultContainerIdentifier;
NSPredicate *predicate = [CNContact predicateForContactsInContainerWithIdentifier:containerId];
NSError *error;
NSArray *cnContacts = [contactStore unifiedContactsMatchingPredicate:predicate keysToFetch:keys error:&error];

Keybase proof

I hereby claim:

  • I am jdg on github.
  • I am jdg (https://keybase.io/jdg) on keybase.
  • I have a public key whose fingerprint is 87B3 3E8A 79E7 D22B 6882 8A81 A4A6 432F 81CD 7DE1

To claim this, I am signing this object:

@jdg
jdg / gist:476028
Created July 14, 2010 20:36
include git revision number in info.plist
#!/bin/bash
# Include commit rev script by @bsneed
buildPlist="${PRODUCT_NAME}-Info.plist"
buildCommit=$(/usr/local/git/bin/git --work-tree="${PROJECT_DIR}" show --abbrev-commit | grep "^commit")
/usr/libexec/PlistBuddy -c "Add :CFBundleCommit string $buildCommit" $buildPlist
if [ $? != 0 ]
then
/usr/libexec/PlistBuddy -c "Set :CFBundleCommit $buildCommit" $buildPlist
fi
#!/usr/bin/env ruby
require 'rubygems'
require 'tweetstream'
require 'boxcar_api'
SETTINGS = {
:key => 'xyz', # Provider Key
:secret => 'xyz', # Provider Secret
:tweeter => 'macrumorslive' # Whom we'll be following on Twitter
:tweeter_id => 1581511, # The tweeter's user id (check their RSS feed)
//
// A category on UIViewController that lets you do this:
//
// [myViewController showInPopoverFromRect:someRect inView:someView];
//
// A global instance of the popover controller will be managed by the view controller..
//
#import <UIKit/UIKit.h>
#!/usr/bin/ruby
require 'osx/cocoa'
require 'date'
OSX.require_framework "AddressBook"
filePath = "%%%{PBXFilePath}%%%"
fileName = File.basename(filePath)
projName = File.basename(File.dirname(filePath))
# Author: Pieter Noordhuis
# Description: Simple demo to showcase Redis PubSub with EventMachine
#
# Requirements:
# - rubygems: eventmachine, thin, cramp, sinatra, yajl-ruby
# - a browser with WebSocket support
#
# Usage:
# ruby redis_pubsub_demo.rb
#
class Hash
def recursively_symbolize_keys
tmp = {}
for k, v in self
tmp[k] = if v.respond_to? :recursively_symbolize_keys
v.recursively_symbolize_keys
else
v
end
//
// SynthesizeSingleton.h
// CocoaWithLove
//
// Created by Matt Gallagher on 20/10/08.
// Copyright 2009 Matt Gallagher. All rights reserved.
//
// Permission is given to use this source code file without charge in any
// project, commercial or otherwise, entirely at your risk, with the condition
// that any redistribution (in part or whole) of source code must retain
// by Wil Shipley
// from: http://www.wilshipley.com/blog/2005/10/pimp-my-code-interlude-free-code.html
static inline BOOL IsEmpty(id thing) {
return thing == nil
|| ([thing respondsToSelector:@selector(length)]
&& [(NSData *)thing length] == 0)
|| ([thing respondsToSelector:@selector(count)]
&& [(NSArray *)thing count] == 0);
}