Skip to content

Instantly share code, notes, and snippets.

@dunhamsteve
dunhamsteve / wherefroms.py
Last active October 20, 2019 03:53
Code to get and set kMDItemWhereFroms in python
# This code is public domain, share and enjoy.
from Foundation import NSPropertyListSerialization
from xattr import setxattr, getxattr
kMDItemWhereFroms = "com.apple.metadata:kMDItemWhereFroms"
def set(path, *data):
"""Set kMDItemWhereFroms on a file. Pass in an array of strings."""
plist, err = NSPropertyListSerialization.dataWithPropertyList_format_options_error_(data, 200, 0, None)
if err or not plist:
@dunhamsteve
dunhamsteve / table.html
Last active May 21, 2024 22:06
Example of a scrollable table that only renders visible rows
<!-- This code is public domain, share and enjoy. -->
<html>
<style type="text/css" media="screen">
#table {
position: absolute;
top: 30px;
bottom: 0;
left: 10px;
right: 10px;
}
@dunhamsteve
dunhamsteve / scroller.js
Last active June 28, 2020 16:10
decorator for iPad scrollable areas
// This code is public domain, share and enjoy.
window.ui = window.ui || {};
/** @constructor */
ui.ListView = function(element, collection) {
this.el = element;
this.cellHeight = 30;
this.collection = collection;
@dunhamsteve
dunhamsteve / tabla_recta.py
Last active October 8, 2015 01:49
A python script to generate a wallet-sized "table recta" for passwords
#!/usr/bin/python
# This code is public domain, share and enjoy.
import random, re, sys, os
seed = None
if len(sys.argv) > 1:
seed = int(sys.argv[1])
@dunhamsteve
dunhamsteve / repositories.py
Last active December 15, 2015 14:28
A little utility to enumerate all of the svn, hg, and git repositories on the current machine. Requires a locate database. Outputs the type, remote url, and local path.
#!/usr/bin/python
# This code is public domain, share and enjoy.
"""Enumerates svn, git, and mercurial repositories in locate database
"""
from subprocess import Popen,PIPE, check_output
import re, os.path
@dunhamsteve
dunhamsteve / makeuml.py
Last active December 15, 2015 14:29
A little utility to convert a textual description of classes to a UML diagram (in dot format).
#!/usr/bin/python
# This code is public domain, share and enjoy.
import sys, re
rEdge = re.compile(r'(\w+)\s+([\w.*]*)\s*(--|->|<-|<->)\s*([\w.*]*)\s+(\w+)\s*')
rName = re.compile(r'\w+')
arrows = {
@dunhamsteve
dunhamsteve / sort.js
Created December 3, 2013 19:42
Quick and dirty sortable table for javascript. (I wrote this to embed in a single page html report.)
function sortedTable(id) {
var table = document.getElementById(id);
table.lastColumn = -1;
table.onclick = function(ev) {
if (ev.target.nodeName == 'TH') {
var row = ev.target.parentNode;
for (var j=0;j<row.cells.length;j++) {
if (row.cells[j] == ev.target) {
var rows = [];
for (var i=1;i<table.rows.length;i++) {
@dunhamsteve
dunhamsteve / hn.user.js
Last active January 4, 2016 04:59
Hacker News tweaks: save as hn.user.js, drop on chrome://extensions page.
// ==UserScript==
// @match https://news.ycombinator.com/*
// ==/UserScript==
(function () {
document.body.style.backgroundColor = "#f6f6ef";
var s = document.createElement('style');
s.innerText = "td.default {max-width: 40em; } "+
"body { background-color: #f6f6ef; } "+
".comment { font-size: 12px; } "+
@dunhamsteve
dunhamsteve / fixfootnotes.py
Created March 25, 2014 05:10
This is a rough script to rewrite footnotes in an epub file to match what iBooks expects for pop-up footnotes. I'm posting it in case it is useful to someone.
#!/usr/bin/python
# Written and placed in the public domain by Steve Dunham
# Tries to find footnotes in an epub and transform them into iBooks/epub3 popup footnotes.
#
# This works with a couple of Terry Pratchett books, it will probably need tweaking for other books.
# This script tries to:
#
# - find the footnote links
@dunhamsteve
dunhamsteve / framework2proto.py
Last active March 10, 2024 05:49
python3 script to infer a protobuf definition from a framework or executable.
#!/usr/local/bin/python3
import re, subprocess, sys
if len(sys.argv) < 2:
print('''
This utility generates a protobuf file from an Objective C framework. It was developed against
CloudKit/CloudKitDaemon, but may work with other libraries that are built the same way.
''')
print("Usage:\n\t",sys.argv[0],"MachOBinary\n")