Skip to content

Instantly share code, notes, and snippets.

@mihow
mihow / treebeard_migration_utils.py
Created February 29, 2020 04:54
Add wagtail child page in migrations
def add_child_page(parent_page, instance):
"""
Mimic the behavior of the "add_child" from Django treebeard.
We can't use `parent_page.add_child(instance=child_page)` inside of
migrations because historical models don't have access to class
methods. This replicates the behavior of `add_child` by calculating
the treebeard path, path depth and url path.
https://django-treebeard.readthedocs.io/en/latest/api.html#treebeard.models.Node.add_child
@mihow
mihow / general.php
Created January 29, 2020 01:08
Cast env var to boolean with default value in PHP
# https://craftcms.stackexchange.com/questions/13584/devmode-phpdotenv-variable-ignored
'devMode' => filter_var(getenv('DEV_MODE') ?: false, FILTER_VALIDATE_BOOLEAN),
@mihow
mihow / two_axis_loop.pgm
Last active October 19, 2019 18:12
Arcus PMX-2ED-SA Program
HSPD=20000
LSPD=1000
ACC=300
DEC=300
EO=3
WHILE 1 = 1
X50000
Y50000
WAITX
WAITY
@mihow
mihow / clean_lambda_versions.py
Last active July 20, 2019 01:02
Script for cleaning out old AWS Lambda function versions
#! /usr/bin/env python3
import json
import boto3
import argparse
import time
lambda_client = boto3.client('lambda')
function_choices = [f['FunctionName'] for f in lambda_client.list_functions()['Functions']]
@mihow
mihow / gist:fe5fcf403a1da12052a4e62d49e05f53
Created February 21, 2019 00:25
Troubleshooting remote env vars
# Send system env vars
python2 -c "import os, urllib; urllib.urlopen('https://NGROK_URL', data=urllib.urlencode(os.environ))"
# Send all running processes with arguments & env vars for process
# @TODO
@mihow
mihow / import_key.py
Last active May 31, 2023 00:45
Import existing PEM file as EC2 Key Pair with boto3 & paramiko
import os
import base64
import struct
import boto3
import paramiko
from paramiko.util import deflate_long
PEM_FILEPATH = '~/.ssh/test-key.pem'
@mihow
mihow / remove_named_docker_volume.sh
Last active January 28, 2019 20:04
Remove named docker volume in docker-compose project
#! /bin/sh
set -e
DOCKER_COMPOSE_SERVICE_NAME=db
CONTAINER_ID=`docker-compose ps -q $DOCKER_COMPOSE_SERVICE_NAME`
FULL_VOLUME_NAME=`docker inspect --format='{{range .Mounts}}{{.Name}} {{end}}' $CONTAINER_ID`
docker volume rm $FULL_VOLUME_NAME
@mihow
mihow / test_url_with_exit_code.sh
Last active January 15, 2019 18:23
Test a URL in bash script and exit on failure or return failure exit code.
#! /bin/bash
set -o errexit
curl --fail --show-error --location http://httpbin.org/status/200 > /dev/null
echo "It worked!"
curl --fail --show-error --location http://httpbin.org/status/500 > /dev/null
echo "It failed, but you will never see this message."
@mihow
mihow / elasticsearch6_fuzzy.py
Last active April 7, 2021 10:56
Enable fuzziness for all Elasticsearch plaintext queries in Wagtail
"""Elasticsearch backend that enables fuzzy search to all plaintext queries."""
from wagtail.search.backends.elasticsearch6 import (Elasticsearch6SearchBackend,
Elasticsearch6SearchQueryCompiler)
class ElasticsearchQueryCompilerWithFuzziness(Elasticsearch6SearchQueryCompiler):
"""
Copy of Elasticsearch6SearchQueryCompiler class with a modified default query.
Adds the "fuzziness" parameter to all queries so that we can return inexact
matches for misspellings, etc.
@mihow
mihow / auto_watch_releases_only.js
Created January 7, 2019 23:33
Change watch settings in Github to release-only in bulk
// By jonashaag https://github.com/isaacs/github/issues/410#issuecomment-442248565
const child_process = require('child_process')
const puppeteer = require('puppeteer')
const devices = require('puppeteer/DeviceDescriptors')
const iPhone = devices['iPhone 6']
const USER = 'youruser'
const PW = 'xxxxxx'