Skip to content

Instantly share code, notes, and snippets.

@chr15m
chr15m / websockets.js
Created July 6, 2018 02:02
Minimal Javascript websocket client/server
// server
ws = require('ws');
wss = new ws.Server({ port: 8033 });
wss.on('connection', function(s) {
console.log("got connection", s);
s.on('message', function incoming(message) {
console.log("received", message);
});
});
@chr15m
chr15m / picore-usb-tether.txt
Created July 2, 2018 12:39
Get USB tethering working on piCore (Tiny Core Linux)
tce-load -wi net-usb-4.9.22-piCore-v7
modprobe cdc_ether
modprobe usbnet
ifconfig -a
ifconfig usb0 up
sudo /sbin/udhcpc -b -i usb0 -x hostname:$HOSTNAME -p /var/run/udhcpc.usb0.pid
@chr15m
chr15m / browser-tab-communication-via-localstorage.html
Created June 8, 2018 12:43
Demo of communicating between tabs via the localStorage storage event
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta content="width=device-width, initial-scale=1" name="viewport">
<style>
body {
font-family: Arial, Sans-serif;
max-width: 600px;
margin: 1em auto;
@chr15m
chr15m / dht-ping.sh
Created May 6, 2018 09:24
BitTorrent mainline DHT UDP ping shell script example
echo -n $'d1:ad2:id20:\x23\x71\x0c\x1c\xb4\x50\x7d\x87\x29\xb8\x3f\x87\x2c\xc6\xa2\xa4\x4c\x39\x73\x67e1:q4:ping1:t1:01:y1:qe' | nc -u router.utorrent.com 6881
#!/usr/bin/env python
# two hex encoded strings coming in on stdin
# will get xored and output as a hex encoded string
import fileinput
lines = [l for l in fileinput.input()]
print hex(int(lines[0], 16) ^ int(lines[1], 16)).replace("0x", "").rstrip("L")
@chr15m
chr15m / pr
Created August 14, 2017 01:40
Open a GitHub pull-request page from the command line
#!/usr/bin/env python
import webbrowser
import subprocess
def git(*args):
return subprocess.check_output(["git"] + list(args))
remote, branch = git("rev-parse", "--abbrev-ref", "--symbolic-full-name", "@{u}").split("/")
repo = git("config", "--get", "remote." + remote + ".url").split(":").pop().replace(".git", "").strip("\n")
@chr15m
chr15m / extract-latest-log-date.awk
Last active May 13, 2022 23:46
Extract only the latest log lines from apache/nginx logs
#!/usr/bin/awk -f
# Usage:
# zcat -f access.log.* | ./extract-latest-log-date.awk > latest-log.txt
BEGIN {
# pre-compute months field lookup
m=split("Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec",d,"|")
for(o=1;o<=m;o++){
months[d[o]]=sprintf("%02d",o)
@chr15m
chr15m / find-pis
Created December 12, 2016 08:01
Find Raspberry Pi devices on your local networks.
#!/bin/sh
# get broadcast addresses for each network
net=`ifconfig | grep -o -E "Bcast:(.*?) " | cut -f2 -d":"`
# loop over networks running the scan
for n in $net;
do
# first find SSH machines silently to prime the arp table
nmap -T4 -n -p 22 --open --min-parallelism 100 "$n/24" | grep -e "scan report for" -e "ssh" > /dev/null
@chr15m
chr15m / watch-make.sh
Created December 5, 2016 09:14
Shell script using make to watch a project and re-build on demand.
#!/bin/sh
while true;
do
if ! make -q "$@";
then
echo "#-> Starting build: `date`"
make "$@";
echo "#-> Build complete."
fi
@chr15m
chr15m / expression-printer.hy
Last active June 28, 2016 12:24
Hy macro to print expression before evaluating it
(import [hy.models.expression [HyExpression]])
(defn print-expression [expr]
(+ "(" (.join " " (list-comp (if (= (type x) HyExpression) (print-expression x) (str x)) [x expr])) ")"))
(defmacro print-eval [expr]
(quasiquote (do
(print (unquote (print-expression expr)))
(unquote expr))))