Skip to content

Instantly share code, notes, and snippets.

View kontur's full-sized avatar

Johannes Neumeier kontur

View GitHub Profile
@kontur
kontur / functions.php
Created October 17, 2024 06:31
Render CSS from PHP file with access to WP functions
// functions.php
add_action("wp_enqueue_scripts", "css_styles", 1000);
function css_styles()
{
// load previews
wp_enqueue_style( 'previews-css', '/previews');
}
@kontur
kontur / middleware.py
Created October 1, 2024 10:53
Djanto Basic Auth to secure entire site with user/password protection
import base64
from django.http import HttpResponse
from django.conf import settings
from django.utils.deprecation import MiddlewareMixin
class BasicAuthMiddleware(MiddlewareMixin):
"""
Adopted from https://www.djangosnippets.org/snippets/2468/ for Django 5.1
@kontur
kontur / cyrillic-alphabets.py
Created February 17, 2023 10:37
Cyrillic script alphabet order comparison
# The Cyrillic language comparison table from https://en.wikipedia.org/wiki/Cyrillic_alphabets#Summary_table (chruch slavonic as last line!)
table = """
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ю Я
А Б В Г Д Дж Дз Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ь Ю Я
А Б В Г Д Ѓ Ѕ Е Ж З И Ј К Л Љ М Н Њ О П Р С Т Ќ У Ф Х Ц Ч Џ Ш
А Б В Г Д Ђ Е Ж З И Ј К Л Љ М Н Њ О П Р С Т Ћ У Ф Х Ц Ч Џ Ш
А Б В Г Д Ђ Е Ж З З́ И Ј К Л Љ М Н Њ О П Р С С́ Т Ћ У Ф Х Ц Ч Џ Ш
А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я
А Б В Г Ґ Д Е Ё Ж З І Й К Л М Н О П Р С Т У Ў Ф Х Ц Ч Ш ’ Ы Ь Э Ю Я
@kontur
kontur / replace-chars-with-svg.py
Created January 28, 2022 08:49
Sample script to replace glyphs in an OTF/TTF font with SVG input. (fonttools, defcon, ufo2ft, extract-ufo)
"""
Sample script to replace glyphs in an OTF/TTF font with SVG input.
- Round-trips via UFO, so not applicable to Variable fonts.
- Will subset the and remove the replaced glyphs from the resulting font.
"""
import os
import re
import sys
import click
import shutil
@kontur
kontur / css
Created April 10, 2020 07:59
Magic Carpet... aka positioning a 100% wide element inside the layout flow
.magic-carpet {
width: 100vw;
position: relative;
left: 50%;
right: 50%;
margin-left: -50vw;
margin-right: -50vw;
// fixed height
height: 250px;
@kontur
kontur / extract_stylespace_from_designspace.py
Last active February 25, 2020 12:18
A helper script to extract the main stylespace structure from a designspace, use for with https://github.com/daltonmaag/statmake
"""
A helper script to try extract some reasonable defaults for a stylespace
document from a designspace.
You will in all likelyhood need to manually edit this generated stylespace, but
this saves a lot of the typing.
NOTE: That this assumes a well defined and valid designspace!
"""
from fontTools import designspaceLib as dsLib
@kontur
kontur / Scroller.js
Created July 27, 2017 07:44
Scroller - takes element, scroll() calls, and continues native-ish scrolling after last scroll() call
/**
* Helper class that simulates some-of-what nativish
* scrolling that continues after dragging (explicit calls to scroll())
* have stopped
*/
// libraries
import $ from "./Zepto"
export default class Scroller {
@kontur
kontur / gist:794b04537a9bea84c40c
Last active August 29, 2015 14:19
Arduino get direction / bearing from two geolocations
/*
* Arduino geolocation bearing calculation based on two geolocation latitude-longitude values
* Johannes 'kontur' Neumeier, 2015
* https://gist.github.com/kontur/794b04537a9bea84c40c
*/
void setup() {
Serial.begin(9600);
Serial.println(getDirection(60.1650338, 24.8768908, 60.1243045, 26.2730065));
}
@kontur
kontur / test.less
Last active August 29, 2015 14:18
Odd less @import error when *not* using colons after @ımport statement
body {
// surprisingly this will not throw an error, but it won't import the file neither
.mx({ @import: "test2.less"; });
}
body {
// this will throw an error:
// SyntaxError: Cannot read property 'rules' of undefined in /Users/johannes/test/less-bug/test.less on line 7, column 3:
// 6 body {
// 7 .mx({ @import "test2.less"; });
@kontur
kontur / Fullscreen
Created October 2, 2014 06:30
Make a processing sketch run in fullscreen
boolean sketchFullScreen() {
return true;
}
void setup() {
size(displayWidth, displayHeight);
}