Skip to content

Instantly share code, notes, and snippets.

Avatar

Bran van der Meer branneman

View GitHub Profile
View 1.js
// Interface of a primitive variable: its name and type
const DEFAULT_DB_HOST = 'localhost'
// Interface of a container variable: its name, types and structures
const config = {
user: 'readuser',
pass: '******',
db: 'test-env',
}
@branneman
branneman / git.js
Last active Oct 11, 2022
How Git works - super simplified!
View git.js
// blob = file contents, identified by hash
const blobs = {
'73d8a': 'import x from "y"; console.log("some file contents")',
'9c6bd': 'D8 A1 31 0F ...',
'547d4': '# Readme\nThis is documentation',
'a0302': '# Readme\nThis is some updated documentation',
}
// tree = references to blobs and trees, identified by hash
const trees = {
@branneman
branneman / unit-testing.js
Last active Oct 5, 2022
How I write High Quality Unit tests - https://youtu.be/naL7-XQ7T70
View unit-testing.js
/**
* Returns a list of numbers from `min` (inclusive) to `max` (exclusive).
*/
const range = (min, max, acc = []) => {
if (max < min) throw new Error('not supported!')
if (min >= max) return acc
return range(min + 1, max, acc.concat(min))
}
/**
@branneman
branneman / log.py
Created Nov 30, 2021
Python log util, outputting elastic/filebeat compatible json
View log.py
import json
from datetime import datetime, timezone
LEVELS = {
"emergency": 7,
"alert": 6,
"critical": 5,
"error": 4,
"warning": 3,
"notice": 2,
@branneman
branneman / http-easy.rkt
Last active Dec 16, 2021
Racket: How to do HTTP requests
View http-easy.rkt
#lang racket/base
(require
net/http-easy)
(define (base-url path)
(string-append "https://httpbin.org" path))
; request: GET
; response: plain string body
@branneman
branneman / 1-web-server.rkt
Last active Jun 21, 2021
Racket: Example web-server which renders markdown
View 1-web-server.rkt
#lang racket/base
(provide
server-start)
(require
markdown
net/url
web-server/http
web-server/servlet-env
@branneman
branneman / 0-syntax.rkt
Last active May 24, 2021
Racket: Macro's
View 0-syntax.rkt
#lang racket/base
(require (for-syntax racket/base))
; Reading Quotes
; see: https://docs.racket-lang.org/reference/reader.html
; ' quote #' syntax
; ` quasiquote #` quasisyntax
; , unquote #, unsyntax
; ,@ unquote-splicing #,@ unsyntax-splicing
View automate-backups-nextcloud-s3.md

Automate backups: Nextcloud to S3

Assumptions

  • Disk space: at least 3× the size of the /var/www/nextcloud directory is available on /var/backups
  • Nextcloud is installed into /var/www/nextcloud as user www-data
  • AWS cli is installed and configured with credentials
  • mysqldump is installed
  • rsync is installed

Setup

@branneman
branneman / radicals.json
Created Jun 9, 2020
JSON list of 214 Simplified Chinese Radicals, data contains radical number, pinyin, english translation, stroke count
View radicals.json
[
{
"id": 1,
"radical": "",
"pinyin": "",
"english": "one",
"strokeCount": 1
},
{
"id": 2,
View snake.clj
(ns main (:gen-class))
;; Snake :: [[int int]…]
;; vector of x,y tuples
;; head is first, tail is last
;; out-of-bounds? :: (int int int) -> bool
;; grid-size is 1-indexed, x+y are 0-indexed
(defn out-of-bounds? [grid-size x y]
(or (neg? x) (neg? y) (>= x grid-size) (>= y grid-size)))