Skip to content

Instantly share code, notes, and snippets.

# find directories which contain only one entry called "index.html" and delete them
# this doesn't enforce that the found "index.html" is a file rather than a directory, symlink, socket, device node, etc
find . -depth -print0 | \
awk 'BEGIN{RS="\0";ORS="\0";} match($0, /^(.*)[/]([^/]+)$/, A) {prevDir=dir; dir=A[1]; if ((prevDir == $0) && couldDelete) { print($0); } if (prevDir != dir) { couldDelete = 1; } if (A[2] != "index.html") { couldDelete = 0; } }' | \
xargs -0 rm -r
@RichardBarrell
RichardBarrell / size_t_minus_one.c
Last active February 4, 2017 04:14
Demonstrating that converting an int containing -1 to size_t does the right thing even where sizeof(int) != sizeof(size_t)
#include <stdint.h>
#include <stdio.h>
#include <limits.h>
typedef struct rtunion {
char whatever[8];
} rtunion;
int main (int argc, char **argv) {
(void)argc;
import csv
import sys
try:
column_indexes = list(map(int, sys.argv[1:]))
except ValueError:
sys.stderr.write("Usage: python pick_csv.py 0 1 2...\n")
sys.exit(1)
if len(column_indexes) == 0:
from StringIO import StringIO
from hypothesis import given
from hypothesis.strategies import lists, binary
def to_lines(f, _block_size=32<<10):
"""file.__iter__ but in python and ought to be slower
>>> list(to_lines(StringIO("foo\\nbar\\nbaz\\n"), _block_size=2))
['foo\\n', 'bar\\n', 'baz\\n']
{-# LANGUAGE BangPatterns #-}
module Collatz where
-- thing I want to know: what's the smallest (n) such that a naive C
-- implementation of "iterate the Collatz function until I get to 1" with
-- fixed-size integers will encounter an integer overflow
-- the below is terrible and contains multiple implementations because I kept
-- trying to make it go faster.
import Data.Word
@RichardBarrell
RichardBarrell / PrimeLastDigit.hs
Created September 18, 2015 16:11
looks like a roughly even split between 1,3,7,9 up to the millionth prime. I got bored waiting for 10 million to finish.
module PrimeLastDigit where
-- compile with:
-- ghc --make PrimeLastDigit.hs -O2 -main-is PrimeLastDigit.main
import Data.List (foldl')
primes :: [Integer]
primes = 2 : [ c | c <- [3,5..], all (\p -> c `mod` p > 0) (takeWhile (\p -> p*p <= c) primes) ]
# setting ALTERNATE_EDITOR to the empty string "" instructs
# emacsclient to invoke Emacs in daemon-mode iff it isn't running already
export EDITOR=emacsclient
export ALTERNATE_EDITOR=""
[package]
name = "ie_counts"
version = "0.0.1"
authors = ["Richard Barrell <rchrd@brrll.co.uk>"]
[[bin]]
name = "ie_counts"
crate-type = ["staticlib"]
module FindBirthday where
-- compile as: ghc --make FindBirthday.hs -main-is FindBirthday.main
-- or run as: runhaskell FindBirthday.hs
-- and answer "y" or "n" when the program asks you a question. :)
import Data.Time (formatTime, addDays)
import System.Locale (defaultTimeLocale)
-- use 2014 because that was a leap year, and we need all 366 days.
<!doctype html>
<html><head><meta charset="UTF-8" />
<title>Odd layout example.</title>
<style type="text/css">
#evil-container {
position: relative;
background: #aaffaa;
}
body, #evil-container {
width: 100%;