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:
| // Author: Oleg Andreev <oleganza@gmail.com> | |
| // May 28, 2011 | |
| // Do What The Fuck You Want Public License <http://www.wtfpl.net> | |
| #import "NSData+OADataHelpers.h" | |
| #if !__has_feature(objc_arc) | |
| #error ARC must be enabled! | |
| #endif |
| // | |
| // UIImage+JTImageDecode.h | |
| // | |
| // Created by james on 9/28/11. | |
| // http://ioscodesnippet.tumblr.com | |
| // | |
| @interface UIImage (JTImageDecode) | |
| + (UIImage *)decodedImageWithImage:(UIImage *)image; | |
| @end |
| $(function () { | |
| "use strict"; | |
| // for better performance - to avoid searching in DOM | |
| var content = $('#content'); | |
| var input = $('#input'); | |
| var status = $('#status'); | |
| // my color assigned by the server | |
| var myColor = false; |
| var express = require('express'), | |
| passport = require('passport'), | |
| TwitterStrategy = require('passport-twitter').Strategy, | |
| ensureLoggedIn = require('connect-ensure-login').ensureLoggedIn, | |
| app = express(); | |
| app.use(express.static(__dirname + '/public')); | |
| app.use(express.cookieParser()); | |
| app.use(express.session({ secret: 'keyboard cat' })); | |
| app.use(passport.initialize()); |
| - (BOOL)stringContainsEmoji:(NSString *)string { | |
| __block BOOL returnValue = NO; | |
| [string enumerateSubstringsInRange:NSMakeRange(0, [string length]) options:NSStringEnumerationByComposedCharacterSequences usingBlock: | |
| ^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) { | |
| const unichar hs = [substring characterAtIndex:0]; | |
| // surrogate pair | |
| if (0xd800 <= hs && hs <= 0xdbff) { | |
| if (substring.length > 1) { | |
| const unichar ls = [substring characterAtIndex:1]; |
| // | |
| // StickyHeaderLayout.h | |
| // Wombat | |
| // | |
| // Created by Todd Laney on 1/9/13. | |
| // Copyright (c) 2013 ToddLa. All rights reserved. | |
| // | |
| // Modified from http://blog.radi.ws/post/32905838158/sticky-headers-for-uicollectionview-using THANKS! | |
| // |
| <?xml version="1.0" encoding="UTF-8"?> | |
| <project xmlns="http://maven.apache.org/POM/4.0.0" | |
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |
| xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | |
| <modelVersion>4.0.0</modelVersion> | |
| <!-- Information about your module --> | |
| <groupId>com.company.name.goes.here</groupId> | |
| <artifactId>AwesomeArtifactIdHere</artifactId> | |
| <version>1.0</version> |
| // | |
| // JSDynamicRowHeightTableViewController.h | |
| // | |
| // Created by Javier Soto on 7/25/13. | |
| // Copyright (c) 2013 JavierSoto. All rights reserved. | |
| // | |
| #import <UIKit/UIKit.h> | |
| /** |
| package com.myzoomproject.views; | |
| import com.myzoomproject.activities.*; | |
| import android.content.Context; | |
| import android.graphics.Canvas; | |
| import android.graphics.Rect; | |
| import android.util.AttributeSet; | |
| import android.util.Log; | |
| import android.view.MotionEvent; |