Skip to content

Instantly share code, notes, and snippets.

View majgis's full-sized avatar

Michael Jackson majgis

View GitHub Profile
@majgis
majgis / gist:9558866
Created March 14, 2014 23:04
npm shrinkwrap
#-- Start pm-ops-utils dev --#
# Remove local modules and npm cache
alias npmPurge="
rm -rf node_modules
npm cache clean
"
# Ugly, but it is a fail-safe way of generating npm-shrinkwrap.json
alias updateShrinkwrap="
@majgis
majgis / gist:9680084
Last active August 29, 2015 13:57
Rough Node.js Hierarchical Queue
var http = require('http');
function RequestQueue() {
this._maxRequests = 3;
this._pendingCount = 0;
this._queue = [];
this.count = 0;
this._uriInQueue = {};
}
@majgis
majgis / gulpfile.js
Created November 23, 2014 08:36
find protractor selenium jar
var gulp = require('gulp');
var lib = require('./lib');
var protractor = require("gulp-protractor").protractor;
var jarPath = lib.getProtractorSeleniumJarPath();
gulp.task('default', function(){
gulp.src(["./spec/*.js"])
.pipe(protractor({
configFile: "protractor.config.js",
@majgis
majgis / run.js
Last active August 29, 2015 14:12
Browserify - expose
var fs = require( 'fs' );
var b = require( 'browserify' )();
var outputFile = fs.createWriteStream( './output.js' );
b.add( './index.js' );
b.require( './test.js', {expose: 't'} );
b.bundle().pipe( outputFile );
@majgis
majgis / ToolValidator.py
Created April 26, 2012 23:42
ArcGIS ToolValidator - Import package or module relative to .tbx file
""" ArcGIS 10.0 ToolValidator - Import package or module relative to .tbx file
Rules for packages:
1. You can't import a subpackage (__init__.py) directly for example:
# This works:
import myPackage
myPackage.mySubPackage.doSomething()
# This doesn't work
@majgis
majgis / dictutils.py
Created September 5, 2012 09:03
DictWrap: Create or access massive nested dictionaries with ease.
class DictWrap(object):
""" Wrap an existing dict, or create a new one, and access with either dot
notation or key lookup.
The attribute _data is reserved and stores the underlying dictionary.
When using the += operator with create=True, the empty nested dict is
replaced with the operand, effectively creating a default dictionary
of mixed types.
args:
@majgis
majgis / django_snippets.py
Created September 18, 2012 15:43
django snippets
#Compact example to get the name of the primary key field of a Django model.
loc_fields = self._model._meta.fields
loc_pk = next((f.db_column or f.name for f in loc_fields if f.primary_key))
#Get all related model classes for a model class or instance
related_models = [f.rel.to for f in loc_record._meta.fields if f.rel]
@majgis
majgis / class.js
Last active October 11, 2015 06:27
Javascript instantiable class experiments.
// Modified excerpt from:
// https://developer.mozilla.org/en-US/docs/JavaScript/Introduction_to_Object-Oriented_JavaScript
// define the Person Class
function Person(name) {
//Public property
this.name = name;
//Private property
@majgis
majgis / property.py
Created October 17, 2012 01:35
Python get and set methods
class C(object):
def __init__(self, x=None):
self.x = x
@property
def x(self):
return self._x
@x.setter
@majgis
majgis / initkwargs.py
Last active October 13, 2015 15:08
Pass kwargs defined on class to class initialization
def DefaultKwargs(**init_kwargs):
"""Decorator factory for passing default kwargs to the decorated function.
Returns:
decorator function
"""
def decorator(func):
"""Recieves a function, then wraps it with wrapper_func