Skip to content

Instantly share code, notes, and snippets.

@zgohr
zgohr / gist:1428134
Created December 3, 2011 20:56
Mining web page content from the command line via node
# traditional method of searching a website for content
# curl contents of a web page, piped to grep to match regex
$ curl "foo.com" -Ls | grep -o bar
# proof of concept, piping to allow node.io to do the matching.
# node.io has a builtin eval method that uses javascript's eval
# to handle the matching
$ curl "foo.com" -Ls | node.io -s eval "input.match(/bar/g)"
# install node.io globally with npm
@zgohr
zgohr / gist:1490812
Created December 17, 2011 17:29
Get screen names from Twitter REST API given file of user ids.
import sys
import urllib2
import simplejson
def get_names(user_ids):
output_file = open('output.txt', 'a')
get_string = 'https://api.twitter.com/1/users/lookup.json?user_id={0}'.format(user_ids)
req = urllib2.Request(get_string)
try:
f = urllib2.urlopen(req)
@zgohr
zgohr / email_exists.py
Created April 2, 2012 20:14
Check the existence of email addresses. Error prone.
#!/usr/bin/env python
"""
Check that a particular email address exists.
Adam Blinkinsop <blinks@acm.org>
WARNING:
Checking email addresses in this way is not recommended, and will lead to
your site being listed in RBLs as a source of abusive traffic. Mail server
admins do like it when they get connections that don't result in email being
sent, because spammers often use this technique to verify email addresses.
@zgohr
zgohr / run.sh
Created April 5, 2012 18:38
simple hubot start script. do not use for production!
#!/bin/bash
export PATH="node_modules/.bin:$PATH"
export HUBOT_CAMPFIRE_TOKEN="token"
export HUBOT_CAMPFIRE_ROOMS="1,2,3,4"
export HUBOT_CAMPFIRE_ACCOUNT="subdomain"
export HUBOT_FOGBUGZ_HOST="some/fogbugz/server"
export HUBOT_FOGBUGZ_TOKEN="token"
export HUBOT_GITHUB_USER="gh_account"
export HUBOT_GITHUB_TOKEN="token"
@zgohr
zgohr / gist:2492861
Created April 25, 2012 19:54
Socket security when your client is hosted by another application
// Assume that we are not using a redis session store
// instead storing relevant information in redis.
// client side
// assume Cookie.get(name) returns the cookie
// this can use jQuery's cookie plugin or
// some regular expression on document.cookie
var socket = new io.Socket();
@zgohr
zgohr / gist:3317552
Created August 10, 2012 20:22
single line for loop
my_list = [('one','two',),('three','four',)]
return [first + second for first, second in my_list]
# ['onetwo', 'threefour']
@zgohr
zgohr / gist:3317634
Created August 10, 2012 20:31
returning tuples
def return_it():
return ('first', 'second',)
one, two = return_it()
print one
# first
print two
# second
@zgohr
zgohr / gist:3399170
Created August 20, 2012 01:44
SVG vector data to PNG
brew upgrade
brew update
brew install cairo
brew install py2cairo
ln -s ~/Developer/lib/python2.7/site-packages/cairo ~/.virtualenvs/wpd/lib/python2.7/site-packages/cairo
# I needed to specify that my virtual environment uses python 2.7.3 because by default it used 2.7.2
# but brew compiled py2cairo with 2.7.3
mkvirtualenv --no-site-packages -p ~/Developer/bin/python wpd
@zgohr
zgohr / gist:3795583
Created September 27, 2012 18:30
xor
def xor(string, key):
data = ''
for char in string:
for ch in key:
char = chr(ord(char) ^ ord(ch))
data += char
return data
@zgohr
zgohr / filters.py
Created December 16, 2012 19:04
UglifyJS django-compressor filter
from compressor.filters import CompilerFilter
class UglifyFilter(CompilerFilter):
command = "uglifyjs {infile} -o {outfile} -c -m"