Skip to content

Instantly share code, notes, and snippets.

Avatar

Bertrand Bordage BertrandBordage

View GitHub Profile
@BertrandBordage
BertrandBordage / lzw.py
Last active Feb 15, 2022
Lempel-Ziv-Welch algorithm in Python
View lzw.py
from math import floor, ceil
from typing import AnyStr
ASCII_TO_INT: dict = {i.to_bytes(1, 'big'): i for i in range(256)}
INT_TO_ASCII: dict = {i: b for b, i in ASCII_TO_INT.items()}
def compress(data: AnyStr) -> bytes:
if isinstance(data, str):
View PostgreSQL autocomplete.ipynb
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View clean_svg.py
#!/usr/bin/env python
from argparse import ArgumentParser
from io import BytesIO
import re
from xml.etree import ElementTree
NAMESPACED_RE = re.compile(r'^\{(.+)\}.+$')
SVG_NAMESPACE = 'http://www.w3.org/2000/svg'
View home-made-wysiwyg-editor.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<style type="text/less">
body {
margin: 30px;
font-family: Helvetica, sans-serif;
}
.wysiwyg {
@BertrandBordage
BertrandBordage / autoreplyer.py
Last active Feb 20, 2022
Automatically reply to unread and unanswered messages in Python
View autoreplyer.py
"""
Automatically replies to mails both unread and unanswered.
WARNING: This answers to any both unread and unanswered mail, even if it is years old.
Dont use on a mailbox with old messages left unread and unanswered.
Simply subclass ``AutoReplyer``, define the undefined class attribute,
and call the ``run`` method on an instance. This loops until you stop the script
(using Ctrl+C, typically) or until an error occurs, like a network failure.
View arte_downloader.py
#!/usr/bin/env python3
import json
from math import ceil
import re
from subprocess import check_output
import sys
from urllib.parse import unquote
from urllib.request import urlopen
@BertrandBordage
BertrandBordage / locmem.py
Created Oct 25, 2015
Django LocMem cache backend without pickle
View locmem.py
"Thread-safe in-memory cache backend."
import time
from contextlib import contextmanager
from django.core.cache.backends.base import DEFAULT_TIMEOUT, BaseCache
from django.utils.synch import RWLock
# Global in-memory store of cache data. Keyed by name, to provide
@BertrandBordage
BertrandBordage / to_html5_videos.py
Last active Sep 22, 2016
Converts most videos to the same quality HTML5-compatible MP4+OGV
View to_html5_videos.py
# coding: utf-8
"""
Converts videos inside the current directory to two complementary
HTML5 video formats while keeping the same quality.
The converted videos are placed in a subfolder.
You need avconv to be installed with some codecs
(packages libav-tools & libavcodecs-extra under Ubuntu)
"""
View Linux mag 179 optimisation Python.ipynb
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@BertrandBordage
BertrandBordage / Dockerfile
Created Jan 30, 2015
Wagtail demo Dockerfile
View Dockerfile
# Build this docker image using: docker build -t wagtail-demo [path_to_the_folder_containing_this_file]
# Run it using: docker run -p 8000:8000 wagtail-demo
FROM ubuntu:14.10
MAINTAINER Bertrand Bordage, bordage.bertrand@gmail.com
RUN apt-get update \
&& apt-get -y upgrade \
&& apt-get -y install postgresql postgresql-server-dev-9.4 build-essential \