Skip to content

Instantly share code, notes, and snippets.

Shane Harter shaneharter

Block or report user

Report or block shaneharter

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View gist:b50a48530666f211cd56
with make_temp_dir(listing_id) as tmpdir:
logger.console('Downloading assets for %s to %s' % (listing_id, tmpdir))
photoset = photos.Photoset(filenames, tmpdir, limit=MAXIMUM_PHOTOS, subprocessor=logged_popen)
photoset.load()
if photoset.count() < MINIMUM_PHOTOS:
raise RuntimeWarning('Too few conforming photos')
photoset.process()
View gist:bc7d33a513728f5bf44c
<?php
/**
* An immutable value object.
*/
final class ImmutableObject
{
private $state = array();
@shaneharter
shaneharter / backbone_pushstate_router.js
Last active Aug 29, 2015 — forked from wololodev/backbone_pushstate_router.js
Play nice with Backbone.history.root when attaching pushstate click handler
View backbone_pushstate_router.js
// Only need this for pushState enabled browsers
if (Backbone.history && Backbone.history._hasPushState) {
var $document = $(window.document);
var openLinkInTab = false;
// Links like <a href="some/thing/here"> are relative to the page.
// We want to run these links thru the router
var is_relative_to_page = function(href) {
return href.match(/^\/|(http:|https:|ftp:|mailto:|javascript:)/) === null;
};
@shaneharter
shaneharter / gist:5863839
Created Jun 26, 2013
PHP Namespace Autoloader
View gist:5863839
<?php
$namespaces = array(
'Sheldon\examples\SignalConsole\*' => __DIR__,
'Sheldon\*' => dirname(dirname(__DIR__)) . '/src/',
);
spl_autoload_register(function ($class) use ($namespaces) {
$NAMESPACE_SEPARATOR = '\\';
@shaneharter
shaneharter / sqrt.go
Created May 13, 2013
Gotour: Newtonian square roots in Go
View sqrt.go
package main
import (
"fmt"
"math"
)
const min_delta = 0.000000000001
func Sqrt(x float64) float64 {
View gist:4741572
#!/usr/bin/php
<?php
ini_set('memory_limit', '256M');
set_time_limit(0);
require_once('include/local.conf');
require_once(COMMON_INCLUDE_PATH . 'db_mysql.class.php');
$ymds = array(20130107, 20130108, 20130109, 20130110, 20130111, 20130112, 20130113, 20130114, 20130115, 20130116,
View gist:4332807
<?php
ini_set('display_errors', 1);
require_once 'include/local.conf';
require_once (COMMON_INCLUDE_PATH.'email/EmailTypes.php');
$mutex = sem_get(ftok(__file__, 'D'), 1, 0666, 1);
register_shutdown_function(function() use($mutex) {
@sem_release($mutex);
});
View tap.js
Object.defineProperty(Object.prototype, 'tap', {
value: function(fun){
fun.call( this );
return this;
},
enumerable: false
});
// Usage:
// a = [];
@shaneharter
shaneharter / gist:4211173
Created Dec 5, 2012
Progress Display for PHP CLI scripts
View gist:4211173
for ($i=1; $i<101; $i++) {
progress($i, 100, 'Percent Complete: ');
usleep(25000);
}
function progress ($step_x, $of_y, $label = '') {
$p = number_format($step_x / $of_y * 100, 1) . '%';
$p = str_pad($p, 5, ' ', STR_PAD_LEFT);
if ($label)
$p = "{$label} {$p}";
View repowatcher.py
import requests
import smtplib
from email.mime.text import MIMEText
API = "api.github.com"
TOKEN = ""
WHITELIST = './whitelist'
EMAIL_LIST = ['sharter@trulia.com']
SMTP_SERVER = 'mail.trulia.com'
def uri(uri):
You can’t perform that action at this time.