Skip to content

Instantly share code, notes, and snippets.

View revmischa's full-sized avatar
🇺🇦

Mischa Spiegelmock revmischa

🇺🇦
View GitHub Profile
@revmischa
revmischa / DockerfileLambdaChromium
Created April 1, 2020 18:45
Build chromium on amazon linux 2
FROM lambci/lambda:build-python3.8
# ref: https://chromium.googlesource.com/chromium/src.git/+refs
ARG VERSION
ENV VERSION ${VERSION:-master}
LABEL maintainer="Mischa Spiegelmock <me@mish.dev>"
LABEL chromium="${VERSION}"
WORKDIR /
@revmischa
revmischa / amzlinux2-ami-mapping.yml
Last active March 20, 2020 15:12
Amazon Linux 2 AMI ID mapping for cloudformation
Mappings:
AWSAMIRegionMap:
# https://aws.amazon.com/amazon-linux-2/release-notes/
AMI:
AMZNLINUXHVM: amzn2-ami-hvm-2.0.20200207.1-x86_64-gp2
ap-east-1:
AMZNLINUXHVM: ami-47e4a036
eu-central-1:
AMZNLINUXHVM: ami-0df0e7600ad0913a9
us-west-2:

Keybase proof

I hereby claim:

  • I am revmischa on github.
  • I am cybermischa (https://keybase.io/cybermischa) on keybase.
  • I have a public key ASA2gwimJ5iuAryMq_bkJ9OECR-6vpSHXoeCAGg_-GlY-Ao

To claim this, I am signing this object:

from random import uniform, randint
from locust import TaskSequence, HttpLocust
from locust import seq_task
import random
import string
import os
def randomStringDigits(stringLength=6):
"""Generate a random string of letters and digits """
@revmischa
revmischa / serverless.yml
Last active April 11, 2019 10:21
Serverless CloudFormation to provide private RDS and lambda networking with internet access in VPC.
plugins:
- serverless-pseudo-parameters
provider:
name: aws
runtime: python3.7
stage: ${opt:stage, 'dev'}
environment:
SQLALCHEMY_DATABASE_URI: # DB DSN
@revmischa
revmischa / response_unwrap.kt
Created March 11, 2019 18:34
Always unwrap a JSON response key using Retrofit/Moshi/Kotlin
// for parsing "data" out of every response object
// https://stackoverflow.com/questions/23070298/get-nested-json-object-with-gson-using-retrofit/40691739#40691739
class ItemTypeAdapterFactory : TypeAdapterFactory {
override fun <T> create(gson: Gson, type: TypeToken<T>): TypeAdapter<T> {
val delegate = gson.getDelegateAdapter(this, type)
val elementAdapter = gson.getAdapter(JsonElement::class.java)
return object : TypeAdapter<T>() {
override fun write(out: JsonWriter, value: T) {
@revmischa
revmischa / sdl_version_check.m4
Last active February 9, 2019 16:12
Autoconf m4 to check if minimum SDL library version exists
# SDL
AC_ARG_ENABLE([sdl], AS_HELP_STRING([--enable-sdl], [Build SDL2 application]), [], [enable_sdl=check])
AS_IF([test "$enable_sdl" != "no"], [
m4_include([m4/sdl2.m4])
SDL_VERSION="2.0.5"
AS_IF([test "$TRAVIS"], [SDL_VERSION=2.0.2]) # travis has old SDL, we don't care
AS_IF([test "$EMSCRIPTEN"], [SDL_VERSION=2.0.0]) # emscripten has old SDL, we don't care
# Check for libSDL >= $SDL_VERSION
found_sdl=no
@revmischa
revmischa / handler.py
Created January 15, 2019 08:03
Twilio call handler lambda
from twilio.twiml.voice_response import VoiceResponse, Dial
from twilio.rest import Client
from urllib.parse import parse_qsl
import requests
import json
from pprint import pprint
import boto3
session = boto3.session.Session()
@revmischa
revmischa / eurobash_prompt.sh
Last active October 27, 2017 20:22
European Bash Prompt ($PS1)
if [[ `whoami` == "root" ]]; then
ISROOT=1
fi
# Git branch in prompt.
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(❲.*\)/ ❲\1❳/'
}
# git status
parse_git_dirty() {
@revmischa
revmischa / logplex_syslog_lambda.py
Last active November 20, 2018 10:25
Heroku logplex syslog handler lambda
"""Sample handler for parsing Heroku logplex drain events (https://devcenter.heroku.com/articles/log-drains#https-drains).
Expects messages to be framed with the syslog TCP octet counting method (https://tools.ietf.org/html/rfc6587#section-3.4.1).
This is designed to be run as a Python3.6 lambda.
"""
import json
import boto3
import logging
import iso8601