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:
| var crypto = require('crypto'); | |
| var SaltLength = 9; | |
| function createHash(password) { | |
| var salt = generateSalt(SaltLength); | |
| var hash = md5(password + salt); | |
| return salt + hash; | |
| } |
| Drop in replace functions for setTimeout() & setInterval() that | |
| make use of requestAnimationFrame() for performance where available | |
| http://www.joelambert.co.uk | |
| Copyright 2011, Joe Lambert. | |
| Free to use under the MIT license. | |
| http://www.opensource.org/licenses/mit-license.php |
| var user = { | |
| validateCredentials: function (username, password) { | |
| return ( | |
| (!(username += '') || username === '') ? { error: "No Username Given.", field: 'name' } | |
| : (!(username += '') || password === '') ? { error: "No Password Given.", field: 'pass' } | |
| : (username.length < 3) ? { error: "Username is less than 3 Characters.", field: 'name' } | |
| : (password.length < 4) ? { error: "Password is less than 4 Characters.", field: 'pass' } | |
| : (!/^([a-z0-9_-]+)$/i.test(username)) ? { error: "Username contains invalid characters.", field: 'name' } | |
| : false | |
| ); |
| # Variables | |
| exp = require 'express' | |
| app = exp.createServer() | |
| pass = require 'passport' | |
| BrowserID = require('passport-browserid').Strategy | |
| # Passport Serialize and Deserialize Functions | |
| pass.serializeUser (user, done) -> | |
| done null, user.email |
| #!/bin/sh | |
| echo "Stopping service" | |
| sudo stop myapp | |
| echo "Deploying to test ..." | |
| _TREE=/export/home/MY-USER/test | |
| GIT_WORK_TREE=$_TREE git checkout -f | |
| cd $_TREE | |
| pwd | |
| echo "Installing dependencies" | |
| npm install |
| license: gpl-3.0 | |
| redirect: https://observablehq.com/@d3/margin-convention |
| license: gpl-3.0 |
| <html ng-app="ng-demo-app"> | |
| <head> | |
| <title>AngularJS simple app demo</title> | |
| </head> | |
| <body ng-controller="MainCtrl"> | |
| <input type="text" ng-model="name" ng-required> | |
| <div>{{name}}</div> | |
| <div ng-controller="ChildCtrl"> | |
| <input type="text" ng-model="salut"> | |
| <div>{{salutation}}</div> |
| /* Flatten das boostrap */ | |
| .well, .navbar-inner, .popover, .btn, .tooltip, input, select, textarea, pre, .progress, .modal, .add-on, .alert, .table-bordered, .nav>.active>a, .dropdown-menu, .tooltip-inner, .badge, .label, .img-polaroid { | |
| -moz-box-shadow: none !important; | |
| -webkit-box-shadow: none !important; | |
| box-shadow: none !important; | |
| -webkit-border-radius: 0px !important; | |
| -moz-border-radius: 0px !important; | |
| border-radius: 0px !important; | |
| border-collapse: collapse !important; | |
| background-image: none !important; |