Skip to content

Instantly share code, notes, and snippets.

@fbstj
fbstj / ringbuffer.h
Created February 15, 2013 09:11
A ring-buffer generation utility
/*
simple ring buffer
*/
#ifndef RING_BUFFER_H_
#define RING_BUFFER_H_
enum E_RING_BUFFERS { e_RING_OK = 0, e_RING_EMPTY, e_RING_FULL, e_RING_ERROR };
#define T_RING(T, tag, len)\
struct tag { T buffer[len]; unsigned int head, tail; };\
def signed(chars, index = 0, length = 16):
"""convert a `length/4` character hex string into a signed `length`-bit number"""
v = int(chars[index:][:(length / 4)], 16)
return v if v < (1 << (length - 1)) else v - (1 << length)
// count down to zero
num -= !!(num - 1);
// count up to MAX
num += (num < MAX);
@fbstj
fbstj / RepeatButton.py
Created July 15, 2013 13:18
a tkinter (ttk) button extension that repeatedly invokes the command whilst the button is held down, includes a simple exponential acceleration
from Tkinter import *
from ttk import *
class RepeatButton(Button):
def __init__(self, _, **kw):
Button.__init__(self, _)
self.config(**kw)
self.bind('<Button-1>', self._start)
self.bind('<ButtonRelease-1>', self._end)
def _start(self, event):
self._delay = 1500
@fbstj
fbstj / CANframe.rs
Last active August 29, 2015 14:13
Rust things
enum ID {
Standard(u16),
Extended(u32)
}
enum Payload {
Value {
length : u8,
data: [u8; 8]
},
Remote(u8)
@fbstj
fbstj / book-search.php
Created March 31, 2015 10:11
A search utility for unzipped epubs
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<style>
#view { float: right; width: 75vw; height: 98vh; }
nav { float: left; width: 20vw; height: 98vh; }
#nav { height: 100%; max-height: 90vh; overflow-y: scroll; }
.active { font-weight: bold; }
</style>
<title>Book search</title>
<iframe name=bob id=view src=blank.html></iframe>
<nav>