Skip to content

Instantly share code, notes, and snippets.

@hanshuebner
hanshuebner / day1-2.rs
Last active December 2, 2023 04:37
Advent of code
use std::env;
use std::fs::read_to_string;
use regex::Regex;
use std::collections::HashMap;
use memoize::memoize;
const DIGIT_NAMES: [&str; 10] = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
#[memoize]
fn digit_encoding() -> (Regex, HashMap<String, usize>) {
@hanshuebner
hanshuebner / gist:84a7141dbab8be25d21572df83e0d8d5
Created November 3, 2022 10:17
XPath evaluation on XML file
#!/usr/bin/env luajit
local xmlua = require("xmlua")
xml = [[<?xml version="1.0" encoding="utf-8"?>
<EntityDescriptor xmlns="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:alg="urn:oasis:names:tc:SAML:metadata:algsupport" ID="_21f12cc0-a7f7-4e65-8b21-a0bba35e39c5" entityID="urn:federation:MicrosoftOnline">
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
@hanshuebner
hanshuebner / sudoku-test.lisp
Created December 11, 2011 10:46
Ruby book Sudoku solver in Common Lisp
(defmacro deftestpackage (package-name for-package &optional (test-library-package-name :unit-test))
"Define a new package PACKAGE-NAME used to test the package
designated by FOR-PACKAGE. The new package will import all symbols
from FOR-PACKAGE and :USE the package designated by
TEST-LIBRARY-PACKAGE-NAME which supposedly contains unit testing
functions and macros."
`(defpackage ,package-name
(:use ,test-library-package-name ,@(mapcar #'package-name (package-use-list for-package)))
(:import-from ,for-package
,@(let (symbols)
@hanshuebner
hanshuebner / live-clip-recorder.js
Created May 28, 2011 20:00
Ableton Live MIDI controlled clip recording
// While jamming with a keyboard, I often want to record some theme into a clip.
// I find it rather disruptive to have reach out for the mouse, or find a free clip
// slot on an APC, or use a touch interface or whatever. So this script comes to the
// rescue. It listens to MIDI events that I can trigger with a foot switch and records
// clips to the currently selected track. It uses the global quantization setting to
// determine the length of the clips that are created. Three MIDI events are used,
// one to record one clip, one to record clips until stops, and one to stop recording.
// The script automatically adds clips to the end of the currently selected track.
@hanshuebner
hanshuebner / voting.lua
Last active April 10, 2017 05:07
NodeMCU program to read buttons and light up LEDs, communicates with MQTT
broker_ip_address='192.168.178.19'
wifi.sta.config({ssid="ssid",pwd="password"})
m = mqtt.Client('esp', 120, 'dev', 'dev')
wifi.setmode(wifi.STATION)
gpio.mode(1, gpio.INPUT, gpio.PULLUP)
gpio.mode(2, gpio.INPUT, gpio.PULLUP)
gpio.mode(3, gpio.OUTPUT, gpio.PULLUP)
@hanshuebner
hanshuebner / gist:f15e915e349f0ca0f979
Created November 19, 2015 20:44
ClojureScript errro
clabin 1175_% rlwrap lein run -m clojure.main script/figwheel.clj
Figwheel: Starting server at http://localhost:3449
Figwheel: Watching build - dev
Compiling "resources/public/js/main.js" from ["src"]...
Reading analysis cache for jar:file:/Users/hans/.m2/repository/org/clojure/clojurescript/1.7.170/clojurescript-1.7.170.jar!/cljs/core.cljs
Compiling target/figwheel_temp/dev/figwheel/connect.cljs
Reading analysis cache for jar:file:/Users/hans/.m2/repository/org/omcljs/om/1.0.0-alpha22/om-1.0.0-alpha22.jar!/om/util.cljs
Reading analysis cache for jar:file:/Users/hans/.m2/repository/org/omcljs/om/1.0.0-alpha22/om-1.0.0-alpha22.jar!/om/dom.cljs
{:tag :cljs/analysis-error}
ANALYSIS ERROR: Map literal must contain an even number of forms on file null, line null, column null
@hanshuebner
hanshuebner / fixed-width-record.lisp
Created April 15, 2012 19:20
fixed width record reading and writing
(defpackage :fixed-width-record
(:use :cl)
(:export #:define-format
#:write*
#:read*
#:field-parse-error
#:create-table
#:insert-record))
(in-package :fixed-width-record)
@hanshuebner
hanshuebner / qdiff.lisp
Created September 27, 2011 13:04
Diff checked-out quicklisp project against dist version
;;;; qdiff.lisp
(defpackage #:qdiff
(:use #:cl)
(:shadowing-import-from #:ql-dist
#:name
#:release
#:ensure-local-archive-file
#:base-directory
#:prefix)
@hanshuebner
hanshuebner / plist-parser.js
Created June 1, 2011 05:44
plist parser written in node.js
var plistParser = require("../lib/sax").parser(false, {lowercasetags:true, trim:true}),
sys = require("sys"),
fs = require("fs");
function entity (str) {
return str.replace('"', '&quot;');
}
plistParser.getInteger = function (string) {
this.value = parseInt(string, 10);
@hanshuebner
hanshuebner / centos7_timechine.sh
Last active August 29, 2015 14:28 — forked from darcyliu/centos7_timechine.sh
Install Time Machine service on CentOS 7
# Install Time Machine service on CentOS 7
# http://netatalk.sourceforge.net/wiki/index.php/Netatalk_3.1.7_SRPM_for_Fedora_and_CentOS
# http://confoundedtech.blogspot.com/2011/07/draft-draft-ubuntu-as-apple-time.html
yum install -y rpm-build gcc make wget
# install netatalk
yum install -y avahi-devel cracklib-devel dbus-devel dbus-glib-devel libacl-devel libattr-devel libdb-devel libevent-devel libgcrypt-devel krb5-devel mysql-devel openldap-devel openssl-devel pam-devel quota-devel systemtap-sdt-devel tcp_wrappers-devel libtdb-devel tracker-devel
yum install -y bison docbook-style-xsl flex dconf