Skip to content

Instantly share code, notes, and snippets.

View BibMartin's full-sized avatar

Martin Journois BibMartin

View GitHub Profile
git config --global alias.lola "log --graph --decorate --pretty=oneline --abbrev-commit --all"
@BibMartin
BibMartin / b32str.py
Last active May 23, 2022 09:22
Encode your ints into a short base32 string (case-unsensitive letters and digits)
import math
import base64
def int_to_b32str(x):
base = int(math.log2(1 + x) / 8) + 1 # How many bytes ?
bytestring = x.to_bytes(base, 'big')
b32str = base64.b32encode(bytestring).decode()
return b32str.rstrip('=') # remove trailing "="
def b32str_to_int(b):
@BibMartin
BibMartin / image_clipboard.py
Created May 18, 2022 08:25
Wanna copy images and paste it in a notebook
# !pip install clipboard
# !pip install Pillow
import clipboard
from PIL import ImageGrab, Image
import base64
def clipboard_to_image():
"""Reads image in the clipboard and outputs a PIL.Image"""
image = ImageGrab.grabclipboard()
@BibMartin
BibMartin / logging_tips.py
Created May 6, 2022 10:53
Python logging tips
import sys
import logging
# 1 - Choose a logger (where logs should come from)
# logger = logging.getLogger() # Root logger ; if you're in a notebook of end-user script
logger = logging.getLogger(__name__) # Lib-named logger ; if you're in a module
# logger = logging.getLogger(None if __name__=='__main__' else __name__)
# 2 - Choose the (minimal) log level
logger.setLevel(logging.DEBUG)
@BibMartin
BibMartin / gist:42f8c429169620f24376f8ab8f30a5b3
Last active March 18, 2022 10:11
Kill a process (and all it's children) based on a `ps -fA | grep` output
## Brutal shortcuts:
# Kill everything launched with "python registry.py"
kill -SIGTERM -$(ps aux | grep 'python registry.py' | awk '{print $2}')
# Same in a function
grepkill() { kill -SIGTERM -$(ps aux | grep $1 | awk '{print $2}'); }
# Restart a uvicorn server
git reset --hard ; kill -SIGTERM $(ps aux | grep 'uvicorn server:app' | grep -v "grep" | awk '{print $2}'); nohup uvicorn server:app --host 127.0.0.1 --port 8000 > server.log &
@BibMartin
BibMartin / folium GrayScaleTiles.ipynb
Created September 1, 2021 09:41
A folium element transform the tiles into grayscale (based on https://github.com/Zverik/leaflet-grayscale/)
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@BibMartin
BibMartin / tiles demo.ipynb
Created May 15, 2020 17:56
Three tiles systems : Squares, Triangles, Hexagons ; with a hash system to encode them
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@BibMartin
BibMartin / gist:f1833f134024ed276f4b
Created July 9, 2015 13:31
Watch and kill queries with pymongo
import pymongo
connection = pymongo.MongoClient()
# get running operations
list(connection.admin["$cmd.sys.inprog"].find())
# kill an operation by id
op_id = 123456
@BibMartin
BibMartin / folium_iframe_embed.py
Created July 10, 2015 22:24
Embed folium map in an iframe for jupyter nb
from IPython.display import HTML
def _repr_html_(self, figsize=(17,10), **kwargs):
"""Displays in the notebook a folium.folium.Map object.
"""
self._build_map(**kwargs)
width, height = figsize
iframe = '<iframe src="data:text/html;base64,{html}" width="{width}" height="{height}"></iframe>'\
@BibMartin
BibMartin / test-ioloop.py
Created November 29, 2017 06:00
Using multiprocessing to run a blocking function with a timeout.
from tornado import ioloop, gen, concurrent
import pandas as pd
import time
import asyncio
from multiprocessing import TimeoutError, Process
from multiprocessing.dummy import Pool as ThreadPool
class F(object):
def __init__(self):