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:
| /* ---------------------------------------------------------- */ | |
| /* */ | |
| /* A media query that captures: */ | |
| /* */ | |
| /* - Retina iOS devices */ | |
| /* - Retina Macs running Safari */ | |
| /* - High DPI Windows PCs running IE 8 and above */ | |
| /* - Low DPI Windows PCs running IE, zoomed in */ | |
| /* - Low DPI Windows PCs and Macs running Firefox, zoomed in */ | |
| /* - Android hdpi devices and above */ |
| <!doctype html> | |
| <!-- http://taylor.fausak.me/2015/01/27/ios-8-web-apps/ --> | |
| <html> | |
| <head> | |
| <title>iOS 8 web app</title> | |
| <!-- CONFIGURATION --> |
| def my_method(foo, bar) | |
| memoize(:my_method, foo, bar) do | |
| foo * bar | |
| end | |
| end |
| source :rubygems | |
| gem 'sinatra' | |
| gem 'json' | |
| gem 'omniauth' | |
| gem 'omniauth-oauth2' | |
| gem 'omniauth-github' | |
| # gem 'omniauth-att', :path => File.expand_path("./../../omniauth-att", __FILE__) | |
| gem 'thin' |
| [user] | |
| name = Brad Fults | |
| email = bfults@gmail.com | |
| [alias] | |
| amend = commit --amend | |
| co = checkout | |
| st = status | |
| cp = cherry-pick | |
| # edit config (global, local) |
| --- | |
| <%= ENV["RAILS_ENV"] %>: | |
| error_collector: | |
| capture_source: true | |
| enabled: true | |
| ignore_errors: ActionController::RoutingError | |
| apdex_t: 0.5 | |
| ssl: false | |
| monitor_mode: true | |
| license_key: <%= ENV["NEW_RELIC_LICENSE_KEY"] %> |
| @mixin fancy-hover($sprite_dir, $off_state, $hover_state, $speed: 0.3s) | |
| $sprites: sprite-map("#{$sprite_dir}/*.png") | |
| $width: image-width(sprite_file($sprites, $off_state)) | |
| $height: image-height(sprite_file($sprites, $off_state)) | |
| @include hide-text | |
| width: $width | |
| height: $height | |
| background: sprite($sprites, $off_state) no-repeat | |
| display: block | |
| position: relative |
| require 'sinatra/base' | |
| require 'memcached' | |
| module Sinatra | |
| module Memcacher | |
| module Helpers | |
| def cache(key, &block) | |
| return block.call unless options.memcacher_enabled | |
| begin |
| # | |
| # When you're using inject with a hash or somesuch, you can subgroup the source's elements: | |
| # | |
| # v--- the parens part here | |
| { 1 => 2, 3 => 4, :your => :mom }.inject({}) do |h, (k,v)| | |
| h[k] = v**2 if v.is_a?(Numeric) | |
| h | |
| end | |
| # => {1=>4, 3=>16} |