Skip to content

Instantly share code, notes, and snippets.

View dmclain's full-sized avatar

Dave McLain dmclain

  • Turntable
  • Austin, TX
View GitHub Profile
@dmclain
dmclain / example.py
Last active April 7, 2016 18:27 — forked from smartkiwi/example.py
Report exceptions to Sentry
import logging
from pyspark import SparkContext, SparkConf, BasicProfiler
from raven import Client
from raven.context import Context
class RavenContextProfiler(BasicProfiler):
raven_client = None
@dmclain
dmclain / gist:6277093
Created August 20, 2013 04:23
talkspider_advanced.py
from scrapy.http import Request
from scrapy.selector import HtmlXPathSelector
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.contrib.loader import XPathItemLoader
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.spider import BaseSpider
from pytexas.items import PytexasItem
class TalkspiderAdvancedSpider(BaseSpider):
name = 'talkspider_advanced'
def page_parser(self, response):
sites = hxs.select('//div[@class="row"]')
items = []
request = Request("http://www.example.com/lin1.cpp", callback=self.parseDescription1)
request.meta['item'] = Item()
return [request]
def parseDescription1(self,response):
JSESSION_STRIPPER = re.compile(r';jsessionid=[^?]*')
class CanonicalizeMiddleware(object):
def process_request(self, request, spider):
if 'jsessionid' in request.url:
return request.replace(url=JSESSION_STRIPPER.sub('', request.url))
@dmclain
dmclain / gist:3442256
Created August 23, 2012 21:42
VarnishTelnet
from telnetlib import Telnet
from hashlib import sha256
class VarnishSecretException(Exception):
pass
class VarnishTelnet(Telnet):
def __init__(self, secret=None, *args, **kwargs):
Telnet.__init__(self, *args, **kwargs)
status, content = self._handle_response()
SELECT COUNT(DISTINCT `stories_story`.`content_ptr_id`)
FROM `stories_story`
INNER JOIN `base_content` ON (`stories_story`.`content_ptr_id` = `base_content`.`id`)
LEFT OUTER JOIN `base_content_authors` ON (`base_content`.`id` = `base_content_authors`.`content_id`)
LEFT OUTER JOIN `auth_user` ON (`base_content_authors`.`user_id` = `auth_user`.`id`)
LEFT OUTER JOIN `base_content_authors` T5 ON (`base_content`.`id` = T5.`content_id`)
LEFT OUTER JOIN `auth_user` T6 ON (T5.`user_id` = T6.`id`)
LEFT OUTER JOIN `base_content_authors` T7 ON (`base_content`.`id` = T7.`content_id`)
LEFT OUTER JOIN `auth_user` T8 ON (T7.`user_id` = T8.`id`)
LEFT OUTER JOIN `base_content_authors` T9 ON (`base_content`.`id` = T9.`content_id`)
Traceback (most recent call last):
File "/Users/dmclain/.virtualenvs/installable_templates/bin/armstrong", line 8, in <module>
load_entry_point('armstrong.cli==1.3.0alpha', 'console_scripts', 'armstrong')()
File "/Users/dmclain/.virtualenvs/installable_templates/lib/python2.7/site-packages/armstrong/cli/main.py", line 91, in main
func(**kwargs)
File "/Users/dmclain/.virtualenvs/installable_templates/lib/python2.7/site-packages/armstrong/cli/commands/init.py", line 105, in __call__
with open(template_dir + '/manifest.json', 'r') as manifest_file:
IOError: [Errno 2] No such file or directory: '/Users/dmclain/.virtualenvs/installable_templates/lib/python2.7/site-packages/armstrong/templates/standard/manifest.json'
$ armstrong load_demo_data
grabbed 4 for 2012-03-08 12:42:58.644262
Traceback (most recent call last):
File "/Users/dmclain/.virtualenvs/foo/bin/armstrong", line 8, in <module>
load_entry_point('armstrong.cli==1.2.0.alpha.0', 'console_scripts', 'armstrong')()
File "/Users/dmclain/.virtualenvs/foo/lib/python2.7/site-packages/armstrong/cli/main.py", line 91, in main
func(**kwargs)
File "/Users/dmclain/.virtualenvs/foo/lib/python2.7/site-packages/armstrong/cli/experimental/commands/load_demo_data.py", line 68, in __call__
self.fetch_articles(number)
File "/Users/dmclain/.virtualenvs/foo/lib/python2.7/site-packages/armstrong/cli/experimental/commands/load_demo_data.py", line 104, in fetch_articles
Running migrations for sections:
- Migrating forwards to 0001_initial.
> sections:0001_initial
! Error found during real run of migration! Aborting.
! Since you have a database that does not support running
! schema-altering statements in transactions, we have had
! to leave it in an interim state between migrations.
! You *might* be able to recover with: = DROP TABLE `sections_customsection` CASCADE; []
@dmclain
dmclain / id_rsa.pub
Created August 24, 2011 16:27
Tribune workstation public key
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA5WpQBnkVkUIFi1da5+gbDByW+UkZw6LPvbqqWCQCEflLtpC36cfhOTuik4hbi5Dtkr8xskcAdkWQ/dxEfLLcucUIt2btL3bRGN5WxBUB3hvCTPvNgZtpkfxz1d/0s0Sn1bWAimrGYS3HhD5EUes5t7dVXSZMFJWm84wadV9i/+A/JrqCNLgPcx50RnxeHS26JNxeERB2f++0aTmQZsHH49r0YJos+2cnBrbVdeFz9MDyF2uCXqYQT8+uttGzf0KJMJXcHZm3Q4GisMQRDjqV58/oU6kZ7LgMCRj7f5qW3OchnS0b63aBDGCwX50yULEMFqBzSqj3E+dTG2CaCCwf9Q== dmclain@texastribune.org