Skip to content

Instantly share code, notes, and snippets.

View mumbleskates's full-sized avatar
🤔

Kent Ross mumbleskates

🤔
  • 🌵
View GitHub Profile
// It is possible to add golang interfaces together.
// But did you know that you can also subtract them?
// Here are two arbitrary interfaces. They can have any
// methods.
type A interface {
Foo() string // This is the conflicting method signature.
Bar() int
}
type B interface {
@mumbleskates
mumbleskates / mysql 5.7
Created November 28, 2023 00:58
mysql 8 prepared statement bug
mysql> create table t (
-> id integer primary key,
-> val json
-> );
Query OK, 0 rows affected (0.04 sec)
mysql> insert into t(id, val) values (1, '{"a": 1}'), (2, '{"a": "two"}');
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
@mumbleskates
mumbleskates / heap.py
Last active July 11, 2023 12:15
Pure Python N-ary Heap implementation
# coding=utf-8
class NaryHeap(object):
"""implements an n-ary heap"""
def __init__(self, items=(), *, n=2, direction=min):
"""
create a new heap
@mumbleskates
mumbleskates / hyperoperator.js
Created November 28, 2021 04:46
Hyperoperator with only tail recursion
// All arguments must be BigInts. Return value is a BigInt or a thrown RangeError
const bigH = (n, a, b) => {
let result = 0n
const stack = [{n, a, b}]
do {
const {n, a, b} = stack.pop()
if (n < 0n || a < 0n || b < 0n) {
throw Error('Can only hyperoperate on non-negative integers')
}
#include <stdio.h>
#define ALIGNED __attribute__((aligned(32)))
// There are three structs, Foo, Bar, and Baz, each with a 20 byte field.
// Bar and Baz are annotated with an 'aligned' attribute of 32 bytes, but
// in slightly different ways.
typedef struct {
char a[20];
from threading import Thread
import requests
from multithreading import Channel
def fetch_all_with_pool(iterable_of_urls, pool_size=20):
"""
Fetches URLs with a thread pool.
# coding=utf-8
"""Lazy hacks to enable easier usage of async functions, context managers, and iterators in the REPL."""
from asyncio import set_event_loop
try:
import uvloop as loop_maker
except ImportError:
import asyncio as loop_maker
loop = loop_maker.new_event_loop()
# coding=utf-8
from collections import Mapping, Iterable
from operator import attrgetter
from struct import pack, unpack
__doc__ = """
Pure python tools for inspecting unknown protobuf data. Written for py3.6+.
Author: Kent Ross
@mumbleskates
mumbleskates / multithreading.py
Created November 28, 2018 22:06
closeable channel and threadsafe iterator wrapper
# coding=utf-8
from collections import deque
from queue import Empty, Full
from threading import Condition, RLock, Thread
from time import monotonic as now
from weakref import finalize
class ChannelClosed(Exception):
"""Exception raised when a channel has been closed."""
@mumbleskates
mumbleskates / markov.sql
Last active March 22, 2017 02:05
Pure-SQL markov heaps (SQLite)
/* powers of 2 utility view for heap traversal */
CREATE VIEW IF NOT EXISTS power2 AS
WITH RECURSIVE doubling(n) AS (
VALUES (2)
UNION ALL
SELECT n*2 FROM doubling LIMIT 62
)
SELECT n twos FROM doubling;
/* generates random floating point values in interval [0, 1) */