Skip to content

Instantly share code, notes, and snippets.

Tom Marthaler tmarthal

Block or report user

Report or block tmarthal

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
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.