Skip to content

Instantly share code, notes, and snippets.

View ryansully's full-sized avatar

Ryan Sullivan ryansully

View GitHub Profile
atk / LICENSE.txt
Created June 19, 2011 15:45 — forked from 140bytes/LICENSE.txt
polyfill an ES5-compatible Array.prototype.indexOf
Version 2, December 2004
Copyright (C) 2011 Alex Kloss <>
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
realdeprez /
Created December 22, 2011 23:23
image optimization script (pngcrush & jpegtran)
# script for optimizing images in a directory (recursive)
# pngcrush & jpegtran settings from:
# pngcrush
for png in `find $1 -name "*.png"`;
echo "crushing $png ..."
jbjornson /
Last active July 27, 2017 20:35
Plugin that keeps track of which files have been recently closed, as well as files that have been recently accessed. The plugin can be used to simply open the last file you closed or can be used to display a quick panel with a list of recently accessed f
@author Josh Bjornson
This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
To view a copy of this license, visit
or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.
# Plugin to provide access to the history of accessed files:
jondlm /
Last active January 3, 2018 05:59
React shallow render lifecycle breakdown

React introduced shallow rendering in 0.13. This is an excellent feature that I wish was included earlier in React. It aims to solve the problem of unit testing components without going through a real, or jsdom mocked, DOM. I couldn't find any info online about what lifecycle events it actually fires. So I did some testing of my own. To reproduce, put component.js and test.js into a folder and run node test.js.

TLDR; shallow rendering only invokes the following lifecycle hooks (in order):

  1. getDefaultProps
  2. getInitialState
  3. componentWillMount stops here until re-render
  4. componentWillReceiveProps
  5. shouldComponentUpdate
  6. componentWillUpdate
dsingleton / function-bind.js
Created October 25, 2011 11:10
Polyfill for Function.prototype.bind
Function.prototype.bind=Function.prototype.bind||function(b){if(typeof this!=="function"){throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");}var a=Array.prototype.slice,,1),e=this,c=function(){},d=function(){return e.apply(this instanceof c?this:b||window,f.concat(;};c.prototype=this.prototype;d.prototype=new c();return d;};
lourd / firebaseChannel.test.js
Last active September 19, 2018 03:56
Example of making a channel in redux-saga with a firebase source and testing it with jest
import { eventChannel } from 'redux-saga'
function firebaseChannel(firebase, {
eventType = 'value',
returnSnapshot = false,
} = {}) {
return eventChannel(emit => {
const subscription = firebase.on(eventType, snapshot => {
emit(returnSnapshot ? { snapshot } : { value: snapshot.val() })
hiddentao / gist:7300694
Last active January 22, 2019 05:04
An improvement on the angular.module() API, making it easier to split up modules into multiple files without having to worry about only registering them once.
* Workaround to make defining and retrieving angular modules easier and more intuitive.
(function(angular) {
var origMethod = angular.module;
var alreadyRegistered = {};
ryansully /
Created February 1, 2012 23:56 — forked from realdeprez/
image optimization script (pngcrush & jpegtran)
# script for optimizing images in a directory (recursive)
# pngcrush & jpegtran settings from:
# pngcrush
for png in `find $1 -iname "*.png"`; do
echo "crushing $png ..."
pngcrush -rem alla -reduce -brute "$png" temp.png
mknabe /
Last active September 18, 2021 09:14
React component to warn users about unsaved changes to forms when they attempt navigate away from the page using redux-form

Use with the following

  • react-router
  • redux-form

You must use this compontent on the route component where the form is shown not on the form component itself. This is because this.props.route is only added to route components, and I didn't want to pass that down through props.

Inspired by this Codepad

Feedback appreciated

reggi /
Last active March 16, 2022 16:47
A tutorial on how to get started using glob patterns in your terminal. #writing

Glob Up and Running

To test a glob pattern go over to globtester and play around with creating your own file structure online, it's super easy to get started that way.

If you want to test out a glob pattern in the terminal use echo followed by the pattern, for instance.

echo **/*.js