Skip to content

Instantly share code, notes, and snippets.

View BigglesZX's full-sized avatar

James Tiplady BigglesZX

View GitHub Profile
@BigglesZX
BigglesZX / easings.md
Created June 5, 2024 12:48
Unusual CSS easings

Source

"easeInSine": cubic-bezier(0.12, 0, 0.39, 0),
  "easeOutSine": cubic-bezier(0.61, 1, 0.88, 1),
  "easeInOutSine": cubic-bezier(0.37, 0, 0.63, 1),
  "easeInQuad": cubic-bezier(0.11, 0, 0.5, 0),
  "easeOutQuad": cubic-bezier(0.5, 1, 0.89, 1),
  "easeInOutQuad": cubic-bezier(0.45, 0, 0.55, 1),
  "easeInCubic": cubic-bezier(0.32, 0, 0.67, 0),
@BigglesZX
BigglesZX / nginx.sh
Created December 15, 2020 11:19
Show 100 top URLs producing 404s in nginx access log
cat access.log | grep 404 | awk '{print $7}' | sort | uniq -c | sort -nr | head -n 100
@BigglesZX
BigglesZX / node_modules_inventory.sh
Created October 30, 2018 10:49
Find and sort node_modules folders by size, to aid pruning
find . -type d -name "node_modules" -prune -exec du -sh {} \; | sort -nrk1
# find directories matching the name `node_modules`
# prune out unnecessary entries from within top-level `node_modules` results
# run `du` against the results to calculate size
# pipe to sort, first column as key, reverse natural
@BigglesZX
BigglesZX / s3.iam.md
Last active December 9, 2020 17:43
Amazon S3 IAM User Notes

Setting up S3-bucket-specific IAM users for new sites

This provides a new site with a unique IAM access key/secret that allows read/write access to a single S3 bucket, e.g. to allow a Django site to upload media files. This assumes the bucket itself has already been created.

Note: I originally created this gist as a note-to-self so conventions shown here are particular to my setup; YMMV.

  1. Log in to the AWS Console and head to the IAM section
  2. Click Users to access the IAM user list
  3. Click Add User
  4. Enter username in the format of sitename-s3 (replacing sitename)
@BigglesZX
BigglesZX / import_translations_from_loco.py
Last active August 29, 2015 14:18
Django management command to copy translations from Loco endpoints to local PO files
from django.conf import settings
from django.core.management.base import BaseCommand, CommandError
from os.path import join
from urllib import urlretrieve
class Command(BaseCommand):
help = 'Imports translations from Loco'
def handle(self, *args, **options):
@BigglesZX
BigglesZX / models.py
Last active August 29, 2015 14:10
Generate a unique code for an instance of a Django model on save
"""
This uses the DB to ensure uniqueness of the code. Better than checking separately
with the DB and then saving, which introduces a race condition.
"""
class UserProfile(BaseModel):
code = models.CharField(max_length=4,
db_index=True,
unique=True)
def generate_code(self):
@BigglesZX
BigglesZX / wsgi.py
Created September 6, 2014 22:01
Default Django 1.7 wsgi.py file
"""
WSGI config for myproject project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/1.7/howto/deployment/wsgi/
"""
import os
@BigglesZX
BigglesZX / keybase.md
Created August 14, 2014 14:22
Keybase verification

Keybase proof

I hereby claim:

  • I am BigglesZX on github.
  • I am biggleszx (https://keybase.io/biggleszx) on keybase.
  • I have a public key whose fingerprint is 0361 EC11 E816 C0A0 C151 859B 36CB 1F0D BFFB 46BF

To claim this, I am signing this object:

@BigglesZX
BigglesZX / Procfile
Last active August 29, 2015 14:01
Standard config + addons for Heroku Django apps
web: django-admin.py collectstatic --noinput; newrelic-admin run-program gunicorn appname.wsgi:application -b "0.0.0.0:$PORT" -w 4
@BigglesZX
BigglesZX / localstorage-userdata-polyfill.js
Created December 5, 2013 11:10
HTML5 LocalStorage polyfill for IE7 using the userData behaviour
// if localStorage isn't available but IE's userData API is, polyfill it
// polyfill pattern based on https://gist.github.com/juliocesar/926500
if (Modernizr && !Modernizr.localstorage) {
// set up storage element
var storageNamespace = 'localStoragePolyfill',
storage = document.createElement('div');
if (typeof storage.addBehavior !== 'undefined') {
storage.id = '_storage';
storage.style.display = 'none';
storage.style.behavior = 'url("#default#userData")';