Skip to content

Instantly share code, notes, and snippets.

@bofm
bofm / random_string.py
Last active April 20, 2017 15:46
python generate random string
# Python 3
import random
import string
''.join(random.choice(string.ascii_letters + string.digits + '#$-=_') for n in range(32))
# Python 2
import random
import string
''.join([random.choice(string.ascii_letters + string.digits + '#$-=_') for n in xrange(32)])
@bofm
bofm / ipython_notebook_table_magic.py
Last active April 11, 2017 11:49
defines IPython Notebook line magic to render 2d-array as HTML table.
from IPython.core.magic import (register_line_magic, register_cell_magic,
register_line_cell_magic)
from six import string_types
class T(list):
def _repr_html_(self):
html = [u"<table>"]
for row in self:
html.append(u"<tr>")
@bofm
bofm / my_sed
Last active October 22, 2019 18:23
Painless sed
my_sed() {
python -c 'import re,sys; sys.stdout.write(re.sub(sys.argv[1], sys.argv[2], sys.stdin.read()))' "$1" "$2"
}
@bofm
bofm / apt-sources.sh
Last active September 26, 2015 09:10
mirror.yandex.ru sources.list apt ubuntu
#!/usr/bin/env bash
cp /etc/apt/sources.list /etc/apt/sources.list_bkp
sed -ri 's/\/\/\w+\.ubuntu\.com/\/\/mirror\.yandex\.ru/' /etc/apt/sources.list
# OR
cat /etc/apt/sources.list | \
python -c 'import re,sys; sys.stdout.write(re.sub(sys.argv[1], sys.argv[2], sys.stdin.read()))' \
'//\w+\.ubuntu\.com' '//mirror.yandex.ru' > /etc/apt/sources.list1
mv /etc/apt/sources.list1 /etc/apt/sources.list
@bofm
bofm / rlwrap_static.sh
Created July 26, 2015 20:51
rlwrap static
# It works on RedHat, OEL, Centos
curl -o /usr/bin/rlwrap https://dl.dropboxusercontent.com/u/21373460/rlwrap_static_x64 && chmod 755 /usr/bin/rlwrap
@bofm
bofm / docker_du.sh
Created November 6, 2015 14:57
Shows disk space usage of Docker containers.
#!/usr/bin/env bash
for d in `docker ps -aq`; do
d_name=`docker inspect -f {{.Name}} $d`
echo "========================================================="
echo "$d_name ($d) container size:"
sudo du -d 2 -h /var/lib/docker/aufs | grep `docker inspect -f "{{.Id}}" $d`
echo "$d_name ($d) volumes:"
for mount in `docker inspect -f "{{range .Mounts}} {{.Source}}:{{.Destination}}
{{end}}" $d`; do
@bofm
bofm / docker_cleanup
Last active November 19, 2015 10:57
Docker cleanup
#!/usr/bin/env bash
docker rm $(docker ps -aq -f status=exited)
docker rmi $(docker images --quiet --filter "dangling=true")
@bofm
bofm / python_diff.py
Last active May 5, 2016 09:23
Simple function to print diff of two strings
import subprocess
def diff(one, two):
with tempfile.TemporaryDirectory() as tmpdir:
f1, f2 = ('%s/%s' % (tmpdir, n) for n in (1,2))
for f, txt in zip((f1, f2), (one, two)):
with open(f, 'w') as f:
f.write(str(txt))
cmd = ('diff -w %s %s' % (f1, f2)).split()
@bofm
bofm / escape_xml.py
Last active July 30, 2019 22:22
Escape invalid XML characters in Python 3
#!/usr/bin/env python3
import sys
import re
# https://trac-hacks.org/ticket/11050#comment:13
_illegal_unichrs = ((0x00, 0x08), (0x0B, 0x1F), (0x7F, 0x84), (0x86, 0x9F),
(0xD800, 0xDFFF), (0xFDD0, 0xFDDF), (0xFFFE, 0xFFFF),
(0x1FFFE, 0x1FFFF), (0x2FFFE, 0x2FFFF),
(0x3FFFE, 0x3FFFF), (0x4FFFE, 0x4FFFF),
@bofm
bofm / merge.py
Last active May 18, 2016 08:54
Python merge records (lists of dicts) by key
def merge_records_by_key(dicts1, dicts2, key):
"""Updates each dict1 containing key `key` from `dicts1`
with the corresponding dict2 from `dicts2` having
dict1[key] == dict2[key].
"""
if len(dicts1) > len(dicts2):
probe, build = dicts1, dicts2
hashmap = {d[key]: d for d in build if key in d}