Skip to content

Instantly share code, notes, and snippets.

Steve Kamerman kamermans

Block or report user

Report or block kamermans

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
@kamermans
kamermans / hash_benchmark.php
Created Oct 21, 2018
Compute the performance of every hashing function in PHP
View hash_benchmark.php
<?php
$loops = 100000;
$str = "whois foobar";
$algos = hash_algos();
$algo_padding = array_reduce($algos, function($carry, $val) {
$len = strlen($val);
if ($len > $carry) {
$carry = $len;
}
@kamermans
kamermans / fix_quotes.sh
Created Oct 19, 2018
Replace fancy-quotes / curly-quotes / smart-quotes with standard ASCII single- and double-quotes in bash
View fix_quotes.sh
$!/bin/bash
# Replaces annoying "fancy" quotes created by programs like Microsoft Word and everything in MacOS
# with normal ASCII single-quotes (') or double-quotes (")
# This script does NOT replace the GRAVE ACCENT (`) since it is commonly used in Markdown and as a bash command
# See: https://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
SINGLE=$(echo -ne '\u00B4\u2018\u2019')
DOUBLE=$(echo -ne '\u201C\u201D')
sed -i "s/[$SINGLE]/'/g; s/[$DOUBLE]/\"/g" $1
@kamermans
kamermans / parse_elb_logs.php
Created May 4, 2018
AWS ELB Log Parsing Regex in PHP
View parse_elb_logs.php
<?php
// Cat your ELB logs into this script
$elb_regex = '#^(?<date>.+?) (?<elb>.+?) (?<client_ip>[\d\.]+):(?<client_port>\d+) (?<backend_ip>[\d\.]+):(?<backend_port>\d+) (?<request_processing_time>[\d\.]+) (?<backend_processing_time>[\d\.]+) (?<response_processing_time>[\d\.]+) (?<elb_status_code>\d+) (?<backend_status_code>\d+) (?<received_bytes>\d+) (?<sent_bytes>\d+) "(?<method>[A-Z]+) (?<https>https?)://(?<http_host>.+?):(?<port>\d+)(?<uri>/.*?) (?<protocol>HTTP/[\d\.]+)" "(?<http_user_agent>.+?)" (?<ssl_cipher>.+?) (?<ssl_protocol>.+?)$#';
while ($line = fgets(STDIN)) {
if (!preg_match($elb_regex, $line, $data)) {
continue;
}
@kamermans
kamermans / docker-functions.sh
Last active Apr 11, 2018
Bash functions for dealing with Docker containers in an unknown state (starting, stopping, removing, checking if they exist, etc)
View docker-functions.sh
# Helper functions for dealing with Docker containers
# Returns "missing", "stopped" or "running"
get_container_state() {
local CONTAINER_NAME=$1
# Faster check to see if the container *might* exist
CONTAINER_MISSING=$(container_does_not_exist "$CONTAINER_NAME")
if [[ $CONTAINER_MISSING = "true" ]]; then
echo -n "missing"
@kamermans
kamermans / libwurfl_version.c
Created Nov 8, 2017
Get the version of libwurfl
View libwurfl_version.c
/**
* libwurfl_version.c
* Compile with:
* gcc -o libwurfl_version libwurfl_version.c -lwurfl
*/
#include <stdio.h>
#include <wurfl/wurfl.h>
int main(int argc, char **argv)
@kamermans
kamermans / curl-timing
Created Oct 21, 2017
Curl helper that adds detailed timing information
View curl-timing
#!/bin/bash -e
# Put this file in /usr/local/bin and use 'curl-timing' in place of 'curl'
# to get a detailed timing report with the response.
# You can customize the report below. For older versions of curl, some
# of the fields below will not be available.
TIMING_FORMAT=$(cat <<EOL
url_effective: %{url_effective}
remote_ip: %{remote_ip}
@kamermans
kamermans / parse_identify.php
Last active Oct 13, 2017
ImageMagick identify -verbose JSON transformer
View parse_identify.php
#!/usr/bin/env php
<?php namespace kamermans\ImageMagick;
/**
* Parser for the ImageMagick "identify" utility that takes "identify -verbose <file>"
* output on STDIN and outputs JSON on STDOUT.
*
* Example:
* identify -verbose foo.jpg | ./parse_identify.php
*/
@kamermans
kamermans / url_cleaner.php
Created Jun 6, 2017
PHP function to cleanup/re-encode a URL
View url_cleaner.php
<?php
$url = 'http://foo.com/path with spaces/index.php?something=something else#foo-29 32';
$reencode_url = function ($url) {
$url_parts = parse_url($url);
// Add scheme
$scheme = array_key_exists('scheme', $url_parts)? $url_parts['scheme']: 'http';
$new_url = "$scheme://";
@kamermans
kamermans / python_fnmatch_translate.php
Created Apr 16, 2017
PHP port of the Python 2.7 `fnmatch::translate()` function to convert shell-expansion patterns to regular expressions.
View python_fnmatch_translate.php
<?php
/**
* Direct port of the Python 2.7 fnmatch::translate(pat) function.
* Converts a shell-expansion pattern to a regular expression.
*
* by Steve Kamerman
*
* @see https://hg.python.org/cpython/file/2.7/Lib/fnmatch.py
*/
function pythonFnmatchTranslate($pat, $delimiter=null) {
@kamermans
kamermans / zabbix_v3_2_template_percona_mysql_server.xml
Created Mar 24, 2017
Percona Monitoring Plugins MySQL Template for Zabbix 3.2
View zabbix_v3_2_template_percona_mysql_server.xml
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<date>2017-03-24T18:03:00Z</date>
<graphs>
<graph>
<graph_items>
<graph_item>
<calc_fnc>2</calc_fnc>
<color>157419</color>
<drawtype>1</drawtype>
You can’t perform that action at this time.