Skip to content

Instantly share code, notes, and snippets.

View craigderington's full-sized avatar
🚀
Automate Everything

Craig Derington craigderington

🚀
Automate Everything
View GitHub Profile
@craigderington
craigderington / hashed_messaging.py
Created June 6, 2021 15:07
Digital Signature Verification with Python and hmac
import os
import hashlib
import uuid
import hmac
from datetime import datetime, timedelta
my_api_key = os.urandom(64)
def verify(api_key, token, timestamp, signature):
@craigderington
craigderington / app.py
Created September 12, 2019 21:40
Python + Flask + Redis - Page Hit Counter
#!/usr/bin/python
from flask import Flask
from redis import Redis
app = Flask(__name__)
redis = Redis(host="172.17.0.2", port=6379)
@app.route("/", methods=["GET"])
@craigderington
craigderington / sitename.conf
Created September 7, 2022 23:54
Flask App WSGI Apache Configuration
<VirtualHost *:80>
# listen for non-www, redirect to non-www
ServerName domainname.com
Redirect permanent / http://www.domainname.com
</VirtualHost>
<VirtualHost *:80>
ServerName www.domainname.com
ServerAdmin alias@domainame.com
DocumentRoot /var/www/html/sitename
import fastf1 as ff1
from fastf1 import plotting
from fastf1 import utils
from matplotlib import pyplot as plt
from matplotlib.pyplot import figure
import numpy as np
import pandas as pd
# enable the cache
ff1.Cache.enable_cache('cache')
@craigderington
craigderington / recursive_dict_get.py
Created April 27, 2022 02:32
Recursive Dictionary Get
def recursive_dict_get(d, *keys, default_none=False):
"""Recursive dict get. Can take an arbitrary number of keys and returns an empty
dict if any key does not exist. https://stackoverflow.com/a/28225747"""
ret = reduce(lambda c, k: c.get(k, {}), keys, d)
if default_none and ret == {}:
return None
else:
return ret
from signalr_aio import Connection
from base64 import b64decode
from zlib import decompress, MAX_WBITS
import json
# decode the payload
def process_message(message):
deflated_msg = decompress(b64decode(message), -MAX_WBITS)
return json.loads(deflated_msg.decode())
@craigderington
craigderington / index.html
Last active June 24, 2021 00:59
Flask layout.html
{% extends "layout.html" %}
{% block title %}
Reddit Reader | Public Timeline
{% endblock %}
{% block body %}
<h2><i class="fa fa-reddit-square"></i> Recent Reddits
<a style="margin-left:5px;" href="#menu-toggle" class="btn btn-default" id="menu-toggle"><i class="fa fa-toggle-left"></i> Toggle Menu</a>
@craigderington
craigderington / Dockerfile
Last active June 24, 2021 00:56
Build image for Flask Redis Counter
FROM python:3.6-alpine
LABEL maintainer="Craig Derington <craigderington17@gmail.com>"
RUN apk update && apk upgrade
RUN apk add screen curl
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt
EXPOSE 8000
CMD ["python", "app.py"]
import asyncio
class EchoClientProtocol(asyncio.Protocol):
def __init__(self, message, loop):
self.message = message.encode()
def connection_made(self, transport):
self.transport = transport
self.write_data()
// coding: utf-8
// example 1
// string length
// given the following string, 'this example string', write the string length to the console
var string = 'this example string';
console.log(string.length);