Skip to content

Instantly share code, notes, and snippets.

Tom Marthaler tmarthal

View GitHub Profile
View list_partitions.py
# "given an array of integers and a number n, partition the array into
# n pieces so that their sums are as equal as possible"
import itertools
import numpy as np
import sys
def powerset(input:list) -> list:
# returns a list of tuple lists of all of the permutations of elements
# [1,2,3] -> [[(1, 2, 3)], [(1,), (2, 3)], [(1,), (2,), (3,)], [(1,), (3,), (2,)],
View Type Hints | mypy.ipynb
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@tmarthal
tmarthal / task-dag-creation.py
Created Feb 23, 2017
DAG Creation from within a PythonOperator task DOES NOT WORK
View task-dag-creation.py
# -*- coding: utf-8 -*-
from airflow.operators.http_operator import SimpleHttpOperator
from airflow.operators.postgres_operator import PostgresOperator
from airflow.operators.subdag_operator import SubDagOperator
from airflow.operators.sensors import SqlSensor
from airflow.hooks.postgres_hook import PostgresHook
from airflow.operators.python_operator import PythonOperator
from airflow.models import Variable, DAG
View dynamic-dag-creation.py
# -*- coding: utf-8 -*-
from airflow.operators.http_operator import SimpleHttpOperator
from airflow.operators.postgres_operator import PostgresOperator
from airflow.operators.dummy_operator import DummyOperator
from airflow.hooks.postgres_hook import PostgresHook
from airflow.models import Variable, DAG
from datetime import date, datetime, timedelta
@tmarthal
tmarthal / AESBytesEncryptor-2.java
Last active May 12, 2017
Spring Security AES Encryption Setup/Usage Blog Code
View AESBytesEncryptor-2.java
byte[] iv = this.ivGenerator.generateKey();
byte[] encrypted = doFinal(this.encryptor, bytes);
return this.ivGenerator != NULL_IV_GENERATOR ? concatenate(iv, encrypted) : encrypted;
@tmarthal
tmarthal / aes_encryption.py
Last active Dec 18, 2018
PyCrypto AES256 Encoding with Initialization Vectors Matching Spring Security
View aes_encryption.py
class AesCrypt256:
#Based on https://gist.github.com/pfote/5099161
BLOCK_SIZE = 16
# To use the null/x00 byte array for the IV
default_initialization_vector = False
def __init__(self, default_initialization_vector=False):
self.default_initialization_vector = default_initialization_vector
View AES256 No IV Encryption
import binascii
# PyCryptodome, NOT pycrypto
from Crypto.Cipher import AES
from Crypto.Protocol.KDF import PBKDF2
class AesCrypt256:
#Based on https://gist.github.com/pfote/5099161
BLOCK_SIZE = 16
def pkcs5_pad(self,s):
"""
@tmarthal
tmarthal / csvprocessor.py
Last active Aug 26, 2015 — forked from miku/csvprocessor.py
CSV processor examples for luigi. Can serialize *args to CSV. Can deserialize CSV rows into namedtuples if requested. -- "works on my machine".
View csvprocessor.py
from luigi.format import Format
import csvkit
class CSVOutputProcessor(object):
"""
A simple CSV output processor to be hooked into Format's
`pipe_writer`.
If `cols` are given, the names are used as CSV header, otherwise no
explicit header is written.
View d2.py
digits2alpha = {'1':('1'),
'2':('a','b','c'),
'3':('d','e','f'),
'4':('g','h','i'),
'5':('j','k','l'),
'6':('m','n','o'),
'7':('p','q','r','s'),
'8':('t','u','v'),
'9':('w','x','y','z'),
'0':('0')}
View crontab
# Nginx - logrotate & upload to S3
0 0 * * * /usr/sbin/logrotate /etc/logrotate.d/nginx
15 0 * * * s3cmd put /var/log/nginx/access.log-`date +"\%Y\%m\%d"`.gz s3://$LOGS_BUCKET_NAME/nginx-access/`date +"dt=\%Y\%m\%d"`/`hostname -s`.access.log-`date +"\%Y\%m\%d"`.gz
You can’t perform that action at this time.