Skip to content

Instantly share code, notes, and snippets.

View spacekitcat's full-sized avatar
👋

Lisa Burton spacekitcat

👋
View GitHub Profile
@spacekitcat
spacekitcat / doReplace.js
Last active October 13, 2018 20:15
Walks the DOM and performs text replacements. Designed for use with https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver
doReplace = function(doc) {
var treeWalker = document.createTreeWalker(doc, NodeFilter.SHOW_TEXT, null, null)
do {
var tmpnode = treeWalker.currentNode;
if (tmpnode.nodeValue) {
tmpnode.nodeValue = tmpnode.nodeValue.replace(/gamergate/ig, 'misogynist');
tmpnode.nodeValue = tmpnode.nodeValue.replace(/trump/ig, 'misogynist');
tmpnode.nodeValue = tmpnode.nodeValue.replace(/donald trump/ig, 'misogynist');
describe("ClientsideTextReplace 'doReplace' function", function() {
beforeEach(function() {
});
var createTestDocument = function() {
return document.implementation.createHTMLDocument("test doc");
}
describe("Is able to replace the core targets", function() {
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Jasmine Spec Runner v2.5.2</title>
<link rel="shortcut icon" type="image/png" href="lib/jasmine-2.5.2/jasmine_favicon.png">
<link rel="stylesheet" href="lib/jasmine-2.5.2/jasmine.css">
<script src="lib/jasmine-2.5.2/jasmine.js"></script>
@spacekitcat
spacekitcat / pop_motion_queue.sh
Created February 25, 2018 16:00
Find an email the latest output image from the motion service
#!/bin/bash
MOTION_TMP=/tmp/motion
TARGET_EMAIL=$TARGET_EMAIL_HERE
which motion
if [ ! $? -eq 0 ]
then
echo "Cannot find motion service in PATH, is it installed?"
exit 1
@spacekitcat
spacekitcat / motion-mailer-d
Created February 25, 2018 16:11
Initd script to bootstrap the watch command when the system starts up. The watch command periodically runs a bash script.
#!/bin/bash
screen -d -m sudo watch -n5 'bash /opt/bin/pop_motion_queue.sh'
@spacekitcat
spacekitcat / deploy_cloud_formation.sh
Created October 13, 2018 20:12
Deletes, packages and redeploys a CloudFormation stack. Convenience for scripts for debugging automatic deploys.
#!/bin/bash
# October 2018.
# Written by Lisa Burton.
# Provided under the terms of the MIT license.
STACK_NAME='<<< YOUR_CLOUD_FORMATION_STACK_NAME >>>'
SAM_INPUT_TEMPLATE='<<< YOUR_SAM_FILE_HERE >>>'
SAM_OUTPUT_TEMPLATE='outputSamTemplate.yaml'
SAM_S3_BUCKET='<<< YOUR_S3_BUCKET_NAME >>>'
@spacekitcat
spacekitcat / shannon-entropy-for-a-file.js
Last active April 29, 2019 21:51
Computes the Shannon entropy for a given input file
const fs = require('fs');
const updateOccurenceTable = (byteOccurenceTable, inputBuffer) => {
inputBuffer.forEach(character => {
const byteOccurenceAccumulator = byteOccurenceTable[character];
byteOccurenceTable[character] = byteOccurenceAccumulator !== undefined ? byteOccurenceAccumulator + 1 : 1;
});
const { total } = byteOccurenceTable;
byteOccurenceTable.total = total ? total + inputBuffer.length : inputBuffer.length;
@spacekitcat
spacekitcat / 6502-16bit-counter.asm
Last active August 10, 2019 13:51
Code demonstrating a 16-bit counter written for the 6502, an 8-bit processor
lda #$00
sta $a0
lda #$00
sta $a1
LSB_INC:
ldy $a0 ; Debug, shows the LSB in the Y register
inc $a0
BNE LSB_INC
LSB_RESET:
@spacekitcat
spacekitcat / 6502-time-delay.asm
Created August 24, 2019 13:21
Creates a time delay on the 6502. Easy to adapt the intervals or even parameterise the subroutine
; Written for the CA65 assembler and tested on a NES emulator
.zeropage
counter_lsb: .res 1
counter_msb: .res 1
.proc RateLimit
lda #$EE ; Most Significant Byte 'interval'
sta counter_msb
LOOP_MSB:
lda #$00 ; Least Significant Byte 'interval'
@spacekitcat
spacekitcat / 6502-nes-stitch-n-draw.asm
Created September 1, 2019 19:30
6502 machine code snippet for stiching and rendering a 4 part sprite on the 8-bit Nintendo (NES)
.define OAM_TABLE_START $0200
; .zeropage
; param_1: .res 1
; param_2: .res 1
; param_3: .res 1
; temp_var_1: .res 1
; temp_var_2: .res 1
; temp_var_3: .res 1