Skip to content

Instantly share code, notes, and snippets.

View rubenwardy's full-sized avatar

rubenwardy rubenwardy

View GitHub Profile
-- Run a series of functions as a pipeline - each returning the next's arguments.
--
-- The first function will be ran immediately
--
-- @param interval Time between pipelines
-- @param funcs A list of functions, each one of the form function(...)
-- where ... is returned by the previous function.
-- @param params Optional, a list of arguments to pass to the first function
local function pipeline(interval, funcs, params)
if funcs[1] ~= nil then
@rubenwardy
rubenwardy / runserver.sh
Last active March 9, 2022 00:55
Auto-restart, log per season, email on crash
#!/bin/bash
cd ~/.minetest
mkdir -p logs_ctf
function mailme() {
echo "To: rw@rubenwardy.com" > mail.txt
echo "Subject: CTF server crashed" >> mail.txt
echo "From: minetest@rubenwardy.com" >> mail.txt
echo "" >> mail.txt
-- First check to see if it can be evaluated as an expression,
-- then fallback to executing it raw
local func, error = loadstring("return (" .. param .. ")")
if not func then
func, error = loadstring(param)
if not func then
return false, "E " .. error
end
end
function wrapRegisterCall(name, func)
for key, v in pairs(minetest["registered_" .. name .. "s"]) do
func(key, v)
end
local old = minetest["register_" .. name]
minetest["register_" .. name] = function(name, def)
func(name, def)
old(name, def)
end
@rubenwardy
rubenwardy / gist:cd5e5528ec60c80270a85b9252b215a2
Last active July 12, 2018 13:58
Minetest Developer Meeting 12/Aug/2017
Meeting 12/Aug/2017
PROMPT_COMMAND=__prompt_command # Func to gen PS1 after CMDs
get_git_as() {
if info=$(git diff --shortstat); then
echo $info
fi
}
__prompt_command() {
@rubenwardy
rubenwardy / matrix_chain_mult_opt.js
Last active November 12, 2016 16:20
Matrix Chain Multiplication Order Optimisation
class MatrixRes {
constructor(rows, cols) {
this.rows = rows;
this.cols = cols;
}
sizeAfterMultiplyWith(other) {
assert(this.canMultiplyWith(other));
return new MatrixRes(this.rows, other.cols);
}
@rubenwardy
rubenwardy / rod_cutting.js
Last active November 9, 2016 17:05
Finding the most profitable way to cut a rod, using bottom-up dynamic programming (CLRS Section 15.1)
var assert = require("assert");
class Result {
constructor(n, seq, score) {
this.n = n;
this.seq = seq;
this.score = score;
}
betterThan(other) {
@rubenwardy
rubenwardy / mt_serverlist_points.py
Last active March 9, 2022 00:56
Server list point checker
#!/usr/bin/python3
# list all servers and their points:
# $ python mt_serverlist_points.py
#
# lists all penalties being applied:
# $ python mt_serverlist_points.py pen
#
# penalty -8 uptime for VanessaE's Nostalgia Server/digitalaudioconcepts.com
# penalty -8 uptime for VanessaE's Basic minetest_game server/digitalaudioconcepts.com
@rubenwardy
rubenwardy / convert_to_pdf.sh
Last active August 29, 2015 14:18
Convert folder of images to PDF with filenames
#
# This batch file is specific to Linux.
# (the for, mkdir, rm etc commands may be done differently on your OS.
# the convert commands should be the same though)
#
rm /tmp/imageex -r
mkdir /tmp/imageex
for filename in *.png; do
echo "Processing $filename"