Skip to content

Instantly share code, notes, and snippets.

View gpiffault's full-sized avatar

Grégoire Piffault gpiffault

View GitHub Profile
@gpiffault
gpiffault / maps-directions.html
Created November 28, 2014 13:09
Google maps direction polylines
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
html, body, #map-canvas { height: 100%; margin: 0; padding: 0;}
</style>
<script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js">
</script>
<script type="text/javascript">
@gpiffault
gpiffault / canvas.html
Created November 28, 2014 10:20
Drawing semi-transparent blobs on canvas
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Canvas</title>
</head>
<body>
<canvas id="canvas"></canvas>
</body>
<script type="text/javascript">
@gpiffault
gpiffault / index.html
Created July 4, 2014 16:16
Map drawing
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.css" />
<script src="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script>
<style type="text/css">
html, body, #map {
margin: 0;
height: 100%;
}
@gpiffault
gpiffault / ts_to_datetime.py
Created May 23, 2014 09:25
pytz: conversion of POSIX timestamp to python timezone-aware datetime
import pytz
def ts_to_datetime(ts, tz="UTC"):
utc_dt = datetime.datetime.utcfromtimestamp(ts).replace(tzinfo=pytz.utc)
tz = pytz.timezone(tz)
dt = tz.normalize(utc_dt.astimezone(tz))
return dt
# Reverse function is dt.timestamp()
@gpiffault
gpiffault / gtfs.py
Created May 16, 2014 15:24
Reader for zipped csv files (like GTFS)
class GTFSFile(object):
def __init__(self, file_path):
self.archive = zipfile.ZipFile(file_path)
def get_table(self, table_name):
return csv.DictReader(io.TextIOWrapper(self.archive.open(table_name), "utf-8"))
@gpiffault
gpiffault / piecewise.js
Last active April 27, 2024 16:03
Javascript piecewise function factory
function Piecewise(xs, ys) {
return function(x) {
//bisect
var lo = 0, hi = xs.length - 1;
while (hi - lo > 1) {
var mid = (lo + hi) >> 1;
if (x < xs[mid]) hi = mid;
else lo = mid;
}
//project