Skip to content

Instantly share code, notes, and snippets.

View stevage's full-sized avatar
💭
🐘

Steve Bennett stevage

💭
🐘
View GitHub Profile
@stevage
stevage / gist:2210943
Created March 27, 2012 00:20
Checking for unsafe filename paths
Version 1:
def is_evil(filename):
import re
return re.search("^/|\.\./|:|//", filename)
if is_evil(filename):
filename = path.basename(filename)
copyto = path.join(dataset_path, filename)
@stevage
stevage / carto layers
Created June 22, 2013 13:54
Proposed text for TileMill/carto's documentation on layer application.
The order in which objects are drawn depends on the following process. Each step in the process overrules steps with higher numbers.
1. Layers. "Higher" layers obscure "lower" ones.
2. Stylesheets. Stylesheets are applied from left to right.
3. Rules within a stylesheet. Rules are applied from top to bottom. This means two things:
a. objects defined by later rules will be drawn over those defined by later rules; and
b. attachments may be redefined by later rules.
4. Attachments (eg, `::glow { ... }`) within a rule are applied from top to bottom. (The order of different symbolizers within an attachment doesn't matter.)
5. Lastly, all else being equal, objects are drawn in the order in which they are found, such as in PostGIS.
@stevage
stevage / install-tilemill-latest.sh
Last active December 22, 2015 10:49 — forked from springmeyer/install-tilemill-latest.sh
Updated version to function more like proper bash scripts. (The 'sudo su postgres' stuff didn't work properly.)
#!/bin/bash
# First, clear out any old mapnik or node.js installs that might conflict
sudo apt-get purge libmapnik libmapnik-dev mapnik-utils nodejs
# Also clear out any old ppa's that might conflict
sudo rm /etc/apt/sources.list.d/*mapnik*
sudo rm /etc/apt/sources.list.d/*developmentseed*
sudo rm /etc/apt/sources.list.d/*chris-lea*
# add new ppa's
@stevage
stevage / gist:9061001
Created February 17, 2014 23:02
I just noticed the absurdity of this code I wrote yesterday. Javascript inside Python inside Bash inside Jinja inside YAML, and perilously close to a layer of regex too.
configure_osrmweb:
cmd.run:
- cwd: /usr/share/nginx/www/osrm/WebContent
- name: |
python <<EOF
import os, sys, re
os.rename('OSRM.config.js', 'OSRM.config.js.orig')
# In the process we convert line endings for some reason. :/
with open('OSRM.config.js.orig', 'r') as fin, open('OSRM.config.js', 'w') as fout:
data = fin.read()
This file has been truncated, but you can view the full file.
$ bash <<EOF
> sudo apt-get update
> sudo apt-get install -y git-core
> cd /mnt
> sudo mkdir cartodb
> sudo chown ubuntu:ubuntu cartodb
>
@stevage
stevage / gist:9593847
Created March 17, 2014 04:07
Attempting to install CartoDB
sudo apt-get update
sudo apt-get install -y git-core
cd /mnt
sudo mkdir cartodb
sudo chown ubuntu:ubuntu cartodb
git clone --recursive https://github.com/CartoDB/cartodb.git
@stevage
stevage / gist:9806720
Created March 27, 2014 12:43
PTVAPI-GTFS scratch 1
'''
1. get stops
2. get lines
3. get runs
'''
import ptvapi
import pprint
pp = pprint.PrettyPrinter(indent=4).pprint
stops=[]
sudo apt-get update && sudo apt-get install -y git-core curl wget screen
screen -D -R
#<enter>
sudo mkdir /mnt/cartodb-dev
sudo chown ubuntu:ubuntu /mnt/cartodb-dev
cd /mnt
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
var pois = new XMLHttpRequest();
pois.open("GET","http://cycletour.org/testosrm/map.geojson",true);
pois.onreadystatechange = function() {
if (pois.readyState === 4) { // Makes sure the document is ready to parse.
if (pois.status === 200) { // Makes sure it's found the file.
geojson = JSON.parse(pois.responseText);
L.geoJson(geojson, {
onEachFeature: function (feature, layer) {
layer.bindPopup(feature.properties.description);