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:
#lang racket | |
(require ffi/unsafe) | |
(require ffi/cvector) | |
(define swipl-lib (ffi-lib "/opt/local/lib/swipl-5.11.24/lib/i386-darwin10.8.0/libswipl")) | |
(define [swipl-func name type] (get-ffi-obj name swipl-lib type)) | |
(define fid_t _pointer) ;;handle to a foreign frame |
sprite( X, Y ) :- | |
sprite(S), | |
S.x <- X, S.y <- Y, | |
paint(S,0x8888ff), | |
spawn(( repeat, | |
receive(S,mouseMove,E), | |
S.x <- E.stageX - 50, | |
S.y <- E.stageY - 30 )). | |
paint(Sprite,Color) :- |
#lang racket/gui | |
(require framework) | |
(require ffi/unsafe) | |
(require ffi/unsafe/objc) | |
(ffi-lib "/System/Library/Frameworks/WebKit.framework/WebKit") | |
(import-class WebView) | |
(import-class NSURLRequest) | |
(import-class NSURL) | |
(import-class NSString) |
<!DOCTYPE html> | |
<html> | |
<head> | |
<script type="text/javascript"> | |
function makeContext() { return { choices:[], trail:[], halted:false }; } | |
// Push a new choice point onto the stack | |
function pushChoice( ctx, choiceThunk ) { | |
ctx.choices.unshift( { thunk:choiceThunk, trailIndex:ctx.trail.length } ); | |
} |
(defrule make-group | |
(make-graphic ?sheet ?id) | |
(dict-entry ?id Class "Group") | |
(not (dict-entry ?id isSubgraph ?)) | |
(dict-entry ?id Graphics ?array) | |
(array ?array $?graphics) | |
=> | |
(assert (group ?id)) | |
(foreach ?graphic $?graphics | |
(assert (make-graphic ?sheet ?graphic)) |
// Playground - noun: a place where people can play | |
import Cocoa | |
func checkOptionals(a:Dictionary<String,Int>,key1:String,key2:String) { | |
switch (a[key1],a[key2]) { | |
case (.Some(_),.Some(_)): println("both") | |
case (.Some(let a),.None): println("first " + String(a)) | |
case (.None,.Some(let b)): println("second " + String(b)) | |
default: println("neither") |
#lang racket | |
(define (run-length n) | |
(let ([run-char #f] | |
[run-len 0]) | |
(λ(c) | |
(if (equal? c run-char) | |
(set! run-len (+ run-len 1)) | |
(begin (set! run-len 1) | |
(set! run-char c))) |
//: Playground - noun: a place where people can play | |
import Foundation | |
class ServerSocket { | |
private var sockAddrLen = socklen_t(sizeof(sockaddr_in)) | |
private var serverSocket = socket(AF_INET, SOCK_STREAM, 0) | |
init?(_ port: UInt16) { | |
var option: UInt32 = 1 |
git clone [email protected]:YOUR-USERNAME/YOUR-FORKED-REPO.git
cd into/cloned/fork-repo
git remote add upstream git://github.com/ORIGINAL-DEV-USERNAME/REPO-YOU-FORKED-FROM.git
git fetch upstream