Skip to content

Instantly share code, notes, and snippets.

Avatar

Sebastian Pipping hartwork

View GitHub Profile
@hartwork
hartwork / checkpass.py
Created May 27, 2023 18:39
Test a password against the Have-I-Been-Pwned database API interactively with ease and k-anonymity (Python 3)
View checkpass.py
#! /usr/bin/env python3
# Copyright (C) 2023 Sebastian Pipping <sebastian@pipping.org>
# Licensed under the MIT license
#
# Version 2023-05-27 20:38 UTC+2
#
# Inspired by https://github.com/weddige/django-hibp/blob/main/django_hibp.py
# of django-hibp by Konstantin Weddige (@weddige).
import getpass
View permute_inplace.py
# Demo of finding the nth permutation of a list in-place in Python >=3.8
# Copyright (c) 2023 Sebastian Pipping <sebastian@pipping.org>
# SPDX-License-Identifier: GPL-3.0-or-later
from copy import copy
from math import factorial
from typing import List
from unittest import TestCase, TestLoader, TextTestRunner
View demo_ansi_colors.py
# Copyright (c) 2022 Sebastian Pipping <sebastian@pipping.org>
# Licensed under the Apache license version 2.0
#
# Needs Python >=3.6
# Version 2022-02-01 17:50 UTC+1
_full_block_char = '\u2588'
_ansi_escape = '\u001b'
_ansi_reset = f'{_ansi_escape}[0m'
_demo_text = 2 * _full_block_char
@hartwork
hartwork / write_many_atts.py
Last active December 30, 2021 23:49
Creates an XML file with a given number of prefixed XML attributes on a single XML tag.
View write_many_atts.py
# Copyright (c) 2021 Sebastian Pipping <sebastian@pipping.org>
# Licensed under the Apache license version 2.0
#
# Creates an XML file with a given number of prefixed XML attributes
# on a single XML tag.
# Needs Python >=3.6 and PyPI package "base58"
#
# 2021-12-31 00:47 UTC+1
import argparse
View bisect_malloc.c
// Copyright (c) 2021 Sebastian Pipping <sebastian@pipping.org>
// Licensed under the Apache license version 2.0
//
// Compile and run with:
// # gcc -std=gnu99 -Wall -Wextra -pedantic bisect_malloc.c && ./a.out
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
@hartwork
hartwork / pgn_find_pirc_defence.py
Created August 18, 2021 22:54
Extract Lichess game URLs from a PGN download for games where Black played the Pirc Defence
View pgn_find_pirc_defence.py
#! /usr/bin/env python3
# Copyright (C) 2021 Sebastian Pipping <sebastian@pipping.org>
# Licensed under the Apache 2.0 License
# Version 2021-08-19 00:51 UTC+2
import argparse
from typing import List
import chess
import chess.pgn # https://python-chess.readthedocs.io/en/latest/pgn.html
@hartwork
hartwork / libxspf-1-2-compile.patch
Created March 2, 2020 13:55
Patch to get vanilla libxspf 1.2 to compile
View libxspf-1-2-compile.patch
diff --git a/Makefile.am b/Makefile.am
index 0d7257f..a3f948e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,5 +1,5 @@
## Process this file with automake to produce Makefile.in
-AUTOMAKE_OPTIONS = 1.10.1 gnu dist-zip dist-bzip2 dist-lzma subdir-objects
+AUTOMAKE_OPTIONS = 1.10.1 foreign dist-zip dist-bzip2 subdir-objects
ACLOCAL_AMFLAGS = -I m4
@hartwork
hartwork / decode_jwt_token.sh
Last active January 5, 2020 01:11
Decode JWT token
View decode_jwt_token.sh
decode-jwt-token() { python3 -c 'import sys, json, base64; [print(json.dumps(json.loads(base64.urlsafe_b64decode(e + (len(e)%3)*"=")), indent=2)) for e in sys.argv[1].split(".")[:2]]' "$1"; }
@hartwork
hartwork / .pre-commit-config.yaml
Created January 10, 2019 21:58
Sample .pre-commit-config.yaml of an actual Django project
View .pre-commit-config.yaml
exclude: ^myDjangoApp/static/
repos:
- repo: https://github.com/asottile/pyupgrade
rev: v1.11.0
hooks:
- id: pyupgrade
- repo: https://github.com/pre-commit/mirrors-autopep8
rev: v1.4.3
@hartwork
hartwork / createcustomsuperuser.py
Created March 30, 2018 16:03
Django management command to script creation of superusers
View createcustomsuperuser.py
# Django management command to create custom superusers
# Version 2018.03.18
#
# Core benefits over existing command `createsuperuser` are:
# - Scriptability
# - Ignorance of `settings.AUTH_PASSWORD_VALIDATORS`
# - Idempotency
#
# Store as `<app>/management/commands/createcustomsuperuser.py` to activate.
# Originally written for Django 1.9.9.