Skip to content

Instantly share code, notes, and snippets.

@bofm
bofm / binary_clock_task.ipynb
Created January 26, 2017 11:45
Binary clock task
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@bofm
bofm / side_effect.py
Created February 2, 2017 12:47
Side Effect Python decorator.
from functools import wraps
def side_effect(callback, before=True, after=False):
"""A decorator.
Wraps the decorated function. The callback will be called before and after each
call of the decorated function according to the parameters.
Args:
@bofm
bofm / st_capture_edits.py
Last active March 3, 2017 09:27
Sublime Text captute edits
# Source:
# https://forum.sublimetext.com/t/retrieving-inserted-and-deleted-text/18697/24
import sublime
import sublime_plugin
def get_cursors(view):
# can't use `view.sel()[:]` because it gives an error `TypeError: an integer is required`
return [cursor for cursor in view.sel()]
@bofm
bofm / jupyter-system-site-packages.sh
Created April 20, 2017 15:24
Use virtualenv python kernel inside the Jupyter Notebook installed in the system site-packages
# install Jupyter Notebook into system site-packages
pip install -U notebook
# create a virtualenv and use the Jupyter from the system site-packages
mkvirtualenv --system-site-packages myvenv
# the virtualenv is now activated
pip install ipykernel
VM_NAME=myvm python -m ipykernel install --user --name $VM_NAME --display-name $VM_NAME
python -m jupyter notebook
# In the browser: New -> select kernel "myvm"
@bofm
bofm / run_timeout.py
Created November 8, 2017 10:23
set maximum execution time for a python script
import signal
def set_run_timeout(timeout):
"""Set maximum execution time of the current Python process"""
def alarm(*_):
raise SystemExit("Timed out!")
signal.signal(signal.SIGALRM, alarm)
signal.alarm(timeout)
@bofm
bofm / repl_test.sh
Created February 14, 2018 18:43
tarantool replication test
#!/usr/bin/env bash
cat <<EE > app.lua
box.cfg {
listen = 3301,
read_only = false,
wal_mode = "write",
replication = {"t1:3301", "t2:3301"},
}
@bofm
bofm / it.py
Last active March 2, 2018 12:29
It. A handy iterator with method chaining.
import itertools
import functools
class It:
"""A handy iterator with method chaining.
>>> It([1, 2, 3]).map(lambda x: x**2).filter(lambda x: x<5).chain_after('abc').apply(list)
['a', 'b', 'c', 1, 4]
"""
@bofm
bofm / defer.py
Last active March 5, 2018 19:42
Python deferred execution helper.
from collections import deque
from functools import partial, wraps
class Deferred:
"""
Deferred functions execution.
Usage:
@bofm
bofm / err.py
Created July 27, 2018 10:27
asynctnt_err
Python 3.7.0 (default, Jun 29 2018, 09:12:54)
[GCC 4.9.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import asyncio, asynctnt
>>> asyncio.run(asynctnt.Connection(host='aa', port=1234).connect())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.7/asyncio/runners.py", line 43, in run
return loop.run_until_complete(main)
File "/usr/local/lib/python3.7/asyncio/base_events.py", line 568, in run_until_complete
@bofm
bofm / x.md
Created August 29, 2018 12:29
Tarantool upgrate problem

How to reproduce?

$ docker network create n1

first instance

$ docker run --rm -it --name t1 --net n1  -e TARANTOOL_REPLICATION=t1:3301,t2:3301 progaudi/tarantool:1.10.1-135-g193ef4150