This gist shows how to create a GIF screencast using only free OS X tools: QuickTime, ffmpeg, and gifsicle.
To capture the video (filesize: 19MB), using the free "QuickTime Player" application:
#import <UIKit/UIKit.h> | |
@interface UIView (SMFrameAdditions) | |
@property (nonatomic, assign) CGPoint $origin; | |
@property (nonatomic, assign) CGSize $size; | |
@property (nonatomic, assign) CGFloat $x, $y, $width, $height; // normal rect properties | |
@property (nonatomic, assign) CGFloat $left, $top, $right, $bottom; // these will stretch the rect | |
@end |
expr -- (void)printf("[%s, %s]\n",(char *) object_getClassName(*(long*)($esp+4)), (char *) *(long *)($esp+8) ) |
// use for patterns: | |
// *gmail.com* | |
// *mail.google.com* | |
// *google.com*mail* | |
window.fluid.dockBadge = ''; | |
setTimeout(updateDockBadge, 3000); | |
setInterval(updateDockBadge, 15000); | |
function updateDockBadge() { |
CGRect CGRectIntegralScaledEx(CGRect rect, CGFloat scale) | |
{ | |
return CGRectMake(floorf(rect.origin.x * scale) / scale, floorf(rect.origin.y * scale) / scale, ceilf(rect.size.width * scale) / scale, ceilf(rect.size.height * scale) / scale); | |
} | |
CGRect CGRectIntegralScaled(CGRect rect) | |
{ | |
return CGRectIntegralScaledEx(rect, [[UIScreen mainScreen] scale]); | |
} |
// Taken from the commercial iOS PDF framework http://pspdfkit.com. | |
// Copyright (c) 2014 Peter Steinberger, PSPDFKit GmbH. All rights reserved. | |
// Licensed under MIT (http://opensource.org/licenses/MIT) | |
// | |
// You should only use this in debug builds. It doesn't use private API, but I wouldn't ship it. | |
// PLEASE DUPE rdar://27192338 (https://openradar.appspot.com/27192338) if you would like to see this in UIKit. | |
#import <objc/runtime.h> | |
#import <objc/message.h> |
function _hero_getRemoteNames(){ | |
git config --get-regexp remote.*.url heroku.com | | |
sed -E 's/^remote\.([^\.]*)\.url .*$/\1/' | |
} | |
function _hero_herokuAppFor(){ | |
git config --get remote.$1.url | | |
sed -E 's/^[email protected]:([^.]*)\.git/\1/' | |
} |
/* | |
* Calling math.h functions like `floor` and `floorf` on CGFloat variables | |
* becomes problematic when compiling the same code for both 32-bit and | |
* 64-bit platforms, since CGFloat is double on 64-bit, float on 32-bit. | |
* Hence, if you compile with -Wconversion set, `floorf` will give a warning | |
* on 64-bit, while `floor` gives a warning on 32-bit. | |
* | |
* Here's a suggested implementation of an architecture-independent `floor` | |
* function, written using plain old function overloading which is enabled | |
* using the `__attribute__((overloadable))` Clang language extension. |
/** | |
Provides the ability to verify key paths at compile time. | |
If "keyPath" does not exist, a compile-time error will be generated. | |
Example: | |
// Verifies "isFinished" exists on "operation". | |
NSString *key = SQKeyPath(operation, isFinished); | |
// Verifies "isFinished" exists on self. |
#ifndef NS_DESIGNATED_INITIALIZER | |
#if __has_attribute(objc_designated_initializer) | |
#define NS_DESIGNATED_INITIALIZER __attribute((objc_designated_initializer)) | |
#else | |
#define NS_DESIGNATED_INITIALIZER | |
#endif | |
#endif |